From 40bb8ddf9984270c4777799c4833c67ad142e5d1 Mon Sep 17 00:00:00 2001 From: andyfong Date: Wed, 19 Sep 2018 11:17:05 +0800 Subject: [PATCH 01/45] feat(Filter): add operator support --- .../app/components/Filters/FilterConfig.tsx | 11 +- webapp/app/components/Filters/FilterForm.tsx | 118 +++++++++++++----- webapp/app/components/Filters/FilterPanel.tsx | 20 +-- webapp/app/components/Filters/filterTypes.ts | 15 ++- webapp/app/components/Filters/index.d.ts | 2 + .../app/components/Filters/operatorTypes.ts | 2 + webapp/app/components/Linkages/index.ts | 2 +- 7 files changed, 118 insertions(+), 52 deletions(-) diff --git a/webapp/app/components/Filters/FilterConfig.tsx b/webapp/app/components/Filters/FilterConfig.tsx index 33de01cd9..4150925b3 100644 --- a/webapp/app/components/Filters/FilterConfig.tsx +++ b/webapp/app/components/Filters/FilterConfig.tsx @@ -2,7 +2,7 @@ import * as React from 'react' import * as classnames from 'classnames' import { fromJS } from 'immutable' import { uuid } from 'utils/util' -import { FilterTypes, FilterTypesViewSetting } from './filterTypes' +import { FilterTypes, FilterTypesViewSetting, FilterTypesOperatorSetting } from './filterTypes' import FilterList from './FilterList' import FilterForm from './FilterForm' import FilterValuePreview from './FilterValuePreview' @@ -108,6 +108,7 @@ export class FilterConfig extends React.Component { const { localFilters } = this.state if (localFilters.length > 0) { - this.filterForm.saveFilterItem() + this.filterForm.saveFilterItem((err) => { + if (err) { return } + const { onOk } = this.props + onOk([...localFilters]) + }) } - const { onOk } = this.props - onOk([...localFilters]) } private getPreviewData = (filterKey, viewId, fieldName, parents) => { diff --git a/webapp/app/components/Filters/FilterForm.tsx b/webapp/app/components/Filters/FilterForm.tsx index 6466781d0..01f9c33bf 100644 --- a/webapp/app/components/Filters/FilterForm.tsx +++ b/webapp/app/components/Filters/FilterForm.tsx @@ -15,7 +15,8 @@ const utilStyles = require('../../assets/less/util.less') const styles = require('./filter.less') import { prefixItem, prefixView, prefixOther } from './constants' -import { FilterTypeList, FilterTypesLocale, FilterTypesViewSetting, FilterTypes } from './filterTypes' +import { OperatorTypes } from 'utils/operatorTypes' +import { FilterTypeList, FilterTypesLocale, FilterTypesViewSetting, FilterTypesOperatorSetting, FilterTypes } from './filterTypes' import { IModel } from './' @@ -53,7 +54,8 @@ interface IFilterFormStates { mappingViewItems: object needSetView: boolean modelItems: any[] - modelOrParam: object + modelOrParam: object, + availableOperatorTypes: OperatorTypes[] } export class FilterForm extends React.Component { @@ -65,7 +67,8 @@ export class FilterForm extends React.Component { + private saveFilterItem = (resolve?: (err?) => void) => { const { form, onFilterItemSave, views } = this.props const { usedViews, mappingViewItems } = this.state - const fieldsValue = form.getFieldsValue() - const filterItem = { - relatedViews: {} - } - Object.keys(fieldsValue) - .filter((name) => fieldsValue[name] && name.indexOf(prefixView) >= 0) - .forEach((name) => { - const val = fieldsValue[name] - const viewId = +name.substr(prefixView.length) - const isParam = !!fieldsValue[prefixOther + viewId] - const sqlType = usedViews[viewId].model.find((m) => m.key === val).sqlType - filterItem.relatedViews[viewId] = { - key: val, - name: val, - isParam, - sqlType, - items: mappingViewItems[viewId].filter((item) => fieldsValue[prefixItem + item.id]).map((item) => item.id) + form.validateFieldsAndScroll((err, fieldsValue) => { + if (err) { + if (resolve) { + resolve(err) } - }) + return + } - Object.keys(fieldsValue) - .filter((name) => [prefixItem, prefixView, prefixOther].every((prefix) => name.indexOf(prefix) < 0)) - .forEach((name) => { - filterItem[name] = fieldsValue[name] - }) + const filterItem = { + relatedViews: {} + } - console.log('saved... ', JSON.parse(JSON.stringify(filterItem))) + Object.keys(fieldsValue) + .filter((name) => fieldsValue[name] && name.indexOf(prefixView) >= 0) + .forEach((name) => { + const val = fieldsValue[name] + const viewId = +name.substr(prefixView.length) + const isParam = !!fieldsValue[prefixOther + viewId] + const sqlType = usedViews[viewId].model.find((m) => m.key === val).sqlType + filterItem.relatedViews[viewId] = { + key: val, + name: val, + isParam, + sqlType, + items: mappingViewItems[viewId].filter((item) => fieldsValue[prefixItem + item.id]).map((item) => item.id) + } + }) + + Object.keys(fieldsValue) + .filter((name) => [prefixItem, prefixView, prefixOther].every((prefix) => name.indexOf(prefix) < 0)) + .forEach((name) => { + filterItem[name] = fieldsValue[name] + }) - onFilterItemSave(filterItem) + console.log('saved... ', JSON.parse(JSON.stringify(filterItem))) + + onFilterItemSave(filterItem) + if (resolve) { + resolve() + } + }) } public setFieldsValue = (filterItem) => { const { views, widgets, items } = this.props - const { key, name, type, fromView, fromModel } = filterItem + const { key, name, type, fromView, fromModel, operator } = filterItem const fieldsValue = { key, name, type, fromView, - fromModel + fromModel, + operator } if (fromView) { this.onFromViewChange(fromView, fromModel) @@ -170,6 +186,7 @@ export class FilterForm extends React.Component { const { form, onGetPreviewData } = this.props @@ -331,8 +348,17 @@ export class FilterForm extends React.Component { this.setState({ - needSetView: FilterTypesViewSetting[val] + needSetView: FilterTypesViewSetting[val], + availableOperatorTypes: FilterTypesOperatorSetting[val] + }, () => { + const { form } = this.props + const { availableOperatorTypes } = this.state + const operator = form.getFieldValue('operator') + if (availableOperatorTypes.indexOf(operator) < 0) { + form.setFieldsValue({ operator: availableOperatorTypes[0] }) + } }) + const { onFilterTypeChange } = this.props onFilterTypeChange(val) } @@ -340,7 +366,7 @@ export class FilterForm extends React.Component @@ -448,6 +474,32 @@ export class FilterForm extends React.Component + + + + { + getFieldDecorator('operator', { + rules: [{ + required: true, + message: '不能为空' + }] + })( + + ) + } + + + {Object.keys(usedViews).map((viewId) => this.renderConfigItem(viewId, usedViews, mappingViewItems))} diff --git a/webapp/app/components/Filters/FilterPanel.tsx b/webapp/app/components/Filters/FilterPanel.tsx index f78cbed02..57932c42a 100644 --- a/webapp/app/components/Filters/FilterPanel.tsx +++ b/webapp/app/components/Filters/FilterPanel.tsx @@ -3,6 +3,7 @@ import moment from 'moment' import { FormComponentProps, WrappedFormUtils } from 'antd/lib/form/Form' import { IFilterViewConfig, IFilterItem, IFilterValue, IFilterChangeParam } from './' import { FilterTypes } from './filterTypes' +import { OperatorTypes } from 'utils/operatorTypes' import { SQL_NUMBER_TYPES } from '../../globalConstants' import FilterControl from './FilterControl' @@ -40,14 +41,14 @@ export class FilterPanel extends React.Component { - const { key, type, relatedViews } = filter + const { key, type, relatedViews, operator } = filter const relatedItemIds = [] Object.entries(relatedViews).forEach(([_, config]) => { const { items, isParam } = config if (items.length <= 0) { return } const filterValue = isParam ? - this.getParamValue(type, config, val) : this.getModelValue(type, config, val) + this.getParamValue(type, config, val) : this.getModelValue(type, config, operator, val) items.forEach((itemId) => { relatedItemIds.push(itemId) @@ -139,16 +140,15 @@ export class FilterPanel extends React.Component { + private getModelValue = (type: FilterTypes, config: IFilterViewConfig, operator: OperatorTypes, value) => { const { key, sqlType } = config const filters = [] - // @TODO Operators Feature switch (type) { case FilterTypes.InputText: case FilterTypes.InputNumber: case FilterTypes.Select: - if (value !== undefined) { filters.push(`${key} = ${this.getValidValue(value, sqlType)}`) } + if (value !== undefined) { filters.push(`${key} ${operator} ${this.getValidValue(value, sqlType)}`) } break case FilterTypes.NumberRange: if (value[0] !== '' && !isNaN(value[0])) { @@ -160,19 +160,19 @@ export class FilterPanel extends React.Component 0) { - filters.push(`${key} in (${value.map((val) => this.getValidValue(val, sqlType)).join(',')})`) + filters.push(`${key} ${operator} (${value.map((val) => this.getValidValue(val, sqlType)).join(',')})`) } break case FilterTypes.CascadeSelect: // @TODO break case FilterTypes.InputDate: if (value) { - filters.push(`${key} = ${this.getValidValue(moment(value).format('YYYY-MM-DD'), sqlType)}`) + filters.push(`${key} ${operator} ${this.getValidValue(moment(value).format('YYYY-MM-DD'), sqlType)}`) } break case FilterTypes.MultiDate: if (value) { - filters.push(`${key} in (${value.split(',').map((val) => this.getValidValue(val, sqlType)).join(',')})`) + filters.push(`${key} ${operator} (${value.split(',').map((val) => this.getValidValue(val, sqlType)).join(',')})`) } break case FilterTypes.DateRange: @@ -183,7 +183,7 @@ export class FilterPanel extends React.Component= 0 ? - triggerData[0][triggerKey] : `${triggerData[0][triggerKey]}` + triggerData[0][triggerKey] : `'${triggerData[0][triggerKey]}'` if (linkagerType === 'parameter') { linkageFilters.push(`${linkagerKey} ${relation} ${interactValue}`) From 7a4fa46b283e04cc58992589ad63de5e3881145a Mon Sep 17 00:00:00 2001 From: andyfong Date: Thu, 20 Sep 2018 17:06:48 +0800 Subject: [PATCH 02/45] chore(node_modules): Localize react-dragglable react-resizable react-grid-layout --- webapp/app/app.tsx | 4 +- .../Draggable/react-draggable.js.map | 1 - .../Draggable/react-draggable.min.js | 2 - .../Draggable/react-draggable.min.js.map | 1 - webapp/app/containers/Dashboard/Grid.tsx | 2 +- .../Display/components/LayerItem.tsx | 19 +- .../internals/webpack/webpack.base.babel.js | 9 +- .../react-draggable}/react-draggable.js | 286 +++++--- .../react-draggable/react-draggable.js.map | 1 + .../react-draggable/react-draggable.min.js | 1 + .../react-draggable.min.js.map | 1 + webapp/libs/react-grid-layout/GridItem.js | 506 +++++++++++++++ .../libs/react-grid-layout/ReactGridLayout.js | 612 ++++++++++++++++++ .../ResponsiveReactGridLayout.js | 227 +++++++ .../components/WidthProvider.js | 94 +++ webapp/libs/react-grid-layout/css/styles.css | 53 ++ webapp/libs/react-grid-layout/index.js | 5 + .../libs/react-grid-layout/responsiveUtils.js | 87 +++ webapp/libs/react-grid-layout/utils.js | 562 ++++++++++++++++ webapp/libs/react-resizable/Resizable.js | 265 ++++++++ webapp/libs/react-resizable/ResizableBox.js | 118 ++++ webapp/libs/react-resizable/cloneElement.js | 20 + webapp/libs/react-resizable/css/styles.css | 17 + webapp/libs/react-resizable/index.js | 7 + webapp/package.json | 1 - webapp/share/app.tsx | 4 +- webapp/share/containers/Dashboard/index.tsx | 2 +- webapp/tsconfig.json | 6 +- 28 files changed, 2800 insertions(+), 113 deletions(-) delete mode 100644 webapp/app/components/Draggable/react-draggable.js.map delete mode 100644 webapp/app/components/Draggable/react-draggable.min.js delete mode 100644 webapp/app/components/Draggable/react-draggable.min.js.map rename webapp/{app/components/Draggable => libs/react-draggable}/react-draggable.js (92%) create mode 100644 webapp/libs/react-draggable/react-draggable.js.map create mode 100644 webapp/libs/react-draggable/react-draggable.min.js create mode 100644 webapp/libs/react-draggable/react-draggable.min.js.map create mode 100644 webapp/libs/react-grid-layout/GridItem.js create mode 100644 webapp/libs/react-grid-layout/ReactGridLayout.js create mode 100644 webapp/libs/react-grid-layout/ResponsiveReactGridLayout.js create mode 100644 webapp/libs/react-grid-layout/components/WidthProvider.js create mode 100644 webapp/libs/react-grid-layout/css/styles.css create mode 100644 webapp/libs/react-grid-layout/index.js create mode 100644 webapp/libs/react-grid-layout/responsiveUtils.js create mode 100644 webapp/libs/react-grid-layout/utils.js create mode 100644 webapp/libs/react-resizable/Resizable.js create mode 100644 webapp/libs/react-resizable/ResizableBox.js create mode 100644 webapp/libs/react-resizable/cloneElement.js create mode 100644 webapp/libs/react-resizable/css/styles.css create mode 100644 webapp/libs/react-resizable/index.js diff --git a/webapp/app/app.tsx b/webapp/app/app.tsx index 5fd8708fe..aaffa4344 100644 --- a/webapp/app/app.tsx +++ b/webapp/app/app.tsx @@ -36,8 +36,8 @@ import '!file-loader?name=[name].[ext]!./favicon.ico' import '!file-loader?name=[name].[ext]!./manifest.json' import 'file-loader?name=[name].[ext]!./.htaccess' import 'antd/dist/antd.less' -import 'react-grid-layout/css/styles.css' -import '../node_modules/react-resizable/css/styles.css' +import '../libs/react-grid-layout/css/styles.css' +import '../libs/react-resizable/css/styles.css' import 'bootstrap-datepicker/dist/css/bootstrap-datepicker3.standalone.min.css' import 'react-quill/dist/quill.snow.css' import './assets/fonts/iconfont.css' diff --git a/webapp/app/components/Draggable/react-draggable.js.map b/webapp/app/components/Draggable/react-draggable.js.map deleted file mode 100644 index 759f51738..000000000 --- a/webapp/app/components/Draggable/react-draggable.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../webpack/universalModuleDefinition","../webpack/bootstrap 065d942eca7b113ca491",".././lib/utils/shims.js",".././node_modules/fbjs/lib/emptyFunction.js",".././node_modules/fbjs/lib/invariant.js",".././node_modules/prop-types/lib/ReactPropTypesSecret.js","../external {\"commonjs\":\"react-dom\",\"commonjs2\":\"react-dom\",\"amd\":\"react-dom\",\"root\":\"ReactDOM\"}",".././lib/utils/domFns.js","../external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}",".././node_modules/prop-types/index.js",".././node_modules/fbjs/lib/warning.js",".././lib/utils/positionFns.js",".././lib/DraggableCore.js",".././lib/utils/log.js",".././index.js",".././lib/Draggable.js",".././node_modules/prop-types/factoryWithTypeCheckers.js",".././node_modules/prop-types/checkPropTypes.js",".././node_modules/prop-types/factoryWithThrowingShims.js",".././node_modules/classnames/index.js",".././lib/utils/getPrefix.js",".././node_modules/process/browser.js"],"names":["findInArray","isFunction","isNum","int","dontSetMe","array","callback","i","length","apply","func","Object","prototype","toString","call","num","isNaN","a","parseInt","props","propName","componentName","Error","matchesSelector","matchesSelectorAndParentsTo","addEvent","removeEvent","outerHeight","outerWidth","innerHeight","innerWidth","offsetXYFromParent","createCSSTransform","createSVGTransform","getTouch","getTouchIdentifier","addUserSelectStyles","removeUserSelectStyles","styleHacks","addClassName","removeClassName","matchesSelectorFunc","el","selector","method","baseNode","node","parentNode","event","handler","attachEvent","addEventListener","detachEvent","removeEventListener","height","clientHeight","computedStyle","ownerDocument","defaultView","getComputedStyle","borderTopWidth","borderBottomWidth","width","clientWidth","borderLeftWidth","borderRightWidth","paddingTop","paddingBottom","paddingLeft","paddingRight","evt","offsetParent","isBody","body","offsetParentRect","left","top","getBoundingClientRect","x","clientX","scrollLeft","y","clientY","scrollTop","e","identifier","targetTouches","t","changedTouches","doc","styleEl","getElementById","createElement","type","id","innerHTML","getElementsByTagName","appendChild","window","getSelection","removeAllRanges","childStyle","touchAction","className","classList","add","match","RegExp","remove","replace","getBoundPosition","snapToGrid","canDragX","canDragY","getControlPosition","createCoreData","createDraggableData","draggable","bounds","cloneBounds","findDOMNode","ownerWindow","boundNode","querySelector","HTMLElement","nodeStyle","boundNodeStyle","offsetLeft","marginLeft","offsetTop","marginTop","right","marginRight","bottom","marginBottom","Math","min","max","grid","pendingX","pendingY","round","axis","touchIdentifier","draggableCore","touchObj","state","isStart","lastX","deltaX","deltaY","lastY","coreData","scale","eventsFor","touch","start","move","stop","mouse","dragEventFor","DraggableCore","dragging","NaN","handleDragStart","onMouseDown","allowAnyClick","button","thisNode","disabled","target","Node","handle","cancel","setState","position","coreEvent","onStart","shouldUpdate","enableUserSelectHack","handleDrag","handleDragStop","preventDefault","Array","isArray","onDrag","MouseEvent","err","document","createEvent","initMouseEvent","onStop","onMouseUp","onTouchStart","onTouchEnd","cloneElement","Children","only","children","style","Component","displayName","propTypes","bool","process","browser","nodeType","arrayOf","number","string","transform","defaultProps","log","Draggable","require","default","module","exports","onDragStart","shouldStart","dragged","uiData","newState","slackX","slackY","onDragStop","shouldStop","controlled","Boolean","defaultPosition","isElementSVG","console","warn","SVGElement","nextProps","svgTransform","transformOpts","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","oneOf","oneOfType","shape","getPrefix","browserPrefixToKey","browserPrefixToStyle","prefixes","prop","documentElement","prefix","kebabToTitleCase","toLowerCase","str","out","shouldCapitalize","toUpperCase"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;;;;;;QC3DgBA,W,GAAAA,W;QAMAC,U,GAAAA,U;QAIAC,K,GAAAA,K;QAIAC,G,GAAAA,G;QAIAC,S,GAAAA,S;;AAnBhB;AACO,SAASJ,WAAT,CAAqBK,KAArB,+BAAoDC,QAApD,2BAA6E;AAClF,OAAK,IAAIC,IAAI,CAAR,EAAWC,SAASH,MAAMG,MAA/B,EAAuCD,IAAIC,MAA3C,EAAmDD,GAAnD,EAAwD;AACtD,QAAID,SAASG,KAAT,CAAeH,QAAf,EAAyB,CAACD,MAAME,CAAN,CAAD,EAAWA,CAAX,EAAcF,KAAd,CAAzB,CAAJ,EAAoD,OAAOA,MAAME,CAAN,CAAP;AACrD;AACF;;AAEM,SAASN,UAAT,CAAoBS,IAApB,0BAAwC;AAC7C,SAAO,OAAOA,IAAP,KAAgB,UAAhB,IAA8BC,OAAOC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BJ,IAA/B,MAAyC,mBAA9E;AACD;;AAEM,SAASR,KAAT,CAAea,GAAf,0BAAkC;AACvC,SAAO,OAAOA,GAAP,KAAe,QAAf,IAA2B,CAACC,MAAMD,GAAN,CAAnC;AACD;;AAEM,SAASZ,GAAT,CAAac,CAAb,4BAAgC;AACrC,SAAOC,SAASD,CAAT,EAAY,EAAZ,CAAP;AACD;;AAEM,SAASb,SAAT,CAAmBe,KAAnB,eAAkCC,QAAlC,eAAoDC,aAApD,eAA2E;AAChF,MAAIF,MAAMC,QAAN,CAAJ,EAAqB;AACnB,WAAO,IAAIE,KAAJ,mBAA0BF,QAA1B,mBAAgDC,aAAhD,8CAAP;AACD;AACF,C;;;;;;;ACxBD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+B;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,qDAAqD;AACrD,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA,0BAA0B;AAC1B;AACA;AACA;;AAEA,2B;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;;;;;;ACbA,+C;;;;;;;;;;;;;;;QCOgBE,e,GAAAA,e;QAmBAC,2B,GAAAA,2B;QAWAC,Q,GAAAA,Q;QAYAC,W,GAAAA,W;QAYAC,W,GAAAA,W;QAUAC,U,GAAAA,U;QASAC,W,GAAAA,W;QAQAC,U,GAAAA,U;QASAC,kB,GAAAA,kB;QAUAC,kB,GAAAA,kB;QAKAC,kB,GAAAA,kB;QAIAC,Q,GAAAA,Q;QAKAC,kB,GAAAA,kB;QAUAC,mB,GAAAA,mB;QAaAC,sB,GAAAA,sB;QAKAC,U,GAAAA,U;QASAC,Y,GAAAA,Y;QAUAC,e,GAAAA,e;;AAvKhB;;AACA;;;;;;;;;;;AAIA,IAAIC,sBAAsB,EAA1B;AACO,SAASlB,eAAT,CAAyBmB,EAAzB,aAAmCC,QAAnC,6BAA8D;AACnE,MAAI,CAACF,mBAAL,EAA0B;AACxBA,0BAAsB,wBAAY,CAChC,SADgC,EAEhC,uBAFgC,EAGhC,oBAHgC,EAIhC,mBAJgC,EAKhC,kBALgC,CAAZ,EAMnB,UAASG,MAAT,EAAgB;AACjB;AACA,aAAO,uBAAWF,GAAGE,MAAH,CAAX,CAAP;AACD,KATqB,CAAtB;AAUD;;AAED;AACA,SAAOF,GAAGD,mBAAH,EAAwB3B,IAAxB,CAA6B4B,EAA7B,EAAiCC,QAAjC,CAAP;AACD;;AAED;AACO,SAASnB,2BAAT,CAAqCkB,EAArC,aAA+CC,QAA/C,eAAiEE,QAAjE,2BAA0F;AAC/F,MAAIC,OAAOJ,EAAX;AACA,KAAG;AACD,QAAInB,gBAAgBuB,IAAhB,EAAsBH,QAAtB,CAAJ,EAAqC,OAAO,IAAP;AACrC,QAAIG,SAASD,QAAb,EAAuB,OAAO,KAAP;AACvBC,WAAOA,KAAKC,UAAZ;AACD,GAJD,QAISD,IAJT;;AAMA,SAAO,KAAP;AACD;;AAEM,SAASrB,QAAT,CAAkBiB,EAAlB,cAA6BM,KAA7B,eAA4CC,OAA5C,4BAAqE;AAC1E,MAAI,CAACP,EAAL,EAAS;AAAE;AAAS;AACpB,MAAIA,GAAGQ,WAAP,EAAoB;AAClBR,OAAGQ,WAAH,CAAe,OAAOF,KAAtB,EAA6BC,OAA7B;AACD,GAFD,MAEO,IAAIP,GAAGS,gBAAP,EAAyB;AAC9BT,OAAGS,gBAAH,CAAoBH,KAApB,EAA2BC,OAA3B,EAAoC,IAApC;AACD,GAFM,MAEA;AACL;AACAP,OAAG,OAAOM,KAAV,IAAmBC,OAAnB;AACD;AACF;;AAEM,SAASvB,WAAT,CAAqBgB,EAArB,cAAgCM,KAAhC,eAA+CC,OAA/C,4BAAwE;AAC7E,MAAI,CAACP,EAAL,EAAS;AAAE;AAAS;AACpB,MAAIA,GAAGU,WAAP,EAAoB;AAClBV,OAAGU,WAAH,CAAe,OAAOJ,KAAtB,EAA6BC,OAA7B;AACD,GAFD,MAEO,IAAIP,GAAGW,mBAAP,EAA4B;AACjCX,OAAGW,mBAAH,CAAuBL,KAAvB,EAA8BC,OAA9B,EAAuC,IAAvC;AACD,GAFM,MAEA;AACL;AACAP,OAAG,OAAOM,KAAV,IAAmB,IAAnB;AACD;AACF;;AAEM,SAASrB,WAAT,CAAqBmB,IAArB,iCAAgD;AACrD;AACA;AACA,MAAIQ,SAASR,KAAKS,YAAlB;AACA,MAAMC,gBAAgBV,KAAKW,aAAL,CAAmBC,WAAnB,CAA+BC,gBAA/B,CAAgDb,IAAhD,CAAtB;AACAQ,YAAU,gBAAIE,cAAcI,cAAlB,CAAV;AACAN,YAAU,gBAAIE,cAAcK,iBAAlB,CAAV;AACA,SAAOP,MAAP;AACD;;AAEM,SAAS1B,UAAT,CAAoBkB,IAApB,iCAA+C;AACpD;AACA;AACA,MAAIgB,QAAQhB,KAAKiB,WAAjB;AACA,MAAMP,gBAAgBV,KAAKW,aAAL,CAAmBC,WAAnB,CAA+BC,gBAA/B,CAAgDb,IAAhD,CAAtB;AACAgB,WAAS,gBAAIN,cAAcQ,eAAlB,CAAT;AACAF,WAAS,gBAAIN,cAAcS,gBAAlB,CAAT;AACA,SAAOH,KAAP;AACD;AACM,SAASjC,WAAT,CAAqBiB,IAArB,iCAAgD;AACrD,MAAIQ,SAASR,KAAKS,YAAlB;AACA,MAAMC,gBAAgBV,KAAKW,aAAL,CAAmBC,WAAnB,CAA+BC,gBAA/B,CAAgDb,IAAhD,CAAtB;AACAQ,YAAU,gBAAIE,cAAcU,UAAlB,CAAV;AACAZ,YAAU,gBAAIE,cAAcW,aAAlB,CAAV;AACA,SAAOb,MAAP;AACD;;AAEM,SAASxB,UAAT,CAAoBgB,IAApB,iCAA+C;AACpD,MAAIgB,QAAQhB,KAAKiB,WAAjB;AACA,MAAMP,gBAAgBV,KAAKW,aAAL,CAAmBC,WAAnB,CAA+BC,gBAA/B,CAAgDb,IAAhD,CAAtB;AACAgB,WAAS,gBAAIN,cAAcY,WAAlB,CAAT;AACAN,WAAS,gBAAIN,cAAca,YAAlB,CAAT;AACA,SAAOP,KAAP;AACD;;AAED;AACO,SAAS/B,kBAAT,CAA4BuC,GAA5B,2CAAqEC,YAArE,0CAAiH;AACtH,MAAMC,SAASD,iBAAiBA,aAAad,aAAb,CAA2BgB,IAA3D;AACA,MAAMC,mBAAmBF,SAAS,EAACG,MAAM,CAAP,EAAUC,KAAK,CAAf,EAAT,GAA6BL,aAAaM,qBAAb,EAAtD;;AAEA,MAAMC,IAAIR,IAAIS,OAAJ,GAAcR,aAAaS,UAA3B,GAAwCN,iBAAiBC,IAAnE;AACA,MAAMM,IAAIX,IAAIY,OAAJ,GAAcX,aAAaY,SAA3B,GAAuCT,iBAAiBE,GAAlE;;AAEA,SAAO,EAACE,IAAD,EAAIG,IAAJ,EAAP;AACD;;AAEM,SAASjD,kBAAT,oBAAoE;AAAA,MAAvC8C,CAAuC,QAAvCA,CAAuC;AAAA,MAApCG,CAAoC,QAApCA,CAAoC;;AACzE;AACA,6BAAS,mCAAmB,WAAnB,sBAAT,EAA0D,eAAeH,CAAf,GAAmB,KAAnB,GAA2BG,CAA3B,GAA+B,KAAzF;AACD;;AAEM,SAAShD,kBAAT,qBAAoE;AAAA,MAAvC6C,CAAuC,SAAvCA,CAAuC;AAAA,MAApCG,CAAoC,SAApCA,CAAoC;;AACzE,SAAO,eAAeH,CAAf,GAAmB,GAAnB,GAAyBG,CAAzB,GAA6B,GAApC;AACD;;AAEM,SAAS/C,QAAT,CAAkBkD,CAAlB,wBAAsCC,UAAtC,yDAA+F;AACpG,SAAQD,EAAEE,aAAF,IAAmB,wBAAYF,EAAEE,aAAd,EAA6B;AAAA,WAAKD,eAAeE,EAAEF,UAAtB;AAAA,GAA7B,CAApB,IACCD,EAAEI,cAAF,IAAoB,wBAAYJ,EAAEI,cAAd,EAA8B;AAAA,WAAKH,eAAeE,EAAEF,UAAtB;AAAA,GAA9B,CAD5B;AAED;;AAEM,SAASlD,kBAAT,CAA4BiD,CAA5B,sCAAyD;AAC9D,MAAIA,EAAEE,aAAF,IAAmBF,EAAEE,aAAF,CAAgB,CAAhB,CAAvB,EAA2C,OAAOF,EAAEE,aAAF,CAAgB,CAAhB,EAAmBD,UAA1B;AAC3C,MAAID,EAAEI,cAAF,IAAoBJ,EAAEI,cAAF,CAAiB,CAAjB,CAAxB,EAA6C,OAAOJ,EAAEI,cAAF,CAAiB,CAAjB,EAAoBH,UAA3B;AAC9C;;AAED;AACA;AACA;;AAEA;AACO,SAASjD,mBAAT,CAA6BqD,GAA7B,iBAA4C;AACjD,MAAIC,UAAUD,IAAIE,cAAJ,CAAmB,0BAAnB,CAAd;AACA,MAAI,CAACD,OAAL,EAAc;AACZA,cAAUD,IAAIG,aAAJ,CAAkB,OAAlB,CAAV;AACAF,YAAQG,IAAR,GAAe,UAAf;AACAH,YAAQI,EAAR,GAAa,0BAAb;AACAJ,YAAQK,SAAR,GAAoB,uFAApB;AACAL,YAAQK,SAAR,IAAqB,kFAArB;AACAN,QAAIO,oBAAJ,CAAyB,MAAzB,EAAiC,CAAjC,EAAoCC,WAApC,CAAgDP,OAAhD;AACD;AACD,MAAID,IAAIhB,IAAR,EAAclC,aAAakD,IAAIhB,IAAjB,EAAuB,uCAAvB;AACf;;AAEM,SAASpC,sBAAT,CAAgCoD,GAAhC,iBAA+C;AACpD,MAAIA,IAAIhB,IAAR,EAAcjC,gBAAgBiD,IAAIhB,IAApB,EAA0B,uCAA1B;AACdyB,SAAOC,YAAP,GAAsBC,eAAtB,GAFoD,CAEV;AAC3C;;AAEM,SAAS9D,UAAT,gBAAqD;AAAA,MAAjC+D,UAAiC,oFAAZ,EAAY;;AAC1D;AACA;AACA;AACEC,iBAAa;AADf,KAEKD,UAFL;AAID;;AAEM,SAAS9D,YAAT,CAAsBG,EAAtB,oBAAuC6D,SAAvC,eAA0D;AAC/D,MAAI7D,GAAG8D,SAAP,EAAkB;AAChB9D,OAAG8D,SAAH,CAAaC,GAAb,CAAiBF,SAAjB;AACD,GAFD,MAEO;AACL,QAAI,CAAC7D,GAAG6D,SAAH,CAAaG,KAAb,CAAmB,IAAIC,MAAJ,eAAuBJ,SAAvB,aAAnB,CAAL,EAAqE;AACnE7D,SAAG6D,SAAH,UAAoBA,SAApB;AACD;AACF;AACF;;AAEM,SAAS/D,eAAT,CAAyBE,EAAzB,oBAA0C6D,SAA1C,eAA6D;AAClE,MAAI7D,GAAG8D,SAAP,EAAkB;AAChB9D,OAAG8D,SAAH,CAAaI,MAAb,CAAoBL,SAApB;AACD,GAFD,MAEO;AACL7D,OAAG6D,SAAH,GAAe7D,GAAG6D,SAAH,CAAaM,OAAb,CAAqB,IAAIF,MAAJ,eAAuBJ,SAAvB,cAA2C,GAA3C,CAArB,EAAsE,EAAtE,CAAf;AACD;AACF,C;;;;;;AC9KD,+C;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,sFAAsF,aAAa;AACnG;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;;AAEA;AACA,4FAA4F,eAAe;AAC3G;AACA;;AAEA;AACA;AACA;AACA;;AAEA,yB;;;;;;;;;;;;QCtDgBO,gB,GAAAA,gB;QA6CAC,U,GAAAA,U;QAMAC,Q,GAAAA,Q;QAIAC,Q,GAAAA,Q;QAKAC,kB,GAAAA,kB;QAUAC,c,GAAAA,c;QAyBAC,mB,GAAAA,mB;;AAvGhB;;AACA;;;;AACA;;;;;;;AAMO,SAASN,gBAAT,CAA0BO,SAA1B,kBAAgDvC,CAAhD,eAA2DG,CAA3D,sCAAwF;AAC7F;AACA,MAAI,CAACoC,UAAUlG,KAAV,CAAgBmG,MAArB,EAA6B,OAAO,CAACxC,CAAD,EAAIG,CAAJ,CAAP;;AAE7B;AAJ6F,MAKxFqC,MALwF,GAK9ED,UAAUlG,KALoE,CAKxFmG,MALwF;;AAM7FA,WAAS,OAAOA,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsCC,YAAYD,MAAZ,CAA/C;AACA,MAAMxE,OAAO0E,YAAYH,SAAZ,CAAb;;AAEA,MAAI,OAAOC,MAAP,KAAkB,QAAtB,EAAgC;AAAA,QACvB7D,aADuB,GACNX,IADM,CACvBW,aADuB;;AAE9B,QAAMgE,cAAchE,cAAcC,WAAlC;AACA,QAAIgE,kBAAJ;AACA,QAAIJ,WAAW,QAAf,EAAyB;AACvBI,kBAAY5E,KAAKC,UAAjB;AACD,KAFD,MAEO;AACL2E,kBAAYjE,cAAckE,aAAd,CAA4BL,MAA5B,CAAZ;AACD;AACD,QAAI,EAAEI,qBAAqBE,WAAvB,CAAJ,EAAyC;AACvC,YAAM,IAAItG,KAAJ,CAAU,sBAAsBgG,MAAtB,GAA+B,8BAAzC,CAAN;AACD;AACD,QAAMO,YAAYJ,YAAY9D,gBAAZ,CAA6Bb,IAA7B,CAAlB;AACA,QAAMgF,iBAAiBL,YAAY9D,gBAAZ,CAA6B+D,SAA7B,CAAvB;AACA;AACAJ,aAAS;AACP3C,YAAM,CAAC7B,KAAKiF,UAAN,GAAmB,gBAAID,eAAe1D,WAAnB,CAAnB,GAAqD,gBAAIyD,UAAUG,UAAd,CADpD;AAEPpD,WAAK,CAAC9B,KAAKmF,SAAN,GAAkB,gBAAIH,eAAe5D,UAAnB,CAAlB,GAAmD,gBAAI2D,UAAUK,SAAd,CAFjD;AAGPC,aAAO,wBAAWT,SAAX,IAAwB,wBAAW5E,IAAX,CAAxB,GAA2CA,KAAKiF,UAAhD,GACL,gBAAID,eAAezD,YAAnB,CADK,GAC8B,gBAAIwD,UAAUO,WAAd,CAJ9B;AAKPC,cAAQ,yBAAYX,SAAZ,IAAyB,yBAAY5E,IAAZ,CAAzB,GAA6CA,KAAKmF,SAAlD,GACN,gBAAIH,eAAe3D,aAAnB,CADM,GAC8B,gBAAI0D,UAAUS,YAAd;AAN/B,KAAT;AAQD;;AAED;AACA,MAAI,kBAAMhB,OAAOa,KAAb,CAAJ,EAAyBrD,IAAIyD,KAAKC,GAAL,CAAS1D,CAAT,EAAYwC,OAAOa,KAAnB,CAAJ;AACzB,MAAI,kBAAMb,OAAOe,MAAb,CAAJ,EAA0BpD,IAAIsD,KAAKC,GAAL,CAASvD,CAAT,EAAYqC,OAAOe,MAAnB,CAAJ;;AAE1B;AACA,MAAI,kBAAMf,OAAO3C,IAAb,CAAJ,EAAwBG,IAAIyD,KAAKE,GAAL,CAAS3D,CAAT,EAAYwC,OAAO3C,IAAnB,CAAJ;AACxB,MAAI,kBAAM2C,OAAO1C,GAAb,CAAJ,EAAuBK,IAAIsD,KAAKE,GAAL,CAASxD,CAAT,EAAYqC,OAAO1C,GAAnB,CAAJ;;AAEvB,SAAO,CAACE,CAAD,EAAIG,CAAJ,CAAP;AACD;;AAEM,SAAS8B,UAAT,CAAoB2B,IAApB,yBAA4CC,QAA5C,eAA8DC,QAA9D,sCAAkG;AACvG,MAAM9D,IAAIyD,KAAKM,KAAL,CAAWF,WAAWD,KAAK,CAAL,CAAtB,IAAiCA,KAAK,CAAL,CAA3C;AACA,MAAMzD,IAAIsD,KAAKM,KAAL,CAAWD,WAAWF,KAAK,CAAL,CAAtB,IAAiCA,KAAK,CAAL,CAA3C;AACA,SAAO,CAAC5D,CAAD,EAAIG,CAAJ,CAAP;AACD;;AAEM,SAAS+B,QAAT,CAAkBK,SAAlB,gCAAiD;AACtD,SAAOA,UAAUlG,KAAV,CAAgB2H,IAAhB,KAAyB,MAAzB,IAAmCzB,UAAUlG,KAAV,CAAgB2H,IAAhB,KAAyB,GAAnE;AACD;;AAEM,SAAS7B,QAAT,CAAkBI,SAAlB,gCAAiD;AACtD,SAAOA,UAAUlG,KAAV,CAAgB2H,IAAhB,KAAyB,MAAzB,IAAmCzB,UAAUlG,KAAV,CAAgB2H,IAAhB,KAAyB,GAAnE;AACD;;AAED;AACO,SAAS5B,kBAAT,CAA4B9B,CAA5B,wBAAgD2D,eAAhD,gBAA0EC,aAA1E,6CAA0H;AAC/H,MAAMC,WAAW,OAAOF,eAAP,KAA2B,QAA3B,GAAsC,sBAAS3D,CAAT,EAAY2D,eAAZ,CAAtC,GAAqE,IAAtF;AACA,MAAI,OAAOA,eAAP,KAA2B,QAA3B,IAAuC,CAACE,QAA5C,EAAsD,OAAO,IAAP,CAFyE,CAE5D;AACnE,MAAMnG,OAAO0E,YAAYwB,aAAZ,CAAb;AACA;AACA,MAAMzE,eAAeyE,cAAc7H,KAAd,CAAoBoD,YAApB,IAAoCzB,KAAKyB,YAAzC,IAAyDzB,KAAKW,aAAL,CAAmBgB,IAAjG;AACA,SAAO,gCAAmBwE,YAAY7D,CAA/B,EAAkCb,YAAlC,CAAP;AACD;;AAED;AACO,SAAS4C,cAAT,CAAwBE,SAAxB,sBAAkDvC,CAAlD,eAA6DG,CAA7D,mCAAuF;AAC5F,MAAMiE,QAAQ7B,UAAU6B,KAAxB;AACA,MAAMC,UAAU,CAAC,kBAAMD,MAAME,KAAZ,CAAjB;AACA,MAAMtG,OAAO0E,YAAYH,SAAZ,CAAb;;AAEA,MAAI8B,OAAJ,EAAa;AACX;AACA,WAAO;AACLrG,gBADK;AAELuG,cAAQ,CAFH,EAEMC,QAAQ,CAFd;AAGLF,aAAOtE,CAHF,EAGKyE,OAAOtE,CAHZ;AAILH,UAJK,EAIFG;AAJE,KAAP;AAMD,GARD,MAQO;AACL;AACA,WAAO;AACLnC,gBADK;AAELuG,cAAQvE,IAAIoE,MAAME,KAFb,EAEoBE,QAAQrE,IAAIiE,MAAMK,KAFtC;AAGLH,aAAOF,MAAME,KAHR,EAGeG,OAAOL,MAAMK,KAH5B;AAILzE,UAJK,EAIFG;AAJE,KAAP;AAMD;AACF;;AAED;AACO,SAASmC,mBAAT,CAA6BC,SAA7B,kBAAmDmC,QAAnD,0CAA2F;AAAA,MACzFC,KADyF,GAChFpC,UAAUlG,KADsE,CACzFsI,KADyF;;AAEhG,SAAO;AACL3G,UAAM0G,SAAS1G,IADV;AAELgC,OAAGuC,UAAU6B,KAAV,CAAgBpE,CAAhB,GAAqB0E,SAASH,MAAT,GAAkBI,KAFrC;AAGLxE,OAAGoC,UAAU6B,KAAV,CAAgBjE,CAAhB,GAAqBuE,SAASF,MAAT,GAAkBG,KAHrC;AAILJ,YAAQG,SAASH,MAAT,GAAkBI,KAJrB;AAKLH,YAAQE,SAASF,MAAT,GAAkBG,KALrB;AAMLL,WAAO/B,UAAU6B,KAAV,CAAgBpE,CANlB;AAOLyE,WAAOlC,UAAU6B,KAAV,CAAgBjE;AAPlB,GAAP;AASD;;AAED;AACA,SAASsC,WAAT,CAAqBD,MAArB,4BAA6C;AAC3C,SAAO;AACL3C,UAAM2C,OAAO3C,IADR;AAELC,SAAK0C,OAAO1C,GAFP;AAGLuD,WAAOb,OAAOa,KAHT;AAILE,YAAQf,OAAOe;AAJV,GAAP;AAMD;;AAED,SAASb,WAAT,CAAqBH,SAArB,oDAAwE;AACtE,MAAMvE,OAAO,mBAAS0E,WAAT,CAAqBH,SAArB,CAAb;AACA,MAAI,CAACvE,IAAL,EAAW;AACT,UAAM,IAAIxB,KAAJ,CAAU,0CAAV,CAAN;AACD;AACD;AACA,SAAOwB,IAAP;AACD,C;;;;;;;;;;;;;;;;;ACrID;;;;AACA;;;;AACA;;;;AACA;;AAEA;;AACA;;AACA;;;;;;;;;;;;;;;AAKA;;AACA,IAAM4G,YAAY;AAChBC,SAAO;AACLC,WAAO,YADF;AAELC,UAAM,WAFD;AAGLC,UAAM;AAHD,GADS;AAMhBC,SAAO;AACLH,WAAO,WADF;AAELC,UAAM,WAFD;AAGLC,UAAM;AAHD;AANS,CAAlB;;AAaA;AACA,IAAIE,eAAeN,UAAUK,KAA7B;;;;;;;;;;;;;;;;;;;;;;;;AA0CA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;IAEqBE,a;;;;;;;;;;;;;;oMAoInBf,K,GAAQ;AACNgB,gBAAU,KADJ;AAEN;AACAd,aAAOe,GAHD,EAGMZ,OAAOY,GAHb;AAINpB,uBAAiB;AAJX,K,QAqBRqB,e,GAAiD,UAAChF,CAAD,EAAO;AACtD;AACA,YAAKjE,KAAL,CAAWkJ,WAAX,CAAuBjF,CAAvB;;AAEA;AACA,UAAI,CAAC,MAAKjE,KAAL,CAAWmJ,aAAZ,IAA6B,OAAOlF,EAAEmF,MAAT,KAAoB,QAAjD,IAA6DnF,EAAEmF,MAAF,KAAa,CAA9E,EAAiF,OAAO,KAAP;;AAEjF;AACA,UAAMC,WAAW,mBAAShD,WAAT,OAAjB;AACA,UAAI,CAACgD,QAAD,IAAa,CAACA,SAAS/G,aAAvB,IAAwC,CAAC+G,SAAS/G,aAAT,CAAuBgB,IAApE,EAA0E;AACxE,cAAM,IAAInD,KAAJ,CAAU,2CAAV,CAAN;AACD;AAXqD,UAY/CmC,aAZ+C,GAY9B+G,QAZ8B,CAY/C/G,aAZ+C;;AActD;;AACA,UAAI,MAAKtC,KAAL,CAAWsJ,QAAX,IACD,EAAErF,EAAEsF,MAAF,YAAoBjH,cAAcC,WAAd,CAA0BiH,IAAhD,CADC,IAED,MAAKxJ,KAAL,CAAWyJ,MAAX,IAAqB,CAAC,yCAA4BxF,EAAEsF,MAA9B,EAAsC,MAAKvJ,KAAL,CAAWyJ,MAAjD,EAAyDJ,QAAzD,CAFrB,IAGD,MAAKrJ,KAAL,CAAW0J,MAAX,IAAqB,yCAA4BzF,EAAEsF,MAA9B,EAAsC,MAAKvJ,KAAL,CAAW0J,MAAjD,EAAyDL,QAAzD,CAHxB,EAG6F;AAC3F;AACD;;AAED;AACA;AACA;AACA,UAAMzB,kBAAkB,gCAAmB3D,CAAnB,CAAxB;AACA,YAAK0F,QAAL,CAAc,EAAC/B,gCAAD,EAAd;;AAEA;AACA,UAAMgC,WAAW,qCAAmB3F,CAAnB,EAAsB2D,eAAtB,QAAjB;AACA,UAAIgC,YAAY,IAAhB,EAAsB,OA9BgC,CA8BxB;AA9BwB,UA+B/CjG,CA/B+C,GA+BvCiG,QA/BuC,CA+B/CjG,CA/B+C;AAAA,UA+B5CG,CA/B4C,GA+BvC8F,QA/BuC,CA+B5C9F,CA/B4C;;AAiCtD;;AACA,UAAM+F,YAAY,wCAAqBlG,CAArB,EAAwBG,CAAxB,CAAlB;;AAEA,yBAAI,oCAAJ,EAA0C+F,SAA1C;;AAEA;AACA,yBAAI,SAAJ,EAAe,MAAK7J,KAAL,CAAW8J,OAA1B;AACA,UAAMC,eAAe,MAAK/J,KAAL,CAAW8J,OAAX,CAAmB7F,CAAnB,EAAsB4F,SAAtB,CAArB;AACA,UAAIE,iBAAiB,KAArB,EAA4B;;AAE5B;AACA;AACA,UAAI,MAAK/J,KAAL,CAAWgK,oBAAf,EAAqC,iCAAoB1H,aAApB;;AAErC;AACA;AACA;AACA,YAAKqH,QAAL,CAAc;AACZZ,kBAAU,IADE;;AAGZd,eAAOtE,CAHK;AAIZyE,eAAOtE;AAJK,OAAd;;AAOA;AACA;AACA;AACA,4BAASxB,aAAT,EAAwBuG,aAAaH,IAArC,EAA2C,MAAKuB,UAAhD;AACA,4BAAS3H,aAAT,EAAwBuG,aAAaF,IAArC,EAA2C,MAAKuB,cAAhD;AACD,K,QAEDD,U,GAA4C,UAAChG,CAAD,EAAO;;AAEjD;AACA,UAAIA,EAAES,IAAF,KAAW,WAAf,EAA4BT,EAAEkG,cAAF;;AAE5B;AACA,UAAMP,WAAW,qCAAmB3F,CAAnB,EAAsB,MAAK8D,KAAL,CAAWH,eAAjC,QAAjB;AACA,UAAIgC,YAAY,IAAhB,EAAsB;AAP2B,UAQ5CjG,CAR4C,GAQpCiG,QARoC,CAQ5CjG,CAR4C;AAAA,UAQzCG,CARyC,GAQpC8F,QARoC,CAQzC9F,CARyC;;AAUjD;;AACA,UAAIsG,MAAMC,OAAN,CAAc,MAAKrK,KAAL,CAAWuH,IAAzB,CAAJ,EAAoC;AAClC,YAAIW,UAASvE,IAAI,MAAKoE,KAAL,CAAWE,KAA5B;AAAA,YAAmCE,UAASrE,IAAI,MAAKiE,KAAL,CAAWK,KAA3D;;AADkC,0BAEf,6BAAW,MAAKpI,KAAL,CAAWuH,IAAtB,EAA4BW,OAA5B,EAAoCC,OAApC,CAFe;;AAAA;;AAEjCD,eAFiC;AAEzBC,eAFyB;;AAGlC,YAAI,CAACD,OAAD,IAAW,CAACC,OAAhB,EAAwB,OAHU,CAGF;AAChCxE,YAAI,MAAKoE,KAAL,CAAWE,KAAX,GAAmBC,OAAvB,EAA+BpE,IAAI,MAAKiE,KAAL,CAAWK,KAAX,GAAmBD,OAAtD;AACD;;AAED,UAAM0B,YAAY,wCAAqBlG,CAArB,EAAwBG,CAAxB,CAAlB;;AAEA,yBAAI,+BAAJ,EAAqC+F,SAArC;;AAEA;AACA,UAAME,eAAe,MAAK/J,KAAL,CAAWsK,MAAX,CAAkBrG,CAAlB,EAAqB4F,SAArB,CAArB;AACA,UAAIE,iBAAiB,KAArB,EAA4B;AAC1B,YAAI;AACF;AACA,gBAAKG,cAAL,CAAoB,IAAIK,UAAJ,CAAe,SAAf,CAApB;AACD,SAHD,CAGE,OAAOC,GAAP,EAAY;AACZ;AACA,cAAM3I,UAAU4I,SAASC,WAAT,CAAqB,aAArB,CAAV,kCAAN;AACA;AACA;AACA7I,gBAAM8I,cAAN,CAAqB,SAArB,EAAgC,IAAhC,EAAsC,IAAtC,EAA4C5F,MAA5C,EAAoD,CAApD,EAAuD,CAAvD,EAA0D,CAA1D,EAA6D,CAA7D,EAAgE,CAAhE,EAAmE,KAAnE,EAA0E,KAA1E,EAAiF,KAAjF,EAAwF,KAAxF,EAA+F,CAA/F,EAAkG,IAAlG;AACA,gBAAKmF,cAAL,CAAoBrI,KAApB;AACD;AACD;AACD;;AAED,YAAK8H,QAAL,CAAc;AACZ1B,eAAOtE,CADK;AAEZyE,eAAOtE;AAFK,OAAd;AAID,K,QAEDoG,c,GAAgD,UAACjG,CAAD,EAAO;AACrD,UAAI,CAAC,MAAK8D,KAAL,CAAWgB,QAAhB,EAA0B;;AAE1B,UAAMa,WAAW,qCAAmB3F,CAAnB,EAAsB,MAAK8D,KAAL,CAAWH,eAAjC,QAAjB;AACA,UAAIgC,YAAY,IAAhB,EAAsB;AAJ+B,UAK9CjG,CAL8C,GAKtCiG,QALsC,CAK9CjG,CAL8C;AAAA,UAK3CG,CAL2C,GAKtC8F,QALsC,CAK3C9F,CAL2C;;AAMrD,UAAM+F,YAAY,wCAAqBlG,CAArB,EAAwBG,CAAxB,CAAlB;;AAEA,UAAMuF,WAAW,mBAAShD,WAAT,OAAjB;AACA,UAAIgD,QAAJ,EAAc;AACZ;AACA,YAAI,MAAKrJ,KAAL,CAAWgK,oBAAf,EAAqC,oCAAuBX,SAAS/G,aAAhC;AACtC;;AAED,yBAAI,mCAAJ,EAAyCuH,SAAzC;;AAEA;AACA,YAAKF,QAAL,CAAc;AACZZ,kBAAU,KADE;AAEZd,eAAOe,GAFK;AAGZZ,eAAOY;AAHK,OAAd;;AAMA;AACA,YAAKhJ,KAAL,CAAW4K,MAAX,CAAkB3G,CAAlB,EAAqB4F,SAArB;;AAEA,UAAIR,QAAJ,EAAc;AACZ;AACA,2BAAI,kCAAJ;AACA,iCAAYA,SAAS/G,aAArB,EAAoCuG,aAAaH,IAAjD,EAAuD,MAAKuB,UAA5D;AACA,iCAAYZ,SAAS/G,aAArB,EAAoCuG,aAAaF,IAAjD,EAAuD,MAAKuB,cAA5D;AACD;AACF,K,QAEDhB,W,GAA6C,UAACjF,CAAD,EAAO;AAClD4E,qBAAeN,UAAUK,KAAzB,CADkD,CAClB;;AAEhC,aAAO,MAAKK,eAAL,CAAqBhF,CAArB,CAAP;AACD,K,QAED4G,S,GAA2C,UAAC5G,CAAD,EAAO;AAChD4E,qBAAeN,UAAUK,KAAzB;;AAEA,aAAO,MAAKsB,cAAL,CAAoBjG,CAApB,CAAP;AACD,K,QAGD6G,Y,GAA8C,UAAC7G,CAAD,EAAO;AACnD;AACA4E,qBAAeN,UAAUC,KAAzB;;AAEA,aAAO,MAAKS,eAAL,CAAqBhF,CAArB,CAAP;AACD,K,QAED8G,U,GAA4C,UAAC9G,CAAD,EAAO;AACjD;AACA4E,qBAAeN,UAAUC,KAAzB;;AAEA,aAAO,MAAK0B,cAAL,CAAoBjG,CAApB,CAAP;AACD,K;;;;;2CAtLsB;AACrB;AACA;AACA,UAAMoF,WAAW,mBAAShD,WAAT,CAAqB,IAArB,CAAjB;AACA,UAAIgD,QAAJ,EAAc;AAAA,YACL/G,aADK,GACY+G,QADZ,CACL/G,aADK;;AAEZ,iCAAYA,aAAZ,EAA2BiG,UAAUK,KAAV,CAAgBF,IAA3C,EAAiD,KAAKuB,UAAtD;AACA,iCAAY3H,aAAZ,EAA2BiG,UAAUC,KAAV,CAAgBE,IAA3C,EAAiD,KAAKuB,UAAtD;AACA,iCAAY3H,aAAZ,EAA2BiG,UAAUK,KAAV,CAAgBD,IAA3C,EAAiD,KAAKuB,cAAtD;AACA,iCAAY5H,aAAZ,EAA2BiG,UAAUC,KAAV,CAAgBG,IAA3C,EAAiD,KAAKuB,cAAtD;AACA,YAAI,KAAKlK,KAAL,CAAWgK,oBAAf,EAAqC,oCAAuB1H,aAAvB;AACtC;AACF;;AA6JD;;;;6BAeS;AACP;AACA;AACA,aAAO,gBAAM0I,YAAN,CAAmB,gBAAMC,QAAN,CAAeC,IAAf,CAAoB,KAAKlL,KAAL,CAAWmL,QAA/B,CAAnB,EAA6D;AAClEC,eAAO,wBAAW,KAAKpL,KAAL,CAAWmL,QAAX,CAAoBnL,KAApB,CAA0BoL,KAArC,CAD2D;;AAGlE;AACA;AACAlC,qBAAa,KAAKA,WALgD;AAMlE4B,sBAAc,KAAKA,YAN+C;AAOlED,mBAAW,KAAKA,SAPkD;AAQlEE,oBAAY,KAAKA;AARiD,OAA7D,CAAP;AAUD;;;;EAhVwC,gBAAMM,S;;AAA5BvC,a,CAEZwC,W,GAAc,e;AAFFxC,a,CAIZyC,S,GAAY;AACjB;;;;;;AAMApC,iBAAe,oBAAUqC,IAPR;;AASjB;;;;AAIAlC,YAAU,oBAAUkC,IAbH;;AAejB;;;;;AAKAxB,wBAAsB,oBAAUwB,IApBf;;AAsBjB;;;;AAIApI,gBAAc,sBAASpD,KAAT,EAAgBC,QAAhB,EAA0B;AACtC,QAAIwL,QAAQC,OAAR,IAAmB1L,MAAMC,QAAN,CAAnB,IAAsCD,MAAMC,QAAN,EAAgB0L,QAAhB,KAA6B,CAAvE,EAA0E;AACxE,YAAM,IAAIxL,KAAJ,CAAU,+CAAV,CAAN;AACD;AACF,GA9BgB;;AAgCjB;;;AAGAoH,QAAM,oBAAUqE,OAAV,CAAkB,oBAAUC,MAA5B,CAnCW;;AAqCjB;;;;;;;;;;;;;;;;;;;;AAoBApC,UAAQ,oBAAUqC,MAzDD;;AA2DjB;;;;;;;;;;;;;;;;;;;;AAoBApC,UAAQ,oBAAUoC,MA/ED;;AAiFjB;;;;AAIAhC,WAAS,oBAAUvK,IArFF;;AAuFjB;;;;AAIA+K,UAAQ,oBAAU/K,IA3FD;;AA6FjB;;;;AAIAqL,UAAQ,oBAAUrL,IAjGD;;AAmGjB;;;;AAIA2J,eAAa,oBAAU3J,IAvGN;;AAyGjB;;;AAGA6F,6BA5GiB;AA6GjBgG,yBA7GiB;AA8GjBW;AA9GiB,C;AAJAjD,a,CAqHZkD,Y,GAAe;AACpB7C,iBAAe,KADK,EACE;AACtBO,UAAQ,IAFY;AAGpBJ,YAAU,KAHU;AAIpBU,wBAAsB,IAJF;AAKpB5G,gBAAc,IALM;AAMpBqG,UAAQ,IANY;AAOpBlC,QAAM,IAPc;AAQpBwE,aAAW,IARS;AASpBjC,WAAS,mBAAU,CAAE,CATD;AAUpBQ,UAAQ,kBAAU,CAAE,CAVA;AAWpBM,UAAQ,kBAAU,CAAE,CAXA;AAYpB1B,eAAa,uBAAU,CAAE;AAZL,C;kBArHHJ,a;;;;;;;;;;;;;kBC3EGmD,G;;AADxB;AACe,SAASA,GAAT,GAA2B;AAAA;;AACxC,MAAI,SAAJ,EAAiC,qBAAQA,GAAR;AAClC,C;;;;;;;;;ACJD,IAAIC,YAAY,mBAAAC,CAAQ,EAAR,EAA2BC,OAA3C;;AAEA;AACA;AACA;AACA;AACAC,OAAOC,OAAP,GAAiBJ,SAAjB;AACAG,OAAOC,OAAP,CAAeF,OAAf,GAAyBF,SAAzB;AACAG,OAAOC,OAAP,CAAexD,aAAf,GAA+B,mBAAAqD,CAAQ,EAAR,EAA+BC,OAA9D,C;;;;;;;;;;;;;;;;;;;ACPA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;AACA;;AACA;;AACA;;;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA;AACA;AACA;;;;;;;;;;;;;;IAEqBF,S;;;AAqInB,qBAAYlM,KAAZ,uBAAmC;AAAA;;AAAA,sHAC3BA,KAD2B;;AAAA,UAsDnCuM,WAtDmC,GAsDE,UAACtI,CAAD,EAAIoE,QAAJ,EAAiB;AACpD,yBAAI,4BAAJ,EAAkCA,QAAlC;;AAEA;AACA,UAAMmE,cAAc,MAAKxM,KAAL,CAAW8J,OAAX,CAAmB7F,CAAnB,EAAsB,6CAA0BoE,QAA1B,CAAtB,CAApB;AACA;AACA,UAAImE,gBAAgB,KAApB,EAA2B,OAAO,KAAP;;AAE3B,YAAK7C,QAAL,CAAc,EAACZ,UAAU,IAAX,EAAiB0D,SAAS,IAA1B,EAAd;AACD,KA/DkC;;AAAA,UAiEnCnC,MAjEmC,GAiEH,UAACrG,CAAD,EAAIoE,QAAJ,EAAiB;AAC/C,UAAI,CAAC,MAAKN,KAAL,CAAWgB,QAAhB,EAA0B,OAAO,KAAP;AAC1B,yBAAI,uBAAJ,EAA6BV,QAA7B;;AAEA,UAAMqE,SAAS,6CAA0BrE,QAA1B,CAAf;;AAEA,UAAMsE,wCAAmC;AACvChJ,WAAG+I,OAAO/I,CAD6B;AAEvCG,WAAG4I,OAAO5I;AAF6B,OAAzC;;AAKA;AACA,UAAI,MAAK9D,KAAL,CAAWmG,MAAf,EAAuB;AACrB;AADqB,YAEdxC,EAFc,GAENgJ,QAFM,CAEdhJ,CAFc;AAAA,YAEXG,EAFW,GAEN6I,QAFM,CAEX7I,CAFW;;AAIrB;AACA;AACA;;AACA6I,iBAAShJ,CAAT,IAAc,MAAKoE,KAAL,CAAW6E,MAAzB;AACAD,iBAAS7I,CAAT,IAAc,MAAKiE,KAAL,CAAW8E,MAAzB;;AAEA;AACA;;AAGA;AAdqB,gCAYM,0CAAuBF,SAAShJ,CAAhC,EAAmCgJ,SAAS7I,CAA5C,CAZN;;AAAA;;AAYpB6I,iBAAShJ,CAZW;AAYRgJ,iBAAS7I,CAZD;AAerB6I,iBAASC,MAAT,GAAkB,MAAK7E,KAAL,CAAW6E,MAAX,IAAqBjJ,KAAIgJ,SAAShJ,CAAlC,CAAlB;AACAgJ,iBAASE,MAAT,GAAkB,MAAK9E,KAAL,CAAW8E,MAAX,IAAqB/I,KAAI6I,SAAS7I,CAAlC,CAAlB;;AAEA;AACA4I,eAAO/I,CAAP,GAAWgJ,SAAShJ,CAApB;AACA+I,eAAO5I,CAAP,GAAW6I,SAAS7I,CAApB;AACA4I,eAAOxE,MAAP,GAAgByE,SAAShJ,CAAT,GAAa,MAAKoE,KAAL,CAAWpE,CAAxC;AACA+I,eAAOvE,MAAP,GAAgBwE,SAAS7I,CAAT,GAAa,MAAKiE,KAAL,CAAWjE,CAAxC;AACD;;AAED;AACA,UAAMiG,eAAe,MAAK/J,KAAL,CAAWsK,MAAX,CAAkBrG,CAAlB,EAAqByI,MAArB,CAArB;AACA,UAAI3C,iBAAiB,KAArB,EAA4B,OAAO,KAAP;;AAE5B,YAAKJ,QAAL,CAAcgD,QAAd;AACD,KA3GkC;;AAAA,UA6GnCG,UA7GmC,GA6GC,UAAC7I,CAAD,EAAIoE,QAAJ,EAAiB;AACnD,UAAI,CAAC,MAAKN,KAAL,CAAWgB,QAAhB,EAA0B,OAAO,KAAP;;AAE1B;AACA,UAAMgE,aAAa,MAAK/M,KAAL,CAAW4K,MAAX,CAAkB3G,CAAlB,EAAqB,6CAA0BoE,QAA1B,CAArB,CAAnB;AACA,UAAI0E,eAAe,KAAnB,EAA0B,OAAO,KAAP;;AAE1B,yBAAI,2BAAJ,EAAiC1E,QAAjC;;AAEA,UAAMsE,wCAAmC;AACvC5D,kBAAU,KAD6B;AAEvC6D,gBAAQ,CAF+B;AAGvCC,gBAAQ;AAH+B,OAAzC;;AAMA;AACA;AACA,UAAMG,aAAaC,QAAQ,MAAKjN,KAAL,CAAW4J,QAAnB,CAAnB;AACA,UAAIoD,UAAJ,EAAgB;AAAA,mCACC,MAAKhN,KAAL,CAAW4J,QADZ;AAAA,YACPjG,GADO,wBACPA,CADO;AAAA,YACJG,GADI,wBACJA,CADI;;AAEd6I,iBAAShJ,CAAT,GAAaA,GAAb;AACAgJ,iBAAS7I,CAAT,GAAaA,GAAb;AACD;;AAED,YAAK6F,QAAL,CAAcgD,QAAd;AACD,KAtIkC;;AAGjC,UAAK5E,KAAL,GAAa;AACX;AACAgB,gBAAU,KAFC;;AAIX;AACA0D,eAAS,KALE;;AAOX;AACA9I,SAAG3D,MAAM4J,QAAN,GAAiB5J,MAAM4J,QAAN,CAAejG,CAAhC,GAAoC3D,MAAMkN,eAAN,CAAsBvJ,CARlD;AASXG,SAAG9D,MAAM4J,QAAN,GAAiB5J,MAAM4J,QAAN,CAAe9F,CAAhC,GAAoC9D,MAAMkN,eAAN,CAAsBpJ,CATlD;;AAWX;AACA8I,cAAQ,CAZG,EAYAC,QAAQ,CAZR;;AAcX;AACAM,oBAAc;AAfH,KAAb;AAHiC;AAoBlC;;;;yCAEoB;AACnB,UAAI,KAAKnN,KAAL,CAAW4J,QAAX,IAAuB,EAAE,KAAK5J,KAAL,CAAWsK,MAAX,IAAqB,KAAKtK,KAAL,CAAW4K,MAAlC,CAA3B,EAAsE;AACpE;AACAwC,gBAAQC,IAAR,CAAa,8FACX,uGADW,GAEX,6BAFF;AAGD;AACF;;;wCAEmB;AAClB;AACA,UAAG,OAAOtI,OAAOuI,UAAd,KAA6B,WAA7B,IAA4C,mBAASjH,WAAT,CAAqB,IAArB,aAAsCtB,OAAOuI,UAA5F,EAAwG;AACtG,aAAK3D,QAAL,CAAc,EAAEwD,cAAc,IAAhB,EAAd;AACD;AACF;;;8CAEyBI,S,eAAmB;AAC3C;AACA,UAAIA,UAAU3D,QAAV,KACC,CAAC,KAAK5J,KAAL,CAAW4J,QAAZ,IACC2D,UAAU3D,QAAV,CAAmBjG,CAAnB,KAAyB,KAAK3D,KAAL,CAAW4J,QAAX,CAAoBjG,CAD9C,IAEC4J,UAAU3D,QAAV,CAAmB9F,CAAnB,KAAyB,KAAK9D,KAAL,CAAW4J,QAAX,CAAoB9F,CAH/C,CAAJ,EAKI;AACF,aAAK6F,QAAL,CAAc,EAAEhG,GAAG4J,UAAU3D,QAAV,CAAmBjG,CAAxB,EAA2BG,GAAGyJ,UAAU3D,QAAV,CAAmB9F,CAAjD,EAAd;AACD;AACF;;;2CAEsB;AACrB,WAAK6F,QAAL,CAAc,EAACZ,UAAU,KAAX,EAAd,EADqB,CACa;AACnC;;;qDAoF2B;AAAA;;AAC1B,UAAIqC,QAAQ,EAAZ;AAAA,UAAgBoC,eAAe,IAA/B;;AAEA;AACA,UAAMR,aAAaC,QAAQ,KAAKjN,KAAL,CAAW4J,QAAnB,CAAnB;AACA,UAAM1D,YAAY,CAAC8G,UAAD,IAAe,KAAKjF,KAAL,CAAWgB,QAA5C;;AAEA,UAAMa,WAAW,KAAK5J,KAAL,CAAW4J,QAAX,IAAuB,KAAK5J,KAAL,CAAWkN,eAAnD;AACA,UAAMO,gBAAgB;AACpB;AACA9J,WAAG,2BAAS,IAAT,KAAkBuC,SAAlB,GACD,KAAK6B,KAAL,CAAWpE,CADV,GAEDiG,SAASjG,CAJS;;AAMpB;AACAG,WAAG,2BAAS,IAAT,KAAkBoC,SAAlB,GACD,KAAK6B,KAAL,CAAWjE,CADV,GAED8F,SAAS9F;AATS,OAAtB;;AAYA;AACA,UAAI,KAAKiE,KAAL,CAAWoF,YAAf,EAA6B;AAC3BK,uBAAe,gCAAmBC,aAAnB,CAAf;AACD,OAFD,MAEO;AACL;AACA;AACA;AACA;AACArC,gBAAQ,gCAAmBqC,aAAnB,CAAR;AACD;;AA7ByB,mBAmCtB,KAAKzN,KAnCiB;AAAA,UAgCxB0N,gBAhCwB,UAgCxBA,gBAhCwB;AAAA,UAiCxBC,wBAjCwB,UAiCxBA,wBAjCwB;AAAA,UAkCxBC,uBAlCwB,UAkCxBA,uBAlCwB;;AAqC1B;;AACA,UAAMxI,YAAY,0BAAY,KAAKpF,KAAL,CAAWmL,QAAX,CAAoBnL,KAApB,CAA0BoF,SAA1B,IAAuC,EAAnD,EAAwDsI,gBAAxD,kDACfC,wBADe,EACY,KAAK5F,KAAL,CAAWgB,QADvB,gCAEf6E,uBAFe,EAEW,KAAK7F,KAAL,CAAW0E,OAFtB,gBAAlB;;AAKA;AACA;AACA,aACE;AAAA;AAAA,qBAAmB,KAAKzM,KAAxB,IAA+B,SAAS,KAAKuM,WAA7C,EAA0D,QAAQ,KAAKjC,MAAvE,EAA+E,QAAQ,KAAKwC,UAA5F;AACG,wBAAM9B,YAAN,CAAmB,gBAAMC,QAAN,CAAeC,IAAf,CAAoB,KAAKlL,KAAL,CAAWmL,QAA/B,CAAnB,EAA6D;AAC5D/F,qBAAWA,SADiD;AAE5DgG,8BAAW,KAAKpL,KAAL,CAAWmL,QAAX,CAAoBnL,KAApB,CAA0BoL,KAArC,EAA+CA,KAA/C,CAF4D;AAG5DW,qBAAWyB;AAHiD,SAA7D;AADH,OADF;AASD;;;;EAnUoC,gBAAMnC,S;;AAAxBa,S,CAEZZ,W,GAAc,W;AAFFY,S,CAIZX,S,gBAEF,wBAAcA,S;;AAEjB;;;;;;;;;;;;;AAaA5D,QAAM,oBAAUkG,KAAV,CAAgB,CAAC,MAAD,EAAS,GAAT,EAAc,GAAd,EAAmB,MAAnB,CAAhB,C;;AAEN;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA1H,UAAQ,oBAAU2H,SAAV,CAAoB,CAC1B,oBAAUC,KAAV,CAAgB;AACdvK,UAAM,oBAAUqI,MADF;AAEd7E,WAAO,oBAAU6E,MAFH;AAGdpI,SAAK,oBAAUoI,MAHD;AAId3E,YAAQ,oBAAU2E;AAJJ,GAAhB,CAD0B,EAO1B,oBAAUC,MAPgB,EAQ1B,oBAAU+B,KAAV,CAAgB,CAAC,KAAD,CAAhB,CAR0B,CAApB,C;;AAWRH,oBAAkB,oBAAU5B,M;AAC5B6B,4BAA0B,oBAAU7B,M;AACpC8B,2BAAyB,oBAAU9B,M;;AAEnC;;;;;;;;;;;;;;;;;AAiBAoB,mBAAiB,oBAAUa,KAAV,CAAgB;AAC/BpK,OAAG,oBAAUkI,MADkB;AAE/B/H,OAAG,oBAAU+H;AAFkB,GAAhB,C;;AAKjB;;;;;;;;;;;;;;;;;;;;AAoBAjC,YAAU,oBAAUmE,KAAV,CAAgB;AACxBpK,OAAG,oBAAUkI,MADW;AAExB/H,OAAG,oBAAU+H;AAFW,GAAhB,C;;AAKVvD,SAAO,oBAAUuD,M;;AAEjB;;;AAGAzG,6B;AACAgG,yB;AACAW;;AAtHiBG,S,CAyHZF,Y,gBACF,wBAAcA,Y;AACjBrE,QAAM,M;AACNxB,UAAQ,K;AACRuH,oBAAkB,iB;AAClBC,4BAA0B,0B;AAC1BC,2BAAyB,yB;AACzBV,mBAAiB,EAACvJ,GAAG,CAAJ,EAAOG,GAAG,CAAV,E;AACjB8F,YAAU,I;AACVtB,SAAO;;kBAlIU4D,S;;;;;;;ACtCrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,6BAA6B;AAC7B,QAAQ;AACR;AACA;AACA;AACA;AACA,+BAA+B,KAAK;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,4BAA4B;AAC5B,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,gCAAgC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,gCAAgC;AACrD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;AC/fA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gGAAgG;AAChG;AACA,SAAS;AACT;AACA;AACA,gGAAgG;AAChG;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB;;AAEhB;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,GAAG;AAAA;AACH,EAAE;AACF;AACA;AACA,CAAC;;;;;;;;;;;;;QC7Ce8B,S,GAAAA,S;QAiBAC,kB,GAAAA,kB;QAIAC,oB,GAAAA,oB;AAtBhB,IAAMC,WAAW,CAAC,KAAD,EAAQ,QAAR,EAAkB,GAAlB,EAAuB,IAAvB,CAAjB;AACO,SAASH,SAAT,gBAAqD;AAAA,MAAlCI,IAAkC,oFAArB,WAAqB;;AAC1D;AACA;AACA;AACA,MAAI,OAAOrJ,MAAP,KAAkB,WAAlB,IAAiC,OAAOA,OAAO0F,QAAd,KAA2B,WAAhE,EAA6E,OAAO,EAAP;;AAE7E,MAAMW,QAAQrG,OAAO0F,QAAP,CAAgB4D,eAAhB,CAAgCjD,KAA9C;;AAEA,MAAIgD,QAAQhD,KAAZ,EAAmB,OAAO,EAAP;;AAEnB,OAAK,IAAIhM,IAAI,CAAb,EAAgBA,IAAI+O,SAAS9O,MAA7B,EAAqCD,GAArC,EAA0C;AACxC,QAAI6O,mBAAmBG,IAAnB,EAAyBD,SAAS/O,CAAT,CAAzB,KAAyCgM,KAA7C,EAAoD,OAAO+C,SAAS/O,CAAT,CAAP;AACrD;;AAED,SAAO,EAAP;AACD;;AAEM,SAAS6O,kBAAT,CAA4BG,IAA5B,eAA0CE,MAA1C,4BAAkE;AACvE,SAAOA,cAAYA,MAAZ,GAAqBC,iBAAiBH,IAAjB,CAArB,GAAgDA,IAAvD;AACD;;AAEM,SAASF,oBAAT,CAA8BE,IAA9B,eAA4CE,MAA5C,4BAAoE;AACzE,SAAOA,eAAaA,OAAOE,WAAP,EAAb,SAAqCJ,IAArC,GAA8CA,IAArD;AACD;;AAED,SAASG,gBAAT,CAA0BE,GAA1B,4BAA+C;AAC7C,MAAIC,MAAM,EAAV;AACA,MAAIC,mBAAmB,IAAvB;AACA,OAAK,IAAIvP,IAAI,CAAb,EAAgBA,IAAIqP,IAAIpP,MAAxB,EAAgCD,GAAhC,EAAqC;AACnC,QAAIuP,gBAAJ,EAAsB;AACpBD,aAAOD,IAAIrP,CAAJ,EAAOwP,WAAP,EAAP;AACAD,yBAAmB,KAAnB;AACD,KAHD,MAGO,IAAIF,IAAIrP,CAAJ,MAAW,GAAf,EAAoB;AACzBuP,yBAAmB,IAAnB;AACD,KAFM,MAEA;AACLD,aAAOD,IAAIrP,CAAJ,CAAP;AACD;AACF;AACD,SAAOsP,GAAP;AACD;;AAED;AACA;AACA;kBACeV,W;;;;;;AC9Cf;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU","file":"./dist/react-draggable.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react-dom\"), require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react-dom\", \"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactDraggable\"] = factory(require(\"react-dom\"), require(\"react\"));\n\telse\n\t\troot[\"ReactDraggable\"] = factory(root[\"ReactDOM\"], root[\"React\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_4__, __WEBPACK_EXTERNAL_MODULE_6__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \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// 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 = 12);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 065d942eca7b113ca491","// @flow\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nexport function findInArray(array: Array | TouchList, callback: Function): any {\n for (let i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\n\nexport function isFunction(func: any): boolean {\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\nexport function isNum(num: any): boolean {\n return typeof num === 'number' && !isNaN(num);\n}\n\nexport function int(a: string): number {\n return parseInt(a, 10);\n}\n\nexport function dontSetMe(props: Object, propName: string, componentName: string) {\n if (props[propName]) {\n return new Error(`Invalid prop ${propName} passed to ${componentName} - do not set this, set it on the child.`);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/shims.js","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/emptyFunction.js\n// module id = 1\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/invariant.js\n// module id = 2\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/lib/ReactPropTypesSecret.js\n// module id = 3\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_4__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react-dom\",\"commonjs2\":\"react-dom\",\"amd\":\"react-dom\",\"root\":\"ReactDOM\"}\n// module id = 4\n// module chunks = 0","// @flow\nimport {findInArray, isFunction, int} from './shims';\nimport browserPrefix, {browserPrefixToKey} from './getPrefix';\n\nimport type {ControlPosition, MouseTouchEvent} from './types';\n\nlet matchesSelectorFunc = '';\nexport function matchesSelector(el: Node, selector: string): boolean {\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = findInArray([\n 'matches',\n 'webkitMatchesSelector',\n 'mozMatchesSelector',\n 'msMatchesSelector',\n 'oMatchesSelector'\n ], function(method){\n // $FlowIgnore: Doesn't think elements are indexable\n return isFunction(el[method]);\n });\n }\n\n // $FlowIgnore: Doesn't think elements are indexable\n return el[matchesSelectorFunc].call(el, selector);\n}\n\n// Works up the tree to the draggable itself attempting to match selector.\nexport function matchesSelectorAndParentsTo(el: Node, selector: string, baseNode: Node): boolean {\n let node = el;\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n node = node.parentNode;\n } while (node);\n\n return false;\n}\n\nexport function addEvent(el: ?Node, event: string, handler: Function): void {\n if (!el) { return; }\n if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else if (el.addEventListener) {\n el.addEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\n\nexport function removeEvent(el: ?Node, event: string, handler: Function): void {\n if (!el) { return; }\n if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else if (el.removeEventListener) {\n el.removeEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\n\nexport function outerHeight(node: HTMLElement): number {\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += int(computedStyle.borderTopWidth);\n height += int(computedStyle.borderBottomWidth);\n return height;\n}\n\nexport function outerWidth(node: HTMLElement): number {\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += int(computedStyle.borderLeftWidth);\n width += int(computedStyle.borderRightWidth);\n return width;\n}\nexport function innerHeight(node: HTMLElement): number {\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= int(computedStyle.paddingTop);\n height -= int(computedStyle.paddingBottom);\n return height;\n}\n\nexport function innerWidth(node: HTMLElement): number {\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= int(computedStyle.paddingLeft);\n width -= int(computedStyle.paddingRight);\n return width;\n}\n\n// Get from offsetParent\nexport function offsetXYFromParent(evt: {clientX: number, clientY: number}, offsetParent: HTMLElement): ControlPosition {\n const isBody = offsetParent === offsetParent.ownerDocument.body;\n const offsetParentRect = isBody ? {left: 0, top: 0} : offsetParent.getBoundingClientRect();\n\n const x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;\n const y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;\n\n return {x, y};\n}\n\nexport function createCSSTransform({x, y}: {x: number, y: number}): Object {\n // Replace unitless items with px\n return {[browserPrefixToKey('transform', browserPrefix)]: 'translate(' + x + 'px,' + y + 'px)'};\n}\n\nexport function createSVGTransform({x, y}: {x: number, y: number}): string {\n return 'translate(' + x + ',' + y + ')';\n}\n\nexport function getTouch(e: MouseTouchEvent, identifier: number): ?{clientX: number, clientY: number} {\n return (e.targetTouches && findInArray(e.targetTouches, t => identifier === t.identifier)) ||\n (e.changedTouches && findInArray(e.changedTouches, t => identifier === t.identifier));\n}\n\nexport function getTouchIdentifier(e: MouseTouchEvent): ?number {\n if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n}\n\n// User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n\n// Note we're passing `document` b/c we could be iframed\nexport function addUserSelectStyles(doc: Document) {\n let styleEl = doc.getElementById('react-draggable-style-el');\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {background: transparent;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {background: transparent;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\n\nexport function removeUserSelectStyles(doc: Document) {\n if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection');\n window.getSelection().removeAllRanges(); // remove selection caused by scroll\n}\n\nexport function styleHacks(childStyle: Object = {}): Object {\n // Workaround IE pointer events; see #51\n // https://github.com/mzabriskie/react-draggable/issues/51#issuecomment-103488278\n return {\n touchAction: 'none',\n ...childStyle\n };\n}\n\nexport function addClassName(el: HTMLElement, className: string) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`))) {\n el.className += ` ${className}`;\n }\n }\n}\n\nexport function removeClassName(el: HTMLElement, className: string) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`, 'g'), '');\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/domFns.js","module.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}\n// module id = 6\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/index.js\n// module id = 7\n// module chunks = 0","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/warning.js\n// module id = 8\n// module chunks = 0","// @flow\nimport {isNum, int} from './shims';\nimport ReactDOM from 'react-dom';\nimport {getTouch, innerWidth, innerHeight, offsetXYFromParent, outerWidth, outerHeight} from './domFns';\n\nimport type Draggable from '../Draggable';\nimport type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';\nimport type DraggableCore from '../DraggableCore';\n\nexport function getBoundPosition(draggable: Draggable, x: number, y: number): [number, number] {\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y];\n\n // Clone new bounds\n let {bounds} = draggable.props;\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n const node = findDOMNode(draggable);\n\n if (typeof bounds === 'string') {\n const {ownerDocument} = node;\n const ownerWindow = ownerDocument.defaultView;\n let boundNode;\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n if (!(boundNode instanceof HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n const nodeStyle = ownerWindow.getComputedStyle(node);\n const boundNodeStyle = ownerWindow.getComputedStyle(boundNode);\n // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n bounds = {\n left: -node.offsetLeft + int(boundNodeStyle.paddingLeft) + int(nodeStyle.marginLeft),\n top: -node.offsetTop + int(boundNodeStyle.paddingTop) + int(nodeStyle.marginTop),\n right: innerWidth(boundNode) - outerWidth(node) - node.offsetLeft +\n int(boundNodeStyle.paddingRight) - int(nodeStyle.marginRight),\n bottom: innerHeight(boundNode) - outerHeight(node) - node.offsetTop +\n int(boundNodeStyle.paddingBottom) - int(nodeStyle.marginBottom)\n };\n }\n\n // Keep x and y below right and bottom limits...\n if (isNum(bounds.right)) x = Math.min(x, bounds.right);\n if (isNum(bounds.bottom)) y = Math.min(y, bounds.bottom);\n\n // But above left and top limits.\n if (isNum(bounds.left)) x = Math.max(x, bounds.left);\n if (isNum(bounds.top)) y = Math.max(y, bounds.top);\n\n return [x, y];\n}\n\nexport function snapToGrid(grid: [number, number], pendingX: number, pendingY: number): [number, number] {\n const x = Math.round(pendingX / grid[0]) * grid[0];\n const y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\n\nexport function canDragX(draggable: Draggable): boolean {\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\n\nexport function canDragY(draggable: Draggable): boolean {\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n}\n\n// Get {x, y} positions from event.\nexport function getControlPosition(e: MouseTouchEvent, touchIdentifier: ?number, draggableCore: DraggableCore): ?ControlPosition {\n const touchObj = typeof touchIdentifier === 'number' ? getTouch(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n const node = findDOMNode(draggableCore);\n // User can provide an offsetParent if desired.\n const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return offsetXYFromParent(touchObj || e, offsetParent);\n}\n\n// Create an data object exposed by 's events\nexport function createCoreData(draggable: DraggableCore, x: number, y: number): DraggableData {\n const state = draggable.state;\n const isStart = !isNum(state.lastX);\n const node = findDOMNode(draggable);\n\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node,\n deltaX: 0, deltaY: 0,\n lastX: x, lastY: y,\n x, y,\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node,\n deltaX: x - state.lastX, deltaY: y - state.lastY,\n lastX: state.lastX, lastY: state.lastY,\n x, y,\n };\n }\n}\n\n// Create an data exposed by 's events\nexport function createDraggableData(draggable: Draggable, coreData: DraggableData): DraggableData {\n const {scale} = draggable.props;\n return {\n node: coreData.node,\n x: draggable.state.x + (coreData.deltaX / scale),\n y: draggable.state.y + (coreData.deltaY / scale),\n deltaX: coreData.deltaX / scale,\n deltaY: coreData.deltaY / scale,\n lastX: draggable.state.x,\n lastY: draggable.state.y\n };\n}\n\n// A lot faster than stringify/parse\nfunction cloneBounds(bounds: Bounds): Bounds {\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\n\nfunction findDOMNode(draggable: Draggable | DraggableCore): HTMLElement {\n const node = ReactDOM.findDOMNode(draggable);\n if (!node) {\n throw new Error(': Unmounted during event!');\n }\n // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n return node;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/positionFns.js","// @flow\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport {matchesSelectorAndParentsTo, addEvent, removeEvent, addUserSelectStyles, getTouchIdentifier,\n removeUserSelectStyles, styleHacks} from './utils/domFns';\nimport {createCoreData, getControlPosition, snapToGrid} from './utils/positionFns';\nimport {dontSetMe} from './utils/shims';\nimport log from './utils/log';\n\nimport type {EventHandler, MouseTouchEvent} from './utils/types';\nimport type {Element as ReactElement} from 'react';\n\n// Simple abstraction for dragging events names.\nconst eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n};\n\n// Default to mouse events.\nlet dragEventFor = eventsFor.mouse;\n\ntype DraggableCoreState = {\n dragging: boolean,\n lastX: number,\n lastY: number,\n touchIdentifier: ?number\n};\n\nexport type DraggableBounds = {\n left: number,\n right: number,\n top: number,\n bottom: number,\n};\n\nexport type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n};\n\nexport type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void;\n\nexport type ControlPosition = {x: number, y: number};\n\nexport type DraggableCoreProps = {\n allowAnyClick: boolean,\n cancel: string,\n children: ReactElement,\n disabled: boolean,\n enableUserSelectHack: boolean,\n offsetParent: HTMLElement,\n grid: [number, number],\n handle: string,\n onStart: DraggableEventHandler,\n onDrag: DraggableEventHandler,\n onStop: DraggableEventHandler,\n onMouseDown: (e: MouseEvent) => void,\n};\n\n//\n// Define .\n//\n// is for advanced usage of . It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\n\nexport default class DraggableCore extends React.Component {\n\n static displayName = 'DraggableCore';\n\n static propTypes = {\n /**\n * `allowAnyClick` allows dragging using any mouse button.\n * By default, we only accept the left button.\n *\n * Defaults to `false`.\n */\n allowAnyClick: PropTypes.bool,\n\n /**\n * `disabled`, if true, stops the from dragging. All handlers,\n * with the exception of `onMouseDown`, will not fire.\n */\n disabled: PropTypes.bool,\n\n /**\n * By default, we add 'user-select:none' attributes to the document body\n * to prevent ugly text selection during drag. If this is causing problems\n * for your app, set this to `false`.\n */\n enableUserSelectHack: PropTypes.bool,\n\n /**\n * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function(props, propName) {\n if (process.browser && props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n }\n },\n\n /**\n * `grid` specifies the x and y that dragging should snap to.\n */\n grid: PropTypes.arrayOf(PropTypes.number),\n\n /**\n * `handle` specifies a selector to be used as the handle that initiates drag.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
\n *
Click me to drag
\n *
This is some other content
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n handle: PropTypes.string,\n\n /**\n * `cancel` specifies a selector to be used to prevent drag initialization.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return(\n * \n *
\n *
You can't drag from here
\n *
Dragging here works fine
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n cancel: PropTypes.string,\n\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: PropTypes.func,\n\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: PropTypes.func,\n\n /**\n * Called when dragging stops.\n * If this function returns the boolean false, the drag will remain active.\n */\n onStop: PropTypes.func,\n\n /**\n * A workaround option which can be passed if onMouseDown needs to be accessed,\n * since it'll always be blocked (as there is internal use of onMouseDown)\n */\n onMouseDown: PropTypes.func,\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: dontSetMe,\n style: dontSetMe,\n transform: dontSetMe\n };\n\n static defaultProps = {\n allowAnyClick: false, // by default only accept left click\n cancel: null,\n disabled: false,\n enableUserSelectHack: true,\n offsetParent: null,\n handle: null,\n grid: null,\n transform: null,\n onStart: function(){},\n onDrag: function(){},\n onStop: function(){},\n onMouseDown: function(){}\n };\n\n state = {\n dragging: false,\n // Used while dragging to determine deltas.\n lastX: NaN, lastY: NaN,\n touchIdentifier: null\n };\n\n componentWillUnmount() {\n // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n const thisNode = ReactDOM.findDOMNode(this);\n if (thisNode) {\n const {ownerDocument} = thisNode;\n removeEvent(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n removeEvent(ownerDocument, eventsFor.touch.move, this.handleDrag);\n removeEvent(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n removeEvent(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n if (this.props.enableUserSelectHack) removeUserSelectStyles(ownerDocument);\n }\n }\n\n handleDragStart: EventHandler = (e) => {\n // Make it possible to attach event handlers on top of this one.\n this.props.onMouseDown(e);\n\n // Only accept left-clicks.\n if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false;\n\n // Get nodes. Be sure to grab relative document (could be iframed)\n const thisNode = ReactDOM.findDOMNode(this);\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error(' not mounted on DragStart!');\n }\n const {ownerDocument} = thisNode;\n\n // Short circuit if handle or cancel prop was provided and selector doesn't match.\n if (this.props.disabled ||\n (!(e.target instanceof ownerDocument.defaultView.Node)) ||\n (this.props.handle && !matchesSelectorAndParentsTo(e.target, this.props.handle, thisNode)) ||\n (this.props.cancel && matchesSelectorAndParentsTo(e.target, this.props.cancel, thisNode))) {\n return;\n }\n\n // Set touch identifier in component state if this is a touch event. This allows us to\n // distinguish between individual touches on multitouch screens by identifying which\n // touchpoint was set to this element.\n const touchIdentifier = getTouchIdentifier(e);\n this.setState({touchIdentifier});\n\n // Get the current drag point from the event. This is used as the offset.\n const position = getControlPosition(e, touchIdentifier, this);\n if (position == null) return; // not possible but satisfies flow\n const {x, y} = position;\n\n // Create an event object with all the data parents need to make a decision here.\n const coreEvent = createCoreData(this, x, y);\n\n log('DraggableCore: handleDragStart: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, cancel.\n log('calling', this.props.onStart);\n const shouldUpdate = this.props.onStart(e, coreEvent);\n if (shouldUpdate === false) return;\n\n // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n if (this.props.enableUserSelectHack) addUserSelectStyles(ownerDocument);\n\n // Initiate dragging. Set the current x and y as offsets\n // so we know how much we've moved during the drag. This allows us\n // to drag elements around even if they have been moved, without issue.\n this.setState({\n dragging: true,\n\n lastX: x,\n lastY: y\n });\n\n // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n // this element. We use different events depending on whether or not we have detected that this\n // is a touch-capable device.\n addEvent(ownerDocument, dragEventFor.move, this.handleDrag);\n addEvent(ownerDocument, dragEventFor.stop, this.handleDragStop);\n };\n\n handleDrag: EventHandler = (e) => {\n\n // Prevent scrolling on mobile devices, like ipad/iphone.\n if (e.type === 'touchmove') e.preventDefault();\n\n // Get the current drag point from the event. This is used as the offset.\n const position = getControlPosition(e, this.state.touchIdentifier, this);\n if (position == null) return;\n let {x, y} = position;\n\n // Snap to grid if prop has been provided\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.state.lastX, deltaY = y - this.state.lastY;\n [deltaX, deltaY] = snapToGrid(this.props.grid, deltaX, deltaY);\n if (!deltaX && !deltaY) return; // skip useless drag\n x = this.state.lastX + deltaX, y = this.state.lastY + deltaY;\n }\n\n const coreEvent = createCoreData(this, x, y);\n\n log('DraggableCore: handleDrag: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, trigger end.\n const shouldUpdate = this.props.onDrag(e, coreEvent);\n if (shouldUpdate === false) {\n try {\n // $FlowIgnore\n this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n const event = ((document.createEvent('MouseEvents'): any): MouseTouchEvent);\n // I see why this insanity was deprecated\n // $FlowIgnore\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n this.handleDragStop(event);\n }\n return;\n }\n\n this.setState({\n lastX: x,\n lastY: y\n });\n };\n\n handleDragStop: EventHandler = (e) => {\n if (!this.state.dragging) return;\n\n const position = getControlPosition(e, this.state.touchIdentifier, this);\n if (position == null) return;\n const {x, y} = position;\n const coreEvent = createCoreData(this, x, y);\n\n const thisNode = ReactDOM.findDOMNode(this);\n if (thisNode) {\n // Remove user-select hack\n if (this.props.enableUserSelectHack) removeUserSelectStyles(thisNode.ownerDocument);\n }\n\n log('DraggableCore: handleDragStop: %j', coreEvent);\n\n // Reset the el.\n this.setState({\n dragging: false,\n lastX: NaN,\n lastY: NaN\n });\n\n // Call event handler\n this.props.onStop(e, coreEvent);\n\n if (thisNode) {\n // Remove event handlers\n log('DraggableCore: Removing handlers');\n removeEvent(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);\n removeEvent(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop);\n }\n };\n\n onMouseDown: EventHandler = (e) => {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return this.handleDragStart(e);\n };\n\n onMouseUp: EventHandler = (e) => {\n dragEventFor = eventsFor.mouse;\n\n return this.handleDragStop(e);\n };\n\n // Same as onMouseDown (start drag), but now consider this a touch device.\n onTouchStart: EventHandler = (e) => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n\n return this.handleDragStart(e);\n };\n\n onTouchEnd: EventHandler = (e) => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n\n return this.handleDragStop(e);\n };\n\n render() {\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return React.cloneElement(React.Children.only(this.props.children), {\n style: styleHacks(this.props.children.props.style),\n\n // Note: mouseMove handler is attached to document so it will still function\n // when the user drags quickly and leaves the bounds of the element.\n onMouseDown: this.onMouseDown,\n onTouchStart: this.onTouchStart,\n onMouseUp: this.onMouseUp,\n onTouchEnd: this.onTouchEnd\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/DraggableCore.js","// @flow\n/*eslint no-console:0*/\nexport default function log(...args: any) {\n if (process.env.DRAGGABLE_DEBUG) console.log(...args);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/log.js","var Draggable = require('./lib/Draggable').default;\n\n// Previous versions of this lib exported as the root export. As to not break\n// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = require('./lib/DraggableCore').default;\n\n\n\n// WEBPACK FOOTER //\n// ./index.js","// @flow\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport {createCSSTransform, createSVGTransform} from './utils/domFns';\nimport {canDragX, canDragY, createDraggableData, getBoundPosition} from './utils/positionFns';\nimport {dontSetMe} from './utils/shims';\nimport DraggableCore from './DraggableCore';\nimport type {ControlPosition, DraggableBounds, DraggableCoreProps} from './DraggableCore';\nimport log from './utils/log';\nimport type {DraggableEventHandler} from './utils/types';\nimport type {Element as ReactElement} from 'react';\n\ntype DraggableState = {\n dragging: boolean,\n dragged: boolean,\n x: number, y: number,\n slackX: number, slackY: number,\n isElementSVG: boolean\n};\n\nexport type DraggableProps = {\n ...$Exact,\n axis: 'both' | 'x' | 'y' | 'none',\n bounds: DraggableBounds | string | false,\n defaultClassName: string,\n defaultClassNameDragging: string,\n defaultClassNameDragged: string,\n defaultPosition: ControlPosition,\n position: ControlPosition,\n scale: number\n};\n\n//\n// Define \n//\n\nexport default class Draggable extends React.Component {\n\n static displayName = 'Draggable';\n\n static propTypes = {\n // Accepts all props accepts.\n ...DraggableCore.propTypes,\n\n /**\n * `axis` determines which axis the draggable can move.\n *\n * Note that all callbacks will still return data as normal. This only\n * controls flushing to the DOM.\n *\n * 'both' allows movement horizontally and vertically.\n * 'x' limits movement to horizontal axis.\n * 'y' limits movement to vertical axis.\n * 'none' limits all movement.\n *\n * Defaults to 'both'.\n */\n axis: PropTypes.oneOf(['both', 'x', 'y', 'none']),\n\n /**\n * `bounds` determines the range of movement available to the element.\n * Available values are:\n *\n * 'parent' restricts movement within the Draggable's parent node.\n *\n * Alternatively, pass an object with the following properties, all of which are optional:\n *\n * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n *\n * All values are in px.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
Content
\n *
\n * );\n * }\n * });\n * ```\n */\n bounds: PropTypes.oneOfType([\n PropTypes.shape({\n left: PropTypes.number,\n right: PropTypes.number,\n top: PropTypes.number,\n bottom: PropTypes.number\n }),\n PropTypes.string,\n PropTypes.oneOf([false])\n ]),\n\n defaultClassName: PropTypes.string,\n defaultClassNameDragging: PropTypes.string,\n defaultClassNameDragged: PropTypes.string,\n\n /**\n * `defaultPosition` specifies the x and y that the dragged item should start at\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n defaultPosition: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }),\n\n /**\n * `position`, if present, defines the current position of the element.\n *\n * This is similar to how form elements in React work - if no `position` is supplied, the component\n * is uncontrolled.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n position: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }),\n\n scale: PropTypes.number,\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: dontSetMe,\n style: dontSetMe,\n transform: dontSetMe\n };\n\n static defaultProps = {\n ...DraggableCore.defaultProps,\n axis: 'both',\n bounds: false,\n defaultClassName: 'react-draggable',\n defaultClassNameDragging: 'react-draggable-dragging',\n defaultClassNameDragged: 'react-draggable-dragged',\n defaultPosition: {x: 0, y: 0},\n position: null,\n scale: 1\n };\n\n constructor(props: DraggableProps) {\n super(props);\n\n this.state = {\n // Whether or not we are currently dragging.\n dragging: false,\n\n // Whether or not we have been dragged before.\n dragged: false,\n\n // Current transform x and y.\n x: props.position ? props.position.x : props.defaultPosition.x,\n y: props.position ? props.position.y : props.defaultPosition.y,\n\n // Used for compensating for out-of-bounds drags\n slackX: 0, slackY: 0,\n\n // Can only determine if SVG after mounting\n isElementSVG: false\n };\n }\n\n componentWillMount() {\n if (this.props.position && !(this.props.onDrag || this.props.onStop)) {\n // eslint-disable-next-line\n console.warn('A `position` was applied to this , without drag handlers. This will make this ' +\n 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' +\n '`position` of this element.');\n }\n }\n\n componentDidMount() {\n // Check to see if the element passed is an instanceof SVGElement\n if(typeof window.SVGElement !== 'undefined' && ReactDOM.findDOMNode(this) instanceof window.SVGElement) {\n this.setState({ isElementSVG: true });\n }\n }\n\n componentWillReceiveProps(nextProps: Object) {\n // Set x/y if position has changed\n if (nextProps.position &&\n (!this.props.position ||\n nextProps.position.x !== this.props.position.x ||\n nextProps.position.y !== this.props.position.y\n )\n ) {\n this.setState({ x: nextProps.position.x, y: nextProps.position.y });\n }\n }\n\n componentWillUnmount() {\n this.setState({dragging: false}); // prevents invariant if unmounted while dragging\n }\n\n onDragStart: DraggableEventHandler = (e, coreData) => {\n log('Draggable: onDragStart: %j', coreData);\n\n // Short-circuit if user's callback killed it.\n const shouldStart = this.props.onStart(e, createDraggableData(this, coreData));\n // Kills start event on core as well, so move handlers are never bound.\n if (shouldStart === false) return false;\n\n this.setState({dragging: true, dragged: true});\n };\n\n onDrag: DraggableEventHandler = (e, coreData) => {\n if (!this.state.dragging) return false;\n log('Draggable: onDrag: %j', coreData);\n\n const uiData = createDraggableData(this, coreData);\n\n const newState: $Shape = {\n x: uiData.x,\n y: uiData.y\n };\n\n // Keep within bounds.\n if (this.props.bounds) {\n // Save original x and y.\n const {x, y} = newState;\n\n // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n newState.x += this.state.slackX;\n newState.y += this.state.slackY;\n\n // Get bound position. This will ceil/floor the x and y within the boundaries.\n // $FlowBug\n [newState.x, newState.y] = getBoundPosition(this, newState.x, newState.y);\n\n // Recalculate slack by noting how much was shaved by the boundPosition handler.\n newState.slackX = this.state.slackX + (x - newState.x);\n newState.slackY = this.state.slackY + (y - newState.y);\n\n // Update the event we fire to reflect what really happened after bounds took effect.\n uiData.x = newState.x;\n uiData.y = newState.y;\n uiData.deltaX = newState.x - this.state.x;\n uiData.deltaY = newState.y - this.state.y;\n }\n\n // Short-circuit if user's callback killed it.\n const shouldUpdate = this.props.onDrag(e, uiData);\n if (shouldUpdate === false) return false;\n\n this.setState(newState);\n };\n\n onDragStop: DraggableEventHandler = (e, coreData) => {\n if (!this.state.dragging) return false;\n\n // Short-circuit if user's callback killed it.\n const shouldStop = this.props.onStop(e, createDraggableData(this, coreData));\n if (shouldStop === false) return false;\n\n log('Draggable: onDragStop: %j', coreData);\n\n const newState: $Shape = {\n dragging: false,\n slackX: 0,\n slackY: 0\n };\n\n // If this is a controlled component, the result of this operation will be to\n // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n const controlled = Boolean(this.props.position);\n if (controlled) {\n const {x, y} = this.props.position;\n newState.x = x;\n newState.y = y;\n }\n\n this.setState(newState);\n };\n\n render(): ReactElement {\n let style = {}, svgTransform = null;\n\n // If this is controlled, we don't want to move it - unless it's dragging.\n const controlled = Boolean(this.props.position);\n const draggable = !controlled || this.state.dragging;\n\n const position = this.props.position || this.props.defaultPosition;\n const transformOpts = {\n // Set left if horizontal drag is enabled\n x: canDragX(this) && draggable ?\n this.state.x :\n position.x,\n\n // Set top if vertical drag is enabled\n y: canDragY(this) && draggable ?\n this.state.y :\n position.y\n };\n\n // If this element was SVG, we use the `transform` attribute.\n if (this.state.isElementSVG) {\n svgTransform = createSVGTransform(transformOpts);\n } else {\n // Add a CSS transform to move the element around. This allows us to move the element around\n // without worrying about whether or not it is relatively or absolutely positioned.\n // If the item you are dragging already has a transform set, wrap it in a so \n // has a clean slate.\n style = createCSSTransform(transformOpts);\n }\n\n const {\n defaultClassName,\n defaultClassNameDragging,\n defaultClassNameDragged\n } = this.props;\n\n // Mark with class while dragging\n const className = classNames((this.props.children.props.className || ''), defaultClassName, {\n [defaultClassNameDragging]: this.state.dragging,\n [defaultClassNameDragged]: this.state.dragged\n });\n\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return (\n \n {React.cloneElement(React.Children.only(this.props.children), {\n className: className,\n style: {...this.props.children.props.style, ...style},\n transform: svgTransform\n })}\n \n );\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/Draggable.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n warning(\n false,\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `%s` prop on `%s`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n propFullName,\n componentName\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n warning(\n false,\n 'Invalid argument supplid to oneOfType. Expected an array of check functions, but ' +\n 'received %s at index %s.',\n getPostfixForTypeWarning(checker),\n i\n );\n return emptyFunction.thatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/factoryWithTypeCheckers.js\n// module id = 14\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== 'production') {\n var invariant = require('fbjs/lib/invariant');\n var warning = require('fbjs/lib/warning');\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/checkPropTypes.js\n// module id = 15\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/factoryWithThrowingShims.js\n// module id = 16\n// module chunks = 0","/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/classnames/index.js\n// module id = 17\n// module chunks = 0","// @flow\nconst prefixes = ['Moz', 'Webkit', 'O', 'ms'];\nexport function getPrefix(prop: string='transform'): string {\n // Checking specifically for 'window.document' is for pseudo-browser server-side\n // environments that define 'window' as the global context.\n // E.g. React-rails (see https://github.com/reactjs/react-rails/pull/84)\n if (typeof window === 'undefined' || typeof window.document === 'undefined') return '';\n\n const style = window.document.documentElement.style;\n\n if (prop in style) return '';\n\n for (let i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n\n return '';\n}\n\nexport function browserPrefixToKey(prop: string, prefix: string): string {\n return prefix ? `${prefix}${kebabToTitleCase(prop)}` : prop;\n}\n\nexport function browserPrefixToStyle(prop: string, prefix: string): string {\n return prefix ? `-${prefix.toLowerCase()}-${prop}` : prop;\n}\n\nfunction kebabToTitleCase(str: string): string {\n let out = '';\n let shouldCapitalize = true;\n for (let i = 0; i < str.length; i++) {\n if (shouldCapitalize) {\n out += str[i].toUpperCase();\n shouldCapitalize = false;\n } else if (str[i] === '-') {\n shouldCapitalize = true;\n } else {\n out += str[i];\n }\n }\n return out;\n}\n\n// Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\nexport default getPrefix();\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/getPrefix.js","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/process/browser.js\n// module id = 19\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/webapp/app/components/Draggable/react-draggable.min.js b/webapp/app/components/Draggable/react-draggable.min.js deleted file mode 100644 index e3ce283f7..000000000 --- a/webapp/app/components/Draggable/react-draggable.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/* eslint-disable */ -!function(root,factory){"object"==typeof exports&&"object"==typeof module?module.exports=factory(require("react-dom"),require("react")):"function"==typeof define&&define.amd?define(["react-dom","react"],factory):"object"==typeof exports?exports.ReactDraggable=factory(require("react-dom"),require("react")):root.ReactDraggable=factory(root.ReactDOM,root.React)}(this,function(__WEBPACK_EXTERNAL_MODULE_4__,__WEBPACK_EXTERNAL_MODULE_6__){return function(modules){function __webpack_require__(moduleId){if(installedModules[moduleId])return installedModules[moduleId].exports;var module=installedModules[moduleId]={i:moduleId,l:!1,exports:{}};return modules[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.l=!0,module.exports}var installedModules={};return __webpack_require__.m=modules,__webpack_require__.c=installedModules,__webpack_require__.d=function(exports,name,getter){__webpack_require__.o(exports,name)||Object.defineProperty(exports,name,{configurable:!1,enumerable:!0,get:getter})},__webpack_require__.n=function(module){var getter=module&&module.__esModule?function(){return module.default}:function(){return module};return __webpack_require__.d(getter,"a",getter),getter},__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=12)}([function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.findInArray=function(array,callback){for(var i=0,length=array.length;i0&&void 0!==arguments[0]?arguments[0]:{};return _extends({touchAction:"none"},childStyle)},exports.addClassName=addClassName,exports.removeClassName=removeClassName;var _shims=__webpack_require__(0),_getPrefix=__webpack_require__(18),_getPrefix2=function(obj){return obj&&obj.__esModule?obj:{default:obj}}(_getPrefix),matchesSelectorFunc=""},function(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE_6__},function(module,exports,__webpack_require__){if("production"!==Object({DRAGGABLE_DEBUG:void 0}).NODE_ENV){var REACT_ELEMENT_TYPE="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;module.exports=__webpack_require__(14)(function(object){return"object"==typeof object&&null!==object&&object.$$typeof===REACT_ELEMENT_TYPE},!0)}else module.exports=__webpack_require__(16)()},function(module,exports,__webpack_require__){"use strict";var warning=__webpack_require__(1);if("production"!==Object({DRAGGABLE_DEBUG:void 0}).NODE_ENV){var printWarning=function(format){for(var _len=arguments.length,args=Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)args[_key-1]=arguments[_key];var argIndex=0,message="Warning: "+format.replace(/%s/g,function(){return args[argIndex++]});"undefined"!=typeof console&&console.error(message);try{throw new Error(message)}catch(x){}};warning=function(condition,format){if(void 0===format)throw new Error("`warning(condition, format, ...args)` requires a warning message argument");if(0!==format.indexOf("Failed Composite propType: ")&&!condition){for(var _len2=arguments.length,args=Array(_len2>2?_len2-2:0),_key2=2;_key2<_len2;_key2++)args[_key2-2]=arguments[_key2];printWarning.apply(void 0,[format].concat(args))}}}module.exports=warning},function(module,exports,__webpack_require__){"use strict";function cloneBounds(bounds){return{left:bounds.left,top:bounds.top,right:bounds.right,bottom:bounds.bottom}}function findDOMNode(draggable){var node=_reactDom2.default.findDOMNode(draggable);if(!node)throw new Error(": Unmounted during event!");return node}Object.defineProperty(exports,"__esModule",{value:!0}),exports.getBoundPosition=function(draggable,x,y){if(!draggable.props.bounds)return[x,y];var bounds=draggable.props.bounds;bounds="string"==typeof bounds?bounds:cloneBounds(bounds);var node=findDOMNode(draggable);if("string"==typeof bounds){var ownerDocument=node.ownerDocument,ownerWindow=ownerDocument.defaultView,boundNode=void 0;if(!((boundNode="parent"===bounds?node.parentNode:ownerDocument.querySelector(bounds))instanceof HTMLElement))throw new Error('Bounds selector "'+bounds+'" could not find an element.');var nodeStyle=ownerWindow.getComputedStyle(node),boundNodeStyle=ownerWindow.getComputedStyle(boundNode);bounds={left:-node.offsetLeft+(0,_shims.int)(boundNodeStyle.paddingLeft)+(0,_shims.int)(nodeStyle.marginLeft),top:-node.offsetTop+(0,_shims.int)(boundNodeStyle.paddingTop)+(0,_shims.int)(nodeStyle.marginTop),right:(0,_domFns.innerWidth)(boundNode)-(0,_domFns.outerWidth)(node)-node.offsetLeft+(0,_shims.int)(boundNodeStyle.paddingRight)-(0,_shims.int)(nodeStyle.marginRight),bottom:(0,_domFns.innerHeight)(boundNode)-(0,_domFns.outerHeight)(node)-node.offsetTop+(0,_shims.int)(boundNodeStyle.paddingBottom)-(0,_shims.int)(nodeStyle.marginBottom)}}return(0,_shims.isNum)(bounds.right)&&(x=Math.min(x,bounds.right)),(0,_shims.isNum)(bounds.bottom)&&(y=Math.min(y,bounds.bottom)),(0,_shims.isNum)(bounds.left)&&(x=Math.max(x,bounds.left)),(0,_shims.isNum)(bounds.top)&&(y=Math.max(y,bounds.top)),[x,y]},exports.snapToGrid=function(grid,pendingX,pendingY){return[Math.round(pendingX/grid[0])*grid[0],Math.round(pendingY/grid[1])*grid[1]]},exports.canDragX=function(draggable){return"both"===draggable.props.axis||"x"===draggable.props.axis},exports.canDragY=function(draggable){return"both"===draggable.props.axis||"y"===draggable.props.axis},exports.getControlPosition=function(e,touchIdentifier,draggableCore){var touchObj="number"==typeof touchIdentifier?(0,_domFns.getTouch)(e,touchIdentifier):null;if("number"==typeof touchIdentifier&&!touchObj)return null;var node=findDOMNode(draggableCore),offsetParent=draggableCore.props.offsetParent||node.offsetParent||node.ownerDocument.body;return(0,_domFns.offsetXYFromParent)(touchObj||e,offsetParent)},exports.createCoreData=function(draggable,x,y){var state=draggable.state,isStart=!(0,_shims.isNum)(state.lastX),node=findDOMNode(draggable);return isStart?{node:node,deltaX:0,deltaY:0,lastX:x,lastY:y,x:x,y:y}:{node:node,deltaX:x-state.lastX,deltaY:y-state.lastY,lastX:state.lastX,lastY:state.lastY,x:x,y:y}},exports.createDraggableData=function(draggable,coreData){var scale=draggable.props.scale;return{node:coreData.node,x:draggable.state.x+coreData.deltaX/scale,y:draggable.state.y+coreData.deltaY/scale,deltaX:coreData.deltaX/scale,deltaY:coreData.deltaY/scale,lastX:draggable.state.x,lastY:draggable.state.y}};var _shims=__webpack_require__(0),_reactDom2=function(obj){return obj&&obj.__esModule?obj:{default:obj}}(__webpack_require__(4)),_domFns=__webpack_require__(5)},function(module,exports,__webpack_require__){"use strict";(function(process){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(self,call){if(!self)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!call||"object"!=typeof call&&"function"!=typeof call?self:call}function _inherits(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass)}Object.defineProperty(exports,"__esModule",{value:!0});var _slicedToArray=function(){function sliceIterator(arr,i){var _arr=[],_n=!0,_d=!1,_e=void 0;try{for(var _s,_i=arr[Symbol.iterator]();!(_n=(_s=_i.next()).done)&&(_arr.push(_s.value),!i||_arr.length!==i);_n=!0);}catch(err){_d=!0,_e=err}finally{try{!_n&&_i.return&&_i.return()}finally{if(_d)throw _e}}return _arr}return function(arr,i){if(Array.isArray(arr))return arr;if(Symbol.iterator in Object(arr))return sliceIterator(arr,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_createClass=function(){function defineProperties(target,props){for(var i=0;i not mounted on DragStart!");var ownerDocument=thisNode.ownerDocument;if(!(_this.props.disabled||!(e.target instanceof ownerDocument.defaultView.Node)||_this.props.handle&&!(0,_domFns.matchesSelectorAndParentsTo)(e.target,_this.props.handle,thisNode)||_this.props.cancel&&(0,_domFns.matchesSelectorAndParentsTo)(e.target,_this.props.cancel,thisNode))){var touchIdentifier=(0,_domFns.getTouchIdentifier)(e);_this.setState({touchIdentifier:touchIdentifier});var position=(0,_positionFns.getControlPosition)(e,touchIdentifier,_this);if(null!=position){var x=position.x,y=position.y,coreEvent=(0,_positionFns.createCoreData)(_this,x,y);(0,_log2.default)("DraggableCore: handleDragStart: %j",coreEvent),(0,_log2.default)("calling",_this.props.onStart),!1!==_this.props.onStart(e,coreEvent)&&(_this.props.enableUserSelectHack&&(0,_domFns.addUserSelectStyles)(ownerDocument),_this.setState({dragging:!0,lastX:x,lastY:y}),(0,_domFns.addEvent)(ownerDocument,dragEventFor.move,_this.handleDrag),(0,_domFns.addEvent)(ownerDocument,dragEventFor.stop,_this.handleDragStop))}}},_this.handleDrag=function(e){"touchmove"===e.type&&e.preventDefault();var position=(0,_positionFns.getControlPosition)(e,_this.state.touchIdentifier,_this);if(null!=position){var x=position.x,y=position.y;if(Array.isArray(_this.props.grid)){var _deltaX=x-_this.state.lastX,_deltaY=y-_this.state.lastY,_snapToGrid=(0,_positionFns.snapToGrid)(_this.props.grid,_deltaX,_deltaY),_snapToGrid2=_slicedToArray(_snapToGrid,2);if(_deltaX=_snapToGrid2[0],_deltaY=_snapToGrid2[1],!_deltaX&&!_deltaY)return;x=_this.state.lastX+_deltaX,y=_this.state.lastY+_deltaY}var coreEvent=(0,_positionFns.createCoreData)(_this,x,y);if((0,_log2.default)("DraggableCore: handleDrag: %j",coreEvent),!1!==_this.props.onDrag(e,coreEvent))_this.setState({lastX:x,lastY:y});else try{_this.handleDragStop(new MouseEvent("mouseup"))}catch(err){var event=document.createEvent("MouseEvents");event.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),_this.handleDragStop(event)}}},_this.handleDragStop=function(e){if(_this.state.dragging){var position=(0,_positionFns.getControlPosition)(e,_this.state.touchIdentifier,_this);if(null!=position){var x=position.x,y=position.y,coreEvent=(0,_positionFns.createCoreData)(_this,x,y),thisNode=_reactDom2.default.findDOMNode(_this);thisNode&&_this.props.enableUserSelectHack&&(0,_domFns.removeUserSelectStyles)(thisNode.ownerDocument),(0,_log2.default)("DraggableCore: handleDragStop: %j",coreEvent),_this.setState({dragging:!1,lastX:NaN,lastY:NaN}),_this.props.onStop(e,coreEvent),thisNode&&((0,_log2.default)("DraggableCore: Removing handlers"),(0,_domFns.removeEvent)(thisNode.ownerDocument,dragEventFor.move,_this.handleDrag),(0,_domFns.removeEvent)(thisNode.ownerDocument,dragEventFor.stop,_this.handleDragStop))}}},_this.onMouseDown=function(e){return dragEventFor=eventsFor.mouse,_this.handleDragStart(e)},_this.onMouseUp=function(e){return dragEventFor=eventsFor.mouse,_this.handleDragStop(e)},_this.onTouchStart=function(e){return dragEventFor=eventsFor.touch,_this.handleDragStart(e)},_this.onTouchEnd=function(e){return dragEventFor=eventsFor.touch,_this.handleDragStop(e)},_ret=_temp,_possibleConstructorReturn(_this,_ret)}return _inherits(DraggableCore,_react2.default.Component),_createClass(DraggableCore,[{key:"componentWillUnmount",value:function(){var thisNode=_reactDom2.default.findDOMNode(this);if(thisNode){var ownerDocument=thisNode.ownerDocument;(0,_domFns.removeEvent)(ownerDocument,eventsFor.mouse.move,this.handleDrag),(0,_domFns.removeEvent)(ownerDocument,eventsFor.touch.move,this.handleDrag),(0,_domFns.removeEvent)(ownerDocument,eventsFor.mouse.stop,this.handleDragStop),(0,_domFns.removeEvent)(ownerDocument,eventsFor.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&(0,_domFns.removeUserSelectStyles)(ownerDocument)}}},{key:"render",value:function(){return _react2.default.cloneElement(_react2.default.Children.only(this.props.children),{style:(0,_domFns.styleHacks)(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}]),DraggableCore}();DraggableCore.displayName="DraggableCore",DraggableCore.propTypes={allowAnyClick:_propTypes2.default.bool,disabled:_propTypes2.default.bool,enableUserSelectHack:_propTypes2.default.bool,offsetParent:function(props,propName){if(process.browser&&props[propName]&&1!==props[propName].nodeType)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:_propTypes2.default.arrayOf(_propTypes2.default.number),handle:_propTypes2.default.string,cancel:_propTypes2.default.string,onStart:_propTypes2.default.func,onDrag:_propTypes2.default.func,onStop:_propTypes2.default.func,onMouseDown:_propTypes2.default.func,className:_shims.dontSetMe,style:_shims.dontSetMe,transform:_shims.dontSetMe},DraggableCore.defaultProps={allowAnyClick:!1,cancel:null,disabled:!1,enableUserSelectHack:!0,offsetParent:null,handle:null,grid:null,transform:null,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){}},exports.default=DraggableCore}).call(exports,__webpack_require__(19))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=function(){}},function(module,exports,__webpack_require__){"use strict";var Draggable=__webpack_require__(13).default;module.exports=Draggable,module.exports.default=Draggable,module.exports.DraggableCore=__webpack_require__(10).default},function(module,exports,__webpack_require__){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(self,call){if(!self)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!call||"object"!=typeof call&&"function"!=typeof call?self:call}function _inherits(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass)}Object.defineProperty(exports,"__esModule",{value:!0});var _extends=Object.assign||function(target){for(var i=1;i, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}},{key:"componentDidMount",value:function(){void 0!==window.SVGElement&&_reactDom2.default.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:"componentWillReceiveProps",value:function(nextProps){!nextProps.position||this.props.position&&nextProps.position.x===this.props.position.x&&nextProps.position.y===this.props.position.y||this.setState({x:nextProps.position.x,y:nextProps.position.y})}},{key:"componentWillUnmount",value:function(){this.setState({dragging:!1})}},{key:"render",value:function(){var _classNames,style={},svgTransform=null,draggable=!Boolean(this.props.position)||this.state.dragging,position=this.props.position||this.props.defaultPosition,transformOpts={x:(0,_positionFns.canDragX)(this)&&draggable?this.state.x:position.x,y:(0,_positionFns.canDragY)(this)&&draggable?this.state.y:position.y};this.state.isElementSVG?svgTransform=(0,_domFns.createSVGTransform)(transformOpts):style=(0,_domFns.createCSSTransform)(transformOpts);var _props=this.props,defaultClassName=_props.defaultClassName,defaultClassNameDragging=_props.defaultClassNameDragging,defaultClassNameDragged=_props.defaultClassNameDragged,className=(0,_classnames2.default)(this.props.children.props.className||"",defaultClassName,(_classNames={},_defineProperty(_classNames,defaultClassNameDragging,this.state.dragging),_defineProperty(_classNames,defaultClassNameDragged,this.state.dragged),_classNames));return _react2.default.createElement(_DraggableCore2.default,_extends({},this.props,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),_react2.default.cloneElement(_react2.default.Children.only(this.props.children),{className:className,style:_extends({},this.props.children.props.style,style),transform:svgTransform}))}}]),Draggable}();Draggable.displayName="Draggable",Draggable.propTypes=_extends({},_DraggableCore2.default.propTypes,{axis:_propTypes2.default.oneOf(["both","x","y","none"]),bounds:_propTypes2.default.oneOfType([_propTypes2.default.shape({left:_propTypes2.default.number,right:_propTypes2.default.number,top:_propTypes2.default.number,bottom:_propTypes2.default.number}),_propTypes2.default.string,_propTypes2.default.oneOf([!1])]),defaultClassName:_propTypes2.default.string,defaultClassNameDragging:_propTypes2.default.string,defaultClassNameDragged:_propTypes2.default.string,defaultPosition:_propTypes2.default.shape({x:_propTypes2.default.number,y:_propTypes2.default.number}),position:_propTypes2.default.shape({x:_propTypes2.default.number,y:_propTypes2.default.number}),scale:_propTypes2.default.number,className:_shims.dontSetMe,style:_shims.dontSetMe,transform:_shims.dontSetMe}),Draggable.defaultProps=_extends({},_DraggableCore2.default.defaultProps,{axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},position:null,scale:1}),exports.default=Draggable},function(module,exports,__webpack_require__){"use strict";var emptyFunction=__webpack_require__(1),invariant=__webpack_require__(2),warning=__webpack_require__(8),ReactPropTypesSecret=__webpack_require__(3),checkPropTypes=__webpack_require__(15);module.exports=function(isValidElement,throwOnDirectAccess){function getIteratorFn(maybeIterable){var iteratorFn=maybeIterable&&(ITERATOR_SYMBOL&&maybeIterable[ITERATOR_SYMBOL]||maybeIterable[FAUX_ITERATOR_SYMBOL]);if("function"==typeof iteratorFn)return iteratorFn}function is(x,y){return x===y?0!==x||1/x==1/y:x!==x&&y!==y}function PropTypeError(message){this.message=message,this.stack=""}function createChainableTypeChecker(validate){function checkType(isRequired,props,propName,componentName,location,propFullName,secret){if(componentName=componentName||ANONYMOUS,propFullName=propFullName||propName,secret!==ReactPropTypesSecret)if(throwOnDirectAccess)invariant(!1,"Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");else if("production"!==Object({DRAGGABLE_DEBUG:void 0}).NODE_ENV&&"undefined"!=typeof console){var cacheKey=componentName+":"+propName;!manualPropTypeCallCache[cacheKey]&&manualPropTypeWarningCount<3&&(warning(!1,"You are manually calling a React.PropTypes validation function for the `%s` prop on `%s`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details.",propFullName,componentName),manualPropTypeCallCache[cacheKey]=!0,manualPropTypeWarningCount++)}return null==props[propName]?isRequired?new PropTypeError(null===props[propName]?"The "+location+" `"+propFullName+"` is marked as required in `"+componentName+"`, but its value is `null`.":"The "+location+" `"+propFullName+"` is marked as required in `"+componentName+"`, but its value is `undefined`."):null:validate(props,propName,componentName,location,propFullName)}if("production"!==Object({DRAGGABLE_DEBUG:void 0}).NODE_ENV)var manualPropTypeCallCache={},manualPropTypeWarningCount=0;var chainedCheckType=checkType.bind(null,!1);return chainedCheckType.isRequired=checkType.bind(null,!0),chainedCheckType}function createPrimitiveTypeChecker(expectedType){return createChainableTypeChecker(function(props,propName,componentName,location,propFullName,secret){var propValue=props[propName];return getPropType(propValue)!==expectedType?new PropTypeError("Invalid "+location+" `"+propFullName+"` of type `"+getPreciseType(propValue)+"` supplied to `"+componentName+"`, expected `"+expectedType+"`."):null})}function isNode(propValue){switch(typeof propValue){case"number":case"string":case"undefined":return!0;case"boolean":return!propValue;case"object":if(Array.isArray(propValue))return propValue.every(isNode);if(null===propValue||isValidElement(propValue))return!0;var iteratorFn=getIteratorFn(propValue);if(!iteratorFn)return!1;var step,iterator=iteratorFn.call(propValue);if(iteratorFn!==propValue.entries){for(;!(step=iterator.next()).done;)if(!isNode(step.value))return!1}else for(;!(step=iterator.next()).done;){var entry=step.value;if(entry&&!isNode(entry[1]))return!1}return!0;default:return!1}}function isSymbol(propType,propValue){return"symbol"===propType||("Symbol"===propValue["@@toStringTag"]||"function"==typeof Symbol&&propValue instanceof Symbol)}function getPropType(propValue){var propType=typeof propValue;return Array.isArray(propValue)?"array":propValue instanceof RegExp?"object":isSymbol(propType,propValue)?"symbol":propType}function getPreciseType(propValue){if(void 0===propValue||null===propValue)return""+propValue;var propType=getPropType(propValue);if("object"===propType){if(propValue instanceof Date)return"date";if(propValue instanceof RegExp)return"regexp"}return propType}function getPostfixForTypeWarning(value){var type=getPreciseType(value);switch(type){case"array":case"object":return"an "+type;case"boolean":case"date":case"regexp":return"a "+type;default:return type}}function getClassName(propValue){return propValue.constructor&&propValue.constructor.name?propValue.constructor.name:ANONYMOUS}var ITERATOR_SYMBOL="function"==typeof Symbol&&Symbol.iterator,FAUX_ITERATOR_SYMBOL="@@iterator",ANONYMOUS="<>",ReactPropTypes={array:createPrimitiveTypeChecker("array"),bool:createPrimitiveTypeChecker("boolean"),func:createPrimitiveTypeChecker("function"),number:createPrimitiveTypeChecker("number"),object:createPrimitiveTypeChecker("object"),string:createPrimitiveTypeChecker("string"),symbol:createPrimitiveTypeChecker("symbol"),any:createChainableTypeChecker(emptyFunction.thatReturnsNull),arrayOf:function(typeChecker){return createChainableTypeChecker(function(props,propName,componentName,location,propFullName){if("function"!=typeof typeChecker)return new PropTypeError("Property `"+propFullName+"` of component `"+componentName+"` has invalid PropType notation inside arrayOf.");var propValue=props[propName];if(!Array.isArray(propValue))return new PropTypeError("Invalid "+location+" `"+propFullName+"` of type `"+getPropType(propValue)+"` supplied to `"+componentName+"`, expected an array.");for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:"transform";if("undefined"==typeof window||void 0===window.document)return"";var style=window.document.documentElement.style;if(prop in style)return"";for(var i=0;i1)for(var i=1;i | TouchList, callback: Function): any {\n for (let i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\n\nexport function isFunction(func: any): boolean {\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\nexport function isNum(num: any): boolean {\n return typeof num === 'number' && !isNaN(num);\n}\n\nexport function int(a: string): number {\n return parseInt(a, 10);\n}\n\nexport function dontSetMe(props: Object, propName: string, componentName: string) {\n if (props[propName]) {\n return new Error(`Invalid prop ${propName} passed to ${componentName} - do not set this, set it on the child.`);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/shims.js","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/emptyFunction.js\n// module id = 1\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/invariant.js\n// module id = 2\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/lib/ReactPropTypesSecret.js\n// module id = 3\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_4__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react-dom\",\"commonjs2\":\"react-dom\",\"amd\":\"react-dom\",\"root\":\"ReactDOM\"}\n// module id = 4\n// module chunks = 0","// @flow\nimport {findInArray, isFunction, int} from './shims';\nimport browserPrefix, {browserPrefixToKey} from './getPrefix';\n\nimport type {ControlPosition, MouseTouchEvent} from './types';\n\nlet matchesSelectorFunc = '';\nexport function matchesSelector(el: Node, selector: string): boolean {\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = findInArray([\n 'matches',\n 'webkitMatchesSelector',\n 'mozMatchesSelector',\n 'msMatchesSelector',\n 'oMatchesSelector'\n ], function(method){\n // $FlowIgnore: Doesn't think elements are indexable\n return isFunction(el[method]);\n });\n }\n\n // $FlowIgnore: Doesn't think elements are indexable\n return el[matchesSelectorFunc].call(el, selector);\n}\n\n// Works up the tree to the draggable itself attempting to match selector.\nexport function matchesSelectorAndParentsTo(el: Node, selector: string, baseNode: Node): boolean {\n let node = el;\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n node = node.parentNode;\n } while (node);\n\n return false;\n}\n\nexport function addEvent(el: ?Node, event: string, handler: Function): void {\n if (!el) { return; }\n if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else if (el.addEventListener) {\n el.addEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\n\nexport function removeEvent(el: ?Node, event: string, handler: Function): void {\n if (!el) { return; }\n if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else if (el.removeEventListener) {\n el.removeEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\n\nexport function outerHeight(node: HTMLElement): number {\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += int(computedStyle.borderTopWidth);\n height += int(computedStyle.borderBottomWidth);\n return height;\n}\n\nexport function outerWidth(node: HTMLElement): number {\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += int(computedStyle.borderLeftWidth);\n width += int(computedStyle.borderRightWidth);\n return width;\n}\nexport function innerHeight(node: HTMLElement): number {\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= int(computedStyle.paddingTop);\n height -= int(computedStyle.paddingBottom);\n return height;\n}\n\nexport function innerWidth(node: HTMLElement): number {\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= int(computedStyle.paddingLeft);\n width -= int(computedStyle.paddingRight);\n return width;\n}\n\n// Get from offsetParent\nexport function offsetXYFromParent(evt: {clientX: number, clientY: number}, offsetParent: HTMLElement): ControlPosition {\n const isBody = offsetParent === offsetParent.ownerDocument.body;\n const offsetParentRect = isBody ? {left: 0, top: 0} : offsetParent.getBoundingClientRect();\n\n const x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;\n const y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;\n\n return {x, y};\n}\n\nexport function createCSSTransform({x, y}: {x: number, y: number}): Object {\n // Replace unitless items with px\n return {[browserPrefixToKey('transform', browserPrefix)]: 'translate(' + x + 'px,' + y + 'px)'};\n}\n\nexport function createSVGTransform({x, y}: {x: number, y: number}): string {\n return 'translate(' + x + ',' + y + ')';\n}\n\nexport function getTouch(e: MouseTouchEvent, identifier: number): ?{clientX: number, clientY: number} {\n return (e.targetTouches && findInArray(e.targetTouches, t => identifier === t.identifier)) ||\n (e.changedTouches && findInArray(e.changedTouches, t => identifier === t.identifier));\n}\n\nexport function getTouchIdentifier(e: MouseTouchEvent): ?number {\n if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n}\n\n// User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n\n// Note we're passing `document` b/c we could be iframed\nexport function addUserSelectStyles(doc: Document) {\n let styleEl = doc.getElementById('react-draggable-style-el');\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {background: transparent;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {background: transparent;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\n\nexport function removeUserSelectStyles(doc: Document) {\n if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection');\n window.getSelection().removeAllRanges(); // remove selection caused by scroll\n}\n\nexport function styleHacks(childStyle: Object = {}): Object {\n // Workaround IE pointer events; see #51\n // https://github.com/mzabriskie/react-draggable/issues/51#issuecomment-103488278\n return {\n touchAction: 'none',\n ...childStyle\n };\n}\n\nexport function addClassName(el: HTMLElement, className: string) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`))) {\n el.className += ` ${className}`;\n }\n }\n}\n\nexport function removeClassName(el: HTMLElement, className: string) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`, 'g'), '');\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/domFns.js","module.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}\n// module id = 6\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/index.js\n// module id = 7\n// module chunks = 0","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/warning.js\n// module id = 8\n// module chunks = 0","// @flow\nimport {isNum, int} from './shims';\nimport ReactDOM from 'react-dom';\nimport {getTouch, innerWidth, innerHeight, offsetXYFromParent, outerWidth, outerHeight} from './domFns';\n\nimport type Draggable from '../Draggable';\nimport type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';\nimport type DraggableCore from '../DraggableCore';\n\nexport function getBoundPosition(draggable: Draggable, x: number, y: number): [number, number] {\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y];\n\n // Clone new bounds\n let {bounds} = draggable.props;\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n const node = findDOMNode(draggable);\n\n if (typeof bounds === 'string') {\n const {ownerDocument} = node;\n const ownerWindow = ownerDocument.defaultView;\n let boundNode;\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n if (!(boundNode instanceof HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n const nodeStyle = ownerWindow.getComputedStyle(node);\n const boundNodeStyle = ownerWindow.getComputedStyle(boundNode);\n // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n bounds = {\n left: -node.offsetLeft + int(boundNodeStyle.paddingLeft) + int(nodeStyle.marginLeft),\n top: -node.offsetTop + int(boundNodeStyle.paddingTop) + int(nodeStyle.marginTop),\n right: innerWidth(boundNode) - outerWidth(node) - node.offsetLeft +\n int(boundNodeStyle.paddingRight) - int(nodeStyle.marginRight),\n bottom: innerHeight(boundNode) - outerHeight(node) - node.offsetTop +\n int(boundNodeStyle.paddingBottom) - int(nodeStyle.marginBottom)\n };\n }\n\n // Keep x and y below right and bottom limits...\n if (isNum(bounds.right)) x = Math.min(x, bounds.right);\n if (isNum(bounds.bottom)) y = Math.min(y, bounds.bottom);\n\n // But above left and top limits.\n if (isNum(bounds.left)) x = Math.max(x, bounds.left);\n if (isNum(bounds.top)) y = Math.max(y, bounds.top);\n\n return [x, y];\n}\n\nexport function snapToGrid(grid: [number, number], pendingX: number, pendingY: number): [number, number] {\n const x = Math.round(pendingX / grid[0]) * grid[0];\n const y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\n\nexport function canDragX(draggable: Draggable): boolean {\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\n\nexport function canDragY(draggable: Draggable): boolean {\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n}\n\n// Get {x, y} positions from event.\nexport function getControlPosition(e: MouseTouchEvent, touchIdentifier: ?number, draggableCore: DraggableCore): ?ControlPosition {\n const touchObj = typeof touchIdentifier === 'number' ? getTouch(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n const node = findDOMNode(draggableCore);\n // User can provide an offsetParent if desired.\n const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return offsetXYFromParent(touchObj || e, offsetParent);\n}\n\n// Create an data object exposed by 's events\nexport function createCoreData(draggable: DraggableCore, x: number, y: number): DraggableData {\n const state = draggable.state;\n const isStart = !isNum(state.lastX);\n const node = findDOMNode(draggable);\n\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node,\n deltaX: 0, deltaY: 0,\n lastX: x, lastY: y,\n x, y,\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node,\n deltaX: x - state.lastX, deltaY: y - state.lastY,\n lastX: state.lastX, lastY: state.lastY,\n x, y,\n };\n }\n}\n\n// Create an data exposed by 's events\nexport function createDraggableData(draggable: Draggable, coreData: DraggableData): DraggableData {\n const {scale} = draggable.props;\n return {\n node: coreData.node,\n x: draggable.state.x + (coreData.deltaX / scale),\n y: draggable.state.y + (coreData.deltaY / scale),\n deltaX: coreData.deltaX / scale,\n deltaY: coreData.deltaY / scale,\n lastX: draggable.state.x,\n lastY: draggable.state.y\n };\n}\n\n// A lot faster than stringify/parse\nfunction cloneBounds(bounds: Bounds): Bounds {\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\n\nfunction findDOMNode(draggable: Draggable | DraggableCore): HTMLElement {\n const node = ReactDOM.findDOMNode(draggable);\n if (!node) {\n throw new Error(': Unmounted during event!');\n }\n // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n return node;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/positionFns.js","// @flow\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport {matchesSelectorAndParentsTo, addEvent, removeEvent, addUserSelectStyles, getTouchIdentifier,\n removeUserSelectStyles, styleHacks} from './utils/domFns';\nimport {createCoreData, getControlPosition, snapToGrid} from './utils/positionFns';\nimport {dontSetMe} from './utils/shims';\nimport log from './utils/log';\n\nimport type {EventHandler, MouseTouchEvent} from './utils/types';\nimport type {Element as ReactElement} from 'react';\n\n// Simple abstraction for dragging events names.\nconst eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n};\n\n// Default to mouse events.\nlet dragEventFor = eventsFor.mouse;\n\ntype DraggableCoreState = {\n dragging: boolean,\n lastX: number,\n lastY: number,\n touchIdentifier: ?number\n};\n\nexport type DraggableBounds = {\n left: number,\n right: number,\n top: number,\n bottom: number,\n};\n\nexport type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n};\n\nexport type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void;\n\nexport type ControlPosition = {x: number, y: number};\n\nexport type DraggableCoreProps = {\n allowAnyClick: boolean,\n cancel: string,\n children: ReactElement,\n disabled: boolean,\n enableUserSelectHack: boolean,\n offsetParent: HTMLElement,\n grid: [number, number],\n handle: string,\n onStart: DraggableEventHandler,\n onDrag: DraggableEventHandler,\n onStop: DraggableEventHandler,\n onMouseDown: (e: MouseEvent) => void,\n};\n\n//\n// Define .\n//\n// is for advanced usage of . It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\n\nexport default class DraggableCore extends React.Component {\n\n static displayName = 'DraggableCore';\n\n static propTypes = {\n /**\n * `allowAnyClick` allows dragging using any mouse button.\n * By default, we only accept the left button.\n *\n * Defaults to `false`.\n */\n allowAnyClick: PropTypes.bool,\n\n /**\n * `disabled`, if true, stops the from dragging. All handlers,\n * with the exception of `onMouseDown`, will not fire.\n */\n disabled: PropTypes.bool,\n\n /**\n * By default, we add 'user-select:none' attributes to the document body\n * to prevent ugly text selection during drag. If this is causing problems\n * for your app, set this to `false`.\n */\n enableUserSelectHack: PropTypes.bool,\n\n /**\n * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function(props, propName) {\n if (process.browser && props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n }\n },\n\n /**\n * `grid` specifies the x and y that dragging should snap to.\n */\n grid: PropTypes.arrayOf(PropTypes.number),\n\n /**\n * `handle` specifies a selector to be used as the handle that initiates drag.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
\n *
Click me to drag
\n *
This is some other content
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n handle: PropTypes.string,\n\n /**\n * `cancel` specifies a selector to be used to prevent drag initialization.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return(\n * \n *
\n *
You can't drag from here
\n *
Dragging here works fine
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n cancel: PropTypes.string,\n\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: PropTypes.func,\n\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: PropTypes.func,\n\n /**\n * Called when dragging stops.\n * If this function returns the boolean false, the drag will remain active.\n */\n onStop: PropTypes.func,\n\n /**\n * A workaround option which can be passed if onMouseDown needs to be accessed,\n * since it'll always be blocked (as there is internal use of onMouseDown)\n */\n onMouseDown: PropTypes.func,\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: dontSetMe,\n style: dontSetMe,\n transform: dontSetMe\n };\n\n static defaultProps = {\n allowAnyClick: false, // by default only accept left click\n cancel: null,\n disabled: false,\n enableUserSelectHack: true,\n offsetParent: null,\n handle: null,\n grid: null,\n transform: null,\n onStart: function(){},\n onDrag: function(){},\n onStop: function(){},\n onMouseDown: function(){}\n };\n\n state = {\n dragging: false,\n // Used while dragging to determine deltas.\n lastX: NaN, lastY: NaN,\n touchIdentifier: null\n };\n\n componentWillUnmount() {\n // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n const thisNode = ReactDOM.findDOMNode(this);\n if (thisNode) {\n const {ownerDocument} = thisNode;\n removeEvent(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n removeEvent(ownerDocument, eventsFor.touch.move, this.handleDrag);\n removeEvent(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n removeEvent(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n if (this.props.enableUserSelectHack) removeUserSelectStyles(ownerDocument);\n }\n }\n\n handleDragStart: EventHandler = (e) => {\n // Make it possible to attach event handlers on top of this one.\n this.props.onMouseDown(e);\n\n // Only accept left-clicks.\n if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false;\n\n // Get nodes. Be sure to grab relative document (could be iframed)\n const thisNode = ReactDOM.findDOMNode(this);\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error(' not mounted on DragStart!');\n }\n const {ownerDocument} = thisNode;\n\n // Short circuit if handle or cancel prop was provided and selector doesn't match.\n if (this.props.disabled ||\n (!(e.target instanceof ownerDocument.defaultView.Node)) ||\n (this.props.handle && !matchesSelectorAndParentsTo(e.target, this.props.handle, thisNode)) ||\n (this.props.cancel && matchesSelectorAndParentsTo(e.target, this.props.cancel, thisNode))) {\n return;\n }\n\n // Set touch identifier in component state if this is a touch event. This allows us to\n // distinguish between individual touches on multitouch screens by identifying which\n // touchpoint was set to this element.\n const touchIdentifier = getTouchIdentifier(e);\n this.setState({touchIdentifier});\n\n // Get the current drag point from the event. This is used as the offset.\n const position = getControlPosition(e, touchIdentifier, this);\n if (position == null) return; // not possible but satisfies flow\n const {x, y} = position;\n\n // Create an event object with all the data parents need to make a decision here.\n const coreEvent = createCoreData(this, x, y);\n\n log('DraggableCore: handleDragStart: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, cancel.\n log('calling', this.props.onStart);\n const shouldUpdate = this.props.onStart(e, coreEvent);\n if (shouldUpdate === false) return;\n\n // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n if (this.props.enableUserSelectHack) addUserSelectStyles(ownerDocument);\n\n // Initiate dragging. Set the current x and y as offsets\n // so we know how much we've moved during the drag. This allows us\n // to drag elements around even if they have been moved, without issue.\n this.setState({\n dragging: true,\n\n lastX: x,\n lastY: y\n });\n\n // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n // this element. We use different events depending on whether or not we have detected that this\n // is a touch-capable device.\n addEvent(ownerDocument, dragEventFor.move, this.handleDrag);\n addEvent(ownerDocument, dragEventFor.stop, this.handleDragStop);\n };\n\n handleDrag: EventHandler = (e) => {\n\n // Prevent scrolling on mobile devices, like ipad/iphone.\n if (e.type === 'touchmove') e.preventDefault();\n\n // Get the current drag point from the event. This is used as the offset.\n const position = getControlPosition(e, this.state.touchIdentifier, this);\n if (position == null) return;\n let {x, y} = position;\n\n // Snap to grid if prop has been provided\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.state.lastX, deltaY = y - this.state.lastY;\n [deltaX, deltaY] = snapToGrid(this.props.grid, deltaX, deltaY);\n if (!deltaX && !deltaY) return; // skip useless drag\n x = this.state.lastX + deltaX, y = this.state.lastY + deltaY;\n }\n\n const coreEvent = createCoreData(this, x, y);\n\n log('DraggableCore: handleDrag: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, trigger end.\n const shouldUpdate = this.props.onDrag(e, coreEvent);\n if (shouldUpdate === false) {\n try {\n // $FlowIgnore\n this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n const event = ((document.createEvent('MouseEvents'): any): MouseTouchEvent);\n // I see why this insanity was deprecated\n // $FlowIgnore\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n this.handleDragStop(event);\n }\n return;\n }\n\n this.setState({\n lastX: x,\n lastY: y\n });\n };\n\n handleDragStop: EventHandler = (e) => {\n if (!this.state.dragging) return;\n\n const position = getControlPosition(e, this.state.touchIdentifier, this);\n if (position == null) return;\n const {x, y} = position;\n const coreEvent = createCoreData(this, x, y);\n\n const thisNode = ReactDOM.findDOMNode(this);\n if (thisNode) {\n // Remove user-select hack\n if (this.props.enableUserSelectHack) removeUserSelectStyles(thisNode.ownerDocument);\n }\n\n log('DraggableCore: handleDragStop: %j', coreEvent);\n\n // Reset the el.\n this.setState({\n dragging: false,\n lastX: NaN,\n lastY: NaN\n });\n\n // Call event handler\n this.props.onStop(e, coreEvent);\n\n if (thisNode) {\n // Remove event handlers\n log('DraggableCore: Removing handlers');\n removeEvent(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);\n removeEvent(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop);\n }\n };\n\n onMouseDown: EventHandler = (e) => {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return this.handleDragStart(e);\n };\n\n onMouseUp: EventHandler = (e) => {\n dragEventFor = eventsFor.mouse;\n\n return this.handleDragStop(e);\n };\n\n // Same as onMouseDown (start drag), but now consider this a touch device.\n onTouchStart: EventHandler = (e) => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n\n return this.handleDragStart(e);\n };\n\n onTouchEnd: EventHandler = (e) => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n\n return this.handleDragStop(e);\n };\n\n render() {\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return React.cloneElement(React.Children.only(this.props.children), {\n style: styleHacks(this.props.children.props.style),\n\n // Note: mouseMove handler is attached to document so it will still function\n // when the user drags quickly and leaves the bounds of the element.\n onMouseDown: this.onMouseDown,\n onTouchStart: this.onTouchStart,\n onMouseUp: this.onMouseUp,\n onTouchEnd: this.onTouchEnd\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/DraggableCore.js","// @flow\n/*eslint no-console:0*/\nexport default function log(...args: any) {\n if (process.env.DRAGGABLE_DEBUG) console.log(...args);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/log.js","var Draggable = require('./lib/Draggable').default;\n\n// Previous versions of this lib exported as the root export. As to not break\n// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = require('./lib/DraggableCore').default;\n\n\n\n// WEBPACK FOOTER //\n// ./index.js","// @flow\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport {createCSSTransform, createSVGTransform} from './utils/domFns';\nimport {canDragX, canDragY, createDraggableData, getBoundPosition} from './utils/positionFns';\nimport {dontSetMe} from './utils/shims';\nimport DraggableCore from './DraggableCore';\nimport type {ControlPosition, DraggableBounds, DraggableCoreProps} from './DraggableCore';\nimport log from './utils/log';\nimport type {DraggableEventHandler} from './utils/types';\nimport type {Element as ReactElement} from 'react';\n\ntype DraggableState = {\n dragging: boolean,\n dragged: boolean,\n x: number, y: number,\n slackX: number, slackY: number,\n isElementSVG: boolean\n};\n\nexport type DraggableProps = {\n ...$Exact,\n axis: 'both' | 'x' | 'y' | 'none',\n bounds: DraggableBounds | string | false,\n defaultClassName: string,\n defaultClassNameDragging: string,\n defaultClassNameDragged: string,\n defaultPosition: ControlPosition,\n position: ControlPosition,\n scale: number\n};\n\n//\n// Define \n//\n\nexport default class Draggable extends React.Component {\n\n static displayName = 'Draggable';\n\n static propTypes = {\n // Accepts all props accepts.\n ...DraggableCore.propTypes,\n\n /**\n * `axis` determines which axis the draggable can move.\n *\n * Note that all callbacks will still return data as normal. This only\n * controls flushing to the DOM.\n *\n * 'both' allows movement horizontally and vertically.\n * 'x' limits movement to horizontal axis.\n * 'y' limits movement to vertical axis.\n * 'none' limits all movement.\n *\n * Defaults to 'both'.\n */\n axis: PropTypes.oneOf(['both', 'x', 'y', 'none']),\n\n /**\n * `bounds` determines the range of movement available to the element.\n * Available values are:\n *\n * 'parent' restricts movement within the Draggable's parent node.\n *\n * Alternatively, pass an object with the following properties, all of which are optional:\n *\n * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n *\n * All values are in px.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
Content
\n *
\n * );\n * }\n * });\n * ```\n */\n bounds: PropTypes.oneOfType([\n PropTypes.shape({\n left: PropTypes.number,\n right: PropTypes.number,\n top: PropTypes.number,\n bottom: PropTypes.number\n }),\n PropTypes.string,\n PropTypes.oneOf([false])\n ]),\n\n defaultClassName: PropTypes.string,\n defaultClassNameDragging: PropTypes.string,\n defaultClassNameDragged: PropTypes.string,\n\n /**\n * `defaultPosition` specifies the x and y that the dragged item should start at\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n defaultPosition: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }),\n\n /**\n * `position`, if present, defines the current position of the element.\n *\n * This is similar to how form elements in React work - if no `position` is supplied, the component\n * is uncontrolled.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n position: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }),\n\n scale: PropTypes.number,\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: dontSetMe,\n style: dontSetMe,\n transform: dontSetMe\n };\n\n static defaultProps = {\n ...DraggableCore.defaultProps,\n axis: 'both',\n bounds: false,\n defaultClassName: 'react-draggable',\n defaultClassNameDragging: 'react-draggable-dragging',\n defaultClassNameDragged: 'react-draggable-dragged',\n defaultPosition: {x: 0, y: 0},\n position: null,\n scale: 1\n };\n\n constructor(props: DraggableProps) {\n super(props);\n\n this.state = {\n // Whether or not we are currently dragging.\n dragging: false,\n\n // Whether or not we have been dragged before.\n dragged: false,\n\n // Current transform x and y.\n x: props.position ? props.position.x : props.defaultPosition.x,\n y: props.position ? props.position.y : props.defaultPosition.y,\n\n // Used for compensating for out-of-bounds drags\n slackX: 0, slackY: 0,\n\n // Can only determine if SVG after mounting\n isElementSVG: false\n };\n }\n\n componentWillMount() {\n if (this.props.position && !(this.props.onDrag || this.props.onStop)) {\n // eslint-disable-next-line\n console.warn('A `position` was applied to this , without drag handlers. This will make this ' +\n 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' +\n '`position` of this element.');\n }\n }\n\n componentDidMount() {\n // Check to see if the element passed is an instanceof SVGElement\n if(typeof window.SVGElement !== 'undefined' && ReactDOM.findDOMNode(this) instanceof window.SVGElement) {\n this.setState({ isElementSVG: true });\n }\n }\n\n componentWillReceiveProps(nextProps: Object) {\n // Set x/y if position has changed\n if (nextProps.position &&\n (!this.props.position ||\n nextProps.position.x !== this.props.position.x ||\n nextProps.position.y !== this.props.position.y\n )\n ) {\n this.setState({ x: nextProps.position.x, y: nextProps.position.y });\n }\n }\n\n componentWillUnmount() {\n this.setState({dragging: false}); // prevents invariant if unmounted while dragging\n }\n\n onDragStart: DraggableEventHandler = (e, coreData) => {\n log('Draggable: onDragStart: %j', coreData);\n\n // Short-circuit if user's callback killed it.\n const shouldStart = this.props.onStart(e, createDraggableData(this, coreData));\n // Kills start event on core as well, so move handlers are never bound.\n if (shouldStart === false) return false;\n\n this.setState({dragging: true, dragged: true});\n };\n\n onDrag: DraggableEventHandler = (e, coreData) => {\n if (!this.state.dragging) return false;\n log('Draggable: onDrag: %j', coreData);\n\n const uiData = createDraggableData(this, coreData);\n\n const newState: $Shape = {\n x: uiData.x,\n y: uiData.y\n };\n\n // Keep within bounds.\n if (this.props.bounds) {\n // Save original x and y.\n const {x, y} = newState;\n\n // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n newState.x += this.state.slackX;\n newState.y += this.state.slackY;\n\n // Get bound position. This will ceil/floor the x and y within the boundaries.\n // $FlowBug\n [newState.x, newState.y] = getBoundPosition(this, newState.x, newState.y);\n\n // Recalculate slack by noting how much was shaved by the boundPosition handler.\n newState.slackX = this.state.slackX + (x - newState.x);\n newState.slackY = this.state.slackY + (y - newState.y);\n\n // Update the event we fire to reflect what really happened after bounds took effect.\n uiData.x = newState.x;\n uiData.y = newState.y;\n uiData.deltaX = newState.x - this.state.x;\n uiData.deltaY = newState.y - this.state.y;\n }\n\n // Short-circuit if user's callback killed it.\n const shouldUpdate = this.props.onDrag(e, uiData);\n if (shouldUpdate === false) return false;\n\n this.setState(newState);\n };\n\n onDragStop: DraggableEventHandler = (e, coreData) => {\n if (!this.state.dragging) return false;\n\n // Short-circuit if user's callback killed it.\n const shouldStop = this.props.onStop(e, createDraggableData(this, coreData));\n if (shouldStop === false) return false;\n\n log('Draggable: onDragStop: %j', coreData);\n\n const newState: $Shape = {\n dragging: false,\n slackX: 0,\n slackY: 0\n };\n\n // If this is a controlled component, the result of this operation will be to\n // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n const controlled = Boolean(this.props.position);\n if (controlled) {\n const {x, y} = this.props.position;\n newState.x = x;\n newState.y = y;\n }\n\n this.setState(newState);\n };\n\n render(): ReactElement {\n let style = {}, svgTransform = null;\n\n // If this is controlled, we don't want to move it - unless it's dragging.\n const controlled = Boolean(this.props.position);\n const draggable = !controlled || this.state.dragging;\n\n const position = this.props.position || this.props.defaultPosition;\n const transformOpts = {\n // Set left if horizontal drag is enabled\n x: canDragX(this) && draggable ?\n this.state.x :\n position.x,\n\n // Set top if vertical drag is enabled\n y: canDragY(this) && draggable ?\n this.state.y :\n position.y\n };\n\n // If this element was SVG, we use the `transform` attribute.\n if (this.state.isElementSVG) {\n svgTransform = createSVGTransform(transformOpts);\n } else {\n // Add a CSS transform to move the element around. This allows us to move the element around\n // without worrying about whether or not it is relatively or absolutely positioned.\n // If the item you are dragging already has a transform set, wrap it in a so \n // has a clean slate.\n style = createCSSTransform(transformOpts);\n }\n\n const {\n defaultClassName,\n defaultClassNameDragging,\n defaultClassNameDragged\n } = this.props;\n\n // Mark with class while dragging\n const className = classNames((this.props.children.props.className || ''), defaultClassName, {\n [defaultClassNameDragging]: this.state.dragging,\n [defaultClassNameDragged]: this.state.dragged\n });\n\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return (\n \n {React.cloneElement(React.Children.only(this.props.children), {\n className: className,\n style: {...this.props.children.props.style, ...style},\n transform: svgTransform\n })}\n \n );\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/Draggable.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n warning(\n false,\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `%s` prop on `%s`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n propFullName,\n componentName\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n warning(\n false,\n 'Invalid argument supplid to oneOfType. Expected an array of check functions, but ' +\n 'received %s at index %s.',\n getPostfixForTypeWarning(checker),\n i\n );\n return emptyFunction.thatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/factoryWithTypeCheckers.js\n// module id = 14\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== 'production') {\n var invariant = require('fbjs/lib/invariant');\n var warning = require('fbjs/lib/warning');\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/checkPropTypes.js\n// module id = 15\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/factoryWithThrowingShims.js\n// module id = 16\n// module chunks = 0","/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/classnames/index.js\n// module id = 17\n// module chunks = 0","// @flow\nconst prefixes = ['Moz', 'Webkit', 'O', 'ms'];\nexport function getPrefix(prop: string='transform'): string {\n // Checking specifically for 'window.document' is for pseudo-browser server-side\n // environments that define 'window' as the global context.\n // E.g. React-rails (see https://github.com/reactjs/react-rails/pull/84)\n if (typeof window === 'undefined' || typeof window.document === 'undefined') return '';\n\n const style = window.document.documentElement.style;\n\n if (prop in style) return '';\n\n for (let i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n\n return '';\n}\n\nexport function browserPrefixToKey(prop: string, prefix: string): string {\n return prefix ? `${prefix}${kebabToTitleCase(prop)}` : prop;\n}\n\nexport function browserPrefixToStyle(prop: string, prefix: string): string {\n return prefix ? `-${prefix.toLowerCase()}-${prop}` : prop;\n}\n\nfunction kebabToTitleCase(str: string): string {\n let out = '';\n let shouldCapitalize = true;\n for (let i = 0; i < str.length; i++) {\n if (shouldCapitalize) {\n out += str[i].toUpperCase();\n shouldCapitalize = false;\n } else if (str[i] === '-') {\n shouldCapitalize = true;\n } else {\n out += str[i];\n }\n }\n return out;\n}\n\n// Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\nexport default getPrefix();\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/getPrefix.js","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/process/browser.js\n// module id = 19\n// module chunks = 0"]} \ No newline at end of file diff --git a/webapp/app/containers/Dashboard/Grid.tsx b/webapp/app/containers/Dashboard/Grid.tsx index b80fc0931..9645e4041 100644 --- a/webapp/app/containers/Dashboard/Grid.tsx +++ b/webapp/app/containers/Dashboard/Grid.tsx @@ -44,7 +44,7 @@ import DashboardFilterPanel from './components/DashboardFilterPanel' import DashboardFilterConfig from './components/DashboardFilterConfig' import { getMappingLinkage, processLinkage, removeLinkage } from 'components/Linkages' -import { Responsive, WidthProvider } from 'react-grid-layout' +import { Responsive, WidthProvider } from 'libs/react-grid-layout' import AntdFormType from 'antd/lib/form/Form' const Row = require('antd/lib/row') const Col = require('antd/lib/col') diff --git a/webapp/app/containers/Display/components/LayerItem.tsx b/webapp/app/containers/Display/components/LayerItem.tsx index 00267595a..e124f942b 100644 --- a/webapp/app/containers/Display/components/LayerItem.tsx +++ b/webapp/app/containers/Display/components/LayerItem.tsx @@ -1,7 +1,7 @@ import * as React from 'react' import * as classnames from 'classnames' -import Draggable from '../../../components/Draggable/react-draggable' +import Draggable from '../../../../libs/react-draggable/react-draggable' // @TODO contentMenu // const Dropdown = require('antd/lib/dropdown') @@ -15,7 +15,7 @@ import { import Pivot from '../../Widget/components/Pivot/PivotInViz' import { IPivotProps, RenderType } from '../../Widget/components/Pivot/Pivot' -const Resizable = require('react-resizable').Resizable +const Resizable = require('../../../../libs/react-resizable').Resizable const styles = require('../Display.less') @@ -180,16 +180,21 @@ export class LayerItem extends React.PureComponent { + const { itemId, selected, onResizeLayer, scale } = this.props + const { width: prevWidth, height: prevHeight } = this.state const { width, height } = size const delta = { - deltaWidth: width - this.state.width, - deltaHeight: height - this.state.height + deltaWidth: (width - this.state.width) / scale[0], + deltaHeight: (height - this.state.height) / scale[1] } - const { itemId, selected, onResizeLayer } = this.props + console.log('-----------------------') + console.log('delta: ', delta) + console.log('prev: ', { prevWidth, prevHeight }) + console.log(size) if (onResizeLayer && selected) { onResizeLayer(itemId, delta) } this.setState({ - width, - height + width: prevWidth + delta.deltaWidth, + height: prevHeight + delta.deltaHeight }) } diff --git a/webapp/internals/webpack/webpack.base.babel.js b/webapp/internals/webpack/webpack.base.babel.js index a93177053..694347166 100644 --- a/webapp/internals/webpack/webpack.base.babel.js +++ b/webapp/internals/webpack/webpack.base.babel.js @@ -30,7 +30,7 @@ module.exports = (options) => ({ }, { test: /\.js$/, // Transform all .js files required somewhere with Babel - exclude: /node_modules/, + exclude: /node_modules|libs/, use: { loader: 'babel-loader', options: options.babelQuery @@ -43,7 +43,7 @@ module.exports = (options) => ({ // they will be a part of our compilation either way. // So, no need for ExtractTextPlugin here. test: /\.css$/, - include: /node_modules/, + include: /node_modules|libs/, use: ['style-loader', 'css-loader'] }, { @@ -137,7 +137,10 @@ module.exports = (options) => ({ 'browser', 'jsnext:main', 'main' - ] + ], + alias: { + libs: path.resolve(process.cwd(), 'libs') + } }, devtool: options.devtool, target: 'web', // Make web variables accessible to webpack, e.g. window diff --git a/webapp/app/components/Draggable/react-draggable.js b/webapp/libs/react-draggable/react-draggable.js similarity index 92% rename from webapp/app/components/Draggable/react-draggable.js rename to webapp/libs/react-draggable/react-draggable.js index 37747ebec..750aaa8f1 100644 --- a/webapp/app/components/Draggable/react-draggable.js +++ b/webapp/libs/react-draggable/react-draggable.js @@ -1,4 +1,3 @@ -/* eslint-disable */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("react-dom"), require("react")); @@ -124,13 +123,11 @@ function dontSetMe(props /*: Object*/, propName /*: string*/, componentName /*: /** * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. * + * */ function makeEmptyFunction(arg) { @@ -166,11 +163,9 @@ module.exports = emptyFunction; "use strict"; /** * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. * */ @@ -226,12 +221,10 @@ module.exports = invariant; "use strict"; /** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. + * Copyright (c) 2013-present, Facebook, Inc. * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. */ @@ -281,7 +274,7 @@ exports.removeClassName = removeClassName; var _shims = __webpack_require__(0); -var _getPrefix = __webpack_require__(18); +var _getPrefix = __webpack_require__(19); var _getPrefix2 = _interopRequireDefault(_getPrefix); @@ -301,8 +294,12 @@ function matchesSelector(el /*: Node*/, selector /*: string*/) /*: boolean*/ { }); } + // Might not be found entirely (not an Element?) - in that case, bail + // $FlowIgnore: Doesn't think elements are indexable + if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false; + // $FlowIgnore: Doesn't think elements are indexable - return el[matchesSelectorFunc].call(el, selector); + return el[matchesSelectorFunc](selector); } // Works up the tree to the draggable itself attempting to match selector. @@ -424,7 +421,8 @@ function getTouchIdentifier(e /*: MouseTouchEvent*/) /*: ?number*/ { // Useful for preventing blue highlights all over everything when dragging. // Note we're passing `document` b/c we could be iframed -function addUserSelectStyles(doc /*: Document*/) { +function addUserSelectStyles(doc /*: ?Document*/) { + if (!doc) return; var styleEl = doc.getElementById('react-draggable-style-el'); if (!styleEl) { styleEl = doc.createElement('style'); @@ -437,9 +435,13 @@ function addUserSelectStyles(doc /*: Document*/) { if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection'); } -function removeUserSelectStyles(doc /*: Document*/) { - if (doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection'); - window.getSelection().removeAllRanges(); // remove selection caused by scroll +function removeUserSelectStyles(doc /*: ?Document*/) { + try { + if (doc && doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection'); + window.getSelection().removeAllRanges(); // remove selection caused by scroll + } catch (e) { + // probably IE + } } function styleHacks() /*: Object*/ { @@ -481,12 +483,10 @@ module.exports = __WEBPACK_EXTERNAL_MODULE_6__; /***/ (function(module, exports, __webpack_require__) { /** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. + * Copyright (c) 2013-present, Facebook, Inc. * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. */ if (Object({"DRAGGABLE_DEBUG":undefined}).NODE_ENV !== 'production') { @@ -508,7 +508,7 @@ if (Object({"DRAGGABLE_DEBUG":undefined}).NODE_ENV !== 'production') { } else { // By explicitly using `prop-types` you are opting into new production behavior. // http://fb.me/prop-types-in-prod - module.exports = __webpack_require__(16)(); + module.exports = __webpack_require__(17)(); } @@ -518,12 +518,10 @@ if (Object({"DRAGGABLE_DEBUG":undefined}).NODE_ENV !== 'production') { "use strict"; /** - * Copyright 2014-2015, Facebook, Inc. - * All rights reserved. + * Copyright (c) 2014-present, Facebook, Inc. * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. * */ @@ -684,7 +682,6 @@ function getControlPosition(e /*: MouseTouchEvent*/, touchIdentifier /*: ?number // Create an data object exposed by 's events function createCoreData(draggable /*: DraggableCore*/, x /*: number*/, y /*: number*/) /*: DraggableData*/ { - var scale = draggable.props.scale; var state = draggable.state; var isStart = !(0, _shims.isNum)(state.lastX); var node = findDOMNode(draggable); @@ -699,17 +696,9 @@ function createCoreData(draggable /*: DraggableCore*/, x /*: number*/, y /*: num }; } else { // Otherwise calculate proper values. - var _positionFns = __webpack_require__(9); - var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - - var _deltaX = (x - state.lastX) / scale - var _deltaY = (y - state.lastY) / scale - var _snapToGrid = (0, _positionFns.snapToGrid)(draggable.props.grid, _deltaX, _deltaY); - var _snapToGrid2 = _slicedToArray(_snapToGrid, 2); - return { node: node, - deltaX: _snapToGrid2[0], deltaY: _snapToGrid2[1], + deltaX: x - state.lastX, deltaY: y - state.lastY, lastX: state.lastX, lastY: state.lastY, x: x, y: y }; @@ -718,8 +707,6 @@ function createCoreData(draggable /*: DraggableCore*/, x /*: number*/, y /*: num // Create an data exposed by 's events function createDraggableData(draggable /*: Draggable*/, coreData /*: DraggableData*/) /*: DraggableData*/ { - var scale = draggable.props.scale; - return { node: coreData.node, x: draggable.state.x + coreData.deltaX, @@ -1116,8 +1103,8 @@ DraggableCore.propTypes = { * `offsetParent`, if set, uses the passed DOM node to compute drag offsets * instead of using the parent node. */ - offsetParent: function offsetParent(props, propName) { - if (process.browser && props[propName] && props[propName].nodeType !== 1) { + offsetParent: function offsetParent(props /*: DraggableCoreProps*/, propName /*: $Keys*/) { + if (process.browser === true && props[propName] && props[propName].nodeType !== 1) { throw new Error('Draggable\'s offsetParent must be a DOM Node.'); } }, @@ -1217,7 +1204,7 @@ DraggableCore.defaultProps = { onMouseDown: function onMouseDown() {} }; exports.default = DraggableCore; -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(19))) +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(20))) /***/ }), /* 11 */ @@ -1284,7 +1271,7 @@ var _reactDom = __webpack_require__(4); var _reactDom2 = _interopRequireDefault(_reactDom); -var _classnames = __webpack_require__(17); +var _classnames = __webpack_require__(18); var _classnames2 = _interopRequireDefault(_classnames); @@ -1337,7 +1324,6 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" defaultClassNameDragged: string, defaultPosition: ControlPosition, position: ControlPosition, - scale: number };*/ var Draggable = function (_React$Component) { @@ -1384,15 +1370,16 @@ var Draggable = function (_React$Component) { newState.y += _this.state.slackY; // Get bound position. This will ceil/floor the x and y within the boundaries. - // $FlowBug - // Recalculate slack by noting how much was shaved by the boundPosition handler. - var _getBoundPosition = (0, _positionFns.getBoundPosition)(_this, newState.x, newState.y); + var _getBoundPosition = (0, _positionFns.getBoundPosition)(_this, newState.x, newState.y), + _getBoundPosition2 = _slicedToArray(_getBoundPosition, 2), + newStateX = _getBoundPosition2[0], + newStateY = _getBoundPosition2[1]; - var _getBoundPosition2 = _slicedToArray(_getBoundPosition, 2); + newState.x = newStateX; + newState.y = newStateY; - newState.x = _getBoundPosition2[0]; - newState.y = _getBoundPosition2[1]; + // Recalculate slack by noting how much was shaved by the boundPosition handler. newState.slackX = _this.state.slackX + (_x - newState.x); newState.slackY = _this.state.slackY + (_y - newState.y); @@ -1526,18 +1513,20 @@ var Draggable = function (_React$Component) { defaultClassNameDragging = _props.defaultClassNameDragging, defaultClassNameDragged = _props.defaultClassNameDragged; - // Mark with class while dragging - var className = (0, _classnames2.default)(this.props.children.props.className || '', defaultClassName, (_classNames = {}, _defineProperty(_classNames, defaultClassNameDragging, this.state.dragging), _defineProperty(_classNames, defaultClassNameDragged, this.state.dragged), _classNames)); + var children = _react2.default.Children.only(this.props.children); + + // Mark with class while dragging + var className = (0, _classnames2.default)(children.props.className || '', defaultClassName, (_classNames = {}, _defineProperty(_classNames, defaultClassNameDragging, this.state.dragging), _defineProperty(_classNames, defaultClassNameDragged, this.state.dragged), _classNames)); // Reuse the child provided // This makes it flexible to use whatever element is wanted (div, ul, etc) return _react2.default.createElement( _DraggableCore2.default, _extends({}, this.props, { onStart: this.onDragStart, onDrag: this.onDrag, onStop: this.onDragStop }), - _react2.default.cloneElement(_react2.default.Children.only(this.props.children), { + _react2.default.cloneElement(children, { className: className, - style: _extends({}, this.props.children.props.style, style), + style: _extends({}, children.props.style, style), transform: svgTransform }) ); @@ -1649,8 +1638,6 @@ Draggable.propTypes = _extends({}, _DraggableCore2.default.propTypes, { y: _propTypes2.default.number }), - scale: _propTypes2.default.number, - /** * These properties should be defined on the child, not here. */ @@ -1665,8 +1652,7 @@ Draggable.defaultProps = _extends({}, _DraggableCore2.default.defaultProps, { defaultClassNameDragging: 'react-draggable-dragging', defaultClassNameDragged: 'react-draggable-dragged', defaultPosition: { x: 0, y: 0 }, - position: null, - scale: 1 + position: null }); exports.default = Draggable; @@ -1676,12 +1662,10 @@ exports.default = Draggable; "use strict"; /** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. + * Copyright (c) 2013-present, Facebook, Inc. * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. */ @@ -1689,9 +1673,10 @@ exports.default = Draggable; var emptyFunction = __webpack_require__(1); var invariant = __webpack_require__(2); var warning = __webpack_require__(8); +var assign = __webpack_require__(15); var ReactPropTypesSecret = __webpack_require__(3); -var checkPropTypes = __webpack_require__(15); +var checkPropTypes = __webpack_require__(16); module.exports = function(isValidElement, throwOnDirectAccess) { /* global Symbol */ @@ -1787,7 +1772,8 @@ module.exports = function(isValidElement, throwOnDirectAccess) { objectOf: createObjectOfTypeChecker, oneOf: createEnumTypeChecker, oneOfType: createUnionTypeChecker, - shape: createShapeTypeChecker + shape: createShapeTypeChecker, + exact: createStrictShapeTypeChecker, }; /** @@ -2002,7 +1988,7 @@ module.exports = function(isValidElement, throwOnDirectAccess) { if (typeof checker !== 'function') { warning( false, - 'Invalid argument supplid to oneOfType. Expected an array of check functions, but ' + + 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + 'received %s at index %s.', getPostfixForTypeWarning(checker), i @@ -2056,6 +2042,36 @@ module.exports = function(isValidElement, throwOnDirectAccess) { return createChainableTypeChecker(validate); } + function createStrictShapeTypeChecker(shapeTypes) { + function validate(props, propName, componentName, location, propFullName) { + var propValue = props[propName]; + var propType = getPropType(propValue); + if (propType !== 'object') { + return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); + } + // We need to check all keys in case some are required but missing from + // props. + var allKeys = assign({}, props[propName], shapeTypes); + for (var key in allKeys) { + var checker = shapeTypes[key]; + if (!checker) { + return new PropTypeError( + 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ') + ); + } + var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); + if (error) { + return error; + } + } + return null; + } + + return createChainableTypeChecker(validate); + } + function isNode(propValue) { switch (typeof propValue) { case 'number': @@ -2193,14 +2209,109 @@ module.exports = function(isValidElement, throwOnDirectAccess) { /* 15 */ /***/ (function(module, exports, __webpack_require__) { +"use strict"; +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + + +/* eslint-disable no-unused-vars */ +var getOwnPropertySymbols = Object.getOwnPropertySymbols; +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; + +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } + + return Object(val); +} + +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } + + // Detect buggy property enumeration order in older V8 versions. + + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } + + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } + + return true; + } catch (err) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} + +module.exports = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; + + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); + + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } + + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } + + return to; +}; + + +/***/ }), +/* 16 */ +/***/ (function(module, exports, __webpack_require__) { + "use strict"; /** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. + * Copyright (c) 2013-present, Facebook, Inc. * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. */ @@ -2234,7 +2345,7 @@ function checkPropTypes(typeSpecs, values, location, componentName, getStack) { try { // This is intentionally an invariant that gets caught. It's the same // behavior as without this statement except with a better message. - invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', componentName || 'React class', location, typeSpecName); + invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]); error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); } catch (ex) { error = ex; @@ -2258,17 +2369,15 @@ module.exports = checkPropTypes; /***/ }), -/* 16 */ +/* 17 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. + * Copyright (c) 2013-present, Facebook, Inc. * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. */ @@ -2313,7 +2422,8 @@ module.exports = function() { objectOf: getShim, oneOf: getShim, oneOfType: getShim, - shape: getShim + shape: getShim, + exact: getShim }; ReactPropTypes.checkPropTypes = emptyFunction; @@ -2324,7 +2434,7 @@ module.exports = function() { /***/ }), -/* 17 */ +/* 18 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! @@ -2379,7 +2489,7 @@ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! /***/ }), -/* 18 */ +/* 19 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -2441,7 +2551,7 @@ function kebabToTitleCase(str /*: string*/) /*: string*/ { exports.default = getPrefix(); /***/ }), -/* 19 */ +/* 20 */ /***/ (function(module, exports) { // shim for using process in browser @@ -2633,4 +2743,4 @@ process.umask = function() { return 0; }; /***/ }) /******/ ]); }); -//# sourceMappingURL=react-draggable.js.map +//# sourceMappingURL=react-draggable.js.map \ No newline at end of file diff --git a/webapp/libs/react-draggable/react-draggable.js.map b/webapp/libs/react-draggable/react-draggable.js.map new file mode 100644 index 000000000..17d8391f9 --- /dev/null +++ b/webapp/libs/react-draggable/react-draggable.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../webpack/universalModuleDefinition","../webpack/bootstrap 33f74c03cddcdadf8186",".././lib/utils/shims.js",".././node_modules/fbjs/lib/emptyFunction.js",".././node_modules/fbjs/lib/invariant.js",".././node_modules/prop-types/lib/ReactPropTypesSecret.js","../external {\"commonjs\":\"react-dom\",\"commonjs2\":\"react-dom\",\"amd\":\"react-dom\",\"root\":\"ReactDOM\"}",".././lib/utils/domFns.js","../external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}",".././node_modules/prop-types/index.js",".././node_modules/fbjs/lib/warning.js",".././lib/utils/positionFns.js",".././lib/DraggableCore.js",".././lib/utils/log.js",".././index.js",".././lib/Draggable.js",".././node_modules/prop-types/factoryWithTypeCheckers.js",".././node_modules/object-assign/index.js",".././node_modules/prop-types/checkPropTypes.js",".././node_modules/prop-types/factoryWithThrowingShims.js",".././node_modules/classnames/index.js",".././lib/utils/getPrefix.js",".././node_modules/process/browser.js"],"names":["findInArray","isFunction","isNum","int","dontSetMe","array","callback","i","length","apply","func","Object","prototype","toString","call","num","isNaN","a","parseInt","props","propName","componentName","Error","matchesSelector","matchesSelectorAndParentsTo","addEvent","removeEvent","outerHeight","outerWidth","innerHeight","innerWidth","offsetXYFromParent","createCSSTransform","createSVGTransform","getTouch","getTouchIdentifier","addUserSelectStyles","removeUserSelectStyles","styleHacks","addClassName","removeClassName","matchesSelectorFunc","el","selector","method","baseNode","node","parentNode","event","handler","attachEvent","addEventListener","detachEvent","removeEventListener","height","clientHeight","computedStyle","ownerDocument","defaultView","getComputedStyle","borderTopWidth","borderBottomWidth","width","clientWidth","borderLeftWidth","borderRightWidth","paddingTop","paddingBottom","paddingLeft","paddingRight","evt","offsetParent","isBody","body","offsetParentRect","left","top","getBoundingClientRect","x","clientX","scrollLeft","y","clientY","scrollTop","e","identifier","targetTouches","t","changedTouches","doc","styleEl","getElementById","createElement","type","id","innerHTML","getElementsByTagName","appendChild","window","getSelection","removeAllRanges","childStyle","touchAction","className","classList","add","match","RegExp","remove","replace","getBoundPosition","snapToGrid","canDragX","canDragY","getControlPosition","createCoreData","createDraggableData","draggable","bounds","cloneBounds","findDOMNode","ownerWindow","boundNode","querySelector","HTMLElement","nodeStyle","boundNodeStyle","offsetLeft","marginLeft","offsetTop","marginTop","right","marginRight","bottom","marginBottom","Math","min","max","grid","pendingX","pendingY","round","axis","touchIdentifier","draggableCore","touchObj","state","isStart","lastX","deltaX","deltaY","lastY","coreData","eventsFor","touch","start","move","stop","mouse","dragEventFor","DraggableCore","dragging","NaN","handleDragStart","onMouseDown","allowAnyClick","button","thisNode","disabled","target","Node","handle","cancel","setState","position","coreEvent","onStart","shouldUpdate","enableUserSelectHack","handleDrag","handleDragStop","preventDefault","Array","isArray","onDrag","MouseEvent","err","document","createEvent","initMouseEvent","onStop","onMouseUp","onTouchStart","onTouchEnd","cloneElement","Children","only","children","style","Component","displayName","propTypes","bool","process","browser","nodeType","arrayOf","number","string","transform","defaultProps","log","Draggable","require","default","module","exports","onDragStart","shouldStart","dragged","uiData","newState","slackX","slackY","newStateX","newStateY","onDragStop","shouldStop","controlled","Boolean","defaultPosition","isElementSVG","console","warn","SVGElement","nextProps","svgTransform","transformOpts","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","oneOf","oneOfType","shape","getPrefix","browserPrefixToKey","browserPrefixToStyle","prefixes","prop","documentElement","prefix","kebabToTitleCase","toLowerCase","str","out","shouldCapitalize","toUpperCase"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;;;;;;QC3DgBA,W,GAAAA,W;QAMAC,U,GAAAA,U;QAIAC,K,GAAAA,K;QAIAC,G,GAAAA,G;QAIAC,S,GAAAA,S;;AAnBhB;AACO,SAASJ,WAAT,CAAqBK,KAArB,+BAAoDC,QAApD,2BAA6E;AAClF,OAAK,IAAIC,IAAI,CAAR,EAAWC,SAASH,MAAMG,MAA/B,EAAuCD,IAAIC,MAA3C,EAAmDD,GAAnD,EAAwD;AACtD,QAAID,SAASG,KAAT,CAAeH,QAAf,EAAyB,CAACD,MAAME,CAAN,CAAD,EAAWA,CAAX,EAAcF,KAAd,CAAzB,CAAJ,EAAoD,OAAOA,MAAME,CAAN,CAAP;AACrD;AACF;;AAEM,SAASN,UAAT,CAAoBS,IAApB,0BAAwC;AAC7C,SAAO,OAAOA,IAAP,KAAgB,UAAhB,IAA8BC,OAAOC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BJ,IAA/B,MAAyC,mBAA9E;AACD;;AAEM,SAASR,KAAT,CAAea,GAAf,0BAAkC;AACvC,SAAO,OAAOA,GAAP,KAAe,QAAf,IAA2B,CAACC,MAAMD,GAAN,CAAnC;AACD;;AAEM,SAASZ,GAAT,CAAac,CAAb,4BAAgC;AACrC,SAAOC,SAASD,CAAT,EAAY,EAAZ,CAAP;AACD;;AAEM,SAASb,SAAT,CAAmBe,KAAnB,eAAkCC,QAAlC,eAAoDC,aAApD,eAA2E;AAChF,MAAIF,MAAMC,QAAN,CAAJ,EAAqB;AACnB,WAAO,IAAIE,KAAJ,mBAA0BF,QAA1B,mBAAgDC,aAAhD,8CAAP;AACD;AACF,C;;;;;;;ACxBD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+B;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,qDAAqD;AACrD,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA,0BAA0B;AAC1B;AACA;AACA;;AAEA,2B;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;;;;;;ACXA,+C;;;;;;;;;;;;;;;QCOgBE,e,GAAAA,e;QAuBAC,2B,GAAAA,2B;QAWAC,Q,GAAAA,Q;QAYAC,W,GAAAA,W;QAYAC,W,GAAAA,W;QAUAC,U,GAAAA,U;QASAC,W,GAAAA,W;QAQAC,U,GAAAA,U;QASAC,kB,GAAAA,kB;QAUAC,kB,GAAAA,kB;QAKAC,kB,GAAAA,kB;QAIAC,Q,GAAAA,Q;QAKAC,kB,GAAAA,kB;QAUAC,mB,GAAAA,mB;QAcAC,sB,GAAAA,sB;QASAC,U,GAAAA,U;QASAC,Y,GAAAA,Y;QAUAC,e,GAAAA,e;;AAhLhB;;AACA;;;;;;;;;;;AAIA,IAAIC,sBAAsB,EAA1B;AACO,SAASlB,eAAT,CAAyBmB,EAAzB,aAAmCC,QAAnC,6BAA8D;AACnE,MAAI,CAACF,mBAAL,EAA0B;AACxBA,0BAAsB,wBAAY,CAChC,SADgC,EAEhC,uBAFgC,EAGhC,oBAHgC,EAIhC,mBAJgC,EAKhC,kBALgC,CAAZ,EAMnB,UAASG,MAAT,EAAgB;AACjB;AACA,aAAO,uBAAWF,GAAGE,MAAH,CAAX,CAAP;AACD,KATqB,CAAtB;AAUD;;AAED;AACA;AACA,MAAI,CAAC,uBAAWF,GAAGD,mBAAH,CAAX,CAAL,EAA0C,OAAO,KAAP;;AAE1C;AACA,SAAOC,GAAGD,mBAAH,EAAwBE,QAAxB,CAAP;AACD;;AAED;AACO,SAASnB,2BAAT,CAAqCkB,EAArC,aAA+CC,QAA/C,eAAiEE,QAAjE,2BAA0F;AAC/F,MAAIC,OAAOJ,EAAX;AACA,KAAG;AACD,QAAInB,gBAAgBuB,IAAhB,EAAsBH,QAAtB,CAAJ,EAAqC,OAAO,IAAP;AACrC,QAAIG,SAASD,QAAb,EAAuB,OAAO,KAAP;AACvBC,WAAOA,KAAKC,UAAZ;AACD,GAJD,QAISD,IAJT;;AAMA,SAAO,KAAP;AACD;;AAEM,SAASrB,QAAT,CAAkBiB,EAAlB,cAA6BM,KAA7B,eAA4CC,OAA5C,4BAAqE;AAC1E,MAAI,CAACP,EAAL,EAAS;AAAE;AAAS;AACpB,MAAIA,GAAGQ,WAAP,EAAoB;AAClBR,OAAGQ,WAAH,CAAe,OAAOF,KAAtB,EAA6BC,OAA7B;AACD,GAFD,MAEO,IAAIP,GAAGS,gBAAP,EAAyB;AAC9BT,OAAGS,gBAAH,CAAoBH,KAApB,EAA2BC,OAA3B,EAAoC,IAApC;AACD,GAFM,MAEA;AACL;AACAP,OAAG,OAAOM,KAAV,IAAmBC,OAAnB;AACD;AACF;;AAEM,SAASvB,WAAT,CAAqBgB,EAArB,cAAgCM,KAAhC,eAA+CC,OAA/C,4BAAwE;AAC7E,MAAI,CAACP,EAAL,EAAS;AAAE;AAAS;AACpB,MAAIA,GAAGU,WAAP,EAAoB;AAClBV,OAAGU,WAAH,CAAe,OAAOJ,KAAtB,EAA6BC,OAA7B;AACD,GAFD,MAEO,IAAIP,GAAGW,mBAAP,EAA4B;AACjCX,OAAGW,mBAAH,CAAuBL,KAAvB,EAA8BC,OAA9B,EAAuC,IAAvC;AACD,GAFM,MAEA;AACL;AACAP,OAAG,OAAOM,KAAV,IAAmB,IAAnB;AACD;AACF;;AAEM,SAASrB,WAAT,CAAqBmB,IAArB,iCAAgD;AACrD;AACA;AACA,MAAIQ,SAASR,KAAKS,YAAlB;AACA,MAAMC,gBAAgBV,KAAKW,aAAL,CAAmBC,WAAnB,CAA+BC,gBAA/B,CAAgDb,IAAhD,CAAtB;AACAQ,YAAU,gBAAIE,cAAcI,cAAlB,CAAV;AACAN,YAAU,gBAAIE,cAAcK,iBAAlB,CAAV;AACA,SAAOP,MAAP;AACD;;AAEM,SAAS1B,UAAT,CAAoBkB,IAApB,iCAA+C;AACpD;AACA;AACA,MAAIgB,QAAQhB,KAAKiB,WAAjB;AACA,MAAMP,gBAAgBV,KAAKW,aAAL,CAAmBC,WAAnB,CAA+BC,gBAA/B,CAAgDb,IAAhD,CAAtB;AACAgB,WAAS,gBAAIN,cAAcQ,eAAlB,CAAT;AACAF,WAAS,gBAAIN,cAAcS,gBAAlB,CAAT;AACA,SAAOH,KAAP;AACD;AACM,SAASjC,WAAT,CAAqBiB,IAArB,iCAAgD;AACrD,MAAIQ,SAASR,KAAKS,YAAlB;AACA,MAAMC,gBAAgBV,KAAKW,aAAL,CAAmBC,WAAnB,CAA+BC,gBAA/B,CAAgDb,IAAhD,CAAtB;AACAQ,YAAU,gBAAIE,cAAcU,UAAlB,CAAV;AACAZ,YAAU,gBAAIE,cAAcW,aAAlB,CAAV;AACA,SAAOb,MAAP;AACD;;AAEM,SAASxB,UAAT,CAAoBgB,IAApB,iCAA+C;AACpD,MAAIgB,QAAQhB,KAAKiB,WAAjB;AACA,MAAMP,gBAAgBV,KAAKW,aAAL,CAAmBC,WAAnB,CAA+BC,gBAA/B,CAAgDb,IAAhD,CAAtB;AACAgB,WAAS,gBAAIN,cAAcY,WAAlB,CAAT;AACAN,WAAS,gBAAIN,cAAca,YAAlB,CAAT;AACA,SAAOP,KAAP;AACD;;AAED;AACO,SAAS/B,kBAAT,CAA4BuC,GAA5B,2CAAqEC,YAArE,0CAAiH;AACtH,MAAMC,SAASD,iBAAiBA,aAAad,aAAb,CAA2BgB,IAA3D;AACA,MAAMC,mBAAmBF,SAAS,EAACG,MAAM,CAAP,EAAUC,KAAK,CAAf,EAAT,GAA6BL,aAAaM,qBAAb,EAAtD;;AAEA,MAAMC,IAAIR,IAAIS,OAAJ,GAAcR,aAAaS,UAA3B,GAAwCN,iBAAiBC,IAAnE;AACA,MAAMM,IAAIX,IAAIY,OAAJ,GAAcX,aAAaY,SAA3B,GAAuCT,iBAAiBE,GAAlE;;AAEA,SAAO,EAACE,IAAD,EAAIG,IAAJ,EAAP;AACD;;AAEM,SAASjD,kBAAT,oBAAoE;AAAA,MAAvC8C,CAAuC,QAAvCA,CAAuC;AAAA,MAApCG,CAAoC,QAApCA,CAAoC;;AACzE;AACA,6BAAS,mCAAmB,WAAnB,sBAAT,EAA0D,eAAeH,CAAf,GAAmB,KAAnB,GAA2BG,CAA3B,GAA+B,KAAzF;AACD;;AAEM,SAAShD,kBAAT,qBAAoE;AAAA,MAAvC6C,CAAuC,SAAvCA,CAAuC;AAAA,MAApCG,CAAoC,SAApCA,CAAoC;;AACzE,SAAO,eAAeH,CAAf,GAAmB,GAAnB,GAAyBG,CAAzB,GAA6B,GAApC;AACD;;AAEM,SAAS/C,QAAT,CAAkBkD,CAAlB,wBAAsCC,UAAtC,yDAA+F;AACpG,SAAQD,EAAEE,aAAF,IAAmB,wBAAYF,EAAEE,aAAd,EAA6B;AAAA,WAAKD,eAAeE,EAAEF,UAAtB;AAAA,GAA7B,CAApB,IACCD,EAAEI,cAAF,IAAoB,wBAAYJ,EAAEI,cAAd,EAA8B;AAAA,WAAKH,eAAeE,EAAEF,UAAtB;AAAA,GAA9B,CAD5B;AAED;;AAEM,SAASlD,kBAAT,CAA4BiD,CAA5B,sCAAyD;AAC9D,MAAIA,EAAEE,aAAF,IAAmBF,EAAEE,aAAF,CAAgB,CAAhB,CAAvB,EAA2C,OAAOF,EAAEE,aAAF,CAAgB,CAAhB,EAAmBD,UAA1B;AAC3C,MAAID,EAAEI,cAAF,IAAoBJ,EAAEI,cAAF,CAAiB,CAAjB,CAAxB,EAA6C,OAAOJ,EAAEI,cAAF,CAAiB,CAAjB,EAAoBH,UAA3B;AAC9C;;AAED;AACA;AACA;;AAEA;AACO,SAASjD,mBAAT,CAA6BqD,GAA7B,kBAA6C;AAClD,MAAI,CAACA,GAAL,EAAU;AACV,MAAIC,UAAUD,IAAIE,cAAJ,CAAmB,0BAAnB,CAAd;AACA,MAAI,CAACD,OAAL,EAAc;AACZA,cAAUD,IAAIG,aAAJ,CAAkB,OAAlB,CAAV;AACAF,YAAQG,IAAR,GAAe,UAAf;AACAH,YAAQI,EAAR,GAAa,0BAAb;AACAJ,YAAQK,SAAR,GAAoB,uFAApB;AACAL,YAAQK,SAAR,IAAqB,kFAArB;AACAN,QAAIO,oBAAJ,CAAyB,MAAzB,EAAiC,CAAjC,EAAoCC,WAApC,CAAgDP,OAAhD;AACD;AACD,MAAID,IAAIhB,IAAR,EAAclC,aAAakD,IAAIhB,IAAjB,EAAuB,uCAAvB;AACf;;AAEM,SAASpC,sBAAT,CAAgCoD,GAAhC,kBAAgD;AACrD,MAAI;AACF,QAAIA,OAAOA,IAAIhB,IAAf,EAAqBjC,gBAAgBiD,IAAIhB,IAApB,EAA0B,uCAA1B;AACrByB,WAAOC,YAAP,GAAsBC,eAAtB,GAFE,CAEwC;AAC3C,GAHD,CAGE,OAAOhB,CAAP,EAAU;AACV;AACD;AACF;;AAEM,SAAS9C,UAAT,gBAAqD;AAAA,MAAjC+D,UAAiC,oFAAZ,EAAY;;AAC1D;AACA;AACA;AACEC,iBAAa;AADf,KAEKD,UAFL;AAID;;AAEM,SAAS9D,YAAT,CAAsBG,EAAtB,oBAAuC6D,SAAvC,eAA0D;AAC/D,MAAI7D,GAAG8D,SAAP,EAAkB;AAChB9D,OAAG8D,SAAH,CAAaC,GAAb,CAAiBF,SAAjB;AACD,GAFD,MAEO;AACL,QAAI,CAAC7D,GAAG6D,SAAH,CAAaG,KAAb,CAAmB,IAAIC,MAAJ,eAAuBJ,SAAvB,aAAnB,CAAL,EAAqE;AACnE7D,SAAG6D,SAAH,UAAoBA,SAApB;AACD;AACF;AACF;;AAEM,SAAS/D,eAAT,CAAyBE,EAAzB,oBAA0C6D,SAA1C,eAA6D;AAClE,MAAI7D,GAAG8D,SAAP,EAAkB;AAChB9D,OAAG8D,SAAH,CAAaI,MAAb,CAAoBL,SAApB;AACD,GAFD,MAEO;AACL7D,OAAG6D,SAAH,GAAe7D,GAAG6D,SAAH,CAAaM,OAAb,CAAqB,IAAIF,MAAJ,eAAuBJ,SAAvB,cAA2C,GAA3C,CAArB,EAAsE,EAAtE,CAAf;AACD;AACF,C;;;;;;ACvLD,+C;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,sFAAsF,aAAa;AACnG;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;;AAEA;AACA,4FAA4F,eAAe;AAC3G;AACA;;AAEA;AACA;AACA;AACA;;AAEA,yB;;;;;;;;;;;;QCpDgBO,gB,GAAAA,gB;QA6CAC,U,GAAAA,U;QAMAC,Q,GAAAA,Q;QAIAC,Q,GAAAA,Q;QAKAC,kB,GAAAA,kB;QAUAC,c,GAAAA,c;QAyBAC,mB,GAAAA,mB;;AAvGhB;;AACA;;;;AACA;;;;;;;AAMO,SAASN,gBAAT,CAA0BO,SAA1B,kBAAgDvC,CAAhD,eAA2DG,CAA3D,sCAAwF;AAC7F;AACA,MAAI,CAACoC,UAAUlG,KAAV,CAAgBmG,MAArB,EAA6B,OAAO,CAACxC,CAAD,EAAIG,CAAJ,CAAP;;AAE7B;AAJ6F,MAKxFqC,MALwF,GAK9ED,UAAUlG,KALoE,CAKxFmG,MALwF;;AAM7FA,WAAS,OAAOA,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsCC,YAAYD,MAAZ,CAA/C;AACA,MAAMxE,OAAO0E,YAAYH,SAAZ,CAAb;;AAEA,MAAI,OAAOC,MAAP,KAAkB,QAAtB,EAAgC;AAAA,QACvB7D,aADuB,GACNX,IADM,CACvBW,aADuB;;AAE9B,QAAMgE,cAAchE,cAAcC,WAAlC;AACA,QAAIgE,kBAAJ;AACA,QAAIJ,WAAW,QAAf,EAAyB;AACvBI,kBAAY5E,KAAKC,UAAjB;AACD,KAFD,MAEO;AACL2E,kBAAYjE,cAAckE,aAAd,CAA4BL,MAA5B,CAAZ;AACD;AACD,QAAI,EAAEI,qBAAqBE,WAAvB,CAAJ,EAAyC;AACvC,YAAM,IAAItG,KAAJ,CAAU,sBAAsBgG,MAAtB,GAA+B,8BAAzC,CAAN;AACD;AACD,QAAMO,YAAYJ,YAAY9D,gBAAZ,CAA6Bb,IAA7B,CAAlB;AACA,QAAMgF,iBAAiBL,YAAY9D,gBAAZ,CAA6B+D,SAA7B,CAAvB;AACA;AACAJ,aAAS;AACP3C,YAAM,CAAC7B,KAAKiF,UAAN,GAAmB,gBAAID,eAAe1D,WAAnB,CAAnB,GAAqD,gBAAIyD,UAAUG,UAAd,CADpD;AAEPpD,WAAK,CAAC9B,KAAKmF,SAAN,GAAkB,gBAAIH,eAAe5D,UAAnB,CAAlB,GAAmD,gBAAI2D,UAAUK,SAAd,CAFjD;AAGPC,aAAO,wBAAWT,SAAX,IAAwB,wBAAW5E,IAAX,CAAxB,GAA2CA,KAAKiF,UAAhD,GACL,gBAAID,eAAezD,YAAnB,CADK,GAC8B,gBAAIwD,UAAUO,WAAd,CAJ9B;AAKPC,cAAQ,yBAAYX,SAAZ,IAAyB,yBAAY5E,IAAZ,CAAzB,GAA6CA,KAAKmF,SAAlD,GACN,gBAAIH,eAAe3D,aAAnB,CADM,GAC8B,gBAAI0D,UAAUS,YAAd;AAN/B,KAAT;AAQD;;AAED;AACA,MAAI,kBAAMhB,OAAOa,KAAb,CAAJ,EAAyBrD,IAAIyD,KAAKC,GAAL,CAAS1D,CAAT,EAAYwC,OAAOa,KAAnB,CAAJ;AACzB,MAAI,kBAAMb,OAAOe,MAAb,CAAJ,EAA0BpD,IAAIsD,KAAKC,GAAL,CAASvD,CAAT,EAAYqC,OAAOe,MAAnB,CAAJ;;AAE1B;AACA,MAAI,kBAAMf,OAAO3C,IAAb,CAAJ,EAAwBG,IAAIyD,KAAKE,GAAL,CAAS3D,CAAT,EAAYwC,OAAO3C,IAAnB,CAAJ;AACxB,MAAI,kBAAM2C,OAAO1C,GAAb,CAAJ,EAAuBK,IAAIsD,KAAKE,GAAL,CAASxD,CAAT,EAAYqC,OAAO1C,GAAnB,CAAJ;;AAEvB,SAAO,CAACE,CAAD,EAAIG,CAAJ,CAAP;AACD;;AAEM,SAAS8B,UAAT,CAAoB2B,IAApB,yBAA4CC,QAA5C,eAA8DC,QAA9D,sCAAkG;AACvG,MAAM9D,IAAIyD,KAAKM,KAAL,CAAWF,WAAWD,KAAK,CAAL,CAAtB,IAAiCA,KAAK,CAAL,CAA3C;AACA,MAAMzD,IAAIsD,KAAKM,KAAL,CAAWD,WAAWF,KAAK,CAAL,CAAtB,IAAiCA,KAAK,CAAL,CAA3C;AACA,SAAO,CAAC5D,CAAD,EAAIG,CAAJ,CAAP;AACD;;AAEM,SAAS+B,QAAT,CAAkBK,SAAlB,gCAAiD;AACtD,SAAOA,UAAUlG,KAAV,CAAgB2H,IAAhB,KAAyB,MAAzB,IAAmCzB,UAAUlG,KAAV,CAAgB2H,IAAhB,KAAyB,GAAnE;AACD;;AAEM,SAAS7B,QAAT,CAAkBI,SAAlB,gCAAiD;AACtD,SAAOA,UAAUlG,KAAV,CAAgB2H,IAAhB,KAAyB,MAAzB,IAAmCzB,UAAUlG,KAAV,CAAgB2H,IAAhB,KAAyB,GAAnE;AACD;;AAED;AACO,SAAS5B,kBAAT,CAA4B9B,CAA5B,wBAAgD2D,eAAhD,gBAA0EC,aAA1E,6CAA0H;AAC/H,MAAMC,WAAW,OAAOF,eAAP,KAA2B,QAA3B,GAAsC,sBAAS3D,CAAT,EAAY2D,eAAZ,CAAtC,GAAqE,IAAtF;AACA,MAAI,OAAOA,eAAP,KAA2B,QAA3B,IAAuC,CAACE,QAA5C,EAAsD,OAAO,IAAP,CAFyE,CAE5D;AACnE,MAAMnG,OAAO0E,YAAYwB,aAAZ,CAAb;AACA;AACA,MAAMzE,eAAeyE,cAAc7H,KAAd,CAAoBoD,YAApB,IAAoCzB,KAAKyB,YAAzC,IAAyDzB,KAAKW,aAAL,CAAmBgB,IAAjG;AACA,SAAO,gCAAmBwE,YAAY7D,CAA/B,EAAkCb,YAAlC,CAAP;AACD;;AAED;AACO,SAAS4C,cAAT,CAAwBE,SAAxB,sBAAkDvC,CAAlD,eAA6DG,CAA7D,mCAAuF;AAC5F,MAAMiE,QAAQ7B,UAAU6B,KAAxB;AACA,MAAMC,UAAU,CAAC,kBAAMD,MAAME,KAAZ,CAAjB;AACA,MAAMtG,OAAO0E,YAAYH,SAAZ,CAAb;;AAEA,MAAI8B,OAAJ,EAAa;AACX;AACA,WAAO;AACLrG,gBADK;AAELuG,cAAQ,CAFH,EAEMC,QAAQ,CAFd;AAGLF,aAAOtE,CAHF,EAGKyE,OAAOtE,CAHZ;AAILH,UAJK,EAIFG;AAJE,KAAP;AAMD,GARD,MAQO;AACL;AACA,WAAO;AACLnC,gBADK;AAELuG,cAAQvE,IAAIoE,MAAME,KAFb,EAEoBE,QAAQrE,IAAIiE,MAAMK,KAFtC;AAGLH,aAAOF,MAAME,KAHR,EAGeG,OAAOL,MAAMK,KAH5B;AAILzE,UAJK,EAIFG;AAJE,KAAP;AAMD;AACF;;AAED;AACO,SAASmC,mBAAT,CAA6BC,SAA7B,kBAAmDmC,QAAnD,0CAA2F;AAChG,SAAO;AACL1G,UAAM0G,SAAS1G,IADV;AAELgC,OAAGuC,UAAU6B,KAAV,CAAgBpE,CAAhB,GAAoB0E,SAASH,MAF3B;AAGLpE,OAAGoC,UAAU6B,KAAV,CAAgBjE,CAAhB,GAAoBuE,SAASF,MAH3B;AAILD,YAAQG,SAASH,MAJZ;AAKLC,YAAQE,SAASF,MALZ;AAMLF,WAAO/B,UAAU6B,KAAV,CAAgBpE,CANlB;AAOLyE,WAAOlC,UAAU6B,KAAV,CAAgBjE;AAPlB,GAAP;AASD;;AAED;AACA,SAASsC,WAAT,CAAqBD,MAArB,4BAA6C;AAC3C,SAAO;AACL3C,UAAM2C,OAAO3C,IADR;AAELC,SAAK0C,OAAO1C,GAFP;AAGLuD,WAAOb,OAAOa,KAHT;AAILE,YAAQf,OAAOe;AAJV,GAAP;AAMD;;AAED,SAASb,WAAT,CAAqBH,SAArB,oDAAwE;AACtE,MAAMvE,OAAO,mBAAS0E,WAAT,CAAqBH,SAArB,CAAb;AACA,MAAI,CAACvE,IAAL,EAAW;AACT,UAAM,IAAIxB,KAAJ,CAAU,0CAAV,CAAN;AACD;AACD;AACA,SAAOwB,IAAP;AACD,C;;;;;;;;;;;;;;;;;ACpID;;;;AACA;;;;AACA;;;;AACA;;AAEA;;AACA;;AACA;;;;;;;;;;;;;;;AAKA;;AACA,IAAM2G,YAAY;AAChBC,SAAO;AACLC,WAAO,YADF;AAELC,UAAM,WAFD;AAGLC,UAAM;AAHD,GADS;AAMhBC,SAAO;AACLH,WAAO,WADF;AAELC,UAAM,WAFD;AAGLC,UAAM;AAHD;AANS,CAAlB;;AAaA;AACA,IAAIE,eAAeN,UAAUK,KAA7B;;;;;;;;;;;;;;;;;;;;;;;;AA0CA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;IAEqBE,a;;;;;;;;;;;;;;oMAoInBd,K,GAAQ;AACNe,gBAAU,KADJ;AAEN;AACAb,aAAOc,GAHD,EAGMX,OAAOW,GAHb;AAINnB,uBAAiB;AAJX,K,QAqBRoB,e,GAAiD,UAAC/E,CAAD,EAAO;AACtD;AACA,YAAKjE,KAAL,CAAWiJ,WAAX,CAAuBhF,CAAvB;;AAEA;AACA,UAAI,CAAC,MAAKjE,KAAL,CAAWkJ,aAAZ,IAA6B,OAAOjF,EAAEkF,MAAT,KAAoB,QAAjD,IAA6DlF,EAAEkF,MAAF,KAAa,CAA9E,EAAiF,OAAO,KAAP;;AAEjF;AACA,UAAMC,WAAW,mBAAS/C,WAAT,OAAjB;AACA,UAAI,CAAC+C,QAAD,IAAa,CAACA,SAAS9G,aAAvB,IAAwC,CAAC8G,SAAS9G,aAAT,CAAuBgB,IAApE,EAA0E;AACxE,cAAM,IAAInD,KAAJ,CAAU,2CAAV,CAAN;AACD;AAXqD,UAY/CmC,aAZ+C,GAY9B8G,QAZ8B,CAY/C9G,aAZ+C;;AActD;;AACA,UAAI,MAAKtC,KAAL,CAAWqJ,QAAX,IACD,EAAEpF,EAAEqF,MAAF,YAAoBhH,cAAcC,WAAd,CAA0BgH,IAAhD,CADC,IAED,MAAKvJ,KAAL,CAAWwJ,MAAX,IAAqB,CAAC,yCAA4BvF,EAAEqF,MAA9B,EAAsC,MAAKtJ,KAAL,CAAWwJ,MAAjD,EAAyDJ,QAAzD,CAFrB,IAGD,MAAKpJ,KAAL,CAAWyJ,MAAX,IAAqB,yCAA4BxF,EAAEqF,MAA9B,EAAsC,MAAKtJ,KAAL,CAAWyJ,MAAjD,EAAyDL,QAAzD,CAHxB,EAG6F;AAC3F;AACD;;AAED;AACA;AACA;AACA,UAAMxB,kBAAkB,gCAAmB3D,CAAnB,CAAxB;AACA,YAAKyF,QAAL,CAAc,EAAC9B,gCAAD,EAAd;;AAEA;AACA,UAAM+B,WAAW,qCAAmB1F,CAAnB,EAAsB2D,eAAtB,QAAjB;AACA,UAAI+B,YAAY,IAAhB,EAAsB,OA9BgC,CA8BxB;AA9BwB,UA+B/ChG,CA/B+C,GA+BvCgG,QA/BuC,CA+B/ChG,CA/B+C;AAAA,UA+B5CG,CA/B4C,GA+BvC6F,QA/BuC,CA+B5C7F,CA/B4C;;AAiCtD;;AACA,UAAM8F,YAAY,wCAAqBjG,CAArB,EAAwBG,CAAxB,CAAlB;;AAEA,yBAAI,oCAAJ,EAA0C8F,SAA1C;;AAEA;AACA,yBAAI,SAAJ,EAAe,MAAK5J,KAAL,CAAW6J,OAA1B;AACA,UAAMC,eAAe,MAAK9J,KAAL,CAAW6J,OAAX,CAAmB5F,CAAnB,EAAsB2F,SAAtB,CAArB;AACA,UAAIE,iBAAiB,KAArB,EAA4B;;AAE5B;AACA;AACA,UAAI,MAAK9J,KAAL,CAAW+J,oBAAf,EAAqC,iCAAoBzH,aAApB;;AAErC;AACA;AACA;AACA,YAAKoH,QAAL,CAAc;AACZZ,kBAAU,IADE;;AAGZb,eAAOtE,CAHK;AAIZyE,eAAOtE;AAJK,OAAd;;AAOA;AACA;AACA;AACA,4BAASxB,aAAT,EAAwBsG,aAAaH,IAArC,EAA2C,MAAKuB,UAAhD;AACA,4BAAS1H,aAAT,EAAwBsG,aAAaF,IAArC,EAA2C,MAAKuB,cAAhD;AACD,K,QAEDD,U,GAA4C,UAAC/F,CAAD,EAAO;;AAEjD;AACA,UAAIA,EAAES,IAAF,KAAW,WAAf,EAA4BT,EAAEiG,cAAF;;AAE5B;AACA,UAAMP,WAAW,qCAAmB1F,CAAnB,EAAsB,MAAK8D,KAAL,CAAWH,eAAjC,QAAjB;AACA,UAAI+B,YAAY,IAAhB,EAAsB;AAP2B,UAQ5ChG,CAR4C,GAQpCgG,QARoC,CAQ5ChG,CAR4C;AAAA,UAQzCG,CARyC,GAQpC6F,QARoC,CAQzC7F,CARyC;;AAUjD;;AACA,UAAIqG,MAAMC,OAAN,CAAc,MAAKpK,KAAL,CAAWuH,IAAzB,CAAJ,EAAoC;AAClC,YAAIW,UAASvE,IAAI,MAAKoE,KAAL,CAAWE,KAA5B;AAAA,YAAmCE,UAASrE,IAAI,MAAKiE,KAAL,CAAWK,KAA3D;;AADkC,0BAEf,6BAAW,MAAKpI,KAAL,CAAWuH,IAAtB,EAA4BW,OAA5B,EAAoCC,OAApC,CAFe;;AAAA;;AAEjCD,eAFiC;AAEzBC,eAFyB;;AAGlC,YAAI,CAACD,OAAD,IAAW,CAACC,OAAhB,EAAwB,OAHU,CAGF;AAChCxE,YAAI,MAAKoE,KAAL,CAAWE,KAAX,GAAmBC,OAAvB,EAA+BpE,IAAI,MAAKiE,KAAL,CAAWK,KAAX,GAAmBD,OAAtD;AACD;;AAED,UAAMyB,YAAY,wCAAqBjG,CAArB,EAAwBG,CAAxB,CAAlB;;AAEA,yBAAI,+BAAJ,EAAqC8F,SAArC;;AAEA;AACA,UAAME,eAAe,MAAK9J,KAAL,CAAWqK,MAAX,CAAkBpG,CAAlB,EAAqB2F,SAArB,CAArB;AACA,UAAIE,iBAAiB,KAArB,EAA4B;AAC1B,YAAI;AACF;AACA,gBAAKG,cAAL,CAAoB,IAAIK,UAAJ,CAAe,SAAf,CAApB;AACD,SAHD,CAGE,OAAOC,GAAP,EAAY;AACZ;AACA,cAAM1I,UAAU2I,SAASC,WAAT,CAAqB,aAArB,CAAV,kCAAN;AACA;AACA;AACA5I,gBAAM6I,cAAN,CAAqB,SAArB,EAAgC,IAAhC,EAAsC,IAAtC,EAA4C3F,MAA5C,EAAoD,CAApD,EAAuD,CAAvD,EAA0D,CAA1D,EAA6D,CAA7D,EAAgE,CAAhE,EAAmE,KAAnE,EAA0E,KAA1E,EAAiF,KAAjF,EAAwF,KAAxF,EAA+F,CAA/F,EAAkG,IAAlG;AACA,gBAAKkF,cAAL,CAAoBpI,KAApB;AACD;AACD;AACD;;AAED,YAAK6H,QAAL,CAAc;AACZzB,eAAOtE,CADK;AAEZyE,eAAOtE;AAFK,OAAd;AAID,K,QAEDmG,c,GAAgD,UAAChG,CAAD,EAAO;AACrD,UAAI,CAAC,MAAK8D,KAAL,CAAWe,QAAhB,EAA0B;;AAE1B,UAAMa,WAAW,qCAAmB1F,CAAnB,EAAsB,MAAK8D,KAAL,CAAWH,eAAjC,QAAjB;AACA,UAAI+B,YAAY,IAAhB,EAAsB;AAJ+B,UAK9ChG,CAL8C,GAKtCgG,QALsC,CAK9ChG,CAL8C;AAAA,UAK3CG,CAL2C,GAKtC6F,QALsC,CAK3C7F,CAL2C;;AAMrD,UAAM8F,YAAY,wCAAqBjG,CAArB,EAAwBG,CAAxB,CAAlB;;AAEA,UAAMsF,WAAW,mBAAS/C,WAAT,OAAjB;AACA,UAAI+C,QAAJ,EAAc;AACZ;AACA,YAAI,MAAKpJ,KAAL,CAAW+J,oBAAf,EAAqC,oCAAuBX,SAAS9G,aAAhC;AACtC;;AAED,yBAAI,mCAAJ,EAAyCsH,SAAzC;;AAEA;AACA,YAAKF,QAAL,CAAc;AACZZ,kBAAU,KADE;AAEZb,eAAOc,GAFK;AAGZX,eAAOW;AAHK,OAAd;;AAMA;AACA,YAAK/I,KAAL,CAAW2K,MAAX,CAAkB1G,CAAlB,EAAqB2F,SAArB;;AAEA,UAAIR,QAAJ,EAAc;AACZ;AACA,2BAAI,kCAAJ;AACA,iCAAYA,SAAS9G,aAArB,EAAoCsG,aAAaH,IAAjD,EAAuD,MAAKuB,UAA5D;AACA,iCAAYZ,SAAS9G,aAArB,EAAoCsG,aAAaF,IAAjD,EAAuD,MAAKuB,cAA5D;AACD;AACF,K,QAEDhB,W,GAA6C,UAAChF,CAAD,EAAO;AAClD2E,qBAAeN,UAAUK,KAAzB,CADkD,CAClB;;AAEhC,aAAO,MAAKK,eAAL,CAAqB/E,CAArB,CAAP;AACD,K,QAED2G,S,GAA2C,UAAC3G,CAAD,EAAO;AAChD2E,qBAAeN,UAAUK,KAAzB;;AAEA,aAAO,MAAKsB,cAAL,CAAoBhG,CAApB,CAAP;AACD,K,QAGD4G,Y,GAA8C,UAAC5G,CAAD,EAAO;AACnD;AACA2E,qBAAeN,UAAUC,KAAzB;;AAEA,aAAO,MAAKS,eAAL,CAAqB/E,CAArB,CAAP;AACD,K,QAED6G,U,GAA4C,UAAC7G,CAAD,EAAO;AACjD;AACA2E,qBAAeN,UAAUC,KAAzB;;AAEA,aAAO,MAAK0B,cAAL,CAAoBhG,CAApB,CAAP;AACD,K;;;;;2CAtLsB;AACrB;AACA;AACA,UAAMmF,WAAW,mBAAS/C,WAAT,CAAqB,IAArB,CAAjB;AACA,UAAI+C,QAAJ,EAAc;AAAA,YACL9G,aADK,GACY8G,QADZ,CACL9G,aADK;;AAEZ,iCAAYA,aAAZ,EAA2BgG,UAAUK,KAAV,CAAgBF,IAA3C,EAAiD,KAAKuB,UAAtD;AACA,iCAAY1H,aAAZ,EAA2BgG,UAAUC,KAAV,CAAgBE,IAA3C,EAAiD,KAAKuB,UAAtD;AACA,iCAAY1H,aAAZ,EAA2BgG,UAAUK,KAAV,CAAgBD,IAA3C,EAAiD,KAAKuB,cAAtD;AACA,iCAAY3H,aAAZ,EAA2BgG,UAAUC,KAAV,CAAgBG,IAA3C,EAAiD,KAAKuB,cAAtD;AACA,YAAI,KAAKjK,KAAL,CAAW+J,oBAAf,EAAqC,oCAAuBzH,aAAvB;AACtC;AACF;;AA6JD;;;;6BAeS;AACP;AACA;AACA,aAAO,gBAAMyI,YAAN,CAAmB,gBAAMC,QAAN,CAAeC,IAAf,CAAoB,KAAKjL,KAAL,CAAWkL,QAA/B,CAAnB,EAA6D;AAClEC,eAAO,wBAAW,KAAKnL,KAAL,CAAWkL,QAAX,CAAoBlL,KAApB,CAA0BmL,KAArC,CAD2D;;AAGlE;AACA;AACAlC,qBAAa,KAAKA,WALgD;AAMlE4B,sBAAc,KAAKA,YAN+C;AAOlED,mBAAW,KAAKA,SAPkD;AAQlEE,oBAAY,KAAKA;AARiD,OAA7D,CAAP;AAUD;;;;EAhVwC,gBAAMM,S;;AAA5BvC,a,CAEZwC,W,GAAc,e;AAFFxC,a,CAIZyC,S,GAAY;AACjB;;;;;;AAMApC,iBAAe,oBAAUqC,IAPR;;AASjB;;;;AAIAlC,YAAU,oBAAUkC,IAbH;;AAejB;;;;;AAKAxB,wBAAsB,oBAAUwB,IApBf;;AAsBjB;;;;AAIAnI,gBAAc,sBAASpD,KAAT,2BAAoCC,QAApC,kCAAyE;AACrF,QAAIuL,QAAQC,OAAR,KAAoB,IAApB,IAA4BzL,MAAMC,QAAN,CAA5B,IAA+CD,MAAMC,QAAN,EAAgByL,QAAhB,KAA6B,CAAhF,EAAmF;AACjF,YAAM,IAAIvL,KAAJ,CAAU,+CAAV,CAAN;AACD;AACF,GA9BgB;;AAgCjB;;;AAGAoH,QAAM,oBAAUoE,OAAV,CAAkB,oBAAUC,MAA5B,CAnCW;;AAqCjB;;;;;;;;;;;;;;;;;;;;AAoBApC,UAAQ,oBAAUqC,MAzDD;;AA2DjB;;;;;;;;;;;;;;;;;;;;AAoBApC,UAAQ,oBAAUoC,MA/ED;;AAiFjB;;;;AAIAhC,WAAS,oBAAUtK,IArFF;;AAuFjB;;;;AAIA8K,UAAQ,oBAAU9K,IA3FD;;AA6FjB;;;;AAIAoL,UAAQ,oBAAUpL,IAjGD;;AAmGjB;;;;AAIA0J,eAAa,oBAAU1J,IAvGN;;AAyGjB;;;AAGA6F,6BA5GiB;AA6GjB+F,yBA7GiB;AA8GjBW;AA9GiB,C;AAJAjD,a,CAqHZkD,Y,GAAe;AACpB7C,iBAAe,KADK,EACE;AACtBO,UAAQ,IAFY;AAGpBJ,YAAU,KAHU;AAIpBU,wBAAsB,IAJF;AAKpB3G,gBAAc,IALM;AAMpBoG,UAAQ,IANY;AAOpBjC,QAAM,IAPc;AAQpBuE,aAAW,IARS;AASpBjC,WAAS,mBAAU,CAAE,CATD;AAUpBQ,UAAQ,kBAAU,CAAE,CAVA;AAWpBM,UAAQ,kBAAU,CAAE,CAXA;AAYpB1B,eAAa,uBAAU,CAAE;AAZL,C;kBArHHJ,a;;;;;;;;;;;;;kBC3EGmD,G;;AADxB;AACe,SAASA,GAAT,GAA2B;AAAA;;AACxC,MAAI,SAAJ,EAAiC,qBAAQA,GAAR;AAClC,C;;;;;;;;;ACJD,IAAIC,YAAY,mBAAAC,CAAQ,EAAR,EAA2BC,OAA3C;;AAEA;AACA;AACA;AACA;AACAC,OAAOC,OAAP,GAAiBJ,SAAjB;AACAG,OAAOC,OAAP,CAAeF,OAAf,GAAyBF,SAAzB;AACAG,OAAOC,OAAP,CAAexD,aAAf,GAA+B,mBAAAqD,CAAQ,EAAR,EAA+BC,OAA9D,C;;;;;;;;;;;;;;;;;;;ACPA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;AACA;;AACA;;AACA;;;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA;AACA;AACA;;;;;;;;;;;;;IAEqBF,S;;;AAkInB,qBAAYjM,KAAZ,uBAAmC;AAAA;;AAAA,sHAC3BA,KAD2B;;AAAA,UAsDnCsM,WAtDmC,GAsDE,UAACrI,CAAD,EAAIoE,QAAJ,EAAiB;AACpD,yBAAI,4BAAJ,EAAkCA,QAAlC;;AAEA;AACA,UAAMkE,cAAc,MAAKvM,KAAL,CAAW6J,OAAX,CAAmB5F,CAAnB,EAAsB,6CAA0BoE,QAA1B,CAAtB,CAApB;AACA;AACA,UAAIkE,gBAAgB,KAApB,EAA2B,OAAO,KAAP;;AAE3B,YAAK7C,QAAL,CAAc,EAACZ,UAAU,IAAX,EAAiB0D,SAAS,IAA1B,EAAd;AACD,KA/DkC;;AAAA,UAiEnCnC,MAjEmC,GAiEH,UAACpG,CAAD,EAAIoE,QAAJ,EAAiB;AAC/C,UAAI,CAAC,MAAKN,KAAL,CAAWe,QAAhB,EAA0B,OAAO,KAAP;AAC1B,yBAAI,uBAAJ,EAA6BT,QAA7B;;AAEA,UAAMoE,SAAS,6CAA0BpE,QAA1B,CAAf;;AAEA,UAAMqE,wCAAmC;AACvC/I,WAAG8I,OAAO9I,CAD6B;AAEvCG,WAAG2I,OAAO3I;AAF6B,OAAzC;;AAKA;AACA,UAAI,MAAK9D,KAAL,CAAWmG,MAAf,EAAuB;AACrB;AADqB,YAEdxC,EAFc,GAEN+I,QAFM,CAEd/I,CAFc;AAAA,YAEXG,EAFW,GAEN4I,QAFM,CAEX5I,CAFW;;AAIrB;AACA;AACA;;AACA4I,iBAAS/I,CAAT,IAAc,MAAKoE,KAAL,CAAW4E,MAAzB;AACAD,iBAAS5I,CAAT,IAAc,MAAKiE,KAAL,CAAW6E,MAAzB;;AAEA;;AAVqB,gCAWU,0CAAuBF,SAAS/I,CAAhC,EAAmC+I,SAAS5I,CAA5C,CAXV;AAAA;AAAA,YAWd+I,SAXc;AAAA,YAWHC,SAXG;;AAYrBJ,iBAAS/I,CAAT,GAAakJ,SAAb;AACAH,iBAAS5I,CAAT,GAAagJ,SAAb;;AAEA;AACAJ,iBAASC,MAAT,GAAkB,MAAK5E,KAAL,CAAW4E,MAAX,IAAqBhJ,KAAI+I,SAAS/I,CAAlC,CAAlB;AACA+I,iBAASE,MAAT,GAAkB,MAAK7E,KAAL,CAAW6E,MAAX,IAAqB9I,KAAI4I,SAAS5I,CAAlC,CAAlB;;AAEA;AACA2I,eAAO9I,CAAP,GAAW+I,SAAS/I,CAApB;AACA8I,eAAO3I,CAAP,GAAW4I,SAAS5I,CAApB;AACA2I,eAAOvE,MAAP,GAAgBwE,SAAS/I,CAAT,GAAa,MAAKoE,KAAL,CAAWpE,CAAxC;AACA8I,eAAOtE,MAAP,GAAgBuE,SAAS5I,CAAT,GAAa,MAAKiE,KAAL,CAAWjE,CAAxC;AACD;;AAED;AACA,UAAMgG,eAAe,MAAK9J,KAAL,CAAWqK,MAAX,CAAkBpG,CAAlB,EAAqBwI,MAArB,CAArB;AACA,UAAI3C,iBAAiB,KAArB,EAA4B,OAAO,KAAP;;AAE5B,YAAKJ,QAAL,CAAcgD,QAAd;AACD,KA5GkC;;AAAA,UA8GnCK,UA9GmC,GA8GC,UAAC9I,CAAD,EAAIoE,QAAJ,EAAiB;AACnD,UAAI,CAAC,MAAKN,KAAL,CAAWe,QAAhB,EAA0B,OAAO,KAAP;;AAE1B;AACA,UAAMkE,aAAa,MAAKhN,KAAL,CAAW2K,MAAX,CAAkB1G,CAAlB,EAAqB,6CAA0BoE,QAA1B,CAArB,CAAnB;AACA,UAAI2E,eAAe,KAAnB,EAA0B,OAAO,KAAP;;AAE1B,yBAAI,2BAAJ,EAAiC3E,QAAjC;;AAEA,UAAMqE,wCAAmC;AACvC5D,kBAAU,KAD6B;AAEvC6D,gBAAQ,CAF+B;AAGvCC,gBAAQ;AAH+B,OAAzC;;AAMA;AACA;AACA,UAAMK,aAAaC,QAAQ,MAAKlN,KAAL,CAAW2J,QAAnB,CAAnB;AACA,UAAIsD,UAAJ,EAAgB;AAAA,mCACC,MAAKjN,KAAL,CAAW2J,QADZ;AAAA,YACPhG,GADO,wBACPA,CADO;AAAA,YACJG,GADI,wBACJA,CADI;;AAEd4I,iBAAS/I,CAAT,GAAaA,GAAb;AACA+I,iBAAS5I,CAAT,GAAaA,GAAb;AACD;;AAED,YAAK4F,QAAL,CAAcgD,QAAd;AACD,KAvIkC;;AAGjC,UAAK3E,KAAL,GAAa;AACX;AACAe,gBAAU,KAFC;;AAIX;AACA0D,eAAS,KALE;;AAOX;AACA7I,SAAG3D,MAAM2J,QAAN,GAAiB3J,MAAM2J,QAAN,CAAehG,CAAhC,GAAoC3D,MAAMmN,eAAN,CAAsBxJ,CARlD;AASXG,SAAG9D,MAAM2J,QAAN,GAAiB3J,MAAM2J,QAAN,CAAe7F,CAAhC,GAAoC9D,MAAMmN,eAAN,CAAsBrJ,CATlD;;AAWX;AACA6I,cAAQ,CAZG,EAYAC,QAAQ,CAZR;;AAcX;AACAQ,oBAAc;AAfH,KAAb;AAHiC;AAoBlC;;;;yCAEoB;AACnB,UAAI,KAAKpN,KAAL,CAAW2J,QAAX,IAAuB,EAAE,KAAK3J,KAAL,CAAWqK,MAAX,IAAqB,KAAKrK,KAAL,CAAW2K,MAAlC,CAA3B,EAAsE;AACpE;AACA0C,gBAAQC,IAAR,CAAa,8FACX,uGADW,GAEX,6BAFF;AAGD;AACF;;;wCAEmB;AAClB;AACA,UAAG,OAAOvI,OAAOwI,UAAd,KAA6B,WAA7B,IAA4C,mBAASlH,WAAT,CAAqB,IAArB,aAAsCtB,OAAOwI,UAA5F,EAAwG;AACtG,aAAK7D,QAAL,CAAc,EAAE0D,cAAc,IAAhB,EAAd;AACD;AACF;;;8CAEyBI,S,eAAmB;AAC3C;AACA,UAAIA,UAAU7D,QAAV,KACC,CAAC,KAAK3J,KAAL,CAAW2J,QAAZ,IACC6D,UAAU7D,QAAV,CAAmBhG,CAAnB,KAAyB,KAAK3D,KAAL,CAAW2J,QAAX,CAAoBhG,CAD9C,IAEC6J,UAAU7D,QAAV,CAAmB7F,CAAnB,KAAyB,KAAK9D,KAAL,CAAW2J,QAAX,CAAoB7F,CAH/C,CAAJ,EAKI;AACF,aAAK4F,QAAL,CAAc,EAAE/F,GAAG6J,UAAU7D,QAAV,CAAmBhG,CAAxB,EAA2BG,GAAG0J,UAAU7D,QAAV,CAAmB7F,CAAjD,EAAd;AACD;AACF;;;2CAEsB;AACrB,WAAK4F,QAAL,CAAc,EAACZ,UAAU,KAAX,EAAd,EADqB,CACa;AACnC;;;qDAqF2B;AAAA;;AAC1B,UAAIqC,QAAQ,EAAZ;AAAA,UAAgBsC,eAAe,IAA/B;;AAEA;AACA,UAAMR,aAAaC,QAAQ,KAAKlN,KAAL,CAAW2J,QAAnB,CAAnB;AACA,UAAMzD,YAAY,CAAC+G,UAAD,IAAe,KAAKlF,KAAL,CAAWe,QAA5C;;AAEA,UAAMa,WAAW,KAAK3J,KAAL,CAAW2J,QAAX,IAAuB,KAAK3J,KAAL,CAAWmN,eAAnD;AACA,UAAMO,gBAAgB;AACpB;AACA/J,WAAG,2BAAS,IAAT,KAAkBuC,SAAlB,GACD,KAAK6B,KAAL,CAAWpE,CADV,GAEDgG,SAAShG,CAJS;;AAMpB;AACAG,WAAG,2BAAS,IAAT,KAAkBoC,SAAlB,GACD,KAAK6B,KAAL,CAAWjE,CADV,GAED6F,SAAS7F;AATS,OAAtB;;AAYA;AACA,UAAI,KAAKiE,KAAL,CAAWqF,YAAf,EAA6B;AAC3BK,uBAAe,gCAAmBC,aAAnB,CAAf;AACD,OAFD,MAEO;AACL;AACA;AACA;AACA;AACAvC,gBAAQ,gCAAmBuC,aAAnB,CAAR;AACD;;AA7ByB,mBAmCtB,KAAK1N,KAnCiB;AAAA,UAgCxB2N,gBAhCwB,UAgCxBA,gBAhCwB;AAAA,UAiCxBC,wBAjCwB,UAiCxBA,wBAjCwB;AAAA,UAkCxBC,uBAlCwB,UAkCxBA,uBAlCwB;;;AAqC1B,UAAM3C,WAAW,gBAAMF,QAAN,CAAeC,IAAf,CAAoB,KAAKjL,KAAL,CAAWkL,QAA/B,CAAjB;;AAEA;AACA,UAAM9F,YAAY,0BAAY8F,SAASlL,KAAT,CAAeoF,SAAf,IAA4B,EAAxC,EAA6CuI,gBAA7C,kDACfC,wBADe,EACY,KAAK7F,KAAL,CAAWe,QADvB,gCAEf+E,uBAFe,EAEW,KAAK9F,KAAL,CAAWyE,OAFtB,gBAAlB;;AAKA;AACA;AACA,aACE;AAAA;AAAA,qBAAmB,KAAKxM,KAAxB,IAA+B,SAAS,KAAKsM,WAA7C,EAA0D,QAAQ,KAAKjC,MAAvE,EAA+E,QAAQ,KAAK0C,UAA5F;AACG,wBAAMhC,YAAN,CAAmBG,QAAnB,EAA6B;AAC5B9F,qBAAWA,SADiB;AAE5B+F,8BAAWD,SAASlL,KAAT,CAAemL,KAA1B,EAAoCA,KAApC,CAF4B;AAG5BW,qBAAW2B;AAHiB,SAA7B;AADH,OADF;AASD;;;;EAnUoC,gBAAMrC,S;;AAAxBa,S,CAEZZ,W,GAAc,W;AAFFY,S,CAIZX,S,gBAEF,wBAAcA,S;;AAEjB;;;;;;;;;;;;;AAaA3D,QAAM,oBAAUmG,KAAV,CAAgB,CAAC,MAAD,EAAS,GAAT,EAAc,GAAd,EAAmB,MAAnB,CAAhB,C;;AAEN;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA3H,UAAQ,oBAAU4H,SAAV,CAAoB,CAC1B,oBAAUC,KAAV,CAAgB;AACdxK,UAAM,oBAAUoI,MADF;AAEd5E,WAAO,oBAAU4E,MAFH;AAGdnI,SAAK,oBAAUmI,MAHD;AAId1E,YAAQ,oBAAU0E;AAJJ,GAAhB,CAD0B,EAO1B,oBAAUC,MAPgB,EAQ1B,oBAAUiC,KAAV,CAAgB,CAAC,KAAD,CAAhB,CAR0B,CAApB,C;;AAWRH,oBAAkB,oBAAU9B,M;AAC5B+B,4BAA0B,oBAAU/B,M;AACpCgC,2BAAyB,oBAAUhC,M;;AAEnC;;;;;;;;;;;;;;;;;AAiBAsB,mBAAiB,oBAAUa,KAAV,CAAgB;AAC/BrK,OAAG,oBAAUiI,MADkB;AAE/B9H,OAAG,oBAAU8H;AAFkB,GAAhB,C;;AAKjB;;;;;;;;;;;;;;;;;;;;AAoBAjC,YAAU,oBAAUqE,KAAV,CAAgB;AACxBrK,OAAG,oBAAUiI,MADW;AAExB9H,OAAG,oBAAU8H;AAFW,GAAhB,C;;AAKV;;;AAGAxG,6B;AACA+F,yB;AACAW;;AApHiBG,S,CAuHZF,Y,gBACF,wBAAcA,Y;AACjBpE,QAAM,M;AACNxB,UAAQ,K;AACRwH,oBAAkB,iB;AAClBC,4BAA0B,0B;AAC1BC,2BAAyB,yB;AACzBV,mBAAiB,EAACxJ,GAAG,CAAJ,EAAOG,GAAG,CAAV,E;AACjB6F,YAAU;;kBA/HOsC,S;;;;;;;ACrCrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,6BAA6B;AAC7B,QAAQ;AACR;AACA;AACA;AACA;AACA,+BAA+B,KAAK;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,4BAA4B;AAC5B,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,gCAAgC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,gCAAgC;AACrD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;AC7hBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,kCAAkC;AAClC;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,sBAAsB;AACtC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;ACzFA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gGAAgG;AAChG;AACA,SAAS;AACT;AACA;AACA,gGAAgG;AAChG;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB;;AAEhB;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,GAAG;AAAA;AACH,EAAE;AACF;AACA;AACA,CAAC;;;;;;;;;;;;;QC7CegC,S,GAAAA,S;QAiBAC,kB,GAAAA,kB;QAIAC,oB,GAAAA,oB;AAtBhB,IAAMC,WAAW,CAAC,KAAD,EAAQ,QAAR,EAAkB,GAAlB,EAAuB,IAAvB,CAAjB;AACO,SAASH,SAAT,gBAAqD;AAAA,MAAlCI,IAAkC,oFAArB,WAAqB;;AAC1D;AACA;AACA;AACA,MAAI,OAAOtJ,MAAP,KAAkB,WAAlB,IAAiC,OAAOA,OAAOyF,QAAd,KAA2B,WAAhE,EAA6E,OAAO,EAAP;;AAE7E,MAAMW,QAAQpG,OAAOyF,QAAP,CAAgB8D,eAAhB,CAAgCnD,KAA9C;;AAEA,MAAIkD,QAAQlD,KAAZ,EAAmB,OAAO,EAAP;;AAEnB,OAAK,IAAI/L,IAAI,CAAb,EAAgBA,IAAIgP,SAAS/O,MAA7B,EAAqCD,GAArC,EAA0C;AACxC,QAAI8O,mBAAmBG,IAAnB,EAAyBD,SAAShP,CAAT,CAAzB,KAAyC+L,KAA7C,EAAoD,OAAOiD,SAAShP,CAAT,CAAP;AACrD;;AAED,SAAO,EAAP;AACD;;AAEM,SAAS8O,kBAAT,CAA4BG,IAA5B,eAA0CE,MAA1C,4BAAkE;AACvE,SAAOA,cAAYA,MAAZ,GAAqBC,iBAAiBH,IAAjB,CAArB,GAAgDA,IAAvD;AACD;;AAEM,SAASF,oBAAT,CAA8BE,IAA9B,eAA4CE,MAA5C,4BAAoE;AACzE,SAAOA,eAAaA,OAAOE,WAAP,EAAb,SAAqCJ,IAArC,GAA8CA,IAArD;AACD;;AAED,SAASG,gBAAT,CAA0BE,GAA1B,4BAA+C;AAC7C,MAAIC,MAAM,EAAV;AACA,MAAIC,mBAAmB,IAAvB;AACA,OAAK,IAAIxP,IAAI,CAAb,EAAgBA,IAAIsP,IAAIrP,MAAxB,EAAgCD,GAAhC,EAAqC;AACnC,QAAIwP,gBAAJ,EAAsB;AACpBD,aAAOD,IAAItP,CAAJ,EAAOyP,WAAP,EAAP;AACAD,yBAAmB,KAAnB;AACD,KAHD,MAGO,IAAIF,IAAItP,CAAJ,MAAW,GAAf,EAAoB;AACzBwP,yBAAmB,IAAnB;AACD,KAFM,MAEA;AACLD,aAAOD,IAAItP,CAAJ,CAAP;AACD;AACF;AACD,SAAOuP,GAAP;AACD;;AAED;AACA;AACA;kBACeV,W;;;;;;AC9Cf;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU","file":"./dist/react-draggable.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react-dom\"), require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react-dom\", \"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactDraggable\"] = factory(require(\"react-dom\"), require(\"react\"));\n\telse\n\t\troot[\"ReactDraggable\"] = factory(root[\"ReactDOM\"], root[\"React\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_4__, __WEBPACK_EXTERNAL_MODULE_6__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \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// 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 = 12);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 33f74c03cddcdadf8186","// @flow\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nexport function findInArray(array: Array | TouchList, callback: Function): any {\n for (let i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\n\nexport function isFunction(func: any): boolean {\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\nexport function isNum(num: any): boolean {\n return typeof num === 'number' && !isNaN(num);\n}\n\nexport function int(a: string): number {\n return parseInt(a, 10);\n}\n\nexport function dontSetMe(props: Object, propName: string, componentName: string) {\n if (props[propName]) {\n return new Error(`Invalid prop ${propName} passed to ${componentName} - do not set this, set it on the child.`);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/shims.js","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/emptyFunction.js\n// module id = 1\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/invariant.js\n// module id = 2\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/lib/ReactPropTypesSecret.js\n// module id = 3\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_4__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react-dom\",\"commonjs2\":\"react-dom\",\"amd\":\"react-dom\",\"root\":\"ReactDOM\"}\n// module id = 4\n// module chunks = 0","// @flow\nimport {findInArray, isFunction, int} from './shims';\nimport browserPrefix, {browserPrefixToKey} from './getPrefix';\n\nimport type {ControlPosition, MouseTouchEvent} from './types';\n\nlet matchesSelectorFunc = '';\nexport function matchesSelector(el: Node, selector: string): boolean {\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = findInArray([\n 'matches',\n 'webkitMatchesSelector',\n 'mozMatchesSelector',\n 'msMatchesSelector',\n 'oMatchesSelector'\n ], function(method){\n // $FlowIgnore: Doesn't think elements are indexable\n return isFunction(el[method]);\n });\n }\n\n // Might not be found entirely (not an Element?) - in that case, bail\n // $FlowIgnore: Doesn't think elements are indexable\n if (!isFunction(el[matchesSelectorFunc])) return false;\n\n // $FlowIgnore: Doesn't think elements are indexable\n return el[matchesSelectorFunc](selector);\n}\n\n// Works up the tree to the draggable itself attempting to match selector.\nexport function matchesSelectorAndParentsTo(el: Node, selector: string, baseNode: Node): boolean {\n let node = el;\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n node = node.parentNode;\n } while (node);\n\n return false;\n}\n\nexport function addEvent(el: ?Node, event: string, handler: Function): void {\n if (!el) { return; }\n if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else if (el.addEventListener) {\n el.addEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\n\nexport function removeEvent(el: ?Node, event: string, handler: Function): void {\n if (!el) { return; }\n if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else if (el.removeEventListener) {\n el.removeEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\n\nexport function outerHeight(node: HTMLElement): number {\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += int(computedStyle.borderTopWidth);\n height += int(computedStyle.borderBottomWidth);\n return height;\n}\n\nexport function outerWidth(node: HTMLElement): number {\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += int(computedStyle.borderLeftWidth);\n width += int(computedStyle.borderRightWidth);\n return width;\n}\nexport function innerHeight(node: HTMLElement): number {\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= int(computedStyle.paddingTop);\n height -= int(computedStyle.paddingBottom);\n return height;\n}\n\nexport function innerWidth(node: HTMLElement): number {\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= int(computedStyle.paddingLeft);\n width -= int(computedStyle.paddingRight);\n return width;\n}\n\n// Get from offsetParent\nexport function offsetXYFromParent(evt: {clientX: number, clientY: number}, offsetParent: HTMLElement): ControlPosition {\n const isBody = offsetParent === offsetParent.ownerDocument.body;\n const offsetParentRect = isBody ? {left: 0, top: 0} : offsetParent.getBoundingClientRect();\n\n const x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;\n const y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;\n\n return {x, y};\n}\n\nexport function createCSSTransform({x, y}: {x: number, y: number}): Object {\n // Replace unitless items with px\n return {[browserPrefixToKey('transform', browserPrefix)]: 'translate(' + x + 'px,' + y + 'px)'};\n}\n\nexport function createSVGTransform({x, y}: {x: number, y: number}): string {\n return 'translate(' + x + ',' + y + ')';\n}\n\nexport function getTouch(e: MouseTouchEvent, identifier: number): ?{clientX: number, clientY: number} {\n return (e.targetTouches && findInArray(e.targetTouches, t => identifier === t.identifier)) ||\n (e.changedTouches && findInArray(e.changedTouches, t => identifier === t.identifier));\n}\n\nexport function getTouchIdentifier(e: MouseTouchEvent): ?number {\n if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n}\n\n// User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n\n// Note we're passing `document` b/c we could be iframed\nexport function addUserSelectStyles(doc: ?Document) {\n if (!doc) return;\n let styleEl = doc.getElementById('react-draggable-style-el');\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {background: transparent;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {background: transparent;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\n\nexport function removeUserSelectStyles(doc: ?Document) {\n try {\n if (doc && doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection');\n window.getSelection().removeAllRanges(); // remove selection caused by scroll\n } catch (e) {\n // probably IE\n }\n}\n\nexport function styleHacks(childStyle: Object = {}): Object {\n // Workaround IE pointer events; see #51\n // https://github.com/mzabriskie/react-draggable/issues/51#issuecomment-103488278\n return {\n touchAction: 'none',\n ...childStyle\n };\n}\n\nexport function addClassName(el: HTMLElement, className: string) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`))) {\n el.className += ` ${className}`;\n }\n }\n}\n\nexport function removeClassName(el: HTMLElement, className: string) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`, 'g'), '');\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/domFns.js","module.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}\n// module id = 6\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/index.js\n// module id = 7\n// module chunks = 0","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/warning.js\n// module id = 8\n// module chunks = 0","// @flow\nimport {isNum, int} from './shims';\nimport ReactDOM from 'react-dom';\nimport {getTouch, innerWidth, innerHeight, offsetXYFromParent, outerWidth, outerHeight} from './domFns';\n\nimport type Draggable from '../Draggable';\nimport type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';\nimport type DraggableCore from '../DraggableCore';\n\nexport function getBoundPosition(draggable: Draggable, x: number, y: number): [number, number] {\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y];\n\n // Clone new bounds\n let {bounds} = draggable.props;\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n const node = findDOMNode(draggable);\n\n if (typeof bounds === 'string') {\n const {ownerDocument} = node;\n const ownerWindow = ownerDocument.defaultView;\n let boundNode;\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n if (!(boundNode instanceof HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n const nodeStyle = ownerWindow.getComputedStyle(node);\n const boundNodeStyle = ownerWindow.getComputedStyle(boundNode);\n // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n bounds = {\n left: -node.offsetLeft + int(boundNodeStyle.paddingLeft) + int(nodeStyle.marginLeft),\n top: -node.offsetTop + int(boundNodeStyle.paddingTop) + int(nodeStyle.marginTop),\n right: innerWidth(boundNode) - outerWidth(node) - node.offsetLeft +\n int(boundNodeStyle.paddingRight) - int(nodeStyle.marginRight),\n bottom: innerHeight(boundNode) - outerHeight(node) - node.offsetTop +\n int(boundNodeStyle.paddingBottom) - int(nodeStyle.marginBottom)\n };\n }\n\n // Keep x and y below right and bottom limits...\n if (isNum(bounds.right)) x = Math.min(x, bounds.right);\n if (isNum(bounds.bottom)) y = Math.min(y, bounds.bottom);\n\n // But above left and top limits.\n if (isNum(bounds.left)) x = Math.max(x, bounds.left);\n if (isNum(bounds.top)) y = Math.max(y, bounds.top);\n\n return [x, y];\n}\n\nexport function snapToGrid(grid: [number, number], pendingX: number, pendingY: number): [number, number] {\n const x = Math.round(pendingX / grid[0]) * grid[0];\n const y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\n\nexport function canDragX(draggable: Draggable): boolean {\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\n\nexport function canDragY(draggable: Draggable): boolean {\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n}\n\n// Get {x, y} positions from event.\nexport function getControlPosition(e: MouseTouchEvent, touchIdentifier: ?number, draggableCore: DraggableCore): ?ControlPosition {\n const touchObj = typeof touchIdentifier === 'number' ? getTouch(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n const node = findDOMNode(draggableCore);\n // User can provide an offsetParent if desired.\n const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return offsetXYFromParent(touchObj || e, offsetParent);\n}\n\n// Create an data object exposed by 's events\nexport function createCoreData(draggable: DraggableCore, x: number, y: number): DraggableData {\n const state = draggable.state;\n const isStart = !isNum(state.lastX);\n const node = findDOMNode(draggable);\n\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node,\n deltaX: 0, deltaY: 0,\n lastX: x, lastY: y,\n x, y,\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node,\n deltaX: x - state.lastX, deltaY: y - state.lastY,\n lastX: state.lastX, lastY: state.lastY,\n x, y,\n };\n }\n}\n\n// Create an data exposed by 's events\nexport function createDraggableData(draggable: Draggable, coreData: DraggableData): DraggableData {\n return {\n node: coreData.node,\n x: draggable.state.x + coreData.deltaX,\n y: draggable.state.y + coreData.deltaY,\n deltaX: coreData.deltaX,\n deltaY: coreData.deltaY,\n lastX: draggable.state.x,\n lastY: draggable.state.y\n };\n}\n\n// A lot faster than stringify/parse\nfunction cloneBounds(bounds: Bounds): Bounds {\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\n\nfunction findDOMNode(draggable: Draggable | DraggableCore): HTMLElement {\n const node = ReactDOM.findDOMNode(draggable);\n if (!node) {\n throw new Error(': Unmounted during event!');\n }\n // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n return node;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/positionFns.js","// @flow\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport {matchesSelectorAndParentsTo, addEvent, removeEvent, addUserSelectStyles, getTouchIdentifier,\n removeUserSelectStyles, styleHacks} from './utils/domFns';\nimport {createCoreData, getControlPosition, snapToGrid} from './utils/positionFns';\nimport {dontSetMe} from './utils/shims';\nimport log from './utils/log';\n\nimport type {EventHandler, MouseTouchEvent} from './utils/types';\nimport type {Element as ReactElement} from 'react';\n\n// Simple abstraction for dragging events names.\nconst eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n};\n\n// Default to mouse events.\nlet dragEventFor = eventsFor.mouse;\n\ntype DraggableCoreState = {\n dragging: boolean,\n lastX: number,\n lastY: number,\n touchIdentifier: ?number\n};\n\nexport type DraggableBounds = {\n left: number,\n right: number,\n top: number,\n bottom: number,\n};\n\nexport type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n};\n\nexport type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void;\n\nexport type ControlPosition = {x: number, y: number};\n\nexport type DraggableCoreProps = {\n allowAnyClick: boolean,\n cancel: string,\n children: ReactElement,\n disabled: boolean,\n enableUserSelectHack: boolean,\n offsetParent: HTMLElement,\n grid: [number, number],\n handle: string,\n onStart: DraggableEventHandler,\n onDrag: DraggableEventHandler,\n onStop: DraggableEventHandler,\n onMouseDown: (e: MouseEvent) => void,\n};\n\n//\n// Define .\n//\n// is for advanced usage of . It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\n\nexport default class DraggableCore extends React.Component {\n\n static displayName = 'DraggableCore';\n\n static propTypes = {\n /**\n * `allowAnyClick` allows dragging using any mouse button.\n * By default, we only accept the left button.\n *\n * Defaults to `false`.\n */\n allowAnyClick: PropTypes.bool,\n\n /**\n * `disabled`, if true, stops the from dragging. All handlers,\n * with the exception of `onMouseDown`, will not fire.\n */\n disabled: PropTypes.bool,\n\n /**\n * By default, we add 'user-select:none' attributes to the document body\n * to prevent ugly text selection during drag. If this is causing problems\n * for your app, set this to `false`.\n */\n enableUserSelectHack: PropTypes.bool,\n\n /**\n * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function(props: DraggableCoreProps, propName: $Keys) {\n if (process.browser === true && props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n }\n },\n\n /**\n * `grid` specifies the x and y that dragging should snap to.\n */\n grid: PropTypes.arrayOf(PropTypes.number),\n\n /**\n * `handle` specifies a selector to be used as the handle that initiates drag.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
\n *
Click me to drag
\n *
This is some other content
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n handle: PropTypes.string,\n\n /**\n * `cancel` specifies a selector to be used to prevent drag initialization.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return(\n * \n *
\n *
You can't drag from here
\n *
Dragging here works fine
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n cancel: PropTypes.string,\n\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: PropTypes.func,\n\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: PropTypes.func,\n\n /**\n * Called when dragging stops.\n * If this function returns the boolean false, the drag will remain active.\n */\n onStop: PropTypes.func,\n\n /**\n * A workaround option which can be passed if onMouseDown needs to be accessed,\n * since it'll always be blocked (as there is internal use of onMouseDown)\n */\n onMouseDown: PropTypes.func,\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: dontSetMe,\n style: dontSetMe,\n transform: dontSetMe\n };\n\n static defaultProps = {\n allowAnyClick: false, // by default only accept left click\n cancel: null,\n disabled: false,\n enableUserSelectHack: true,\n offsetParent: null,\n handle: null,\n grid: null,\n transform: null,\n onStart: function(){},\n onDrag: function(){},\n onStop: function(){},\n onMouseDown: function(){}\n };\n\n state = {\n dragging: false,\n // Used while dragging to determine deltas.\n lastX: NaN, lastY: NaN,\n touchIdentifier: null\n };\n\n componentWillUnmount() {\n // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n const thisNode = ReactDOM.findDOMNode(this);\n if (thisNode) {\n const {ownerDocument} = thisNode;\n removeEvent(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n removeEvent(ownerDocument, eventsFor.touch.move, this.handleDrag);\n removeEvent(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n removeEvent(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n if (this.props.enableUserSelectHack) removeUserSelectStyles(ownerDocument);\n }\n }\n\n handleDragStart: EventHandler = (e) => {\n // Make it possible to attach event handlers on top of this one.\n this.props.onMouseDown(e);\n\n // Only accept left-clicks.\n if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false;\n\n // Get nodes. Be sure to grab relative document (could be iframed)\n const thisNode = ReactDOM.findDOMNode(this);\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error(' not mounted on DragStart!');\n }\n const {ownerDocument} = thisNode;\n\n // Short circuit if handle or cancel prop was provided and selector doesn't match.\n if (this.props.disabled ||\n (!(e.target instanceof ownerDocument.defaultView.Node)) ||\n (this.props.handle && !matchesSelectorAndParentsTo(e.target, this.props.handle, thisNode)) ||\n (this.props.cancel && matchesSelectorAndParentsTo(e.target, this.props.cancel, thisNode))) {\n return;\n }\n\n // Set touch identifier in component state if this is a touch event. This allows us to\n // distinguish between individual touches on multitouch screens by identifying which\n // touchpoint was set to this element.\n const touchIdentifier = getTouchIdentifier(e);\n this.setState({touchIdentifier});\n\n // Get the current drag point from the event. This is used as the offset.\n const position = getControlPosition(e, touchIdentifier, this);\n if (position == null) return; // not possible but satisfies flow\n const {x, y} = position;\n\n // Create an event object with all the data parents need to make a decision here.\n const coreEvent = createCoreData(this, x, y);\n\n log('DraggableCore: handleDragStart: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, cancel.\n log('calling', this.props.onStart);\n const shouldUpdate = this.props.onStart(e, coreEvent);\n if (shouldUpdate === false) return;\n\n // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n if (this.props.enableUserSelectHack) addUserSelectStyles(ownerDocument);\n\n // Initiate dragging. Set the current x and y as offsets\n // so we know how much we've moved during the drag. This allows us\n // to drag elements around even if they have been moved, without issue.\n this.setState({\n dragging: true,\n\n lastX: x,\n lastY: y\n });\n\n // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n // this element. We use different events depending on whether or not we have detected that this\n // is a touch-capable device.\n addEvent(ownerDocument, dragEventFor.move, this.handleDrag);\n addEvent(ownerDocument, dragEventFor.stop, this.handleDragStop);\n };\n\n handleDrag: EventHandler = (e) => {\n\n // Prevent scrolling on mobile devices, like ipad/iphone.\n if (e.type === 'touchmove') e.preventDefault();\n\n // Get the current drag point from the event. This is used as the offset.\n const position = getControlPosition(e, this.state.touchIdentifier, this);\n if (position == null) return;\n let {x, y} = position;\n\n // Snap to grid if prop has been provided\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.state.lastX, deltaY = y - this.state.lastY;\n [deltaX, deltaY] = snapToGrid(this.props.grid, deltaX, deltaY);\n if (!deltaX && !deltaY) return; // skip useless drag\n x = this.state.lastX + deltaX, y = this.state.lastY + deltaY;\n }\n\n const coreEvent = createCoreData(this, x, y);\n\n log('DraggableCore: handleDrag: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, trigger end.\n const shouldUpdate = this.props.onDrag(e, coreEvent);\n if (shouldUpdate === false) {\n try {\n // $FlowIgnore\n this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n const event = ((document.createEvent('MouseEvents'): any): MouseTouchEvent);\n // I see why this insanity was deprecated\n // $FlowIgnore\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n this.handleDragStop(event);\n }\n return;\n }\n\n this.setState({\n lastX: x,\n lastY: y\n });\n };\n\n handleDragStop: EventHandler = (e) => {\n if (!this.state.dragging) return;\n\n const position = getControlPosition(e, this.state.touchIdentifier, this);\n if (position == null) return;\n const {x, y} = position;\n const coreEvent = createCoreData(this, x, y);\n\n const thisNode = ReactDOM.findDOMNode(this);\n if (thisNode) {\n // Remove user-select hack\n if (this.props.enableUserSelectHack) removeUserSelectStyles(thisNode.ownerDocument);\n }\n\n log('DraggableCore: handleDragStop: %j', coreEvent);\n\n // Reset the el.\n this.setState({\n dragging: false,\n lastX: NaN,\n lastY: NaN\n });\n\n // Call event handler\n this.props.onStop(e, coreEvent);\n\n if (thisNode) {\n // Remove event handlers\n log('DraggableCore: Removing handlers');\n removeEvent(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);\n removeEvent(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop);\n }\n };\n\n onMouseDown: EventHandler = (e) => {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return this.handleDragStart(e);\n };\n\n onMouseUp: EventHandler = (e) => {\n dragEventFor = eventsFor.mouse;\n\n return this.handleDragStop(e);\n };\n\n // Same as onMouseDown (start drag), but now consider this a touch device.\n onTouchStart: EventHandler = (e) => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n\n return this.handleDragStart(e);\n };\n\n onTouchEnd: EventHandler = (e) => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n\n return this.handleDragStop(e);\n };\n\n render() {\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return React.cloneElement(React.Children.only(this.props.children), {\n style: styleHacks(this.props.children.props.style),\n\n // Note: mouseMove handler is attached to document so it will still function\n // when the user drags quickly and leaves the bounds of the element.\n onMouseDown: this.onMouseDown,\n onTouchStart: this.onTouchStart,\n onMouseUp: this.onMouseUp,\n onTouchEnd: this.onTouchEnd\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/DraggableCore.js","// @flow\n/*eslint no-console:0*/\nexport default function log(...args: any) {\n if (process.env.DRAGGABLE_DEBUG) console.log(...args);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/log.js","var Draggable = require('./lib/Draggable').default;\n\n// Previous versions of this lib exported as the root export. As to not break\n// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = require('./lib/DraggableCore').default;\n\n\n\n// WEBPACK FOOTER //\n// ./index.js","// @flow\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport {createCSSTransform, createSVGTransform} from './utils/domFns';\nimport {canDragX, canDragY, createDraggableData, getBoundPosition} from './utils/positionFns';\nimport {dontSetMe} from './utils/shims';\nimport DraggableCore from './DraggableCore';\nimport type {ControlPosition, DraggableBounds, DraggableCoreProps} from './DraggableCore';\nimport log from './utils/log';\nimport type {DraggableEventHandler} from './utils/types';\nimport type {Element as ReactElement} from 'react';\n\ntype DraggableState = {\n dragging: boolean,\n dragged: boolean,\n x: number, y: number,\n slackX: number, slackY: number,\n isElementSVG: boolean\n};\n\nexport type DraggableProps = {\n ...$Exact,\n axis: 'both' | 'x' | 'y' | 'none',\n bounds: DraggableBounds | string | false,\n defaultClassName: string,\n defaultClassNameDragging: string,\n defaultClassNameDragged: string,\n defaultPosition: ControlPosition,\n position: ControlPosition,\n};\n\n//\n// Define \n//\n\nexport default class Draggable extends React.Component {\n\n static displayName = 'Draggable';\n\n static propTypes = {\n // Accepts all props accepts.\n ...DraggableCore.propTypes,\n\n /**\n * `axis` determines which axis the draggable can move.\n *\n * Note that all callbacks will still return data as normal. This only\n * controls flushing to the DOM.\n *\n * 'both' allows movement horizontally and vertically.\n * 'x' limits movement to horizontal axis.\n * 'y' limits movement to vertical axis.\n * 'none' limits all movement.\n *\n * Defaults to 'both'.\n */\n axis: PropTypes.oneOf(['both', 'x', 'y', 'none']),\n\n /**\n * `bounds` determines the range of movement available to the element.\n * Available values are:\n *\n * 'parent' restricts movement within the Draggable's parent node.\n *\n * Alternatively, pass an object with the following properties, all of which are optional:\n *\n * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n *\n * All values are in px.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
Content
\n *
\n * );\n * }\n * });\n * ```\n */\n bounds: PropTypes.oneOfType([\n PropTypes.shape({\n left: PropTypes.number,\n right: PropTypes.number,\n top: PropTypes.number,\n bottom: PropTypes.number\n }),\n PropTypes.string,\n PropTypes.oneOf([false])\n ]),\n\n defaultClassName: PropTypes.string,\n defaultClassNameDragging: PropTypes.string,\n defaultClassNameDragged: PropTypes.string,\n\n /**\n * `defaultPosition` specifies the x and y that the dragged item should start at\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n defaultPosition: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }),\n\n /**\n * `position`, if present, defines the current position of the element.\n *\n * This is similar to how form elements in React work - if no `position` is supplied, the component\n * is uncontrolled.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n position: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }),\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: dontSetMe,\n style: dontSetMe,\n transform: dontSetMe\n };\n\n static defaultProps = {\n ...DraggableCore.defaultProps,\n axis: 'both',\n bounds: false,\n defaultClassName: 'react-draggable',\n defaultClassNameDragging: 'react-draggable-dragging',\n defaultClassNameDragged: 'react-draggable-dragged',\n defaultPosition: {x: 0, y: 0},\n position: null\n };\n\n constructor(props: DraggableProps) {\n super(props);\n\n this.state = {\n // Whether or not we are currently dragging.\n dragging: false,\n\n // Whether or not we have been dragged before.\n dragged: false,\n\n // Current transform x and y.\n x: props.position ? props.position.x : props.defaultPosition.x,\n y: props.position ? props.position.y : props.defaultPosition.y,\n\n // Used for compensating for out-of-bounds drags\n slackX: 0, slackY: 0,\n\n // Can only determine if SVG after mounting\n isElementSVG: false\n };\n }\n\n componentWillMount() {\n if (this.props.position && !(this.props.onDrag || this.props.onStop)) {\n // eslint-disable-next-line\n console.warn('A `position` was applied to this , without drag handlers. This will make this ' +\n 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' +\n '`position` of this element.');\n }\n }\n\n componentDidMount() {\n // Check to see if the element passed is an instanceof SVGElement\n if(typeof window.SVGElement !== 'undefined' && ReactDOM.findDOMNode(this) instanceof window.SVGElement) {\n this.setState({ isElementSVG: true });\n }\n }\n\n componentWillReceiveProps(nextProps: Object) {\n // Set x/y if position has changed\n if (nextProps.position &&\n (!this.props.position ||\n nextProps.position.x !== this.props.position.x ||\n nextProps.position.y !== this.props.position.y\n )\n ) {\n this.setState({ x: nextProps.position.x, y: nextProps.position.y });\n }\n }\n\n componentWillUnmount() {\n this.setState({dragging: false}); // prevents invariant if unmounted while dragging\n }\n\n onDragStart: DraggableEventHandler = (e, coreData) => {\n log('Draggable: onDragStart: %j', coreData);\n\n // Short-circuit if user's callback killed it.\n const shouldStart = this.props.onStart(e, createDraggableData(this, coreData));\n // Kills start event on core as well, so move handlers are never bound.\n if (shouldStart === false) return false;\n\n this.setState({dragging: true, dragged: true});\n };\n\n onDrag: DraggableEventHandler = (e, coreData) => {\n if (!this.state.dragging) return false;\n log('Draggable: onDrag: %j', coreData);\n\n const uiData = createDraggableData(this, coreData);\n\n const newState: $Shape = {\n x: uiData.x,\n y: uiData.y\n };\n\n // Keep within bounds.\n if (this.props.bounds) {\n // Save original x and y.\n const {x, y} = newState;\n\n // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n newState.x += this.state.slackX;\n newState.y += this.state.slackY;\n\n // Get bound position. This will ceil/floor the x and y within the boundaries.\n const [newStateX, newStateY] = getBoundPosition(this, newState.x, newState.y);\n newState.x = newStateX;\n newState.y = newStateY;\n\n // Recalculate slack by noting how much was shaved by the boundPosition handler.\n newState.slackX = this.state.slackX + (x - newState.x);\n newState.slackY = this.state.slackY + (y - newState.y);\n\n // Update the event we fire to reflect what really happened after bounds took effect.\n uiData.x = newState.x;\n uiData.y = newState.y;\n uiData.deltaX = newState.x - this.state.x;\n uiData.deltaY = newState.y - this.state.y;\n }\n\n // Short-circuit if user's callback killed it.\n const shouldUpdate = this.props.onDrag(e, uiData);\n if (shouldUpdate === false) return false;\n\n this.setState(newState);\n };\n\n onDragStop: DraggableEventHandler = (e, coreData) => {\n if (!this.state.dragging) return false;\n\n // Short-circuit if user's callback killed it.\n const shouldStop = this.props.onStop(e, createDraggableData(this, coreData));\n if (shouldStop === false) return false;\n\n log('Draggable: onDragStop: %j', coreData);\n\n const newState: $Shape = {\n dragging: false,\n slackX: 0,\n slackY: 0\n };\n\n // If this is a controlled component, the result of this operation will be to\n // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n const controlled = Boolean(this.props.position);\n if (controlled) {\n const {x, y} = this.props.position;\n newState.x = x;\n newState.y = y;\n }\n\n this.setState(newState);\n };\n\n render(): ReactElement {\n let style = {}, svgTransform = null;\n\n // If this is controlled, we don't want to move it - unless it's dragging.\n const controlled = Boolean(this.props.position);\n const draggable = !controlled || this.state.dragging;\n\n const position = this.props.position || this.props.defaultPosition;\n const transformOpts = {\n // Set left if horizontal drag is enabled\n x: canDragX(this) && draggable ?\n this.state.x :\n position.x,\n\n // Set top if vertical drag is enabled\n y: canDragY(this) && draggable ?\n this.state.y :\n position.y\n };\n\n // If this element was SVG, we use the `transform` attribute.\n if (this.state.isElementSVG) {\n svgTransform = createSVGTransform(transformOpts);\n } else {\n // Add a CSS transform to move the element around. This allows us to move the element around\n // without worrying about whether or not it is relatively or absolutely positioned.\n // If the item you are dragging already has a transform set, wrap it in a so \n // has a clean slate.\n style = createCSSTransform(transformOpts);\n }\n\n const {\n defaultClassName,\n defaultClassNameDragging,\n defaultClassNameDragged\n } = this.props;\n\n const children = React.Children.only(this.props.children);\n\n // Mark with class while dragging\n const className = classNames((children.props.className || ''), defaultClassName, {\n [defaultClassNameDragging]: this.state.dragging,\n [defaultClassNameDragged]: this.state.dragged\n });\n\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return (\n \n {React.cloneElement(children, {\n className: className,\n style: {...children.props.style, ...style},\n transform: svgTransform\n })}\n \n );\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/Draggable.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n warning(\n false,\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `%s` prop on `%s`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n propFullName,\n componentName\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n warning(\n false,\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received %s at index %s.',\n getPostfixForTypeWarning(checker),\n i\n );\n return emptyFunction.thatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/factoryWithTypeCheckers.js\n// module id = 14\n// module chunks = 0","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/object-assign/index.js\n// module id = 15\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== 'production') {\n var invariant = require('fbjs/lib/invariant');\n var warning = require('fbjs/lib/warning');\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/checkPropTypes.js\n// module id = 16\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/factoryWithThrowingShims.js\n// module id = 17\n// module chunks = 0","/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/classnames/index.js\n// module id = 18\n// module chunks = 0","// @flow\nconst prefixes = ['Moz', 'Webkit', 'O', 'ms'];\nexport function getPrefix(prop: string='transform'): string {\n // Checking specifically for 'window.document' is for pseudo-browser server-side\n // environments that define 'window' as the global context.\n // E.g. React-rails (see https://github.com/reactjs/react-rails/pull/84)\n if (typeof window === 'undefined' || typeof window.document === 'undefined') return '';\n\n const style = window.document.documentElement.style;\n\n if (prop in style) return '';\n\n for (let i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n\n return '';\n}\n\nexport function browserPrefixToKey(prop: string, prefix: string): string {\n return prefix ? `${prefix}${kebabToTitleCase(prop)}` : prop;\n}\n\nexport function browserPrefixToStyle(prop: string, prefix: string): string {\n return prefix ? `-${prefix.toLowerCase()}-${prop}` : prop;\n}\n\nfunction kebabToTitleCase(str: string): string {\n let out = '';\n let shouldCapitalize = true;\n for (let i = 0; i < str.length; i++) {\n if (shouldCapitalize) {\n out += str[i].toUpperCase();\n shouldCapitalize = false;\n } else if (str[i] === '-') {\n shouldCapitalize = true;\n } else {\n out += str[i];\n }\n }\n return out;\n}\n\n// Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\nexport default getPrefix();\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/getPrefix.js","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/process/browser.js\n// module id = 20\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/webapp/libs/react-draggable/react-draggable.min.js b/webapp/libs/react-draggable/react-draggable.min.js new file mode 100644 index 000000000..7e8b9bac5 --- /dev/null +++ b/webapp/libs/react-draggable/react-draggable.min.js @@ -0,0 +1 @@ +!function(root,factory){"object"==typeof exports&&"object"==typeof module?module.exports=factory(require("react-dom"),require("react")):"function"==typeof define&&define.amd?define(["react-dom","react"],factory):"object"==typeof exports?exports.ReactDraggable=factory(require("react-dom"),require("react")):root.ReactDraggable=factory(root.ReactDOM,root.React)}(this,function(__WEBPACK_EXTERNAL_MODULE_4__,__WEBPACK_EXTERNAL_MODULE_6__){return function(modules){function __webpack_require__(moduleId){if(installedModules[moduleId])return installedModules[moduleId].exports;var module=installedModules[moduleId]={i:moduleId,l:!1,exports:{}};return modules[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.l=!0,module.exports}var installedModules={};return __webpack_require__.m=modules,__webpack_require__.c=installedModules,__webpack_require__.d=function(exports,name,getter){__webpack_require__.o(exports,name)||Object.defineProperty(exports,name,{configurable:!1,enumerable:!0,get:getter})},__webpack_require__.n=function(module){var getter=module&&module.__esModule?function(){return module.default}:function(){return module};return __webpack_require__.d(getter,"a",getter),getter},__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=12)}([function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.findInArray=function(array,callback){for(var i=0,length=array.length;i0&&void 0!==arguments[0]?arguments[0]:{};return _extends({touchAction:"none"},childStyle)},exports.addClassName=addClassName,exports.removeClassName=removeClassName;var _shims=__webpack_require__(0),_getPrefix=__webpack_require__(19),_getPrefix2=function(obj){return obj&&obj.__esModule?obj:{default:obj}}(_getPrefix),matchesSelectorFunc=""},function(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE_6__},function(module,exports,__webpack_require__){if("production"!==Object({DRAGGABLE_DEBUG:void 0}).NODE_ENV){var REACT_ELEMENT_TYPE="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;module.exports=__webpack_require__(14)(function(object){return"object"==typeof object&&null!==object&&object.$$typeof===REACT_ELEMENT_TYPE},!0)}else module.exports=__webpack_require__(17)()},function(module,exports,__webpack_require__){"use strict";var warning=__webpack_require__(1);if("production"!==Object({DRAGGABLE_DEBUG:void 0}).NODE_ENV){warning=function(condition,format){if(void 0===format)throw new Error("`warning(condition, format, ...args)` requires a warning message argument");if(0!==format.indexOf("Failed Composite propType: ")&&!condition){for(var _len2=arguments.length,args=Array(_len2>2?_len2-2:0),_key2=2;_key2<_len2;_key2++)args[_key2-2]=arguments[_key2];(function(format){for(var _len=arguments.length,args=Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)args[_key-1]=arguments[_key];var argIndex=0,message="Warning: "+format.replace(/%s/g,function(){return args[argIndex++]});"undefined"!=typeof console&&console.error(message);try{throw new Error(message)}catch(x){}}).apply(void 0,[format].concat(args))}}}module.exports=warning},function(module,exports,__webpack_require__){"use strict";function findDOMNode(draggable){var node=_reactDom2.default.findDOMNode(draggable);if(!node)throw new Error(": Unmounted during event!");return node}Object.defineProperty(exports,"__esModule",{value:!0}),exports.getBoundPosition=function(draggable,x,y){if(!draggable.props.bounds)return[x,y];var bounds=draggable.props.bounds;bounds="string"==typeof bounds?bounds:function(bounds){return{left:bounds.left,top:bounds.top,right:bounds.right,bottom:bounds.bottom}}(bounds);var node=findDOMNode(draggable);if("string"==typeof bounds){var ownerDocument=node.ownerDocument,ownerWindow=ownerDocument.defaultView,boundNode=void 0;if(!((boundNode="parent"===bounds?node.parentNode:ownerDocument.querySelector(bounds))instanceof HTMLElement))throw new Error('Bounds selector "'+bounds+'" could not find an element.');var nodeStyle=ownerWindow.getComputedStyle(node),boundNodeStyle=ownerWindow.getComputedStyle(boundNode);bounds={left:-node.offsetLeft+(0,_shims.int)(boundNodeStyle.paddingLeft)+(0,_shims.int)(nodeStyle.marginLeft),top:-node.offsetTop+(0,_shims.int)(boundNodeStyle.paddingTop)+(0,_shims.int)(nodeStyle.marginTop),right:(0,_domFns.innerWidth)(boundNode)-(0,_domFns.outerWidth)(node)-node.offsetLeft+(0,_shims.int)(boundNodeStyle.paddingRight)-(0,_shims.int)(nodeStyle.marginRight),bottom:(0,_domFns.innerHeight)(boundNode)-(0,_domFns.outerHeight)(node)-node.offsetTop+(0,_shims.int)(boundNodeStyle.paddingBottom)-(0,_shims.int)(nodeStyle.marginBottom)}}return(0,_shims.isNum)(bounds.right)&&(x=Math.min(x,bounds.right)),(0,_shims.isNum)(bounds.bottom)&&(y=Math.min(y,bounds.bottom)),(0,_shims.isNum)(bounds.left)&&(x=Math.max(x,bounds.left)),(0,_shims.isNum)(bounds.top)&&(y=Math.max(y,bounds.top)),[x,y]},exports.snapToGrid=function(grid,pendingX,pendingY){return[Math.round(pendingX/grid[0])*grid[0],Math.round(pendingY/grid[1])*grid[1]]},exports.canDragX=function(draggable){return"both"===draggable.props.axis||"x"===draggable.props.axis},exports.canDragY=function(draggable){return"both"===draggable.props.axis||"y"===draggable.props.axis},exports.getControlPosition=function(e,touchIdentifier,draggableCore){var touchObj="number"==typeof touchIdentifier?(0,_domFns.getTouch)(e,touchIdentifier):null;if("number"==typeof touchIdentifier&&!touchObj)return null;var node=findDOMNode(draggableCore),offsetParent=draggableCore.props.offsetParent||node.offsetParent||node.ownerDocument.body;return(0,_domFns.offsetXYFromParent)(touchObj||e,offsetParent)},exports.createCoreData=function(draggable,x,y){var state=draggable.state,isStart=!(0,_shims.isNum)(state.lastX),node=findDOMNode(draggable);return isStart?{node:node,deltaX:0,deltaY:0,lastX:x,lastY:y,x:x,y:y}:{node:node,deltaX:x-state.lastX,deltaY:y-state.lastY,lastX:state.lastX,lastY:state.lastY,x:x,y:y}},exports.createDraggableData=function(draggable,coreData){return{node:coreData.node,x:draggable.state.x+coreData.deltaX,y:draggable.state.y+coreData.deltaY,deltaX:coreData.deltaX,deltaY:coreData.deltaY,lastX:draggable.state.x,lastY:draggable.state.y}};var _shims=__webpack_require__(0),_reactDom2=function(obj){return obj&&obj.__esModule?obj:{default:obj}}(__webpack_require__(4)),_domFns=__webpack_require__(5)},function(module,exports,__webpack_require__){"use strict";(function(process){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _possibleConstructorReturn(self,call){if(!self)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!call||"object"!=typeof call&&"function"!=typeof call?self:call}Object.defineProperty(exports,"__esModule",{value:!0});var _slicedToArray=function(){return function(arr,i){if(Array.isArray(arr))return arr;if(Symbol.iterator in Object(arr))return function(arr,i){var _arr=[],_n=!0,_d=!1,_e=void 0;try{for(var _s,_i=arr[Symbol.iterator]();!(_n=(_s=_i.next()).done)&&(_arr.push(_s.value),!i||_arr.length!==i);_n=!0);}catch(err){_d=!0,_e=err}finally{try{!_n&&_i.return&&_i.return()}finally{if(_d)throw _e}}return _arr}(arr,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_createClass=function(){function defineProperties(target,props){for(var i=0;i not mounted on DragStart!");var ownerDocument=thisNode.ownerDocument;if(!(_this.props.disabled||!(e.target instanceof ownerDocument.defaultView.Node)||_this.props.handle&&!(0,_domFns.matchesSelectorAndParentsTo)(e.target,_this.props.handle,thisNode)||_this.props.cancel&&(0,_domFns.matchesSelectorAndParentsTo)(e.target,_this.props.cancel,thisNode))){var touchIdentifier=(0,_domFns.getTouchIdentifier)(e);_this.setState({touchIdentifier:touchIdentifier});var position=(0,_positionFns.getControlPosition)(e,touchIdentifier,_this);if(null!=position){var x=position.x,y=position.y,coreEvent=(0,_positionFns.createCoreData)(_this,x,y);(0,_log2.default)("DraggableCore: handleDragStart: %j",coreEvent),(0,_log2.default)("calling",_this.props.onStart);!1!==_this.props.onStart(e,coreEvent)&&(_this.props.enableUserSelectHack&&(0,_domFns.addUserSelectStyles)(ownerDocument),_this.setState({dragging:!0,lastX:x,lastY:y}),(0,_domFns.addEvent)(ownerDocument,dragEventFor.move,_this.handleDrag),(0,_domFns.addEvent)(ownerDocument,dragEventFor.stop,_this.handleDragStop))}}},_this.handleDrag=function(e){"touchmove"===e.type&&e.preventDefault();var position=(0,_positionFns.getControlPosition)(e,_this.state.touchIdentifier,_this);if(null!=position){var x=position.x,y=position.y;if(Array.isArray(_this.props.grid)){var _deltaX=x-_this.state.lastX,_deltaY=y-_this.state.lastY,_snapToGrid=(0,_positionFns.snapToGrid)(_this.props.grid,_deltaX,_deltaY),_snapToGrid2=_slicedToArray(_snapToGrid,2);if(_deltaX=_snapToGrid2[0],_deltaY=_snapToGrid2[1],!_deltaX&&!_deltaY)return;x=_this.state.lastX+_deltaX,y=_this.state.lastY+_deltaY}var coreEvent=(0,_positionFns.createCoreData)(_this,x,y);(0,_log2.default)("DraggableCore: handleDrag: %j",coreEvent);if(!1!==_this.props.onDrag(e,coreEvent))_this.setState({lastX:x,lastY:y});else try{_this.handleDragStop(new MouseEvent("mouseup"))}catch(err){var event=document.createEvent("MouseEvents");event.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),_this.handleDragStop(event)}}},_this.handleDragStop=function(e){if(_this.state.dragging){var position=(0,_positionFns.getControlPosition)(e,_this.state.touchIdentifier,_this);if(null!=position){var x=position.x,y=position.y,coreEvent=(0,_positionFns.createCoreData)(_this,x,y),thisNode=_reactDom2.default.findDOMNode(_this);thisNode&&_this.props.enableUserSelectHack&&(0,_domFns.removeUserSelectStyles)(thisNode.ownerDocument),(0,_log2.default)("DraggableCore: handleDragStop: %j",coreEvent),_this.setState({dragging:!1,lastX:NaN,lastY:NaN}),_this.props.onStop(e,coreEvent),thisNode&&((0,_log2.default)("DraggableCore: Removing handlers"),(0,_domFns.removeEvent)(thisNode.ownerDocument,dragEventFor.move,_this.handleDrag),(0,_domFns.removeEvent)(thisNode.ownerDocument,dragEventFor.stop,_this.handleDragStop))}}},_this.onMouseDown=function(e){return dragEventFor=eventsFor.mouse,_this.handleDragStart(e)},_this.onMouseUp=function(e){return dragEventFor=eventsFor.mouse,_this.handleDragStop(e)},_this.onTouchStart=function(e){return dragEventFor=eventsFor.touch,_this.handleDragStart(e)},_this.onTouchEnd=function(e){return dragEventFor=eventsFor.touch,_this.handleDragStop(e)},_ret=_temp,_possibleConstructorReturn(_this,_ret)}return function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass)}(DraggableCore,_react2.default.Component),_createClass(DraggableCore,[{key:"componentWillUnmount",value:function(){var thisNode=_reactDom2.default.findDOMNode(this);if(thisNode){var ownerDocument=thisNode.ownerDocument;(0,_domFns.removeEvent)(ownerDocument,eventsFor.mouse.move,this.handleDrag),(0,_domFns.removeEvent)(ownerDocument,eventsFor.touch.move,this.handleDrag),(0,_domFns.removeEvent)(ownerDocument,eventsFor.mouse.stop,this.handleDragStop),(0,_domFns.removeEvent)(ownerDocument,eventsFor.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&(0,_domFns.removeUserSelectStyles)(ownerDocument)}}},{key:"render",value:function(){return _react2.default.cloneElement(_react2.default.Children.only(this.props.children),{style:(0,_domFns.styleHacks)(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}]),DraggableCore}();DraggableCore.displayName="DraggableCore",DraggableCore.propTypes={allowAnyClick:_propTypes2.default.bool,disabled:_propTypes2.default.bool,enableUserSelectHack:_propTypes2.default.bool,offsetParent:function(props,propName){if(!0===process.browser&&props[propName]&&1!==props[propName].nodeType)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:_propTypes2.default.arrayOf(_propTypes2.default.number),handle:_propTypes2.default.string,cancel:_propTypes2.default.string,onStart:_propTypes2.default.func,onDrag:_propTypes2.default.func,onStop:_propTypes2.default.func,onMouseDown:_propTypes2.default.func,className:_shims.dontSetMe,style:_shims.dontSetMe,transform:_shims.dontSetMe},DraggableCore.defaultProps={allowAnyClick:!1,cancel:null,disabled:!1,enableUserSelectHack:!0,offsetParent:null,handle:null,grid:null,transform:null,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){}},exports.default=DraggableCore}).call(exports,__webpack_require__(20))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=function(){}},function(module,exports,__webpack_require__){"use strict";var Draggable=__webpack_require__(13).default;module.exports=Draggable,module.exports.default=Draggable,module.exports.DraggableCore=__webpack_require__(10).default},function(module,exports,__webpack_require__){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(exports,"__esModule",{value:!0});var _extends=Object.assign||function(target){for(var i=1;i, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}},{key:"componentDidMount",value:function(){void 0!==window.SVGElement&&_reactDom2.default.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:"componentWillReceiveProps",value:function(nextProps){!nextProps.position||this.props.position&&nextProps.position.x===this.props.position.x&&nextProps.position.y===this.props.position.y||this.setState({x:nextProps.position.x,y:nextProps.position.y})}},{key:"componentWillUnmount",value:function(){this.setState({dragging:!1})}},{key:"render",value:function(){var _classNames,style={},svgTransform=null,draggable=!Boolean(this.props.position)||this.state.dragging,position=this.props.position||this.props.defaultPosition,transformOpts={x:(0,_positionFns.canDragX)(this)&&draggable?this.state.x:position.x,y:(0,_positionFns.canDragY)(this)&&draggable?this.state.y:position.y};this.state.isElementSVG?svgTransform=(0,_domFns.createSVGTransform)(transformOpts):style=(0,_domFns.createCSSTransform)(transformOpts);var _props=this.props,defaultClassName=_props.defaultClassName,defaultClassNameDragging=_props.defaultClassNameDragging,defaultClassNameDragged=_props.defaultClassNameDragged,children=_react2.default.Children.only(this.props.children),className=(0,_classnames2.default)(children.props.className||"",defaultClassName,(_classNames={},_defineProperty(_classNames,defaultClassNameDragging,this.state.dragging),_defineProperty(_classNames,defaultClassNameDragged,this.state.dragged),_classNames));return _react2.default.createElement(_DraggableCore2.default,_extends({},this.props,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),_react2.default.cloneElement(children,{className:className,style:_extends({},children.props.style,style),transform:svgTransform}))}}]),Draggable}();Draggable.displayName="Draggable",Draggable.propTypes=_extends({},_DraggableCore2.default.propTypes,{axis:_propTypes2.default.oneOf(["both","x","y","none"]),bounds:_propTypes2.default.oneOfType([_propTypes2.default.shape({left:_propTypes2.default.number,right:_propTypes2.default.number,top:_propTypes2.default.number,bottom:_propTypes2.default.number}),_propTypes2.default.string,_propTypes2.default.oneOf([!1])]),defaultClassName:_propTypes2.default.string,defaultClassNameDragging:_propTypes2.default.string,defaultClassNameDragged:_propTypes2.default.string,defaultPosition:_propTypes2.default.shape({x:_propTypes2.default.number,y:_propTypes2.default.number}),position:_propTypes2.default.shape({x:_propTypes2.default.number,y:_propTypes2.default.number}),className:_shims.dontSetMe,style:_shims.dontSetMe,transform:_shims.dontSetMe}),Draggable.defaultProps=_extends({},_DraggableCore2.default.defaultProps,{axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},position:null}),exports.default=Draggable},function(module,exports,__webpack_require__){"use strict";var emptyFunction=__webpack_require__(1),invariant=__webpack_require__(2),warning=__webpack_require__(8),assign=__webpack_require__(15),ReactPropTypesSecret=__webpack_require__(3),checkPropTypes=__webpack_require__(16);module.exports=function(isValidElement,throwOnDirectAccess){function is(x,y){return x===y?0!==x||1/x==1/y:x!=x&&y!=y}function PropTypeError(message){this.message=message,this.stack=""}function createChainableTypeChecker(validate){function checkType(isRequired,props,propName,componentName,location,propFullName,secret){if(componentName=componentName||ANONYMOUS,propFullName=propFullName||propName,secret!==ReactPropTypesSecret)if(throwOnDirectAccess)invariant(!1,"Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");else if("production"!==Object({DRAGGABLE_DEBUG:void 0}).NODE_ENV&&"undefined"!=typeof console){var cacheKey=componentName+":"+propName;!manualPropTypeCallCache[cacheKey]&&manualPropTypeWarningCount<3&&(warning(!1,"You are manually calling a React.PropTypes validation function for the `%s` prop on `%s`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details.",propFullName,componentName),manualPropTypeCallCache[cacheKey]=!0,manualPropTypeWarningCount++)}return null==props[propName]?isRequired?new PropTypeError(null===props[propName]?"The "+location+" `"+propFullName+"` is marked as required in `"+componentName+"`, but its value is `null`.":"The "+location+" `"+propFullName+"` is marked as required in `"+componentName+"`, but its value is `undefined`."):null:validate(props,propName,componentName,location,propFullName)}if("production"!==Object({DRAGGABLE_DEBUG:void 0}).NODE_ENV)var manualPropTypeCallCache={},manualPropTypeWarningCount=0;var chainedCheckType=checkType.bind(null,!1);return chainedCheckType.isRequired=checkType.bind(null,!0),chainedCheckType}function createPrimitiveTypeChecker(expectedType){return createChainableTypeChecker(function(props,propName,componentName,location,propFullName,secret){var propValue=props[propName];if(getPropType(propValue)!==expectedType)return new PropTypeError("Invalid "+location+" `"+propFullName+"` of type `"+getPreciseType(propValue)+"` supplied to `"+componentName+"`, expected `"+expectedType+"`.");return null})}function isNode(propValue){switch(typeof propValue){case"number":case"string":case"undefined":return!0;case"boolean":return!propValue;case"object":if(Array.isArray(propValue))return propValue.every(isNode);if(null===propValue||isValidElement(propValue))return!0;var iteratorFn=function(maybeIterable){var iteratorFn=maybeIterable&&(ITERATOR_SYMBOL&&maybeIterable[ITERATOR_SYMBOL]||maybeIterable[FAUX_ITERATOR_SYMBOL]);if("function"==typeof iteratorFn)return iteratorFn}(propValue);if(!iteratorFn)return!1;var step,iterator=iteratorFn.call(propValue);if(iteratorFn!==propValue.entries){for(;!(step=iterator.next()).done;)if(!isNode(step.value))return!1}else for(;!(step=iterator.next()).done;){var entry=step.value;if(entry&&!isNode(entry[1]))return!1}return!0;default:return!1}}function getPropType(propValue){var propType=typeof propValue;return Array.isArray(propValue)?"array":propValue instanceof RegExp?"object":function(propType,propValue){return"symbol"===propType||"Symbol"===propValue["@@toStringTag"]||"function"==typeof Symbol&&propValue instanceof Symbol}(propType,propValue)?"symbol":propType}function getPreciseType(propValue){if(void 0===propValue||null===propValue)return""+propValue;var propType=getPropType(propValue);if("object"===propType){if(propValue instanceof Date)return"date";if(propValue instanceof RegExp)return"regexp"}return propType}var ITERATOR_SYMBOL="function"==typeof Symbol&&Symbol.iterator,FAUX_ITERATOR_SYMBOL="@@iterator",ANONYMOUS="<>",ReactPropTypes={array:createPrimitiveTypeChecker("array"),bool:createPrimitiveTypeChecker("boolean"),func:createPrimitiveTypeChecker("function"),number:createPrimitiveTypeChecker("number"),object:createPrimitiveTypeChecker("object"),string:createPrimitiveTypeChecker("string"),symbol:createPrimitiveTypeChecker("symbol"),any:createChainableTypeChecker(emptyFunction.thatReturnsNull),arrayOf:function(typeChecker){return createChainableTypeChecker(function(props,propName,componentName,location,propFullName){if("function"!=typeof typeChecker)return new PropTypeError("Property `"+propFullName+"` of component `"+componentName+"` has invalid PropType notation inside arrayOf.");var propValue=props[propName];if(!Array.isArray(propValue))return new PropTypeError("Invalid "+location+" `"+propFullName+"` of type `"+getPropType(propValue)+"` supplied to `"+componentName+"`, expected an array.");for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:"transform";if("undefined"==typeof window||void 0===window.document)return"";var style=window.document.documentElement.style;if(prop in style)return"";for(var i=0;i1)for(var i=1;i | TouchList, callback: Function): any {\n for (let i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\n\nexport function isFunction(func: any): boolean {\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\nexport function isNum(num: any): boolean {\n return typeof num === 'number' && !isNaN(num);\n}\n\nexport function int(a: string): number {\n return parseInt(a, 10);\n}\n\nexport function dontSetMe(props: Object, propName: string, componentName: string) {\n if (props[propName]) {\n return new Error(`Invalid prop ${propName} passed to ${componentName} - do not set this, set it on the child.`);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/shims.js","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/emptyFunction.js\n// module id = 1\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/invariant.js\n// module id = 2\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/lib/ReactPropTypesSecret.js\n// module id = 3\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_4__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react-dom\",\"commonjs2\":\"react-dom\",\"amd\":\"react-dom\",\"root\":\"ReactDOM\"}\n// module id = 4\n// module chunks = 0","// @flow\nimport {findInArray, isFunction, int} from './shims';\nimport browserPrefix, {browserPrefixToKey} from './getPrefix';\n\nimport type {ControlPosition, MouseTouchEvent} from './types';\n\nlet matchesSelectorFunc = '';\nexport function matchesSelector(el: Node, selector: string): boolean {\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = findInArray([\n 'matches',\n 'webkitMatchesSelector',\n 'mozMatchesSelector',\n 'msMatchesSelector',\n 'oMatchesSelector'\n ], function(method){\n // $FlowIgnore: Doesn't think elements are indexable\n return isFunction(el[method]);\n });\n }\n\n // Might not be found entirely (not an Element?) - in that case, bail\n // $FlowIgnore: Doesn't think elements are indexable\n if (!isFunction(el[matchesSelectorFunc])) return false;\n\n // $FlowIgnore: Doesn't think elements are indexable\n return el[matchesSelectorFunc](selector);\n}\n\n// Works up the tree to the draggable itself attempting to match selector.\nexport function matchesSelectorAndParentsTo(el: Node, selector: string, baseNode: Node): boolean {\n let node = el;\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n node = node.parentNode;\n } while (node);\n\n return false;\n}\n\nexport function addEvent(el: ?Node, event: string, handler: Function): void {\n if (!el) { return; }\n if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else if (el.addEventListener) {\n el.addEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\n\nexport function removeEvent(el: ?Node, event: string, handler: Function): void {\n if (!el) { return; }\n if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else if (el.removeEventListener) {\n el.removeEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\n\nexport function outerHeight(node: HTMLElement): number {\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += int(computedStyle.borderTopWidth);\n height += int(computedStyle.borderBottomWidth);\n return height;\n}\n\nexport function outerWidth(node: HTMLElement): number {\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += int(computedStyle.borderLeftWidth);\n width += int(computedStyle.borderRightWidth);\n return width;\n}\nexport function innerHeight(node: HTMLElement): number {\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= int(computedStyle.paddingTop);\n height -= int(computedStyle.paddingBottom);\n return height;\n}\n\nexport function innerWidth(node: HTMLElement): number {\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= int(computedStyle.paddingLeft);\n width -= int(computedStyle.paddingRight);\n return width;\n}\n\n// Get from offsetParent\nexport function offsetXYFromParent(evt: {clientX: number, clientY: number}, offsetParent: HTMLElement): ControlPosition {\n const isBody = offsetParent === offsetParent.ownerDocument.body;\n const offsetParentRect = isBody ? {left: 0, top: 0} : offsetParent.getBoundingClientRect();\n\n const x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;\n const y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;\n\n return {x, y};\n}\n\nexport function createCSSTransform({x, y}: {x: number, y: number}): Object {\n // Replace unitless items with px\n return {[browserPrefixToKey('transform', browserPrefix)]: 'translate(' + x + 'px,' + y + 'px)'};\n}\n\nexport function createSVGTransform({x, y}: {x: number, y: number}): string {\n return 'translate(' + x + ',' + y + ')';\n}\n\nexport function getTouch(e: MouseTouchEvent, identifier: number): ?{clientX: number, clientY: number} {\n return (e.targetTouches && findInArray(e.targetTouches, t => identifier === t.identifier)) ||\n (e.changedTouches && findInArray(e.changedTouches, t => identifier === t.identifier));\n}\n\nexport function getTouchIdentifier(e: MouseTouchEvent): ?number {\n if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n}\n\n// User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n\n// Note we're passing `document` b/c we could be iframed\nexport function addUserSelectStyles(doc: ?Document) {\n if (!doc) return;\n let styleEl = doc.getElementById('react-draggable-style-el');\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {background: transparent;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {background: transparent;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\n\nexport function removeUserSelectStyles(doc: ?Document) {\n try {\n if (doc && doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection');\n window.getSelection().removeAllRanges(); // remove selection caused by scroll\n } catch (e) {\n // probably IE\n }\n}\n\nexport function styleHacks(childStyle: Object = {}): Object {\n // Workaround IE pointer events; see #51\n // https://github.com/mzabriskie/react-draggable/issues/51#issuecomment-103488278\n return {\n touchAction: 'none',\n ...childStyle\n };\n}\n\nexport function addClassName(el: HTMLElement, className: string) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`))) {\n el.className += ` ${className}`;\n }\n }\n}\n\nexport function removeClassName(el: HTMLElement, className: string) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`, 'g'), '');\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/domFns.js","module.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}\n// module id = 6\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/index.js\n// module id = 7\n// module chunks = 0","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/warning.js\n// module id = 8\n// module chunks = 0","// @flow\nimport {isNum, int} from './shims';\nimport ReactDOM from 'react-dom';\nimport {getTouch, innerWidth, innerHeight, offsetXYFromParent, outerWidth, outerHeight} from './domFns';\n\nimport type Draggable from '../Draggable';\nimport type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';\nimport type DraggableCore from '../DraggableCore';\n\nexport function getBoundPosition(draggable: Draggable, x: number, y: number): [number, number] {\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y];\n\n // Clone new bounds\n let {bounds} = draggable.props;\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n const node = findDOMNode(draggable);\n\n if (typeof bounds === 'string') {\n const {ownerDocument} = node;\n const ownerWindow = ownerDocument.defaultView;\n let boundNode;\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n if (!(boundNode instanceof HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n const nodeStyle = ownerWindow.getComputedStyle(node);\n const boundNodeStyle = ownerWindow.getComputedStyle(boundNode);\n // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n bounds = {\n left: -node.offsetLeft + int(boundNodeStyle.paddingLeft) + int(nodeStyle.marginLeft),\n top: -node.offsetTop + int(boundNodeStyle.paddingTop) + int(nodeStyle.marginTop),\n right: innerWidth(boundNode) - outerWidth(node) - node.offsetLeft +\n int(boundNodeStyle.paddingRight) - int(nodeStyle.marginRight),\n bottom: innerHeight(boundNode) - outerHeight(node) - node.offsetTop +\n int(boundNodeStyle.paddingBottom) - int(nodeStyle.marginBottom)\n };\n }\n\n // Keep x and y below right and bottom limits...\n if (isNum(bounds.right)) x = Math.min(x, bounds.right);\n if (isNum(bounds.bottom)) y = Math.min(y, bounds.bottom);\n\n // But above left and top limits.\n if (isNum(bounds.left)) x = Math.max(x, bounds.left);\n if (isNum(bounds.top)) y = Math.max(y, bounds.top);\n\n return [x, y];\n}\n\nexport function snapToGrid(grid: [number, number], pendingX: number, pendingY: number): [number, number] {\n const x = Math.round(pendingX / grid[0]) * grid[0];\n const y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\n\nexport function canDragX(draggable: Draggable): boolean {\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\n\nexport function canDragY(draggable: Draggable): boolean {\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n}\n\n// Get {x, y} positions from event.\nexport function getControlPosition(e: MouseTouchEvent, touchIdentifier: ?number, draggableCore: DraggableCore): ?ControlPosition {\n const touchObj = typeof touchIdentifier === 'number' ? getTouch(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n const node = findDOMNode(draggableCore);\n // User can provide an offsetParent if desired.\n const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return offsetXYFromParent(touchObj || e, offsetParent);\n}\n\n// Create an data object exposed by 's events\nexport function createCoreData(draggable: DraggableCore, x: number, y: number): DraggableData {\n const state = draggable.state;\n const isStart = !isNum(state.lastX);\n const node = findDOMNode(draggable);\n\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node,\n deltaX: 0, deltaY: 0,\n lastX: x, lastY: y,\n x, y,\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node,\n deltaX: x - state.lastX, deltaY: y - state.lastY,\n lastX: state.lastX, lastY: state.lastY,\n x, y,\n };\n }\n}\n\n// Create an data exposed by 's events\nexport function createDraggableData(draggable: Draggable, coreData: DraggableData): DraggableData {\n return {\n node: coreData.node,\n x: draggable.state.x + coreData.deltaX,\n y: draggable.state.y + coreData.deltaY,\n deltaX: coreData.deltaX,\n deltaY: coreData.deltaY,\n lastX: draggable.state.x,\n lastY: draggable.state.y\n };\n}\n\n// A lot faster than stringify/parse\nfunction cloneBounds(bounds: Bounds): Bounds {\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\n\nfunction findDOMNode(draggable: Draggable | DraggableCore): HTMLElement {\n const node = ReactDOM.findDOMNode(draggable);\n if (!node) {\n throw new Error(': Unmounted during event!');\n }\n // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n return node;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/positionFns.js","// @flow\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport {matchesSelectorAndParentsTo, addEvent, removeEvent, addUserSelectStyles, getTouchIdentifier,\n removeUserSelectStyles, styleHacks} from './utils/domFns';\nimport {createCoreData, getControlPosition, snapToGrid} from './utils/positionFns';\nimport {dontSetMe} from './utils/shims';\nimport log from './utils/log';\n\nimport type {EventHandler, MouseTouchEvent} from './utils/types';\nimport type {Element as ReactElement} from 'react';\n\n// Simple abstraction for dragging events names.\nconst eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n};\n\n// Default to mouse events.\nlet dragEventFor = eventsFor.mouse;\n\ntype DraggableCoreState = {\n dragging: boolean,\n lastX: number,\n lastY: number,\n touchIdentifier: ?number\n};\n\nexport type DraggableBounds = {\n left: number,\n right: number,\n top: number,\n bottom: number,\n};\n\nexport type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n};\n\nexport type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void;\n\nexport type ControlPosition = {x: number, y: number};\n\nexport type DraggableCoreProps = {\n allowAnyClick: boolean,\n cancel: string,\n children: ReactElement,\n disabled: boolean,\n enableUserSelectHack: boolean,\n offsetParent: HTMLElement,\n grid: [number, number],\n handle: string,\n onStart: DraggableEventHandler,\n onDrag: DraggableEventHandler,\n onStop: DraggableEventHandler,\n onMouseDown: (e: MouseEvent) => void,\n};\n\n//\n// Define .\n//\n// is for advanced usage of . It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\n\nexport default class DraggableCore extends React.Component {\n\n static displayName = 'DraggableCore';\n\n static propTypes = {\n /**\n * `allowAnyClick` allows dragging using any mouse button.\n * By default, we only accept the left button.\n *\n * Defaults to `false`.\n */\n allowAnyClick: PropTypes.bool,\n\n /**\n * `disabled`, if true, stops the from dragging. All handlers,\n * with the exception of `onMouseDown`, will not fire.\n */\n disabled: PropTypes.bool,\n\n /**\n * By default, we add 'user-select:none' attributes to the document body\n * to prevent ugly text selection during drag. If this is causing problems\n * for your app, set this to `false`.\n */\n enableUserSelectHack: PropTypes.bool,\n\n /**\n * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function(props: DraggableCoreProps, propName: $Keys) {\n if (process.browser === true && props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n }\n },\n\n /**\n * `grid` specifies the x and y that dragging should snap to.\n */\n grid: PropTypes.arrayOf(PropTypes.number),\n\n /**\n * `handle` specifies a selector to be used as the handle that initiates drag.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
\n *
Click me to drag
\n *
This is some other content
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n handle: PropTypes.string,\n\n /**\n * `cancel` specifies a selector to be used to prevent drag initialization.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return(\n * \n *
\n *
You can't drag from here
\n *
Dragging here works fine
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n cancel: PropTypes.string,\n\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: PropTypes.func,\n\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: PropTypes.func,\n\n /**\n * Called when dragging stops.\n * If this function returns the boolean false, the drag will remain active.\n */\n onStop: PropTypes.func,\n\n /**\n * A workaround option which can be passed if onMouseDown needs to be accessed,\n * since it'll always be blocked (as there is internal use of onMouseDown)\n */\n onMouseDown: PropTypes.func,\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: dontSetMe,\n style: dontSetMe,\n transform: dontSetMe\n };\n\n static defaultProps = {\n allowAnyClick: false, // by default only accept left click\n cancel: null,\n disabled: false,\n enableUserSelectHack: true,\n offsetParent: null,\n handle: null,\n grid: null,\n transform: null,\n onStart: function(){},\n onDrag: function(){},\n onStop: function(){},\n onMouseDown: function(){}\n };\n\n state = {\n dragging: false,\n // Used while dragging to determine deltas.\n lastX: NaN, lastY: NaN,\n touchIdentifier: null\n };\n\n componentWillUnmount() {\n // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n const thisNode = ReactDOM.findDOMNode(this);\n if (thisNode) {\n const {ownerDocument} = thisNode;\n removeEvent(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n removeEvent(ownerDocument, eventsFor.touch.move, this.handleDrag);\n removeEvent(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n removeEvent(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n if (this.props.enableUserSelectHack) removeUserSelectStyles(ownerDocument);\n }\n }\n\n handleDragStart: EventHandler = (e) => {\n // Make it possible to attach event handlers on top of this one.\n this.props.onMouseDown(e);\n\n // Only accept left-clicks.\n if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false;\n\n // Get nodes. Be sure to grab relative document (could be iframed)\n const thisNode = ReactDOM.findDOMNode(this);\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error(' not mounted on DragStart!');\n }\n const {ownerDocument} = thisNode;\n\n // Short circuit if handle or cancel prop was provided and selector doesn't match.\n if (this.props.disabled ||\n (!(e.target instanceof ownerDocument.defaultView.Node)) ||\n (this.props.handle && !matchesSelectorAndParentsTo(e.target, this.props.handle, thisNode)) ||\n (this.props.cancel && matchesSelectorAndParentsTo(e.target, this.props.cancel, thisNode))) {\n return;\n }\n\n // Set touch identifier in component state if this is a touch event. This allows us to\n // distinguish between individual touches on multitouch screens by identifying which\n // touchpoint was set to this element.\n const touchIdentifier = getTouchIdentifier(e);\n this.setState({touchIdentifier});\n\n // Get the current drag point from the event. This is used as the offset.\n const position = getControlPosition(e, touchIdentifier, this);\n if (position == null) return; // not possible but satisfies flow\n const {x, y} = position;\n\n // Create an event object with all the data parents need to make a decision here.\n const coreEvent = createCoreData(this, x, y);\n\n log('DraggableCore: handleDragStart: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, cancel.\n log('calling', this.props.onStart);\n const shouldUpdate = this.props.onStart(e, coreEvent);\n if (shouldUpdate === false) return;\n\n // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n if (this.props.enableUserSelectHack) addUserSelectStyles(ownerDocument);\n\n // Initiate dragging. Set the current x and y as offsets\n // so we know how much we've moved during the drag. This allows us\n // to drag elements around even if they have been moved, without issue.\n this.setState({\n dragging: true,\n\n lastX: x,\n lastY: y\n });\n\n // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n // this element. We use different events depending on whether or not we have detected that this\n // is a touch-capable device.\n addEvent(ownerDocument, dragEventFor.move, this.handleDrag);\n addEvent(ownerDocument, dragEventFor.stop, this.handleDragStop);\n };\n\n handleDrag: EventHandler = (e) => {\n\n // Prevent scrolling on mobile devices, like ipad/iphone.\n if (e.type === 'touchmove') e.preventDefault();\n\n // Get the current drag point from the event. This is used as the offset.\n const position = getControlPosition(e, this.state.touchIdentifier, this);\n if (position == null) return;\n let {x, y} = position;\n\n // Snap to grid if prop has been provided\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.state.lastX, deltaY = y - this.state.lastY;\n [deltaX, deltaY] = snapToGrid(this.props.grid, deltaX, deltaY);\n if (!deltaX && !deltaY) return; // skip useless drag\n x = this.state.lastX + deltaX, y = this.state.lastY + deltaY;\n }\n\n const coreEvent = createCoreData(this, x, y);\n\n log('DraggableCore: handleDrag: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, trigger end.\n const shouldUpdate = this.props.onDrag(e, coreEvent);\n if (shouldUpdate === false) {\n try {\n // $FlowIgnore\n this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n const event = ((document.createEvent('MouseEvents'): any): MouseTouchEvent);\n // I see why this insanity was deprecated\n // $FlowIgnore\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n this.handleDragStop(event);\n }\n return;\n }\n\n this.setState({\n lastX: x,\n lastY: y\n });\n };\n\n handleDragStop: EventHandler = (e) => {\n if (!this.state.dragging) return;\n\n const position = getControlPosition(e, this.state.touchIdentifier, this);\n if (position == null) return;\n const {x, y} = position;\n const coreEvent = createCoreData(this, x, y);\n\n const thisNode = ReactDOM.findDOMNode(this);\n if (thisNode) {\n // Remove user-select hack\n if (this.props.enableUserSelectHack) removeUserSelectStyles(thisNode.ownerDocument);\n }\n\n log('DraggableCore: handleDragStop: %j', coreEvent);\n\n // Reset the el.\n this.setState({\n dragging: false,\n lastX: NaN,\n lastY: NaN\n });\n\n // Call event handler\n this.props.onStop(e, coreEvent);\n\n if (thisNode) {\n // Remove event handlers\n log('DraggableCore: Removing handlers');\n removeEvent(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);\n removeEvent(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop);\n }\n };\n\n onMouseDown: EventHandler = (e) => {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return this.handleDragStart(e);\n };\n\n onMouseUp: EventHandler = (e) => {\n dragEventFor = eventsFor.mouse;\n\n return this.handleDragStop(e);\n };\n\n // Same as onMouseDown (start drag), but now consider this a touch device.\n onTouchStart: EventHandler = (e) => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n\n return this.handleDragStart(e);\n };\n\n onTouchEnd: EventHandler = (e) => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n\n return this.handleDragStop(e);\n };\n\n render() {\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return React.cloneElement(React.Children.only(this.props.children), {\n style: styleHacks(this.props.children.props.style),\n\n // Note: mouseMove handler is attached to document so it will still function\n // when the user drags quickly and leaves the bounds of the element.\n onMouseDown: this.onMouseDown,\n onTouchStart: this.onTouchStart,\n onMouseUp: this.onMouseUp,\n onTouchEnd: this.onTouchEnd\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/DraggableCore.js","// @flow\n/*eslint no-console:0*/\nexport default function log(...args: any) {\n if (process.env.DRAGGABLE_DEBUG) console.log(...args);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/log.js","var Draggable = require('./lib/Draggable').default;\n\n// Previous versions of this lib exported as the root export. As to not break\n// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = require('./lib/DraggableCore').default;\n\n\n\n// WEBPACK FOOTER //\n// ./index.js","// @flow\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport {createCSSTransform, createSVGTransform} from './utils/domFns';\nimport {canDragX, canDragY, createDraggableData, getBoundPosition} from './utils/positionFns';\nimport {dontSetMe} from './utils/shims';\nimport DraggableCore from './DraggableCore';\nimport type {ControlPosition, DraggableBounds, DraggableCoreProps} from './DraggableCore';\nimport log from './utils/log';\nimport type {DraggableEventHandler} from './utils/types';\nimport type {Element as ReactElement} from 'react';\n\ntype DraggableState = {\n dragging: boolean,\n dragged: boolean,\n x: number, y: number,\n slackX: number, slackY: number,\n isElementSVG: boolean\n};\n\nexport type DraggableProps = {\n ...$Exact,\n axis: 'both' | 'x' | 'y' | 'none',\n bounds: DraggableBounds | string | false,\n defaultClassName: string,\n defaultClassNameDragging: string,\n defaultClassNameDragged: string,\n defaultPosition: ControlPosition,\n position: ControlPosition,\n};\n\n//\n// Define \n//\n\nexport default class Draggable extends React.Component {\n\n static displayName = 'Draggable';\n\n static propTypes = {\n // Accepts all props accepts.\n ...DraggableCore.propTypes,\n\n /**\n * `axis` determines which axis the draggable can move.\n *\n * Note that all callbacks will still return data as normal. This only\n * controls flushing to the DOM.\n *\n * 'both' allows movement horizontally and vertically.\n * 'x' limits movement to horizontal axis.\n * 'y' limits movement to vertical axis.\n * 'none' limits all movement.\n *\n * Defaults to 'both'.\n */\n axis: PropTypes.oneOf(['both', 'x', 'y', 'none']),\n\n /**\n * `bounds` determines the range of movement available to the element.\n * Available values are:\n *\n * 'parent' restricts movement within the Draggable's parent node.\n *\n * Alternatively, pass an object with the following properties, all of which are optional:\n *\n * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n *\n * All values are in px.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
Content
\n *
\n * );\n * }\n * });\n * ```\n */\n bounds: PropTypes.oneOfType([\n PropTypes.shape({\n left: PropTypes.number,\n right: PropTypes.number,\n top: PropTypes.number,\n bottom: PropTypes.number\n }),\n PropTypes.string,\n PropTypes.oneOf([false])\n ]),\n\n defaultClassName: PropTypes.string,\n defaultClassNameDragging: PropTypes.string,\n defaultClassNameDragged: PropTypes.string,\n\n /**\n * `defaultPosition` specifies the x and y that the dragged item should start at\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n defaultPosition: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }),\n\n /**\n * `position`, if present, defines the current position of the element.\n *\n * This is similar to how form elements in React work - if no `position` is supplied, the component\n * is uncontrolled.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n position: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }),\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: dontSetMe,\n style: dontSetMe,\n transform: dontSetMe\n };\n\n static defaultProps = {\n ...DraggableCore.defaultProps,\n axis: 'both',\n bounds: false,\n defaultClassName: 'react-draggable',\n defaultClassNameDragging: 'react-draggable-dragging',\n defaultClassNameDragged: 'react-draggable-dragged',\n defaultPosition: {x: 0, y: 0},\n position: null\n };\n\n constructor(props: DraggableProps) {\n super(props);\n\n this.state = {\n // Whether or not we are currently dragging.\n dragging: false,\n\n // Whether or not we have been dragged before.\n dragged: false,\n\n // Current transform x and y.\n x: props.position ? props.position.x : props.defaultPosition.x,\n y: props.position ? props.position.y : props.defaultPosition.y,\n\n // Used for compensating for out-of-bounds drags\n slackX: 0, slackY: 0,\n\n // Can only determine if SVG after mounting\n isElementSVG: false\n };\n }\n\n componentWillMount() {\n if (this.props.position && !(this.props.onDrag || this.props.onStop)) {\n // eslint-disable-next-line\n console.warn('A `position` was applied to this , without drag handlers. This will make this ' +\n 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' +\n '`position` of this element.');\n }\n }\n\n componentDidMount() {\n // Check to see if the element passed is an instanceof SVGElement\n if(typeof window.SVGElement !== 'undefined' && ReactDOM.findDOMNode(this) instanceof window.SVGElement) {\n this.setState({ isElementSVG: true });\n }\n }\n\n componentWillReceiveProps(nextProps: Object) {\n // Set x/y if position has changed\n if (nextProps.position &&\n (!this.props.position ||\n nextProps.position.x !== this.props.position.x ||\n nextProps.position.y !== this.props.position.y\n )\n ) {\n this.setState({ x: nextProps.position.x, y: nextProps.position.y });\n }\n }\n\n componentWillUnmount() {\n this.setState({dragging: false}); // prevents invariant if unmounted while dragging\n }\n\n onDragStart: DraggableEventHandler = (e, coreData) => {\n log('Draggable: onDragStart: %j', coreData);\n\n // Short-circuit if user's callback killed it.\n const shouldStart = this.props.onStart(e, createDraggableData(this, coreData));\n // Kills start event on core as well, so move handlers are never bound.\n if (shouldStart === false) return false;\n\n this.setState({dragging: true, dragged: true});\n };\n\n onDrag: DraggableEventHandler = (e, coreData) => {\n if (!this.state.dragging) return false;\n log('Draggable: onDrag: %j', coreData);\n\n const uiData = createDraggableData(this, coreData);\n\n const newState: $Shape = {\n x: uiData.x,\n y: uiData.y\n };\n\n // Keep within bounds.\n if (this.props.bounds) {\n // Save original x and y.\n const {x, y} = newState;\n\n // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n newState.x += this.state.slackX;\n newState.y += this.state.slackY;\n\n // Get bound position. This will ceil/floor the x and y within the boundaries.\n const [newStateX, newStateY] = getBoundPosition(this, newState.x, newState.y);\n newState.x = newStateX;\n newState.y = newStateY;\n\n // Recalculate slack by noting how much was shaved by the boundPosition handler.\n newState.slackX = this.state.slackX + (x - newState.x);\n newState.slackY = this.state.slackY + (y - newState.y);\n\n // Update the event we fire to reflect what really happened after bounds took effect.\n uiData.x = newState.x;\n uiData.y = newState.y;\n uiData.deltaX = newState.x - this.state.x;\n uiData.deltaY = newState.y - this.state.y;\n }\n\n // Short-circuit if user's callback killed it.\n const shouldUpdate = this.props.onDrag(e, uiData);\n if (shouldUpdate === false) return false;\n\n this.setState(newState);\n };\n\n onDragStop: DraggableEventHandler = (e, coreData) => {\n if (!this.state.dragging) return false;\n\n // Short-circuit if user's callback killed it.\n const shouldStop = this.props.onStop(e, createDraggableData(this, coreData));\n if (shouldStop === false) return false;\n\n log('Draggable: onDragStop: %j', coreData);\n\n const newState: $Shape = {\n dragging: false,\n slackX: 0,\n slackY: 0\n };\n\n // If this is a controlled component, the result of this operation will be to\n // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n const controlled = Boolean(this.props.position);\n if (controlled) {\n const {x, y} = this.props.position;\n newState.x = x;\n newState.y = y;\n }\n\n this.setState(newState);\n };\n\n render(): ReactElement {\n let style = {}, svgTransform = null;\n\n // If this is controlled, we don't want to move it - unless it's dragging.\n const controlled = Boolean(this.props.position);\n const draggable = !controlled || this.state.dragging;\n\n const position = this.props.position || this.props.defaultPosition;\n const transformOpts = {\n // Set left if horizontal drag is enabled\n x: canDragX(this) && draggable ?\n this.state.x :\n position.x,\n\n // Set top if vertical drag is enabled\n y: canDragY(this) && draggable ?\n this.state.y :\n position.y\n };\n\n // If this element was SVG, we use the `transform` attribute.\n if (this.state.isElementSVG) {\n svgTransform = createSVGTransform(transformOpts);\n } else {\n // Add a CSS transform to move the element around. This allows us to move the element around\n // without worrying about whether or not it is relatively or absolutely positioned.\n // If the item you are dragging already has a transform set, wrap it in a so \n // has a clean slate.\n style = createCSSTransform(transformOpts);\n }\n\n const {\n defaultClassName,\n defaultClassNameDragging,\n defaultClassNameDragged\n } = this.props;\n\n const children = React.Children.only(this.props.children);\n\n // Mark with class while dragging\n const className = classNames((children.props.className || ''), defaultClassName, {\n [defaultClassNameDragging]: this.state.dragging,\n [defaultClassNameDragged]: this.state.dragged\n });\n\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return (\n \n {React.cloneElement(children, {\n className: className,\n style: {...children.props.style, ...style},\n transform: svgTransform\n })}\n \n );\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/Draggable.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n warning(\n false,\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `%s` prop on `%s`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n propFullName,\n componentName\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n warning(\n false,\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received %s at index %s.',\n getPostfixForTypeWarning(checker),\n i\n );\n return emptyFunction.thatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/factoryWithTypeCheckers.js\n// module id = 14\n// module chunks = 0","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/object-assign/index.js\n// module id = 15\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== 'production') {\n var invariant = require('fbjs/lib/invariant');\n var warning = require('fbjs/lib/warning');\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/checkPropTypes.js\n// module id = 16\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/factoryWithThrowingShims.js\n// module id = 17\n// module chunks = 0","/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/classnames/index.js\n// module id = 18\n// module chunks = 0","// @flow\nconst prefixes = ['Moz', 'Webkit', 'O', 'ms'];\nexport function getPrefix(prop: string='transform'): string {\n // Checking specifically for 'window.document' is for pseudo-browser server-side\n // environments that define 'window' as the global context.\n // E.g. React-rails (see https://github.com/reactjs/react-rails/pull/84)\n if (typeof window === 'undefined' || typeof window.document === 'undefined') return '';\n\n const style = window.document.documentElement.style;\n\n if (prop in style) return '';\n\n for (let i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n\n return '';\n}\n\nexport function browserPrefixToKey(prop: string, prefix: string): string {\n return prefix ? `${prefix}${kebabToTitleCase(prop)}` : prop;\n}\n\nexport function browserPrefixToStyle(prop: string, prefix: string): string {\n return prefix ? `-${prefix.toLowerCase()}-${prop}` : prop;\n}\n\nfunction kebabToTitleCase(str: string): string {\n let out = '';\n let shouldCapitalize = true;\n for (let i = 0; i < str.length; i++) {\n if (shouldCapitalize) {\n out += str[i].toUpperCase();\n shouldCapitalize = false;\n } else if (str[i] === '-') {\n shouldCapitalize = true;\n } else {\n out += str[i];\n }\n }\n return out;\n}\n\n// Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\nexport default getPrefix();\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/getPrefix.js","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/process/browser.js\n// module id = 20\n// module chunks = 0"]} \ No newline at end of file diff --git a/webapp/libs/react-grid-layout/GridItem.js b/webapp/libs/react-grid-layout/GridItem.js new file mode 100644 index 000000000..807f341dd --- /dev/null +++ b/webapp/libs/react-grid-layout/GridItem.js @@ -0,0 +1,506 @@ +"use strict"; + +exports.__esModule = true; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require("react"); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require("prop-types"); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactDraggable = require("../react-draggable/react-draggable"); + +var _reactResizable = require("../react-resizable"); + +var _utils = require("./utils"); + +var _classnames = require("classnames"); + +var _classnames2 = _interopRequireDefault(_classnames); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * An individual item within a ReactGridLayout. + */ +var GridItem = function (_React$Component) { + _inherits(GridItem, _React$Component); + + function GridItem() { + var _temp, _this, _ret; + + _classCallCheck(this, GridItem); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = { + resizing: null, + dragging: null, + className: "" + }, _temp), _possibleConstructorReturn(_this, _ret); + } + + // Helper for generating column width + GridItem.prototype.calcColWidth = function calcColWidth() { + var _props = this.props, + margin = _props.margin, + containerPadding = _props.containerPadding, + containerWidth = _props.containerWidth, + cols = _props.cols; + + return (containerWidth - margin[0] * (cols - 1) - containerPadding[0] * 2) / cols; + }; + + /** + * Return position on the page given an x, y, w, h. + * left, top, width, height are all in pixels. + * @param {Number} x X coordinate in grid units. + * @param {Number} y Y coordinate in grid units. + * @param {Number} w W coordinate in grid units. + * @param {Number} h H coordinate in grid units. + * @return {Object} Object containing coords. + */ + + + GridItem.prototype.calcPosition = function calcPosition(x, y, w, h, state) { + var _props2 = this.props, + margin = _props2.margin, + containerPadding = _props2.containerPadding, + rowHeight = _props2.rowHeight; + + var colWidth = this.calcColWidth(); + + var out = { + left: Math.round((colWidth + margin[0]) * x + containerPadding[0]), + top: Math.round((rowHeight + margin[1]) * y + containerPadding[1]), + // 0 * Infinity === NaN, which causes problems with resize constraints; + // Fix this if it occurs. + // Note we do it here rather than later because Math.round(Infinity) causes deopt + width: w === Infinity ? w : Math.round(colWidth * w + Math.max(0, w - 1) * margin[0]), + height: h === Infinity ? h : Math.round(rowHeight * h + Math.max(0, h - 1) * margin[1]) + }; + + if (state && state.resizing) { + out.width = Math.round(state.resizing.width); + out.height = Math.round(state.resizing.height); + } + + if (state && state.dragging) { + out.top = Math.round(state.dragging.top); + out.left = Math.round(state.dragging.left); + } + + return out; + }; + + /** + * Translate x and y coordinates from pixels to grid units. + * @param {Number} top Top position (relative to parent) in pixels. + * @param {Number} left Left position (relative to parent) in pixels. + * @return {Object} x and y in grid units. + */ + + + GridItem.prototype.calcXY = function calcXY(top, left) { + var _props3 = this.props, + margin = _props3.margin, + cols = _props3.cols, + rowHeight = _props3.rowHeight, + w = _props3.w, + h = _props3.h, + maxRows = _props3.maxRows; + + var colWidth = this.calcColWidth(); + + // left = colWidth * x + margin * (x + 1) + // l = cx + m(x+1) + // l = cx + mx + m + // l - m = cx + mx + // l - m = x(c + m) + // (l - m) / (c + m) = x + // x = (left - margin) / (coldWidth + margin) + var x = Math.round((left - margin[0]) / (colWidth + margin[0])); + var y = Math.round((top - margin[1]) / (rowHeight + margin[1])); + + // Capping + x = Math.max(Math.min(x, cols - w), 0); + y = Math.max(Math.min(y, maxRows - h), 0); + + return { x: x, y: y }; + }; + + /** + * Given a height and width in pixel values, calculate grid units. + * @param {Number} height Height in pixels. + * @param {Number} width Width in pixels. + * @return {Object} w, h as grid units. + */ + + + GridItem.prototype.calcWH = function calcWH(_ref) { + var height = _ref.height, + width = _ref.width; + var _props4 = this.props, + margin = _props4.margin, + maxRows = _props4.maxRows, + cols = _props4.cols, + rowHeight = _props4.rowHeight, + x = _props4.x, + y = _props4.y; + + var colWidth = this.calcColWidth(); + + // width = colWidth * w - (margin * (w - 1)) + // ... + // w = (width + margin) / (colWidth + margin) + var w = Math.round((width + margin[0]) / (colWidth + margin[0])); + var h = Math.round((height + margin[1]) / (rowHeight + margin[1])); + + // Capping + w = Math.max(Math.min(w, cols - x), 0); + h = Math.max(Math.min(h, maxRows - y), 0); + return { w: w, h: h }; + }; + + /** + * This is where we set the grid item's absolute placement. It gets a little tricky because we want to do it + * well when server rendering, and the only way to do that properly is to use percentage width/left because + * we don't know exactly what the browser viewport is. + * Unfortunately, CSS Transforms, which are great for performance, break in this instance because a percentage + * left is relative to the item itself, not its container! So we cannot use them on the server rendering pass. + * + * @param {Object} pos Position object with width, height, left, top. + * @return {Object} Style object. + */ + + + GridItem.prototype.createStyle = function createStyle(pos) { + var _props5 = this.props, + usePercentages = _props5.usePercentages, + containerWidth = _props5.containerWidth, + useCSSTransforms = _props5.useCSSTransforms; + + + var style = void 0; + // CSS Transforms support (default) + if (useCSSTransforms) { + style = (0, _utils.setTransform)(pos); + } else { + // top,left (slow) + style = (0, _utils.setTopLeft)(pos); + + // This is used for server rendering. + if (usePercentages) { + style.left = (0, _utils.perc)(pos.left / containerWidth); + style.width = (0, _utils.perc)(pos.width / containerWidth); + } + } + + return style; + }; + + /** + * Mix a Draggable instance into a child. + * @param {Element} child Child element. + * @return {Element} Child wrapped in Draggable. + */ + + + GridItem.prototype.mixinDraggable = function mixinDraggable(child) { + return _react2.default.createElement( + _reactDraggable.DraggableCore, + { + onStart: this.onDragHandler("onDragStart"), + onDrag: this.onDragHandler("onDrag"), + onStop: this.onDragHandler("onDragStop"), + handle: this.props.handle, + cancel: ".react-resizable-handle" + (this.props.cancel ? "," + this.props.cancel : "") + }, + child + ); + }; + + /** + * Mix a Resizable instance into a child. + * @param {Element} child Child element. + * @param {Object} position Position object (pixel values) + * @return {Element} Child wrapped in Resizable. + */ + + + GridItem.prototype.mixinResizable = function mixinResizable(child, position) { + var _props6 = this.props, + cols = _props6.cols, + x = _props6.x, + minW = _props6.minW, + minH = _props6.minH, + maxW = _props6.maxW, + maxH = _props6.maxH; + + // This is the max possible width - doesn't go to infinity because of the width of the window + + var maxWidth = this.calcPosition(0, 0, cols - x, 0).width; + + // Calculate min/max constraints using our min & maxes + var mins = this.calcPosition(0, 0, minW, minH); + var maxes = this.calcPosition(0, 0, maxW, maxH); + var minConstraints = [mins.width, mins.height]; + var maxConstraints = [Math.min(maxes.width, maxWidth), Math.min(maxes.height, Infinity)]; + return _react2.default.createElement( + _reactResizable.Resizable, + { + width: position.width, + height: position.height, + minConstraints: minConstraints, + maxConstraints: maxConstraints, + onResizeStop: this.onResizeHandler("onResizeStop"), + onResizeStart: this.onResizeHandler("onResizeStart"), + onResize: this.onResizeHandler("onResize") + }, + child + ); + }; + + /** + * Wrapper around drag events to provide more useful data. + * All drag events call the function with the given handler name, + * with the signature (index, x, y). + * + * @param {String} handlerName Handler name to wrap. + * @return {Function} Handler function. + */ + + + GridItem.prototype.onDragHandler = function onDragHandler(handlerName) { + var _this2 = this; + + return function (e, _ref2) { + var node = _ref2.node, + deltaX = _ref2.deltaX, + deltaY = _ref2.deltaY; + + var handler = _this2.props[handlerName]; + if (!handler) return; + + var newPosition = { top: 0, left: 0 }; + + // Get new XY + switch (handlerName) { + case "onDragStart": + { + // TODO: this wont work on nested parents + var offsetParent = node.offsetParent; + + if (!offsetParent) return; + var parentRect = offsetParent.getBoundingClientRect(); + var clientRect = node.getBoundingClientRect(); + newPosition.left = clientRect.left - parentRect.left + offsetParent.scrollLeft; + newPosition.top = clientRect.top - parentRect.top + offsetParent.scrollTop; + _this2.setState({ dragging: newPosition }); + break; + } + case "onDrag": + if (!_this2.state.dragging) throw new Error("onDrag called before onDragStart."); + newPosition.left = _this2.state.dragging.left + deltaX; + newPosition.top = _this2.state.dragging.top + deltaY; + _this2.setState({ dragging: newPosition }); + break; + case "onDragStop": + if (!_this2.state.dragging) throw new Error("onDragEnd called before onDragStart."); + newPosition.left = _this2.state.dragging.left; + newPosition.top = _this2.state.dragging.top; + _this2.setState({ dragging: null }); + break; + default: + throw new Error("onDragHandler called with unrecognized handlerName: " + handlerName); + } + + var _calcXY = _this2.calcXY(newPosition.top, newPosition.left), + x = _calcXY.x, + y = _calcXY.y; + + return handler.call(_this2, _this2.props.i, x, y, { e: e, node: node, newPosition: newPosition }); + }; + }; + + /** + * Wrapper around drag events to provide more useful data. + * All drag events call the function with the given handler name, + * with the signature (index, x, y). + * + * @param {String} handlerName Handler name to wrap. + * @return {Function} Handler function. + */ + + + GridItem.prototype.onResizeHandler = function onResizeHandler(handlerName) { + var _this3 = this; + + return function (e, _ref3) { + var node = _ref3.node, + size = _ref3.size; + + var handler = _this3.props[handlerName]; + if (!handler) return; + var _props7 = _this3.props, + cols = _props7.cols, + x = _props7.x, + i = _props7.i, + maxW = _props7.maxW, + minW = _props7.minW, + maxH = _props7.maxH, + minH = _props7.minH; + + // Get new XY + + var _calcWH = _this3.calcWH(size), + w = _calcWH.w, + h = _calcWH.h; + + // Cap w at numCols + + + w = Math.min(w, cols - x); + // Ensure w is at least 1 + w = Math.max(w, 1); + + // Min/max capping + w = Math.max(Math.min(w, maxW), minW); + h = Math.max(Math.min(h, maxH), minH); + + _this3.setState({ resizing: handlerName === "onResizeStop" ? null : size }); + + handler.call(_this3, i, w, h, { e: e, node: node, size: size }); + }; + }; + + GridItem.prototype.render = function render() { + var _props8 = this.props, + x = _props8.x, + y = _props8.y, + w = _props8.w, + h = _props8.h, + isDraggable = _props8.isDraggable, + isResizable = _props8.isResizable, + useCSSTransforms = _props8.useCSSTransforms; + + + var pos = this.calcPosition(x, y, w, h, this.state); + var child = _react2.default.Children.only(this.props.children); + + // Create the child element. We clone the existing element but modify its className and style. + var newChild = _react2.default.cloneElement(child, { + className: (0, _classnames2.default)("react-grid-item", child.props.className, this.props.className, { + static: this.props.static, + resizing: Boolean(this.state.resizing), + "react-draggable": isDraggable, + "react-draggable-dragging": Boolean(this.state.dragging), + cssTransforms: useCSSTransforms + }), + // We can set the width and height on the child, but unfortunately we can't set the position. + style: _extends({}, this.props.style, child.props.style, this.createStyle(pos)) + }); + + // Resizable support. This is usually on but the user can toggle it off. + if (isResizable) newChild = this.mixinResizable(newChild, pos); + + // Draggable support. This is always on, except for with placeholders. + if (isDraggable) newChild = this.mixinDraggable(newChild); + + return newChild; + }; + + return GridItem; +}(_react2.default.Component); + +GridItem.propTypes = { + // Children must be only a single element + children: _propTypes2.default.element, + + // General grid attributes + cols: _propTypes2.default.number.isRequired, + containerWidth: _propTypes2.default.number.isRequired, + rowHeight: _propTypes2.default.number.isRequired, + margin: _propTypes2.default.array.isRequired, + maxRows: _propTypes2.default.number.isRequired, + containerPadding: _propTypes2.default.array.isRequired, + + // These are all in grid units + x: _propTypes2.default.number.isRequired, + y: _propTypes2.default.number.isRequired, + w: _propTypes2.default.number.isRequired, + h: _propTypes2.default.number.isRequired, + + // All optional + minW: function minW(props, propName) { + var value = props[propName]; + if (typeof value !== "number") return new Error("minWidth not Number"); + if (value > props.w || value > props.maxW) return new Error("minWidth larger than item width/maxWidth"); + }, + + maxW: function maxW(props, propName) { + var value = props[propName]; + if (typeof value !== "number") return new Error("maxWidth not Number"); + if (value < props.w || value < props.minW) return new Error("maxWidth smaller than item width/minWidth"); + }, + + minH: function minH(props, propName) { + var value = props[propName]; + if (typeof value !== "number") return new Error("minHeight not Number"); + if (value > props.h || value > props.maxH) return new Error("minHeight larger than item height/maxHeight"); + }, + + maxH: function maxH(props, propName) { + var value = props[propName]; + if (typeof value !== "number") return new Error("maxHeight not Number"); + if (value < props.h || value < props.minH) return new Error("maxHeight smaller than item height/minHeight"); + }, + + // ID is nice to have for callbacks + i: _propTypes2.default.string.isRequired, + + // Functions + onDragStop: _propTypes2.default.func, + onDragStart: _propTypes2.default.func, + onDrag: _propTypes2.default.func, + onResizeStop: _propTypes2.default.func, + onResizeStart: _propTypes2.default.func, + onResize: _propTypes2.default.func, + + // Flags + isDraggable: _propTypes2.default.bool.isRequired, + isResizable: _propTypes2.default.bool.isRequired, + static: _propTypes2.default.bool, + + // Use CSS transforms instead of top/left + useCSSTransforms: _propTypes2.default.bool.isRequired, + + // Others + className: _propTypes2.default.string, + // Selector for draggable handle + handle: _propTypes2.default.string, + // Selector for draggable cancel (see react-draggable) + cancel: _propTypes2.default.string +}; +GridItem.defaultProps = { + className: "", + cancel: "", + handle: "", + minH: 1, + minW: 1, + maxH: Infinity, + maxW: Infinity +}; +exports.default = GridItem; diff --git a/webapp/libs/react-grid-layout/ReactGridLayout.js b/webapp/libs/react-grid-layout/ReactGridLayout.js new file mode 100644 index 000000000..bec792964 --- /dev/null +++ b/webapp/libs/react-grid-layout/ReactGridLayout.js @@ -0,0 +1,612 @@ +"use strict"; + +exports.__esModule = true; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require("react"); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require("prop-types"); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _lodash = require("lodash.isequal"); + +var _lodash2 = _interopRequireDefault(_lodash); + +var _classnames = require("classnames"); + +var _classnames2 = _interopRequireDefault(_classnames); + +var _utils = require("./utils"); + +var _GridItem = require("./GridItem"); + +var _GridItem2 = _interopRequireDefault(_GridItem); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +// End Types + +/** + * A reactive, fluid grid layout with draggable, resizable components. + */ + +// Types +var ReactGridLayout = function (_React$Component) { + _inherits(ReactGridLayout, _React$Component); + + // TODO publish internal ReactClass displayName transform + function ReactGridLayout(props, context) { + _classCallCheck(this, ReactGridLayout); + + var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context)); + + _initialiseProps.call(_this); + + (0, _utils.autoBindHandlers)(_this, ["onDragStart", "onDrag", "onDragStop", "onResizeStart", "onResize", "onResizeStop"]); + return _this; + } + + ReactGridLayout.prototype.componentDidMount = function componentDidMount() { + this.setState({ mounted: true }); + // Possibly call back with layout on mount. This should be done after correcting the layout width + // to ensure we don't rerender with the wrong width. + this.onLayoutMaybeChanged(this.state.layout, this.props.layout); + }; + + ReactGridLayout.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { + var newLayoutBase = void 0; + // Legacy support for compactType + // Allow parent to set layout directly. + if (!(0, _lodash2.default)(nextProps.layout, this.props.layout) || nextProps.compactType !== this.props.compactType) { + newLayoutBase = nextProps.layout; + } else if (!(0, _utils.childrenEqual)(this.props.children, nextProps.children)) { + // If children change, also regenerate the layout. Use our state + // as the base in case because it may be more up to date than + // what is in props. + newLayoutBase = this.state.layout; + } + + // We need to regenerate the layout. + if (newLayoutBase) { + var newLayout = (0, _utils.synchronizeLayoutWithChildren)(newLayoutBase, nextProps.children, nextProps.cols, this.compactType(nextProps)); + var _oldLayout = this.state.layout; + this.setState({ layout: newLayout }); + this.onLayoutMaybeChanged(newLayout, _oldLayout); + } + }; + + /** + * Calculates a pixel value for the container. + * @return {String} Container height in pixels. + */ + + + ReactGridLayout.prototype.containerHeight = function containerHeight() { + if (!this.props.autoSize) return; + var nbRow = (0, _utils.bottom)(this.state.layout); + var containerPaddingY = this.props.containerPadding ? this.props.containerPadding[1] : this.props.margin[1]; + return nbRow * this.props.rowHeight + (nbRow - 1) * this.props.margin[1] + containerPaddingY * 2 + "px"; + }; + + ReactGridLayout.prototype.compactType = function compactType(props) { + if (!props) props = this.props; + return props.verticalCompact === false ? null : props.compactType; + }; + + /** + * When dragging starts + * @param {String} i Id of the child + * @param {Number} x X position of the move + * @param {Number} y Y position of the move + * @param {Event} e The mousedown event + * @param {Element} node The current dragging DOM element + */ + + + ReactGridLayout.prototype.onDragStart = function onDragStart(i, x, y, _ref) { + var e = _ref.e, + node = _ref.node; + var layout = this.state.layout; + + var l = (0, _utils.getLayoutItem)(layout, i); + if (!l) return; + + this.setState({ + oldDragItem: (0, _utils.cloneLayoutItem)(l), + oldLayout: this.state.layout + }); + + return this.props.onDragStart(layout, l, l, null, e, node); + }; + + /** + * Each drag movement create a new dragelement and move the element to the dragged location + * @param {String} i Id of the child + * @param {Number} x X position of the move + * @param {Number} y Y position of the move + * @param {Event} e The mousedown event + * @param {Element} node The current dragging DOM element + */ + + + ReactGridLayout.prototype.onDrag = function onDrag(i, x, y, _ref2) { + var e = _ref2.e, + node = _ref2.node; + var oldDragItem = this.state.oldDragItem; + var layout = this.state.layout; + var cols = this.props.cols; + + var l = (0, _utils.getLayoutItem)(layout, i); + if (!l) return; + + // Create placeholder (display only) + var placeholder = { + w: l.w, + h: l.h, + x: l.x, + y: l.y, + placeholder: true, + i: i + }; + + // Move the element to the dragged location. + var isUserAction = true; + layout = (0, _utils.moveElement)(layout, l, x, y, isUserAction, this.props.preventCollision, this.compactType(), cols); + + this.props.onDrag(layout, oldDragItem, l, placeholder, e, node); + + this.setState({ + layout: (0, _utils.compact)(layout, this.compactType(), cols), + activeDrag: placeholder + }); + }; + + /** + * When dragging stops, figure out which position the element is closest to and update its x and y. + * @param {String} i Index of the child. + * @param {Number} x X position of the move + * @param {Number} y Y position of the move + * @param {Event} e The mousedown event + * @param {Element} node The current dragging DOM element + */ + + + ReactGridLayout.prototype.onDragStop = function onDragStop(i, x, y, _ref3) { + var e = _ref3.e, + node = _ref3.node; + var oldDragItem = this.state.oldDragItem; + var layout = this.state.layout; + var _props = this.props, + cols = _props.cols, + preventCollision = _props.preventCollision; + + var l = (0, _utils.getLayoutItem)(layout, i); + if (!l) return; + + // Move the element here + var isUserAction = true; + layout = (0, _utils.moveElement)(layout, l, x, y, isUserAction, preventCollision, this.compactType(), cols); + + this.props.onDragStop(layout, oldDragItem, l, null, e, node); + + // Set state + var newLayout = (0, _utils.compact)(layout, this.compactType(), cols); + var oldLayout = this.state.oldLayout; + + this.setState({ + activeDrag: null, + layout: newLayout, + oldDragItem: null, + oldLayout: null + }); + + this.onLayoutMaybeChanged(newLayout, oldLayout); + }; + + ReactGridLayout.prototype.onLayoutMaybeChanged = function onLayoutMaybeChanged(newLayout, oldLayout) { + if (!oldLayout) oldLayout = this.state.layout; + if (!(0, _lodash2.default)(oldLayout, newLayout)) { + this.props.onLayoutChange(newLayout); + } + }; + + ReactGridLayout.prototype.onResizeStart = function onResizeStart(i, w, h, _ref4) { + var e = _ref4.e, + node = _ref4.node; + var layout = this.state.layout; + + var l = (0, _utils.getLayoutItem)(layout, i); + if (!l) return; + + this.setState({ + oldResizeItem: (0, _utils.cloneLayoutItem)(l), + oldLayout: this.state.layout + }); + + this.props.onResizeStart(layout, l, l, null, e, node); + }; + + ReactGridLayout.prototype.onResize = function onResize(i, w, h, _ref5) { + var e = _ref5.e, + node = _ref5.node; + var _state = this.state, + layout = _state.layout, + oldResizeItem = _state.oldResizeItem; + var _props2 = this.props, + cols = _props2.cols, + preventCollision = _props2.preventCollision; + + var l = (0, _utils.getLayoutItem)(layout, i); + if (!l) return; + + // Something like quad tree should be used + // to find collisions faster + var hasCollisions = void 0; + if (preventCollision) { + var collisions = (0, _utils.getAllCollisions)(layout, _extends({}, l, { w: w, h: h })).filter(function (layoutItem) { + return layoutItem.i !== l.i; + }); + hasCollisions = collisions.length > 0; + + // If we're colliding, we need adjust the placeholder. + if (hasCollisions) { + // adjust w && h to maximum allowed space + var leastX = Infinity, + leastY = Infinity; + collisions.forEach(function (layoutItem) { + if (layoutItem.x > l.x) leastX = Math.min(leastX, layoutItem.x); + if (layoutItem.y > l.y) leastY = Math.min(leastY, layoutItem.y); + }); + + if (Number.isFinite(leastX)) l.w = leastX - l.x; + if (Number.isFinite(leastY)) l.h = leastY - l.y; + } + } + + if (!hasCollisions) { + // Set new width and height. + l.w = w; + l.h = h; + } + + // Create placeholder element (display only) + var placeholder = { + w: l.w, + h: l.h, + x: l.x, + y: l.y, + static: true, + i: i + }; + + this.props.onResize(layout, oldResizeItem, l, placeholder, e, node); + + // Re-compact the layout and set the drag placeholder. + this.setState({ + layout: (0, _utils.compact)(layout, this.compactType(), cols), + activeDrag: placeholder + }); + }; + + ReactGridLayout.prototype.onResizeStop = function onResizeStop(i, w, h, _ref6) { + var e = _ref6.e, + node = _ref6.node; + var _state2 = this.state, + layout = _state2.layout, + oldResizeItem = _state2.oldResizeItem; + var cols = this.props.cols; + + var l = (0, _utils.getLayoutItem)(layout, i); + + this.props.onResizeStop(layout, oldResizeItem, l, null, e, node); + + // Set state + var newLayout = (0, _utils.compact)(layout, this.compactType(), cols); + var oldLayout = this.state.oldLayout; + + this.setState({ + activeDrag: null, + layout: newLayout, + oldResizeItem: null, + oldLayout: null + }); + + this.onLayoutMaybeChanged(newLayout, oldLayout); + }; + + /** + * Create a placeholder object. + * @return {Element} Placeholder div. + */ + + + ReactGridLayout.prototype.placeholder = function placeholder() { + var activeDrag = this.state.activeDrag; + + if (!activeDrag) return null; + var _props3 = this.props, + width = _props3.width, + cols = _props3.cols, + margin = _props3.margin, + containerPadding = _props3.containerPadding, + rowHeight = _props3.rowHeight, + maxRows = _props3.maxRows, + useCSSTransforms = _props3.useCSSTransforms; + + // {...this.state.activeDrag} is pretty slow, actually + + return _react2.default.createElement( + _GridItem2.default, + { + w: activeDrag.w, + h: activeDrag.h, + x: activeDrag.x, + y: activeDrag.y, + i: activeDrag.i, + className: "react-grid-placeholder", + containerWidth: width, + cols: cols, + margin: margin, + containerPadding: containerPadding || margin, + maxRows: maxRows, + rowHeight: rowHeight, + isDraggable: false, + isResizable: false, + useCSSTransforms: useCSSTransforms + }, + _react2.default.createElement("div", null) + ); + }; + + /** + * Given a grid item, set its style attributes & surround in a . + * @param {Element} child React element. + * @return {Element} Element wrapped in draggable and properly placed. + */ + + + ReactGridLayout.prototype.processGridItem = function processGridItem(child) { + if (!child || !child.key) return; + var l = (0, _utils.getLayoutItem)(this.state.layout, String(child.key)); + if (!l) return null; + var _props4 = this.props, + width = _props4.width, + cols = _props4.cols, + margin = _props4.margin, + containerPadding = _props4.containerPadding, + rowHeight = _props4.rowHeight, + maxRows = _props4.maxRows, + isDraggable = _props4.isDraggable, + isResizable = _props4.isResizable, + useCSSTransforms = _props4.useCSSTransforms, + draggableCancel = _props4.draggableCancel, + draggableHandle = _props4.draggableHandle; + var mounted = this.state.mounted; + + // Parse 'static'. Any properties defined directly on the grid item will take precedence. + + var draggable = Boolean(!l.static && isDraggable && (l.isDraggable || l.isDraggable == null)); + var resizable = Boolean(!l.static && isResizable && (l.isResizable || l.isResizable == null)); + + return _react2.default.createElement( + _GridItem2.default, + { + containerWidth: width, + cols: cols, + margin: margin, + containerPadding: containerPadding || margin, + maxRows: maxRows, + rowHeight: rowHeight, + cancel: draggableCancel, + handle: draggableHandle, + onDragStop: this.onDragStop, + onDragStart: this.onDragStart, + onDrag: this.onDrag, + onResizeStart: this.onResizeStart, + onResize: this.onResize, + onResizeStop: this.onResizeStop, + isDraggable: draggable, + isResizable: resizable, + useCSSTransforms: useCSSTransforms && mounted, + usePercentages: !mounted, + w: l.w, + h: l.h, + x: l.x, + y: l.y, + i: l.i, + minH: l.minH, + minW: l.minW, + maxH: l.maxH, + maxW: l.maxW, + "static": l.static + }, + child + ); + }; + + ReactGridLayout.prototype.render = function render() { + var _this2 = this; + + var _props5 = this.props, + className = _props5.className, + style = _props5.style; + + + var mergedClassName = (0, _classnames2.default)("react-grid-layout", className); + var mergedStyle = _extends({ + height: this.containerHeight() + }, style); + + return _react2.default.createElement( + "div", + { className: mergedClassName, style: mergedStyle }, + _react2.default.Children.map(this.props.children, function (child) { + return _this2.processGridItem(child); + }), + this.placeholder() + ); + }; + + return ReactGridLayout; +}(_react2.default.Component); + +ReactGridLayout.displayName = "ReactGridLayout"; +ReactGridLayout.propTypes = { + // + // Basic props + // + className: _propTypes2.default.string, + style: _propTypes2.default.object, + + // This can be set explicitly. If it is not set, it will automatically + // be set to the container width. Note that resizes will *not* cause this to adjust. + // If you need that behavior, use WidthProvider. + width: _propTypes2.default.number, + + // If true, the container height swells and contracts to fit contents + autoSize: _propTypes2.default.bool, + // # of cols. + cols: _propTypes2.default.number, + + // A selector that will not be draggable. + draggableCancel: _propTypes2.default.string, + // A selector for the draggable handler + draggableHandle: _propTypes2.default.string, + + // Deprecated + verticalCompact: function verticalCompact(props) { + if (props.verticalCompact === false && process.env.NODE_ENV !== "production") { + console.warn( + // eslint-disable-line no-console + "`verticalCompact` on is deprecated and will be removed soon. " + 'Use `compactType`: "horizontal" | "vertical" | null.'); + } + }, + // Choose vertical or hotizontal compaction + compactType: _propTypes2.default.oneOf(["vertical", "horizontal"]), + + // layout is an array of object with the format: + // {x: Number, y: Number, w: Number, h: Number, i: String} + layout: function layout(props) { + var layout = props.layout; + // I hope you're setting the data-grid property on the grid items + if (layout === undefined) return; + (0, _utils.validateLayout)(layout, "layout"); + }, + + // + // Grid Dimensions + // + + // Margin between items [x, y] in px + margin: _propTypes2.default.arrayOf(_propTypes2.default.number), + // Padding inside the container [x, y] in px + containerPadding: _propTypes2.default.arrayOf(_propTypes2.default.number), + // Rows have a static height, but you can change this based on breakpoints if you like + rowHeight: _propTypes2.default.number, + // Default Infinity, but you can specify a max here if you like. + // Note that this isn't fully fleshed out and won't error if you specify a layout that + // extends beyond the row capacity. It will, however, not allow users to drag/resize + // an item past the barrier. They can push items beyond the barrier, though. + // Intentionally not documented for this reason. + maxRows: _propTypes2.default.number, + + // + // Flags + // + isDraggable: _propTypes2.default.bool, + isResizable: _propTypes2.default.bool, + // If true, grid items won't change position when being dragged over. + preventCollision: _propTypes2.default.bool, + // Use CSS transforms instead of top/left + useCSSTransforms: _propTypes2.default.bool, + + // + // Callbacks + // + + // Callback so you can save the layout. Calls after each drag & resize stops. + onLayoutChange: _propTypes2.default.func, + + // Calls when drag starts. Callback is of the signature (layout, oldItem, newItem, placeholder, e, ?node). + // All callbacks below have the same signature. 'start' and 'stop' callbacks omit the 'placeholder'. + onDragStart: _propTypes2.default.func, + // Calls on each drag movement. + onDrag: _propTypes2.default.func, + // Calls when drag is complete. + onDragStop: _propTypes2.default.func, + //Calls when resize starts. + onResizeStart: _propTypes2.default.func, + // Calls when resize movement happens. + onResize: _propTypes2.default.func, + // Calls when resize is complete. + onResizeStop: _propTypes2.default.func, + + // + // Other validations + // + + // Children must not have duplicate keys. + children: function children(props, propName) { + var children = props[propName]; + + // Check children keys for duplicates. Throw if found. + var keys = {}; + _react2.default.Children.forEach(children, function (child) { + if (keys[child.key]) { + throw new Error('Duplicate child key "' + child.key + '" found! This will cause problems in ReactGridLayout.'); + } + keys[child.key] = true; + }); + } +}; +ReactGridLayout.defaultProps = { + autoSize: true, + cols: 12, + className: "", + style: {}, + draggableHandle: "", + draggableCancel: "", + containerPadding: null, + rowHeight: 150, + maxRows: Infinity, // infinite vertical growth + layout: [], + margin: [10, 10], + isDraggable: true, + isResizable: true, + useCSSTransforms: true, + verticalCompact: true, + compactType: "vertical", + preventCollision: false, + onLayoutChange: _utils.noop, + onDragStart: _utils.noop, + onDrag: _utils.noop, + onDragStop: _utils.noop, + onResizeStart: _utils.noop, + onResize: _utils.noop, + onResizeStop: _utils.noop +}; + +var _initialiseProps = function _initialiseProps() { + this.state = { + activeDrag: null, + layout: (0, _utils.synchronizeLayoutWithChildren)(this.props.layout, this.props.children, this.props.cols, + // Legacy support for verticalCompact: false + this.compactType()), + mounted: false, + oldDragItem: null, + oldLayout: null, + oldResizeItem: null + }; +}; + +exports.default = ReactGridLayout; \ No newline at end of file diff --git a/webapp/libs/react-grid-layout/ResponsiveReactGridLayout.js b/webapp/libs/react-grid-layout/ResponsiveReactGridLayout.js new file mode 100644 index 000000000..808ef5793 --- /dev/null +++ b/webapp/libs/react-grid-layout/ResponsiveReactGridLayout.js @@ -0,0 +1,227 @@ +"use strict"; + +exports.__esModule = true; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require("react"); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require("prop-types"); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _lodash = require("lodash.isequal"); + +var _lodash2 = _interopRequireDefault(_lodash); + +var _utils = require("./utils"); + +var _responsiveUtils = require("./responsiveUtils"); + +var _ReactGridLayout = require("./ReactGridLayout"); + +var _ReactGridLayout2 = _interopRequireDefault(_ReactGridLayout); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var type = function type(obj) { + return Object.prototype.toString.call(obj); +}; + +var ResponsiveReactGridLayout = function (_React$Component) { + _inherits(ResponsiveReactGridLayout, _React$Component); + + function ResponsiveReactGridLayout() { + var _temp, _this, _ret; + + _classCallCheck(this, ResponsiveReactGridLayout); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = _this.generateInitialState(), _this.onLayoutChange = function (layout) { + var _extends2; + + _this.props.onLayoutChange(layout, _extends({}, _this.props.layouts, (_extends2 = {}, _extends2[_this.state.breakpoint] = layout, _extends2))); + }, _temp), _possibleConstructorReturn(_this, _ret); + } + // This should only include propTypes needed in this code; RGL itself + // will do validation of the rest props passed to it. + + + ResponsiveReactGridLayout.prototype.generateInitialState = function generateInitialState() { + var _props = this.props, + width = _props.width, + breakpoints = _props.breakpoints, + layouts = _props.layouts, + cols = _props.cols; + + var breakpoint = (0, _responsiveUtils.getBreakpointFromWidth)(breakpoints, width); + var colNo = (0, _responsiveUtils.getColsFromBreakpoint)(breakpoint, cols); + // verticalCompact compatibility, now deprecated + var compactType = this.props.verticalCompact === false ? null : this.props.compactType; + // Get the initial layout. This can tricky; we try to generate one however possible if one doesn't exist + // for this layout. + var initialLayout = (0, _responsiveUtils.findOrGenerateResponsiveLayout)(layouts, breakpoints, breakpoint, breakpoint, colNo, compactType); + + return { + layout: initialLayout, + breakpoint: breakpoint, + cols: colNo + }; + }; + + ResponsiveReactGridLayout.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { + // Allow parent to set width or breakpoint directly. + if (nextProps.width != this.props.width || nextProps.breakpoint !== this.props.breakpoint || !(0, _lodash2.default)(nextProps.breakpoints, this.props.breakpoints) || !(0, _lodash2.default)(nextProps.cols, this.props.cols)) { + this.onWidthChange(nextProps); + } else if (!(0, _lodash2.default)(nextProps.layouts, this.props.layouts)) { + // Allow parent to set layouts directly. + var _state = this.state, + _breakpoint = _state.breakpoint, + _cols = _state.cols; + + // Since we're setting an entirely new layout object, we must generate a new responsive layout + // if one does not exist. + + var newLayout = (0, _responsiveUtils.findOrGenerateResponsiveLayout)(nextProps.layouts, nextProps.breakpoints, _breakpoint, _breakpoint, _cols, nextProps.compactType); + this.setState({ layout: newLayout }); + } + }; + + // wrap layouts so we do not need to pass layouts to child + + + /** + * When the width changes work through breakpoints and reset state with the new width & breakpoint. + * Width changes are necessary to figure out the widget widths. + */ + ResponsiveReactGridLayout.prototype.onWidthChange = function onWidthChange(nextProps) { + var breakpoints = nextProps.breakpoints, + cols = nextProps.cols, + layouts = nextProps.layouts, + compactType = nextProps.compactType; + + var newBreakpoint = nextProps.breakpoint || (0, _responsiveUtils.getBreakpointFromWidth)(nextProps.breakpoints, nextProps.width); + + var lastBreakpoint = this.state.breakpoint; + + // Breakpoint change + if (lastBreakpoint !== newBreakpoint || this.props.breakpoints !== breakpoints || this.props.cols !== cols) { + // Preserve the current layout if the current breakpoint is not present in the next layouts. + if (!(lastBreakpoint in layouts)) layouts[lastBreakpoint] = (0, _utils.cloneLayout)(this.state.layout); + + // Find or generate a new layout. + var newCols = (0, _responsiveUtils.getColsFromBreakpoint)(newBreakpoint, cols); + var _layout = (0, _responsiveUtils.findOrGenerateResponsiveLayout)(layouts, breakpoints, newBreakpoint, lastBreakpoint, newCols, compactType); + + // This adds missing items. + _layout = (0, _utils.synchronizeLayoutWithChildren)(_layout, nextProps.children, newCols, compactType); + + // Store the new layout. + layouts[newBreakpoint] = _layout; + + // callbacks + this.props.onLayoutChange(_layout, layouts); + this.props.onBreakpointChange(newBreakpoint, newCols); + this.props.onWidthChange(nextProps.width, nextProps.margin, newCols, nextProps.containerPadding); + + this.setState({ + breakpoint: newBreakpoint, + layout: _layout, + cols: newCols + }); + } + }; + + ResponsiveReactGridLayout.prototype.render = function render() { + /* eslint-disable no-unused-vars */ + var _props2 = this.props, + breakpoint = _props2.breakpoint, + breakpoints = _props2.breakpoints, + cols = _props2.cols, + layouts = _props2.layouts, + onBreakpointChange = _props2.onBreakpointChange, + onLayoutChange = _props2.onLayoutChange, + onWidthChange = _props2.onWidthChange, + other = _objectWithoutProperties(_props2, ["breakpoint", "breakpoints", "cols", "layouts", "onBreakpointChange", "onLayoutChange", "onWidthChange"]); + /* eslint-enable no-unused-vars */ + + return _react2.default.createElement(_ReactGridLayout2.default, _extends({}, other, { + onLayoutChange: this.onLayoutChange, + layout: this.state.layout, + cols: this.state.cols + })); + }; + + return ResponsiveReactGridLayout; +}(_react2.default.Component); + +ResponsiveReactGridLayout.propTypes = { + // + // Basic props + // + + // Optional, but if you are managing width yourself you may want to set the breakpoint + // yourself as well. + breakpoint: _propTypes2.default.string, + + // {name: pxVal}, e.g. {lg: 1200, md: 996, sm: 768, xs: 480} + breakpoints: _propTypes2.default.object, + + // # of cols. This is a breakpoint -> cols map + cols: _propTypes2.default.object, + + // layouts is an object mapping breakpoints to layouts. + // e.g. {lg: Layout, md: Layout, ...} + layouts: function layouts(props, propName) { + if (type(props[propName]) !== "[object Object]") { + throw new Error("Layout property must be an object. Received: " + type(props[propName])); + } + Object.keys(props[propName]).forEach(function (key) { + if (!(key in props.breakpoints)) { + throw new Error("Each key in layouts must align with a key in breakpoints."); + } + (0, _utils.validateLayout)(props.layouts[key], "layouts." + key); + }); + }, + + + // The width of this component. + // Required in this propTypes stanza because generateInitialState() will fail without it. + width: _propTypes2.default.number.isRequired, + + // + // Callbacks + // + + // Calls back with breakpoint and new # cols + onBreakpointChange: _propTypes2.default.func, + + // Callback so you can save the layout. + // Calls back with (currentLayout, allLayouts). allLayouts are keyed by breakpoint. + onLayoutChange: _propTypes2.default.func, + + // Calls back with (containerWidth, margin, cols, containerPadding) + onWidthChange: _propTypes2.default.func +}; +ResponsiveReactGridLayout.defaultProps = { + breakpoints: { lg: 1200, md: 996, sm: 768, xs: 480, xxs: 0 }, + cols: { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 }, + layouts: {}, + onBreakpointChange: _utils.noop, + onLayoutChange: _utils.noop, + onWidthChange: _utils.noop +}; +exports.default = ResponsiveReactGridLayout; \ No newline at end of file diff --git a/webapp/libs/react-grid-layout/components/WidthProvider.js b/webapp/libs/react-grid-layout/components/WidthProvider.js new file mode 100644 index 000000000..530db456a --- /dev/null +++ b/webapp/libs/react-grid-layout/components/WidthProvider.js @@ -0,0 +1,94 @@ +"use strict"; + +exports.__esModule = true; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +exports.default = WidthProvider; + +var _react = require("react"); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require("prop-types"); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactDom = require("react-dom"); + +var _reactDom2 = _interopRequireDefault(_reactDom); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/* + * A simple HOC that provides facility for listening to container resizes. + */ +function WidthProvider(ComposedComponent) { + var _class, _temp2; + + return _temp2 = _class = function (_React$Component) { + _inherits(WidthProvider, _React$Component); + + function WidthProvider() { + var _temp, _this, _ret; + + _classCallCheck(this, WidthProvider); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = { + width: 1280 + }, _this.mounted = false, _this.onWindowResize = function () { + if (!_this.mounted) return; + // eslint-disable-next-line + var node = _reactDom2.default.findDOMNode(_this); // Flow casts this to Text | Element + if (node instanceof HTMLElement) _this.setState({ width: node.offsetWidth }); + }, _temp), _possibleConstructorReturn(_this, _ret); + } + + WidthProvider.prototype.componentDidMount = function componentDidMount() { + this.mounted = true; + + window.addEventListener("resize", this.onWindowResize); + // Call to properly set the breakpoint and resize the elements. + // Note that if you're doing a full-width element, this can get a little wonky if a scrollbar + // appears because of the grid. In that case, fire your own resize event, or set `overflow: scroll` on your body. + this.onWindowResize(); + }; + + WidthProvider.prototype.componentWillUnmount = function componentWillUnmount() { + this.mounted = false; + window.removeEventListener("resize", this.onWindowResize); + }; + + WidthProvider.prototype.render = function render() { + var _props = this.props, + measureBeforeMount = _props.measureBeforeMount, + rest = _objectWithoutProperties(_props, ["measureBeforeMount"]); + + if (measureBeforeMount && !this.mounted) { + return _react2.default.createElement("div", { className: this.props.className, style: this.props.style }); + } + + return _react2.default.createElement(ComposedComponent, _extends({}, rest, this.state)); + }; + + return WidthProvider; + }(_react2.default.Component), _class.defaultProps = { + measureBeforeMount: false + }, _class.propTypes = { + // If true, will not render children until mounted. Useful for getting the exact width before + // rendering, to prevent any unsightly resizing. + measureBeforeMount: _propTypes2.default.bool + }, _temp2; +} \ No newline at end of file diff --git a/webapp/libs/react-grid-layout/css/styles.css b/webapp/libs/react-grid-layout/css/styles.css new file mode 100644 index 000000000..dff787025 --- /dev/null +++ b/webapp/libs/react-grid-layout/css/styles.css @@ -0,0 +1,53 @@ +.react-grid-layout { + position: relative; + transition: height 200ms ease; +} +.react-grid-item { + transition: all 200ms ease; + transition-property: left, top; +} +.react-grid-item.cssTransforms { + transition-property: transform; +} +.react-grid-item.resizing { + z-index: 1; + will-change: width, height; +} + +.react-grid-item.react-draggable-dragging { + transition: none; + z-index: 3; + will-change: transform; +} + +.react-grid-item.react-grid-placeholder { + background: red; + opacity: 0.2; + transition-duration: 100ms; + z-index: 2; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; +} + +.react-grid-item > .react-resizable-handle { + position: absolute; + width: 20px; + height: 20px; + bottom: 0; + right: 0; + cursor: se-resize; +} + +.react-grid-item > .react-resizable-handle::after { + content: ""; + position: absolute; + right: 3px; + bottom: 3px; + width: 5px; + height: 5px; + border-right: 2px solid rgba(0, 0, 0, 0.4); + border-bottom: 2px solid rgba(0, 0, 0, 0.4); +} diff --git a/webapp/libs/react-grid-layout/index.js b/webapp/libs/react-grid-layout/index.js new file mode 100644 index 000000000..e52f31379 --- /dev/null +++ b/webapp/libs/react-grid-layout/index.js @@ -0,0 +1,5 @@ +module.exports = require('./ReactGridLayout').default; +module.exports.utils = require('./utils'); +module.exports.Responsive = require('./ResponsiveReactGridLayout').default; +module.exports.Responsive.utils = require('./responsiveUtils'); +module.exports.WidthProvider = require('./components/WidthProvider').default; diff --git a/webapp/libs/react-grid-layout/responsiveUtils.js b/webapp/libs/react-grid-layout/responsiveUtils.js new file mode 100644 index 000000000..94d155c09 --- /dev/null +++ b/webapp/libs/react-grid-layout/responsiveUtils.js @@ -0,0 +1,87 @@ +"use strict"; + +exports.__esModule = true; +exports.getBreakpointFromWidth = getBreakpointFromWidth; +exports.getColsFromBreakpoint = getColsFromBreakpoint; +exports.findOrGenerateResponsiveLayout = findOrGenerateResponsiveLayout; +exports.sortBreakpoints = sortBreakpoints; + +var _utils = require("./utils"); + +/** + * Given a width, find the highest breakpoint that matches is valid for it (width > breakpoint). + * + * @param {Object} breakpoints Breakpoints object (e.g. {lg: 1200, md: 960, ...}) + * @param {Number} width Screen width. + * @return {String} Highest breakpoint that is less than width. + */ +function getBreakpointFromWidth(breakpoints, width) { + var sorted = sortBreakpoints(breakpoints); + var matching = sorted[0]; + for (var i = 1, len = sorted.length; i < len; i++) { + var breakpointName = sorted[i]; + if (width > breakpoints[breakpointName]) matching = breakpointName; + } + return matching; +} + +/** + * Given a breakpoint, get the # of cols set for it. + * @param {String} breakpoint Breakpoint name. + * @param {Object} cols Map of breakpoints to cols. + * @return {Number} Number of cols. + */ + + +function getColsFromBreakpoint(breakpoint, cols) { + if (!cols[breakpoint]) { + throw new Error("ResponsiveReactGridLayout: `cols` entry for breakpoint " + breakpoint + " is missing!"); + } + return cols[breakpoint]; +} + +/** + * Given existing layouts and a new breakpoint, find or generate a new layout. + * + * This finds the layout above the new one and generates from it, if it exists. + * + * @param {Object} layouts Existing layouts. + * @param {Array} breakpoints All breakpoints. + * @param {String} breakpoint New breakpoint. + * @param {String} breakpoint Last breakpoint (for fallback). + * @param {Number} cols Column count at new breakpoint. + * @param {Boolean} verticalCompact Whether or not to compact the layout + * vertically. + * @return {Array} New layout. + */ +function findOrGenerateResponsiveLayout(layouts, breakpoints, breakpoint, lastBreakpoint, cols, compactType) { + // If it already exists, just return it. + if (layouts[breakpoint]) return (0, _utils.cloneLayout)(layouts[breakpoint]); + // Find or generate the next layout + var layout = layouts[lastBreakpoint]; + var breakpointsSorted = sortBreakpoints(breakpoints); + var breakpointsAbove = breakpointsSorted.slice(breakpointsSorted.indexOf(breakpoint)); + for (var i = 0, len = breakpointsAbove.length; i < len; i++) { + var b = breakpointsAbove[i]; + if (layouts[b]) { + layout = layouts[b]; + break; + } + } + layout = (0, _utils.cloneLayout)(layout || []); // clone layout so we don't modify existing items + return (0, _utils.compact)((0, _utils.correctBounds)(layout, { cols: cols }), compactType, cols); +} + +/** + * Given breakpoints, return an array of breakpoints sorted by width. This is usually + * e.g. ['xxs', 'xs', 'sm', ...] + * + * @param {Object} breakpoints Key/value pair of breakpoint names to widths. + * @return {Array} Sorted breakpoints. + */ +function sortBreakpoints(breakpoints) { + var keys = Object.keys(breakpoints); + return keys.sort(function (a, b) { + return breakpoints[a] - breakpoints[b]; + }); +} \ No newline at end of file diff --git a/webapp/libs/react-grid-layout/utils.js b/webapp/libs/react-grid-layout/utils.js new file mode 100644 index 000000000..cd5c171ae --- /dev/null +++ b/webapp/libs/react-grid-layout/utils.js @@ -0,0 +1,562 @@ +"use strict"; + +exports.__esModule = true; +exports.noop = undefined; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +exports.bottom = bottom; +exports.cloneLayout = cloneLayout; +exports.cloneLayoutItem = cloneLayoutItem; +exports.childrenEqual = childrenEqual; +exports.collides = collides; +exports.compact = compact; +exports.compactItem = compactItem; +exports.correctBounds = correctBounds; +exports.getLayoutItem = getLayoutItem; +exports.getFirstCollision = getFirstCollision; +exports.getAllCollisions = getAllCollisions; +exports.getStatics = getStatics; +exports.moveElement = moveElement; +exports.moveElementAwayFromCollision = moveElementAwayFromCollision; +exports.perc = perc; +exports.setTransform = setTransform; +exports.setTopLeft = setTopLeft; +exports.sortLayoutItems = sortLayoutItems; +exports.sortLayoutItemsByRowCol = sortLayoutItemsByRowCol; +exports.sortLayoutItemsByColRow = sortLayoutItemsByColRow; +exports.synchronizeLayoutWithChildren = synchronizeLayoutWithChildren; +exports.validateLayout = validateLayout; +exports.autoBindHandlers = autoBindHandlers; + +var _lodash = require("lodash.isequal"); + +var _lodash2 = _interopRequireDefault(_lodash); + +var _react = require("react"); + +var _react2 = _interopRequireDefault(_react); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// All callbacks are of the signature (layout, oldItem, newItem, placeholder, e). +var isProduction = process.env.NODE_ENV === "production"; +var DEBUG = false; + +/** + * Return the bottom coordinate of the layout. + * + * @param {Array} layout Layout array. + * @return {Number} Bottom coordinate. + */ +function bottom(layout) { + var max = 0, + bottomY = void 0; + for (var _i = 0, len = layout.length; _i < len; _i++) { + bottomY = layout[_i].y + layout[_i].h; + if (bottomY > max) max = bottomY; + } + return max; +} + +function cloneLayout(layout) { + var newLayout = Array(layout.length); + for (var _i2 = 0, len = layout.length; _i2 < len; _i2++) { + newLayout[_i2] = cloneLayoutItem(layout[_i2]); + } + return newLayout; +} + +// Fast path to cloning, since this is monomorphic +function cloneLayoutItem(layoutItem) { + return { + w: layoutItem.w, + h: layoutItem.h, + x: layoutItem.x, + y: layoutItem.y, + i: layoutItem.i, + minW: layoutItem.minW, + maxW: layoutItem.maxW, + minH: layoutItem.minH, + maxH: layoutItem.maxH, + moved: Boolean(layoutItem.moved), + static: Boolean(layoutItem.static), + // These can be null + isDraggable: layoutItem.isDraggable, + isResizable: layoutItem.isResizable + }; +} + +/** + * Comparing React `children` is a bit difficult. This is a good way to compare them. + * This will catch differences in keys, order, and length. + */ +function childrenEqual(a, b) { + return (0, _lodash2.default)(_react2.default.Children.map(a, function (c) { + return c.key; + }), _react2.default.Children.map(b, function (c) { + return c.key; + })); +} + +/** + * Given two layoutitems, check if they collide. + */ +function collides(l1, l2) { + if (l1 === l2) return false; // same element + if (l1.x + l1.w <= l2.x) return false; // l1 is left of l2 + if (l1.x >= l2.x + l2.w) return false; // l1 is right of l2 + if (l1.y + l1.h <= l2.y) return false; // l1 is above l2 + if (l1.y >= l2.y + l2.h) return false; // l1 is below l2 + return true; // boxes overlap +} + +/** + * Given a layout, compact it. This involves going down each y coordinate and removing gaps + * between items. + * + * @param {Array} layout Layout. + * @param {Boolean} verticalCompact Whether or not to compact the layout + * vertically. + * @return {Array} Compacted Layout. + */ +function compact(layout, compactType, cols) { + // Statics go in the compareWith array right away so items flow around them. + var compareWith = getStatics(layout); + // We go through the items by row and column. + var sorted = sortLayoutItems(layout, compactType); + // Holding for new items. + var out = Array(layout.length); + + for (var _i3 = 0, len = sorted.length; _i3 < len; _i3++) { + var l = cloneLayoutItem(sorted[_i3]); + + // Don't move static elements + if (!l.static) { + l = compactItem(compareWith, l, compactType, cols, sorted); + + // Add to comparison array. We only collide with items before this one. + // Statics are already in this array. + compareWith.push(l); + } + + // Add to output array to make sure they still come out in the right order. + out[layout.indexOf(sorted[_i3])] = l; + + // Clear moved flag, if it exists. + l.moved = false; + } + + return out; +} + +var heightWidth = { x: "w", y: "h" }; +/** + * Before moving item down, it will check if the movement will cause collisions and move those items down before. + */ +function resolveCompactionCollision(layout, item, moveToCoord, axis) { + var sizeProp = heightWidth[axis]; + item[axis] += 1; + var itemIndex = layout.indexOf(item); + + // Go through each item we collide with. + for (var _i4 = itemIndex + 1; _i4 < layout.length; _i4++) { + var otherItem = layout[_i4]; + // Ignore static items + if (otherItem.static) continue; + + // Optimization: we can break early if we know we're past this el + // We can do this b/c it's a sorted layout + if (otherItem.y > item.y + item.h) break; + + if (collides(item, otherItem)) { + resolveCompactionCollision(layout, otherItem, moveToCoord + item[sizeProp], axis); + } + } + + item[axis] = moveToCoord; +} + +/** + * Compact an item in the layout. + */ +function compactItem(compareWith, l, compactType, cols, fullLayout) { + var compactV = compactType === "vertical"; + var compactH = compactType === "horizontal"; + if (compactV) { + // Bottom 'y' possible is the bottom of the layout. + // This allows you to do nice stuff like specify {y: Infinity} + // This is here because the layout must be sorted in order to get the correct bottom `y`. + l.y = Math.min(bottom(compareWith), l.y); + // Move the element up as far as it can go without colliding. + while (l.y > 0 && !getFirstCollision(compareWith, l)) { + l.y--; + } + } else if (compactH) { + l.y = Math.min(bottom(compareWith), l.y); + // Move the element left as far as it can go without colliding. + while (l.x > 0 && !getFirstCollision(compareWith, l)) { + l.x--; + } + } + + // Move it down, and keep moving it down if it's colliding. + var collides = void 0; + while (collides = getFirstCollision(compareWith, l)) { + if (compactH) { + resolveCompactionCollision(fullLayout, l, collides.x + collides.w, "x"); + } else { + resolveCompactionCollision(fullLayout, l, collides.y + collides.h, "y"); + } + // Since we can't grow without bounds horizontally, if we've overflown, let's move it down and try again. + if (compactH && l.x + l.w > cols) { + l.x = cols - l.w; + l.y++; + } + } + return l; +} + +/** + * Given a layout, make sure all elements fit within its bounds. + * + * @param {Array} layout Layout array. + * @param {Number} bounds Number of columns. + */ +function correctBounds(layout, bounds) { + var collidesWith = getStatics(layout); + for (var _i5 = 0, len = layout.length; _i5 < len; _i5++) { + var l = layout[_i5]; + // Overflows right + if (l.x + l.w > bounds.cols) l.x = bounds.cols - l.w; + // Overflows left + if (l.x < 0) { + l.x = 0; + l.w = bounds.cols; + } + if (!l.static) collidesWith.push(l);else { + // If this is static and collides with other statics, we must move it down. + // We have to do something nicer than just letting them overlap. + while (getFirstCollision(collidesWith, l)) { + l.y++; + } + } + } + return layout; +} + +/** + * Get a layout item by ID. Used so we can override later on if necessary. + * + * @param {Array} layout Layout array. + * @param {String} id ID + * @return {LayoutItem} Item at ID. + */ +function getLayoutItem(layout, id) { + for (var _i6 = 0, len = layout.length; _i6 < len; _i6++) { + if (layout[_i6].i === id) return layout[_i6]; + } +} + +/** + * Returns the first item this layout collides with. + * It doesn't appear to matter which order we approach this from, although + * perhaps that is the wrong thing to do. + * + * @param {Object} layoutItem Layout item. + * @return {Object|undefined} A colliding layout item, or undefined. + */ +function getFirstCollision(layout, layoutItem) { + for (var _i7 = 0, len = layout.length; _i7 < len; _i7++) { + if (collides(layout[_i7], layoutItem)) return layout[_i7]; + } +} + +function getAllCollisions(layout, layoutItem) { + return layout.filter(function (l) { + return collides(l, layoutItem); + }); +} + +/** + * Get all static elements. + * @param {Array} layout Array of layout objects. + * @return {Array} Array of static layout items.. + */ +function getStatics(layout) { + return layout.filter(function (l) { + return l.static; + }); +} + +/** + * Move an element. Responsible for doing cascading movements of other elements. + * + * @param {Array} layout Full layout to modify. + * @param {LayoutItem} l element to move. + * @param {Number} [x] X position in grid units. + * @param {Number} [y] Y position in grid units. + */ +function moveElement(layout, l, x, y, isUserAction, preventCollision, compactType, cols) { + if (l.static) return layout; + + // Short-circuit if nothing to do. + if (l.y === y && l.x === x) return layout; + + log("Moving element " + l.i + " to [" + String(x) + "," + String(y) + "] from [" + l.x + "," + l.y + "]"); + var oldX = l.x; + var oldY = l.y; + + // This is quite a bit faster than extending the object + if (typeof x === 'number') l.x = x; + if (typeof y === 'number') l.y = y; + l.moved = true; + + // If this collides with anything, move it. + // When doing this comparison, we have to sort the items we compare with + // to ensure, in the case of multiple collisions, that we're getting the + // nearest collision. + var sorted = sortLayoutItems(layout, compactType); + var movingUp = compactType === "vertical" && typeof y === 'number' ? oldY >= y : compactType === "horizontal" && typeof x === 'number' ? oldX >= x : false; + if (movingUp) sorted = sorted.reverse(); + var collisions = getAllCollisions(sorted, l); + + // There was a collision; abort + if (preventCollision && collisions.length) { + log("Collision prevented on " + l.i + ", reverting."); + l.x = oldX; + l.y = oldY; + l.moved = false; + return layout; + } + + // Move each item that collides away from this element. + for (var _i8 = 0, len = collisions.length; _i8 < len; _i8++) { + var collision = collisions[_i8]; + log("Resolving collision between " + l.i + " at [" + l.x + "," + l.y + "] and " + collision.i + " at [" + collision.x + "," + collision.y + "]"); + + // Short circuit so we can't infinite loop + if (collision.moved) continue; + + // Don't move static items - we have to move *this* element away + if (collision.static) { + layout = moveElementAwayFromCollision(layout, collision, l, isUserAction, compactType, cols); + } else { + layout = moveElementAwayFromCollision(layout, l, collision, isUserAction, compactType, cols); + } + } + + return layout; +} + +/** + * This is where the magic needs to happen - given a collision, move an element away from the collision. + * We attempt to move it up if there's room, otherwise it goes below. + * + * @param {Array} layout Full layout to modify. + * @param {LayoutItem} collidesWith Layout item we're colliding with. + * @param {LayoutItem} itemToMove Layout item we're moving. + */ +function moveElementAwayFromCollision(layout, collidesWith, itemToMove, isUserAction, compactType, cols) { + var compactH = compactType === "horizontal"; + var compactV = compactType === "vertical"; + var preventCollision = false; // we're already colliding + + // If there is enough space above the collision to put this element, move it there. + // We only do this on the main collision as this can get funky in cascades and cause + // unwanted swapping behavior. + if (isUserAction) { + // Reset isUserAction flag because we're not in the main collision anymore. + isUserAction = false; + + // Make a mock item so we don't modify the item here, only modify in moveElement. + var fakeItem = { + x: compactH ? Math.max(collidesWith.x - itemToMove.w, 0) : itemToMove.x, + y: compactV ? Math.max(collidesWith.y - itemToMove.h, 0) : itemToMove.y, + w: itemToMove.w, + h: itemToMove.h, + i: "-1" + }; + + // No collision? If so, we can go up there; otherwise, we'll end up moving down as normal + if (!getFirstCollision(layout, fakeItem)) { + log("Doing reverse collision on " + itemToMove.i + " up to [" + fakeItem.x + "," + fakeItem.y + "]."); + return moveElement(layout, itemToMove, compactH ? fakeItem.x : undefined, compactV ? fakeItem.y : undefined, isUserAction, preventCollision, compactType, cols); + } + } + + return moveElement(layout, itemToMove, compactH ? itemToMove.x + 1 : undefined, compactV ? itemToMove.y + 1 : undefined, isUserAction, preventCollision, compactType, cols); +} + +/** + * Helper to convert a number to a percentage string. + * + * @param {Number} num Any number + * @return {String} That number as a percentage. + */ +function perc(num) { + return num * 100 + "%"; +} + +function setTransform(_ref) { + var top = _ref.top, + left = _ref.left, + width = _ref.width, + height = _ref.height; + + // Replace unitless items with px + var translate = "translate(" + left + "px," + top + "px)"; + return { + transform: translate, + WebkitTransform: translate, + MozTransform: translate, + msTransform: translate, + OTransform: translate, + width: width + "px", + height: height + "px", + position: "absolute" + }; +} + +function setTopLeft(_ref2) { + var top = _ref2.top, + left = _ref2.left, + width = _ref2.width, + height = _ref2.height; + + return { + top: top + "px", + left: left + "px", + width: width + "px", + height: height + "px", + position: "absolute" + }; +} + +/** + * Get layout items sorted from top left to right and down. + * + * @return {Array} Array of layout objects. + * @return {Array} Layout, sorted static items first. + */ +function sortLayoutItems(layout, compactType) { + if (compactType === "horizontal") return sortLayoutItemsByColRow(layout);else return sortLayoutItemsByRowCol(layout); +} + +function sortLayoutItemsByRowCol(layout) { + return [].concat(layout).sort(function (a, b) { + if (a.y > b.y || a.y === b.y && a.x > b.x) { + return 1; + } else if (a.y === b.y && a.x === b.x) { + // Without this, we can get different sort results in IE vs. Chrome/FF + return 0; + } + return -1; + }); +} + +function sortLayoutItemsByColRow(layout) { + return [].concat(layout).sort(function (a, b) { + if (a.x > b.x || a.x === b.x && a.y > b.y) { + return 1; + } + return -1; + }); +} + +/** + * Generate a layout using the initialLayout and children as a template. + * Missing entries will be added, extraneous ones will be truncated. + * + * @param {Array} initialLayout Layout passed in through props. + * @param {String} breakpoint Current responsive breakpoint. + * @param {?String} compact Compaction option. + * @return {Array} Working layout. + */ +function synchronizeLayoutWithChildren(initialLayout, children, cols, compactType) { + initialLayout = initialLayout || []; + + // Generate one layout item per child. + var layout = []; + _react2.default.Children.forEach(children, function (child, i) { + // Don't overwrite if it already exists. + var exists = getLayoutItem(initialLayout, String(child.key)); + if (exists) { + layout[i] = cloneLayoutItem(exists); + } else { + if (!isProduction && child.props._grid) { + console.warn("`_grid` properties on children have been deprecated as of React 15.2. " + // eslint-disable-line + "Please use `data-grid` or add your properties directly to the `layout`."); + } + var g = child.props["data-grid"] || child.props._grid; + + // Hey, this item has a data-grid property, use it. + if (g) { + if (!isProduction) { + validateLayout([g], "ReactGridLayout.children"); + } + layout[i] = cloneLayoutItem(_extends({}, g, { i: child.key })); + } else { + // Nothing provided: ensure this is added to the bottom + layout[i] = cloneLayoutItem({ + w: 1, + h: 1, + x: 0, + y: bottom(layout), + i: String(child.key) + }); + } + } + }); + + // Correct the layout. + layout = correctBounds(layout, { cols: cols }); + layout = compact(layout, compactType, cols); + + return layout; +} + +/** + * Validate a layout. Throws errors. + * + * @param {Array} layout Array of layout items. + * @param {String} [contextName] Context name for errors. + * @throw {Error} Validation error. + */ +function validateLayout(layout) { + var contextName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "Layout"; + + var subProps = ["x", "y", "w", "h"]; + if (!Array.isArray(layout)) throw new Error(contextName + " must be an array!"); + for (var _i9 = 0, len = layout.length; _i9 < len; _i9++) { + var item = layout[_i9]; + for (var j = 0; j < subProps.length; j++) { + if (typeof item[subProps[j]] !== "number") { + throw new Error("ReactGridLayout: " + contextName + "[" + _i9 + "]." + subProps[j] + " must be a number!"); + } + } + if (item.i && typeof item.i !== "string") { + throw new Error("ReactGridLayout: " + contextName + "[" + _i9 + "].i must be a string!"); + } + if (item.static !== undefined && typeof item.static !== "boolean") { + throw new Error("ReactGridLayout: " + contextName + "[" + _i9 + "].static must be a boolean!"); + } + } +} + +// Flow can't really figure this out, so we just use Object +function autoBindHandlers(el, fns) { + fns.forEach(function (key) { + return el[key] = el[key].bind(el); + }); +} + +function log() { + var _console; + + if (!DEBUG) return; + // eslint-disable-next-line no-console + (_console = console).log.apply(_console, arguments); +} + +var noop = exports.noop = function noop() {}; \ No newline at end of file diff --git a/webapp/libs/react-resizable/Resizable.js b/webapp/libs/react-resizable/Resizable.js new file mode 100644 index 000000000..1e084e7cb --- /dev/null +++ b/webapp/libs/react-resizable/Resizable.js @@ -0,0 +1,265 @@ +'use strict'; + +exports.__esModule = true; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _reactDraggable = require('../react-draggable/react-draggable'); + +var _cloneElement = require('./cloneElement'); + +var _cloneElement2 = _interopRequireDefault(_cloneElement); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Resizable = function (_React$Component) { + _inherits(Resizable, _React$Component); + + function Resizable() { + var _temp, _this, _ret; + + _classCallCheck(this, Resizable); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = { + resizing: false, + width: _this.props.width, height: _this.props.height, + slackW: 0, slackH: 0 + }, _temp), _possibleConstructorReturn(_this, _ret); + } + + Resizable.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { + // If parent changes height/width, set that in our state. + if (!this.state.resizing && (nextProps.width !== this.props.width || nextProps.height !== this.props.height)) { + this.setState({ + width: nextProps.width, + height: nextProps.height + }); + } + }; + + Resizable.prototype.lockAspectRatio = function lockAspectRatio(width, height, aspectRatio) { + height = width / aspectRatio; + width = height * aspectRatio; + return [width, height]; + }; + + // If you do this, be careful of constraints + + + Resizable.prototype.runConstraints = function runConstraints(width, height) { + var _ref = [this.props.minConstraints, this.props.maxConstraints], + min = _ref[0], + max = _ref[1]; + + + if (this.props.lockAspectRatio) { + var ratio = this.state.width / this.state.height; + height = width / ratio; + width = height * ratio; + } + + if (!min && !max) return [width, height]; + + var oldW = width, + oldH = height; + + // Add slack to the values used to calculate bound position. This will ensure that if + // we start removing slack, the element won't react to it right away until it's been + // completely removed. + + var _state = this.state, + slackW = _state.slackW, + slackH = _state.slackH; + + width += slackW; + height += slackH; + + if (min) { + width = Math.max(min[0], width); + height = Math.max(min[1], height); + } + if (max) { + width = Math.min(max[0], width); + height = Math.min(max[1], height); + } + + // If the numbers changed, we must have introduced some slack. Record it for the next iteration. + slackW += oldW - width; + slackH += oldH - height; + if (slackW !== this.state.slackW || slackH !== this.state.slackH) { + this.setState({ slackW: slackW, slackH: slackH }); + } + + return [width, height]; + }; + + /** + * Wrapper around drag events to provide more useful data. + * + * @param {String} handlerName Handler name to wrap. + * @return {Function} Handler function. + */ + + + Resizable.prototype.resizeHandler = function resizeHandler(handlerName) { + var _this2 = this; + + return function (e, _ref2) { + var node = _ref2.node, + deltaX = _ref2.deltaX, + deltaY = _ref2.deltaY; + + + // Axis restrictions + var canDragX = _this2.props.axis === 'both' || _this2.props.axis === 'x'; + var canDragY = _this2.props.axis === 'both' || _this2.props.axis === 'y'; + + // Update w/h + var width = _this2.state.width + (canDragX ? deltaX : 0); + var height = _this2.state.height + (canDragY ? deltaY : 0); + + // Early return if no change + var widthChanged = width !== _this2.state.width, + heightChanged = height !== _this2.state.height; + if (handlerName === 'onResize' && !widthChanged && !heightChanged) return; + + // Set the appropriate state for this handler. + var _runConstraints = _this2.runConstraints(width, height); + + width = _runConstraints[0]; + height = _runConstraints[1]; + var newState = {}; + if (handlerName === 'onResizeStart') { + newState.resizing = true; + } else if (handlerName === 'onResizeStop') { + newState.resizing = false; + newState.slackW = newState.slackH = 0; + } else { + // Early return if no change after constraints + if (width === _this2.state.width && height === _this2.state.height) return; + newState.width = width; + newState.height = height; + } + + var hasCb = typeof _this2.props[handlerName] === 'function'; + if (hasCb) { + if (typeof e.persist === 'function') e.persist(); + _this2.setState(newState, function () { + return _this2.props[handlerName](e, { node: node, size: { width: width, height: height } }); + }); + } else { + _this2.setState(newState); + } + }; + }; + + Resizable.prototype.render = function render() { + // eslint-disable-next-line no-unused-vars + var _props = this.props, + children = _props.children, + draggableOpts = _props.draggableOpts, + width = _props.width, + height = _props.height, + handleSize = _props.handleSize, + lockAspectRatio = _props.lockAspectRatio, + axis = _props.axis, + minConstraints = _props.minConstraints, + maxConstraints = _props.maxConstraints, + onResize = _props.onResize, + onResizeStop = _props.onResizeStop, + onResizeStart = _props.onResizeStart, + p = _objectWithoutProperties(_props, ['children', 'draggableOpts', 'width', 'height', 'handleSize', 'lockAspectRatio', 'axis', 'minConstraints', 'maxConstraints', 'onResize', 'onResizeStop', 'onResizeStart']); + + var className = p.className ? p.className + ' react-resizable' : 'react-resizable'; + + // What we're doing here is getting the child of this element, and cloning it with this element's props. + // We are then defining its children as: + // Its original children (resizable's child's children), and + // A draggable handle. + return (0, _cloneElement2.default)(children, _extends({}, p, { + className: className, + children: [children.props.children, _react2.default.createElement( + _reactDraggable.DraggableCore, + _extends({}, draggableOpts, { + key: 'resizableHandle', + onStop: this.resizeHandler('onResizeStop'), + onStart: this.resizeHandler('onResizeStart'), + onDrag: this.resizeHandler('onResize') + }), + _react2.default.createElement('span', { className: 'react-resizable-handle' }) + )] + })); + }; + + return Resizable; +}(_react2.default.Component); + +Resizable.propTypes = { + // + // Required Props + // + + // Require that one and only one child be present. + children: _propTypes2.default.element.isRequired, + + // Initial w/h + width: _propTypes2.default.number.isRequired, + height: _propTypes2.default.number.isRequired, + + // + // Optional props + // + + // If you change this, be sure to update your css + handleSize: _propTypes2.default.array, + + // If true, will only allow width/height to move in lockstep + lockAspectRatio: _propTypes2.default.bool, + + // Restricts resizing to a particular axis (default: 'both') + // 'both' - allows resizing by width or height + // 'x' - only allows the width to be changed + // 'y' - only allows the height to be changed + // 'none' - disables resizing altogether + axis: _propTypes2.default.oneOf(['both', 'x', 'y', 'none']), + + // Min/max size + minConstraints: _propTypes2.default.arrayOf(_propTypes2.default.number), + maxConstraints: _propTypes2.default.arrayOf(_propTypes2.default.number), + + // Callbacks + onResizeStop: _propTypes2.default.func, + onResizeStart: _propTypes2.default.func, + onResize: _propTypes2.default.func, + + // These will be passed wholesale to react-draggable's DraggableCore + draggableOpts: _propTypes2.default.object +}; +Resizable.defaultProps = { + handleSize: [20, 20], + lockAspectRatio: false, + axis: 'both', + minConstraints: [20, 20], + maxConstraints: [Infinity, Infinity] +}; +exports.default = Resizable; diff --git a/webapp/libs/react-resizable/ResizableBox.js b/webapp/libs/react-resizable/ResizableBox.js new file mode 100644 index 000000000..088897fcb --- /dev/null +++ b/webapp/libs/react-resizable/ResizableBox.js @@ -0,0 +1,118 @@ +'use strict'; + +exports.__esModule = true; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _propTypes = require('prop-types'); + +var _propTypes2 = _interopRequireDefault(_propTypes); + +var _Resizable = require('./Resizable'); + +var _Resizable2 = _interopRequireDefault(_Resizable); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +// An example use of Resizable. +var ResizableBox = function (_React$Component) { + _inherits(ResizableBox, _React$Component); + + function ResizableBox() { + var _temp, _this, _ret; + + _classCallCheck(this, ResizableBox); + + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = { + width: _this.props.width, + height: _this.props.height + }, _this.onResize = function (e, data) { + var size = data.size; + var width = size.width, + height = size.height; + + + if (_this.props.onResize) { + e.persist && e.persist(); + _this.setState(size, function () { + return _this.props.onResize && _this.props.onResize(e, data); + }); + } else { + _this.setState(size); + } + }, _temp), _possibleConstructorReturn(_this, _ret); + } + + ResizableBox.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { + if (nextProps.width !== this.props.width || nextProps.height !== this.props.height) { + this.setState({ + width: nextProps.width, + height: nextProps.height + }); + } + }; + + ResizableBox.prototype.render = function render() { + // Basic wrapper around a Resizable instance. + // If you use Resizable directly, you are responsible for updating the child component + // with a new width and height. + var _props = this.props, + handleSize = _props.handleSize, + onResize = _props.onResize, + onResizeStart = _props.onResizeStart, + onResizeStop = _props.onResizeStop, + draggableOpts = _props.draggableOpts, + minConstraints = _props.minConstraints, + maxConstraints = _props.maxConstraints, + lockAspectRatio = _props.lockAspectRatio, + axis = _props.axis, + width = _props.width, + height = _props.height, + props = _objectWithoutProperties(_props, ['handleSize', 'onResize', 'onResizeStart', 'onResizeStop', 'draggableOpts', 'minConstraints', 'maxConstraints', 'lockAspectRatio', 'axis', 'width', 'height']); + + return _react2.default.createElement( + _Resizable2.default, + { + handleSize: handleSize, + width: this.state.width, + height: this.state.height, + onResizeStart: onResizeStart, + onResize: this.onResize, + onResizeStop: onResizeStop, + draggableOpts: draggableOpts, + minConstraints: minConstraints, + maxConstraints: maxConstraints, + lockAspectRatio: lockAspectRatio, + axis: axis + }, + _react2.default.createElement('div', _extends({ style: { width: this.state.width + 'px', height: this.state.height + 'px' } }, props)) + ); + }; + + return ResizableBox; +}(_react2.default.Component); + +ResizableBox.propTypes = { + height: _propTypes2.default.number, + width: _propTypes2.default.number +}; +ResizableBox.defaultProps = { + handleSize: [20, 20] +}; +exports.default = ResizableBox; \ No newline at end of file diff --git a/webapp/libs/react-resizable/cloneElement.js b/webapp/libs/react-resizable/cloneElement.js new file mode 100644 index 000000000..22918ea97 --- /dev/null +++ b/webapp/libs/react-resizable/cloneElement.js @@ -0,0 +1,20 @@ +'use strict'; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// React.addons.cloneWithProps look-alike that merges style & className. +module.exports = function cloneElement(element, props) { + if (props.style && element.props.style) { + props.style = _extends({}, element.props.style, props.style); + } + if (props.className && element.props.className) { + props.className = element.props.className + ' ' + props.className; + } + return _react2.default.cloneElement(element, props); +}; \ No newline at end of file diff --git a/webapp/libs/react-resizable/css/styles.css b/webapp/libs/react-resizable/css/styles.css new file mode 100644 index 000000000..ae64b220b --- /dev/null +++ b/webapp/libs/react-resizable/css/styles.css @@ -0,0 +1,17 @@ +.react-resizable { + position: relative; +} +.react-resizable-handle { + position: absolute; + width: 20px; + height: 20px; + bottom: 0; + right: 0; + background: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+'); + background-position: bottom right; + padding: 0 3px 3px 0; + background-repeat: no-repeat; + background-origin: content-box; + box-sizing: border-box; + cursor: se-resize; +} diff --git a/webapp/libs/react-resizable/index.js b/webapp/libs/react-resizable/index.js new file mode 100644 index 000000000..efa0bf420 --- /dev/null +++ b/webapp/libs/react-resizable/index.js @@ -0,0 +1,7 @@ +'use strict'; +module.exports = function() { + throw new Error("Don't instantiate Resizable directly! Use require('react-resizable').Resizable"); +}; + +module.exports.Resizable = require('./Resizable').default; +module.exports.ResizableBox = require('./ResizableBox').default; diff --git a/webapp/package.json b/webapp/package.json index 6d1fb4d8b..6365dffae 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -225,7 +225,6 @@ "react-codemirror2": "^3.0.7", "react-color": "^2.13.8", "react-dom": "~15.6.1", - "react-grid-layout": "^0.16.6", "react-helmet": "5.1.3", "react-intl": "2.3.0", "react-loadable": "4.0.3", diff --git a/webapp/share/app.tsx b/webapp/share/app.tsx index 4db03d887..3668bc57e 100644 --- a/webapp/share/app.tsx +++ b/webapp/share/app.tsx @@ -44,8 +44,8 @@ import { translationMessages } from '../app/i18n' import createRoutes from './routes' import 'antd/dist/antd.less' -import 'react-grid-layout/css/styles.css' -import '../node_modules/react-resizable/css/styles.css' +import '../libs/react-grid-layout/css/styles.css' +import '../libs/react-resizable/css/styles.css' import 'bootstrap-datepicker/dist/css/bootstrap-datepicker3.standalone.min.css' import 'react-quill/dist/quill.snow.css' import '../app/assets/fonts/iconfont.css' diff --git a/webapp/share/containers/Dashboard/index.tsx b/webapp/share/containers/Dashboard/index.tsx index f059bc86b..ec006dc2f 100644 --- a/webapp/share/containers/Dashboard/index.tsx +++ b/webapp/share/containers/Dashboard/index.tsx @@ -34,7 +34,7 @@ import Container from '../../../app/components/Container' import { getMappingLinkage, processLinkage, removeLinkage } from 'components/Linkages' import DashboardItem from '../../../app/containers/Dashboard/components/DashboardItem' import FullScreenPanel from '../../../app/containers/Dashboard/components/fullScreenPanel/FullScreenPanel' -import { Responsive, WidthProvider } from 'react-grid-layout' +import { Responsive, WidthProvider } from '../../../libs/react-grid-layout' import { IFilterChangeParam } from '../../../app/components/Filters' import DashboardFilterPanel from 'containers/Dashboard/components/DashboardFilterPanel' diff --git a/webapp/tsconfig.json b/webapp/tsconfig.json index 2ec1c15b0..f44922135 100644 --- a/webapp/tsconfig.json +++ b/webapp/tsconfig.json @@ -20,11 +20,9 @@ "utils/*": ["app/utils/*"], "assets/*": ["app/assets/*"], "components/*": [ "app/components/*" ], - "containers/*": ["app/containers/*"] + "containers/*": ["app/containers/*"], + "libs/*": ["libs/*"] } -// "paths": { -// "utils/*": [ "app/utils/*" ] -// }, // "noUnusedLocals": true, // "noUnusedParameters": true }, From 0031ca99a080e680faaad9c43803543819a81e8f Mon Sep 17 00:00:00 2001 From: andyfong Date: Thu, 20 Sep 2018 19:57:14 +0800 Subject: [PATCH 03/45] fix(libs): add `libs` localization README and fix localization errors --- .../Display/components/LayerItem.tsx | 15 ++++------ webapp/libs/README.md | 9 ++++++ .../libs/react-draggable/react-draggable.js | 30 ++++++++++++++++--- .../react-draggable/react-draggable.min.js | 1 - .../react-draggable.min.js.map | 1 - webapp/libs/react-resizable/Resizable.js | 12 ++++++-- 6 files changed, 50 insertions(+), 18 deletions(-) create mode 100644 webapp/libs/README.md delete mode 100644 webapp/libs/react-draggable/react-draggable.min.js delete mode 100644 webapp/libs/react-draggable/react-draggable.min.js.map diff --git a/webapp/app/containers/Display/components/LayerItem.tsx b/webapp/app/containers/Display/components/LayerItem.tsx index e124f942b..aed580810 100644 --- a/webapp/app/containers/Display/components/LayerItem.tsx +++ b/webapp/app/containers/Display/components/LayerItem.tsx @@ -180,21 +180,17 @@ export class LayerItem extends React.PureComponent { - const { itemId, selected, onResizeLayer, scale } = this.props + const { itemId, selected, onResizeLayer } = this.props const { width: prevWidth, height: prevHeight } = this.state const { width, height } = size const delta = { - deltaWidth: (width - this.state.width) / scale[0], - deltaHeight: (height - this.state.height) / scale[1] + deltaWidth: width - prevWidth, + deltaHeight: height - prevHeight } - console.log('-----------------------') - console.log('delta: ', delta) - console.log('prev: ', { prevWidth, prevHeight }) - console.log(size) if (onResizeLayer && selected) { onResizeLayer(itemId, delta) } this.setState({ - width: prevWidth + delta.deltaWidth, - height: prevHeight + delta.deltaHeight + width, + height }) } @@ -470,6 +466,7 @@ export class LayerItem extends React.PureComponent {content} diff --git a/webapp/libs/README.md b/webapp/libs/README.md new file mode 100644 index 000000000..44cf880ef --- /dev/null +++ b/webapp/libs/README.md @@ -0,0 +1,9 @@ +# node_modules Library Localization List + +## 1. react-grid-layout@0.16.6 + + +## 2. react-dragglable@3.0.5 + + +## 3. react-resizable@1.7.5 diff --git a/webapp/libs/react-draggable/react-draggable.js b/webapp/libs/react-draggable/react-draggable.js index 750aaa8f1..f2a5ba6e4 100644 --- a/webapp/libs/react-draggable/react-draggable.js +++ b/webapp/libs/react-draggable/react-draggable.js @@ -127,7 +127,7 @@ function dontSetMe(props /*: Object*/, propName /*: string*/, componentName /*: * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * + * */ function makeEmptyFunction(arg) { @@ -657,6 +657,7 @@ function getBoundPosition(draggable /*: Draggable*/, x /*: number*/, y /*: numbe } function snapToGrid(grid /*: [number, number]*/, pendingX /*: number*/, pendingY /*: number*/) /*: [number, number]*/ { + if (!grid) { return [pendingX, pendingY] } var x = Math.round(pendingX / grid[0]) * grid[0]; var y = Math.round(pendingY / grid[1]) * grid[1]; return [x, y]; @@ -682,6 +683,7 @@ function getControlPosition(e /*: MouseTouchEvent*/, touchIdentifier /*: ?number // Create an data object exposed by 's events function createCoreData(draggable /*: DraggableCore*/, x /*: number*/, y /*: number*/) /*: DraggableData*/ { + var scale = draggable.props.scale || 1; var state = draggable.state; var isStart = !(0, _shims.isNum)(state.lastX); var node = findDOMNode(draggable); @@ -696,9 +698,25 @@ function createCoreData(draggable /*: DraggableCore*/, x /*: number*/, y /*: num }; } else { // Otherwise calculate proper values. + if (!draggable.props.grid) { + return { + node: node, + deltaX: x - state.lastX, deltaY: y - state.lastY, + lastX: state.lastX, lastY: state.lastY, + x: x, y: y + } + } + + var _positionFns = __webpack_require__(9); + var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + var _deltaX = (x - state.lastX) / scale + var _deltaY = (y - state.lastY) / scale + var _snapToGrid = (0, _positionFns.snapToGrid)(draggable.props.grid, _deltaX, _deltaY); + var _snapToGrid2 = _slicedToArray(_snapToGrid, 2); + return { node: node, - deltaX: x - state.lastX, deltaY: y - state.lastY, + deltaX: _snapToGrid2[0], deltaY: _snapToGrid2[1], lastX: state.lastX, lastY: state.lastY, x: x, y: y }; @@ -1324,6 +1342,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function" defaultClassNameDragged: string, defaultPosition: ControlPosition, position: ControlPosition, + scale: number };*/ var Draggable = function (_React$Component) { @@ -1613,6 +1632,8 @@ Draggable.propTypes = _extends({}, _DraggableCore2.default.propTypes, { y: _propTypes2.default.number }), + scale: _propTypes2.default.number, + /** * `position`, if present, defines the current position of the element. * @@ -1652,7 +1673,8 @@ Draggable.defaultProps = _extends({}, _DraggableCore2.default.defaultProps, { defaultClassNameDragging: 'react-draggable-dragging', defaultClassNameDragged: 'react-draggable-dragged', defaultPosition: { x: 0, y: 0 }, - position: null + position: null, + scale: 1 }); exports.default = Draggable; @@ -2743,4 +2765,4 @@ process.umask = function() { return 0; }; /***/ }) /******/ ]); }); -//# sourceMappingURL=react-draggable.js.map \ No newline at end of file +//# sourceMappingURL=react-draggable.js.map diff --git a/webapp/libs/react-draggable/react-draggable.min.js b/webapp/libs/react-draggable/react-draggable.min.js deleted file mode 100644 index 7e8b9bac5..000000000 --- a/webapp/libs/react-draggable/react-draggable.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(root,factory){"object"==typeof exports&&"object"==typeof module?module.exports=factory(require("react-dom"),require("react")):"function"==typeof define&&define.amd?define(["react-dom","react"],factory):"object"==typeof exports?exports.ReactDraggable=factory(require("react-dom"),require("react")):root.ReactDraggable=factory(root.ReactDOM,root.React)}(this,function(__WEBPACK_EXTERNAL_MODULE_4__,__WEBPACK_EXTERNAL_MODULE_6__){return function(modules){function __webpack_require__(moduleId){if(installedModules[moduleId])return installedModules[moduleId].exports;var module=installedModules[moduleId]={i:moduleId,l:!1,exports:{}};return modules[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.l=!0,module.exports}var installedModules={};return __webpack_require__.m=modules,__webpack_require__.c=installedModules,__webpack_require__.d=function(exports,name,getter){__webpack_require__.o(exports,name)||Object.defineProperty(exports,name,{configurable:!1,enumerable:!0,get:getter})},__webpack_require__.n=function(module){var getter=module&&module.__esModule?function(){return module.default}:function(){return module};return __webpack_require__.d(getter,"a",getter),getter},__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=12)}([function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.findInArray=function(array,callback){for(var i=0,length=array.length;i0&&void 0!==arguments[0]?arguments[0]:{};return _extends({touchAction:"none"},childStyle)},exports.addClassName=addClassName,exports.removeClassName=removeClassName;var _shims=__webpack_require__(0),_getPrefix=__webpack_require__(19),_getPrefix2=function(obj){return obj&&obj.__esModule?obj:{default:obj}}(_getPrefix),matchesSelectorFunc=""},function(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE_6__},function(module,exports,__webpack_require__){if("production"!==Object({DRAGGABLE_DEBUG:void 0}).NODE_ENV){var REACT_ELEMENT_TYPE="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;module.exports=__webpack_require__(14)(function(object){return"object"==typeof object&&null!==object&&object.$$typeof===REACT_ELEMENT_TYPE},!0)}else module.exports=__webpack_require__(17)()},function(module,exports,__webpack_require__){"use strict";var warning=__webpack_require__(1);if("production"!==Object({DRAGGABLE_DEBUG:void 0}).NODE_ENV){warning=function(condition,format){if(void 0===format)throw new Error("`warning(condition, format, ...args)` requires a warning message argument");if(0!==format.indexOf("Failed Composite propType: ")&&!condition){for(var _len2=arguments.length,args=Array(_len2>2?_len2-2:0),_key2=2;_key2<_len2;_key2++)args[_key2-2]=arguments[_key2];(function(format){for(var _len=arguments.length,args=Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)args[_key-1]=arguments[_key];var argIndex=0,message="Warning: "+format.replace(/%s/g,function(){return args[argIndex++]});"undefined"!=typeof console&&console.error(message);try{throw new Error(message)}catch(x){}}).apply(void 0,[format].concat(args))}}}module.exports=warning},function(module,exports,__webpack_require__){"use strict";function findDOMNode(draggable){var node=_reactDom2.default.findDOMNode(draggable);if(!node)throw new Error(": Unmounted during event!");return node}Object.defineProperty(exports,"__esModule",{value:!0}),exports.getBoundPosition=function(draggable,x,y){if(!draggable.props.bounds)return[x,y];var bounds=draggable.props.bounds;bounds="string"==typeof bounds?bounds:function(bounds){return{left:bounds.left,top:bounds.top,right:bounds.right,bottom:bounds.bottom}}(bounds);var node=findDOMNode(draggable);if("string"==typeof bounds){var ownerDocument=node.ownerDocument,ownerWindow=ownerDocument.defaultView,boundNode=void 0;if(!((boundNode="parent"===bounds?node.parentNode:ownerDocument.querySelector(bounds))instanceof HTMLElement))throw new Error('Bounds selector "'+bounds+'" could not find an element.');var nodeStyle=ownerWindow.getComputedStyle(node),boundNodeStyle=ownerWindow.getComputedStyle(boundNode);bounds={left:-node.offsetLeft+(0,_shims.int)(boundNodeStyle.paddingLeft)+(0,_shims.int)(nodeStyle.marginLeft),top:-node.offsetTop+(0,_shims.int)(boundNodeStyle.paddingTop)+(0,_shims.int)(nodeStyle.marginTop),right:(0,_domFns.innerWidth)(boundNode)-(0,_domFns.outerWidth)(node)-node.offsetLeft+(0,_shims.int)(boundNodeStyle.paddingRight)-(0,_shims.int)(nodeStyle.marginRight),bottom:(0,_domFns.innerHeight)(boundNode)-(0,_domFns.outerHeight)(node)-node.offsetTop+(0,_shims.int)(boundNodeStyle.paddingBottom)-(0,_shims.int)(nodeStyle.marginBottom)}}return(0,_shims.isNum)(bounds.right)&&(x=Math.min(x,bounds.right)),(0,_shims.isNum)(bounds.bottom)&&(y=Math.min(y,bounds.bottom)),(0,_shims.isNum)(bounds.left)&&(x=Math.max(x,bounds.left)),(0,_shims.isNum)(bounds.top)&&(y=Math.max(y,bounds.top)),[x,y]},exports.snapToGrid=function(grid,pendingX,pendingY){return[Math.round(pendingX/grid[0])*grid[0],Math.round(pendingY/grid[1])*grid[1]]},exports.canDragX=function(draggable){return"both"===draggable.props.axis||"x"===draggable.props.axis},exports.canDragY=function(draggable){return"both"===draggable.props.axis||"y"===draggable.props.axis},exports.getControlPosition=function(e,touchIdentifier,draggableCore){var touchObj="number"==typeof touchIdentifier?(0,_domFns.getTouch)(e,touchIdentifier):null;if("number"==typeof touchIdentifier&&!touchObj)return null;var node=findDOMNode(draggableCore),offsetParent=draggableCore.props.offsetParent||node.offsetParent||node.ownerDocument.body;return(0,_domFns.offsetXYFromParent)(touchObj||e,offsetParent)},exports.createCoreData=function(draggable,x,y){var state=draggable.state,isStart=!(0,_shims.isNum)(state.lastX),node=findDOMNode(draggable);return isStart?{node:node,deltaX:0,deltaY:0,lastX:x,lastY:y,x:x,y:y}:{node:node,deltaX:x-state.lastX,deltaY:y-state.lastY,lastX:state.lastX,lastY:state.lastY,x:x,y:y}},exports.createDraggableData=function(draggable,coreData){return{node:coreData.node,x:draggable.state.x+coreData.deltaX,y:draggable.state.y+coreData.deltaY,deltaX:coreData.deltaX,deltaY:coreData.deltaY,lastX:draggable.state.x,lastY:draggable.state.y}};var _shims=__webpack_require__(0),_reactDom2=function(obj){return obj&&obj.__esModule?obj:{default:obj}}(__webpack_require__(4)),_domFns=__webpack_require__(5)},function(module,exports,__webpack_require__){"use strict";(function(process){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _possibleConstructorReturn(self,call){if(!self)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!call||"object"!=typeof call&&"function"!=typeof call?self:call}Object.defineProperty(exports,"__esModule",{value:!0});var _slicedToArray=function(){return function(arr,i){if(Array.isArray(arr))return arr;if(Symbol.iterator in Object(arr))return function(arr,i){var _arr=[],_n=!0,_d=!1,_e=void 0;try{for(var _s,_i=arr[Symbol.iterator]();!(_n=(_s=_i.next()).done)&&(_arr.push(_s.value),!i||_arr.length!==i);_n=!0);}catch(err){_d=!0,_e=err}finally{try{!_n&&_i.return&&_i.return()}finally{if(_d)throw _e}}return _arr}(arr,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_createClass=function(){function defineProperties(target,props){for(var i=0;i not mounted on DragStart!");var ownerDocument=thisNode.ownerDocument;if(!(_this.props.disabled||!(e.target instanceof ownerDocument.defaultView.Node)||_this.props.handle&&!(0,_domFns.matchesSelectorAndParentsTo)(e.target,_this.props.handle,thisNode)||_this.props.cancel&&(0,_domFns.matchesSelectorAndParentsTo)(e.target,_this.props.cancel,thisNode))){var touchIdentifier=(0,_domFns.getTouchIdentifier)(e);_this.setState({touchIdentifier:touchIdentifier});var position=(0,_positionFns.getControlPosition)(e,touchIdentifier,_this);if(null!=position){var x=position.x,y=position.y,coreEvent=(0,_positionFns.createCoreData)(_this,x,y);(0,_log2.default)("DraggableCore: handleDragStart: %j",coreEvent),(0,_log2.default)("calling",_this.props.onStart);!1!==_this.props.onStart(e,coreEvent)&&(_this.props.enableUserSelectHack&&(0,_domFns.addUserSelectStyles)(ownerDocument),_this.setState({dragging:!0,lastX:x,lastY:y}),(0,_domFns.addEvent)(ownerDocument,dragEventFor.move,_this.handleDrag),(0,_domFns.addEvent)(ownerDocument,dragEventFor.stop,_this.handleDragStop))}}},_this.handleDrag=function(e){"touchmove"===e.type&&e.preventDefault();var position=(0,_positionFns.getControlPosition)(e,_this.state.touchIdentifier,_this);if(null!=position){var x=position.x,y=position.y;if(Array.isArray(_this.props.grid)){var _deltaX=x-_this.state.lastX,_deltaY=y-_this.state.lastY,_snapToGrid=(0,_positionFns.snapToGrid)(_this.props.grid,_deltaX,_deltaY),_snapToGrid2=_slicedToArray(_snapToGrid,2);if(_deltaX=_snapToGrid2[0],_deltaY=_snapToGrid2[1],!_deltaX&&!_deltaY)return;x=_this.state.lastX+_deltaX,y=_this.state.lastY+_deltaY}var coreEvent=(0,_positionFns.createCoreData)(_this,x,y);(0,_log2.default)("DraggableCore: handleDrag: %j",coreEvent);if(!1!==_this.props.onDrag(e,coreEvent))_this.setState({lastX:x,lastY:y});else try{_this.handleDragStop(new MouseEvent("mouseup"))}catch(err){var event=document.createEvent("MouseEvents");event.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),_this.handleDragStop(event)}}},_this.handleDragStop=function(e){if(_this.state.dragging){var position=(0,_positionFns.getControlPosition)(e,_this.state.touchIdentifier,_this);if(null!=position){var x=position.x,y=position.y,coreEvent=(0,_positionFns.createCoreData)(_this,x,y),thisNode=_reactDom2.default.findDOMNode(_this);thisNode&&_this.props.enableUserSelectHack&&(0,_domFns.removeUserSelectStyles)(thisNode.ownerDocument),(0,_log2.default)("DraggableCore: handleDragStop: %j",coreEvent),_this.setState({dragging:!1,lastX:NaN,lastY:NaN}),_this.props.onStop(e,coreEvent),thisNode&&((0,_log2.default)("DraggableCore: Removing handlers"),(0,_domFns.removeEvent)(thisNode.ownerDocument,dragEventFor.move,_this.handleDrag),(0,_domFns.removeEvent)(thisNode.ownerDocument,dragEventFor.stop,_this.handleDragStop))}}},_this.onMouseDown=function(e){return dragEventFor=eventsFor.mouse,_this.handleDragStart(e)},_this.onMouseUp=function(e){return dragEventFor=eventsFor.mouse,_this.handleDragStop(e)},_this.onTouchStart=function(e){return dragEventFor=eventsFor.touch,_this.handleDragStart(e)},_this.onTouchEnd=function(e){return dragEventFor=eventsFor.touch,_this.handleDragStop(e)},_ret=_temp,_possibleConstructorReturn(_this,_ret)}return function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function, not "+typeof superClass);subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,enumerable:!1,writable:!0,configurable:!0}}),superClass&&(Object.setPrototypeOf?Object.setPrototypeOf(subClass,superClass):subClass.__proto__=superClass)}(DraggableCore,_react2.default.Component),_createClass(DraggableCore,[{key:"componentWillUnmount",value:function(){var thisNode=_reactDom2.default.findDOMNode(this);if(thisNode){var ownerDocument=thisNode.ownerDocument;(0,_domFns.removeEvent)(ownerDocument,eventsFor.mouse.move,this.handleDrag),(0,_domFns.removeEvent)(ownerDocument,eventsFor.touch.move,this.handleDrag),(0,_domFns.removeEvent)(ownerDocument,eventsFor.mouse.stop,this.handleDragStop),(0,_domFns.removeEvent)(ownerDocument,eventsFor.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&(0,_domFns.removeUserSelectStyles)(ownerDocument)}}},{key:"render",value:function(){return _react2.default.cloneElement(_react2.default.Children.only(this.props.children),{style:(0,_domFns.styleHacks)(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}]),DraggableCore}();DraggableCore.displayName="DraggableCore",DraggableCore.propTypes={allowAnyClick:_propTypes2.default.bool,disabled:_propTypes2.default.bool,enableUserSelectHack:_propTypes2.default.bool,offsetParent:function(props,propName){if(!0===process.browser&&props[propName]&&1!==props[propName].nodeType)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:_propTypes2.default.arrayOf(_propTypes2.default.number),handle:_propTypes2.default.string,cancel:_propTypes2.default.string,onStart:_propTypes2.default.func,onDrag:_propTypes2.default.func,onStop:_propTypes2.default.func,onMouseDown:_propTypes2.default.func,className:_shims.dontSetMe,style:_shims.dontSetMe,transform:_shims.dontSetMe},DraggableCore.defaultProps={allowAnyClick:!1,cancel:null,disabled:!1,enableUserSelectHack:!0,offsetParent:null,handle:null,grid:null,transform:null,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){}},exports.default=DraggableCore}).call(exports,__webpack_require__(20))},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=function(){}},function(module,exports,__webpack_require__){"use strict";var Draggable=__webpack_require__(13).default;module.exports=Draggable,module.exports.default=Draggable,module.exports.DraggableCore=__webpack_require__(10).default},function(module,exports,__webpack_require__){"use strict";function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(exports,"__esModule",{value:!0});var _extends=Object.assign||function(target){for(var i=1;i, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}},{key:"componentDidMount",value:function(){void 0!==window.SVGElement&&_reactDom2.default.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:"componentWillReceiveProps",value:function(nextProps){!nextProps.position||this.props.position&&nextProps.position.x===this.props.position.x&&nextProps.position.y===this.props.position.y||this.setState({x:nextProps.position.x,y:nextProps.position.y})}},{key:"componentWillUnmount",value:function(){this.setState({dragging:!1})}},{key:"render",value:function(){var _classNames,style={},svgTransform=null,draggable=!Boolean(this.props.position)||this.state.dragging,position=this.props.position||this.props.defaultPosition,transformOpts={x:(0,_positionFns.canDragX)(this)&&draggable?this.state.x:position.x,y:(0,_positionFns.canDragY)(this)&&draggable?this.state.y:position.y};this.state.isElementSVG?svgTransform=(0,_domFns.createSVGTransform)(transformOpts):style=(0,_domFns.createCSSTransform)(transformOpts);var _props=this.props,defaultClassName=_props.defaultClassName,defaultClassNameDragging=_props.defaultClassNameDragging,defaultClassNameDragged=_props.defaultClassNameDragged,children=_react2.default.Children.only(this.props.children),className=(0,_classnames2.default)(children.props.className||"",defaultClassName,(_classNames={},_defineProperty(_classNames,defaultClassNameDragging,this.state.dragging),_defineProperty(_classNames,defaultClassNameDragged,this.state.dragged),_classNames));return _react2.default.createElement(_DraggableCore2.default,_extends({},this.props,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),_react2.default.cloneElement(children,{className:className,style:_extends({},children.props.style,style),transform:svgTransform}))}}]),Draggable}();Draggable.displayName="Draggable",Draggable.propTypes=_extends({},_DraggableCore2.default.propTypes,{axis:_propTypes2.default.oneOf(["both","x","y","none"]),bounds:_propTypes2.default.oneOfType([_propTypes2.default.shape({left:_propTypes2.default.number,right:_propTypes2.default.number,top:_propTypes2.default.number,bottom:_propTypes2.default.number}),_propTypes2.default.string,_propTypes2.default.oneOf([!1])]),defaultClassName:_propTypes2.default.string,defaultClassNameDragging:_propTypes2.default.string,defaultClassNameDragged:_propTypes2.default.string,defaultPosition:_propTypes2.default.shape({x:_propTypes2.default.number,y:_propTypes2.default.number}),position:_propTypes2.default.shape({x:_propTypes2.default.number,y:_propTypes2.default.number}),className:_shims.dontSetMe,style:_shims.dontSetMe,transform:_shims.dontSetMe}),Draggable.defaultProps=_extends({},_DraggableCore2.default.defaultProps,{axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},position:null}),exports.default=Draggable},function(module,exports,__webpack_require__){"use strict";var emptyFunction=__webpack_require__(1),invariant=__webpack_require__(2),warning=__webpack_require__(8),assign=__webpack_require__(15),ReactPropTypesSecret=__webpack_require__(3),checkPropTypes=__webpack_require__(16);module.exports=function(isValidElement,throwOnDirectAccess){function is(x,y){return x===y?0!==x||1/x==1/y:x!=x&&y!=y}function PropTypeError(message){this.message=message,this.stack=""}function createChainableTypeChecker(validate){function checkType(isRequired,props,propName,componentName,location,propFullName,secret){if(componentName=componentName||ANONYMOUS,propFullName=propFullName||propName,secret!==ReactPropTypesSecret)if(throwOnDirectAccess)invariant(!1,"Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");else if("production"!==Object({DRAGGABLE_DEBUG:void 0}).NODE_ENV&&"undefined"!=typeof console){var cacheKey=componentName+":"+propName;!manualPropTypeCallCache[cacheKey]&&manualPropTypeWarningCount<3&&(warning(!1,"You are manually calling a React.PropTypes validation function for the `%s` prop on `%s`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details.",propFullName,componentName),manualPropTypeCallCache[cacheKey]=!0,manualPropTypeWarningCount++)}return null==props[propName]?isRequired?new PropTypeError(null===props[propName]?"The "+location+" `"+propFullName+"` is marked as required in `"+componentName+"`, but its value is `null`.":"The "+location+" `"+propFullName+"` is marked as required in `"+componentName+"`, but its value is `undefined`."):null:validate(props,propName,componentName,location,propFullName)}if("production"!==Object({DRAGGABLE_DEBUG:void 0}).NODE_ENV)var manualPropTypeCallCache={},manualPropTypeWarningCount=0;var chainedCheckType=checkType.bind(null,!1);return chainedCheckType.isRequired=checkType.bind(null,!0),chainedCheckType}function createPrimitiveTypeChecker(expectedType){return createChainableTypeChecker(function(props,propName,componentName,location,propFullName,secret){var propValue=props[propName];if(getPropType(propValue)!==expectedType)return new PropTypeError("Invalid "+location+" `"+propFullName+"` of type `"+getPreciseType(propValue)+"` supplied to `"+componentName+"`, expected `"+expectedType+"`.");return null})}function isNode(propValue){switch(typeof propValue){case"number":case"string":case"undefined":return!0;case"boolean":return!propValue;case"object":if(Array.isArray(propValue))return propValue.every(isNode);if(null===propValue||isValidElement(propValue))return!0;var iteratorFn=function(maybeIterable){var iteratorFn=maybeIterable&&(ITERATOR_SYMBOL&&maybeIterable[ITERATOR_SYMBOL]||maybeIterable[FAUX_ITERATOR_SYMBOL]);if("function"==typeof iteratorFn)return iteratorFn}(propValue);if(!iteratorFn)return!1;var step,iterator=iteratorFn.call(propValue);if(iteratorFn!==propValue.entries){for(;!(step=iterator.next()).done;)if(!isNode(step.value))return!1}else for(;!(step=iterator.next()).done;){var entry=step.value;if(entry&&!isNode(entry[1]))return!1}return!0;default:return!1}}function getPropType(propValue){var propType=typeof propValue;return Array.isArray(propValue)?"array":propValue instanceof RegExp?"object":function(propType,propValue){return"symbol"===propType||"Symbol"===propValue["@@toStringTag"]||"function"==typeof Symbol&&propValue instanceof Symbol}(propType,propValue)?"symbol":propType}function getPreciseType(propValue){if(void 0===propValue||null===propValue)return""+propValue;var propType=getPropType(propValue);if("object"===propType){if(propValue instanceof Date)return"date";if(propValue instanceof RegExp)return"regexp"}return propType}var ITERATOR_SYMBOL="function"==typeof Symbol&&Symbol.iterator,FAUX_ITERATOR_SYMBOL="@@iterator",ANONYMOUS="<>",ReactPropTypes={array:createPrimitiveTypeChecker("array"),bool:createPrimitiveTypeChecker("boolean"),func:createPrimitiveTypeChecker("function"),number:createPrimitiveTypeChecker("number"),object:createPrimitiveTypeChecker("object"),string:createPrimitiveTypeChecker("string"),symbol:createPrimitiveTypeChecker("symbol"),any:createChainableTypeChecker(emptyFunction.thatReturnsNull),arrayOf:function(typeChecker){return createChainableTypeChecker(function(props,propName,componentName,location,propFullName){if("function"!=typeof typeChecker)return new PropTypeError("Property `"+propFullName+"` of component `"+componentName+"` has invalid PropType notation inside arrayOf.");var propValue=props[propName];if(!Array.isArray(propValue))return new PropTypeError("Invalid "+location+" `"+propFullName+"` of type `"+getPropType(propValue)+"` supplied to `"+componentName+"`, expected an array.");for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:"transform";if("undefined"==typeof window||void 0===window.document)return"";var style=window.document.documentElement.style;if(prop in style)return"";for(var i=0;i1)for(var i=1;i | TouchList, callback: Function): any {\n for (let i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\n\nexport function isFunction(func: any): boolean {\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\nexport function isNum(num: any): boolean {\n return typeof num === 'number' && !isNaN(num);\n}\n\nexport function int(a: string): number {\n return parseInt(a, 10);\n}\n\nexport function dontSetMe(props: Object, propName: string, componentName: string) {\n if (props[propName]) {\n return new Error(`Invalid prop ${propName} passed to ${componentName} - do not set this, set it on the child.`);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/shims.js","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/emptyFunction.js\n// module id = 1\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/invariant.js\n// module id = 2\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/lib/ReactPropTypesSecret.js\n// module id = 3\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_4__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react-dom\",\"commonjs2\":\"react-dom\",\"amd\":\"react-dom\",\"root\":\"ReactDOM\"}\n// module id = 4\n// module chunks = 0","// @flow\nimport {findInArray, isFunction, int} from './shims';\nimport browserPrefix, {browserPrefixToKey} from './getPrefix';\n\nimport type {ControlPosition, MouseTouchEvent} from './types';\n\nlet matchesSelectorFunc = '';\nexport function matchesSelector(el: Node, selector: string): boolean {\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = findInArray([\n 'matches',\n 'webkitMatchesSelector',\n 'mozMatchesSelector',\n 'msMatchesSelector',\n 'oMatchesSelector'\n ], function(method){\n // $FlowIgnore: Doesn't think elements are indexable\n return isFunction(el[method]);\n });\n }\n\n // Might not be found entirely (not an Element?) - in that case, bail\n // $FlowIgnore: Doesn't think elements are indexable\n if (!isFunction(el[matchesSelectorFunc])) return false;\n\n // $FlowIgnore: Doesn't think elements are indexable\n return el[matchesSelectorFunc](selector);\n}\n\n// Works up the tree to the draggable itself attempting to match selector.\nexport function matchesSelectorAndParentsTo(el: Node, selector: string, baseNode: Node): boolean {\n let node = el;\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n node = node.parentNode;\n } while (node);\n\n return false;\n}\n\nexport function addEvent(el: ?Node, event: string, handler: Function): void {\n if (!el) { return; }\n if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else if (el.addEventListener) {\n el.addEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\n\nexport function removeEvent(el: ?Node, event: string, handler: Function): void {\n if (!el) { return; }\n if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else if (el.removeEventListener) {\n el.removeEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\n\nexport function outerHeight(node: HTMLElement): number {\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += int(computedStyle.borderTopWidth);\n height += int(computedStyle.borderBottomWidth);\n return height;\n}\n\nexport function outerWidth(node: HTMLElement): number {\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += int(computedStyle.borderLeftWidth);\n width += int(computedStyle.borderRightWidth);\n return width;\n}\nexport function innerHeight(node: HTMLElement): number {\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= int(computedStyle.paddingTop);\n height -= int(computedStyle.paddingBottom);\n return height;\n}\n\nexport function innerWidth(node: HTMLElement): number {\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= int(computedStyle.paddingLeft);\n width -= int(computedStyle.paddingRight);\n return width;\n}\n\n// Get from offsetParent\nexport function offsetXYFromParent(evt: {clientX: number, clientY: number}, offsetParent: HTMLElement): ControlPosition {\n const isBody = offsetParent === offsetParent.ownerDocument.body;\n const offsetParentRect = isBody ? {left: 0, top: 0} : offsetParent.getBoundingClientRect();\n\n const x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;\n const y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;\n\n return {x, y};\n}\n\nexport function createCSSTransform({x, y}: {x: number, y: number}): Object {\n // Replace unitless items with px\n return {[browserPrefixToKey('transform', browserPrefix)]: 'translate(' + x + 'px,' + y + 'px)'};\n}\n\nexport function createSVGTransform({x, y}: {x: number, y: number}): string {\n return 'translate(' + x + ',' + y + ')';\n}\n\nexport function getTouch(e: MouseTouchEvent, identifier: number): ?{clientX: number, clientY: number} {\n return (e.targetTouches && findInArray(e.targetTouches, t => identifier === t.identifier)) ||\n (e.changedTouches && findInArray(e.changedTouches, t => identifier === t.identifier));\n}\n\nexport function getTouchIdentifier(e: MouseTouchEvent): ?number {\n if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n}\n\n// User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n\n// Note we're passing `document` b/c we could be iframed\nexport function addUserSelectStyles(doc: ?Document) {\n if (!doc) return;\n let styleEl = doc.getElementById('react-draggable-style-el');\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {background: transparent;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {background: transparent;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\n\nexport function removeUserSelectStyles(doc: ?Document) {\n try {\n if (doc && doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection');\n window.getSelection().removeAllRanges(); // remove selection caused by scroll\n } catch (e) {\n // probably IE\n }\n}\n\nexport function styleHacks(childStyle: Object = {}): Object {\n // Workaround IE pointer events; see #51\n // https://github.com/mzabriskie/react-draggable/issues/51#issuecomment-103488278\n return {\n touchAction: 'none',\n ...childStyle\n };\n}\n\nexport function addClassName(el: HTMLElement, className: string) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`))) {\n el.className += ` ${className}`;\n }\n }\n}\n\nexport function removeClassName(el: HTMLElement, className: string) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`, 'g'), '');\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/domFns.js","module.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}\n// module id = 6\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/index.js\n// module id = 7\n// module chunks = 0","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/warning.js\n// module id = 8\n// module chunks = 0","// @flow\nimport {isNum, int} from './shims';\nimport ReactDOM from 'react-dom';\nimport {getTouch, innerWidth, innerHeight, offsetXYFromParent, outerWidth, outerHeight} from './domFns';\n\nimport type Draggable from '../Draggable';\nimport type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';\nimport type DraggableCore from '../DraggableCore';\n\nexport function getBoundPosition(draggable: Draggable, x: number, y: number): [number, number] {\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y];\n\n // Clone new bounds\n let {bounds} = draggable.props;\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n const node = findDOMNode(draggable);\n\n if (typeof bounds === 'string') {\n const {ownerDocument} = node;\n const ownerWindow = ownerDocument.defaultView;\n let boundNode;\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n if (!(boundNode instanceof HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n const nodeStyle = ownerWindow.getComputedStyle(node);\n const boundNodeStyle = ownerWindow.getComputedStyle(boundNode);\n // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n bounds = {\n left: -node.offsetLeft + int(boundNodeStyle.paddingLeft) + int(nodeStyle.marginLeft),\n top: -node.offsetTop + int(boundNodeStyle.paddingTop) + int(nodeStyle.marginTop),\n right: innerWidth(boundNode) - outerWidth(node) - node.offsetLeft +\n int(boundNodeStyle.paddingRight) - int(nodeStyle.marginRight),\n bottom: innerHeight(boundNode) - outerHeight(node) - node.offsetTop +\n int(boundNodeStyle.paddingBottom) - int(nodeStyle.marginBottom)\n };\n }\n\n // Keep x and y below right and bottom limits...\n if (isNum(bounds.right)) x = Math.min(x, bounds.right);\n if (isNum(bounds.bottom)) y = Math.min(y, bounds.bottom);\n\n // But above left and top limits.\n if (isNum(bounds.left)) x = Math.max(x, bounds.left);\n if (isNum(bounds.top)) y = Math.max(y, bounds.top);\n\n return [x, y];\n}\n\nexport function snapToGrid(grid: [number, number], pendingX: number, pendingY: number): [number, number] {\n const x = Math.round(pendingX / grid[0]) * grid[0];\n const y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\n\nexport function canDragX(draggable: Draggable): boolean {\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\n\nexport function canDragY(draggable: Draggable): boolean {\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n}\n\n// Get {x, y} positions from event.\nexport function getControlPosition(e: MouseTouchEvent, touchIdentifier: ?number, draggableCore: DraggableCore): ?ControlPosition {\n const touchObj = typeof touchIdentifier === 'number' ? getTouch(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n const node = findDOMNode(draggableCore);\n // User can provide an offsetParent if desired.\n const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return offsetXYFromParent(touchObj || e, offsetParent);\n}\n\n// Create an data object exposed by 's events\nexport function createCoreData(draggable: DraggableCore, x: number, y: number): DraggableData {\n const state = draggable.state;\n const isStart = !isNum(state.lastX);\n const node = findDOMNode(draggable);\n\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node,\n deltaX: 0, deltaY: 0,\n lastX: x, lastY: y,\n x, y,\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node,\n deltaX: x - state.lastX, deltaY: y - state.lastY,\n lastX: state.lastX, lastY: state.lastY,\n x, y,\n };\n }\n}\n\n// Create an data exposed by 's events\nexport function createDraggableData(draggable: Draggable, coreData: DraggableData): DraggableData {\n return {\n node: coreData.node,\n x: draggable.state.x + coreData.deltaX,\n y: draggable.state.y + coreData.deltaY,\n deltaX: coreData.deltaX,\n deltaY: coreData.deltaY,\n lastX: draggable.state.x,\n lastY: draggable.state.y\n };\n}\n\n// A lot faster than stringify/parse\nfunction cloneBounds(bounds: Bounds): Bounds {\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\n\nfunction findDOMNode(draggable: Draggable | DraggableCore): HTMLElement {\n const node = ReactDOM.findDOMNode(draggable);\n if (!node) {\n throw new Error(': Unmounted during event!');\n }\n // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n return node;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/positionFns.js","// @flow\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport {matchesSelectorAndParentsTo, addEvent, removeEvent, addUserSelectStyles, getTouchIdentifier,\n removeUserSelectStyles, styleHacks} from './utils/domFns';\nimport {createCoreData, getControlPosition, snapToGrid} from './utils/positionFns';\nimport {dontSetMe} from './utils/shims';\nimport log from './utils/log';\n\nimport type {EventHandler, MouseTouchEvent} from './utils/types';\nimport type {Element as ReactElement} from 'react';\n\n// Simple abstraction for dragging events names.\nconst eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n};\n\n// Default to mouse events.\nlet dragEventFor = eventsFor.mouse;\n\ntype DraggableCoreState = {\n dragging: boolean,\n lastX: number,\n lastY: number,\n touchIdentifier: ?number\n};\n\nexport type DraggableBounds = {\n left: number,\n right: number,\n top: number,\n bottom: number,\n};\n\nexport type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n};\n\nexport type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void;\n\nexport type ControlPosition = {x: number, y: number};\n\nexport type DraggableCoreProps = {\n allowAnyClick: boolean,\n cancel: string,\n children: ReactElement,\n disabled: boolean,\n enableUserSelectHack: boolean,\n offsetParent: HTMLElement,\n grid: [number, number],\n handle: string,\n onStart: DraggableEventHandler,\n onDrag: DraggableEventHandler,\n onStop: DraggableEventHandler,\n onMouseDown: (e: MouseEvent) => void,\n};\n\n//\n// Define .\n//\n// is for advanced usage of . It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\n\nexport default class DraggableCore extends React.Component {\n\n static displayName = 'DraggableCore';\n\n static propTypes = {\n /**\n * `allowAnyClick` allows dragging using any mouse button.\n * By default, we only accept the left button.\n *\n * Defaults to `false`.\n */\n allowAnyClick: PropTypes.bool,\n\n /**\n * `disabled`, if true, stops the from dragging. All handlers,\n * with the exception of `onMouseDown`, will not fire.\n */\n disabled: PropTypes.bool,\n\n /**\n * By default, we add 'user-select:none' attributes to the document body\n * to prevent ugly text selection during drag. If this is causing problems\n * for your app, set this to `false`.\n */\n enableUserSelectHack: PropTypes.bool,\n\n /**\n * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function(props: DraggableCoreProps, propName: $Keys) {\n if (process.browser === true && props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n }\n },\n\n /**\n * `grid` specifies the x and y that dragging should snap to.\n */\n grid: PropTypes.arrayOf(PropTypes.number),\n\n /**\n * `handle` specifies a selector to be used as the handle that initiates drag.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
\n *
Click me to drag
\n *
This is some other content
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n handle: PropTypes.string,\n\n /**\n * `cancel` specifies a selector to be used to prevent drag initialization.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return(\n * \n *
\n *
You can't drag from here
\n *
Dragging here works fine
\n *
\n *
\n * );\n * }\n * });\n * ```\n */\n cancel: PropTypes.string,\n\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: PropTypes.func,\n\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: PropTypes.func,\n\n /**\n * Called when dragging stops.\n * If this function returns the boolean false, the drag will remain active.\n */\n onStop: PropTypes.func,\n\n /**\n * A workaround option which can be passed if onMouseDown needs to be accessed,\n * since it'll always be blocked (as there is internal use of onMouseDown)\n */\n onMouseDown: PropTypes.func,\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: dontSetMe,\n style: dontSetMe,\n transform: dontSetMe\n };\n\n static defaultProps = {\n allowAnyClick: false, // by default only accept left click\n cancel: null,\n disabled: false,\n enableUserSelectHack: true,\n offsetParent: null,\n handle: null,\n grid: null,\n transform: null,\n onStart: function(){},\n onDrag: function(){},\n onStop: function(){},\n onMouseDown: function(){}\n };\n\n state = {\n dragging: false,\n // Used while dragging to determine deltas.\n lastX: NaN, lastY: NaN,\n touchIdentifier: null\n };\n\n componentWillUnmount() {\n // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n const thisNode = ReactDOM.findDOMNode(this);\n if (thisNode) {\n const {ownerDocument} = thisNode;\n removeEvent(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n removeEvent(ownerDocument, eventsFor.touch.move, this.handleDrag);\n removeEvent(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n removeEvent(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n if (this.props.enableUserSelectHack) removeUserSelectStyles(ownerDocument);\n }\n }\n\n handleDragStart: EventHandler = (e) => {\n // Make it possible to attach event handlers on top of this one.\n this.props.onMouseDown(e);\n\n // Only accept left-clicks.\n if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false;\n\n // Get nodes. Be sure to grab relative document (could be iframed)\n const thisNode = ReactDOM.findDOMNode(this);\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error(' not mounted on DragStart!');\n }\n const {ownerDocument} = thisNode;\n\n // Short circuit if handle or cancel prop was provided and selector doesn't match.\n if (this.props.disabled ||\n (!(e.target instanceof ownerDocument.defaultView.Node)) ||\n (this.props.handle && !matchesSelectorAndParentsTo(e.target, this.props.handle, thisNode)) ||\n (this.props.cancel && matchesSelectorAndParentsTo(e.target, this.props.cancel, thisNode))) {\n return;\n }\n\n // Set touch identifier in component state if this is a touch event. This allows us to\n // distinguish between individual touches on multitouch screens by identifying which\n // touchpoint was set to this element.\n const touchIdentifier = getTouchIdentifier(e);\n this.setState({touchIdentifier});\n\n // Get the current drag point from the event. This is used as the offset.\n const position = getControlPosition(e, touchIdentifier, this);\n if (position == null) return; // not possible but satisfies flow\n const {x, y} = position;\n\n // Create an event object with all the data parents need to make a decision here.\n const coreEvent = createCoreData(this, x, y);\n\n log('DraggableCore: handleDragStart: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, cancel.\n log('calling', this.props.onStart);\n const shouldUpdate = this.props.onStart(e, coreEvent);\n if (shouldUpdate === false) return;\n\n // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n if (this.props.enableUserSelectHack) addUserSelectStyles(ownerDocument);\n\n // Initiate dragging. Set the current x and y as offsets\n // so we know how much we've moved during the drag. This allows us\n // to drag elements around even if they have been moved, without issue.\n this.setState({\n dragging: true,\n\n lastX: x,\n lastY: y\n });\n\n // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n // this element. We use different events depending on whether or not we have detected that this\n // is a touch-capable device.\n addEvent(ownerDocument, dragEventFor.move, this.handleDrag);\n addEvent(ownerDocument, dragEventFor.stop, this.handleDragStop);\n };\n\n handleDrag: EventHandler = (e) => {\n\n // Prevent scrolling on mobile devices, like ipad/iphone.\n if (e.type === 'touchmove') e.preventDefault();\n\n // Get the current drag point from the event. This is used as the offset.\n const position = getControlPosition(e, this.state.touchIdentifier, this);\n if (position == null) return;\n let {x, y} = position;\n\n // Snap to grid if prop has been provided\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.state.lastX, deltaY = y - this.state.lastY;\n [deltaX, deltaY] = snapToGrid(this.props.grid, deltaX, deltaY);\n if (!deltaX && !deltaY) return; // skip useless drag\n x = this.state.lastX + deltaX, y = this.state.lastY + deltaY;\n }\n\n const coreEvent = createCoreData(this, x, y);\n\n log('DraggableCore: handleDrag: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, trigger end.\n const shouldUpdate = this.props.onDrag(e, coreEvent);\n if (shouldUpdate === false) {\n try {\n // $FlowIgnore\n this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n const event = ((document.createEvent('MouseEvents'): any): MouseTouchEvent);\n // I see why this insanity was deprecated\n // $FlowIgnore\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n this.handleDragStop(event);\n }\n return;\n }\n\n this.setState({\n lastX: x,\n lastY: y\n });\n };\n\n handleDragStop: EventHandler = (e) => {\n if (!this.state.dragging) return;\n\n const position = getControlPosition(e, this.state.touchIdentifier, this);\n if (position == null) return;\n const {x, y} = position;\n const coreEvent = createCoreData(this, x, y);\n\n const thisNode = ReactDOM.findDOMNode(this);\n if (thisNode) {\n // Remove user-select hack\n if (this.props.enableUserSelectHack) removeUserSelectStyles(thisNode.ownerDocument);\n }\n\n log('DraggableCore: handleDragStop: %j', coreEvent);\n\n // Reset the el.\n this.setState({\n dragging: false,\n lastX: NaN,\n lastY: NaN\n });\n\n // Call event handler\n this.props.onStop(e, coreEvent);\n\n if (thisNode) {\n // Remove event handlers\n log('DraggableCore: Removing handlers');\n removeEvent(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);\n removeEvent(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop);\n }\n };\n\n onMouseDown: EventHandler = (e) => {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return this.handleDragStart(e);\n };\n\n onMouseUp: EventHandler = (e) => {\n dragEventFor = eventsFor.mouse;\n\n return this.handleDragStop(e);\n };\n\n // Same as onMouseDown (start drag), but now consider this a touch device.\n onTouchStart: EventHandler = (e) => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n\n return this.handleDragStart(e);\n };\n\n onTouchEnd: EventHandler = (e) => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n\n return this.handleDragStop(e);\n };\n\n render() {\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return React.cloneElement(React.Children.only(this.props.children), {\n style: styleHacks(this.props.children.props.style),\n\n // Note: mouseMove handler is attached to document so it will still function\n // when the user drags quickly and leaves the bounds of the element.\n onMouseDown: this.onMouseDown,\n onTouchStart: this.onTouchStart,\n onMouseUp: this.onMouseUp,\n onTouchEnd: this.onTouchEnd\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/DraggableCore.js","// @flow\n/*eslint no-console:0*/\nexport default function log(...args: any) {\n if (process.env.DRAGGABLE_DEBUG) console.log(...args);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/log.js","var Draggable = require('./lib/Draggable').default;\n\n// Previous versions of this lib exported as the root export. As to not break\n// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = require('./lib/DraggableCore').default;\n\n\n\n// WEBPACK FOOTER //\n// ./index.js","// @flow\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport {createCSSTransform, createSVGTransform} from './utils/domFns';\nimport {canDragX, canDragY, createDraggableData, getBoundPosition} from './utils/positionFns';\nimport {dontSetMe} from './utils/shims';\nimport DraggableCore from './DraggableCore';\nimport type {ControlPosition, DraggableBounds, DraggableCoreProps} from './DraggableCore';\nimport log from './utils/log';\nimport type {DraggableEventHandler} from './utils/types';\nimport type {Element as ReactElement} from 'react';\n\ntype DraggableState = {\n dragging: boolean,\n dragged: boolean,\n x: number, y: number,\n slackX: number, slackY: number,\n isElementSVG: boolean\n};\n\nexport type DraggableProps = {\n ...$Exact,\n axis: 'both' | 'x' | 'y' | 'none',\n bounds: DraggableBounds | string | false,\n defaultClassName: string,\n defaultClassNameDragging: string,\n defaultClassNameDragged: string,\n defaultPosition: ControlPosition,\n position: ControlPosition,\n};\n\n//\n// Define \n//\n\nexport default class Draggable extends React.Component {\n\n static displayName = 'Draggable';\n\n static propTypes = {\n // Accepts all props accepts.\n ...DraggableCore.propTypes,\n\n /**\n * `axis` determines which axis the draggable can move.\n *\n * Note that all callbacks will still return data as normal. This only\n * controls flushing to the DOM.\n *\n * 'both' allows movement horizontally and vertically.\n * 'x' limits movement to horizontal axis.\n * 'y' limits movement to vertical axis.\n * 'none' limits all movement.\n *\n * Defaults to 'both'.\n */\n axis: PropTypes.oneOf(['both', 'x', 'y', 'none']),\n\n /**\n * `bounds` determines the range of movement available to the element.\n * Available values are:\n *\n * 'parent' restricts movement within the Draggable's parent node.\n *\n * Alternatively, pass an object with the following properties, all of which are optional:\n *\n * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n *\n * All values are in px.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
Content
\n *
\n * );\n * }\n * });\n * ```\n */\n bounds: PropTypes.oneOfType([\n PropTypes.shape({\n left: PropTypes.number,\n right: PropTypes.number,\n top: PropTypes.number,\n bottom: PropTypes.number\n }),\n PropTypes.string,\n PropTypes.oneOf([false])\n ]),\n\n defaultClassName: PropTypes.string,\n defaultClassNameDragging: PropTypes.string,\n defaultClassNameDragged: PropTypes.string,\n\n /**\n * `defaultPosition` specifies the x and y that the dragged item should start at\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n defaultPosition: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }),\n\n /**\n * `position`, if present, defines the current position of the element.\n *\n * This is similar to how form elements in React work - if no `position` is supplied, the component\n * is uncontrolled.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
I start with transformX: 25px and transformY: 25px;
\n *
\n * );\n * }\n * });\n * ```\n */\n position: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }),\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: dontSetMe,\n style: dontSetMe,\n transform: dontSetMe\n };\n\n static defaultProps = {\n ...DraggableCore.defaultProps,\n axis: 'both',\n bounds: false,\n defaultClassName: 'react-draggable',\n defaultClassNameDragging: 'react-draggable-dragging',\n defaultClassNameDragged: 'react-draggable-dragged',\n defaultPosition: {x: 0, y: 0},\n position: null\n };\n\n constructor(props: DraggableProps) {\n super(props);\n\n this.state = {\n // Whether or not we are currently dragging.\n dragging: false,\n\n // Whether or not we have been dragged before.\n dragged: false,\n\n // Current transform x and y.\n x: props.position ? props.position.x : props.defaultPosition.x,\n y: props.position ? props.position.y : props.defaultPosition.y,\n\n // Used for compensating for out-of-bounds drags\n slackX: 0, slackY: 0,\n\n // Can only determine if SVG after mounting\n isElementSVG: false\n };\n }\n\n componentWillMount() {\n if (this.props.position && !(this.props.onDrag || this.props.onStop)) {\n // eslint-disable-next-line\n console.warn('A `position` was applied to this , without drag handlers. This will make this ' +\n 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' +\n '`position` of this element.');\n }\n }\n\n componentDidMount() {\n // Check to see if the element passed is an instanceof SVGElement\n if(typeof window.SVGElement !== 'undefined' && ReactDOM.findDOMNode(this) instanceof window.SVGElement) {\n this.setState({ isElementSVG: true });\n }\n }\n\n componentWillReceiveProps(nextProps: Object) {\n // Set x/y if position has changed\n if (nextProps.position &&\n (!this.props.position ||\n nextProps.position.x !== this.props.position.x ||\n nextProps.position.y !== this.props.position.y\n )\n ) {\n this.setState({ x: nextProps.position.x, y: nextProps.position.y });\n }\n }\n\n componentWillUnmount() {\n this.setState({dragging: false}); // prevents invariant if unmounted while dragging\n }\n\n onDragStart: DraggableEventHandler = (e, coreData) => {\n log('Draggable: onDragStart: %j', coreData);\n\n // Short-circuit if user's callback killed it.\n const shouldStart = this.props.onStart(e, createDraggableData(this, coreData));\n // Kills start event on core as well, so move handlers are never bound.\n if (shouldStart === false) return false;\n\n this.setState({dragging: true, dragged: true});\n };\n\n onDrag: DraggableEventHandler = (e, coreData) => {\n if (!this.state.dragging) return false;\n log('Draggable: onDrag: %j', coreData);\n\n const uiData = createDraggableData(this, coreData);\n\n const newState: $Shape = {\n x: uiData.x,\n y: uiData.y\n };\n\n // Keep within bounds.\n if (this.props.bounds) {\n // Save original x and y.\n const {x, y} = newState;\n\n // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n newState.x += this.state.slackX;\n newState.y += this.state.slackY;\n\n // Get bound position. This will ceil/floor the x and y within the boundaries.\n const [newStateX, newStateY] = getBoundPosition(this, newState.x, newState.y);\n newState.x = newStateX;\n newState.y = newStateY;\n\n // Recalculate slack by noting how much was shaved by the boundPosition handler.\n newState.slackX = this.state.slackX + (x - newState.x);\n newState.slackY = this.state.slackY + (y - newState.y);\n\n // Update the event we fire to reflect what really happened after bounds took effect.\n uiData.x = newState.x;\n uiData.y = newState.y;\n uiData.deltaX = newState.x - this.state.x;\n uiData.deltaY = newState.y - this.state.y;\n }\n\n // Short-circuit if user's callback killed it.\n const shouldUpdate = this.props.onDrag(e, uiData);\n if (shouldUpdate === false) return false;\n\n this.setState(newState);\n };\n\n onDragStop: DraggableEventHandler = (e, coreData) => {\n if (!this.state.dragging) return false;\n\n // Short-circuit if user's callback killed it.\n const shouldStop = this.props.onStop(e, createDraggableData(this, coreData));\n if (shouldStop === false) return false;\n\n log('Draggable: onDragStop: %j', coreData);\n\n const newState: $Shape = {\n dragging: false,\n slackX: 0,\n slackY: 0\n };\n\n // If this is a controlled component, the result of this operation will be to\n // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n const controlled = Boolean(this.props.position);\n if (controlled) {\n const {x, y} = this.props.position;\n newState.x = x;\n newState.y = y;\n }\n\n this.setState(newState);\n };\n\n render(): ReactElement {\n let style = {}, svgTransform = null;\n\n // If this is controlled, we don't want to move it - unless it's dragging.\n const controlled = Boolean(this.props.position);\n const draggable = !controlled || this.state.dragging;\n\n const position = this.props.position || this.props.defaultPosition;\n const transformOpts = {\n // Set left if horizontal drag is enabled\n x: canDragX(this) && draggable ?\n this.state.x :\n position.x,\n\n // Set top if vertical drag is enabled\n y: canDragY(this) && draggable ?\n this.state.y :\n position.y\n };\n\n // If this element was SVG, we use the `transform` attribute.\n if (this.state.isElementSVG) {\n svgTransform = createSVGTransform(transformOpts);\n } else {\n // Add a CSS transform to move the element around. This allows us to move the element around\n // without worrying about whether or not it is relatively or absolutely positioned.\n // If the item you are dragging already has a transform set, wrap it in a so \n // has a clean slate.\n style = createCSSTransform(transformOpts);\n }\n\n const {\n defaultClassName,\n defaultClassNameDragging,\n defaultClassNameDragged\n } = this.props;\n\n const children = React.Children.only(this.props.children);\n\n // Mark with class while dragging\n const className = classNames((children.props.className || ''), defaultClassName, {\n [defaultClassNameDragging]: this.state.dragging,\n [defaultClassNameDragged]: this.state.dragged\n });\n\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return (\n \n {React.cloneElement(children, {\n className: className,\n style: {...children.props.style, ...style},\n transform: svgTransform\n })}\n \n );\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/Draggable.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n warning(\n false,\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `%s` prop on `%s`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n propFullName,\n componentName\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n warning(\n false,\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received %s at index %s.',\n getPostfixForTypeWarning(checker),\n i\n );\n return emptyFunction.thatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/factoryWithTypeCheckers.js\n// module id = 14\n// module chunks = 0","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/object-assign/index.js\n// module id = 15\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== 'production') {\n var invariant = require('fbjs/lib/invariant');\n var warning = require('fbjs/lib/warning');\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/checkPropTypes.js\n// module id = 16\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/factoryWithThrowingShims.js\n// module id = 17\n// module chunks = 0","/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/classnames/index.js\n// module id = 18\n// module chunks = 0","// @flow\nconst prefixes = ['Moz', 'Webkit', 'O', 'ms'];\nexport function getPrefix(prop: string='transform'): string {\n // Checking specifically for 'window.document' is for pseudo-browser server-side\n // environments that define 'window' as the global context.\n // E.g. React-rails (see https://github.com/reactjs/react-rails/pull/84)\n if (typeof window === 'undefined' || typeof window.document === 'undefined') return '';\n\n const style = window.document.documentElement.style;\n\n if (prop in style) return '';\n\n for (let i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n\n return '';\n}\n\nexport function browserPrefixToKey(prop: string, prefix: string): string {\n return prefix ? `${prefix}${kebabToTitleCase(prop)}` : prop;\n}\n\nexport function browserPrefixToStyle(prop: string, prefix: string): string {\n return prefix ? `-${prefix.toLowerCase()}-${prop}` : prop;\n}\n\nfunction kebabToTitleCase(str: string): string {\n let out = '';\n let shouldCapitalize = true;\n for (let i = 0; i < str.length; i++) {\n if (shouldCapitalize) {\n out += str[i].toUpperCase();\n shouldCapitalize = false;\n } else if (str[i] === '-') {\n shouldCapitalize = true;\n } else {\n out += str[i];\n }\n }\n return out;\n}\n\n// Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\nexport default getPrefix();\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/getPrefix.js","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/process/browser.js\n// module id = 20\n// module chunks = 0"]} \ No newline at end of file diff --git a/webapp/libs/react-resizable/Resizable.js b/webapp/libs/react-resizable/Resizable.js index 1e084e7cb..84b91e2af 100644 --- a/webapp/libs/react-resizable/Resizable.js +++ b/webapp/libs/react-resizable/Resizable.js @@ -129,14 +129,16 @@ var Resizable = function (_React$Component) { deltaX = _ref2.deltaX, deltaY = _ref2.deltaY; + // scale + var scale = _this2.props.scale || 1 // Axis restrictions var canDragX = _this2.props.axis === 'both' || _this2.props.axis === 'x'; var canDragY = _this2.props.axis === 'both' || _this2.props.axis === 'y'; // Update w/h - var width = _this2.state.width + (canDragX ? deltaX : 0); - var height = _this2.state.height + (canDragY ? deltaY : 0); + var width = _this2.state.width + (canDragX ? deltaX / scale : 0); + var height = _this2.state.height + (canDragY ? deltaY / scale : 0); // Early return if no change var widthChanged = width !== _this2.state.width, @@ -188,6 +190,7 @@ var Resizable = function (_React$Component) { onResize = _props.onResize, onResizeStop = _props.onResizeStop, onResizeStart = _props.onResizeStart, + scale = _props.scale, p = _objectWithoutProperties(_props, ['children', 'draggableOpts', 'width', 'height', 'handleSize', 'lockAspectRatio', 'axis', 'minConstraints', 'maxConstraints', 'onResize', 'onResizeStop', 'onResizeStart']); var className = p.className ? p.className + ' react-resizable' : 'react-resizable'; @@ -253,7 +256,10 @@ Resizable.propTypes = { onResize: _propTypes2.default.func, // These will be passed wholesale to react-draggable's DraggableCore - draggableOpts: _propTypes2.default.object + draggableOpts: _propTypes2.default.object, + + // feat. add scale ability + scale: _propTypes2.default.number }; Resizable.defaultProps = { handleSize: [20, 20], From 4463817b42d824d0dc5e4736370b70dc121ad838 Mon Sep 17 00:00:00 2001 From: shanmengm Date: Tue, 25 Sep 2018 15:03:06 +0800 Subject: [PATCH 04/45] fix bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改Sql模板数据库别名、子查询报错问题 --- server/src/main/java/edp/core/enums/DataTypeEnum.java | 4 ++-- server/src/main/resources/templates/sql/sqlTemplate.stg | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/server/src/main/java/edp/core/enums/DataTypeEnum.java b/server/src/main/java/edp/core/enums/DataTypeEnum.java index ef2d214ec..5098fd60d 100644 --- a/server/src/main/java/edp/core/enums/DataTypeEnum.java +++ b/server/src/main/java/edp/core/enums/DataTypeEnum.java @@ -26,9 +26,9 @@ public enum DataTypeEnum { MYSQL("mysql", "mysql", "com.mysql.jdbc.Driver", "`", "`", "'", "'"), - ORACLE("oracle", "oracle", "oracle.jdbc.driver.OracleDriver", "\"", "\"", "'", "'"), + ORACLE("oracle", "oracle", "oracle.jdbc.driver.OracleDriver", "\"", "\"", "\"", "\""), - SQLSERVER("sqlserver", "sqlserver", "com.microsoft.sqlserver.jdbc.SQLServerDriver", "\"", "\"", "'", "'"), + SQLSERVER("sqlserver", "sqlserver", "com.microsoft.sqlserver.jdbc.SQLServerDriver", "\"", "\"", "\"", "\""), H2("h2", "h2", "org.h2.Driver", null, null, "'", "'"), diff --git a/server/src/main/resources/templates/sql/sqlTemplate.stg b/server/src/main/resources/templates/sql/sqlTemplate.stg index 246623ed7..71d1ca984 100644 --- a/server/src/main/resources/templates/sql/sqlTemplate.stg +++ b/server/src/main/resources/templates/sql/sqlTemplate.stg @@ -72,7 +72,7 @@ SELECT }; separator=","> -FROM () AS T +FROM () T WHERE }; separator=" AND "> @@ -90,13 +90,13 @@ queryDistinctSql(column, params, sql, keywordPrefix, keywordSuffix) ::=<< -SELECT DISTINCT FROM () AS T +SELECT DISTINCT FROM () T WHERE = }; separator=" AND "> ORDER BY -SELECT DISTINCT FROM () AS T +SELECT DISTINCT FROM () T WHERE = }; separator=" AND "> From b3a5931e9019daaa5c1a00045434465c97ea43a3 Mon Sep 17 00:00:00 2001 From: andyfong Date: Tue, 25 Sep 2018 17:36:06 +0800 Subject: [PATCH 05/45] fix(Display): remove chart LayerItem title --- webapp/app/containers/Display/Display.less | 45 ------------------- .../Display/components/LayerItem.tsx | 21 +++------ 2 files changed, 5 insertions(+), 61 deletions(-) diff --git a/webapp/app/containers/Display/Display.less b/webapp/app/containers/Display/Display.less index f44188443..6d3cf8153 100644 --- a/webapp/app/containers/Display/Display.less +++ b/webapp/app/containers/Display/Display.less @@ -348,51 +348,6 @@ border: 2px solid @border-color-base; } - .title { - width: 100%; - height: 40px; - display: flex; - flex-direction: row; - padding: 0 10px; - line-height: 40px; - - h4 { - .ellipsis - } - } - - .body { - flex: 1; - display: flex; - flex-direction: column; - - .block { - flex: 1; - overflow-y: auto; - display: flex; - flex-direction: column; - - .chartBlock { - flex: 1; - overflow-x: hidden; - display: flex; - flex-direction: column; - } - - .tableBlock { - padding: 0 16px; - flex: 1; - - .selectedRow { - td { - background-color: @primary-color; - color: @white; - } - } - } - } - } - &.rect { background-color: @light-bg; } diff --git a/webapp/app/containers/Display/components/LayerItem.tsx b/webapp/app/containers/Display/components/LayerItem.tsx index aed580810..273f0d804 100644 --- a/webapp/app/containers/Display/components/LayerItem.tsx +++ b/webapp/app/containers/Display/components/LayerItem.tsx @@ -264,12 +264,6 @@ export class LayerItem extends React.PureComponent -
-

{layer.name}

-
-
- -
+ ) } From 21b4e69d8e743047d4ea8e83c29c7a4625da90e5 Mon Sep 17 00:00:00 2001 From: andyfong Date: Tue, 25 Sep 2018 17:52:29 +0800 Subject: [PATCH 06/45] feat(Display): remove slide gridDistance param config --- .../app/assets/json/slideSettings/slide.json | 9 ---- webapp/app/containers/Display/Editor.tsx | 42 ++++++------------- .../Display/components/LayerItem.tsx | 8 +--- .../Display/components/SettingForm.tsx | 1 - 4 files changed, 15 insertions(+), 45 deletions(-) diff --git a/webapp/app/assets/json/slideSettings/slide.json b/webapp/app/assets/json/slideSettings/slide.json index c30adeb04..61ff7d4cc 100644 --- a/webapp/app/assets/json/slideSettings/slide.json +++ b/webapp/app/assets/json/slideSettings/slide.json @@ -53,15 +53,6 @@ }], "default": "scaleWidth" }] - }, { - "name": "grid", - "title": "栅格", - "items": [{ - "name": "gridDistance", - "title": "栅格间距", - "component": "inputnumber", - "default": 10 - }] }, { "name": "image", "title": "图片", diff --git a/webapp/app/containers/Display/Editor.tsx b/webapp/app/containers/Display/Editor.tsx index 55ed82708..3c88dc02b 100644 --- a/webapp/app/containers/Display/Editor.tsx +++ b/webapp/app/containers/Display/Editor.tsx @@ -80,7 +80,6 @@ import { undoOperation, redoOperation, loadDisplayShareLink } from './actions' -import widgetlibs from '../../assets/json/widgetlib' const message = require('antd/lib/message') const styles = require('./Display.less') @@ -93,6 +92,7 @@ import { loadBizdataSchema } from '../Bizlogic/actions' import { makeSelectWidgets } from '../Widget/selectors' import { makeSelectBizlogics } from '../Bizlogic/selectors' +import { GRID_ITEM_MARGIN } from '../../globalConstants' import { GraphTypes } from 'utils/util' // import { LayerContextMenu } from './components/LayerContextMenu' @@ -313,16 +313,6 @@ export class Editor extends React.Component { }) } - private gridDistanceChange = (gridDistance) => { - const { slideParams } = this.state - this.setState({ - slideParams: { - ...slideParams, - gridDistance - } - }) - } - private getChartData = (renderType: RenderType, itemId: number, widgetId: number, queryParams?: any) => { const { currentLayersInfo, @@ -545,7 +535,6 @@ export class Editor extends React.Component { onAddDisplayLayers } = this.props const { slideParams } = this.state - const { gridDistance } = slideParams let maxLayerIndex = currentLayers.length === 0 ? 0 : currentLayers.reduce((acc, layer) => Math.max(acc, layer.index), -Infinity) @@ -554,10 +543,10 @@ export class Editor extends React.Component { layer.displaySlideId = currentSlide.id layer['params'] = JSON.stringify({ ...JSON.parse(layer['params']), - width: (slideParams.width - slideParams.gridDistance * 5) / 4, - height: (slideParams.height - slideParams.gridDistance * 5) / 4, - positionX: gridDistance, - positionY: gridDistance + width: (slideParams.width - GRID_ITEM_MARGIN * 5) / 4, + height: (slideParams.height - GRID_ITEM_MARGIN * 5) / 4, + positionX: GRID_ITEM_MARGIN, + positionY: GRID_ITEM_MARGIN }) }) onAddDisplayLayers(currentDisplay.id, currentSlide.id, layers) @@ -570,7 +559,6 @@ export class Editor extends React.Component { return } const { slideParams } = this.state - const { gridDistance } = slideParams const copyLayers = currentSelectedLayers.map((layer) => { const layerParams = JSON.parse(layer.params) const { positionX, positionY } = layerParams @@ -578,8 +566,8 @@ export class Editor extends React.Component { ...layer, params: JSON.stringify({ ...layerParams, - positionX: positionX + gridDistance, - positionY: positionY + gridDistance + positionX: positionX + GRID_ITEM_MARGIN, + positionY: positionY + GRID_ITEM_MARGIN }), id: null } @@ -622,19 +610,18 @@ export class Editor extends React.Component { private keyDown = (key: Keys) => { const { slideParams } = this.state - const { gridDistance } = slideParams switch (key) { case Keys.Up: - this.moveSelectedLayersPosition({ positionXD: 0, positionYD: -gridDistance }) + this.moveSelectedLayersPosition({ positionXD: 0, positionYD: - GRID_ITEM_MARGIN }) break case Keys.Down: - this.moveSelectedLayersPosition({ positionXD: 0, positionYD: gridDistance }) + this.moveSelectedLayersPosition({ positionXD: 0, positionYD: GRID_ITEM_MARGIN }) break case Keys.Left: - this.moveSelectedLayersPosition({ positionXD: -gridDistance, positionYD: 0 }) + this.moveSelectedLayersPosition({ positionXD: - GRID_ITEM_MARGIN, positionYD: 0 }) break case Keys.Right: - this.moveSelectedLayersPosition({ positionXD: gridDistance, positionYD: 0 }) + this.moveSelectedLayersPosition({ positionXD: GRID_ITEM_MARGIN, positionYD: 0 }) break case Keys.Delete: this.deleteLayers() @@ -659,8 +646,6 @@ export class Editor extends React.Component { if (currentSelectedLayers.length <= 0) { return } const { positionXD, positionYD } = direction const { currentDisplay, currentSlide, onEditDisplayLayers } = this.props - const { slideParams } = this.state - const { gridDistance } = slideParams const layers = currentSelectedLayers.map((layer) => { const layerParams = JSON.parse(layer.params) const { positionX, positionY } = layerParams @@ -668,8 +653,8 @@ export class Editor extends React.Component { ...layer, params: JSON.stringify({ ...layerParams, - positionX: positionX - positionX % gridDistance + positionXD, - positionY: positionY - positionY % gridDistance + positionYD + positionX: positionX - positionX % GRID_ITEM_MARGIN + positionXD, + positionY: positionY - positionY % GRID_ITEM_MARGIN + positionYD }) } }) @@ -770,7 +755,6 @@ export class Editor extends React.Component { settingInfo={settingInfo.setting} settingParams={settingInfo.param} onDisplaySizeChange={this.displaySizeChange} - onGridDistanceChange={this.gridDistanceChange} onFormItemChange={this.formItemChange} wrappedComponentRef={this.refHandlers.settingForm} onCollapseChange={this.collapseChange} diff --git a/webapp/app/containers/Display/components/LayerItem.tsx b/webapp/app/containers/Display/components/LayerItem.tsx index 273f0d804..4c0fb9156 100644 --- a/webapp/app/containers/Display/components/LayerItem.tsx +++ b/webapp/app/containers/Display/components/LayerItem.tsx @@ -429,15 +429,11 @@ export class LayerItem extends React.PureComponent Date: Wed, 26 Sep 2018 19:03:03 +0800 Subject: [PATCH 07/45] Modify some configurations --- assembly/src/main/assembly/assembly.xml | 6 ++++++ assembly/src/main/assembly/release.xml | 6 ++++++ config/application.yml.example | 2 ++ server/pom.xml | 7 ------- .../main/java/edp/core/common/jdbc/JdbcDataSource.java | 8 ++++++++ server/src/main/java/edp/core/config/DruidConfig.java | 8 ++++++++ server/src/main/java/edp/core/utils/SqlUtils.java | 8 +++----- server/src/main/resources/application.yml | 2 ++ 8 files changed, 35 insertions(+), 12 deletions(-) diff --git a/assembly/src/main/assembly/assembly.xml b/assembly/src/main/assembly/assembly.xml index 5343c8877..e310405cd 100644 --- a/assembly/src/main/assembly/assembly.xml +++ b/assembly/src/main/assembly/assembly.xml @@ -56,12 +56,18 @@ ${project.parent.basedir}/userfiles userfiles + + * + ${project.parent.basedir}/logs logs + + * + diff --git a/assembly/src/main/assembly/release.xml b/assembly/src/main/assembly/release.xml index ce0d4ba69..10b6f667d 100644 --- a/assembly/src/main/assembly/release.xml +++ b/assembly/src/main/assembly/release.xml @@ -60,12 +60,18 @@ ${project.parent.basedir}/userfiles userfiles + + * + ${project.parent.basedir}/logs logs + + * + diff --git a/config/application.yml.example b/config/application.yml.example index dba11b933..d2de87385 100644 --- a/config/application.yml.example +++ b/config/application.yml.example @@ -41,6 +41,8 @@ source: min-idle: 1 max-wait: 6000 max-active: 10 + break-after-acquire-failure: true + connection-error-retry-attempts: 3 spring: diff --git a/server/pom.xml b/server/pom.xml index ea9519e03..afc92b869 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -212,13 +212,6 @@ - - - - - - - diff --git a/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java b/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java index 2f99be6a4..b8bafe17b 100644 --- a/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java +++ b/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java @@ -66,6 +66,12 @@ public class JdbcDataSource extends DruidDataSource { @Value("${spring.datasource.test-on-return}") private boolean testOnReturn; + @Value("${source.break-after-acquire-failure:true}") + private boolean breakAfterAcquireFailure; + + @Value("${source.connection-error-retry-attempts:3}") + private int connectionErrorRetryAttempts; + private static volatile Map map = new HashMap<>(); public synchronized DruidDataSource getDataSource(String jdbcUrl, String username, String password) throws SourceException { @@ -102,6 +108,8 @@ public synchronized DruidDataSource getDataSource(String jdbcUrl, String usernam instance.setTestWhileIdle(testWhileIdle); instance.setTestOnBorrow(testOnBorrow); instance.setTestOnReturn(testOnReturn); + instance.setConnectionErrorRetryAttempts(connectionErrorRetryAttempts); + instance.setBreakAfterAcquireFailure(breakAfterAcquireFailure); try { instance.init(); diff --git a/server/src/main/java/edp/core/config/DruidConfig.java b/server/src/main/java/edp/core/config/DruidConfig.java index d354bc164..7c24e20b7 100644 --- a/server/src/main/java/edp/core/config/DruidConfig.java +++ b/server/src/main/java/edp/core/config/DruidConfig.java @@ -83,6 +83,12 @@ public class DruidConfig { @Value("${spring.datasource.filters}") private String filters; + @Value("${spring.datasource.break-after-acquire-failure}") + private boolean breakAfterAcquireFailure; + + @Value("${spring.datasource.connection-error-retry-attempts}") + private int connectionErrorRetryAttempts; + /** * druid监控 * @@ -132,6 +138,8 @@ public DruidDataSource druidDataSource() { druidDataSource.setTestWhileIdle(testWhileIdle); druidDataSource.setTestOnBorrow(testOnBorrow); druidDataSource.setTestOnReturn(testOnReturn); + druidDataSource.setBreakAfterAcquireFailure(breakAfterAcquireFailure); + druidDataSource.setConnectionErrorRetryAttempts(connectionErrorRetryAttempts); try { druidDataSource.setFilters(filters); diff --git a/server/src/main/java/edp/core/utils/SqlUtils.java b/server/src/main/java/edp/core/utils/SqlUtils.java index 1bc483148..6ec79168e 100644 --- a/server/src/main/java/edp/core/utils/SqlUtils.java +++ b/server/src/main/java/edp/core/utils/SqlUtils.java @@ -100,7 +100,9 @@ public List> query4List(String sql) throws ServerException { checkSensitiveSql(sql); List> list = null; try { - list = jdbcTemplate().queryForList(sql); + JdbcTemplate jdbcTemplate = jdbcTemplate(); +// jdbcTemplate.setMaxRows(-1); + list = jdbcTemplate.queryForList(sql); log.info("query by database"); } catch (Exception e) { e.printStackTrace(); @@ -249,7 +251,6 @@ public List getColumns(String sql) throws ServerException { * @throws ServerException */ private List getPrimaryKeys(String tableName, DatabaseMetaData metaData) throws ServerException { - Connection connection = null; ResultSet rs = null; List primaryKeys = new ArrayList<>(); try { @@ -261,7 +262,6 @@ private List getPrimaryKeys(String tableName, DatabaseMetaData metaData) throw new ServerException(e.getMessage()); } finally { closeResult(rs); - releaseConnection(connection); } return primaryKeys; } @@ -276,7 +276,6 @@ private List getPrimaryKeys(String tableName, DatabaseMetaData metaData) * @throws ServerException */ private List getColumns(String tableName, DatabaseMetaData metaData) throws ServerException { - Connection connection = null; ResultSet rs = null; List columnList = new ArrayList<>(); try { @@ -288,7 +287,6 @@ private List getColumns(String tableName, DatabaseMetaData metaData throw new ServerException(e.getMessage()); } finally { closeResult(rs); - releaseConnection(connection); } return columnList; } diff --git a/server/src/main/resources/application.yml b/server/src/main/resources/application.yml index e8aca7ffb..ca0107dbc 100644 --- a/server/src/main/resources/application.yml +++ b/server/src/main/resources/application.yml @@ -39,6 +39,8 @@ spring: test-on-borrow: false test-on-return: false filters: stat + break-after-acquire-failure: true + connection-error-retry-attempts: 3 resources: static-locations: classpath:/META-INF/resources/, classpath:/resources/, classpath:/static/, file:${file.userfiles-path}, file:${file.web_resources} From 86224d41c6d2c177f0d99fdf70eef696a06203fa Mon Sep 17 00:00:00 2001 From: shanmengm Date: Thu, 27 Sep 2018 16:48:47 +0800 Subject: [PATCH 08/45] =?UTF-8?q?getData=E6=8E=A5=E5=8F=A3=E6=94=AF?= =?UTF-8?q?=E6=8C=81limit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/src/main/java/edp/core/utils/SqlUtils.java | 12 +++++++++--- .../edp/davinci/dto/viewDto/ViewExecuteParam.java | 2 +- .../edp/davinci/service/impl/ViewServiceImpl.java | 5 ++--- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/server/src/main/java/edp/core/utils/SqlUtils.java b/server/src/main/java/edp/core/utils/SqlUtils.java index 6ec79168e..cf2842ec1 100644 --- a/server/src/main/java/edp/core/utils/SqlUtils.java +++ b/server/src/main/java/edp/core/utils/SqlUtils.java @@ -95,13 +95,13 @@ public void execute(String sql) throws ServerException { } @CachePut(value = "query", key = "#sql") - public List> query4List(String sql) throws ServerException { + public List> query4List(String sql, int limit) throws ServerException { sql = filterAnnotate(sql); checkSensitiveSql(sql); List> list = null; try { JdbcTemplate jdbcTemplate = jdbcTemplate(); -// jdbcTemplate.setMaxRows(-1); + jdbcTemplate.setMaxRows(limit); list = jdbcTemplate.queryForList(sql); log.info("query by database"); } catch (Exception e) { @@ -114,7 +114,13 @@ public List> query4List(String sql) throws ServerException { @Cacheable(value = "query", key = "#sql", sync = true) public List> syncQuery4List(String sql) throws ServerException { - List> list = query4List(sql); + List> list = query4List(sql, -1); + return list; + } + + @Cacheable(value = "query", key = "T(String).valueOf(#limit).concat('-').concat(#sql)", sync = true) + public List> syncQuery4ListByLimit(String sql, int limit) throws ServerException { + List> list = query4List(sql, limit); return list; } diff --git a/server/src/main/java/edp/davinci/dto/viewDto/ViewExecuteParam.java b/server/src/main/java/edp/davinci/dto/viewDto/ViewExecuteParam.java index 9b6aaf674..0be2b8cd4 100644 --- a/server/src/main/java/edp/davinci/dto/viewDto/ViewExecuteParam.java +++ b/server/src/main/java/edp/davinci/dto/viewDto/ViewExecuteParam.java @@ -19,7 +19,6 @@ package edp.davinci.dto.viewDto; import com.alibaba.druid.util.StringUtils; -import edp.core.enums.DataTypeEnum; import edp.core.utils.SqlUtils; import lombok.Data; @@ -36,6 +35,7 @@ public class ViewExecuteParam { private List params; private Boolean cache; private Long expired; + private int limit = 0; public List getAggregators(String jdbcUrl) { diff --git a/server/src/main/java/edp/davinci/service/impl/ViewServiceImpl.java b/server/src/main/java/edp/davinci/service/impl/ViewServiceImpl.java index 98208b4d3..9fce48163 100644 --- a/server/src/main/java/edp/davinci/service/impl/ViewServiceImpl.java +++ b/server/src/main/java/edp/davinci/service/impl/ViewServiceImpl.java @@ -2,7 +2,6 @@ import com.alibaba.druid.util.StringUtils; import com.alibaba.fastjson.JSONObject; -import edp.core.enums.DataTypeEnum; import edp.core.enums.HttpCodeEnum; import edp.core.exception.ServerException; import edp.core.exception.SourceException; @@ -580,7 +579,7 @@ public List> getResultDataList(ViewWithProjectAndSource view if (null != querySqlList && querySqlList.size() > 0) { buildQuerySql(querySqlList, sqlEntity, executeParam, source); for (String sql : querySqlList) { - list = sqlUtils.syncQuery4List(sql); + list = sqlUtils.syncQuery4ListByLimit(sql, executeParam.getLimit()); } } } @@ -747,7 +746,7 @@ public Map getDistinctValueData(ViewWithProjectAndSource viewWit } List> list = null; for (String sql : querySqlList) { - list = sqlUtils.query4List(sql); + list = sqlUtils.query4List(sql, -1); } if (null != list && list.size() > 0) { List objects = new ArrayList<>(); From dec92cbeca66477bdc5056816b09ed1f748a9dcd Mon Sep 17 00:00:00 2001 From: Fuying <1165234947@qq.com> Date: Fri, 28 Sep 2018 12:28:17 +0800 Subject: [PATCH 09/45] =?UTF-8?q?=E6=94=AF=E6=8C=81=E6=94=B6=E8=97=8FProje?= =?UTF-8?q?ct=EF=BC=9B=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webapp/app/assets/fonts/iconfont.css | 14 +- webapp/app/assets/fonts/iconfont.eot | Bin 24628 -> 24932 bytes webapp/app/assets/fonts/iconfont.svg | 6 + webapp/app/assets/fonts/iconfont.ttf | Bin 24460 -> 24764 bytes webapp/app/assets/fonts/iconfont.woff | Bin 15468 -> 15708 bytes webapp/app/containers/Display/Display.less | 33 +-- .../Display/components/DisplayList.tsx | 30 +- .../containers/Organizations/Organization.tsx | 28 +- .../Organizations/component/ProjectItem.tsx | 99 ++++++- .../Organizations/component/ProjectList.tsx | 10 +- webapp/app/containers/Portal/Portal.less | 33 +-- .../Portal/components/PortalList.tsx | 24 +- webapp/app/containers/Projects/Project.less | 28 +- webapp/app/containers/Projects/actions.ts | 60 +++- webapp/app/containers/Projects/constants.ts | 8 + .../app/containers/Projects/historyStack.ts | 28 +- webapp/app/containers/Projects/index.tsx | 260 +++++++++++++++--- webapp/app/containers/Projects/reducer.ts | 26 +- webapp/app/containers/Projects/sagas.ts | 59 +++- webapp/app/containers/Projects/selectors.ts | 7 +- 20 files changed, 600 insertions(+), 153 deletions(-) diff --git a/webapp/app/assets/fonts/iconfont.css b/webapp/app/assets/fonts/iconfont.css index 99ccad554..65c4da47f 100644 --- a/webapp/app/assets/fonts/iconfont.css +++ b/webapp/app/assets/fonts/iconfont.css @@ -1,10 +1,10 @@ @font-face {font-family: "iconfont"; - src: url('iconfont.eot?t=1534415414863'); /* IE9*/ - src: url('iconfont.eot?t=1534415414863#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAADxsAAsAAAAAX4wAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFY8n00VY21hcAAAAYAAAAKYAAAGuHrPVz9nbHlmAAAEGAAAMyoAAE7EAsyFbWhlYWQAADdEAAAAMQAAADYc+CpqaGhlYQAAN3gAAAAgAAAAJBKBDmdobXR4AAA3mAAAADQAAAE4S+b/02xvY2EAADfMAAAAngAAAJ499SiybWF4cAAAOGwAAAAfAAAAIAGCA6VuYW1lAAA4jAAAAUUAAAJtPlT+fXBvc3QAADnUAAAClgAAA/PRJ9/ueJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2BkcWScwMDKwMHUyXSGgYGhH0IzvmYwYuRgYGBiYGVmwAoC0lxTGByeMbzawdzwv4EhhnkVw0qgMCNIDgADfg0zeJzV1UtvzFEcxvHv9EYZ6lZlqHuLurZuVddSdWsl+gqaWtqwFRGLJn0DiHgLxMYCG4lIWIg34AU8Mx0LdpY8p0+X7GzMyWcy8096Muf8nt+vQDvQavutzR+rVPyJlg4/rSw8b2XZwvO2yld/n+C8/6aqHtXUq34NaEgjGtMNTWlaM7qtu5rVnB7ruV7qvT7oo77om37oZ320/rb+rv65UWtMNW7Nv5r/1Oxsvvn1C4Q2erc+7zaoYe82rpuLu935427f/7Lb67LbP3tVfNp73Pd64PWQWa9HPFlcT/+4nv1lwWnf3FWusZMRLnGKMyzlMmc5yDau+54nOMQ59jHKJEcZYgdbOcF63387S+hgFV30uRYVLnCR3RzjOBvZw15aGOYIh+mnxko2MM5yOjnAFbawgtWsYS0Dru4uBulhHd1U2c4YmzjJZnp90I5/eGv/66ta3lpfLH6bLKkMVw5VwjVELeFqotZwXVFbuMKoPVxr1BGuOloSrj9aGk4C6gzKs2XhdKDl4ZygajgxaEU4O2hlOEWoK0o/a1U4WWh1OGNoTThtaG04d2hdOIGoOxbuYX04lagnnE/3bDipqBbOLOoNpxf1BWWP/ijzRgNR5o8Gg3I3Q0G5s+GgnONkUM43EpS9x6LMKI1HmVu6HO4VdCXcNehquH/QtXAnoevhnkITQTnfZLjP0I1wx6GbQcnCVFB+73S4H9FMuDPR7aDcwZ2g3NndoNRwNtzBaC4oZ3oclCw8D0peXoY7Hb0Pylk/hLsffQxKXr4EJQvfgpKF70HJwo+g1OdnlP8L9dHwDKH+NjxNqL8LzxXqn8MThkYtPGtoTEXpsMat8Pxh/lV4EjH/KTyTaHaGpxPN1+E5RfNN0Psb7HFVvHicpXwJgBvVefD73ptb0kijkWZW2tWu7tn7kFaala/d9W1jg++Lw8YBAwFsfEA4Al7CnQRjbEJCCAkpBBKbEg4HSBvCkrQJTWhCmxNCGxKcpn9TEtKWpAVr/H9vpDWLgbT9/5X0zu9975t3fMd73ywBgn/sCH2T2ISoUJRSkJOoHLPcOeCW4+3gQnWYfdK7N+XIh34rG4HqQ7sr0JWCM9vgb6DVau26TfVeelynkS1nwyfzHXFoaRlFlAIhx+9lr7AtRCIhEiOthEC8LDvl2TTn2rm4nIs7bnwmrdhyJUdnXX7kyOX8d4T/vc4DUE4kj0zVIl7Np3eC/pAESS+pknlkETmFnEZWk/XkdOyjH2bDcLVkpSAmFXLxmJQtzoYTsQ6y0Q7lTKlaMYaLzJJymWzRMTIOPmylH7L49DFLLMdzbvM3PQ1b9Gi0LRqFL5Q7xtOT6bF0yN3I2EaXksrIiApW0iNtJUr3fi4UBYi2RqPe9omJSf/rTUylaBmiIY5J3xKKXrg409ubWdwI6WrXu7Y6Z04V9rqr639sTSRaYdnqadCf2ML/Rv2QNMYYx+J8+s+EEZkESJgQM2Pgp5IReRzPVD4FY96k/9vfSMEG2F8ffP11nn/9dUIoztPn2SS9l1ikjRAXZ9zOVEu2DrlCP7jGHChbMVlEvCZ8RHAF+nVhRKSt9NixuW2MOSwG9LnLjh3/Pmg/f6Y1DzRm2SBvlOglto7QyzwD5sAc7xtIHaf16yyK/dgkTbpIicwk88lyso5sJucj5XE+Me/o2caeIdcOpepwMSvhHPHIX5knJeQGBE7dFPCJKjtmnVSyVxgR6NNCTeBPUZ/bRlkni1F6xnLoHe/Fb6XdcWY6zsqU48xwnP9IZrPlbDbayNXvBZ4rZx/KDw0tGRqqZoez+L2vAQRrnmktQCxug7TJHwHAIfA+lOZYe08DjmCGc7gZl5uYvu/MLBZnOl9poFgAHO2SofuTHC+ibAD56/743ezndJJkSZFUcN2vIhvIeeSjZD/5LCGFbA9YNv+0Ay5qqR+qo/ybkSpGFYfVNiSGS6IwXBl2yyVc5T0gzQYXs3a5JMd5tuJYsiVhwq0UZ0JJLkhypWqJCFKdCVWEcXIIU3VzUhFR4AazsrNBlrIDEAZJlpyii/3hpIlFx7UkJxbHTwdI/XQOsKceeNBgQAthXZAF2ZsUFCYJhTYmep/LQ4Zd2hYI5I59lm099mKwGAoVQl/R8zpgsg0AZBnToBdCQAdnzEot8jbKaiYMCDWrpz8fpGFXkcDaKKnyCuV0JigSpVTYJikyLTidV3bEPi+cltmwsj21dCyb7jIVlWkKQECmlpFdBAU6kqUt9Ydb6KinHjSMIIQWBEHPRloSOoTOweR4Oo34Q9eH9A/29H0Kik92OpoE+n0hpOnxoWFqgaTUgsHMNlkak9cxJimSzNgWCaTXZs8+feiq3/f1trUp0pVxmHH6mTMIPX78+FUCoU9AFvqQX5Vm4jK3kf3Ec/GshIs9ni3mJEuOc16VxSkoV3gKi8pW0Y2Xh6sV3KF+LcKWY1IcORNuHYTN8dK4H2LzeLHq5OI8aUm8slKqlvvBQeyVIgctSg5mK+XhYiXHWX216OhgYxHuv+IA8lEnjrsQwTF14luyyj40FlZynJCKU+S8M+5PvVOucADsqFKVXF5bxjqMpSpnK1iHxPKQc1tehQS55YpVdSuY8bt2cviAZf5BehAElzPDpjKnAtfRjZqW0EQhnNIlXVMEKqqizKyEFhBbW0KSKRqaKaigQMiUtLieVIOCHjUlSaItsqjh0qNmTIib6ZDKpEBvJCpKHF1YAhH0lN7qFKSQFBIkVZKSGMpKiEYpGAFD7WgRqKzH1TDVEBDBEXMw3KGFQdREGfOyGTKRmCATQrFozB6QVDWJefwKgEsyKqlaKNAmqTRbFE3HNJE67LeGhJugClIymtRbOF7bxM7TkixoIOtOi9YSRhSmrEqCGKFbo6qoGWK6LOmttqQGRTOkR+OBZDLcqglUpRBDahCJGVGTaktUCouIyGiRkko0GjPjgmziU2EHgoxEYi9iRMQHFdKGyDuQcfQMPRTO6UEIYq96UBWjHBsfEBw9URBiSdFq6ZDKWBsQczGsTIoQQkJioqgl1HZJMiVZEVmIsQS2SbZ0KogqnZWQP/BRklRdxV5kVZVMzIphHDgFpyBt6rqg4y7O1A9j+XIDB88gpBt53h72B9Qh8qQTpf0gGSYjZBYZQ7mxmCwjK8ga5IFnkC3kHJQgF5FLyB5yOfkwmSDXk5vJx5Ez3kE+RT5D7iX3ky+Sh8gj5Ah5inyNTJK/Is8RIuYquA9O/rmtAE6AykYO5WjOwN3l/Imf+P9Yz8sL7wNbeJ/8e+Hjdez5Nd2r8cPDp16++M9gxuLXn/zcS2vYv3Z3d1/T3X21/71mWsi2/4mKt/zUW9OLvJtPKsBU/dbpuSbEO3C/1Sge6Trxdz2qAkdpoMfbAXO9gevYWcfiV3P4d/ytPim/5u32XWveBfXuku5uX9Xwg8P02aZuRFDM4MfJyBk7w9bW161j6w57ZC09tBZDWAeTQLyeQz+aONH2C/QXJIpaymKUrnFJziAHMqpu2bINy85YKPkGoIiSj2uMKGo7gIflQpXrkbIo2W/XI3jVNfxS9gXQjr1pJlEABQIAGpM071s3yPLtsvxRFpKulOQvStLNlEIQZZQieUdZ/EZJ+hKvBY3+NOAXvkmrvHEiRm/GKFC/HEOq7xaF9YJ0PROvVUTxUlH4ABPOpAuY8iTyp9Pg9bME4QN+9Xka9gs9WDqf6/4S7rH17McMcIxipIUU8InP9/VoxxcxKJqQ8ZYsrkAXBofi0NCUG5UmF0WY8pmzmIujWhA3HBkFGircXLWeDaMo3lwcCSkMBlckKk0d3M4gIhwUeinMLZXmgh/eB8nOJH5h0PNWHpLpge3bD1D50MoVH6TyrnkLdgv0g/DcwIAW2tZ1ExNDWj2ihdj+3Xr43PZAUt0V0gYHOysAlU76uh/D8SnMlM4txRB1a6upeB+o/vJWuPgAYwcu3vdL2ssuWKFueWhkxiMfOO2DuxaFNO8/bh57TGBPaKGQNo99Ybkq3hKTmXYd3KCFFiHy+t82Oyl3Vgg7fpwr4vQfUEPLIH8ihSqxLSqjkjRoZmk8Zls6FB2UssOkXLLlYm5QtOIxHXpwiN1qZdhB0TkI9+bgknDwHzrKjwxteei3lLZ1ZXAVdP1k6eiirgTsvlVIxQQ7SekqSbdfqMEPFKn+g5EN522AG7xjT7cbVgcCKAXtn2E0ukEY/ezRotMqZGLh9Kev0Isz+XKW/TU9ifqjjrZYB+khA8hLx/nazlTcaqkDXBsjGzKGU8yGwQ8KZSMHnAdmKpiqZGSen1oNzpSuzYhHyuaw+RnbnoWRZ1JiYrz6cQzKdGxsrI7GD8VffQIz8Aa05Fvwa0G+msfvHz/0ZNk0P2NZs0wTLvPuN03e1Cy/7E3ApEfGxigZQ/sJ0lHeqiXayhvl+eNw2+Wn7HbmoHwYwjU7B5orE9V+HrZD1W0oIO0wk+snWFtoFDQWLf2QO5d+7ILzP0bn13beEYq0xSD8Fzfe+Bc6jYaYHoHQJ/d436fbli3fRum25cu2UVifuWThBbdSeusFi3Zmik98WI/RiH7Dlxj70g2hCMT0a57K/+TU8yk9/9RG2LRXX6cv4U7TcOyjpN3X4F3kK0tw9CVkG47s2qbDHJwB2cEs3yw4GUVniKEph0pfxcy8c9c4toEFPkvCggxWDMEIKOKlu/XE9T++YSwc0O86qB+cdboak+XrFYmpv4Re74crXl5WP2/+GWjszKd3LTid0tMXXEHnDtW3NLYJvXdoLr1bEml57d7PnQ2Zrd5DAV174TntuQXzJaZoWzU1JnmnW+dZFnwXzljg3dDABVctOAMe8G4dmgcwbwh2N7ARtPHI8W+x11iSGCi/Z5G1ZCdKZi6Fv0v+gRwDC7pgBuyBW+AIfJtKaI8tohvpmfRsei79KL2TfoX+Ff0h/Sl9mcmshbWxNMuzTewstpV9Cu3FAdSKnbJdwf1Ttt2ynCtn++kwn/FyqR03nk6R1Ticg7Fhrs/msjpapy5CoIpZmoNs2eWFUgyVbGRdmKkMzxF4W9RbUReQ0NDBFePGsABR9FPUxnUwHUSc5fgaXVWxK3e4n+kCbnW0YEu81EYt2cYdgpueZ0tol3F6ZJ+e0hw6zBE3yGmQmUWNu8LVeNv/ciw46zk0CiqNSnyyKdrsfuY3tf1HQxugUnax7WAPx5Cz3WHkusOjuDfRiEM0SDUCxnwCcIC4Il3hOn9WQs7t28duvJ/xPYH7pcPvehi3NXKsAf6IuQr2KvijWeGU91MZjRQcM532C67EqWgUYz8xiSPkPehMxr6c4SraKy6nhEuNBhD2m5tDOX3lqmWXOihakjguaKHwSjkFUjstI8qKW26OWQ5RVcoxq8wZzihUeImDZiXFoeUCiOPFAWmn/tijQZHjY+fPAVYPpiDXzjhGt4z40ABypuYO58VfGQ42l3ETxflj8UMihz81EtdOY7gVuVXm+I8wPAcnAq0qe7iYGy724NiXfMNnqs9CLIX0ZIuIFXnqTDTGOH0oCmNoVzt8XoZw7J3BIaeIz4M1w6g9oE5RcUo5FzE4TbrdYacHskPcro7H8AFKOLfDQ24li2pFHKVrGVUNvpCz2IUcL43i81S4RYYY+ErG7nNTrYff1XomnNx6kLe+MiYlE04yCaKZTCTNonmjHjc1TdVMjSeoxm2PAhotalBVBBV1dy2gKcrHqCiJgop2mIj2gqKIpjkmUKpqmqEJmiYD2joptJZEhMUGYhhjNWgGRFEpJ7DElCOiLIsiN200OamZ/C+oUhMNmDCaVMGWROIKvVUzkRPFU61qjGL/mtktGjEDUYl+LMu/oqogiNirEMInADRZhKAaTojJ5F8kRTtmiCFF5VSpUVUK46PIIGtGLKDxriPYixby7ggtk0OwKlQM9kmMobWzHDFihKHEnwebcONKkkRFpBQDJDhUwhKqAkg+lKCIqxUxtFHXsSfKKRUEHgtCkg+Nyp8MK0KA4xc0DY1SJMIQJW8ZFX2DSOWjjFQBx489x9SoiCOPpSLlAEIYHwvtOqxjTBW4wcutTNT/VAlbqsqVpp/CycHRMamIU6CKIW4Xx/CZ/boA9sifR+Xd8xEDsZ8Pem8sdhPCrMGRwXlSVUE0taiu4iTwCVIjumgwHJcATivWQQxnWcAhQctwzQw0AQX+xILMVD20Nm0igRJ2J4i11RSXxliZj48q9PGOPIIihjEAscyNQl4vM0bFAA1REVEgnbFly5YFg2atVmMsCBKCAgSxFciYDGKApr9fIvCZrtUWhkIL/yeQ8Oay2HkT2xRZW75t24Rm2sVWURUwNnUzEAKxAwcAn99sUwycMM1MmVnRH218GNHEaccBNCfSOBj+XPpTO4bKCtZCqDdsao3mKZMvTc30vsN3C8XZTqTi/KCA8snFqeFTETTjumOqmoJj2fn887ioi2aHruGfWdStKJrgQoYTgU3VZpxS9ajAxz108W409fnSpEHdPFh73tRUWQxIzd2jcLoW3hhO4PrWml2DHGgDMRSSkiGEWYjz6E8SFUwqcOsep9x/IFwzQkjDJdJYOziS3M7XR/hSkwHnScDt7p8GrEYo3I6CNrXaGosKRMOMiv5qE/gOQDr9neevD1Grtwr+n39swreIqPC1wXeWyJckBjyW+IgzhlV9arBT4mnOZ/iIi8u26KZPmt9c5rsxmMTdgMxDj0oCn3zR4SQpWoM7iGJorXnwoovuqmko9HwOxmcSJ4ODavE2C5e71sXXudygCb/YAW50uAt3tb9NsGMtzvegoCoYOX28epizP20DIt8DzJJkzguSjIWQ7qDfHHB3yjgGAeqvIs4pGJhyWk5KktQn+owDF6gURIMS135CQIoExpdcQkY2hIs2HEgjaFloMhnwgbEnUcKOpAaPQmSMaaoe9HXiZ9g32ThJkGt8O05GfRJx21IUxeEoWFz0OdUik2SDyzCUxwZqQP3Q419/yJVGYQqNlhP1TpG6s8D1j+M6eOzGYxYKjipKmiKHbajT2NccXtsBKNmtqGxRNtH3o4tqqx6uLspIUmZR9eGVMy76UV+vRam1XDOM0JxQNJkAPx5u5JJ+RGcbTIlccebMS1tbjfjc9pAhrZTllZIRyq7oKG6vrvlwWknZww+N1vp+N+iEKQ3TY12tODRma9l7c8NG7z+HW03Mtna5b6xY8Ub9LFWG4VA0GvIeZfRunvgcvMajf6EMJkJIifdZNBc7EvJFCxQ127J5/pJTVp4adNUQ7xR/IaWmLVhaW2mlqdY3X0+EkeVG8zO93xmG9zuu4is47ofY3WwdCeLId6J+P48sQ433LJwDHH/U3dP+IYDZGKoK12XcylD8T2RF36xuWCtmw+bi2tTJCUru/i9Z/i+o8vCvhW/deee3hMHJVyYH35Wc9fT3np7l3YupRl741q5QJJIwjOA7IrYWztxa//utZ565lfZvPbNujiyldOnI9oHBwYG54PKMu2N6Zltvd3dvK5wy0gAcOcU7x0hwVI+8I/LHaJJNsjESIDZJ+RboQrKKbMMxmjpsQDUcbIlrwnwghkWrA9e6U0HF1s+7tlPlIyJXm1ac6wxhOYL4BZmqe6Kx6DQOlVGtxFTZB6fk63VRrH/dD721m0IwWkquPBe3qdY6M9VnCyzfWYLApXPastXF9Jxa3sprbUt7frCZbprfmyvNWHTxflbfC8klFr3y7PhVn4LJ0PZ9lD38kZ5Ts90951Tve0lgj7KxqR4w9O7PpDLuqvAZiY9sLA+oLZWcegOunb2h8d42u+e8CMDi6mcD3bFcsKNb+aM4fxOF+KocsP0XL53bWpn1wXvalxW+9cZy6/49H3mY2fF5yZTw4v23f5/b882xNHEsuUWfw/GcjyOJamCGq4IGV0kzXC01pk4KDTRsMqjbOj6I4VfLXDc1+FKqGDm+nsqZksUmJ+uTk2Njk3QMQ7Tg0QwfY8RPYgEa9RNR/d5oW/RefjUJE3qUTnBwj/iNCDf062ONPzTfx7boUe8VHzTNb1AbZ2zHPfYM2oZVcja5GC3hIvKgAWjMGarhKa7bW1XbnzfUZcNgSWVJRnulbJVsX6+2StWK09gkJ46rMPSBsGqIXzHYLmdZfh6m7Sf2DLAL1iETB3rpRqqbEAurolBaCNCfFSyFAi4JgJQlS9rcFSyejr/CLtzQOQDsms1bbhXo7K71FyJDBqwAeuuFgcAFtzKe8R4ZXUPpmtGxNQBruii98MEeObO5dvb1CsKGWcRkFJh+Zq13dkxUbQGQeYt2WpFy164SDcsy5Iu/2JPZOmPbTZTt3zZjQ6b7gQsFkfGaPXdzEX7XLoFn4Fxcj/M2Ubpp3vxNOOU+z38Gef5MHEccAdwM/BLOPjEwli0X/Y3QsHgtm+8TPlylqYQPyk6L5/XDuCbbn0t0DIwBjA0MYhh5rtsdWm7dJKZiLel0SzxyI47P5sW5WfYhJGps0Ie8F/TQVZlOt/s5ZMejjbKBjsRz7TDU2Wcm0oMdgCpSKLR4MyTtK814E/2Ur8AE+yqbIA7yzaVkDSHi1NlGpTFjcd9IdoaaBzxxfuTBj0BMzGd0iBv4TPxspODf9DuV/sappY0WncMfmJ9U5diC+nWlcYDxEjty082P4wSGWyLADu7YcZDSeUPjlI4PzYBMS/26RCaToFe3ZMC7P5KIQCINMLR0CNLJVBA5WSQSmoAlVRirLoEtDW5KuQyhV97H2H1XbsE6bxLrYLI1D5Bv9Zrxjdv4FtgWGEh3Vatd6YHAlXwztEWnzrImBIJjYJAMIebQ9NMefvqTax70TB38jCFCRhqI6zweg8UuI+5i5ChunceM1Jv1U3DTKjH29+A32dfYbKKjzGrHhWT4N4aN5VCe2jAGdm/Gy/1A3R1fepEJbz398L+3CN68fV9DWXoFTNiPd/4jvQaehBtY4t8efvotUXjxizu8q4Sv7bvmiOVNXH43feEfz0JdhIgN3w3GpaVBksixRnwNhftrxCSHMx+eyE0l5Kkqc4qoYX7bOLPBJOhv2vJ5N5+/uxH9vtWPPtOIvn/fi4Lw4n2t+Q7+3Ms2XUGFF2GieeJ4iENMfQ83C2EvwmMryA/nEm15dvnpt0+e8LE4TH/TvEeIcj+WTIUfuzAelx25bJThMKz1Dh86REl97YV3fuLCtXB43Tog69Z5+INDd95Z//E0XD+ehgtZMCBXZjzm7jHvhWvtunXHEQ/l+NbdeSftbp7bT7A32T7k/jUym4yTBfw80eRKmswPECVUwXBzNw5LsMw/3bViWJF1isP80FHiB1b8AKM67BSzhUwlg0AOw0B0RPu2je6XV+RqVxc3FhLuyI7eofz6gbHZy/OHlT5laO/QwMCkH87rmzc+nlm5fmVmcu7c+Y8BqsFevf3D6Q9HznHPBT3tfbODXvqF0/KlSj7pfmHm1cV8dLirp8dxHz5f6Vf7+xHJs344v2/+/McWpDOZ9LMYj8PoJxbjMj345Y6H57tPufwGB3nch9lcXEVBYvlnqN3TbgRxJLkfT4FPDOQgY3C5h0IONw8/IbO5NMxwJx4uCn1QfpXmX55nGh/4yzEYGzuO3HTMeykJxBudmKTjY0B+5f1qDIXhxHEUZN4z4+NwLRaO1Z/hwg3GvWf837WTY97k2ORx8uzPoFjfiw3roxO07Z+uHX/W24tCcHxs7Nox7/gYl4xjmCENX6bjdwlfZOeRNOnF51hPtpALyC3kQfJF8igh/gkin0Hbyru+Ys01eYf7xchczAlikThV4lrElgibrkDxGedgvqqPWjl3B3Gr/KyOt2Nv77gmZ2xqmv7mO4EHFwU/JLWQI5icEj/D7zL6EUs7kkPbuayVzFwDW7Z4bXu3lt2dLyeFOIy/fu6fjy7Iicr62cHAA7niwbHHzt+H47T4e95raPCY3/s+RCXJ++33n/qDKP7hqa/+QRD+4KUyHZqsmpo1aBVazPhpjhbTJG3GZemwFHXaslszPT3jvb3pQDhs6Tpcun4PpXvWB3Q9ML6e0vXj4+tBF+SYKZps95ZEb8SOLFzdIgnRmBTsziktnaYajKFlGjST3eVUb1tbb6o1bNR25oeHhZYNN8y8sjY+iqTpJSHmjN4w8+pZq645lVP6PTBF0Xvte0g5u0N846tffUP0w/psXTRNRQjQQOy0PBIsSmZMTOXd1pkz+/UobAVO7XjPueF4GL/bkNb1u6luhWH9+Nx1lK6bi49rqrLW1bt+j2fiLK8ajOTUWEhQo0pLV14JSqYYiGlmMAq/sTi5KYJ8kxz/G2Ep49xbwZ0Q8W/t2pr34xUyg4w2feJWIDAu7wx3f+PKX6G5zv1YrBTC4MRtOe7aFcc1m2UiVwoLvmbI9Udo6o1uJt4FvGDJEopfsmTJse1wsXeQ/yiZSh184sl8/skn8vmDUyX1nzWg4UlsQRrpRsMDS5Yw9+WlB15++cCBl5f87Gc/+/SMAzOVzZsPWOEDGzYcCFv08wdWzlgy42PewQM/wx/kl3hLDvA/KBz0fd+O/+T4NqHEDuHzd6HeswjFS1Hg2mCxyldvNSpzDkgZv2Ur8v1SlOyGRmlVRb8QId2q1FAauesJL7Twy/QLvN+ef85HssuenDhv1p337Yy3tH9ox2PiBZ1WfPSWveX12/98durKtRt/vWHLPu+xcioSnJEwl9RW6kL4blX55Gv9O2bOLvesW7nwFPOy/pASuWvrb7+swiNnLzxOlg7dfO0d3g/haxddMTD7R7VVDwny7ZOnXhQQ5ULbv863LqyN7O0dvDEWfubc029wR+zLu7PR5C39i4YTiQeJr+f5vpq/4r6akENLXQZk4tyk98+rrWqlSGlMdlLevW1tcGaqCyq7H6oGDPm3NHpbV6vt/aplTov3z1Y698mztxhMfxyKpIG3qXughDIyKhXIMe4qiKp7HcuPkRN9r0PZJfO7dN87IsPWHieHjhN6iK6tH6ZrJ5q4vs6+iXy6gLoo18P43WGG3yE23JKQL1fK74jZR6Gjxfunnd7DO71ft6Rh5Bf8U8Pf577U0gE7YaX35Z0I8qVf/GLnzsZvOs2f9K3HsH/D42u4TYuPn7S7/l0Kqn5ZyQdoMLey3YjlE/BoVHBNGE0KbjnmGnzRR9CoQA2zqUNOw82tC6xoIpwC4LVT3bLJlpy4MDDUbhb0T9ONC3C3O7EEFT4upWOpXC4VS0sPaNlYpwvgdiI77kbddMhsKaiboJjgAOEEP1DuU3UVczNyVEAeEE5qZYFiLpcSw1JZVFpbzOqayMcFikjMtKr5VemwsVxLhrEZqj3phJTKGeGFnE0Kq8O9LYiwL5ZAwESsT4tgOyRhk7moF/EsNM1ioghYFwg7ph7XalOdBbSaqYhlMThFDD9NS/Vqy5HomhQWEcdqXsIrV2spM6RFMNXUVabbqgOkjHq+r/two9SXwXw1GLmKiauqwvWqP1U36aE8npwEHkw03FvZxLvLKNqiE55vl8IE1k+g7EXB/a6ypv2BOPxzCW5H4+4y+KfMP8g/OSFlTkRmWrpR7n9ybLJh7B6bfNvo5X/HmzGdAHKceBNcvQBOIJLKtQWMUPVHu5mTTE/ss5/S/0Q6iIkKPypssQ6wStwP2wF+K+/nJTmDSxEX3zy6L6QqX1eUXtVWYaOqeg9ioltRnlbVUH1X0EArBxaArT2NxT2qCps0S4MNqtqF+aeDNoSDs4Kmbwu8xF5h+Sl/Ge5JjPscBYORScP93hnwCrzipfmP5Y89wZZ6HbO8H6Amxukdp5MkTDpw5EbJaWQz2UH2ktvI58gjZJL8HfkF+Te0pxkE0RKfj7Scyse34ajtltuBu2o7DddrfmWJxcWcPa2eu5hMq+fuJzmW484l3KGk4er97vZv179Xe17vVLgt8d7todl+ij75/TqYIlB+vx7eFwPLnXBNzg0hG/d9ankRr7UHh4b9k1V+OjPVEz9u5UyUc5w5ODzOCQxw9p5YMhnjwc1qIKDu4cGLl5qtreal3NsoebMSDCqXKtxfSHnxfwH7UwTDomnQvNI77QSK2J73xGFe+j5ImvC8djwkB2T8npoIBBJKUA7KyaQcUJrYdE3TTzQLhRQOqsDvMb+r0cOuWPJIUNnFYXcpwa+8X4W3u5WX8NrWI36JX3fkf1Hq7ZmOG77yNvIj/+sK+LrEH0RRqEWDSgIzUsJM3srjaAMkADROp1riUxkFUeFPP/2MIMA9d0AiMur+aAEUiem78/q+tNYcKjd8Xbiyb9nFdoryyI2jqiMVUbo1T1RiEiUveT9HhTfz0kuQQQ3355ucRGUmyqB2RQ8yGmECsIXL563gVx4RSoO60g7QPbOScMo14TePPvobocYmsNlL09Ac+60J8ZbYMuipsLb2ErT2hvqXiuLS/lBvK5Ta22ilG5ZDPBGj5si+lYgCEa3cd+JsYJJ6yFE60RZaTDY03gl4j7cR7GxP80zdLVv+qTpX8XK8KGZhUdExuZz2M6Wqg/V2rsEs/Tzuzvd+k+EJW2mLOQBdZluiB2juN6C1jMa6INs+z1GEiZZYNy2k2roSFHoetmN9FIqYsyl0weh7vPtwCY12e/d3RynGcEaXuQuTYBXqf8jbOMMOrIgnvH/EdCoF2UT8Y62J2/3M7cnk2/rWJAO07Unj3MM/Esk6smXrtDgA/JzEkd/7rQmj4d7Qwa1AFlEAhk8dHnZE6X4ToHJqGS5LdCa7Qje95yhMKMUuZxgujZQYPRVSoW7XXTMC8N1koXsEhrvPTSXtOfxAK2ZZ73jP4dlT2rur3ZtjMpAT7+k8Q996T7ngn1JOd18Sp26dGgyyEv9v8jB1X9XkuPH/Jg+N9ny4puN73zx7Boby9b7CIMBggf4gPwT1OzT5IVl73wBioCqNjKLC+6bN/6beT5+O/WH/dGkjXsBrz+fBeYqqKuf5qRNlVPz/qX7bV/YNer+v/3S+k7OwaafmDneyaXj76JSSo96/Mwaho0chxJj370fX7KR055q1l1B6yVfDbQWn0BZuRvQ+03vT9H8g8Z+XmYJcu2bnX8fehsSI0OPe8b1CGflcjq9+MesURCmLq9ss8HMNN2P6Z7uoHVFJFk1LB8CljubcKGS4sxR34snYXHVyq2x5UPN+6f1Ca4nJwsUYy4oZgrO3C2bCFC6GrSFTkTXvF9uZHPMmA9pPVzNF+4n3RtAUV64SYkHvDz/RZGHVTwIT8gsvyLodhJUvyHZLCGBFUNeD3iMQarHlF7wvB23u0indUw/a8j16wPMC+j2yHazfIzXOt//I/paFm3uhhCM87SSX74HCSQ5+8sn1M4D+/fwdArtosXcGxsKO+Vwn27qfCQfPgkNnHRSU27eeXB9cRF8Qdszz/n7RRYxdMg/65+0Q5rD9Z3t/f9YBUdh/NvSfvX/muwAadzO3sP9klyLl3GORuPEyOGLjtjcMyOQyldDf0fYX4EORyNXGkHH1C94ta+hntvyYbvhxt1GOTkQiEz+p/2DdOl9mIcLd9C8RUxdydBE12QJqsoWiLEox0SnqfO7EAjKsfl/XtZsQn4V1UlCCdZGIdygY9A5F6A9Pl0OyKJ/iPe09fQomQvLpkcgUFPzzPZTeo+SUT4vip5Xcj7qYqOsse8cdWabrIuvCmnsYQ4AT6/3j9AX/6QrvoqoQggJSxp1gp1N0I2znfW03DO8AUnTAgI/BRu9B70H6g8cixoMPRozHDGMKBn73IGMPKkXlC6L4BaX48N2f/ewfVsjy8uWyvEIpqrxSLTb8co//NbubzSQhYpBu0ufbRjOb9r3TfJcnwz3SxIbLWVx0fe89FG9l1M5dI2dWym6O6+kiP8ZBk4neuCNt77A7YDv8xQM7dkAsEhhpq/8buMFIJAgKXP75B6RV9r3eG3DYuwfavKP799PnRxAeOuyRa64ZWR2IuFvgbDcSqF8VjJxyF3zS61js3gnPfsg9d8SX1cfvZa+yLTi7ElLdw09fCq7tAFogsuNWcUatuMTv7CTbsnFbcuulwj0K0YCWQWLTF3vuHa6sFRgfntsG65d7X4InBpYPSIbcp0D9PuSDQlANCexxtHNftsKhvrZCJu7l4dudVYBqJ/13jFfCQL5+V34AMIY///au0e1wyineE/BA/7JeiUo9iip7DwB9yODu9dBP4bvxjmg61NMa9xDJ61Bxjr3lcN9uB17zNub7ESZPr0RTZIV/d32Z/l12M+knq8hZZCf5FPkK+Qb5DT8NaQgauxwv+U6jvp8EP41xh/0DKYFFhcYBLn/rFKa8KjIn/CuaQs3IsLfF2wn3e/YOMMSB1f788xfEiu6J2nbfMcN/B7Dc6IkL2Wa13OxjtHGryu/6miNe5ZdkuNiqCJbiB7pxbO8jo41XYvm7Xka5YZbQF71vSKoiXwWDtSUfF4W7zz5tTUwO5CX56lse8I7LKrQ9eN1BEECVtqrS45Lq/R9Ffpy3wAAZhyodkdQ3/wXGS0NjlI4PlsYDHEwLBz4fwqXznUcRatbQQA4U+Yis0JsuPv1DlFHKtN2IA15ZfgavkBTEc7UqMQoXXnDVDSD/2af6UUEZdkpLafk/N94EwScCWzUA/SzxnhW50QiAEkpGhjpvkhQFvqNKn0EEz6rynu9+93IZTIVq8p2yqDhU+Yn3De+vntXEMZHKFP4JafkIJx2XzCYeH1svqaoEt3s7eMz6S/zCsOSH9e/AI5KqSfU7QgEIBjrm0qQqecM0RfsG4HYO7q28ZSsTRgQjzH2xFIleJqox1LdgzhTqUDQmzBaE+370d1fV/4WhktlJbVEZ3XHZcgqPadpTLSywWwfvN3euEkGXtL2Syrg7saxK2IHPR55iz6GMmXoXuHHWgjp0rpJp/gDXnG2UDZHHOaN89DAlh2ntsHfYO1o7BN/2jr566BBM1Pw/2HfsMFtbq6foqzs93Ok1b2eTX/F+Fr+rH857ELf/jsBJcY3tO7br1UO7dkHb0cMYpl7FkC2q1Y4dZW21+jr6av3btFbzapQ0S3yZ+Xt2W7Mffsbt98APr5ntOrLt8qOJSkbEoMYvzCjhYe0W5/nnOq/zdrG13i5YW0/5TwN3XNf57W93Xld/89VXazt3khPPcdu7n0P0b+MaP37+gSwpw89CXH7y9G1/ZLwaW3vscA2pTu2ixCMjcNuiw4dhLf72HX7nYL7/eNkN3m2YOD7iSXFjvF6t7UL0R/3w1ZFdu/TaLtZ27Ch2u65GazhixKvVpkrIn5obfnbPsD+HP8NJMdtX+xPzwBYd28X28anzjvKp817lU9e8s2/Mz9QdBK60DH/5ByfHyFRQRchAc8JwKV3X+dzzzi2wz19Ox46+PWFs0av1NxuzQyXEjWNXq/3JdYbPwleC23yG6TE29YeoRg9hPzhENZwG0ix530fx9Z2GXZ0jvaTSlL3ca7qYy0wx3ngzmPrnAeDHZS50K40ke2U/d4rR64/wa35MYJauwPSxf4P9evTe+iOM1B+Be/XofhrhIQfjwLySpzmw90pUBwSdxPaw/520OWTwf0qbkbGn6Ht/skp0BXbUpO39SQKESjeoaupOtItOnnivbuoalV+u/nSF/0cnVzyHH3LCrn+WJdGun0VWkw+SG7l9IfMD83bmC0W32k+drIjaQlFqRemE6qD/sj53VpGKru9YOAD4WNypy28pNVtW/JbyO7Dxshy/8AnTNvDfh2+8k+FUfYSyxOZnQpSKkWRf0RS5E48Yb7WT9aggKhp3Sg7nAyylKkFZhMMvvHWjqCUlJlEBqBCmeibIQZptKTZN2q0v8EIxnOwvxESUSWKs1W59WQkLvAma4sl0Ug2IAIIq27m0zmzNZnaupz2sUO5JbXUNthsKpIEJ0ple3Xsy3K2LKIfjeoByJyQmYk+KoID7wi6qCZZmC1auN8Vbq9pU67maJVj5nlTExynGsTSqwFk0KKvPbtsqWipDM5DN+fQnxxknpTEvx19mD7AuXFVlcgpZQ7b49yiN90qmq2T+VJxkneT6m0efMYmd5H01dQl94q1Bc5oBSf+aa6CLtlC6ZZF3WSPmJZv3MrZ3M3zUj1/4Ii/igZJoBXrarFmnUWhNFHq409HizRR6/g4GFg/gd/XgKMDo4OAopaOsCyJ2BEEQMQIhKHx0EQLzQsTtXbZ5gtIJv4+qX8gD71GzlkH02EmmZtqn9Dda9p9yfX5wELvwnpxCjyFRccweY79kp5L5OGLryDlkB7mCXE/2k7uRL8mGjXYCP5d1+Xn9KBijULX4GxeYNv27Jb+Uv1lHHf42TA6VrRzqWCk0fBgWQ3yAopofx41QHaVWnDs/Wrgt+FtElt3wxhnl3mwFLKUVnCh+cT+MSh1iL/DLfSwdrtoif+eEK9uW3RsKRXojivQVqmMcMu7HFa+H+8I6fVRUeAlWh3X2iBiJhEvwNGzbdDrTw720cGtWf9p7+cI4zbYNxABeTttJMVNaQ4Fa3obgJwIwlF+HqzMH6dKZ+ma3E2zt2lB3ZhmtX5Lvo52pjRZumiM1psSulMQIGw0d+0woHFZMO//xH2EihCpQr1S98HN+OvHDrBVVMMXO4fmX7shZ0YgEg7Y9SN22K66ArlDY+/UDu9tCj55XqQVhsDAnCfpAMmbTwsDKT4wiWYa3T94ZoG3x/ktWZjrkoJ5gr57aV5zBqhLt6VhywdIOI+kIaXuhsf+cfvWyxJyipSYOoi3SlDX8fmocpUwc7cEetL/GyRkNzX7qH8bwdc8Gc/6tSIPv8t3g/xuZwXjBQEHXgJ3aI41SmLLry3N8vR+VlvbmBQDc5v1rIguQTUCsGXuvgQlveK8ls9kkmDzkJV7wZEDvXyEG/+H9tpE7wn3PjkAUjISRhaXY6Hc+AiOZ9R4Hg5awpAkKUb8MwJj1XoXeQo7cL44kDYg+yTE/mciSd549R086IZLR7AD7XcfJz6/yfrfqGVi06l2nxPV1KyG04mswb+U0+da4eyPvcGo58aYmjum0Hil53vs9Igs//zyEsavfPz/NrffrJ5GxZToctmN3T3PPXXASZT49v5bXsDSuhI38pJJbsf6/4uigpl2yy67hZCVR54dMYS5a0NzlNpfE3/eO+/+TBvdlnIskX2xxX1TfGiy5VdcXQQO+lEJR5uPw0fAXsuZQq4Fnqtj3X0hzWIef9BarblNaDjvFxr/jQCsQbgIUZRuWt6Po+hYogtHlDrXawq2p/kR1jkDndFlUiFy5LKmA0nFhkYrJUX3YhdPteS2FQVm4HEJ68rQZHee07y4XhS6lw9CNXBv9dJ3Ys+Nt3QowoFcyeUkgno/rtZgq6vro4jmzzYEy2kesAN/JoYR6duV2Rlsi0Urx0guiihIbCxdSZqrQ0sUspkSrrhDp6xXqLyIkKwJQqofbdyzNUiF7vSjUolVzHsCIE6UMWHBu6YyMAnJwXqWDFrOVRGmmLkupVWN3zAwkNCWSHu+9aI8upY2WxQW5EBugme05SaBMskoto6mOkb7O3tjAJYtDQf6aSrrFRUmdj5iOveCD89pWtC8dCBqqzJh/H42b/mv052Qp2U6uJp8nj5O/avigT418B7Q3jfjmqHO+ntNpuAHU/Hco3IGk+VYE5a4OzXkR+Zwyic8rGtHVdtpB+ULhU49WN3dE4Yxd59rNKJ0DBe6/eqKb4SYSH3PFXzFOMS/ytxOxYxQQw74zu9neJHbAFw9VS/qA1RsZWRvTUAUIGQrNRdoX9JUWVWJxe2h+mAlzWx1KhcBINpEx2oumldIEEKxZua351qIs3Qi6Wlgbbm+Prnnza1RmlQMoSj/eI6GgnTfMdN0QF/e1UbQ7k19midlu66awVGGslF8Y01szAQ2uB/rEjhXK4GgkqKjByGhagWipVRFoxjGzdsH7JXQkrLI52IOGeqa3nJH6ugPKYEfig+EghcBN9GUWkOwzZrV15+ZeWIjLg0a6oKElLcjBljVuIC6owF/yyVY1mQmiacRmdMW32Wd0WSyO3cRoUB+OndatBBTGoiyi3uVt6pdUepMh4aqjYnefG8ZV0qcvhz8aEq7Du4bMQwqqfmr7ugsL8rXCM7d6jyEgCw+krdzMXLytR4SgFK3q8ZaheXYgJDBhTzDXVouj+Q+rZydQhWLefwTGu1s7Rb5wt3SNUFxYQlPXBZInc8mZ5CrUCt5Pq+XvnU4ptbY/kZx58DnPVys48f57qVzTkprq7duaLD8XROmew3XEqxA1LfE2zaqpdpvfT6FV04whv0N99rZwVGCUKZJEb4JTb5YZSEwWYMMPJk81TYXrjHT+Y3++mGkiV3rVX9zwASGJxVQw1Pv3jCgh1IApE8IIdcYl/fStk1RYOaYHGPgqbJzKqtrUYNtoKCS1dPbbOOKNT9IZCoka4zPyKzEqG63ppBIUmCq3ZKJtQhQXKvxaTAYHoxmVj7xgBCXTjBuyFmVcQ/6/xa20LQAAeJxjYGRgYADiz6oOnfH8Nl8ZuFkYQOD67GIzGP3/+v9wvtPMq4BcDgYmkCgASOsMhAAAAHicY2BkYGBu+N/AEMN36v/1/+f4TjMARVCAHwC99AgDeJxjYWBgYMGL//8nToxMPAuIvcBmXkcRZyTRHIf//7CKMzEw8J2ijlvZf0IwiA0AGcwM+wAAAAAALABYAN4BAAE0AdQCuAROBWwFigYABqAG9AdeB7AILgzoDaQONg7cDzwP4hBCEMQQ/hE2EZARthHcElQSvhPYFFwU1hUCFRQVKBVcFjIWghbIFwQXIBjWGUQZzBosGwIbShuyHAocMBx6HMAdGh2UHuQfGB9MH3wfsB/mIBwgTCCCINAhGCEwIfwiliOCJBQkQCSIJXompidiAAB4nGNgZGBg8GOeyaDFAAJMQMwFhAwM/8F8BgAjiQIrAHicZY9NTsMwEIVf+gekEqqoYIfkBWIBKP0Rq25YVGr3XXTfpk6bKokjx63UA3AejsAJOALcgDvwSCebNpbH37x5Y08A3OAHHo7fLfeRPVwyO3INF7gXrlN/EG6QX4SbaONVuEX9TdjHM6bCbXRheYPXuGL2hHdhDx18CNdwjU/hOvUv4Qb5W7iJO/wKt9Dx6sI+5l5XuI1HL/bHVi+cXqnlQcWhySKTOb+CmV7vkoWt0uqca1vEJlODoF9JU51pW91T7NdD5yIVWZOqCas6SYzKrdnq0AUb5/JRrxeJHoQm5Vhj/rbGAo5xBYUlDowxQhhkiMro6DtVZvSvsUPCXntWPc3ndFsU1P9zhQEC9M9cU7qy0nk6T4E9XxtSdXQrbsuelDSRXs1JErJCXta2VELqATZlV44RelzRiT8oZ0j/AAlabsgAAAB4nG1SWVvbMBDMFJzDSQihpfd9X24JhULvu9DS0p/AJ9sbW+BIriyRwK/vOuZ4qR6s3fUes6OpnalVx6/9/2zjDGYwCw91NNBECz7a6KCLOfQwjz4WcBbnsIjzuICLuITLuIKruIbruIGbuIXbuIO7uIf7eICHeITHeIKnCPAMz7GEAZbxAitYxUusYR2v8Bpv8Bbv8B4f8BGf8Blf8BXf8B0b2MQP/MQWfuE3tvGn1vgrhdqVyhvpfRo0I5GRioXxY1GkoRYmHvjCkAiiVBjbLSJhLZnKa53keFEqlfA2jMjTjoy0yrSLtbOux/ZQxqQiCkKh4pmRyL1EuITmxjJOyAaJyDIyB54ryAx6kSusHgWhK6SiopibzhlrE0dlx3rs8owmnVhYUWhnIlpe8Y1guBUeQ5ENLE2slxjt8saupJi38yfSJUKO5Eh0OK5iioMytTmtyiU1ct6a9+oW2nDniBmQKpkrvZiO3bpTmVR73tAdptIbln3m97RKdnlCIcrburqhjK9GlNJECu0VVpjBbImoo00ilDwUVmq1sDpYstPSncQJNeGSxdWl9aMQV6qk/FjXX11aO4puVZHGUJsxM96dYg+sIWJK+9aFPI+BHTo90sx0u+RzJ5ImyqhV5Yb8qpXFe5BnRZjx5ob2JY1nS6RT/nh2Ru1TxgbdIuXYgTyQTETCf8Sx3VAlJEl1ZtkGy/UNaTdd2NsnYyXrKOAc1kpLZDJRgdV5OzTMY+DynEw/1UYeamVP8jpVXqgtK6BdOUYmqW0V/ACBYhL9KprR0B71Ghpu0Z4mVIW9kTYUnEDQrbHg3kMWWetY2oNmLkypuuxU5MvNgjLenmLfqWOzvi8yR4XPmqeE4VIxmzKJtdo/0tM75wAA') format('woff'), - url('iconfont.ttf?t=1534415414863') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ - url('iconfont.svg?t=1534415414863#iconfont') format('svg'); /* iOS 4.1- */ + src: url('iconfont.eot?t=1538034488414'); /* IE9*/ + src: url('iconfont.eot?t=1538034488414#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAD1cAAsAAAAAYLwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFY8n00UY21hcAAAAYAAAAK2AAAG3GWG2vZnbHlmAAAEOAAAM+oAAE+0RVGOp2hlYWQAADgkAAAAMQAAADYdZpxuaGhlYQAAOFgAAAAgAAAAJBKBDmlobXR4AAA4eAAAADQAAAFAU+b/02xvY2EAADisAAAAogAAAKJZT0X8bWF4cAAAOVAAAAAfAAAAIAGEA6VuYW1lAAA5cAAAAUUAAAJtPlT+fXBvc3QAADq4AAACoQAABATj0w4TeJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2BkcWCcwMDKwMHUyXSGgYGhH0IzvmYwYuRgYGBiYGVmwAoC0lxTGByeMbzawdzwv4EhhnkVw0qgMCNIDgADKw0yeJzV1TtvVFcUxfH/+AUGY8A8DBNMyMNO4pCHnZcxSYiJY95G+BMgKGmgj6IoQuETEEVRFFGDREMBNEiICArE11h3PBTQUZK1vaahoKPJPfqNZq5mju45e509wCDQb/ttwG930fI7+sZ8t7V2v58Na/cHWvLnZX7wb0Y1rrYmNKVpzWpei1rWis7qnC7oki7riq7qhm7qvh7ooZ7oqZ7rRbPQXGvuNveax512Z6VzfvXW6qPucPfOy5cgtNvzTXq+Gc15viWd6c13sTff9Vfme/ba+W7XfG/wannNP/OLx68ev/G7xx/82Rt/9cbfr4x/XjvgOxY4zgne5yBLfMv3rOcoh/iMdzjJJ5zic+/xfg5zmq/4gvfYxxzjrsMg6xhiK1uYck1a/MgiH/I139DmI6bp4wBfMsMHvMVmdnOEETYyzKcc421GGWMb2/nYdZ70mmbZxQ52sol3+Yk9zDPBXi936I3u3v/zGqmX/n97n05XPsPVQ61wHVFfuKKoP1xbNBCuMhoM1xsNhSuP1oUzgNaH04CGg7q3IZwQtDGcFTQSTg3aFM4PGg0nCW0OZwptCacLbQ3nDI2FE4e2RfUCbQ+nEO2ItX3YGU4mGg9n1Kc3nFbUDucWTYQTjCaD+t1UVO/RdFQv0kxQezMb1J7NBfXsB4Ja03xQ8y1G9SstRfUwHQmfF3Q0qO8eC58hdDx8mtCJ8LlCJ4Na06nwWUPLQT37maCysBLUM54Nn0l0Lqj1XQifU3QxfGLRpaDqdjmofb0S1DquRiVU14PKxY2gsnMzfO7R/aDW+iDcC9DDoPLyJKgsPA0qC8+CysLzcPdAL6L+L5qFcEehuRbuLTR3w12G5l6439A8DnceOu1wD6KzEu5GdM6H+xKrt8IditVH4V5FdzjctejeDvcvuneCvf8BoHhhjQAAeJylfAmAXFWV6D33vr2qXtWrV1Wvq7qru/bX+1JrV7buzp6QfU8IZBECCCRkASEIaWRXCSFBFBHFAUETRJYI6Ig0zowwyijugoyixNGvorigM5B6/c99Vd00AZyZ/7uq7nruufede+6559x7XhMg+MeO09eJRYgKOSkOaYnKoUhlFlQK4VaoQLnIPurcFbflo7+XDU/5/r0l6IjDGS3wr9Acae64WXVeeESnga3b4KOZtjA0NQ0hSoGQ8bvYS2wrkYiPhEgzIRAuyHZhJk1XrHRYToftSng6LVlyKU1nXHr8+KX8d5z/vcoDUCaTxydqEa/mjneUfp94STcpkzlkATmNLCeryXpyOvbRCzOhWM5H4hCSsulwSErlZsJkrINstEIhmS+XjGKORaR0MpWzjaSND1vqhRQ+fSgiFsLpSuM3NQ1b9WCwJRiEzxTaRhJjieGEr7KRsY0VSkqDgypEYg5pyVN64FO+IECwORh0do6OjrlfZ3QiRQsQ9HFM+lZf8PyFye7u5MJ6SFdXnKvKs2aV4UBlde1vzdFoMyxZPQX6I1v535AbkjqNkRbn0l8TRmTiIX5CzKSBn1JS5HE4WfoYDDtj7u9QPQUb4FCt/9VXef7VVwmhOE+fZmP0LhIhLYRUcMatZDlv6ZDO9kLFmAWFSEgWEa8JHxAqAv2qMCjSZnry5OwWxmwWAvrMJSfHvw3az55szgANRSyQN0r0IktH6CWOAbNglvM1HB0f61dZEPuxSIJ0kDyZTuaSpWQd2ULOxZGH+cS8pWcLe4Z0K+TLxVxKwjnikcuZpyTkOgRO3QTwZJUVipxSckAYFOgTQlXgT1Gb3UJZOwtRunkpdI9047fUatvTbXtl3Lan2fZfYqlUIZUK1nO1u4DnCqn7MwMDiwYGyqliCr9314FgzZPNWQiFLZA2uRQAJIHzvgTH2r0cOIJp9rFGXGhg+rY9PZebbn+xjmIecLSLBu6JcbyIsg7k8v34HexndIykSI6UkO9XkQ3kHPJBcoh8kpBsqgsiFv+0AjK11AvlIf5NSiWjjGS1DIkhS2SLpWKlkEcu7wJpJlQwaxXycphnS3ZEjkiYqJRy0yEvZyW5VI6ICFKeDmWEsdMIU66kpRyiwAUWSc0EWUr1gR8kWbJzFewPJ03M2ZWIZIfC+GkDqZfOAvb4vfcZDGjWrwuyIDtjgsIkIdvCROdTGUiyi1s8nvTJT7LtJ5/35ny+rO+LekYHTLYAgCxjGvSsD2j/tBnxBc5GWU36AaFmdPVmvNRfUSSIbJRUeYVyOhMUiVIq7JAUmWbt9v1toU8Ly5MbVrbGFw+nEh2mojJNAfDINGKkFkCWDqZoU+2BJjrkqEcMwwu+eV7QU4GmqA6+szA5kkggft81Pv29XT0fg9xj7bYmgX63D8f0yECRRkBSql5vcocsDcvrGJMUSWZsqwTSKzNnnj5w+R97ultaFGl/GKadfsY0QsfHxy8XCH0UUtCD8io/HdncQvETTodTEjJ7OJVLSxE5zGVVCqegUOIpLCpEcpVwoVgu4Qp1axG2EJLCKJlw6SBsmpeG3RCbh3NlOx3myYjEK0v5cqEXbMReynHQnGRjtlQo5kppLurLOVsHC4tw/eX6UI7aYVyFCI6pyW8+UnChsbCU5gMp2TkuO8Pu1NuFEgfAjkplqcJrC1iHsVTmYgXrcLA85NKWV+GAKoVSpFwpYcbt2k7jAxb4B8eDIMjODJvKfBTIR9dpWlQTBX9cl3RNEaioijKLRDWP2Nzkk0zR0ExBBQV8pqSF9ZjqFfSgKUkSbZJFDVmPmiEhbCZ8KpM83YGgKHF0fglE0ON6s52VfJJPkFRJimEoKz4apGB4DLWtSaCyHlb9VENABEfMXn+b5gdRE2XMy6bPxMF4meALBUNWn6SqMczjVwBkyaCkaj5Pi6TSVE40bdPE0WG/VRy4CaogxYIxvYnjtUzsPCHJggaybjdpTX5EYcqqJIgBuj2oipohJgqS3mxJqlc0fXow7InF/M2aQFUKIRwNIjEDakxtCkp+EREZTVJMCQZDZliQTXwq7ECQcZDYixgQ8UGFhCHyDmSknqH7/GndC17sVfeqYpBj4wRB6omCEIqJkaY2qYC1HjEdwsqYCD4cSEgUtajaKkmmJCsi8zEWxTaxpnYFUSVSEsoHTiVJ1VXsRVZVycSs6EfCKTgFCVPXBR1XcbJ2DMuXGkg8g5BOlHn72F9Rh8iQdtzt+0mRDJIZZBj3jYVkCVlB1qAM3Ey2krNwB7mAXET2kUvJ+8kouYbcQD6MkvFW8jHyCXIXuYd8ltxPHiTHyePkK2SM/DN5hhAxXcJ1cOqv0gxge6hspHEfTRu4uuy/8xP/H+t5efZdYLPvkn8nfLyOPbumczV+ePj4ixf+A0xb+Opjn3phDftdZ2fnlZ2dV7jfK6eEbOffqXjDTb0xtci54ZQCTNVumpprQLwF9xv14sGOyb9rUBU4QT1dzi6Y7fRdzc48Gb6Cw7/lb/Up+TVvtu9Y8zaot5d0drqqhhsco081dCOC2wx+7KSctJJsbW3dOrbumEPW0qNrMYR1MAbE6Tr6g1Fshjrx+Dh7igHqKiQLrujhYqweokgFKQW/cZ7Rtslwxe45u9rads3ZfQXI2zTnGVx50CMe2LxrP7BFicQiBvt3bT4gOd9XJ8b0GfpzEkTtZyHiDktyEtEb5UohYhkRKxnBHbUPcrijck0Ut/A24GEhW+b6qSxK1pv1CF6uGG4p+wxoJ183Y7ixeTwAGpM05+vXyvItsvxB5pP2S/JnJekGSsGLe58iOSdY+DpJ+hyvBY3+2OMWvk7LvHE0RG/AyFO7FEOq7xWF9YJ0DROvUkTxYlF4DxPOoPOY8hjKveXw6pmC8B63+hwN+4UuLJ3LbQoJabie/RBp6EHtv4lk8YnPdfVz2926kJhI1XyEK+bZ/oEw1DXweqXJtzhMuZQX02FUN8KGLeNGiYo8V9lnwhBumxWkhOQHgysopYZubyURERKFXgyz8/nZ4IZ3Q6w9hl/od5yVR2V6eOfOw1Q+unLFe6m8Z868vQJ9LzzT16f5dnRcz0SfVgtoPnZor+4/u9UTU/f4tP7+9hJAqZ2+6sYwPoGZ0tn5EKJubjYV5z3lX9wEFx5m7PCFB39Bu9l5K9St9w9Oe/A9y9+7Z4FPc/5yw/DDAntU8/m0OewzS1XxxpDMtKvhWs23AJHX/q3RSaG9RNj4OFfw6b+j5pdEuUeyZWJFqIzKV7+ZouGQFdEhZ+PuXSSFvCXn0v1iJBzSoQtJXCmXijZuyf1wVxou8nv/va3w4MDW+39PaUtHErmg40eLhxZ0RGHvTUI8JFgxSldJuvVcFb6nSLXvDW44ZwNc65x8otWItCGAktV+DUPBDcLQJ0/k7GYhGfInPn6ZnpvO2Vl2eXoM9VIdbbw20kX6UEaPcN5OlirlfBtULIwsSBp2LuUHN8gWjDRw2ZosYaqUlHl+ghvsCR2eEYcUzKL5CcuagZFjUmJivPoRDAp0eHi4hkYVxV9tFDPwGjRlmvAbgUw5g9+/ve+xgml+IhKZYZpwiXOPafKmZuFFZxTGHDI8TMkw2mWQCPJWTcFm3ijDH4fbRD9mtzAb950B5NlZ0OBMNCd42ArlSl0WtMJ0rvdgbXZSOGCGvq8ym37ovHM/ROdWd9/qC7SEwP/l6677sk6DPqYHwPfRfc636Y4lS3dQumPpkh0U1icvmn/eTZTedN6C3cnco+/XQzSgX/s5xj53rS8AIf3KxzM/WnYupecuq4cNO/hV+gKuNA1pHyStrmVQQbmyCKkvodiw5Ypl2szGGZBtzPLFgpORswcYmoioTJbM5FtXjW0ZWOCKJCxIYsUADIIiXrxXj17zw2uH/R799iP6kRmnqyFZvkaRmPoL6Ha+v+LFJbVz5m5GI2ouvX3e6ZSePu8yOnugtrW+TOhdA7PpHZJIC2sPfGobJLc793t07blntGfmzZWYom3X1JDknB45JxKBb8Lmec61dVxw+bzNcK9z08AcgDkDsLeOjaDtSMa/zl5hMWKgXjCDrCW7ccfnu/s3yb+TkxCBDpgG++BGOA5PUwntvAV0Iz2DbqNn0w/S2+gX6T/T79Mf0xeZzJpYC0uwDNvEzmTb2cfQDu1DbdsuWCVcPwWrUpDThVQvLfIZL+RbceHpFEWNzSUYK3I9OZ3S0eqtIASqrvlZKJYrvFAKofKOogszpeIsgbdFfRh1DAkNKOSYSggLEEUvRS1fB9NGxCmOr95VGbuqFHuZLuBSR8s4z0st1L4tXCG46Hk2j/YeH4/sjic/ixY54vpw6sNMoSZf4uaB5X45Fpz1NBobpXolPtnE2Kxe5ja13EdD26JUqGDb/i6OIW1Viih1i0O4NtE4RDQ4agQMuQNAAnEFvcRtiZSEktu1uyvhXsbXBK6XNrfrIi5rlFh9/BHTJexVcKlZ4iPvpTIaP0gznfYKFYmPol6M/YQkjpD3oDMZ+7KLZbSDKnwkfNeoA2G/6VmUj69Qjlj5NooWKtIFLR9eKcdBaqUFRFmqFBo0SyOqUiEUKXCBMwQlXmKjuUqRtHwD4niRIK3UpT0aKmlOO3cOsLo/DulWxjFWCogPDSt7Yu5wXlzOsLG5jIsozB+LHz7Z/KlxcK00hEuRW3u2+wjFWTgRaK1ZxVy6mOtC2uddg2qiz2wojuNJ5RArytTpaOTx8eFWGEJ73ebzMoC0t/sH7Bw+D9YUUXtAnaJk59MVxGA3xl0p2l2QGuD2ejiED5DHuS0OVEopVCvCuLsWUNXgjJzCLuRwfgifp8QtPcTAORm7T0+0Lr6t9XQ4tXU/b70/JMWidiwGohmLxsyceZ0eNjVN1UyNJ6jGbZosGkOqV1UEFW0CzaMpyoeoKImCivadiHaIooimOSxQqmqaoQmaJgPaUHG0wkSExQaiH2PVa3pEUSlEscSUA6IsiyI3mTQ5ppn8z6tSEw0jP5pq3qZo9DK9WTNREoXjzWqIYv+a2SkaIQNRiW4sy7+kqiCI2KvgwycANIUEr+qPirHYl2OiFTJEn6LyUalBVfLjo8gga0bIo/GuA9iL5nNu9S2RfbDKl/P2SIyhFbUUMWKEocSfB5two02SREWkFAMcsC+PJVQFkFwoQRFXK6Jvo65jT5SPVBB4LAgxThqVPxlW+ADp5zUNjVIchCFKzhIquoaWyqmMowKOH3sOqUERKY+lIuUAgh8fC+1FrGNMFbghza1X1P9UCVuqyn7TTeHkIHVMKuIUqKKP29shfGa3zoM98udRefecYiD2cqJ3h0LXI8wapAzOk6oKoqkFdRUngU+QGtBFgyFdPDitWAchnGUBSYIW55ppaFoK/IkFmam6b23CxAFK2J0gVldTZI3hAqePKvTwjhyCWwxjAGKBG5u8XmaMih7qoyKiwHGGlixZ4vWa1WqVMS9ICArgxVao0oPoxUCg9RKBz3S1Ot/nm/8/gYTXl4TOGd2hyNrSHTtGNdPKNYuqgLGpmx4fiG1IAHx+s0UxcMI0M26mRJfa+DCiidOOBDRHE0gMdy7dqR1GZQVrwdftN7V687jJWVMznW/w1UJxtqPxMD+AoHxycWr4VHjNsG6bqqYgLduffRaZOme26Rr+mTk9EkTTXkjyQWBTtRHHVT0ocLr7LtwrapxBROrVzSPVZ01NlUWP1Fg9Ch/X/Ov8UeRvrdE1yJ4WEH0+KeZDmPk4j+4kUcGkAj81wCl3Hwh5RvBpyCJ13kFK8vMDfZCzmgw4TwIud/eUYTVC4XIUtAluqzMViIYZFF1uE/gKwHG6K8/lD1GrNQvun3scw5eIqHDe4CtL5CyJAY8lTnHGsKpH9bZLPM3lDKe4uGSrbrpDc5vLfDV6Y7gaUHjoQUngky/afEiKVpcOouhbax654ILbqxpueq4E4zOJk8FBtXBLBNld6+B8LtfHhF/sABc63I6r2l0m2LEW5mtQUBWM7B5eXeTiT9uAyPcBi0gylwUxxnw4bq/bHHB1ykgDD3W5iEsKBqackGOSJPWIruBABpW8aFAi70cFHJHAOMtFZRRDyLR+TwJBC0JDyIALjD2JEnYk1WUUImNMU3WvqxM/yf6JjZAoudK142TUJxG3JQVxOxyCCN/67HKOSbLB9zDcjw3UgHqhy71WkUv1wjgaLZP1do5WZkDFPeZr43ElHIrgxlHGnSbHYevqNPY1i9e2Ae7skaAcoWy05wcXVFc9UF6QlKTkgvIDK6dd8IOe7gilkaWaYfhm+YKxKLhxsZ6LuRGdaTAlcNkZ0y9ubjbCs1t9hrRSlldKhi+1oi23s7zm/QklbhXvH6r2/KHf9lPqpyc7mpE0ZnPBeX3DRuc/i80mZps7Kq+tWPFa7UxVhqIvGPQ5DzF6B098Cl7h0W8og1EfjsT5JJqLbVH5gnmKmmraMnfRaSuXeSuqj3eKP59S1eYtrq6MJKjWM1eP+lHkBjPTnT8YhvMHruIrSPej7A62jniR8u2o388hS1DjPRPnAOmPunvCPQQw66QqcV2mUhoI/52sOHmggWpn3ebi2tSpCUru+C9Z/i8o8/BfhK/fdtvXhf6xl8b635ac8cS3npjh3IWpel74+h5fIBA1DO9bIrYWzthe++72M87YTnu3n1EzBxdTunhwZ19/f99sqPBMZdfUzI7uzs7uZjhtsA44eJpzlhHlqB58S+TSaIyNsWHiIRaJuxbofLKK7EAaTRw2oBoOlsQ1YU6IohhpQ163S6jYuvmKZZc5ReRyw4qr2ANYjiBuQbJcmWws2vXDalQrMVVwwSn5ak0Ua191Q2ftJh8M5WMrz8ZlqjVPj/dYAsu058Fz8ayWVHkhPauaiWS0lsVd39tCN83tTuenLbjwEKsdgNiiCN2/LXz5x2DMt/MgZQ98oGtZqrPrrPLdLwjsITY80QOGzj3JeLKyyr85+oGNhT61qZRWr0XeOeAb6W6xus4JACwsf9LTGUp72zqVv4lzN1EIr0oDO3Th4tnNpRnvvbN1Sfbrry2N3LPvAw8wKzwnFheev+eWb3N7vkFLE2nJLfo00nMuUhLVwCRXBQ2ukia5WmpMnEAaaNgkUbe1XRDDrZa5bmpwVioZac5PhWQ+wsbGamNjw8NjdBhDtODRDB9mxE1iARr1o0H9rmBL8C5+5QmjepCOcnCHuI0IN/Rrw/U/NN+Ht+pB5yUXNMFvZuvnfuMOexJtwzLZRi5ESziHMqgP6nOGanic6/aRsuXOG+qyfohIBUlGe6UQyVuuXh3Jl0t2fZFMHldh6AJh1QC/urAqXGS5eZiyntiTwM5bh0Ic6MUbqW5CyK+KQn4+QG9KiCgUkCUA4hFZ0mavYOFE+CV2/ob2PmBXbtl6k0Bndqw/HwUyYAXQm873eM67ifGM8+DQGkrXDA2vAVjTQen593XJyS3VbdcoCOtnAZNRYPoZ1e6ZIVG1BEDhLVoJRUpftUo0IhFDvvCzXcnt03ZcT9mhHdM2JDvvPV8QGa/Zdwffwm/fI/AMnI38OGcTpZvmzN1UPwd9Emk5QqYjHZECuBj45Z41SZiIJefchVC3eCMWXyecXPmJhAvKlocz+jHkydZnom19wwDDff0YBp7prAwsjVwvxkNNiURTOHAd0mfLwvQM6ygOarjfhbwLdN/lyfZK5zMojofqZX1t0WdaYaC9x4wm+tsAVSSfb+EWiFn7zXAD/YQPwij7EhslNsrNxWQNIeLE2UapPmNh10i2BxoHPGF+5MGPQEzMJ3UIG/hM/Gwk63oQ2KXe+qmlhRadzR+Yn1Sl2bza1fkRgJE8O379DY/gBPqbAsCO7Np1hNI5AyOUjgxMg2RT7epoMhmlVzQlwbknEA1ANAEwsHgAErG4FyVZIOAbhUVlGC4vgq11aUr5HkL3383Y3fu3Yp0zhnUw1pwByDQ7jfi6HXwJ7PD0JTrK5Y5En2c/XwwtwYmzrFGBIA0MkiTEHJh62sNPf9KNg56Jg59hRMhIHXGNx8OwsMJIZSFKlEqNx4zUGvUTcFMqMXbX4D+xr7CZRMc9qxUZyXBvIuvsUJhYMAZ2b4YLvUAruz73PBPeeOKBPzcJzpyDX8G99DIYtR5p/ym9Eh6Da1n0Tw888YYoPP/ZXc7lwlcOXnk84oxeegd97qdnoi5CxLpPCOO7pUFiKLEGXQ2F+4GEJJsLH55ITyTkiSpzYlBFfos5vS4k6G9bMplKJnNHPfpjsxt9oh59++7nBeH5u5szbfy5l2y6jArPw2jjxPEoh5j4HmsUwgGEx1aQKaajLRl26em3jE36bhyjv23cTwS5f0yyxI9dGI8LtlwwCnAM1jrHjh6lpLb2/Ns+cv5aOLZuHZB16xz8wdHbbqv9cAquH07BhSIYUCozHnO3m3fCtXbdunHEQzm+dbfdRjsb5/aj7HV2EKV/lcwkI2QeP080uZIm8wNECVUwXNz1wxIsc093IyGsSNm5Ij90lPiBFT/AKBftXCqbLCURyGYYiLZo3byx8oUV6eoVuY3ZaGVwV/dAZn3f8MylmWNKjzJwYKCvb8wN5/TMGRlJrly/Mjk2e/bchwHVYKfW+v7E+wNnVc4GPeH8Uxu9+DPLM/lSJlb5zPQrcplgsaOry648cK7Sq/b2IpKn3HBuz9y5D89LJJOJpzAegaGPLEQ2PfKFtgfmVh6v8JshlHHvZ7ORi7wk4p6hdk65aURKcv+gLJ8YSEPS4PsebnK4ePgJmcV3wyR3DuJboQvKr+jcS/lk/QP/OAzDw+MoTYedF2JAnKHRMToyDOSXzi+HcTMcHceNzHlyZASuwsLh2pN8c4MR50n3d9XYsDM2PDZOnvoJ5GoHsGFtaJS2/MdVI085B3ATHBkevmrYGR/mO+MwZkjdR2r8duGz7BySIN34HOvJVnIeuZHcRz5LHiLEPUHkM2hFMhVXseaavM39bWS+zQlijthlUokQSyJsqgLFZ5yDuao+auXczaRS5md1vB17c8U1JGND03QX3yQeZAp+SBpBiWDykbgZfpfRi1hacTi0le+1kpmuY0vlrmrt1FJ7M4WYEIaRV8/+/NC8tKisn+n13JvOHRl++NyDSKeF33JeQYPH/Na3IShJzu+//fhfRfGvj3/pr4LwVyeebNNk1dQi/ZFskxlebmshTdKmXZLwS0G7JbU92dU10t2d8Pj9EV2Hi9fvo3Tfeo+ue0bWU7p+ZGQ96IIcMkWT7d0a7Q5YgfmrmyQhGJK8nWmlqd1UvSG0TL1mrLMQ725p6Y43+43q7kyxKDRtuHb6/urIEA5Nzwshe+ja6VfMWHXlMj7Sb4Epis4r38KRs1vF1770pddEN6zN1EXTVAQP9YSWZ3DAomSGxHim0jx9eq8ehO3ARzvSdbY/7MfvDhzr+r1Uj/hh/cjsdZSum42Pa6qy1tG9fp9j4iyv6g+k1ZBPUINKU0dG8Uqm6AlppjcIv43w4cYJyk0y/q/CYsalt4IrIeDe2rU07t1LZBoZavjarUBgZO8kd6vjyl+2weduLJayfrDDlhyuWCW7YjbKRK4UZl3NkOuP0NAbK8lwB/CCRYsofsmiRSd3woXOEf6jZCJ15NHHMpnHHs1kjkyU1H5Sh4bHsAWpp+sNDy9axCovLj784ouHD7+46Cc/+cnHpx2ermzZcjjiP7xhw2F/hH768Mppi6Z9yDly+Cf4g8wiZ9Fh/gfZI65P3fiPxncIeXYUn78D9Z4FuL3kBK4N5sqce8tBmUtAyvgtW46vl5xk1TXKSFl0CxGyUpbqSiN3aeGFEfwy/Tzn9+ee9YHUksdGz5lx2927w02t79v1sHheeyQ8dOOBwvqdn58Z37924682bD3oPFyIB7zTouai6kpd8N+hKh99pXfX9JmFrnUr559mXtLrUwK3b//9F1R4cNv8cbJ44IarbnW+D1+54LK+mT+orrpfkG8ZW3aBR5SzLb+bGzm/Onigu/+6kP/Js0+/tjJoXdqZCsZu7F1QjEbvq993uz6gv+Q+oJBGS10GFOLcpHfPqyPlUo7SkGzHnbtaWuCMeAeU9t5f9hjy72nw5o5my/ll06wm59eRRPqj27YaTH8EcqRxj17XPXCHMpIqFchJ7oKIqnsNy0+Syb7X4d4l8zt61+siydaOk6PjhB6la2vH6NqJO/mvsn9COZ1FXZTrYfzuMMnvEOvuTiiXS4W3xOyD0Nbk/Mdu54Hdzq+aEjD4c/6p4u9Tn2tqg92w0vnCbgT53M9/vnt3/Td1zB91rUe/e8PjargNi4+ftFfcuxRU/VKSC1AXbgWrHsuT8GhUcE0YTQpuOabrctFFUK9ADbOhQ07Bza0LrGggnADgtRPdsrGmtDjfM9BqZvWP043zcLXboSgVPiwlQvF0Oh5KSPdqqVB7BaDSjuK4E3XTAbMpq26CXJQD+KP8QLlH1VXMTUtTAWWAP6YVBIq5dFz0SwVRaW4yy2sCHxYoIjETquZWJfzGUi3mx2ao9iSiUjxt+OdzMSms9nc3IcKeUBQBo6EeLYDtcAibzAXdiGe+aeaiOcA6j9829bBWnejMo1VNRSyI3onB8NO0eLe2FAddlfwi4ljNS3jlai1u+rQAphq6ylRbtY8UUM93dR9ulLp7MOcGI10ykatKXK/6e3VjDu7HY2PAg9G62ywbfXsZRVt01HHtUhjF+lHce3HjfltZw/5AHO65BLejcXUZ/FPgH5SffCAFPojklHS93P2k2Vjd2D059qbRy//GGzEdBTJOnFGuXgAfIA6VawsYoeqPdjMfMp1cZz+m/4njICYq/Kiwhdogkuf+3TbwW3k3L8lJZEVkvjn0oE9Vvqoo3aqlwkZVde7DRKeiPKGqvtoer4FWDswDS3sCi7tUFTZpEQ02qGoH5p/wWuD3zvCari3wAnuJZSb8cLiHMq5z3BiMZALucTbDS/CSk+A/ljn5KFvstM1wvsc9b3C8I3SM+EkbUm6ILCdbyC5ygNxMPkUeJGPkO+Tn5E9oTzPwoiU+F8eyjNO37gBeKbQCdwG36y7d/MoSi3Npa0o9dzGZUs/dT9IszZ1LuENJ3YX87e3frH+n9rzeLnFb4p3bQ6P9xPjkd+tgYoDyu/XwrhhYetLlOT2AYtz11eVFvNbqHyi6J6v8dGaiJ37cyoUolzizkDz2JAbYti8Ui4V4cIPq8aj7ePD8xWZzs3kx9zaK3aB4vcrFCvcXUp7/X8D+GMGwaAo0r3SWT6II7XtHHObF74KkAc9rR3yyR8bvsqjHE1W8sleOxWSP0sCma5o+2cznUzioAn/E/J56D3tCseNeZQ+H3aN4v/huFc7eZl7Ca5uPuyVu3fH/Ramzbypu+OKbyI//ryvgqxJ/EEWhEepVopiRombsJh4H6yAeoGE60RKfysiKCn/6qWcEHu65AxKRUfdHCyBHTNdN2PXRjcyict3XhSv7ESvXSnE/qoRR1ZFyuLs1TlRCEiUvOD9DhTf5wguQRA33Z5vsaGk67kGtiu5lNMAEYPOXzlnBrzwClHp1pRWgc3opaheqwm8feui3QpWNYrMXpqA5+XsTwk2hJdBVYi2teWju9vUuFsXFvb7uZsi3ttBSJyyFcDREzcGDKxEFIlp5cPJsYIw6KFHa0RZaSDbU3zV4h7ccrFRX40y9Uoi4p+pcxUvzolAEi3K2yfdpN5Mv21hvpevC0s3j6nznNyQetZSWkA3QYbZEu4Cmfwta01CoA1Ktc2xFGG0KddJsvKUjSqHrASvUQyGHOYtCBwy9wzsVF9Fgp3NPZ5BiDJs7zD2YhEi29teMhTNsw4pw1PkppuNxSEXDH2qO3uJmbonF3tS3xhigbU/q5x7ukUjKliOWTnN9wM9JbPmd38Yw6u4NbdwKZAEFoLisWLRF6R4ToLSsAJdE22MdvuvfkQqjSq7DLsLFgTyjyyDu66xU1gwCfDOW7RyEYufZ8Zg1ix9ohSKRt7w/8dRprZ3lzi0hGcjk+z9P0jfecV9wTymnui+JE7dOdQFZCv83eZi4r2pI3PB/k4d6e06uqfjeNc+ehIFMrSfbD9Cfpd/LDEDtVk2+X9beNYAQqEo9o6jwrmnzv6l306djf9g/XVyP5/Hac3lwjqKqyjluarKMiv8/1W/64L5G73H1n/a3ShY25dTc5k42dW8fnVJywvkzY+A7cQJ8jDl/PrFmN6W716y9iNKLvuRvydrZFn8jonebzuum+wOJ/5zkBOTaNbv/JfQmJEaEjjvjB4QCyrk0534xZWdFKYXcbWb5uUYlabpnu6gdUUkWzYgOgKyO5twQJLmzFHfiSVpcdaqU2VKv5vzC+bnWFJKFCzGWFdMH23YKZtQULoTtPlORNefnO5kccsY82o9XM0X7kfOa1xRXrhJCXuevP9JkYdWPPKPyc8/JuuWFlc/JVpMPYIVX173Og+BrsuTnnC94Le7SKd1Z81rynbrHcTz6nbLlrd0p1c+3/8b+jfkbayGPFJ5yksvXQPYUBz/51PppQL87d5fALljobMZY2DWX62TbDzHhyJlw9MwjgnLL9lPrvQvoc8KuOc53F1zA2EVzoHfOLmEWO7TN+e6Zh0Xh0Dbo3XZo+tsA6nczN7L/ZBfjyLnHIqmEC2CL9dteP6CQS5Z836Gtz8H7AoErjAHjiuecG9fQT2z9Id3ww06jEBwNBEZ/VPveunXunoUI99J/REwdKNFF1GSzqMlmc7IohUQ7p/O5E7MosHpdXddqQHwS1kleCdYFAs5Rr9c5GqDfP132yaJ8mvOE88RpmPDJpwcCE1Dw6zspvVNJKx8XxY8r6R90MFHXWerWW1NM10XWgTV3MoYAk/z+Yfqc+3TZt40q64Msjow7wU4d0XWwk/e10zCcwziiwwZ8CDY69zn30e89HDDuuy9gPGwYEzDwh/sYu0/JKZ8Rxc8ouQfu+OQn/7pClpculeUVSk7llWqu7pc7/i/sDjad+IhBOkmPaxtNb9j3duMdoST3SBPrLmdhseJ67+H2VkDtvGKkzVKhkuZ6usiPcdBkotftSli7rDbYCV++d9cuCAU8gy21P0HFGwh4QYFLP32vtMq6y3kNjjl3Qotz4tAh+uwgwkObNXjllYOrPYHKVthWCXhql3sDp90OH3XaFlZug6feVzl70N2rx+9iL7OtOLsSjrqLn75kK5YNaIHIdqWMMxoJS/zOTrIiFi5Lbr2UuEchGtAySGwqs6ff4spagpHi7BZYv9T5HDzat7RPMuQeBWp3oxwUvKpPYI+gnftixO/rackmw04Gnm4vA5Tb6Z8xXgl9mdrtmT7AGD7/9J6hnXDaac6jcG/vkm6JSl2KKjv3Ar3f4O710Evhm+G2YMLX1Rx2EMmrULJPvmFz324bXnE2ZnoRJkP3oymywr27vkT/JruB9JJV5Eyym3yMfJF8jfyWn4bUNxqrEM67TqOunwQ/jakU3QMpgQWF+gEuf5sVJrwqkpP+FY1NzUiyN7e3Sfd79hYwxIHV7vzzF89ylcnaVtcxw323sFDviW+yjWq50cdQ/VaV3/U1KF7ml2TIbGUEi/MD3TC2d5HR+qu2/B0yo1A3S+jzztckVZEvh/7qog+Lwh3blq8JyZ6MJF9x473OuKxCy31XHwEBVGm7Kj0iqc7/UeRHeAsMUHCo0nFJff03MJIfGKZ0pD8/4uFgmt/zaR+yzjceQqgZA31pUOTjskKvv/D091FGKdP2Ig54aelmXiEpiOcKVWIUzj/v8mtB/oeP9aKCUrTzi2nhPzdeD95HPds1AP1M8c4V6aEAgOKLBQbar5cUBb6hSp9ABE+p8r5vfvNSGUyFavJtsqjYVPmR8zXnn5/SxGGRyhT+A8fyAT50ZJlNPD65XlJVCW5xdvGY9eb5hWHeDWvfgAclVZNqt/o84PW0zaYxVXKKNE57+uAWDu6svHE7EwYFw899sRSJXiKqIdS3YNYEal8wJMwUhLt/8J3La79hqGS2U0tUhnZdspTCw5r2eBPz7NXB+e1tq0TQJe2ApDLuTiyrEnbgypHH2TO4x0y8Y1w/a0EdOl1KNn6APGcZBUPkcdoonDhGyTFaPeYcc05Uj8LTzomXjx6F0ar7BwdPHmNrq7U4fXm3gyu96uxuyCvez8K39cNlD+J23xE4Ja6ygyf3vHx0zx5oOXEMw/jLGLIF1erJE6ylWltHX649TatVp0pJo8TdM//Ibm70w8+43R744TWzKrZsVfjRRCkpYlDlF2aU8LB6o/3sM+1XO3vYWmcPrK3F3aeBW69uf/rp9qtrr7/8cnX3bjL5HDe//TlE9zau/uPnHyiSkvwspMJPnp52KeNU2dqTx6o46vgeShwyCDcvOHYM1uLv4LG3EvPd6WXVZbdhIn3EU+I6vV6u7kH0J9zw5cE9e/TqHtZy8gR2u65Kq0gx4lSrEyXk780NP7tn2J/Nn+GUmB2s/p15YAtO7mEH+dQ5J/jUOS/zqWvc2dfnZ+IOAjktyV/+wckxkiVUEZLQmDBkpavbn3nWvhEOuux08sSbE8YWvFx7vT47VELcSLtq9e/yGT4L54RK4xmmxtjUJVGVHsV+kERVnAbSKHnXR3H1nbpdnSbdpNTYe7nXdC6dnBC84UYw8U8JwI0LfNMt1ZPspUPcKUavPciv+TGBWboC0yf/BIf04F21BxmpPQh36cFDNMBDDsaBeSVPc2DnpaAOCDqG7eHQW8dmk/7/6diMpDUxvncfVp6uwI4aY3v3IQFCJeqjauhOtIOOTb6vN3GNyi9Xf7zC/aNjK57BD5m0659iMbTrZ5DV5L3kOm5fyPzAvJW5m2Kl3EvtlIjaQk5qxt0J1UH3nwBwZxUpV3EdC/sAH4s7dbktpUbLkttSfgs2XpbmFz5+2gLue/b1dzLssotQltjcpI9SMRDryZkid+IRw81WrBYUREXjTsn+jIfFVcUri3DsuTeuE7WYxCQqABX8VE96OUijLcWmMav5OV4o+mO92ZCIe5IYaraaX1T8Am+CpngsEVM9IoCgylY6oTNLs5iV7mr1K5R7Ukc6+lsNBRLABOkMp+Y85u/URdyHw7qHcickJmJPiqBA5bk9VBMimiVE0t1x3lrVJlrP1iJCJNMVD7g4xTCWBhU4k3pl9akd28WIytAMZLM+/tERxodSn5fxF9m9rAO5qkBOI2vIVvcepf5eyVSVzJ2KU6yTdG/j6DMksVO8ryYuoSffGjSnGJD0X7gGumArpVsXOJfUY16y5QBjB7bAB934uc/yIh4o0Wagy2fMWE6hOZrt4k5HC7dQ6PoO9C3sw+/q/iGAof7+IUqHWAcErACCIGIEQlD44AIE5oWI27lkyyilo24fZbeQB85DZjWJ6LGTZNW0Tuutt+w97ZpMfz924Tw2gR5DoiLNHma/YMvIXKTYOnIW2UUuI9eQQ+QOlEuyYaGdwM9lK/y8fgiMIShH+BsXmDbduyW3lL9ZR23+Nkwala006lhxNHwYFkO4j6KaH8aFUB6ikTB3fozgsuBvEUWsujfOEPdmy2IpLeFE8Yv7Iip1iD3LL/extFi2RP7OCVe2I1a3zxfoDijSF6mOsc+4Bzle9/f4dfqQqPASrPbr7EExEPDn4QnYsel0pvu7afamlP6E8+L5YZpq6QsBvJiwYmIyv4YCjTgbvB/xwEBmHXJnGhL5M/QtlXawtKt8nckltHZRpoe2xzdGcNEcrzIltF8SA2zId/ITPr9fMa3Mh3+ACR+qQN1S+fxPueno91ORoIIpdhbPv3BrOhIMSNBvWf200nLZZdDh8zu/undvi++hc0pVL/RnZ8VA74uFLJrtW/mRIRyW4RyUd3toS7j3opXJNtmrR9nLy3py01hZol1ti85b3GbEbCFhzTcOndWrXhKdlYuo0SNoizT2Gn4/NYK7TBjtwS60v0bI5rpmP/GPaDjfs/60eytSl7t8Nbj/nqY/nDVwo6vDTqyReilM2PWFWa7ej0pLa+MCAG52fhdNAaSiEGrEzitgwmvOK7FUKgYmD3mJ4z0V0PkdhOAvzu/ruePc9+w4BMGIGilYjI3+4CIwYinnETBoHksaoBB0ywCMGe9U6MznyN3iQMyA4GMc82PRFHnr2XPwlBMiGc0OsN52nPzsKucPq56EBavedkpcW7cSfCu+AnNWTtnf6ndv5C1OLZNvaiJNp/RIybPOHxGZ/9lnwY9d/fHZKW69Xz1lGFunwmE7dscU99x5p4zMHc+v5DUsgZywkZ9UcivW/RcfbdS08lahYtgpSdT5IZOfby1o7nKbS+Lve4fd/3WD6zLMtyR32+K+qK41mK+UK+4W1OfuUriVuThcNPyFrFk0UsczUez6LyQ4rM1PenPlSmO3LNq5+r/5QCsQrgfcyjYsbcWt6+ugCEZHZaDZEm6K90bLswQ6qyNChcD+JTEFlLbzc1SMDenFCpxuzWnK9svCpeDTY8untZ3VureQEzqUNkM30i304zVizQy3dCrAgO5n8iJPOBPWqyFV1PWhhbNmmn0FtI9YFr6Rxh3qqZU7GW0KBEu5i88LKkpo2J+Nm/FsUweLMCVYrgiBnm6h9jxCshwApbq/ddfiFBVS14hCNVg25wAM2kHKgHln5zcnFZC9c0ptNJcqRfPTdVmKrxq+dbonqimBxEj3Bft0KWE0LczK2VAfTe5MSwJlUiTfNBRvG+xp7w71XbTQ5+WvqSSaKrhTZwKmbc1775yWFa2L+7yGKjPm3kfjov8K/RlZTHaSK8inySPkn+s+6BOUb4PWhhHfoDqX62md+utAjX+zwh1IGm9FUO7q0JgXkc8pk/i8ohFdbqVtlDMKn3q0urkjChfsOtduhugsyHL/1cluig0kLuaSyzF2LiPytxOxY9wgiq4zu9naGGyfuz2UI9J7It2BwbUhDVUAn6HQdKB1Xk9+QSkUtgbm+pkwu9mmVPAMpqJJozVnRuKaAEJkRnp7pjknS9eBrmbX+ltbg2te/wqVWekwbqUf7pJwo51TZLpuiAt7WijanbEvsOjMSvMmv1RiLJ+ZH9Kbkx4NrgH66K4VSv9QwKuo3sBQQoFgvlkRaNI2U1bW+QW0RSMFs78LDfVkdyEp9XR6lP626Hv9Xgqe6+mLzCNZm2e0dKZnn58Ny/1GIquhJS3I3qY1FU9YUIG/5JMqazITRNMITesI77A2d0RYGLsJUa9eDC3vVDwKY0EWUG93NvVKKr3ekJDrqNjZU/Ejl/ToS+FvhoR8ePuAeVRB1U9tXXd+Vr5KePIm52EEZP6+RCQ9PR1u6RLBKwXLerhpYI7l8QlM2OdNt1TDaP7D6plRVKGY8xfPSGdzu8gZd2vHIEXGoq5P+1E6jpKs2/Vs5ddO9RAXM0Qs9xZfViFXdF8LrusJrl8mOzOzudi3IZ3e0FfcnFkCp0HVGw37YMZp1zs/dX6az0dnzpkZDXsz3nDxhkKeHs/kUolEKpdd/q/LnKdDYMDMZf/6E+enkCpeV2yKxZrCXm+4v7943aTfKf8/GRkym5xBLkdt5d20bf4+7ISybbkMxoUa58VMuYQM6b4vyzVAqaF2v6lh8/NK1DrSyN+8ClHTPG/TqJpot+XdFG01wRjKYdSzb/YHBUaZIkn0elh2g8xAYrIAG743tsw0Fa7L0rkPf34h00SujKs/v/Y9QgyLqWCo9+wbVHyomVMm+BFq80W99I1TVGs5pHsYuKp1mMqq2tCsW6jPJzW191rICfVPzB7wiRrjnPJLMSgbzYmY4hWYKjclgy1CEBcQ/EqMefuDSZVzhGB4JdMMG7IWZFxz/79JXukQAAB4nGNgZGBgAGLtA4s2xfPbfGXgZmEAgeuX1ljA6P/X/4fznWZeBeRyMDCBRAFtvw3GAAAAeJxjYGRgYG7438AQw3fq//X/5/hOMwBFUEAAAL32CAV4nGNhYGBgwYv//ydNnAw8C4i9wGZeRxFnJNEch///sIozMTDwnaKOW9l/QjCMDwBaxA0DAAAAAAAsAFgA3gEAATQB1AK4BE4FbAWKBbYGLAbMByAHigfcCFoNFA3QDmIPCA9oEA4QbhDwESoRYhG8EeISCBKAEuoUBBSIFQIVLhVAFVQViBZeFq4W9BcwF0wZAhlwGfgaWBsuG3Yb3hw2HFwcphzsHUYdwB8QH0QfeB+oH9wgEiBIIHggriD8IUQhXCIoIsIjriRAJGwktCWmJtInHifaAAB4nGNgZGBgCGCeyaDFAAJMQMwFhAwM/8F8BgAjvwItAHicZY9NTsMwEIVf+gekEqqoYIfkBWIBKP0Rq25YVGr3XXTfpk6bKokjx63UA3AejsAJOALcgDvwSCebNpbH37x5Y08A3OAHHo7fLfeRPVwyO3INF7gXrlN/EG6QX4SbaONVuEX9TdjHM6bCbXRheYPXuGL2hHdhDx18CNdwjU/hOvUv4Qb5W7iJO/wKt9Dx6sI+5l5XuI1HL/bHVi+cXqnlQcWhySKTOb+CmV7vkoWt0uqca1vEJlODoF9JU51pW91T7NdD5yIVWZOqCas6SYzKrdnq0AUb5/JRrxeJHoQm5Vhj/rbGAo5xBYUlDowxQhhkiMro6DtVZvSvsUPCXntWPc3ndFsU1P9zhQEC9M9cU7qy0nk6T4E9XxtSdXQrbsuelDSRXs1JErJCXta2VELqATZlV44RelzRiT8oZ0j/AAlabsgAAAB4nG1SWVvbMBDMlDiHkxCg933fdYtp6X1f9C79BXyyvbFFHcmVJRLy67uOgb5UD5a0nt2dHU3jUKNefuP/axOHsIAmPLTQRgdd+OihjwEWMcQSlrGCwziCoziG4ziBkziF0ziDsziH87iAi7iEy7iCq7iG67iBm7iF27iDAHdxD6sIsYb7eIB1PMQjPMYTPMUzPMcLvMQrvMYbvMU7vMcHfMQGPuEzvuArvuE7fuAnNvGr0f4jhdqWyhvrHQo7schJJcL4iSizSAuThL4wJII4E8YOylhYS6a+dQ8wXpxJJbwNI4qsL2Otcu0S7azzMmLgkCMjmZCKKYiEShbGovBS4VJanMgkJRukIs/J7HquJBMOY1daPQ4iV0pFZbk47zbRJomruq3EFTlN+4mwotTOxLT2wDeCSdesDMU2sDS1Xmq0K9rbkhKe0Z9Klwo5lmPR57hKKAkqaGeeVUhqFzw7TzcoteHKMesgVbpY3RLav7acyqX67Y3cLJPeqKqz9FurdJs7lKLarWsZynlrxxlNpdBeaYUJmxWjvjapUHImrNRqZT1ctfPUrdQJNeWUo+urj/dCnKnS6mPd8vrqo73o1zrSHmkzYd0Hc+6BNUQs6bJ1EfdjYjOnx5qV7lV6bsXSxDl1a2zEb1ufeA7yrIhyntzQjqRJs2I6149759T7p1g4KDOO7cpdyUKk/Efsn9uqoiSpxSrbYK21Ie0nFw13yFjJbgoYw47pilymKrC66EWGdQxcUZBZzrSRM63sAa5f4yJt2QG9+mJkmtluyQ8QKBbRr6M5jexerZHhEr05oE4cjrWh4ICC7k4E1x6xybr7Bg87hTCV6/J/Vl/rlJTz9JT4Tu0fWzsid1T67HxKmS6Vrbmpw2bGWjYafwH2IEDwAAAA') format('woff'), + url('iconfont.ttf?t=1538034488414') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ + url('iconfont.svg?t=1538034488414#iconfont') format('svg'); /* iOS 4.1- */ } .iconfont { @@ -35,6 +35,8 @@ .icon-iconloudoutu:before { content: "\e644"; } +.icon-heart:before { content: "\e6aa"; } + .icon-confidence-band:before { content: "\e695"; } .icon-map:before { content: "\e852"; } @@ -167,5 +169,7 @@ .icon-categories:before { content: "\e610"; } +.icon-heart1:before { content: "\e7a0"; } + .icon-hbar:before { content: "\e615"; } diff --git a/webapp/app/assets/fonts/iconfont.eot b/webapp/app/assets/fonts/iconfont.eot index 3a0a0bb93a142da7aef03634a415561024e92682..3e9e5100939d159c90f4971918a8a9484bc191c6 100644 GIT binary patch delta 1870 zcmZ{leQZ-z7{;H|cI~>4ZY}HQK3ckNLpH`JW#emOFhJ&T14S}P`REupHc`@Hv#pH;t3D0_DbIJ4uJz1~*VHc@@7`R#NOpbh}oyt6Mguxt3%pMaHX_S-M@ zzP@|S#&Z3<-$0$bJrmcD`hR|kK&;hF^`zXEJF zqg$0%Y=Gj$qY0r=ti>Baw!#%UE)8;lDorJ9X7mZM{%7P~S&xB9CB zk8g*?1MA~i4aXct7=TR)Z*NC4vfwg)w>GE~M$ER%drC&-oSc^na#ilhefeu@<5T3$ZSg-^MEI<{C zQGg(xMjmqEL@inoh6^6dLJ_KALj{A1BLFXa$VU`wP=ci>MH%C@n+iYq8CS9%QUmV8 zpY_`(s~v!;qY1--FjFQB3}VqRM2Jwq%>{WyLz_VcG&CG!uZGrx9M;f;kRuw}5%QkKG?bh&F?KkMU#R8moQ76~ zoY&B_kP8~x7jjiYBSY?KXlclO4b2UCph2~9&FN25;HeWDS{_qhYiNEu=FEUqnnt$4Dez9d<4vgEhYwWVjnh2hoVq3~zn z+YwJ>U1TUS8hJE(_3UJHPIRJtG}au;?Tw9BoUFWFRaSLtEGO5WyIBD3hn6M;}D;LXeP*3~73fw9g`r;VSGuHpO)wk7`Wtz$;WNLmv{%IL5f%>C9;GiY5fr`xz8m*kKp z!Z(?l{Xv*cuG*s}_W5_$9mbEGccGo{6k31eEU@M|+R8takK~M;l?gd7H{_=LIoV|r~E!~eA-xL11<_in&q{_3Mxg<7=XVJyNDxUd3CF&9y+W{h2! zhh?}A9aw`F%ty@tB3J-FgU>}CoG3*J;!MOqCmupQ9z+5mG+;JNwBi9YqYf1)Mi7sn z0B+2|O3XqLJSams8YxW-_agu=d?-XUmZK625k^(^LT-_fIc96dYYiamY#1|y3feGw zh^a6S2o<+sMi8oQ!`vXOh7GfXI2Gm#$y1m)#HCOJh+DCq$}7sO;J84cG7!4dh8jVN z6siR&R;U}KM6s(cr3$r#coeD%DO0E~q+FrW5U)bbAv`5X`*v3VKNkoK0SPE92_&ST zhJA&?DnY6g)(a9>;I~>_i$Zot3l-K6V#`7hxAwVe*L8BXQejOYwy=cNh1kLp))`_a zN?37-og889A$G9{T>wccnEkptu(6esO$x06=~ZYF$a4zq0vS?h9LNg_Ed<%4&`glM z3T*{>!^Ya}u3R^VqcaMP205$Ha*zpy=7XG9XhX;ig@%OORA^1eEd`C%Eq5Rj113LH zXjn|1QfOUFeyz~Nm}1N}v@@n2Q)p~V^(nMCu4fgR9oN59XnRc4bv8TznEq7ZQNZ*V zkg;!IMR_&hN&IBMXfZCCV~%9*VD5e=obNb)&+E=R?wVUTRrGFgqWDV5;*wuWJ4?q) z?|2fP*F2wiu9U4UJ5~OJcZ2t`&-8hH4ZaQj`TkM=R{=*L8oV4@9y(XiRB2YOsyq?S z4>yO0!>6k%st(P%770e;U6GN<@rXpj(XQxd^qcBnb#wLKHHT|QW8PSMY+ro1?*01S pY+FH~Ap3#8wKKbOz01M>#?g&$TQ%K1*}dHtO_yV!H}xVD_!ruCWkUb} diff --git a/webapp/app/assets/fonts/iconfont.svg b/webapp/app/assets/fonts/iconfont.svg index afa79ad50..5127d6ca9 100644 --- a/webapp/app/assets/fonts/iconfont.svg +++ b/webapp/app/assets/fonts/iconfont.svg @@ -50,6 +50,9 @@ Created by iconfont + + + @@ -248,6 +251,9 @@ Created by iconfont + + + diff --git a/webapp/app/assets/fonts/iconfont.ttf b/webapp/app/assets/fonts/iconfont.ttf index 40c78fe8f9aeba3272bb21f7867448f9fde5411d..6011ab877e2f07ac8079eb94dfb99afb0d2794d8 100644 GIT binary patch delta 1954 zcmZ{ldu&r>7{;HkrlXoyQ><<u z-sgSZ)7QRL!z1dAa3UX2djPE8(jD*J+JEhDz+%jK{h6+pwk==#`iDUJTR_|K&aLsM zOST=}&TD@mb)5|4z2bS6$HOGj*}bdpahbf#=UpL9T|HakPqZz+3%DnE{%Ci+uUGB2 zKH#|mu0z}7-CG;i6{hwA8&?9h?%tl~cl~zRGX;p90POZRhr^54K=E2KfUB22nfG9xygIqTbKV-@It?}*<)-gjlPpzn)s)<)4h=bNPSt4cg@flTQbicD z3hrGETOOnOzADb?_u_UXT(_c$_jr;kta^1MxyM@Q9gsm8kyCP7F3K&rEqBJ2j2%h- zV8s*qms_z1FLUhUcoqE|@8I40<2{&h82=sbP$|q(l$4WR>HOJ-~{9p7ldYpoHo$bkc$Qy9CFJ*t3z%ZXnM$mf%b>oG3c+w7(J_DOJMAXfz5%j zuMBJxjD4e_2iY+gJ8xj`;09&Yu#0em(rMUFxUt2+&ce+h1A7cN&luQk7-yy$_8rE* zG_V6P&ab6L_ae6{v}063MOEU8?S#G6(d9Vg_`+G`yxqYg(z3msrz z2?l$bckETJczWuryU?v>Iufy--O6eSg<34NyC;@#rmnb$Ui2$ZEAp z&Cd*Yv(%zh2U4S{(c0QTLvusGn;FUUMi0)ZwH=RCl!ZcN73FQ`T2p88Rjz6%Xg&9H zYE+d)`=bSgg$3TsOm9t1v>zDybc5Tj)+E1v@-Qd0Hn~2w+3DcF=+0e3pT~Z*d7Sr- MXWKhF;yZzV0Z&!9(f|Me delta 1605 zcmZvbU2Icj7{~vo?b>~I?fS8<>(=gzO_(@P$AG~;L`4`)G(<2Cu^Y&ut4!enmuYdq zpoRi%GJdFLIJ zxVQjZ`eaA@|NZQx*$v*a&aXKygu|@zGW(Ktt(CHR?A_LfS+B!k*+FNZxpeLk9Bw%0 zMy>3N=Yn=wm$|7A-6%k*opdg-_d1saj><8al+$uX&dUwCDR*-{_OvsVvH0dF#@OCr z+l@VJhj946b_5Sv=BVxbpLpc#*&9aU(-LsX;#kD?9p5QP^JJcSYz;bE*sEz00W z1p=547aFk$l?Wn)Qq*A;s<9L?)KE&dy{O>cL6;{(V^FDY%$?UdK-d|0eh4KuFcJvU zU|>uTr^4tU%$|X9LJAZ{3~?)r9pX`_0;Eu(9+0ApxpA{uWXcQ_2~wg^E(nikpm2~f zg%U!%3dMw!E0h)DQz$URuTW}8g+kFG0R^cA90V0+0>a`k%qbD(m@qq#N`-lXR4J%u zA61w-2!%B;iI64*VSArvd6hZRQiVx{7<~wu>}#HeOfP4v6($;D6edhL#3)Rde258@ z&;}3_9HAi~CToP&fFu=~1oEt63P_$)XdKAP3M~W~05axAH$h%g=qt#GLWe=#Q0O(t z9)+%h>{aML$VUpD2sx_IlaONy-3ggg=u^mPg^tZY&Tv9#UdVZcHiq0#XlTeyh1Q1L zQfP9>U4?c>ju|x2_{e>)umq4hrLY)~JFBoPkY{lD=tgc}%JY=Sz*<3mP+`^JdRAfm z;QCJrD+x1<&cK?&%y$Z_3o|Db)Y!L*A{jT_pS%C|yyQ7vxUe)|_Jz0Id!@Xy{10ER zZ_0Py-|pY<|JHw{VtvJ_!0*BS;B?3l3Wi!j{o%#o@$k=;uF6DYx@uL`xoB&(qk2vC ziCA&0EjAkau_jt`sP@lzB;FSviyx0mB9`b&j3<7ni`2E%-K#&`Fy0t!>~8eD-!wY! ttLB01!Q#r2tQGF)&0gGC=(3Xb<^E6Y(M_APS2ta76uO26Qg1Sre*u_=Zae@0 diff --git a/webapp/app/assets/fonts/iconfont.woff b/webapp/app/assets/fonts/iconfont.woff index 7a78c3eeff1573961c93be0255fd8ae358c7023c..22eb20143d114f22eacc7b4d29de9c50db98656a 100644 GIT binary patch delta 15295 zcmV;wJ3z$jc-(pvcTYw}00961002E)01E&B003aTkrY3F6k}~+Z~y=SfB*mjwg3PI z++~K^_GfH)W&i*LH~;`M>Hq*wv_(;lr)XtiWB>p-Bme*aF#rGnHXUZ1ZfIy_VE_O) zSO5S3AOHXWBocuRX=rV9cmM!6cmMzZGynhrKvU-b(`;{JVE_O)tN;K2q5uE@qFGNx z{B2=)Z~y={IZyxq03QGV03ZQ`1Ep?ZZDjxeIdA{~0Yv}+0&PB2{(W$7b94XzI=BD; z0-*o^1O(&L4il3I0XhL-lS2VIe=7|#c%0SMJ8x816vgrX_yq=Iz&s2SOvuAd;*f`( zmoZ6*iDTYI_!A%~X`qjyC_>>A5JgcGQG-N70W?U62nxj4Sa&=W&{2}Ly{4g{qscw` zjb^T9j_x^oojt%H&~N)~z;Aca@;my*e7CiBzn=|j_Xk??=VgBIZ$>q)f3_wxrD@G- zUW;1Riq7hsF6fdj>x!=GhHmP<9_XQ-=&7FTMYGUcYwkApn#Y}XXQgv~_15a6?r`_c z%a2=*&BcL z#^0}ue_lJ_I~F+33Et-*e@lGJ_pIkAhxm+lILRlR;&bouehzb*ulR!Z*vA~>uEQYf z7-B11m~u^8{Kz67@-^Sk<|C%*;{abW!w0;@W_ELg5jHZ+ryS#LMj2xp+xggap7fe# z*~JcavWa*3i9O6S!Co(S=#B2)|MMEDm;QfypH5dk!_`Bra2-)!f4HKkKU`Zh5Uw&B z4A&bCg)5KNg)@NGhtq(DgSxjNoDj4zoE0<@P7T@=&JP+5Ckbs1X9{fzrweTj=M0U7 z6Nk1%^#W}Vrx5LkwSCwbP9_=;XVj-RoL1Bh=N3(b6O1N<`rTAi@6mKrFVaj<5Bc(|l0#e=SD!D=kI!FdYe>7j!hJ?;Z=EA#^-^n$U^xxk4v{TGOfUSwqV~ zJ^PuUvak}=GoB5fNpvo#^<4;`Q*<$WV$r3b>UKG(eZ3OYI<7_~RM&&b#f_k{b2EJI z(fy#-`XJm3(8Hke@+7D%JPj%f&w|Rr^Kkb-FQWc0nuTyjf1$Y+?kzNT!(E2vUbx@T zJPvmrI_+=|qO%h2Ms&`H`x2|S!X1j$N8w&YcR1X&=-v+ZFS>Vvz5fBAcwvnI0C=3G zdf9Qxb&Wte1DDHxcqQud!qPUkeO28w0i2otyQ=Pb?z#7!d+xdC z+zgFf=s{AxeRe@w?bde{3s}h>wIwGa(Qz$aY~SO;@aR zSWbuSN_aXgS#l{&XIy&x_@(@Jod3Pb15hTD$0uqLujY<-lzyLhNjE8zIb;DjjVvdt z$$D}+_R$M7p;*pG;t-Ou>2OF&`phLK$G;8Q&z@|~01ZVfkT**7B1=c;C5{2JV3zYW933C)S6LAIu}Fe+kUW`A zf98^+4f&zsZ=4A3f6PAyMX5ksrxen z1B(U*%Bf-szjxPxV9k@wSqOzKkT$s#e*h$b^S%Vf+Pxe&f@$`#MqFrM`nEkimz!>X zv5sOMaI}jC?ul`{h_Vjk^8NT7>}Pb0q)3jGkndNK4dfj1L2`(El8|hw3nCW(v;s1< z)C=Vy{!L0Hql{#=42dC2WQ(O@rI1H1?*eHiR4{85@^YAGOLjz#NSLUUa?>F%e`h7R zRE~%UQl1WFgt5~IQ?8_?9HPJl7D>$nSxWVRA0%0_a~13lCr!-Rm55}A!uV+esh7?I z_V~T`84PIFuM4suJ7a>vBq7_vMCVf(NV1DtJf8H)PqOVNpZDf`zO3(ydPWCKwg7-E zV;c0V4`~0i8Sw?qMp;ez0ikAefAwa()L&5~h-{Qpd4+O16BLP3D(sLHnP%z{i*Wtr`cRJAVO)g>j;YCSK2mU@v9Ofp11Z@# zE<3~S)Z2v;2f&U>WvRkz3s{G-ROVs@>u|6<_y@;> zAjr-Po639?$Vb;{T2vDSe_WSzO%bT5iZY8tHILZbJ{{$ zDM=D-l0^+!kD4JNY$kjvlRVvlpeS*4ehEa-<9f55m3)#@uk{M(e_l<>Q30XnbpbXqhwvw}O2f2V;MD~$O z$@|GDxrW?8e?E+o@mBIN@(FSmxrcm~+)o}P$I0X5D`brPGkJy(FSLdJVGa9T zXJ_Y?ot;;>-z%qtZ0Fypc*9M-F}29K;gkYQ)oz-ae``Rz1@{~E;=zu|ziUtxI6*yK z&Muhk^j*!)JQ==%!@uQk^(px^Z?^AP^ERlrmvnZzs)idJqfa$-BZAuue(a>2w32LX zZQVMy?wCW?(xYoJgmo|m#OXTvgHddTI`Q~8dx`<-DkKZ8=;30l9->GEDFwfAp3%0+ zaK-L9f4kb+cFoy+1<2bp=NVji&?6q$ylX$OMTx{B2K#qyJ|H>YS0~2w8TxY)MD1rG z;tor4644vwN+Dty5i1$N9kmZ~xTA7S6u0m;;9((K=K85DO4gh82wtujZYlc=XeVDc zW4N(-JOCP#H0SHr%JMC;{6XfE_Dk|-CFurAf5D4;pCUOYSok_g`W&wXjsDo<7QRl) zym2%{Z@|b?yA(sJ?-hmhf^-cNuTn(uVo`Vx6V9OXnDQ9Pz2)%gnS$^hxB46n`-Ltn zoy%V6>lo!)s ze^fWZhArbpiHbZ|*=NEKZkrXPgyaW@!PM@y3wMw5#D-&9?xN*Z!^1Nuj+&*!VbC@aey!=9fgd zN3vyNMW~F*SHGE};gA*4A!p<6T_lCPCFj!pVk8{Wp$kb|DVK^iZpr;{R~jzze|!JE zt?=N$*86`?X-h{ExuD}mi-#6;L}BkuLOdi`F-liSy7gQYzNbjF?+tD^X9Ha8oP46y zh_oSqlGT0}DYu@+UrinVy@@*;#gZdJOea9c{ce(nb1EMvrjbPL?X= zd>d3Oj4VhRb}r=yH^>%@G;rCPe=K3Dl$3dXf*b4!9i9<~6wIRe3Co&+kz-O~V!Zkh z3<`93c({f}6~$j|6f^J|G-aCb8-YwYgWtcs@3Deuej*Z?VVZD>bB}5Are@(qXB5U9 zGCWMlFxq912=Z1SV zc2YQChQ6;dn||oLb3a7qR(Id(3$%p5|K;nh`?5}hKBfo2_tAaMx9N^0OLtJZW9gC| z6xJs%nt$F+l-_jSg5Am7qwm*4G@xJmImSMBtuFu}{mREPKU#J!rROfIhYdUURr&(1 zG!1DVB(1JxP(it}2&pfjf7r0)ie=i&#u<=p%<{#8laaFr7@CNvOqR^#TUU*38Cc+o zBrHf`#Q+R~B3`^#k6!b`Ylr9JkbLMVFBWfnQwi<71#}}lgKnc|(+|?y=ojff)9=$C(-)b{npg`#JFXUTs;pr4bjm;$(D{?(Kozl_jtsn%d zuK8IgmMgqa3Ze3jq6;&n;w*u;MSU1`3<(V=oKZ_PQ;`(svf5S|nCST&_f#rTV7M%4o z8XKj0B|h22*sNaWHnrSGL))TMs9@XvE{-8>Rf;Hei$l0J(KtjjIBEn8xdT7~aRt4^ zZHbhGlH0YrE8$+o*95MYHn-~{E^Cxnef$yACG1sjsafJ9@1-&tKS(p3_6ik=kD^|T z{e&crkoTZ7e;NC-i)FNfDtsh-*Qf(wzv)?&kFQXUSot=J7An#OEgxPf$3beP1w>h@ z6dE*3BdSs%6e)0lGXy1GVxzfAk+ggR;&_oDt<m<_3WyI4 zD|=$@a9&)_u(7#}izv(=iyuDO{Hbwptu%y7kz0GVfBOi>NH1))Y~DK%Jsw=hGF$U^m8H zDcW6-8sPSNID`+7$GI&IR7xpSE5f+D7EsmTjGV$QjG3e|0}^y+0(yqIN6>q8W?E%$#|h9yT>i)l7{isK#xYEE+?qS5*WRZ34}sDawba zD2alK_MM1!h@yz5IV@1BYMP-5nkEC;y^5dh(AZtd*qw%f-*o)?KZuKpZeXz=x^Y%!L zp%t|hF=B+F#GeP7aHCC*)TP2uDqbxbPa6sV$)+uI?0X1C6RJ@V&KdH0-RAog;icZWjPBg`74 z49=6P3Zkh6brmOpPmmhWMS~$-JUFdbe+MC)WdTWo7U!C2Xj%&Vi3ORdx^Hd5!~sg! zogh|MQ)G?d0;i8E^ze=xf?Et@0Ahg~o4j6TjEWxWqavcfafX&GS>pAY)oPV7FGvUq z;Kf#`(u3&5K%n&!fzNccI^XA;|386**O!FO8Qr1C+R`06Mm5vQHH)f%v8kILe;lGo5en z)k1N$qwz35fS`PGaccNfc+IeGo2sTDE!&@c7MVI{w&@!FnK?ZYMAKeK@ebC7)n`pjf0ad#)L1&J}KrynE5!5 z?j%vcqyj%Rz$teh2zf^EX~-gV-a$(8^84t_0&ViIc%W zwQx%W*UF70V+knXT0gFg7mjyA# zd^m2e+Z=Fp%18qbb-9R3e+mYsoRDLZB=v}{;6MhIyl7A&??(k3k-#|1MP(F2$h3Y> z0znHxL&$&&j6I1Gb|lqh6e43xQ+2Pa6Fxw zj!Ck?_b}X#4b*^oq07BikxTW$I2tXJ^>&U{W*_T2 zHH+7_0q*RPpd6uWwC4vGR98JvUXYZe#A6tyu9|?MzjMqAwWqIS(;<2TyzoUg6PiD1%WSj>P#S znu~2w`GR?hnrhlIchPApmw79yk9UecpHkK4Ev~MNB&gOiSC9Hp<+e$c#-n$sNc^aOHkuI6XyWwkGgxpJp?f8q$+V;f2L9z2>+d|IC-FfYG>W% z;@Z@y2}sN7KytS=zOw@>_8e#95$dD4wl3UZw@awly7`J_ zmpMh`a>I(N*aKLOAZ|gjT$yYv+V#U~R4Xx6aKS10YE2YtUv)!g?Is@##XwKF9_@*HayV-hR!|7c(Ss}zd8DWjfFn7sgzc)Mcz5!8|iMb zy3PpzEG&Q0(-}&8+d7rMiE}qm2(L;5J9OdV+0CUH@4d5iN%rfnEsfl>?*k7oD?BF_ z7oNZ8f0l1^d%i(S6KTmU`ZUsWE>aTJz$8}%4X%g=9X$#>Q%6W5dH^bQnXl;L!{pX2eZm0UGtALH({^OYkm!hcc)S>T`x_c%19@ zk+S8^8|t!th)4xVMth|Y$y=^o9m$tVc72gd9#>)L0%6qvzq+t0Tx7X0a(*P>G}6{$;mC%ZPzFW>t_LzQDFKR)$W-g zQMCj>;VoJTMM___N;D!7L%#5{UCHg!c3e-{p&ipUBs=dtUl19u*>?xu!f)Rr@C=-d z{5WS5rJLr=-BdpZeG+LoLZ%}fkpj3FfB5B|HA$F=CFk6QP`7v^7GEcvT=|KF3(A&< zGx{;)$<}A0ZGFQ4!+rf22A=7x3@nXYFUCVni9}O4a2?WT%fj>w>nILtxZj1m3v}P* z$@WU;GboOS>ScXx(Pvs=puNY8Ci>d|RV1Hp;TDKl`^|6z{e%y~DEkr{B{s^zc@MyWnyVb@5u2O0-FVSePnk3dY!Cv^xL_)Pq4BS!_7%ne@f30~udta!$33eR8Od;OBJ1o>m{>3de|B$%3%x)q zyFT|k6W(~@fj>71&YXi^!M*e{7_}a0|0%r^9)oLH^iK~w@rEco|Jhy6<-%7EUU@v? zj9z*NeeS1cqAo(jx=#q>yQM*5D6s}z4TbxGge02_AD&20B;<)Ib7D|Mev3K1E+pu0 zTQZqSCUZwU`eU;jeWD(HfBWv|1>yO-n=@_vxtDCZj0(@gXye53D2JH%9%~fB0ffg^ zkSV64Eg5#{>9>qc`fePfzir%41i61qvc!*F7>^6KTrdi74Awfwjvl3?w)XtnK63tA zIJRybkag=E{K3)NZma!p3a%ec!G$6iP%1MXbGMs!!nJnYx^cuqe>uK&x7|iN8|U_; z>~(e!rGJ&oBqL-VKTkBdk|y&5LQNq zDw`}N5y)m3h_-0mys`3y73t~~xsBOqWpG#bKxTd4@XV!|V@i)QaA2UXZ_Ewn^voF< zNv>SKGC4MT_S}a7f7M{8*82X$`vYfH&IUc<{8Jmf_%q8h`BElU`ONeya+zSUqpQoV zJaDektM>LHlBe8oZqMAg56?>^lZmG=9)Y2cEJQXv@`bhs=2jlB@S7o&aqnldk&C<} z;+~;)PPu7BN^<|8ET0%iL(<^;9&U2Dc=!pK#dpIbcMjrPf1wM?ujt%M`DFbA|2Pc8 z!{aDThn*K>QFH-S`~q z$yRb6xslvQe?ChdBE&sG`=9;|C{cU8v%?Ve}4GfgGi@^-*R3-gU9^Vw;?D= z&hNkd_+LfwuaAG}uY&MbC!TE6WYyFn{gG^w8D4H{Ax+YzU6SxiLAxcjJ=xVY(%qf# z`27)Ghl|(mqjcYTkFI-0)>FEEWMn<)f*dkMlkMFa?G9Lh`Ky~GAsCXpooS`1-Bi6H zv`oEbf2^|*?`~=7jyL;_>h4UjC^T)jcKZJ6$Pf-q&kG@Y=-TO5%vg2hGCtC8fhmg4 zE8oJAvs=a2zVxNnL^rI>)J4-&1P}FumS=FlqGX1|c&5@keR{7RgzdmbJJNNwKkUcv z4jk+Hy;P6*Vg1PLb(F4~jgM=pvewbPexGCFe=M)+52V$QPf&wOQ%6SeN~Y)uX{I*_ zzm4$W#tF(zGXAf^V#cMnf-525-rBV^?%hjd8X0Q%+O0rfWbY(*tK-UFw!!CaES9o< zu)~%du2?0zVm8V|t`ufn&5-Ml(9jzz$#4hof<=oce#xRmCwIby&Jq5jWFmFs(Z@2G zf5#rpWR6Uf)P7QjhR3i4si*4=4=-B8DlaZR{Njs;55KtRCqMbg$EO{hu58(IIO0FN zVZ&j6gns()%4v(HeaJa-_$T;-%pzyeVg3i%Bd$-~_>abS2zhoCpT7h3o&~tQr(=^Z~y%lRCsXP{Bg2);D)Pib-oW@x!|(CnLntmf4X0g zZy8&5fk%|HEx(%^Ilnr1pu7LNkpIcEPrtS@XkFTw3dU~iT~Lfh@2lT;yFQ@5_TFFi81nCF@aB$Y%lT!~tS0Bzkwp5V z+qN1^e*|)*agSctJ#dFIk}4I*e@X6wh^l)H%TJQYzSrU2CG$Ia*Xtt5){c{-uxDAVspR`xpf4dY^{Zf(( zP#10ms~*df@Mu(UO&CoIZaJpwa?wRluRsm6p+io=&8-WpXds*b;I$LovazPLINvkS zYG(D1(~a|RwcDX66+SE_Lh*Du9!f~}YN=3r1)$Q7;rvHiKe;_6*{HU;n+8~nW{@ph4TX{Dx$w_2IWWG7{pifo4swmy6rNTy4 zb?(DNr=mQes=nGDuYpz$%mYh%0*kv;6*g%R4K}E12j-vfTHyE2@S3hI@B({@WhVS^ zxQ8;XbKDq=WCHGSHp5Hsl9S*+mO1$-TkN#WaK6VqZ*aULe{_uaNgGmbh%6^t$S!h# z+)O@29wcMrJLKo&PiRjw@S-I?7ss-U)3@#bUMaK!cLBHSF5Udf5{q+bYf3$LF_}`& z-A~di&7DiQLrL9*{O#@EtbeEWyxuNxTjHJDL!_1kUaJz2H3VQ6pMv;aD(dcsQY;E{KaN- zvw1Q1Hj3S#c)iNS3ilUMp8sFK{usfqXbLp1be2z|2<>}E9OlLEf}{b@Ye#&tN5=26 zsK*mkys}r0#bl4tz@}@OKH1FYQ#hysf5iNrdJlU-f3f3UWeTp?zsaJkx}RiQ3^P*4$i*mNf z_h~niFWXperR&1d&Ex8P=QkuCwUm~S4bWk>M7w~de+ydEP^be^t#fQe7;Or5(rmn? zBTAv`0V~u)A%{7OLI(`J!#foh(O{=@PiK%~44XU5J(z?@w)WSIg)?l!ig48VDW>Cb ze@I2cA8L-?;%07%#opAn#u%V&PwM9$?vY5!mLrx#S7P3<7*JmhBvbV&~cM zm^F(ZXoVt?x4b{`)M>4q<<2c38OY@Oe?L#sH{Nkya8D_xx-W?nw@!5dSqlF*d6>Ab zYDnDhf0KuLdrq#Y_}(?oo`iu+ttZ%M3v6R!zQN*4{OM5U5H$qp0w%Y4g9S zchje1f7m}=T#x7R+H-kuj-sl{Ic{pQjEet1)o=RXzDDnH^`G{)N)|Td)ZFGye>Qb* zADvQi!uc~};5%^we2h7NKCxyurMuUxy@=9_zT|Jo+SwL=BcgYk&g-W81Bw5fM^d=-mgpNDo2ZRF3xisf~F=b~(DTUl^X8E~BC26{6yQm#eNfynB4uGtV=G+h@ zxw8~^;z?Rub*hxvQm^Lx!uh$@e-x613o(`z(+Asj3TD(4E`;qqQ;{|2=R27ka>hK` zk5@BA`;qgS*A!Q-5<*_*uRqdcVbza3qw;gl$-3o*mCwmmlMi5pSJ%DHgWzkj|e?R%u`e{JF zJ9n4BE?DSn##q=jm+NHP4>94$nQ-*XBZ6|v_EYP<3+Qvgt~t(k7hJ&DMRTBc&MsjV zJG9OD?wN;0;m|hd-F9gD+W_i!GdHsTWEbPexyK@@gbQGc_1j)QppZ+JeBYt1&%yfw zfh&vwU``)^B?w*AR_tJkvOdTlEMbu=osL5t? zvM7Z_JE!xx6SF9=dR<-DYCwDv)=6Fo)&&C2QLooI8lc}lUG~YMe46uw^TcVG@X4nK z0uxa1>pLmEQ%Nfy7sZb&=^u13QP)}O)>~6d*G1NWHFq+G0F(Uwe_{HZ`*hj2jVkMd zERKvj!A>2~b+D87wbL-1!#JYD27CxMI`=vE(eFJRFz&lAU_5LX6EN_H`xv`V$tj-^ z#m^|Y2k!XfC;z%amX|J-{NlAi_hNHF)KfgR4D(%2wD`33zIkdjqH4 z4j*;e7FKS9r`}gNd(hph$M0e*Fj58VuOZ?7GvLY5P zOK!cCxJMxx&@xDDDzm5G;>ucrk>czYSijWy96Z{$v`;eR9tCQ5qZ|~xs!w2#pq=|- z#P92A$tJ^22A*y&1C-n8pD|tueVN+rnLfZ6KL7Ndp`CErY0jf?Z|{KaHsr-2*9s1%>(nE`OU9CcG+=ll~Qr zP0dKMH@CM*_j~phFvNk??)>u?&vKQ?+E&*w!+p1~e^BpY@*e!X4X|uL;SXj3i%i zj|54;ecnb_raH!I8Nqzk{Fp?h_rgWq~KjPtFn&0zj zAF|Fje;z`p83TQ3P~_vXLa)E@^!HIlDbw~M4tQzlW?msFi02AbVie9l@A7Lw{)dnC zqJmPi^NVTWKQ~?v-bX##H30og@y-?Lp#Xs5ivz^1g3=^HLd1 zg=+F`vZ&Zp`H}NA=bxX_#9@)j6#fIp@&P_{e`J|WJU+QzQdJ3Vadz>T_2&77VcrdE z-+%`tRg-GB`aIzEw9Te5RdR|nPJ8;`77p&Lym31d1_i^`&mL$waSX%w z%NVi+)#}L;tfg98M_;ZzO{-O>N=c){f88_x$Zl@*!_TUCS37&yT4xWet;OA^fm^R`fBNb6t81^n{Bm{oZZi2CH^2QkME5qX z{^RE#D3X%=ETqCuo}P9o<5bz&lgFw!>i8Z?95M(uFF1A#*5dErv9}WQ-RWi3e`U8} zB7MYD;yS%vuI@qfC*1Jm!99EQ>K@i|@&tCfu1c#&G2&FK6D8#D%?&@hXV{<3pW&34 z9jyMHd0-1p?qLV{)Hx^k)HyHnscYQX*XL*A4gxtX$zT4#$uW{8R1uQUm@s6etJ|M> z*1i!Ay6klF#G4bw7Q9@0y*@ise?r_yyK43C@)so;L{*#y z(kOY?M{)I?x?Pz`sV zwCiV()#Sb8I&NRc{J^}Gxtn68+)M40h}uF zEu}`wlG{>#3pQSs<`+JGf7$}>d-nBrGVHR8P?p%-q>oZD5bMdAB6s2u!_8K#78FE9 z<4(!`jEBWl#Vd<&?726t6SbJcBq{(E{8UeRIY^@|#ilW<`8i%F`eVJ>kcfMd7;3hf zUsU`8Z-S>tOL2KKu#lT$X53rrT$*YRF%w~ic_qUbZ_J6GbFK7 zyssuMp(o!OG^ZGlfAn9t2D)G?rCS#`m(*ikvgH6{2e!Zm-T1lB@**B6(Pp5_XUtem zp*foE;!Z~kw@~Q%4)iVT!|&?;A%LO&{vk?-SO)~G0D>T51VT{w-~t5Zg^1g^WXmX} zqi!E%w~zVWFMC&t)t8ynYCbAt*=q8yA>1-Mb~Xl)qU=ZT>b)8kMay>R53! zd>9r(xR0WmAI61H9-@&jcYciEvfytKMXb6v&Jg!z%VH@l;Y9I^`ywiJh&{_M_p!8C zwnYBU30Jlwe^$587w8Ts(if?YvCp^%IbQeo_;vb_sPGc3_Ur6HF%a2#+1 zyJ_~Ol>UVC;`w2kYUv9ByqK_JVluym0*yEuydUwvKxQ3sXBrauGxRN$cCfUoe4WW9 zw02RZhqlKzMsU#_uQDaHUlIds$anG+KEGcvt;~mie}D-eszBXR`TS40>FD=Uk)VPp zb{5aSaBDge3`o##S^c!qa@l3j;qyDcx_57j@1b)_RWI~sXT?D8i-jzj?OXYgAsm+B z9F%u^XiK>FqLs-u*{es{%gcIl(^y%eU2TibTij;EY$0LIHx8ZEt6mbFm5Zp+BWQ~> z_8NXae>H-;Oc?FKF0{W!$mY6cKk<)fIN!7Ww0kR3m%Ds5xc{D}Kb$piqpQPCtdV*t zOxX2>S+3rXN=s|w0swAyeiuyvq@oaN#Lg>V!fVbeu~aGsCJ%Xu<2@D7`5lDdFV64l zx#QgT>^KC$h#DzajE(-_A~0ep=MgYy9!naae-L!b0E`*$ROrm-$lc;V%z)ry9P?w* z6nX2}bMTZCA{osNu--AJ!KeMr@~=7cE=R=+EQ)aUL}xRtp$Tr~WJtXVWt$1_pv`Y$9ntj$k)bLC27w=CMZ`oH-=D-f;++{!jA zZN;tY>!1imM`fVd5^jq3M$5AVI;$f>e}%yQB{2n*w)1mTj1B3<3Y>1uY0CD?!lmHT zW6P(toz=RxkP|wTHbXbkE%f6xV$BSZz4G8Epy#OSy~B3o1%z*q@D?@oZBEi!dcvt_XpiZlU%(Lb4nHrMka$f7jv^ z6;juTLN!=6=Ku`aLCS!6XXiI36_CAiN^LZkDn;|tby}l@~^i~GEW zDl_KZN8_UZ3jG;bOm>nh$fwC8f8?L*KIjvaZ-dr`5#OLXm+NVr`s+ZAf3w0JNE&ZN zQ10r`m=}@HDU}bBrfKX%Q1E? zBl5Qsv18mIimo%e+1eOvpSwMjBhq^!-GRZiAq`akpP|rnpmknPenBY|f3^nZ`k64h z*``$R45p$>ra31|*MY8P*ZNyqgKJ*@3YA&uFm9zE?vik$ol|7G zZioweS}59`u`jUb%u4enzf@u@pP3)ho0A?5t^xY!t`$oEP{6CG-oQ{ofndH_5oppj zQ&!gb1++yY1+%{k4fSMqe<3OLbb6Hjw&;8PUJ9P;>5I%GS(|6Hbf#yYpAF0XMk1@B zB`wI_rZp8$SWtn# zz21!{e-Q}H90^yo|BZ-#_?c>92PR6*5GZC!VMR=!Gj@+RkDe*|RyzCITewxomXU>@!e+_#x-f;1TLY^Ma40-@FP@(>!m}sG4ZE<=qr*HNhClVbrs4fA$9jMwuc>^mY9!_v{-~e5jdICioF*^F_V%jZ;)> zIi!0SxT`DfkXjqzYWF!004NLV_;-pU~c%|z!1ZC>i_ls=lD)D z07Xzh006!A2nBeYV_{%mV8M(3|0hkH3_J^ny})K(ldd-x2aFE@TEqPhDiLB4ybJ$VNh!p}AE)_r( zR27I8UKXwv^cOG}Oc??ha2fa-SQ{=Ib{pOtHXK|WrX1`YMjgN(5FbPzcps=A+#nJl zNFaD1t|0s&L?K)vC?dimt|UMtENmpSC8j3QCmtu-004NLV_;-pU6 z1%wO?|G|6)03*KwEwhU_QvrXJIERxEp!a>>b&F}~eP8r0{RMooy|G0d$(1D%^6R^f zfxc7^mb9MTogGc%P@`UcPqJhae82VMB+p^pI;F~ky$riNxP{xeg8+AN532~VhWmJcbv%E>BRs|vJjF9S z#|yl~E4;=Vyu~}b#|M1G20r04zThjq;X8idCpPh`(f%Wa+Lp>2>m3R^vB*g!!uW|O zvq%e*guXB&f;bb#4$4?qOQybc4=`SwNhQ1uBZ{mqW36)S678(>GGgG6BO{rRiYbVM zN*2bV@KWJYTAauvB^!UFBG1X}dafiB4r5nZJq{vQN=0S4IPW&mCW))Mt;7{MP5X(k zqSVgBwD!O^f=Sn`48=CEG__u8v@6=%k`kWLpGubsIhJG5=eSBJ2`Xr3o>fR{7d$&p zHz>8?$}#I8Rk~Q+657AEoXVy8?Ty?llisMRv-Df5belVrqS}A0YZ=OUYsVQ)rO;k! zg$bJ#qrNt&P;w@$)M{ltT($Gmt<(uM<&>lAtB?0WoT<|4W8L!l>Z85r*E-T3X)|Hn z2XpR$HAF1wvUL&nV`4L>$C{PyReEm4(!@D+Yiz`CTc3Ci@~nt*p4`xmq)D@4I@gbT z=hXYBSU4y%j_rTSUCBbE{73Ac+p3}@sl_VWV6C+w?I#xvcgR@DZVDK~j_HbArYf+y z=tYKg3|vu=S1@X5GWSWucJAQ>|U*r;S#+$piUf) zwV~jEg6>WP*B-ISy88wXJB2Wn>+*kAU+a{V^YoPXPVFBbTRS3mRQl|EN|`Q|t+}bg RX2x1J8h-)yAVBZ{00601$1nf@ delta 15030 zcmV;nI!VRcdhB=DgXdZ!~)EPZD?g-WB>p+L;wH)F#rGnHXQgWYG`O>VE_O( zcmMzZAOHXWBocuRXJ~D7cmM!5m;e9(GynhrI7{aL(`;{JVE_O(%m4rYo&W#lS2VIe|`-!c%0SMOK;3k9LDkQ^hO!#R%NJri@LUMRo7B= zYbE*$np)bh6%mUjeFKPi3&h3(8;M9*h&SK`JTn~&c9uM+PnYa$%*kgm^G|v*=lq`E zuRuG{YWuCtAFEXSiIxsOtt>omW!b{>w#rw3pWwXzrm7y*)T@3CXhqn||nLeYF0z{;vMHQEN;!Zq2`%|J3YkzWMbFgf@D&KJPZD zVedAsn~S^M`QvWi|FYZbvfDpwIs$|Oe_Vh39}!Fu0+J4@(b6Te!lgJzQ(l5w1E~60Sd5e;Q5#>I}-WW#M$7 z<>8#5YB(`yML0WXWjIBsD@s3WRXAB_bvR>aO*n06Z8&#mT{wZLI~ML?eK?hKe{d(E>*1b46G1uOWVp}Jjc~`In?cFKR8W5JbhsbUOt>@A?V#Mj zouJ&=-JsNPHr&BzE+}Vu9F#0P4@zEMhC3a-56W3Tgu5So3`$ZC$(eMnR{x&>KsJ{!(73!bE6NW}DJZor7Md`4{f35KRVg6Nk5;6ZNJdMMLI?>d1QMGP4hKjZ!jiNJO=v=!6G9sjoTh(M64I8W z1#A3&Z=^Mge}T09|CRL4?|tu^cYMct-z))wf9wc-lh}l)P?S=Tlc*fC+&SQu^ z)goTar+0$>kOWCDsgikQ5jlmNMpl#c8$9cBmSh6Ky!mSi%LP;)2a;0jC2vVI1RfKVJ2vc=)QV~($2D7rWL6))ue-H*q zmYkxC{o$mEMaQ)yCl<#~2T1*N4zQ;lc+g-#3t?T51=*Vv6ebCUHYR$X%R`1;+7<}p zj(wJGJ@#U-7z!0aU(xeAV6qJWWEs<-7eYV>XUs}1@;1t9CJYEQtEWF7q+wT)z}hIO z@(Sg2CMXi6RM;jdGA%frS9Zice=nSt*|4%bwR9|-?lKjXX$n95_`h6j!>G7dqYJsHG zg2Bu-SsIhqF(xUJ%-9wQq}OK8K7Ht_-}m*lwJFk-ahP%XnKKAIe*E}Ve*&RTKo#VIIPcnXWkR?&@@hpQFbp?)pGmSa*JITLOj zgw65NxF2Hkc(Ll_;yh_dys}cNmixg$?3E%1ElLh%E9K#0CC6EPwdm+zV-fDZ;sEkd zCyu)i!7+8>Te8YNG!|BJf1HqtQ{=oe?oYi_u5bYCs8W?&UR%aGjHN1PD_Dob@{n^| zUWEj?<%(5xE12=Sc5?WDW&S~W5CoSq!=^H)0@u-vnwHQ+A)L}BT~h=qs-n!SgccB6 zTSAg48k#Anpg_o!w78yBgMuD4B}t+!vZ&$Gqh?Hqo9U3sq(E;Ze=15GU04DU^pxJ} z6r_+85+qfUk{HTLh(;+G0YmL*5vZ)k)iBi%5Wx|1Fx;VqLDWPU^RgK-k(eM8La}Jf z9*|TuiFy1AfJ-tesahz|CaE-A6ivr8kvi4-3Q{tf)LS@S+r-Y(k}PN->rRW- z5=IoJtV)6ypf2bK^x-99fwxk9{Go(l3fn+k=stHu35JPGZi5XFoYD-iKi-^c* zk&;R@8Z+a9Y~oX42ZD@5VlQGu#0M49hR8dRar6v56wc{E2x6~#P!*#b8y^rHJy8&1 zNzrQQkjhva5OXoCOo|XfLSmw*CDe9FG9_6NS%|R&wn?^he=3M7ot2P3@KKUfUBzBx zRh3N4ieVf$1*afw>bjugF3!{sWBGCe2hSj+8+qOy_6O7<@}v``{U8}8BV-mCL%Fe- zEF&w(8svdzkS*jKlpq(8OUNE_Ir%V|AlH+d$;Xj1-a$S^K11#$_meM@hsY!32ziQp zjZBiiBF_;bf95K<4^IBMtpHAd%0>?5XwJah<@|}C`2SeX%M0%VTX>)Rd*S1C?D;j_ ztMS9br(VAJ&tS&l*Pr~{OKaG_c6WDQ)7^cw|Gj2f$hQB9insjKThoiYn@=jhRQ=ZJ zxhBLraKF_k9_c#qcRi{CM`@tP+W~XEf$P{=$KqFWfB1L&tv)Hg=I!=fYu*L*?vn0q zU)At~!}QsvZbVSb;K#|x89T$)*4M3L>kfNlEj_drLs$osK)jwqKbknv_6zhEB#K(f zVwA3NNzNb#GOBLbvJK15SSa}hpoo%>Ym6vrJAjAfLY3>0vMAYa*CTkn8k02dTQ|t^?Xvt)7Lu-%cT(zDJqbS~790@5523I61OMAR-(TdMV5;mF9vU-UrFfBz|Gg z^Hv^`>4ELr4^a8g$`v1^@~(Lcb_?`_@Z7+F7TVTz6B9#PJ)(u!{@r@`-1b0H-4)UX ze+N4&0F_Sqx*x;wDa@44EyWOZYpbbvAE^HFR=D^8V+StY_e6s{WU#_`lF7vSO@7L1ISCqfBD+Z zRNQK*16&&;8#0Dd%!a`a3S}b)oCjtqn5txCo}XF`&Xlgrh)2riu=yF=o`sQTQetAf z`f&`(bZl&_j>ZqgUwr~I@CLNxTkvZ^zM9AHA3yYD*)%_6S+h(NF7xg;P2SWjzwAxG zq({caC>cZh3DQyCswLXW8|C@qe{kF7r|fp-pnMp@H9H5ID-+dz9=1c(Z73k^Fq7*i zSX*cmG!`xWkUN)t?1J+@M(5Xd-Vutl#UT6_H{SRcI*o>y9)Zv&_juo@+mjjH;W{OXISdY<&e#4g-`_c`e2*mVjp348^)blAlfB)1**tAz) zr!V17({Svgq}|uxUF0iEaP%c)8;3hl)K)QX+5UBUfRw%xLvD`)%ZFrV>qsU0_-PLb6(oP)7puFvMOI$EbL zLZFISnuBcF<%LoVm26~Pn5hiU5qMkFTTvH~(9ppZl$bv|vlTf7C`T*~T4$o1SM&XqRz%WS^eW96HPqH^^y_nMIAe!qs@&|8gui z>p3(EDve5fvMJi^e&#o|{YOI^pi*|R?O+ebkh9%k*p-aDccX zUEw-^RzlA0+sAIapYc6``=!J0dKkAga;yRVh`9>(D)^&Wf8mt(QyGmE95bEv3$Dbe zXcS{VF^MDOJ?KovzMSDI+AA)ngiDPE5cZp!Lpgors%4itC|Z&@E@+|fN;w5mJ1ry1 zid$}uSq@QE$}y|V8O|tFc!`5%CB>oT0*K?q0cofH*rP#_<74N~0ag#DAlJ?~Mz@Uk z&;W9#<__n@e_t66HkWY|#rb3LLn4PiH4@iOW4IN$Rp$7QFgyn*0<9{0xR@I*_Tbo; ze8Xp|&q6GP^kj>O6?y7RG{!i6C<0ZKTx!$WQ*i)uw2rE3{g4Ze`Gf7pc_FOA~!RJcWk82C!Y?sHSE zhu_tDCY;=Qkhi`vCM6S2G6|xYOeD>sd7~aTHBHq_jVGwaZI1#PEox9z1Qm66EubmN z$EYZYf{J#Si1vb_h^9FvP^xO0p$VEM1KK(%w3bAK#Rg&+V>M_7L{TXxu*8%jqAZId zH*GXIf2o=LFQ`%z4VW;RRKb=+;tIW0Gm#U;Q>|)@V*i@iEgCTcQHg#m%fF(kAc)wj z5W*(_G+Bh88cvAGMdehfQB?}#qsSm@Ml7K5t|Qos7V_>0Et5mADpU;i zNsOVjvm7yEgrUTr2b*x?N|HoHq!a@rI8?$Cf2smVK9rz{s}(V{QP;62$|)5D9t%Q} z4~@#73@bu_;}4WxhRO=oLZ~-vYK`V8lP^up z^uEJ)3&q(^q~iRbfbz-3so_%*G~>Ess+xjh+4=nQxTuR}hpyqDS=6m4n&3i)e-nXC z)n=Sh^{BwdJ#_JIH1+w?q(R+0SbN^oR9Os2&E2DLx)$CTPT>01nq7k&Xag}6l9C~W zS%~xKPZAYODsbx_r`&%aTr)yQ!zI#KJ2;Zu&euoyQj-DaNx<#yp9ZW(DBO;MHnrLs ziwZ=;jEeqh6Zj55I{lsJuMbhHf42($pMPw^w}`0lwZV6m$d@DrJeK%~Glo@tYOqt{ zY0hW(h>Od%=%!Da-(2RqF_^^NfXqXWN&=sJ(cvU1T7x@?VrZ>-@S=h0qUqi~|>_6hwm(*M34kiUh`&TtY@R zgo`#DNF!)jXfhe_fw3o1!j7Z{k3wXOX{sLdb>e5(H`zEzkZXK9PDXtaaobW9#o;Je zT=Y5BB9ml;%P^G325Lb4f6(J!f5??aVG50w6ZKA!y0gIbkK;Oc?8ajj3XUpDnj(j7 zsMFZj9A4W2DA}#3Y*9AR_oItys~)Z{%1BaXQT5@KGcNj3U#~@}wOlid(40^-nE*c? zZsd}FL}wdJiCl5!%u8EajriR5kRh#<<&}~V%C6`rZm+KSa9T;(f5Q)r*7|-o=!7W^ z(_>w&I5cK!*?V)tM(;m|TTRTicDZk?Sn)>vELDc#P&69y9%b}yp7B7l2cZm8g$hV?-YL_rKT-dT3czQsn$1NPlS=>M)Nbh-x-GY zJFem@IPQno-E18Rf8xk@qJBS*EJKa=ESv)zf7IR6{vm+b7^(`_W!%b8{7+;>->hy} zD`vyy;@Z^72}T(?=eLBx$yX)^-<6#8^!J{g<=u;^Mqc>Vu23YB zFpS_kBDNOJ+*<$pt!JLOmG*Bvvu=(orF7}Y_JP5{fw|!Fe~i0hdS+X1cXw|qoHEh? z967~1$4GEgkGv!D$7qsGvM~}MHc9yw=t8oJY{M~{I&45S9Bhee!h9fxMXLkXx>G^L z*3Y}PQ{^KfSDRLx>kMHzg7^iQs(Yfb=rj(MQLV&O*$1cO>vd7Af87tgwVOgPT1u`w z7q_X_Iy2R0e+w+%S%Sc&bK0`i#q^w7-pXrjOM8B>nQofjn=8#&bn$*x-wVkl7QOQ9 z_*I{R$Q~kJ?B*Kdr4rAvazWiF!b)vq%!WR@EM7ZY%C9`EtQ;l1FoID zq4C}}yXU+Jz~bs>1KqJ)u%lb~qd0#Ph4`u*u>BV=f1TS}nf1YY+Lsl+^~Q4R{yiUg znA!1p$&~Qo{kMOg+w;w_G;u7sMW4g*oR1@kYG8(|f(BPfGh8h-rcMeCG;A`c+d4jo z;aAICH#PWDsu(%Gp30e$#U>}~lapg(lXMJ2wBXSUA7jK%VgVZU6H)!%Xj}ANel-ab zdX!FZe{hfZjR-gN>tl^SG~dUz=uz(#A2iKxP#b4#$36B8+J;qfHn|ur;Ue;&0cgw_ zs^KZF+gnxJpEuNH!(d5eNk)66Y?W+ZueM6niqqI6CyuKy^ntKyh+i?-E@xSO9;WRl z_6)EK)*%xIdg(^0n-B}DqEK20(4Q47g#s=Ke}I%FOWNEOES`?P!Y6+28H2`b6D82B(9yznQcJ}oO!iHJIWE7Zw zX03O2OjK%CT9IL2AFx1&+e*hFc=Q4(`}-kkWZWtM1q50G#5 zn(>X>_!ig}7)W@Rc-5p1e=2i|s9}EF zIJ3bd=x^Hcc{iWGyAl1q)sH^Yh`xW{i-PdteXaQp{@lwpT|tExVWN5Bc!)zxeGfMa zVK2gCE65M$5^Z^Q`RTV$p760aOn=k7M~HGimP~~oyD%P?9l30j;V`WA4j(#1Nqy~w zcYfl+wQzXdIw0%TdH91ve|O$l|M4_jKc0pQSuh}1W<2KZG4F+I?Yecx5fA0~*4=q0 z?QWjiPp~)HKIHy2GMkK(1^hhG%4-h3(!Ekdo4ok4iKi#!rSdn##!~D=u;s;jz z0HZqW6tjg)C4)c?!$5RI`?ihlmsjL!R~I)H67I;3-l6>Zfw9@kfAfcxK4oa{(7?c? zAI|HWH$I+OxqfA4a_-#uj{&N|UcLRp=?_QFanA)k?R~R@UiyX8@}){X>3(76)x~^t zxT~kfaUVWk=~w&v5y`WDIKOZH{KpogGnw?W7>~o~Cl=!}J^1C0hv&Obx%>tPdEAHD zTwFy#V)of0vA7m>~^crsH=BUu5Tz zH0j0XSWmW)3&<_xLGnfNC?Wm{BA-Fq%DcW|%{6(4`^Csy%n4$VI91|W#Fhw~u0Zh_ z=U~37k6Jl*2XU+Xtd6&1Z|}G!XKZSk{^mP@2NwlDB(;zun4A(n!|yWs5lcIgL)*Em zmCRfNTef&@e|xu<-JLHdg*c4Ae(s--F35?>`q{z21G(bCvB%EehvT&Pd){kk@R;BG zK13zS`|bCi`hzI`;i<3wK@k4nr7|6wteToNXcbz__-T$7(p3?Q>WywDf8GVWV964SU$SJ$vF&iNcaZ-mnMxge z;>mpe$tUvpgHt8-pEaQ2No+wH=|;l?OO`PA<)sH+e)+(GmzVtPXFvP&i~}>3&6^Kc z;R72s90*(V^9NSWSTf^d-oXPu!yn|AcuNlOKPVjZecz7%F)KD6^>j^Kk@XPcIyx*RG&PTG# zo}4&u)}8n5jJLFZXvbsX1)WxW^p?Hl_1ph^cIwKt8-KlF%RcY1aw-y>kuaCkR_a3d zZdLi@YyCTB&Mx?{iBE!}mCx?y` zdWf#AAEs+3nz+8szKMLgfVwEx!}#4{hTkDJ+>($lSIX~**+-$H#rvn7-orb+U$>-T zgKx3b-c=)9E~R6sTrL$$OAlz-Sf>l%b|O3OM%{GCY$>Rlf1sG)0O15b zQ0`N86>~FkR6rgOPHJU=VlI~w!%|sPT3gKOn#jimib%|~s`*vvu(4cAhOrr{J?Vs$ z${FE>oJ|U=!@VtturHQCz(lN1i(oq>VUxM27x64K&0?YmSQiL8rXJU7Q=J90nyH9o zF*rpGKTS*ZYRi%6niLihf5&QG!Yfy6DKn%+FxAvmrrW9mq>OsLulsPL)R)10H5j>y ziL0u@^{PKrH|e1~o}2_8Of=kE*~GicDB7YEo^O}J1lCWW>_x%-uCk{6fjIng32sN@ z?lSnN%sJ&naZstTJlOM?xn+J*V2gEoYNvx25?3%tZ$VfiV4 z8SY7p`y2&>kx9e-f8H7J3cTW_`H$s~J;9cG9kaY2peDxY9jB8dOgeDnM#*VpGuc7* zlH17V$RlKu{2loP`8Twu83fT1pO3Vh%E!0isO^^9fxBuu4cBXaWr@YboIS0cyO>O? z=k6ytmgCMP+@Yl5>izEaZ`Z$9dtUEUxGnMC?V;Iziaz=Me>#{VP=3E2-WLPQop4Rg z4Ivx%eQJ3TueAq(#&ywW@E1d7<6_rzgd`aVdS@Vs_BBnM>t zo|*^*5=u}Gf6B?E98j9rbWPJwGz*0k4ywTKF~6(P!>(BJNKo0uVRtFPue@J{x4V^> z@Y>cReu-aq?U{}nzVbHmBme6P_`1X&L{X?kgGvH3Qo>B$%HwDQBmgu{r&{7u z83j?{Pe1*PAizC$Kq4~g{%8RdiRruZ`o6T*94a?_e_gn;Z`s9mit@;fqpBknQMxrx zRALe(FL^&lg*WrkOOQbg_vf3OL}ez*pms$MG8$n5u!YO#t>9N45lVx)(hkr)vyyPi zHQ_gpKKdJ>#wM`YOViLC`>hG_me?}rsj#;8614V)`j?90(*96yE0o&XXr&vLLp%|q z=E%O4e~1DRt=xCwY+#al$Wc1c7FtX;G~Nk#kGB!*Y)|t{-7Q=GsXABja=a*JVNuaB zxt#VhrK*GVcCNuJ{XFi@_kNS%30rB4IRIT|TcQVO?l+*djK;bk+dj`xgo&0|H!Y;v zx)Kz69=2nB6pEO$DRjZ;d%XK_35|Ap_jgArf5vb|m$?g*U=`|r$lEx>4y=eLynn=W zDh1g@{9~<&+x^V#$>iJm)+7V8?MdU@!#@(qIhG1;oi`}tw0u0 z0ESN;9(F|OeiNW_Y8fs|bSAq(H@)X5Oen=JXBaMxlo&k~QlW0wT{8mk-DIJA1ctlM ze@!LrIs8B?W?Aoe&*9lq+PkaWn`1JN6YuFfL*IH&x!|8tPIq4tr*54Z46+jcZ}Kp8 zU)AKe@&6_djrM%FrsI3xJbMO)^7X#LAi!XO{vbaD^*c2AAz6Fh0Aipjjf|qg`=-tR zrruAVj{RZ(bZH}Az-!Ov!Fh_RD(CsBe-mX?{Qs$b+gJ7tdcUv#biR|buxY2}4tKI? zc>Cy-lB3?gGX|lfMC^nW1npO=|} zT)SrHU&r2t#E8)2-toOc8Tnj}uYNJ>6htYDtJ^H_a}76R`e(bS9Z^XZO-l#Bf2EG* z+$dzYvlMsY$=F1L%ZeF-v$qRo!W1rstszs9HSZVOnH=*b z1KLklGe!G}_eRhZSFRFbLGKSg(PUxOPXZJ23oppJ9fXxH$aYHzU`0^ZgWe+$YO&=P zye|iB?$RmUQxDqmJ$k_N0{T6&e;usfBQ?&q|H%H9g`0b!gd;rdB$w}j!buK(^2zlx zfd2jb9Rj;(v3CZ>!jAb|C)>K82?x)DLuVZnl-swSTpwISUl4Z8^ZtI(MT}iC5Blfr z5azJ`XM2Bt)&Wu2e>U`=y?^Gr02+5Qx3K?Ymm=ldW0AP=GB{%6wl@sOf8;Wi(BIMa z7vMvY$koP>arFz{EoU{3R0y3eF`Q* z^68Pt6cqgPJ(S*~g4LsOv0y#~oRw>muvIntK>SfD`NedRTy%Z!Jrr+c)XrTaXI9E?j_c_nKgL0miQc#)ZSSxSR>?GT= zaa(fhrNTW5(SVjgV$&CU?j5eI6&N3$+Xm~GdtZVl29^&{XXP_LQo9}>~XYn zU$(-bzP3Up?&aazomGHpC;fMfSHeKPeph|~For+>_O8+Ge{jkv-V^XZ|FT|*NlCKEDl#Yh zE1E*h$gsD?f7=Q7d-e`6#DUfR{PP#YitdTpcHc3>e+RJK=!py2X0_bxW3+Lr%J2G` zBVOf~WVqO>2$tdpx^ZmpBcqL1V)?sXM!8{@&=vH z<=F+4pdBZeC`v%~44(_eIWh)a#1S8CSu@s43CaN*iw_wf` z>QFQ$%oc?Ee)M-&)>|lG#aZQ5oHF*>Vbxe`(rNEiABG2k$p`t`b3)w7rtbxI3|| zO4xzVN1kHOp^TY&7r1fOf;x1rl4a_Kv=K z=nzcQ{6E-t>@ZtftEcFzJ3ZX#HE(B=U-5nxzpEe4dl0w(j=)KAjqN+O>(xWMc0t?G zf5RB2Ud50ts@0AiWo@S8F?Wk`vEy+q<7b z^l#%DKYsp!EGfg!LR^0G^lg7+yc%13f9!A#sZQ;p#3Lhc+oHpVVJ-gl9e(FvzW;dH z4c={-I6mS@abvt*t?feeNB!{CkzKp=+Ah|1>?n4-u10G(V#KS}rb@`4nj3z0&#*s- zKf_5e+gJM&^S~Az+r{?rsq>EVsq^*0-{LnXwGV^^#F$#sU$!dHUZe1_>UHuZ<7Mh{^> zI7Bs^2GT5f-$(KForYbVBfX^3l)c<*x|qvMG2VDHnEK}d;KyYybSsS{du2a&iqY$j z@N0fdV3w}H^s#?~{d)A?`Xh|ge;Y)F!K6h4;e~PZ}SU3Rq zSlp@0Zz(lfR{WOoJFxMx9KY}h(>Czmhi|--;Z%Kuvc%?RLX?V;WM9z~xf72VZ?%*4 zs30mDcS;WD11zN~L0N>uFT8c5s3j#PQ30qBrg|pGL7HtTHci^CFYrP!oa`^eM3hNl ztkrIPSqTfg37X=`bW#n7e*l6i+qtyPY|UnNuBSb$Q0_@>bq%%~3Z#Jv(wSb}dotXu ziztWVdVq2#Bqm}{ilBh|!Y--_mSzi9t~bS7tJ+lSxtb+d`JPn7$0^3KG^)T^G$^aj zZrdtaDnm1n&H3~v#~CN3F)znoW)H9~TvcUq3Ry$8`1dG{_e!R#e`NktoMfHk`kP0e zF^QezeKmCned4V_bD9B3|C(!{i?&d@Ws!GTBjzQW_cFG3GknyKU-%*~;(?NA1$x@7 zS*KBGO%!^#)6wG16ng#+1{M$CclF>X!06!MD5ayU3nF#|K@c$lAt-!w5d!l<#O+$JX4&Q7|2f2b=Pxh0$kuS-HjdlV*mv#Ah{U{itP__6Q7nnBvyCuJrzgb5e{x(bwm8~4= zSSd7o7#2f(fTEfo$Bj@OrB<9fKU%mg_*+Dl-SEa4<=$)se=MaHoG5;AKa5HpVlVK^ zeJmZW+9H4Fge%*Y-5Ux;dLxST6{=$#GVaF}uZR1>I(<}BcnMaAb@qrDiG)k=G;G^+ zI@80wv~X)yf7*Nb!Z^*g4a5LmPTNT_Q(8lTTHc1>Cju~(Ux%wR2kFw8`ewHiZ0*`m zcV-!_Uy|>mf1Rm~7H*m&HKxR_l*9-d4ITSTC>&NyJOA+?VIqVoP_I!>_VX!bK3Hm@XX4AsJ%1?|U zS%$Yy-Wi~6@%~FzW;*1co?x$@+E<*xsuJz#SaQMAe-0z*2x)tvvHzTY^|HjAqNOGd zqAk*tHT-^R9HmSg?ZF&tU|y&sj9_T~iu+~)mjA`6gBK&%;iuYn0~c&{b1*(8`eGUB}7KukwDk>KRzH>RqSA^>r&DwBl9igxdEWayA`3tNJcO~U-#$R9F>iX#7IkU}yGTKM1 z0N=@>gnD-6c1Bww(Ms{s3!;h=8w(dwe`c!C(#0&MM60e4>FX8hFCru>0#K@l+jlI@ zQXzZ2DAb}=a~{Bm6QvATaBk_0i~@3SUZsN;vz0_?rY=jVRbzL|3?wuqk{<89Xpb(X zjh4j)xeyzmne91ApiHt#Eu*Q9k-pB}*uW)=LqYzUO1i~GNu7_Fj=kW6^V(Lle=i*f z8mi2ge;3(cEA@8e^pERfYlorSsT+(1qc}m%|+T5^pzG>VsU$DewYb! zTOCS;z(_WcG1`l!mC^(dtXa9O`PQN=-3Yo`SQ~C{kFI(1YgA^H11L&A-Xo!)oj1&M z-4GY|wNbP?lV4_u*>3BmuvB5JlwTOrTQdO-t_S+Wjupz_Xe6kp!N_P@e}QPJRS{^$ zF|&5T`z3TFtg<=SgNAyhx15psx&z8!N8*FwAceq9^ko*1>@#Myb?4?@ScuDmM!KM( zB`wIomNjl5E~vm?^2t^;nF*q4#AbBGx7lZOSuBp-#Ar|-j-A%61Qf=iETZ1!ZR(d) zdXpjHs-t3epBu(i(x)$ne?J-$uEV>A%tH#Qero%=3k&kK!ZWvek0Brn52UT!%v`*! zM}(jht?KcXp?P*7Brsu5FxOU#qxlc3XD3jFV%~oQ#=BcPMZR#ibd6A4SVB|R1(GLo z$(iIT)C%5DtL5*VPARpvKarey@Hx*{D>(7~d#PO0lA7x6+nOvte-}jQp2Ky-s}MCU z@ixt>sdk&+PoY)Qj3K{6efG9+RA7`Tl0rOUm3Vr7(n3q>|!$*{r~#^aK6*btAJb% z1}2aw07&Z$ga7~lc${NkWME)!_}{<~!*}Zc_5bJiPBQ>S7f^s70KN1G19+TcVPIfj z!HfU@Cr*q^lZQAS2Z#*-8O#j(ldL!xe+B>spa%2@UI(xUE)3`mqz*O?+z&ht;t)a* z#1Q@wHW82!wh`PCR1&@u*c4n8))fL36cs2HToy7Gf)>aZ1Q#F}))_<@%o;2k0vk#j zvK$H=FdTXuz#SSLlpf?C7#~a@d>^nM<{%s(Odx_F&>61%wO?|G|6)03(S4E33teBBaxAc zh4Euiq@flj9{9qL2%=ON+btqtEt$$|o#c2?DwXgyjL6fDjI_$Mi?y?^$M#Tv#-t(& zLZRZBk;uJ7xP<1$GET?_iO4cC2c9d)40@3(tR4lSE2N^Ln48WSYZFIh$9nAYj3%8} zSW#$aB3fSYjbOMH9z&50EKRJJ813@LuB4c^^C!|JLXPA}bU3bJii0w>IjzbiHFDmX z_v#kfaOa2_kSdugy_k;Ox>K2dRD0gg9j4M7mVM^;v`Th)LLtiAy1Jo^uSS&8L<;Q{ zR+zzTiKwGZB9uH7R%*4dI#{yP(w)Q!HQ|!Q)ur{L5Lc?C{8-mtU0OSeZdH-SP@6F` z-ko9(tRZ4b`__d#kAWRJJ<`l{yX12xk|xTiRpo~Ks+GlikY`1h@#cnq_9cyHOQci& zcy>nZQ^p3}BIVeDJdjL8!hgiE-B2YYNp)t~2FvvgX*XTi+b3fs>nPwH)=EocGEsrm zc{?=BW8m_fOh45|9%^Mz@;X&ss4Xj?T{%W3scjYf0D)o>{VJN#&>r;~8g9{^CRByJ zkv0^ZK+vtR;NC+PS?gFW+Jj~;OsTr;ROHLef->HoV&AD_v%W7fM}^Otr-b2BF`F`p Mwc0<@(>vz?0BYex`v3p{ diff --git a/webapp/app/containers/Display/Display.less b/webapp/app/containers/Display/Display.less index f44188443..0111e18ad 100644 --- a/webapp/app/containers/Display/Display.less +++ b/webapp/app/containers/Display/Display.less @@ -88,31 +88,24 @@ .ellipsis; } - .delete, .copy, .edit { - color: @white; + .displayActions { position: absolute; + right: 8px; top: 8px; - font-size: 15px; - opacity: .5; - transition: transform 200ms ease; + + .delete, .copy, .edit { + color: @white; + margin-left: 8px; + font-size: 15px; + opacity: .5; + transition: transform 200ms ease; - &:hover { - opacity: 1; - transform: scale(1.1, 1.1); + &:hover { + opacity: 1; + transform: scale(1.1, 1.1); + } } } - - .delete { - right: 8px; - } - - .copy { - right: 32px; - } - - .edit { - right: 56px; - } } .preview { diff --git a/webapp/app/containers/Display/components/DisplayList.tsx b/webapp/app/containers/Display/components/DisplayList.tsx index 1a555755b..2eb726259 100644 --- a/webapp/app/containers/Display/components/DisplayList.tsx +++ b/webapp/app/containers/Display/components/DisplayList.tsx @@ -159,21 +159,23 @@ export class DisplayList extends React.PureComponent{display.name} {editHint}

{display.description}

- - - - - - - - - +
+ + - + + + + + + + + +
diff --git a/webapp/app/containers/Organizations/Organization.tsx b/webapp/app/containers/Organizations/Organization.tsx index 5f20ab661..5e0abd0ed 100644 --- a/webapp/app/containers/Organizations/Organization.tsx +++ b/webapp/app/containers/Organizations/Organization.tsx @@ -48,10 +48,10 @@ import { makeSelectInviteMemberList } from './selectors' import {createStructuredSelector} from 'reselect' -import {addProject, editProject, deleteProject, getProjectStarUser, loadProjects, unStarProject} from '../Projects/actions' +import {addProject, editProject, deleteProject, getProjectStarUser, loadProjects, unStarProject, clickCollectProjects, loadCollectProjects} from '../Projects/actions' import {checkNameUniqueAction} from '../App/actions' -import {makeSelectStarUserList} from '../Projects/selectors' -import {IStarUser} from '../Projects' +import {makeSelectStarUserList, makeSelectCollectProjects} from '../Projects/selectors' +import {IStarUser, IProject} from '../Projects' interface IOrganizationProps { loginUser: any @@ -61,6 +61,7 @@ interface IOrganizationProps { params: any inviteMemberList: any currentOrganization: IOrganization + collectProjects: IProject[] onLoadOrganizationProjects: (param: {id: number, pageNum?: number, pageSize?: number}) => any onLoadOrganizationMembers: (id: number) => any onLoadOrganizationTeams: (id: number) => any @@ -75,7 +76,9 @@ interface IOrganizationProps { onSearchMember: (keywords: string) => any onAddProject: (project: any, resolve: () => any) => any onEditProject: (project: any, resolve: () => any) => any - onDeleteProject: (id: number) => any + onClickCollectProjects: (formType: string, project: object, resolve: (id: number) => any) => any + onLoadCollectProjects: () => any + onDeleteProject: (id: number, resolve?: any) => any onStarProject: (id: number, resolve: () => any) => any, onGetProjectStarUser: (id: number) => any, onEditOrganization: (organization: IOrganization) => any @@ -165,13 +168,16 @@ export class Organization extends React.PureComponent { const { onLoadOrganizationProjects, params: { organizationId }} = this.props this.setState({ @@ -225,8 +231,10 @@ export class Organization extends React.PureComponent 成员{memberNum}} key="members"> @@ -314,7 +325,8 @@ const mapStateToProps = createStructuredSelector({ currentOrganizationProjectsDetail: makeSelectCurrentOrganizationProjectsDetail(), currentOrganizationTeams: makeSelectCurrentOrganizationTeams(), currentOrganizationMembers: makeSelectCurrentOrganizationMembers(), - inviteMemberList: makeSelectInviteMemberList() + inviteMemberList: makeSelectInviteMemberList(), + collectProjects: makeSelectCollectProjects() }) export function mapDispatchToProps (dispatch) { @@ -329,11 +341,13 @@ export function mapDispatchToProps (dispatch) { onDeleteOrganization: (id, resolve) => dispatch(deleteOrganization(id, resolve)), onSearchMember: (keyword) => dispatch(searchMember(keyword)), onInviteMember: (orgId, memId) => dispatch(inviteMember(orgId, memId)), - onDeleteProject: (id) => dispatch(deleteProject(id)), + onDeleteProject: (id, resolve) => dispatch(deleteProject(id, resolve)), onDeleteOrganizationMember: (id, resolve) => dispatch(deleteOrganizationMember(id, resolve)), onChangeOrganizationMemberRole: (id, role, resolve) => dispatch(changeOrganizationMemberRole(id, role, resolve)), onAddProject: (project, resolve) => dispatch(addProject(project, resolve)), onEditProject: (project, resolve) => dispatch(editProject(project, resolve)), + onClickCollectProjects: (formType, project, resolve) => dispatch(clickCollectProjects(formType, project, resolve)), + onLoadCollectProjects: () => dispatch(loadCollectProjects()), onCheckUniqueName: (pathname, data, resolve, reject) => dispatch(checkNameUniqueAction(pathname, data, resolve, reject)) } } diff --git a/webapp/app/containers/Organizations/component/ProjectItem.tsx b/webapp/app/containers/Organizations/component/ProjectItem.tsx index 12b325d5e..7f2bf073e 100644 --- a/webapp/app/containers/Organizations/component/ProjectItem.tsx +++ b/webapp/app/containers/Organizations/component/ProjectItem.tsx @@ -10,6 +10,7 @@ const Tooltip = require('antd/lib/tooltip') import ComponentPermission from '../../Account/components/checkMemberPermission' import Star from '../../../components/StarPanel/Star' import {IProject, IStarUser} from '../../Projects' +const utilStyles = require('../../../assets/less/util.less') interface IProjectItemProps { key: number @@ -18,10 +19,18 @@ interface IProjectItemProps { loginUser: any deleteProject: (id: number) => any starUser: IStarUser[] + collectProjects: IProject[] currentOrganization: Organization.IOrganization unStar?: (id: number) => any userList?: (id: number) => any showEditProjectForm: (type: string, option: any) => any + onClickCollectProjects: (formType: string, project: object, resolve: (id: number) => any) => any + onLoadCollectProjects: () => any +} + +interface IPropsState { + currentCollectProjectIds: any[], + isDisableCollect: boolean } interface IProjectOptions { @@ -33,7 +42,24 @@ interface IProjectOptions { isLike: boolean } -export class ProjectItem extends React.PureComponent { +export class ProjectItem extends React.PureComponent { + constructor (props) { + super(props) + this.state = { + currentCollectProjectIds: [], + isDisableCollect: false + } + } + + public componentWillReceiveProps (nextProps) { + const { collectProjects } = nextProps + this.setState({ + currentCollectProjectIds: collectProjects + ? collectProjects.map((cp) => cp.id) + : [] + }) + } + private stopPPG = (e) => { e.stopPropagation() } @@ -43,24 +69,58 @@ export class ProjectItem extends React.PureComponent { this.props.showEditProjectForm(formType, option) } + private collectProjectItem = (formType, option) => (e) => { + const { onClickCollectProjects, collectProjects } = this.props + this.stopPPG(e) + const { currentCollectProjectIds } = this.state + onClickCollectProjects(formType, option, () => { + if (formType === 'collect') { + currentCollectProjectIds.push(option.id) + this.setState({ + currentCollectProjectIds, + isDisableCollect: true + }) + } else { + this.setState({ + currentCollectProjectIds: currentCollectProjectIds.length !== 0 + ? currentCollectProjectIds.filter((item) => item !== option.id) + : collectProjects.filter((cp) => cp.id !== option.id), + isDisableCollect: false + }) + } + }) + } + public render () { - const {options, loginUser, currentOrganization, starUser} = this.props + const { options, loginUser, currentOrganization, starUser, collectProjects} = this.props + const { currentCollectProjectIds } = this.state + + let currentCollectIds = [] + if (currentCollectProjectIds.length) { + currentCollectIds = currentCollectProjectIds + } else if (collectProjects) { + currentCollectIds = collectProjects.map((cp) => cp.id) + } + + const currentLoginUser = JSON.parse(localStorage.getItem('loginUser')) const tags = (
{options.createBy === loginUser.id ? 我创建的 : ''}
) let CreateButton = void 0 if (currentOrganization) { CreateButton = ComponentPermission(currentOrganization, '')(Icon) } + // const bg = require(`../../assets/images/bg${options.pic}.png`) let StarPanel = void 0 if (options) { StarPanel = } + return (
@@ -70,10 +130,37 @@ export class ProjectItem extends React.PureComponent { {tags}
{StarPanel} + { + (loginUser.id === options.createBy.id) + ? '' + : ( +
+ { + currentCollectIds.indexOf(options.id) < 0 + ? ( + + + + ) + : ( + + + + ) + } +
+ ) + }
- - - + + +
any deleteProject: (id: number) => any starUser: IStarUser[] + collectProjects: IProject[] onAddProject: (project: any, resolve: () => any) => any onEditProject: (project: any, resolve: () => any) => any organizationProjects: Organization.IOrganizationProjects[] @@ -40,6 +41,8 @@ interface IProjectsProps { onCheckUniqueName: (pathname: any, data: any, resolve: () => any, reject: (error: string) => any) => any getOrganizationProjectsByPagination: (obj: {keyword?: string, pageNum: number, pageSize: number}) => any onLoadOrganizationProjects: (param: {id: number, pageNum?: number, pageSize?: number}) => any + onClickCollectProjects: (formType, project: object, resolve: (id: number) => any) => any + onLoadCollectProjects: () => any } export class ProjectList extends React.PureComponent { @@ -199,7 +202,7 @@ export class ProjectList extends React.PureComponent )) : '' diff --git a/webapp/app/containers/Portal/Portal.less b/webapp/app/containers/Portal/Portal.less index 061600c6f..86d6e2090 100644 --- a/webapp/app/containers/Portal/Portal.less +++ b/webapp/app/containers/Portal/Portal.less @@ -45,32 +45,25 @@ .ellipsis; } - .icon { + .portalActions { position: absolute; + right: 8px; top: 8px; - opacity: .7; - font-size: 15px; - color: @white; - transition: transform 200ms ease; - &:hover { - opacity: 1; - transform: scale(1.1, 1.1); + .edit, .delete { + opacity: .7; + font-size: 15px; + margin-left: 8px; + color: @white; + transition: transform 200ms ease; + + &:hover { + opacity: 1; + transform: scale(1.1, 1.1); + } } } - .edit { - right: 32px; - - .icon; - } - - .delete { - right: 8px; - - .icon; - } - .central { height: 100%; display: flex; diff --git a/webapp/app/containers/Portal/components/PortalList.tsx b/webapp/app/containers/Portal/components/PortalList.tsx index 887fd0b21..71dc9b3f0 100644 --- a/webapp/app/containers/Portal/components/PortalList.tsx +++ b/webapp/app/containers/Portal/components/PortalList.tsx @@ -166,18 +166,20 @@ export class PortalList extends React.Component - - - - - - +
+ + - + + + + + +
) diff --git a/webapp/app/containers/Projects/Project.less b/webapp/app/containers/Projects/Project.less index 76d848c55..7b064d9bd 100644 --- a/webapp/app/containers/Projects/Project.less +++ b/webapp/app/containers/Projects/Project.less @@ -169,31 +169,33 @@ .ellipsis; } - .icon { + .mimeActions, .joinActions, .collectActions { position: absolute; + right: 8px; + } + .mimeActions { top: 8px; - font-size: 1.25em; + } + .joinActions, .collectActions { + top: 2px; + } + + .icon { + margin-left: 8px; opacity: .7; color: @white; transition: transform 200ms ease; - &:hover { opacity: 1; transform: scale(1.1, 1.1); } } - .transfer { - right: 56px; - .icon; - } - .edit { - right: 32px; - + .transfer, .edit, .delete { + font-size: 1.25em; .icon; } - - .delete { - right: 8px; + .collect, .unCollect { + font-size: 17px; .icon; } .createNewWrapper { diff --git a/webapp/app/containers/Projects/actions.ts b/webapp/app/containers/Projects/actions.ts index 9bbe955ca..f555c3f2b 100644 --- a/webapp/app/containers/Projects/actions.ts +++ b/webapp/app/containers/Projects/actions.ts @@ -46,7 +46,13 @@ import { GET_PROJECT_STAR_USER_FAILURE, PROJECT_UNSTAR, PROJECT_UNSTAR_SUCCESS, - PROJECT_UNSTAR_FAILURE + PROJECT_UNSTAR_FAILURE, + LOAD_COLLECT_PROJECTS, + LOAD_COLLECT_PROJECTS_SUCCESS, + LOAD_COLLECT_PROJECTS_FAILURE, + CLICK_COLLECT_PROJECT, + CLICK_COLLECT_PROJECT_SUCCESS, + CLICK_COLLECT_PROJECT_FAILURE } from './constants' export function loadProjectDetail (id) { @@ -161,11 +167,12 @@ export function transferProjectFail () { } } -export function deleteProject (id) { +export function deleteProject (id, resolve) { return { type: DELETE_PROJECT, payload: { - id + id, + resolve } } } @@ -274,6 +281,53 @@ export function unStarProjectFail () { } } +export function loadCollectProjects () { + return { + type: LOAD_COLLECT_PROJECTS + } +} + +export function collectProjectLoaded (result) { + return { + type: LOAD_COLLECT_PROJECTS_SUCCESS, + payload: { + result + } + } +} + +export function collectProjectFail () { + return { + type: LOAD_COLLECT_PROJECTS_FAILURE + } +} + +export function clickCollectProjects (formType, project, resolve) { + return { + type: CLICK_COLLECT_PROJECT, + payload: { + formType, + project, + resolve + } + } +} + +export function collectProjectClicked (result) { + return { + type: CLICK_COLLECT_PROJECT_SUCCESS, + payload: { + result + } + } +} + +export function clickCollectProjectFail () { + return { + type: CLICK_COLLECT_PROJECT_FAILURE + } +} + diff --git a/webapp/app/containers/Projects/constants.ts b/webapp/app/containers/Projects/constants.ts index 09f673eab..8258abb73 100644 --- a/webapp/app/containers/Projects/constants.ts +++ b/webapp/app/containers/Projects/constants.ts @@ -49,4 +49,12 @@ export const PROJECT_UNSTAR = 'davinci/Project/PROJECT_UNSTAR' export const PROJECT_UNSTAR_SUCCESS = 'davinci/Project/PROJECT_UNSTAR_SUCCESS' export const PROJECT_UNSTAR_FAILURE = 'davinci/Project/PROJECT_UNSTAR_FAILURE' +export const LOAD_COLLECT_PROJECTS = 'davinci/Project/LOAD_COLLECT_PROJECTS' +export const LOAD_COLLECT_PROJECTS_SUCCESS = 'davinci/Project/LOAD_COLLECT_PROJECTS_SUCCESS' +export const LOAD_COLLECT_PROJECTS_FAILURE = 'davinci/Project/LOAD_COLLECT_PROJECTS_FAILURE' + +export const CLICK_COLLECT_PROJECT = 'davinci/Project/CLICK_COLLECT_PROJECT' +export const CLICK_COLLECT_PROJECT_SUCCESS = 'davinci/Project/CLICK_COLLECT_PROJECT_SUCCESS' +export const CLICK_COLLECT_PROJECT_FAILURE = 'davinci/Project/CLICK_COLLECT_PROJECT_FAILURE' + diff --git a/webapp/app/containers/Projects/historyStack.ts b/webapp/app/containers/Projects/historyStack.ts index 2a6f6cbf9..7215d5bfe 100644 --- a/webapp/app/containers/Projects/historyStack.ts +++ b/webapp/app/containers/Projects/historyStack.ts @@ -9,9 +9,9 @@ class HistoryStack { constructor () { this.item = [] this.wrap = {} - this.init() + this.init([]) } - public init () { + public init (projects) { const store = localStorage.getItem('historyBrowser') const user = this.getUser() if (store && store.length) { @@ -33,6 +33,16 @@ class HistoryStack { this.wrap[user] = this.item } } + + const historyArr = [] + this.wrap[user].forEach((historyItem) => { + projects.forEach((projectItem) => { + if (historyItem.id === projectItem.id) { + historyArr.push(projectItem) + } + }) + }) + this.wrap[user] = historyArr } public pushNode (d?: IHistory) { const user = this.getUser() @@ -43,11 +53,7 @@ class HistoryStack { if (user && user.length) { if (result && result[user]) { const userArr = result[user] - if (userArr && Array.isArray(userArr)) { - this.item = userArr - } else { - this.item = [] - } + this.item = (userArr && Array.isArray(userArr)) ? userArr : [] this.wrap[user] = this.item } else { this.item = [] @@ -105,6 +111,14 @@ class HistoryStack { public getAll () { const user = this.getUser() if (user) { + const items = this.wrap[user] + if (items && items.length) { + this.item = items + this.wrap[user] = this.item + } else { + this.item = [] + this.wrap[user] = this.item + } return this.wrap[user] } } diff --git a/webapp/app/containers/Projects/index.tsx b/webapp/app/containers/Projects/index.tsx index 0f13a96ae..cec8a7c20 100644 --- a/webapp/app/containers/Projects/index.tsx +++ b/webapp/app/containers/Projects/index.tsx @@ -14,10 +14,11 @@ const styles = require('./Project.less') import * as classnames from 'classnames' import {InjectedRouter} from 'react-router/lib/Router' import {WrappedFormUtils} from 'antd/lib/form/Form' -import {addProject, deleteProject, editProject, loadProjects, loadProjectDetail, transferProject, searchProject, unStarProject, getProjectStarUser} from './actions' +import {addProject, deleteProject, editProject, loadProjects, loadProjectDetail, + transferProject, searchProject, unStarProject, getProjectStarUser, loadCollectProjects, clickCollectProjects} from './actions' import {compose} from 'redux' import {makeSelectLoginUser} from '../App/selectors' -import {makeSelectProjects, makeSelectSearchProject, makeSelectStarUserList} from './selectors' +import {makeSelectProjects, makeSelectSearchProject, makeSelectStarUserList, makeSelectCollectProjects} from './selectors' import injectReducer from '../../utils/injectReducer' import {createStructuredSelector} from 'reselect' import injectSaga from '../../utils/injectSaga' @@ -37,11 +38,13 @@ import Box from '../../components/Box' import Star from '../../components/StarPanel/Star' const utilStyles = require('../../assets/less/util.less') import HistoryStack from './historyStack' +import { DEFAULT_ECHARTS_THEME } from '../../globalConstants' const historyStack = new HistoryStack() interface IProjectsProps { router: InjectedRouter projects: IProject[] + collectProjects: IProject[] loginUser: any searchProject?: {list: any[], total: number, pageNum: number, pageSize: number} organizations: any @@ -51,7 +54,9 @@ interface IProjectsProps { onLoadProjects: () => any onAddProject: (project: any, resolve: () => any) => any onLoadOrganizations: () => any - onDeleteProject: (id: number) => any + onLoadCollectProjects: () => any + onClickCollectProjects: (formType: string, project: object, resolve: (id: number) => any) => any + onDeleteProject: (id: number, resolve?: any) => any onLoadProjectDetail: (id: number) => any onStarProject: (id: number, resolve: () => any) => any, onGetProjectStarUser: (id: number) => any, @@ -70,11 +75,13 @@ interface IProjectsState { modalLoading: boolean mimePanel: boolean joinPanel: boolean + collectPanel: boolean searchMaskVisible: boolean searchKeywordsVisible: boolean keywords: string currentPage: number pageSize: number + isDisableCollect: boolean } export interface IProject { createBy?: { avatar?: string, id?: number, username?: string} @@ -108,11 +115,13 @@ export class Projects extends React.PureComponent (e) => { + const { projects, collectProjects, onClickCollectProjects } = this.props + this.stopPPG(e) + this.setState({ + formType + }, () => { + onClickCollectProjects(formType, project, () => { + this.setState({ + isDisableCollect: this.state.formType === 'collect' ? true : false + }) + }) + }) + } + public componentWillMount () { this.props.onLoadProjects() this.props.onLoadOrganizations() - historyStack.init() + this.props.onLoadCollectProjects() + // historyStack.init() } - // public componentWillReceiveProps (nextProps) { - // if (nextProps.loginUser !== this.props.loginUser) { - // historyBrowser.init() - // } - // } + public componentWillReceiveProps (nextProps) { + // if (nextProps.loginUser !== this.props.loginUser) { + // historyBrowser.init() + // } + const { projects, collectProjects } = nextProps + if (projects) { + historyStack.init(projects) + } + } private enterSearch: (e: KeyboardEvent) => any = null @@ -221,6 +250,10 @@ export class Projects extends React.PureComponent () => { + if (type === 'collect') { + this.props.onDeleteProject(id) + } else { + this.props.onDeleteProject(id, () => { + this.setState({ + }) + }) + } + } + public render () { const { formType, formVisible, modalLoading } = this.state - const { onDeleteProject, organizations, projects, searchProject, loginUser, starUserList } = this.props + const {onDeleteProject, organizations, projects, searchProject, loginUser, starUserList, collectProjects } = this.props const projectArr = Array.isArray(projects) ? [...projects, ...[{ id: 'add', type: 'add' @@ -437,7 +482,7 @@ export class Projects extends React.PureComponent @@ -463,7 +508,7 @@ export class Projects extends React.PureComponent
@@ -476,9 +521,11 @@ export class Projects extends React.PureComponent
{star} - {transfer} - {editButton} - {deleteButton} +
+ {transfer} + {editButton} + {deleteButton} +
) @@ -494,6 +541,7 @@ export class Projects extends React.PureComponent org.id === d.orgId) CreateButton = ComponentPermission(belongWhichOrganization, '')(Icon) @@ -504,6 +552,8 @@ export class Projects extends React.PureComponent ) + let currentCollectIds = [] + if (collectProjects) { + currentCollectIds = collectProjects.map((cp) => cp.id) + } + + collectButton = ( + + + + ) + + unCollectButton = ( + + + + ) + transfer = ( - + ) editButton = ( - + ) deleteButton = ( - + ) @@ -555,7 +640,7 @@ export class Projects extends React.PureComponent
@@ -568,27 +653,100 @@ export class Projects extends React.PureComponent
{star} - {transfer} - {editButton} - {deleteButton} +
+ {currentCollectIds.indexOf(d.id) < 0 ? collectButton : unCollectButton} + {transfer} + {editButton} + {deleteButton} +
) return colItems }) : '' - const historyBrowserAll = historyStack.getAll() - const historyArr = [] - historyBrowserAll.forEach((historyItem) => { - projectArr.forEach((projectItem) => { - if (historyItem.id === projectItem.id) { - historyArr.push(projectItem) - } + + const collectProjectsArr = collectProjects + ? collectProjects.map((d: IProject) => { + let CreateButton = void 0 + let belongWhichOrganization = void 0 + if (d.type && d.type === 'add') { + return [] + } + if (loginUser && d.createBy && loginUser.id === d.createBy.id) { + return [] + } + if (organizations) { + belongWhichOrganization = organizations.find((org) => org.id === d.orgId) + CreateButton = ComponentPermission(belongWhichOrganization, '')(Icon) + } + let StarPanel = void 0 + if (d && d.id) { + StarPanel = + } + let collectButton = void 0 + let star = void 0 + let ProjectName + const org = organizations.find((org, index) => d.orgId === org.id) + if (d && organizations) { + ProjectName = `${d.name} (${org && org.name ? org.name : ''})` + } + star = ( + +
+ {StarPanel} +
+
+ ) + + collectButton = ( + + + + ) + + const itemClass = classnames({ + [styles.unit]: true }) - }) + const colItems = ( + +
+
+

+ {ProjectName} + {/*{editHint}*/} +

+

+ {d.description} +

+
+ {star} +
+ {collectButton} +
+
+ + ) + return colItems + }) : '' - const history = historyArr - ? historyArr.map((d: IProject) => { - const path = require(`../../assets/images/bg${d.pic || 9}.png`) + const historyBrowserAll = historyStack.getAll() + const history = historyBrowserAll + ? historyBrowserAll.map((d: IProject) => { + const path = require(`../../assets/images/bg${d.pic}.png`) const colItems = (
@@ -606,7 +764,7 @@ export class Projects extends React.PureComponent { - const path = require(`../../assets/images/bg${d.pic || 9}.png`) + const path = require(`../../assets/images/bg${d.pic}.png`) let StarPanel = void 0 if (d && d.id) { StarPanel = @@ -682,6 +840,11 @@ export class Projects extends React.PureComponent
+
+ + + + + + 我收藏的项目 + + + + +
+ + {collectProjectsArr} + +
+
+
@@ -842,7 +1023,8 @@ const mapStateToProps = createStructuredSelector({ projects: makeSelectProjects(), loginUser: makeSelectLoginUser(), searchProject: makeSelectSearchProject(), - starUserList: makeSelectStarUserList() + starUserList: makeSelectStarUserList(), + collectProjects: makeSelectCollectProjects() }) export function mapDispatchToProps (dispatch) { @@ -852,10 +1034,12 @@ export function mapDispatchToProps (dispatch) { onGetProjectStarUser: (id) => dispatch(getProjectStarUser(id)), onLoadProjectDetail: (id) => dispatch(loadProjectDetail(id)), onLoadOrganizations: () => dispatch(loadOrganizations()), + onLoadCollectProjects: () => dispatch(loadCollectProjects()), + onClickCollectProjects: (formType, project, result) => dispatch(clickCollectProjects(formType, project, result)), onAddProject: (project, resolve) => dispatch(addProject(project, resolve)), onEditProject: (project, resolve) => dispatch(editProject(project, resolve)), onTransferProject: (id, orgId) => dispatch(transferProject(id, orgId)), - onDeleteProject: (id) => () => dispatch(deleteProject(id)), + onDeleteProject: (id, resolve) => dispatch(deleteProject(id, resolve)), onSearchProject: (param) => dispatch(searchProject(param)), onCheckUniqueName: (pathname, data, resolve, reject) => dispatch(checkNameUniqueAction(pathname, data, resolve, reject)) } diff --git a/webapp/app/containers/Projects/reducer.ts b/webapp/app/containers/Projects/reducer.ts index cd1caae34..d7fd4e313 100644 --- a/webapp/app/containers/Projects/reducer.ts +++ b/webapp/app/containers/Projects/reducer.ts @@ -31,7 +31,13 @@ import { LOAD_PROJECT_DETAIL_SUCCESS, KILL_PROJECT_DETAIL, SEARCH_PROJECT_SUCCESS, - GET_PROJECT_STAR_USER_SUCCESS + GET_PROJECT_STAR_USER_SUCCESS, + LOAD_COLLECT_PROJECTS, + LOAD_COLLECT_PROJECTS_SUCCESS, + LOAD_COLLECT_PROJECTS_FAILURE, + CLICK_COLLECT_PROJECT, + CLICK_COLLECT_PROJECT_SUCCESS, + CLICK_COLLECT_PROJECT_FAILURE } from './constants' @@ -40,12 +46,14 @@ const initialState = fromJS({ currentProject: null, currentProjectLoading: false, searchProject: false, - starUserList: false + starUserList: false, + collectProjects: null }) function projectReducer (state = initialState, action) { const { type, payload } = action const projects = state.get('projects') + const collectProjects = state.get('collectProjects') switch (type) { case LOAD_PROJECTS_SUCCESS: @@ -70,6 +78,7 @@ function projectReducer (state = initialState, action) { case DELETE_PROJECT_SUCCESS: if (projects) { return state.set('projects', projects.filter((d) => d.id !== payload.id)) + .set('collectProjects', collectProjects.filter((d) => d.id !== payload.id)) } return state case LOAD_PROJECT_DETAIL: @@ -89,6 +98,19 @@ function projectReducer (state = initialState, action) { case GET_PROJECT_STAR_USER_SUCCESS: return state .set('starUserList', payload.result) + case LOAD_COLLECT_PROJECTS: + return state + case LOAD_COLLECT_PROJECTS_SUCCESS: + return state.set('collectProjects', payload.result) + case LOAD_COLLECT_PROJECTS_FAILURE: + return state + case CLICK_COLLECT_PROJECT_SUCCESS: + if (payload.result.formType === 'unCollect') { + return state.set('collectProjects', collectProjects.filter((p) => p.id !== payload.result.project.id)) + } else { + collectProjects.push(payload.result.project) + return state.set('collectProjects', collectProjects.slice()) + } default: return state } diff --git a/webapp/app/containers/Projects/sagas.ts b/webapp/app/containers/Projects/sagas.ts index 6a5f7dec2..fc5324961 100644 --- a/webapp/app/containers/Projects/sagas.ts +++ b/webapp/app/containers/Projects/sagas.ts @@ -29,7 +29,9 @@ import { TRANSFER_PROJECT, SEARCH_PROJECT, GET_PROJECT_STAR_USER, - PROJECT_UNSTAR + PROJECT_UNSTAR, + LOAD_COLLECT_PROJECTS, + CLICK_COLLECT_PROJECT } from './constants' import { @@ -49,13 +51,19 @@ import { unStarProjectSuccess, unStarProjectFail, getProjectStarUserSuccess, - getProjectStarUserFail + getProjectStarUserFail, + collectProjectLoaded, + collectProjectFail, + collectProjectClicked, + clickCollectProjectFail } from './actions' import request from '../../utils/request' import api from '../../utils/api' import { errorHandler } from '../../utils/util' import { writeAdapter, readObjectAdapter, readListAdapter } from '../../utils/asyncAdapter' +import configureStore from '../../store' +import { resolve } from 'url' export function* getProjects (action) { const { payload } = action @@ -105,13 +113,16 @@ export function* editProject (action) { } export function* deleteProject (action) { - const { id } = action.payload + const { id, resolve } = action.payload try { yield call(request, { method: 'delete', url: `${api.projects}/${id}` }) yield put(projectDeleted(id)) + if (resolve) { + resolve() + } } catch (err) { yield put(deleteProjectFail()) errorHandler(err) @@ -190,6 +201,44 @@ export function* getProjectStarUser ({payload}) { } } +export function* getCollectProjects (action) { + try { + const asyncData = yield call(request, { + method: 'get', + url: `${api.projects}/favorites` + }) + const result = readListAdapter(asyncData) + yield put(collectProjectLoaded(result)) + } catch (err) { + yield put(collectProjectFail()) + errorHandler(err) + } +} + +export function* editCollectProject ({payload}) { + const {formType, project, resolve} = payload + try { + if (formType === 'collect') { + yield call(request, { + method: 'post', + url: `${api.projects}/favorite/${project.id}`, + data: {id: project.id} + }) + } else { + yield call(request, { + method: 'delete', + url: `${api.projects}/remove/favorites`, + data: [project.id] + }) + } + yield put(collectProjectClicked(payload)) + yield resolve() + } catch (err) { + yield put(clickCollectProjectFail()) + errorHandler(err) + } +} + export default function* rootProjectSaga (): IterableIterator { yield [ takeLatest(LOAD_PROJECTS, getProjects as any), @@ -200,6 +249,8 @@ export default function* rootProjectSaga (): IterableIterator { takeEvery(TRANSFER_PROJECT, transferProject as any), takeEvery(PROJECT_UNSTAR, unStarProject as any), takeEvery(GET_PROJECT_STAR_USER, getProjectStarUser as any), - throttle(1000, SEARCH_PROJECT, searchProject as any) + throttle(1000, SEARCH_PROJECT, searchProject as any), + takeLatest(LOAD_COLLECT_PROJECTS, getCollectProjects as any), + takeEvery(CLICK_COLLECT_PROJECT, editCollectProject as any) ] } diff --git a/webapp/app/containers/Projects/selectors.ts b/webapp/app/containers/Projects/selectors.ts index 8a004c7ef..c36d92b50 100644 --- a/webapp/app/containers/Projects/selectors.ts +++ b/webapp/app/containers/Projects/selectors.ts @@ -42,11 +42,16 @@ const makeSelectStarUserList = () => createSelector( (projectState) => projectState.get('starUserList') ) +const makeSelectCollectProjects = () => createSelector( + selectProject, + (projectState) => projectState.get('collectProjects') +) export { selectProject, makeSelectProjects, makeSelectSearchProject, makeSelectCurrentProject, - makeSelectStarUserList + makeSelectStarUserList, + makeSelectCollectProjects } From d7f938a0f64a3dc90ae49f0ebd7c7f10d502a44d Mon Sep 17 00:00:00 2001 From: Fuying <1165234947@qq.com> Date: Fri, 28 Sep 2018 20:05:01 +0800 Subject: [PATCH 10/45] =?UTF-8?q?=E6=94=AF=E6=8C=81Maintainer=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E8=83=BD=E5=9C=A8=E5=BD=93=E5=89=8D=E5=9B=A2=E9=98=9F?= =?UTF-8?q?=E4=B8=8B=E6=96=B0=E5=BB=BA=E5=9B=A2=E9=98=9F=EF=BC=9Bfix=20bug?= =?UTF-8?q?=EF=BC=9B=E4=BC=98=E5=8C=96=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webapp/app/components/Avatar/Avatar.less | 16 +- webapp/app/components/Avatar/index.tsx | 4 +- .../Organizations/Organization.less | 4 +- .../containers/Organizations/Organization.tsx | 1 + .../component/ChangeRoleForm.tsx | 8 +- .../component/OrganizationForm.tsx | 2 +- .../Organizations/component/TeamForm.tsx | 9 +- .../Organizations/component/TeamList.tsx | 31 ++-- .../app/containers/Organizations/reducer.ts | 21 ++- .../app/containers/Organizations/selectors.ts | 8 +- .../app/containers/Projects/ProjectForm.tsx | 2 +- webapp/app/containers/Teams/Team.less | 2 +- webapp/app/containers/Teams/Team.tsx | 18 ++- .../containers/Teams/component/MemberList.tsx | 22 ++- .../containers/Teams/component/TeamList.tsx | 147 ++++++++++++++++-- 15 files changed, 234 insertions(+), 61 deletions(-) diff --git a/webapp/app/components/Avatar/Avatar.less b/webapp/app/components/Avatar/Avatar.less index 1d8e8bfd3..a046a25b1 100644 --- a/webapp/app/components/Avatar/Avatar.less +++ b/webapp/app/components/Avatar/Avatar.less @@ -34,8 +34,8 @@ border-radius: 8px; } .small { - width: 40px; - height:40px; + // width: 40px; + // height:40px; border-radius: 6px; } .sourceSrc { @@ -46,3 +46,15 @@ .isEnlarge { cursor: pointer; } +.imgWrapper { + width: 40px; + height: 40px; + display: flex; + align-items: center; + flex-direction: column; + justify-content: center; + img { + max-width: 100%; + max-height: 100%; + } +} diff --git a/webapp/app/components/Avatar/index.tsx b/webapp/app/components/Avatar/index.tsx index 82d97ac3a..78505e485 100644 --- a/webapp/app/components/Avatar/index.tsx +++ b/webapp/app/components/Avatar/index.tsx @@ -54,7 +54,9 @@ export class Avatar extends React.PureComponent { return (
- {isEnlarge} +
+ {isEnlarge} +
团队{teamNum}} key="teams"> {
Owner
-
可以添加和删除团队成员并创建子团队
+
组织的管理者,可以添加和删除组织成员并创建团队
Member
-
没有团队的管理权限
+
组织内的普通成员,进入团队后,由团队的 Maintainer 分配项目模块权限
@@ -56,14 +56,14 @@ export class ChangeRoleForm extends React.PureComponent {
Maintainer
-
拥有对整个组织的完全管理访问权限
+
团队的管理者,可以指定该团队在项目中的模块权限
Member
-
可以看到组织中的每个成员和非秘密团队,并可以创建新的项目
+
组织内的普通成员,进入团队后,由团队的 Maintainer 分配项目模块权限
diff --git a/webapp/app/containers/Organizations/component/OrganizationForm.tsx b/webapp/app/containers/Organizations/component/OrganizationForm.tsx index 84fe7bf8e..8c0ef19a1 100644 --- a/webapp/app/containers/Organizations/component/OrganizationForm.tsx +++ b/webapp/app/containers/Organizations/component/OrganizationForm.tsx @@ -64,7 +64,7 @@ export class OrganizationForm extends React.PureComponent
- 在组织下可以创建若干团队 + {/* 用户创建组织,邀请成员加入,创建团队 */}
diff --git a/webapp/app/containers/Organizations/component/TeamForm.tsx b/webapp/app/containers/Organizations/component/TeamForm.tsx index 4fdb439c7..ddd28eec7 100644 --- a/webapp/app/containers/Organizations/component/TeamForm.tsx +++ b/webapp/app/containers/Organizations/component/TeamForm.tsx @@ -38,6 +38,7 @@ import {ITeam} from './TeamList' interface IProjectsFormProps { + listType: string type: string form: any orgId: number @@ -62,8 +63,9 @@ export class ProjectsForm extends React.PureComponent { } } public render () { - const { onOrganizationTypeChange, modalLoading, teams } = this.props + const { onOrganizationTypeChange, modalLoading, teams, listType } = this.props const { getFieldDecorator } = this.props.form + const filterTeams = this.filterTeamsByOrg(teams) const teamsOptions = filterTeams ? filterTeams.map((o) => ( )) : '' + const commonFormItemStyle = { labelCol: { span: 3 }, wrapperCol: { span: 24 } } + const modalButtons = [(
- 团队隶属于组织,在团队中可以制定项目的权限。 + 团队隶属于组织,可以在团队中指定项目的模块权限
@@ -139,6 +143,7 @@ export class ProjectsForm extends React.PureComponent { diff --git a/webapp/app/containers/Organizations/component/TeamList.tsx b/webapp/app/containers/Organizations/component/TeamList.tsx index 11e25ac02..7a8528151 100644 --- a/webapp/app/containers/Organizations/component/TeamList.tsx +++ b/webapp/app/containers/Organizations/component/TeamList.tsx @@ -28,10 +28,10 @@ import Avatar from '../../../components/Avatar' // import sagaApp from '../../App/sagas' // import reducerApp from '../../App/reducer' import ComponentPermission from '../../Account/components/checkMemberPermission' +import { makeSelectTeamModalLoading } from '../selectors' interface ITeamsState { formVisible: boolean - modalLoading: boolean } interface ITeamsProps { @@ -44,7 +44,9 @@ interface ITeamsProps { // organizationTeams: Organization.IOrganizationTeams organizationTeams: any organizations: any + teamModalLoading?: boolean loadOrganizationTeams: (id: number) => any + onLoadOrganizationDetail?: (id: number) => any onCheckUniqueName?: (pathname: any, data: any, resolve: () => any, reject: (error: string) => any) => any } @@ -64,8 +66,7 @@ export class TeamList extends React.PureComponent { constructor (props) { super(props) this.state = { - formVisible: false, - modalLoading: false + formVisible: false } } public componentWillMount () { @@ -99,7 +100,6 @@ export class TeamList extends React.PureComponent { const {currentOrganization} = this.props this.TeamForm.validateFieldsAndScroll((err, values) => { if (!err) { - this.setState({modalLoading: true}) this.props.onAddTeam({ ...values, ...{ @@ -112,6 +112,7 @@ export class TeamList extends React.PureComponent { const { id } = currentOrganization if (this.props.loadOrganizationTeams) { this.props.loadOrganizationTeams(Number(id)) + this.props.onLoadOrganizationDetail(Number(id)) this.props.onLoadTeams() } this.hideTeamForm() @@ -121,8 +122,7 @@ export class TeamList extends React.PureComponent { } private hideTeamForm = () => { this.setState({ - formVisible: false, - modalLoading: false + formVisible: false }, () => { this.TeamForm.resetFields() }) @@ -140,8 +140,10 @@ export class TeamList extends React.PureComponent { } private isEmptyObj = (obj) => { - for (let attr in obj) { - return false + for (const attr in obj) { + if (obj.hasOwnProperty(attr)) { + return false + } } return true } @@ -165,8 +167,8 @@ export class TeamList extends React.PureComponent { } public render () { - const {formVisible, modalLoading} = this.state - const {organizationTeams, currentOrganization, currentOrganization: {id}} = this.props + const { formVisible } = this.state + const {organizationTeams, currentOrganization, currentOrganization: {id}, teamModalLoading} = this.props this.filter(organizationTeams) let CreateButton = void 0 if (currentOrganization) { @@ -196,8 +198,8 @@ export class TeamList extends React.PureComponent { render: (users) => { return (
- {users.map((user, index) => )} + {users.map((user, index) => + )} {`${ users ? users.length : 0 }members`}
) @@ -244,7 +246,7 @@ export class TeamList extends React.PureComponent { orgId={id} teams={this.props.teams} onModalOk={this.onModalOk} - modalLoading={modalLoading} + modalLoading={teamModalLoading} onOrganizationTypeChange={this.organizationTypeChange} onCheckUniqueName={this.checkNameUnique} ref={(f) => { @@ -260,7 +262,8 @@ export class TeamList extends React.PureComponent { const mapStateToProps = createStructuredSelector({ teams: makeSelectTeams(), - loginUser: makeSelectLoginUser() + loginUser: makeSelectLoginUser(), + teamModalLoading: makeSelectTeamModalLoading() }) export function mapDispatchToProps (dispatch) { diff --git a/webapp/app/containers/Organizations/reducer.ts b/webapp/app/containers/Organizations/reducer.ts index 61af281c7..cf960ddbf 100644 --- a/webapp/app/containers/Organizations/reducer.ts +++ b/webapp/app/containers/Organizations/reducer.ts @@ -29,12 +29,15 @@ import { DELETE_ORGANIZATION_SUCCESS, LOAD_ORGANIZATION_DETAIL, LOAD_ORGANIZATION_DETAIL_SUCCESS, + LOAD_ORGANIZATION_DETAIL_FAILURE, LOAD_ORGANIZATIONS_TEAMS_SUCCESS, LOAD_ORGANIZATIONS_PROJECTS_SUCCESS, LOAD_ORGANIZATIONS_MEMBERS_SUCCESS, - ADD_TEAM_FAILURE, SEARCH_MEMBER_SUCCESS, - DELETE_ORGANIZATION_MEMBER_SUCCESS + DELETE_ORGANIZATION_MEMBER_SUCCESS, + ADD_TEAM, + ADD_TEAM_SUCCESS, + ADD_TEAM_FAILURE } from './constants' import {ADD_PROJECT_SUCCESS, DELETE_PROJECT_SUCCESS} from '../Projects/constants' @@ -47,7 +50,8 @@ const initialState = fromJS({ currentOrganizationProjectsDetail: false, currentOrganizationTeams: [], currentOrganizationMembers: [], - inviteMemberLists: [] + inviteMemberLists: [], + teamModalLoading: false }) function organizationReducer (state = initialState, action) { @@ -105,8 +109,7 @@ function organizationReducer (state = initialState, action) { return state.set('organizations', organizations.filter((d) => d.id !== payload.id)) case LOAD_ORGANIZATION_DETAIL: - return state - .set('currentOrganizationLoading', true) + return state.set('currentOrganizationLoading', true) case LOAD_ORGANIZATION_DETAIL_SUCCESS: return state @@ -120,8 +123,14 @@ function organizationReducer (state = initialState, action) { // } else { // return state.set('currentOrganizationTeams', [payload.result]) // } - case ADD_TEAM_FAILURE: + case LOAD_ORGANIZATION_DETAIL_FAILURE: return state + case ADD_TEAM: + return state.set('teamModalLoading', true) + case ADD_TEAM_SUCCESS: + return state.set('teamModalLoading', false) + case ADD_TEAM_FAILURE: + return state.set('teamModalLoading', false) case SEARCH_MEMBER_SUCCESS: return state.set('inviteMemberLists', payload.result) default: diff --git a/webapp/app/containers/Organizations/selectors.ts b/webapp/app/containers/Organizations/selectors.ts index 8f076b550..3b35713c2 100644 --- a/webapp/app/containers/Organizations/selectors.ts +++ b/webapp/app/containers/Organizations/selectors.ts @@ -57,6 +57,11 @@ const makeSelectCurrentOrganizationMembers = () => createSelector( (organizationState) => organizationState.get('currentOrganizationMembers') ) +const makeSelectTeamModalLoading = () => createSelector( + selectOrganization, + (organizationState) => organizationState.get('teamModalLoading') +) + export { selectOrganization, makeSelectOrganizations, @@ -65,5 +70,6 @@ export { makeSelectCurrentOrganizationProjectsDetail, makeSelectCurrentOrganizationTeams, makeSelectCurrentOrganizationMembers, - makeSelectInviteMemberList + makeSelectInviteMemberList, + makeSelectTeamModalLoading } diff --git a/webapp/app/containers/Projects/ProjectForm.tsx b/webapp/app/containers/Projects/ProjectForm.tsx index cf7c3da93..6bd867b26 100644 --- a/webapp/app/containers/Projects/ProjectForm.tsx +++ b/webapp/app/containers/Projects/ProjectForm.tsx @@ -124,7 +124,7 @@ export class ProjectsForm extends React.PureComponent { {modalTitle}项目
- 项目属于组织,在项目中可以通过配置source,生成可视化图表 + 项目属于组织,可以在项目中连接数据源,生成可视化图表
diff --git a/webapp/app/containers/Teams/Team.less b/webapp/app/containers/Teams/Team.less index 5eececd56..4481dd24d 100644 --- a/webapp/app/containers/Teams/Team.less +++ b/webapp/app/containers/Teams/Team.less @@ -211,7 +211,7 @@ margin-left: 8px; font-size: 14px; font-weight: 600; - color: @blue; + // color: @blue; line-height: 40px; } .dangerZone{ diff --git a/webapp/app/containers/Teams/Team.tsx b/webapp/app/containers/Teams/Team.tsx index 0de1bf8e7..5100ba2a5 100644 --- a/webapp/app/containers/Teams/Team.tsx +++ b/webapp/app/containers/Teams/Team.tsx @@ -111,9 +111,9 @@ export class Teams extends React.Component { super(props) this.teamTeams = [] } - private tabChange = () => { + // private tabChange = () => { - } + // } public componentWillMount () { const { onLoadTeams } = this.props @@ -143,11 +143,12 @@ export class Teams extends React.Component { } public componentWillReceiveProps (nextProps) { - const { params: {teamId}, currentTeamTeams } = this.props - const { params: {teamId: nextTeamId }} = nextProps + const { params: {teamId} } = this.props + const { params: {teamId: nextTeamId }, currentTeamTeams, currentTeamMembers} = nextProps if (teamId !== nextTeamId) { this.loadDatas(nextTeamId) } + this.teamTeams = [] this.computeTeamNum(currentTeamTeams, this.teamTeams) this.teamTeams.filter((team, index) => this.teamTeams.indexOf(team) === index) @@ -232,6 +233,7 @@ export class Teams extends React.Component { const memberNum = currentTeamMembers.length const teamNum = this.teamTeams.length const teamRouterSource = this.createTeamRouter(teamRouter) + return ( @@ -259,7 +261,9 @@ export class Teams extends React.Component {
{name}
- + 项目{projectNum}} key="projects"> { currentTeam={currentTeam} deleteTeamMember={this.props.onDeleteTeamMember} pullMemberInTeam={this.props.onPullMemberInTeam} + onLoadTeamMembers={this.props.onLoadTeamMembers} changeTeamMemberRole={this.props.onChangeTeamMemberRole} currentTeamMembers={currentTeamMembers} currentOrganizationMembers={currentOrganizationMembers} @@ -295,8 +300,7 @@ export class Teams extends React.Component { editTeam={this.editTeam} deleteTeam={this.deleteTeam} /> - : '' - } +
: ''} diff --git a/webapp/app/containers/Teams/component/MemberList.tsx b/webapp/app/containers/Teams/component/MemberList.tsx index 5177228b7..4be914cec 100644 --- a/webapp/app/containers/Teams/component/MemberList.tsx +++ b/webapp/app/containers/Teams/component/MemberList.tsx @@ -33,6 +33,7 @@ interface IMemberListState { interface IMemberListProps { currentTeam: Team.ITeam deleteTeamMember: (id: number) => any + onLoadTeamMembers: (id: number) => any pullMemberInTeam: (teamId: number, memberId: number, resolve: () => any) => any changeTeamMemberRole: (id: number, role: string) => any currentTeamMembers: Team.ITeamMembers[] @@ -104,6 +105,7 @@ export class MemberList extends React.PureComponent { + this.props.onLoadTeamMembers(teamId) this.hideAddForm() }) } @@ -174,10 +176,12 @@ export class MemberList extends React.PureComponent
- - {text.username} -
+ render: (text) => ( +
+ + {text.username} +
+ ) }, { title: 'role', @@ -210,10 +214,12 @@ export class MemberList extends React.PureComponent
- - {text.username} -
+ render: (text) => ( +
+ + {text.username} +
+ ) }, { title: 'role', diff --git a/webapp/app/containers/Teams/component/TeamList.tsx b/webapp/app/containers/Teams/component/TeamList.tsx index 3fa8f5b69..5b97bad55 100644 --- a/webapp/app/containers/Teams/component/TeamList.tsx +++ b/webapp/app/containers/Teams/component/TeamList.tsx @@ -1,26 +1,41 @@ import * as React from 'react' +import {connect} from 'react-redux' +import {createStructuredSelector} from 'reselect' const Row = require('antd/lib/row') const Col = require('antd/lib/col') const Tooltip = require('antd/lib/tooltip') const Input = require('antd/lib/input') const Table = require('antd/lib/table') const Modal = require('antd/lib/modal') +const Button = require('antd/lib/button') const styles = require('../Team.less') import AddForm from './AddForm' +import TeamForm from '../../Organizations/component/TeamForm' import {WrappedFormUtils} from 'antd/lib/form/Form' import * as Team from '../Team' import Avatar from '../../../components/Avatar' +import ComponentPermission from '../../Account/components/checkMemberPermission' +import { checkNameUniqueAction } from '../../App/actions' +import { addTeam } from '../../Organizations/actions' +import { loadTeamTeams } from '../../Teams/actions' +import { makeSelectTeamModalLoading } from '../../Organizations/selectors' interface ITeamListState { - modalLoading: boolean, - formType: string, + modalLoading: boolean + formType: string formVisible: boolean + teamFormVisible: boolean + listType: string } interface ITeamListProps { + teamModalLoading?: boolean currentTeam: any toThatTeam: (url: string) => any currentTeamTeams: Team.ITeamTeams[] + onAddTeam?: (team: object, resolve: () => any) => any + onLoadTeamTeams?: (id: number) => any + onCheckUniqueName?: (pathname: any, data: any, resolve: () => any, reject: (error: string) => any) => any } export class TeamList extends React.PureComponent { @@ -30,10 +45,13 @@ export class TeamList extends React.PureComponent (e) => { e.stopPropagation() @@ -55,8 +73,10 @@ export class TeamList extends React.PureComponent { - for (let attr in obj) { - return false + for (const attr in obj) { + if (obj.hasOwnProperty(attr)) { + return false + } } return true } @@ -78,10 +98,84 @@ export class TeamList extends React.PureComponent { + const {onCheckUniqueName, currentTeam} = this.props + const data = { + name: value, + orgId: currentTeam.organization.id, + id: null + } + onCheckUniqueName('team', data, + () => { + callback() + }, (err) => { + callback(err) + }) + } + + private showTeamForm = () => (e) => { + const { currentTeam } = this.props + e.stopPropagation() + this.setState({ + teamFormVisible: true, + listType: 'teamTeamList' + }, () => { + this.TeamForm.setFieldsValue({ + parentTeamId: currentTeam.name + }) + }) + } + + private onTeamFormModalOk = () => { + const { currentTeam } = this.props + this.TeamForm.validateFieldsAndScroll((err, values) => { + if (!err) { + const { name, description } = values + this.props.onAddTeam({ + parentTeamId: currentTeam.id, + name, + description, + ...{ visibility: !!values.visibility }, + orgId: currentTeam.organization.id, + pic: `${Math.ceil(Math.random() * 19)}`, + config: '{}' + }, () => { + this.props.onLoadTeamTeams(currentTeam.id) + this.hideTeamForm() + }) + } + }) + } + + private hideTeamForm = () => { + this.setState({ + teamFormVisible: false + }, () => { + this.TeamForm.resetFields() + }) + } + public render () { - const { formVisible } = this.state - const { currentTeamTeams } = this.props + const { formVisible, teamFormVisible, listType } = this.state + const { currentTeamTeams, currentTeam, teamModalLoading } = this.props this.filter(currentTeamTeams) + + let CreateButton = void 0 + if (currentTeam) { + CreateButton = ComponentPermission(currentTeam, '')(Button) + } + const addButton = ( + + + + ) + const columns = [{ title: 'Name', dataIndex: 'name', @@ -112,15 +206,18 @@ export class TeamList extends React.PureComponent - {/* - + + {/* + */} + + {addButton} - */} +
{ this.AddForm = f }} /> + + { + this.TeamForm = f + }} + /> + ) } } -export default TeamList +const mapStateToProps = createStructuredSelector({ + teamModalLoading: makeSelectTeamModalLoading() +}) + +export function mapDispatchToProps (dispatch) { + return { + onAddTeam: (team, resolve) => dispatch(addTeam(team, resolve)), + onLoadTeamTeams: (id) => dispatch(loadTeamTeams(id)), + onCheckUniqueName: (pathname, data, resolve, reject) => dispatch(checkNameUniqueAction(pathname, data, resolve, reject)) + } +} + +export default connect<{}, {}, ITeamListProps>(mapStateToProps, mapDispatchToProps)(TeamList) From ab0142c0417304d2f74e2f5b912acde1b5155a52 Mon Sep 17 00:00:00 2001 From: andyfong Date: Sat, 29 Sep 2018 11:48:49 +0800 Subject: [PATCH 11/45] feat(Display): add tooltip when layer dragging and resizing, WIP: dragging and resizing baselines --- webapp/app/containers/Display/Display.less | 18 ++ webapp/app/containers/Display/Editor.tsx | 172 +++++++++++++----- webapp/app/containers/Display/Preview.tsx | 10 +- webapp/app/containers/Display/actions.ts | 50 +++++ .../Display/components/LayerItem.tsx | 171 +++++++++-------- webapp/app/containers/Display/constants.ts | 10 +- webapp/app/containers/Display/reducer.ts | 123 +++++++++++-- webapp/app/containers/Display/selectors.ts | 14 +- 8 files changed, 416 insertions(+), 152 deletions(-) diff --git a/webapp/app/containers/Display/Display.less b/webapp/app/containers/Display/Display.less index 6d3cf8153..bcc1a1cb8 100644 --- a/webapp/app/containers/Display/Display.less +++ b/webapp/app/containers/Display/Display.less @@ -381,6 +381,24 @@ box-shadow: @block-active-box-shadow; transform-origin: 0 0; transition: transform ease-in 200ms; + + .verticalBaseline { + position: absolute; + top: 0; + bottom: 0; + width: 1px; + background-color: #ecc302; + z-index: 999999; + } + + .horizontalBaseline { + position: absolute; + left: 0; + right: 0; + height: 1px; + background-color: #ecc302; + z-index: 999999; + } } } diff --git a/webapp/app/containers/Display/Editor.tsx b/webapp/app/containers/Display/Editor.tsx index 3c88dc02b..29b9bf974 100644 --- a/webapp/app/containers/Display/Editor.tsx +++ b/webapp/app/containers/Display/Editor.tsx @@ -41,12 +41,14 @@ import { makeSelectDisplays, makeSelectCurrentLayers, makeSelectCurrentLayersInfo, + makeSelectCurrentLayersOperationInfo, makeSelectCurrentSelectedLayers, makeSelectClipboardLayers, makeSelectCanUndo, makeSelectCanRedo, makeSelectCurrentState, - makeSelectNextState } from './selectors' + makeSelectNextState, + makeSelectEditorBaselines } from './selectors' import slideSettings from '../../assets/json/slideSettings' import DisplayHeader from './components/DisplayHeader' @@ -72,6 +74,8 @@ import { clearLayersSelection, dragSelectedLayer, resizeLayers, + toggleLayersResizingStatus, + toggleLayersDraggingStatus, addDisplayLayers, deleteDisplayLayers, editDisplayLayers, @@ -111,7 +115,6 @@ interface IEditorProps extends RouteComponentProps<{}, IParams> { [key: string]: { datasource: any[] loading: boolean - selected: boolean queryParams: { filters: string linkageFilters: string @@ -125,12 +128,29 @@ interface IEditorProps extends RouteComponentProps<{}, IParams> { renderType: RenderType } }, + currentLayersOperationInfo: { + [key: string]: { + selected: boolean + resizing: boolean + dragging: boolean + } + } clipboardLayers: any[] currentSelectedLayers: any[] canUndo: boolean canRedo: boolean currentState nextState + editorBaselines: { + horizontal: { + visible: boolean, + position: [number, number, number] + }, + vertical: { + visible: boolean, + position: [number, number, number] + } + } onLoadWidgets: (projectId) => void onLoadBizlogics: (projectId, resolve?: any) => any onEditCurrentDisplay: (display: any, resolve?: any) => void @@ -141,6 +161,8 @@ interface IEditorProps extends RouteComponentProps<{}, IParams> { onClearLayersSelection: () => void onDragSelectedLayer: (id: number, deltaX: number, deltaY: number) => void onResizeLayers: (layerIds: number[]) => void + toggleLayersResizingStatus: (layerIds: number[], resizing: boolean) => void + toggleLayersDraggingStatus: (layerIds: number[], dragging: boolean) => void onAddDisplayLayers: (displayId: any, slideId: any, layers: any[]) => void onDeleteDisplayLayers: (displayId: any, slideId: any, ids: any[]) => void, onEditDisplayLayers: (displayId: any, slideId: any, layers: any[]) => void @@ -407,50 +429,70 @@ export class Editor extends React.Component { ) } + private updateCurrentLocalLayers = ( + itemId: number, + { deltaX, deltaY, deltaWidth, deltaHeight }: { deltaX: number, deltaY: number, deltaWidth: number, deltaHeight: number } + ) => { + const editLayers = [] + const { currentLayersOperationInfo } = this.props + const { currentLocalLayers } = this.state + const copyCurrentLocalLayers = fromJS(currentLocalLayers).toJS() + copyCurrentLocalLayers.forEach((localLayer) => { + if (localLayer.id === itemId || (currentLayersOperationInfo[itemId].selected && currentLayersOperationInfo[localLayer.id].selected)) { + const layerParams = JSON.parse(localLayer.params) + const { positionX, positionY, width, height } = layerParams + localLayer.params = JSON.stringify({ + ...layerParams, + positionX: Math.round(positionX + deltaX), + positionY: Math.round(positionY + deltaY), + width: Math.round(width + deltaWidth), + height: Math.round(height + deltaHeight) + }) + editLayers.push(localLayer) + } + }) + this.setState({ currentLocalLayers: copyCurrentLocalLayers }) + return editLayers + } + private dragLayer = (itemId, delta) => { - const { deltaX, deltaY } = delta - const { currentLayersInfo, onDragSelectedLayer } = this.props - if (currentLayersInfo[itemId].selected) { - onDragSelectedLayer(itemId, deltaX, deltaY) - } + const editLayers = this.updateCurrentLocalLayers(itemId, { + ...delta, + deltaWidth: 0, + deltaHeight: 0 + }) + this.props.toggleLayersDraggingStatus(editLayers.map((l) => l.id), true) } - private resizeLayer = (itemId, delta) => { - const { deltaWidth, deltaHeight } = delta - const { currentLayersInfo } = this.props - const { currentLocalLayers } = this.state - const copyCurrentLocalLayers = fromJS(currentLocalLayers).toJS() - copyCurrentLocalLayers.forEach((layer) => { - if (!currentLayersInfo[layer.id].selected || itemId === layer.id) { return } + private dragLayerStop = (itemId, delta) => { + const editLayers = this.updateCurrentLocalLayers(itemId, { + ...delta, + deltaWidth: 0, + deltaHeight: 0 + }) + this.props.toggleLayersDraggingStatus(editLayers.map((l) => l.id), false) + this.onEditLayers(editLayers) + } - const layerParams = JSON.parse(layer.params) - const { width, height } = layerParams - layer.params = JSON.stringify({ - ...layerParams, - width: width + deltaWidth, - height: height + deltaHeight - }) + private resizeLayer = (itemId, delta) => { + const editLayers = this.updateCurrentLocalLayers(itemId, { + ...delta, + deltaX: 0, + deltaY: 0 }) - this.setState({ currentLocalLayers: copyCurrentLocalLayers }) + this.props.toggleLayersResizingStatus(editLayers.map((l) => l.id), true) } - private resizeLayerStop = (layer: any, size: any, itemId: any) => { - const { currentLayersInfo, onResizeLayers } = this.props - const { currentLocalLayers } = this.state - const layerParams = { - ...JSON.parse(layer.params), - ...size - } - let attached = [] - if (currentLayersInfo[layer.id].selected) { - attached = currentLocalLayers.filter((l) => currentLayersInfo[l.id].selected && l.id !== layer.id) - } - const layers = [{ - ...layer, - params: JSON.stringify(layerParams) - }, ...attached] - this.onEditLayers(layers) - onResizeLayers(layers.map((layer) => layer.id)) + private resizeLayerStop = (itemId, delta) => { + const { onResizeLayers } = this.props + const editLayers = this.updateCurrentLocalLayers(itemId, { + ...delta, + deltaX: 0, + deltaY: 0 + }) + this.onEditLayers(editLayers) + onResizeLayers(editLayers.map((layer) => layer.id)) + this.props.toggleLayersResizingStatus(editLayers.map((l) => l.id), false) } private formItemChange = (field, val) => { @@ -511,8 +553,8 @@ export class Editor extends React.Component { } private deleteLayers = () => { - const { currentDisplay, currentSlide, currentLayersInfo } = this.props - const ids = Object.keys(currentLayersInfo).filter((id) => currentLayersInfo[id].selected) + const { currentDisplay, currentSlide, currentLayersOperationInfo } = this.props + const ids = Object.keys(currentLayersOperationInfo).filter((id) => currentLayersOperationInfo[id].selected) if (ids.length <= 0) { message.warning('请选择图层') return @@ -676,10 +718,40 @@ export class Editor extends React.Component { onClearLayersSelection() } + private getEditorBaselines = () => { + const { scale } = this.state + const { editorBaselines } = this.props + const { horizontal, vertical } = editorBaselines + const [ hTop, hRight, hLeft ] = horizontal.position + const [ vTop, vBottom, vLeft ] = vertical.position + + const styleHorizontal: React.CSSProperties = { + display: horizontal.visible ? 'block' : 'none', + height: `${1 / scale}px`, + top: `${hTop}px`, + right: `${hRight}px`, + left: `${hLeft}px` + } + const styleVertical: React.CSSProperties = { + display: vertical.visible ? 'block' : 'none', + width: `${1 / scale}px`, + top: `${vTop}px`, + bottom: `${vBottom}px`, + left: `${vLeft}px` + } + const baselines = [ + (
), + (
) + ] + + return baselines + } + public render () { const { params, currentLayersInfo, + currentLayersOperationInfo, currentSelectedLayers, widgets, currentDisplay, @@ -706,7 +778,8 @@ export class Editor extends React.Component { const layerId = layer.id const { polling, frequency } = JSON.parse(layer.params) - const { datasource, loading, selected, interactId, rendered, renderType } = currentLayersInfo[layerId] + const { datasource, loading, interactId, rendered, renderType } = currentLayersInfo[layerId] + const { selected, resizing, dragging } = currentLayersOperationInfo[layerId] return ( // @@ -717,6 +790,8 @@ export class Editor extends React.Component { slideParams={slideParams} layer={layer} selected={selected} + resizing={resizing} + dragging={dragging} itemId={layerId} widget={widget} data={datasource} @@ -731,11 +806,14 @@ export class Editor extends React.Component { onDragLayer={this.dragLayer} onResizeLayer={this.resizeLayer} onResizeLayerStop={this.resizeLayerStop} + onDragLayerStop={this.dragLayerStop} /> // ) }) + const baselines = this.getEditorBaselines() + const settingInfo = this.getSettingInfo() let settingContent = null @@ -801,7 +879,7 @@ export class Editor extends React.Component { onLayersSelectionRemove={this.layersSelectionRemove} ref={this.refHandlers.editor} > - {layerItems} + {[...baselines, ...layerItems]} { dispatch(clearLayersSelection()), onDragSelectedLayer: (id, deltaX, deltaY) => dispatch(dragSelectedLayer({ id, deltaX, deltaY })), onResizeLayers: (layerIds) => dispatch(resizeLayers(layerIds)), + toggleLayersResizingStatus: (layerIds, resizing) => dispatch(toggleLayersResizingStatus(layerIds, resizing)), + toggleLayersDraggingStatus: (layerIds, dragging) => dispatch(toggleLayersDraggingStatus(layerIds, dragging)), onAddDisplayLayers: (displayId, slideId, layers) => dispatch(addDisplayLayers(displayId, slideId, layers)), onDeleteDisplayLayers: (displayId, slideId, ids) => dispatch(deleteDisplayLayers(displayId, slideId, ids)), onEditDisplayLayers: (displayId, slideId, layers) => dispatch(editDisplayLayers(displayId, slideId, layers)), diff --git a/webapp/app/containers/Display/Preview.tsx b/webapp/app/containers/Display/Preview.tsx index 548b67307..433aa8823 100644 --- a/webapp/app/containers/Display/Preview.tsx +++ b/webapp/app/containers/Display/Preview.tsx @@ -30,8 +30,7 @@ import { makeSelectCurrentSlide, makeSelectDisplays, makeSelectCurrentLayers, - makeSelectCurrentLayersInfo, - makeSelectCurrentSelectedLayers } from './selectors' + makeSelectCurrentLayersInfo } from './selectors' import { hideNavigator } from '../App/actions' import { loadWidgets } from '../Widget/actions' @@ -75,7 +74,6 @@ interface IPreviewProps { [key: string]: { datasource: any[] loading: boolean - selected: boolean queryParams: { filters: string linkageFilters: string @@ -311,7 +309,7 @@ export class Preview extends React.Component { const layerId = layer.id const { polling, frequency } = layer.params - const { datasource, loading, selected, interactId, rendered, renderType } = currentLayersInfo[layerId] + const { datasource, loading, interactId, rendered, renderType } = currentLayersInfo[layerId] return ( { pure={true} scale={scale} layer={layer} - selected={selected} itemId={layerId} widget={widget} data={datasource} @@ -351,8 +348,7 @@ const mapStateToProps = createStructuredSelector({ currentSlide: makeSelectCurrentSlide(), displays: makeSelectDisplays(), currentLayers: makeSelectCurrentLayers(), - currentLayersInfo: makeSelectCurrentLayersInfo(), - currentSelectedLayers: makeSelectCurrentSelectedLayers() + currentLayersInfo: makeSelectCurrentLayersInfo() }) export function mapDispatchToProps (dispatch) { diff --git a/webapp/app/containers/Display/actions.ts b/webapp/app/containers/Display/actions.ts index 9c8f1eb49..109df56dd 100644 --- a/webapp/app/containers/Display/actions.ts +++ b/webapp/app/containers/Display/actions.ts @@ -251,6 +251,56 @@ export function clearLayersSelection () { } } +export function toggleLayersResizingStatus (layerIds: number[], resizing: boolean) { + return { + type: ActionTypes.TOGGLE_LAYERS_RESIZING_STATUS, + payload: { + layerIds, + resizing + } + } +} +export function toggleLayersDraggingStatus (layerIds: number[], dragging: boolean) { + return { + type: ActionTypes.TOGGLE_LAYERS_DRAGGING_STATUS, + payload: { + layerIds, + dragging + } + } +} + +export function hideVerticalBaseline () { + return { + type: ActionTypes.HIDE_EDITOR_VERTICAL_BASELINE + } +} +export function showVerticalBaseline (top, bottom, left) { + return { + type: ActionTypes.SHOW_EDITOR_VERTICAL_BASELINE, + payload: { + top, + bottom, + left + } + } +} +export function hideHorizontalBaseline () { + return { + type: ActionTypes.HIDE_EDITOR_HORIZONTAL_BASELINE + } +} +export function showHorizontalBaseline (top, right, left) { + return { + type: ActionTypes.SHOW_EDITOR_HORIZONTAL_BASELINE, + payload: { + top, + right, + left + } + } +} + export function copySlideLayers (slideId, layers: any[]) { return { type: ActionTypes.COPY_SLIDE_LAYERS, diff --git a/webapp/app/containers/Display/components/LayerItem.tsx b/webapp/app/containers/Display/components/LayerItem.tsx index 4c0fb9156..be8111040 100644 --- a/webapp/app/containers/Display/components/LayerItem.tsx +++ b/webapp/app/containers/Display/components/LayerItem.tsx @@ -1,6 +1,8 @@ import * as React from 'react' +import { findDOMNode } from 'react-dom' import * as classnames from 'classnames' +const Tooltip = require('antd/lib/tooltip') import Draggable from '../../../../libs/react-draggable/react-draggable' // @TODO contentMenu @@ -12,6 +14,7 @@ import { GraphTypes, SecondaryGraphTypes } from 'utils/util' +import { GRID_ITEM_MARGIN } from '../../../globalConstants' import Pivot from '../../Widget/components/Pivot/PivotInViz' import { IPivotProps, RenderType } from '../../Widget/components/Pivot/Pivot' @@ -25,6 +28,8 @@ interface ILayerItemProps { slideParams?: any layer: any selected?: boolean + resizing?: boolean + dragging?: boolean itemId: number widget: any data: any @@ -39,29 +44,29 @@ interface ILayerItemProps { onDoTableInteract?: (itemId: number, linkagers: any[], value: any) => void onSelectLayer?: (obj: { id: any, selected: boolean, exclusive: boolean }) => void onDragLayer?: (itemId: number, delta: { deltaX: number, deltaY: number }) => void + onDragLayerStop?: (itemId: number, delta: { deltaX: number, deltaY: number }) => void onResizeLayer?: (itemId: number, delta: { deltaWidth: number, deltaHeight: number }) => void - onResizeLayerStop?: (layer: any, size: { width?: number, height?: number, positionX?: number, positionY?: number }, itemId: any) => void + onResizeLayerStop?: (itemId: number, delta: { deltaWidth: number, deltaHeight: number }) => void } interface ILayerItemStates { layerParams: any + layerTooltipPosition: [number, number] mousePos: number[] - width: number - height: number, pivotProps: IPivotProps } export class LayerItem extends React.PureComponent { + private refLayer + constructor (props) { super(props) const { layer } = this.props const layerParams = JSON.parse(layer.params) - const { width, height } = layerParams this.state = { layerParams, + layerTooltipPosition: [0, 0], mousePos: [-1, -1], - width, - height, pivotProps: null } } @@ -69,6 +74,7 @@ export class LayerItem extends React.PureComponent { + e.stopPropagation() this.setState({ mousePos: [e.pageX, e.pageY] }) return e.target !== data.node.lastElementChild } - private dragOnStop = (_, data) => { + private dragOnStop = (e: Event, data) => { + e.stopPropagation() + const { deltaX, deltaY } = data const { itemId, - layer, - onResizeLayerStop } = this.props - const { x, y } = data - const { layerParams } = this.state - const params = { - positionX: x, - positionY: y - } - this.setState({ - layerParams: { - ...layerParams, - ...params - } - }, () => { - onResizeLayerStop(layer, params, itemId) - }) + onDragLayerStop } = this.props + onDragLayerStop(itemId, { deltaX, deltaY }) } - private drag = (_, data) => { - const { lastX, lastY, x, y } = data - const delta = { deltaX: x - lastX, deltaY: y - lastY } + private onDrag = (e, { deltaX, deltaY }) => { + e.stopPropagation() const { itemId, onDragLayer } = this.props - if (onDragLayer) { onDragLayer(itemId, delta) } + if (onDragLayer) { onDragLayer(itemId, { deltaX, deltaY }) } } - private onResize = (_, { size }) => { - const { itemId, selected, onResizeLayer } = this.props - const { width: prevWidth, height: prevHeight } = this.state + private onResize = (e, { size }) => { + e.stopPropagation() + const { itemId, onResizeLayer } = this.props + const { width: prevWidth, height: prevHeight } = this.state.layerParams const { width, height } = size const delta = { - deltaWidth: width - prevWidth, + deltaWidth: width - prevWidth, deltaHeight: height - prevHeight } - if (onResizeLayer && selected) { onResizeLayer(itemId, delta) } - this.setState({ - width, - height - }) + if (onResizeLayer) { onResizeLayer(itemId, delta) } } - private onResizeStop = (_, { size }) => { - const { itemId, layer, onResizeLayerStop } = this.props + private onResizeStop = (e, { size }) => { + e.stopPropagation() + const { width: prevWidth, height: prevHeight } = this.state.layerParams const { width, height } = size - this.setState({ - width, - height - }, () => { - onResizeLayerStop(layer, { width, height }, itemId) - }) + const delta = { + deltaWidth: width - prevWidth, + deltaHeight: height - prevHeight + } + const { itemId, onResizeLayerStop } = this.props + onResizeLayerStop(itemId, delta) } private onClickLayer = (e) => { + e.stopPropagation() if (this.props.pure) { return } const mousePos = [e.pageX, e.pageY] const isSamePos = mousePos.every((pos, idx) => pos === this.state.mousePos[idx]) @@ -221,7 +217,6 @@ export class LayerItem extends React.PureComponent { @@ -252,8 +247,6 @@ export class LayerItem extends React.PureComponent this.refLayer = f} + id={`layer_${layer.id}`} className={layerClass} style={layerStyle} onClick={this.onClickLayer} > - + {this.wrapLayerTooltip( + () + )}
) } private getLayerStyle = (layer, layerParams) => { const { pure, scale } = this.props - const { width, height } = this.state const { + width, height, backgroundImage, backgroundRepeat, backgroundSize, backgroundColor, opacity, borderWidth, borderStyle, borderColor, borderRadius } = layerParams let layerStyle: React.CSSProperties = { @@ -342,10 +338,13 @@ export class LayerItem extends React.PureComponent this.refLayer = f} className={layerClass} style={layerStyle} onClick={this.onClickLayer} - /> + > + {this.wrapLayerTooltip(null)} +
) } @@ -396,35 +395,47 @@ export class LayerItem extends React.PureComponent this.refLayer = f} className={layerClass} style={layerStyle} onClick={this.onClickLayer} > -

- {layerParams.contentText} -

+ {this.wrapLayerTooltip( +

+ {layerParams.contentText} +

+ )} ) } + private wrapLayerTooltip = (content) => { + const { resizing, dragging } = this.props + if (!resizing && !dragging) { return content } + + const { layerParams, layerTooltipPosition } = this.state + const { positionX, positionY, width, height } = layerParams + const tooltip = resizing ? `宽度:${width}px,高度:${height}px` : (dragging ? `x:${positionX}px,y:${positionY}px` : '') + const tooltipVisible = resizing || dragging + const [top, left] = layerTooltipPosition + const style = { top, left } + return ( + {content} + ) + } + public render () { const { pure, scale, slideParams, - layer, - selected + layer } = this.props - const { - layerParams, - width, - height } = this.state + const { layerParams } = this.state + const { positionX: x, positionY: y, width, height } = layerParams - const position = { - x: layerParams['positionX'], - y: layerParams['positionY'] - } + const position = { x, y} const content = this.renderLayer(layer) if (pure) { return content } @@ -438,7 +449,7 @@ export class LayerItem extends React.PureComponent @@ -453,7 +464,7 @@ export class LayerItem extends React.PureComponent - {content} + {content} ) diff --git a/webapp/app/containers/Display/constants.ts b/webapp/app/containers/Display/constants.ts index 93d865f2b..0fbdc74e6 100644 --- a/webapp/app/containers/Display/constants.ts +++ b/webapp/app/containers/Display/constants.ts @@ -67,8 +67,16 @@ export enum ActionTypes { RESIZE_LAYERS = 'davinci/Display/RESIZE_LAYERS', SELECT_LAYER = 'davinci/Display/SELECT_LAYER', CLEAR_LAYERS_SELECTION = 'davinci/Display/CLEAR_LAYERS_SELECTION', - COPY_SLIDE_LAYERS = 'davinci/Display/COPY_SLIDE_LAYERS', + TOGGLE_LAYERS_RESIZING_STATUS= 'davinci/Display/TOGGLE_LAYERS_RESIZING_STATUS', + TOGGLE_LAYERS_DRAGGING_STATUS= 'davinci/Display/TOGGLE_LAYERS_DRAGGING_STATUS', + + HIDE_EDITOR_VERTICAL_BASELINE = 'davinci/Display/HIDE_EDITOR_VERTICAL_BASELINE', + SHOW_EDITOR_VERTICAL_BASELINE = 'davinci/Display/SHOW_EDITOR_VERTICAL_BASELINE', + HIDE_EDITOR_HORIZONTAL_BASELINE = 'davinci/Display/HIDE_EDITOR_HORIZONTAL_BASELINE', + SHOW_EDITOR_HORIZONTAL_BASELINE = 'davinci/Display/SHOW_EDITOR_HORIZONTAL_BASELINE', + + COPY_SLIDE_LAYERS = 'davinci/Display/COPY_SLIDE_LAYERS', PASTE_SLIDE_LAYERS = 'davinci/Display/PASTE_SLIDE_LAYERS', PASTE_SLIDE_LAYERS_SUCCESS = 'davinci/Display/PASTE_SLIDE_LAYERS_SUCCESS', PASTE_SLIDE_LAYERS_FAILURE = 'davinci/Display/PASTE_SLIDE_LAYERS_FAILURE', diff --git a/webapp/app/containers/Display/reducer.ts b/webapp/app/containers/Display/reducer.ts index ae6dd0dce..3739bc00c 100644 --- a/webapp/app/containers/Display/reducer.ts +++ b/webapp/app/containers/Display/reducer.ts @@ -41,11 +41,14 @@ const initialState = fromJS({ currentLayers: [], currentLayersInfo: {}, + currentLayersOperationInfo: {}, displayLoading: false, clipboardLayers: [], lastOperationType: '', - lastLayers: [] + lastLayers: [], + + editorBaselines: {} }) function displayReducer (state = initialState, action) { @@ -55,6 +58,8 @@ function displayReducer (state = initialState, action) { const displayCascadeSources = state.get('currentDisplayCascadeSources') const layers = state.get('currentLayers') const layersInfo = state.get('currentLayersInfo') + const layersOperationInfo = state.get('currentLayersOperationInfo') + const editorBaselines = state.get('editorBaselines') switch (type) { case ActionTypes.LOAD_DISPLAYS_SUCCESS: @@ -115,7 +120,6 @@ function displayReducer (state = initialState, action) { obj[layer.id] = (layer.type === GraphTypes.Chart) ? { datasource: [], loading: false, - selected: false, queryParams: { linkageFilters: [], globalFilters: [], @@ -129,11 +133,28 @@ function displayReducer (state = initialState, action) { renderType: 'rerender' } : { loading: false, - selected: false, datasource: [] } return obj }, {})) + .set('currentLayersOperationInfo', payload.layers.reduce((obj, layer) => { + obj[layer.id] = { + selected: false, + dragging: false, + resizing: false + } + return obj + }, {})) + .set('editorBaselines', { + horizontal: { + visible: false, + position: [0, 0, 0] + }, + vertical: { + visible: false, + position: [0, 0, 0] + } + }) case ActionTypes.LOAD_DISPLAY_DETAIL_FAILURE: return state .set('currentDisplayLoading', false) @@ -155,7 +176,6 @@ function displayReducer (state = initialState, action) { obj[layer.id] = (layer.type === GraphTypes.Chart) ? { datasource: [], loading: false, - selected: false, queryParams: { linkageFilters: [], globalFilters: [], @@ -169,21 +189,32 @@ function displayReducer (state = initialState, action) { renderType: 'rerender' } : { datasource: [], - loading: false, - selected: false + loading: false } return obj }, {}) }) + .set('currentLayersOperationInfo', { + ...layersOperationInfo, + ...payload.result.reduce((obj, layer) => { + obj[layer.id] = { + selected: false, + resizing: false, + dragging: false + } + }, {}) + }) case ActionTypes.DELETE_DISPLAY_LAYERS_SUCCESS: payload.ids.forEach((id) => { delete layersInfo[id] + delete layersOperationInfo[id] }) return state .set('lastOperationType', ActionTypes.DELETE_DISPLAY_LAYERS_SUCCESS) .set('lastLayers', layers.filter((layer) => payload.ids.indexOf(layer.id.toString()) >= 0)) .set('currentLayers', layers.filter((layer) => payload.ids.indexOf(layer.id.toString()) < 0)) .set('currentLayersInfo', layersInfo) + .set('currentLayersOperationInfo', layersOperationInfo) case ActionTypes.EDIT_DISPLAY_LAYERS_SUCCESS: const copyLayers = fromJS(layers).toJS() const lastLayers = [] @@ -234,7 +265,7 @@ function displayReducer (state = initialState, action) { case ActionTypes.DRAG_SELECT_LAYER: return state.set('currentLayers', layers.map((layer) => { - if (!layersInfo[layer.id].selected || layer.id === payload.id) { return layer } + if (!layersOperationInfo[layer.id].selected || layer.id === payload.id) { return layer } const layerParams = JSON.parse(layer.params) const { positionX, positionY } = layerParams return { @@ -262,21 +293,69 @@ function displayReducer (state = initialState, action) { }, {})) case ActionTypes.SELECT_LAYER: if (payload.selected && payload.exclusive) { - Object.keys(layersInfo).forEach((key) => { layersInfo[key].selected = false }) + Object.keys(layersOperationInfo).forEach((key) => { layersOperationInfo[key].selected = false }) } - return state.set('currentLayersInfo', { - ...layersInfo, + return state.set('currentLayersOperationInfo', { + ...layersOperationInfo, [payload.id]: { - ...layersInfo[payload.id], + ...layersOperationInfo[payload.id], selected: payload.selected } }) case ActionTypes.CLEAR_LAYERS_SELECTION: - Object.keys(layersInfo).forEach((key) => { - layersInfo[key].selected = false - layersInfo[key].renderType = 'refresh' + Object.keys(layersOperationInfo).forEach((key) => { + layersOperationInfo[key].selected = false + }) + return state.set('currentLayersOperationInfo', layersOperationInfo) + + case ActionTypes.TOGGLE_LAYERS_RESIZING_STATUS: + return state.set('currentLayersOperationInfo', payload.layerIds.reduce((acc, layerId) => ({ + ...acc, + [layerId]: { + ...acc[layerId], + resizing: payload.resizing + } + }), layersOperationInfo)) + case ActionTypes.TOGGLE_LAYERS_DRAGGING_STATUS: + return state.set('currentLayersOperationInfo', payload.layerIds.reduce((acc, layerId) => ({ + ...acc, + [layerId]: { + ...acc[layerId], + dragging: payload.dragging + } + }), layersOperationInfo)) + case ActionTypes.HIDE_EDITOR_VERTICAL_BASELINE: + return state.set('editorBaselines', { + ...editorBaselines, + vertical: { + ...editorBaselines.vertical, + visible: false + } + }) + case ActionTypes.SHOW_EDITOR_VERTICAL_BASELINE: + return state.set('editorBaselines', { + ...editorBaselines, + vertical: { + visible: true, + position: [payload.top, payload.bottom, payload.left] + } + }) + case ActionTypes.HIDE_EDITOR_HORIZONTAL_BASELINE: + return state.set('editorBaselines', { + ...editorBaselines, + horizontal: { + ...editorBaselines.horizontal, + visible: false + } + }) + case ActionTypes.SHOW_EDITOR_HORIZONTAL_BASELINE: + return state.set('editorBaselines', { + ...editorBaselines, + horizontal: { + visible: true, + position: [payload.top, payload.right, payload.left] + } }) - return state.set('currentLayersInfo', layersInfo) case ActionTypes.COPY_SLIDE_LAYERS: return state.set('clipboardLayers', payload.layers) @@ -291,7 +370,6 @@ function displayReducer (state = initialState, action) { obj[layer.id] = (layer.type === GraphTypes.Chart) ? { datasource: [], loading: false, - selected: false, queryParams: { linkageFilters: [], globalFilters: [], @@ -305,12 +383,21 @@ function displayReducer (state = initialState, action) { renderType: 'rerender' } : { datasource: [], - loading: false, - selected: false + loading: false } return obj }, {}) }) + .set('currentLayersOperationInfo', { + ...layersOperationInfo, + ...payload.result.reduce((obj, layer) => { + obj[layer.id] = { + selected: false, + resizing: false, + dragging: false + } + }, {}) + }) case ActionTypes.LOAD_DISPLAY_SHARE_LINK: return state.set('currentDisplayShareInfoLoading', true) diff --git a/webapp/app/containers/Display/selectors.ts b/webapp/app/containers/Display/selectors.ts index 7d0fcbed2..b27710176 100644 --- a/webapp/app/containers/Display/selectors.ts +++ b/webapp/app/containers/Display/selectors.ts @@ -46,6 +46,10 @@ const makeSelectCurrentLayersInfo = () => createSelector( selectDisplay, ({ present }) => present.get('currentLayersInfo') ) +const makeSelectCurrentLayersOperationInfo = () => createSelector( + selectDisplay, + ({ present }) => present.get('currentLayersOperationInfo') +) const makeSelectCurrentSelectedLayers = () => createSelector( selectDisplay, @@ -115,6 +119,11 @@ const makeSelectNextState = () => createSelector( } ) +const makeSelectEditorBaselines = () => createSelector( + selectDisplay, + ({ present }) => present.get('editorBaselines') +) + export { selectDisplay, makeSelectDisplays, @@ -122,6 +131,7 @@ export { makeSelectCurrentSlide, makeSelectCurrentLayers, makeSelectCurrentLayersInfo, + makeSelectCurrentLayersOperationInfo, makeSelectCurrentSelectedLayers, @@ -134,5 +144,7 @@ export { makeSelectCanUndo, makeSelectCanRedo, makeSelectCurrentState, - makeSelectNextState + makeSelectNextState, + + makeSelectEditorBaselines } From 5512b89cbd7c356b6f4e7b755be5db640b80ffa7 Mon Sep 17 00:00:00 2001 From: Fuying <1165234947@qq.com> Date: Sat, 29 Sep 2018 14:11:39 +0800 Subject: [PATCH 12/45] =?UTF-8?q?=E6=88=91=E7=9A=84=E7=BB=84=E7=BB=87->?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E6=88=91=E5=88=9B=E5=BB=BA=E7=9A=84=E7=BB=84?= =?UTF-8?q?=E7=BB=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/containers/Organizations/Organization.less | 10 +++++++++- webapp/app/containers/Organizations/index.tsx | 14 ++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/webapp/app/containers/Organizations/Organization.less b/webapp/app/containers/Organizations/Organization.less index dd5a1ddef..e84ef5cba 100644 --- a/webapp/app/containers/Organizations/Organization.less +++ b/webapp/app/containers/Organizations/Organization.less @@ -22,10 +22,18 @@ .name { display: flex; flex-direction: column; - margin-left: 16px; + // margin-left: 16px; .title { font-weight: 400; font-size: 16px; + .nameTag { + color: @white; + font-size: 12px; + margin-left: 8px; + background: lighten(@blue, 20%);; + padding: 1px 6px; + border-radius: 3px; + } } .desc { font-size: 12px; diff --git a/webapp/app/containers/Organizations/index.tsx b/webapp/app/containers/Organizations/index.tsx index 3adebd606..a09eee932 100644 --- a/webapp/app/containers/Organizations/index.tsx +++ b/webapp/app/containers/Organizations/index.tsx @@ -3,6 +3,7 @@ import { connect } from 'react-redux' const Icon = require('antd/lib/icon') const Row = require('antd/lib/row') const Col = require('antd/lib/col') +const Tag = require('antd/lib/tag') const Modal = require('antd/lib/modal') import { Link } from 'react-router' import Box from '../../components/Box' @@ -42,6 +43,7 @@ interface IOrganization { name?: string description?: string avatar?: any + role?: number } export class Organizations extends React.PureComponent { constructor (props) { @@ -103,15 +105,19 @@ export class Organizations extends React.PureComponent (
-
-
-
{org.name}
-
{org.description}
+
+
+ {org.name} + {org.role === 1 ? Owner : null} +
+
{org.description}
+
From c4f01bf7f99234db0c3a3aebb324cfa2e9fd2a07 Mon Sep 17 00:00:00 2001 From: andyfong Date: Sat, 29 Sep 2018 16:56:45 +0800 Subject: [PATCH 13/45] fix(Dashboard): remove filter and linkage config modal close confirm and make modal maskClosable `false` --- .../components/DashboardFilterConfig.tsx | 16 ++++------------ .../components/DashboardLinkageConfig.tsx | 16 ++++------------ 2 files changed, 8 insertions(+), 24 deletions(-) diff --git a/webapp/app/containers/Dashboard/components/DashboardFilterConfig.tsx b/webapp/app/containers/Dashboard/components/DashboardFilterConfig.tsx index 67fee978a..c67fe6916 100644 --- a/webapp/app/containers/Dashboard/components/DashboardFilterConfig.tsx +++ b/webapp/app/containers/Dashboard/components/DashboardFilterConfig.tsx @@ -94,17 +94,8 @@ export class DashboardFilterConfig extends React.Component { - const { onCancel } = this.props - Modal.confirm({ - content: '确认不保存当前全局筛选配置吗?', - onOk: onCancel, - onCancel: void 0 - }) - } - public render () { - const { visible, loading, currentItems, widgets, views, onSave, onGetOptions, filterOptions } = this.props + const { visible, loading, currentItems, widgets, views, onSave, onGetOptions, filterOptions, onCancel } = this.props const { filters, savingFilterConfig } = this.state if (!visible) { return null } @@ -113,7 +104,7 @@ export class DashboardFilterConfig extends React.Component 取 消 @@ -134,9 +125,10 @@ export class DashboardFilterConfig extends React.Component
{ - const { onCancel } = this.props - Modal.confirm({ - content: '确认不保存当前联动关系配置吗?', - onOk: onCancel, - onCancel: void 0 - }) - } - public render () { - const { visible, loading, onSave, onGetWidgetInfo, linkages } = this.props + const { visible, loading, onSave, onGetWidgetInfo, linkages, onCancel } = this.props const { linkageCascaderSource, savingLinkageConfig } = this.state const modalButtons = [( @@ -159,8 +150,9 @@ export class DashboardLinkageConfig extends React.Component
From 16dbe66e59a162105efff206e6821279a7049efa Mon Sep 17 00:00:00 2001 From: andyfong Date: Sat, 29 Sep 2018 16:58:31 +0800 Subject: [PATCH 14/45] fix(Dashoard): remove all exist linkages after linkage config saved --- webapp/app/containers/Dashboard/Grid.tsx | 32 ++++++++++++++++++- .../Dashboard/components/DashboardItem.tsx | 9 ++---- .../Dashboard/components/DashboardToolbar.tsx | 2 +- webapp/share/containers/Dashboard/index.tsx | 20 ++++++++++-- 4 files changed, 52 insertions(+), 11 deletions(-) diff --git a/webapp/app/containers/Dashboard/Grid.tsx b/webapp/app/containers/Dashboard/Grid.tsx index ffb68b738..1495e8acb 100644 --- a/webapp/app/containers/Dashboard/Grid.tsx +++ b/webapp/app/containers/Dashboard/Grid.tsx @@ -217,6 +217,7 @@ interface IGridStates { selectedWidget: any[] polling: boolean linkageConfigVisible: boolean + interactingStatus: { [itemId: number]: boolean } globalFilterConfigVisible: boolean dashboardSharePanelAuthorized: boolean nextMenuTitle: string @@ -261,7 +262,7 @@ export class Grid extends React.Component { polling: false, linkageConfigVisible: false, - + interactingStatus: {}, globalFilterConfigVisible: false, dashboardSharePanelAuthorized: false, @@ -745,6 +746,7 @@ export class Grid extends React.Component { }) }, () => { this.toggleLinkageConfig(false)() + this.clearAllInteracts() }) } @@ -778,6 +780,25 @@ export class Grid extends React.Component { linkageParams: Object.values(params).reduce((arr: any[], p: any[]) => arr.concat(...p), []) }) }) + this.setState({ + interactingStatus: { + ...this.state.interactingStatus, + [itemId]: true + } + }) + } + + private clearAllInteracts = () => { + const { currentItems } = this.props + Object.keys(this.interactingLinkagers).forEach((linkagerItemId) => { + const item = currentItems.find((ci) => ci.id === +linkagerItemId) + this.getChartData('rerender', +linkagerItemId, item.widgetId, { + linkageFilters: [], + linkageParams: [] + }) + }) + this.interactingLinkagers = {} // FIXME need remove interact effect + this.setState({ interactingStatus: {} }) } private turnOffInteract = (itemId) => { @@ -795,6 +816,12 @@ export class Grid extends React.Component { linkageParams: Object.values(params).reduce((arr: any[], p: any[]) => arr.concat(...p), []) }) }) + this.setState({ + interactingStatus: { + ...this.state.interactingStatus, + [itemId]: false + } + }) } private toggleGlobalFilterConfig = (visible) => () => { @@ -920,6 +947,7 @@ export class Grid extends React.Component { polling, dashboardItemFormStep, linkageConfigVisible, + interactingStatus, globalFilterConfigVisible, allowFullScreen, dashboardSharePanelAuthorized @@ -977,6 +1005,7 @@ export class Grid extends React.Component { } = currentItemsInfo[id] const widget = widgets.find((w) => w.id === widgetId) + const interacting = interactingStatus[id] || false itemblocks.push((
@@ -986,6 +1015,7 @@ export class Grid extends React.Component { data={datasource} loading={loading} polling={polling} + interacting={interacting} frequency={frequency} shareInfo={shareInfo} secretInfo={secretInfo} diff --git a/webapp/app/containers/Dashboard/components/DashboardItem.tsx b/webapp/app/containers/Dashboard/components/DashboardItem.tsx index 0402273a2..17a3dcc95 100644 --- a/webapp/app/containers/Dashboard/components/DashboardItem.tsx +++ b/webapp/app/containers/Dashboard/components/DashboardItem.tsx @@ -50,6 +50,7 @@ interface IDashboardItemProps { data: any loading: boolean polling: string + interacting: boolean frequency: string shareInfo: string secretInfo?: string @@ -75,7 +76,6 @@ interface IDashboardItemProps { interface IDashboardItemStates { controlPanelVisible: boolean sharePanelAuthorized: boolean - isInteracting: boolean pivotProps: IPivotProps } @@ -85,7 +85,6 @@ export class DashboardItem extends React.PureComponent { const { itemId, onDoTableInteract } = this.props - this.setState({ isInteracting: true }) onDoTableInteract(itemId, triggerData) } private turnOffInteract = () => { - this.setState({ isInteracting: false }) const { onTurnOffInteract, itemId } = this.props onTurnOffInteract(itemId) } @@ -242,6 +239,7 @@ export class DashboardItem extends React.PureComponent {addButton} {shareButton} - {/* {linkageButton} */} + {linkageButton} {globalFilterButton} ) diff --git a/webapp/share/containers/Dashboard/index.tsx b/webapp/share/containers/Dashboard/index.tsx index 0bd208a5a..b948087a7 100644 --- a/webapp/share/containers/Dashboard/index.tsx +++ b/webapp/share/containers/Dashboard/index.tsx @@ -99,7 +99,6 @@ interface IDashboardProps { globalParams: Array<{name: string, value: string}> } downloadCsvLoading: boolean - interactId: string renderType: RenderType } }, @@ -137,6 +136,7 @@ interface IDashboardStates { type: string, shareInfo: string, modalLoading: boolean, + interactingStatus: { [itemId: number]: boolean } allowFullScreen: boolean, currentDataInFullScreen: any, showLogin: boolean, @@ -152,7 +152,7 @@ export class Share extends React.Component { shareInfo: '', modalLoading: false, - + interactingStatus: {}, allowFullScreen: false, currentDataInFullScreen: {}, showLogin: false, @@ -423,6 +423,12 @@ export class Share extends React.Component { linkageParams: Object.values(params).reduce((arr: any[], p: any[]) => arr.concat(...p), []) }) }) + this.setState({ + interactingStatus: { + ...this.state.interactingStatus, + [itemId]: true + } + }) } private turnOffInteract = (itemId) => { @@ -440,6 +446,12 @@ export class Share extends React.Component { linkageParams: Object.values(params).reduce((arr: any[], p: any[]) => arr.concat(...p), []) }) }) + this.setState({ + interactingStatus: { + ...this.state.interactingStatus, + [itemId]: false + } + }) } private getOptions = (controlId, viewId, column, parents) => { @@ -469,6 +481,7 @@ export class Share extends React.Component { mounted, shareInfo, showLogin, + interactingStatus, allowFullScreen, phantomRenderSign } = this.state @@ -487,11 +500,11 @@ export class Share extends React.Component { datasource, loading, downloadCsvLoading, - interactId, renderType } = currentItemsInfo[id] const widget = widgets.find((w) => w.id === widgetId) + const interacting = interactingStatus[id] || false itemblocks.push((
@@ -501,6 +514,7 @@ export class Share extends React.Component { data={datasource} loading={loading} polling={polling} + interacting={interacting} frequency={frequency} shareInfo={widget.dataToken} downloadCsvLoading={downloadCsvLoading} From d68c7b81c8ba933378602af3d626cb3be80563f9 Mon Sep 17 00:00:00 2001 From: Fuying <1165234947@qq.com> Date: Sat, 29 Sep 2018 16:59:30 +0800 Subject: [PATCH 15/45] =?UTF-8?q?=E6=96=B0=E5=BB=BAView=E6=97=B6=EF=BC=8CS?= =?UTF-8?q?chema=20=E6=A0=91=E7=82=B9=E5=87=BB=E8=A1=A8=E5=90=8D=E5=92=8C?= =?UTF-8?q?=E7=82=B9=E5=87=BB=E7=AE=AD=E5=A4=B4=E6=95=88=E6=9E=9C=E4=B8=80?= =?UTF-8?q?=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webapp/app/containers/Bizlogic/Bizlogic.tsx | 24 +++++++++++++++++++ .../Organizations/component/Setting.tsx | 6 ++--- .../app/containers/Projects/ProjectForm.tsx | 4 ++-- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/webapp/app/containers/Bizlogic/Bizlogic.tsx b/webapp/app/containers/Bizlogic/Bizlogic.tsx index 759f5a66b..6e2ccff07 100644 --- a/webapp/app/containers/Bizlogic/Bizlogic.tsx +++ b/webapp/app/containers/Bizlogic/Bizlogic.tsx @@ -22,6 +22,7 @@ import * as React from 'react' import {connect} from 'react-redux' import {createStructuredSelector} from 'reselect' import { InjectedRouter } from 'react-router/lib/Router' +import axios, { AxiosRequestConfig, AxiosPromise } from 'axios' import { compose } from 'redux' import injectReducer from '../../utils/injectReducer' @@ -901,6 +902,28 @@ export class Bizlogic extends React.Component { + if (!obj.node.props.children) { + const id = obj.selectedNodes[0].props.id + return + } + if (obj.event && obj.selectedNodes.length === 1 && obj.selectedNodes[0].props.children) { + this.state.expandedKeys.push(expandedKeys[0]) + this.setState({ + // expandedKeys: _.xor(this.state.expandedKeys, expandedKeys), + expandedKeys: this.state.expandedKeys, + autoExpandParent: false + }) + } + + if (expandedKeys.length === 0 || this.state.expandedKeys.indexOf(expandedKeys) >= 0) { + this.setState({ + expandedKeys: this.state.expandedKeys.filter((e) => e !== obj.node.props.title), + autoExpandParent: false + }) + } + } + public render () { const { form, @@ -1191,6 +1214,7 @@ export class Bizlogic extends React.Component {loop(data || [])} diff --git a/webapp/app/containers/Organizations/component/Setting.tsx b/webapp/app/containers/Organizations/component/Setting.tsx index 50237c71b..270f91e62 100644 --- a/webapp/app/containers/Organizations/component/Setting.tsx +++ b/webapp/app/containers/Organizations/component/Setting.tsx @@ -153,14 +153,14 @@ export class Setting extends React.PureComponent {
{getFieldDecorator('memberPermission', { initialValue: 1 })( - 隐藏 - 预览 + 不可见任何 + 只可见公开 {/* 修改 删除 */} diff --git a/webapp/app/containers/Projects/ProjectForm.tsx b/webapp/app/containers/Projects/ProjectForm.tsx index 6bd867b26..74ca92771 100644 --- a/webapp/app/containers/Projects/ProjectForm.tsx +++ b/webapp/app/containers/Projects/ProjectForm.tsx @@ -197,10 +197,10 @@ export class ProjectsForm extends React.PureComponent { })( )} From da9682bee217d5325bf9d5bc4749d15d9e652cb1 Mon Sep 17 00:00:00 2001 From: andyfong Date: Sat, 29 Sep 2018 18:16:17 +0800 Subject: [PATCH 16/45] fix(FilterConfig): fix filter save bugs --- .../app/components/Filters/FilterConfig.tsx | 4 +- webapp/app/components/Filters/FilterForm.tsx | 104 +++++++++--------- 2 files changed, 57 insertions(+), 51 deletions(-) diff --git a/webapp/app/components/Filters/FilterConfig.tsx b/webapp/app/components/Filters/FilterConfig.tsx index 4150925b3..b8e329ddf 100644 --- a/webapp/app/components/Filters/FilterConfig.tsx +++ b/webapp/app/components/Filters/FilterConfig.tsx @@ -162,12 +162,14 @@ export class FilterConfig extends React.Component { const { localFilters } = this.state + const { onOk } = this.props if (localFilters.length > 0) { this.filterForm.saveFilterItem((err) => { if (err) { return } - const { onOk } = this.props onOk([...localFilters]) }) + } else { + onOk([]) } } diff --git a/webapp/app/components/Filters/FilterForm.tsx b/webapp/app/components/Filters/FilterForm.tsx index 01f9c33bf..1532e2672 100644 --- a/webapp/app/components/Filters/FilterForm.tsx +++ b/webapp/app/components/Filters/FilterForm.tsx @@ -422,58 +422,62 @@ export class FilterForm extends React.Component - - - - { - getFieldDecorator('fromView', { - rules: [{ - required: true, - message: '不能为空' - }] - })( - - ) - } - - - - - { - getFieldDecorator('fromModel', { - rules: [{ - required: true, - message: '不能为空' - }] - })( - + { + views.map((view) => ( + + )) + } + + ) } - - ) - } - - - + + + + + { + getFieldDecorator('fromModel', { + rules: [{ + required: true, + message: '不能为空' + }] + })( + + ) + } + + + + ) + } Date: Sat, 29 Sep 2018 18:51:28 +0800 Subject: [PATCH 17/45] fix --- .../Organizations/component/MemberList.tsx | 43 ++++++++++++------- webapp/app/containers/Projects/index.tsx | 12 +++++- 2 files changed, 38 insertions(+), 17 deletions(-) diff --git a/webapp/app/containers/Organizations/component/MemberList.tsx b/webapp/app/containers/Organizations/component/MemberList.tsx index 299df8f2c..a3b7754eb 100644 --- a/webapp/app/containers/Organizations/component/MemberList.tsx +++ b/webapp/app/containers/Organizations/component/MemberList.tsx @@ -11,6 +11,7 @@ const Modal = require('antd/lib/modal') const Table = require('antd/lib/table') const Icon = require('antd/lib/icon') const styles = require('../Organization.less') +const utilStyles = require('../../../assets/less/util.less') import MemberForm from '../../Teams/component/AddForm' import Avatar from '../../../components/Avatar' import * as Organization from '../Organization' @@ -192,6 +193,12 @@ export class MemberList extends React.PureComponent { + isHidden = m && m.user && m.user.role === 1 ? true : false + }) + } const { inviteMemberList, currentOrganization } = this.props let CreateButton = void 0 if (currentOrganization) { @@ -232,22 +239,28 @@ export class MemberList extends React.PureComponent ( - - - - 从组织里移除 - - - - 改变角色 - - ) + render: (text, record) => { + if (text.role === 1) { + return '' + } + return ( + + + + 从组织里移除 + + + + 改变角色 + + ) + } }] } else { columns = [{ diff --git a/webapp/app/containers/Projects/index.tsx b/webapp/app/containers/Projects/index.tsx index cec8a7c20..2255697e7 100644 --- a/webapp/app/containers/Projects/index.tsx +++ b/webapp/app/containers/Projects/index.tsx @@ -853,6 +853,14 @@ export class Projects extends React.PureComponent 0) + }) + const collectStyle = classnames({ + [styles.mime]: true, + [utilStyles.hide]: !(collectProjectsArr && collectProjectsArr.length > 0) + }) return (
@@ -930,7 +938,7 @@ export class Projects extends React.PureComponent
-
+
@@ -948,7 +956,7 @@ export class Projects extends React.PureComponent
-
+
From 7bc5dac2ff6b93543a6b2c5835c56dcafde4ca90 Mon Sep 17 00:00:00 2001 From: Fuying <1165234947@qq.com> Date: Sat, 29 Sep 2018 20:58:56 +0800 Subject: [PATCH 18/45] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webapp/app/containers/Bizlogic/Bizlogic.tsx | 44 ++++++++++++------- .../Dashboard/components/DashboardAction.tsx | 4 +- webapp/app/containers/Dashboard/index.tsx | 33 ++++++++++++++ 3 files changed, 62 insertions(+), 19 deletions(-) diff --git a/webapp/app/containers/Bizlogic/Bizlogic.tsx b/webapp/app/containers/Bizlogic/Bizlogic.tsx index 6e2ccff07..eadae2818 100644 --- a/webapp/app/containers/Bizlogic/Bizlogic.tsx +++ b/webapp/app/containers/Bizlogic/Bizlogic.tsx @@ -902,24 +902,34 @@ export class Bizlogic extends React.Component { - if (!obj.node.props.children) { - const id = obj.selectedNodes[0].props.id - return - } - if (obj.event && obj.selectedNodes.length === 1 && obj.selectedNodes[0].props.children) { - this.state.expandedKeys.push(expandedKeys[0]) - this.setState({ - // expandedKeys: _.xor(this.state.expandedKeys, expandedKeys), - expandedKeys: this.state.expandedKeys, - autoExpandParent: false - }) - } + private handleTree = (clickKey, obj) => { + const { expandedKeys } = this.state - if (expandedKeys.length === 0 || this.state.expandedKeys.indexOf(expandedKeys) >= 0) { + this.setState({ + autoExpandParent: false + }) + + if (obj.selected) { + if (expandedKeys.indexOf(clickKey[0]) < 0) { + expandedKeys.push(clickKey[0]) + this.setState({ + expandedKeys + }) + } else { + this.setState({ + expandedKeys: expandedKeys.filter((e) => e !== clickKey[0]) + }) + } + } else { + let currentKey = [] + if (expandedKeys.length === 0) { + expandedKeys.push(obj.node.props.title) + currentKey = expandedKeys + } else { + currentKey = expandedKeys.filter((e) => e !== obj.node.props.title) + } this.setState({ - expandedKeys: this.state.expandedKeys.filter((e) => e !== obj.node.props.title), - autoExpandParent: false + expandedKeys: currentKey }) } } @@ -1214,7 +1224,7 @@ export class Bizlogic extends React.Component {loop(data || [])} diff --git a/webapp/app/containers/Dashboard/components/DashboardAction.tsx b/webapp/app/containers/Dashboard/components/DashboardAction.tsx index d7a2a7121..baa31c633 100644 --- a/webapp/app/containers/Dashboard/components/DashboardAction.tsx +++ b/webapp/app/containers/Dashboard/components/DashboardAction.tsx @@ -92,9 +92,9 @@ export class DashboardAction extends React.PureComponent {editAction} -
  • + {/*
  • 复制 -
  • + */} {moveAction}
  • 删除 diff --git a/webapp/app/containers/Dashboard/index.tsx b/webapp/app/containers/Dashboard/index.tsx index 3a2efa851..7a3daa7e1 100644 --- a/webapp/app/containers/Dashboard/index.tsx +++ b/webapp/app/containers/Dashboard/index.tsx @@ -532,6 +532,38 @@ export class Dashboard extends React.Component { + const { expandedKeys } = this.state + + this.setState({ + autoExpandParent: false + }) + + if (obj.selected) { + if (expandedKeys.indexOf(clickKey[0]) < 0) { + expandedKeys.push(clickKey[0]) + this.setState({ + expandedKeys + }) + } else { + this.setState({ + expandedKeys: expandedKeys.filter((e) => e !== clickKey[0]) + }) + } + } else { + let currentKey = [] + if (expandedKeys.length === 0) { + expandedKeys.push(obj.node.props.title) + currentKey = expandedKeys + } else { + currentKey = expandedKeys.filter((e) => e !== obj.node.props.title) + } + this.setState({ + expandedKeys: currentKey + }) + } + } + public render () { const { params, @@ -689,6 +721,7 @@ export class Dashboard extends React.Component {loop(dashboardData)} From fefd0bee0547c4ee535f9a2551415d981b59a3d3 Mon Sep 17 00:00:00 2001 From: ruanhan1988 <2856197796@qq.com> Date: Sun, 30 Sep 2018 11:58:33 +0800 Subject: [PATCH 19/45] fix --- webapp/app/containers/App/sagas.ts | 19 +++++++++++++++++-- .../app/containers/Projects/historyStack.ts | 14 ++++++++------ .../containers/Register/JoinOrganization.tsx | 11 +++++++---- 3 files changed, 32 insertions(+), 12 deletions(-) diff --git a/webapp/app/containers/App/sagas.ts b/webapp/app/containers/App/sagas.ts index 1c2c84261..3e9e8c14a 100644 --- a/webapp/app/containers/App/sagas.ts +++ b/webapp/app/containers/App/sagas.ts @@ -218,9 +218,24 @@ export function* joinOrganization (action): IterableIterator { message.error(asyncData.header.msg) return null } - } catch (err) { + } catch (error) { if (reject) { - reject(err) + reject(error) + } + if (error.response) { + console.log(error.response.status) + switch (error.response.status) { + case 403: + removeToken() + localStorage.removeItem('TOKEN') + break + case 400: + console.log({error}) + message.error(error.response.data.header.msg, 3) + break + default: + break + } } } } diff --git a/webapp/app/containers/Projects/historyStack.ts b/webapp/app/containers/Projects/historyStack.ts index 7215d5bfe..ee9ffdf94 100644 --- a/webapp/app/containers/Projects/historyStack.ts +++ b/webapp/app/containers/Projects/historyStack.ts @@ -35,13 +35,15 @@ class HistoryStack { } const historyArr = [] - this.wrap[user].forEach((historyItem) => { - projects.forEach((projectItem) => { - if (historyItem.id === projectItem.id) { - historyArr.push(projectItem) - } + if (this.wrap && this.wrap[user] && this.wrap[user].length) { + this.wrap[user].forEach((historyItem) => { + projects.forEach((projectItem) => { + if (historyItem.id === projectItem.id) { + historyArr.push(projectItem) + } + }) }) - }) + } this.wrap[user] = historyArr } public pushNode (d?: IHistory) { diff --git a/webapp/app/containers/Register/JoinOrganization.tsx b/webapp/app/containers/Register/JoinOrganization.tsx index d573fcb68..175af865a 100644 --- a/webapp/app/containers/Register/JoinOrganization.tsx +++ b/webapp/app/containers/Register/JoinOrganization.tsx @@ -47,6 +47,10 @@ export class JoinOrganization extends React.PureComponent { this.enterLogin = (e) => { if (e.keyCode === 13) { @@ -77,8 +81,10 @@ export class JoinOrganization extends React.PureComponent { const {onJoinOrganization} = this.props const token = this.getParamsByLocation('token') + console.log(token) if (token) { onJoinOrganization(token, (res) => { + console.log(res) if (res && res.id) { const path = `${window.location.protocol}//${window.location.host}/#/account/organization/${res.id}` location.replace(path) @@ -119,9 +125,6 @@ export class JoinOrganization extends React.PureComponent

    - 加入组织中,请稍候… + {this.state.needLogin ? '加入组织中,请稍候…' : ''}

  • ) From 103d835cbf479a72f56c5313e92c38b18f3ad12e Mon Sep 17 00:00:00 2001 From: shanmengm Date: Sun, 30 Sep 2018 18:10:41 +0800 Subject: [PATCH 20/45] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=EF=BC=8C=E4=BF=AE=E5=A4=8D=E4=B8=80=E4=BA=9B?= =?UTF-8?q?bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 优化启动脚本 2. 修复成员接受组织邀请bug 3. 修复文件生成文件bug --- bin/start-server.sh | 15 +++++++++++- config/application.yml.example | 2 +- .../impl/EmailScheduleServiceImpl.java | 4 ++++ .../service/impl/OrganizationServiceImpl.java | 24 +++++++++---------- .../service/impl/ShareServiceImpl.java | 4 ++++ .../davinci/service/impl/UserServiceImpl.java | 4 ++-- .../service/impl/WidgetServiceImpl.java | 4 ++++ 7 files changed, 41 insertions(+), 16 deletions(-) diff --git a/bin/start-server.sh b/bin/start-server.sh index 8437f696b..ce8ea0d2a 100755 --- a/bin/start-server.sh +++ b/bin/start-server.sh @@ -19,6 +19,19 @@ #start server +if [ -z "$DAVINCI3_HOME" ]; then + echo "DAVINCI3_HOME not found" + echo "Please export DAVINCI3_HOME to your environment variable" + exit +fi + +cd $DAVINCI3_HOME +Lib_dir=`ls | grep lib` +if [ -z "$Lib_dir" ]; then + echo "Invalid DAVINCI3_HOME" + exit +fi + Server=`ps -ef | grep java | grep davinci-server_3.01-0.3.0-SNAPSHOT | grep -v grep | awk '{print $2}'` if [[ $Server -gt 0 ]]; then echo "[Davinci Server] is already started" @@ -29,7 +42,7 @@ script_dir=$(cd `dirname $0`; pwd) cd $script_dir/../ TODAY=`date "+%Y-%m-%d"` LOG_PATH=$DAVINCI3_HOME/logs/davinci.$TODAY.log -nohup java -Dfile.encoding=UTF-8 -cp $JAVA_HOME/lib/*:$DAVINCI3_HOME/lib/*:davinci-server_3.01-0.3.0-SNAPSHOT.jar edp.DavinciServerApplication > $LOG_PATH 2>&1 & +nohup java -Dfile.encoding=UTF-8 -cp $JAVA_HOME/lib/*:lib/*:davinci-server_3.01-0.3.0-SNAPSHOT.jar edp.DavinciServerApplication > $LOG_PATH 2>&1 & echo "==========================================" echo "Starting..., press \`CRTL + C\` to exit log" diff --git a/config/application.yml.example b/config/application.yml.example index d2de87385..1c661851f 100644 --- a/config/application.yml.example +++ b/config/application.yml.example @@ -97,7 +97,7 @@ spring: properties: smtp: starttls: - enable: false + enable: true required: true auth: true mail: diff --git a/server/src/main/java/edp/davinci/service/impl/EmailScheduleServiceImpl.java b/server/src/main/java/edp/davinci/service/impl/EmailScheduleServiceImpl.java index 8ad028055..f9f0eff0b 100644 --- a/server/src/main/java/edp/davinci/service/impl/EmailScheduleServiceImpl.java +++ b/server/src/main/java/edp/davinci/service/impl/EmailScheduleServiceImpl.java @@ -167,6 +167,10 @@ private List generateImages(CronJobConfig cronJobConfig, Long userId) thro String imageName = UUID.randomUUID() + ".png"; String imageUrl = baseUrl + File.separator + imageName; String imagePath = fileBasePath + imageUrl; + File file = new File(fileBasePath + baseUrl); + if (!file.exists()) { + file.mkdirs(); + } String url = getContentUrl(userId, cronJobContent.getContentType(), cronJobContent.getId()); boolean bol = phantomRender(url, imagePath); if (bol) { diff --git a/server/src/main/java/edp/davinci/service/impl/OrganizationServiceImpl.java b/server/src/main/java/edp/davinci/service/impl/OrganizationServiceImpl.java index 32d7e2585..28f1adba0 100644 --- a/server/src/main/java/edp/davinci/service/impl/OrganizationServiceImpl.java +++ b/server/src/main/java/edp/davinci/service/impl/OrganizationServiceImpl.java @@ -504,44 +504,44 @@ public ResultMap confirmInvite(String token, User user, HttpServletRequest reque if (StringUtils.isEmpty(tokenUserName) || StringUtils.isEmpty(tokenPassword)) { log.info("confirmInvite error: token detail id empty"); - return resultMap.failAndRefreshToken(request).message("Invalid Token"); - } - - if (!tokenPassword.equals(user.getPassword())) { - log.info("confirmInvite error: invalid token password"); - return resultMap.failAndRefreshToken(request).message("Invalid Token"); + return resultMap.fail().message("username or password cannot be empty"); } String[] ids = tokenUserName.split(Constants.SPLIT_CHAR_STRING); if (ids.length != 3) { log.info("confirmInvite error: invalid token username"); - return resultMap.failAndRefreshToken(request).message("Invalid Token"); + return resultMap.fail().message("Invalid Token"); } Long inviterId = Long.parseLong(ids[0]); Long memeberId = Long.parseLong(ids[1]); Long orgId = Long.parseLong(ids[2]); if (!user.getId().equals(memeberId)) { - log.info("confirmInvite error: invalid token member"); - return resultMap.failAndRefreshToken(request).message("Invalid Token"); + log.info("confirmInvite error: invalid token member, username is wrong"); + return resultMap.fail().message("username is wrong"); + } + + if (!tokenPassword.equals(user.getPassword())) { + log.info("confirmInvite error: invalid token password"); + return resultMap.fail().message("password is wrong"); } User inviter = userMapper.getById(inviterId); if (null == inviter) { log.info("confirmInvite error: invalid token inviter"); - return resultMap.failAndRefreshToken(request).message("Invalid Token"); + return resultMap.fail().message("Invalid Token"); } Organization organization = organizationMapper.getById(orgId); if (null == organization) { log.info("confirmInvite error: invalid token organization"); - return resultMap.failAndRefreshToken(request).message("Invalid Token"); + return resultMap.fail().message("Invalid Token"); } RelUserOrganization tokenRel = relUserOrganizationMapper.getRel(inviterId, orgId); if (null != tokenRel && tokenRel.getRole() != UserOrgRoleEnum.OWNER.getRole()) { log.info("confirmInvite error: invalid token inviter permission"); - return resultMap.failAndRefreshToken(request).message("Invalid Token"); + return resultMap.fail().message("Invalid Token"); } RelUserOrganization rel = relUserOrganizationMapper.getRel(memeberId, orgId); diff --git a/server/src/main/java/edp/davinci/service/impl/ShareServiceImpl.java b/server/src/main/java/edp/davinci/service/impl/ShareServiceImpl.java index a6dad715a..cc28c5bdb 100644 --- a/server/src/main/java/edp/davinci/service/impl/ShareServiceImpl.java +++ b/server/src/main/java/edp/davinci/service/impl/ShareServiceImpl.java @@ -418,6 +418,10 @@ public ResultMap generationShareDataCsv(String token, ViewExecuteParam executePa if (null != columns && columns.size() > 0) { String csvPath = fileUtils.fileBasePath + File.separator + "csv"; + File file = new File(csvPath); + if (!file.exists()) { + file.mkdirs(); + } SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String csvName = viewWithProjectAndSource.getName() + "_" + sdf.format(new Date()); String fileFullPath = CsvUtils.formatCsvWithFirstAsHeader(csvPath, csvName, columns, dataList); diff --git a/server/src/main/java/edp/davinci/service/impl/UserServiceImpl.java b/server/src/main/java/edp/davinci/service/impl/UserServiceImpl.java index 5285ec49d..4fe24cc39 100644 --- a/server/src/main/java/edp/davinci/service/impl/UserServiceImpl.java +++ b/server/src/main/java/edp/davinci/service/impl/UserServiceImpl.java @@ -159,12 +159,12 @@ public ResultMap userLogin(UserLogin userLogin) { User user = userMapper.selectByUsername(userLogin.getUsername()); if (null == user) { log.info("user not found: {}", userLogin.getUsername()); - return resultMap.fail().message("user not found").payload("username or password invalid"); + return resultMap.fail().message("user not found").payload("username or password is wrong"); } //校验密码 if (!BCrypt.checkpw(userLogin.getPassword(), user.getPassword())) { log.info("password is wrong: {}", userLogin.getUsername()); - return resultMap.fail().message("password is wrong").payload("username or password invalid"); + return resultMap.fail().message("password is wrong").payload("username or password is wrong"); } //是否激活 if (!user.getActive()) { diff --git a/server/src/main/java/edp/davinci/service/impl/WidgetServiceImpl.java b/server/src/main/java/edp/davinci/service/impl/WidgetServiceImpl.java index b0f0f36d0..c5bf8b201 100644 --- a/server/src/main/java/edp/davinci/service/impl/WidgetServiceImpl.java +++ b/server/src/main/java/edp/davinci/service/impl/WidgetServiceImpl.java @@ -575,6 +575,10 @@ public ResultMap generationCsv(Long id, ViewExecuteParam executeParam, User user if (null != columns && columns.size() > 0) { String csvPath = fileUtils.fileBasePath + File.separator + "csv"; + File file = new File(csvPath); + if (!file.exists()) { + file.mkdirs(); + } SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String csvName = viewWithProjectAndSource.getName() + "_" + sdf.format(new Date()); String fileFullPath = CsvUtils.formatCsvWithFirstAsHeader(csvPath, csvName, columns, dataList); From 0674a19cf9f389d4bd942a6177e2366ed7071793 Mon Sep 17 00:00:00 2001 From: Scott Sut Date: Tue, 2 Oct 2018 03:00:05 +0800 Subject: [PATCH 21/45] chart mode init --- webapp/app/assets/json/widgetlib/index.ts | 344 --------------- webapp/app/containers/Dashboard/Grid.tsx | 16 +- .../Dashboard/components/DashboardItem.tsx | 26 +- .../components/DashboardItemControlForm.tsx | 6 +- .../components/DashboardLinkageConfig.tsx | 4 +- .../fullScreenPanel/FullScreenPanel.tsx | 8 +- webapp/app/containers/Display/Editor.tsx | 4 +- webapp/app/containers/Display/Preview.tsx | 6 +- .../Display/components/LayerItem.tsx | 17 +- webapp/app/containers/Projects/Project.less | 8 +- webapp/app/containers/Widget/charts/bar.ts | 314 +++++++++++++- webapp/app/containers/Widget/charts/barOld.ts | 333 -------------- webapp/app/containers/Widget/charts/line.ts | 334 +++++++++++++- webapp/app/containers/Widget/charts/pie.ts | 204 ++++++--- webapp/app/containers/Widget/charts/radar.ts | 138 +++++- .../app/containers/Widget/charts/scatter.ts | 297 ++++++++++++- .../Widget/components/Chart/Chart.less | 3 + .../Widget/components/Chart/Chart.tsx | 53 +++ .../Widget/components/Chart/Table.tsx | 408 +++++++++++++++++ .../Widget/components/Chart/index.tsx | 35 ++ .../Widget/components/Pivot/Cell.tsx | 5 +- .../Widget/components/Pivot/Chart.tsx | 26 +- .../Widget/components/Pivot/ColumnFooter.tsx | 5 +- .../Widget/components/Pivot/ColumnHeader.tsx | 5 +- .../Widget/components/Pivot/ColumnTitle.tsx | 3 +- .../Widget/components/Pivot/Corner.tsx | 2 +- .../Widget/components/Pivot/Legend.tsx | 2 +- .../Widget/components/Pivot/Pivot.less | 58 +-- .../Widget/components/Pivot/Pivot.tsx | 93 +--- .../Widget/components/Pivot/RowHeader.tsx | 5 +- .../Widget/components/Pivot/RowTitle.tsx | 3 +- .../Widget/components/Pivot/TableBody.tsx | 5 +- .../Widget/components/Pivot/Xaxis.tsx | 5 +- .../Widget/components/Pivot/Yaxis.tsx | 5 +- .../Widget/components/Pivot/index.tsx | 2 +- .../PivotInViz.tsx => Widget/WidgetInViz.tsx} | 28 +- .../Widget/components/Widget/index.tsx | 137 ++++++ .../components/Workbench/ChartIndicator.tsx | 21 +- .../Workbench/ConfigSections/LabelSection.tsx | 118 +++++ .../ConfigSections/LegendSection.tsx | 115 +++++ .../Widget/components/Workbench/Dropbox.tsx | 2 +- .../components/Workbench/DropboxItem.tsx | 12 +- .../components/Workbench/OperatingPanel.tsx | 208 ++++++--- ...artSelector.tsx => PivotChartSelector.tsx} | 17 +- .../components/Workbench/Workbench.less | 16 +- .../Widget/components/Workbench/index.tsx | 35 +- .../app/containers/Widget/components/util.ts | 95 +++- .../Widget/config/chart}/area.json | 0 .../Widget/config/chart}/bar.json | 0 .../app/containers/Widget/config/chart/bar.ts | 81 ++++ .../Widget/config/chart}/boxplot.json | 0 .../Widget/config/chart}/confidenceBand.json | 0 .../Widget/config/chart}/doubleYAxis.json | 0 .../Widget/config/chart}/funnel.json | 0 .../Widget/config/chart}/gauge.json | 0 .../Widget/config/chart}/graph.json | 0 .../containers/Widget/config/chart/index.tsx | 33 ++ .../Widget/config/chart}/line.json | 0 .../containers/Widget/config/chart/line.ts | 82 ++++ .../Widget/config/chart}/map.json | 0 .../Widget/config/chart}/markBoxplot.json | 0 .../Widget/config/chart}/parallel.json | 0 .../Widget/config/chart}/pie.json | 0 .../Widget/config/chart}/radar.json | 0 .../Widget/config/chart}/sankey.json | 0 .../Widget/config/chart}/scatter.json | 0 .../Widget/config/chart}/scorecard.json | 0 .../Widget/config/chart}/table.json | 0 .../containers/Widget/config/chart/table.ts | 31 ++ .../Widget/config/chart}/text.json | 0 .../Widget/config/chart}/treemap.json | 0 .../Widget/config/chart}/waterfall.json | 0 .../Widget/config/chart}/wordCloud.json | 0 webapp/app/containers/Widget/config/index.ts | 7 + .../app/containers/Widget/config/pivot/bar.ts | 79 ++++ .../containers/Widget/config/pivot/index.ts | 36 ++ .../containers/Widget/config/pivot/line.ts | 83 ++++ .../app/containers/Widget/config/pivot/pie.ts | 67 +++ .../containers/Widget/config/pivot/pivot.ts | 36 ++ .../containers/Widget/config/pivot/scatter.ts | 86 ++++ webapp/app/containers/Widget/index.tsx | 19 +- .../lineOld.ts => render/chart/area.ts} | 81 +--- .../app/containers/Widget/render/chart/bar.ts | 338 +++++++++++++++ .../containers/Widget/render/chart/funnel.ts | 189 ++++++++ .../containers/Widget/render/chart/index.ts | 45 ++ .../containers/Widget/render/chart/line.ts | 410 ++++++++++++++++++ .../app/containers/Widget/render/chart/map.ts | 217 +++++++++ .../Widget/render/chart/mapFile/china.js | 28 ++ .../{charts/pieOld.ts => render/chart/pie.ts} | 0 .../radarOld.ts => render/chart/radar.ts} | 0 .../scatterOld.ts => render/chart/scatter.ts} | 0 .../Widget/render/chart/wordCloud.ts | 99 +++++ .../app/containers/Widget/render/pivot/bar.ts | 29 ++ .../Widget/{charts => render/pivot}/index.ts | 5 +- .../containers/Widget/render/pivot/line.ts | 27 ++ .../app/containers/Widget/render/pivot/pie.ts | 80 ++++ .../containers/Widget/render/pivot/scatter.ts | 30 ++ webapp/app/globalConstants.ts | 22 + webapp/share/containers/Dashboard/index.tsx | 13 +- webapp/share/containers/Display/index.tsx | 4 +- 100 files changed, 4689 insertions(+), 1154 deletions(-) delete mode 100644 webapp/app/assets/json/widgetlib/index.ts delete mode 100644 webapp/app/containers/Widget/charts/barOld.ts create mode 100644 webapp/app/containers/Widget/components/Chart/Chart.less create mode 100644 webapp/app/containers/Widget/components/Chart/Chart.tsx create mode 100644 webapp/app/containers/Widget/components/Chart/Table.tsx create mode 100644 webapp/app/containers/Widget/components/Chart/index.tsx rename webapp/app/containers/Widget/components/{Pivot/PivotInViz.tsx => Widget/WidgetInViz.tsx} (52%) create mode 100644 webapp/app/containers/Widget/components/Widget/index.tsx create mode 100644 webapp/app/containers/Widget/components/Workbench/ConfigSections/LabelSection.tsx create mode 100644 webapp/app/containers/Widget/components/Workbench/ConfigSections/LegendSection.tsx rename webapp/app/containers/Widget/components/Workbench/{ChartSelector.tsx => PivotChartSelector.tsx} (74%) rename webapp/app/{assets/json/widgetlib => containers/Widget/config/chart}/area.json (100%) rename webapp/app/{assets/json/widgetlib => containers/Widget/config/chart}/bar.json (100%) create mode 100644 webapp/app/containers/Widget/config/chart/bar.ts rename webapp/app/{assets/json/widgetlib => containers/Widget/config/chart}/boxplot.json (100%) rename webapp/app/{assets/json/widgetlib => containers/Widget/config/chart}/confidenceBand.json (100%) rename webapp/app/{assets/json/widgetlib => containers/Widget/config/chart}/doubleYAxis.json (100%) rename webapp/app/{assets/json/widgetlib => containers/Widget/config/chart}/funnel.json (100%) rename webapp/app/{assets/json/widgetlib => containers/Widget/config/chart}/gauge.json (100%) rename webapp/app/{assets/json/widgetlib => containers/Widget/config/chart}/graph.json (100%) create mode 100644 webapp/app/containers/Widget/config/chart/index.tsx rename webapp/app/{assets/json/widgetlib => containers/Widget/config/chart}/line.json (100%) create mode 100644 webapp/app/containers/Widget/config/chart/line.ts rename webapp/app/{assets/json/widgetlib => containers/Widget/config/chart}/map.json (100%) rename webapp/app/{assets/json/widgetlib => containers/Widget/config/chart}/markBoxplot.json (100%) rename webapp/app/{assets/json/widgetlib => containers/Widget/config/chart}/parallel.json (100%) rename webapp/app/{assets/json/widgetlib => containers/Widget/config/chart}/pie.json (100%) rename webapp/app/{assets/json/widgetlib => containers/Widget/config/chart}/radar.json (100%) rename webapp/app/{assets/json/widgetlib => containers/Widget/config/chart}/sankey.json (100%) rename webapp/app/{assets/json/widgetlib => containers/Widget/config/chart}/scatter.json (100%) rename webapp/app/{assets/json/widgetlib => containers/Widget/config/chart}/scorecard.json (100%) rename webapp/app/{assets/json/widgetlib => containers/Widget/config/chart}/table.json (100%) create mode 100644 webapp/app/containers/Widget/config/chart/table.ts rename webapp/app/{assets/json/widgetlib => containers/Widget/config/chart}/text.json (100%) rename webapp/app/{assets/json/widgetlib => containers/Widget/config/chart}/treemap.json (100%) rename webapp/app/{assets/json/widgetlib => containers/Widget/config/chart}/waterfall.json (100%) rename webapp/app/{assets/json/widgetlib => containers/Widget/config/chart}/wordCloud.json (100%) create mode 100644 webapp/app/containers/Widget/config/index.ts create mode 100644 webapp/app/containers/Widget/config/pivot/bar.ts create mode 100644 webapp/app/containers/Widget/config/pivot/index.ts create mode 100644 webapp/app/containers/Widget/config/pivot/line.ts create mode 100644 webapp/app/containers/Widget/config/pivot/pie.ts create mode 100644 webapp/app/containers/Widget/config/pivot/pivot.ts create mode 100644 webapp/app/containers/Widget/config/pivot/scatter.ts rename webapp/app/containers/Widget/{charts/lineOld.ts => render/chart/area.ts} (78%) create mode 100644 webapp/app/containers/Widget/render/chart/bar.ts create mode 100644 webapp/app/containers/Widget/render/chart/funnel.ts create mode 100644 webapp/app/containers/Widget/render/chart/index.ts create mode 100644 webapp/app/containers/Widget/render/chart/line.ts create mode 100644 webapp/app/containers/Widget/render/chart/map.ts create mode 100644 webapp/app/containers/Widget/render/chart/mapFile/china.js rename webapp/app/containers/Widget/{charts/pieOld.ts => render/chart/pie.ts} (100%) rename webapp/app/containers/Widget/{charts/radarOld.ts => render/chart/radar.ts} (100%) rename webapp/app/containers/Widget/{charts/scatterOld.ts => render/chart/scatter.ts} (100%) create mode 100644 webapp/app/containers/Widget/render/chart/wordCloud.ts create mode 100644 webapp/app/containers/Widget/render/pivot/bar.ts rename webapp/app/containers/Widget/{charts => render/pivot}/index.ts (92%) create mode 100644 webapp/app/containers/Widget/render/pivot/line.ts create mode 100644 webapp/app/containers/Widget/render/pivot/pie.ts create mode 100644 webapp/app/containers/Widget/render/pivot/scatter.ts diff --git a/webapp/app/assets/json/widgetlib/index.ts b/webapp/app/assets/json/widgetlib/index.ts deleted file mode 100644 index 71c7db6e4..000000000 --- a/webapp/app/assets/json/widgetlib/index.ts +++ /dev/null @@ -1,344 +0,0 @@ -/* - * << - * Davinci - * == - * Copyright (C) 2016 - 2017 EDP - * == - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * >> - */ - -// import area from './area.json' -// import bar from './bar.json' -// import funnel from './funnel.json' -// import line from './line.json' -// import pie from './pie.json' -// import sankey from './sankey.json' -// import scatter from './scatter.json' -// import wordCloud from './wordCloud.json' -// import table from './table.json' -// import scorecard from './scorecard.json' -// import text from './text.json' -// import map from './map.json' -// import doubleYAxis from './doubleYAxis.json' -// import boxplot from './boxplot.json' -// import graph from './graph.json' -// import markBoxplot from './markBoxplot.json' -// import waterfall from './waterfall.json' -// import gauge from './gauge.json' -// import radar from './radar.json' -// import parallel from './parallel.json' -// import confidenceBand from './confidenceBand.json' - -import { IChartInfo } from '../../../containers/Widget/components/Pivot/Chart' -import { - PIVOT_DEFAULT_AXIS_LINE_COLOR, - PIVOT_CHART_FONT_FAMILIES, - PIVOT_DEFAULT_FONT_COLOR, - PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR -} from '../../../globalConstants' - -const widgetlibs: IChartInfo[] = [{ - id: 1, - name: 'pivot', - title: '透视表', - icon: 'icon-table', - coordinate: 'cartesian', - requireDimetions: 0, - requireMetrics: 0, - data: { - color: { - title: '颜色', - type: 'category' - } - }, - style: { - pivot: { - fontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, - fontSize: '12', - color: PIVOT_DEFAULT_FONT_COLOR, - lineStyle: 'solid', - lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, - headerBackgroundColor: PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR - } - } -}, { - id: 2, - name: 'line', - title: '折线图', - icon: 'icon-chart-line', - coordinate: 'cartesian', - requireDimetions: 1, - requireMetrics: 1, - dimetionAxis: 'col', - data: { - color: { - title: '颜色', - type: 'category' - }, - label: { - title: '标签', - type: 'all' - }, - tip: { - title: '提示信息', - type: 'value' - } - }, - style: { - spec: { - smooth: false, - step: false - }, - xAxis: { - showLine: true, - lineStyle: 'solid', - lineSize: '1', - lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, - showLabel: true, - labelFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, - labelFontSize: '12', - labelColor: PIVOT_DEFAULT_FONT_COLOR - }, - yAxis: { - showLine: true, - lineStyle: 'solid', - lineSize: '1', - lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, - showLabel: true, - labelFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, - labelFontSize: '12', - labelColor: PIVOT_DEFAULT_FONT_COLOR, - showTitleAndUnit: true, - titleFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, - titleFontSize: '12', - titleColor: PIVOT_DEFAULT_FONT_COLOR - }, - splitLine: { - showHorizontalLine: true, - horizontalLineStyle: 'dashed', - horizontalLineSize: '1', - horizontalLineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, - showVerticalLine: false, - verticalLineStyle: 'dashed', - verticalLineSize: '1', - verticalLineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR - }, - pivot: { - fontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, - fontSize: '12', - color: PIVOT_DEFAULT_FONT_COLOR, - lineStyle: 'solid', - lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, - headerBackgroundColor: PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR - } - } -}, { - id: 3, - name: 'bar', - title: '柱状图', - icon: 'icon-chart-bar', - coordinate: 'cartesian', - requireDimetions: 0, - requireMetrics: 1, - dimetionAxis: 'col', - data: { - color: { - title: '颜色', - type: 'category' - }, - label: { - title: '标签', - type: 'all' - }, - tip: { - title: '提示信息', - type: 'value' - } - }, - style: { - xAxis: { - showLine: true, - lineStyle: 'solid', - lineSize: '1', - lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, - showLabel: true, - labelFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, - labelFontSize: '12', - labelColor: PIVOT_DEFAULT_FONT_COLOR - }, - yAxis: { - showLine: true, - lineStyle: 'solid', - lineSize: '1', - lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, - showLabel: true, - labelFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, - labelFontSize: '12', - labelColor: PIVOT_DEFAULT_FONT_COLOR, - showTitleAndUnit: true, - titleFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, - titleFontSize: '12', - titleColor: PIVOT_DEFAULT_FONT_COLOR - }, - splitLine: { - showHorizontalLine: true, - horizontalLineStyle: 'dashed', - horizontalLineSize: '1', - horizontalLineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, - showVerticalLine: false, - verticalLineStyle: 'dashed', - verticalLineSize: '1', - verticalLineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR - }, - pivot: { - fontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, - fontSize: '12', - color: PIVOT_DEFAULT_FONT_COLOR, - lineStyle: 'solid', - lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, - headerBackgroundColor: PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR - } - } -}, { - id: 4, - name: 'scatter', - title: '散点图', - icon: 'icon-scatter-chart', - coordinate: 'cartesian', - requireDimetions: 0, - requireMetrics: 1, - data: { - xAxis: { - title: 'x数据轴', - type: 'value' - }, - color: { - title: '颜色', - type: 'category' - }, - size: { - title: '尺寸', - type: 'value' - }, - label: { - title: '标签', - type: 'all' - }, - tip: { - title: '提示信息', - type: 'value' - } - }, - style: { - xAxis: { - showLine: true, - lineStyle: 'solid', - lineSize: '1', - lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, - showLabel: true, - labelFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, - labelFontSize: '12', - labelColor: PIVOT_DEFAULT_FONT_COLOR - }, - yAxis: { - showLine: true, - lineStyle: 'solid', - lineSize: '1', - lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, - showLabel: true, - labelFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, - labelFontSize: '12', - labelColor: PIVOT_DEFAULT_FONT_COLOR, - showTitleAndUnit: true, - titleFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, - titleFontSize: '12', - titleColor: PIVOT_DEFAULT_FONT_COLOR - }, - splitLine: { - showHorizontalLine: true, - horizontalLineStyle: 'dashed', - horizontalLineSize: '1', - horizontalLineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, - showVerticalLine: false, - verticalLineStyle: 'dashed', - verticalLineSize: '1', - verticalLineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR - }, - pivot: { - fontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, - fontSize: '12', - color: PIVOT_DEFAULT_FONT_COLOR, - lineStyle: 'solid', - lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, - headerBackgroundColor: PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR - } - } -}, { - id: 5, - name: 'pie', - title: '饼图', - icon: 'icon-chartpie', - coordinate: 'polar', - requireDimetions: 0, - requireMetrics: 1, - data: { - color: { - title: '颜色', - type: 'category' - }, - label: { - title: '标签', - type: 'all' - }, - tip: { - title: '提示信息', - type: 'value' - } - }, - style: { - spec: { - circle: false - }, - xAxis: { - showLine: true, - lineStyle: 'solid', - lineSize: '1', - lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, - showLabel: true, - labelFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, - labelFontSize: '12', - labelColor: PIVOT_DEFAULT_FONT_COLOR - }, - splitLine: { - showHorizontalLine: true, - horizontalLineStyle: 'dashed', - horizontalLineSize: '1', - horizontalLineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, - showVerticalLine: false, - verticalLineStyle: 'dashed', - verticalLineSize: '1', - verticalLineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR - }, - pivot: { - fontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, - fontSize: '12', - color: PIVOT_DEFAULT_FONT_COLOR, - lineStyle: 'solid', - lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, - headerBackgroundColor: PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR - } - } -}] - -export default widgetlibs diff --git a/webapp/app/containers/Dashboard/Grid.tsx b/webapp/app/containers/Dashboard/Grid.tsx index 1495e8acb..6292159dd 100644 --- a/webapp/app/containers/Dashboard/Grid.tsx +++ b/webapp/app/containers/Dashboard/Grid.tsx @@ -55,10 +55,8 @@ const Icon = require('antd/lib/icon') const Dropdown = require('antd/lib/dropdown') const Menu = require('antd/lib/menu') -import widgetlibs from '../../assets/json/widgetlib' import FullScreenPanel from './components/fullScreenPanel/FullScreenPanel' -import { decodeMetricName, getAggregatorLocale } from '../Widget/components/util' -import { uuid } from '../../utils/util' +import { decodeMetricName } from '../Widget/components/util' import { loadDashboardDetail, addDashboardItem, @@ -108,7 +106,7 @@ import { KEY_COLUMN } from '../../globalConstants' import { InjectedRouter } from 'react-router/lib/Router' -import { IPivotProps, RenderType } from '../Widget/components/Pivot/Pivot' +import { IWidgetProps, RenderType } from '../Widget/components/Widget' import { IProject } from '../Projects' import { ICurrentDashboard } from './' @@ -377,7 +375,7 @@ export class Grid extends React.Component { } = this.props const widget = widgets.find((w) => w.id === widgetId) - const widgetConfig: IPivotProps = JSON.parse(widget.config) + const widgetConfig: IWidgetProps = JSON.parse(widget.config) const { cols, rows, metrics, filters, color, label, size, xAxis, tip, orders, cache, expired } = widgetConfig const cachedQueryParams = currentItemsInfo[itemId].queryParams @@ -464,13 +462,13 @@ export class Grid extends React.Component { ) } - private downloadCsv = (itemId: number, pivotProps: IPivotProps, shareInfo: string) => { + private downloadCsv = (itemId: number, widgetProps: IWidgetProps, shareInfo: string) => { const { currentItemsInfo, onLoadWidgetCsv } = this.props - const { cols, rows, metrics, filters, color, label, size, xAxis, tip, orders, cache, expired } = pivotProps + const { cols, rows, metrics, filters, color, label, size, xAxis, tip, orders, cache, expired } = widgetProps let groups = cols.concat(rows) let aggregators = metrics.map((m) => ({ @@ -903,10 +901,8 @@ export class Grid extends React.Component { const { currentItems, widgets } = this.props const dashboardItem = currentItems.find((ci) => ci.id === dashboardItemId) const widget = widgets.find((w) => w.id === dashboardItem.widgetId) - const widgetlib = widgetlibs.find((wl) => wl.id === widget.type) return { - name: widget.name, - type: widgetlib.name + name: widget.name } } diff --git a/webapp/app/containers/Dashboard/components/DashboardItem.tsx b/webapp/app/containers/Dashboard/components/DashboardItem.tsx index 17a3dcc95..3841ac3ce 100644 --- a/webapp/app/containers/Dashboard/components/DashboardItem.tsx +++ b/webapp/app/containers/Dashboard/components/DashboardItem.tsx @@ -27,8 +27,8 @@ import DashboardItemControlForm from './DashboardItemControlForm' import SharePanel from '../../../components/SharePanel' import DownloadCsv, { IDownloadCsvProps } from '../../../components/DownloadCsv' -import Pivot from '../../Widget/components/Pivot/PivotInViz' -import { IPivotProps, RenderType } from '../../Widget/components/Pivot/Pivot' +import Widget from '../../Widget/components/Widget/WidgetInViz' +import { IWidgetProps, RenderType } from '../../Widget/components/Widget' import { IconProps } from 'antd/lib/icon' const Icon = require('antd/lib/icon') const Tooltip = require('antd/lib/tooltip') @@ -65,7 +65,7 @@ interface IDashboardItemProps { onShowEdit?: (itemId: number) => (e: React.MouseEvent) => void onDeleteDashboardItem?: (itemId: number) => () => void onLoadWidgetShareLink?: (id: number, itemId: number, authName: string) => void - onDownloadCsv: (itemId: number, pivotProps: IPivotProps, shareInfo: string) => void + onDownloadCsv: (itemId: number, widgetProps: IWidgetProps, shareInfo: string) => void onTurnOffInteract: (itemId: number) => void onShowFullScreen: (chartData: any) => void onCheckTableInteract: (itemId: number) => boolean @@ -76,7 +76,7 @@ interface IDashboardItemProps { interface IDashboardItemStates { controlPanelVisible: boolean sharePanelAuthorized: boolean - pivotProps: IPivotProps + widgetProps: IWidgetProps } export class DashboardItem extends React.PureComponent { @@ -85,7 +85,7 @@ export class DashboardItem extends React.PureComponent { const { widget, itemId, shareInfo, onDownloadCsv } = this.props - const { pivotProps } = this.state + const { widgetProps } = this.state - onDownloadCsv(widget.id, pivotProps, shareInfo) + onDownloadCsv(widget.id, widgetProps, shareInfo) } private changeSharePanelAuthorizeState = (state) => () => { this.setState({ @@ -255,7 +255,7 @@ export class DashboardItem extends React.PureComponent c.type) + const controls = widgetProps.queryParams.filter((c) => c.type) const controlPanelHandle = controls.length ? ( @@ -434,8 +434,8 @@ export class DashboardItem extends React.PureComponent
    - { + if (val.length) { arr = arr.concat({ name: valControl.variables[0], - value: `${v}` + value: val.map((v) => `${v}`).join(',') }) - }) + } break default: break diff --git a/webapp/app/containers/Dashboard/components/DashboardLinkageConfig.tsx b/webapp/app/containers/Dashboard/components/DashboardLinkageConfig.tsx index 22221ad33..ba6909183 100644 --- a/webapp/app/containers/Dashboard/components/DashboardLinkageConfig.tsx +++ b/webapp/app/containers/Dashboard/components/DashboardLinkageConfig.tsx @@ -24,7 +24,7 @@ const Modal = require('antd/lib/modal') import { SQL_NUMBER_TYPES, DEFAULT_SPLITER } from '../../../globalConstants' import { decodeMetricName, getAggregatorLocale } from '../../Widget/components/util' -import { IPivotProps, RenderType } from '../../Widget/components/Pivot/Pivot' +import { IWidgetProps } from '../../Widget/components/Widget' import LinkageConfig from 'components/Linkages/LinkageConfig' const styles = require('../Dashboard.less') @@ -75,7 +75,7 @@ export class DashboardLinkageConfig extends React.Component { const dashboardItem = currentItems.find((ci) => `${ci.id}` === k) const widget = widgets.find((w) => w.id === dashboardItem.widgetId) - const widgetConfig: IPivotProps = JSON.parse(widget.config) + const widgetConfig: IWidgetProps = JSON.parse(widget.config) const { cols, rows, metrics } = widgetConfig const view = views.find((bl) => bl.id === widget.viewId) diff --git a/webapp/app/containers/Dashboard/components/fullScreenPanel/FullScreenPanel.tsx b/webapp/app/containers/Dashboard/components/fullScreenPanel/FullScreenPanel.tsx index e05e5e274..70725e508 100644 --- a/webapp/app/containers/Dashboard/components/fullScreenPanel/FullScreenPanel.tsx +++ b/webapp/app/containers/Dashboard/components/fullScreenPanel/FullScreenPanel.tsx @@ -6,7 +6,7 @@ import * as echarts from 'echarts/lib/echarts' import DashboardItemControlForm from '../DashboardItemControlForm' import {iconMapping, echartsOptionsGenerator} from '../../../Widget/components/chartUtil' import Chart from '../Chart' -import Pivot from '../../../Widget/components/Pivot/PivotInViz' +import Widget from '../../../Widget/components/Widget/WidgetInViz' import {ECHARTS_RENDERER} from '../../../../globalConstants' const styles = require('./fullScreenPanel.less') @@ -152,12 +152,12 @@ class FullScreenPanel extends React.PureComponent diff --git a/webapp/app/containers/Display/Editor.tsx b/webapp/app/containers/Display/Editor.tsx index 29b9bf974..a2841e0e9 100644 --- a/webapp/app/containers/Display/Editor.tsx +++ b/webapp/app/containers/Display/Editor.tsx @@ -87,7 +87,7 @@ import { const message = require('antd/lib/message') const styles = require('./Display.less') -import { IPivotProps, RenderType } from '../Widget/components/Pivot/Pivot' +import { IWidgetProps, RenderType } from '../Widget/components/Widget' import { decodeMetricName } from '../Widget/components/util' import { loadBizlogics, @@ -343,7 +343,7 @@ export class Editor extends React.Component { } = this.props const widget = widgets.find((w) => w.id === widgetId) - const widgetConfig: IPivotProps = JSON.parse(widget.config) + const widgetConfig: IWidgetProps = JSON.parse(widget.config) const { cols, rows, metrics, filters, color, label, size, xAxis, tip, orders, cache, expired } = widgetConfig const cachedQueryParams = currentLayersInfo[itemId].queryParams diff --git a/webapp/app/containers/Display/Preview.tsx b/webapp/app/containers/Display/Preview.tsx index 433aa8823..db354eaa3 100644 --- a/webapp/app/containers/Display/Preview.tsx +++ b/webapp/app/containers/Display/Preview.tsx @@ -49,13 +49,12 @@ import { import { ECHARTS_RENDERER, DEFAULT_PRIMARY_COLOR } from '../../globalConstants' -import widgetlibs from '../../assets/json/widgetlib' import LayerItem from './components/LayerItem' const styles = require('./Display.less') const stylesDashboard = require('../Dashboard/Dashboard.less') -import { IPivotProps, RenderType } from '../Widget/components/Pivot/Pivot' +import { IWidgetProps, RenderType } from '../Widget/components/Widget' import { decodeMetricName } from '../Widget/components/util' interface IBizdataIncomeParamObject { @@ -178,7 +177,7 @@ export class Preview extends React.Component { } = this.props const widget = widgets.find((w) => w.id === widgetId) - const widgetConfig: IPivotProps = JSON.parse(widget.config) + const widgetConfig: IWidgetProps = JSON.parse(widget.config) const { cols, rows, metrics, filters, color, label, size, xAxis, tip, orders, cache, expired } = widgetConfig const cachedQueryParams = currentLayersInfo[itemId].queryParams @@ -305,7 +304,6 @@ export class Preview extends React.Component { const slideStyle = this.getSlideStyle(JSON.parse(currentSlide.config).slideParams) const layerItems = Array.isArray(widgets) ? currentLayers.map((layer) => { const widget = widgets.find((w) => w.id === layer.widgetId) - const chartInfo = widget && widgetlibs.find((wl) => wl.id === widget.type) const layerId = layer.id const { polling, frequency } = layer.params diff --git a/webapp/app/containers/Display/components/LayerItem.tsx b/webapp/app/containers/Display/components/LayerItem.tsx index be8111040..2abe8584f 100644 --- a/webapp/app/containers/Display/components/LayerItem.tsx +++ b/webapp/app/containers/Display/components/LayerItem.tsx @@ -15,8 +15,8 @@ import { SecondaryGraphTypes } from 'utils/util' import { GRID_ITEM_MARGIN } from '../../../globalConstants' -import Pivot from '../../Widget/components/Pivot/PivotInViz' -import { IPivotProps, RenderType } from '../../Widget/components/Pivot/Pivot' +import { IWidgetProps, RenderType } from '../../Widget/components/Widget' +import Widget from '../../Widget/components/Widget/WidgetInViz' const Resizable = require('../../../../libs/react-resizable').Resizable @@ -53,7 +53,7 @@ interface ILayerItemStates { layerParams: any layerTooltipPosition: [number, number] mousePos: number[] - pivotProps: IPivotProps + widgetProps: IWidgetProps } export class LayerItem extends React.PureComponent { @@ -67,7 +67,7 @@ export class LayerItem extends React.PureComponent {this.wrapLayerTooltip( - () )} diff --git a/webapp/app/containers/Projects/Project.less b/webapp/app/containers/Projects/Project.less index 7b064d9bd..19e48aac3 100644 --- a/webapp/app/containers/Projects/Project.less +++ b/webapp/app/containers/Projects/Project.less @@ -291,6 +291,7 @@ box-shadow: 0 -1px 0 @grey-line-color; display: flex; justify-content: space-between; + cursor: pointer; &:hover { color: @blue; } @@ -331,6 +332,10 @@ display: flex; justify-content: space-between; margin-bottom: 16px; + cursor: pointer; + &:hover { + color: @blue; + } .orgHeader { display: flex; .avatar { @@ -353,9 +358,6 @@ color: @description-text; } } - &:hover { - color: @blue; - } } .others{ position: relative; diff --git a/webapp/app/containers/Widget/charts/bar.ts b/webapp/app/containers/Widget/charts/bar.ts index cc575568d..3bb116efd 100644 --- a/webapp/app/containers/Widget/charts/bar.ts +++ b/webapp/app/containers/Widget/charts/bar.ts @@ -18,12 +18,316 @@ * >> */ -export default function (elementSize) { +/* + * Bar chart options generator + */ + +export default function (dataSource, flatInfo, chartParams, interactIndex) { + const { + xAxis, + metrics, + xAxisMin, + xAxisMax, + vertical, + stack, + label, + xAxisInterval, + xAxisRotate, + dataZoomThreshold, + hasLegend, + legendSelected, + legendPosition, + toolbox, + splitLineX, + splitLineY, + splitLineStyle, + splitLineWidth, + top, + bottom, + left, + right, + suffixYAxis, + stackAccounting + } = chartParams + + let metricOptions + let xAxisOptions + let yAxisOptions + let stackOption + let labelOption + let legendOptions + let toolboxOptions + let gridOptions + let dataZoomOptions + let suffixYAxisOptions + let yAxisValueRangeOptions + + // series 数据项 + const metricArr = [] + + if (metrics) { + const dataOption = metrics.map((me) => dataSource.map((data) => data[me])) + let wrapper = [] + dataOption.forEach((data, index) => { + data.forEach((da, i) => { + if (wrapper[i]) { + wrapper[i].push(da) + } else { + wrapper[i] = [da] + } + }) + }) + wrapper = wrapper.map((wrap, index) => wrap.reduce((sum, val) => sum + Number(val), 0)) + metrics.forEach((m) => { + stackOption = stack && stack.length ? { stack: 'stack' } : null + + if (vertical && vertical.length) { + labelOption = { + label: { + normal: { + show: true, + position: 'insideLeft' + } + } + } + } else { + labelOption = label && label.length + ? { + label: { + normal: { + show: true, + formatter: (param) => { + const result = (Number(param.value) / wrapper[param.dataIndex]) * 100 + if (stackAccounting && stackAccounting.length && stack && stack.length) { + return `${param.value}\r\n(${result.toFixed(0)}%)` + } + }, + position: stack && stack.length ? 'insideTop' : 'top' + } + } + } : null + } + + const serieObj = { + name: m, + type: 'bar', + sampling: 'average', + data: dataSource.map((d, index) => { + if (index === interactIndex) { + return { + value: d[m], + itemStyle: { + normal: { + opacity: 1 + } + } + } + } else { + return d[m] + } + }), + itemStyle: { + normal: { + opacity: interactIndex === undefined ? 1 : 0.25 + } + }, + ...stackOption, + ...labelOption + } + metricArr.push(serieObj) + }) + metricOptions = { + series: metricArr + } + } + + // y轴区间 + yAxisValueRangeOptions = !xAxisMin && !xAxisMax ? null : { + min: xAxisMin, + max: xAxisMax + } + + // x轴与y轴数据 + suffixYAxisOptions = suffixYAxis && suffixYAxis.length ? {axisLabel: { + formatter: `{value} ${suffixYAxis}` + }} : null + if (vertical && vertical.length) { + if (xAxis) { + xAxisOptions = { + yAxis: { + data: dataSource.map((d) => d[xAxis]), + axisLabel: { + show: false + }, + axisLine: { + show: false + }, + axisTick: { + show: false + }, + splitLine: { + show: splitLineY && splitLineY.length, + lineStyle: { + width: splitLineWidth, + type: splitLineStyle + } + } + } + } + } + + yAxisOptions = { + xAxis: { + type: 'value', + position: 'top', + axisLabel: { + interval: xAxisInterval, + rotate: xAxisRotate + }, + splitLine: { + show: splitLineX && splitLineX.length, + lineStyle: { + width: splitLineWidth, + type: splitLineStyle + } + }, + ...yAxisValueRangeOptions + } + } + } else { + if (xAxis) { + xAxisOptions = { + xAxis: { + data: dataSource.map((d) => d[xAxis]), + axisLabel: { + interval: xAxisInterval, + rotate: xAxisRotate + }, + splitLine: { + show: splitLineX && splitLineX.length, + lineStyle: { + width: splitLineWidth, + type: splitLineStyle + } + } + } + } + } + + yAxisOptions = { + yAxis: { + type: 'value', + splitLine: { + show: splitLineY && splitLineY.length, + lineStyle: { + width: splitLineWidth, + type: splitLineStyle + } + }, + ...suffixYAxisOptions, + ...yAxisValueRangeOptions + } + } + } + + // legend + let adjustedBottom = 0 + let adjustedRight = 0 + + if (hasLegend && hasLegend.length) { + let orient + let positions + + switch (legendPosition) { + case 'right': + orient = { orient: 'vertical' } + positions = { right: 8, top: 40, bottom: 16 } + adjustedRight = 108 + break + case 'bottom': + orient = { orient: 'horizontal' } + positions = { bottom: 16, left: 8, right: 8 } + adjustedBottom = 72 + break + default: + orient = { orient: 'horizontal' } + positions = { top: 3, left: 8, right: 120 } + break + } + + const selected = legendSelected === 'unselectAll' + ? { + selected: metricArr.reduce((obj, m) => ({ ...obj, [m.name]: false }), {}) + } : null + + legendOptions = { + legend: { + data: metricArr.map((m) => m.name), + type: 'scroll', + ...orient, + ...positions, + ...selected + } + } + } + + // toolbox + toolboxOptions = toolbox && toolbox.length + ? { + toolbox: { + feature: { + dataZoom: { + yAxisIndex: 'none' + }, + restore: {}, + saveAsImage: { + pixelRatio: 2 + } + }, + right: 8 + } + } : null + + // grid + gridOptions = { + grid: { + top, + left, + right: Math.max(right, adjustedRight), + bottom: Math.max(bottom, adjustedBottom) + } + } + + dataZoomOptions = dataZoomThreshold > 0 && dataZoomThreshold < dataSource.length && { + dataZoom: [{ + type: 'inside', + start: Math.round((1 - dataZoomThreshold / dataSource.length) * 100), + end: 100 + }, { + start: Math.round((1 - dataZoomThreshold / dataSource.length) * 100), + end: 100, + handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z', + handleSize: '80%', + handleStyle: { + color: '#fff', + shadowBlur: 3, + shadowColor: 'rgba(0, 0, 0, 0.6)', + shadowOffsetX: 2, + shadowOffsetY: 2 + } + }] + } + return { - chartOption: { - type: 'bar', - barWidth: elementSize * .8 + tooltip: { + trigger: 'axis' }, - stackOption: true + ...metricOptions, + ...xAxisOptions, + ...yAxisOptions, + ...legendOptions, + ...toolboxOptions, + ...gridOptions, + ...dataZoomOptions } } diff --git a/webapp/app/containers/Widget/charts/barOld.ts b/webapp/app/containers/Widget/charts/barOld.ts deleted file mode 100644 index 3bb116efd..000000000 --- a/webapp/app/containers/Widget/charts/barOld.ts +++ /dev/null @@ -1,333 +0,0 @@ -/* - * << - * Davinci - * == - * Copyright (C) 2016 - 2017 EDP - * == - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * >> - */ - -/* - * Bar chart options generator - */ - -export default function (dataSource, flatInfo, chartParams, interactIndex) { - const { - xAxis, - metrics, - xAxisMin, - xAxisMax, - vertical, - stack, - label, - xAxisInterval, - xAxisRotate, - dataZoomThreshold, - hasLegend, - legendSelected, - legendPosition, - toolbox, - splitLineX, - splitLineY, - splitLineStyle, - splitLineWidth, - top, - bottom, - left, - right, - suffixYAxis, - stackAccounting - } = chartParams - - let metricOptions - let xAxisOptions - let yAxisOptions - let stackOption - let labelOption - let legendOptions - let toolboxOptions - let gridOptions - let dataZoomOptions - let suffixYAxisOptions - let yAxisValueRangeOptions - - // series 数据项 - const metricArr = [] - - if (metrics) { - const dataOption = metrics.map((me) => dataSource.map((data) => data[me])) - let wrapper = [] - dataOption.forEach((data, index) => { - data.forEach((da, i) => { - if (wrapper[i]) { - wrapper[i].push(da) - } else { - wrapper[i] = [da] - } - }) - }) - wrapper = wrapper.map((wrap, index) => wrap.reduce((sum, val) => sum + Number(val), 0)) - metrics.forEach((m) => { - stackOption = stack && stack.length ? { stack: 'stack' } : null - - if (vertical && vertical.length) { - labelOption = { - label: { - normal: { - show: true, - position: 'insideLeft' - } - } - } - } else { - labelOption = label && label.length - ? { - label: { - normal: { - show: true, - formatter: (param) => { - const result = (Number(param.value) / wrapper[param.dataIndex]) * 100 - if (stackAccounting && stackAccounting.length && stack && stack.length) { - return `${param.value}\r\n(${result.toFixed(0)}%)` - } - }, - position: stack && stack.length ? 'insideTop' : 'top' - } - } - } : null - } - - const serieObj = { - name: m, - type: 'bar', - sampling: 'average', - data: dataSource.map((d, index) => { - if (index === interactIndex) { - return { - value: d[m], - itemStyle: { - normal: { - opacity: 1 - } - } - } - } else { - return d[m] - } - }), - itemStyle: { - normal: { - opacity: interactIndex === undefined ? 1 : 0.25 - } - }, - ...stackOption, - ...labelOption - } - metricArr.push(serieObj) - }) - metricOptions = { - series: metricArr - } - } - - // y轴区间 - yAxisValueRangeOptions = !xAxisMin && !xAxisMax ? null : { - min: xAxisMin, - max: xAxisMax - } - - // x轴与y轴数据 - suffixYAxisOptions = suffixYAxis && suffixYAxis.length ? {axisLabel: { - formatter: `{value} ${suffixYAxis}` - }} : null - if (vertical && vertical.length) { - if (xAxis) { - xAxisOptions = { - yAxis: { - data: dataSource.map((d) => d[xAxis]), - axisLabel: { - show: false - }, - axisLine: { - show: false - }, - axisTick: { - show: false - }, - splitLine: { - show: splitLineY && splitLineY.length, - lineStyle: { - width: splitLineWidth, - type: splitLineStyle - } - } - } - } - } - - yAxisOptions = { - xAxis: { - type: 'value', - position: 'top', - axisLabel: { - interval: xAxisInterval, - rotate: xAxisRotate - }, - splitLine: { - show: splitLineX && splitLineX.length, - lineStyle: { - width: splitLineWidth, - type: splitLineStyle - } - }, - ...yAxisValueRangeOptions - } - } - } else { - if (xAxis) { - xAxisOptions = { - xAxis: { - data: dataSource.map((d) => d[xAxis]), - axisLabel: { - interval: xAxisInterval, - rotate: xAxisRotate - }, - splitLine: { - show: splitLineX && splitLineX.length, - lineStyle: { - width: splitLineWidth, - type: splitLineStyle - } - } - } - } - } - - yAxisOptions = { - yAxis: { - type: 'value', - splitLine: { - show: splitLineY && splitLineY.length, - lineStyle: { - width: splitLineWidth, - type: splitLineStyle - } - }, - ...suffixYAxisOptions, - ...yAxisValueRangeOptions - } - } - } - - // legend - let adjustedBottom = 0 - let adjustedRight = 0 - - if (hasLegend && hasLegend.length) { - let orient - let positions - - switch (legendPosition) { - case 'right': - orient = { orient: 'vertical' } - positions = { right: 8, top: 40, bottom: 16 } - adjustedRight = 108 - break - case 'bottom': - orient = { orient: 'horizontal' } - positions = { bottom: 16, left: 8, right: 8 } - adjustedBottom = 72 - break - default: - orient = { orient: 'horizontal' } - positions = { top: 3, left: 8, right: 120 } - break - } - - const selected = legendSelected === 'unselectAll' - ? { - selected: metricArr.reduce((obj, m) => ({ ...obj, [m.name]: false }), {}) - } : null - - legendOptions = { - legend: { - data: metricArr.map((m) => m.name), - type: 'scroll', - ...orient, - ...positions, - ...selected - } - } - } - - // toolbox - toolboxOptions = toolbox && toolbox.length - ? { - toolbox: { - feature: { - dataZoom: { - yAxisIndex: 'none' - }, - restore: {}, - saveAsImage: { - pixelRatio: 2 - } - }, - right: 8 - } - } : null - - // grid - gridOptions = { - grid: { - top, - left, - right: Math.max(right, adjustedRight), - bottom: Math.max(bottom, adjustedBottom) - } - } - - dataZoomOptions = dataZoomThreshold > 0 && dataZoomThreshold < dataSource.length && { - dataZoom: [{ - type: 'inside', - start: Math.round((1 - dataZoomThreshold / dataSource.length) * 100), - end: 100 - }, { - start: Math.round((1 - dataZoomThreshold / dataSource.length) * 100), - end: 100, - handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z', - handleSize: '80%', - handleStyle: { - color: '#fff', - shadowBlur: 3, - shadowColor: 'rgba(0, 0, 0, 0.6)', - shadowOffsetX: 2, - shadowOffsetY: 2 - } - }] - } - - return { - tooltip: { - trigger: 'axis' - }, - ...metricOptions, - ...xAxisOptions, - ...yAxisOptions, - ...legendOptions, - ...toolboxOptions, - ...gridOptions, - ...dataZoomOptions - } -} diff --git a/webapp/app/containers/Widget/charts/line.ts b/webapp/app/containers/Widget/charts/line.ts index 0b44736a6..28c4c76a4 100644 --- a/webapp/app/containers/Widget/charts/line.ts +++ b/webapp/app/containers/Widget/charts/line.ts @@ -18,10 +18,336 @@ * >> */ -export default function () { - return { - chartOption: { - type: 'line' +/* + * Line chart options generator + */ +export default function (dataSource, flatInfo, chartParams, interactIndex) { + const hasGroups = flatInfo.groups + + const { + xAxis, + metrics, + groups, + label, + xAxisInterval, + xAxisRotate, + dataZoomThreshold, + smooth, + step, + symbol, + hasLegend, + legendSelected, + legendPosition, + toolbox, + splitLineX, + splitLineY, + splitLineStyle, + splitLineWidth, + top, + bottom, + left, + right, + suffixYAxis + } = chartParams + + let grouped + let metricOptions + let xAxisOptions + let smoothOption + let stepOption + let symbolOption + let legendOptions + let toolboxOptions + let gridOptions + let labelOption + let dataZoomOptions + let suffixYAxisOptions + + suffixYAxisOptions = suffixYAxis && suffixYAxis.length ? {axisLabel: { + formatter: `{value} ${suffixYAxis}` + }} : null + // symbol + symbolOption = symbol && symbol.length + ? { symbol: 'emptyCircle' } + : { symbol: 'none' } + // smooth + smoothOption = smooth && smooth.length ? { smooth: true } : null + // step + stepOption = step && step.length ? { step: true } : null + // label + labelOption = label && label.length + ? { + label: { + normal: { + show: true, + position: 'top' + } + } + } : null + // 数据分组 + let xAxisDistincted = [] + + if (hasGroups && groups && groups.length) { + xAxisDistincted = distinctXaxis(dataSource, xAxis) + grouped = makeGrouped(dataSource, [].concat(groups).filter((i) => !!i), xAxis, metrics, xAxisDistincted) + } + + // series 数据项; series = metrics * groups + const metricArr = [] + + if (metrics) { + metrics.forEach((m) => { + if (hasGroups && groups && groups.length) { + Object + .keys(grouped) + .forEach((k) => { + const serieObj = { + name: `${k} ${m}`, + type: 'line', + sampling: 'average', + data: grouped[k].map((g, index) => { + if (index === interactIndex) { + return { + value: g[m], + itemStyle: { + normal: { + opacity: 1 + } + } + } + } else { + return g[m] + } + }), + itemStyle: { + normal: { + opacity: interactIndex === undefined ? 1 : 0.25 + } + }, + ...symbolOption, + ...smoothOption, + ...stepOption, + ...labelOption + } + metricArr.push(serieObj) + }) + } else { + const serieObj = { + name: m, + type: 'line', + sampling: 'average', + symbol: symbolOption, + data: dataSource.map((d, index) => { + if (index === interactIndex) { + return { + value: d[m], + lineStyle: { + normal: { + opacity: 1 + } + }, + itemStyle: { + normal: { + opacity: 1 + } + } + } + } else { + return d[m] + } + }), + lineStyle: { + normal: { + opacity: interactIndex === undefined ? 1 : 0.25 + } + }, + itemStyle: { + normal: { + opacity: interactIndex === undefined ? 1 : 0.25 + } + }, + ...symbolOption, + ...smoothOption, + ...stepOption, + ...labelOption + } + metricArr.push(serieObj) + } + }) + metricOptions = { + series: metricArr } } + + // x轴数据 + xAxisOptions = xAxis && { + xAxis: { + data: hasGroups && groups && groups.length + ? xAxisDistincted + : dataSource.map((d) => d[xAxis]), + axisLabel: { + interval: xAxisInterval, + rotate: xAxisRotate + }, + splitLine: { + show: splitLineX && splitLineX.length, + lineStyle: { + width: splitLineWidth, + type: splitLineStyle + } + } + } + } + + // legend + let adjustedBottom = 0 + let adjustedRight = 0 + + if (hasLegend && hasLegend.length) { + let orient + let positions + + switch (legendPosition) { + case 'right': + orient = { orient: 'vertical' } + positions = { right: 8, top: 40, bottom: 16 } + adjustedRight = 108 + break + case 'bottom': + orient = { orient: 'horizontal' } + positions = { bottom: 16, left: 8, right: 8 } + adjustedBottom = 72 + break + default: + orient = { orient: 'horizontal' } + positions = { top: 3, left: 8, right: 120 } + break + } + + const selected = legendSelected === 'unselectAll' + ? { + selected: metricArr.reduce((obj, m) => ({ ...obj, [m.name]: false }), {}) + } : null + + legendOptions = { + legend: { + data: metricArr.map((m) => m.name), + type: 'scroll', + ...orient, + ...positions, + ...selected + } + } + } + + // toolbox + toolboxOptions = toolbox && toolbox.length + ? { + toolbox: { + feature: { + dataZoom: { + yAxisIndex: 'none' + }, + restore: {}, + saveAsImage: { + pixelRatio: 2 + } + }, + right: 8 + } + } : null + + // grid + gridOptions = { + grid: { + top, + left, + right: Math.max(right, adjustedRight), + bottom: Math.max(bottom, adjustedBottom) + } + } + + dataZoomOptions = dataZoomThreshold > 0 && dataZoomThreshold < dataSource.length && { + dataZoom: [{ + type: 'inside', + start: Math.round((1 - dataZoomThreshold / dataSource.length) * 100), + end: 100 + }, { + start: Math.round((1 - dataZoomThreshold / dataSource.length) * 100), + end: 100, + handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z', + handleSize: '80%', + handleStyle: { + color: '#fff', + shadowBlur: 3, + shadowColor: 'rgba(0, 0, 0, 0.6)', + shadowOffsetX: 2, + shadowOffsetY: 2 + } + }] + } + + return { + yAxis: { + type: 'value', + splitLine: { + show: splitLineY && splitLineY.length, + lineStyle: { + width: splitLineWidth, + type: splitLineStyle + } + }, + ...suffixYAxisOptions + }, + tooltip: { + trigger: 'axis' + }, + ...metricOptions, + ...xAxisOptions, + ...legendOptions, + ...toolboxOptions, + ...gridOptions, + ...dataZoomOptions + } +} + +export function makeGrouped (dataSource, groupColumns, xAxis, metrics, xAxisDistincted) { + const grouped = {} + + if (xAxis && metrics) { + dataSource.forEach((ds) => { + const accColumn = groupColumns + .reduce((arr, col) => arr.concat(ds[col]), []) + .join(' ') + if (!grouped[accColumn]) { + grouped[accColumn] = {} + } + grouped[accColumn][ds[xAxis]] = ds + }) + + Object.keys(grouped).map((accColumn) => { + const currentGroupValues = grouped[accColumn] + + grouped[accColumn] = xAxisDistincted.map((xd) => { + if (currentGroupValues[xd]) { + return currentGroupValues[xd] + } else { + return metrics.reduce((obj, m) => ({ ...obj, [m]: 0 }), {}) + } + }) + }) + } + + return grouped +} + +export function distinctXaxis (dataSource, xAxis) { + return xAxis + ? Object.keys(dataSource.reduce((distinct, ds) => { + if (!distinct[ds[xAxis]]) { + distinct[ds[xAxis]] = true + } + return distinct + }, {})) + : [] } diff --git a/webapp/app/containers/Widget/charts/pie.ts b/webapp/app/containers/Widget/charts/pie.ts index c7790da8c..b16735e62 100644 --- a/webapp/app/containers/Widget/charts/pie.ts +++ b/webapp/app/containers/Widget/charts/pie.ts @@ -18,63 +18,161 @@ * >> */ -import { DimetionType } from '../components/Pivot/Pivot' +/* + * Pie chart options generator + */ -export default function () { - return { - chartOption: { - type: 'pie' - }, - calcPieCenterAndRadius ( - dimetionAxis: DimetionType, - containerWidth: number, - containerHeight: number, - elementSize: number, - unitMetricLengthArr: number[], - horizontalRecordCountOfCol: number, - verticalRecordCountOfRow: number, - lineRecordSum: number, - lineCount: number, - unitCount: number, - metricCount: number, - recordCount: number, - lineIndex: number, - unitIndex: number, - metricIndex: number, - recordIndex: number - ): { center: string[], radius: string[]} { - let center - let radius - if (dimetionAxis === 'col') { - const verticalPer = 100 / lineCount / metricCount - const horizontalPer = 100 / horizontalRecordCountOfCol - center = [ - `${horizontalPer * (recordIndex + lineRecordSum + 1) - horizontalPer / 2}%`, - `${verticalPer * (metricIndex + metricCount * lineIndex + 1) - verticalPer / 2}%` - ] - if (containerWidth > containerHeight) { - const rate = Math.min(elementSize / unitMetricLengthArr[0], 1) - radius = ['0%', `${100 / metricCount / lineCount * rate * .75}%`] - } else { - const rate = Math.min(unitMetricLengthArr[0] / elementSize, 1) - radius = ['0%', `${100 / horizontalRecordCountOfCol * rate * .75}%`] +export default function (dataSource, flatInfo, chartParams, interactIndex) { + const { + title, + value, + circle, + insideRadius, + outsideRadius, + hasLegend, + legendSelected, + legendPosition, + toolbox, + top, + roseType, + left + } = chartParams + + let metricOptions + let labelOptions + let legendOptions + let toolboxOptions + let roseOptions + + // legend + let adjustedLeft = 0 + + if (hasLegend && hasLegend.length) { + let orient + let positions + + switch (legendPosition) { + case 'right': + orient = { orient: 'vertical' } + positions = { right: 8, top: 40, bottom: 16 } + adjustedLeft = 45 + break + case 'bottom': + orient = { orient: 'horizontal' } + positions = { bottom: 16, left: 8, right: 8 } + break + default: + orient = { orient: 'horizontal' } + positions = { top: 3, left: 8, right: 96 } + break + } + + const selected = legendSelected === 'unselectAll' + ? { + selected: dataSource.reduce((obj, d) => ({ ...obj, [d[title]]: false }), {}) + } : null + + legendOptions = { + legend: { + data: dataSource.map((d) => d[title]), + type: 'scroll', + ...orient, + ...positions, + ...selected + } + } + } + + // series 数据项 + const metricArr = [] + + labelOptions = circle && circle.length + ? { + label: { + normal: { + show: true, + position: 'inside', + formatter: '{d}%' + }, + emphasis: { + show: true, + position: 'center', + textStyle: { + fontSize: '16', + fontWeight: 'bold' + } } - } else { - const verticalPer = 100 / verticalRecordCountOfRow - const horizontalPer = 100 / unitCount / metricCount - center = [ - `${horizontalPer * (metricIndex + metricCount * unitIndex + 1) - horizontalPer / 2}%`, - `${verticalPer * (verticalRecordCountOfRow - recordIndex - lineIndex * recordCount) - verticalPer / 2}%` - ] - if (containerWidth > containerHeight) { - const rate = Math.min(unitMetricLengthArr[1] / elementSize, 1) - radius = ['0%', `${100 / verticalRecordCountOfRow * rate * .75}%`] - } else { - const rate = Math.min(elementSize / unitMetricLengthArr[1], 1) - radius = ['0%', `${100 / metricCount / unitCount * rate * .75}%`] + } + } + : { + label: { + normal: { + show: true, + formatter: '{b}({d}%)' } } - return { center, radius } } + roseOptions = roseType && roseType.length ? {roseType: 'radius'} : null + const serieObj = { + name: title, + type: 'pie', + radius: circle && circle.length ? [`${insideRadius}%`, `${outsideRadius}%`] : `${insideRadius}%`, + center: [ + adjustedLeft && legendPosition === 'right' ? `${Math.min(left, adjustedLeft)}%` : `${left}%`, + `${top}%` + ], + avoidLabelOverlap: !circle || !circle.length, + data: dataSource.map((d, index) => { + if (index === interactIndex) { + return { + name: d[title], + value: Number(d[value]), + itemStyle: { + normal: { + opacity: 1 + } + } + } + } else { + return { + name: d[title], + value: Number(d[value]) + } + } + }), + itemStyle: { + normal: { + opacity: interactIndex === undefined ? 1 : 0.25 + } + }, + ...roseOptions, + ...labelOptions + } + metricArr.push(serieObj) + metricOptions = { + series: metricArr + } + + // toolbox + toolboxOptions = toolbox && toolbox.length + ? { + toolbox: { + feature: { + dataView: {readOnly: false}, + restore: {}, + saveAsImage: {} + }, + right: 8 + } + } : null + + return { + tooltip: { + trigger: 'item', + formatter: '{b}
    {c} ({d}%)' + }, + ...metricOptions, + ...legendOptions, + ...toolboxOptions } } diff --git a/webapp/app/containers/Widget/charts/radar.ts b/webapp/app/containers/Widget/charts/radar.ts index 87352e988..d6ccc02cd 100644 --- a/webapp/app/containers/Widget/charts/radar.ts +++ b/webapp/app/containers/Widget/charts/radar.ts @@ -18,10 +18,140 @@ * >> */ -export default function () { - return { - chartOption: { - type: 'radar' +export default function (dataSource, flatInfo, chartParams, interactIndex) { + const { + dimension, + metrics, + hasLegend, + legendSelected, + legendPosition, + toolbox, + top, + bottom, + left, + right + } = chartParams + + let metricOptions + let legendOptions + let toolboxOptions + let gridOptions + let data + let radarOptions + + if (dimension && dimension.length) { + if (metrics && metrics.length) { + const metricData = metrics.map((me) => dataSource.map((data) => data[me])) + data = metrics.map((me, index) => ({ + name: me, + value: metricData[index] + })) + + radarOptions = { + radar: { + name: { + textStyle: { + color: '#fff', + backgroundColor: '#999', + borderRadius: 3, + padding: [3, 5] + } + }, + indicator: dataSource.map((data) => data[dimension]).map((name, index) => { + const max = Math.max.apply(null, metrics.map((me) => dataSource.map((data) => data[me])).map((list) => list[index]).map((arr) => parseFloat(arr))) + return { + name, + max: max + Math.floor(max * 0.1) + } + }) + } + } + } + } + metricOptions = { + series: [{ + // name: metricName && metricName.length ? metricName : '', + type: 'radar', + data + }] + } + // legend + let adjustedBottom = 0 + let adjustedRight = 0 + + if (hasLegend && hasLegend.length) { + let orient + let positions + + switch (legendPosition) { + case 'right': + orient = { orient: 'vertical' } + positions = { right: 8, top: 40, bottom: 16 } + adjustedRight = 108 + break + case 'bottom': + orient = { orient: 'horizontal' } + positions = { bottom: 16, left: 8, right: 8 } + adjustedBottom = 72 + break + default: + orient = { orient: 'horizontal' } + positions = { top: 3, left: 8, right: 120 } + break } + + const selected = legendSelected === 'unselectAll' + ? { + selected: metrics.reduce((obj, m) => ({ ...obj, [m]: false }), {}) + } : null + + legendOptions = { + legend: { + data: metrics, + type: 'scroll', + ...orient, + ...positions, + ...selected + } + } + } + // toolbox + toolboxOptions = toolbox && toolbox.length + ? { + toolbox: { + feature: { + dataZoom: { + yAxisIndex: 'none' + }, + restore: {}, + saveAsImage: { + pixelRatio: 2 + } + }, + right: 8 + } + } : null + // grid + gridOptions = { + grid: { + top, + left, + right: Math.max(right, adjustedRight), + bottom: Math.max(bottom, adjustedBottom) + } + } + + return { + tooltip: { + trigger: 'item', + axisPointer: { + type: 'shadow' + } + }, + ...metricOptions, + ...radarOptions, + ...legendOptions, + ...gridOptions, + ...toolboxOptions } } diff --git a/webapp/app/containers/Widget/charts/scatter.ts b/webapp/app/containers/Widget/charts/scatter.ts index 66a91a2c0..00176fc7a 100644 --- a/webapp/app/containers/Widget/charts/scatter.ts +++ b/webapp/app/containers/Widget/charts/scatter.ts @@ -18,13 +18,298 @@ * >> */ -export default function (sizeRate: {[key: string]: number}) { +/* + * Scatter chart options generator + */ + +export default function (dataSource, flatInfo, chartParams) { + const hasGroups = flatInfo.groups + + const { + groups, + xAxis, + yAxis, + xAxisInterval, + xAxisRotate, + dataZoomThreshold, + size, + label, + showLabel, + value, + shadow, + hasLegend, + legendSelected, + legendPosition, + toolbox, + splitLineX, + splitLineY, + splitLineStyle, + splitLineWidth, + top, + bottom, + left, + right, + suffixYAxis + } = chartParams + + let grouped + let metricOptions + let xAxisOptions + let yAxisOptions + let sizeOptions + let labelOptions + let shadowOptions + let legendOptions + let toolboxOptions + let gridOptions + let dataZoomOptions + let suffixYAxisOptions + + // series 数据项 + const metricArr = [] + + // 数据分组 + if (hasGroups && groups) { + grouped = makeGrouped(dataSource, [].concat(groups).filter((i) => !!i)) + } + + sizeOptions = size && { + symbolSize: (data) => { + return data[3] / size + } + } + shadowOptions = shadow && shadow.length && { + itemStyle: { + normal: { + shadowBlur: 10, + shadowColor: 'rgba(0, 0, 0, 0.5)', + shadowOffsetY: 5 + } + } + } + + if (label || showLabel && showLabel.length) { + let normal + let emphasis + + if (label) { + emphasis = { + emphasis: { + show: true, + opacity: 0.8, + position: 'top', + formatter: (param) => { + return param.data[2] + } + } + } + } + + if (showLabel && showLabel.length) { + normal = { + normal: { + show: true, + opacity: 0.8, + position: 'top', + formatter: (param) => { + return param.data[2] + } + } + } + } + + labelOptions = { + label: { + ...normal, + ...emphasis + } + } + } + + if (hasGroups && groups) { + Object + .keys(grouped) + .forEach((k) => { + const serieObj = { + name: k, + type: 'scatter', + data: grouped[k].map((g) => [g[xAxis], g[yAxis], g[label], g[value]]), + ...sizeOptions, + ...labelOptions, + ...shadowOptions + } + metricArr.push(serieObj) + }) + } else { + const serieObj = { + name: '数据', + type: 'scatter', + data: dataSource.map((g) => [g[xAxis], g[yAxis], g[label], g[value]]), + ...sizeOptions, + ...labelOptions, + ...shadowOptions + } + metricArr.push(serieObj) + } + + metricOptions = { + series: metricArr + } + + // x轴数据 + xAxisOptions = { + xAxis: { + type: 'value', + axisLabel: { + interval: xAxisInterval, + rotate: xAxisRotate + }, + splitLine: { + show: splitLineX && splitLineX.length, + lineStyle: { + width: splitLineWidth, + type: splitLineStyle + } + } + } + } + suffixYAxisOptions = suffixYAxis && suffixYAxis.length ? {axisLabel: { + formatter: `{value} ${suffixYAxis}` + }} : null + yAxisOptions = { + yAxis: { + type: 'value', + scale: true, + splitLine: { + show: splitLineY && splitLineY.length, + lineStyle: { + width: splitLineWidth, + type: splitLineStyle + } + }, + ...suffixYAxisOptions + } + } + + // legend + let adjustedBottom = 0 + let adjustedRight = 0 + + if (hasLegend && hasLegend.length) { + let orient + let positions + + switch (legendPosition) { + case 'right': + orient = { orient: 'vertical' } + positions = { right: 8, top: 40, bottom: 16 } + adjustedRight = 108 + break + case 'bottom': + orient = { orient: 'horizontal' } + positions = { bottom: 16, left: 8, right: 8 } + adjustedBottom = 72 + break + default: + orient = { orient: 'horizontal' } + positions = { top: 3, left: 8, right: 120 } + break + } + + const selected = legendSelected === 'unselectAll' + ? { + selected: metricArr.reduce((obj, m) => ({ ...obj, [m.name]: false }), {}) + } : null + + legendOptions = { + legend: { + data: metricArr.map((m) => m.name), + type: 'scroll', + ...orient, + ...positions, + ...selected + } + } + } + + // toolbox + toolboxOptions = toolbox && toolbox.length + ? { + toolbox: { + feature: { + dataZoom: { + yAxisIndex: 'none' + }, + restore: {}, + saveAsImage: { + pixelRatio: 2 + } + }, + right: 8 + } + } : null + + // grid + gridOptions = { + grid: { + top, + left, + right: Math.max(right, adjustedRight), + bottom: Math.max(bottom, adjustedBottom) + } + } + + dataZoomOptions = dataZoomThreshold > 0 && dataZoomThreshold < dataSource.length && { + dataZoom: [{ + type: 'inside', + start: Math.round((1 - dataZoomThreshold / dataSource.length) * 100), + end: 100 + }, { + start: Math.round((1 - dataZoomThreshold / dataSource.length) * 100), + end: 100, + handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z', + handleSize: '80%', + handleStyle: { + color: '#fff', + shadowBlur: 3, + shadowColor: 'rgba(0, 0, 0, 0.6)', + shadowOffsetX: 2, + shadowOffsetY: 2 + } + }] + } + return { - chartOption: { - type: 'scatter' + tooltip: { + formatter: (node) => { + const nodeValues = node.data + return ` + ${nodeValues[2] || ''}
    + ${value}: ${nodeValues[3] || 0}
    + ${xAxis}: ${nodeValues[0] || 0}
    + ${yAxis}: ${nodeValues[1] || 0}
    +
    ` + } }, - getSymbolSize (metricName, size) { - return sizeRate ? Math.ceil(size / sizeRate[metricName]) : size - } + ...metricOptions, + ...xAxisOptions, + ...yAxisOptions, + ...legendOptions, + ...toolboxOptions, + ...gridOptions, + ...dataZoomOptions } } + +export function makeGrouped (dataSource, groupColumns) { + return dataSource.reduce((acc, val) => { + const accColumn = groupColumns + .reduce((arr, col) => arr.concat(val[col]), []) + .join(' ') + if (!acc[accColumn]) { + acc[accColumn] = [] + } + acc[accColumn].push(val) + return acc + }, {}) +} diff --git a/webapp/app/containers/Widget/components/Chart/Chart.less b/webapp/app/containers/Widget/components/Chart/Chart.less new file mode 100644 index 000000000..139f8467f --- /dev/null +++ b/webapp/app/containers/Widget/components/Chart/Chart.less @@ -0,0 +1,3 @@ +.chartContainer { + height: 100%; +} \ No newline at end of file diff --git a/webapp/app/containers/Widget/components/Chart/Chart.tsx b/webapp/app/containers/Widget/components/Chart/Chart.tsx new file mode 100644 index 000000000..4c1a3a227 --- /dev/null +++ b/webapp/app/containers/Widget/components/Chart/Chart.tsx @@ -0,0 +1,53 @@ +import * as React from 'react' +import { IChartProps } from './index' +import chartlibs from '../../config/chart' +import * as echarts from 'echarts/lib/echarts' +import { ECharts } from 'echarts' +import chartOptionGenerator from '../../render/chart' +const styles = require('./Chart.less') + +export class Chart extends React.PureComponent { + private container: HTMLDivElement = null + private instance: ECharts + + public componentDidMount () { + this.renderChart(this.props) + } + + public componentDidUpdate () { + this.renderChart(this.props) + } + + private renderChart = (props: IChartProps) => { + const { selectedChart, renderType } = props + if (!this.instance) { + this.instance = echarts.init(this.container, 'default') + } else { + if (renderType === 'rerender') { + this.instance.dispose() + this.instance = echarts.init(this.container, 'default') + } + if (renderType === 'clear') { + this.instance.clear() + } + } + this.instance.setOption( + chartOptionGenerator( + chartlibs.find((cl) => cl.id === selectedChart).name, + props + ) + ) + this.instance.resize() + } + + public render () { + return ( +
    this.container = f} + /> + ) + } +} + +export default Chart diff --git a/webapp/app/containers/Widget/components/Chart/Table.tsx b/webapp/app/containers/Widget/components/Chart/Table.tsx new file mode 100644 index 000000000..04efd8028 --- /dev/null +++ b/webapp/app/containers/Widget/components/Chart/Table.tsx @@ -0,0 +1,408 @@ +/* + * << + * Davinci + * == + * Copyright (C) 2016 - 2017 EDP + * == + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * >> + */ + +import * as React from 'react' +import * as classnames from 'classnames' +import * as moment from 'moment' + +const AntTable = require('antd/lib/table') +const Select = require('antd/lib/select') +const Message = require('antd/lib/message') +const Option = Select.Option +import SearchFilterDropdown from '../../../../components/SearchFilterDropdown/index' +import NumberFilterDropdown from '../../../../components/NumberFilterDropdown/index' +import DateFilterDropdown from '../../../../components/DateFilterDropdown/index' + +import { COLUMN_WIDTH, DEFAULT_TABLE_PAGE, DEFAULT_TABLE_PAGE_SIZE, SQL_NUMBER_TYPES, SQL_DATE_TYPES, KEY_COLUMN } from '../../../../globalConstants' +const styles = require('../../../Dashboard/Dashboard.less') + +interface ITableProps { + id?: string + data: any[] + // loading: boolean + className?: string + filterable?: boolean + sortable?: boolean + width: number + height: number + interactId?: string, + onCheckInteract?: (itemId: number) => boolean + onDoInteract?: (itemId: number, linkagers: any, value: any) => void +} + +interface ITableStates { + data: any[] + sortedInfo: object + filterDropdownVisibles: object + filterValues: object + pagination: object +} + +export class Table extends React.PureComponent { + constructor (props) { + super(props) + this.state = { + data: props.data, + sortedInfo: {}, + filterDropdownVisibles: {}, + filterValues: {}, + pagination: {} + } + } + + public static defaultProps = { + filterable: true, + sortable: true + } + + private pageAutoAdapted = (value) => { + const paginationState = value === 'pc' + ? { + simple: false, + pageSize: DEFAULT_TABLE_PAGE_SIZE, + current: DEFAULT_TABLE_PAGE, + showSizeChanger: true, + showTotal: (total) => `共 ${total} 条`, + pageSizeOptions: ['10', '20', '30', '40', '50', '100'] + } + : { + simple: true, + pageSize: DEFAULT_TABLE_PAGE_SIZE, + current: DEFAULT_TABLE_PAGE, + showSizeChanger: true + } + return paginationState + } + + public componentWillMount () { + // const { data, chartParams } = this.props + // const { filterValues } = this.state + // const { enumerationColumns } = chartParams + + // if (data.keys && data.keys.length && !Object.keys(filterValues).length) { + // this.setState({ + // filterValues: this.initialFilterValues(data.keys, enumerationColumns) + // }) + // } + + this.setState({ + pagination: this.props.width <= 768 + ? this.pageAutoAdapted('mobile') + : this.pageAutoAdapted('pc') + }) + } + + public componentWillReceiveProps (nextProps) { + if (this.props.data !== nextProps.data) { + this.setState({ + data: nextProps.data, + filterValues: {} + }) + } + + this.setState({ + pagination: nextProps.width <= 768 + ? this.pageAutoAdapted('mobile') + : this.pageAutoAdapted('pc') + }) + } + + private initialFilterValues = (keys, enumColumns) => { + if (enumColumns) { + return keys.reduce((rdc, k) => { + rdc[k] = enumColumns.indexOf(k) >= 0 ? [] : ['', ''] + return rdc + }, {}) + } else { + return keys.reduce((rdc, k) => { + rdc[k] = ['', ''] + return rdc + }, {}) + } + } + + private handleTableChange = (pagination, filters, sorter) => { + this.setState({ + pagination, + sortedInfo: sorter + }, () => { + this.onLoadData() + }) + } + + private onSearchInputChange = (columnName) => (e) => { + const filterValues = this.state.filterValues + this.setState({ + filterValues: { + ...filterValues, + [columnName]: [e.target.value] + } + }) + } + + private onNumberInputChange = (columnName) => (newValue) => { + const filterValues = this.state.filterValues + + this.setState({ + filterValues: { + ...filterValues, + [columnName]: [ + isNaN(newValue[0]) ? filterValues[columnName][0] : newValue[0], + isNaN(newValue[1]) ? filterValues[columnName][1] : newValue[1] + ] + } + }) + } + + private onRangePickerChange = (columnName) => (dates, dateStrings) => { + this.setState({ + filterValues: { + ...this.state.filterValues, + [columnName]: [dateStrings[0], dateStrings[1]] + } + }) + this.onLoadData() + } + + private onLoadData = () => { + // const { data } = this.props + // const { filterValues } = this.state + + // const { keys, types, dataSource } = data + + // let filteredSource = dataSource.slice() + + // Object.keys(filterValues).forEach((fkey) => { + // const filterValue = filterValues[fkey] + + // const keyIndex = keys.findIndex((k) => k === fkey) + // const columnType = types[keyIndex] + + // if (SQL_NUMBER_TYPES.indexOf(columnType) >= 0) { + // if (filterValue[0]) { + // filteredSource = filteredSource.filter((s) => s[fkey] >= Number(filterValue[0])) + // } + // if (filterValue[1]) { + // filteredSource = filteredSource.filter((s) => s[fkey] <= Number(filterValue[1])) + // } + // } else if (SQL_DATE_TYPES.indexOf(columnType) >= 0) { + // if (filterValue[0]) { + // filteredSource = filteredSource.filter((s) => moment(s[fkey]) >= moment(filterValue[0])) + // } + // if (filterValue[1]) { + // filteredSource = filteredSource.filter((s) => moment(s[fkey]) <= moment(filterValue[1])) + // } + // } else { + // if (filterValue[0]) { + // filteredSource = filteredSource.filter((s) => s[fkey].includes(filterValue[0])) + // } + // } + // }) + + // this.setState({ + // data: { + // ...this.state.data, + // dataSource: filteredSource + // } + // }) + } + + private rowClick = (record, index, event) => { + const target = event.target + const targetName = target.tagName + const targetClassName = target.classList[0] + const re = /select/g + + if (targetName === 'DIV' && re.test(targetClassName)) { + event.stopPropagation() + return + } + + const { id, onCheckInteract, onDoInteract } = this.props + const { data } = this.state + + if (onCheckInteract && onDoInteract) { + const linkagers = onCheckInteract(Number(id)) + + if (Object.keys(linkagers).length) { + data.forEach((ds) => { + if (ds[KEY_COLUMN] === record[KEY_COLUMN]) { + onDoInteract(Number(id), linkagers, record[KEY_COLUMN]) + } + }) + + this.setState({ + data: {...data} + }) + } + } + } + + private rowClassFilter = (record, index) => + this.props.interactId === record[KEY_COLUMN] ? styles.selectedRow : '' + + public render () { + const { + // loading, + className, + filterable, + sortable, + width, + height + } = this.props + const { + data, + filterDropdownVisibles, + filterValues, + pagination + } = this.state + + // let enums = {} + // let columnKeys = null + // let columnTypes = null + + // if (enumerationColumns.length) { + // enums = enumerationColumns.reduce((rlt, ec) => { + // rlt[ec] = {} + // return rlt + // }, {}) + + // dataSource.forEach((ds) => { + // enumerationColumns.forEach((enumColumn) => { + // if (!enums[enumColumn][ds[enumColumn]]) { + // enums[enumColumn][ds[enumColumn]] = 1 + // } + // }) + // }) + // } + + let columns = [] + + if (data.length) { + columns = Object.keys(data[0]).map((k, index) => { + // let filterDropdown = void 0 + // let filters = null + + // const columnType = columnTypes[index] + + // if (filterable) { + // if (enums[k]) { + // filters = { + // filters: Object.keys(enums[k]).map((en) => ({ text: en, value: en })), + // onFilter: (value, record) => record[k] === value + // } + // } else { + // const filterValue = filterValues[k] || [] + + // if (SQL_NUMBER_TYPES.indexOf(columnType) >= 0) { + // filterDropdown = ( + // + // ) + // } else if (SQL_DATE_TYPES.indexOf(columnType) >= 0) { + // filterDropdown = ( + // + // ) + // } else { + // filterDropdown = ( + // + // ) + // } + + // filters = { + // filterDropdown, + // filterDropdownVisible: filterDropdownVisibles[k] === undefined ? false : filterDropdownVisibles[k], + // onFilterDropdownVisibleChange: (visible) => { + // this.setState({ + // filterDropdownVisibles: { + // ...filterDropdownVisibles, + // [k]: visible + // } + // }) + // } + // } + // } + // } + + // let sorters = null + + // if (sortable) { + // sorters = { + // sorter: (a, b) => { + // if (SQL_NUMBER_TYPES.indexOf(columnType) >= 0) { + // return Number(a[k]) - Number(b[k]) + // } else { + // return a[k].trim() > b[k].trim() ? 1 : -1 + // } + // } + // } + // } + + const plainColumn = { + title: k.toUpperCase(), + dataIndex: k, + key: k, + width: COLUMN_WIDTH + } + + return { + ...plainColumn + // ...filters, + // ...sorters + } + }) + } + + const predictColumnsWidth = (data.length ? Object.keys(data[0]).length : 1) * COLUMN_WIDTH + const tableWidthObj = predictColumnsWidth > width + ? { x: predictColumnsWidth } + : null + const tableSize = { ...tableWidthObj, y: height - 40 - 60 } + + return ( + + ) + } +} + +export default Table diff --git a/webapp/app/containers/Widget/components/Chart/index.tsx b/webapp/app/containers/Widget/components/Chart/index.tsx new file mode 100644 index 000000000..94b6b4383 --- /dev/null +++ b/webapp/app/containers/Widget/components/Chart/index.tsx @@ -0,0 +1,35 @@ +import * as React from 'react' +import { IWidgetProps } from '../Widget' +import Table from './Table' +import Chart from './Chart' +import { getTable } from '../util' + +export interface IChartProps extends IWidgetProps { + width: number + height: number +} + +export function CombinedChart (props: IChartProps) { + const { + width, + height, + data, + selectedChart + } = props + + if (selectedChart === getTable().id) { + return ( +
    + ) + } else { + return ( + + ) + } +} + +export default CombinedChart diff --git a/webapp/app/containers/Widget/components/Pivot/Cell.tsx b/webapp/app/containers/Widget/components/Pivot/Cell.tsx index 3df27dd84..ad37c2b9b 100644 --- a/webapp/app/containers/Widget/components/Pivot/Cell.tsx +++ b/webapp/app/containers/Widget/components/Pivot/Cell.tsx @@ -1,5 +1,6 @@ import * as React from 'react' -import { IPivotMetric, ILegend, IChartStyles } from './Pivot' +import { IWidgetMetric, IChartStyles } from '../Widget' +import { ILegend } from './Pivot' import { IDataParamProperty } from '../Workbench/OperatingPanel' import { DEFAULT_SPLITER } from '../../../../globalConstants' import { decodeMetricName } from 'containers/Widget/components/util' @@ -11,7 +12,7 @@ interface ICellProps { rowKey?: string width: number height?: number - metrics: IPivotMetric[] + metrics: IWidgetMetric[] chartStyles: IChartStyles color: IDataParamProperty legend: ILegend diff --git a/webapp/app/containers/Widget/components/Pivot/Chart.tsx b/webapp/app/containers/Widget/components/Pivot/Chart.tsx index edbaefdad..45e27e4c0 100644 --- a/webapp/app/containers/Widget/components/Pivot/Chart.tsx +++ b/webapp/app/containers/Widget/components/Pivot/Chart.tsx @@ -1,26 +1,14 @@ import * as React from 'react' import * as echarts from 'echarts/lib/echarts' -import { IPivotMetric, IDrawingData, IMetricAxisConfig, DimetionType, RenderType, ILegend, IChartStyles } from './Pivot' -import chartOptionGenerator from '../../charts' -import { PIVOT_DEFAULT_AXIS_LINE_COLOR, PIVOT_DEFAULT_SCATTER_SIZE } from '../../../../globalConstants' -import { decodeMetricName, getScatter, getTooltipPosition, getTooltipLabel, getSizeValue, getChartLabel, getBar, getTriggeringRecord } from '../util' +import { IDrawingData, IMetricAxisConfig, ILegend } from './Pivot' +import { IWidgetMetric, DimetionType, RenderType, IChartStyles } from '../Widget' +import chartOptionGenerator from '../../render/pivot' +import { PIVOT_DEFAULT_SCATTER_SIZE } from '../../../../globalConstants' +import { decodeMetricName, getScatter, getTooltipPosition, getPivotTooltipLabel, getSizeValue, getChartLabel, getBar, getTriggeringRecord } from '../util' import { uuid } from '../../../../utils/util' import { IDataParamProperty } from '../Workbench/OperatingPanel' const styles = require('./Pivot.less') -export interface IChartInfo { - id: number - name: string - title: string - icon: string - coordinate: 'cartesian' | 'polar' | 'other' - requireDimetions: number | number[], - requireMetrics: number | number[], - dimetionAxis?: DimetionType - data: object, - style: object -} - export interface IChartUnit { key?: string width: number @@ -54,7 +42,7 @@ interface IChartProps { rows: string[] dimetionAxisCount: number metricAxisCount: number - metrics: IPivotMetric[] + metrics: IWidgetMetric[] data: IChartChunk[] chartStyles: IChartStyles drawingData: IDrawingData @@ -641,7 +629,7 @@ export class Chart extends React.Component { instance.setOption({ tooltip: { position: getTooltipPosition, - formatter: getTooltipLabel(seriesData, cols, rows, metrics, color, label, size, scatterXAxis, tip) + formatter: getPivotTooltipLabel(seriesData, cols, rows, metrics, color, label, size, scatterXAxis, tip) }, grid, xAxis, diff --git a/webapp/app/containers/Widget/components/Pivot/ColumnFooter.tsx b/webapp/app/containers/Widget/components/Pivot/ColumnFooter.tsx index ef1414387..bd8af7031 100644 --- a/webapp/app/containers/Widget/components/Pivot/ColumnFooter.tsx +++ b/webapp/app/containers/Widget/components/Pivot/ColumnFooter.tsx @@ -1,5 +1,6 @@ import * as React from 'react' -import { IPivotMetric, IDrawingData, IMetricAxisConfig, DimetionType, IChartStyles } from './Pivot' +import { IDrawingData, IMetricAxisConfig } from './Pivot' +import { IWidgetMetric , DimetionType, IChartStyles } from '../Widget' import { IChartLine } from './Chart' import Xaxis from './Xaxis' import { getAxisData, decodeMetricName } from '../util' @@ -12,7 +13,7 @@ interface IColumnFooterProps { rowTree: object colTree: object tree: object - metrics: IPivotMetric[] + metrics: IWidgetMetric[] metricAxisConfig: IMetricAxisConfig chartStyles: IChartStyles drawingData: IDrawingData diff --git a/webapp/app/containers/Widget/components/Pivot/ColumnHeader.tsx b/webapp/app/containers/Widget/components/Pivot/ColumnHeader.tsx index 86a11f3f5..40dc2e65f 100644 --- a/webapp/app/containers/Widget/components/Pivot/ColumnHeader.tsx +++ b/webapp/app/containers/Widget/components/Pivot/ColumnHeader.tsx @@ -1,6 +1,7 @@ import * as React from 'react' import * as classnames from 'classnames' -import { IPivotMetric, IDrawingData, DimetionType, IChartStyles } from './Pivot' +import { IDrawingData } from './Pivot' +import { IWidgetMetric, DimetionType, IChartStyles } from '../Widget' import { spanSize, getPivotCellWidth, getAggregatorLocale, getPivot, getStyleConfig } from '../util' import { DEFAULT_SPLITER } from '../../../../globalConstants' @@ -10,7 +11,7 @@ interface IColumnHeaderProps { cols: string[] colKeys: string[][] colTree: object - metrics: IPivotMetric[] + metrics: IWidgetMetric[] chartStyles: IChartStyles drawingData: IDrawingData dimetionAxis: DimetionType diff --git a/webapp/app/containers/Widget/components/Pivot/ColumnTitle.tsx b/webapp/app/containers/Widget/components/Pivot/ColumnTitle.tsx index 2a8bcf4b7..fd32dfd46 100644 --- a/webapp/app/containers/Widget/components/Pivot/ColumnTitle.tsx +++ b/webapp/app/containers/Widget/components/Pivot/ColumnTitle.tsx @@ -1,5 +1,6 @@ import * as React from 'react' -import { IDrawingData, DimetionType, IChartStyles } from './Pivot' +import { IDrawingData } from './Pivot' +import { DimetionType, IChartStyles } from '../Widget' import { getPivotCellWidth, getPivot, getStyleConfig } from '../util' const styles = require('./Pivot.less') diff --git a/webapp/app/containers/Widget/components/Pivot/Corner.tsx b/webapp/app/containers/Widget/components/Pivot/Corner.tsx index 276486ee1..4b155c79f 100644 --- a/webapp/app/containers/Widget/components/Pivot/Corner.tsx +++ b/webapp/app/containers/Widget/components/Pivot/Corner.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import * as classnames from 'classnames' -import { DimetionType, IChartStyles } from './Pivot' +import { DimetionType, IChartStyles } from '../Widget' import { getPivotCellWidth, getPivotCellHeight, getPivot, getStyleConfig } from '../util' const styles = require('./Pivot.less') diff --git a/webapp/app/containers/Widget/components/Pivot/Legend.tsx b/webapp/app/containers/Widget/components/Pivot/Legend.tsx index a31132281..041df1a29 100644 --- a/webapp/app/containers/Widget/components/Pivot/Legend.tsx +++ b/webapp/app/containers/Widget/components/Pivot/Legend.tsx @@ -2,7 +2,7 @@ import * as React from 'react' import * as classnames from 'classnames' import { IDataParamProperty } from '../Workbench/OperatingPanel' import { IDataParamSource } from '../Workbench/Dropbox' -import { IChartStyles } from 'containers/Widget/components/Pivot/Pivot' +import { IChartStyles } from 'containers/Widget/components/Widget' import { getStyleConfig } from 'containers/Widget/components/util' const styles = require('./Pivot.less') diff --git a/webapp/app/containers/Widget/components/Pivot/Pivot.less b/webapp/app/containers/Widget/components/Pivot/Pivot.less index 099d3ef1d..47dd5b466 100644 --- a/webapp/app/containers/Widget/components/Pivot/Pivot.less +++ b/webapp/app/containers/Widget/components/Pivot/Pivot.less @@ -1,10 +1,40 @@ @import "../../../../assets/less/variable"; +.wrapper { + height: 100%; + position: relative; + + .mask { + background-color: fade(@white, 60); + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + display: none; + + &.loading { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + } + + i { + font-size: 1.5em; + } + + p { + font-size: 1.25em; + line-height: 2.5em; + } + } +} + .block { height: 100%; display: flex; flex-direction: row; - position: relative; .leftSide { flex-shrink: 0; @@ -115,32 +145,6 @@ display: block; } } - - .mask { - background-color: fade(@white, 60); - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - display: none; - - &.loading { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - } - - i { - font-size: 1.5em; - } - - p { - font-size: 1.25em; - line-height: 2.5em; - } - } } .pivot { diff --git a/webapp/app/containers/Widget/components/Pivot/Pivot.tsx b/webapp/app/containers/Widget/components/Pivot/Pivot.tsx index 2ce11b8fd..4508f82f8 100644 --- a/webapp/app/containers/Widget/components/Pivot/Pivot.tsx +++ b/webapp/app/containers/Widget/components/Pivot/Pivot.tsx @@ -1,5 +1,4 @@ import * as React from 'react' -import * as classnames from 'classnames' import { findDOMNode } from 'react-dom' import { naturalSort, @@ -34,31 +33,10 @@ import ColumnHeader from './ColumnHeader' import TableBody from './TableBody' import ColumnFooter from './ColumnFooter' import Legend from './Legend' -import { IChartInfo } from './Chart' -import { IDataParamProperty } from '../Workbench/OperatingPanel' -import { AggregatorType, DragType, IDataParamConfig } from '../Workbench/Dropbox' -import { IAxisConfig } from 'containers/Widget/components/Workbench/ConfigSections/AxisSection' -import { ISplitLineConfig } from 'containers/Widget/components/Workbench/ConfigSections/SplitLineSection' -import { IPivotConfig } from 'containers/Widget/components/Workbench/ConfigSections/PivotSection' -const Icon = require('antd/lib/icon') +import { RenderType, IWidgetProps } from '../Widget' const styles = require('./Pivot.less') -export type DimetionType = 'row' | 'col' -export type RenderType = 'rerender' | 'clear' | 'refresh' | 'resize' - -export interface IPivotMetric { - name: string - agg: AggregatorType - chart: IChartInfo -} - -export interface IPivotFilter { - name: string - type: DragType - config: IDataParamConfig -} - export interface IDrawingData { elementSize: number unitMetricWidth: number @@ -82,38 +60,12 @@ export interface ILegend { [key: string]: string[] } -export interface IChartStyles { - pivot?: IPivotConfig - spec?: object - xAxis?: IAxisConfig - yAxis?: IAxisConfig - splitLine?: ISplitLineConfig -} - -export interface IPivotProps { - data: object[] - cols: string[] - rows: string[] - metrics: IPivotMetric[] - filters: IPivotFilter[] - chartStyles: IChartStyles - color?: IDataParamProperty - label?: IDataParamProperty - size?: IDataParamProperty - xAxis?: IDataParamProperty - tip?: IDataParamProperty - dimetionAxis?: DimetionType - renderType?: RenderType - orders: Array<{column: string, direction: string}> - queryParams: any[] - cache: boolean - expired: number - loading?: boolean - onCheckTableInteract?: () => boolean - onDoInteract?: (triggerData: object) => void +export interface IPivotProps extends IWidgetProps { + width: number + height: number } -export interface IPivotStates { +interface IPivotStates { legendSelected: ILegend renderType: RenderType } @@ -127,8 +79,6 @@ export class Pivot extends React.PureComponent { } } - private width = 0 - private height = 0 private tableBodyWidth = 0 private tableBodyHeight = 0 private rowKeys = [] @@ -178,11 +128,6 @@ export class Pivot extends React.PureComponent { public columnHeader: HTMLElement = null public tableBody: HTMLElement = null public columnFooter: HTMLElement = null - private container: HTMLElement = null - - public componentDidMount () { - this.getContainerSize() - } public componentWillReceiveProps (nextProps) { const { renderType, color } = nextProps @@ -198,9 +143,6 @@ export class Pivot extends React.PureComponent { public componentWillUpdate (nextProps: IPivotProps) { const { renderType } = nextProps if (renderType !== 'refresh') { - if (renderType === 'resize') { - this.getContainerSize() - } this.rowKeys = [] this.colKeys = [] this.rowTree = {} @@ -242,14 +184,8 @@ export class Pivot extends React.PureComponent { this.metricAxisConfig = void 0 } - private getContainerSize = () => { - const { offsetWidth, offsetHeight } = this.container - this.width = offsetWidth - this.height = offsetHeight - } - private getRenderData = (props) => { - const { cols, rows, metrics, data, xAxis, dimetionAxis } = props + const { width, height, cols, rows, metrics, data, xAxis, dimetionAxis } = props this.rowHeaderWidths = rows.map((r) => getPivotContentTextWidth(r, 'bold')) if (!cols.length && !rows.length) { @@ -263,8 +199,8 @@ export class Pivot extends React.PureComponent { } if (dimetionAxis) { - this.tableBodyWidth = getTableBodyWidth(dimetionAxis, this.width - this.getLegendWidth(props), this.rowHeaderWidths) - this.tableBodyHeight = getTableBodyHeight(dimetionAxis, this.height, cols.length) + this.tableBodyWidth = getTableBodyWidth(dimetionAxis, width - this.getLegendWidth(props), this.rowHeaderWidths) + this.tableBodyHeight = getTableBodyHeight(dimetionAxis, height, cols.length) this.drawingData.unitMetricWidth = getChartUnitMetricWidth(this.tableBodyWidth, this.colKeys.length || 1, metrics.length) this.drawingData.unitMetricHeight = getChartUnitMetricHeight(this.tableBodyHeight, this.rowKeys.length || 1, metrics.length) this.drawingData.multiCoordinate = metrics.some((m) => m.chart.coordinate === 'polar') || xAxis && xAxis.items.length @@ -586,11 +522,11 @@ export class Pivot extends React.PureComponent { } public render () { - const { cols, rows, metrics, chartStyles, color, label, size, xAxis, tip, dimetionAxis, onCheckTableInteract, onDoInteract, loading } = this.props + const { cols, rows, metrics, chartStyles, color, label, size, xAxis, tip, dimetionAxis, onCheckTableInteract, onDoInteract } = this.props const { legendSelected, renderType } = this.state return ( -
    this.container = f}> +
    { chartStyles={chartStyles} onLegendSelect={this.legendSelect} /> -
    - -

    加载中…

    -
    ) } diff --git a/webapp/app/containers/Widget/components/Pivot/RowHeader.tsx b/webapp/app/containers/Widget/components/Pivot/RowHeader.tsx index a21d9455f..349afbeae 100644 --- a/webapp/app/containers/Widget/components/Pivot/RowHeader.tsx +++ b/webapp/app/containers/Widget/components/Pivot/RowHeader.tsx @@ -1,7 +1,8 @@ import * as React from 'react' import * as classnames from 'classnames' import Yaxis from './Yaxis' -import { IPivotMetric, IDrawingData, IMetricAxisConfig, DimetionType, IChartStyles } from './Pivot' +import { IDrawingData, IMetricAxisConfig } from './Pivot' +import { IWidgetMetric, DimetionType, IChartStyles } from '../Widget' import { spanSize, getPivotCellWidth, getPivotCellHeight, getAxisData, decodeMetricName, getAggregatorLocale, getPivot, getStyleConfig } from '../util' import { PIVOT_LINE_HEIGHT, DEFAULT_SPLITER } from '../../../../globalConstants' @@ -18,7 +19,7 @@ interface IRowHeaderProps { chartStyles: IChartStyles drawingData: IDrawingData dimetionAxis: DimetionType - metrics: IPivotMetric[] + metrics: IWidgetMetric[] metricAxisConfig: IMetricAxisConfig hasMetricNameDimetion: boolean } diff --git a/webapp/app/containers/Widget/components/Pivot/RowTitle.tsx b/webapp/app/containers/Widget/components/Pivot/RowTitle.tsx index aa71a2795..9b99769d0 100644 --- a/webapp/app/containers/Widget/components/Pivot/RowTitle.tsx +++ b/webapp/app/containers/Widget/components/Pivot/RowTitle.tsx @@ -1,5 +1,6 @@ import * as React from 'react' -import { IDrawingData, DimetionType, IChartStyles } from './Pivot' +import { DimetionType, IChartStyles } from '../Widget' +import { IDrawingData } from './Pivot' import { getPivotContentTextWidth, getPivotCellHeight, getPivot, getStyleConfig } from '../util' const styles = require('./Pivot.less') diff --git a/webapp/app/containers/Widget/components/Pivot/TableBody.tsx b/webapp/app/containers/Widget/components/Pivot/TableBody.tsx index 7c2a40937..bbb41fea3 100644 --- a/webapp/app/containers/Widget/components/Pivot/TableBody.tsx +++ b/webapp/app/containers/Widget/components/Pivot/TableBody.tsx @@ -1,6 +1,7 @@ import * as React from 'react' import * as classnames from 'classnames' -import { IPivotMetric, IDrawingData, IMetricAxisConfig, DimetionType, RenderType, ILegend, IChartStyles } from './Pivot' +import { IDrawingData, IMetricAxisConfig, ILegend } from './Pivot' +import { IWidgetMetric, DimetionType, RenderType, IChartStyles } from '../Widget' import Cell from './Cell' import Chart, { IChartUnit, IChartLine, IChartBlock } from './Chart' import { PIVOT_CANVAS_SIZE_LIMIT, PIVOT_CANVAS_POLAR_SIZE_LIMIT } from '../../../../globalConstants' @@ -25,7 +26,7 @@ export interface ITableBodyProps { rowTree: object colTree: object tree: object - metrics: IPivotMetric[] + metrics: IWidgetMetric[] metricAxisConfig: IMetricAxisConfig chartStyles: IChartStyles drawingData: IDrawingData diff --git a/webapp/app/containers/Widget/components/Pivot/Xaxis.tsx b/webapp/app/containers/Widget/components/Pivot/Xaxis.tsx index fe2a567cc..cc3606e62 100644 --- a/webapp/app/containers/Widget/components/Pivot/Xaxis.tsx +++ b/webapp/app/containers/Widget/components/Pivot/Xaxis.tsx @@ -1,6 +1,7 @@ import * as React from 'react' import * as echarts from 'echarts/lib/echarts' -import { IPivotMetric, IMetricAxisConfig, DimetionType, IChartStyles } from './Pivot' +import { IMetricAxisConfig } from './Pivot' +import { IWidgetMetric, DimetionType, IChartStyles } from '../Widget' import { IChartLine, IChartUnit } from './Chart' import { metricAxisLabelFormatter, getXaxisLabel, decodeMetricName } from '../util' import { PIVOT_DEFAULT_AXIS_LINE_COLOR, PIVOT_XAXIS_ROTATE_LIMIT } from '../../../../globalConstants' @@ -9,7 +10,7 @@ const styles = require('./Pivot.less') interface IXaxisProps { width: number - metrics: IPivotMetric[] + metrics: IWidgetMetric[] data: any[] metricAxisConfig?: IMetricAxisConfig dimetionAxis: DimetionType diff --git a/webapp/app/containers/Widget/components/Pivot/Yaxis.tsx b/webapp/app/containers/Widget/components/Pivot/Yaxis.tsx index fe466c58e..e952db1ce 100644 --- a/webapp/app/containers/Widget/components/Pivot/Yaxis.tsx +++ b/webapp/app/containers/Widget/components/Pivot/Yaxis.tsx @@ -1,6 +1,7 @@ import * as React from 'react' import * as echarts from 'echarts/lib/echarts' -import { IPivotMetric, IMetricAxisConfig, DimetionType, IChartStyles } from './Pivot' +import { IMetricAxisConfig } from './Pivot' +import { IWidgetMetric, DimetionType, IChartStyles } from '../Widget' import { IChartLine, IChartUnit } from './Chart' import { metricAxisLabelFormatter, decodeMetricName } from '../util' import { PIVOT_DEFAULT_AXIS_LINE_COLOR } from '../../../../globalConstants' @@ -9,7 +10,7 @@ const styles = require('./Pivot.less') interface IYaxisProps { height: number - metrics: IPivotMetric[] + metrics: IWidgetMetric[] data: any[] chartStyles: IChartStyles dimetionAxis: DimetionType diff --git a/webapp/app/containers/Widget/components/Pivot/index.tsx b/webapp/app/containers/Widget/components/Pivot/index.tsx index 6ca9cc32e..903d9924d 100644 --- a/webapp/app/containers/Widget/components/Pivot/index.tsx +++ b/webapp/app/containers/Widget/components/Pivot/index.tsx @@ -1,5 +1,5 @@ import * as React from 'react' -import Pivot, { IPivotProps, RenderType } from './Pivot' +import Pivot, { IPivotProps } from './Pivot' type ScrollConfigType = 'vertical' | 'horizontal' | 'duplex' type ScrollRole = 'header' | 'body' diff --git a/webapp/app/containers/Widget/components/Pivot/PivotInViz.tsx b/webapp/app/containers/Widget/components/Widget/WidgetInViz.tsx similarity index 52% rename from webapp/app/containers/Widget/components/Pivot/PivotInViz.tsx rename to webapp/app/containers/Widget/components/Widget/WidgetInViz.tsx index 8459cabd1..f0b1188d1 100644 --- a/webapp/app/containers/Widget/components/Pivot/PivotInViz.tsx +++ b/webapp/app/containers/Widget/components/Widget/WidgetInViz.tsx @@ -1,31 +1,33 @@ import * as React from 'react' -import ScrollablePivot from './index' -import { IPivotProps } from './Pivot' -import { getStyleConfig } from '../util' +import Widget, { IWidgetWrapperProps } from './index' +import { getStyleConfig, getTable } from '../util' -interface IPivotInVizStates { - pivotProps: IPivotProps +interface IWidgetInVizStates { + widgetProps: IWidgetWrapperProps } -export class PivotInViz extends React.Component { +export class WidgetInViz extends React.Component { constructor (props) { super(props) this.state = { - pivotProps: {...this.clearProps} + widgetProps: {...this.clearProps} } } - private clearProps = { + private clearProps: IWidgetWrapperProps = { data: [], cols: [], rows: [], metrics: [], filters: [], chartStyles: getStyleConfig({}), + selectedChart: getTable().id, queryParams: [], cache: false, expired: 300, - orders: [] + orders: [], + loading: false, + mode: 'pivot' } public componentDidMount () { @@ -39,20 +41,20 @@ export class PivotInViz extends React.Component private renderPivot = (props) => { if (props.data.length) { this.setState({ - pivotProps: {...props} + widgetProps: {...props} }) } else { this.setState({ - pivotProps: {...this.clearProps} + widgetProps: {...this.clearProps} }) } } public render () { return ( - + ) } } -export default PivotInViz +export default WidgetInViz diff --git a/webapp/app/containers/Widget/components/Widget/index.tsx b/webapp/app/containers/Widget/components/Widget/index.tsx new file mode 100644 index 000000000..36c21a6cf --- /dev/null +++ b/webapp/app/containers/Widget/components/Widget/index.tsx @@ -0,0 +1,137 @@ +import * as React from 'react' +import * as classnames from 'classnames' +import Pivot from '../Pivot' +import Chart from '../Chart' +const Icon = require('antd/lib/icon') +import { AggregatorType, DragType, IDataParamConfig } from '../Workbench/Dropbox' +import { IDataParamProperty } from '../Workbench/OperatingPanel' +import { IAxisConfig } from '../Workbench/ConfigSections/AxisSection' +import { ISplitLineConfig } from '../Workbench/ConfigSections/SplitLineSection' +import { IPivotConfig } from '../Workbench/ConfigSections/PivotSection' +import { ILabelConfig } from '..//Workbench/ConfigSections/LabelSection' +import { ILegendConfig } from '../Workbench/ConfigSections/LegendSection' +const styles = require('../Pivot/Pivot.less') + +export type DimetionType = 'row' | 'col' +export type RenderType = 'rerender' | 'clear' | 'refresh' | 'resize' +export type WidgetMode = 'pivot' | 'chart' + +export interface IWidgetMetric { + name: string + agg: AggregatorType + chart: IChartInfo +} + +export interface IWidgetFilter { + name: string + type: DragType + config: IDataParamConfig +} + +export interface IChartStyles { + pivot?: IPivotConfig + spec?: object + xAxis?: IAxisConfig + yAxis?: IAxisConfig + splitLine?: ISplitLineConfig + label?: ILabelConfig + legend?: ILegendConfig +} + +export interface IChartInfo { + id: number + name: string + title: string + icon: string + coordinate: 'cartesian' | 'polar' | 'other' + requireDimetions: number | number[], + requireMetrics: number | number[], + dimetionAxis?: DimetionType + data: object, + style: object +} + +export interface IWidgetProps { + data: object[] + cols: string[] + rows: string[] + metrics: IWidgetMetric[] + filters: IWidgetFilter[] + chartStyles: IChartStyles + selectedChart: number + color?: IDataParamProperty + label?: IDataParamProperty + size?: IDataParamProperty + xAxis?: IDataParamProperty + tip?: IDataParamProperty + dimetionAxis?: DimetionType + renderType?: RenderType + orders: Array<{column: string, direction: string}> + queryParams: any[] + cache: boolean + expired: number + mode: WidgetMode + onCheckTableInteract?: () => boolean + onDoInteract?: (triggerData: object) => void +} + +export interface IWidgetWrapperProps extends IWidgetProps { + loading: boolean +} + +export class Widget extends React.Component { + private width = 0 + private height = 0 + private container: HTMLElement = null + + public componentDidMount () { + this.getContainerSize() + } + + public componentWillUpdate (nextProps: IWidgetProps) { + if (nextProps.renderType === 'resize') { + this.getContainerSize() + } + } + + private getContainerSize = () => { + const { offsetWidth, offsetHeight } = this.container + this.width = offsetWidth + this.height = offsetHeight + } + + public render () { + const { loading, mode } = this.props + const combinedProps = { + width: this.width, + height: this.height, + ...this.props + } + delete combinedProps.loading + + return ( +
    this.container = f}> + {/* FIXME */} + {mode === 'chart' + ? ( + + ) + : ( + + ) + } +
    + +

    加载中…

    +
    +
    + ) + } +} + +export default Widget diff --git a/webapp/app/containers/Widget/components/Workbench/ChartIndicator.tsx b/webapp/app/containers/Widget/components/Workbench/ChartIndicator.tsx index 7802345c9..d1673f715 100644 --- a/webapp/app/containers/Widget/components/Workbench/ChartIndicator.tsx +++ b/webapp/app/containers/Widget/components/Workbench/ChartIndicator.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import * as classnames from 'classnames' -import { IChartInfo } from '../Pivot/Chart' +import { IChartInfo } from '../Widget' import { checkChartEnable } from '../util' const Tooltip = require('antd/lib/tooltip') const styles = require('./Workbench.less') @@ -17,11 +17,26 @@ export function ChartIndicator (props: IChartIndicatorProps) { const { chartInfo, dimetionsCount, metricsCount, selectedCharts } = props const { title, icon, requireDimetions, requireMetrics} = chartInfo + let dimetionContent + let metricContent + + if (Array.isArray(requireDimetions)) { + dimetionContent = `需要 ${requireDimetions[0]}个 到 ${requireDimetions[1] === 9999 ? '多' : requireDimetions[1]}个 维度` + } else { + dimetionContent = `需要 ${requireDimetions}个 维度` + } + + if (Array.isArray(requireMetrics)) { + metricContent = `需要 ${requireMetrics[0]}个 到 ${requireMetrics[1] === 9999 ? '多' : requireMetrics[1]}个 指标` + } else { + metricContent = `需要 ${requireMetrics}个 指标` + } + const overlay = (

    {title}
    - {`需要 ${requireDimetions}个 到多个维度`}
    - {`需要 ${requireMetrics}个 到多个指标`} + {dimetionContent}
    + {metricContent}

    ) diff --git a/webapp/app/containers/Widget/components/Workbench/ConfigSections/LabelSection.tsx b/webapp/app/containers/Widget/components/Workbench/ConfigSections/LabelSection.tsx new file mode 100644 index 000000000..e65ad91b9 --- /dev/null +++ b/webapp/app/containers/Widget/components/Workbench/ConfigSections/LabelSection.tsx @@ -0,0 +1,118 @@ +import * as React from 'react' +const Row = require('antd/lib/row') +const Col = require('antd/lib/col') +const Checkbox = require('antd/lib/checkbox') +const Select = require('antd/lib/select') +const Option = Select.Option +import ColorPicker from '../../../../../components/ColorPicker' +import { PIVOT_CHART_FONT_FAMILIES, PIVOT_CHART_LINE_STYLES, PIVOT_CHART_FONT_SIZES, CHART_LABEL_POSITIONS } from '../../../../../globalConstants' +const styles = require('../Workbench.less') + +export interface ILabelConfig { + showLabel: boolean + labelPosition: string + labelFontFamily: string + labelFontSize: string + labelColor: string +} + +interface ILabelSectionProps { + title: string + config: ILabelConfig + onChange: (prop: string, value: any) => void +} + +export class LabelSection extends React.PureComponent { + private checkboxChange = (prop) => (e) => { + this.props.onChange(prop, e.target.checked) + } + + private selectChange = (prop) => (value) => { + this.props.onChange(prop, value) + } + + private colorChange = (prop) => (color) => { + this.props.onChange(prop, color) + } + + public render () { + const { title, config } = this.props + + const { + showLabel, + labelPosition, + labelFontFamily, + labelFontSize, + labelColor + } = config + + const positions = CHART_LABEL_POSITIONS.map((p) => ( + + )) + const fontFamilies = PIVOT_CHART_FONT_FAMILIES.map((f) => ( + + )) + const fontSizes = PIVOT_CHART_FONT_SIZES.map((f) => ( + + )) + + return ( +
    +

    {title}

    +
    + +
    + + 显示标签 + + + 位置 + + + + + + + + + + + + + + + + + + ) + } +} + +export default LabelSection diff --git a/webapp/app/containers/Widget/components/Workbench/ConfigSections/LegendSection.tsx b/webapp/app/containers/Widget/components/Workbench/ConfigSections/LegendSection.tsx new file mode 100644 index 000000000..5728d3325 --- /dev/null +++ b/webapp/app/containers/Widget/components/Workbench/ConfigSections/LegendSection.tsx @@ -0,0 +1,115 @@ +import * as React from 'react' +const Row = require('antd/lib/row') +const Col = require('antd/lib/col') +const Checkbox = require('antd/lib/checkbox') +const Select = require('antd/lib/select') +const Option = Select.Option +import ColorPicker from '../../../../../components/ColorPicker' +import { PIVOT_CHART_FONT_FAMILIES, PIVOT_CHART_LINE_STYLES, PIVOT_CHART_FONT_SIZES, CHART_LEGEND_POSITIONS } from '../../../../../globalConstants' +const styles = require('../Workbench.less') + +export interface ILegendConfig { + legendPosition: string + // legendFontFamily: string + // legendFontSize: string + // legendColor: string + selectAll: boolean +} + +interface ILegendSectionProps { + title: string + config: ILegendConfig + onChange: (prop: string, value: any) => void +} + +export class LegendSection extends React.PureComponent { + private checkboxChange = (prop) => (e) => { + this.props.onChange(prop, e.target.checked) + } + + private selectChange = (prop) => (value) => { + this.props.onChange(prop, value) + } + + // private colorChange = (prop) => (color) => { + // this.props.onChange(prop, color) + // } + + public render () { + const { title, config } = this.props + + const { + legendPosition, + selectAll + } = config + + const positions = CHART_LEGEND_POSITIONS.map((p) => ( + + )) + // const fontFamilies = PIVOT_CHART_FONT_FAMILIES.map((f) => ( + // + // )) + // const fontSizes = PIVOT_CHART_FONT_SIZES.map((f) => ( + // + // )) + + return ( +
    +

    {title}

    +
    + +
    + + 是否全选 + + + 位置 + + + + + {/* + + + + + + + + + + */} + + + ) + } +} + +export default LegendSection diff --git a/webapp/app/containers/Widget/components/Workbench/Dropbox.tsx b/webapp/app/containers/Widget/components/Workbench/Dropbox.tsx index f9b10cc62..f92d84a50 100644 --- a/webapp/app/containers/Widget/components/Workbench/Dropbox.tsx +++ b/webapp/app/containers/Widget/components/Workbench/Dropbox.tsx @@ -6,7 +6,7 @@ import DropboxItem from './DropboxItem' import DropboxContent from './DropboxContent' import ColorPanel from './ColorPanel' import SizePanel from './SizePanel' -import { IChartInfo } from '../Pivot/Chart' +import { IChartInfo } from '../Widget' import { decodeMetricName } from '../util' const Popover = require('antd/lib/popover') const Icon = require('antd/lib/icon') diff --git a/webapp/app/containers/Widget/components/Workbench/DropboxItem.tsx b/webapp/app/containers/Widget/components/Workbench/DropboxItem.tsx index 4f65d8ea7..0907e39d6 100644 --- a/webapp/app/containers/Widget/components/Workbench/DropboxItem.tsx +++ b/webapp/app/containers/Widget/components/Workbench/DropboxItem.tsx @@ -1,9 +1,9 @@ import * as React from 'react' import * as classnames from 'classnames' import { SortType, AggregatorType, IDataParamSource, IDataParamSourceInBox } from './Dropbox' -import ChartSelector from './ChartSelector' +import PivotChartSelector from './PivotChartSelector' import { getAggregatorLocale, decodeMetricName } from '../util' -import { IChartInfo } from '../Pivot/Chart' +import { IChartInfo } from '../Widget' const Icon = require('antd/lib/icon') const Menu = require('antd/lib/menu') @@ -138,10 +138,10 @@ export class DropboxItem extends React.PureComponent - {chartSelector} + {pivotChartSelector} {contentWithDropdownList} void onExpiredChange: (expired: number) => void onLoadData: (viewId: number, params: object, resolve: (data: any[]) => void) => void - onSetPivotProps: (pivotProps: Partial) => void + onSetWidgetProps: (widgetProps: Partial) => void onLoadDistinctValue: (viewId: number, column: string, parents?: Array<{column: string, value: string}>) => void } @@ -69,6 +70,9 @@ interface IOperatingPanelStates { dragged: IDataParamSource showColsAndRows: boolean selectedTab: 'data' | 'style' | 'variable' | 'cache' + mode: WidgetMode + currentWidgetlibs: IChartInfo[] + chartModeSelectedChart: IChartInfo commonParams: IDataParams specificParams: IDataParams styleParams: IChartStyles @@ -90,6 +94,9 @@ export class OperatingPanel extends React.Component ({ name: c, @@ -153,7 +161,8 @@ export class OperatingPanel extends React.Component ({ ...m, type: 'value' as DragType, - visualType: model[decodeMetricName(m.name)].visualType + visualType: model[decodeMetricName(m.name)].visualType, + chart: currentWidgetlibs.find((wl) => wl.id === m.chart.id) // FIXME 兼容 0.3.0-beta.1 之前版本,widgetlib requireDimetions requireMetrics 有发生变更 })) commonParams.filters.items = filters.map((f) => ({ ...f, @@ -170,7 +179,10 @@ export class OperatingPanel extends React.Component wl.id === selectedChart)} }, () => { this.getVisualData(commonParams, currentSpecificParams, chartStyles) }) @@ -240,7 +252,7 @@ export class OperatingPanel extends React.Component + private getPivotModeSelectedCharts = (items: IDataParamSource[]): IChartInfo[] => items.length ? items.map((i) => i.chart) : [getPivot()] private getDragItemIconClass = (type: ViewModelType) => { @@ -484,7 +496,7 @@ export class OperatingPanel extends React.Component { const { cols, rows, metrics, filters } = commonParams const { color, label, size, xAxis, tip } = specificParams - const { selectedView, onLoadData, onSetPivotProps } = this.props - let selectedCharts = this.getSelectedCharts(metrics.items) + const { selectedView, onLoadData, onSetWidgetProps } = this.props + const { mode, chartModeSelectedChart } = this.state let groups = cols.items.map((c) => c.name) .concat(rows.items.map((r) => r.name)) .filter((g) => g !== '指标名称') @@ -567,15 +579,27 @@ export class OperatingPanel extends React.Component { if (data.length) { - onSetPivotProps({ + onSetWidgetProps({ cols: cols.items.map((i) => i.name), rows: rows.items.map((i) => i.name), metrics: metrics.items.map((item) => ({...item})), @@ -586,31 +610,36 @@ export class OperatingPanel extends React.Component i.name), rows: rows.items.map((i) => i.name), metrics: metrics.items.map((item) => ({...item})), @@ -621,13 +650,16 @@ export class OperatingPanel extends React.Component { - const { commonParams } = this.state + const { mode, commonParams } = this.state const { cols, rows, metrics } = commonParams - if (!(metrics.items.length === 1 && metrics.items[0].chart.id === chart.id)) { - metrics.items.forEach((i) => { - i.chart = chart - }) - if (chart.id !== getPivot().id) { - cols.items = cols.items.filter((c) => c.name !== '指标名称') - rows.items = rows.items.filter((r) => r.name !== '指标名称') + if (mode === 'pivot') { + if (!(metrics.items.length === 1 && metrics.items[0].chart.id === chart.id)) { + metrics.items.forEach((i) => { + i.chart = chart + }) + if (chart.id !== getPivot().id) { + cols.items = cols.items.filter((c) => c.name !== '指标名称') + rows.items = rows.items.filter((r) => r.name !== '指标名称') + } + const { specificParams, styleParams } = this.getChartDataConfig(this.getPivotModeSelectedCharts(metrics.items)) + this.getVisualData(commonParams, specificParams, styleParams) } - const { specificParams, styleParams } = this.getChartDataConfig(this.getSelectedCharts(metrics.items)) - this.getVisualData(commonParams, specificParams, styleParams) + } else { + this.setState({ + chartModeSelectedChart: chart + }, () => { + const { specificParams, styleParams } = this.getChartDataConfig([chart]) + this.getVisualData(commonParams, specificParams, styleParams) + }) } } @@ -674,8 +715,36 @@ export class OperatingPanel extends React.Component { + private changeMode = (e) => { + const mode = e.target.value const { commonParams, specificParams } = this.state + const hasItems = Object.values(commonParams) + .concat(Object.values(specificParams)) + .filter((param) => !!param.items.length) + if (hasItems.length) { + confirm({ + title: '切换图表模式会清空所有配置项,是否继续?', + onOk: () => { + this.setState({ + mode, + currentWidgetlibs: widgetlibs[mode] + }, () => { + this.resetWorkbench() + }) + } + }) + } else { + this.setState({ + mode, + currentWidgetlibs: widgetlibs[mode] + }, () => { + this.resetWorkbench() + }) + } + } + + private resetWorkbench = () => { + const { commonParams, specificParams, mode } = this.state Object.values(commonParams).forEach((param) => { param.items = [] if (param.value) { @@ -688,7 +757,11 @@ export class OperatingPanel extends React.Component @@ -961,18 +1037,6 @@ export class OperatingPanel extends React.Component
    - {showColsAndRows ? ' 使用维度' : ' 使用行列'} + {mode === 'pivot' && showColsAndRows ? ' 使用维度' : ' 使用行列'}
    行列切换 @@ -1026,6 +1090,16 @@ export class OperatingPanel extends React.Component + {label && } + {legend && } {xAxis &&
    @@ -1146,7 +1224,7 @@ export class OperatingPanel extends React.Component
    -

    分类型

    +

    分类型

      {categories.map((cat) => (
    -

    数值型

    +

    数值型

      {values.map((v) => (
    +
    + + + 透视驱动 + + + 视图驱动 + + +
    - {widgetlibs.map((c) => ( + {currentWidgetlibs.map((c) => ( ))} diff --git a/webapp/app/containers/Widget/components/Workbench/ChartSelector.tsx b/webapp/app/containers/Widget/components/Workbench/PivotChartSelector.tsx similarity index 74% rename from webapp/app/containers/Widget/components/Workbench/ChartSelector.tsx rename to webapp/app/containers/Widget/components/Workbench/PivotChartSelector.tsx index ededbbddf..eedfb8ec5 100644 --- a/webapp/app/containers/Widget/components/Workbench/ChartSelector.tsx +++ b/webapp/app/containers/Widget/components/Workbench/PivotChartSelector.tsx @@ -1,22 +1,23 @@ import * as React from 'react' -import widgetlibs from '../../../../assets/json/widgetlib' +import widgetlibs from '../../config' +const pivotlibs = widgetlibs['pivot'] const Dropdown = require('antd/lib/dropdown') const Menu = require('antd/lib/menu') const MenuItem = Menu.Item import { checkChartEnable, getPivot } from '../util' -import { IChartInfo } from '../Pivot/Chart' +import { IChartInfo } from '../Widget' const styles = require('./Workbench.less') -interface IChartSelectorProps { +interface IPivotChartSelectorProps { chart: IChartInfo dimetionsCount: number metricsCount: number onChangeChart: (chart: IChartInfo) => void } -export function ChartSelector (props: IChartSelectorProps) { +export function PivotChartSelector (props: IPivotChartSelectorProps) { const pivot = getPivot() - const enabledChartList = widgetlibs + const enabledChartList = pivotlibs .filter((w) => w !== pivot && checkChartEnable(props.dimetionsCount, props.metricsCount, w)) .map((c) => ( @@ -40,11 +41,11 @@ export function ChartSelector (props: IChartSelectorProps) { return selector } -export default ChartSelector +export default PivotChartSelector -function chartClick (props: IChartSelectorProps) { +function chartClick (props: IPivotChartSelectorProps) { return function ({key}) { - const selectedChart = widgetlibs.find((wl) => `${wl.id}` === key) + const selectedChart = pivotlibs.find((wl) => `${wl.id}` === key) const originalChart = props.chart if (selectedChart.id !== originalChart.id) { props.onChangeChart(selectedChart) diff --git a/webapp/app/containers/Widget/components/Workbench/Workbench.less b/webapp/app/containers/Widget/components/Workbench/Workbench.less index 10ea2d646..ca7ec64c3 100644 --- a/webapp/app/containers/Widget/components/Workbench/Workbench.less +++ b/webapp/app/containers/Widget/components/Workbench/Workbench.less @@ -141,8 +141,22 @@ } } +.mode { + flex-shrink: 0; + height: 36px; + padding-top: 8px; + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + + .button { + color: @disabled-text-color; + } +} + .charts { - padding: 4px 5px 4px 4px; + padding: 0 5px 4px 4px; border-bottom: 1px solid @border-color-base; flex-shrink: 0; display: flex; diff --git a/webapp/app/containers/Widget/components/Workbench/index.tsx b/webapp/app/containers/Widget/components/Workbench/index.tsx index 6d1142c98..4507dca0c 100644 --- a/webapp/app/containers/Widget/components/Workbench/index.tsx +++ b/webapp/app/containers/Widget/components/Workbench/index.tsx @@ -16,11 +16,10 @@ import { makeSelectCurrentWidget, makeSelectLoading, makeSelectDataLoading, make import { makeSelectBizlogics } from '../../../Bizlogic/selectors' import OperatingPanel from './OperatingPanel' -import { IPivotProps } from '../Pivot/Pivot' -import ScrollablePivot from '../Pivot' +import Widget, { IWidgetProps } from '../Widget' import EditorHeader from '../../../../components/EditorHeader' import { DEFAULT_SPLITER } from '../../../../globalConstants' -import { getStyleConfig } from 'containers/Widget/components/util' +import { getStyleConfig, getTable } from 'containers/Widget/components/util' const message = require('antd/lib/message') const styles = require('./Workbench.less') @@ -81,8 +80,8 @@ interface IWorkbenchStates { queryParams: any[] cache: boolean expired: number - currentWidgetConfig: IPivotProps - pivotProps: IPivotProps + currentWidgetConfig: IWidgetProps + widgetProps: IWidgetProps } export class Workbench extends React.Component { @@ -97,17 +96,19 @@ export class Workbench extends React.Component { - const data = pivotProps.data || this.state.pivotProps.data + private setWidgetProps = (widgetProps: IWidgetProps) => { + const data = widgetProps.data || this.state.widgetProps.data this.setState({ - pivotProps: { - ...pivotProps, + widgetProps: { + ...widgetProps, data } }) @@ -202,7 +203,7 @@ export class Workbench extends React.Component { const { params, onAddWidget, onEditWidget } = this.props - const { id, name, description, selectedView, queryParams, cache, expired, pivotProps } = this.state + const { id, name, description, selectedView, queryParams, cache, expired, widgetProps } = this.state if (!name.trim()) { message.error('Widget名称不能为空') return @@ -214,7 +215,7 @@ export class Workbench extends React.Component
    -
    diff --git a/webapp/app/containers/Widget/components/util.ts b/webapp/app/containers/Widget/components/util.ts index 99baf8530..f03f6cfd9 100644 --- a/webapp/app/containers/Widget/components/util.ts +++ b/webapp/app/containers/Widget/components/util.ts @@ -20,9 +20,11 @@ import { PIVOT_CANVAS_AXIS_SIZE_LIMIT, PIVOT_DEFAULT_SCATTER_SIZE_TIMES } from '../../../globalConstants' -import { DimetionType, IChartStyles } from './Pivot/Pivot' -import { IChartLine, IChartUnit, IChartInfo } from './Pivot/Chart' -import widgetlibs from '../../../assets/json/widgetlib' +import { DimetionType, IChartStyles, IChartInfo } from './Widget' +import { IChartLine, IChartUnit } from './Pivot/Chart' +import widgetlibs from '../config' +const pivotlibs = widgetlibs['pivot'] +const chartlibs = widgetlibs['chart'] import { uuid } from '../../../utils/util' export function getAggregatorLocale (agg) { @@ -235,8 +237,23 @@ export function checkChartEnable (dimetionsCount: number, metricsCount: number, const chartArr = Array.isArray(charts) ? charts : [charts] for (const chart of chartArr) { const { requireDimetions, requireMetrics } = chart - if (dimetionsCount < requireDimetions || metricsCount < requireMetrics) { - return false + if (Array.isArray(requireDimetions)) { + if (dimetionsCount < requireDimetions[0] || dimetionsCount > requireDimetions[1]) { + return false + } + } else { + if (dimetionsCount !== requireDimetions) { + return false + } + } + if (Array.isArray(requireMetrics)) { + if (metricsCount < requireMetrics[0] || metricsCount > requireMetrics[1]) { + return false + } + } else { + if (metricsCount !== requireMetrics) { + return false + } } } return true @@ -279,15 +296,19 @@ export function metricAxisLabelFormatter (value) { } export function getPivot (): IChartInfo { - return widgetlibs[0] + return pivotlibs[0] } export function getBar (): IChartInfo { - return widgetlibs[2] + return pivotlibs[2] } export function getScatter (): IChartInfo { - return widgetlibs[3] + return pivotlibs[3] +} + +export function getTable (): IChartInfo { + return chartlibs[0] } export function getStyleConfig (chartStyles: IChartStyles): IChartStyles { @@ -484,7 +505,7 @@ export function getTooltipPosition (point, params, dom, rect, size) { ] } -export function getTooltipLabel (seriesData, cols, rows, metrics, color, label, size, scatterXAxis, tip) { +export function getPivotTooltipLabel (seriesData, cols, rows, metrics, color, label, size, scatterXAxis, tip) { let dimetionColumns = cols.concat(rows) let metricColumns = [...metrics] if (color) { @@ -546,6 +567,62 @@ export function getTooltipLabel (seriesData, cols, rows, metrics, color, label, } } +export function getChartTooltipLabel (seriesData, options) { + const { cols, metrics, color, size, scatterXAxis, tip } = options + let dimetionColumns = cols + let metricColumns = [...metrics] + if (color) { + dimetionColumns = dimetionColumns.concat(color.items.map((i) => i.name)) + } + if (size) { + metricColumns = metricColumns.concat(size.items) + } + if (scatterXAxis) { + metricColumns = metricColumns.concat(scatterXAxis.items) + } + if (tip) { + metricColumns = metricColumns.concat(tip.items) + } + + dimetionColumns = dimetionColumns.reduce((arr, dc) => { + if (!arr.includes(dc)) { + arr.push(dc) + } + return arr + }, []) + metricColumns = metricColumns.reduce((arr, mc) => { + const decodedName = decodeMetricName(mc.name) + if (!arr.find((m) => m.name.includes(decodedName) && m.agg === mc.agg)) { + arr.push(mc) + } + return arr + }, []) + + return function (params) { + const { seriesIndex, dataIndex } = params + const record = seriesData[seriesIndex][dataIndex] + return dimetionColumns + .map((dc) => { + const value = record + ? Array.isArray(record) + ? record[0][dc] + : record[dc] + : '' + return `${dc}: ${value}` + }) + .concat(metricColumns.map((mc) => { + const decodedName = decodeMetricName(mc.name) + const value = record + ? Array.isArray(record) + ? record.reduce((sum, r) => sum + r[`${mc.agg}(${decodedName})`], 0) + : record[`${mc.agg}(${decodedName})`] + : 0 + return `${decodedName}: ${value}` + })) + .join('
    ') + } +} + export function getChartLabel (seriesData, labelItem) { return function (params) { const record = getTriggeringRecord(params, seriesData) || {} diff --git a/webapp/app/assets/json/widgetlib/area.json b/webapp/app/containers/Widget/config/chart/area.json similarity index 100% rename from webapp/app/assets/json/widgetlib/area.json rename to webapp/app/containers/Widget/config/chart/area.json diff --git a/webapp/app/assets/json/widgetlib/bar.json b/webapp/app/containers/Widget/config/chart/bar.json similarity index 100% rename from webapp/app/assets/json/widgetlib/bar.json rename to webapp/app/containers/Widget/config/chart/bar.json diff --git a/webapp/app/containers/Widget/config/chart/bar.ts b/webapp/app/containers/Widget/config/chart/bar.ts new file mode 100644 index 000000000..7ff0bc2ec --- /dev/null +++ b/webapp/app/containers/Widget/config/chart/bar.ts @@ -0,0 +1,81 @@ +import { + PIVOT_DEFAULT_AXIS_LINE_COLOR, + PIVOT_CHART_FONT_FAMILIES, + PIVOT_DEFAULT_FONT_COLOR, + CHART_LABEL_POSITIONS +} from '../../../../globalConstants' + +import { IChartInfo } from '../../../../containers/Widget/components/Widget' + +const bar: IChartInfo = { + id: 3, + name: 'bar', + title: '柱状图', + icon: 'icon-chart-bar', + coordinate: 'cartesian', + requireDimetions: [0, 1], + requireMetrics: [1, 9999], + dimetionAxis: 'col', + data: { + color: { + title: '颜色', + type: 'category' + }, + tip: { + title: '提示信息', + type: 'value' + } + }, + style: { + spec: { + + }, + label: { + showLabel: false, + labelPosition: CHART_LABEL_POSITIONS[0].value, + labelFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + labelFontSize: '12', + labelColor: PIVOT_DEFAULT_FONT_COLOR + }, + xAxis: { + showLine: true, + lineStyle: 'solid', + lineSize: '1', + lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + showLabel: true, + labelFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + labelFontSize: '12', + labelColor: PIVOT_DEFAULT_FONT_COLOR + }, + yAxis: { + showLine: true, + lineStyle: 'solid', + lineSize: '1', + lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + showLabel: true, + labelFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + labelFontSize: '12', + labelColor: PIVOT_DEFAULT_FONT_COLOR, + showTitleAndUnit: true, + titleFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + titleFontSize: '12', + titleColor: PIVOT_DEFAULT_FONT_COLOR + }, + splitLine: { + showHorizontalLine: true, + horizontalLineStyle: 'dashed', + horizontalLineSize: '1', + horizontalLineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + showVerticalLine: false, + verticalLineStyle: 'dashed', + verticalLineSize: '1', + verticalLineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR + }, + legend: { + legendPosition: 'right', + selectAll: true + } + } +} + +export default bar diff --git a/webapp/app/assets/json/widgetlib/boxplot.json b/webapp/app/containers/Widget/config/chart/boxplot.json similarity index 100% rename from webapp/app/assets/json/widgetlib/boxplot.json rename to webapp/app/containers/Widget/config/chart/boxplot.json diff --git a/webapp/app/assets/json/widgetlib/confidenceBand.json b/webapp/app/containers/Widget/config/chart/confidenceBand.json similarity index 100% rename from webapp/app/assets/json/widgetlib/confidenceBand.json rename to webapp/app/containers/Widget/config/chart/confidenceBand.json diff --git a/webapp/app/assets/json/widgetlib/doubleYAxis.json b/webapp/app/containers/Widget/config/chart/doubleYAxis.json similarity index 100% rename from webapp/app/assets/json/widgetlib/doubleYAxis.json rename to webapp/app/containers/Widget/config/chart/doubleYAxis.json diff --git a/webapp/app/assets/json/widgetlib/funnel.json b/webapp/app/containers/Widget/config/chart/funnel.json similarity index 100% rename from webapp/app/assets/json/widgetlib/funnel.json rename to webapp/app/containers/Widget/config/chart/funnel.json diff --git a/webapp/app/assets/json/widgetlib/gauge.json b/webapp/app/containers/Widget/config/chart/gauge.json similarity index 100% rename from webapp/app/assets/json/widgetlib/gauge.json rename to webapp/app/containers/Widget/config/chart/gauge.json diff --git a/webapp/app/assets/json/widgetlib/graph.json b/webapp/app/containers/Widget/config/chart/graph.json similarity index 100% rename from webapp/app/assets/json/widgetlib/graph.json rename to webapp/app/containers/Widget/config/chart/graph.json diff --git a/webapp/app/containers/Widget/config/chart/index.tsx b/webapp/app/containers/Widget/config/chart/index.tsx new file mode 100644 index 000000000..13172d748 --- /dev/null +++ b/webapp/app/containers/Widget/config/chart/index.tsx @@ -0,0 +1,33 @@ +/* + * << + * Davinci + * == + * Copyright (C) 2016 - 2017 EDP + * == + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * >> + */ + +import { IChartInfo } from '../../../../containers/Widget/components/Widget' + +import table from './table' +import line from './line' +import bar from './bar' + +const widgetlibs: IChartInfo[] = [ + table, + line, + bar +] + +export default widgetlibs diff --git a/webapp/app/assets/json/widgetlib/line.json b/webapp/app/containers/Widget/config/chart/line.json similarity index 100% rename from webapp/app/assets/json/widgetlib/line.json rename to webapp/app/containers/Widget/config/chart/line.json diff --git a/webapp/app/containers/Widget/config/chart/line.ts b/webapp/app/containers/Widget/config/chart/line.ts new file mode 100644 index 000000000..3b25e44b5 --- /dev/null +++ b/webapp/app/containers/Widget/config/chart/line.ts @@ -0,0 +1,82 @@ +import { + PIVOT_DEFAULT_AXIS_LINE_COLOR, + PIVOT_CHART_FONT_FAMILIES, + PIVOT_DEFAULT_FONT_COLOR, + CHART_LABEL_POSITIONS +} from '../../../../globalConstants' + +import { IChartInfo } from '../../../../containers/Widget/components/Widget' + +const line: IChartInfo = { + id: 2, + name: 'line', + title: '折线图', + icon: 'icon-chart-line', + coordinate: 'cartesian', + requireDimetions: 1, + requireMetrics: [1, 9999], + dimetionAxis: 'col', + data: { + color: { + title: '颜色', + type: 'category' + }, + tip: { + title: '提示信息', + type: 'value' + } + }, + style: { + spec: { + smooth: false, + step: false + }, + label: { + showLabel: false, + labelPosition: CHART_LABEL_POSITIONS[0].value, + labelFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + labelFontSize: '12', + labelColor: PIVOT_DEFAULT_FONT_COLOR + }, + xAxis: { + showLine: true, + lineStyle: 'solid', + lineSize: '1', + lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + showLabel: true, + labelFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + labelFontSize: '12', + labelColor: PIVOT_DEFAULT_FONT_COLOR + }, + yAxis: { + showLine: true, + lineStyle: 'solid', + lineSize: '1', + lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + showLabel: true, + labelFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + labelFontSize: '12', + labelColor: PIVOT_DEFAULT_FONT_COLOR, + showTitleAndUnit: true, + titleFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + titleFontSize: '12', + titleColor: PIVOT_DEFAULT_FONT_COLOR + }, + splitLine: { + showHorizontalLine: true, + horizontalLineStyle: 'dashed', + horizontalLineSize: '1', + horizontalLineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + showVerticalLine: false, + verticalLineStyle: 'dashed', + verticalLineSize: '1', + verticalLineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR + }, + legend: { + legendPosition: 'right', + selectAll: true + } + } +} + +export default line diff --git a/webapp/app/assets/json/widgetlib/map.json b/webapp/app/containers/Widget/config/chart/map.json similarity index 100% rename from webapp/app/assets/json/widgetlib/map.json rename to webapp/app/containers/Widget/config/chart/map.json diff --git a/webapp/app/assets/json/widgetlib/markBoxplot.json b/webapp/app/containers/Widget/config/chart/markBoxplot.json similarity index 100% rename from webapp/app/assets/json/widgetlib/markBoxplot.json rename to webapp/app/containers/Widget/config/chart/markBoxplot.json diff --git a/webapp/app/assets/json/widgetlib/parallel.json b/webapp/app/containers/Widget/config/chart/parallel.json similarity index 100% rename from webapp/app/assets/json/widgetlib/parallel.json rename to webapp/app/containers/Widget/config/chart/parallel.json diff --git a/webapp/app/assets/json/widgetlib/pie.json b/webapp/app/containers/Widget/config/chart/pie.json similarity index 100% rename from webapp/app/assets/json/widgetlib/pie.json rename to webapp/app/containers/Widget/config/chart/pie.json diff --git a/webapp/app/assets/json/widgetlib/radar.json b/webapp/app/containers/Widget/config/chart/radar.json similarity index 100% rename from webapp/app/assets/json/widgetlib/radar.json rename to webapp/app/containers/Widget/config/chart/radar.json diff --git a/webapp/app/assets/json/widgetlib/sankey.json b/webapp/app/containers/Widget/config/chart/sankey.json similarity index 100% rename from webapp/app/assets/json/widgetlib/sankey.json rename to webapp/app/containers/Widget/config/chart/sankey.json diff --git a/webapp/app/assets/json/widgetlib/scatter.json b/webapp/app/containers/Widget/config/chart/scatter.json similarity index 100% rename from webapp/app/assets/json/widgetlib/scatter.json rename to webapp/app/containers/Widget/config/chart/scatter.json diff --git a/webapp/app/assets/json/widgetlib/scorecard.json b/webapp/app/containers/Widget/config/chart/scorecard.json similarity index 100% rename from webapp/app/assets/json/widgetlib/scorecard.json rename to webapp/app/containers/Widget/config/chart/scorecard.json diff --git a/webapp/app/assets/json/widgetlib/table.json b/webapp/app/containers/Widget/config/chart/table.json similarity index 100% rename from webapp/app/assets/json/widgetlib/table.json rename to webapp/app/containers/Widget/config/chart/table.json diff --git a/webapp/app/containers/Widget/config/chart/table.ts b/webapp/app/containers/Widget/config/chart/table.ts new file mode 100644 index 000000000..e66ee4699 --- /dev/null +++ b/webapp/app/containers/Widget/config/chart/table.ts @@ -0,0 +1,31 @@ +import { + PIVOT_DEFAULT_AXIS_LINE_COLOR, + PIVOT_CHART_FONT_FAMILIES, + PIVOT_DEFAULT_FONT_COLOR, + PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR +} from '../../../../globalConstants' + +import { IChartInfo } from '../../../../containers/Widget/components/Widget' + +const table: IChartInfo = { + id: 1, + name: 'table', + title: '表格', + icon: 'icon-table', + coordinate: 'other', + requireDimetions: [0, 9999], + requireMetrics: [0, 9999], + data: {}, + style: { + table: { + fontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + fontSize: '12', + color: PIVOT_DEFAULT_FONT_COLOR, + lineStyle: 'solid', + lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + headerBackgroundColor: PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR + } + } +} + +export default table diff --git a/webapp/app/assets/json/widgetlib/text.json b/webapp/app/containers/Widget/config/chart/text.json similarity index 100% rename from webapp/app/assets/json/widgetlib/text.json rename to webapp/app/containers/Widget/config/chart/text.json diff --git a/webapp/app/assets/json/widgetlib/treemap.json b/webapp/app/containers/Widget/config/chart/treemap.json similarity index 100% rename from webapp/app/assets/json/widgetlib/treemap.json rename to webapp/app/containers/Widget/config/chart/treemap.json diff --git a/webapp/app/assets/json/widgetlib/waterfall.json b/webapp/app/containers/Widget/config/chart/waterfall.json similarity index 100% rename from webapp/app/assets/json/widgetlib/waterfall.json rename to webapp/app/containers/Widget/config/chart/waterfall.json diff --git a/webapp/app/assets/json/widgetlib/wordCloud.json b/webapp/app/containers/Widget/config/chart/wordCloud.json similarity index 100% rename from webapp/app/assets/json/widgetlib/wordCloud.json rename to webapp/app/containers/Widget/config/chart/wordCloud.json diff --git a/webapp/app/containers/Widget/config/index.ts b/webapp/app/containers/Widget/config/index.ts new file mode 100644 index 000000000..a681e9985 --- /dev/null +++ b/webapp/app/containers/Widget/config/index.ts @@ -0,0 +1,7 @@ +import pivot from './pivot' +import chart from './chart' + +export default { + pivot, + chart +} diff --git a/webapp/app/containers/Widget/config/pivot/bar.ts b/webapp/app/containers/Widget/config/pivot/bar.ts new file mode 100644 index 000000000..8910e3246 --- /dev/null +++ b/webapp/app/containers/Widget/config/pivot/bar.ts @@ -0,0 +1,79 @@ +import { + PIVOT_DEFAULT_AXIS_LINE_COLOR, + PIVOT_CHART_FONT_FAMILIES, + PIVOT_DEFAULT_FONT_COLOR, + PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR +} from '../../../../globalConstants' + +import { IChartInfo } from '../../../../containers/Widget/components/Widget' + +const bar: IChartInfo = { + id: 3, + name: 'bar', + title: '柱状图', + icon: 'icon-chart-bar', + coordinate: 'cartesian', + requireDimetions: [0, 9999], + requireMetrics: [1, 9999], + dimetionAxis: 'col', + data: { + color: { + title: '颜色', + type: 'category' + }, + label: { + title: '标签', + type: 'all' + }, + tip: { + title: '提示信息', + type: 'value' + } + }, + style: { + xAxis: { + showLine: true, + lineStyle: 'solid', + lineSize: '1', + lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + showLabel: true, + labelFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + labelFontSize: '12', + labelColor: PIVOT_DEFAULT_FONT_COLOR + }, + yAxis: { + showLine: true, + lineStyle: 'solid', + lineSize: '1', + lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + showLabel: true, + labelFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + labelFontSize: '12', + labelColor: PIVOT_DEFAULT_FONT_COLOR, + showTitleAndUnit: true, + titleFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + titleFontSize: '12', + titleColor: PIVOT_DEFAULT_FONT_COLOR + }, + splitLine: { + showHorizontalLine: true, + horizontalLineStyle: 'dashed', + horizontalLineSize: '1', + horizontalLineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + showVerticalLine: false, + verticalLineStyle: 'dashed', + verticalLineSize: '1', + verticalLineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR + }, + pivot: { + fontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + fontSize: '12', + color: PIVOT_DEFAULT_FONT_COLOR, + lineStyle: 'solid', + lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + headerBackgroundColor: PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR + } + } +} + +export default bar diff --git a/webapp/app/containers/Widget/config/pivot/index.ts b/webapp/app/containers/Widget/config/pivot/index.ts new file mode 100644 index 000000000..0aa1bbaa9 --- /dev/null +++ b/webapp/app/containers/Widget/config/pivot/index.ts @@ -0,0 +1,36 @@ +/* + * << + * Davinci + * == + * Copyright (C) 2016 - 2017 EDP + * == + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * >> + */ + +import pivot from './pivot' +import line from './line' +import bar from './bar' +import pie from './pie' +import scatter from './scatter' +import { IChartInfo } from '../../../../containers/Widget/components/Widget' + +const widgetlibs: IChartInfo[] = [ + pivot, + line, + bar, + scatter, + pie +] + +export default widgetlibs diff --git a/webapp/app/containers/Widget/config/pivot/line.ts b/webapp/app/containers/Widget/config/pivot/line.ts new file mode 100644 index 000000000..6bcee3b90 --- /dev/null +++ b/webapp/app/containers/Widget/config/pivot/line.ts @@ -0,0 +1,83 @@ +import { + PIVOT_DEFAULT_AXIS_LINE_COLOR, + PIVOT_CHART_FONT_FAMILIES, + PIVOT_DEFAULT_FONT_COLOR, + PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR +} from '../../../../globalConstants' + +import { IChartInfo } from '../../../../containers/Widget/components/Widget' + +const line: IChartInfo = { + id: 2, + name: 'line', + title: '折线图', + icon: 'icon-chart-line', + coordinate: 'cartesian', + requireDimetions: [1, 9999], + requireMetrics: [1, 9999], + dimetionAxis: 'col', + data: { + color: { + title: '颜色', + type: 'category' + }, + label: { + title: '标签', + type: 'all' + }, + tip: { + title: '提示信息', + type: 'value' + } + }, + style: { + spec: { + smooth: false, + step: false + }, + xAxis: { + showLine: true, + lineStyle: 'solid', + lineSize: '1', + lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + showLabel: true, + labelFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + labelFontSize: '12', + labelColor: PIVOT_DEFAULT_FONT_COLOR + }, + yAxis: { + showLine: true, + lineStyle: 'solid', + lineSize: '1', + lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + showLabel: true, + labelFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + labelFontSize: '12', + labelColor: PIVOT_DEFAULT_FONT_COLOR, + showTitleAndUnit: true, + titleFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + titleFontSize: '12', + titleColor: PIVOT_DEFAULT_FONT_COLOR + }, + splitLine: { + showHorizontalLine: true, + horizontalLineStyle: 'dashed', + horizontalLineSize: '1', + horizontalLineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + showVerticalLine: false, + verticalLineStyle: 'dashed', + verticalLineSize: '1', + verticalLineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR + }, + pivot: { + fontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + fontSize: '12', + color: PIVOT_DEFAULT_FONT_COLOR, + lineStyle: 'solid', + lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + headerBackgroundColor: PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR + } + } +} + +export default line diff --git a/webapp/app/containers/Widget/config/pivot/pie.ts b/webapp/app/containers/Widget/config/pivot/pie.ts new file mode 100644 index 000000000..228204772 --- /dev/null +++ b/webapp/app/containers/Widget/config/pivot/pie.ts @@ -0,0 +1,67 @@ +import { + PIVOT_DEFAULT_AXIS_LINE_COLOR, + PIVOT_CHART_FONT_FAMILIES, + PIVOT_DEFAULT_FONT_COLOR, + PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR +} from '../../../../globalConstants' + +import { IChartInfo } from '../../../../containers/Widget/components/Widget' + +const pie: IChartInfo = { + id: 5, + name: 'pie', + title: '饼图', + icon: 'icon-chartpie', + coordinate: 'polar', + requireDimetions: [0, 9999], + requireMetrics: [1, 9999], + data: { + color: { + title: '颜色', + type: 'category' + }, + label: { + title: '标签', + type: 'all' + }, + tip: { + title: '提示信息', + type: 'value' + } + }, + style: { + spec: { + circle: false + }, + xAxis: { + showLine: true, + lineStyle: 'solid', + lineSize: '1', + lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + showLabel: true, + labelFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + labelFontSize: '12', + labelColor: PIVOT_DEFAULT_FONT_COLOR + }, + splitLine: { + showHorizontalLine: true, + horizontalLineStyle: 'dashed', + horizontalLineSize: '1', + horizontalLineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + showVerticalLine: false, + verticalLineStyle: 'dashed', + verticalLineSize: '1', + verticalLineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR + }, + pivot: { + fontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + fontSize: '12', + color: PIVOT_DEFAULT_FONT_COLOR, + lineStyle: 'solid', + lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + headerBackgroundColor: PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR + } + } +} + +export default pie diff --git a/webapp/app/containers/Widget/config/pivot/pivot.ts b/webapp/app/containers/Widget/config/pivot/pivot.ts new file mode 100644 index 000000000..037b04f10 --- /dev/null +++ b/webapp/app/containers/Widget/config/pivot/pivot.ts @@ -0,0 +1,36 @@ +import { + PIVOT_DEFAULT_AXIS_LINE_COLOR, + PIVOT_CHART_FONT_FAMILIES, + PIVOT_DEFAULT_FONT_COLOR, + PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR +} from '../../../../globalConstants' + +import { IChartInfo } from '../../../../containers/Widget/components/Widget' + +const pivot: IChartInfo = { + id: 1, + name: 'pivot', + title: '透视表', + icon: 'icon-table', + coordinate: 'cartesian', + requireDimetions: [0, 9999], + requireMetrics: [0, 9999], + data: { + color: { + title: '颜色', + type: 'category' + } + }, + style: { + pivot: { + fontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + fontSize: '12', + color: PIVOT_DEFAULT_FONT_COLOR, + lineStyle: 'solid', + lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + headerBackgroundColor: PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR + } + } +} + +export default pivot diff --git a/webapp/app/containers/Widget/config/pivot/scatter.ts b/webapp/app/containers/Widget/config/pivot/scatter.ts new file mode 100644 index 000000000..4b06cef2b --- /dev/null +++ b/webapp/app/containers/Widget/config/pivot/scatter.ts @@ -0,0 +1,86 @@ +import { + PIVOT_DEFAULT_AXIS_LINE_COLOR, + PIVOT_CHART_FONT_FAMILIES, + PIVOT_DEFAULT_FONT_COLOR, + PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR +} from '../../../../globalConstants' + +import { IChartInfo } from '../../../../containers/Widget/components/Widget' + +const scatter: IChartInfo = { + id: 4, + name: 'scatter', + title: '散点图', + icon: 'icon-scatter-chart', + coordinate: 'cartesian', + requireDimetions: [0, 9999], + requireMetrics: [1, 9999], + data: { + xAxis: { + title: 'x数据轴', + type: 'value' + }, + color: { + title: '颜色', + type: 'category' + }, + size: { + title: '尺寸', + type: 'value' + }, + label: { + title: '标签', + type: 'all' + }, + tip: { + title: '提示信息', + type: 'value' + } + }, + style: { + xAxis: { + showLine: true, + lineStyle: 'solid', + lineSize: '1', + lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + showLabel: true, + labelFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + labelFontSize: '12', + labelColor: PIVOT_DEFAULT_FONT_COLOR + }, + yAxis: { + showLine: true, + lineStyle: 'solid', + lineSize: '1', + lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + showLabel: true, + labelFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + labelFontSize: '12', + labelColor: PIVOT_DEFAULT_FONT_COLOR, + showTitleAndUnit: true, + titleFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + titleFontSize: '12', + titleColor: PIVOT_DEFAULT_FONT_COLOR + }, + splitLine: { + showHorizontalLine: true, + horizontalLineStyle: 'dashed', + horizontalLineSize: '1', + horizontalLineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + showVerticalLine: false, + verticalLineStyle: 'dashed', + verticalLineSize: '1', + verticalLineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR + }, + pivot: { + fontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + fontSize: '12', + color: PIVOT_DEFAULT_FONT_COLOR, + lineStyle: 'solid', + lineColor: PIVOT_DEFAULT_AXIS_LINE_COLOR, + headerBackgroundColor: PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR + } + } +} + +export default scatter diff --git a/webapp/app/containers/Widget/index.tsx b/webapp/app/containers/Widget/index.tsx index e91dc2603..083913f0b 100644 --- a/webapp/app/containers/Widget/index.tsx +++ b/webapp/app/containers/Widget/index.tsx @@ -48,11 +48,8 @@ const Modal = require('antd/lib/modal') const Popconfirm = require('antd/lib/popconfirm') const Breadcrumb = require('antd/lib/breadcrumb') const Input = require('antd/lib/input') -const Pagination = require('antd/lib/pagination') const Select = require('antd/lib/select') -const Search = Input.Search -import widgetlibs from '../../assets/json/widgetlib' import { loadWidgets, deleteWidget, addWidget } from './actions' import { loadBizlogics } from '../Bizlogic/actions' import { makeSelectWidgets, makeSelectLoading } from './selectors' @@ -102,7 +99,7 @@ interface IWidgetStates { tableSortedInfo: {columnKey?: string, order?: string} } -export class Widget extends React.Component { +export class WidgetList extends React.Component { constructor (props) { super(props) this.state = { @@ -366,18 +363,6 @@ export class Widget extends React.Component { showSizeChanger: true } - const widgetsArr = filteredWidgets || widgets || [] - - const widgetlibOptions = widgetlibs.map((w) => ( - - {w.title} - {`${w.id}` !== filteredWidgetsTypeId - ? ( - - ) : ''} - - )) - return ( @@ -496,4 +481,4 @@ export default compose( withSagaBizlogic, withSagaWidget, withConnect -)(Widget) +)(WidgetList) diff --git a/webapp/app/containers/Widget/charts/lineOld.ts b/webapp/app/containers/Widget/render/chart/area.ts similarity index 78% rename from webapp/app/containers/Widget/charts/lineOld.ts rename to webapp/app/containers/Widget/render/chart/area.ts index 28c4c76a4..abe7f3b84 100644 --- a/webapp/app/containers/Widget/charts/lineOld.ts +++ b/webapp/app/containers/Widget/render/chart/area.ts @@ -19,21 +19,21 @@ */ /* - * Line chart options generator + * Area chart options generator */ -export default function (dataSource, flatInfo, chartParams, interactIndex) { +export default function (dataSource, flatInfo, chartParams) { const hasGroups = flatInfo.groups const { xAxis, metrics, groups, - label, xAxisInterval, xAxisRotate, dataZoomThreshold, smooth, step, + stack, symbol, hasLegend, legendSelected, @@ -55,17 +55,18 @@ export default function (dataSource, flatInfo, chartParams, interactIndex) { let xAxisOptions let smoothOption let stepOption + let stackOption let symbolOption let legendOptions let toolboxOptions let gridOptions - let labelOption let dataZoomOptions let suffixYAxisOptions suffixYAxisOptions = suffixYAxis && suffixYAxis.length ? {axisLabel: { formatter: `{value} ${suffixYAxis}` }} : null + // symbol symbolOption = symbol && symbol.length ? { symbol: 'emptyCircle' } @@ -74,16 +75,9 @@ export default function (dataSource, flatInfo, chartParams, interactIndex) { smoothOption = smooth && smooth.length ? { smooth: true } : null // step stepOption = step && step.length ? { step: true } : null - // label - labelOption = label && label.length - ? { - label: { - normal: { - show: true, - position: 'top' - } - } - } : null + // stack + stackOption = stack && stack.length ? { stack: 'stack' } : null + // 数据分组 let xAxisDistincted = [] @@ -104,30 +98,13 @@ export default function (dataSource, flatInfo, chartParams, interactIndex) { const serieObj = { name: `${k} ${m}`, type: 'line', + areaStyle: {normal: {}}, sampling: 'average', - data: grouped[k].map((g, index) => { - if (index === interactIndex) { - return { - value: g[m], - itemStyle: { - normal: { - opacity: 1 - } - } - } - } else { - return g[m] - } - }), - itemStyle: { - normal: { - opacity: interactIndex === undefined ? 1 : 0.25 - } - }, + data: grouped[k].map((g) => g[m]), ...symbolOption, ...smoothOption, ...stepOption, - ...labelOption + ...stackOption } metricArr.push(serieObj) }) @@ -135,41 +112,13 @@ export default function (dataSource, flatInfo, chartParams, interactIndex) { const serieObj = { name: m, type: 'line', + areaStyle: {normal: {}}, sampling: 'average', symbol: symbolOption, - data: dataSource.map((d, index) => { - if (index === interactIndex) { - return { - value: d[m], - lineStyle: { - normal: { - opacity: 1 - } - }, - itemStyle: { - normal: { - opacity: 1 - } - } - } - } else { - return d[m] - } - }), - lineStyle: { - normal: { - opacity: interactIndex === undefined ? 1 : 0.25 - } - }, - itemStyle: { - normal: { - opacity: interactIndex === undefined ? 1 : 0.25 - } - }, + data: dataSource.map((d) => d[m]), ...symbolOption, ...smoothOption, - ...stepOption, - ...labelOption + ...stepOption } metricArr.push(serieObj) } @@ -226,7 +175,7 @@ export default function (dataSource, flatInfo, chartParams, interactIndex) { const selected = legendSelected === 'unselectAll' ? { - selected: metricArr.reduce((obj, m) => ({ ...obj, [m.name]: false }), {}) + selected: metricArr.reduce((obj, m) => ({...obj, [m.name]: false }), {}) } : null legendOptions = { diff --git a/webapp/app/containers/Widget/render/chart/bar.ts b/webapp/app/containers/Widget/render/chart/bar.ts new file mode 100644 index 000000000..ec7248ed6 --- /dev/null +++ b/webapp/app/containers/Widget/render/chart/bar.ts @@ -0,0 +1,338 @@ +/* + * << + * Davinci + * == + * Copyright (C) 2016 - 2017 EDP + * == + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * >> + */ + +import { IChartProps } from '../../components/Chart' +import { metricAxisLabelFormatter, decodeMetricName, getChartTooltipLabel, getAggregatorLocale, getTextWidth } from '../../components/util' +import { makeGrouped, distinctXaxis, getGridPositions, getGridBase } from './line' + +export default function (chartProps: IChartProps) { + const { + data, + cols, + metrics, + chartStyles, + color, + tip + } = chartProps + + const { + spec, + label, + legend, + xAxis, + yAxis, + splitLine + } = chartStyles + + const { + showLine: showLineX, + lineStyle: lineStyleX, + lineSize: lineSizeX, + lineColor: lineColorX, + showLabel: showLabelX, + labelFontFamily: labelFontFamilyX, + labelFontSize: labelFontSizeX, + labelColor: labelColorX + } = xAxis + + const { + showLine: showLineY, + lineStyle: lineStyleY, + lineSize: lineSizeY, + lineColor: lineColorY, + showLabel: showLabelY, + labelFontFamily: labelFontFamilyY, + labelFontSize: labelFontSizeY, + labelColor: labelColorY, + showTitleAndUnit, + titleFontFamily, + titleFontSize, + titleColor + } = yAxis + + const { + showHorizontalLine, + horizontalLineStyle, + horizontalLineSize, + horizontalLineColor, + showVerticalLine, + verticalLineStyle, + verticalLineSize, + verticalLineColor + } = splitLine + + const { + showLabel, + labelPosition, + labelFontFamily, + labelFontSize, + labelColor + } = label + + const { + legendPosition, + selectAll + } = legend + + const labelOption = { + label: { + normal: { + show: showLabel, + position: labelPosition, + color: labelColor, + fontFamily: labelFontFamily, + fontSize: labelFontSize + } + } + } + + let xAxisData = data.map((d) => d[cols[0]] || '') + let grouped = {} + if (color.items.length) { + xAxisData = distinctXaxis(data, cols[0]) + grouped = makeGrouped(data, color.items.map((c) => c.name), cols[0], metrics, xAxisData) + } + + const series = [] + const seriesData = [] + + metrics.forEach((m) => { + const decodedMetricName = decodeMetricName(m.name) + const localeMetricName = `[${getAggregatorLocale(m.agg)}] ${decodedMetricName}` + if (color.items.length) { + Object + .entries(grouped) + .forEach(([k, v]: [string, any[]]) => { + const serieObj = { + name: `${k} ${localeMetricName}`, + type: 'bar', + stack: m.name, + sampling: 'average', + data: v.map((g, index) => { + // if (index === interactIndex) { + // return { + // value: g[m], + // itemStyle: { + // normal: { + // opacity: 1 + // } + // } + // } + // } else { + return g[`${m.agg}(${decodedMetricName})`] + // } + }), + itemStyle: { + normal: { + // opacity: interactIndex === undefined ? 1 : 0.25 + color: color.items[0].config.values[k.split(',')[0]] + } + }, + ...labelOption + } + series.push(serieObj) + seriesData.push(grouped[k]) + }) + } else { + const serieObj = { + name: decodedMetricName, + type: 'bar', + sampling: 'average', + data: data.map((d, index) => { + // if (index === interactIndex) { + // return { + // value: d[m], + // lineStyle: { + // normal: { + // opacity: 1 + // } + // }, + // itemStyle: { + // normal: { + // opacity: 1 + // } + // } + // } + // } else { + return d[`${m.agg}(${decodedMetricName})`] + // } + }), + // lineStyle: { + // normal: { + // opacity: interactIndex === undefined ? 1 : 0.25 + // } + // }, + itemStyle: { + normal: { + // opacity: interactIndex === undefined ? 1 : 0.25 + color: color.value[m.name] || color.value['all'] + } + }, + ...labelOption + } + series.push(serieObj) + seriesData.push([...data]) + } + }) + + let legendOption + if (color.items.length || metrics.length > 1) { + let orient + let positions + + switch (legendPosition) { + case 'top': + orient = { orient: 'horizontal' } + positions = { top: 8, left: 8, right: 8, height: 32 } + break + case 'bottom': + orient = { orient: 'horizontal' } + positions = { bottom: 8, left: 8, right: 8, height: 32 } + break + case 'left': + orient = { orient: 'vertical' } + positions = { left: 8, top: 30, bottom: 30, width: 96 } + break + default: + orient = { orient: 'vertical' } + positions = { right: 8, top: 30, bottom: 30, width: 96 } + break + } + + const selected = { + selected: series.reduce((obj, s) => ({ + ...obj, + [s.name]: selectAll + }), {}) + } + + legendOption = { + legend: { + data: series.map((s) => s.name), + type: 'scroll', + ...orient, + ...positions, + ...selected + } + } + } + + // dataZoomOptions = dataZoomThreshold > 0 && dataZoomThreshold < dataSource.length && { + // dataZoom: [{ + // type: 'inside', + // start: Math.round((1 - dataZoomThreshold / dataSource.length) * 100), + // end: 100 + // }, { + // start: Math.round((1 - dataZoomThreshold / dataSource.length) * 100), + // end: 100, + // handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z', + // handleSize: '80%', + // handleStyle: { + // color: '#fff', + // shadowBlur: 3, + // shadowColor: 'rgba(0, 0, 0, 0.6)', + // shadowOffsetX: 2, + // shadowOffsetY: 2 + // } + // }] + // } + + return { + xAxis: { + data: xAxisData, + axisLabel: { + show: showLabelX, + color: labelColorX, + fontFamily: labelFontFamilyX, + fontSize: labelFontSizeX + }, + axisLine: { + show: showLineX, + lineStyle: { + color: lineColorX, + width: lineSizeX, + type: lineStyleX + } + }, + axisTick: { + show: showLineX, + lineStyle: { + color: lineColorX + } + }, + splitLine: { + show: showVerticalLine, + lineStyle: { + color: verticalLineColor, + width: verticalLineSize, + type: verticalLineStyle + } + } + }, + yAxis: { + type: 'value', + axisLabel: { + show: showLabelY, + color: labelColorY, + fontFamily: labelFontFamilyY, + fontSize: labelFontSizeY, + formatter: metricAxisLabelFormatter + }, + axisLine: { + show: showLineY, + lineStyle: { + color: lineColorY, + width: lineSizeY, + type: lineStyleY + } + }, + axisTick: { + show: showLineY, + lineStyle: { + color: lineColorY + } + }, + ...showTitleAndUnit && { + name: metrics.map((m) => decodeMetricName(m.name)).join(` / `), + nameLocation: 'middle', + nameGap: 45, + nameTextStyle: { + color: titleColor, + fontFamily: titleFontFamily, + fontSize: titleFontSize + } + }, + splitLine: { + show: showHorizontalLine, + lineStyle: { + color: horizontalLineColor, + width: horizontalLineSize, + type: horizontalLineStyle + } + } + }, + tooltip: { + formatter: getChartTooltipLabel(seriesData, { cols, metrics, color, tip }) + }, + series, + ...legendOption, + grid: getGridPositions(legendPosition, series.map((s) => s.name)) + } +} diff --git a/webapp/app/containers/Widget/render/chart/funnel.ts b/webapp/app/containers/Widget/render/chart/funnel.ts new file mode 100644 index 000000000..68c38ffc9 --- /dev/null +++ b/webapp/app/containers/Widget/render/chart/funnel.ts @@ -0,0 +1,189 @@ +/* + * << + * Davinci + * == + * Copyright (C) 2016 - 2017 EDP + * == + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * >> + */ + +/* + * Funnel chart options generator + */ + +export default function (dataSource, flatInfo, chartParams, interactIndex) { + const { + title, + value, + min, + max, + gap, + hasLegend, + legendSelected, + legendPosition, + toolbox, + top, + left, + width, + height, + minSize, + maxSize + } = chartParams + + let metricOptions + let minOption + let maxOption + let gapOption + let legendOptions + let toolboxOptions + + // legend + if (hasLegend && hasLegend.length) { + let orient + let positions + + switch (legendPosition) { + case 'right': + orient = { orient: 'vertical' } + positions = { right: 8, top: 40, bottom: 16 } + break + case 'bottom': + orient = { orient: 'horizontal' } + positions = { bottom: 16, left: 8, right: 8 } + break + default: + orient = { orient: 'horizontal' } + positions = { top: 3, left: 8, right: 96 } + break + } + + const selected = legendSelected === 'unselectAll' + ? { + selected: dataSource.reduce((obj, d) => ({ ...obj, [d[title]]: false }), {}) + } : null + + legendOptions = { + legend: { + data: dataSource.map((d) => d[title]), + type: 'scroll', + ...orient, + ...positions, + ...selected + } + } + } + + // series 数据项 + const metricArr = [] + + minOption = min && { + min + } + + maxOption = max && { + max + } + + gapOption = gap && { + gap + } + + const serieObj = { + name: '数据', + type: 'funnel', + top: `${top}%`, + left: `${left}%`, + width: `${width}%`, + height: `${height}%`, + minSize: `${minSize}%`, + maxSize: `${maxSize}%`, + sort: 'descending', + label: { + normal: { + show: true, + position: 'inside' + }, + emphasis: { + textStyle: { + fontSize: 20 + } + } + }, + labelLine: { + normal: { + length: 10, + lineStyle: { + width: 1, + type: 'solid' + } + } + }, + itemStyle: { + normal: { + borderColor: '#fff', + borderWidth: 1, + opacity: interactIndex === undefined ? 1 : 0.25 + } + }, + data: dataSource.map((d, index) => { + if (index === interactIndex) { + return { + name: d[title], + value: Number(d[value]), + itemStyle: { + normal: { + opacity: 1 + } + } + } + } else { + return { + name: d[title], + value: Number(d[value]) + } + } + }), + ...minOption, + ...maxOption, + ...gapOption + } + + metricArr.push(serieObj) + metricOptions = { + series: metricArr + } + + // toolbox + toolboxOptions = toolbox && toolbox.length + ? { + toolbox: { + feature: { + dataView: {readOnly: false}, + restore: {}, + saveAsImage: {} + }, + right: 8 + } + } : null + + return { + calculable: true, + tooltip: { + trigger: 'item' + }, + ...metricOptions, + ...legendOptions, + ...toolboxOptions + } +} diff --git a/webapp/app/containers/Widget/render/chart/index.ts b/webapp/app/containers/Widget/render/chart/index.ts new file mode 100644 index 000000000..aec983dfa --- /dev/null +++ b/webapp/app/containers/Widget/render/chart/index.ts @@ -0,0 +1,45 @@ +/* + * << + * Davinci + * == + * Copyright (C) 2016 - 2017 EDP + * == + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * >> + */ + +import line from './line' +import bar from './bar' +import scatter from './scatter' +import pie from './pie' +import area from './area' +import funnel from './funnel' +import map from './map' +import radar from './radar' +import wordCloud from './wordCloud' +import { EChartOption } from 'echarts' +import { IChartProps } from '../../components/Chart' + +export default function (type, chartProps: IChartProps): EChartOption { + switch (type) { + case 'line': return line(chartProps) + case 'bar': return bar(chartProps) + case 'scatter': return scatter(chartProps) + case 'pie': return pie(chartProps) + case 'area': return area(chartProps) + case 'funnel': return funnel(chartProps) + case 'map': return map(chartProps) + case 'radar': return radar(chartProps) + case 'wordCloud': return wordCloud(chartProps) + } +} diff --git a/webapp/app/containers/Widget/render/chart/line.ts b/webapp/app/containers/Widget/render/chart/line.ts new file mode 100644 index 000000000..2a4f4b4e8 --- /dev/null +++ b/webapp/app/containers/Widget/render/chart/line.ts @@ -0,0 +1,410 @@ +/* + * << + * Davinci + * == + * Copyright (C) 2016 - 2017 EDP + * == + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * >> + */ + +import { IChartProps } from '../../components/Chart' +import { metricAxisLabelFormatter, decodeMetricName, getChartTooltipLabel, getAggregatorLocale, getTextWidth } from '../../components/util' +import { CHART_LEGEND_POSITIONS } from '../../../../globalConstants' + +export default function (chartProps: IChartProps) { + const { + data, + cols, + metrics, + chartStyles, + color, + tip + } = chartProps + + const { + spec, + label, + legend, + xAxis, + yAxis, + splitLine + } = chartStyles + + const { + smooth, + step + } = spec + + const { + showLine: showLineX, + lineStyle: lineStyleX, + lineSize: lineSizeX, + lineColor: lineColorX, + showLabel: showLabelX, + labelFontFamily: labelFontFamilyX, + labelFontSize: labelFontSizeX, + labelColor: labelColorX + } = xAxis + + const { + showLine: showLineY, + lineStyle: lineStyleY, + lineSize: lineSizeY, + lineColor: lineColorY, + showLabel: showLabelY, + labelFontFamily: labelFontFamilyY, + labelFontSize: labelFontSizeY, + labelColor: labelColorY, + showTitleAndUnit, + titleFontFamily, + titleFontSize, + titleColor + } = yAxis + + const { + showHorizontalLine, + horizontalLineStyle, + horizontalLineSize, + horizontalLineColor, + showVerticalLine, + verticalLineStyle, + verticalLineSize, + verticalLineColor + } = splitLine + + const { + showLabel, + labelPosition, + labelFontFamily, + labelFontSize, + labelColor + } = label + + const { + legendPosition, + selectAll + } = legend + + const labelOption = { + label: { + normal: { + show: showLabel, + position: labelPosition, + color: labelColor, + fontFamily: labelFontFamily, + fontSize: labelFontSize + } + } + } + + let xAxisData = data.map((d) => d[cols[0]] || '') + let grouped = {} + if (color.items.length) { + xAxisData = distinctXaxis(data, cols[0]) + grouped = makeGrouped(data, color.items.map((c) => c.name), cols[0], metrics, xAxisData) + } + + const series = [] + const seriesData = [] + + metrics.forEach((m) => { + const decodedMetricName = decodeMetricName(m.name) + const localeMetricName = `[${getAggregatorLocale(m.agg)}] ${decodedMetricName}` + if (color.items.length) { + Object + .entries(grouped) + .forEach(([k, v]: [string, any[]]) => { + const serieObj = { + name: `${k} ${localeMetricName}`, + type: 'line', + sampling: 'average', + data: v.map((g, index) => { + // if (index === interactIndex) { + // return { + // value: g[m], + // itemStyle: { + // normal: { + // opacity: 1 + // } + // } + // } + // } else { + return g[`${m.agg}(${decodedMetricName})`] + // } + }), + itemStyle: { + normal: { + // opacity: interactIndex === undefined ? 1 : 0.25 + color: color.items[0].config.values[k.split(',')[0]] + } + }, + smooth, + step, + ...labelOption + } + series.push(serieObj) + seriesData.push(grouped[k]) + }) + } else { + const serieObj = { + name: decodedMetricName, + type: 'line', + sampling: 'average', + data: data.map((d, index) => { + // if (index === interactIndex) { + // return { + // value: d[m], + // lineStyle: { + // normal: { + // opacity: 1 + // } + // }, + // itemStyle: { + // normal: { + // opacity: 1 + // } + // } + // } + // } else { + return d[`${m.agg}(${decodedMetricName})`] + // } + }), + // lineStyle: { + // normal: { + // opacity: interactIndex === undefined ? 1 : 0.25 + // } + // }, + itemStyle: { + normal: { + // opacity: interactIndex === undefined ? 1 : 0.25 + color: color.value[m.name] || color.value['all'] + } + }, + smooth, + step, + ...labelOption + } + series.push(serieObj) + seriesData.push([...data]) + } + }) + + let legendOption + if (color.items.length || metrics.length > 1) { + let orient + let positions + + switch (legendPosition) { + case 'top': + orient = { orient: 'horizontal' } + positions = { top: 8, left: 8, right: 8, height: 32 } + break + case 'bottom': + orient = { orient: 'horizontal' } + positions = { bottom: 8, left: 8, right: 8, height: 32 } + break + case 'left': + orient = { orient: 'vertical' } + positions = { left: 8, top: 30, bottom: 30, width: 96 } + break + default: + orient = { orient: 'vertical' } + positions = { right: 8, top: 30, bottom: 30, width: 96 } + break + } + + const selected = { + selected: series.reduce((obj, s) => ({ + ...obj, + [s.name]: selectAll + }), {}) + } + + legendOption = { + legend: { + data: series.map((s) => s.name), + type: 'scroll', + ...orient, + ...positions, + ...selected + } + } + } + + // dataZoomOptions = dataZoomThreshold > 0 && dataZoomThreshold < dataSource.length && { + // dataZoom: [{ + // type: 'inside', + // start: Math.round((1 - dataZoomThreshold / dataSource.length) * 100), + // end: 100 + // }, { + // start: Math.round((1 - dataZoomThreshold / dataSource.length) * 100), + // end: 100, + // handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z', + // handleSize: '80%', + // handleStyle: { + // color: '#fff', + // shadowBlur: 3, + // shadowColor: 'rgba(0, 0, 0, 0.6)', + // shadowOffsetX: 2, + // shadowOffsetY: 2 + // } + // }] + // } + + return { + xAxis: { + data: xAxisData, + axisLabel: { + show: showLabelX, + color: labelColorX, + fontFamily: labelFontFamilyX, + fontSize: labelFontSizeX + }, + axisLine: { + show: showLineX, + lineStyle: { + color: lineColorX, + width: lineSizeX, + type: lineStyleX + } + }, + axisTick: { + show: showLineX, + lineStyle: { + color: lineColorX + } + }, + splitLine: { + show: showVerticalLine, + lineStyle: { + color: verticalLineColor, + width: verticalLineSize, + type: verticalLineStyle + } + } + }, + yAxis: { + type: 'value', + axisLabel: { + show: showLabelY, + color: labelColorY, + fontFamily: labelFontFamilyY, + fontSize: labelFontSizeY, + formatter: metricAxisLabelFormatter + }, + axisLine: { + show: showLineY, + lineStyle: { + color: lineColorY, + width: lineSizeY, + type: lineStyleY + } + }, + axisTick: { + show: showLineY, + lineStyle: { + color: lineColorY + } + }, + ...showTitleAndUnit && { + name: metrics.map((m) => decodeMetricName(m.name)).join(` / `), + nameLocation: 'middle', + nameGap: 45, + nameTextStyle: { + color: titleColor, + fontFamily: titleFontFamily, + fontSize: titleFontSize + } + }, + splitLine: { + show: showHorizontalLine, + lineStyle: { + color: horizontalLineColor, + width: horizontalLineSize, + type: horizontalLineStyle + } + } + }, + tooltip: { + formatter: getChartTooltipLabel(seriesData, { cols, metrics, color, tip }) + }, + series, + ...legendOption, + grid: getGridPositions(legendPosition, series.map((s) => s.name)) + } +} + +export function makeGrouped (data, groupColumns, xAxisColumn, metrics, xAxisData) { + const grouped = {} + + data.forEach((d) => { + const groupingKey = groupColumns.map((col) => d[col]).join(' ') + const colKey = d[xAxisColumn] + if (!grouped[groupingKey]) { + grouped[groupingKey] = {} + } + if (!grouped[groupingKey][colKey]) { + grouped[groupingKey][colKey] = [] + } + grouped[groupingKey][colKey].push(d) + }) + + Object.keys(grouped).map((groupingKey) => { + const currentGroupValues = grouped[groupingKey] + + grouped[groupingKey] = xAxisData.map((xd) => { + if (currentGroupValues[xd]) { + return currentGroupValues[xd][0] + } else { + return metrics.reduce((obj, m) => ({ ...obj, [`${m.agg}(${decodeMetricName(m.name)})`]: 0 }), {}) + } + }) + }) + + return grouped +} + +export function distinctXaxis (data, xAxisColumn) { + return xAxisColumn + ? Object.keys(data.reduce((distinct, ds) => { + if (!distinct[ds[xAxisColumn]]) { + distinct[ds[xAxisColumn]] = true + } + return distinct + }, {})) + : [] +} + +export function getGridPositions (legendPosition, seriesNames) { + return CHART_LEGEND_POSITIONS.reduce((grid, pos) => { + const val = pos.value + grid[val] = getGridBase(val) + ( + legendPosition === val + ? ['top', 'bottom'].includes(val) + ? 48 + : 48 + Math.max(...seriesNames.map((s) => getTextWidth(s))) + : 0 + ) + return grid + }, {}) +} + +export function getGridBase (pos) { + switch (pos) { + case 'top': return 30 + case 'left': return 64 + case 'bottom': return 50 + default: return 0 + } +} diff --git a/webapp/app/containers/Widget/render/chart/map.ts b/webapp/app/containers/Widget/render/chart/map.ts new file mode 100644 index 000000000..1c4ada3b7 --- /dev/null +++ b/webapp/app/containers/Widget/render/chart/map.ts @@ -0,0 +1,217 @@ +/* + * << + * Davinci + * == + * Copyright (C) 2016 - 2017 EDP + * == + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * >> + */ + +/* + * map chart options generator + */ + +// import geoData from '../../../assets/json/geo.json' +import { safeAddition } from '../../../../utils/util' +import { DEFAULT_ECHARTS_THEME } from '../../../../globalConstants' + +let geoData + +export default function (dataSource, flatInfo, chartParams, interactIndex) { + return import('../../../../assets/json/geo.json').then((d) => { + geoData = d + + const { + area, + group, + value, + layerType, + // visualMapStyle,TODO + roam, + toolbox + } = chartParams + + let metricOptions + let scatterOptions + // let heatmapOptions + let visualMapOptions + let tooltipOptions + let toolboxOptions + + // 对原数据进行加工 + let dataTree + + if (area) { + dataTree = dataSource.reduce((tree, ds) => { + const areaVal = ds[area] + const areaGeo = geoData[areaVal] + + if (areaGeo) { + if (!tree[areaVal]) { + tree[areaVal] = { + lon: areaGeo.lon, + lat: areaGeo.lat, + value: 0, + children: {} + } + } + + tree[areaVal].value = safeAddition(tree[areaVal].value, Number(ds[value])) + + if (group) { + if (!tree[areaVal].children[ds[group]]) { + tree[areaVal].children[ds[group]] = 0 + } + tree[areaVal].children[ds[group]] = safeAddition(tree[areaVal].children[ds[group]], Number(ds[value])) + } + } + + return tree + }, {}) + } else { + dataTree = {} + } + + // series 数据项 + const metricArr = [] + + scatterOptions = { + symbolSize: 12, + label: { + normal: { + show: false + }, + emphasis: { + show: false + } + }, + itemStyle: { + normal: { + opacity: interactIndex === undefined ? 1 : 0.25 + } + // emphasis: { + // borderColor: DEFAULT_PRIMARY_COLOR, + // borderWidth: 1 + // } + } + } + + let serieObj = { + name: area, + type: layerType || 'scatter', + coordinateSystem: 'geo', + data: Object.keys(dataTree).map((key, index) => { + const { lon, lat, value } = dataTree[key] + if (index === interactIndex) { + return { + name: key, + value: [lon, lat, value], + itemStyle: { + normal: { + opacity: 1 + } + } + } + } else { + return { + name: key, + value: [lon, lat, value] + } + } + }) + } + if (layerType === 'scatter') { + serieObj = { + ...serieObj, + ...scatterOptions + } + } + + metricArr.push(serieObj) + metricOptions = { + series: metricArr + } + + // visualMap + visualMapOptions = value && { + visualMap: { + min: 0, + max: Math.max(...dataSource.map((d) => d[value] || 0)), + calculable: true, + inRange: { + color: DEFAULT_ECHARTS_THEME.visualMapColor + }, + left: 10, + bottom: 20 + } + } + + // tooltip + tooltipOptions = { + tooltip: { + trigger: 'item', + formatter: (params) => { + const treeNode = dataTree[params.name] + + let content = `${params.name}:${treeNode.value}` + + if (group && group.length) { + const groupContent = Object.keys(treeNode.children).map((k) => `${k}:${treeNode.children[k]}
    `).join('') + content += `
    ${groupContent}` + } + + return content + } + } + } + + // toolbox + toolboxOptions = toolbox && toolbox.length + ? { + toolbox: { + feature: { + dataView: {readOnly: false}, + restore: {}, + saveAsImage: {} + } + } + } : null + + return { + geo: { + map: 'china', + label: { + emphasis: { + show: false + } + }, + itemStyle: { + normal: { + areaColor: '#0000003F', + borderColor: '#FFFFFF', + borderWidth: 1 + }, + emphasis: { + areaColor: `#00000059` + } + }, + roam: !!(roam && roam.length) + }, + ...metricOptions, + ...visualMapOptions, + ...tooltipOptions, + ...toolboxOptions + } + }) +} diff --git a/webapp/app/containers/Widget/render/chart/mapFile/china.js b/webapp/app/containers/Widget/render/chart/mapFile/china.js new file mode 100644 index 000000000..287b5e581 --- /dev/null +++ b/webapp/app/containers/Widget/render/chart/mapFile/china.js @@ -0,0 +1,28 @@ +/*eslint-disable*/ +(function (root, factory) { + if (typeof exports === 'object' && typeof exports.nodeName !== 'string') { + // CommonJS + factory(exports, require('echarts/lib/echarts')); + } else if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['exports', 'echarts/lib/echarts'], factory); + } else { + // Browser globals + factory({}, root.echarts); + } +}(this, function (exports, echarts) { + var log = function (msg) { + if (typeof console !== 'undefined') { + console && console.error && console.error(msg); + } + } + if (!echarts) { + log('ECharts is not Loaded'); + return; + } + if (!echarts.registerMap) { + log('ECharts Map is not loaded') + return; + } + echarts.registerMap('china', {"type":"FeatureCollection","features":[{"id":"710000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@°Ü¯Û"],["@@ƛĴÕƊÉɼģºðʀ\\ƎsÆNŌÔĚäœnÜƤɊĂǀĆĴžĤNJŨxĚĮǂƺòƌ‚–âÔ®ĮXŦţƸZûЋƕƑGđ¨ĭMó·ęcëƝɉlÝƯֹÅŃ^Ó·śŃNjƏďíåɛGɉ™¿@ăƑŽ¥ĘWǬÏĶŁâ"],["@@\\p|WoYG¿¥I†j@¢"],["@@…¡‰@ˆV^RqˆBbAŒnTXeRz¤Lž«³I"],["@@ÆEE—„kWqë @œ"],["@@fced"]],"encodeOffsets":[[[122886,24033]],[[123335,22980]],[[122375,24193]],[[122518,24117]],[[124427,22618]],[[124862,26043]]]},"properties":{"cp":[121.509062,25.044332],"name":"台湾","childNum":6}},{"id":"130000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@o~†Z]‚ªr‰ºc_ħ²G¼s`jΟnüsœłNX_“M`ǽÓnUK…Ĝēs¤­©yrý§uģŒc†JŠ›e"],["@@U`Ts¿m‚"],["@@oºƋÄd–eVŽDJj£€J|Ådz•Ft~žKŨ¸IÆv|”‡¢r}膎onb˜}`RÎÄn°ÒdÞ²„^®’lnÐèĄlðӜ×]ªÆ}LiĂ±Ö`^°Ç¶p®đDcœŋ`–ZÔ’¶êqvFƚ†N®ĆTH®¦O’¾ŠIbÐã´BĐɢŴÆíȦp–ĐÞXR€·nndOž¤’OÀĈƒ­Qg˜µFo|gȒęSWb©osx|hYh•gŃfmÖĩnº€T̒Sp›¢dYĤ¶UĈjl’ǐpäìë|³kÛfw²Xjz~ÂqbTŠÑ„ěŨ@|oM‡’zv¢ZrÃVw¬ŧĖ¸fŒ°ÐT€ªqŽs{Sž¯r æÝlNd®²Ğ džiGʂJ™¼lr}~K¨ŸƐÌWö€™ÆŠzRš¤lêmĞL΄’@¡|q]SvK€ÑcwpÏρ†ĿćènĪWlĄkT}ˆJ”¤~ƒÈT„d„™pddʾĬŠ”ŽBVt„EÀ¢ôPĎƗè@~‚k–ü\\rÊĔÖæW_§¼F˜†´©òDòj’ˆYÈrbĞāøŀG{ƀ|¦ðrb|ÀH`pʞkv‚GpuARhÞÆǶgʊTǼƹS£¨¡ù³ŘÍ]¿Ây™ôEP xX¶¹܇O¡“gÚ¡IwÃ鑦ÅB‡Ï|Ç°…N«úmH¯‹âŸDùŽyŜžŲIÄuШDž•¸dɂ‡‚FŸƒ•›Oh‡đ©OŸ›iÃ`ww^ƒÌkŸ‘ÑH«ƇǤŗĺtFu…{Z}Ö@U‡´…ʚLg®¯Oı°ÃwŸ ^˜—€VbÉs‡ˆmA…ê]]w„§›RRl£‡ȭµu¯b{ÍDěïÿȧŽuT£ġƒěŗƃĝ“Q¨fV†Ƌ•ƅn­a@‘³@šď„yýIĹÊKšŭfċŰóŒxV@tˆƯŒJ”]eƒR¾fe|rHA˜|h~Ėƍl§ÏŠlTíb ØoˆÅbbx³^zÃĶš¶Sj®A”yÂhðk`š«P€”ˈµEF†Û¬Y¨Ļrõqi¼‰Wi°§’б´°^[ˆÀ|ĠO@ÆxO\\tŽa\\tĕtû{ġŒȧXýĪÓjùÎRb›š^ΛfK[ݏděYfíÙTyŽuUSyŌŏů@Oi½’éŅ­aVcř§ax¹XŻác‡žWU£ôãºQ¨÷Ñws¥qEH‰Ù|‰›šYQoŕÇyáĂ£MðoťÊ‰P¡mšWO¡€v†{ôvîēÜISpÌhp¨ ‘j†deŔQÖj˜X³à™Ĉ[n`Yp@Už–cM`’RKhŒEbœ”pŞlNut®Etq‚nsÁŠgA‹iú‹oH‡qCX‡”hfgu“~ϋWP½¢G^}¯ÅīGCŸÑ^ãziMáļMTÃƘrMc|O_ž¯Ŏ´|‡morDkO\\mĆJfl@cĢ¬¢aĦtRıҙ¾ùƀ^juųœK­ƒUFy™—Ɲ…›īÛ÷ąV×qƥV¿aȉd³B›qPBm›aËđŻģm“Å®VŠ¹d^K‡KoŸnYg“¯Xhqa”Ldu¥•ÍpDž¡KąÅƒkĝęěhq‡}HyÓ]¹ǧ£…Í÷¿qᵧš™g‘¤o^á¾ZE‡¤i`ij{n•ƒOl»ŸWÝĔįhg›F[¿¡—ßkOüš_‰€ū‹i„DZàUtėGylƒ}ŒÓM}€jpEC~¡FtoQi‘šHkk{Ãmï‚"]],"encodeOffsets":[[[119712,40641]],[[121616,39981]],[[116462,37237]]]},"properties":{"cp":[114.502461,38.045474],"name":"河北","childNum":3}},{"id":"140000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@Þĩ҃S‰ra}Á€yWix±Üe´lè“ßÓǏok‘ćiµVZģ¡coœ‘TS˹ĪmnÕńe–hZg{gtwªpXaĚThȑp{¶Eh—®RćƑP¿£‘Pmc¸mQÝW•ďȥoÅîɡųAďä³aωJ‘½¥PG­ąSM­™…EÅruµé€‘Yӎ•Ō_d›ĒCo­Èµ]¯_²ÕjāŽK~©ÅØ^ԛkïçămϑk]­±ƒcݯÑÃmQÍ~_a—pm…~ç¡q“ˆu{JÅŧ·Ls}–EyÁÆcI{¤IiCfUc•ƌÃp§]웫vD@¡SÀ‘µM‚ÅwuŽYY‡¡DbÑc¡hƒ×]nkoQdaMç~eD•ÛtT‰©±@¥ù@É¡‰ZcW|WqOJmĩl«ħşvOÓ«IqăV—¥ŸD[mI~Ó¢cehiÍ]Ɠ~ĥqXŠ·eƷœn±“}v•[ěďŽŕ]_‘œ•`‰¹ƒ§ÕōI™o©b­s^}Ét±ū«³p£ÿ·Wµ|¡¥ăFÏs׌¥ŅxŸÊdÒ{ºvĴÎêÌɊ²¶€ü¨|ÞƸµȲ‘LLúÉƎ¤ϊęĔV`„_bª‹S^|ŸdŠzY|dz¥p†ZbÆ£¶ÒK}tĦÔņƠ‚PYzn€ÍvX¶Ěn ĠÔ„zý¦ª˜÷žÑĸَUȌ¸‚dòÜJð´’ìúNM¬ŒXZ´‘¤ŊǸ_tldIš{¦ƀðĠȤ¥NehXnYG‚‡R° ƬDj¬¸|CĞ„Kq‚ºfƐiĺ©ª~ĆOQª ¤@ìǦɌ²æBŒÊ”TœŸ˜ʂōĖ’šĴŞ–ȀœÆÿȄlŤĒö„t”νî¼ĨXhŒ‘˜|ªM¤Ðz"],"encodeOffsets":[[116874,41716]]},"properties":{"cp":[112.549248,37.857014],"name":"山西","childNum":1}},{"id":"150000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@Č^â£Ăh–šĖMÈÄw‚\\fŦ°W ¢¾luŸD„wŠ\\̀ʉÌÛM…Ā[bӞEn}¶Vc…ê“sƒ–›¯PqƒFB…‰|S•³C|kñ•H‹d‘iÄ¥sˆʼnő…PóÑÑE^‘ÅPpy_YtS™hQ·aHwsOnʼnÚs©iqj›‰€USiº]ïWš‰«gW¡A–R붛ijʕ…Œů`çõh]y»ǃŸǛҤxÒm~zf}pf|ÜroÈzrKÈĵSƧ„ż؜Ġu¦ö"],["@@sKCš…GS|úþX”gp›{ÁX¿Ÿć{ƱȏñZáĔyoÁhA™}ŅĆfdʼn„_¹„Y°ėǩÑ¡H¯¶oMQqð¡Ë™|‘Ñ`ƭŁX½·óۓxğįÅcQ‡ˆ“ƒs«tȋDžF“Ÿù^i‘t«Č¯[›hAi©á¥ÇĚ×l|¹y¯YȵƓ‹ñǙµï‚ċ™Ļ|Dœ™üȭ¶¡˜›oŽäÕG\\ďT¿Òõr¯œŸLguÏYęRƩšɷŌO\\İТæ^Ŋ IJȶȆbÜGŽĝ¬¿ĚVĎgª^íu½jÿĕęjık@Ľƒ]ėl¥Ë‡ĭûÁ„ƒėéV©±ćn©­ȇžÍq¯½•YÃÔʼn“ÉNѝÅÝy¹NqáʅDǡËñ­ƁYÅy̱os§ȋµʽǘǏƬɱà‘ưN¢ƔÊuľýľώȪƺɂļžxœZĈ}ÌʼnŪ˜ĺœŽĭFЛĽ̅ȣͽÒŵìƩÇϋÿȮǡŏçƑůĕ~Ǎ›¼ȳÐUf†dIxÿ\\G ˆzâɏÙOº·pqy£†@ŒŠqþ@Ǟ˽IBäƣzsÂZ†ÁàĻdñ°ŕzéØűzșCìDȐĴĺf®ŽÀľưø@ɜÖÞKĊŇƄ§‚͑těï͡VAġÑÑ»d³öǍÝXĉĕÖ{þĉu¸ËʅğU̎éhɹƆ̗̮ȘNJ֥ड़ࡰţાíϲäʮW¬®ҌeרūȠkɬɻ̼ãüfƠSצɩςåȈHϚÎKdzͲOðÏȆƘ¼CϚǚ࢚˼ФԂ¤ƌžĞ̪Qʤ´¼mȠJˀŸƲÀɠmǐnǔĎȆÞǠN~€ʢĜ‚¶ƌĆĘźʆȬ˪ĚĒ¸ĞGȖƴƀj`ĢçĶāàŃºēĢƒĖćšYŒÀŎüôQÐÂŎŞdžŞêƖš˜oˆDĤÕºÑǘÛˤ³̀gńƘĔÀ^žªƂ`ªt¾äƚêĦĀ¼Ð€Ĕǎ¨Ȕ»͠^ˮÊȦƤøxRrŜH¤¸ÂxDĝŒ|ø˂˜ƮÐ¬ɚwɲFjĔ²Äw°dždÀɞ_ĸdîàŎjʜêTЪŌ‡ŜWÈ|tqĢUB~´°ÎFC•ŽU¼pĀēƄN¦¾O¶ŠłKĊOj“Ě”j´ĜYp˜{¦„ˆSĚÍ\\Tš×ªV–÷Ší¨ÅDK°ßtŇĔKš¨ǵÂcḷ̌ĚǣȄĽF‡lġUĵœŇ‹ȣFʉɁƒMğįʏƶɷØŭOǽ«ƽū¹Ʊő̝Ȩ§ȞʘĖiɜɶʦ}¨֪ࠜ̀ƇǬ¹ǨE˦ĥªÔêFŽxúQ„Er´W„rh¤Ɛ \\talĈDJ˜Ü|[Pll̚¸ƎGú´Pž¬W¦†^¦–H]prR“n|or¾wLVnÇIujkmon£cX^Bh`¥V”„¦U¤¸}€xRj–[^xN[~ªŠxQ„‚[`ªHÆÂExx^wšN¶Ê˜|¨ì†˜€MrœdYp‚oRzNy˜ÀDs~€bcfÌ`L–¾n‹|¾T‚°c¨È¢a‚r¤–`[|òDŞĔöxElÖdH„ÀI`„Ď\\Àì~ƎR¼tf•¦^¢ķ¶e”ÐÚMŒptgj–„ɡČÅyġLû™ŇV®ŠÄÈƀ†Ď°P|ªVV†ªj–¬ĚÒêp¬–E|ŬÂc|ÀtƐK fˆ{ĘFĒœƌXƲąo½Ę‘\\¥–o}›Ûu£ç­kX‘{uĩ«āíÓUŅßŢq€Ť¥lyň[€oi{¦‹L‡ń‡ðFȪȖ”ĒL„¿Ì‹ˆfŒ£K£ʺ™oqNŸƒwğc`ue—tOj×°KJ±qƒÆġm‰Ěŗos¬…qehqsuœƒH{¸kH¡Š…ÊRǪÇƌbȆ¢´ä܍¢NìÉʖ¦â©Ż؛Ç@Vu»A—ylßí¹ĵê…ÝlISò³C¹Ìâ„²i¶’Ìoú^H“²CǜңDŽ z¼g^èöŰ_‹‚–†IJĕꄜ}gÁnUI«m‰…„‹]j‡vV¼euhwqA„aW˜ƒ_µj…»çjioQR¹ēÃßt@r³[ÛlćË^ÍÉáG“›OUۗOB±•XŸkŇ¹£k|e]ol™ŸkVͼÕqtaÏõjgÁ£§U^Œ”RLˆËnX°Ç’Bz†^~wfvˆypV ¯„ƫĉ˭ȫƗŷɿÿĿƑ˃ĝÿÃǃßËőó©ǐȍŒĖM×ÍEyx‹þp]Évïè‘vƀnÂĴÖ@‚‰†V~Ĉ™Š³MEˆĸÅĖt—ējyÄDXÄxGQuv_›i¦aBçw‘˛wD™©{ŸtāmQ€{EJ§KPśƘƿ¥@‰sCT•É}ɃwˆƇy±ŸgÑ“}T[÷kÐ禫…SÒ¥¸ëBX½‰HáŵÀğtSÝÂa[ƣ°¯¦P]£ġ“–“Òk®G²„èQ°óMq}EŠóƐÇ\\ƒ‡@áügQ͋u¥Fƒ“T՛¿Jû‡]|mvāÎYua^WoÀa·­ząÒot׶CLƗi¯¤mƎHNJ¤îìɾŊìTdåwsRÖgĒųúÍġäÕ}Q¶—ˆ¿A•†‹[¡Œ{d×uQAƒ›M•xV‹vMOmăl«ct[wº_šÇʊŽŸjb£ĦS_é“QZ“_lwgOiýe`YYLq§IÁˆdz£ÙË[ÕªuƏ³ÍT—s·bÁĽäė[›b[ˆŗfãcn¥îC¿÷µ[ŏÀQ­ōšĉm¿Á^£mJVm‡—L[{Ï_£›F¥Ö{ŹA}…×Wu©ÅaųijƳhB{·TQqÙIķˑZđ©Yc|M¡…L•eVUóK_QWk’_ĥ‘¿ãZ•»X\\ĴuUƒè‡lG®ěłTĠğDєOrÍd‚ÆÍz]‹±…ŭ©ŸÅ’]ŒÅÐ}UË¥©Tċ™ïxgckfWgi\\ÏĒ¥HkµE˜ë{»ÏetcG±ahUiñiWsɁˆ·c–C‚Õk]wȑ|ća}w…VaĚ᠞ŒG°ùnM¬¯†{ȈÐÆA’¥ÄêJxÙ¢”hP¢Ûˆº€µwWOŸóFŽšÁz^ÀŗÎú´§¢T¤ǻƺSė‰ǵhÝÅQgvBHouʝl_o¿Ga{ïq{¥|ſĿHĂ÷aĝÇq‡Z‘ñiñC³ª—…»E`¨åXēÕqÉû[l•}ç@čƘóO¿¡ƒFUsA‰“ʽīccšocƒ‚ƒÇS}„“£‡IS~ălkĩXçmĈ…ŀЂoÐdxÒuL^T{r@¢‘žÍƒĝKén£kQ™‰yšÅõËXŷƏL§~}kqš»IHėDžjĝŸ»ÑÞoŸå°qTt|r©ÏS‹¯·eŨĕx«È[eMˆ¿yuˆ‘pN~¹ÏyN£{©’—g‹ħWí»Í¾s“əšDž_ÃĀɗ±ą™ijĉʍŌŷ—S›É“A‹±åǥɋ@럣R©ąP©}ĹªƏj¹erƒLDĝ·{i«ƫC£µ"]],"encodeOffsets":[[[127444,52594]],[[113793,40312]]]},"properties":{"cp":[111.670801,40.818311],"name":"内蒙古","childNum":2}},{"id":"210000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@L–Ž@@s™a"],["@@MnNm"],["@@d‚c"],["@@eÀ‚C@b‚“‰"],["@@f‡…Xwkbr–Ä`qg"],["@@^jtW‘Q"],["@@~ Y]c"],["@@G`ĔN^_¿Z‚ÃM"],["@@iX¶B‹Y"],["@@„YƒZ"],["@@L_{Epf"],["@@^WqCT\\"],["@@\\[“‹§t|”¤_"],["@@m`n_"],["@@Ïxnj{q_×^Giip"],["@@@œé^B†‡ntˆaÊU—˜Ÿ]x ¯ÄPIJ­°h€ʙK³†VˆÕ@Y~†|EvĹsDŽ¦­L^p²ŸÒG ’Ël]„xxÄ_˜fT¤Ď¤cŽœP„–C¨¸TVjbgH²sdÎdHt`Bˆ—²¬GJję¶[ÐhjeXdlwhšðSȦªVÊπ‹Æ‘Z˜ÆŶ®²†^ŒÎyÅÎcPqń“ĚDMħĜŁH­ˆk„çvV[ij¼W–‚YÀäĦ’‘`XlžR`žôLUVžfK–¢†{NZdĒª’YĸÌÚJRr¸SA|ƴgŴĴÆbvªØX~†źBŽ|¦ÕœEž¤Ð`\\|Kˆ˜UnnI]¤ÀÂĊnŎ™R®Ő¿¶\\ÀøíDm¦ÎbŨab‰œaĘ\\ľã‚¸a˜tÎSƐ´©v\\ÖÚÌǴ¤Â‡¨JKr€Z_Z€fjþhPkx€`Y”’RIŒjJcVf~sCN¤ ˆE‚œhæm‰–sHy¨SðÑÌ\\\\ŸĐRZk°IS§fqŒßýáЍÙÉÖ[^¯ǤŲ„ê´\\¦¬ĆPM¯£Ÿˆ»uïpùzEx€žanµyoluqe¦W^£ÊL}ñrkqWňûP™‰UP¡ôJŠoo·ŒU}£Œ„[·¨@XŒĸŸ“‹‹DXm­Ûݏº‡›GU‹CÁª½{íĂ^cj‡k“¶Ã[q¤“LÉö³cux«zZfƒ²BWÇ®Yß½ve±ÃC•ý£W{Ú^’q^sÑ·¨‹ÍOt“¹·C¥‡GD›rí@wÕKţ݋˜Ÿ«V·i}xËÍ÷‘i©ĝ‡ɝǡ]ƒˆ{c™±OW‹³Ya±Ÿ‰_穂Hžĕoƫ€Ňqƒr³‰Lys[„ñ³¯OS–ďOMisZ†±ÅFC¥Pq{‚Ã[Pg}\\—¿ghćO…•k^ģÁFıĉĥM­oEqqZûěʼn³F‘¦oĵ—hŸÕP{¯~TÍlª‰N‰ßY“Ð{Ps{ÃVU™™eĎwk±ʼnVÓ½ŽJãÇÇ»Jm°dhcÀff‘dF~ˆ€ĀeĖ€d`sx² šƒ®EżĀdQ‹Âd^~ăÔHˆ¦\\›LKpĄVez¤NP ǹӗR™ÆąJSh­a[¦´Âghwm€BÐ¨źhI|žVVŽ—Ž|p] Â¼èNä¶ÜBÖ¼“L`‚¼bØæŒKV”ŸpoœúNZÞÒKxpw|ÊEMnzEQšŽIZ”ŽZ‡NBˆčÚFÜçmĩ‚WĪñt‘ÞĵÇñZ«uD‚±|Əlij¥ãn·±PmÍa‰–da‡ CL‡Ǒkùó¡³Ï«QaċϑOÃ¥ÕđQȥċƭy‹³ÃA"]],"encodeOffsets":[[[123686,41445]],[[126019,40435]],[[124393,40128]],[[126117,39963]],[[125322,40140]],[[126686,40700]],[[126041,40374]],[[125584,40168]],[[125453,40165]],[[125362,40214]],[[125280,40291]],[[125774,39997]],[[125976,40496]],[[125822,39993]],[[125509,40217]],[[122731,40949]]]},"properties":{"cp":[123.429096,41.796767],"name":"辽宁","childNum":16}},{"id":"220000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@‘p䔳PClƒFbbÍzš€wBG’ĭ€Z„Åi“»ƒlY­ċ²SgŽkÇ£—^S‰“qd¯•‹R…©éŽ£¯S†\\cZ¹iűƏCuƍÓX‡oR}“M^o•£…R}oªU­F…uuXHlEŕ‡€Ï©¤ÛmTŽþ¤D–²ÄufàÀ­XXȱAe„yYw¬dvõ´KÊ£”\\rµÄl”iˆdā]|DÂVŒœH¹ˆÞ®ÜWnŒC”Œķ W‹§@\\¸‹ƒ~¤‹Vp¸‰póIO¢ŠVOšŇürXql~òÉK]¤¥Xrfkvzpm¶bwyFoúvð‡¼¤ N°ąO¥«³[ƒéǡű_°Õ\\ÚÊĝŽþâőàerR¨­JYlďQ[ ÏYëЧTGz•tnŠß¡gFkMŸāGÁ¤ia É‰™È¹`\\xs€¬dĆkNnuNUŠ–užP@‚vRY¾•–\\¢…ŒGªóĄ~RãÖÎĢù‚đŴÕhQŽxtcæëSɽʼníëlj£ƍG£nj°KƘµDsØÑpyƸ®¿bXp‚]vbÍZuĂ{nˆ^IüœÀSք”¦EŒvRÎûh@℈[‚Əȉô~FNr¯ôçR±ƒ­HÑl•’Ģ–^¤¢‚OðŸŒævxsŒ]ÞÁTĠs¶¿âƊGW¾ìA¦·TѬ†è¥€ÏÐJ¨¼ÒÖ¼ƒƦɄxÊ~S–tD@ŠĂ¼Ŵ¡jlºWžvЉˆzƦZЎ²CH— „Axiukd‹ŒGgetqmcžÛ£Ozy¥cE}|…¾cZ…k‚‰¿uŐã[oxGikfeäT@…šSUwpiÚFM©’£è^ڟ‚`@v¶eň†f h˜eP¶žt“äOlÔUgƒÞzŸU`lœ}ÔÆUvØ_Ō¬Öi^ĉi§²ÃŠB~¡Ĉ™ÚEgc|DC_Ȧm²rBx¼MÔ¦ŮdĨÃâYx‘ƘDVÇĺĿg¿cwÅ\\¹˜¥Yĭlœ¤žOv†šLjM_a W`zļMž·\\swqÝSA‡š—q‰Śij¯Š‘°kŠRē°wx^Đkǂғ„œž“œŽ„‹\\]˜nrĂ}²ĊŲÒøãh·M{yMzysěnĒġV·°“G³¼XÀ““™¤¹i´o¤ŃšŸÈ`̃DzÄUĞd\\i֚ŒˆmÈBĤÜɲDEh LG¾ƀľ{WaŒYÍȏĢĘÔRîĐj‹}Ǟ“ccj‡oUb½š{“h§Ǿ{K‹ƖµÎ÷žGĀÖŠåưÎs­l›•yiē«‹`姝H¥Ae^§„GK}iã\\c]v©ģZ“mÃ|“[M}ģTɟĵ‘Â`À–çm‰‘FK¥ÚíÁbXš³ÌQґHof{‰]e€pt·GŋĜYünĎųVY^’˜ydõkÅZW„«WUa~U·Sb•wGçǑ‚“iW^q‹F‚“›uNĝ—·Ew„‹UtW·Ýďæ©PuqEzwAV•—XR‰ãQ`­©GŒM‡ehc›c”ďϝd‡©ÑW_ϗYƅŒ»…é\\ƒɹ~ǙG³mØ©BšuT§Ĥ½¢Ã_ý‘L¡‘ýŸqT^rme™\\Pp•ZZbƒyŸ’uybQ—efµ]UhĿDCmûvašÙNSkCwn‰cćfv~…Y‹„ÇG"],"encodeOffsets":[[130196,42528]]},"properties":{"cp":[125.3245,43.886841],"name":"吉林","childNum":1}},{"id":"230000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@ƨƒĶTLÇyqpÇÛqe{~oyen}s‰`q‡iXG”ù]Ëp½“©lɇÁp]Þñ´FÔ^f‘äîºkà˜z¼BUvÈ@"],["@@UƒµNÿ¥īè灋•HÍøƕ¶LŒǽ|g¨|”™Ža¾pViˆdd”~ÈiŒíďÓQġėǐZ΋ŽXb½|ſÃH½ŸKFgɱCģÛÇA‡n™‹jÕc[VĝDZÃ˄Ç_™ £ń³pŽj£º”š¿”»WH´¯”U¸đĢmžtĜyzzNN|g¸÷äűѱĉā~mq^—Œ[ƒ”››”ƒǁÑďlw]¯xQĔ‰¯l‰’€°řĴrŠ™˜BˆÞTxr[tŽ¸ĻN_yŸX`biN™Ku…P›£k‚ZĮ—¦[ºxÆÀdhŽĹŀUÈƗCw’áZħÄŭcÓ¥»NAw±qȥnD`{ChdÙFćš}¢‰A±Äj¨]ĊÕjŋ«×`VuÓś~_kŷVÝyh„“VkÄãPs”Oµ—fŸge‚Ň…µf@u_Ù ÙcŸªNªÙEojVx™T@†ãSefjlwH\\pŏäÀvŠŽlY†½d{†F~¦dyz¤PÜndsrhf‹HcŒvlwjFœ£G˜±DύƥY‡yϊu¹XikĿ¦ÏqƗǀOŜ¨LI|FRĂn sª|Cš˜zxAè¥bœfudTrFWÁ¹Am|˜ĔĕsķÆF‡´Nš‰}ć…UŠÕ@Áijſmužç’uð^ÊýowŒFzØÎĕNőžǏȎôªÌŒDŽàĀÄ˄ĞŀƒʀĀƘŸˮȬƬĊ°ƒUŸzou‡xe]}Ž…AyȑW¯ÌmK‡“Q]‹Īºif¸ÄX|sZt|½ÚUΠlkš^p{f¤lˆºlÆW –€A²˜PVܜPH”Êâ]ÎĈÌÜk´\\@qàsĔÄQºpRij¼èi†`¶—„bXƒrBgxfv»ŽuUiˆŒ^v~”J¬mVp´£Œ´VWrnP½ì¢BX‚¬h™ŠðX¹^TjVœŠriªj™tŊÄm€tPGx¸bgRšŽsT`ZozÆO]’ÒFô҆Oƒ‡ŊŒvŞ”p’cGŒêŠsx´DR–Œ{A†„EOr°Œ•žx|íœbˆ³Wm~DVjºéNN†Ëܲɶ­GƒxŷCStŸ}]ûō•SmtuÇÃĕN•™āg»šíT«u}ç½BĵÞʣ¥ëÊ¡Mێ³ãȅ¡ƋaǩÈÉQ‰†G¢·lG|›„tvgrrf«†ptęŘnŠÅĢr„I²¯LiØsPf˜_vĠd„xM prʹšL¤‹¤‡eˌƒÀđK“žïÙVY§]I‡óáĥ]ķ†Kˆ¥Œj|pŇ\\kzţ¦šnņäÔVĂîĪ¬|vW’®l¤èØr‚˜•xm¶ă~lÄƯĄ̈́öȄEÔ¤ØQĄ–Ą»ƢjȦOǺ¨ìSŖÆƬy”Qœv`–cwƒZSÌ®ü±DŽ]ŀç¬B¬©ńzƺŷɄeeOĨS’Œfm Ċ‚ƀP̎ēz©Ċ‚ÄÕÊmgŸÇsJ¥ƔˆŊśæ’΁Ñqv¿íUOµª‰ÂnĦÁ_½ä@ê텣P}Ġ[@gġ}g“ɊדûÏWXá¢užƻÌsNͽƎÁ§č՛AēeL³àydl›¦ĘVçŁpśdžĽĺſʃQíÜçÛġԏsĕ¬—Ǹ¯YßċġHµ ¡eå`ļƒrĉŘóƢFì“ĎWøxÊk†”ƈdƬv|–I|·©NqńRŀƒ¤é”eŊœŀ›ˆàŀU²ŕƀB‚Q£Ď}L¹Îk@©ĈuǰųǨ”Ú§ƈnTËÇéƟÊcfčŤ^Xm‡—HĊĕË«W·ċëx³ǔķÐċJā‚wİ_ĸ˜Ȁ^ôWr­°oú¬Ħ…ŨK~”ȰCĐ´Ƕ£’fNÎèâw¢XnŮeÂÆĶŽ¾¾xäLĴĘlļO¤ÒĨA¢Êɚ¨®‚ØCÔ ŬGƠ”ƦYĜ‡ĘÜƬDJ—g_ͥœ@čŅĻA“¶¯@wÎqC½Ĉ»NŸăëK™ďÍQ“Ùƫ[«Ãí•gßÔÇOÝáW‘ñuZ“¯ĥ€Ÿŕā¡ÑķJu¤E Ÿå¯°WKɱ_d_}}vyŸõu¬ï¹ÓU±½@gÏ¿rýD‰†g…Cd‰µ—°MFYxw¿CG£‹Rƛ½Õ{]L§{qqąš¿BÇƻğëšܭNJË|c²}Fµ}›ÙRsÓpg±ŠQNqǫŋRwŕnéÑÉKŸ†«SeYR…ŋ‹@{¤SJ}šD Ûǖ֍Ÿ]gr¡µŷjqWÛham³~S«“„›Þ]"]],"encodeOffsets":[[[127123,51780]],[[134456,44547]]]},"properties":{"cp":[126.642464,45.756967],"name":"黑龙江","childNum":2}},{"id":"320000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@cþÅPiŠ`ZŸRu¥É\\]~°ŽY`µ†Óƒ^phÁbnÀşúŽòa–ĬºTÖŒb‚˜e¦¦€{¸ZâćNpŒ©žHr|^ˆmjhŠSEb\\afv`sz^lkŽlj‹Ätg‹¤D˜­¾Xš¿À’|ДiZ„ȀåB·î}GL¢õcßjaŸyBFµÏC^ĭ•cÙt¿sğH]j{s©HM¢ƒQnDÀ©DaÜތ·jgàiDbPufjDk`dPOîƒhw¡ĥ‡¥šG˜ŸP²ĐobºrY†„î¶aHŢ´ ]´‚rılw³r_{£DB_Ûdåuk|ˆŨ¯F Cºyr{XFy™e³Þċ‡¿Â™kĭB¿„MvÛpm`rÚã”@Ę¹hågËÖƿxnlč¶Åì½Ot¾dJlŠVJʜǀœŞqvnOŠ^ŸJ”Z‘ż·Q}ê͎ÅmµÒ]Žƍ¦Dq}¬R^èĂ´ŀĻĊIԒtžIJyQŐĠMNtœR®òLh‰›Ěs©»œ}OӌGZz¶A\\jĨFˆäOĤ˜HYš†JvÞHNiÜaϚɖnFQlšNM¤ˆB´ĄNöɂtp–Ŭdf先‹qm¿QûŠùއÚb¤uŃJŴu»¹Ą•lȖħŴw̌ŵ²ǹǠ͛hĭłƕrçü±Y™xci‡tğ®jű¢KOķ•Coy`å®VTa­_Ā]ŐÝɞï²ʯÊ^]afYǸÃĆēĪȣJđ͍ôƋĝÄ͎ī‰çÛɈǥ£­ÛmY`ó£Z«§°Ó³QafusNıDž_k}¢m[ÝóDµ—¡RLčiXy‡ÅNïă¡¸iĔϑNÌŕoēdōîåŤûHcs}~Ûwbù¹£¦ÓCt‹OPrƒE^ÒoŠg™ĉIµžÛÅʹK…¤½phMŠü`o怆ŀ"],"encodeOffsets":[[121740,32276]]},"properties":{"cp":[118.767413,32.041544],"name":"江苏","childNum":1}},{"id":"330000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@E^dQ]K"],["@@jX^j‡"],["@@sfŠbU‡"],["@@qP\\xz[ck"],["@@‘Rƒ¢‚FX}°[s_"],["@@Cbœ\\—}"],["@@e|v\\la{u"],["@@v~u}"],["@@QxÂF¯}"],["@@¹nŒvÞs¯o"],["@@rSkUEj"],["@@bi­ZŒP"],["@@p[}INf"],["@@À¿€"],["@@¹dnbŒ…"],["@@rSŸBnR"],["@@g~h}"],["@@FlEk"],["@@OdPc"],["@@v[u\\"],["@@FjâL~wyoo~›sµL–\\"],["@@¬e¹aNˆ"],["@@\\nÔ¡q]L³ë\\ÿ®ŒQ֎"],["@@ÊA­©[¬"],["@@KxŒv­"],["@@@hlIk]"],["@@pW{o||j"],["@@Md|_mC"],["@@¢…X£ÏylD¼XˆtH"],["@@hlÜ[LykAvyfw^Ež›¤"],["@@fp¤Mus“R"],["@@®_ma~•LÁ¬šZ"],["@@iM„xZ"],["@@ZcYd"],["@@Z~dOSo|A¿qZv"],["@@@`”EN¡v"],["@@|–TY{"],["@@@n@m"],["@@XWkCT\\"],["@@ºwšZRkĕWO¢"],["@@™X®±Grƪ\\ÔáXq{‹"],["@@ůTG°ĄLHm°UC‹"],["@@¤Ž€aÜx~}dtüGæţŎíĔcŖpMËВjē¢·ðĄÆMzˆjWKĎ¢Q¶˜À_꒔_Bı€i«pZ€gf€¤Nrq]§ĂN®«H±‡yƳí¾×ŸīàLłčŴǝĂíÀBŖÕªˆŠÁŖHŗʼnåqûõi¨hÜ·ƒñt»¹ýv_[«¸m‰YL¯‰Qª…mĉÅdMˆ•gÇjcº«•ęœ¬­K­´ƒB«Âącoċ\\xKd¡gěŧ«®á’[~ıxu·Å”KsËɏc¢Ù\\ĭƛëbf¹­ģSƒĜkáƉÔ­ĈZB{ŠaM‘µ‰fzʼnfåÂŧįƋǝÊĕġć£g³ne­ą»@­¦S®‚\\ßðCšh™iqªĭiAu‡A­µ”_W¥ƣO\\lċĢttC¨£t`ˆ™PZäuXßBs‡Ļyek€OđġĵHuXBšµ]׌‡­­\\›°®¬F¢¾pµ¼kŘó¬Wät’¸|@ž•L¨¸µr“ºù³Ù~§WI‹ŸZWŽ®’±Ð¨ÒÉx€`‰²pĜ•rOògtÁZ}þÙ]„’¡ŒŸFK‚wsPlU[}¦Rvn`hq¬\\”nQ´ĘRWb”‚_ rtČFI֊kŠŠĦPJ¶ÖÀÖJĈĄTĚòžC ²@Pú…Øzœ©PœCÈڜĒ±„hŖ‡l¬â~nm¨f©–iļ«m‡nt–u†ÖZÜÄj“ŠLŽ®E̜Fª²iÊxبžIÈhhst"],["@@o\\V’zRZ}y"],["@@†@°¡mۛGĕ¨§Ianá[ýƤjfæ‡ØL–•äGr™"]],"encodeOffsets":[[[125592,31553]],[[125785,31436]],[[125729,31431]],[[125513,31380]],[[125223,30438]],[[125115,30114]],[[124815,29155]],[[124419,28746]],[[124095,28635]],[[124005,28609]],[[125000,30713]],[[125111,30698]],[[125078,30682]],[[125150,30684]],[[124014,28103]],[[125008,31331]],[[125411,31468]],[[125329,31479]],[[125626,30916]],[[125417,30956]],[[125254,30976]],[[125199,30997]],[[125095,31058]],[[125083,30915]],[[124885,31015]],[[125218,30798]],[[124867,30838]],[[124755,30788]],[[124802,30809]],[[125267,30657]],[[125218,30578]],[[125200,30562]],[[124968,30474]],[[125167,30396]],[[124955,29879]],[[124714,29781]],[[124762,29462]],[[124325,28754]],[[123990,28459]],[[125366,31477]],[[125115,30363]],[[125369,31139]],[[122495,31878]],[[125329,30690]],[[125192,30787]]]},"properties":{"cp":[120.153576,30.287459],"name":"浙江","childNum":45}},{"id":"340000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@^iuLX^"],["@@‚e©Ehl"],["@@°ZÆëϵmkǀwÌÕæhºgBĝâqÙĊz›ÖgņtÀÁÊÆá’hEz|WzqD¹€Ÿ°E‡ŧl{ævÜcA`¤C`|´qžxIJkq^³³ŸGšµbƒíZ…¹qpa±ď OH—¦™Ħˆx¢„gPícOl_iCveaOjCh߸i݋bÛªCC¿€m„RV§¢A|t^iĠGÀtÚs–d]ĮÐDE¶zAb àiödK¡~H¸íæAžǿYƒ“j{ď¿‘™À½W—®£ChŒÃsiŒkkly]_teu[bFa‰Tig‡n{]Gqªo‹ĈMYá|·¥f¥—őaSÕė™NµñĞ«ImŒ_m¿Âa]uĜp …Z_§{Cƒäg¤°r[_Yj‰ÆOdý“[ŽI[á·¥“Q_n‡ùgL¾mv™ˊBÜƶĊJhšp“c¹˜O]iŠ]œ¥ jtsggJǧw×jÉ©±›EFˍ­‰Ki”ÛÃÕYv…s•ˆm¬njĻª•§emná}k«ŕˆƒgđ²Ù›DǤ›í¡ªOy›†×Où±@DŸñSęćăÕIÕ¿IµĥO‰‰jNÕËT¡¿tNæŇàåyķrĕq§ÄĩsWÆߎF¶žX®¿‰mŒ™w…RIޓfßoG‘³¾©uyH‘į{Ɓħ¯AFnuP…ÍÔzšŒV—dàôº^Ðæd´€‡oG¤{S‰¬ćxã}›ŧ×Kǥĩ«žÕOEзÖdÖsƘѨ[’Û^Xr¢¼˜§xvěƵ`K”§ tÒ´Cvlo¸fzŨð¾NY´ı~ÉĔē…ßúLÃϖ_ÈÏ|]ÂÏFl”g`bšežž€n¾¢pU‚h~ƴĖ¶_‚r sĄ~cž”ƈ]|r c~`¼{À{ȒiJjz`îÀT¥Û³…]’u}›f…ïQl{skl“oNdŸjŸäËzDvčoQŠďHI¦rb“tHĔ~BmlRš—V_„ħTLnñH±’DžœL‘¼L˜ªl§Ťa¸ŒĚlK²€\\RòvDcÎJbt[¤€D@®hh~kt°ǾzÖ@¾ªdb„YhüóZ ň¶vHrľ\\ʗJuxAT|dmÀO„‹[ÃԋG·ĚąĐlŪÚpSJ¨ĸˆLvÞcPæķŨŽ®mАˆálŸwKhïgA¢ųƩޖ¤OȜm’°ŒK´"]],"encodeOffsets":[[[121722,32278]],[[119475,30423]],[[119168,35472]]]},"properties":{"cp":[117.283042,31.86119],"name":"安徽","childNum":3}},{"id":"350000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@“zht´‡]"],["@@aj^~ĆG—©O"],["@@ed¨„C}}i"],["@@@vˆPGsQ"],["@@‰sBz‚ddW]Q"],["@@SŽ¨Q“{"],["@@NŽVucW"],["@@qptBAq"],["@@‰’¸[mu"],["@@Q\\pD]_"],["@@jSwUadpF"],["@@eXª~ƒ•"],["@@AjvFso"],["@@fT–›_Çí\\Ÿ™—v|ba¦jZÆy€°"],["@@IjJi"],["@@wJI€ˆxš«¼AoNe{M­"],["@@K‰±¡Óˆ”ČäeZ"],["@@k¡¹Eh~c®wBk‹UplÀ¡I•~Māe£bN¨gZý¡a±Öcp©PhžI”Ÿ¢Qq…ÇGj‹|¥U™ g[Ky¬ŏ–v@OpˆtÉEŸF„\\@ åA¬ˆV{Xģ‰ĐBy…cpě…¼³Ăp·¤ƒ¥o“hqqÚ¡ŅLsƒ^ᗞ§qlŸÀhH¨MCe»åÇGD¥zPO£čÙkJA¼ß–ėu›ĕeûҍiÁŧSW¥˜QŠûŗ½ùěcݧSùĩąSWó«íęACµ›eR—åǃRCÒÇZÍ¢‹ź±^dlsŒtjD¸•‚ZpužÔâÒH¾oLUêÃÔjjēò´ĄW‚ƛ…^Ñ¥‹ĦŸ@Çò–ŠmŒƒOw¡õyJ†yD}¢ďÑÈġfŠZd–a©º²z£šN–ƒjD°Ötj¶¬ZSÎ~¾c°¶Ðm˜x‚O¸¢Pl´žSL|¥žA†ȪĖM’ņIJg®áIJČĒü` ŽQF‡¬h|ÓJ@zµ |ê³È ¸UÖŬŬÀEttĸr‚]€˜ðŽM¤ĶIJHtÏ A’†žĬkvsq‡^aÎbvŒd–™fÊòSD€´Z^’xPsÞrv‹ƞŀ˜jJd×ŘÉ ®A–ΦĤd€xĆqAŒ†ZR”ÀMźŒnĊ»ŒİÐZ— YX–æJŠyĊ²ˆ·¶q§·–K@·{s‘Xãô«lŗ¶»o½E¡­«¢±¨Yˆ®Ø‹¶^A™vWĶGĒĢžPlzfˆļŽtàAvWYãšO_‡¤sD§ssČġ[kƤPX¦Ž`¶“ž®ˆBBvĪjv©šjx[L¥àï[F…¼ÍË»ğV`«•Ip™}ccÅĥZE‹ãoP…´B@ŠD—¸m±“z«Ƴ—¿å³BRضˆœWlâþäą`“]Z£Tc— ĹGµ¶H™m@_©—kŒ‰¾xĨ‡ôȉðX«½đCIbćqK³Á‹Äš¬OAwã»aLʼn‡ËĥW[“ÂGI—ÂNxij¤D¢ŽîĎÎB§°_JœGsƒ¥E@…¤uć…P‘å†cuMuw¢BI¿‡]zG¹guĮck\\_"]],"encodeOffsets":[[[123250,27563]],[[122541,27268]],[[123020,27189]],[[122916,27125]],[[122887,26845]],[[122808,26762]],[[122568,25912]],[[122778,26197]],[[122515,26757]],[[122816,26587]],[[123388,27005]],[[122450,26243]],[[122578,25962]],[[121255,25103]],[[120987,24903]],[[122339,25802]],[[121042,25093]],[[122439,26024]]]},"properties":{"cp":[119.306239,26.075302],"name":"福建","childNum":18}},{"id":"360000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@ĢĨƐgļˆ¼ÂMD~ņªe^\\^§„ý©j׍cZ†Ø¨zdÒa¶ˆlҍJŒìõ`oz÷@¤u޸´†ôęöY¼‰HČƶajlÞƩ¥éZ[”|h}^U Œ ¥p„ĄžƦO lt¸Æ €Q\\€ŠaÆ|CnÂOjt­ĚĤd’ÈŒF`’¶„@Ð딠¦ōҞ¨Sêv†HĢûXD®…QgėWiØPÞìºr¤dž€NĠ¢l–•ĄtZoœCƞÔºCxrpĠV®Ê{f_Y`_ƒeq’’®Aot`@o‚DXfkp¨|Šs¬\\D‘ÄSfè©Hn¬…^DhÆyøJh“ØxĢĀLʈ„ƠPżċĄwȠ̦G®ǒĤäTŠÆ~ĦwŠ«|TF¡Šn€c³Ïå¹]ĉđxe{ÎӐ†vOEm°BƂĨİ|G’vz½ª´€H’àp”eJ݆Qšxn‹ÀŠW­žEµàXÅĪt¨ÃĖrÄwÀFÎ|ňÓMå¼ibµ¯»åDT±m[“r«_gŽmQu~¥V\\OkxtL E¢‹ƒ‘Ú^~ýê‹Pó–qo슱_Êw§ÑªåƗā¼‹mĉŹ‹¿NQ“…YB‹ąrwģcÍ¥B•Ÿ­ŗÊcØiI—žƝĿuŒqtāwO]‘³YCñTeɕš‹caub͈]trlu€ī…B‘ПGsĵıN£ï—^ķqss¿FūūV՟·´Ç{éĈý‰ÿ›OEˆR_ŸđûIċâJh­ŅıN‘ȩĕB…¦K{Tk³¡OP·wn—µÏd¯}½TÍ«YiµÕsC¯„iM•¤™­•¦¯P|ÿUHv“he¥oFTu‰õ\\ŽOSs‹MòđƇiaºćXŸĊĵà·çhƃ÷ǜ{‘ígu^›đg’m[×zkKN‘¶Õ»lčÓ{XSƉv©_ÈëJbVk„ĔVÀ¤P¾ºÈMÖxlò~ªÚàGĂ¢B„±’ÌŒK˜y’áV‡¼Ã~­…`g›ŸsÙfI›Ƌlę¹e|–~udjˆuTlXµf`¿JdŠ[\\˜„L‚‘²"],"encodeOffsets":[[116689,26234]]},"properties":{"cp":[115.892151,28.676493],"name":"江西","childNum":1}},{"id":"370000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@Xjd]{K"],["@@itbFHy"],["@@HlGk"],["@@T‚ŒGŸy"],["@@K¬˜•‹U"],["@@WdXc"],["@@PtOs"],["@@•LnXhc"],["@@ppVƒu]Or"],["@@cdzAUa"],["@@udRhnCI‡"],["@@ˆoIƒpR„"],["@@Ľč{fzƤî’Kš–ÎMĮ]†—ZFˆ½Y]â£ph’™š¶¨râøÀ†ÎǨ¤^ºÄ”Gzˆ~grĚĜlĞƄLĆdž¢Îo¦–cv“Kb€gr°Wh”mZp ˆL]LºcU‰Æ­n”żĤÌĒœbAnrOAœ´žȊcÀbƦUØrĆUÜøœĬƞ†š˜Ez„VL®öØBkŖÝĐĖ¹ŧ̄±ÀbÎɜnb²ĦhņBĖ›žįĦåXćì@L¯´ywƕCéõė ƿ¸‘lµ¾Z|†ZWyFYŸ¨Mf~C¿`€à_RÇzwƌfQnny´INoƬˆèôº|sT„JUš›‚L„îVj„ǎ¾Ē؍‚Dz²XPn±ŴPè¸ŔLƔÜƺ_T‘üÃĤBBċȉöA´fa„˜M¨{«M`‡¶d¡ô‰Ö°šmȰBÔjjŒ´PM|”c^d¤u•ƒ¤Û´Œä«ƢfPk¶Môlˆ]Lb„}su^ke{lC‘…M•rDŠÇ­]NÑFsmoõľH‰yGă{{çrnÓE‰‹ƕZGª¹Fj¢ïW…uøCǷ돡ąuhÛ¡^Kx•C`C\\bÅxì²ĝÝ¿_N‰īCȽĿåB¥¢·IŖÕy\\‡¹kx‡Ã£Č×GDyÕ¤ÁçFQ¡„KtŵƋ]CgÏAùSed‡cÚź—ŠuYfƒyMmhUWpSyGwMPqŀ—›Á¼zK›¶†G•­Y§Ëƒ@–´śÇµƕBmœ@Io‚g——Z¯u‹TMx}C‘‰VK‚ï{éƵP—™_K«™pÛÙqċtkkù]gŽ‹Tğwo•ɁsMõ³ă‡AN£™MRkmEʕč™ÛbMjÝGu…IZ™—GPģ‡ãħE[iµBEuŸDPԛ~ª¼ętŠœ]ŒûG§€¡QMsğNPŏįzs£Ug{đJĿļā³]ç«Qr~¥CƎÑ^n¶ÆéÎR~Ż¸Y’I“] P‰umŝrƿ›‰›Iā‹[x‰edz‹L‘¯v¯s¬ÁY…~}…ťuŁŒg›ƋpÝĄ_ņī¶ÏSR´ÁP~ž¿Cyžċßdwk´Ss•X|t‰`Ä Èð€AªìÎT°¦Dd–€a^lĎDĶÚY°Ž`ĪŴǒˆ”àŠv\\ebŒZH„ŖR¬ŢƱùęO•ÑM­³FۃWp[ƒ"]],"encodeOffsets":[[[123806,39303]],[[123821,39266]],[[123742,39256]],[[123702,39203]],[[123649,39066]],[[123847,38933]],[[123580,38839]],[[123894,37288]],[[123043,36624]],[[123344,38676]],[[123522,38857]],[[123628,38858]],[[118260,36742]]]},"properties":{"cp":[117.000923,36.675807],"name":"山东","childNum":13}},{"id":"410000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@•ýL™ùµP³swIÓxcŢĞð†´E®žÚPt†ĴXØx¶˜@«ŕŕQGƒ‹Yfa[şu“ßǩ™đš_X³ijÕčC]kbc•¥CS¯ëÍB©÷‹–³­Siˆ_}m˜YTtž³xlàcȂzÀD}ÂOQ³ÐTĨ¯†ƗòËŖ[hœł‹Ŧv~††}ÂZž«¤lPǕ£ªÝŴÅR§ØnhcŒtâk‡nύ­ľŹUÓÝdKuķ‡I§oTũÙďkęĆH¸ÓŒ\\ăŒ¿PcnS{wBIvɘĽ[GqµuŸŇôYgûƒZcaŽ©@½Õǽys¯}lgg@­C\\£as€IdÍuCQñ[L±ęk·‹ţb¨©kK—’»›KC²‘òGKmĨS`ƒ˜UQ™nk}AGē”sqaJ¥ĐGR‰ĎpCuÌy ã iMc”plk|tRk†ðœev~^‘´†¦ÜŽSí¿_iyjI|ȑ|¿_»d}qŸ^{“Ƈdă}Ÿtqµ`Ƴĕg}V¡om½fa™Ço³TTj¥„tĠ—Ry”K{ùÓjuµ{t}uËR‘iŸvGŠçJFjµŠÍyqΘàQÂFewixGw½Yŷpµú³XU›½ġy™łå‰kÚwZXˆ·l„¢Á¢K”zO„Λ΀jc¼htoDHr…|­J“½}JZ_¯iPq{tę½ĕ¦Zpĵø«kQ…Ťƒ]MÛfaQpě±ǽ¾]u­Fu‹÷nƒ™čįADp}AjmcEǒaª³o³ÆÍSƇĈÙDIzˑ赟^ˆKLœ—i—Þñ€[œƒaA²zz‰Ì÷Dœ|[šíijgf‚ÕÞd®|`ƒĆ~„oĠƑô³Ŋ‘D×°¯CsŠøÀ«ì‰UMhTº¨¸ǡîS–Ô„DruÂÇZ•ÖEŽ’vPZ„žW”~؋ÐtĄE¢¦Ðy¸bŠô´oŬ¬Ž²Ês~€€]®tªašpŎJ¨Öº„_ŠŔ–`’Ŗ^Ѝ\\Ĝu–”~m²Ƹ›¸fW‰ĦrƔ}Î^gjdfÔ¡J}\\n C˜¦þWxªJRÔŠu¬ĨĨmF†dM{\\d\\ŠYÊ¢ú@@¦ª²SŠÜsC–}fNècbpRmlØ^g„d¢aÒ¢CZˆZxvÆ¶N¿’¢T@€uCœ¬^ĊðÄn|žlGl’™Rjsp¢ED}€Fio~ÔNŽ‹„~zkĘHVsDzßjƒŬŒŠŢ`Pûàl¢˜\\ÀœEhŽİgÞē X¼Pk–„|m"],"encodeOffsets":[[118256,37017]]},"properties":{"cp":[113.665412,34.757975],"name":"河南","childNum":1}},{"id":"420000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@AB‚"],["@@lskt"],["@@¾«}{ra®pîÃ\\™›{øCŠËyyB±„b\\›ò˜Ý˜jK›‡L ]ĎĽÌ’JyÚCƈćÎT´Å´pb©È‘dFin~BCo°BĎĚømvŒ®E^vǾ½Ĝ²Ro‚bÜeNŽ„^ĺ£R†¬lĶ÷YoĖ¥Ě¾|sOr°jY`~I”¾®I†{GqpCgyl{‡£œÍƒÍyPL“¡ƒ¡¸kW‡xYlÙ抚ŁĢzœ¾žV´W¶ùŸo¾ZHxjwfx„GNÁ•³Xéæl¶‰EièIH‰ u’jÌQ~v|sv¶Ôi|ú¢Fh˜Qsğ¦ƒSiŠBg™ÐE^ÁÐ{–čnOÂȞUÎóĔ†ÊēIJ}Z³½Mŧïeyp·uk³DsѨŸL“¶_œÅuèw»—€¡WqÜ]\\‘Ò§tƗcÕ¸ÕFÏǝĉăxŻČƟO‡ƒKÉġÿ×wg”÷IÅzCg†]m«ªGeçÃTC’«[‰t§{loWeC@ps_Bp‘­r‘„f_``Z|ei¡—oċMqow€¹DƝӛDYpûs•–‹Ykıǃ}s¥ç³[§ŸcYŠ§HK„«Qy‰]¢“wwö€¸ïx¼ņ¾Xv®ÇÀµRĠЋžHMž±cÏd„ƒǍũȅȷ±DSyúĝ£ŤĀàtÖÿï[îb\\}pĭÉI±Ñy…¿³x¯N‰o‰|¹H™ÏÛm‹júË~Tš•u˜ęjCöAwě¬R’đl¯ Ñb­‰ŇT†Ŀ_[Œ‘IčĄʿnM¦ğ\\É[T·™k¹œ©oĕ@A¾w•ya¥Y\\¥Âaz¯ãÁ¡k¥ne£Ûw†E©Êō¶˓uoj_Uƒ¡cF¹­[Wv“P©w—huÕyBF“ƒ`R‹qJUw\\i¡{jŸŸEPïÿ½fć…QÑÀQ{ž‚°‡fLԁ~wXg—ītêݾ–ĺ‘Hdˆ³fJd]‹HJ²…E€ƒoU¥†HhwQsƐ»Xmg±çve›]Dm͂PˆoCc¾‹_h”–høYrŊU¶eD°Č_N~øĹĚ·`z’]Äþp¼…äÌQŒv\\rCŒé¾TnkžŐڀÜa‡“¼ÝƆĢ¶Ûo…d…ĔňТJq’Pb ¾|JŒ¾fXŠƐîĨ_Z¯À}úƲ‹N_ĒĊ^„‘ĈaŐyp»CÇĕKŠšñL³ŠġMŒ²wrIÒŭxjb[œžn«øœ˜—æˆàƒ ^²­h¯Ú€ŐªÞ¸€Y²ĒVø}Ā^İ™´‚LŠÚm„¥ÀJÞ{JVŒųÞŃx×sxxƈē ģMř–ÚðòIf–Ċ“Œ\\Ʈ±ŒdʧĘD†vČ_Àæ~DŒċ´A®µ†¨ØLV¦êHÒ¤"]],"encodeOffsets":[[[113712,34000]],[[115612,30507]],[[113649,34054]]]},"properties":{"cp":[114.298572,30.584355],"name":"湖北","childNum":3}},{"id":"430000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@—n„FTs"],["@@ßÅÆችÔXr—†CO™“…ËR‘ïÿĩ­TooQyšÓ[‹ŅBE¬–ÎÓXa„į§Ã¸G °ITxp‰úxÚij¥Ïš–Ģ¾ŠedžÄ©ĸG…œàGh‚€M¤–Â_U}Ċ}¢pczfŠþg¤€”ÇòAV‘‹M"],["@@©K—ƒA·³CQ±Á«³BUŠƑ¹AŠtćOw™D]ŒJiØSm¯b£‘ylƒ›X…HËѱH•«–‘C^õľA–Å§¤É¥„ïyuǙuA¢^{ÌC´­¦ŷJ£^[†“ª¿‡ĕ~•Ƈ…•N… skóā‡¹¿€ï]ă~÷O§­@—Vm¡‹Qđ¦¢Ĥ{ºjԏŽŒª¥nf´•~ÕoŸž×Ûą‹MąıuZœmZcÒ IJĪ²SÊDŽŶ¨ƚƒ’CÖŎªQؼrŭŽ­«}NÏürʬŒmjr€@ĘrTW ­SsdHzƓ^ÇÂyUi¯DÅYlŹu{hTœ}mĉ–¹¥ě‰Dÿë©ıÓ[Oº£ž“¥ót€ł¹MՄžƪƒ`Pš…Di–ÛUŠ¾Å‌ìˆU’ñB“È£ýhe‰dy¡oċ€`pfmjP~‚kZa…ZsÐd°wj§ƒ@€Ĵ®w~^‚kÀÅKvNmX\\¨a“”сqvíó¿F„¤¡@ũÑVw}S@j}¾«pĂr–ªg àÀ²NJ¶¶Dô…K‚|^ª†Ž°LX¾ŴäPĪ±œ£EXd›”^¶›IJÞܓ~‘u¸ǔ˜Ž›MRhsR…e†`ÄofIÔ\\Ø  i”ćymnú¨cj ¢»–GČìƊÿШXeĈĀ¾Oð Fi ¢|[jVxrIQŒ„_E”zAN¦zLU`œcªx”OTu RLÄ¢dV„i`p˔vŎµªÉžF~ƒØ€d¢ºgİàw¸Áb[¦Zb¦–z½xBĖ@ªpº›šlS¸Ö\\Ĕ[N¥ˀmĎă’J\\‹ŀ`€…ňSڊĖÁĐiO“Ĝ«BxDõĚiv—ž–S™Ì}iùŒžÜnšÐºGŠ{Šp°M´w†ÀÒzJ²ò¨ oTçüöoÛÿñŽőФ‚ùTz²CȆȸǎŪƒƑÐc°dPÎŸğ˶[Ƚu¯½WM¡­Éž“’B·rížnZŸÒ `‡¨GA¾\\pē˜XhÆRC­üWGġu…T靧Ŏѝ©ò³I±³}_‘‹EÃħg®ęisÁPDmÅ{‰b[Rşs·€kPŸŽƥƒóRo”O‹ŸVŸ~]{g\\“êYƪ¦kÝbiċƵŠGZ»Ěõ…ó·³vŝž£ø@pyö_‹ëŽIkѵ‡bcѧy…×dY؎ªiþž¨ƒ[]f]Ņ©C}ÁN‡»hĻħƏ’ĩ"]],"encodeOffsets":[[[115640,30489]],[[112543,27312]],[[116690,26230]]]},"properties":{"cp":[112.982279,28.19409],"name":"湖南","childNum":3}},{"id":"440000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@QdˆAua"],["@@ƒlxDLo"],["@@sbhNLo"],["@@Ă āŸ"],["@@WltO[["],["@@Krœ]S"],["@@e„„I]y"],["@@I|„Mym"],["@@ƒÛ³LSŒž¼Y"],["@@nvºB–ëui©`¾"],["@@zdšÛ›Jw®"],["@@†°…¯"],["@@a yAª¸ËJIx،@€ĀHAmßV¡o•fu•o"],["@@šs‰ŗÃÔėAƁ›ZšÄ ~°ČP‚‹äh"],["@@‹¶Ý’Ì‚vmĞh­ı‡Q"],["@@HœŠdSjĒ¢D}war…“u«ZqadYM"],["@@elŒ\\LqqU"],["@@~rMo\\"],["@@f„^ƒC"],["@@øPªoj÷ÍÝħXČx”°Q¨ıXNv"],["@@gÇƳˆŽˆ”oˆŠˆ[~tly"],["@@E–ÆC¿‘"],["@@OŽP"],["@@w‹†đóg‰™ĝ—[³‹¡VÙæÅöM̳¹pÁaËýý©D©Ü“JŹƕģGą¤{Ùū…ǘO²«BƱéA—Ò‰ĥ‡¡«BhlmtÃPµyU¯uc“d·w_bŝcīímGOŽ|KP’ȏ‡ŹãŝIŕŭŕ@Óoo¿ē‹±ß}Ž…ŭ‚ŸIJWÈCőâUâǙI›ğʼn©I›ijEׅÁ”³Aó›wXJþ±ÌŒÜӔĨ£L]ĈÙƺZǾĆĖMĸĤfŒÎĵl•ŨnȈ‘ĐtF”Š–FĤ–‚êk¶œ^k°f¶gŠŽœ}®Fa˜f`vXŲxl˜„¦–ÔÁ²¬ÐŸ¦pqÊ̲ˆi€XŸØRDÎ}†Ä@ZĠ’s„x®AR~®ETtĄZ†–ƈfŠŠHâÒÐA†µ\\S¸„^wĖkRzŠalŽŜ|E¨ÈNĀňZTŒ’pBh£\\ŒĎƀuXĖtKL–¶G|Ž»ĺEļĞ~ÜĢÛĊrˆO˜Ùîvd]nˆ¬VœÊĜ°R֟pM††–‚ƂªFbwžEÀˆ˜©Œž\\…¤]ŸI®¥D³|ˎ]CöAŤ¦…æ’´¥¸Lv¼€•¢ĽBaô–F~—š®²GÌҐEY„„œzk¤’°ahlV՞I^‹šCxĈPŽsB‰ƒºV‰¸@¾ªR²ĨN]´_eavSi‡vc•}p}Đ¼ƌkJœÚe thœ†_¸ ºx±ò_xN›Ë‹²‘@ƒă¡ßH©Ùñ}wkNÕ¹ÇO½¿£ĕ]ly_WìIžÇª`ŠuTÅxYĒÖ¼k֞’µ‚MžjJÚwn\\h‘œĒv]îh|’È›Ƅøègž¸Ķß ĉĈWb¹ƀdéʌNTtP[ŠöSvrCZžžaGuœbo´ŖÒÇА~¡zCI…özx¢„Pn‹•‰Èñ @ŒĥÒ¦†]ƞŠV}³ăĔñiiÄÓVépKG½Ä‘ÓávYo–C·sit‹iaÀy„ŧΡÈYDÑům}‰ý|m[węõĉZÅxUO}÷N¹³ĉo_qtă“qwµŁYلǝŕ¹tïÛUïmRCº…ˆĭ|µ›ÕÊK™½R‘ē ó]‘–GªęAx–»HO£|ām‡¡diď×YïYWªʼnOeÚtĐ«zđ¹T…ā‡úE™á²\\‹ķÍ}jYàÙÆſ¿Çdğ·ùTßÇţʄ¡XgWÀLJğ·¿ÃˆOj YÇ÷Qě‹i"]],"encodeOffsets":[[[117381,22988]],[[116552,22934]],[[116790,22617]],[[116973,22545]],[[116444,22536]],[[116931,22515]],[[116496,22490]],[[116453,22449]],[[113301,21439]],[[118726,21604]],[[118709,21486]],[[113210,20816]],[[115482,22082]],[[113171,21585]],[[113199,21590]],[[115232,22102]],[[115739,22373]],[[115134,22184]],[[113056,21175]],[[119573,21271]],[[119957,24020]],[[115859,22356]],[[116561,22649]],[[116285,22746]]]},"properties":{"cp":[113.280637,23.125178],"name":"广东","childNum":24}},{"id":"450000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@H– TQ§•A"],["@@ĨʪƒLƒƊDÎĹĐCǦė¸zÚGn£¾›rªŀÜt¬@֛ڈSx~øOŒ˜ŶÐÂæȠ\\„ÈÜObĖw^oބLf¬°bI lTØB̈F£Ć¹gñĤaY“t¿¤VSñœK¸¤nM†¼‚JE±„½¸šŠño‹ÜCƆæĪ^ŠĚQÖ¦^‡ˆˆf´Q†üÜʝz¯šlzUĺš@쇀p¶n]sxtx¶@„~ÒĂJb©gk‚{°‚~c°`ԙ¬rV\\“la¼¤ôá`¯¹LC†ÆbŒxEræO‚v[H­˜„[~|aB£ÖsºdAĐzNÂðsŽÞƔ…Ĥªbƒ–ab`ho¡³F«èVloŽ¤™ÔRzpp®SŽĪº¨ÖƒºN…ij„d`’a”¦¤F³ºDÎńĀìŠCžĜº¦Ċ•~nS›|gźvZkCÆj°zVÈÁƔ]LÊFZg…čP­kini«‹qǀcz͔Y®¬Ů»qR×ō©DՄ‘§ƙǃŵTÉĩ±ŸıdÑnYY›IJvNĆƌØÜ Öp–}e³¦m‹©iÓ|¹Ÿħņ›|ª¦QF¢Â¬ʖovg¿em‡^ucà÷gՎuŒíÙćĝ}FĻ¼Ĺ{µHK•sLSđƃr‹č¤[Ag‘oS‹ŇYMÿ§Ç{Fśbky‰lQxĕƒ]T·¶[B…ÑÏGáşşƇe€…•ăYSs­FQ}­Bƒw‘tYğÃ@~…C̀Q ×W‡j˱rÉ¥oÏ ±«ÓÂ¥•ƒ€k—ŽwWűŒmcih³K›~‰µh¯e]lµ›él•Eģ‰•E“ďs‡’mǖŧē`ãògK_ÛsUʝ“ćğ¶hŒöŒO¤Ǜn³Žc‘`¡y‹¦C‘ez€YŠwa™–‘[ďĵűMę§]X˜Î_‚훘Û]é’ÛUćİÕBƣ±…dƒy¹T^džûÅÑŦ·‡PĻþÙ`K€¦˜…¢ÍeœĥR¿Œ³£[~Œäu¼dl‰t‚†W¸oRM¢ď\\zœ}Æzdvň–{ÎXF¶°Â_„ÒÂÏL©Ö•TmuŸ¼ãl‰›īkiqéfA„·Êµ\\őDc¥ÝF“y›Ôć˜c€űH_hL܋êĺШc}rn`½„Ì@¸¶ªVLŒŠhŒ‹\\•Ţĺk~ŽĠið°|gŒtTĭĸ^x‘vK˜VGréAé‘bUu›MJ‰VÃO¡…qĂXËS‰ģãlýàŸ_ju‡YÛÒB†œG^˜é֊¶§ŽƒEG”ÅzěƒƯ¤Ek‡N[kdåucé¬dnYpAyČ{`]þ¯T’bÜÈk‚¡Ġ•vŒàh„ÂƄ¢J"]],"encodeOffsets":[[[111707,21520]],[[107619,25527]]]},"properties":{"cp":[108.320004,22.82402],"name":"广西","childNum":2}},{"id":"460000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@š¦Ŝil¢”XƦ‘ƞò–ïè§ŞCêɕrŧůÇąĻõ™·ĉ³œ̅kÇm@ċȧƒŧĥ‰Ľʉ­ƅſ“ȓÒ˦ŝE}ºƑ[ÍĜȋ gÎfǐÏĤ¨êƺ\\Ɔ¸ĠĎvʄȀœÐ¾jNðĀÒRŒšZdž™zÐŘΰH¨Ƣb²_Ġ "],"encodeOffsets":[[112750,20508]]},"properties":{"cp":[110.33119,20.031971],"name":"海南","childNum":1}},{"id":"510000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@LqKr"],["@@Š[ĻéV£ž_ţġñpG •réÏ·~ąSfy×͂·ºſƽiÍıƣıĻmHH}siaX@iÇ°ÁÃ×t«ƒ­Tƒ¤J–JJŒyJ•ÈŠ`Ohߦ¡uËhIyCjmÿw…ZG……Ti‹SˆsO‰žB²ŸfNmsPaˆ{M{ŠõE‘^Hj}gYpaeuž¯‘oáwHjÁ½M¡pM“–uå‡mni{fk”\\oƒÎqCw†EZ¼K›ĝŠƒAy{m÷L‡wO×SimRI¯rK™õBS«sFe‡]fµ¢óY_ÆPRcue°Cbo׌bd£ŌIHgtrnyPt¦foaXďx›lBowz‹_{ÊéWiêE„GhܸºuFĈIxf®Ž•Y½ĀǙ]¤EyŸF²ċ’w¸¿@g¢§RGv»–áŸW`ÃĵJwi]t¥wO­½a[׈]`Ãi­üL€¦LabbTÀå’c}Íh™Æhˆ‹®BH€î|Ék­¤S†y£„ia©taį·Ɖ`ō¥Uh“O…ƒĝLk}©Fos‰´›Jm„µlŁu—…ø–nÑJWΪ–YÀïAetTžŅ‚ӍG™Ë«bo‰{ıwodƟ½ƒžOġܑµxàNÖ¾P²§HKv¾–]|•B‡ÆåoZ`¡Ø`ÀmºĠ~ÌЧnDž¿¤]wğ@sƒ‰rğu‰~‘Io”[é±¹ ¿žſđӉ@q‹gˆ¹zƱřaí°KtǤV»Ã[ĩǭƑ^ÇÓ@ỗs›Zϕ‹œÅĭ€Ƌ•ěpwDóÖሯneQˌq·•GCœýS]xŸ·ý‹q³•O՜Œ¶Qzßti{ř‰áÍÇWŝŭñzÇW‹pç¿JŒ™‚Xœĩè½cŒF–ÂLiVjx}\\N†ŇĖ¥Ge–“JA¼ÄHfÈu~¸Æ«dE³ÉMA|b˜Ò…˜ćhG¬CM‚õŠ„ƤąAvƒüV€éŀ‰_V̳ĐwQj´·ZeÈÁ¨X´Æ¡Qu·»Ÿ“˜ÕZ³ġqDo‰y`L¬gdp°şŠp¦ėìÅĮZŽ°Iä”h‚‘ˆzŠĵœf²å ›ĚрKp‹IN|‹„Ñz]ń……·FU×é»R³™MƒÉ»GM«€ki€™ér™}Ã`¹ăÞmȝnÁîRǀ³ĜoİzŔwǶVÚ£À]ɜ»ĆlƂ²Ġ…þTº·àUȞÏʦ¶†I’«dĽĢdĬ¿–»Ĕ׊h\\c¬†ä²GêëĤł¥ÀǿżÃÆMº}BÕĢyFVvw–ˆxBèĻĒ©Ĉ“tCĢɽŠȣ¦āæ·HĽî“ôNԓ~^¤Ɗœu„œ^s¼{TA¼ø°¢İªDè¾Ň¶ÝJ‘®Z´ğ~Sn|ªWÚ©òzPOȸ‚bð¢|‹øĞŠŒœŒQìÛÐ@Ğ™ǎRS¤Á§d…i“´ezÝúØã]Hq„kIŸþËQǦÃsǤ[E¬ÉŪÍxXƒ·ÖƁİlƞ¹ª¹|XÊwn‘ÆƄmÀêErĒtD®ċæcQƒ”E®³^ĭ¥©l}äQto˜ŖÜqƎkµ–„ªÔĻĴ¡@Ċ°B²Èw^^RsºTĀ£ŚæœQP‘JvÄz„^Đ¹Æ¯fLà´GC²‘dt˜­ĀRt¼¤ĦOðğfÔðDŨŁĞƘïžPȆ®âbMüÀXZ ¸£@Ś›»»QÉ­™]d“sÖ×_͖_ÌêŮPrĔĐÕGĂeZÜîĘqBhtO ¤tE[h|Y‹Ô‚ZśÎs´xº±UŒ’ñˆt|O’ĩĠºNbgþŠJy^dÂY Į„]Řz¦gC‚³€R`ĀŠz’¢AjŒ¸CL„¤RÆ»@­Ŏk\\Ç´£YW}z@Z}‰Ã¶“oû¶]´^N‡Ò}èN‚ª–P˜Íy¹`S°´†ATe€VamdUĐwʄvĮÕ\\ƒu‹Æŗ¨Yp¹àZÂm™Wh{á„}WØǍ•Éüw™ga§áCNęÎ[ĀÕĪgÖɪX˜øx¬½Ů¦¦[€—„NΆL€ÜUÖ´òrÙŠxR^–†J˜k„ijnDX{Uƒ~ET{ļº¦PZc”jF²Ė@Žp˜g€ˆ¨“B{ƒu¨ŦyhoÚD®¯¢˜ WòàFΤ¨GDäz¦kŮPœġq˚¥À]€Ÿ˜eŽâÚ´ªKxī„Pˆ—Ö|æ[xäJÞĥ‚s’NÖ½ž€I†¬nĨY´®Ð—ƐŠ€mD™ŝuäđđEb…e’e_™v¡}ìęNJē}q”É埁T¯µRs¡M@}ůa†a­¯wvƉåZwž\\Z{åû^›"]],"encodeOffsets":[[[108815,30935]],[[110617,31811]]]},"properties":{"cp":[104.065735,30.659462],"name":"四川","childNum":2}},{"id":"520000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@†G\\†lY£‘in"],["@@q‚|ˆ‚mc¯tχVSÎ"],["@@hÑ£Is‡NgßH†›HªķÃh_¹ƒ¡ĝħń¦uيùŽgS¯JHŸ|sÝÅtÁïyMDč»eÕtA¤{b\\}—ƒG®u\\åPFq‹wÅaD…žK°ºâ_£ùbµ”mÁ‹ÛœĹM[q|hlaªāI}тƒµ@swtwm^oµˆD鼊yV™ky°ÉžûÛR…³‚‡eˆ‡¥]RՋěħ[ƅåÛDpŒ”J„iV™™‰ÂF²I…»mN·£›LbÒYb—WsÀbŽ™pki™TZĄă¶HŒq`……ĥ_JŸ¯ae«ƒKpÝx]aĕÛPƒÇȟ[ÁåŵÏő—÷Pw}‡TœÙ@Õs«ĿÛq©½œm¤ÙH·yǥĘĉBµĨÕnđ]K„©„œá‹ŸG纍§Õßg‡ǗĦTèƤƺ{¶ÉHÎd¾ŚÊ·OÐjXWrãLyzÉAL¾ę¢bĶėy_qMĔąro¼hĊžw¶øV¤w”²Ĉ]ʚKx|`ź¦ÂÈdr„cȁbe¸›`I¼čTF´¼Óýȃr¹ÍJ©k_șl³´_pН`oÒhŽ¶pa‚^ÓĔ}D»^Xyœ`d˜[Kv…JPhèhCrĂĚÂ^Êƌ wˆZL­Ġ£šÁbrzOIl’MM”ĪŐžËr×ÎeŦŽtw|Œ¢mKjSǘňĂStÎŦEtqFT†¾†E쬬ôxÌO¢Ÿ KŠ³ŀºäY†„”PVgŎ¦Ŋm޼VZwVlŒ„z¤…ž£Tl®ctĽÚó{G­A‡ŒÇgeš~Αd¿æaSba¥KKûj®_ć^\\ؾbP®¦x^sxjĶI_Ä X‚⼕Hu¨Qh¡À@Ëô}Ž±žGNìĎlT¸ˆ…`V~R°tbÕĊ`¸úÛtπFDu€[ƒMfqGH·¥yA‰ztMFe|R‚_Gk†ChZeÚ°to˜v`x‹b„ŒDnÐ{E}šZ˜è€x—†NEފREn˜[Pv@{~rĆAB§‚EO¿|UZ~ì„Uf¨J²ĂÝƀ‚sª–B`„s¶œfvö¦ŠÕ~dÔq¨¸º»uù[[§´sb¤¢zþFœ¢Æ…Àhˆ™ÂˆW\\ıŽËI݊o±ĭŠ£þˆÊs}¡R]ŒěƒD‚g´VG¢‚j±®è†ºÃmpU[Á›‘Œëº°r›ÜbNu¸}Žº¼‡`ni”ºÔXĄ¤¼Ôdaµ€Á_À…†ftQQgœR—‘·Ǔ’v”}Ýלĵ]µœ“Wc¤F²›OĩųãW½¯K‚©…]€{†LóµCIµ±Mß¿hŸ•©āq¬o‚½ž~@i~TUxŪÒ¢@ƒ£ÀEîôruń‚”“‚b[§nWuMÆLl¿]x}ij­€½"]],"encodeOffsets":[[[112158,27383]],[[112105,27474]],[[112095,27476]]]},"properties":{"cp":[106.713478,26.578343],"name":"贵州","childNum":3}},{"id":"530000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@[„ùx½}ÑRH‘YīĺûsÍn‘iEoã½Ya²ė{c¬ĝg•ĂsA•ØÅwď‚õzFjw}—«Dx¿}UũlŸê™@•HÅ­F‰¨ÇoJ´Ónũuą¡Ã¢pÒŌ“Ø TF²‚xa²ËX€‚cʋlHîAßËŁkŻƑŷÉ©h™W­æßU‡“Ës¡¦}•teèƶStǀÇ}Fd£j‹ĈZĆÆ‹¤T‚č\\Dƒ}O÷š£Uˆ§~ŃG™‚åŃDĝ¸œTsd¶¶Bªš¤u¢ŌĎo~t¾ÍŶÒtD¦Ú„iôö‰€z›ØX²ghįh½Û±¯€ÿm·zR¦Ɵ`ªŊÃh¢rOԍ´£Ym¼èêf¯ŪĽn„†cÚbŒw\\zlvWžªâˆ ¦g–mĿBş£¢ƹřbĥkǫßeeZkÙIKueT»sVesb‘aĕ  ¶®dNœĄÄpªyŽ¼—„³BE˜®l‡ŽGœŭCœǶwêżĔÂe„pÍÀQƞpC„–¼ŲÈ­AÎô¶R„ä’Q^Øu¬°š_Èôc´¹ò¨P΢hlϦ´Ħ“Æ´sâDŽŲPnÊD^¯°’Upv†}®BP̪–jǬx–Söwlfòªv€qĸ|`H€­viļ€ndĜ­Ćhň•‚em·FyށqóžSį¯‘³X_ĞçêtryvL¤§z„¦c¦¥jnŞk˜ˆlD¤øz½ĜàžĂŧMÅ|áƆàÊcðÂF܎‚áŢ¥\\\\º™İøÒÐJĴ‡„îD¦zK²ǏÎEh~’CD­hMn^ÌöÄ©ČZÀžaü„fɭyœpį´ěFűk]Ôě¢qlÅĆÙa¶~Äqššê€ljN¬¼H„ÊšNQ´ê¼VظE††^ŃÒyŒƒM{ŒJLoÒœęæŸe±Ķ›y‰’‡gã“¯JYÆĭĘëo¥Š‰o¯hcK«z_pŠrC´ĢÖY”—¼ v¸¢RŽÅW³Â§fǸYi³xR´ďUˊ`êĿU„û€uĆBƒƣö‰N€DH«Ĉg†——Ñ‚aB{ÊNF´¬c·Åv}eÇÃGB»”If•¦HňĕM…~[iwjUÁKE•Ž‹¾dĪçW›šI‹èÀŒoÈXòyŞŮÈXâÎŚŠj|àsRy‹µÖ›–Pr´þŒ ¸^wþTDŔ–Hr¸‹žRÌmf‡żÕâCôox–ĜƌÆĮŒ›Ð–œY˜tâŦÔ@]ÈǮƒ\\Ī¼Ä£UsȯLbîƲŚºyh‡rŒŠ@ĒԝƀŸÀ²º\\êp“’JŠ}ĠvŠqt„Ġ@^xÀ£È†¨mËÏğ}n¹_¿¢×Y_æpˆÅ–A^{½•Lu¨GO±Õ½ßM¶w’ÁĢۂP‚›Ƣ¼pcIJxŠ|ap̬HšÐŒŊSfsðBZ¿©“XÏÒK•k†÷Eû¿‰S…rEFsÕūk”óVǥʼniTL‚¡n{‹uxţÏh™ôŝ¬ğōN“‘NJkyPaq™Âğ¤K®‡YŸxÉƋÁ]āęDqçgOg†ILu—\\_gz—]W¼ž~CÔē]bµogpў_oď`´³Țkl`IªºÎȄqÔþž»E³ĎSJ»œ_f·‚adÇqƒÇc¥Á_Źw{™L^ɱćx“U£µ÷xgĉp»ĆqNē`rĘzaĵĚ¡K½ÊBzyäKXqiWPÏɸ½řÍcÊG|µƕƣG˛÷Ÿk°_^ý|_zċBZocmø¯hhcæ\\lˆMFlư£Ĝ„ÆyH“„F¨‰µêÕ]—›HA…àӄ^it `þßäkŠĤÎT~Wlÿ¨„ÔPzUC–NVv [jâôDôď[}ž‰z¿–msSh‹¯{jïğl}šĹ[–őŒ‰gK‹©U·µË@¾ƒm_~q¡f¹…ÅË^»‘f³ø}Q•„¡Ö˳gͱ^ǁ…\\ëÃA_—¿bW›Ï[¶ƛ鏝£F{īZgm@|kHǭƁć¦UĔťƒ×ë}ǝƒeďºȡȘÏíBə£āĘPªij¶“ʼnÿ‡y©n‰ď£G¹¡I›Š±LÉĺÑdĉ܇W¥˜‰}g˜Á†{aqÃ¥aŠıęÏZ—ï`"],"encodeOffsets":[[104636,22969]]},"properties":{"cp":[102.712251,25.040609],"name":"云南","childNum":1}},{"id":"540000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@hžľxŽŖ‰xƒÒVŽ†ºÅâAĪÝȆµę¯Ňa±r_w~uSÕň‘qOj]ɄQ…£Z……UDûoY’»©M[‹L¼qãË{V͕çWViŽ]ë©Ä÷àyƛh›ÚU°ŒŒa”d„cQƒ~Mx¥™cc¡ÙaSyF—ցk­ŒuRýq¿Ôµ•QĽ³aG{¿FµëªéĜÿª@¬·–K‰·àariĕĀ«V»Ŷ™Ĵū˜gèLǴŇƶaf‹tŒèBŚ£^Šâ†ǐÝ®–šM¦ÁǞÿ¬LhŸŽJ¾óƾƺcxw‹f]Y…´ƒ¦|œQLn°aœdĊ…œ\\¨o’œǀÍŎœ´ĩĀd`tÊQŞŕ|‚¨C^©œĈ¦„¦ÎJĊ{ŽëĎjª²rЉšl`¼Ą[t|¦St辉PŒÜK¸€d˜Ƅı]s¤—î_v¹ÎVòŦj˜£Əsc—¬_Ğ´|Ł˜¦AvŽ¦w`ăaÝaa­¢e¤ı²©ªSªšÈMĄwžÉØŔì@T‘¤—Ę™\\õª@”þo´­xA s”ÂtŎKzó´ÇĊµ¢rž^nĊ­Æ¬×üGž¢‚³ {âĊ]š™G‚~bÀgVjzlhǶf€žOšfdŠ‰ªB]pj„•TO–tĊ‚n¤}®¦ƒČ¥d¢¼»ddš”Y¼Žt—¢eȤJ¤}Ǿ¡°§¤AГlc@ĝ”sªćļđAç‡wx•UuzEÖġ~AN¹ÄÅȀŻ¦¿ģŁéì±H…ãd«g[؉¼ēÀ•cīľġ¬cJ‘µ…ÐʥVȝ¸ßS¹†ý±ğkƁ¼ą^ɛ¤Ûÿ‰b[}¬ōõÃ]ËNm®g@•Bg}ÍF±ǐyL¥íCˆƒIij€Ï÷њį[¹¦[⚍EÛïÁÉdƅß{âNÆāŨߝ¾ě÷yC£‡k­´ÓH@¹†TZ¥¢įƒ·ÌAЧ®—Zc…v½ŸZ­¹|ŕWZqgW“|ieZÅYVӁqdq•bc²R@†c‡¥Rã»Ge†ŸeƃīQ•}J[ғK…¬Ə|o’ėjġĠÑN¡ð¯EBčnwôɍėªƒ²•CλŹġǝʅįĭạ̃ūȹ]ΓͧgšsgȽóϧµǛ†ęgſ¶ҍć`ĘąŌJޚä¤rÅň¥ÖÁUětęuůÞiĊÄÀ\\Æs¦ÓRb|Â^řÌkÄŷ¶½÷‡f±iMݑ›‰@ĥ°G¬ÃM¥n£Øą‚ğ¯ß”§aëbéüÑOčœk£{\\‘eµª×M‘šÉfm«Ƒ{Å׃Gŏǩãy³©WÑăû‚··‘Q—òı}¯ã‰I•éÕÂZ¨īès¶ZÈsŽæĔTŘvŽgÌsN@îá¾ó@‰˜ÙwU±ÉT廣TđŸWxq¹Zo‘b‹s[׌¯cĩv‡Œėŧ³BM|¹k‰ªħ—¥TzNYnݍßpęrñĠĉRS~½ŠěVVŠµ‚õ‡«ŒM££µB•ĉ¥áºae~³AuĐh`Ü³ç@BۘïĿa©|z²Ý¼D”£àč²‹ŸƒIƒû›I ā€óK¥}rÝ_Á´éMaň¨€~ªSĈ½Ž½KÙóĿeƃÆBŽ·¬ën×W|Uº}LJrƳ˜lŒµ`bÔ`QˆˆÐÓ@s¬ñIŒÍ@ûws¡åQÑßÁ`ŋĴ{Ī“T•ÚÅTSij‚‹Yo|Ç[ǾµMW¢ĭiÕØ¿@˜šMh…pÕ]j†éò¿OƇĆƇp€êĉâlØw–ěsˆǩ‚ĵ¸c…bU¹ř¨WavquSMzeo_^gsÏ·¥Ó@~¯¿RiīB™Š\\”qTGªÇĜçPoŠÿfñòą¦óQīÈáP•œābß{ƒZŗĸIæńhnszÁCËìñšÏ·ąĚÝUm®ó­L·ăU›Èíoù´Êj°ŁŤ_uµ^‘°Œìǖ@tĶĒ¡Æ‡M³Ģ«˜İĨÅ®ğ†RŽāð“ggheÆ¢z‚Ê©Ô\\°ÝĎz~ź¤Pn–MĪÖB£Ÿk™n鄧żćŠ˜ĆK„Ē°¼L¶è‰âz¨u¦¥LDĘz¬ýÎmĘd¾ß”Fz“hg²™Fy¦ĝ¤ċņbΛ@y‚Ąæm°NĮZRÖíŽJ²öLĸÒ¨Y®ƌÐV‰à˜tt_ڀÂyĠzž]Ţh€zĎ{†ĢX”ˆc|šÐqŽšfO¢¤ög‚ÌHNŽ„PKŖœŽ˜Uú´xx[xˆvĐCûĀŠìÖT¬¸^}Ìsòd´_Ž‡KgžLĴ…ÀBon|H@–Êx˜—¦BpŰˆŌ¿fµƌA¾zLjRxŠ¶F”œkĄźRzŀˆ~¶[”´Hnª–VƞuĒ­È¨ƎcƽÌm¸ÁÈM¦x͊ëÀxdžB’šú^´W†£–d„kɾĬpœw‚˂ØɦļĬIŚœÊ•n›Ŕa¸™~J°î”lɌxĤÊÈðhÌ®‚g˜T´øŽàCˆŽÀ^ªerrƘdž¢İP|Ė ŸWœªĦ^¶´ÂL„aT±üWƜ˜ǀRšŶUńšĖ[QhlLüA†‹Ü\\†qR›Ą©"],"encodeOffsets":[[90849,37210]]},"properties":{"cp":[91.132212,29.660361],"name":"西藏","childNum":1}},{"id":"610000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@˜p¢—ȮµšûG™Ħ}Ħšðǚ¶òƄ€jɂz°{ºØkÈęâ¦jª‚Bg‚\\œċ°s¬Ž’]jžú ‚E”Ȍdž¬s„t‡”RˆÆdĠݎwܔ¸ôW¾ƮłÒ_{’Ìšû¼„jº¹¢GǪÒ¯ĘƒZ`ºŊƒecņąš~BÂgzpâēòYǠȰÌTΨÂWœ|fcŸă§uF—Œ@NŸ¢XLƒŠRMº[ğȣſï|¥J™kc`sʼnǷ’Y¹‹W@µ÷K…ãï³ÛIcñ·VȋڍÒķø©—þ¥ƒy‚ÓŸğęmWµÎumZyOŅƟĥÓ~sÑL¤µaŅY¦ocyZ{‰y c]{ŒTa©ƒ`U_Ěē£ωÊƍKù’K¶ȱÝƷ§{û»ÅÁȹÍéuij|¹cÑd‘ŠìUYƒŽO‘uF–ÕÈYvÁCqӃT•Ǣí§·S¹NgŠV¬ë÷Át‡°Dد’C´ʼnƒópģ}„ċcE˅FŸŸéGU¥×K…§­¶³B‹Č}C¿åċ`wġB·¤őcƭ²ő[Å^axwQO…ÿEËߌ•ĤNĔŸwƇˆÄŠńwĪ­Šo[„_KÓª³“ÙnK‰Çƒěœÿ]ď€ă_d©·©Ýŏ°Ù®g]±„Ÿ‡ß˜å›—¬÷m\\›iaǑkěX{¢|ZKlçhLt€Ňîŵ€œè[€É@ƉĄEœ‡tƇÏ˜³­ħZ«mJ…›×¾‘MtÝĦ£IwÄå\\Õ{‡˜ƒOwĬ©LÙ³ÙgBƕŀr̛ĢŭO¥lãyC§HÍ£ßEñŸX¡—­°ÙCgpťz‘ˆb`wI„vA|§”‡—hoĕ@E±“iYd¥OĻ¹S|}F@¾oAO²{tfžÜ—¢Fǂ҈W²°BĤh^Wx{@„¬‚­F¸¡„ķn£P|ŸªĴ@^ĠĈæb–Ôc¶l˜Yi…–^Mi˜cĎ°Â[ä€vï¶gv@À“Ĭ·lJ¸sn|¼u~a]’ÆÈtŌºJp’ƒþ£KKf~Š¦UbyäIšĺãn‡Ô¿^­žŵMT–hĠܤko¼Ŏìąǜh`[tŒRd²IJ_œXPrɲ‰l‘‚XžiL§àƒ–¹ŽH˜°Ȧqº®QC—bA†„ŌJ¸ĕÚ³ĺ§ `d¨YjžiZvRĺ±öVKkjGȊĐePОZmļKÀ€‚[ŠŽ`ösìh†ïÎoĬdtKÞ{¬èÒÒBŒÔpIJÇĬJŊ¦±J«ˆY§‹@·pH€µàåVKe›pW†ftsAÅqC·¬ko«pHÆuK@oŸHĆۄķhx“e‘n›S³àǍrqƶRbzy€¸ËАl›¼EºpĤ¼Œx¼½~Ğ’”à@†ÚüdK^ˆmÌSj"],"encodeOffsets":[[110234,38774]]},"properties":{"cp":[108.948024,34.263161],"name":"陕西","childNum":1}},{"id":"620000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@VuUv"],["@@ũ‹EĠtt~nkh`Q‰¦ÅÄÜdw˜Ab×ĠąJˆ¤DüègĺqBqœj°lI¡ĨÒ¤úSHbš‡ŠjΑBŠ°aZˆ¢KJŽ’O[|A£žDx}Nì•HUnrk„ kp€¼Y kMJn[aG‚áÚÏ[½rc†}aQxOgsPMnUs‡nc‹Z…ž–sKúvA›t„Þġ’£®ĀYKdnFwš¢JE°”Latf`¼h¬we|€Æ‡šbj}GA€·~WŽ”—`†¢MC¤tL©IJ°qdf”O‚“bÞĬ¹ttu`^ZúE`Œ[@„Æsîz®¡’C„ƳƜG²“R‘¢R’m”fŽwĸg܃‚ą G@pzJM½mŠhVy¸uÈÔO±¨{LfæU¶ßGĂq\\ª¬‡²I‚¥IʼnÈīoı‹ÓÑAçÑ|«LÝcspīðÍg…të_õ‰\\ĉñLYnĝg’ŸRǡÁiHLlõUĹ²uQjYi§Z_c¨Ÿ´ĹĖÙ·ŋI…ƒaBD˜­R¹ȥr—¯G•ºß„K¨jWk’ɱŠOq›Wij\\a­‹Q\\sg_ĆǛōëp»£lğۀgS•ŶN®À]ˆÓäm™ĹãJaz¥V}‰Le¤L„ýo‘¹IsŋÅÇ^‘Žbz…³tmEÁ´aŠ¹cčecÇN•ĊãÁ\\č¯—dNj•]j†—ZµkÓda•ćå]ğij@ ©O{¤ĸm¢ƒE·®ƒ«|@Xwg]Aģ±¯‡XǁÑdzªc›wQÚŝñsÕ³ÛV_ýƒ˜¥\\ů¥©¾÷w—Ž©WÕÊĩhÿÖÁRo¸V¬âDb¨šhûx–Ê×nj~Zâƒg|šXÁnßYoº§ZÅŘvŒ[„ĭÖʃuďxcVbnUSf…B¯³_Tzº—ΕO©çMÑ~Mˆ³]µ^püµ”ŠÄY~y@X~¤Z³€[Èōl@®Å¼£QKƒ·Di‹¡By‘ÿ‰Q_´D¥hŗyƒ^ŸĭÁZ]cIzý‰ah¹MĪğP‘s{ò‡‹‘²Vw¹t³Ŝˁ[ŽÑ}X\\gsFŸ£sPAgěp×ëfYHāďÖqēŭOÏë“dLü•\\iŒ”t^c®šRʺ¶—¢H°mˆ‘rYŸ£BŸ¹čIoľu¶uI]vģSQ{ƒUŻ”Å}QÂ|̋°ƅ¤ĩŪU ęĄžÌZҞ\\v˜²PĔ»ƢNHƒĂyAmƂwVmž`”]ȏb•”H`‰Ì¢²ILvĜ—H®¤Dlt_„¢JJÄämèÔDëþgºƫ™”aʎÌrêYi~ ÎݤNpÀA¾Ĕ¼b…ð÷’Žˆ‡®‚”üs”zMzÖĖQdȨý†v§Tè|ªH’þa¸|šÐ ƒwKĢx¦ivr^ÿ ¸l öæfƟĴ·PJv}n\\h¹¶v†·À|\\ƁĚN´Ĝ€çèÁz]ġ¤²¨QÒŨTIl‡ªťØ}¼˗ƦvÄùØE‹’«Fï˛Iq”ōŒTvāÜŏ‚íÛߜÛV—j³âwGăÂíNOŠˆŠPìyV³ʼnĖýZso§HіiYw[߆\\X¦¥c]ÔƩÜ·«j‡ÐqvÁ¦m^ċ±R™¦΋ƈťĚgÀ»IïĨʗƮŽ°Ɲ˜ĻþÍAƉſ±tÍEÕÞāNU͗¡\\ſčåÒʻĘm ƭÌŹöʥ’ëQ¤µ­ÇcƕªoIýˆ‰Iɐ_mkl³ă‰Ɠ¦j—¡Yz•Ňi–}Msßõ–īʋ —}ƒÁVmŸ_[n}eı­Uĥ¼‘ª•I{ΧDӜƻėoj‘qYhĹT©oūĶ£]ďxĩ‹ǑMĝ‰q`B´ƃ˺Ч—ç~™²ņj@”¥@đ´ί}ĥtPńǾV¬ufӃÉC‹tÓ̻‰…¹£G³€]ƖƾŎĪŪĘ̖¨ʈĢƂlɘ۪üºňUðǜȢƢż̌ȦǼ‚ĤŊɲĖ­Kq´ï¦—ºĒDzņɾªǀÞĈĂD†½ĄĎÌŗĞrôñnŽœN¼â¾ʄľԆ|DŽŽ֦ज़ȗlj̘̭ɺƅêgV̍ʆĠ·ÌĊv|ýĖÕWĊǎÞ´õ¼cÒÒBĢ͢UĜð͒s¨ňƃLĉÕÝ@ɛƯ÷¿Ľ­ĹeȏijëCȚDŲyê×Ŗyò¯ļcÂßY…tÁƤyAã˾J@ǝrý‹‰@¤…rz¸oP¹ɐÚyᐇHŸĀ[Jw…cVeȴϜ»ÈŽĖ}ƒŰŐèȭǢόĀƪÈŶë;Ñ̆ȤМľĮEŔ—ĹŊũ~ËUă{ŸĻƹɁύȩþĽvĽƓÉ@ē„ĽɲßǐƫʾǗĒpäWÐxnsÀ^ƆwW©¦cÅ¡Ji§vúF¶Ž¨c~c¼īŒeXǚ‹\\đ¾JŽwÀďksãA‹fÕ¦L}wa‚o”Z’‹D½†Ml«]eÒÅaɲáo½FõÛ]ĻÒ¡wYR£¢rvÓ®y®LF‹LzĈ„ôe]gx}•|KK}xklL]c¦£fRtív¦†PĤoH{tK"]],"encodeOffsets":[[[108619,36299]],[[108589,36341]]]},"properties":{"cp":[103.823557,36.058039],"name":"甘肃","childNum":2}},{"id":"630000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@InJm"],["@@CƒÆ½OŃĦsΰ~Ē³¦@@“Ņiš±è}ؘƄ˹A³r_ĞŠǒNĪŒĐw¤^ŬĵªpĺSZg’rpiƼĘԛ¨C|͖J’©Ħ»®VIJ~f\\m `Un„˜~ʌŸ•ĬàöNt•~ňjy–¢Zi˜Ɣ¥ĄŠk´nl`JʇŠJþ©pdƖ®È£¶ìRʦ‘źõƮËnŸʼėæÑƀĎ[‚˜¢VÎĂMÖÝÎF²sƊƀÎBļýƞ—¯ʘƭðħ¼Jh¿ŦęΌƇš¥²Q]Č¥nuÂÏriˆ¸¬ƪÛ^Ó¦d€¥[Wà…x\\ZŽjҕ¨GtpþYŊĕ´€zUO뇉P‰îMĄÁxH´á˜iÜUà›îÜՁĂÛSuŎ‹r“œJð̬EŒ‘FÁú×uÃÎkr“Ē{V}İ«O_ÌËĬ©ŽÓŧSRѱ§Ģ£^ÂyèçěM³Ƃę{[¸¿u…ºµ[gt£¸OƤĿéYŸõ·kĀŸq]juw¥Dĩƍ€õÇPéĽG‘ž©ã‡¤G…uȧþRcÕĕNy“yût“ˆ­‡ø‘†ï»a½ē¿BMoį£ŸÍj}éZËqbʍš“Ƭh¹ìÿÓAçãnIáI`ƒks£CG­ě˜Uy×Cy•…’Ÿ@¶ʡÊBnāzG„ơMē¼±O÷õJËĚăVŸĪũƆ£Œ¯{ËL½Ìzż“„VR|ĠTbuvJvµhĻĖH”Aëáa…­OÇðñęNw‡…œľ·L›mI±íĠĩPÉ×®ÿs—’cB³±JKßĊ«`…ađ»·QAmO’‘Vţéÿ¤¹SQt]]Çx€±¯A@ĉij¢Óļ©•ƒl¶ÅÛr—ŕspãRk~¦ª]Į­´“FR„åd­ČsCqđéFn¿Åƃm’Éx{W©ºƝºįkÕƂƑ¸wWūЩÈFž£\\tÈ¥ÄRÈýÌJ ƒlGr^×äùyÞ³fj”c†€¨£ÂZ|ǓMĝšÏ@ëÜőR‹›ĝ‰Œ÷¡{aïȷPu°ËXÙ{©TmĠ}Y³’­ÞIňµç½©C¡į÷¯B»|St»›]vƒųƒs»”}MÓ ÿʪƟǭA¡fs˜»PY¼c¡»¦c„ċ­¥£~msĉP•–Siƒ^o©A‰Šec‚™PeǵŽkg‚yUi¿h}aH™šĉ^|ᴟ¡HØûÅ«ĉ®]m€¡qĉ¶³ÈyôōLÁst“BŸ®wn±ă¥HSòėš£˜S’ë@לÊăxÇN©™©T±ª£IJ¡fb®ÞbŽb_Ą¥xu¥B—ž{łĝ³«`d˜Ɛt—¤ťiñžÍUuºí`£˜^tƃIJc—·ÛLO‹½Šsç¥Ts{ă\\_»™kϊ±q©čiìĉ|ÍIƒ¥ć¥›€]ª§D{ŝŖÉR_sÿc³Īō›ƿΑ›§p›[ĉ†›c¯bKm›R¥{³„Z†e^ŽŒwx¹dƽŽôIg §Mĕ ƹĴ¿—ǣÜ̓]‹Ý–]snåA{‹eŒƭ`ǻŊĿ\\ijŬű”YÂÿ¬jĖqŽßbŠ¸•L«¸©@ěĀ©ê¶ìÀEH|´bRľž–Ó¶rÀQþ‹vl®Õ‚E˜TzÜdb ˜hw¤{LR„ƒd“c‹b¯‹ÙVgœ‚ƜßzÃô쮍^jUèXΖ|UäÌ»rKŽ\\ŒªN‘¼pZCü†VY††¤ɃRi^rPҒTÖ}|br°qňbĚ°ªiƶGQ¾²„x¦PœmlŜ‘[Ĥ¡ΞsĦŸÔÏâ\\ªÚŒU\\f…¢N²§x|¤§„xĔsZPòʛ²SÐqF`ª„VƒÞŜĶƨVZŒÌL`ˆ¢dŐIqr\\oäõ–F礻Ŷ×h¹]Clـ\\¦ďÌį¬řtTӺƙgQÇÓHţĒ”´ÃbEÄlbʔC”|CˆŮˆk„Ʈ[ʼ¬ňœ´KŮÈΰÌĪ¶ƶlð”ļA†TUvdTŠG†º̼ŠÔ€ŒsÊDԄveOg"]],"encodeOffsets":[[[105308,37219]],[[95370,40081]]]},"properties":{"cp":[101.778916,36.623178],"name":"青海","childNum":2}},{"id":"640000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@KëÀęĞ«OęȿȕŸı]ʼn¡åįÕÔ«Ǵõƪ™ĚQÐZhv K°›öqÀѐS[ÃÖHƖčË‡nL]ûc…Ùß@‚“ĝ‘¾}w»»‹oģF¹œ»kÌÏ·{zPƒ§B­¢íyÅt@ƒ@áš]Yv_ssģ¼i߁”ĻL¾ġsKD£¡N_…“˜X¸}B~Haiˆ™Åf{«x»ge_bs“KF¯¡Ix™mELcÿZ¤­Ģ‘ƒÝœsuBLù•t†ŒYdˆmVtNmtOPhRw~bd…¾qÐ\\âÙH\\bImlNZŸ»loƒŸqlVm–Gā§~QCw¤™{A\\‘PKŸNY‡¯bF‡kC¥’sk‹Šs_Ã\\ă«¢ħkJi¯r›rAhĹûç£CU‡ĕĊ_ԗBixÅُĄnªÑaM~ħpOu¥sîeQ¥¤^dkKwlL~{L~–hw^‚ófćƒKyEŒ­K­zuÔ¡qQ¤xZÑ¢^ļöܾEpž±âbÊÑÆ^fk¬…NC¾‘Œ“YpxbK~¥Že֎ŒäBlt¿Đx½I[ĒǙŒWž‹f»Ĭ}d§dµùEuj¨‚IÆ¢¥dXªƅx¿]mtÏwßRĶŒX¢͎vÆzƂZò®ǢÌʆCrâºMÞzžÆMҔÊÓŊZľ–r°Î®Ȉmª²ĈUªĚøºˆĮ¦ÌĘk„^FłĬhĚiĀĖ¾iİbjÕ"],["@@mfwěwMrŢªv@G‰"]],"encodeOffsets":[[[109366,40242]],[[108600,36303]]]},"properties":{"cp":[106.278179,38.46637],"name":"宁夏","childNum":2}},{"id":"650000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@QØĔ²X¨”~ǘBºjʐßØvK”ƔX¨vĊOžÃƒ·¢i@~c—‡ĝe_«”Eš“}QxgɪëÏÃ@sÅyXoŖ{ô«ŸuX…ê•Îf`œC‚¹ÂÿÐGĮÕĞXŪōŸMźÈƺQèĽôe|¿ƸJR¤ĘEjcUóº¯Ĩ_ŘÁMª÷Ð¥Oéȇ¿ÖğǤǷÂF҇zÉx[]­Ĥĝ‰œ¦EP}ûƥé¿İƷTėƫœŕƅ™ƱB»Đ±’ēO…¦E–•}‘`cȺrĦáŖuҞª«IJ‡πdƺÏØZƴwʄ¤ĖGЙǂZĶƒèH¶}ÚZצʥĪï|ÇĦMŔ»İĝLj‹ì¥Βœba­¯¥ǕǚkĆŵĦɑĺƯxūД̵nơʃĽá½M»›òmqóŘĝč˾ăC…ćāƿÝɽ©DZŅ¹đ¥˜³ðLrÁ®ɱĕģʼnǻ̋ȥơŻǛȡVï¹Ň۩ûkɗġƁ§ʇė̕ĩũƽō^ƕŠUv£ƁQï“Ƶkŏ½ΉÃŭdzLқʻ«ƭ\\lƒ‡ŭD‡“{ʓDkaFÃÄa“³ŤđÔGRÈƚhSӹŚsİ«ĐË[¥ÚDkº^Øg¼ŵ¸£EÍö•€ůʼnT¡c_‡ËKY‹ƧUśĵ„݃U_©rETÏʜ±OñtYwē¨ƒ{£¨uM³x½şL©Ùá[ÓÐĥ Νtģ¢\\‚ś’nkO›w¥±ƒT»ƷFɯàĩÞáB¹Æ…ÑUw„੍žĽw[“mG½Èå~‡Æ÷QyŠěCFmĭZī—ŵVÁ™ƿQƛ—ûXS²‰b½KϽĉS›©ŷXĕŸ{ŽĕK·¥Ɨcqq©f¿]‡ßDõU³h—­gËÇïģÉɋw“k¯í}I·šœbmœÉ–ř›īJɥĻˁ×xo›ɹī‡l•c…¤³Xù]‘™DžA¿w͉ì¥wÇN·ÂËnƾƍdǧđ®Ɲv•Um©³G\\“}µĿ‡QyŹl㓛µEw‰LJQ½yƋBe¶ŋÀů‡ož¥A—˜Éw@•{Gpm¿Aij†ŽKLhˆ³`ñcËtW‚±»ÕS‰ëüÿďD‡u\\wwwù³—V›LŕƒOMËGh£õP¡™er™Ïd{“‡ġWÁ…č|yšg^ğyÁzÙs`—s|ÉåªÇ}m¢Ń¨`x¥’ù^•}ƒÌ¥H«‰Yªƅ”Aйn~ź¯šf¤áÀz„gŠÇDIԝ´AňĀ҄¶ûEYospõD[{ù°]u›Jq•U•|Soċxţ[õÔĥkŋÞŭZ˺óYËüċrw €ÞkrťË¿XGÉbřaDü·Ē÷Aê[Ää€I®BÕИÞ_¢āĠpŠÛÄȉĖġDKwbm‡ÄNô‡ŠfœƫVÉvi†dz—H‘‹QµâFšù­Âœ³¦{YGžƒd¢ĚÜO „€{Ö¦ÞÍÀPŒ^b–ƾŠlŽ[„vt×ĈÍE˨¡Đ~´î¸ùÎh€uè`¸ŸHÕŔVºwĠââWò‡@{œÙNÝ´ə²ȕn{¿¥{l—÷eé^e’ďˆXj©î\\ªÑò˜Üìc\\üqˆÕ[Č¡xoÂċªbØ­Œø|€¶ȴZdÆšońéŒGš\\”¼C°ÌƁn´nxšÊOĨ’Ūƴĸ¢¸òTxÊǪMīИÖŲÃɎOvˆʦƢ~FŽ‡Rěò—¿ġ~åŊœú‰Nšžš¸qŽ’Ę[Ĕ¶ÂćnÒPĒÜvúĀÊbÖ{Äî¸~Ŕünp¤ÂH¾œĄYÒ©ÊfºmԈĘcDoĬMŬ’˜S¤„s²‚”ʘچžȂVŦ –ŽèW°ªB|IJXŔþÈJĦÆæFĚêŠYĂªĂ]øªŖNÞüA€’fɨJ€˜¯ÎrDDšĤ€`€mz\\„§~D¬{vJÂ˜«lµĂb–¤p€ŌŰNĄ¨ĊXW|ų ¿¾ɄĦƐMT”‡òP˜÷fØĶK¢ȝ˔Sô¹òEð­”`Ɩ½ǒÂň×äı–§ĤƝ§C~¡‚hlå‚ǺŦŞkâ’~}ŽFøàIJaĞ‚fƠ¥Ž„Ŕdž˜®U¸ˆźXœv¢aƆúŪtŠųƠjd•ƺŠƺÅìnrh\\ĺ¯äɝĦ]èpĄ¦´LƞĬŠ´ƤǬ˼Ēɸ¤rºǼ²¨zÌPðŀbþ¹ļD¢¹œ\\ĜÑŚŸ¶ZƄ³àjĨoâŠȴLʉȮŒĐ­ĚăŽÀêZǚŐ¤qȂ\\L¢ŌİfÆs|zºeªÙæ§΢{Ā´ƐÚ¬¨Ĵà²łhʺKÞºÖTŠiƢ¾ªì°`öøu®Ê¾ãØ"],"encodeOffsets":[[88824,50096]]},"properties":{"cp":[87.617733,43.792818],"name":"新疆","childNum":1}},{"id":"110000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@ĽOÁ›ûtŷmiÍt_H»Ĩ±d`Š¹­{bw…Yr“³S]§§o¹€qGtm_Sŧ€“oa›‹FLg‘QN_•dV€@Zom_ć\\ߚc±x¯oœRcfe…£’o§ËgToÛJíĔóu…|wP¤™XnO¢ÉˆŦ¯rNÄā¤zâŖÈRpŢZŠœÚ{GŠrFt¦Òx§ø¹RóäV¤XdˆżâºWbwŚ¨Ud®bêņ¾‘jnŎGŃŶŠnzÚSeîĜZczî¾i]͜™QaúÍÔiþĩȨWĢ‹ü|Ėu[qb[swP@ÅğP¿{\\‡¥A¨Ï‘Ѩj¯ŠX\\¯œMK‘pA³[H…īu}}"],"encodeOffsets":[[120023,41045]]},"properties":{"cp":[116.405285,39.904989],"name":"北京","childNum":1}},{"id":"120000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@ŬgX§Ü«E…¶Ḟ“¬O_™ïlÁg“z±AXe™µÄĵ{¶]gitgšIj·›¥îakS€‰¨ÐƎk}ĕ{gB—qGf{¿a†U^fI“ư‹³õ{YƒıëNĿžk©ïËZŏ‘R§òoY×Ógc…ĥs¡bġ«@dekąI[nlPqCnp{ˆō³°`{PNdƗqSÄĻNNâyj]äžÒD ĬH°Æ]~¡HO¾ŒX}ÐxŒgp“gWˆrDGˆŒpù‚Š^L‚ˆrzWxˆZ^¨´T\\|~@I‰zƒ–bĤ‹œjeĊªz£®Ĕvě€L†mV¾Ô_ȔNW~zbĬvG†²ZmDM~”~"],"encodeOffsets":[[120237,41215]]},"properties":{"cp":[117.190182,39.125596],"name":"天津","childNum":1}},{"id":"310000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@ɧư¬EpƸÁxc‡"],["@@©„ªƒ"],["@@”MA‹‘š"],["@@Qp݁E§ÉC¾"],["@@bŝՕÕEȣÚƥêImɇǦèÜĠŒÚžÃƌÃ͎ó"],["@@ǜûȬɋŠŭ™×^‰sYŒɍDŋ‘ŽąñCG²«ªč@h–_p¯A{‡oloY€¬j@IJ`•gQڛhr|ǀ^MIJvtbe´R¯Ô¬¨YŽô¤r]ì†Ƭį"]],"encodeOffsets":[[[124702,32062]],[[124547,32200]],[[124808,31991]],[[124726,32110]],[[124903,32376]],[[124438,32149]]]},"properties":{"cp":[121.472644,31.231706],"name":"上海","childNum":6}},{"id":"500000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@vjG~nGŘŬĶȂƀƾ¹¸ØÎezĆT¸}êЖqHŸðqĖ䒊¥^CƒIj–²p…\\_ æüY|[YxƊæuž°xb®…Űb@~¢NQt°¶‚S栓Ê~rljĔëĚ¢~šuf`‘‚†fa‚ĔJåĊ„nÖ]„jƎćÊ@Š£¾a®£Ű{ŶĕF‹ègLk{Y|¡ĜWƔtƬJÑxq‹±ĢN´‰òK‰™–LÈüD|s`ŋ’ć]ƒÃ‰`đŒMûƱ½~Y°ħ`ƏíW‰½eI‹½{aŸ‘OIrÏ¡ĕŇa†p†µÜƅġ‘œ^ÖÛbÙŽŏml½S‹êqDu[R‹ãË»†ÿw`»y‘¸_ĺę}÷`M¯ċfCVµqʼn÷Z•gg“Œ`d½pDO‡ÎCnœ^uf²ènh¼WtƏxRGg¦…pV„†FI±ŽG^ŒIc´ec‡’G•ĹÞ½sëĬ„h˜xW‚}Kӈe­Xsbk”F¦›L‘ØgTkïƵNï¶}Gy“w\\oñ¡nmĈzjŸ•@™Óc£»Wă¹Ój“_m»ˆ¹·~MvÛaqœ»­‰êœ’\\ÂoVnŽÓØ͙²«‹bq¿efE „€‹Ĝ^Qž~ Évý‡ş¤²Į‰pEİ}zcĺƒL‹½‡š¿gņ›¡ýE¡ya£³t\\¨\\vú»¼§·Ñr_oÒý¥u‚•_n»_ƒ•At©Þűā§IVeëƒY}{VPÀFA¨ąB}q@|Ou—\\Fm‰QF݅Mw˜å}]•€|FmϋCaƒwŒu_p—¯sfÙgY…DHl`{QEfNysBŠ¦zG¸rHe‚„N\\CvEsÐùÜ_·ÖĉsaQ¯€}_U‡†xÃđŠq›NH¬•Äd^ÝŰR¬ã°wećJEž·vÝ·Hgƒ‚éFXjÉê`|yŒpxkAwœWĐpb¥eOsmzwqChóUQl¥F^laf‹anòsr›EvfQdÁUVf—ÎvÜ^efˆtET¬ôA\\œ¢sJŽnQTjP؈xøK|nBz‰„œĞ»LY‚…FDxӄvr“[ehľš•vN”¢o¾NiÂxGp⬐z›bfZo~hGi’]öF|‰|Nb‡tOMn eA±ŠtPT‡LjpYQ|†SH††YĀxinzDJ€Ìg¢và¥Pg‰_–ÇzII‹€II•„£®S¬„Øs쐣ŒN"],["@@ifjN@s"]],"encodeOffsets":[[[109628,30765]],[[111725,31320]]]},"properties":{"cp":[106.504962,29.533155],"name":"重庆","childNum":2}},{"id":"810000","type":"Feature","geometry":{"type":"MultiPolygon","coordinates":[["@@AlBk"],["@@mŽn"],["@@EpFo"],["@@ea¢pl¸Eõ¹‡hj[ƒ]ÔCΖ@lj˜¡uBXŸ…•´‹AI¹…[‹yDUˆ]W`çwZkmc–…M›žp€Åv›}I‹oJlcaƒfёKŽ°ä¬XJmРđhI®æÔtSHn€Eˆ„ÒrÈc"],["@@rMUw‡AS®€e"]],"encodeOffsets":[[[117111,23002]],[[117072,22876]],[[117045,22887]],[[116975,23082]],[[116882,22747]]]},"properties":{"cp":[114.173355,22.320048],"name":"香港","childNum":5}},{"id":"820000","type":"Feature","geometry":{"type":"Polygon","coordinates":["@@kÊd°å§s"],"encodeOffsets":[[116279,22639]]},"properties":{"cp":[113.54909,22.198951],"name":"澳门","childNum":1}}],"UTF8Encoding":true}); +})); diff --git a/webapp/app/containers/Widget/charts/pieOld.ts b/webapp/app/containers/Widget/render/chart/pie.ts similarity index 100% rename from webapp/app/containers/Widget/charts/pieOld.ts rename to webapp/app/containers/Widget/render/chart/pie.ts diff --git a/webapp/app/containers/Widget/charts/radarOld.ts b/webapp/app/containers/Widget/render/chart/radar.ts similarity index 100% rename from webapp/app/containers/Widget/charts/radarOld.ts rename to webapp/app/containers/Widget/render/chart/radar.ts diff --git a/webapp/app/containers/Widget/charts/scatterOld.ts b/webapp/app/containers/Widget/render/chart/scatter.ts similarity index 100% rename from webapp/app/containers/Widget/charts/scatterOld.ts rename to webapp/app/containers/Widget/render/chart/scatter.ts diff --git a/webapp/app/containers/Widget/render/chart/wordCloud.ts b/webapp/app/containers/Widget/render/chart/wordCloud.ts new file mode 100644 index 000000000..53e50eddc --- /dev/null +++ b/webapp/app/containers/Widget/render/chart/wordCloud.ts @@ -0,0 +1,99 @@ +/* + * << + * Davinci + * == + * Copyright (C) 2016 - 2017 EDP + * == + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * >> + */ + +/* + * WordCloud chart options generator + */ + +export default function (dataSource, flatInfo, chartParams) { + const { + title, + gridSize, + sizeRangeX, + sizeRangeY + } = chartParams + + let metricOptions + let gridSizeOption + let sizeRangeOption + let gridOptions + + // series 数据项 + const metricArr = [] + + gridSizeOption = gridSize && { + gridSize + } + + sizeRangeOption = (sizeRangeX || sizeRangeY) && { + sizeRange: [sizeRangeX || 0, sizeRangeY || 0] + } + + const grouped = dataSource.reduce((acc, val) => { + const objName = val[title] + if (acc[objName]) { + acc[objName].value += 1 + } else { + acc[objName] = { + name: objName, + value: 1 + } + } + return acc + }, {}) + + const serieObj = { + type: 'wordCloud', + textStyle: { + normal: { + color: '#509af2' + }, + emphasis: { + shadowBlur: 10, + shadowColor: '#509af2' + } + }, + data: Object.keys(grouped).map((k) => grouped[k]), + rotationStep: 45, + rotationRange: [-90, 90], + ...gridSizeOption, + ...sizeRangeOption + } + + metricArr.push(serieObj) + metricOptions = { + series: metricArr + } + + // grid + gridOptions = { + grid: { + top: 0, + left: 0, + right: 0, + bottom: 0 + } + } + + return { + ...metricOptions, + ...gridOptions + } +} diff --git a/webapp/app/containers/Widget/render/pivot/bar.ts b/webapp/app/containers/Widget/render/pivot/bar.ts new file mode 100644 index 000000000..cc575568d --- /dev/null +++ b/webapp/app/containers/Widget/render/pivot/bar.ts @@ -0,0 +1,29 @@ +/* + * << + * Davinci + * == + * Copyright (C) 2016 - 2017 EDP + * == + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * >> + */ + +export default function (elementSize) { + return { + chartOption: { + type: 'bar', + barWidth: elementSize * .8 + }, + stackOption: true + } +} diff --git a/webapp/app/containers/Widget/charts/index.ts b/webapp/app/containers/Widget/render/pivot/index.ts similarity index 92% rename from webapp/app/containers/Widget/charts/index.ts rename to webapp/app/containers/Widget/render/pivot/index.ts index 42f2a2a6e..66ebdc9a9 100644 --- a/webapp/app/containers/Widget/charts/index.ts +++ b/webapp/app/containers/Widget/render/pivot/index.ts @@ -22,8 +22,8 @@ import line from './line' import bar from './bar' import scatter from './scatter' import pie from './pie' -import radar from './radar' -import { DimetionType, IDrawingData } from '../components/Pivot/Pivot' +import { IDrawingData } from '../../components/Pivot/Pivot' +import { DimetionType } from '../../components/Widget' interface IChartOptions { chartOption: object @@ -55,6 +55,5 @@ export default function (type, drawingData?: IDrawingData): IChartOptions { case 'bar': return bar(drawingData.elementSize) case 'scatter': return scatter(drawingData.sizeRate) case 'pie': return pie() - case 'radar': return radar() } } diff --git a/webapp/app/containers/Widget/render/pivot/line.ts b/webapp/app/containers/Widget/render/pivot/line.ts new file mode 100644 index 000000000..0b44736a6 --- /dev/null +++ b/webapp/app/containers/Widget/render/pivot/line.ts @@ -0,0 +1,27 @@ +/* + * << + * Davinci + * == + * Copyright (C) 2016 - 2017 EDP + * == + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * >> + */ + +export default function () { + return { + chartOption: { + type: 'line' + } + } +} diff --git a/webapp/app/containers/Widget/render/pivot/pie.ts b/webapp/app/containers/Widget/render/pivot/pie.ts new file mode 100644 index 000000000..681eeac3f --- /dev/null +++ b/webapp/app/containers/Widget/render/pivot/pie.ts @@ -0,0 +1,80 @@ +/* + * << + * Davinci + * == + * Copyright (C) 2016 - 2017 EDP + * == + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * >> + */ + +import { DimetionType } from '../components/Widget' + +export default function () { + return { + chartOption: { + type: 'pie' + }, + calcPieCenterAndRadius ( + dimetionAxis: DimetionType, + containerWidth: number, + containerHeight: number, + elementSize: number, + unitMetricLengthArr: number[], + horizontalRecordCountOfCol: number, + verticalRecordCountOfRow: number, + lineRecordSum: number, + lineCount: number, + unitCount: number, + metricCount: number, + recordCount: number, + lineIndex: number, + unitIndex: number, + metricIndex: number, + recordIndex: number + ): { center: string[], radius: string[]} { + let center + let radius + if (dimetionAxis === 'col') { + const verticalPer = 100 / lineCount / metricCount + const horizontalPer = 100 / horizontalRecordCountOfCol + center = [ + `${horizontalPer * (recordIndex + lineRecordSum + 1) - horizontalPer / 2}%`, + `${verticalPer * (metricIndex + metricCount * lineIndex + 1) - verticalPer / 2}%` + ] + if (containerWidth > containerHeight) { + const rate = Math.min(elementSize / unitMetricLengthArr[0], 1) + radius = ['0%', `${100 / metricCount / lineCount * rate * .75}%`] + } else { + const rate = Math.min(unitMetricLengthArr[0] / elementSize, 1) + radius = ['0%', `${100 / horizontalRecordCountOfCol * rate * .75}%`] + } + } else { + const verticalPer = 100 / verticalRecordCountOfRow + const horizontalPer = 100 / unitCount / metricCount + center = [ + `${horizontalPer * (metricIndex + metricCount * unitIndex + 1) - horizontalPer / 2}%`, + `${verticalPer * (verticalRecordCountOfRow - recordIndex - lineIndex * recordCount) - verticalPer / 2}%` + ] + if (containerWidth > containerHeight) { + const rate = Math.min(unitMetricLengthArr[1] / elementSize, 1) + radius = ['0%', `${100 / verticalRecordCountOfRow * rate * .75}%`] + } else { + const rate = Math.min(elementSize / unitMetricLengthArr[1], 1) + radius = ['0%', `${100 / metricCount / unitCount * rate * .75}%`] + } + } + return { center, radius } + } + } +} diff --git a/webapp/app/containers/Widget/render/pivot/scatter.ts b/webapp/app/containers/Widget/render/pivot/scatter.ts new file mode 100644 index 000000000..66a91a2c0 --- /dev/null +++ b/webapp/app/containers/Widget/render/pivot/scatter.ts @@ -0,0 +1,30 @@ +/* + * << + * Davinci + * == + * Copyright (C) 2016 - 2017 EDP + * == + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * >> + */ + +export default function (sizeRate: {[key: string]: number}) { + return { + chartOption: { + type: 'scatter' + }, + getSymbolSize (metricName, size) { + return sizeRate ? Math.ceil(size / sizeRate[metricName]) : size + } + } +} diff --git a/webapp/app/globalConstants.ts b/webapp/app/globalConstants.ts index d772546c9..a3bd65456 100644 --- a/webapp/app/globalConstants.ts +++ b/webapp/app/globalConstants.ts @@ -77,6 +77,28 @@ export const PIVOT_CHART_LINE_STYLES = [ { name: '点', value: 'dotted'} ] export const PIVOT_CHART_FONT_SIZES = [10, 12, 13, 14, 15, 16, 18, 20, 24, 28, 32, 36, 40, 48, 56, 64] +export const CHART_LABEL_POSITIONS = [ + { name: '上', value: 'top' }, + { name: '左', value: 'left' }, + { name: '右', value: 'right' }, + { name: '下', value: 'bottom' }, + { name: '内', value: 'inside' }, + { name: '内左', value: 'insideLeft' }, + { name: '内右', value: 'insideRight' }, + { name: '内上', value: 'insideTop' }, + { name: '内下', value: 'insideBottom' }, + { name: '内左上', value: 'insideTopLeft' }, + { name: '内左下', value: 'insideBottomLeft' }, + { name: '内右上', value: 'insideTopRight' }, + { name: '内右下', value: 'insideBottomRight' } +] + +export const CHART_LEGEND_POSITIONS = [ + { name: '右', value: 'right' }, + { name: '上', value: 'top' }, + { name: '下', value: 'bottom' }, + { name: '左', value: 'left' } +] export const SQL_STRING_TYPES = [ 'CHAR', 'VARCHAR', 'TINYTEXT', 'TEXT', 'MEDIUMTEXT', 'LONGTEXT', diff --git a/webapp/share/containers/Dashboard/index.tsx b/webapp/share/containers/Dashboard/index.tsx index b948087a7..d688876e0 100644 --- a/webapp/share/containers/Dashboard/index.tsx +++ b/webapp/share/containers/Dashboard/index.tsx @@ -39,7 +39,7 @@ import { Responsive, WidthProvider } from '../../../libs/react-grid-layout' import { IFilterChangeParam } from '../../../app/components/Filters' import DashboardFilterPanel from 'containers/Dashboard/components/DashboardFilterPanel' -import { RenderType, IPivotProps } from '../../../app/containers/Widget/components/Pivot/Pivot' +import { RenderType, IWidgetProps } from '../../../app/containers/Widget/components/Widget' const Row = require('antd/lib/row') const Col = require('antd/lib/col') @@ -76,7 +76,6 @@ import { const styles = require('../../../app/containers/Dashboard/Dashboard.less') const utilStyles = require('../../../app/assets/less/util.less') -import widgetlibs from '../../../app/assets/json/widgetlib' import Login from '../../components/Login/index' const ResponsiveReactGridLayout = WidthProvider(Responsive) @@ -126,7 +125,7 @@ interface IDashboardProps { } ) => void, onSetIndividualDashboard: (id, shareInfo) => void, - onLoadWidgetCsv: (itemId: number, pivotProps: IPivotProps, dataToken: string) => void, + onLoadWidgetCsv: (itemId: number, widgetProps: IWidgetProps, dataToken: string) => void, onLoadCascadeSourceFromDashboard: (controlId, viewId, dataToken, column, parents) => void onResizeAllDashboardItem: () => void } @@ -247,7 +246,7 @@ export class Share extends React.Component { } = this.props const widget = widgets.find((w) => w.id === widgetId) - const widgetConfig: IPivotProps = JSON.parse(widget.config) + const widgetConfig: IWidgetProps = JSON.parse(widget.config) const { cols, rows, metrics, filters, color, label, size, xAxis, tip, orders, cache, expired } = widgetConfig const cachedQueryParams = currentItemsInfo[itemId].queryParams @@ -345,7 +344,7 @@ export class Share extends React.Component { }, 500) } - private downloadCsv = (itemId: number, pivotProps: IPivotProps, shareInfo: string) => { + private downloadCsv = (itemId: number, widgetProps: IWidgetProps, shareInfo: string) => { const { currentItemsInfo, onLoadWidgetCsv @@ -353,7 +352,7 @@ export class Share extends React.Component { // const { filters, params } = currentItemsInfo[itemId].queryParams - onLoadWidgetCsv(itemId, pivotProps, shareInfo) + onLoadWidgetCsv(itemId, widgetProps, shareInfo) } private visibleFullScreen = (currentChartData) => { @@ -627,7 +626,7 @@ export function mapDispatchToProps (dispatch) { onLoadWidget: (token, resolve, reject) => dispatch(getWidget(token, resolve, reject)), onLoadResultset: (renderType, itemid, dataToken, params) => dispatch(getResultset(renderType, itemid, dataToken, params)), onSetIndividualDashboard: (widgetId, token) => dispatch(setIndividualDashboard(widgetId, token)), - onLoadWidgetCsv: (itemId, pivotProps, dataToken) => dispatch(loadWidgetCsv(itemId, pivotProps, dataToken)), + onLoadWidgetCsv: (itemId, widgetProps, dataToken) => dispatch(loadWidgetCsv(itemId, widgetProps, dataToken)), onLoadCascadeSourceFromDashboard: (controlId, viewId, dataToken, column, parents) => dispatch(loadCascadeSourceFromDashboard(controlId, viewId, dataToken, column, parents)), onResizeAllDashboardItem: () => dispatch(resizeAllDashboardItem()) } diff --git a/webapp/share/containers/Display/index.tsx b/webapp/share/containers/Display/index.tsx index b0d5bd347..c8aa0514a 100644 --- a/webapp/share/containers/Display/index.tsx +++ b/webapp/share/containers/Display/index.tsx @@ -38,7 +38,7 @@ import { DEFAULT_PRIMARY_COLOR } from '../../../app/globalConstants' import Login from '../../components/Login/index' import LayerItem from '../../../app/containers/Display/components/LayerItem' -import { RenderType, IPivotProps } from '../../../app/containers/Widget/components/Pivot/Pivot' +import { RenderType, IWidgetProps } from '../../../app/containers/Widget/components/Widget' import { decodeMetricName } from '../../../app/containers/Widget/components/util' const styles = require('../../../app/containers/Display/Display.less') @@ -163,7 +163,7 @@ export class Display extends React.Component { } = this.props const widget = widgets.find((w) => w.id === widgetId) - const widgetConfig: IPivotProps = JSON.parse(widget.config) + const widgetConfig: IWidgetProps = JSON.parse(widget.config) const { cols, rows, metrics, filters, color, label, size, xAxis, tip, orders, cache, expired } = widgetConfig const cachedQueryParams = layersInfo[itemId].queryParams From d9d84e03c73bd6549a8778216cfd00966504b85d Mon Sep 17 00:00:00 2001 From: andyfong Date: Wed, 10 Oct 2018 10:44:31 +0800 Subject: [PATCH 22/45] fix(Display): fix `pivotProps` to `widgetProps` --- webapp/app/containers/Display/components/LayerItem.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/app/containers/Display/components/LayerItem.tsx b/webapp/app/containers/Display/components/LayerItem.tsx index 2abe8584f..baa7b9b34 100644 --- a/webapp/app/containers/Display/components/LayerItem.tsx +++ b/webapp/app/containers/Display/components/LayerItem.tsx @@ -267,7 +267,7 @@ export class LayerItem extends React.PureComponent {this.wrapLayerTooltip( ( Date: Wed, 10 Oct 2018 16:47:50 +0800 Subject: [PATCH 23/45] =?UTF-8?q?Dashboard=20=E6=94=B9=E6=88=90=E7=8B=AC?= =?UTF-8?q?=E7=AB=8B=E8=B7=AF=E7=94=B1=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webapp/app/components/EditorHeader/index.tsx | 27 +++++++--- webapp/app/containers/Bizlogic/Bizlogic.tsx | 5 +- .../app/containers/Dashboard/Dashboard.less | 35 ++---------- webapp/app/containers/Dashboard/Grid.tsx | 20 +++++-- webapp/app/containers/Dashboard/index.tsx | 54 ++++++++++++++----- webapp/app/containers/Dashboard/sagas.ts | 4 +- webapp/app/routes.ts | 24 ++++----- 7 files changed, 100 insertions(+), 69 deletions(-) diff --git a/webapp/app/components/EditorHeader/index.tsx b/webapp/app/components/EditorHeader/index.tsx index 9766467f1..b23d27144 100644 --- a/webapp/app/components/EditorHeader/index.tsx +++ b/webapp/app/components/EditorHeader/index.tsx @@ -2,8 +2,10 @@ import * as React from 'react' const Icon = require('antd/lib/icon') const Button = require('antd/lib/button') const styles = require('./EditorHeader.less') +const utilStyles = require('../../assets/less/util.less') interface IEditorHeaderProps { + currentType: string name: string description: string placeholder?: { @@ -11,15 +13,16 @@ interface IEditorHeaderProps { description: string } className: string - onNameChange: (e: React.ChangeEvent) => void - onDescriptionChange: (e: React.ChangeEvent) => void - onSave: () => void + onNameChange?: (e: React.ChangeEvent) => void + onDescriptionChange?: (e: React.ChangeEvent) => void + onSave?: () => void onCancel: () => void loading?: boolean } export function EditorHeader (props: IEditorHeaderProps) { const { + currentType, name, description, className, @@ -40,15 +43,27 @@ export function EditorHeader (props: IEditorHeaderProps) {
    - + {name || placeholder.name}
    - + {description || placeholder.description}
    -
    +
    { 位置 - + - {/* + @@ -93,19 +108,19 @@ export class LegendSection extends React.PureComponent - */} + ) diff --git a/webapp/app/containers/Widget/components/Workbench/OperatingPanel.tsx b/webapp/app/containers/Widget/components/Workbench/OperatingPanel.tsx index 11ce0b0fd..6c1bfe87f 100644 --- a/webapp/app/containers/Widget/components/Workbench/OperatingPanel.tsx +++ b/webapp/app/containers/Widget/components/Workbench/OperatingPanel.tsx @@ -303,8 +303,9 @@ export class OperatingPanel extends React.Component { const { selectedView, onLoadDistinctValue } = this.props - const { commonParams } = this.state + const { mode, commonParams } = this.state const { metrics } = commonParams + switch (name) { case 'filters': if (cachedItem.visualType !== 'number' && cachedItem.visualType !== 'date') { @@ -336,13 +337,17 @@ export class OperatingPanel extends React.Component m.chart.id === getScatter().id) - }) + if (mode === 'pivot') { + this.setState({ + modalCachedData: cachedItem, + modalCallback: resolve, + modalDataFrom: 'size', + actOnModalVisible: true, + actOnModalList: metrics.items.filter((m) => m.chart.id === getScatter().id) + }) + } else { + resolve(true) + } break default: resolve(true) @@ -965,7 +970,9 @@ export class OperatingPanel extends React.Component item.chart.id !== pivot.id).length) { + if (mode === 'pivot' + && values.length + && metrics.items.every((item) => item.chart.id === pivot.id)) { categories.push({ name: '指标名称', type: 'category', @@ -1102,13 +1109,11 @@ export class OperatingPanel extends React.Component} {xAxis && } {yAxis && } @@ -1317,6 +1322,7 @@ export class OperatingPanel extends React.Component d[cols[0]] || '') @@ -142,7 +107,7 @@ export default function (chartProps: IChartProps) { itemStyle: { normal: { // opacity: interactIndex === undefined ? 1 : 0.25 - color: color.items[0].config.values[k.split(',')[0]] + color: color.items[0].config.values[k] } }, ...labelOption @@ -192,45 +157,12 @@ export default function (chartProps: IChartProps) { } }) + const seriesNames = series.map((s) => s.name) + let legendOption if (color.items.length || metrics.length > 1) { - let orient - let positions - - switch (legendPosition) { - case 'top': - orient = { orient: 'horizontal' } - positions = { top: 8, left: 8, right: 8, height: 32 } - break - case 'bottom': - orient = { orient: 'horizontal' } - positions = { bottom: 8, left: 8, right: 8, height: 32 } - break - case 'left': - orient = { orient: 'vertical' } - positions = { left: 8, top: 30, bottom: 30, width: 96 } - break - default: - orient = { orient: 'vertical' } - positions = { right: 8, top: 30, bottom: 30, width: 96 } - break - } - - const selected = { - selected: series.reduce((obj, s) => ({ - ...obj, - [s.name]: selectAll - }), {}) - } - legendOption = { - legend: { - data: series.map((s) => s.name), - type: 'scroll', - ...orient, - ...positions, - ...selected - } + legend: getLegendOption(legend, seriesNames) } } @@ -254,85 +186,28 @@ export default function (chartProps: IChartProps) { // }] // } + const xAxisSplitLineConfig = { + showLine: showVerticalLine, + lineColor: verticalLineColor, + lineSize: verticalLineSize, + lineStyle: verticalLineStyle + } + + const yAxisSplitLineConfig = { + showLine: showHorizontalLine, + lineColor: horizontalLineColor, + lineSize: horizontalLineSize, + lineStyle: horizontalLineStyle + } + return { - xAxis: { - data: xAxisData, - axisLabel: { - show: showLabelX, - color: labelColorX, - fontFamily: labelFontFamilyX, - fontSize: labelFontSizeX - }, - axisLine: { - show: showLineX, - lineStyle: { - color: lineColorX, - width: lineSizeX, - type: lineStyleX - } - }, - axisTick: { - show: showLineX, - lineStyle: { - color: lineColorX - } - }, - splitLine: { - show: showVerticalLine, - lineStyle: { - color: verticalLineColor, - width: verticalLineSize, - type: verticalLineStyle - } - } - }, - yAxis: { - type: 'value', - axisLabel: { - show: showLabelY, - color: labelColorY, - fontFamily: labelFontFamilyY, - fontSize: labelFontSizeY, - formatter: metricAxisLabelFormatter - }, - axisLine: { - show: showLineY, - lineStyle: { - color: lineColorY, - width: lineSizeY, - type: lineStyleY - } - }, - axisTick: { - show: showLineY, - lineStyle: { - color: lineColorY - } - }, - ...showTitleAndUnit && { - name: metrics.map((m) => decodeMetricName(m.name)).join(` / `), - nameLocation: 'middle', - nameGap: 45, - nameTextStyle: { - color: titleColor, - fontFamily: titleFontFamily, - fontSize: titleFontSize - } - }, - splitLine: { - show: showHorizontalLine, - lineStyle: { - color: horizontalLineColor, - width: horizontalLineSize, - type: horizontalLineStyle - } - } - }, + xAxis: getDimetionAxisOption(xAxis, xAxisSplitLineConfig, xAxisData), + yAxis: getMetricAxisOption(yAxis, yAxisSplitLineConfig, metrics.map((m) => decodeMetricName(m.name)).join(` / `)), + series, tooltip: { formatter: getChartTooltipLabel(seriesData, { cols, metrics, color, tip }) }, - series, ...legendOption, - grid: getGridPositions(legendPosition, series.map((s) => s.name)) + grid: getGridPositions(legend, seriesNames) } } diff --git a/webapp/app/containers/Widget/render/chart/index.ts b/webapp/app/containers/Widget/render/chart/index.ts index aec983dfa..b9bc85110 100644 --- a/webapp/app/containers/Widget/render/chart/index.ts +++ b/webapp/app/containers/Widget/render/chart/index.ts @@ -35,11 +35,11 @@ export default function (type, chartProps: IChartProps): EChartOption { case 'line': return line(chartProps) case 'bar': return bar(chartProps) case 'scatter': return scatter(chartProps) - case 'pie': return pie(chartProps) - case 'area': return area(chartProps) - case 'funnel': return funnel(chartProps) - case 'map': return map(chartProps) - case 'radar': return radar(chartProps) - case 'wordCloud': return wordCloud(chartProps) + // case 'pie': return pie(chartProps) + // case 'area': return area(chartProps) + // case 'funnel': return funnel(chartProps) + // case 'map': return map(chartProps) + // case 'radar': return radar(chartProps) + // case 'wordCloud': return wordCloud(chartProps) } } diff --git a/webapp/app/containers/Widget/render/chart/line.ts b/webapp/app/containers/Widget/render/chart/line.ts index 2a4f4b4e8..1fd0dcff2 100644 --- a/webapp/app/containers/Widget/render/chart/line.ts +++ b/webapp/app/containers/Widget/render/chart/line.ts @@ -19,8 +19,20 @@ */ import { IChartProps } from '../../components/Chart' -import { metricAxisLabelFormatter, decodeMetricName, getChartTooltipLabel, getAggregatorLocale, getTextWidth } from '../../components/util' -import { CHART_LEGEND_POSITIONS } from '../../../../globalConstants' +import { + decodeMetricName, + getChartTooltipLabel, + getAggregatorLocale +} from '../../components/util' +import { + getDimetionAxisOption, + getMetricAxisOption, + getLabelOption, + getLegendOption, + getGridPositions, + makeGrouped, + distinctXaxis +} from './util' export default function (chartProps: IChartProps) { const { @@ -34,78 +46,31 @@ export default function (chartProps: IChartProps) { const { spec, - label, - legend, xAxis, yAxis, - splitLine + splitLine, + label, + legend } = chartStyles const { - smooth, - step - } = spec - - const { - showLine: showLineX, - lineStyle: lineStyleX, - lineSize: lineSizeX, - lineColor: lineColorX, - showLabel: showLabelX, - labelFontFamily: labelFontFamilyX, - labelFontSize: labelFontSizeX, - labelColor: labelColorX - } = xAxis - - const { - showLine: showLineY, - lineStyle: lineStyleY, - lineSize: lineSizeY, - lineColor: lineColorY, - showLabel: showLabelY, - labelFontFamily: labelFontFamilyY, - labelFontSize: labelFontSizeY, - labelColor: labelColorY, - showTitleAndUnit, - titleFontFamily, - titleFontSize, - titleColor - } = yAxis - - const { - showHorizontalLine, - horizontalLineStyle, - horizontalLineSize, - horizontalLineColor, showVerticalLine, - verticalLineStyle, + verticalLineColor, verticalLineSize, - verticalLineColor + verticalLineStyle, + showHorizontalLine, + horizontalLineColor, + horizontalLineSize, + horizontalLineStyle } = splitLine const { - showLabel, - labelPosition, - labelFontFamily, - labelFontSize, - labelColor - } = label - - const { - legendPosition, - selectAll - } = legend + smooth, + step + } = spec const labelOption = { - label: { - normal: { - show: showLabel, - position: labelPosition, - color: labelColor, - fontFamily: labelFontFamily, - fontSize: labelFontSize - } - } + label: getLabelOption(label) } let xAxisData = data.map((d) => d[cols[0]] || '') @@ -146,7 +111,7 @@ export default function (chartProps: IChartProps) { itemStyle: { normal: { // opacity: interactIndex === undefined ? 1 : 0.25 - color: color.items[0].config.values[k.split(',')[0]] + color: color.items[0].config.values[k] } }, smooth, @@ -200,45 +165,12 @@ export default function (chartProps: IChartProps) { } }) + const seriesNames = series.map((s) => s.name) + let legendOption if (color.items.length || metrics.length > 1) { - let orient - let positions - - switch (legendPosition) { - case 'top': - orient = { orient: 'horizontal' } - positions = { top: 8, left: 8, right: 8, height: 32 } - break - case 'bottom': - orient = { orient: 'horizontal' } - positions = { bottom: 8, left: 8, right: 8, height: 32 } - break - case 'left': - orient = { orient: 'vertical' } - positions = { left: 8, top: 30, bottom: 30, width: 96 } - break - default: - orient = { orient: 'vertical' } - positions = { right: 8, top: 30, bottom: 30, width: 96 } - break - } - - const selected = { - selected: series.reduce((obj, s) => ({ - ...obj, - [s.name]: selectAll - }), {}) - } - legendOption = { - legend: { - data: series.map((s) => s.name), - type: 'scroll', - ...orient, - ...positions, - ...selected - } + legend: getLegendOption(legend, seriesNames) } } @@ -262,149 +194,28 @@ export default function (chartProps: IChartProps) { // }] // } + const xAxisSplitLineConfig = { + showLine: showVerticalLine, + lineColor: verticalLineColor, + lineSize: verticalLineSize, + lineStyle: verticalLineStyle + } + + const yAxisSplitLineConfig = { + showLine: showHorizontalLine, + lineColor: horizontalLineColor, + lineSize: horizontalLineSize, + lineStyle: horizontalLineStyle + } + return { - xAxis: { - data: xAxisData, - axisLabel: { - show: showLabelX, - color: labelColorX, - fontFamily: labelFontFamilyX, - fontSize: labelFontSizeX - }, - axisLine: { - show: showLineX, - lineStyle: { - color: lineColorX, - width: lineSizeX, - type: lineStyleX - } - }, - axisTick: { - show: showLineX, - lineStyle: { - color: lineColorX - } - }, - splitLine: { - show: showVerticalLine, - lineStyle: { - color: verticalLineColor, - width: verticalLineSize, - type: verticalLineStyle - } - } - }, - yAxis: { - type: 'value', - axisLabel: { - show: showLabelY, - color: labelColorY, - fontFamily: labelFontFamilyY, - fontSize: labelFontSizeY, - formatter: metricAxisLabelFormatter - }, - axisLine: { - show: showLineY, - lineStyle: { - color: lineColorY, - width: lineSizeY, - type: lineStyleY - } - }, - axisTick: { - show: showLineY, - lineStyle: { - color: lineColorY - } - }, - ...showTitleAndUnit && { - name: metrics.map((m) => decodeMetricName(m.name)).join(` / `), - nameLocation: 'middle', - nameGap: 45, - nameTextStyle: { - color: titleColor, - fontFamily: titleFontFamily, - fontSize: titleFontSize - } - }, - splitLine: { - show: showHorizontalLine, - lineStyle: { - color: horizontalLineColor, - width: horizontalLineSize, - type: horizontalLineStyle - } - } - }, + xAxis: getDimetionAxisOption(xAxis, xAxisSplitLineConfig, xAxisData), + yAxis: getMetricAxisOption(yAxis, yAxisSplitLineConfig, metrics.map((m) => decodeMetricName(m.name)).join(` / `)), + series, tooltip: { formatter: getChartTooltipLabel(seriesData, { cols, metrics, color, tip }) }, - series, ...legendOption, - grid: getGridPositions(legendPosition, series.map((s) => s.name)) - } -} - -export function makeGrouped (data, groupColumns, xAxisColumn, metrics, xAxisData) { - const grouped = {} - - data.forEach((d) => { - const groupingKey = groupColumns.map((col) => d[col]).join(' ') - const colKey = d[xAxisColumn] - if (!grouped[groupingKey]) { - grouped[groupingKey] = {} - } - if (!grouped[groupingKey][colKey]) { - grouped[groupingKey][colKey] = [] - } - grouped[groupingKey][colKey].push(d) - }) - - Object.keys(grouped).map((groupingKey) => { - const currentGroupValues = grouped[groupingKey] - - grouped[groupingKey] = xAxisData.map((xd) => { - if (currentGroupValues[xd]) { - return currentGroupValues[xd][0] - } else { - return metrics.reduce((obj, m) => ({ ...obj, [`${m.agg}(${decodeMetricName(m.name)})`]: 0 }), {}) - } - }) - }) - - return grouped -} - -export function distinctXaxis (data, xAxisColumn) { - return xAxisColumn - ? Object.keys(data.reduce((distinct, ds) => { - if (!distinct[ds[xAxisColumn]]) { - distinct[ds[xAxisColumn]] = true - } - return distinct - }, {})) - : [] -} - -export function getGridPositions (legendPosition, seriesNames) { - return CHART_LEGEND_POSITIONS.reduce((grid, pos) => { - const val = pos.value - grid[val] = getGridBase(val) + ( - legendPosition === val - ? ['top', 'bottom'].includes(val) - ? 48 - : 48 + Math.max(...seriesNames.map((s) => getTextWidth(s))) - : 0 - ) - return grid - }, {}) -} - -export function getGridBase (pos) { - switch (pos) { - case 'top': return 30 - case 'left': return 64 - case 'bottom': return 50 - default: return 0 + grid: getGridPositions(legend, seriesNames) } } diff --git a/webapp/app/containers/Widget/render/chart/scatter.ts b/webapp/app/containers/Widget/render/chart/scatter.ts index 00176fc7a..5ca54804a 100644 --- a/webapp/app/containers/Widget/render/chart/scatter.ts +++ b/webapp/app/containers/Widget/render/chart/scatter.ts @@ -18,298 +18,208 @@ * >> */ -/* - * Scatter chart options generator - */ - -export default function (dataSource, flatInfo, chartParams) { - const hasGroups = flatInfo.groups +import { IChartProps } from '../../components/Chart' +import { + decodeMetricName, + getChartTooltipLabel, + getSizeValue, + getSizeRate +} from '../../components/util' +import { + getMetricAxisOption, + getLabelOption, + getLegendOption, + getGridPositions, + getSymbolSize +} from './util' +import { PIVOT_DEFAULT_SCATTER_SIZE } from '../../../../globalConstants' + +export default function (chartProps: IChartProps) { + const { + data, + cols, + metrics, + chartStyles, + color, + tip, + size + } = chartProps const { - groups, + spec, xAxis, yAxis, - xAxisInterval, - xAxisRotate, - dataZoomThreshold, - size, - label, - showLabel, - value, - shadow, - hasLegend, - legendSelected, - legendPosition, - toolbox, - splitLineX, - splitLineY, - splitLineStyle, - splitLineWidth, - top, - bottom, - left, - right, - suffixYAxis - } = chartParams + splitLine, + label: labelStyleConfig, + legend + } = chartStyles - let grouped - let metricOptions - let xAxisOptions - let yAxisOptions - let sizeOptions - let labelOptions - let shadowOptions - let legendOptions - let toolboxOptions - let gridOptions - let dataZoomOptions - let suffixYAxisOptions - - // series 数据项 - const metricArr = [] - - // 数据分组 - if (hasGroups && groups) { - grouped = makeGrouped(dataSource, [].concat(groups).filter((i) => !!i)) + const { + showVerticalLine, + verticalLineColor, + verticalLineSize, + verticalLineStyle, + showHorizontalLine, + horizontalLineColor, + horizontalLineSize, + horizontalLineStyle + } = splitLine + + const labelOption = { + label: getLabelOption(labelStyleConfig, true, { + formatter (param) { + return param.data.value[2] + } + }) } - sizeOptions = size && { - symbolSize: (data) => { - return data[3] / size - } - } - shadowOptions = shadow && shadow.length && { - itemStyle: { - normal: { - shadowBlur: 10, - shadowColor: 'rgba(0, 0, 0, 0.5)', - shadowOffsetY: 5 - } - } + let sizeRate = 0 + let sizeItemName = '' + if (size.items.length) { + const sizeItem = size.items[0] + sizeItemName = `${sizeItem.agg}(${decodeMetricName(sizeItem.name)})` + const sizeValues = data.map((d) => d[sizeItemName]) + sizeRate = getSizeRate(Math.min(...sizeValues), Math.max(...sizeValues)) } - if (label || showLabel && showLabel.length) { - let normal - let emphasis + const series = [] + const seriesData = [] - if (label) { - emphasis = { - emphasis: { - show: true, - opacity: 0.8, - position: 'top', - formatter: (param) => { - return param.data[2] - } + if (cols.length || color.items.length) { + const groupColumns = color.items.map((c) => c.name).concat(cols) + .reduce((distinctColumns, col) => { + if (!distinctColumns.includes(col)) { + distinctColumns.push(col) } + return distinctColumns + }, []) + const grouped = data.reduce((obj, val) => { + const groupingKey = groupColumns + .reduce((keyArr, col) => keyArr.concat(val[col]), []) + .join(String.fromCharCode(0)) + if (!obj[groupingKey]) { + obj[groupingKey] = [] } - } - - if (showLabel && showLabel.length) { - normal = { - normal: { - show: true, - opacity: 0.8, - position: 'top', - formatter: (param) => { - return param.data[2] + obj[groupingKey].push(val) + return obj + }, {}) + + const labelItemName = color.items.length + ? color.items[0].name + : cols[0] + + Object.entries(grouped).forEach(([key, value]) => { + series.push({ + name: key.replace(String.fromCharCode(0), ' '), + type: 'scatter', + data: value.map((v) => { + const [x, y] = metrics + const currentSize = size.items.length ? v[sizeItemName] : PIVOT_DEFAULT_SCATTER_SIZE + const sizeValue = getSizeValue(size.value['all']) + return { + value: [ + v[`${x.agg}(${decodeMetricName(x.name)})`], + v[`${y.agg}(${decodeMetricName(y.name)})`], + v[labelItemName], + currentSize + ], + symbolSize: size.items.length + ? getSymbolSize(sizeRate, currentSize) * sizeValue + : currentSize * sizeValue } - } - } - } - - labelOptions = { - label: { - ...normal, - ...emphasis - } - } - } - - if (hasGroups && groups) { - Object - .keys(grouped) - .forEach((k) => { - const serieObj = { - name: k, - type: 'scatter', - data: grouped[k].map((g) => [g[xAxis], g[yAxis], g[label], g[value]]), - ...sizeOptions, - ...labelOptions, - ...shadowOptions - } - metricArr.push(serieObj) + }), + itemStyle: { + normal: { + color: color.items.length + ? color.items[0].config.values[key.split(String.fromCharCode(0))[0]] + : color.value['all'] + } + }, + ...labelOption }) + seriesData.push(value) + }) } else { - const serieObj = { - name: '数据', + series.push({ + name: 'single', type: 'scatter', - data: dataSource.map((g) => [g[xAxis], g[yAxis], g[label], g[value]]), - ...sizeOptions, - ...labelOptions, - ...shadowOptions - } - metricArr.push(serieObj) - } - - metricOptions = { - series: metricArr - } - - // x轴数据 - xAxisOptions = { - xAxis: { - type: 'value', - axisLabel: { - interval: xAxisInterval, - rotate: xAxisRotate - }, - splitLine: { - show: splitLineX && splitLineX.length, - lineStyle: { - width: splitLineWidth, - type: splitLineStyle + data: data.map((d) => { + const [x, y] = metrics + const currentSize = size.items.length ? d[sizeItemName] : PIVOT_DEFAULT_SCATTER_SIZE + const sizeValue = getSizeValue(size.value['all']) + return { + value: [ + d[`${x.agg}(${decodeMetricName(x.name)})`], + d[`${y.agg}(${decodeMetricName(y.name)})`], + '', + currentSize + ], + symbolSize: size.items.length + ? getSymbolSize(sizeRate, currentSize) * sizeValue + : currentSize * sizeValue } - } - } - } - suffixYAxisOptions = suffixYAxis && suffixYAxis.length ? {axisLabel: { - formatter: `{value} ${suffixYAxis}` - }} : null - yAxisOptions = { - yAxis: { - type: 'value', - scale: true, - splitLine: { - show: splitLineY && splitLineY.length, - lineStyle: { - width: splitLineWidth, - type: splitLineStyle + }), + itemStyle: { + normal: { + color: color.value['all'] } }, - ...suffixYAxisOptions - } + ...labelOption + }) + seriesData.push(data) } - // legend - let adjustedBottom = 0 - let adjustedRight = 0 - - if (hasLegend && hasLegend.length) { - let orient - let positions - - switch (legendPosition) { - case 'right': - orient = { orient: 'vertical' } - positions = { right: 8, top: 40, bottom: 16 } - adjustedRight = 108 - break - case 'bottom': - orient = { orient: 'horizontal' } - positions = { bottom: 16, left: 8, right: 8 } - adjustedBottom = 72 - break - default: - orient = { orient: 'horizontal' } - positions = { top: 3, left: 8, right: 120 } - break - } - - const selected = legendSelected === 'unselectAll' - ? { - selected: metricArr.reduce((obj, m) => ({ ...obj, [m.name]: false }), {}) - } : null + const seriesNames = series.map((s) => s.name) - legendOptions = { - legend: { - data: metricArr.map((m) => m.name), - type: 'scroll', - ...orient, - ...positions, - ...selected - } + let legendOption + if (cols.length || color.items.length) { + legendOption = { + legend: getLegendOption(legend, seriesNames) } } - // toolbox - toolboxOptions = toolbox && toolbox.length - ? { - toolbox: { - feature: { - dataZoom: { - yAxisIndex: 'none' - }, - restore: {}, - saveAsImage: { - pixelRatio: 2 - } - }, - right: 8 - } - } : null - - // grid - gridOptions = { - grid: { - top, - left, - right: Math.max(right, adjustedRight), - bottom: Math.max(bottom, adjustedBottom) - } + // dataZoomOptions = dataZoomThreshold > 0 && dataZoomThreshold < dataSource.length && { + // dataZoom: [{ + // type: 'inside', + // start: Math.round((1 - dataZoomThreshold / dataSource.length) * 100), + // end: 100 + // }, { + // start: Math.round((1 - dataZoomThreshold / dataSource.length) * 100), + // end: 100, + // handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z', + // handleSize: '80%', + // handleStyle: { + // color: '#fff', + // shadowBlur: 3, + // shadowColor: 'rgba(0, 0, 0, 0.6)', + // shadowOffsetX: 2, + // shadowOffsetY: 2 + // } + // }] + // } + + const xAxisSplitLineConfig = { + showLine: showVerticalLine, + lineColor: verticalLineColor, + lineSize: verticalLineSize, + lineStyle: verticalLineStyle } - dataZoomOptions = dataZoomThreshold > 0 && dataZoomThreshold < dataSource.length && { - dataZoom: [{ - type: 'inside', - start: Math.round((1 - dataZoomThreshold / dataSource.length) * 100), - end: 100 - }, { - start: Math.round((1 - dataZoomThreshold / dataSource.length) * 100), - end: 100, - handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z', - handleSize: '80%', - handleStyle: { - color: '#fff', - shadowBlur: 3, - shadowColor: 'rgba(0, 0, 0, 0.6)', - shadowOffsetX: 2, - shadowOffsetY: 2 - } - }] + const yAxisSplitLineConfig = { + showLine: showHorizontalLine, + lineColor: horizontalLineColor, + lineSize: horizontalLineSize, + lineStyle: horizontalLineStyle } return { + xAxis: getMetricAxisOption(xAxis, xAxisSplitLineConfig, decodeMetricName(metrics[0].name), 'x'), + yAxis: getMetricAxisOption(yAxis, yAxisSplitLineConfig, decodeMetricName(metrics[1].name)), + series, tooltip: { - formatter: (node) => { - const nodeValues = node.data - return ` - ${nodeValues[2] || ''}
    - ${value}: ${nodeValues[3] || 0}
    - ${xAxis}: ${nodeValues[0] || 0}
    - ${yAxis}: ${nodeValues[1] || 0}
    -
    ` - } + formatter: getChartTooltipLabel(seriesData, { cols, metrics, color, tip }) }, - ...metricOptions, - ...xAxisOptions, - ...yAxisOptions, - ...legendOptions, - ...toolboxOptions, - ...gridOptions, - ...dataZoomOptions + ...legendOption, + grid: getGridPositions(legend, seriesNames) } } - -export function makeGrouped (dataSource, groupColumns) { - return dataSource.reduce((acc, val) => { - const accColumn = groupColumns - .reduce((arr, col) => arr.concat(val[col]), []) - .join(' ') - if (!acc[accColumn]) { - acc[accColumn] = [] - } - acc[accColumn].push(val) - return acc - }, {}) -} diff --git a/webapp/app/containers/Widget/render/chart/util.ts b/webapp/app/containers/Widget/render/chart/util.ts new file mode 100644 index 000000000..90817a5b1 --- /dev/null +++ b/webapp/app/containers/Widget/render/chart/util.ts @@ -0,0 +1,313 @@ +/* + * << + * Davinci + * == + * Copyright (C) 2016 - 2017 EDP + * == + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * >> + */ + +import { IAxisConfig } from '../../components/Workbench/ConfigSections/AxisSection' +import { ILabelConfig } from '../../components/Workbench/ConfigSections/LabelSection' +import { ILegendConfig } from '../../components/Workbench/ConfigSections/LegendSection' +import { metricAxisLabelFormatter, decodeMetricName, getTextWidth } from '../../components/util' +import { CHART_LEGEND_POSITIONS } from '../../../../globalConstants' + +interface ISplitLineConfig { + showLine: boolean + lineStyle: string + lineSize: string + lineColor: string +} + +export function getDimetionAxisOption ( + dimetionAxisConfig: IAxisConfig, + splitLineConfig: ISplitLineConfig, + data: string[] +) { + const { + showLine: showLineX, + lineStyle: lineStyleX, + lineSize: lineSizeX, + lineColor: lineColorX, + showLabel: showLabelX, + labelFontFamily: labelFontFamilyX, + labelFontSize: labelFontSizeX, + labelColor: labelColorX + } = dimetionAxisConfig + + const { + showLine, + lineStyle, + lineSize, + lineColor + } = splitLineConfig + + return { + data, + axisLabel: { + show: showLabelX, + color: labelColorX, + fontFamily: labelFontFamilyX, + fontSize: labelFontSizeX + }, + axisLine: { + show: showLineX, + lineStyle: { + color: lineColorX, + width: lineSizeX, + type: lineStyleX + } + }, + axisTick: { + show: showLineX, + lineStyle: { + color: lineColorX + } + }, + splitLine: { + show: showLine, + lineStyle: { + color: lineColor, + width: lineSize, + type: lineStyle + } + } + } +} + +export function getMetricAxisOption ( + metricAxisConfig: IAxisConfig, + splitLineConfig: ISplitLineConfig, + title: string, + axis: 'x' | 'y' = 'y' +) { + const { + showLine: showLineY, + lineStyle: lineStyleY, + lineSize: lineSizeY, + lineColor: lineColorY, + showLabel: showLabelY, + labelFontFamily: labelFontFamilyY, + labelFontSize: labelFontSizeY, + labelColor: labelColorY, + showTitleAndUnit, + titleFontFamily, + titleFontSize, + titleColor + } = metricAxisConfig + + const { + showLine, + lineStyle, + lineSize, + lineColor + } = splitLineConfig + + return { + type: 'value', + axisLabel: { + show: showLabelY, + color: labelColorY, + fontFamily: labelFontFamilyY, + fontSize: labelFontSizeY, + formatter: metricAxisLabelFormatter + }, + axisLine: { + show: showLineY, + lineStyle: { + color: lineColorY, + width: lineSizeY, + type: lineStyleY + } + }, + axisTick: { + show: showLineY, + lineStyle: { + color: lineColorY + } + }, + name: showTitleAndUnit ? title : '', + nameLocation: axis === 'y' ? 'middle' : 'center', + nameGap: axis === 'y' ? 45 : 30, + nameTextStyle: { + color: titleColor, + fontFamily: titleFontFamily, + fontSize: titleFontSize + }, + splitLine: { + show: showLine, + lineStyle: { + color: lineColor, + width: lineSize, + type: lineStyle + } + } + } +} + +export function getLabelOption (labelConfig: ILabelConfig, emphasis?: boolean, options?: object) { + const { + showLabel, + labelPosition, + labelFontFamily, + labelFontSize, + labelColor + } = labelConfig + + return { + normal: { + show: showLabel, + position: labelPosition, + color: labelColor, + fontFamily: labelFontFamily, + fontSize: labelFontSize, + ...options + }, + ...emphasis && { + emphasis: { + show: showLabel, + position: labelPosition, + color: labelColor, + fontFamily: labelFontFamily, + fontSize: labelFontSize, + ...options + } + } + } +} + +export function getLegendOption (legendConfig: ILegendConfig, seriesNames: string[]) { + const { + showLegend, + legendPosition, + selectAll, + fontFamily, + fontSize, + color + } = legendConfig + + let orient + let positions + + switch (legendPosition) { + case 'top': + orient = { orient: 'horizontal' } + positions = { top: 8, left: 8, right: 8, height: 32 } + break + case 'bottom': + orient = { orient: 'horizontal' } + positions = { bottom: 8, left: 8, right: 8, height: 32 } + break + case 'left': + orient = { orient: 'vertical' } + positions = { left: 8, top: 16, bottom: 24, width: 96 } + break + default: + orient = { orient: 'vertical' } + positions = { right: 8, top: 16, bottom: 24, width: 96 } + break + } + + const selected = { + selected: seriesNames.reduce((obj, name) => ({ + ...obj, + [name]: selectAll + }), {}) + } + + return { + show: showLegend, + data: seriesNames, + type: 'scroll', + textStyle: { + fontFamily, + fontSize, + color + }, + ...orient, + ...positions, + ...selected + } +} + +export function getGridPositions (legendConfig: ILegendConfig, seriesNames) { + const { showLegend, legendPosition, fontSize } = legendConfig + return CHART_LEGEND_POSITIONS.reduce((grid, pos) => { + const val = pos.value + grid[val] = getGridBase(val) + if (showLegend) { + grid[val] += legendPosition === val + ? ['top', 'bottom'].includes(val) + ? 32 + : 32 + Math.max(...seriesNames.map((s) => getTextWidth(s, '', `${fontSize}px`))) + : 0 + } + return grid + }, {}) +} + +function getGridBase (pos) { + switch (pos) { + case 'top': return 24 + case 'left': return 64 + case 'right': return 24 + case 'bottom': return 50 + } +} + +export function makeGrouped (data, groupColumns, xAxisColumn, metrics, xAxisData) { + const grouped = {} + + data.forEach((d) => { + const groupingKey = groupColumns.map((col) => d[col]).join(' ') + const colKey = d[xAxisColumn] + if (!grouped[groupingKey]) { + grouped[groupingKey] = {} + } + if (!grouped[groupingKey][colKey]) { + grouped[groupingKey][colKey] = [] + } + grouped[groupingKey][colKey].push(d) + }) + + Object.keys(grouped).map((groupingKey) => { + const currentGroupValues = grouped[groupingKey] + + grouped[groupingKey] = xAxisData.map((xd) => { + if (currentGroupValues[xd]) { + return currentGroupValues[xd][0] + } else { + return metrics.reduce((obj, m) => ({ ...obj, [`${m.agg}(${decodeMetricName(m.name)})`]: 0 }), {}) + } + }) + }) + + return grouped +} + +export function distinctXaxis (data, xAxisColumn) { + return xAxisColumn + ? Object.keys(data.reduce((distinct, ds) => { + if (!distinct[ds[xAxisColumn]]) { + distinct[ds[xAxisColumn]] = true + } + return distinct + }, {})) + : [] +} + +export function getSymbolSize (sizeRate, size) { + return sizeRate ? Math.ceil(size / sizeRate) : size +} diff --git a/webapp/app/containers/Widget/render/pivot/pie.ts b/webapp/app/containers/Widget/render/pivot/pie.ts index 681eeac3f..4c67ba8be 100644 --- a/webapp/app/containers/Widget/render/pivot/pie.ts +++ b/webapp/app/containers/Widget/render/pivot/pie.ts @@ -18,7 +18,7 @@ * >> */ -import { DimetionType } from '../components/Widget' +import { DimetionType } from '../../components/Widget' export default function () { return { From 892c2a37352bdf3321ef3b38c93656155a083dab Mon Sep 17 00:00:00 2001 From: andyfong Date: Thu, 11 Oct 2018 15:22:16 +0800 Subject: [PATCH 25/45] chore(libs): update lib `react-dragglable` with source code localization --- .../Display/components/LayerItem.tsx | 36 +- .../internals/webpack/webpack.base.babel.js | 2 +- webapp/libs/react-draggable/README.md | 306 ++ webapp/libs/react-draggable/index.js | 9 + .../libs/react-draggable/react-draggable.js | 2768 ----------------- .../react-draggable/react-draggable.js.map | 1 - webapp/libs/react-grid-layout/GridItem.js | 2 +- webapp/libs/react-resizable/Resizable.js | 2 +- 8 files changed, 352 insertions(+), 2774 deletions(-) create mode 100644 webapp/libs/react-draggable/README.md create mode 100644 webapp/libs/react-draggable/index.js delete mode 100644 webapp/libs/react-draggable/react-draggable.js delete mode 100644 webapp/libs/react-draggable/react-draggable.js.map diff --git a/webapp/app/containers/Display/components/LayerItem.tsx b/webapp/app/containers/Display/components/LayerItem.tsx index baa7b9b34..623741460 100644 --- a/webapp/app/containers/Display/components/LayerItem.tsx +++ b/webapp/app/containers/Display/components/LayerItem.tsx @@ -3,7 +3,7 @@ import { findDOMNode } from 'react-dom' import * as classnames from 'classnames' const Tooltip = require('antd/lib/tooltip') -import Draggable from '../../../../libs/react-draggable/react-draggable' +import Draggable from 'libs/react-draggable' // @TODO contentMenu // const Dropdown = require('antd/lib/dropdown') @@ -50,7 +50,7 @@ interface ILayerItemProps { } interface ILayerItemStates { - layerParams: any + layerParams: ILayerParams layerTooltipPosition: [number, number] mousePos: number[] widgetProps: IWidgetProps @@ -473,3 +473,35 @@ export class LayerItem extends React.PureComponent ({ }, { test: /\.js$/, // Transform all .js files required somewhere with Babel - exclude: /node_modules|libs/, + exclude: /node_modules/, use: { loader: 'babel-loader', options: options.babelQuery diff --git a/webapp/libs/react-draggable/README.md b/webapp/libs/react-draggable/README.md new file mode 100644 index 000000000..6ca24ec6a --- /dev/null +++ b/webapp/libs/react-draggable/README.md @@ -0,0 +1,306 @@ +# React-Draggable + +[![TravisCI Build Status](https://travis-ci.org/mzabriskie/react-draggable.svg?branch=master)](https://travis-ci.org/mzabriskie/react-draggable) +[![Appveyor Build Status](https://ci.appveyor.com/api/projects/status/32r7s2skrgm9ubva?svg=true)](https://ci.appveyor.com/project/mzabriskie/react-draggable) +[![npm downloads](https://img.shields.io/npm/dt/react-draggable.svg?maxAge=2592000)](http://npmjs.com/package/react-draggable) +[![gzip size](http://img.badgesize.io/https://npmcdn.com/react-draggable/dist/react-draggable.min.js?compression=gzip)]() +[![version](https://img.shields.io/npm/v/react-draggable.svg)]() + +A simple component for making elements draggable. + +```js + +
    I can now be moved around!
    +
    +``` + +- [Demo](http://mzabriskie.github.io/react-draggable/example/) +- [Changelog](CHANGELOG.md) + +------ + +#### Technical Documentation + +- [Installing](#installing) +- [Exports](#exports) +- [Draggable](#draggable) +- [Draggable Usage](#draggable-usage) +- [Draggable API](#draggable-api) +- [Controlled vs. Uncontrolled](#controlled-vs-uncontrolled) +- [DraggableCore](#draggablecore) +- [DraggableCore API](#draggablecore-api) + + + +### Installing + +```bash +$ npm install react-draggable +``` + +If you aren't using browserify/webpack, a +[UMD version of react-draggable](dist/react-draggable.js) is available. It is updated per-release only. +This bundle is also what is loaded when installing from npm. It expects external `React` and `ReactDOM`. + +If you want a UMD version of the latest `master` revision, you can generate it yourself from master by cloning this +repository and running `$ make`. This will create umd dist files in the `dist/` folder. + +### Exports + +The default export is ``. At the `.DraggableCore` property is [``](#draggablecore). +Here's how to use it: + +```js +// ES6 +import Draggable from 'react-draggable'; // The default +import {DraggableCore} from 'react-draggable'; // +import Draggable, {DraggableCore} from 'react-draggable'; // Both at the same time + +// CommonJS +let Draggable = require('react-draggable'); +let DraggableCore = Draggable.DraggableCore; +``` + +## `` + +A `` element wraps an existing element and extends it with new event handlers and styles. +It does not create a wrapper element in the DOM. + +Draggable items are moved using CSS Transforms. This allows items to be dragged regardless of their current +positioning (relative, absolute, or static). Elements can also be moved between drags without incident. + +If the item you are dragging already has a CSS Transform applied, it will be overwritten by ``. Use +an intermediate wrapper (`...`) in this case. + +### Draggable Usage + +View the [Demo](http://mzabriskie.github.io/react-draggable/example/) and its +[source](/example/index.html) for more. + +```js +import React from 'react'; +import ReactDOM from 'react-dom'; +import Draggable from 'react-draggable'; + +class App extends React.Element { + + eventLogger = (e: MouseEvent, data: Object) => { + console.log('Event: ', e); + console.log('Data: ', data); + }; + + render() { + return ( + +
    +
    Drag from here
    +
    This readme is really dragging on...
    +
    +
    + ); + } +} + +ReactDOM.render(, document.body); +``` + +### Draggable API + +The `` component transparently adds draggability to its children. + +**Note**: Only a single child is allowed or an Error will be thrown. + +For the `` component to correctly attach itself to its child, the child element must provide support +for the following props: +- `style` is used to give the transform css to the child. +- `className` is used to apply the proper classes to the object being dragged. +- `onMouseDown`, `onMouseUp`, `onTouchStart`, and `onTouchEnd` are used to keep track of dragging state. + +React.DOM elements support the above properties by default, so you may use those elements as children without +any changes. If you wish to use a React component you created, you'll need to be sure to +[transfer prop](https://facebook.github.io/react/docs/transferring-props.html). + +#### `` Props: + +```js +// +// Types: +// +type DraggableEventHandler = (e: Event, data: DraggableData) => void | false; +type DraggableData = { + node: HTMLElement, + // lastX + deltaX === x + x: number, y: number, + deltaX: number, deltaY: number, + lastX: number, lastY: number +}; + +// +// Props: +// +{ +// If set to `true`, will allow dragging on non left-button clicks. +allowAnyClick: boolean, + +// Determines which axis the draggable can move. This only affects +// flushing to the DOM. Callbacks will still include all values. +// Accepted values: +// - `both` allows movement horizontally and vertically (default). +// - `x` limits movement to horizontal axis. +// - `y` limits movement to vertical axis. +// - 'none' stops all movement. +axis: string, + +// Specifies movement boundaries. Accepted values: +// - `parent` restricts movement within the node's offsetParent +// (nearest node with position relative or absolute), or +// - a selector, restricts movement within the targeted node +// - An object with `left, top, right, and bottom` properties. +// These indicate how far in each direction the draggable +// can be moved. +bounds: {left: number, top: number, right: number, bottom: number} | string, + +// Specifies a selector to be used to prevent drag initialization. +// Example: '.body' +cancel: string, + +// Class names for draggable UI. +// Default to 'react-draggable', 'react-draggable-dragging', and 'react-draggable-dragged' +defaultClassName: string, +defaultClassNameDragging: string, +defaultClassNameDragged: string, + +// Specifies the `x` and `y` that the dragged item should start at. +// This is generally not necessary to use (you can use absolute or relative +// positioning of the child directly), but can be helpful for uniformity in +// your callbacks and with css transforms. +defaultPosition: {x: number, y: number}, + +// If true, will not call any drag handlers. +disabled: boolean, + +// Specifies the x and y that dragging should snap to. +grid: [number, number], + +// Specifies a selector to be used as the handle that initiates drag. +// Example: '.handle' +handle: string, + +// If desired, you can provide your own offsetParent for drag calculations. +// By default, we use the Draggable's offsetParent. This can be useful for elements +// with odd display types or floats. +offsetParent: HTMLElement, + +// Called whenever the user mouses down. Called regardless of handle or +// disabled status. +onMouseDown: (e: MouseEvent) => void, + +// Called when dragging starts. If `false` is returned any handler, +// the action will cancel. +onStart: DraggableEventHandler, + +// Called while dragging. +onDrag: DraggableEventHandler, + +// Called when dragging stops. +onStop: DraggableEventHandler, + +// Much like React form elements, if this property is present, the item +// becomes 'controlled' and is not responsive to user input. Use `position` +// if you need to have direct control of the element. +position: {x: number, y: number} +} +``` + + +Note that sending `className`, `style`, or `transform` as properties will error - set them on the child element +directly. + + +## Controlled vs. Uncontrolled + +`` is a 'batteries-included' component that manages its own state. If you want to completely +control the lifecycle of the component, use ``. + +For some users, they may want the nice state management that `` provides, but occasionally want +to programmatically reposition their components. `` allows this customization via a system that +is similar to how React handles form components. + +If the prop `position: {x: number, y: number}` is defined, the `` will ignore its internal state and use +the provided position instead. Alternatively, you can seed the position using `defaultPosition`. Technically, since +`` works only on position deltas, you could also seed the initial position using CSS `top/left`. + +We make one modification to the React philosophy here - we still allow dragging while a component is controlled. +We then expect you to use at least an `onDrag` or `onStop` handler to synchronize state. + +To disable dragging while controlled, send the prop `disabled={true}` - at this point the `` will operate +like a completely static component. + +## `` + +For users that require absolute control, a `` element is available. This is useful as an abstraction +over touch and mouse events, but with full control. `` has no internal state. + +See [React-Resizable](https://github.com/STRML/react-resizable) and +[React-Grid-Layout](https://github.com/STRML/react-grid-layout) for some usage examples. + +`` is a useful building block for other libraries that simply want to abstract browser-specific +quirks and receive callbacks when a user attempts to move an element. It does not set styles or transforms +on itself and thus must have callbacks attached to be useful. + +### DraggableCore API + +`` takes a limited subset of options: + +```js +{ + allowAnyClick: boolean, + cancel: string, + disabled: boolean, + enableUserSelectHack: boolean, + offsetParent: HTMLElement, + grid: [number, number], + handle: string, + onStart: DraggableEventHandler, + onDrag: DraggableEventHandler, + onStop: DraggableEventHandler, + onMouseDown: (e: MouseEvent) => void +} +``` + +Note that there is no start position. `` simply calls `drag` handlers with the below parameters, +indicating its position (as inferred from the underlying MouseEvent) and deltas. It is up to the parent +to set actual positions on ``. + +Drag callbacks (`onStart`, `onDrag`, `onStop`) are called with the [same arguments as ``](#draggable-api). + +---- + +### Contributing + +- Fork the project +- Run the project in development mode: `$ npm run dev` +- Make changes. +- Add appropriate tests +- `$ npm test` +- If tests don't pass, make them pass. +- Update README with appropriate docs. +- Commit and PR + +### Release checklist + +- Update CHANGELOG +- `make release-patch`, `make release-minor`, or `make-release-major` +- `make publish` + +### License + +MIT diff --git a/webapp/libs/react-draggable/index.js b/webapp/libs/react-draggable/index.js new file mode 100644 index 000000000..104298161 --- /dev/null +++ b/webapp/libs/react-draggable/index.js @@ -0,0 +1,9 @@ +var Draggable = require('./lib/Draggable').default; + +// Previous versions of this lib exported as the root export. As to not break +// them, or TypeScript, we export *both* as the root and as 'default'. +// See https://github.com/mzabriskie/react-draggable/pull/254 +// and https://github.com/mzabriskie/react-draggable/issues/266 +module.exports = Draggable; +module.exports.default = Draggable; +module.exports.DraggableCore = require('./lib/DraggableCore').default; diff --git a/webapp/libs/react-draggable/react-draggable.js b/webapp/libs/react-draggable/react-draggable.js deleted file mode 100644 index f2a5ba6e4..000000000 --- a/webapp/libs/react-draggable/react-draggable.js +++ /dev/null @@ -1,2768 +0,0 @@ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(require("react-dom"), require("react")); - else if(typeof define === 'function' && define.amd) - define(["react-dom", "react"], factory); - else if(typeof exports === 'object') - exports["ReactDraggable"] = factory(require("react-dom"), require("react")); - else - root["ReactDraggable"] = factory(root["ReactDOM"], root["React"]); -})(this, function(__WEBPACK_EXTERNAL_MODULE_4__, __WEBPACK_EXTERNAL_MODULE_6__) { -return /******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 12); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.findInArray = findInArray; -exports.isFunction = isFunction; -exports.isNum = isNum; -exports.int = int; -exports.dontSetMe = dontSetMe; - -// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc -function findInArray(array /*: Array | TouchList*/, callback /*: Function*/) /*: any*/ { - for (var i = 0, length = array.length; i < length; i++) { - if (callback.apply(callback, [array[i], i, array])) return array[i]; - } -} - -function isFunction(func /*: any*/) /*: boolean*/ { - return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]'; -} - -function isNum(num /*: any*/) /*: boolean*/ { - return typeof num === 'number' && !isNaN(num); -} - -function int(a /*: string*/) /*: number*/ { - return parseInt(a, 10); -} - -function dontSetMe(props /*: Object*/, propName /*: string*/, componentName /*: string*/) { - if (props[propName]) { - return new Error('Invalid prop ' + propName + ' passed to ' + componentName + ' - do not set this, set it on the child.'); - } -} - -/***/ }), -/* 1 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -/** - * Copyright (c) 2013-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * - */ - -function makeEmptyFunction(arg) { - return function () { - return arg; - }; -} - -/** - * This function accepts and discards inputs; it has no side effects. This is - * primarily useful idiomatically for overridable function endpoints which - * always need to be callable, since JS lacks a null-call idiom ala Cocoa. - */ -var emptyFunction = function emptyFunction() {}; - -emptyFunction.thatReturns = makeEmptyFunction; -emptyFunction.thatReturnsFalse = makeEmptyFunction(false); -emptyFunction.thatReturnsTrue = makeEmptyFunction(true); -emptyFunction.thatReturnsNull = makeEmptyFunction(null); -emptyFunction.thatReturnsThis = function () { - return this; -}; -emptyFunction.thatReturnsArgument = function (arg) { - return arg; -}; - -module.exports = emptyFunction; - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * Copyright (c) 2013-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - */ - - - -/** - * Use invariant() to assert state which your program assumes to be true. - * - * Provide sprintf-style format (only %s is supported) and arguments - * to provide information about what broke and what you were - * expecting. - * - * The invariant message will be stripped in production, but the invariant - * will remain to ensure logic does not differ in production. - */ - -var validateFormat = function validateFormat(format) {}; - -if (Object({"DRAGGABLE_DEBUG":undefined}).NODE_ENV !== 'production') { - validateFormat = function validateFormat(format) { - if (format === undefined) { - throw new Error('invariant requires an error message argument'); - } - }; -} - -function invariant(condition, format, a, b, c, d, e, f) { - validateFormat(format); - - if (!condition) { - var error; - if (format === undefined) { - error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.'); - } else { - var args = [a, b, c, d, e, f]; - var argIndex = 0; - error = new Error(format.replace(/%s/g, function () { - return args[argIndex++]; - })); - error.name = 'Invariant Violation'; - } - - error.framesToPop = 1; // we don't care about invariant's own frame - throw error; - } -} - -module.exports = invariant; - -/***/ }), -/* 3 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * Copyright (c) 2013-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - - - -var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; - -module.exports = ReactPropTypesSecret; - - -/***/ }), -/* 4 */ -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE_4__; - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -exports.matchesSelector = matchesSelector; -exports.matchesSelectorAndParentsTo = matchesSelectorAndParentsTo; -exports.addEvent = addEvent; -exports.removeEvent = removeEvent; -exports.outerHeight = outerHeight; -exports.outerWidth = outerWidth; -exports.innerHeight = innerHeight; -exports.innerWidth = innerWidth; -exports.offsetXYFromParent = offsetXYFromParent; -exports.createCSSTransform = createCSSTransform; -exports.createSVGTransform = createSVGTransform; -exports.getTouch = getTouch; -exports.getTouchIdentifier = getTouchIdentifier; -exports.addUserSelectStyles = addUserSelectStyles; -exports.removeUserSelectStyles = removeUserSelectStyles; -exports.styleHacks = styleHacks; -exports.addClassName = addClassName; -exports.removeClassName = removeClassName; - -var _shims = __webpack_require__(0); - -var _getPrefix = __webpack_require__(19); - -var _getPrefix2 = _interopRequireDefault(_getPrefix); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -/*:: import type {ControlPosition, MouseTouchEvent} from './types';*/ - - -var matchesSelectorFunc = ''; -function matchesSelector(el /*: Node*/, selector /*: string*/) /*: boolean*/ { - if (!matchesSelectorFunc) { - matchesSelectorFunc = (0, _shims.findInArray)(['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'], function (method) { - // $FlowIgnore: Doesn't think elements are indexable - return (0, _shims.isFunction)(el[method]); - }); - } - - // Might not be found entirely (not an Element?) - in that case, bail - // $FlowIgnore: Doesn't think elements are indexable - if (!(0, _shims.isFunction)(el[matchesSelectorFunc])) return false; - - // $FlowIgnore: Doesn't think elements are indexable - return el[matchesSelectorFunc](selector); -} - -// Works up the tree to the draggable itself attempting to match selector. -function matchesSelectorAndParentsTo(el /*: Node*/, selector /*: string*/, baseNode /*: Node*/) /*: boolean*/ { - var node = el; - do { - if (matchesSelector(node, selector)) return true; - if (node === baseNode) return false; - node = node.parentNode; - } while (node); - - return false; -} - -function addEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/) /*: void*/ { - if (!el) { - return; - } - if (el.attachEvent) { - el.attachEvent('on' + event, handler); - } else if (el.addEventListener) { - el.addEventListener(event, handler, true); - } else { - // $FlowIgnore: Doesn't think elements are indexable - el['on' + event] = handler; - } -} - -function removeEvent(el /*: ?Node*/, event /*: string*/, handler /*: Function*/) /*: void*/ { - if (!el) { - return; - } - if (el.detachEvent) { - el.detachEvent('on' + event, handler); - } else if (el.removeEventListener) { - el.removeEventListener(event, handler, true); - } else { - // $FlowIgnore: Doesn't think elements are indexable - el['on' + event] = null; - } -} - -function outerHeight(node /*: HTMLElement*/) /*: number*/ { - // This is deliberately excluding margin for our calculations, since we are using - // offsetTop which is including margin. See getBoundPosition - var height = node.clientHeight; - var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node); - height += (0, _shims.int)(computedStyle.borderTopWidth); - height += (0, _shims.int)(computedStyle.borderBottomWidth); - return height; -} - -function outerWidth(node /*: HTMLElement*/) /*: number*/ { - // This is deliberately excluding margin for our calculations, since we are using - // offsetLeft which is including margin. See getBoundPosition - var width = node.clientWidth; - var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node); - width += (0, _shims.int)(computedStyle.borderLeftWidth); - width += (0, _shims.int)(computedStyle.borderRightWidth); - return width; -} -function innerHeight(node /*: HTMLElement*/) /*: number*/ { - var height = node.clientHeight; - var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node); - height -= (0, _shims.int)(computedStyle.paddingTop); - height -= (0, _shims.int)(computedStyle.paddingBottom); - return height; -} - -function innerWidth(node /*: HTMLElement*/) /*: number*/ { - var width = node.clientWidth; - var computedStyle = node.ownerDocument.defaultView.getComputedStyle(node); - width -= (0, _shims.int)(computedStyle.paddingLeft); - width -= (0, _shims.int)(computedStyle.paddingRight); - return width; -} - -// Get from offsetParent -function offsetXYFromParent(evt /*: {clientX: number, clientY: number}*/, offsetParent /*: HTMLElement*/) /*: ControlPosition*/ { - var isBody = offsetParent === offsetParent.ownerDocument.body; - var offsetParentRect = isBody ? { left: 0, top: 0 } : offsetParent.getBoundingClientRect(); - - var x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left; - var y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top; - - return { x: x, y: y }; -} - -function createCSSTransform(_ref) /*: Object*/ { - var x = _ref.x, - y = _ref.y; - - // Replace unitless items with px - return _defineProperty({}, (0, _getPrefix.browserPrefixToKey)('transform', _getPrefix2.default), 'translate(' + x + 'px,' + y + 'px)'); -} - -function createSVGTransform(_ref3) /*: string*/ { - var x = _ref3.x, - y = _ref3.y; - - return 'translate(' + x + ',' + y + ')'; -} - -function getTouch(e /*: MouseTouchEvent*/, identifier /*: number*/) /*: ?{clientX: number, clientY: number}*/ { - return e.targetTouches && (0, _shims.findInArray)(e.targetTouches, function (t) { - return identifier === t.identifier; - }) || e.changedTouches && (0, _shims.findInArray)(e.changedTouches, function (t) { - return identifier === t.identifier; - }); -} - -function getTouchIdentifier(e /*: MouseTouchEvent*/) /*: ?number*/ { - if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier; - if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier; -} - -// User-select Hacks: -// -// Useful for preventing blue highlights all over everything when dragging. - -// Note we're passing `document` b/c we could be iframed -function addUserSelectStyles(doc /*: ?Document*/) { - if (!doc) return; - var styleEl = doc.getElementById('react-draggable-style-el'); - if (!styleEl) { - styleEl = doc.createElement('style'); - styleEl.type = 'text/css'; - styleEl.id = 'react-draggable-style-el'; - styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {background: transparent;}\n'; - styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {background: transparent;}\n'; - doc.getElementsByTagName('head')[0].appendChild(styleEl); - } - if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection'); -} - -function removeUserSelectStyles(doc /*: ?Document*/) { - try { - if (doc && doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection'); - window.getSelection().removeAllRanges(); // remove selection caused by scroll - } catch (e) { - // probably IE - } -} - -function styleHacks() /*: Object*/ { - var childStyle /*: Object*/ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - // Workaround IE pointer events; see #51 - // https://github.com/mzabriskie/react-draggable/issues/51#issuecomment-103488278 - return _extends({ - touchAction: 'none' - }, childStyle); -} - -function addClassName(el /*: HTMLElement*/, className /*: string*/) { - if (el.classList) { - el.classList.add(className); - } else { - if (!el.className.match(new RegExp('(?:^|\\s)' + className + '(?!\\S)'))) { - el.className += ' ' + className; - } - } -} - -function removeClassName(el /*: HTMLElement*/, className /*: string*/) { - if (el.classList) { - el.classList.remove(className); - } else { - el.className = el.className.replace(new RegExp('(?:^|\\s)' + className + '(?!\\S)', 'g'), ''); - } -} - -/***/ }), -/* 6 */ -/***/ (function(module, exports) { - -module.exports = __WEBPACK_EXTERNAL_MODULE_6__; - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - -/** - * Copyright (c) 2013-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -if (Object({"DRAGGABLE_DEBUG":undefined}).NODE_ENV !== 'production') { - var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' && - Symbol.for && - Symbol.for('react.element')) || - 0xeac7; - - var isValidElement = function(object) { - return typeof object === 'object' && - object !== null && - object.$$typeof === REACT_ELEMENT_TYPE; - }; - - // By explicitly using `prop-types` you are opting into new development behavior. - // http://fb.me/prop-types-in-prod - var throwOnDirectAccess = true; - module.exports = __webpack_require__(14)(isValidElement, throwOnDirectAccess); -} else { - // By explicitly using `prop-types` you are opting into new production behavior. - // http://fb.me/prop-types-in-prod - module.exports = __webpack_require__(17)(); -} - - -/***/ }), -/* 8 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * Copyright (c) 2014-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - */ - - - -var emptyFunction = __webpack_require__(1); - -/** - * Similar to invariant but only logs a warning if the condition is not met. - * This can be used to log issues in development environments in critical - * paths. Removing the logging code for production environments will keep the - * same logic and follow the same code paths. - */ - -var warning = emptyFunction; - -if (Object({"DRAGGABLE_DEBUG":undefined}).NODE_ENV !== 'production') { - var printWarning = function printWarning(format) { - for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - var argIndex = 0; - var message = 'Warning: ' + format.replace(/%s/g, function () { - return args[argIndex++]; - }); - if (typeof console !== 'undefined') { - console.error(message); - } - try { - // --- Welcome to debugging React --- - // This error was thrown as a convenience so that you can use this stack - // to find the callsite that caused this warning to fire. - throw new Error(message); - } catch (x) {} - }; - - warning = function warning(condition, format) { - if (format === undefined) { - throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument'); - } - - if (format.indexOf('Failed Composite propType: ') === 0) { - return; // Ignore CompositeComponent proptype check. - } - - if (!condition) { - for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { - args[_key2 - 2] = arguments[_key2]; - } - - printWarning.apply(undefined, [format].concat(args)); - } - }; -} - -module.exports = warning; - -/***/ }), -/* 9 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getBoundPosition = getBoundPosition; -exports.snapToGrid = snapToGrid; -exports.canDragX = canDragX; -exports.canDragY = canDragY; -exports.getControlPosition = getControlPosition; -exports.createCoreData = createCoreData; -exports.createDraggableData = createDraggableData; - -var _shims = __webpack_require__(0); - -var _reactDom = __webpack_require__(4); - -var _reactDom2 = _interopRequireDefault(_reactDom); - -var _domFns = __webpack_require__(5); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -/*:: import type Draggable from '../Draggable';*/ -/*:: import type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';*/ -/*:: import type DraggableCore from '../DraggableCore';*/ -function getBoundPosition(draggable /*: Draggable*/, x /*: number*/, y /*: number*/) /*: [number, number]*/ { - // If no bounds, short-circuit and move on - if (!draggable.props.bounds) return [x, y]; - - // Clone new bounds - var bounds = draggable.props.bounds; - - bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds); - var node = findDOMNode(draggable); - - if (typeof bounds === 'string') { - var ownerDocument = node.ownerDocument; - - var ownerWindow = ownerDocument.defaultView; - var boundNode = void 0; - if (bounds === 'parent') { - boundNode = node.parentNode; - } else { - boundNode = ownerDocument.querySelector(bounds); - } - if (!(boundNode instanceof HTMLElement)) { - throw new Error('Bounds selector "' + bounds + '" could not find an element.'); - } - var nodeStyle = ownerWindow.getComputedStyle(node); - var boundNodeStyle = ownerWindow.getComputedStyle(boundNode); - // Compute bounds. This is a pain with padding and offsets but this gets it exactly right. - bounds = { - left: -node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingLeft) + (0, _shims.int)(nodeStyle.marginLeft), - top: -node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingTop) + (0, _shims.int)(nodeStyle.marginTop), - right: (0, _domFns.innerWidth)(boundNode) - (0, _domFns.outerWidth)(node) - node.offsetLeft + (0, _shims.int)(boundNodeStyle.paddingRight) - (0, _shims.int)(nodeStyle.marginRight), - bottom: (0, _domFns.innerHeight)(boundNode) - (0, _domFns.outerHeight)(node) - node.offsetTop + (0, _shims.int)(boundNodeStyle.paddingBottom) - (0, _shims.int)(nodeStyle.marginBottom) - }; - } - - // Keep x and y below right and bottom limits... - if ((0, _shims.isNum)(bounds.right)) x = Math.min(x, bounds.right); - if ((0, _shims.isNum)(bounds.bottom)) y = Math.min(y, bounds.bottom); - - // But above left and top limits. - if ((0, _shims.isNum)(bounds.left)) x = Math.max(x, bounds.left); - if ((0, _shims.isNum)(bounds.top)) y = Math.max(y, bounds.top); - - return [x, y]; -} - -function snapToGrid(grid /*: [number, number]*/, pendingX /*: number*/, pendingY /*: number*/) /*: [number, number]*/ { - if (!grid) { return [pendingX, pendingY] } - var x = Math.round(pendingX / grid[0]) * grid[0]; - var y = Math.round(pendingY / grid[1]) * grid[1]; - return [x, y]; -} - -function canDragX(draggable /*: Draggable*/) /*: boolean*/ { - return draggable.props.axis === 'both' || draggable.props.axis === 'x'; -} - -function canDragY(draggable /*: Draggable*/) /*: boolean*/ { - return draggable.props.axis === 'both' || draggable.props.axis === 'y'; -} - -// Get {x, y} positions from event. -function getControlPosition(e /*: MouseTouchEvent*/, touchIdentifier /*: ?number*/, draggableCore /*: DraggableCore*/) /*: ?ControlPosition*/ { - var touchObj = typeof touchIdentifier === 'number' ? (0, _domFns.getTouch)(e, touchIdentifier) : null; - if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch - var node = findDOMNode(draggableCore); - // User can provide an offsetParent if desired. - var offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body; - return (0, _domFns.offsetXYFromParent)(touchObj || e, offsetParent); -} - -// Create an data object exposed by 's events -function createCoreData(draggable /*: DraggableCore*/, x /*: number*/, y /*: number*/) /*: DraggableData*/ { - var scale = draggable.props.scale || 1; - var state = draggable.state; - var isStart = !(0, _shims.isNum)(state.lastX); - var node = findDOMNode(draggable); - - if (isStart) { - // If this is our first move, use the x and y as last coords. - return { - node: node, - deltaX: 0, deltaY: 0, - lastX: x, lastY: y, - x: x, y: y - }; - } else { - // Otherwise calculate proper values. - if (!draggable.props.grid) { - return { - node: node, - deltaX: x - state.lastX, deltaY: y - state.lastY, - lastX: state.lastX, lastY: state.lastY, - x: x, y: y - } - } - - var _positionFns = __webpack_require__(9); - var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - var _deltaX = (x - state.lastX) / scale - var _deltaY = (y - state.lastY) / scale - var _snapToGrid = (0, _positionFns.snapToGrid)(draggable.props.grid, _deltaX, _deltaY); - var _snapToGrid2 = _slicedToArray(_snapToGrid, 2); - - return { - node: node, - deltaX: _snapToGrid2[0], deltaY: _snapToGrid2[1], - lastX: state.lastX, lastY: state.lastY, - x: x, y: y - }; - } -} - -// Create an data exposed by 's events -function createDraggableData(draggable /*: Draggable*/, coreData /*: DraggableData*/) /*: DraggableData*/ { - return { - node: coreData.node, - x: draggable.state.x + coreData.deltaX, - y: draggable.state.y + coreData.deltaY, - deltaX: coreData.deltaX, - deltaY: coreData.deltaY, - lastX: draggable.state.x, - lastY: draggable.state.y - }; -} - -// A lot faster than stringify/parse -function cloneBounds(bounds /*: Bounds*/) /*: Bounds*/ { - return { - left: bounds.left, - top: bounds.top, - right: bounds.right, - bottom: bounds.bottom - }; -} - -function findDOMNode(draggable /*: Draggable | DraggableCore*/) /*: HTMLElement*/ { - var node = _reactDom2.default.findDOMNode(draggable); - if (!node) { - throw new Error(': Unmounted during event!'); - } - // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME - return node; -} - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* WEBPACK VAR INJECTION */(function(process) { - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _react = __webpack_require__(6); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = __webpack_require__(7); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactDom = __webpack_require__(4); - -var _reactDom2 = _interopRequireDefault(_reactDom); - -var _domFns = __webpack_require__(5); - -var _positionFns = __webpack_require__(9); - -var _shims = __webpack_require__(0); - -var _log = __webpack_require__(11); - -var _log2 = _interopRequireDefault(_log); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/*:: import type {EventHandler, MouseTouchEvent} from './utils/types';*/ - - -// Simple abstraction for dragging events names. -/*:: import type {Element as ReactElement} from 'react';*/ -var eventsFor = { - touch: { - start: 'touchstart', - move: 'touchmove', - stop: 'touchend' - }, - mouse: { - start: 'mousedown', - move: 'mousemove', - stop: 'mouseup' - } -}; - -// Default to mouse events. -var dragEventFor = eventsFor.mouse; - -/*:: type DraggableCoreState = { - dragging: boolean, - lastX: number, - lastY: number, - touchIdentifier: ?number -};*/ -/*:: export type DraggableBounds = { - left: number, - right: number, - top: number, - bottom: number, -};*/ -/*:: export type DraggableData = { - node: HTMLElement, - x: number, y: number, - deltaX: number, deltaY: number, - lastX: number, lastY: number, -};*/ -/*:: export type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void;*/ -/*:: export type ControlPosition = {x: number, y: number};*/ - - -// -// Define . -// -// is for advanced usage of . It maintains minimal internal state so it can -// work well with libraries that require more control over the element. -// - -/*:: export type DraggableCoreProps = { - allowAnyClick: boolean, - cancel: string, - children: ReactElement, - disabled: boolean, - enableUserSelectHack: boolean, - offsetParent: HTMLElement, - grid: [number, number], - handle: string, - onStart: DraggableEventHandler, - onDrag: DraggableEventHandler, - onStop: DraggableEventHandler, - onMouseDown: (e: MouseEvent) => void, -};*/ - -var DraggableCore = function (_React$Component) { - _inherits(DraggableCore, _React$Component); - - function DraggableCore() { - var _ref; - - var _temp, _this, _ret; - - _classCallCheck(this, DraggableCore); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = DraggableCore.__proto__ || Object.getPrototypeOf(DraggableCore)).call.apply(_ref, [this].concat(args))), _this), _this.state = { - dragging: false, - // Used while dragging to determine deltas. - lastX: NaN, lastY: NaN, - touchIdentifier: null - }, _this.handleDragStart = function (e) { - // Make it possible to attach event handlers on top of this one. - _this.props.onMouseDown(e); - - // Only accept left-clicks. - if (!_this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false; - - // Get nodes. Be sure to grab relative document (could be iframed) - var thisNode = _reactDom2.default.findDOMNode(_this); - if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) { - throw new Error(' not mounted on DragStart!'); - } - var ownerDocument = thisNode.ownerDocument; - - // Short circuit if handle or cancel prop was provided and selector doesn't match. - - if (_this.props.disabled || !(e.target instanceof ownerDocument.defaultView.Node) || _this.props.handle && !(0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.handle, thisNode) || _this.props.cancel && (0, _domFns.matchesSelectorAndParentsTo)(e.target, _this.props.cancel, thisNode)) { - return; - } - - // Set touch identifier in component state if this is a touch event. This allows us to - // distinguish between individual touches on multitouch screens by identifying which - // touchpoint was set to this element. - var touchIdentifier = (0, _domFns.getTouchIdentifier)(e); - _this.setState({ touchIdentifier: touchIdentifier }); - - // Get the current drag point from the event. This is used as the offset. - var position = (0, _positionFns.getControlPosition)(e, touchIdentifier, _this); - if (position == null) return; // not possible but satisfies flow - var x = position.x, - y = position.y; - - // Create an event object with all the data parents need to make a decision here. - - var coreEvent = (0, _positionFns.createCoreData)(_this, x, y); - - (0, _log2.default)('DraggableCore: handleDragStart: %j', coreEvent); - - // Call event handler. If it returns explicit false, cancel. - (0, _log2.default)('calling', _this.props.onStart); - var shouldUpdate = _this.props.onStart(e, coreEvent); - if (shouldUpdate === false) return; - - // Add a style to the body to disable user-select. This prevents text from - // being selected all over the page. - if (_this.props.enableUserSelectHack) (0, _domFns.addUserSelectStyles)(ownerDocument); - - // Initiate dragging. Set the current x and y as offsets - // so we know how much we've moved during the drag. This allows us - // to drag elements around even if they have been moved, without issue. - _this.setState({ - dragging: true, - - lastX: x, - lastY: y - }); - - // Add events to the document directly so we catch when the user's mouse/touch moves outside of - // this element. We use different events depending on whether or not we have detected that this - // is a touch-capable device. - (0, _domFns.addEvent)(ownerDocument, dragEventFor.move, _this.handleDrag); - (0, _domFns.addEvent)(ownerDocument, dragEventFor.stop, _this.handleDragStop); - }, _this.handleDrag = function (e) { - - // Prevent scrolling on mobile devices, like ipad/iphone. - if (e.type === 'touchmove') e.preventDefault(); - - // Get the current drag point from the event. This is used as the offset. - var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _this); - if (position == null) return; - var x = position.x, - y = position.y; - - // Snap to grid if prop has been provided - - if (Array.isArray(_this.props.grid)) { - var _deltaX = x - _this.state.lastX, - _deltaY = y - _this.state.lastY; - - var _snapToGrid = (0, _positionFns.snapToGrid)(_this.props.grid, _deltaX, _deltaY); - - var _snapToGrid2 = _slicedToArray(_snapToGrid, 2); - - _deltaX = _snapToGrid2[0]; - _deltaY = _snapToGrid2[1]; - - if (!_deltaX && !_deltaY) return; // skip useless drag - x = _this.state.lastX + _deltaX, y = _this.state.lastY + _deltaY; - } - - var coreEvent = (0, _positionFns.createCoreData)(_this, x, y); - - (0, _log2.default)('DraggableCore: handleDrag: %j', coreEvent); - - // Call event handler. If it returns explicit false, trigger end. - var shouldUpdate = _this.props.onDrag(e, coreEvent); - if (shouldUpdate === false) { - try { - // $FlowIgnore - _this.handleDragStop(new MouseEvent('mouseup')); - } catch (err) { - // Old browsers - var event = ((document.createEvent('MouseEvents') /*: any*/) /*: MouseTouchEvent*/); - // I see why this insanity was deprecated - // $FlowIgnore - event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); - _this.handleDragStop(event); - } - return; - } - - _this.setState({ - lastX: x, - lastY: y - }); - }, _this.handleDragStop = function (e) { - if (!_this.state.dragging) return; - - var position = (0, _positionFns.getControlPosition)(e, _this.state.touchIdentifier, _this); - if (position == null) return; - var x = position.x, - y = position.y; - - var coreEvent = (0, _positionFns.createCoreData)(_this, x, y); - - var thisNode = _reactDom2.default.findDOMNode(_this); - if (thisNode) { - // Remove user-select hack - if (_this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(thisNode.ownerDocument); - } - - (0, _log2.default)('DraggableCore: handleDragStop: %j', coreEvent); - - // Reset the el. - _this.setState({ - dragging: false, - lastX: NaN, - lastY: NaN - }); - - // Call event handler - _this.props.onStop(e, coreEvent); - - if (thisNode) { - // Remove event handlers - (0, _log2.default)('DraggableCore: Removing handlers'); - (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.move, _this.handleDrag); - (0, _domFns.removeEvent)(thisNode.ownerDocument, dragEventFor.stop, _this.handleDragStop); - } - }, _this.onMouseDown = function (e) { - dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse - - return _this.handleDragStart(e); - }, _this.onMouseUp = function (e) { - dragEventFor = eventsFor.mouse; - - return _this.handleDragStop(e); - }, _this.onTouchStart = function (e) { - // We're on a touch device now, so change the event handlers - dragEventFor = eventsFor.touch; - - return _this.handleDragStart(e); - }, _this.onTouchEnd = function (e) { - // We're on a touch device now, so change the event handlers - dragEventFor = eventsFor.touch; - - return _this.handleDragStop(e); - }, _temp), _possibleConstructorReturn(_this, _ret); - } - - _createClass(DraggableCore, [{ - key: 'componentWillUnmount', - value: function componentWillUnmount() { - // Remove any leftover event handlers. Remove both touch and mouse handlers in case - // some browser quirk caused a touch event to fire during a mouse move, or vice versa. - var thisNode = _reactDom2.default.findDOMNode(this); - if (thisNode) { - var ownerDocument = thisNode.ownerDocument; - - (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.move, this.handleDrag); - (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.move, this.handleDrag); - (0, _domFns.removeEvent)(ownerDocument, eventsFor.mouse.stop, this.handleDragStop); - (0, _domFns.removeEvent)(ownerDocument, eventsFor.touch.stop, this.handleDragStop); - if (this.props.enableUserSelectHack) (0, _domFns.removeUserSelectStyles)(ownerDocument); - } - } - - // Same as onMouseDown (start drag), but now consider this a touch device. - - }, { - key: 'render', - value: function render() { - // Reuse the child provided - // This makes it flexible to use whatever element is wanted (div, ul, etc) - return _react2.default.cloneElement(_react2.default.Children.only(this.props.children), { - style: (0, _domFns.styleHacks)(this.props.children.props.style), - - // Note: mouseMove handler is attached to document so it will still function - // when the user drags quickly and leaves the bounds of the element. - onMouseDown: this.onMouseDown, - onTouchStart: this.onTouchStart, - onMouseUp: this.onMouseUp, - onTouchEnd: this.onTouchEnd - }); - } - }]); - - return DraggableCore; -}(_react2.default.Component); - -DraggableCore.displayName = 'DraggableCore'; -DraggableCore.propTypes = { - /** - * `allowAnyClick` allows dragging using any mouse button. - * By default, we only accept the left button. - * - * Defaults to `false`. - */ - allowAnyClick: _propTypes2.default.bool, - - /** - * `disabled`, if true, stops the from dragging. All handlers, - * with the exception of `onMouseDown`, will not fire. - */ - disabled: _propTypes2.default.bool, - - /** - * By default, we add 'user-select:none' attributes to the document body - * to prevent ugly text selection during drag. If this is causing problems - * for your app, set this to `false`. - */ - enableUserSelectHack: _propTypes2.default.bool, - - /** - * `offsetParent`, if set, uses the passed DOM node to compute drag offsets - * instead of using the parent node. - */ - offsetParent: function offsetParent(props /*: DraggableCoreProps*/, propName /*: $Keys*/) { - if (process.browser === true && props[propName] && props[propName].nodeType !== 1) { - throw new Error('Draggable\'s offsetParent must be a DOM Node.'); - } - }, - - /** - * `grid` specifies the x and y that dragging should snap to. - */ - grid: _propTypes2.default.arrayOf(_propTypes2.default.number), - - /** - * `handle` specifies a selector to be used as the handle that initiates drag. - * - * Example: - * - * ```jsx - * let App = React.createClass({ - * render: function () { - * return ( - * - *
    - *
    Click me to drag
    - *
    This is some other content
    - *
    - *
    - * ); - * } - * }); - * ``` - */ - handle: _propTypes2.default.string, - - /** - * `cancel` specifies a selector to be used to prevent drag initialization. - * - * Example: - * - * ```jsx - * let App = React.createClass({ - * render: function () { - * return( - * - *
    - *
    You can't drag from here
    - *
    Dragging here works fine
    - *
    - *
    - * ); - * } - * }); - * ``` - */ - cancel: _propTypes2.default.string, - - /** - * Called when dragging starts. - * If this function returns the boolean false, dragging will be canceled. - */ - onStart: _propTypes2.default.func, - - /** - * Called while dragging. - * If this function returns the boolean false, dragging will be canceled. - */ - onDrag: _propTypes2.default.func, - - /** - * Called when dragging stops. - * If this function returns the boolean false, the drag will remain active. - */ - onStop: _propTypes2.default.func, - - /** - * A workaround option which can be passed if onMouseDown needs to be accessed, - * since it'll always be blocked (as there is internal use of onMouseDown) - */ - onMouseDown: _propTypes2.default.func, - - /** - * These properties should be defined on the child, not here. - */ - className: _shims.dontSetMe, - style: _shims.dontSetMe, - transform: _shims.dontSetMe -}; -DraggableCore.defaultProps = { - allowAnyClick: false, // by default only accept left click - cancel: null, - disabled: false, - enableUserSelectHack: true, - offsetParent: null, - handle: null, - grid: null, - transform: null, - onStart: function onStart() {}, - onDrag: function onDrag() {}, - onStop: function onStop() {}, - onMouseDown: function onMouseDown() {} -}; -exports.default = DraggableCore; -/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(20))) - -/***/ }), -/* 11 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = log; - -/*eslint no-console:0*/ -function log() { - var _console; - - if (undefined) (_console = console).log.apply(_console, arguments); -} - -/***/ }), -/* 12 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var Draggable = __webpack_require__(13).default; - -// Previous versions of this lib exported as the root export. As to not break -// them, or TypeScript, we export *both* as the root and as 'default'. -// See https://github.com/mzabriskie/react-draggable/pull/254 -// and https://github.com/mzabriskie/react-draggable/issues/266 -module.exports = Draggable; -module.exports.default = Draggable; -module.exports.DraggableCore = __webpack_require__(10).default; - -/***/ }), -/* 13 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _react = __webpack_require__(6); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = __webpack_require__(7); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactDom = __webpack_require__(4); - -var _reactDom2 = _interopRequireDefault(_reactDom); - -var _classnames = __webpack_require__(18); - -var _classnames2 = _interopRequireDefault(_classnames); - -var _domFns = __webpack_require__(5); - -var _positionFns = __webpack_require__(9); - -var _shims = __webpack_require__(0); - -var _DraggableCore = __webpack_require__(10); - -var _DraggableCore2 = _interopRequireDefault(_DraggableCore); - -var _log = __webpack_require__(11); - -var _log2 = _interopRequireDefault(_log); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -/*:: import type {ControlPosition, DraggableBounds, DraggableCoreProps} from './DraggableCore';*/ -/*:: import type {DraggableEventHandler} from './utils/types';*/ -/*:: import type {Element as ReactElement} from 'react';*/ -/*:: type DraggableState = { - dragging: boolean, - dragged: boolean, - x: number, y: number, - slackX: number, slackY: number, - isElementSVG: boolean -};*/ - - -// -// Define -// - -/*:: export type DraggableProps = { - ...$Exact, - axis: 'both' | 'x' | 'y' | 'none', - bounds: DraggableBounds | string | false, - defaultClassName: string, - defaultClassNameDragging: string, - defaultClassNameDragged: string, - defaultPosition: ControlPosition, - position: ControlPosition, - scale: number -};*/ - -var Draggable = function (_React$Component) { - _inherits(Draggable, _React$Component); - - function Draggable(props /*: DraggableProps*/) { - _classCallCheck(this, Draggable); - - var _this = _possibleConstructorReturn(this, (Draggable.__proto__ || Object.getPrototypeOf(Draggable)).call(this, props)); - - _this.onDragStart = function (e, coreData) { - (0, _log2.default)('Draggable: onDragStart: %j', coreData); - - // Short-circuit if user's callback killed it. - var shouldStart = _this.props.onStart(e, (0, _positionFns.createDraggableData)(_this, coreData)); - // Kills start event on core as well, so move handlers are never bound. - if (shouldStart === false) return false; - - _this.setState({ dragging: true, dragged: true }); - }; - - _this.onDrag = function (e, coreData) { - if (!_this.state.dragging) return false; - (0, _log2.default)('Draggable: onDrag: %j', coreData); - - var uiData = (0, _positionFns.createDraggableData)(_this, coreData); - - var newState /*: $Shape*/ = { - x: uiData.x, - y: uiData.y - }; - - // Keep within bounds. - if (_this.props.bounds) { - // Save original x and y. - var _x = newState.x, - _y = newState.y; - - // Add slack to the values used to calculate bound position. This will ensure that if - // we start removing slack, the element won't react to it right away until it's been - // completely removed. - - newState.x += _this.state.slackX; - newState.y += _this.state.slackY; - - // Get bound position. This will ceil/floor the x and y within the boundaries. - - var _getBoundPosition = (0, _positionFns.getBoundPosition)(_this, newState.x, newState.y), - _getBoundPosition2 = _slicedToArray(_getBoundPosition, 2), - newStateX = _getBoundPosition2[0], - newStateY = _getBoundPosition2[1]; - - newState.x = newStateX; - newState.y = newStateY; - - // Recalculate slack by noting how much was shaved by the boundPosition handler. - newState.slackX = _this.state.slackX + (_x - newState.x); - newState.slackY = _this.state.slackY + (_y - newState.y); - - // Update the event we fire to reflect what really happened after bounds took effect. - uiData.x = newState.x; - uiData.y = newState.y; - uiData.deltaX = newState.x - _this.state.x; - uiData.deltaY = newState.y - _this.state.y; - } - - // Short-circuit if user's callback killed it. - var shouldUpdate = _this.props.onDrag(e, uiData); - if (shouldUpdate === false) return false; - - _this.setState(newState); - }; - - _this.onDragStop = function (e, coreData) { - if (!_this.state.dragging) return false; - - // Short-circuit if user's callback killed it. - var shouldStop = _this.props.onStop(e, (0, _positionFns.createDraggableData)(_this, coreData)); - if (shouldStop === false) return false; - - (0, _log2.default)('Draggable: onDragStop: %j', coreData); - - var newState /*: $Shape*/ = { - dragging: false, - slackX: 0, - slackY: 0 - }; - - // If this is a controlled component, the result of this operation will be to - // revert back to the old position. We expect a handler on `onDragStop`, at the least. - var controlled = Boolean(_this.props.position); - if (controlled) { - var _this$props$position = _this.props.position, - _x2 = _this$props$position.x, - _y2 = _this$props$position.y; - - newState.x = _x2; - newState.y = _y2; - } - - _this.setState(newState); - }; - - _this.state = { - // Whether or not we are currently dragging. - dragging: false, - - // Whether or not we have been dragged before. - dragged: false, - - // Current transform x and y. - x: props.position ? props.position.x : props.defaultPosition.x, - y: props.position ? props.position.y : props.defaultPosition.y, - - // Used for compensating for out-of-bounds drags - slackX: 0, slackY: 0, - - // Can only determine if SVG after mounting - isElementSVG: false - }; - return _this; - } - - _createClass(Draggable, [{ - key: 'componentWillMount', - value: function componentWillMount() { - if (this.props.position && !(this.props.onDrag || this.props.onStop)) { - // eslint-disable-next-line - console.warn('A `position` was applied to this , without drag handlers. This will make this ' + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + '`position` of this element.'); - } - } - }, { - key: 'componentDidMount', - value: function componentDidMount() { - // Check to see if the element passed is an instanceof SVGElement - if (typeof window.SVGElement !== 'undefined' && _reactDom2.default.findDOMNode(this) instanceof window.SVGElement) { - this.setState({ isElementSVG: true }); - } - } - }, { - key: 'componentWillReceiveProps', - value: function componentWillReceiveProps(nextProps /*: Object*/) { - // Set x/y if position has changed - if (nextProps.position && (!this.props.position || nextProps.position.x !== this.props.position.x || nextProps.position.y !== this.props.position.y)) { - this.setState({ x: nextProps.position.x, y: nextProps.position.y }); - } - } - }, { - key: 'componentWillUnmount', - value: function componentWillUnmount() { - this.setState({ dragging: false }); // prevents invariant if unmounted while dragging - } - }, { - key: 'render', - value: function render() /*: ReactElement*/ { - var _classNames; - - var style = {}, - svgTransform = null; - - // If this is controlled, we don't want to move it - unless it's dragging. - var controlled = Boolean(this.props.position); - var draggable = !controlled || this.state.dragging; - - var position = this.props.position || this.props.defaultPosition; - var transformOpts = { - // Set left if horizontal drag is enabled - x: (0, _positionFns.canDragX)(this) && draggable ? this.state.x : position.x, - - // Set top if vertical drag is enabled - y: (0, _positionFns.canDragY)(this) && draggable ? this.state.y : position.y - }; - - // If this element was SVG, we use the `transform` attribute. - if (this.state.isElementSVG) { - svgTransform = (0, _domFns.createSVGTransform)(transformOpts); - } else { - // Add a CSS transform to move the element around. This allows us to move the element around - // without worrying about whether or not it is relatively or absolutely positioned. - // If the item you are dragging already has a transform set, wrap it in a so - // has a clean slate. - style = (0, _domFns.createCSSTransform)(transformOpts); - } - - var _props = this.props, - defaultClassName = _props.defaultClassName, - defaultClassNameDragging = _props.defaultClassNameDragging, - defaultClassNameDragged = _props.defaultClassNameDragged; - - - var children = _react2.default.Children.only(this.props.children); - - // Mark with class while dragging - var className = (0, _classnames2.default)(children.props.className || '', defaultClassName, (_classNames = {}, _defineProperty(_classNames, defaultClassNameDragging, this.state.dragging), _defineProperty(_classNames, defaultClassNameDragged, this.state.dragged), _classNames)); - - // Reuse the child provided - // This makes it flexible to use whatever element is wanted (div, ul, etc) - return _react2.default.createElement( - _DraggableCore2.default, - _extends({}, this.props, { onStart: this.onDragStart, onDrag: this.onDrag, onStop: this.onDragStop }), - _react2.default.cloneElement(children, { - className: className, - style: _extends({}, children.props.style, style), - transform: svgTransform - }) - ); - } - }]); - - return Draggable; -}(_react2.default.Component); - -Draggable.displayName = 'Draggable'; -Draggable.propTypes = _extends({}, _DraggableCore2.default.propTypes, { - - /** - * `axis` determines which axis the draggable can move. - * - * Note that all callbacks will still return data as normal. This only - * controls flushing to the DOM. - * - * 'both' allows movement horizontally and vertically. - * 'x' limits movement to horizontal axis. - * 'y' limits movement to vertical axis. - * 'none' limits all movement. - * - * Defaults to 'both'. - */ - axis: _propTypes2.default.oneOf(['both', 'x', 'y', 'none']), - - /** - * `bounds` determines the range of movement available to the element. - * Available values are: - * - * 'parent' restricts movement within the Draggable's parent node. - * - * Alternatively, pass an object with the following properties, all of which are optional: - * - * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND} - * - * All values are in px. - * - * Example: - * - * ```jsx - * let App = React.createClass({ - * render: function () { - * return ( - * - *
    Content
    - *
    - * ); - * } - * }); - * ``` - */ - bounds: _propTypes2.default.oneOfType([_propTypes2.default.shape({ - left: _propTypes2.default.number, - right: _propTypes2.default.number, - top: _propTypes2.default.number, - bottom: _propTypes2.default.number - }), _propTypes2.default.string, _propTypes2.default.oneOf([false])]), - - defaultClassName: _propTypes2.default.string, - defaultClassNameDragging: _propTypes2.default.string, - defaultClassNameDragged: _propTypes2.default.string, - - /** - * `defaultPosition` specifies the x and y that the dragged item should start at - * - * Example: - * - * ```jsx - * let App = React.createClass({ - * render: function () { - * return ( - * - *
    I start with transformX: 25px and transformY: 25px;
    - *
    - * ); - * } - * }); - * ``` - */ - defaultPosition: _propTypes2.default.shape({ - x: _propTypes2.default.number, - y: _propTypes2.default.number - }), - - scale: _propTypes2.default.number, - - /** - * `position`, if present, defines the current position of the element. - * - * This is similar to how form elements in React work - if no `position` is supplied, the component - * is uncontrolled. - * - * Example: - * - * ```jsx - * let App = React.createClass({ - * render: function () { - * return ( - * - *
    I start with transformX: 25px and transformY: 25px;
    - *
    - * ); - * } - * }); - * ``` - */ - position: _propTypes2.default.shape({ - x: _propTypes2.default.number, - y: _propTypes2.default.number - }), - - /** - * These properties should be defined on the child, not here. - */ - className: _shims.dontSetMe, - style: _shims.dontSetMe, - transform: _shims.dontSetMe -}); -Draggable.defaultProps = _extends({}, _DraggableCore2.default.defaultProps, { - axis: 'both', - bounds: false, - defaultClassName: 'react-draggable', - defaultClassNameDragging: 'react-draggable-dragging', - defaultClassNameDragged: 'react-draggable-dragged', - defaultPosition: { x: 0, y: 0 }, - position: null, - scale: 1 -}); -exports.default = Draggable; - -/***/ }), -/* 14 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * Copyright (c) 2013-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - - - -var emptyFunction = __webpack_require__(1); -var invariant = __webpack_require__(2); -var warning = __webpack_require__(8); -var assign = __webpack_require__(15); - -var ReactPropTypesSecret = __webpack_require__(3); -var checkPropTypes = __webpack_require__(16); - -module.exports = function(isValidElement, throwOnDirectAccess) { - /* global Symbol */ - var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; - var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. - - /** - * Returns the iterator method function contained on the iterable object. - * - * Be sure to invoke the function with the iterable as context: - * - * var iteratorFn = getIteratorFn(myIterable); - * if (iteratorFn) { - * var iterator = iteratorFn.call(myIterable); - * ... - * } - * - * @param {?object} maybeIterable - * @return {?function} - */ - function getIteratorFn(maybeIterable) { - var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); - if (typeof iteratorFn === 'function') { - return iteratorFn; - } - } - - /** - * Collection of methods that allow declaration and validation of props that are - * supplied to React components. Example usage: - * - * var Props = require('ReactPropTypes'); - * var MyArticle = React.createClass({ - * propTypes: { - * // An optional string prop named "description". - * description: Props.string, - * - * // A required enum prop named "category". - * category: Props.oneOf(['News','Photos']).isRequired, - * - * // A prop named "dialog" that requires an instance of Dialog. - * dialog: Props.instanceOf(Dialog).isRequired - * }, - * render: function() { ... } - * }); - * - * A more formal specification of how these methods are used: - * - * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) - * decl := ReactPropTypes.{type}(.isRequired)? - * - * Each and every declaration produces a function with the same signature. This - * allows the creation of custom validation functions. For example: - * - * var MyLink = React.createClass({ - * propTypes: { - * // An optional string or URI prop named "href". - * href: function(props, propName, componentName) { - * var propValue = props[propName]; - * if (propValue != null && typeof propValue !== 'string' && - * !(propValue instanceof URI)) { - * return new Error( - * 'Expected a string or an URI for ' + propName + ' in ' + - * componentName - * ); - * } - * } - * }, - * render: function() {...} - * }); - * - * @internal - */ - - var ANONYMOUS = '<>'; - - // Important! - // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. - var ReactPropTypes = { - array: createPrimitiveTypeChecker('array'), - bool: createPrimitiveTypeChecker('boolean'), - func: createPrimitiveTypeChecker('function'), - number: createPrimitiveTypeChecker('number'), - object: createPrimitiveTypeChecker('object'), - string: createPrimitiveTypeChecker('string'), - symbol: createPrimitiveTypeChecker('symbol'), - - any: createAnyTypeChecker(), - arrayOf: createArrayOfTypeChecker, - element: createElementTypeChecker(), - instanceOf: createInstanceTypeChecker, - node: createNodeChecker(), - objectOf: createObjectOfTypeChecker, - oneOf: createEnumTypeChecker, - oneOfType: createUnionTypeChecker, - shape: createShapeTypeChecker, - exact: createStrictShapeTypeChecker, - }; - - /** - * inlined Object.is polyfill to avoid requiring consumers ship their own - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is - */ - /*eslint-disable no-self-compare*/ - function is(x, y) { - // SameValue algorithm - if (x === y) { - // Steps 1-5, 7-10 - // Steps 6.b-6.e: +0 != -0 - return x !== 0 || 1 / x === 1 / y; - } else { - // Step 6.a: NaN == NaN - return x !== x && y !== y; - } - } - /*eslint-enable no-self-compare*/ - - /** - * We use an Error-like object for backward compatibility as people may call - * PropTypes directly and inspect their output. However, we don't use real - * Errors anymore. We don't inspect their stack anyway, and creating them - * is prohibitively expensive if they are created too often, such as what - * happens in oneOfType() for any type before the one that matched. - */ - function PropTypeError(message) { - this.message = message; - this.stack = ''; - } - // Make `instanceof Error` still work for returned errors. - PropTypeError.prototype = Error.prototype; - - function createChainableTypeChecker(validate) { - if (Object({"DRAGGABLE_DEBUG":undefined}).NODE_ENV !== 'production') { - var manualPropTypeCallCache = {}; - var manualPropTypeWarningCount = 0; - } - function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { - componentName = componentName || ANONYMOUS; - propFullName = propFullName || propName; - - if (secret !== ReactPropTypesSecret) { - if (throwOnDirectAccess) { - // New behavior only for users of `prop-types` package - invariant( - false, - 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + - 'Use `PropTypes.checkPropTypes()` to call them. ' + - 'Read more at http://fb.me/use-check-prop-types' - ); - } else if (Object({"DRAGGABLE_DEBUG":undefined}).NODE_ENV !== 'production' && typeof console !== 'undefined') { - // Old behavior for people using React.PropTypes - var cacheKey = componentName + ':' + propName; - if ( - !manualPropTypeCallCache[cacheKey] && - // Avoid spamming the console because they are often not actionable except for lib authors - manualPropTypeWarningCount < 3 - ) { - warning( - false, - 'You are manually calling a React.PropTypes validation ' + - 'function for the `%s` prop on `%s`. This is deprecated ' + - 'and will throw in the standalone `prop-types` package. ' + - 'You may be seeing this warning due to a third-party PropTypes ' + - 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.', - propFullName, - componentName - ); - manualPropTypeCallCache[cacheKey] = true; - manualPropTypeWarningCount++; - } - } - } - if (props[propName] == null) { - if (isRequired) { - if (props[propName] === null) { - return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); - } - return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); - } - return null; - } else { - return validate(props, propName, componentName, location, propFullName); - } - } - - var chainedCheckType = checkType.bind(null, false); - chainedCheckType.isRequired = checkType.bind(null, true); - - return chainedCheckType; - } - - function createPrimitiveTypeChecker(expectedType) { - function validate(props, propName, componentName, location, propFullName, secret) { - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== expectedType) { - // `propValue` being instance of, say, date/regexp, pass the 'object' - // check, but we can offer a more precise error message here rather than - // 'of type `object`'. - var preciseType = getPreciseType(propValue); - - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.')); - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createAnyTypeChecker() { - return createChainableTypeChecker(emptyFunction.thatReturnsNull); - } - - function createArrayOfTypeChecker(typeChecker) { - function validate(props, propName, componentName, location, propFullName) { - if (typeof typeChecker !== 'function') { - return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); - } - var propValue = props[propName]; - if (!Array.isArray(propValue)) { - var propType = getPropType(propValue); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); - } - for (var i = 0; i < propValue.length; i++) { - var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); - if (error instanceof Error) { - return error; - } - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createElementTypeChecker() { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - if (!isValidElement(propValue)) { - var propType = getPropType(propValue); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createInstanceTypeChecker(expectedClass) { - function validate(props, propName, componentName, location, propFullName) { - if (!(props[propName] instanceof expectedClass)) { - var expectedClassName = expectedClass.name || ANONYMOUS; - var actualClassName = getClassName(props[propName]); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createEnumTypeChecker(expectedValues) { - if (!Array.isArray(expectedValues)) { - Object({"DRAGGABLE_DEBUG":undefined}).NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0; - return emptyFunction.thatReturnsNull; - } - - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - for (var i = 0; i < expectedValues.length; i++) { - if (is(propValue, expectedValues[i])) { - return null; - } - } - - var valuesString = JSON.stringify(expectedValues); - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); - } - return createChainableTypeChecker(validate); - } - - function createObjectOfTypeChecker(typeChecker) { - function validate(props, propName, componentName, location, propFullName) { - if (typeof typeChecker !== 'function') { - return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); - } - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== 'object') { - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); - } - for (var key in propValue) { - if (propValue.hasOwnProperty(key)) { - var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); - if (error instanceof Error) { - return error; - } - } - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createUnionTypeChecker(arrayOfTypeCheckers) { - if (!Array.isArray(arrayOfTypeCheckers)) { - Object({"DRAGGABLE_DEBUG":undefined}).NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0; - return emptyFunction.thatReturnsNull; - } - - for (var i = 0; i < arrayOfTypeCheckers.length; i++) { - var checker = arrayOfTypeCheckers[i]; - if (typeof checker !== 'function') { - warning( - false, - 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + - 'received %s at index %s.', - getPostfixForTypeWarning(checker), - i - ); - return emptyFunction.thatReturnsNull; - } - } - - function validate(props, propName, componentName, location, propFullName) { - for (var i = 0; i < arrayOfTypeCheckers.length; i++) { - var checker = arrayOfTypeCheckers[i]; - if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) { - return null; - } - } - - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.')); - } - return createChainableTypeChecker(validate); - } - - function createNodeChecker() { - function validate(props, propName, componentName, location, propFullName) { - if (!isNode(props[propName])) { - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createShapeTypeChecker(shapeTypes) { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== 'object') { - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); - } - for (var key in shapeTypes) { - var checker = shapeTypes[key]; - if (!checker) { - continue; - } - var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); - if (error) { - return error; - } - } - return null; - } - return createChainableTypeChecker(validate); - } - - function createStrictShapeTypeChecker(shapeTypes) { - function validate(props, propName, componentName, location, propFullName) { - var propValue = props[propName]; - var propType = getPropType(propValue); - if (propType !== 'object') { - return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); - } - // We need to check all keys in case some are required but missing from - // props. - var allKeys = assign({}, props[propName], shapeTypes); - for (var key in allKeys) { - var checker = shapeTypes[key]; - if (!checker) { - return new PropTypeError( - 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + - '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + - '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ') - ); - } - var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); - if (error) { - return error; - } - } - return null; - } - - return createChainableTypeChecker(validate); - } - - function isNode(propValue) { - switch (typeof propValue) { - case 'number': - case 'string': - case 'undefined': - return true; - case 'boolean': - return !propValue; - case 'object': - if (Array.isArray(propValue)) { - return propValue.every(isNode); - } - if (propValue === null || isValidElement(propValue)) { - return true; - } - - var iteratorFn = getIteratorFn(propValue); - if (iteratorFn) { - var iterator = iteratorFn.call(propValue); - var step; - if (iteratorFn !== propValue.entries) { - while (!(step = iterator.next()).done) { - if (!isNode(step.value)) { - return false; - } - } - } else { - // Iterator will provide entry [k,v] tuples rather than values. - while (!(step = iterator.next()).done) { - var entry = step.value; - if (entry) { - if (!isNode(entry[1])) { - return false; - } - } - } - } - } else { - return false; - } - - return true; - default: - return false; - } - } - - function isSymbol(propType, propValue) { - // Native Symbol. - if (propType === 'symbol') { - return true; - } - - // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' - if (propValue['@@toStringTag'] === 'Symbol') { - return true; - } - - // Fallback for non-spec compliant Symbols which are polyfilled. - if (typeof Symbol === 'function' && propValue instanceof Symbol) { - return true; - } - - return false; - } - - // Equivalent of `typeof` but with special handling for array and regexp. - function getPropType(propValue) { - var propType = typeof propValue; - if (Array.isArray(propValue)) { - return 'array'; - } - if (propValue instanceof RegExp) { - // Old webkits (at least until Android 4.0) return 'function' rather than - // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ - // passes PropTypes.object. - return 'object'; - } - if (isSymbol(propType, propValue)) { - return 'symbol'; - } - return propType; - } - - // This handles more types than `getPropType`. Only used for error messages. - // See `createPrimitiveTypeChecker`. - function getPreciseType(propValue) { - if (typeof propValue === 'undefined' || propValue === null) { - return '' + propValue; - } - var propType = getPropType(propValue); - if (propType === 'object') { - if (propValue instanceof Date) { - return 'date'; - } else if (propValue instanceof RegExp) { - return 'regexp'; - } - } - return propType; - } - - // Returns a string that is postfixed to a warning about an invalid type. - // For example, "undefined" or "of type array" - function getPostfixForTypeWarning(value) { - var type = getPreciseType(value); - switch (type) { - case 'array': - case 'object': - return 'an ' + type; - case 'boolean': - case 'date': - case 'regexp': - return 'a ' + type; - default: - return type; - } - } - - // Returns class name of the object, if any. - function getClassName(propValue) { - if (!propValue.constructor || !propValue.constructor.name) { - return ANONYMOUS; - } - return propValue.constructor.name; - } - - ReactPropTypes.checkPropTypes = checkPropTypes; - ReactPropTypes.PropTypes = ReactPropTypes; - - return ReactPropTypes; -}; - - -/***/ }), -/* 15 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* -object-assign -(c) Sindre Sorhus -@license MIT -*/ - - -/* eslint-disable no-unused-vars */ -var getOwnPropertySymbols = Object.getOwnPropertySymbols; -var hasOwnProperty = Object.prototype.hasOwnProperty; -var propIsEnumerable = Object.prototype.propertyIsEnumerable; - -function toObject(val) { - if (val === null || val === undefined) { - throw new TypeError('Object.assign cannot be called with null or undefined'); - } - - return Object(val); -} - -function shouldUseNative() { - try { - if (!Object.assign) { - return false; - } - - // Detect buggy property enumeration order in older V8 versions. - - // https://bugs.chromium.org/p/v8/issues/detail?id=4118 - var test1 = new String('abc'); // eslint-disable-line no-new-wrappers - test1[5] = 'de'; - if (Object.getOwnPropertyNames(test1)[0] === '5') { - return false; - } - - // https://bugs.chromium.org/p/v8/issues/detail?id=3056 - var test2 = {}; - for (var i = 0; i < 10; i++) { - test2['_' + String.fromCharCode(i)] = i; - } - var order2 = Object.getOwnPropertyNames(test2).map(function (n) { - return test2[n]; - }); - if (order2.join('') !== '0123456789') { - return false; - } - - // https://bugs.chromium.org/p/v8/issues/detail?id=3056 - var test3 = {}; - 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { - test3[letter] = letter; - }); - if (Object.keys(Object.assign({}, test3)).join('') !== - 'abcdefghijklmnopqrst') { - return false; - } - - return true; - } catch (err) { - // We don't expect any of the above to throw, but better to be safe. - return false; - } -} - -module.exports = shouldUseNative() ? Object.assign : function (target, source) { - var from; - var to = toObject(target); - var symbols; - - for (var s = 1; s < arguments.length; s++) { - from = Object(arguments[s]); - - for (var key in from) { - if (hasOwnProperty.call(from, key)) { - to[key] = from[key]; - } - } - - if (getOwnPropertySymbols) { - symbols = getOwnPropertySymbols(from); - for (var i = 0; i < symbols.length; i++) { - if (propIsEnumerable.call(from, symbols[i])) { - to[symbols[i]] = from[symbols[i]]; - } - } - } - } - - return to; -}; - - -/***/ }), -/* 16 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * Copyright (c) 2013-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - - - -if (Object({"DRAGGABLE_DEBUG":undefined}).NODE_ENV !== 'production') { - var invariant = __webpack_require__(2); - var warning = __webpack_require__(8); - var ReactPropTypesSecret = __webpack_require__(3); - var loggedTypeFailures = {}; -} - -/** - * Assert that the values match with the type specs. - * Error messages are memorized and will only be shown once. - * - * @param {object} typeSpecs Map of name to a ReactPropType - * @param {object} values Runtime values that need to be type-checked - * @param {string} location e.g. "prop", "context", "child context" - * @param {string} componentName Name of the component for error messages. - * @param {?Function} getStack Returns the component stack. - * @private - */ -function checkPropTypes(typeSpecs, values, location, componentName, getStack) { - if (Object({"DRAGGABLE_DEBUG":undefined}).NODE_ENV !== 'production') { - for (var typeSpecName in typeSpecs) { - if (typeSpecs.hasOwnProperty(typeSpecName)) { - var error; - // Prop type validation may throw. In case they do, we don't want to - // fail the render phase where it didn't fail before. So we log it. - // After these have been cleaned up, we'll let them throw. - try { - // This is intentionally an invariant that gets caught. It's the same - // behavior as without this statement except with a better message. - invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]); - error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); - } catch (ex) { - error = ex; - } - warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error); - if (error instanceof Error && !(error.message in loggedTypeFailures)) { - // Only monitor this failure once because there tends to be a lot of the - // same error. - loggedTypeFailures[error.message] = true; - - var stack = getStack ? getStack() : ''; - - warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : ''); - } - } - } - } -} - -module.exports = checkPropTypes; - - -/***/ }), -/* 17 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * Copyright (c) 2013-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - - - -var emptyFunction = __webpack_require__(1); -var invariant = __webpack_require__(2); -var ReactPropTypesSecret = __webpack_require__(3); - -module.exports = function() { - function shim(props, propName, componentName, location, propFullName, secret) { - if (secret === ReactPropTypesSecret) { - // It is still safe when called from React. - return; - } - invariant( - false, - 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + - 'Use PropTypes.checkPropTypes() to call them. ' + - 'Read more at http://fb.me/use-check-prop-types' - ); - }; - shim.isRequired = shim; - function getShim() { - return shim; - }; - // Important! - // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`. - var ReactPropTypes = { - array: shim, - bool: shim, - func: shim, - number: shim, - object: shim, - string: shim, - symbol: shim, - - any: shim, - arrayOf: getShim, - element: shim, - instanceOf: getShim, - node: shim, - objectOf: getShim, - oneOf: getShim, - oneOfType: getShim, - shape: getShim, - exact: getShim - }; - - ReactPropTypes.checkPropTypes = emptyFunction; - ReactPropTypes.PropTypes = ReactPropTypes; - - return ReactPropTypes; -}; - - -/***/ }), -/* 18 */ -/***/ (function(module, exports, __webpack_require__) { - -var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! - Copyright (c) 2016 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames -*/ -/* global define */ - -(function () { - 'use strict'; - - var hasOwn = {}.hasOwnProperty; - - function classNames () { - var classes = []; - - for (var i = 0; i < arguments.length; i++) { - var arg = arguments[i]; - if (!arg) continue; - - var argType = typeof arg; - - if (argType === 'string' || argType === 'number') { - classes.push(arg); - } else if (Array.isArray(arg)) { - classes.push(classNames.apply(null, arg)); - } else if (argType === 'object') { - for (var key in arg) { - if (hasOwn.call(arg, key) && arg[key]) { - classes.push(key); - } - } - } - } - - return classes.join(' '); - } - - if (typeof module !== 'undefined' && module.exports) { - module.exports = classNames; - } else if (true) { - // register as 'classnames', consistent with npm package name - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () { - return classNames; - }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else { - window.classNames = classNames; - } -}()); - - -/***/ }), -/* 19 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getPrefix = getPrefix; -exports.browserPrefixToKey = browserPrefixToKey; -exports.browserPrefixToStyle = browserPrefixToStyle; -var prefixes = ['Moz', 'Webkit', 'O', 'ms']; -function getPrefix() /*: string*/ { - var prop /*: string*/ = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform'; - - // Checking specifically for 'window.document' is for pseudo-browser server-side - // environments that define 'window' as the global context. - // E.g. React-rails (see https://github.com/reactjs/react-rails/pull/84) - if (typeof window === 'undefined' || typeof window.document === 'undefined') return ''; - - var style = window.document.documentElement.style; - - if (prop in style) return ''; - - for (var i = 0; i < prefixes.length; i++) { - if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i]; - } - - return ''; -} - -function browserPrefixToKey(prop /*: string*/, prefix /*: string*/) /*: string*/ { - return prefix ? '' + prefix + kebabToTitleCase(prop) : prop; -} - -function browserPrefixToStyle(prop /*: string*/, prefix /*: string*/) /*: string*/ { - return prefix ? '-' + prefix.toLowerCase() + '-' + prop : prop; -} - -function kebabToTitleCase(str /*: string*/) /*: string*/ { - var out = ''; - var shouldCapitalize = true; - for (var i = 0; i < str.length; i++) { - if (shouldCapitalize) { - out += str[i].toUpperCase(); - shouldCapitalize = false; - } else if (str[i] === '-') { - shouldCapitalize = true; - } else { - out += str[i]; - } - } - return out; -} - -// Default export is the prefix itself, like 'Moz', 'Webkit', etc -// Note that you may have to re-test for certain things; for instance, Chrome 50 -// can handle unprefixed `transform`, but not unprefixed `user-select` -exports.default = getPrefix(); - -/***/ }), -/* 20 */ -/***/ (function(module, exports) { - -// shim for using process in browser -var process = module.exports = {}; - -// cached from whatever global is present so that test runners that stub it -// don't break things. But we need to wrap it in a try catch in case it is -// wrapped in strict mode code which doesn't define any globals. It's inside a -// function because try/catches deoptimize in certain engines. - -var cachedSetTimeout; -var cachedClearTimeout; - -function defaultSetTimout() { - throw new Error('setTimeout has not been defined'); -} -function defaultClearTimeout () { - throw new Error('clearTimeout has not been defined'); -} -(function () { - try { - if (typeof setTimeout === 'function') { - cachedSetTimeout = setTimeout; - } else { - cachedSetTimeout = defaultSetTimout; - } - } catch (e) { - cachedSetTimeout = defaultSetTimout; - } - try { - if (typeof clearTimeout === 'function') { - cachedClearTimeout = clearTimeout; - } else { - cachedClearTimeout = defaultClearTimeout; - } - } catch (e) { - cachedClearTimeout = defaultClearTimeout; - } -} ()) -function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - //normal enviroments in sane situations - return setTimeout(fun, 0); - } - // if setTimeout wasn't available but was latter defined - if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { - cachedSetTimeout = setTimeout; - return setTimeout(fun, 0); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error - return cachedSetTimeout.call(this, fun, 0); - } - } - - -} -function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - // if clearTimeout wasn't available but was latter defined - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } - - - -} -var queue = []; -var draining = false; -var currentQueue; -var queueIndex = -1; - -function cleanUpNextTick() { - if (!draining || !currentQueue) { - return; - } - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - if (queue.length) { - drainQueue(); - } -} - -function drainQueue() { - if (draining) { - return; - } - var timeout = runTimeout(cleanUpNextTick); - draining = true; - - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - queueIndex = -1; - len = queue.length; - } - currentQueue = null; - draining = false; - runClearTimeout(timeout); -} - -process.nextTick = function (fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } -}; - -// v8 likes predictible objects -function Item(fun, array) { - this.fun = fun; - this.array = array; -} -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; -process.version = ''; // empty string to avoid regexp issues -process.versions = {}; - -function noop() {} - -process.on = noop; -process.addListener = noop; -process.once = noop; -process.off = noop; -process.removeListener = noop; -process.removeAllListeners = noop; -process.emit = noop; -process.prependListener = noop; -process.prependOnceListener = noop; - -process.listeners = function (name) { return [] } - -process.binding = function (name) { - throw new Error('process.binding is not supported'); -}; - -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; -process.umask = function() { return 0; }; - - -/***/ }) -/******/ ]); -}); -//# sourceMappingURL=react-draggable.js.map diff --git a/webapp/libs/react-draggable/react-draggable.js.map b/webapp/libs/react-draggable/react-draggable.js.map deleted file mode 100644 index 17d8391f9..000000000 --- a/webapp/libs/react-draggable/react-draggable.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../webpack/universalModuleDefinition","../webpack/bootstrap 33f74c03cddcdadf8186",".././lib/utils/shims.js",".././node_modules/fbjs/lib/emptyFunction.js",".././node_modules/fbjs/lib/invariant.js",".././node_modules/prop-types/lib/ReactPropTypesSecret.js","../external {\"commonjs\":\"react-dom\",\"commonjs2\":\"react-dom\",\"amd\":\"react-dom\",\"root\":\"ReactDOM\"}",".././lib/utils/domFns.js","../external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}",".././node_modules/prop-types/index.js",".././node_modules/fbjs/lib/warning.js",".././lib/utils/positionFns.js",".././lib/DraggableCore.js",".././lib/utils/log.js",".././index.js",".././lib/Draggable.js",".././node_modules/prop-types/factoryWithTypeCheckers.js",".././node_modules/object-assign/index.js",".././node_modules/prop-types/checkPropTypes.js",".././node_modules/prop-types/factoryWithThrowingShims.js",".././node_modules/classnames/index.js",".././lib/utils/getPrefix.js",".././node_modules/process/browser.js"],"names":["findInArray","isFunction","isNum","int","dontSetMe","array","callback","i","length","apply","func","Object","prototype","toString","call","num","isNaN","a","parseInt","props","propName","componentName","Error","matchesSelector","matchesSelectorAndParentsTo","addEvent","removeEvent","outerHeight","outerWidth","innerHeight","innerWidth","offsetXYFromParent","createCSSTransform","createSVGTransform","getTouch","getTouchIdentifier","addUserSelectStyles","removeUserSelectStyles","styleHacks","addClassName","removeClassName","matchesSelectorFunc","el","selector","method","baseNode","node","parentNode","event","handler","attachEvent","addEventListener","detachEvent","removeEventListener","height","clientHeight","computedStyle","ownerDocument","defaultView","getComputedStyle","borderTopWidth","borderBottomWidth","width","clientWidth","borderLeftWidth","borderRightWidth","paddingTop","paddingBottom","paddingLeft","paddingRight","evt","offsetParent","isBody","body","offsetParentRect","left","top","getBoundingClientRect","x","clientX","scrollLeft","y","clientY","scrollTop","e","identifier","targetTouches","t","changedTouches","doc","styleEl","getElementById","createElement","type","id","innerHTML","getElementsByTagName","appendChild","window","getSelection","removeAllRanges","childStyle","touchAction","className","classList","add","match","RegExp","remove","replace","getBoundPosition","snapToGrid","canDragX","canDragY","getControlPosition","createCoreData","createDraggableData","draggable","bounds","cloneBounds","findDOMNode","ownerWindow","boundNode","querySelector","HTMLElement","nodeStyle","boundNodeStyle","offsetLeft","marginLeft","offsetTop","marginTop","right","marginRight","bottom","marginBottom","Math","min","max","grid","pendingX","pendingY","round","axis","touchIdentifier","draggableCore","touchObj","state","isStart","lastX","deltaX","deltaY","lastY","coreData","eventsFor","touch","start","move","stop","mouse","dragEventFor","DraggableCore","dragging","NaN","handleDragStart","onMouseDown","allowAnyClick","button","thisNode","disabled","target","Node","handle","cancel","setState","position","coreEvent","onStart","shouldUpdate","enableUserSelectHack","handleDrag","handleDragStop","preventDefault","Array","isArray","onDrag","MouseEvent","err","document","createEvent","initMouseEvent","onStop","onMouseUp","onTouchStart","onTouchEnd","cloneElement","Children","only","children","style","Component","displayName","propTypes","bool","process","browser","nodeType","arrayOf","number","string","transform","defaultProps","log","Draggable","require","default","module","exports","onDragStart","shouldStart","dragged","uiData","newState","slackX","slackY","newStateX","newStateY","onDragStop","shouldStop","controlled","Boolean","defaultPosition","isElementSVG","console","warn","SVGElement","nextProps","svgTransform","transformOpts","defaultClassName","defaultClassNameDragging","defaultClassNameDragged","oneOf","oneOfType","shape","getPrefix","browserPrefixToKey","browserPrefixToStyle","prefixes","prop","documentElement","prefix","kebabToTitleCase","toLowerCase","str","out","shouldCapitalize","toUpperCase"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;ACVA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;;;;;;QC3DgBA,W,GAAAA,W;QAMAC,U,GAAAA,U;QAIAC,K,GAAAA,K;QAIAC,G,GAAAA,G;QAIAC,S,GAAAA,S;;AAnBhB;AACO,SAASJ,WAAT,CAAqBK,KAArB,+BAAoDC,QAApD,2BAA6E;AAClF,OAAK,IAAIC,IAAI,CAAR,EAAWC,SAASH,MAAMG,MAA/B,EAAuCD,IAAIC,MAA3C,EAAmDD,GAAnD,EAAwD;AACtD,QAAID,SAASG,KAAT,CAAeH,QAAf,EAAyB,CAACD,MAAME,CAAN,CAAD,EAAWA,CAAX,EAAcF,KAAd,CAAzB,CAAJ,EAAoD,OAAOA,MAAME,CAAN,CAAP;AACrD;AACF;;AAEM,SAASN,UAAT,CAAoBS,IAApB,0BAAwC;AAC7C,SAAO,OAAOA,IAAP,KAAgB,UAAhB,IAA8BC,OAAOC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BJ,IAA/B,MAAyC,mBAA9E;AACD;;AAEM,SAASR,KAAT,CAAea,GAAf,0BAAkC;AACvC,SAAO,OAAOA,GAAP,KAAe,QAAf,IAA2B,CAACC,MAAMD,GAAN,CAAnC;AACD;;AAEM,SAASZ,GAAT,CAAac,CAAb,4BAAgC;AACrC,SAAOC,SAASD,CAAT,EAAY,EAAZ,CAAP;AACD;;AAEM,SAASb,SAAT,CAAmBe,KAAnB,eAAkCC,QAAlC,eAAoDC,aAApD,eAA2E;AAChF,MAAIF,MAAMC,QAAN,CAAJ,EAAqB;AACnB,WAAO,IAAIE,KAAJ,mBAA0BF,QAA1B,mBAAgDC,aAAhD,8CAAP;AACD;AACF,C;;;;;;;ACxBD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+B;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,qDAAqD;AACrD,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA,0BAA0B;AAC1B;AACA;AACA;;AAEA,2B;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;;;;;;ACXA,+C;;;;;;;;;;;;;;;QCOgBE,e,GAAAA,e;QAuBAC,2B,GAAAA,2B;QAWAC,Q,GAAAA,Q;QAYAC,W,GAAAA,W;QAYAC,W,GAAAA,W;QAUAC,U,GAAAA,U;QASAC,W,GAAAA,W;QAQAC,U,GAAAA,U;QASAC,kB,GAAAA,kB;QAUAC,kB,GAAAA,kB;QAKAC,kB,GAAAA,kB;QAIAC,Q,GAAAA,Q;QAKAC,kB,GAAAA,kB;QAUAC,mB,GAAAA,mB;QAcAC,sB,GAAAA,sB;QASAC,U,GAAAA,U;QASAC,Y,GAAAA,Y;QAUAC,e,GAAAA,e;;AAhLhB;;AACA;;;;;;;;;;;AAIA,IAAIC,sBAAsB,EAA1B;AACO,SAASlB,eAAT,CAAyBmB,EAAzB,aAAmCC,QAAnC,6BAA8D;AACnE,MAAI,CAACF,mBAAL,EAA0B;AACxBA,0BAAsB,wBAAY,CAChC,SADgC,EAEhC,uBAFgC,EAGhC,oBAHgC,EAIhC,mBAJgC,EAKhC,kBALgC,CAAZ,EAMnB,UAASG,MAAT,EAAgB;AACjB;AACA,aAAO,uBAAWF,GAAGE,MAAH,CAAX,CAAP;AACD,KATqB,CAAtB;AAUD;;AAED;AACA;AACA,MAAI,CAAC,uBAAWF,GAAGD,mBAAH,CAAX,CAAL,EAA0C,OAAO,KAAP;;AAE1C;AACA,SAAOC,GAAGD,mBAAH,EAAwBE,QAAxB,CAAP;AACD;;AAED;AACO,SAASnB,2BAAT,CAAqCkB,EAArC,aAA+CC,QAA/C,eAAiEE,QAAjE,2BAA0F;AAC/F,MAAIC,OAAOJ,EAAX;AACA,KAAG;AACD,QAAInB,gBAAgBuB,IAAhB,EAAsBH,QAAtB,CAAJ,EAAqC,OAAO,IAAP;AACrC,QAAIG,SAASD,QAAb,EAAuB,OAAO,KAAP;AACvBC,WAAOA,KAAKC,UAAZ;AACD,GAJD,QAISD,IAJT;;AAMA,SAAO,KAAP;AACD;;AAEM,SAASrB,QAAT,CAAkBiB,EAAlB,cAA6BM,KAA7B,eAA4CC,OAA5C,4BAAqE;AAC1E,MAAI,CAACP,EAAL,EAAS;AAAE;AAAS;AACpB,MAAIA,GAAGQ,WAAP,EAAoB;AAClBR,OAAGQ,WAAH,CAAe,OAAOF,KAAtB,EAA6BC,OAA7B;AACD,GAFD,MAEO,IAAIP,GAAGS,gBAAP,EAAyB;AAC9BT,OAAGS,gBAAH,CAAoBH,KAApB,EAA2BC,OAA3B,EAAoC,IAApC;AACD,GAFM,MAEA;AACL;AACAP,OAAG,OAAOM,KAAV,IAAmBC,OAAnB;AACD;AACF;;AAEM,SAASvB,WAAT,CAAqBgB,EAArB,cAAgCM,KAAhC,eAA+CC,OAA/C,4BAAwE;AAC7E,MAAI,CAACP,EAAL,EAAS;AAAE;AAAS;AACpB,MAAIA,GAAGU,WAAP,EAAoB;AAClBV,OAAGU,WAAH,CAAe,OAAOJ,KAAtB,EAA6BC,OAA7B;AACD,GAFD,MAEO,IAAIP,GAAGW,mBAAP,EAA4B;AACjCX,OAAGW,mBAAH,CAAuBL,KAAvB,EAA8BC,OAA9B,EAAuC,IAAvC;AACD,GAFM,MAEA;AACL;AACAP,OAAG,OAAOM,KAAV,IAAmB,IAAnB;AACD;AACF;;AAEM,SAASrB,WAAT,CAAqBmB,IAArB,iCAAgD;AACrD;AACA;AACA,MAAIQ,SAASR,KAAKS,YAAlB;AACA,MAAMC,gBAAgBV,KAAKW,aAAL,CAAmBC,WAAnB,CAA+BC,gBAA/B,CAAgDb,IAAhD,CAAtB;AACAQ,YAAU,gBAAIE,cAAcI,cAAlB,CAAV;AACAN,YAAU,gBAAIE,cAAcK,iBAAlB,CAAV;AACA,SAAOP,MAAP;AACD;;AAEM,SAAS1B,UAAT,CAAoBkB,IAApB,iCAA+C;AACpD;AACA;AACA,MAAIgB,QAAQhB,KAAKiB,WAAjB;AACA,MAAMP,gBAAgBV,KAAKW,aAAL,CAAmBC,WAAnB,CAA+BC,gBAA/B,CAAgDb,IAAhD,CAAtB;AACAgB,WAAS,gBAAIN,cAAcQ,eAAlB,CAAT;AACAF,WAAS,gBAAIN,cAAcS,gBAAlB,CAAT;AACA,SAAOH,KAAP;AACD;AACM,SAASjC,WAAT,CAAqBiB,IAArB,iCAAgD;AACrD,MAAIQ,SAASR,KAAKS,YAAlB;AACA,MAAMC,gBAAgBV,KAAKW,aAAL,CAAmBC,WAAnB,CAA+BC,gBAA/B,CAAgDb,IAAhD,CAAtB;AACAQ,YAAU,gBAAIE,cAAcU,UAAlB,CAAV;AACAZ,YAAU,gBAAIE,cAAcW,aAAlB,CAAV;AACA,SAAOb,MAAP;AACD;;AAEM,SAASxB,UAAT,CAAoBgB,IAApB,iCAA+C;AACpD,MAAIgB,QAAQhB,KAAKiB,WAAjB;AACA,MAAMP,gBAAgBV,KAAKW,aAAL,CAAmBC,WAAnB,CAA+BC,gBAA/B,CAAgDb,IAAhD,CAAtB;AACAgB,WAAS,gBAAIN,cAAcY,WAAlB,CAAT;AACAN,WAAS,gBAAIN,cAAca,YAAlB,CAAT;AACA,SAAOP,KAAP;AACD;;AAED;AACO,SAAS/B,kBAAT,CAA4BuC,GAA5B,2CAAqEC,YAArE,0CAAiH;AACtH,MAAMC,SAASD,iBAAiBA,aAAad,aAAb,CAA2BgB,IAA3D;AACA,MAAMC,mBAAmBF,SAAS,EAACG,MAAM,CAAP,EAAUC,KAAK,CAAf,EAAT,GAA6BL,aAAaM,qBAAb,EAAtD;;AAEA,MAAMC,IAAIR,IAAIS,OAAJ,GAAcR,aAAaS,UAA3B,GAAwCN,iBAAiBC,IAAnE;AACA,MAAMM,IAAIX,IAAIY,OAAJ,GAAcX,aAAaY,SAA3B,GAAuCT,iBAAiBE,GAAlE;;AAEA,SAAO,EAACE,IAAD,EAAIG,IAAJ,EAAP;AACD;;AAEM,SAASjD,kBAAT,oBAAoE;AAAA,MAAvC8C,CAAuC,QAAvCA,CAAuC;AAAA,MAApCG,CAAoC,QAApCA,CAAoC;;AACzE;AACA,6BAAS,mCAAmB,WAAnB,sBAAT,EAA0D,eAAeH,CAAf,GAAmB,KAAnB,GAA2BG,CAA3B,GAA+B,KAAzF;AACD;;AAEM,SAAShD,kBAAT,qBAAoE;AAAA,MAAvC6C,CAAuC,SAAvCA,CAAuC;AAAA,MAApCG,CAAoC,SAApCA,CAAoC;;AACzE,SAAO,eAAeH,CAAf,GAAmB,GAAnB,GAAyBG,CAAzB,GAA6B,GAApC;AACD;;AAEM,SAAS/C,QAAT,CAAkBkD,CAAlB,wBAAsCC,UAAtC,yDAA+F;AACpG,SAAQD,EAAEE,aAAF,IAAmB,wBAAYF,EAAEE,aAAd,EAA6B;AAAA,WAAKD,eAAeE,EAAEF,UAAtB;AAAA,GAA7B,CAApB,IACCD,EAAEI,cAAF,IAAoB,wBAAYJ,EAAEI,cAAd,EAA8B;AAAA,WAAKH,eAAeE,EAAEF,UAAtB;AAAA,GAA9B,CAD5B;AAED;;AAEM,SAASlD,kBAAT,CAA4BiD,CAA5B,sCAAyD;AAC9D,MAAIA,EAAEE,aAAF,IAAmBF,EAAEE,aAAF,CAAgB,CAAhB,CAAvB,EAA2C,OAAOF,EAAEE,aAAF,CAAgB,CAAhB,EAAmBD,UAA1B;AAC3C,MAAID,EAAEI,cAAF,IAAoBJ,EAAEI,cAAF,CAAiB,CAAjB,CAAxB,EAA6C,OAAOJ,EAAEI,cAAF,CAAiB,CAAjB,EAAoBH,UAA3B;AAC9C;;AAED;AACA;AACA;;AAEA;AACO,SAASjD,mBAAT,CAA6BqD,GAA7B,kBAA6C;AAClD,MAAI,CAACA,GAAL,EAAU;AACV,MAAIC,UAAUD,IAAIE,cAAJ,CAAmB,0BAAnB,CAAd;AACA,MAAI,CAACD,OAAL,EAAc;AACZA,cAAUD,IAAIG,aAAJ,CAAkB,OAAlB,CAAV;AACAF,YAAQG,IAAR,GAAe,UAAf;AACAH,YAAQI,EAAR,GAAa,0BAAb;AACAJ,YAAQK,SAAR,GAAoB,uFAApB;AACAL,YAAQK,SAAR,IAAqB,kFAArB;AACAN,QAAIO,oBAAJ,CAAyB,MAAzB,EAAiC,CAAjC,EAAoCC,WAApC,CAAgDP,OAAhD;AACD;AACD,MAAID,IAAIhB,IAAR,EAAclC,aAAakD,IAAIhB,IAAjB,EAAuB,uCAAvB;AACf;;AAEM,SAASpC,sBAAT,CAAgCoD,GAAhC,kBAAgD;AACrD,MAAI;AACF,QAAIA,OAAOA,IAAIhB,IAAf,EAAqBjC,gBAAgBiD,IAAIhB,IAApB,EAA0B,uCAA1B;AACrByB,WAAOC,YAAP,GAAsBC,eAAtB,GAFE,CAEwC;AAC3C,GAHD,CAGE,OAAOhB,CAAP,EAAU;AACV;AACD;AACF;;AAEM,SAAS9C,UAAT,gBAAqD;AAAA,MAAjC+D,UAAiC,oFAAZ,EAAY;;AAC1D;AACA;AACA;AACEC,iBAAa;AADf,KAEKD,UAFL;AAID;;AAEM,SAAS9D,YAAT,CAAsBG,EAAtB,oBAAuC6D,SAAvC,eAA0D;AAC/D,MAAI7D,GAAG8D,SAAP,EAAkB;AAChB9D,OAAG8D,SAAH,CAAaC,GAAb,CAAiBF,SAAjB;AACD,GAFD,MAEO;AACL,QAAI,CAAC7D,GAAG6D,SAAH,CAAaG,KAAb,CAAmB,IAAIC,MAAJ,eAAuBJ,SAAvB,aAAnB,CAAL,EAAqE;AACnE7D,SAAG6D,SAAH,UAAoBA,SAApB;AACD;AACF;AACF;;AAEM,SAAS/D,eAAT,CAAyBE,EAAzB,oBAA0C6D,SAA1C,eAA6D;AAClE,MAAI7D,GAAG8D,SAAP,EAAkB;AAChB9D,OAAG8D,SAAH,CAAaI,MAAb,CAAoBL,SAApB;AACD,GAFD,MAEO;AACL7D,OAAG6D,SAAH,GAAe7D,GAAG6D,SAAH,CAAaM,OAAb,CAAqB,IAAIF,MAAJ,eAAuBJ,SAAvB,cAA2C,GAA3C,CAArB,EAAsE,EAAtE,CAAf;AACD;AACF,C;;;;;;ACvLD,+C;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,sFAAsF,aAAa;AACnG;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa;AACb;;AAEA;AACA,4FAA4F,eAAe;AAC3G;AACA;;AAEA;AACA;AACA;AACA;;AAEA,yB;;;;;;;;;;;;QCpDgBO,gB,GAAAA,gB;QA6CAC,U,GAAAA,U;QAMAC,Q,GAAAA,Q;QAIAC,Q,GAAAA,Q;QAKAC,kB,GAAAA,kB;QAUAC,c,GAAAA,c;QAyBAC,mB,GAAAA,mB;;AAvGhB;;AACA;;;;AACA;;;;;;;AAMO,SAASN,gBAAT,CAA0BO,SAA1B,kBAAgDvC,CAAhD,eAA2DG,CAA3D,sCAAwF;AAC7F;AACA,MAAI,CAACoC,UAAUlG,KAAV,CAAgBmG,MAArB,EAA6B,OAAO,CAACxC,CAAD,EAAIG,CAAJ,CAAP;;AAE7B;AAJ6F,MAKxFqC,MALwF,GAK9ED,UAAUlG,KALoE,CAKxFmG,MALwF;;AAM7FA,WAAS,OAAOA,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsCC,YAAYD,MAAZ,CAA/C;AACA,MAAMxE,OAAO0E,YAAYH,SAAZ,CAAb;;AAEA,MAAI,OAAOC,MAAP,KAAkB,QAAtB,EAAgC;AAAA,QACvB7D,aADuB,GACNX,IADM,CACvBW,aADuB;;AAE9B,QAAMgE,cAAchE,cAAcC,WAAlC;AACA,QAAIgE,kBAAJ;AACA,QAAIJ,WAAW,QAAf,EAAyB;AACvBI,kBAAY5E,KAAKC,UAAjB;AACD,KAFD,MAEO;AACL2E,kBAAYjE,cAAckE,aAAd,CAA4BL,MAA5B,CAAZ;AACD;AACD,QAAI,EAAEI,qBAAqBE,WAAvB,CAAJ,EAAyC;AACvC,YAAM,IAAItG,KAAJ,CAAU,sBAAsBgG,MAAtB,GAA+B,8BAAzC,CAAN;AACD;AACD,QAAMO,YAAYJ,YAAY9D,gBAAZ,CAA6Bb,IAA7B,CAAlB;AACA,QAAMgF,iBAAiBL,YAAY9D,gBAAZ,CAA6B+D,SAA7B,CAAvB;AACA;AACAJ,aAAS;AACP3C,YAAM,CAAC7B,KAAKiF,UAAN,GAAmB,gBAAID,eAAe1D,WAAnB,CAAnB,GAAqD,gBAAIyD,UAAUG,UAAd,CADpD;AAEPpD,WAAK,CAAC9B,KAAKmF,SAAN,GAAkB,gBAAIH,eAAe5D,UAAnB,CAAlB,GAAmD,gBAAI2D,UAAUK,SAAd,CAFjD;AAGPC,aAAO,wBAAWT,SAAX,IAAwB,wBAAW5E,IAAX,CAAxB,GAA2CA,KAAKiF,UAAhD,GACL,gBAAID,eAAezD,YAAnB,CADK,GAC8B,gBAAIwD,UAAUO,WAAd,CAJ9B;AAKPC,cAAQ,yBAAYX,SAAZ,IAAyB,yBAAY5E,IAAZ,CAAzB,GAA6CA,KAAKmF,SAAlD,GACN,gBAAIH,eAAe3D,aAAnB,CADM,GAC8B,gBAAI0D,UAAUS,YAAd;AAN/B,KAAT;AAQD;;AAED;AACA,MAAI,kBAAMhB,OAAOa,KAAb,CAAJ,EAAyBrD,IAAIyD,KAAKC,GAAL,CAAS1D,CAAT,EAAYwC,OAAOa,KAAnB,CAAJ;AACzB,MAAI,kBAAMb,OAAOe,MAAb,CAAJ,EAA0BpD,IAAIsD,KAAKC,GAAL,CAASvD,CAAT,EAAYqC,OAAOe,MAAnB,CAAJ;;AAE1B;AACA,MAAI,kBAAMf,OAAO3C,IAAb,CAAJ,EAAwBG,IAAIyD,KAAKE,GAAL,CAAS3D,CAAT,EAAYwC,OAAO3C,IAAnB,CAAJ;AACxB,MAAI,kBAAM2C,OAAO1C,GAAb,CAAJ,EAAuBK,IAAIsD,KAAKE,GAAL,CAASxD,CAAT,EAAYqC,OAAO1C,GAAnB,CAAJ;;AAEvB,SAAO,CAACE,CAAD,EAAIG,CAAJ,CAAP;AACD;;AAEM,SAAS8B,UAAT,CAAoB2B,IAApB,yBAA4CC,QAA5C,eAA8DC,QAA9D,sCAAkG;AACvG,MAAM9D,IAAIyD,KAAKM,KAAL,CAAWF,WAAWD,KAAK,CAAL,CAAtB,IAAiCA,KAAK,CAAL,CAA3C;AACA,MAAMzD,IAAIsD,KAAKM,KAAL,CAAWD,WAAWF,KAAK,CAAL,CAAtB,IAAiCA,KAAK,CAAL,CAA3C;AACA,SAAO,CAAC5D,CAAD,EAAIG,CAAJ,CAAP;AACD;;AAEM,SAAS+B,QAAT,CAAkBK,SAAlB,gCAAiD;AACtD,SAAOA,UAAUlG,KAAV,CAAgB2H,IAAhB,KAAyB,MAAzB,IAAmCzB,UAAUlG,KAAV,CAAgB2H,IAAhB,KAAyB,GAAnE;AACD;;AAEM,SAAS7B,QAAT,CAAkBI,SAAlB,gCAAiD;AACtD,SAAOA,UAAUlG,KAAV,CAAgB2H,IAAhB,KAAyB,MAAzB,IAAmCzB,UAAUlG,KAAV,CAAgB2H,IAAhB,KAAyB,GAAnE;AACD;;AAED;AACO,SAAS5B,kBAAT,CAA4B9B,CAA5B,wBAAgD2D,eAAhD,gBAA0EC,aAA1E,6CAA0H;AAC/H,MAAMC,WAAW,OAAOF,eAAP,KAA2B,QAA3B,GAAsC,sBAAS3D,CAAT,EAAY2D,eAAZ,CAAtC,GAAqE,IAAtF;AACA,MAAI,OAAOA,eAAP,KAA2B,QAA3B,IAAuC,CAACE,QAA5C,EAAsD,OAAO,IAAP,CAFyE,CAE5D;AACnE,MAAMnG,OAAO0E,YAAYwB,aAAZ,CAAb;AACA;AACA,MAAMzE,eAAeyE,cAAc7H,KAAd,CAAoBoD,YAApB,IAAoCzB,KAAKyB,YAAzC,IAAyDzB,KAAKW,aAAL,CAAmBgB,IAAjG;AACA,SAAO,gCAAmBwE,YAAY7D,CAA/B,EAAkCb,YAAlC,CAAP;AACD;;AAED;AACO,SAAS4C,cAAT,CAAwBE,SAAxB,sBAAkDvC,CAAlD,eAA6DG,CAA7D,mCAAuF;AAC5F,MAAMiE,QAAQ7B,UAAU6B,KAAxB;AACA,MAAMC,UAAU,CAAC,kBAAMD,MAAME,KAAZ,CAAjB;AACA,MAAMtG,OAAO0E,YAAYH,SAAZ,CAAb;;AAEA,MAAI8B,OAAJ,EAAa;AACX;AACA,WAAO;AACLrG,gBADK;AAELuG,cAAQ,CAFH,EAEMC,QAAQ,CAFd;AAGLF,aAAOtE,CAHF,EAGKyE,OAAOtE,CAHZ;AAILH,UAJK,EAIFG;AAJE,KAAP;AAMD,GARD,MAQO;AACL;AACA,WAAO;AACLnC,gBADK;AAELuG,cAAQvE,IAAIoE,MAAME,KAFb,EAEoBE,QAAQrE,IAAIiE,MAAMK,KAFtC;AAGLH,aAAOF,MAAME,KAHR,EAGeG,OAAOL,MAAMK,KAH5B;AAILzE,UAJK,EAIFG;AAJE,KAAP;AAMD;AACF;;AAED;AACO,SAASmC,mBAAT,CAA6BC,SAA7B,kBAAmDmC,QAAnD,0CAA2F;AAChG,SAAO;AACL1G,UAAM0G,SAAS1G,IADV;AAELgC,OAAGuC,UAAU6B,KAAV,CAAgBpE,CAAhB,GAAoB0E,SAASH,MAF3B;AAGLpE,OAAGoC,UAAU6B,KAAV,CAAgBjE,CAAhB,GAAoBuE,SAASF,MAH3B;AAILD,YAAQG,SAASH,MAJZ;AAKLC,YAAQE,SAASF,MALZ;AAMLF,WAAO/B,UAAU6B,KAAV,CAAgBpE,CANlB;AAOLyE,WAAOlC,UAAU6B,KAAV,CAAgBjE;AAPlB,GAAP;AASD;;AAED;AACA,SAASsC,WAAT,CAAqBD,MAArB,4BAA6C;AAC3C,SAAO;AACL3C,UAAM2C,OAAO3C,IADR;AAELC,SAAK0C,OAAO1C,GAFP;AAGLuD,WAAOb,OAAOa,KAHT;AAILE,YAAQf,OAAOe;AAJV,GAAP;AAMD;;AAED,SAASb,WAAT,CAAqBH,SAArB,oDAAwE;AACtE,MAAMvE,OAAO,mBAAS0E,WAAT,CAAqBH,SAArB,CAAb;AACA,MAAI,CAACvE,IAAL,EAAW;AACT,UAAM,IAAIxB,KAAJ,CAAU,0CAAV,CAAN;AACD;AACD;AACA,SAAOwB,IAAP;AACD,C;;;;;;;;;;;;;;;;;ACpID;;;;AACA;;;;AACA;;;;AACA;;AAEA;;AACA;;AACA;;;;;;;;;;;;;;;AAKA;;AACA,IAAM2G,YAAY;AAChBC,SAAO;AACLC,WAAO,YADF;AAELC,UAAM,WAFD;AAGLC,UAAM;AAHD,GADS;AAMhBC,SAAO;AACLH,WAAO,WADF;AAELC,UAAM,WAFD;AAGLC,UAAM;AAHD;AANS,CAAlB;;AAaA;AACA,IAAIE,eAAeN,UAAUK,KAA7B;;;;;;;;;;;;;;;;;;;;;;;;AA0CA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;IAEqBE,a;;;;;;;;;;;;;;oMAoInBd,K,GAAQ;AACNe,gBAAU,KADJ;AAEN;AACAb,aAAOc,GAHD,EAGMX,OAAOW,GAHb;AAINnB,uBAAiB;AAJX,K,QAqBRoB,e,GAAiD,UAAC/E,CAAD,EAAO;AACtD;AACA,YAAKjE,KAAL,CAAWiJ,WAAX,CAAuBhF,CAAvB;;AAEA;AACA,UAAI,CAAC,MAAKjE,KAAL,CAAWkJ,aAAZ,IAA6B,OAAOjF,EAAEkF,MAAT,KAAoB,QAAjD,IAA6DlF,EAAEkF,MAAF,KAAa,CAA9E,EAAiF,OAAO,KAAP;;AAEjF;AACA,UAAMC,WAAW,mBAAS/C,WAAT,OAAjB;AACA,UAAI,CAAC+C,QAAD,IAAa,CAACA,SAAS9G,aAAvB,IAAwC,CAAC8G,SAAS9G,aAAT,CAAuBgB,IAApE,EAA0E;AACxE,cAAM,IAAInD,KAAJ,CAAU,2CAAV,CAAN;AACD;AAXqD,UAY/CmC,aAZ+C,GAY9B8G,QAZ8B,CAY/C9G,aAZ+C;;AActD;;AACA,UAAI,MAAKtC,KAAL,CAAWqJ,QAAX,IACD,EAAEpF,EAAEqF,MAAF,YAAoBhH,cAAcC,WAAd,CAA0BgH,IAAhD,CADC,IAED,MAAKvJ,KAAL,CAAWwJ,MAAX,IAAqB,CAAC,yCAA4BvF,EAAEqF,MAA9B,EAAsC,MAAKtJ,KAAL,CAAWwJ,MAAjD,EAAyDJ,QAAzD,CAFrB,IAGD,MAAKpJ,KAAL,CAAWyJ,MAAX,IAAqB,yCAA4BxF,EAAEqF,MAA9B,EAAsC,MAAKtJ,KAAL,CAAWyJ,MAAjD,EAAyDL,QAAzD,CAHxB,EAG6F;AAC3F;AACD;;AAED;AACA;AACA;AACA,UAAMxB,kBAAkB,gCAAmB3D,CAAnB,CAAxB;AACA,YAAKyF,QAAL,CAAc,EAAC9B,gCAAD,EAAd;;AAEA;AACA,UAAM+B,WAAW,qCAAmB1F,CAAnB,EAAsB2D,eAAtB,QAAjB;AACA,UAAI+B,YAAY,IAAhB,EAAsB,OA9BgC,CA8BxB;AA9BwB,UA+B/ChG,CA/B+C,GA+BvCgG,QA/BuC,CA+B/ChG,CA/B+C;AAAA,UA+B5CG,CA/B4C,GA+BvC6F,QA/BuC,CA+B5C7F,CA/B4C;;AAiCtD;;AACA,UAAM8F,YAAY,wCAAqBjG,CAArB,EAAwBG,CAAxB,CAAlB;;AAEA,yBAAI,oCAAJ,EAA0C8F,SAA1C;;AAEA;AACA,yBAAI,SAAJ,EAAe,MAAK5J,KAAL,CAAW6J,OAA1B;AACA,UAAMC,eAAe,MAAK9J,KAAL,CAAW6J,OAAX,CAAmB5F,CAAnB,EAAsB2F,SAAtB,CAArB;AACA,UAAIE,iBAAiB,KAArB,EAA4B;;AAE5B;AACA;AACA,UAAI,MAAK9J,KAAL,CAAW+J,oBAAf,EAAqC,iCAAoBzH,aAApB;;AAErC;AACA;AACA;AACA,YAAKoH,QAAL,CAAc;AACZZ,kBAAU,IADE;;AAGZb,eAAOtE,CAHK;AAIZyE,eAAOtE;AAJK,OAAd;;AAOA;AACA;AACA;AACA,4BAASxB,aAAT,EAAwBsG,aAAaH,IAArC,EAA2C,MAAKuB,UAAhD;AACA,4BAAS1H,aAAT,EAAwBsG,aAAaF,IAArC,EAA2C,MAAKuB,cAAhD;AACD,K,QAEDD,U,GAA4C,UAAC/F,CAAD,EAAO;;AAEjD;AACA,UAAIA,EAAES,IAAF,KAAW,WAAf,EAA4BT,EAAEiG,cAAF;;AAE5B;AACA,UAAMP,WAAW,qCAAmB1F,CAAnB,EAAsB,MAAK8D,KAAL,CAAWH,eAAjC,QAAjB;AACA,UAAI+B,YAAY,IAAhB,EAAsB;AAP2B,UAQ5ChG,CAR4C,GAQpCgG,QARoC,CAQ5ChG,CAR4C;AAAA,UAQzCG,CARyC,GAQpC6F,QARoC,CAQzC7F,CARyC;;AAUjD;;AACA,UAAIqG,MAAMC,OAAN,CAAc,MAAKpK,KAAL,CAAWuH,IAAzB,CAAJ,EAAoC;AAClC,YAAIW,UAASvE,IAAI,MAAKoE,KAAL,CAAWE,KAA5B;AAAA,YAAmCE,UAASrE,IAAI,MAAKiE,KAAL,CAAWK,KAA3D;;AADkC,0BAEf,6BAAW,MAAKpI,KAAL,CAAWuH,IAAtB,EAA4BW,OAA5B,EAAoCC,OAApC,CAFe;;AAAA;;AAEjCD,eAFiC;AAEzBC,eAFyB;;AAGlC,YAAI,CAACD,OAAD,IAAW,CAACC,OAAhB,EAAwB,OAHU,CAGF;AAChCxE,YAAI,MAAKoE,KAAL,CAAWE,KAAX,GAAmBC,OAAvB,EAA+BpE,IAAI,MAAKiE,KAAL,CAAWK,KAAX,GAAmBD,OAAtD;AACD;;AAED,UAAMyB,YAAY,wCAAqBjG,CAArB,EAAwBG,CAAxB,CAAlB;;AAEA,yBAAI,+BAAJ,EAAqC8F,SAArC;;AAEA;AACA,UAAME,eAAe,MAAK9J,KAAL,CAAWqK,MAAX,CAAkBpG,CAAlB,EAAqB2F,SAArB,CAArB;AACA,UAAIE,iBAAiB,KAArB,EAA4B;AAC1B,YAAI;AACF;AACA,gBAAKG,cAAL,CAAoB,IAAIK,UAAJ,CAAe,SAAf,CAApB;AACD,SAHD,CAGE,OAAOC,GAAP,EAAY;AACZ;AACA,cAAM1I,UAAU2I,SAASC,WAAT,CAAqB,aAArB,CAAV,kCAAN;AACA;AACA;AACA5I,gBAAM6I,cAAN,CAAqB,SAArB,EAAgC,IAAhC,EAAsC,IAAtC,EAA4C3F,MAA5C,EAAoD,CAApD,EAAuD,CAAvD,EAA0D,CAA1D,EAA6D,CAA7D,EAAgE,CAAhE,EAAmE,KAAnE,EAA0E,KAA1E,EAAiF,KAAjF,EAAwF,KAAxF,EAA+F,CAA/F,EAAkG,IAAlG;AACA,gBAAKkF,cAAL,CAAoBpI,KAApB;AACD;AACD;AACD;;AAED,YAAK6H,QAAL,CAAc;AACZzB,eAAOtE,CADK;AAEZyE,eAAOtE;AAFK,OAAd;AAID,K,QAEDmG,c,GAAgD,UAAChG,CAAD,EAAO;AACrD,UAAI,CAAC,MAAK8D,KAAL,CAAWe,QAAhB,EAA0B;;AAE1B,UAAMa,WAAW,qCAAmB1F,CAAnB,EAAsB,MAAK8D,KAAL,CAAWH,eAAjC,QAAjB;AACA,UAAI+B,YAAY,IAAhB,EAAsB;AAJ+B,UAK9ChG,CAL8C,GAKtCgG,QALsC,CAK9ChG,CAL8C;AAAA,UAK3CG,CAL2C,GAKtC6F,QALsC,CAK3C7F,CAL2C;;AAMrD,UAAM8F,YAAY,wCAAqBjG,CAArB,EAAwBG,CAAxB,CAAlB;;AAEA,UAAMsF,WAAW,mBAAS/C,WAAT,OAAjB;AACA,UAAI+C,QAAJ,EAAc;AACZ;AACA,YAAI,MAAKpJ,KAAL,CAAW+J,oBAAf,EAAqC,oCAAuBX,SAAS9G,aAAhC;AACtC;;AAED,yBAAI,mCAAJ,EAAyCsH,SAAzC;;AAEA;AACA,YAAKF,QAAL,CAAc;AACZZ,kBAAU,KADE;AAEZb,eAAOc,GAFK;AAGZX,eAAOW;AAHK,OAAd;;AAMA;AACA,YAAK/I,KAAL,CAAW2K,MAAX,CAAkB1G,CAAlB,EAAqB2F,SAArB;;AAEA,UAAIR,QAAJ,EAAc;AACZ;AACA,2BAAI,kCAAJ;AACA,iCAAYA,SAAS9G,aAArB,EAAoCsG,aAAaH,IAAjD,EAAuD,MAAKuB,UAA5D;AACA,iCAAYZ,SAAS9G,aAArB,EAAoCsG,aAAaF,IAAjD,EAAuD,MAAKuB,cAA5D;AACD;AACF,K,QAEDhB,W,GAA6C,UAAChF,CAAD,EAAO;AAClD2E,qBAAeN,UAAUK,KAAzB,CADkD,CAClB;;AAEhC,aAAO,MAAKK,eAAL,CAAqB/E,CAArB,CAAP;AACD,K,QAED2G,S,GAA2C,UAAC3G,CAAD,EAAO;AAChD2E,qBAAeN,UAAUK,KAAzB;;AAEA,aAAO,MAAKsB,cAAL,CAAoBhG,CAApB,CAAP;AACD,K,QAGD4G,Y,GAA8C,UAAC5G,CAAD,EAAO;AACnD;AACA2E,qBAAeN,UAAUC,KAAzB;;AAEA,aAAO,MAAKS,eAAL,CAAqB/E,CAArB,CAAP;AACD,K,QAED6G,U,GAA4C,UAAC7G,CAAD,EAAO;AACjD;AACA2E,qBAAeN,UAAUC,KAAzB;;AAEA,aAAO,MAAK0B,cAAL,CAAoBhG,CAApB,CAAP;AACD,K;;;;;2CAtLsB;AACrB;AACA;AACA,UAAMmF,WAAW,mBAAS/C,WAAT,CAAqB,IAArB,CAAjB;AACA,UAAI+C,QAAJ,EAAc;AAAA,YACL9G,aADK,GACY8G,QADZ,CACL9G,aADK;;AAEZ,iCAAYA,aAAZ,EAA2BgG,UAAUK,KAAV,CAAgBF,IAA3C,EAAiD,KAAKuB,UAAtD;AACA,iCAAY1H,aAAZ,EAA2BgG,UAAUC,KAAV,CAAgBE,IAA3C,EAAiD,KAAKuB,UAAtD;AACA,iCAAY1H,aAAZ,EAA2BgG,UAAUK,KAAV,CAAgBD,IAA3C,EAAiD,KAAKuB,cAAtD;AACA,iCAAY3H,aAAZ,EAA2BgG,UAAUC,KAAV,CAAgBG,IAA3C,EAAiD,KAAKuB,cAAtD;AACA,YAAI,KAAKjK,KAAL,CAAW+J,oBAAf,EAAqC,oCAAuBzH,aAAvB;AACtC;AACF;;AA6JD;;;;6BAeS;AACP;AACA;AACA,aAAO,gBAAMyI,YAAN,CAAmB,gBAAMC,QAAN,CAAeC,IAAf,CAAoB,KAAKjL,KAAL,CAAWkL,QAA/B,CAAnB,EAA6D;AAClEC,eAAO,wBAAW,KAAKnL,KAAL,CAAWkL,QAAX,CAAoBlL,KAApB,CAA0BmL,KAArC,CAD2D;;AAGlE;AACA;AACAlC,qBAAa,KAAKA,WALgD;AAMlE4B,sBAAc,KAAKA,YAN+C;AAOlED,mBAAW,KAAKA,SAPkD;AAQlEE,oBAAY,KAAKA;AARiD,OAA7D,CAAP;AAUD;;;;EAhVwC,gBAAMM,S;;AAA5BvC,a,CAEZwC,W,GAAc,e;AAFFxC,a,CAIZyC,S,GAAY;AACjB;;;;;;AAMApC,iBAAe,oBAAUqC,IAPR;;AASjB;;;;AAIAlC,YAAU,oBAAUkC,IAbH;;AAejB;;;;;AAKAxB,wBAAsB,oBAAUwB,IApBf;;AAsBjB;;;;AAIAnI,gBAAc,sBAASpD,KAAT,2BAAoCC,QAApC,kCAAyE;AACrF,QAAIuL,QAAQC,OAAR,KAAoB,IAApB,IAA4BzL,MAAMC,QAAN,CAA5B,IAA+CD,MAAMC,QAAN,EAAgByL,QAAhB,KAA6B,CAAhF,EAAmF;AACjF,YAAM,IAAIvL,KAAJ,CAAU,+CAAV,CAAN;AACD;AACF,GA9BgB;;AAgCjB;;;AAGAoH,QAAM,oBAAUoE,OAAV,CAAkB,oBAAUC,MAA5B,CAnCW;;AAqCjB;;;;;;;;;;;;;;;;;;;;AAoBApC,UAAQ,oBAAUqC,MAzDD;;AA2DjB;;;;;;;;;;;;;;;;;;;;AAoBApC,UAAQ,oBAAUoC,MA/ED;;AAiFjB;;;;AAIAhC,WAAS,oBAAUtK,IArFF;;AAuFjB;;;;AAIA8K,UAAQ,oBAAU9K,IA3FD;;AA6FjB;;;;AAIAoL,UAAQ,oBAAUpL,IAjGD;;AAmGjB;;;;AAIA0J,eAAa,oBAAU1J,IAvGN;;AAyGjB;;;AAGA6F,6BA5GiB;AA6GjB+F,yBA7GiB;AA8GjBW;AA9GiB,C;AAJAjD,a,CAqHZkD,Y,GAAe;AACpB7C,iBAAe,KADK,EACE;AACtBO,UAAQ,IAFY;AAGpBJ,YAAU,KAHU;AAIpBU,wBAAsB,IAJF;AAKpB3G,gBAAc,IALM;AAMpBoG,UAAQ,IANY;AAOpBjC,QAAM,IAPc;AAQpBuE,aAAW,IARS;AASpBjC,WAAS,mBAAU,CAAE,CATD;AAUpBQ,UAAQ,kBAAU,CAAE,CAVA;AAWpBM,UAAQ,kBAAU,CAAE,CAXA;AAYpB1B,eAAa,uBAAU,CAAE;AAZL,C;kBArHHJ,a;;;;;;;;;;;;;kBC3EGmD,G;;AADxB;AACe,SAASA,GAAT,GAA2B;AAAA;;AACxC,MAAI,SAAJ,EAAiC,qBAAQA,GAAR;AAClC,C;;;;;;;;;ACJD,IAAIC,YAAY,mBAAAC,CAAQ,EAAR,EAA2BC,OAA3C;;AAEA;AACA;AACA;AACA;AACAC,OAAOC,OAAP,GAAiBJ,SAAjB;AACAG,OAAOC,OAAP,CAAeF,OAAf,GAAyBF,SAAzB;AACAG,OAAOC,OAAP,CAAexD,aAAf,GAA+B,mBAAAqD,CAAQ,EAAR,EAA+BC,OAA9D,C;;;;;;;;;;;;;;;;;;;ACPA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;AACA;;AACA;;AACA;;;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA;AACA;AACA;;;;;;;;;;;;;IAEqBF,S;;;AAkInB,qBAAYjM,KAAZ,uBAAmC;AAAA;;AAAA,sHAC3BA,KAD2B;;AAAA,UAsDnCsM,WAtDmC,GAsDE,UAACrI,CAAD,EAAIoE,QAAJ,EAAiB;AACpD,yBAAI,4BAAJ,EAAkCA,QAAlC;;AAEA;AACA,UAAMkE,cAAc,MAAKvM,KAAL,CAAW6J,OAAX,CAAmB5F,CAAnB,EAAsB,6CAA0BoE,QAA1B,CAAtB,CAApB;AACA;AACA,UAAIkE,gBAAgB,KAApB,EAA2B,OAAO,KAAP;;AAE3B,YAAK7C,QAAL,CAAc,EAACZ,UAAU,IAAX,EAAiB0D,SAAS,IAA1B,EAAd;AACD,KA/DkC;;AAAA,UAiEnCnC,MAjEmC,GAiEH,UAACpG,CAAD,EAAIoE,QAAJ,EAAiB;AAC/C,UAAI,CAAC,MAAKN,KAAL,CAAWe,QAAhB,EAA0B,OAAO,KAAP;AAC1B,yBAAI,uBAAJ,EAA6BT,QAA7B;;AAEA,UAAMoE,SAAS,6CAA0BpE,QAA1B,CAAf;;AAEA,UAAMqE,wCAAmC;AACvC/I,WAAG8I,OAAO9I,CAD6B;AAEvCG,WAAG2I,OAAO3I;AAF6B,OAAzC;;AAKA;AACA,UAAI,MAAK9D,KAAL,CAAWmG,MAAf,EAAuB;AACrB;AADqB,YAEdxC,EAFc,GAEN+I,QAFM,CAEd/I,CAFc;AAAA,YAEXG,EAFW,GAEN4I,QAFM,CAEX5I,CAFW;;AAIrB;AACA;AACA;;AACA4I,iBAAS/I,CAAT,IAAc,MAAKoE,KAAL,CAAW4E,MAAzB;AACAD,iBAAS5I,CAAT,IAAc,MAAKiE,KAAL,CAAW6E,MAAzB;;AAEA;;AAVqB,gCAWU,0CAAuBF,SAAS/I,CAAhC,EAAmC+I,SAAS5I,CAA5C,CAXV;AAAA;AAAA,YAWd+I,SAXc;AAAA,YAWHC,SAXG;;AAYrBJ,iBAAS/I,CAAT,GAAakJ,SAAb;AACAH,iBAAS5I,CAAT,GAAagJ,SAAb;;AAEA;AACAJ,iBAASC,MAAT,GAAkB,MAAK5E,KAAL,CAAW4E,MAAX,IAAqBhJ,KAAI+I,SAAS/I,CAAlC,CAAlB;AACA+I,iBAASE,MAAT,GAAkB,MAAK7E,KAAL,CAAW6E,MAAX,IAAqB9I,KAAI4I,SAAS5I,CAAlC,CAAlB;;AAEA;AACA2I,eAAO9I,CAAP,GAAW+I,SAAS/I,CAApB;AACA8I,eAAO3I,CAAP,GAAW4I,SAAS5I,CAApB;AACA2I,eAAOvE,MAAP,GAAgBwE,SAAS/I,CAAT,GAAa,MAAKoE,KAAL,CAAWpE,CAAxC;AACA8I,eAAOtE,MAAP,GAAgBuE,SAAS5I,CAAT,GAAa,MAAKiE,KAAL,CAAWjE,CAAxC;AACD;;AAED;AACA,UAAMgG,eAAe,MAAK9J,KAAL,CAAWqK,MAAX,CAAkBpG,CAAlB,EAAqBwI,MAArB,CAArB;AACA,UAAI3C,iBAAiB,KAArB,EAA4B,OAAO,KAAP;;AAE5B,YAAKJ,QAAL,CAAcgD,QAAd;AACD,KA5GkC;;AAAA,UA8GnCK,UA9GmC,GA8GC,UAAC9I,CAAD,EAAIoE,QAAJ,EAAiB;AACnD,UAAI,CAAC,MAAKN,KAAL,CAAWe,QAAhB,EAA0B,OAAO,KAAP;;AAE1B;AACA,UAAMkE,aAAa,MAAKhN,KAAL,CAAW2K,MAAX,CAAkB1G,CAAlB,EAAqB,6CAA0BoE,QAA1B,CAArB,CAAnB;AACA,UAAI2E,eAAe,KAAnB,EAA0B,OAAO,KAAP;;AAE1B,yBAAI,2BAAJ,EAAiC3E,QAAjC;;AAEA,UAAMqE,wCAAmC;AACvC5D,kBAAU,KAD6B;AAEvC6D,gBAAQ,CAF+B;AAGvCC,gBAAQ;AAH+B,OAAzC;;AAMA;AACA;AACA,UAAMK,aAAaC,QAAQ,MAAKlN,KAAL,CAAW2J,QAAnB,CAAnB;AACA,UAAIsD,UAAJ,EAAgB;AAAA,mCACC,MAAKjN,KAAL,CAAW2J,QADZ;AAAA,YACPhG,GADO,wBACPA,CADO;AAAA,YACJG,GADI,wBACJA,CADI;;AAEd4I,iBAAS/I,CAAT,GAAaA,GAAb;AACA+I,iBAAS5I,CAAT,GAAaA,GAAb;AACD;;AAED,YAAK4F,QAAL,CAAcgD,QAAd;AACD,KAvIkC;;AAGjC,UAAK3E,KAAL,GAAa;AACX;AACAe,gBAAU,KAFC;;AAIX;AACA0D,eAAS,KALE;;AAOX;AACA7I,SAAG3D,MAAM2J,QAAN,GAAiB3J,MAAM2J,QAAN,CAAehG,CAAhC,GAAoC3D,MAAMmN,eAAN,CAAsBxJ,CARlD;AASXG,SAAG9D,MAAM2J,QAAN,GAAiB3J,MAAM2J,QAAN,CAAe7F,CAAhC,GAAoC9D,MAAMmN,eAAN,CAAsBrJ,CATlD;;AAWX;AACA6I,cAAQ,CAZG,EAYAC,QAAQ,CAZR;;AAcX;AACAQ,oBAAc;AAfH,KAAb;AAHiC;AAoBlC;;;;yCAEoB;AACnB,UAAI,KAAKpN,KAAL,CAAW2J,QAAX,IAAuB,EAAE,KAAK3J,KAAL,CAAWqK,MAAX,IAAqB,KAAKrK,KAAL,CAAW2K,MAAlC,CAA3B,EAAsE;AACpE;AACA0C,gBAAQC,IAAR,CAAa,8FACX,uGADW,GAEX,6BAFF;AAGD;AACF;;;wCAEmB;AAClB;AACA,UAAG,OAAOvI,OAAOwI,UAAd,KAA6B,WAA7B,IAA4C,mBAASlH,WAAT,CAAqB,IAArB,aAAsCtB,OAAOwI,UAA5F,EAAwG;AACtG,aAAK7D,QAAL,CAAc,EAAE0D,cAAc,IAAhB,EAAd;AACD;AACF;;;8CAEyBI,S,eAAmB;AAC3C;AACA,UAAIA,UAAU7D,QAAV,KACC,CAAC,KAAK3J,KAAL,CAAW2J,QAAZ,IACC6D,UAAU7D,QAAV,CAAmBhG,CAAnB,KAAyB,KAAK3D,KAAL,CAAW2J,QAAX,CAAoBhG,CAD9C,IAEC6J,UAAU7D,QAAV,CAAmB7F,CAAnB,KAAyB,KAAK9D,KAAL,CAAW2J,QAAX,CAAoB7F,CAH/C,CAAJ,EAKI;AACF,aAAK4F,QAAL,CAAc,EAAE/F,GAAG6J,UAAU7D,QAAV,CAAmBhG,CAAxB,EAA2BG,GAAG0J,UAAU7D,QAAV,CAAmB7F,CAAjD,EAAd;AACD;AACF;;;2CAEsB;AACrB,WAAK4F,QAAL,CAAc,EAACZ,UAAU,KAAX,EAAd,EADqB,CACa;AACnC;;;qDAqF2B;AAAA;;AAC1B,UAAIqC,QAAQ,EAAZ;AAAA,UAAgBsC,eAAe,IAA/B;;AAEA;AACA,UAAMR,aAAaC,QAAQ,KAAKlN,KAAL,CAAW2J,QAAnB,CAAnB;AACA,UAAMzD,YAAY,CAAC+G,UAAD,IAAe,KAAKlF,KAAL,CAAWe,QAA5C;;AAEA,UAAMa,WAAW,KAAK3J,KAAL,CAAW2J,QAAX,IAAuB,KAAK3J,KAAL,CAAWmN,eAAnD;AACA,UAAMO,gBAAgB;AACpB;AACA/J,WAAG,2BAAS,IAAT,KAAkBuC,SAAlB,GACD,KAAK6B,KAAL,CAAWpE,CADV,GAEDgG,SAAShG,CAJS;;AAMpB;AACAG,WAAG,2BAAS,IAAT,KAAkBoC,SAAlB,GACD,KAAK6B,KAAL,CAAWjE,CADV,GAED6F,SAAS7F;AATS,OAAtB;;AAYA;AACA,UAAI,KAAKiE,KAAL,CAAWqF,YAAf,EAA6B;AAC3BK,uBAAe,gCAAmBC,aAAnB,CAAf;AACD,OAFD,MAEO;AACL;AACA;AACA;AACA;AACAvC,gBAAQ,gCAAmBuC,aAAnB,CAAR;AACD;;AA7ByB,mBAmCtB,KAAK1N,KAnCiB;AAAA,UAgCxB2N,gBAhCwB,UAgCxBA,gBAhCwB;AAAA,UAiCxBC,wBAjCwB,UAiCxBA,wBAjCwB;AAAA,UAkCxBC,uBAlCwB,UAkCxBA,uBAlCwB;;;AAqC1B,UAAM3C,WAAW,gBAAMF,QAAN,CAAeC,IAAf,CAAoB,KAAKjL,KAAL,CAAWkL,QAA/B,CAAjB;;AAEA;AACA,UAAM9F,YAAY,0BAAY8F,SAASlL,KAAT,CAAeoF,SAAf,IAA4B,EAAxC,EAA6CuI,gBAA7C,kDACfC,wBADe,EACY,KAAK7F,KAAL,CAAWe,QADvB,gCAEf+E,uBAFe,EAEW,KAAK9F,KAAL,CAAWyE,OAFtB,gBAAlB;;AAKA;AACA;AACA,aACE;AAAA;AAAA,qBAAmB,KAAKxM,KAAxB,IAA+B,SAAS,KAAKsM,WAA7C,EAA0D,QAAQ,KAAKjC,MAAvE,EAA+E,QAAQ,KAAK0C,UAA5F;AACG,wBAAMhC,YAAN,CAAmBG,QAAnB,EAA6B;AAC5B9F,qBAAWA,SADiB;AAE5B+F,8BAAWD,SAASlL,KAAT,CAAemL,KAA1B,EAAoCA,KAApC,CAF4B;AAG5BW,qBAAW2B;AAHiB,SAA7B;AADH,OADF;AASD;;;;EAnUoC,gBAAMrC,S;;AAAxBa,S,CAEZZ,W,GAAc,W;AAFFY,S,CAIZX,S,gBAEF,wBAAcA,S;;AAEjB;;;;;;;;;;;;;AAaA3D,QAAM,oBAAUmG,KAAV,CAAgB,CAAC,MAAD,EAAS,GAAT,EAAc,GAAd,EAAmB,MAAnB,CAAhB,C;;AAEN;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA3H,UAAQ,oBAAU4H,SAAV,CAAoB,CAC1B,oBAAUC,KAAV,CAAgB;AACdxK,UAAM,oBAAUoI,MADF;AAEd5E,WAAO,oBAAU4E,MAFH;AAGdnI,SAAK,oBAAUmI,MAHD;AAId1E,YAAQ,oBAAU0E;AAJJ,GAAhB,CAD0B,EAO1B,oBAAUC,MAPgB,EAQ1B,oBAAUiC,KAAV,CAAgB,CAAC,KAAD,CAAhB,CAR0B,CAApB,C;;AAWRH,oBAAkB,oBAAU9B,M;AAC5B+B,4BAA0B,oBAAU/B,M;AACpCgC,2BAAyB,oBAAUhC,M;;AAEnC;;;;;;;;;;;;;;;;;AAiBAsB,mBAAiB,oBAAUa,KAAV,CAAgB;AAC/BrK,OAAG,oBAAUiI,MADkB;AAE/B9H,OAAG,oBAAU8H;AAFkB,GAAhB,C;;AAKjB;;;;;;;;;;;;;;;;;;;;AAoBAjC,YAAU,oBAAUqE,KAAV,CAAgB;AACxBrK,OAAG,oBAAUiI,MADW;AAExB9H,OAAG,oBAAU8H;AAFW,GAAhB,C;;AAKV;;;AAGAxG,6B;AACA+F,yB;AACAW;;AApHiBG,S,CAuHZF,Y,gBACF,wBAAcA,Y;AACjBpE,QAAM,M;AACNxB,UAAQ,K;AACRwH,oBAAkB,iB;AAClBC,4BAA0B,0B;AAC1BC,2BAAyB,yB;AACzBV,mBAAiB,EAACxJ,GAAG,CAAJ,EAAOG,GAAG,CAAV,E;AACjB6F,YAAU;;kBA/HOsC,S;;;;;;;ACrCrB;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,6BAA6B;AAC7B,QAAQ;AACR;AACA;AACA;AACA;AACA,+BAA+B,KAAK;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,4BAA4B;AAC5B,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,gCAAgC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,gCAAgC;AACrD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;AC7hBA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,kCAAkC;AAClC;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,sBAAsB;AACtC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;ACzFA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,UAAU;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gGAAgG;AAChG;AACA,SAAS;AACT;AACA;AACA,gGAAgG;AAChG;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB;;AAEhB;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA,GAAG;AAAA;AACH,EAAE;AACF;AACA;AACA,CAAC;;;;;;;;;;;;;QC7CegC,S,GAAAA,S;QAiBAC,kB,GAAAA,kB;QAIAC,oB,GAAAA,oB;AAtBhB,IAAMC,WAAW,CAAC,KAAD,EAAQ,QAAR,EAAkB,GAAlB,EAAuB,IAAvB,CAAjB;AACO,SAASH,SAAT,gBAAqD;AAAA,MAAlCI,IAAkC,oFAArB,WAAqB;;AAC1D;AACA;AACA;AACA,MAAI,OAAOtJ,MAAP,KAAkB,WAAlB,IAAiC,OAAOA,OAAOyF,QAAd,KAA2B,WAAhE,EAA6E,OAAO,EAAP;;AAE7E,MAAMW,QAAQpG,OAAOyF,QAAP,CAAgB8D,eAAhB,CAAgCnD,KAA9C;;AAEA,MAAIkD,QAAQlD,KAAZ,EAAmB,OAAO,EAAP;;AAEnB,OAAK,IAAI/L,IAAI,CAAb,EAAgBA,IAAIgP,SAAS/O,MAA7B,EAAqCD,GAArC,EAA0C;AACxC,QAAI8O,mBAAmBG,IAAnB,EAAyBD,SAAShP,CAAT,CAAzB,KAAyC+L,KAA7C,EAAoD,OAAOiD,SAAShP,CAAT,CAAP;AACrD;;AAED,SAAO,EAAP;AACD;;AAEM,SAAS8O,kBAAT,CAA4BG,IAA5B,eAA0CE,MAA1C,4BAAkE;AACvE,SAAOA,cAAYA,MAAZ,GAAqBC,iBAAiBH,IAAjB,CAArB,GAAgDA,IAAvD;AACD;;AAEM,SAASF,oBAAT,CAA8BE,IAA9B,eAA4CE,MAA5C,4BAAoE;AACzE,SAAOA,eAAaA,OAAOE,WAAP,EAAb,SAAqCJ,IAArC,GAA8CA,IAArD;AACD;;AAED,SAASG,gBAAT,CAA0BE,GAA1B,4BAA+C;AAC7C,MAAIC,MAAM,EAAV;AACA,MAAIC,mBAAmB,IAAvB;AACA,OAAK,IAAIxP,IAAI,CAAb,EAAgBA,IAAIsP,IAAIrP,MAAxB,EAAgCD,GAAhC,EAAqC;AACnC,QAAIwP,gBAAJ,EAAsB;AACpBD,aAAOD,IAAItP,CAAJ,EAAOyP,WAAP,EAAP;AACAD,yBAAmB,KAAnB;AACD,KAHD,MAGO,IAAIF,IAAItP,CAAJ,MAAW,GAAf,EAAoB;AACzBwP,yBAAmB,IAAnB;AACD,KAFM,MAEA;AACLD,aAAOD,IAAItP,CAAJ,CAAP;AACD;AACF;AACD,SAAOuP,GAAP;AACD;;AAED;AACA;AACA;kBACeV,W;;;;;;AC9Cf;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU","file":"./dist/react-draggable.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react-dom\"), require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react-dom\", \"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactDraggable\"] = factory(require(\"react-dom\"), require(\"react\"));\n\telse\n\t\troot[\"ReactDraggable\"] = factory(root[\"ReactDOM\"], root[\"React\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_4__, __WEBPACK_EXTERNAL_MODULE_6__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \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// 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 = 12);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 33f74c03cddcdadf8186","// @flow\n// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc\nexport function findInArray(array: Array | TouchList, callback: Function): any {\n for (let i = 0, length = array.length; i < length; i++) {\n if (callback.apply(callback, [array[i], i, array])) return array[i];\n }\n}\n\nexport function isFunction(func: any): boolean {\n return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]';\n}\n\nexport function isNum(num: any): boolean {\n return typeof num === 'number' && !isNaN(num);\n}\n\nexport function int(a: string): number {\n return parseInt(a, 10);\n}\n\nexport function dontSetMe(props: Object, propName: string, componentName: string) {\n if (props[propName]) {\n return new Error(`Invalid prop ${propName} passed to ${componentName} - do not set this, set it on the child.`);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/shims.js","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/emptyFunction.js\n// module id = 1\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/invariant.js\n// module id = 2\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/lib/ReactPropTypesSecret.js\n// module id = 3\n// module chunks = 0","module.exports = __WEBPACK_EXTERNAL_MODULE_4__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react-dom\",\"commonjs2\":\"react-dom\",\"amd\":\"react-dom\",\"root\":\"ReactDOM\"}\n// module id = 4\n// module chunks = 0","// @flow\nimport {findInArray, isFunction, int} from './shims';\nimport browserPrefix, {browserPrefixToKey} from './getPrefix';\n\nimport type {ControlPosition, MouseTouchEvent} from './types';\n\nlet matchesSelectorFunc = '';\nexport function matchesSelector(el: Node, selector: string): boolean {\n if (!matchesSelectorFunc) {\n matchesSelectorFunc = findInArray([\n 'matches',\n 'webkitMatchesSelector',\n 'mozMatchesSelector',\n 'msMatchesSelector',\n 'oMatchesSelector'\n ], function(method){\n // $FlowIgnore: Doesn't think elements are indexable\n return isFunction(el[method]);\n });\n }\n\n // Might not be found entirely (not an Element?) - in that case, bail\n // $FlowIgnore: Doesn't think elements are indexable\n if (!isFunction(el[matchesSelectorFunc])) return false;\n\n // $FlowIgnore: Doesn't think elements are indexable\n return el[matchesSelectorFunc](selector);\n}\n\n// Works up the tree to the draggable itself attempting to match selector.\nexport function matchesSelectorAndParentsTo(el: Node, selector: string, baseNode: Node): boolean {\n let node = el;\n do {\n if (matchesSelector(node, selector)) return true;\n if (node === baseNode) return false;\n node = node.parentNode;\n } while (node);\n\n return false;\n}\n\nexport function addEvent(el: ?Node, event: string, handler: Function): void {\n if (!el) { return; }\n if (el.attachEvent) {\n el.attachEvent('on' + event, handler);\n } else if (el.addEventListener) {\n el.addEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = handler;\n }\n}\n\nexport function removeEvent(el: ?Node, event: string, handler: Function): void {\n if (!el) { return; }\n if (el.detachEvent) {\n el.detachEvent('on' + event, handler);\n } else if (el.removeEventListener) {\n el.removeEventListener(event, handler, true);\n } else {\n // $FlowIgnore: Doesn't think elements are indexable\n el['on' + event] = null;\n }\n}\n\nexport function outerHeight(node: HTMLElement): number {\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetTop which is including margin. See getBoundPosition\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height += int(computedStyle.borderTopWidth);\n height += int(computedStyle.borderBottomWidth);\n return height;\n}\n\nexport function outerWidth(node: HTMLElement): number {\n // This is deliberately excluding margin for our calculations, since we are using\n // offsetLeft which is including margin. See getBoundPosition\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width += int(computedStyle.borderLeftWidth);\n width += int(computedStyle.borderRightWidth);\n return width;\n}\nexport function innerHeight(node: HTMLElement): number {\n let height = node.clientHeight;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n height -= int(computedStyle.paddingTop);\n height -= int(computedStyle.paddingBottom);\n return height;\n}\n\nexport function innerWidth(node: HTMLElement): number {\n let width = node.clientWidth;\n const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node);\n width -= int(computedStyle.paddingLeft);\n width -= int(computedStyle.paddingRight);\n return width;\n}\n\n// Get from offsetParent\nexport function offsetXYFromParent(evt: {clientX: number, clientY: number}, offsetParent: HTMLElement): ControlPosition {\n const isBody = offsetParent === offsetParent.ownerDocument.body;\n const offsetParentRect = isBody ? {left: 0, top: 0} : offsetParent.getBoundingClientRect();\n\n const x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left;\n const y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top;\n\n return {x, y};\n}\n\nexport function createCSSTransform({x, y}: {x: number, y: number}): Object {\n // Replace unitless items with px\n return {[browserPrefixToKey('transform', browserPrefix)]: 'translate(' + x + 'px,' + y + 'px)'};\n}\n\nexport function createSVGTransform({x, y}: {x: number, y: number}): string {\n return 'translate(' + x + ',' + y + ')';\n}\n\nexport function getTouch(e: MouseTouchEvent, identifier: number): ?{clientX: number, clientY: number} {\n return (e.targetTouches && findInArray(e.targetTouches, t => identifier === t.identifier)) ||\n (e.changedTouches && findInArray(e.changedTouches, t => identifier === t.identifier));\n}\n\nexport function getTouchIdentifier(e: MouseTouchEvent): ?number {\n if (e.targetTouches && e.targetTouches[0]) return e.targetTouches[0].identifier;\n if (e.changedTouches && e.changedTouches[0]) return e.changedTouches[0].identifier;\n}\n\n// User-select Hacks:\n//\n// Useful for preventing blue highlights all over everything when dragging.\n\n// Note we're passing `document` b/c we could be iframed\nexport function addUserSelectStyles(doc: ?Document) {\n if (!doc) return;\n let styleEl = doc.getElementById('react-draggable-style-el');\n if (!styleEl) {\n styleEl = doc.createElement('style');\n styleEl.type = 'text/css';\n styleEl.id = 'react-draggable-style-el';\n styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {background: transparent;}\\n';\n styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {background: transparent;}\\n';\n doc.getElementsByTagName('head')[0].appendChild(styleEl);\n }\n if (doc.body) addClassName(doc.body, 'react-draggable-transparent-selection');\n}\n\nexport function removeUserSelectStyles(doc: ?Document) {\n try {\n if (doc && doc.body) removeClassName(doc.body, 'react-draggable-transparent-selection');\n window.getSelection().removeAllRanges(); // remove selection caused by scroll\n } catch (e) {\n // probably IE\n }\n}\n\nexport function styleHacks(childStyle: Object = {}): Object {\n // Workaround IE pointer events; see #51\n // https://github.com/mzabriskie/react-draggable/issues/51#issuecomment-103488278\n return {\n touchAction: 'none',\n ...childStyle\n };\n}\n\nexport function addClassName(el: HTMLElement, className: string) {\n if (el.classList) {\n el.classList.add(className);\n } else {\n if (!el.className.match(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`))) {\n el.className += ` ${className}`;\n }\n }\n}\n\nexport function removeClassName(el: HTMLElement, className: string) {\n if (el.classList) {\n el.classList.remove(className);\n } else {\n el.className = el.className.replace(new RegExp(`(?:^|\\\\s)${className}(?!\\\\S)`, 'g'), '');\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/domFns.js","module.exports = __WEBPACK_EXTERNAL_MODULE_6__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}\n// module id = 6\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/index.js\n// module id = 7\n// module chunks = 0","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/warning.js\n// module id = 8\n// module chunks = 0","// @flow\nimport {isNum, int} from './shims';\nimport ReactDOM from 'react-dom';\nimport {getTouch, innerWidth, innerHeight, offsetXYFromParent, outerWidth, outerHeight} from './domFns';\n\nimport type Draggable from '../Draggable';\nimport type {Bounds, ControlPosition, DraggableData, MouseTouchEvent} from './types';\nimport type DraggableCore from '../DraggableCore';\n\nexport function getBoundPosition(draggable: Draggable, x: number, y: number): [number, number] {\n // If no bounds, short-circuit and move on\n if (!draggable.props.bounds) return [x, y];\n\n // Clone new bounds\n let {bounds} = draggable.props;\n bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds);\n const node = findDOMNode(draggable);\n\n if (typeof bounds === 'string') {\n const {ownerDocument} = node;\n const ownerWindow = ownerDocument.defaultView;\n let boundNode;\n if (bounds === 'parent') {\n boundNode = node.parentNode;\n } else {\n boundNode = ownerDocument.querySelector(bounds);\n }\n if (!(boundNode instanceof HTMLElement)) {\n throw new Error('Bounds selector \"' + bounds + '\" could not find an element.');\n }\n const nodeStyle = ownerWindow.getComputedStyle(node);\n const boundNodeStyle = ownerWindow.getComputedStyle(boundNode);\n // Compute bounds. This is a pain with padding and offsets but this gets it exactly right.\n bounds = {\n left: -node.offsetLeft + int(boundNodeStyle.paddingLeft) + int(nodeStyle.marginLeft),\n top: -node.offsetTop + int(boundNodeStyle.paddingTop) + int(nodeStyle.marginTop),\n right: innerWidth(boundNode) - outerWidth(node) - node.offsetLeft +\n int(boundNodeStyle.paddingRight) - int(nodeStyle.marginRight),\n bottom: innerHeight(boundNode) - outerHeight(node) - node.offsetTop +\n int(boundNodeStyle.paddingBottom) - int(nodeStyle.marginBottom)\n };\n }\n\n // Keep x and y below right and bottom limits...\n if (isNum(bounds.right)) x = Math.min(x, bounds.right);\n if (isNum(bounds.bottom)) y = Math.min(y, bounds.bottom);\n\n // But above left and top limits.\n if (isNum(bounds.left)) x = Math.max(x, bounds.left);\n if (isNum(bounds.top)) y = Math.max(y, bounds.top);\n\n return [x, y];\n}\n\nexport function snapToGrid(grid: [number, number], pendingX: number, pendingY: number): [number, number] {\n const x = Math.round(pendingX / grid[0]) * grid[0];\n const y = Math.round(pendingY / grid[1]) * grid[1];\n return [x, y];\n}\n\nexport function canDragX(draggable: Draggable): boolean {\n return draggable.props.axis === 'both' || draggable.props.axis === 'x';\n}\n\nexport function canDragY(draggable: Draggable): boolean {\n return draggable.props.axis === 'both' || draggable.props.axis === 'y';\n}\n\n// Get {x, y} positions from event.\nexport function getControlPosition(e: MouseTouchEvent, touchIdentifier: ?number, draggableCore: DraggableCore): ?ControlPosition {\n const touchObj = typeof touchIdentifier === 'number' ? getTouch(e, touchIdentifier) : null;\n if (typeof touchIdentifier === 'number' && !touchObj) return null; // not the right touch\n const node = findDOMNode(draggableCore);\n // User can provide an offsetParent if desired.\n const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body;\n return offsetXYFromParent(touchObj || e, offsetParent);\n}\n\n// Create an data object exposed by 's events\nexport function createCoreData(draggable: DraggableCore, x: number, y: number): DraggableData {\n const state = draggable.state;\n const isStart = !isNum(state.lastX);\n const node = findDOMNode(draggable);\n\n if (isStart) {\n // If this is our first move, use the x and y as last coords.\n return {\n node,\n deltaX: 0, deltaY: 0,\n lastX: x, lastY: y,\n x, y,\n };\n } else {\n // Otherwise calculate proper values.\n return {\n node,\n deltaX: x - state.lastX, deltaY: y - state.lastY,\n lastX: state.lastX, lastY: state.lastY,\n x, y,\n };\n }\n}\n\n// Create an data exposed by 's events\nexport function createDraggableData(draggable: Draggable, coreData: DraggableData): DraggableData {\n return {\n node: coreData.node,\n x: draggable.state.x + coreData.deltaX,\n y: draggable.state.y + coreData.deltaY,\n deltaX: coreData.deltaX,\n deltaY: coreData.deltaY,\n lastX: draggable.state.x,\n lastY: draggable.state.y\n };\n}\n\n// A lot faster than stringify/parse\nfunction cloneBounds(bounds: Bounds): Bounds {\n return {\n left: bounds.left,\n top: bounds.top,\n right: bounds.right,\n bottom: bounds.bottom\n };\n}\n\nfunction findDOMNode(draggable: Draggable | DraggableCore): HTMLElement {\n const node = ReactDOM.findDOMNode(draggable);\n if (!node) {\n throw new Error(': Unmounted during event!');\n }\n // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME\n return node;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/positionFns.js","// @flow\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport {matchesSelectorAndParentsTo, addEvent, removeEvent, addUserSelectStyles, getTouchIdentifier,\n removeUserSelectStyles, styleHacks} from './utils/domFns';\nimport {createCoreData, getControlPosition, snapToGrid} from './utils/positionFns';\nimport {dontSetMe} from './utils/shims';\nimport log from './utils/log';\n\nimport type {EventHandler, MouseTouchEvent} from './utils/types';\nimport type {Element as ReactElement} from 'react';\n\n// Simple abstraction for dragging events names.\nconst eventsFor = {\n touch: {\n start: 'touchstart',\n move: 'touchmove',\n stop: 'touchend'\n },\n mouse: {\n start: 'mousedown',\n move: 'mousemove',\n stop: 'mouseup'\n }\n};\n\n// Default to mouse events.\nlet dragEventFor = eventsFor.mouse;\n\ntype DraggableCoreState = {\n dragging: boolean,\n lastX: number,\n lastY: number,\n touchIdentifier: ?number\n};\n\nexport type DraggableBounds = {\n left: number,\n right: number,\n top: number,\n bottom: number,\n};\n\nexport type DraggableData = {\n node: HTMLElement,\n x: number, y: number,\n deltaX: number, deltaY: number,\n lastX: number, lastY: number,\n};\n\nexport type DraggableEventHandler = (e: MouseEvent, data: DraggableData) => void;\n\nexport type ControlPosition = {x: number, y: number};\n\nexport type DraggableCoreProps = {\n allowAnyClick: boolean,\n cancel: string,\n children: ReactElement,\n disabled: boolean,\n enableUserSelectHack: boolean,\n offsetParent: HTMLElement,\n grid: [number, number],\n handle: string,\n onStart: DraggableEventHandler,\n onDrag: DraggableEventHandler,\n onStop: DraggableEventHandler,\n onMouseDown: (e: MouseEvent) => void,\n};\n\n//\n// Define .\n//\n// is for advanced usage of . It maintains minimal internal state so it can\n// work well with libraries that require more control over the element.\n//\n\nexport default class DraggableCore extends React.Component {\n\n static displayName = 'DraggableCore';\n\n static propTypes = {\n /**\n * `allowAnyClick` allows dragging using any mouse button.\n * By default, we only accept the left button.\n *\n * Defaults to `false`.\n */\n allowAnyClick: PropTypes.bool,\n\n /**\n * `disabled`, if true, stops the from dragging. All handlers,\n * with the exception of `onMouseDown`, will not fire.\n */\n disabled: PropTypes.bool,\n\n /**\n * By default, we add 'user-select:none' attributes to the document body\n * to prevent ugly text selection during drag. If this is causing problems\n * for your app, set this to `false`.\n */\n enableUserSelectHack: PropTypes.bool,\n\n /**\n * `offsetParent`, if set, uses the passed DOM node to compute drag offsets\n * instead of using the parent node.\n */\n offsetParent: function(props: DraggableCoreProps, propName: $Keys) {\n if (process.browser === true && props[propName] && props[propName].nodeType !== 1) {\n throw new Error('Draggable\\'s offsetParent must be a DOM Node.');\n }\n },\n\n /**\n * `grid` specifies the x and y that dragging should snap to.\n */\n grid: PropTypes.arrayOf(PropTypes.number),\n\n /**\n * `handle` specifies a selector to be used as the handle that initiates drag.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
    \n *
    Click me to drag
    \n *
    This is some other content
    \n *
    \n *
    \n * );\n * }\n * });\n * ```\n */\n handle: PropTypes.string,\n\n /**\n * `cancel` specifies a selector to be used to prevent drag initialization.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return(\n * \n *
    \n *
    You can't drag from here
    \n *
    Dragging here works fine
    \n *
    \n *
    \n * );\n * }\n * });\n * ```\n */\n cancel: PropTypes.string,\n\n /**\n * Called when dragging starts.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onStart: PropTypes.func,\n\n /**\n * Called while dragging.\n * If this function returns the boolean false, dragging will be canceled.\n */\n onDrag: PropTypes.func,\n\n /**\n * Called when dragging stops.\n * If this function returns the boolean false, the drag will remain active.\n */\n onStop: PropTypes.func,\n\n /**\n * A workaround option which can be passed if onMouseDown needs to be accessed,\n * since it'll always be blocked (as there is internal use of onMouseDown)\n */\n onMouseDown: PropTypes.func,\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: dontSetMe,\n style: dontSetMe,\n transform: dontSetMe\n };\n\n static defaultProps = {\n allowAnyClick: false, // by default only accept left click\n cancel: null,\n disabled: false,\n enableUserSelectHack: true,\n offsetParent: null,\n handle: null,\n grid: null,\n transform: null,\n onStart: function(){},\n onDrag: function(){},\n onStop: function(){},\n onMouseDown: function(){}\n };\n\n state = {\n dragging: false,\n // Used while dragging to determine deltas.\n lastX: NaN, lastY: NaN,\n touchIdentifier: null\n };\n\n componentWillUnmount() {\n // Remove any leftover event handlers. Remove both touch and mouse handlers in case\n // some browser quirk caused a touch event to fire during a mouse move, or vice versa.\n const thisNode = ReactDOM.findDOMNode(this);\n if (thisNode) {\n const {ownerDocument} = thisNode;\n removeEvent(ownerDocument, eventsFor.mouse.move, this.handleDrag);\n removeEvent(ownerDocument, eventsFor.touch.move, this.handleDrag);\n removeEvent(ownerDocument, eventsFor.mouse.stop, this.handleDragStop);\n removeEvent(ownerDocument, eventsFor.touch.stop, this.handleDragStop);\n if (this.props.enableUserSelectHack) removeUserSelectStyles(ownerDocument);\n }\n }\n\n handleDragStart: EventHandler = (e) => {\n // Make it possible to attach event handlers on top of this one.\n this.props.onMouseDown(e);\n\n // Only accept left-clicks.\n if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) return false;\n\n // Get nodes. Be sure to grab relative document (could be iframed)\n const thisNode = ReactDOM.findDOMNode(this);\n if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) {\n throw new Error(' not mounted on DragStart!');\n }\n const {ownerDocument} = thisNode;\n\n // Short circuit if handle or cancel prop was provided and selector doesn't match.\n if (this.props.disabled ||\n (!(e.target instanceof ownerDocument.defaultView.Node)) ||\n (this.props.handle && !matchesSelectorAndParentsTo(e.target, this.props.handle, thisNode)) ||\n (this.props.cancel && matchesSelectorAndParentsTo(e.target, this.props.cancel, thisNode))) {\n return;\n }\n\n // Set touch identifier in component state if this is a touch event. This allows us to\n // distinguish between individual touches on multitouch screens by identifying which\n // touchpoint was set to this element.\n const touchIdentifier = getTouchIdentifier(e);\n this.setState({touchIdentifier});\n\n // Get the current drag point from the event. This is used as the offset.\n const position = getControlPosition(e, touchIdentifier, this);\n if (position == null) return; // not possible but satisfies flow\n const {x, y} = position;\n\n // Create an event object with all the data parents need to make a decision here.\n const coreEvent = createCoreData(this, x, y);\n\n log('DraggableCore: handleDragStart: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, cancel.\n log('calling', this.props.onStart);\n const shouldUpdate = this.props.onStart(e, coreEvent);\n if (shouldUpdate === false) return;\n\n // Add a style to the body to disable user-select. This prevents text from\n // being selected all over the page.\n if (this.props.enableUserSelectHack) addUserSelectStyles(ownerDocument);\n\n // Initiate dragging. Set the current x and y as offsets\n // so we know how much we've moved during the drag. This allows us\n // to drag elements around even if they have been moved, without issue.\n this.setState({\n dragging: true,\n\n lastX: x,\n lastY: y\n });\n\n // Add events to the document directly so we catch when the user's mouse/touch moves outside of\n // this element. We use different events depending on whether or not we have detected that this\n // is a touch-capable device.\n addEvent(ownerDocument, dragEventFor.move, this.handleDrag);\n addEvent(ownerDocument, dragEventFor.stop, this.handleDragStop);\n };\n\n handleDrag: EventHandler = (e) => {\n\n // Prevent scrolling on mobile devices, like ipad/iphone.\n if (e.type === 'touchmove') e.preventDefault();\n\n // Get the current drag point from the event. This is used as the offset.\n const position = getControlPosition(e, this.state.touchIdentifier, this);\n if (position == null) return;\n let {x, y} = position;\n\n // Snap to grid if prop has been provided\n if (Array.isArray(this.props.grid)) {\n let deltaX = x - this.state.lastX, deltaY = y - this.state.lastY;\n [deltaX, deltaY] = snapToGrid(this.props.grid, deltaX, deltaY);\n if (!deltaX && !deltaY) return; // skip useless drag\n x = this.state.lastX + deltaX, y = this.state.lastY + deltaY;\n }\n\n const coreEvent = createCoreData(this, x, y);\n\n log('DraggableCore: handleDrag: %j', coreEvent);\n\n // Call event handler. If it returns explicit false, trigger end.\n const shouldUpdate = this.props.onDrag(e, coreEvent);\n if (shouldUpdate === false) {\n try {\n // $FlowIgnore\n this.handleDragStop(new MouseEvent('mouseup'));\n } catch (err) {\n // Old browsers\n const event = ((document.createEvent('MouseEvents'): any): MouseTouchEvent);\n // I see why this insanity was deprecated\n // $FlowIgnore\n event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n this.handleDragStop(event);\n }\n return;\n }\n\n this.setState({\n lastX: x,\n lastY: y\n });\n };\n\n handleDragStop: EventHandler = (e) => {\n if (!this.state.dragging) return;\n\n const position = getControlPosition(e, this.state.touchIdentifier, this);\n if (position == null) return;\n const {x, y} = position;\n const coreEvent = createCoreData(this, x, y);\n\n const thisNode = ReactDOM.findDOMNode(this);\n if (thisNode) {\n // Remove user-select hack\n if (this.props.enableUserSelectHack) removeUserSelectStyles(thisNode.ownerDocument);\n }\n\n log('DraggableCore: handleDragStop: %j', coreEvent);\n\n // Reset the el.\n this.setState({\n dragging: false,\n lastX: NaN,\n lastY: NaN\n });\n\n // Call event handler\n this.props.onStop(e, coreEvent);\n\n if (thisNode) {\n // Remove event handlers\n log('DraggableCore: Removing handlers');\n removeEvent(thisNode.ownerDocument, dragEventFor.move, this.handleDrag);\n removeEvent(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop);\n }\n };\n\n onMouseDown: EventHandler = (e) => {\n dragEventFor = eventsFor.mouse; // on touchscreen laptops we could switch back to mouse\n\n return this.handleDragStart(e);\n };\n\n onMouseUp: EventHandler = (e) => {\n dragEventFor = eventsFor.mouse;\n\n return this.handleDragStop(e);\n };\n\n // Same as onMouseDown (start drag), but now consider this a touch device.\n onTouchStart: EventHandler = (e) => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n\n return this.handleDragStart(e);\n };\n\n onTouchEnd: EventHandler = (e) => {\n // We're on a touch device now, so change the event handlers\n dragEventFor = eventsFor.touch;\n\n return this.handleDragStop(e);\n };\n\n render() {\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return React.cloneElement(React.Children.only(this.props.children), {\n style: styleHacks(this.props.children.props.style),\n\n // Note: mouseMove handler is attached to document so it will still function\n // when the user drags quickly and leaves the bounds of the element.\n onMouseDown: this.onMouseDown,\n onTouchStart: this.onTouchStart,\n onMouseUp: this.onMouseUp,\n onTouchEnd: this.onTouchEnd\n });\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/DraggableCore.js","// @flow\n/*eslint no-console:0*/\nexport default function log(...args: any) {\n if (process.env.DRAGGABLE_DEBUG) console.log(...args);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/log.js","var Draggable = require('./lib/Draggable').default;\n\n// Previous versions of this lib exported as the root export. As to not break\n// them, or TypeScript, we export *both* as the root and as 'default'.\n// See https://github.com/mzabriskie/react-draggable/pull/254\n// and https://github.com/mzabriskie/react-draggable/issues/266\nmodule.exports = Draggable;\nmodule.exports.default = Draggable;\nmodule.exports.DraggableCore = require('./lib/DraggableCore').default;\n\n\n\n// WEBPACK FOOTER //\n// ./index.js","// @flow\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport {createCSSTransform, createSVGTransform} from './utils/domFns';\nimport {canDragX, canDragY, createDraggableData, getBoundPosition} from './utils/positionFns';\nimport {dontSetMe} from './utils/shims';\nimport DraggableCore from './DraggableCore';\nimport type {ControlPosition, DraggableBounds, DraggableCoreProps} from './DraggableCore';\nimport log from './utils/log';\nimport type {DraggableEventHandler} from './utils/types';\nimport type {Element as ReactElement} from 'react';\n\ntype DraggableState = {\n dragging: boolean,\n dragged: boolean,\n x: number, y: number,\n slackX: number, slackY: number,\n isElementSVG: boolean\n};\n\nexport type DraggableProps = {\n ...$Exact,\n axis: 'both' | 'x' | 'y' | 'none',\n bounds: DraggableBounds | string | false,\n defaultClassName: string,\n defaultClassNameDragging: string,\n defaultClassNameDragged: string,\n defaultPosition: ControlPosition,\n position: ControlPosition,\n};\n\n//\n// Define \n//\n\nexport default class Draggable extends React.Component {\n\n static displayName = 'Draggable';\n\n static propTypes = {\n // Accepts all props accepts.\n ...DraggableCore.propTypes,\n\n /**\n * `axis` determines which axis the draggable can move.\n *\n * Note that all callbacks will still return data as normal. This only\n * controls flushing to the DOM.\n *\n * 'both' allows movement horizontally and vertically.\n * 'x' limits movement to horizontal axis.\n * 'y' limits movement to vertical axis.\n * 'none' limits all movement.\n *\n * Defaults to 'both'.\n */\n axis: PropTypes.oneOf(['both', 'x', 'y', 'none']),\n\n /**\n * `bounds` determines the range of movement available to the element.\n * Available values are:\n *\n * 'parent' restricts movement within the Draggable's parent node.\n *\n * Alternatively, pass an object with the following properties, all of which are optional:\n *\n * {left: LEFT_BOUND, right: RIGHT_BOUND, bottom: BOTTOM_BOUND, top: TOP_BOUND}\n *\n * All values are in px.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
    Content
    \n *
    \n * );\n * }\n * });\n * ```\n */\n bounds: PropTypes.oneOfType([\n PropTypes.shape({\n left: PropTypes.number,\n right: PropTypes.number,\n top: PropTypes.number,\n bottom: PropTypes.number\n }),\n PropTypes.string,\n PropTypes.oneOf([false])\n ]),\n\n defaultClassName: PropTypes.string,\n defaultClassNameDragging: PropTypes.string,\n defaultClassNameDragged: PropTypes.string,\n\n /**\n * `defaultPosition` specifies the x and y that the dragged item should start at\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
    I start with transformX: 25px and transformY: 25px;
    \n *
    \n * );\n * }\n * });\n * ```\n */\n defaultPosition: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }),\n\n /**\n * `position`, if present, defines the current position of the element.\n *\n * This is similar to how form elements in React work - if no `position` is supplied, the component\n * is uncontrolled.\n *\n * Example:\n *\n * ```jsx\n * let App = React.createClass({\n * render: function () {\n * return (\n * \n *
    I start with transformX: 25px and transformY: 25px;
    \n *
    \n * );\n * }\n * });\n * ```\n */\n position: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }),\n\n /**\n * These properties should be defined on the child, not here.\n */\n className: dontSetMe,\n style: dontSetMe,\n transform: dontSetMe\n };\n\n static defaultProps = {\n ...DraggableCore.defaultProps,\n axis: 'both',\n bounds: false,\n defaultClassName: 'react-draggable',\n defaultClassNameDragging: 'react-draggable-dragging',\n defaultClassNameDragged: 'react-draggable-dragged',\n defaultPosition: {x: 0, y: 0},\n position: null\n };\n\n constructor(props: DraggableProps) {\n super(props);\n\n this.state = {\n // Whether or not we are currently dragging.\n dragging: false,\n\n // Whether or not we have been dragged before.\n dragged: false,\n\n // Current transform x and y.\n x: props.position ? props.position.x : props.defaultPosition.x,\n y: props.position ? props.position.y : props.defaultPosition.y,\n\n // Used for compensating for out-of-bounds drags\n slackX: 0, slackY: 0,\n\n // Can only determine if SVG after mounting\n isElementSVG: false\n };\n }\n\n componentWillMount() {\n if (this.props.position && !(this.props.onDrag || this.props.onStop)) {\n // eslint-disable-next-line\n console.warn('A `position` was applied to this , without drag handlers. This will make this ' +\n 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' +\n '`position` of this element.');\n }\n }\n\n componentDidMount() {\n // Check to see if the element passed is an instanceof SVGElement\n if(typeof window.SVGElement !== 'undefined' && ReactDOM.findDOMNode(this) instanceof window.SVGElement) {\n this.setState({ isElementSVG: true });\n }\n }\n\n componentWillReceiveProps(nextProps: Object) {\n // Set x/y if position has changed\n if (nextProps.position &&\n (!this.props.position ||\n nextProps.position.x !== this.props.position.x ||\n nextProps.position.y !== this.props.position.y\n )\n ) {\n this.setState({ x: nextProps.position.x, y: nextProps.position.y });\n }\n }\n\n componentWillUnmount() {\n this.setState({dragging: false}); // prevents invariant if unmounted while dragging\n }\n\n onDragStart: DraggableEventHandler = (e, coreData) => {\n log('Draggable: onDragStart: %j', coreData);\n\n // Short-circuit if user's callback killed it.\n const shouldStart = this.props.onStart(e, createDraggableData(this, coreData));\n // Kills start event on core as well, so move handlers are never bound.\n if (shouldStart === false) return false;\n\n this.setState({dragging: true, dragged: true});\n };\n\n onDrag: DraggableEventHandler = (e, coreData) => {\n if (!this.state.dragging) return false;\n log('Draggable: onDrag: %j', coreData);\n\n const uiData = createDraggableData(this, coreData);\n\n const newState: $Shape = {\n x: uiData.x,\n y: uiData.y\n };\n\n // Keep within bounds.\n if (this.props.bounds) {\n // Save original x and y.\n const {x, y} = newState;\n\n // Add slack to the values used to calculate bound position. This will ensure that if\n // we start removing slack, the element won't react to it right away until it's been\n // completely removed.\n newState.x += this.state.slackX;\n newState.y += this.state.slackY;\n\n // Get bound position. This will ceil/floor the x and y within the boundaries.\n const [newStateX, newStateY] = getBoundPosition(this, newState.x, newState.y);\n newState.x = newStateX;\n newState.y = newStateY;\n\n // Recalculate slack by noting how much was shaved by the boundPosition handler.\n newState.slackX = this.state.slackX + (x - newState.x);\n newState.slackY = this.state.slackY + (y - newState.y);\n\n // Update the event we fire to reflect what really happened after bounds took effect.\n uiData.x = newState.x;\n uiData.y = newState.y;\n uiData.deltaX = newState.x - this.state.x;\n uiData.deltaY = newState.y - this.state.y;\n }\n\n // Short-circuit if user's callback killed it.\n const shouldUpdate = this.props.onDrag(e, uiData);\n if (shouldUpdate === false) return false;\n\n this.setState(newState);\n };\n\n onDragStop: DraggableEventHandler = (e, coreData) => {\n if (!this.state.dragging) return false;\n\n // Short-circuit if user's callback killed it.\n const shouldStop = this.props.onStop(e, createDraggableData(this, coreData));\n if (shouldStop === false) return false;\n\n log('Draggable: onDragStop: %j', coreData);\n\n const newState: $Shape = {\n dragging: false,\n slackX: 0,\n slackY: 0\n };\n\n // If this is a controlled component, the result of this operation will be to\n // revert back to the old position. We expect a handler on `onDragStop`, at the least.\n const controlled = Boolean(this.props.position);\n if (controlled) {\n const {x, y} = this.props.position;\n newState.x = x;\n newState.y = y;\n }\n\n this.setState(newState);\n };\n\n render(): ReactElement {\n let style = {}, svgTransform = null;\n\n // If this is controlled, we don't want to move it - unless it's dragging.\n const controlled = Boolean(this.props.position);\n const draggable = !controlled || this.state.dragging;\n\n const position = this.props.position || this.props.defaultPosition;\n const transformOpts = {\n // Set left if horizontal drag is enabled\n x: canDragX(this) && draggable ?\n this.state.x :\n position.x,\n\n // Set top if vertical drag is enabled\n y: canDragY(this) && draggable ?\n this.state.y :\n position.y\n };\n\n // If this element was SVG, we use the `transform` attribute.\n if (this.state.isElementSVG) {\n svgTransform = createSVGTransform(transformOpts);\n } else {\n // Add a CSS transform to move the element around. This allows us to move the element around\n // without worrying about whether or not it is relatively or absolutely positioned.\n // If the item you are dragging already has a transform set, wrap it in a so \n // has a clean slate.\n style = createCSSTransform(transformOpts);\n }\n\n const {\n defaultClassName,\n defaultClassNameDragging,\n defaultClassNameDragged\n } = this.props;\n\n const children = React.Children.only(this.props.children);\n\n // Mark with class while dragging\n const className = classNames((children.props.className || ''), defaultClassName, {\n [defaultClassNameDragging]: this.state.dragging,\n [defaultClassNameDragged]: this.state.dragged\n });\n\n // Reuse the child provided\n // This makes it flexible to use whatever element is wanted (div, ul, etc)\n return (\n \n {React.cloneElement(children, {\n className: className,\n style: {...children.props.style, ...style},\n transform: svgTransform\n })}\n \n );\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./lib/Draggable.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n warning(\n false,\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `%s` prop on `%s`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.',\n propFullName,\n componentName\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n warning(\n false,\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received %s at index %s.',\n getPostfixForTypeWarning(checker),\n i\n );\n return emptyFunction.thatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/factoryWithTypeCheckers.js\n// module id = 14\n// module chunks = 0","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/object-assign/index.js\n// module id = 15\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== 'production') {\n var invariant = require('fbjs/lib/invariant');\n var warning = require('fbjs/lib/warning');\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/checkPropTypes.js\n// module id = 16\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n invariant(\n false,\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/prop-types/factoryWithThrowingShims.js\n// module id = 17\n// module chunks = 0","/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/classnames/index.js\n// module id = 18\n// module chunks = 0","// @flow\nconst prefixes = ['Moz', 'Webkit', 'O', 'ms'];\nexport function getPrefix(prop: string='transform'): string {\n // Checking specifically for 'window.document' is for pseudo-browser server-side\n // environments that define 'window' as the global context.\n // E.g. React-rails (see https://github.com/reactjs/react-rails/pull/84)\n if (typeof window === 'undefined' || typeof window.document === 'undefined') return '';\n\n const style = window.document.documentElement.style;\n\n if (prop in style) return '';\n\n for (let i = 0; i < prefixes.length; i++) {\n if (browserPrefixToKey(prop, prefixes[i]) in style) return prefixes[i];\n }\n\n return '';\n}\n\nexport function browserPrefixToKey(prop: string, prefix: string): string {\n return prefix ? `${prefix}${kebabToTitleCase(prop)}` : prop;\n}\n\nexport function browserPrefixToStyle(prop: string, prefix: string): string {\n return prefix ? `-${prefix.toLowerCase()}-${prop}` : prop;\n}\n\nfunction kebabToTitleCase(str: string): string {\n let out = '';\n let shouldCapitalize = true;\n for (let i = 0; i < str.length; i++) {\n if (shouldCapitalize) {\n out += str[i].toUpperCase();\n shouldCapitalize = false;\n } else if (str[i] === '-') {\n shouldCapitalize = true;\n } else {\n out += str[i];\n }\n }\n return out;\n}\n\n// Default export is the prefix itself, like 'Moz', 'Webkit', etc\n// Note that you may have to re-test for certain things; for instance, Chrome 50\n// can handle unprefixed `transform`, but not unprefixed `user-select`\nexport default getPrefix();\n\n\n\n// WEBPACK FOOTER //\n// ./lib/utils/getPrefix.js","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/process/browser.js\n// module id = 20\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/webapp/libs/react-grid-layout/GridItem.js b/webapp/libs/react-grid-layout/GridItem.js index 807f341dd..be4eb0d18 100644 --- a/webapp/libs/react-grid-layout/GridItem.js +++ b/webapp/libs/react-grid-layout/GridItem.js @@ -12,7 +12,7 @@ var _propTypes = require("prop-types"); var _propTypes2 = _interopRequireDefault(_propTypes); -var _reactDraggable = require("../react-draggable/react-draggable"); +var _reactDraggable = require("../react-draggable"); var _reactResizable = require("../react-resizable"); diff --git a/webapp/libs/react-resizable/Resizable.js b/webapp/libs/react-resizable/Resizable.js index 84b91e2af..0c0fd0e99 100644 --- a/webapp/libs/react-resizable/Resizable.js +++ b/webapp/libs/react-resizable/Resizable.js @@ -12,7 +12,7 @@ var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); -var _reactDraggable = require('../react-draggable/react-draggable'); +var _reactDraggable = require('../react-draggable'); var _cloneElement = require('./cloneElement'); From 0871b50ab72c8802943d1819bbdb329da6b3d094 Mon Sep 17 00:00:00 2001 From: Fuying <1165234947@qq.com> Date: Thu, 11 Oct 2018 16:32:03 +0800 Subject: [PATCH 26/45] =?UTF-8?q?UI=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webapp/app/components/StarPanel/Star.less | 6 +++--- webapp/app/components/StarPanel/Star.tsx | 2 +- webapp/app/containers/Teams/Team.less | 6 +++++- .../containers/Teams/component/AddForm.tsx | 20 +++++++++---------- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/webapp/app/components/StarPanel/Star.less b/webapp/app/components/StarPanel/Star.less index 86d3d1deb..8c9bbeebf 100644 --- a/webapp/app/components/StarPanel/Star.less +++ b/webapp/app/components/StarPanel/Star.less @@ -28,7 +28,7 @@ text-align: left; .header { .title{ - font-size: 24px; + font-size: 16px; color:@rich-text; font-weight: 600; } @@ -96,14 +96,14 @@ } .title { - padding: 12px 40px 0 12px; + padding: 0 40px 0 12px; color: @rich-text; .ellipsis; } .content { - padding: 8px 12px 24px; + padding: 8px 12px 0; color: @description-text; .ellipsis; diff --git a/webapp/app/components/StarPanel/Star.tsx b/webapp/app/components/StarPanel/Star.tsx index d0cee5fa2..42d3ec1fc 100644 --- a/webapp/app/components/StarPanel/Star.tsx +++ b/webapp/app/components/StarPanel/Star.tsx @@ -96,7 +96,7 @@ export class Star extends React.PureComponent {
  • - +

    diff --git a/webapp/app/containers/Teams/Team.less b/webapp/app/containers/Teams/Team.less index 4481dd24d..7c4849fd4 100644 --- a/webapp/app/containers/Teams/Team.less +++ b/webapp/app/containers/Teams/Team.less @@ -133,6 +133,11 @@ } .search { margin: 16px 16px 0; + .plusBtn { + border-bottom-right-radius: 4px !important; + border-top-right-radius: 4px !important; + border-right-width: 1px !important; + } } } @@ -282,4 +287,3 @@ } - diff --git a/webapp/app/containers/Teams/component/AddForm.tsx b/webapp/app/containers/Teams/component/AddForm.tsx index 3dbb021df..cb616777d 100644 --- a/webapp/app/containers/Teams/component/AddForm.tsx +++ b/webapp/app/containers/Teams/component/AddForm.tsx @@ -134,17 +134,15 @@ export class AddForm extends React.PureComponent ) } else { return ( - ( -
  • - - - - {o.name ? o.name : o.username} - +
  • + + + + {o.name ? o.name : o.username} - -
  • - ) + + +

  • ) } }) : '' @@ -222,7 +220,7 @@ export class AddForm extends React.PureComponent })( )} - {optionList} From 9e76e20e01b7abd1f2147924e66a25b258c57093 Mon Sep 17 00:00:00 2001 From: shanmengm Date: Fri, 12 Oct 2018 11:50:50 +0800 Subject: [PATCH 27/45] fix bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 修改数据源连接驱动问题 2. 修改构建sql逻辑 3. 添加数据源连接验证validquery 4. 修改pom, 兼容windows平台打包 --- pom.xml | 2 +- .../edp/core/common/jdbc/ESDataSource.java | 10 +++-- .../edp/core/common/jdbc/JdbcDataSource.java | 44 ++++++++++++------- .../java/edp/core/config/DruidConfig.java | 4 ++ .../java/edp/core/enums/DataTypeEnum.java | 28 ++++++------ .../main/java/edp/core/utils/SqlUtils.java | 8 ++-- .../davinci/dto/viewDto/ViewExecuteParam.java | 23 +++++++++- .../davinci/service/impl/ViewServiceImpl.java | 2 +- server/src/main/resources/application.yml | 2 + .../resources/templates/sql/sqlTemplate.stg | 2 +- 10 files changed, 85 insertions(+), 40 deletions(-) diff --git a/pom.xml b/pom.xml index eeb3d7df1..808f451df 100644 --- a/pom.xml +++ b/pom.xml @@ -82,7 +82,7 @@ 1024m true - ${java.home}/lib/rt.jar:${java.home}/lib/jce.jar:${java.home}/../lib/tools.jar + ${java.home}/lib/rt.jar${path.separator}${java.home}/lib/jce.jar${path.separator}${java.home}/../lib/tools.jar -Xlint:all,-serial,-path diff --git a/server/src/main/java/edp/core/common/jdbc/ESDataSource.java b/server/src/main/java/edp/core/common/jdbc/ESDataSource.java index ede4a5f92..caebcd4f4 100644 --- a/server/src/main/java/edp/core/common/jdbc/ESDataSource.java +++ b/server/src/main/java/edp/core/common/jdbc/ESDataSource.java @@ -18,6 +18,8 @@ package edp.core.common.jdbc; +import com.alibaba.druid.pool.ElasticSearchConnection; +import com.alibaba.druid.pool.ElasticSearchDruidDataSource; import com.alibaba.druid.pool.ElasticSearchDruidDataSourceFactory; import edp.core.exception.SourceException; import lombok.extern.slf4j.Slf4j; @@ -37,19 +39,19 @@ private ESDataSource() { private static volatile Map map = new HashMap<>(); - public static synchronized DataSource getDataSource(String jdbcUrl, String username) throws SourceException { + public static synchronized DataSource getDataSource(String jdbcUrl) throws SourceException { String url = jdbcUrl.toLowerCase(); - if (!map.containsKey(username + "@" + url) || null == map.get(username + "@" + url)) { + if (!map.containsKey(url) || null == map.get(url)) { Properties properties = new Properties(); properties.setProperty("url", url); try { dataSource = ElasticSearchDruidDataSourceFactory.createDataSource(properties); - map.put(username + "@" + url, dataSource); + map.put(url, dataSource); } catch (Exception e) { log.error("Exception during pool initialization, ", e); throw new SourceException("Exception during pool initialization: jdbcUrl=" + jdbcUrl); } } - return map.get(username + "@" + url); + return map.get(url); } } diff --git a/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java b/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java index b8bafe17b..86f16882c 100644 --- a/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java +++ b/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java @@ -28,6 +28,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; +import java.sql.DriverManager; import java.sql.SQLException; import java.util.HashMap; import java.util.Map; @@ -72,28 +73,41 @@ public class JdbcDataSource extends DruidDataSource { @Value("${source.connection-error-retry-attempts:3}") private int connectionErrorRetryAttempts; + @Value("${spring.datasource.validation-query}") + private String validationQuery; + private static volatile Map map = new HashMap<>(); public synchronized DruidDataSource getDataSource(String jdbcUrl, String username, String password) throws SourceException { String url = jdbcUrl.toLowerCase(); if (!map.containsKey(username + "@" + url) || null == map.get(username + "@" + url)) { - DataTypeEnum dataTypeEnum = DataTypeEnum.urlOf(jdbcUrl); - - CustomDataSource customDataSource = null; - if (null == dataTypeEnum) { - try { - customDataSource = CustomDataSourceUtils.getCustomDataSource(jdbcUrl); - } catch (Exception e) { - throw new SourceException(e.getMessage()); - } - } - DruidDataSource instance = new JdbcDataSource(); - if (null == dataTypeEnum && null == customDataSource) { - throw new SourceException("Not supported data type: jdbcUrl=" + jdbcUrl); + String className = null; + try { + className = DriverManager.getDriver(url).getClass().getName(); + } catch (SQLException e) { } - instance.setDriverClassName(StringUtils.isEmpty(dataTypeEnum.getDriver()) ? customDataSource.getDriver().trim() : dataTypeEnum.getDriver()); + if (StringUtils.isEmpty(className)) { + DataTypeEnum dataTypeEnum = DataTypeEnum.urlOf(jdbcUrl); + + CustomDataSource customDataSource = null; + if (null == dataTypeEnum) { + try { + customDataSource = CustomDataSourceUtils.getCustomDataSource(jdbcUrl); + } catch (Exception e) { + throw new SourceException(e.getMessage()); + } + } + + if (null == dataTypeEnum && null == customDataSource) { + throw new SourceException("Not supported data type: jdbcUrl=" + jdbcUrl); + } + + instance.setDriverClassName(StringUtils.isEmpty(dataTypeEnum.getDriver()) ? customDataSource.getDriver().trim() : dataTypeEnum.getDriver()); + } else { + instance.setDriverClassName(className); + } instance.setUrl(url); instance.setUsername(url.indexOf(DataTypeEnum.ELASTICSEARCH.getFeature()) > -1 ? null : username); @@ -110,10 +124,10 @@ public synchronized DruidDataSource getDataSource(String jdbcUrl, String usernam instance.setTestOnReturn(testOnReturn); instance.setConnectionErrorRetryAttempts(connectionErrorRetryAttempts); instance.setBreakAfterAcquireFailure(breakAfterAcquireFailure); + instance.setValidationQuery(validationQuery); try { instance.init(); - log.info("user dataseource : {}", dataTypeEnum.getDesc()); } catch (SQLException e) { log.error("Exception during pool initialization", e); throw new SourceException("Exception during pool initialization"); diff --git a/server/src/main/java/edp/core/config/DruidConfig.java b/server/src/main/java/edp/core/config/DruidConfig.java index 7c24e20b7..ce229f415 100644 --- a/server/src/main/java/edp/core/config/DruidConfig.java +++ b/server/src/main/java/edp/core/config/DruidConfig.java @@ -89,6 +89,9 @@ public class DruidConfig { @Value("${spring.datasource.connection-error-retry-attempts}") private int connectionErrorRetryAttempts; + @Value("${spring.datasource.validation-query}") + private String validationQuery; + /** * druid监控 * @@ -140,6 +143,7 @@ public DruidDataSource druidDataSource() { druidDataSource.setTestOnReturn(testOnReturn); druidDataSource.setBreakAfterAcquireFailure(breakAfterAcquireFailure); druidDataSource.setConnectionErrorRetryAttempts(connectionErrorRetryAttempts); + druidDataSource.setValidationQuery(validationQuery); try { druidDataSource.setFilters(filters); diff --git a/server/src/main/java/edp/core/enums/DataTypeEnum.java b/server/src/main/java/edp/core/enums/DataTypeEnum.java index 5098fd60d..923cdcf1d 100644 --- a/server/src/main/java/edp/core/enums/DataTypeEnum.java +++ b/server/src/main/java/edp/core/enums/DataTypeEnum.java @@ -30,29 +30,29 @@ public enum DataTypeEnum { SQLSERVER("sqlserver", "sqlserver", "com.microsoft.sqlserver.jdbc.SQLServerDriver", "\"", "\"", "\"", "\""), - H2("h2", "h2", "org.h2.Driver", null, null, "'", "'"), + H2("h2", "h2", "org.h2.Driver", "`", "`", "'", "'"), - PHOENIX("phoenix", "hbase phoenix", "org.apache.phoenix.jdbc.PhoenixDriver", null, null, "'", "'"), + PHOENIX("phoenix", "hbase phoenix", "org.apache.phoenix.jdbc.PhoenixDriver", "", "", "\"", "\""), - MONGODB("mongodb", "mongodb", "mongodb.jdbc.MongoDriver", null, null, "'", "'"), + MONGODB("mongodb", "mongodb", "mongodb.jdbc.MongoDriver", "", "", "'", "'"), - ELASTICSEARCH("sql4es", "elasticSearch", "nl.anchormen.sql4es.jdbc.ESDriver", null, null, "'", "'"), + ELASTICSEARCH("sql4es", "elasticSearch", "nl.anchormen.sql4es.jdbc.ESDriver", "", "", "'", "'"), - PRESTO("presto", "presto", "com.facebook.presto.jdbc.PrestoDriver", null, null, "'", "'"), + PRESTO("presto", "presto", "com.facebook.presto.jdbc.PrestoDriver", "", "", "'", "'"), - MOONBOX("moonbox", "moonbox", "moonbox.jdbc.MbDriver", null, null, "'", "'"), + MOONBOX("moonbox", "moonbox", "moonbox.jdbc.MbDriver", "`", "`", "`", "`"), - CASSANDRA("cassandra", "cassandra", "com.github.adejanovski.cassandra.jdbc.CassandraDriver", null, null, "'", "'"), + CASSANDRA("cassandra", "cassandra", "com.github.adejanovski.cassandra.jdbc.CassandraDriver", "", "", "'", "'"), - CLICKHOUSE("clickhouse", "clickhouse", "ru.yandex.clickhouse.ClickHouseDriver", null, null, "'", "'"), + CLICKHOUSE("clickhouse", "clickhouse", "ru.yandex.clickhouse.ClickHouseDriver", "", "", "'", "'"), - KYLIN("kylin", "kylin", "org.apache.kylin.jdbc.Driver", null, null, "'", "'"), + KYLIN("kylin", "kylin", "org.apache.kylin.jdbc.Driver", "", "", "'", "'"), - VERTICA("vertica", "vertica", "com.vertica.jdbc.Driver", null, null, "'", "'"), + VERTICA("vertica", "vertica", "com.vertica.jdbc.Driver", "", "", "'", "'"), - HANA("sap", "sap hana", "com.sap.db.jdbc.Driver", null, null, "'", "'"), + HANA("sap", "sap hana", "com.sap.db.jdbc.Driver", "", "", "'", "'"), - IMPALA("impala", "impala", "com.cloudera.impala.jdbc41.Driver", null, null, "'", "'"); + IMPALA("impala", "impala", "com.cloudera.impala.jdbc41.Driver", "", "", "'", "'"); private String feature; @@ -63,6 +63,8 @@ public enum DataTypeEnum { private String aliasPrefix; private String aliasSuffix; + private static final String jdbcUrlPrefix = "jdbc:"; + DataTypeEnum(String feature, String desc, String driver, String keywordPrefix, String keywordSuffix, String aliasPrefix, String aliasSuffix) { this.feature = feature; this.desc = desc; @@ -76,7 +78,7 @@ public enum DataTypeEnum { public static DataTypeEnum urlOf(String jdbcUrl) throws SourceException { String url = jdbcUrl.toLowerCase(); for (DataTypeEnum dataTypeEnum : values()) { - if (url.indexOf(dataTypeEnum.feature) > -1) { + if (url.startsWith(jdbcUrlPrefix + dataTypeEnum.feature)) { try { Class aClass = Class.forName(dataTypeEnum.getDriver()); if (null == aClass) { diff --git a/server/src/main/java/edp/core/utils/SqlUtils.java b/server/src/main/java/edp/core/utils/SqlUtils.java index cf2842ec1..27ff1c12d 100644 --- a/server/src/main/java/edp/core/utils/SqlUtils.java +++ b/server/src/main/java/edp/core/utils/SqlUtils.java @@ -309,7 +309,7 @@ private List getColumns(String tableName, DatabaseMetaData metaData */ private DataSource getDataSource(String jdbcUrl, String userename, String password) throws SourceException { if (jdbcUrl.toLowerCase().indexOf(DataTypeEnum.ELASTICSEARCH.getDesc().toLowerCase()) > -1) { - return ESDataSource.getDataSource(jdbcUrl, userename); + return ESDataSource.getDataSource(jdbcUrl); } else { return jdbcDataSource.getDataSource(jdbcUrl, userename, password); } @@ -336,7 +336,7 @@ private Connection getConnection() throws SourceException { Connection connection = null; try { connection = dataSource.getConnection(); - } catch (SQLException e) { + } catch (Exception e) { log.error("create connection error, jdbcUrl: {}", jdbcUrl); throw new SourceException("create connection error, jdbcUrl: " + this.jdbcUrl); } @@ -348,7 +348,7 @@ private void releaseConnection(Connection connection) { try { connection.close(); connection = null; - } catch (SQLException e) { + } catch (Exception e) { e.printStackTrace(); log.error("connection close error", e.getMessage()); } @@ -361,7 +361,7 @@ public static void closeResult(ResultSet rs) { try { rs.close(); rs = null; - } catch (SQLException e) { + } catch (Exception e) { e.printStackTrace(); } } diff --git a/server/src/main/java/edp/davinci/dto/viewDto/ViewExecuteParam.java b/server/src/main/java/edp/davinci/dto/viewDto/ViewExecuteParam.java index 0be2b8cd4..2128cd4cf 100644 --- a/server/src/main/java/edp/davinci/dto/viewDto/ViewExecuteParam.java +++ b/server/src/main/java/edp/davinci/dto/viewDto/ViewExecuteParam.java @@ -25,6 +25,8 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; @Data public class ViewExecuteParam { @@ -37,6 +39,26 @@ public class ViewExecuteParam { private Long expired; private int limit = 0; + public List getOrders(String jdbcUrl) { + List list = null; + if (null != this.orders && this.orders.size() > 0) { + list = new ArrayList<>(); + Iterator iterator = this.orders.iterator(); + String regex = "sum\\(.*\\)|avg\\(.*\\)|count\\(.*\\)|COUNTDISTINCT\\(.*\\)|max\\(.*\\)|min\\(.*\\)"; + Pattern pattern = Pattern.compile(regex); + while (iterator.hasNext()) { + Order order = iterator.next(); + String column = order.getColumn().trim(); + Matcher matcher = pattern.matcher(order.getColumn().trim()); + if (!matcher.find()) { + column = SqlUtils.getKeywordPrefix(jdbcUrl) + column + SqlUtils.getKeywordSuffix(jdbcUrl); + order.setColumn(column); + } + list.add(order); + } + } + return list; + } public List getAggregators(String jdbcUrl) { List list = null; @@ -68,7 +90,6 @@ public List getAggregators(String jdbcUrl) { return list; } - public static String getField(String field, String jdbcUrl) { String keywordPrefix = SqlUtils.getKeywordPrefix(jdbcUrl); String keywordSuffix = SqlUtils.getKeywordSuffix(jdbcUrl); diff --git a/server/src/main/java/edp/davinci/service/impl/ViewServiceImpl.java b/server/src/main/java/edp/davinci/service/impl/ViewServiceImpl.java index 9fce48163..cd2ccf286 100644 --- a/server/src/main/java/edp/davinci/service/impl/ViewServiceImpl.java +++ b/server/src/main/java/edp/davinci/service/impl/ViewServiceImpl.java @@ -512,7 +512,7 @@ public void buildQuerySql(List querySqlList, SqlEntity sqlEntity, ViewEx ST st = stg.getInstanceOf("querySql"); st.add("groups", executeParam.getGroups()); st.add("aggregators", executeParam.getAggregators(source.getJdbcUrl())); - st.add("orders", executeParam.getOrders()); + st.add("orders", executeParam.getOrders(source.getJdbcUrl())); st.add("filters", executeParam.getFilters()); st.add("keywordPrefix", sqlUtils.getKeywordPrefix(source.getJdbcUrl())); st.add("keywordSuffix", sqlUtils.getKeywordSuffix(source.getJdbcUrl())); diff --git a/server/src/main/resources/application.yml b/server/src/main/resources/application.yml index ca0107dbc..7a2bce6ae 100644 --- a/server/src/main/resources/application.yml +++ b/server/src/main/resources/application.yml @@ -41,6 +41,8 @@ spring: filters: stat break-after-acquire-failure: true connection-error-retry-attempts: 3 + validation-query: SELECT 1 + resources: static-locations: classpath:/META-INF/resources/, classpath:/resources/, classpath:/static/, file:${file.userfiles-path}, file:${file.web_resources} diff --git a/server/src/main/resources/templates/sql/sqlTemplate.stg b/server/src/main/resources/templates/sql/sqlTemplate.stg index 71d1ca984..0eae8c563 100644 --- a/server/src/main/resources/templates/sql/sqlTemplate.stg +++ b/server/src/main/resources/templates/sql/sqlTemplate.stg @@ -80,7 +80,7 @@ WHERE }; separator=" AND "> GROUP BY }; separator=","> -ORDER BY }; separator=","> +ORDER BY }; separator=","> >> From b7aa0fc684397510efd48d6c6fd5919e03ed7d0f Mon Sep 17 00:00:00 2001 From: Fuying <1165234947@qq.com> Date: Fri, 12 Oct 2018 18:14:12 +0800 Subject: [PATCH 28/45] fix bug --- webapp/app/containers/Dashboard/Grid.tsx | 10 +--------- webapp/app/containers/Dashboard/index.tsx | 12 +++++++++++- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/webapp/app/containers/Dashboard/Grid.tsx b/webapp/app/containers/Dashboard/Grid.tsx index 3473e86d4..dcfd12903 100644 --- a/webapp/app/containers/Dashboard/Grid.tsx +++ b/webapp/app/containers/Dashboard/Grid.tsx @@ -203,8 +203,6 @@ interface IGridProps { onResizeAllDashboardItem: () => void onLoadDashboardShareLink: (id: number, authName: string) => void onLoadWidgetShareLink: (id: number, itemId: number, authName: string, resolve?: () => void) => void - onHideNavigator: () => void - onLoadProjectDetail: (id) => any } interface IGridStates { @@ -298,9 +296,6 @@ export class Grid extends React.Component { if (dashboardId && Number(dashboardId) !== -1) { onLoadDashboardDetail(pid, portalId, Number(dashboardId)) } - if (pid) { - this.props.onLoadProjectDetail(pid) - } } public componentWillReceiveProps (nextProps: IGridProps) { @@ -338,7 +333,6 @@ export class Grid extends React.Component { } public componentDidMount () { - this.props.onHideNavigator() window.addEventListener('resize', this.onWindowResize, false) } @@ -1269,9 +1263,7 @@ export function mapDispatchToProps (dispatch) { onResizeDashboardItem: (itemId) => dispatch(resizeDashboardItem(itemId)), onResizeAllDashboardItem: () => dispatch(resizeAllDashboardItem()), onLoadDashboardShareLink: (id, authName) => dispatch(loadDashboardShareLink(id, authName)), - onLoadWidgetShareLink: (id, itemId, authName, resolve) => dispatch(loadWidgetShareLink(id, itemId, authName, resolve)), - onHideNavigator: () => dispatch(hideNavigator()), - onLoadProjectDetail: (id) => dispatch(loadProjectDetail(id)) + onLoadWidgetShareLink: (id, itemId, authName, resolve) => dispatch(loadWidgetShareLink(id, itemId, authName, resolve)) } } diff --git a/webapp/app/containers/Dashboard/index.tsx b/webapp/app/containers/Dashboard/index.tsx index fceeaf1cc..61e3345ae 100644 --- a/webapp/app/containers/Dashboard/index.tsx +++ b/webapp/app/containers/Dashboard/index.tsx @@ -68,6 +68,7 @@ import { hideNavigator, checkNameUniqueAction } from '../App/actions' import { listToTree, findFirstLeaf } from './components/localPositionUtil' import { loadPortals } from '../Portal/actions' import { makeSelectPortals } from '../Portal/selectors' +import { loadProjectDetail } from '../Projects/actions' const utilStyles = require('../../assets/less/util.less') const styles = require('./Dashboard.less') @@ -92,6 +93,7 @@ interface IDashboardProps { onHideNavigator: () => void onCheckUniqueName: (pathname: string, data: any, resolve: () => any, reject: (error: string) => any) => any onLoadPortals: (projectId) => void + onLoadProjectDetail: (id) => any // onLoadDashboardDetail: (selectedDashboard: object, projectId: number, portalId: number, dashboardId: number) => any } @@ -189,6 +191,7 @@ export class Dashboard extends React.Component (e) => { const { params, router } = this.props const { pid, portalId, portalName } = params @@ -662,6 +670,7 @@ export class Dashboard extends React.Component} key={item.id} title={dashboardAction} /> }) + console.log({currentProject}) const AdminIcon = ModulePermission(currentProject, 'viz', true)(Icon) let portalDec = '' @@ -797,7 +806,8 @@ export function mapDispatchToProps (dispatch) { onDeleteDashboard: (id, resolve) => dispatch(deleteDashboard(id, resolve)), onHideNavigator: () => dispatch(hideNavigator()), onCheckUniqueName: (pathname, data, resolve, reject) => dispatch(checkNameUniqueAction(pathname, data, resolve, reject)), - onLoadPortals: (projectId) => dispatch(loadPortals(projectId)) + onLoadPortals: (projectId) => dispatch(loadPortals(projectId)), + onLoadProjectDetail: (id) => dispatch(loadProjectDetail(id)) } } From 0afda6d209e20d5a5c1154be2ea626197e83187c Mon Sep 17 00:00:00 2001 From: shanmengm Date: Mon, 15 Oct 2018 10:28:59 +0800 Subject: [PATCH 29/45] fix bug --- server/pom.xml | 11 +++++++---- .../main/java/edp/core/common/jdbc/ESDataSource.java | 8 +++++--- .../java/edp/core/common/jdbc/JdbcDataSource.java | 6 +++--- server/src/main/java/edp/core/enums/DataTypeEnum.java | 2 +- .../java/edp/davinci/core/utils/SqlParseUtils.java | 6 ++++-- 5 files changed, 20 insertions(+), 13 deletions(-) diff --git a/server/pom.xml b/server/pom.xml index afc92b869..16f09c342 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -15,8 +15,12 @@ + UTF-8 + UTF-8 + 1.8 true - 5.3.2 + 6.4.2 + 5.3.2 @@ -171,13 +175,12 @@ org.elasticsearch.client transport - ${elasticsearch-sql.version} + ${elasticsearch.version} - org.elasticsearch elasticsearch - ${elasticsearch-sql.version} + ${elasticsearch.version} diff --git a/server/src/main/java/edp/core/common/jdbc/ESDataSource.java b/server/src/main/java/edp/core/common/jdbc/ESDataSource.java index caebcd4f4..bccda51d1 100644 --- a/server/src/main/java/edp/core/common/jdbc/ESDataSource.java +++ b/server/src/main/java/edp/core/common/jdbc/ESDataSource.java @@ -18,8 +18,6 @@ package edp.core.common.jdbc; -import com.alibaba.druid.pool.ElasticSearchConnection; -import com.alibaba.druid.pool.ElasticSearchDruidDataSource; import com.alibaba.druid.pool.ElasticSearchDruidDataSourceFactory; import edp.core.exception.SourceException; import lombok.extern.slf4j.Slf4j; @@ -29,6 +27,9 @@ import java.util.Map; import java.util.Properties; +import static com.alibaba.druid.pool.DruidDataSourceFactory.PROP_CONNECTIONPROPERTIES; +import static com.alibaba.druid.pool.DruidDataSourceFactory.PROP_URL; + @Slf4j public class ESDataSource { @@ -43,7 +44,8 @@ public static synchronized DataSource getDataSource(String jdbcUrl) throws Sourc String url = jdbcUrl.toLowerCase(); if (!map.containsKey(url) || null == map.get(url)) { Properties properties = new Properties(); - properties.setProperty("url", url); + properties.setProperty(PROP_URL, url); + properties.put(PROP_CONNECTIONPROPERTIES, "client.transport.ignore_cluster_name=true"); try { dataSource = ElasticSearchDruidDataSourceFactory.createDataSource(properties); map.put(url, dataSource); diff --git a/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java b/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java index 86f16882c..7c4376d5e 100644 --- a/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java +++ b/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java @@ -73,8 +73,8 @@ public class JdbcDataSource extends DruidDataSource { @Value("${source.connection-error-retry-attempts:3}") private int connectionErrorRetryAttempts; - @Value("${spring.datasource.validation-query}") - private String validationQuery; +// @Value("${spring.datasource.validation-query}") +// private String validationQuery; private static volatile Map map = new HashMap<>(); @@ -124,7 +124,7 @@ public synchronized DruidDataSource getDataSource(String jdbcUrl, String usernam instance.setTestOnReturn(testOnReturn); instance.setConnectionErrorRetryAttempts(connectionErrorRetryAttempts); instance.setBreakAfterAcquireFailure(breakAfterAcquireFailure); - instance.setValidationQuery(validationQuery); +// instance.setValidationQuery(validationQuery); try { instance.init(); diff --git a/server/src/main/java/edp/core/enums/DataTypeEnum.java b/server/src/main/java/edp/core/enums/DataTypeEnum.java index 923cdcf1d..8727a3a41 100644 --- a/server/src/main/java/edp/core/enums/DataTypeEnum.java +++ b/server/src/main/java/edp/core/enums/DataTypeEnum.java @@ -36,7 +36,7 @@ public enum DataTypeEnum { MONGODB("mongodb", "mongodb", "mongodb.jdbc.MongoDriver", "", "", "'", "'"), - ELASTICSEARCH("sql4es", "elasticSearch", "nl.anchormen.sql4es.jdbc.ESDriver", "", "", "'", "'"), + ELASTICSEARCH("elasticsearch", "elasticsearch", "nl.anchormen.sql4es.jdbc.ESDriver", "", "", "'", "'"), PRESTO("presto", "presto", "com.facebook.presto.jdbc.PrestoDriver", "", "", "'", "'"), diff --git a/server/src/main/java/edp/davinci/core/utils/SqlParseUtils.java b/server/src/main/java/edp/davinci/core/utils/SqlParseUtils.java index aa3e4376c..159ee1a1a 100644 --- a/server/src/main/java/edp/davinci/core/utils/SqlParseUtils.java +++ b/server/src/main/java/edp/davinci/core/utils/SqlParseUtils.java @@ -51,6 +51,8 @@ public class SqlParseUtils { private static final String select = "select"; + private static final String with = "with"; + private static final String queryVarKey = "query@var"; private static final String teamVarKey = "team@var"; @@ -216,7 +218,7 @@ public static List getExecuteSqlList(String sql) { list = new ArrayList<>(); for (String sqlStr : split) { sqlStr = sqlStr.trim(); - if (sqlStr.toLowerCase().startsWith(select)) { + if (sqlStr.toLowerCase().startsWith(select) || sqlStr.toLowerCase().startsWith(with)) { continue; } else { list.add(sqlStr); @@ -247,7 +249,7 @@ public static List getQuerySqlList(String sql) { list = new ArrayList<>(); for (String sqlStr : split) { sqlStr = sqlStr.trim(); - if (sqlStr.toLowerCase().startsWith(select)) { + if (sqlStr.toLowerCase().startsWith(select) || sqlStr.toLowerCase().startsWith(with)) { list.add(sqlStr); } else { continue; From 7cb3f86c1312067129aa6718014aa265216d209b Mon Sep 17 00:00:00 2001 From: Fuying <1165234947@qq.com> Date: Mon, 15 Oct 2018 16:24:33 +0800 Subject: [PATCH 30/45] =?UTF-8?q?Widget=20=E8=A7=86=E5=9B=BE=E9=A9=B1?= =?UTF-8?q?=E5=8A=A8=E6=94=AF=E6=8C=81=E9=A5=BC=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Widget/components/Widget/index.tsx | 5 +- .../Workbench/ConfigSections/LabelSection.tsx | 23 +- .../Workbench/ConfigSections/SpecSection.tsx | 80 +++++ .../ConfigSections/ToolboxSection.tsx | 46 +++ .../components/Workbench/OperatingPanel.tsx | 15 +- .../Widget/components/Workbench/index.tsx | 1 + .../containers/Widget/config/chart/index.tsx | 4 +- .../app/containers/Widget/config/chart/pie.ts | 53 ++++ .../app/containers/Widget/render/chart/bar.ts | 2 +- .../containers/Widget/render/chart/index.ts | 2 +- .../containers/Widget/render/chart/line.ts | 2 +- .../app/containers/Widget/render/chart/pie.ts | 285 ++++++++++-------- .../containers/Widget/render/chart/scatter.ts | 2 +- .../containers/Widget/render/chart/util.ts | 21 +- webapp/app/globalConstants.ts | 5 + 15 files changed, 392 insertions(+), 154 deletions(-) create mode 100644 webapp/app/containers/Widget/components/Workbench/ConfigSections/SpecSection.tsx create mode 100644 webapp/app/containers/Widget/components/Workbench/ConfigSections/ToolboxSection.tsx create mode 100644 webapp/app/containers/Widget/config/chart/pie.ts diff --git a/webapp/app/containers/Widget/components/Widget/index.tsx b/webapp/app/containers/Widget/components/Widget/index.tsx index 36c21a6cf..ae5dcb398 100644 --- a/webapp/app/containers/Widget/components/Widget/index.tsx +++ b/webapp/app/containers/Widget/components/Widget/index.tsx @@ -9,7 +9,9 @@ import { IAxisConfig } from '../Workbench/ConfigSections/AxisSection' import { ISplitLineConfig } from '../Workbench/ConfigSections/SplitLineSection' import { IPivotConfig } from '../Workbench/ConfigSections/PivotSection' import { ILabelConfig } from '..//Workbench/ConfigSections/LabelSection' +import { ISpecConfig } from '../Workbench/ConfigSections/SpecSection' import { ILegendConfig } from '../Workbench/ConfigSections/LegendSection' +import { IToolboxConfig } from '../Workbench/ConfigSections/ToolboxSection' const styles = require('../Pivot/Pivot.less') export type DimetionType = 'row' | 'col' @@ -30,12 +32,13 @@ export interface IWidgetFilter { export interface IChartStyles { pivot?: IPivotConfig - spec?: object xAxis?: IAxisConfig yAxis?: IAxisConfig splitLine?: ISplitLineConfig label?: ILabelConfig legend?: ILegendConfig + toolbox?: IToolboxConfig + spec?: ISpecConfig } export interface IChartInfo { diff --git a/webapp/app/containers/Widget/components/Workbench/ConfigSections/LabelSection.tsx b/webapp/app/containers/Widget/components/Workbench/ConfigSections/LabelSection.tsx index 8f5d79b0d..2fb8a2ea9 100644 --- a/webapp/app/containers/Widget/components/Workbench/ConfigSections/LabelSection.tsx +++ b/webapp/app/containers/Widget/components/Workbench/ConfigSections/LabelSection.tsx @@ -5,7 +5,7 @@ const Checkbox = require('antd/lib/checkbox') const Select = require('antd/lib/select') const Option = Select.Option import ColorPicker from '../../../../../components/ColorPicker' -import { PIVOT_CHART_FONT_FAMILIES, PIVOT_CHART_LINE_STYLES, PIVOT_CHART_FONT_SIZES, CHART_LABEL_POSITIONS } from '../../../../../globalConstants' +import { PIVOT_CHART_FONT_FAMILIES, PIVOT_CHART_LINE_STYLES, PIVOT_CHART_FONT_SIZES, CHART_LABEL_POSITIONS, CHART_PIE_LABEL_POSITIONS } from '../../../../../globalConstants' const styles = require('../Workbench.less') export interface ILabelConfig { @@ -14,12 +14,14 @@ export interface ILabelConfig { labelFontFamily: string labelFontSize: string labelColor: string + pieLabelPosition?: string } interface ILabelSectionProps { title: string config: ILabelConfig onChange: (prop: string, value: any) => void + name: string } export class LabelSection extends React.PureComponent { @@ -36,19 +38,24 @@ export class LabelSection extends React.PureComponent { } public render () { - const { title, config } = this.props + const { title, config, name } = this.props const { showLabel, labelPosition, labelFontFamily, labelFontSize, - labelColor + labelColor, + pieLabelPosition } = config - const positions = CHART_LABEL_POSITIONS.map((p) => ( - - )) + const positions = name === 'pie' + ? CHART_PIE_LABEL_POSITIONS.map((p) => ( + + )) + : CHART_LABEL_POSITIONS.map((p) => ( + + )) const fontFamilies = PIVOT_CHART_FONT_FAMILIES.map((f) => ( )) @@ -74,8 +81,8 @@ export class LabelSection extends React.PureComponent { diff --git a/webapp/app/containers/Widget/components/Workbench/ConfigSections/SpecSection.tsx b/webapp/app/containers/Widget/components/Workbench/ConfigSections/SpecSection.tsx new file mode 100644 index 000000000..d02a69fe6 --- /dev/null +++ b/webapp/app/containers/Widget/components/Workbench/ConfigSections/SpecSection.tsx @@ -0,0 +1,80 @@ +import * as React from 'react' +const Row = require('antd/lib/row') +const Col = require('antd/lib/col') +const Checkbox = require('antd/lib/checkbox') +const Select = require('antd/lib/select') +const Option = Select.Option +const InputNumber = require('antd/lib/input-number') +const styles = require('../Workbench.less') + +export interface ISpecConfig { + smooth?: boolean + step?: boolean + roseType?: boolean + circle?: boolean +} + +interface ISpecSectionProps { + title: string + config: ISpecConfig + onChange: (prop: string, value: any) => void +} + +export class SpecSection extends React.PureComponent { + private checkboxChange = (prop) => (e) => { + this.props.onChange(prop, e.target.checked) + } + + private selectChange = (prop) => (value) => { + this.props.onChange(prop, value) + } + + public render () { + const { title, config } = this.props + + const { + roseType, + circle + } = config + + let renderHtml + switch (title) { + case '饼图': + renderHtml = ( +
    +

    {title}

    +
    + +
    + + 环状 + + + + + 南丁格尔玫瑰 + + + + + + ) + break + default: + renderHtml = ( +
    + ) + break + } + + return renderHtml + } +} + +export default SpecSection diff --git a/webapp/app/containers/Widget/components/Workbench/ConfigSections/ToolboxSection.tsx b/webapp/app/containers/Widget/components/Workbench/ConfigSections/ToolboxSection.tsx new file mode 100644 index 000000000..d5448e7ec --- /dev/null +++ b/webapp/app/containers/Widget/components/Workbench/ConfigSections/ToolboxSection.tsx @@ -0,0 +1,46 @@ +import * as React from 'react' +const Row = require('antd/lib/row') +const Col = require('antd/lib/col') +const Checkbox = require('antd/lib/checkbox') +const styles = require('../Workbench.less') + +export interface IToolboxConfig { + showToolbox: boolean +} + +interface IToolboxSectionProps { + title: string + config: IToolboxConfig + onChange: (prop: string, value: any) => void +} + +export class ToolboxSection extends React.PureComponent { + private checkboxChange = (prop) => (e) => { + this.props.onChange(prop, e.target.checked) + } + + public render () { + const { title, config } = this.props + const { showToolbox } = config + + return ( +
    +

    {title}

    +
    + +
    + + Toolbox + + + + + + ) + } +} + +export default ToolboxSection diff --git a/webapp/app/containers/Widget/components/Workbench/OperatingPanel.tsx b/webapp/app/containers/Widget/components/Workbench/OperatingPanel.tsx index 6c1bfe87f..45d62aca2 100644 --- a/webapp/app/containers/Widget/components/Workbench/OperatingPanel.tsx +++ b/webapp/app/containers/Widget/components/Workbench/OperatingPanel.tsx @@ -13,8 +13,10 @@ import ChartIndicator from './ChartIndicator' import AxisSection, { IAxisConfig } from './ConfigSections/AxisSection' import SplitLineSection, { ISplitLineConfig } from './ConfigSections/SplitLineSection' import PivotSection, { IPivotConfig } from './ConfigSections/PivotSection' +import SpecSection, { ISpecConfig } from './ConfigSections/SpecSection' import LabelSection, { ILabelConfig } from './ConfigSections/LabelSection' import LegendSection, { ILegendConfig } from './ConfigSections/LegendSection' +import ToolboxSection, { IToolboxConfig } from './ConfigSections/ToolboxSection' import { encodeMetricName, decodeMetricName, checkChartEnable, getPivot, getScatter, getStyleConfig, getTable } from '../util' import { PIVOT_DEFAULT_SCATTER_SIZE_TIMES } from '../../../../globalConstants' @@ -940,7 +942,7 @@ export class OperatingPanel extends React.Component @@ -1097,16 +1099,27 @@ export class OperatingPanel extends React.Component + {spec && } {label && } {legend && } + {toolbox && } {xAxis && d[cols[0]] || '') diff --git a/webapp/app/containers/Widget/render/chart/index.ts b/webapp/app/containers/Widget/render/chart/index.ts index b9bc85110..cde2f7b7a 100644 --- a/webapp/app/containers/Widget/render/chart/index.ts +++ b/webapp/app/containers/Widget/render/chart/index.ts @@ -35,7 +35,7 @@ export default function (type, chartProps: IChartProps): EChartOption { case 'line': return line(chartProps) case 'bar': return bar(chartProps) case 'scatter': return scatter(chartProps) - // case 'pie': return pie(chartProps) + case 'pie': return pie(chartProps) // case 'area': return area(chartProps) // case 'funnel': return funnel(chartProps) // case 'map': return map(chartProps) diff --git a/webapp/app/containers/Widget/render/chart/line.ts b/webapp/app/containers/Widget/render/chart/line.ts index 1fd0dcff2..7a5d93acb 100644 --- a/webapp/app/containers/Widget/render/chart/line.ts +++ b/webapp/app/containers/Widget/render/chart/line.ts @@ -70,7 +70,7 @@ export default function (chartProps: IChartProps) { } = spec const labelOption = { - label: getLabelOption(label) + label: getLabelOption('line', label) } let xAxisData = data.map((d) => d[cols[0]] || '') diff --git a/webapp/app/containers/Widget/render/chart/pie.ts b/webapp/app/containers/Widget/render/chart/pie.ts index b16735e62..17c292249 100644 --- a/webapp/app/containers/Widget/render/chart/pie.ts +++ b/webapp/app/containers/Widget/render/chart/pie.ts @@ -18,161 +18,178 @@ * >> */ -/* - * Pie chart options generator - */ +import { IChartProps } from '../../components/Chart' +import { + decodeMetricName, + getChartTooltipLabel, + getTextWidth +} from '../../components/util' +import { + getLegendOption, + getLabelOption, + getGridPositions +} from './util' -export default function (dataSource, flatInfo, chartParams, interactIndex) { +export default function (chartProps: IChartProps) { const { - title, - value, - circle, - insideRadius, - outsideRadius, - hasLegend, - legendSelected, - legendPosition, - toolbox, - top, - roseType, - left - } = chartParams - - let metricOptions - let labelOptions - let legendOptions - let toolboxOptions - let roseOptions + width, + height, + data, + cols, + metrics, + chartStyles, + color, + tip + } = chartProps - // legend - let adjustedLeft = 0 - - if (hasLegend && hasLegend.length) { - let orient - let positions + const { + label, + legend, + spec, + toolbox + } = chartStyles - switch (legendPosition) { - case 'right': - orient = { orient: 'vertical' } - positions = { right: 8, top: 40, bottom: 16 } - adjustedLeft = 45 - break - case 'bottom': - orient = { orient: 'horizontal' } - positions = { bottom: 16, left: 8, right: 8 } - break - default: - orient = { orient: 'horizontal' } - positions = { top: 3, left: 8, right: 96 } - break - } + const { + legendPosition, + fontSize + } = legend - const selected = legendSelected === 'unselectAll' - ? { - selected: dataSource.reduce((obj, d) => ({ ...obj, [d[title]]: false }), {}) - } : null + const { + circle, + roseType + } = spec - legendOptions = { - legend: { - data: dataSource.map((d) => d[title]), - type: 'scroll', - ...orient, - ...positions, - ...selected - } - } + // formatter: '{b}({d}%)' + const labelOption = { + label: getLabelOption('pie', label) } - // series 数据项 - const metricArr = [] + const roseTypeValue = roseType ? 'radius' : '' + const radiusValue = (!circle && !roseType) || (!circle && roseType) ? `70%` : ['48%', '70%'] - labelOptions = circle && circle.length - ? { - label: { - normal: { - show: true, - position: 'inside', - formatter: '{d}%' - }, - emphasis: { - show: true, - position: 'center', - textStyle: { - fontSize: '16', - fontWeight: 'bold' - } + let seriesObj = {} + const seriesArr = [] + let legendData = [] + metrics.forEach((m) => { + const decodedMetricName = decodeMetricName(m.name) + if (cols.length || color.items.length) { + const groupColumns = color.items.map((c) => c.name).concat(cols) + .reduce((distinctColumns, col) => { + if (!distinctColumns.includes(col)) { + distinctColumns.push(col) } - } - } - : { - label: { - normal: { - show: true, - formatter: '{b}({d}%)' + return distinctColumns + }, []) + const grouped = data.reduce((obj, val) => { + const groupingKey = groupColumns + .reduce((keyArr, col) => keyArr.concat(val[col]), []) + .join(String.fromCharCode(0)) + if (!obj[groupingKey]) { + obj[groupingKey] = [] } + obj[groupingKey].push(val) + return obj + }, {}) + + const seriesData = [] + Object.entries(grouped).forEach(([key, value]) => { + const legendStr = key.replace(String.fromCharCode(0), ' ') + legendData.push(legendStr) + value.forEach((v) => { + const obj = { + name: legendStr, + value: v[`${m.agg}(${decodedMetricName})`] + } + seriesData.push(obj) + }) + }) + + let leftValue + let topValue + const pieLeft = 56 + Math.max(...legendData.map((s) => getTextWidth(s, '', `${fontSize}px`))) + switch (legendPosition) { + case 'top': + leftValue = width / 2 + topValue = (height + 32) / 2 + break + case 'bottom': + leftValue = width / 2 + topValue = (height - 32) / 2 + break + case 'left': + leftValue = (width + pieLeft) / 2 + topValue = height / 2 + break + case 'right': + leftValue = (width - pieLeft) / 2 + topValue = height / 2 + break } - } - roseOptions = roseType && roseType.length ? {roseType: 'radius'} : null - const serieObj = { - name: title, - type: 'pie', - radius: circle && circle.length ? [`${insideRadius}%`, `${outsideRadius}%`] : `${insideRadius}%`, - center: [ - adjustedLeft && legendPosition === 'right' ? `${Math.min(left, adjustedLeft)}%` : `${left}%`, - `${top}%` - ], - avoidLabelOverlap: !circle || !circle.length, - data: dataSource.map((d, index) => { - if (index === interactIndex) { - return { - name: d[title], - value: Number(d[value]), - itemStyle: { - normal: { - opacity: 1 - } + + let colorArr = [] + if (color.items.length) { + const colorvaluesObj = color.items[0].config.values + for (const keys in colorvaluesObj) { + if (colorvaluesObj.hasOwnProperty(keys)) { + colorArr.push(colorvaluesObj[keys]) } } } else { - return { - name: d[title], - value: Number(d[value]) - } + colorArr = ['#509af2'] } - }), - itemStyle: { - normal: { - opacity: interactIndex === undefined ? 1 : 0.25 - } - }, - ...roseOptions, - ...labelOptions - } - metricArr.push(serieObj) - metricOptions = { - series: metricArr - } - // toolbox - toolboxOptions = toolbox && toolbox.length - ? { - toolbox: { - feature: { - dataView: {readOnly: false}, - restore: {}, - saveAsImage: {} + seriesObj = { + name: '', + type: 'pie', + avoidLabelOverlap: false, + center: legend.showLegend ? [leftValue, topValue] : [width / 2, height / 2], + color: colorArr, + data: seriesData, + itemStyle: { + emphasis: { + shadowBlur: 10, + shadowOffsetX: 0, + shadowColor: 'rgba(0, 0, 0, 0.5)' + } + }, + ...labelOption, + roseType: roseTypeValue, + radius: radiusValue + } + } else { + legendData = [] + seriesObj = { + name: '', + type: 'pie', + avoidLabelOverlap: false, + center: [width / 2, height / 2], + data: data.map((d, index) => { + return { + name: decodedMetricName, + value: d[`${m.agg}(${decodedMetricName})`] + } + }), + itemStyle: { + emphasis: { + shadowBlur: 10, + shadowOffsetX: 0, + shadowColor: 'rgba(0, 0, 0, 0.5)' + } }, - right: 8 + ...labelOption, + roseType: roseTypeValue, + radius: radiusValue } - } : null + } + seriesArr.push(seriesObj) + }) return { - tooltip: { - trigger: 'item', - formatter: '{b}
    {c} ({d}%)' + tooltip : { + trigger: 'item', + formatter: '{b}
    {c} ({d}%)' }, - ...metricOptions, - ...legendOptions, - ...toolboxOptions + legend: getLegendOption(legend, legendData), + series: seriesArr } } diff --git a/webapp/app/containers/Widget/render/chart/scatter.ts b/webapp/app/containers/Widget/render/chart/scatter.ts index 5ca54804a..23f4d3dbc 100644 --- a/webapp/app/containers/Widget/render/chart/scatter.ts +++ b/webapp/app/containers/Widget/render/chart/scatter.ts @@ -66,7 +66,7 @@ export default function (chartProps: IChartProps) { } = splitLine const labelOption = { - label: getLabelOption(labelStyleConfig, true, { + label: getLabelOption('scatter', labelStyleConfig, true, { formatter (param) { return param.data.value[2] } diff --git a/webapp/app/containers/Widget/render/chart/util.ts b/webapp/app/containers/Widget/render/chart/util.ts index 90817a5b1..117d2ba93 100644 --- a/webapp/app/containers/Widget/render/chart/util.ts +++ b/webapp/app/containers/Widget/render/chart/util.ts @@ -157,19 +157,30 @@ export function getMetricAxisOption ( } } -export function getLabelOption (labelConfig: ILabelConfig, emphasis?: boolean, options?: object) { +export function getLabelOption (type: string, labelConfig: ILabelConfig, emphasis?: boolean, options?: object) { const { showLabel, labelPosition, labelFontFamily, labelFontSize, - labelColor + labelColor, + pieLabelPosition } = labelConfig + let positionVale + switch (type) { + case 'pie': + positionVale = pieLabelPosition + break + default: + positionVale = labelPosition + break + } + return { normal: { - show: showLabel, - position: labelPosition, + show: type === 'pie' && pieLabelPosition === 'center' ? false : showLabel, + position: positionVale, color: labelColor, fontFamily: labelFontFamily, fontSize: labelFontSize, @@ -178,7 +189,7 @@ export function getLabelOption (labelConfig: ILabelConfig, emphasis?: boolean, o ...emphasis && { emphasis: { show: showLabel, - position: labelPosition, + position: positionVale, color: labelColor, fontFamily: labelFontFamily, fontSize: labelFontSize, diff --git a/webapp/app/globalConstants.ts b/webapp/app/globalConstants.ts index a3bd65456..6c2126f39 100644 --- a/webapp/app/globalConstants.ts +++ b/webapp/app/globalConstants.ts @@ -92,6 +92,11 @@ export const CHART_LABEL_POSITIONS = [ { name: '内右上', value: 'insideTopRight' }, { name: '内右下', value: 'insideBottomRight' } ] +export const CHART_PIE_LABEL_POSITIONS = [ + { name: '外侧', value: 'outside'}, + { name: '内部', value: 'inside'}, + { name: '中心', value: 'center'} +] export const CHART_LEGEND_POSITIONS = [ { name: '右', value: 'right' }, From bb719d5bb90e91040f8a6a3ab6f94567e5316e5d Mon Sep 17 00:00:00 2001 From: andyfong Date: Mon, 15 Oct 2018 16:42:11 +0800 Subject: [PATCH 31/45] chore(git): update `.gitignore` file --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 89ac08ddf..2c15118aa 100644 --- a/.gitignore +++ b/.gitignore @@ -26,7 +26,6 @@ spark-warehouse *.conf config/application.yml swagger-ui/ -lib/ tempFiles/ userfiles/ .vscode From 116658183b584691f7fac4f3e9d948ee55626309 Mon Sep 17 00:00:00 2001 From: andyfong Date: Mon, 15 Oct 2018 16:47:30 +0800 Subject: [PATCH 32/45] chore(libs): localize react-draggable in libs with ts/tsx support --- .../react-draggable/{index.js => index.ts} | 14 +- webapp/libs/react-draggable/lib/Draggable.tsx | 259 ++++++++++++++ .../react-draggable/lib/DraggableCore.tsx | 328 ++++++++++++++++++ .../libs/react-draggable/lib/utils/domFns.ts | 228 ++++++++++++ .../react-draggable/lib/utils/getPrefix.ts | 52 +++ webapp/libs/react-draggable/lib/utils/log.ts | 6 + .../react-draggable/lib/utils/positionFns.ts | 148 ++++++++ .../libs/react-draggable/lib/utils/shims.ts | 26 ++ .../libs/react-draggable/lib/utils/types.ts | 23 ++ 9 files changed, 1080 insertions(+), 4 deletions(-) rename webapp/libs/react-draggable/{index.js => index.ts} (59%) create mode 100644 webapp/libs/react-draggable/lib/Draggable.tsx create mode 100644 webapp/libs/react-draggable/lib/DraggableCore.tsx create mode 100644 webapp/libs/react-draggable/lib/utils/domFns.ts create mode 100644 webapp/libs/react-draggable/lib/utils/getPrefix.ts create mode 100644 webapp/libs/react-draggable/lib/utils/log.ts create mode 100644 webapp/libs/react-draggable/lib/utils/positionFns.ts create mode 100644 webapp/libs/react-draggable/lib/utils/shims.ts create mode 100644 webapp/libs/react-draggable/lib/utils/types.ts diff --git a/webapp/libs/react-draggable/index.js b/webapp/libs/react-draggable/index.ts similarity index 59% rename from webapp/libs/react-draggable/index.js rename to webapp/libs/react-draggable/index.ts index 104298161..efee1a543 100644 --- a/webapp/libs/react-draggable/index.js +++ b/webapp/libs/react-draggable/index.ts @@ -1,9 +1,15 @@ -var Draggable = require('./lib/Draggable').default; +import Draggable from './lib/Draggable' +import DraggableCore from './lib/DraggableCore' // Previous versions of this lib exported as the root export. As to not break // them, or TypeScript, we export *both* as the root and as 'default'. // See https://github.com/mzabriskie/react-draggable/pull/254 // and https://github.com/mzabriskie/react-draggable/issues/266 -module.exports = Draggable; -module.exports.default = Draggable; -module.exports.DraggableCore = require('./lib/DraggableCore').default; + +console.log(Draggable, DraggableCore) + +export default Draggable +export { + Draggable, + DraggableCore +} diff --git a/webapp/libs/react-draggable/lib/Draggable.tsx b/webapp/libs/react-draggable/lib/Draggable.tsx new file mode 100644 index 000000000..d0d0a2b78 --- /dev/null +++ b/webapp/libs/react-draggable/lib/Draggable.tsx @@ -0,0 +1,259 @@ +import * as React from 'react' +import * as ReactDOM from 'react-dom' +import * as classNames from 'classnames' +import {createCSSTransform, createSVGTransform} from './utils/domFns' +import {canDragX, canDragY, createDraggableData, getBoundPosition} from './utils/positionFns' +import DraggableCore, {IControlPosition, IDraggableBounds, IDraggableCoreProps} from './DraggableCore' +import log from './utils/log' +import {DraggableEventHandler} from './utils/types' + +interface IDraggableState { + dragging: boolean, + dragged: boolean, + x: number, y: number, + slackX: number, slackY: number, + isElementSVG: boolean +} + +export interface IDraggableProps extends IDraggableCoreProps { + axis?: 'both' | 'x' | 'y' | 'none', + bounds: IDraggableBounds | string | false, + defaultClassName?: string, + defaultClassNameDragging?: string, + defaultClassNameDragged?: string, + defaultPosition?: IControlPosition, + position: IControlPosition, +} + +// +// Define +// + +export default class Draggable extends React.Component> { + + public static displayName = 'Draggable' + + public static defaultProps = { + ...DraggableCore.defaultProps, + axis: 'both', + bounds: false, + defaultClassName: 'react-draggable', + defaultClassNameDragging: 'react-draggable-dragging', + defaultClassNameDragged: 'react-draggable-dragged', + defaultPosition: {x: 0, y: 0}, + position: null + } + + public constructor (props: IDraggableProps) { + super(props) + + this.state = { + // Whether or not we are currently dragging. + dragging: false, + + // Whether or not we have been dragged before. + dragged: false, + + // Current transform x and y. + x: props.position ? props.position.x : props.defaultPosition.x, + y: props.position ? props.position.y : props.defaultPosition.y, + + // Used for compensating for out-of-bounds drags + slackX: 0, slackY: 0, + + // Can only determine if SVG after mounting + isElementSVG: false + } + } + + public componentWillMount () { + if (this.props.position && !(this.props.onDrag || this.props.onStop)) { + // eslint-disable-next-line + console.warn('A `position` was applied to this , without drag handlers. This will make this ' + + 'component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the ' + + '`position` of this element.') + } + } + + public componentDidMount () { + // Check to see if the element passed is an instanceof SVGElement + if (typeof (window as any).SVGElement !== 'undefined' && ReactDOM.findDOMNode(this) instanceof SVGElement) { + this.setState({ isElementSVG: true }) + } + } + + public componentWillReceiveProps (nextProps: IDraggableProps) { + // Set x/y if position has changed + if (nextProps.position && + (!this.props.position || + nextProps.position.x !== this.props.position.x || + nextProps.position.y !== this.props.position.y + ) + ) { + this.setState({ x: nextProps.position.x, y: nextProps.position.y }) + } + } + + public componentWillUnmount () { + this.setState({dragging: false}) // prevents invariant if unmounted while dragging + } + + private onDragStart: DraggableEventHandler = (e, coreData) => { + log('Draggable: onDragStart: %j', coreData) + + // Short-circuit if user's callback killed it. + const shouldStart = this.props.onStart(e, createDraggableData(this, coreData)) + // Kills start event on core as well, so move handlers are never bound. + if (shouldStart === false) { + return false + } + + this.setState({dragging: true, dragged: true}) + } + + private onDrag: DraggableEventHandler = (e, coreData) => { + if (!this.state.dragging) { + return false + } + log('Draggable: onDrag: %j', coreData) + + const uiData = createDraggableData(this, coreData) + + const newState: Partial = { + x: uiData.x, + y: uiData.y + } + + // Keep within bounds. + if (this.props.bounds) { + // Save original x and y. + const {x, y} = newState + + // Add slack to the values used to calculate bound position. This will ensure that if + // we start removing slack, the element won't react to it right away until it's been + // completely removed. + newState.x += this.state.slackX + newState.y += this.state.slackY + + // Get bound position. This will ceil/floor the x and y within the boundaries. + const [newStateX, newStateY] = getBoundPosition(this, newState.x, newState.y) + newState.x = newStateX + newState.y = newStateY + + // Recalculate slack by noting how much was shaved by the boundPosition handler. + newState.slackX = this.state.slackX + (x - newState.x) + newState.slackY = this.state.slackY + (y - newState.y) + + // Update the event we fire to reflect what really happened after bounds took effect. + uiData.x = newState.x + uiData.y = newState.y + uiData.deltaX = newState.x - this.state.x + uiData.deltaY = newState.y - this.state.y + } + + // Short-circuit if user's callback killed it. + const shouldUpdate = this.props.onDrag(e, uiData) + if (shouldUpdate === false) { + return false + } + + this.setState({ + ...newState + }) + } + + private onDragStop: DraggableEventHandler = (e, coreData) => { + if (!this.state.dragging) { + return false + } + + // Short-circuit if user's callback killed it. + const shouldStop = this.props.onStop(e, createDraggableData(this, coreData)) + if (shouldStop === false) { + return false + } + + log('Draggable: onDragStop: %j', coreData) + + const newState: Partial = { + dragging: false, + slackX: 0, + slackY: 0 + } + + // If this is a controlled component, the result of this operation will be to + // revert back to the old position. We expect a handler on `onDragStop`, at the least. + const controlled = Boolean(this.props.position) + if (controlled) { + const {x, y} = this.props.position + newState.x = x + newState.y = y + } + + this.setState(newState) + } + + public render () { + let style = {} + let svgTransform = null + + // If this is controlled, we don't want to move it - unless it's dragging. + const controlled = Boolean(this.props.position) + const draggable = !controlled || this.state.dragging + + const position = this.props.position || this.props.defaultPosition + const transformOpts = { + // Set left if horizontal drag is enabled + x: canDragX(this) && draggable ? + this.state.x : + position.x, + + // Set top if vertical drag is enabled + y: canDragY(this) && draggable ? + this.state.y : + position.y + } + + // If this element was SVG, we use the `transform` attribute. + if (this.state.isElementSVG) { + svgTransform = createSVGTransform(transformOpts) + } else { + // Add a CSS transform to move the element around. This allows us to move the element around + // without worrying about whether or not it is relatively or absolutely positioned. + // If the item you are dragging already has a transform set, wrap it in a so + // has a clean slate. + style = createCSSTransform(transformOpts) + } + + const { + defaultClassName, + defaultClassNameDragging, + defaultClassNameDragged + } = this.props + + const children = React.Children.only(this.props.children) + + // Mark with class while dragging + const className = classNames((children.props.className || ''), defaultClassName, { + [defaultClassNameDragging]: this.state.dragging, + [defaultClassNameDragged]: this.state.dragged + }) + + // Reuse the child provided + // This makes it flexible to use whatever element is wanted (div, ul, etc) + return ( + + {React.cloneElement(children, { + className, + style: {...children.props.style, ...style}, + transform: svgTransform + })} + + ) + } +} diff --git a/webapp/libs/react-draggable/lib/DraggableCore.tsx b/webapp/libs/react-draggable/lib/DraggableCore.tsx new file mode 100644 index 000000000..e5643a724 --- /dev/null +++ b/webapp/libs/react-draggable/lib/DraggableCore.tsx @@ -0,0 +1,328 @@ +import * as React from 'react' +import * as ReactDOM from 'react-dom' +import {matchesSelectorAndParentsTo, addEvent, removeEvent, addUserSelectStyles, getTouchIdentifier, + removeUserSelectStyles, styleHacks} from './utils/domFns' +import {createCoreData, getControlPosition, snapToGrid} from './utils/positionFns' +import log from './utils/log' + +import {EventHandler, MouseTouchEvent} from './utils/types' + +// Simple abstraction for dragging events names. +const eventsFor = { + touch: { + start: 'touchstart', + move: 'touchmove', + stop: 'touchend' + }, + mouse: { + start: 'mousedown', + move: 'mousemove', + stop: 'mouseup' + } +} + +// Default to mouse events. +let dragEventFor = eventsFor.mouse + +interface IDraggableCoreState { + dragging: boolean + lastX: number + lastY: number + touchIdentifier?: number +} + +export interface IDraggableBounds { + left: number + right: number + top: number + bottom: number +} + +export interface IDraggableData { + node: HTMLElement + x: number + y: number + deltaX: number + deltaY: number + lastX: number + lastY: number +} + +export type DraggableEventHandler = (e: MouseEvent, data: IDraggableData) => void | true | false + +export interface IControlPosition { + x: number + y: number +} + +export interface IDraggableCoreProps { + allowAnyClick?: boolean, + cancel?: string, + children?: React.ReactElement, + disabled?: boolean, + enableUserSelectHack?: boolean, + offsetParent?: HTMLElement, + grid?: [number, number], + scale?: number + handle?: string, + onStart?: DraggableEventHandler, + onDrag?: DraggableEventHandler, + onStop?: DraggableEventHandler, + onMouseDown?: (e: MouseEvent) => void, +} + +// +// Define . +// +// is for advanced usage of . It maintains minimal internal state so it can +// work well with libraries that require more control over the element. +// + +export default class DraggableCore extends React.Component { + + public static displayName = 'DraggableCore' + + public static defaultProps = { + allowAnyClick: false, // by default only accept left click + cancel: null, + disabled: false, + enableUserSelectHack: true, + offsetParent: null, + handle: null, + grid: null, + scale: 1, + transform: null, + onStart: () => void 0, + onDrag: () => void 0, + onStop: () => void 0, + onMouseDown: () => void 0 + } + + public state = { + dragging: false, + // Used while dragging to determine deltas. + lastX: NaN, lastY: NaN, + touchIdentifier: null + } + + public componentWillUnmount () { + // Remove any leftover event handlers. Remove both touch and mouse handlers in case + // some browser quirk caused a touch event to fire during a mouse move, or vice versa. + const thisNode = ReactDOM.findDOMNode(this) + if (thisNode) { + const {ownerDocument} = thisNode + removeEvent(ownerDocument, eventsFor.mouse.move, this.handleDrag) + removeEvent(ownerDocument, eventsFor.touch.move, this.handleDrag) + removeEvent(ownerDocument, eventsFor.mouse.stop, this.handleDragStop) + removeEvent(ownerDocument, eventsFor.touch.stop, this.handleDragStop) + if (this.props.enableUserSelectHack) { + removeUserSelectStyles(ownerDocument) + } + } + } + + private handleDragStart: EventHandler = (e) => { + // Make it possible to attach event handlers on top of this one. + this.props.onMouseDown(e) + + // Only accept left-clicks. + if (!this.props.allowAnyClick && typeof e.button === 'number' && e.button !== 0) { + return false + } + + // Get nodes. Be sure to grab relative document (could be iframed) + const thisNode = ReactDOM.findDOMNode(this) + if (!thisNode || !thisNode.ownerDocument || !thisNode.ownerDocument.body) { + throw new Error(' not mounted on DragStart!') + } + const {ownerDocument} = thisNode + + // Short circuit if handle or cancel prop was provided and selector doesn't match. + if (this.props.disabled || + (!(e.target instanceof Node)) || // FIXME ownerDocument.defaultView.Node + (this.props.handle && !matchesSelectorAndParentsTo(e.target as Node, this.props.handle, thisNode)) || + (this.props.cancel && matchesSelectorAndParentsTo(e.target as Node, this.props.cancel, thisNode))) { + return + } + + // Set touch identifier in component state if this is a touch event. This allows us to + // distinguish between individual touches on multitouch screens by identifying which + // touchpoint was set to this element. + const touchIdentifier = getTouchIdentifier(e) + this.setState({touchIdentifier}) + + // Get the current drag point from the event. This is used as the offset. + const position = getControlPosition(e, touchIdentifier, this) + if (position == null) { + return // not possible but satisfies flow + } + const {x, y} = position + + // Create an event object with all the data parents need to make a decision here. + const coreEvent = createCoreData(this, x, y) + + log('DraggableCore: handleDragStart: %j', coreEvent) + + // Call event handler. If it returns explicit false, cancel. + log('calling', this.props.onStart) + const shouldUpdate = this.props.onStart(e, coreEvent) + if (shouldUpdate === false) { // FIXME fixed !shouldUpdate + return + } + + // Add a style to the body to disable user-select. This prevents text from + // being selected all over the page. + if (this.props.enableUserSelectHack) { + addUserSelectStyles(ownerDocument) + } + + // Initiate dragging. Set the current x and y as offsets + // so we know how much we've moved during the drag. This allows us + // to drag elements around even if they have been moved, without issue. + this.setState({ + dragging: true, + + lastX: x, + lastY: y + }) + + // Add events to the document directly so we catch when the user's mouse/touch moves outside of + // this element. We use different events depending on whether or not we have detected that this + // is a touch-capable device. + addEvent(ownerDocument, dragEventFor.move, this.handleDrag) + addEvent(ownerDocument, dragEventFor.stop, this.handleDragStop) + } + + private handleDrag: EventHandler = (e) => { + + // Prevent scrolling on mobile devices, like ipad/iphone. + if (e.type === 'touchmove') { + e.preventDefault() + } + + // Get the current drag point from the event. This is used as the offset. + const position = getControlPosition(e, this.state.touchIdentifier, this) + if (position == null) { + return + } + let {x, y} = position + + // Snap to grid if prop has been provided + if (Array.isArray(this.props.grid)) { + const [deltaX, deltaY] = snapToGrid(this.props.grid, x - this.state.lastX, y - this.state.lastY) + if (!deltaX && !deltaY) { + return // skip useless drag + } + x = this.state.lastX + deltaX + y = this.state.lastY + deltaY + } + + const coreEvent = createCoreData(this, x, y) + + log('DraggableCore: handleDrag: %j', coreEvent) + + // Call event handler. If it returns explicit false, trigger end. + const shouldUpdate = this.props.onDrag(e, coreEvent) + if (shouldUpdate === false) { + try { + // $FlowIgnore + this.handleDragStop(new MouseEvent('mouseup') as MouseTouchEvent) + } catch (err) { + // Old browsers + const event = document.createEvent('MouseEvents') as MouseTouchEvent + // I see why this insanity was deprecated + // $FlowIgnore + event.initMouseEvent('mouseup', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null) + this.handleDragStop(event) + } + return + } + + this.setState({ + lastX: x, + lastY: y + }) + } + + private handleDragStop: EventHandler = (e) => { + if (!this.state.dragging) { + return + } + + const position = getControlPosition(e, this.state.touchIdentifier, this) + if (position == null) { + return + } + const {x, y} = position + const coreEvent = createCoreData(this, x, y) + + const thisNode = ReactDOM.findDOMNode(this) + if (thisNode) { + // Remove user-select hack + if (this.props.enableUserSelectHack) { + removeUserSelectStyles(thisNode.ownerDocument) + } + } + + log('DraggableCore: handleDragStop: %j', coreEvent) + + // Reset the el. + this.setState({ + dragging: false, + lastX: NaN, + lastY: NaN + }) + + // Call event handler + this.props.onStop(e, coreEvent) + + if (thisNode) { + // Remove event handlers + log('DraggableCore: Removing handlers') + removeEvent(thisNode.ownerDocument, dragEventFor.move, this.handleDrag) + removeEvent(thisNode.ownerDocument, dragEventFor.stop, this.handleDragStop) + } + } + + private onMouseDown: EventHandler = (e) => { + dragEventFor = eventsFor.mouse // on touchscreen laptops we could switch back to mouse + + return this.handleDragStart(e) + } + + private onMouseUp: EventHandler = (e) => { + dragEventFor = eventsFor.mouse + + return this.handleDragStop(e) + } + + // Same as onMouseDown (start drag), but now consider this a touch device. + private onTouchStart: EventHandler = (e) => { + // We're on a touch device now, so change the event handlers + dragEventFor = eventsFor.touch + + return this.handleDragStart(e) + } + + private onTouchEnd: EventHandler = (e) => { + // We're on a touch device now, so change the event handlers + dragEventFor = eventsFor.touch + + return this.handleDragStop(e) + } + + public render () { + // Reuse the child provided + // This makes it flexible to use whatever element is wanted (div, ul, etc) + return React.cloneElement(React.Children.only(this.props.children), { + style: styleHacks(this.props.children.props.style), + + // Note: mouseMove handler is attached to document so it will still function + // when the user drags quickly and leaves the bounds of the element. + onMouseDown: this.onMouseDown, + onTouchStart: this.onTouchStart, + onMouseUp: this.onMouseUp, + onTouchEnd: this.onTouchEnd + }) + } +} diff --git a/webapp/libs/react-draggable/lib/utils/domFns.ts b/webapp/libs/react-draggable/lib/utils/domFns.ts new file mode 100644 index 000000000..4402f5d24 --- /dev/null +++ b/webapp/libs/react-draggable/lib/utils/domFns.ts @@ -0,0 +1,228 @@ +import { + findInArray, + isFunction, + int +} from './shims' +import browserPrefix, { + browserPrefixToKey +} from './getPrefix' + +import { + IControlPosition, + MouseTouchEvent +} from './types' + +let matchesSelectorFunc = '' +export function matchesSelector (el: Node, selector: string): boolean { + if (!matchesSelectorFunc) { + matchesSelectorFunc = findInArray([ + 'matches', + 'webkitMatchesSelector', + 'mozMatchesSelector', + 'msMatchesSelector', + 'oMatchesSelector' + ], function (method) { + // $FlowIgnore: Doesn't think elements are indexable + return isFunction(el[method]) + }) + } + + // Might not be found entirely (not an Element?) - in that case, bail + // $FlowIgnore: Doesn't think elements are indexable + if (!isFunction(el[matchesSelectorFunc])) { + return false + } + + // $FlowIgnore: Doesn't think elements are indexable + return el[matchesSelectorFunc](selector) +} + +// Works up the tree to the draggable itself attempting to match selector. +export function matchesSelectorAndParentsTo (el: Node, selector: string, baseNode: Node): boolean { + let node = el + do { + if (matchesSelector(node, selector)) { return true } + if (node === baseNode) { return false } + node = node.parentNode + } while (node) + + return false +} + +export function addEvent (el, event: string, handler): void { + if (!el) { + return + } + if (el.attachEvent) { + el.attachEvent('on' + event, handler) + } else if (el.addEventListener) { + el.addEventListener(event, handler, true) + } else { + // $FlowIgnore: Doesn't think elements are indexable + el['on' + event] = handler + } +} + +export function removeEvent (el, event: string, handler): void { + if (!el) { + return + } + if (el.detachEvent) { + el.detachEvent('on' + event, handler) + } else if (el.removeEventListener) { + el.removeEventListener(event, handler, true) + } else { + // $FlowIgnore: Doesn't think elements are indexable + el['on' + event] = null + } +} + +export function outerHeight (node: HTMLElement): number { + // This is deliberately excluding margin for our calculations, since we are using + // offsetTop which is including margin. See getBoundPosition + let height = node.clientHeight + const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node) + height += int(computedStyle.borderTopWidth) + height += int(computedStyle.borderBottomWidth) + return height +} + +export function outerWidth (node: HTMLElement): number { + // This is deliberately excluding margin for our calculations, since we are using + // offsetLeft which is including margin. See getBoundPosition + let width = node.clientWidth + const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node) + width += int(computedStyle.borderLeftWidth) + width += int(computedStyle.borderRightWidth) + return width +} +export function innerHeight (node: HTMLElement): number { + let height = node.clientHeight + const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node) + height -= int(computedStyle.paddingTop) + height -= int(computedStyle.paddingBottom) + return height +} + +export function innerWidth (node: HTMLElement): number { + let width = node.clientWidth + const computedStyle = node.ownerDocument.defaultView.getComputedStyle(node) + width -= int(computedStyle.paddingLeft) + width -= int(computedStyle.paddingRight) + return width +} + +// Get from offsetParent +export function offsetXYFromParent (evt: { clientX: number, clientY: number }, offsetParent: HTMLElement): IControlPosition { + const isBody = offsetParent === offsetParent.ownerDocument.body + const offsetParentRect = isBody ? { + left: 0, + top: 0 + } : offsetParent.getBoundingClientRect() + + const x = evt.clientX + offsetParent.scrollLeft - offsetParentRect.left + const y = evt.clientY + offsetParent.scrollTop - offsetParentRect.top + + return { + x, + y + } +} + +export function createCSSTransform ({ + x, + y +}: { + x: number, + y: number +}): object { + // Replace unitless items with px + return { + [browserPrefixToKey('transform', browserPrefix)]: 'translate(' + x + 'px,' + y + 'px)' + } +} + +export function createSVGTransform ({ + x, + y +}: { + x: number, + y: number +}): string { + return 'translate(' + x + ',' + y + ')' +} + +export function getTouch (e: MouseTouchEvent, identifier: number): { clientX: number, clientY: number } { + return (e.targetTouches && findInArray(e.targetTouches, (t) => identifier === t.identifier)) || + (e.changedTouches && findInArray(e.changedTouches, (t) => identifier === t.identifier)) +} + +export function getTouchIdentifier (e: MouseTouchEvent): number { + if (e.targetTouches && e.targetTouches[0]) { + return e.targetTouches[0].identifier + } + if (e.changedTouches && e.changedTouches[0]) { + return e.changedTouches[0].identifier + } +} + +// User-select Hacks: +// +// Useful for preventing blue highlights all over everything when dragging. + +// Note we're passing `document` b/c we could be iframed +export function addUserSelectStyles (doc?: Document) { + if (!doc) { + return + } + let styleEl = doc.getElementById('react-draggable-style-el') + if (!styleEl) { + styleEl = doc.createElement('style') + styleEl.setAttribute('type', 'text/css') + styleEl.id = 'react-draggable-style-el' + styleEl.innerHTML = '.react-draggable-transparent-selection *::-moz-selection {background: transparent;}\n' + styleEl.innerHTML += '.react-draggable-transparent-selection *::selection {background: transparent;}\n' + doc.getElementsByTagName('head')[0].appendChild(styleEl) + } + if (doc.body) { + addClassName(doc.body, 'react-draggable-transparent-selection') + } +} + +export function removeUserSelectStyles (doc?: Document) { + try { + if (doc && doc.body) { + removeClassName(doc.body, 'react-draggable-transparent-selection') + } + window.getSelection().removeAllRanges() // remove selection caused by scroll + } catch (e) { + // probably IE + } +} + +export function styleHacks (childStyle: object = {}): object { + // Workaround IE pointer events; see #51 + // https://github.com/mzabriskie/react-draggable/issues/51#issuecomment-103488278 + return { + touchAction: 'none', + ...childStyle + } +} + +export function addClassName (el: HTMLElement, className: string) { + if (el.classList) { + el.classList.add(className) + } else { + if (!el.className.match(new RegExp(`(?:^|\\s)${className}(?!\\S)`))) { + el.className += ` ${className}` + } + } +} + +export function removeClassName (el: HTMLElement, className: string) { + if (el.classList) { + el.classList.remove(className) + } else { + el.className = el.className.replace(new RegExp(`(?:^|\\s)${className}(?!\\S)`, 'g'), '') + } +} diff --git a/webapp/libs/react-draggable/lib/utils/getPrefix.ts b/webapp/libs/react-draggable/lib/utils/getPrefix.ts new file mode 100644 index 000000000..8fc63be5f --- /dev/null +++ b/webapp/libs/react-draggable/lib/utils/getPrefix.ts @@ -0,0 +1,52 @@ +const prefixes = ['Moz', 'Webkit', 'O', 'ms'] +export function getPrefix (prop: string = 'transform'): string { + // Checking specifically for 'window.document' is for pseudo-browser server-side + // environments that define 'window' as the global context. + // E.g. React-rails (see https://github.com/reactjs/react-rails/pull/84) + if (typeof window === 'undefined' || typeof window.document === 'undefined') { + return '' + } + + const style = window.document.documentElement.style + + if (prop in style) { + return '' + } + + for (let i = 0; i < prefixes.length; i++) { + if (browserPrefixToKey(prop, prefixes[i]) in style) { + return prefixes[i] + } + } + + return '' +} + +export function browserPrefixToKey (prop: string, prefix: string): string { + return prefix ? `${prefix}${kebabToTitleCase(prop)}` : prop +} + +export function browserPrefixToStyle (prop: string, prefix: string): string { + return prefix ? `-${prefix.toLowerCase()}-${prop}` : prop +} + +function kebabToTitleCase (str: string): string { + let out = '' + let shouldCapitalize = true + for (let i = 0; i < str.length; i++) { + if (shouldCapitalize) { + out += str[i].toUpperCase() + shouldCapitalize = false + } else if (str[i] === '-') { + shouldCapitalize = true + } else { + out += str[i] + } + } + return out +} + +// Default export is the prefix itself, like 'Moz', 'Webkit', etc +// Note that you may have to re-test for certain things; for instance, Chrome 50 +// can handle unprefixed `transform`, but not unprefixed `user-select` +export default getPrefix() diff --git a/webapp/libs/react-draggable/lib/utils/log.ts b/webapp/libs/react-draggable/lib/utils/log.ts new file mode 100644 index 000000000..5bb321be8 --- /dev/null +++ b/webapp/libs/react-draggable/lib/utils/log.ts @@ -0,0 +1,6 @@ +/*eslint no-console:0*/ +export default function log (...args: any[]) { + if (process.env.DRAGGABLE_DEBUG) { + console.log(...args) + } +} diff --git a/webapp/libs/react-draggable/lib/utils/positionFns.ts b/webapp/libs/react-draggable/lib/utils/positionFns.ts new file mode 100644 index 000000000..fd3d0b019 --- /dev/null +++ b/webapp/libs/react-draggable/lib/utils/positionFns.ts @@ -0,0 +1,148 @@ +import {isNum, int} from './shims' +import * as ReactDOM from 'react-dom' +import {getTouch, innerWidth, innerHeight, offsetXYFromParent, outerWidth, outerHeight} from './domFns' + +import Draggable from '../Draggable' +import {IBounds, IControlPosition, IDraggableData, MouseTouchEvent} from './types' +import DraggableCore from '../DraggableCore' + +export function getBoundPosition (draggable: Draggable, x: number, y: number): [number, number] { + // If no bounds, short-circuit and move on + if (!draggable.props.bounds) { + return [x, y] + } + + // Clone new bounds + let {bounds} = draggable.props + bounds = typeof bounds === 'string' ? bounds : cloneBounds(bounds) + const node = findDOMNode(draggable) as HTMLElement + + if (typeof bounds === 'string') { + const {ownerDocument} = node + const ownerWindow = ownerDocument.defaultView + const boundNode = bounds === 'parent' ? node.parentNode : ownerDocument.querySelector(bounds) + if (!(boundNode instanceof HTMLElement)) { + throw new Error('Bounds selector "' + bounds + '" could not find an element.') + } + const nodeStyle = ownerWindow.getComputedStyle(node) + const boundNodeStyle = ownerWindow.getComputedStyle(boundNode) + // Compute bounds. This is a pain with padding and offsets but this gets it exactly right. + bounds = { + left: -node.offsetLeft + int(boundNodeStyle.paddingLeft) + int(nodeStyle.marginLeft), + top: -node.offsetTop + int(boundNodeStyle.paddingTop) + int(nodeStyle.marginTop), + right: innerWidth(boundNode) - outerWidth(node) - node.offsetLeft + + int(boundNodeStyle.paddingRight) - int(nodeStyle.marginRight), + bottom: innerHeight(boundNode) - outerHeight(node) - node.offsetTop + + int(boundNodeStyle.paddingBottom) - int(nodeStyle.marginBottom) + } + } + + // Keep x and y below right and bottom limits... + if (isNum(bounds.right)) { + x = Math.min(x, bounds.right) + } + if (isNum(bounds.bottom)) { + y = Math.min(y, bounds.bottom) + } + + // But above left and top limits. + if (isNum(bounds.left)) { + x = Math.max(x, bounds.left) + } + if (isNum(bounds.top)) { + y = Math.max(y, bounds.top) + } + + return [x, y] +} + +export function snapToGrid (grid: [number, number], pendingX: number, pendingY: number): [number, number] { + const x = Math.round(pendingX / grid[0]) * grid[0] + const y = Math.round(pendingY / grid[1]) * grid[1] + return [x, y] +} + +export function canDragX (draggable: Draggable): boolean { + return draggable.props.axis === 'both' || draggable.props.axis === 'x' +} + +export function canDragY (draggable: Draggable): boolean { + return draggable.props.axis === 'both' || draggable.props.axis === 'y' +} + +// Get {x, y} positions from event. +export function getControlPosition (e: MouseTouchEvent, touchIdentifier: number, draggableCore: DraggableCore): IControlPosition { + const touchObj = typeof touchIdentifier === 'number' ? getTouch(e, touchIdentifier) : null + if (typeof touchIdentifier === 'number' && !touchObj) { + return null // not the right touch + } + const node = findDOMNode(draggableCore) as HTMLElement + // User can provide an offsetParent if desired. + const offsetParent = draggableCore.props.offsetParent || node.offsetParent || node.ownerDocument.body + return offsetXYFromParent(touchObj || e, offsetParent as HTMLElement) +} + +// Create an data object exposed by 's events +export function createCoreData (draggable: DraggableCore, x: number, y: number): IDraggableData { + const scale = draggable.props.scale || 1 + const grid = draggable.props.grid + const state = draggable.state + const isStart = !isNum(state.lastX) + const node = findDOMNode(draggable) as HTMLElement + + if (isStart) { + // If this is our first move, use the x and y as last coords. + return { + node, + deltaX: 0, deltaY: 0, + lastX: x, lastY: y, + x, y + } + } else { + // Otherwise calculate proper values. + let deltaX = (x - state.lastX) / scale + let deltaY = (y - state.lastY) / scale + if (grid) { + [deltaX, deltaY] = snapToGrid(grid, deltaX, deltaY) + } + + return { + node, + deltaX, deltaY, + lastX: state.lastX, lastY: state.lastY, + x, y + } + } +} + +// Create an data exposed by 's events +export function createDraggableData (draggable: Draggable, coreData: IDraggableData): IDraggableData { + return { + node: coreData.node, + x: draggable.state.x + coreData.deltaX, + y: draggable.state.y + coreData.deltaY, + deltaX: coreData.deltaX, + deltaY: coreData.deltaY, + lastX: draggable.state.x, + lastY: draggable.state.y + } +} + +// A lot faster than stringify/parse +function cloneBounds (bounds: IBounds): IBounds { + return { + left: bounds.left, + top: bounds.top, + right: bounds.right, + bottom: bounds.bottom + } +} + +function findDOMNode (draggable: Draggable | DraggableCore): Element { + const node = ReactDOM.findDOMNode(draggable) + if (!node) { + throw new Error(': Unmounted during event!') + } + // $FlowIgnore we can't assert on HTMLElement due to tests... FIXME + return node +} diff --git a/webapp/libs/react-draggable/lib/utils/shims.ts b/webapp/libs/react-draggable/lib/utils/shims.ts new file mode 100644 index 000000000..e5c0223bd --- /dev/null +++ b/webapp/libs/react-draggable/lib/utils/shims.ts @@ -0,0 +1,26 @@ +// @credits https://gist.github.com/rogozhnikoff/a43cfed27c41e4e68cdc +export function findInArray (array: any[] | TouchList, callback): any { + for (let i = 0, length = array.length; i < length; i++) { + if (callback.apply(callback, [array[i], i, array])) { + return array[i] + } + } +} + +export function isFunction (func: any): boolean { + return typeof func === 'function' || Object.prototype.toString.call(func) === '[object Function]' +} + +export function isNum (num: any): boolean { + return typeof num === 'number' && !isNaN(num) +} + +export function int (a: string): number { + return parseInt(a, 10) +} + +export function dontSetMe (props: object, propName: string, componentName: string) { + if (props[propName]) { + return new Error(`Invalid prop ${propName} passed to ${componentName} - do not set this, set it on the child.`) + } +} diff --git a/webapp/libs/react-draggable/lib/utils/types.ts b/webapp/libs/react-draggable/lib/utils/types.ts new file mode 100644 index 000000000..66469fa07 --- /dev/null +++ b/webapp/libs/react-draggable/lib/utils/types.ts @@ -0,0 +1,23 @@ +// eslint-disable-next-line no-use-before-define +export type DraggableEventHandler = (e: MouseEvent, data: IDraggableData) => void | false + +export interface IDraggableData { + node: HTMLElement, + x: number, y: number, + deltaX: number, deltaY: number, + lastX: number, lastY: number +} + +export interface IBounds { + left: number, top: number, right: number, bottom: number +} +export interface IControlPosition {x: number, y: number} +export type EventHandler = (e: T) => void | false + +// Missing targetTouches +export interface ITouchEvent2 extends TouchEvent { + changedTouches: TouchList + targetTouches: TouchList +} + +export type MouseTouchEvent = MouseEvent & ITouchEvent2 From b004801f26046d9f1656a01c80ddc7c32d3bb633 Mon Sep 17 00:00:00 2001 From: andyfong Date: Mon, 15 Oct 2018 16:49:43 +0800 Subject: [PATCH 33/45] chore(libs): localize react-resizable in libs with ts/tsx support --- webapp/libs/react-resizable/Resizable.js | 271 ------------------ webapp/libs/react-resizable/ResizableBox.js | 118 -------- webapp/libs/react-resizable/cloneElement.js | 20 -- webapp/libs/react-resizable/css/styles.css | 0 webapp/libs/react-resizable/index.js | 12 +- webapp/libs/react-resizable/lib/Resizable.tsx | 210 ++++++++++++++ .../libs/react-resizable/lib/ResizableBox.tsx | 80 ++++++ .../libs/react-resizable/lib/cloneElement.ts | 12 + 8 files changed, 308 insertions(+), 415 deletions(-) delete mode 100644 webapp/libs/react-resizable/Resizable.js delete mode 100644 webapp/libs/react-resizable/ResizableBox.js delete mode 100644 webapp/libs/react-resizable/cloneElement.js mode change 100644 => 100755 webapp/libs/react-resizable/css/styles.css mode change 100644 => 100755 webapp/libs/react-resizable/index.js create mode 100755 webapp/libs/react-resizable/lib/Resizable.tsx create mode 100755 webapp/libs/react-resizable/lib/ResizableBox.tsx create mode 100755 webapp/libs/react-resizable/lib/cloneElement.ts diff --git a/webapp/libs/react-resizable/Resizable.js b/webapp/libs/react-resizable/Resizable.js deleted file mode 100644 index 0c0fd0e99..000000000 --- a/webapp/libs/react-resizable/Resizable.js +++ /dev/null @@ -1,271 +0,0 @@ -'use strict'; - -exports.__esModule = true; - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _reactDraggable = require('../react-draggable'); - -var _cloneElement = require('./cloneElement'); - -var _cloneElement2 = _interopRequireDefault(_cloneElement); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Resizable = function (_React$Component) { - _inherits(Resizable, _React$Component); - - function Resizable() { - var _temp, _this, _ret; - - _classCallCheck(this, Resizable); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = { - resizing: false, - width: _this.props.width, height: _this.props.height, - slackW: 0, slackH: 0 - }, _temp), _possibleConstructorReturn(_this, _ret); - } - - Resizable.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { - // If parent changes height/width, set that in our state. - if (!this.state.resizing && (nextProps.width !== this.props.width || nextProps.height !== this.props.height)) { - this.setState({ - width: nextProps.width, - height: nextProps.height - }); - } - }; - - Resizable.prototype.lockAspectRatio = function lockAspectRatio(width, height, aspectRatio) { - height = width / aspectRatio; - width = height * aspectRatio; - return [width, height]; - }; - - // If you do this, be careful of constraints - - - Resizable.prototype.runConstraints = function runConstraints(width, height) { - var _ref = [this.props.minConstraints, this.props.maxConstraints], - min = _ref[0], - max = _ref[1]; - - - if (this.props.lockAspectRatio) { - var ratio = this.state.width / this.state.height; - height = width / ratio; - width = height * ratio; - } - - if (!min && !max) return [width, height]; - - var oldW = width, - oldH = height; - - // Add slack to the values used to calculate bound position. This will ensure that if - // we start removing slack, the element won't react to it right away until it's been - // completely removed. - - var _state = this.state, - slackW = _state.slackW, - slackH = _state.slackH; - - width += slackW; - height += slackH; - - if (min) { - width = Math.max(min[0], width); - height = Math.max(min[1], height); - } - if (max) { - width = Math.min(max[0], width); - height = Math.min(max[1], height); - } - - // If the numbers changed, we must have introduced some slack. Record it for the next iteration. - slackW += oldW - width; - slackH += oldH - height; - if (slackW !== this.state.slackW || slackH !== this.state.slackH) { - this.setState({ slackW: slackW, slackH: slackH }); - } - - return [width, height]; - }; - - /** - * Wrapper around drag events to provide more useful data. - * - * @param {String} handlerName Handler name to wrap. - * @return {Function} Handler function. - */ - - - Resizable.prototype.resizeHandler = function resizeHandler(handlerName) { - var _this2 = this; - - return function (e, _ref2) { - var node = _ref2.node, - deltaX = _ref2.deltaX, - deltaY = _ref2.deltaY; - - // scale - var scale = _this2.props.scale || 1 - - // Axis restrictions - var canDragX = _this2.props.axis === 'both' || _this2.props.axis === 'x'; - var canDragY = _this2.props.axis === 'both' || _this2.props.axis === 'y'; - - // Update w/h - var width = _this2.state.width + (canDragX ? deltaX / scale : 0); - var height = _this2.state.height + (canDragY ? deltaY / scale : 0); - - // Early return if no change - var widthChanged = width !== _this2.state.width, - heightChanged = height !== _this2.state.height; - if (handlerName === 'onResize' && !widthChanged && !heightChanged) return; - - // Set the appropriate state for this handler. - var _runConstraints = _this2.runConstraints(width, height); - - width = _runConstraints[0]; - height = _runConstraints[1]; - var newState = {}; - if (handlerName === 'onResizeStart') { - newState.resizing = true; - } else if (handlerName === 'onResizeStop') { - newState.resizing = false; - newState.slackW = newState.slackH = 0; - } else { - // Early return if no change after constraints - if (width === _this2.state.width && height === _this2.state.height) return; - newState.width = width; - newState.height = height; - } - - var hasCb = typeof _this2.props[handlerName] === 'function'; - if (hasCb) { - if (typeof e.persist === 'function') e.persist(); - _this2.setState(newState, function () { - return _this2.props[handlerName](e, { node: node, size: { width: width, height: height } }); - }); - } else { - _this2.setState(newState); - } - }; - }; - - Resizable.prototype.render = function render() { - // eslint-disable-next-line no-unused-vars - var _props = this.props, - children = _props.children, - draggableOpts = _props.draggableOpts, - width = _props.width, - height = _props.height, - handleSize = _props.handleSize, - lockAspectRatio = _props.lockAspectRatio, - axis = _props.axis, - minConstraints = _props.minConstraints, - maxConstraints = _props.maxConstraints, - onResize = _props.onResize, - onResizeStop = _props.onResizeStop, - onResizeStart = _props.onResizeStart, - scale = _props.scale, - p = _objectWithoutProperties(_props, ['children', 'draggableOpts', 'width', 'height', 'handleSize', 'lockAspectRatio', 'axis', 'minConstraints', 'maxConstraints', 'onResize', 'onResizeStop', 'onResizeStart']); - - var className = p.className ? p.className + ' react-resizable' : 'react-resizable'; - - // What we're doing here is getting the child of this element, and cloning it with this element's props. - // We are then defining its children as: - // Its original children (resizable's child's children), and - // A draggable handle. - return (0, _cloneElement2.default)(children, _extends({}, p, { - className: className, - children: [children.props.children, _react2.default.createElement( - _reactDraggable.DraggableCore, - _extends({}, draggableOpts, { - key: 'resizableHandle', - onStop: this.resizeHandler('onResizeStop'), - onStart: this.resizeHandler('onResizeStart'), - onDrag: this.resizeHandler('onResize') - }), - _react2.default.createElement('span', { className: 'react-resizable-handle' }) - )] - })); - }; - - return Resizable; -}(_react2.default.Component); - -Resizable.propTypes = { - // - // Required Props - // - - // Require that one and only one child be present. - children: _propTypes2.default.element.isRequired, - - // Initial w/h - width: _propTypes2.default.number.isRequired, - height: _propTypes2.default.number.isRequired, - - // - // Optional props - // - - // If you change this, be sure to update your css - handleSize: _propTypes2.default.array, - - // If true, will only allow width/height to move in lockstep - lockAspectRatio: _propTypes2.default.bool, - - // Restricts resizing to a particular axis (default: 'both') - // 'both' - allows resizing by width or height - // 'x' - only allows the width to be changed - // 'y' - only allows the height to be changed - // 'none' - disables resizing altogether - axis: _propTypes2.default.oneOf(['both', 'x', 'y', 'none']), - - // Min/max size - minConstraints: _propTypes2.default.arrayOf(_propTypes2.default.number), - maxConstraints: _propTypes2.default.arrayOf(_propTypes2.default.number), - - // Callbacks - onResizeStop: _propTypes2.default.func, - onResizeStart: _propTypes2.default.func, - onResize: _propTypes2.default.func, - - // These will be passed wholesale to react-draggable's DraggableCore - draggableOpts: _propTypes2.default.object, - - // feat. add scale ability - scale: _propTypes2.default.number -}; -Resizable.defaultProps = { - handleSize: [20, 20], - lockAspectRatio: false, - axis: 'both', - minConstraints: [20, 20], - maxConstraints: [Infinity, Infinity] -}; -exports.default = Resizable; diff --git a/webapp/libs/react-resizable/ResizableBox.js b/webapp/libs/react-resizable/ResizableBox.js deleted file mode 100644 index 088897fcb..000000000 --- a/webapp/libs/react-resizable/ResizableBox.js +++ /dev/null @@ -1,118 +0,0 @@ -'use strict'; - -exports.__esModule = true; - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _Resizable = require('./Resizable'); - -var _Resizable2 = _interopRequireDefault(_Resizable); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -// An example use of Resizable. -var ResizableBox = function (_React$Component) { - _inherits(ResizableBox, _React$Component); - - function ResizableBox() { - var _temp, _this, _ret; - - _classCallCheck(this, ResizableBox); - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = { - width: _this.props.width, - height: _this.props.height - }, _this.onResize = function (e, data) { - var size = data.size; - var width = size.width, - height = size.height; - - - if (_this.props.onResize) { - e.persist && e.persist(); - _this.setState(size, function () { - return _this.props.onResize && _this.props.onResize(e, data); - }); - } else { - _this.setState(size); - } - }, _temp), _possibleConstructorReturn(_this, _ret); - } - - ResizableBox.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) { - if (nextProps.width !== this.props.width || nextProps.height !== this.props.height) { - this.setState({ - width: nextProps.width, - height: nextProps.height - }); - } - }; - - ResizableBox.prototype.render = function render() { - // Basic wrapper around a Resizable instance. - // If you use Resizable directly, you are responsible for updating the child component - // with a new width and height. - var _props = this.props, - handleSize = _props.handleSize, - onResize = _props.onResize, - onResizeStart = _props.onResizeStart, - onResizeStop = _props.onResizeStop, - draggableOpts = _props.draggableOpts, - minConstraints = _props.minConstraints, - maxConstraints = _props.maxConstraints, - lockAspectRatio = _props.lockAspectRatio, - axis = _props.axis, - width = _props.width, - height = _props.height, - props = _objectWithoutProperties(_props, ['handleSize', 'onResize', 'onResizeStart', 'onResizeStop', 'draggableOpts', 'minConstraints', 'maxConstraints', 'lockAspectRatio', 'axis', 'width', 'height']); - - return _react2.default.createElement( - _Resizable2.default, - { - handleSize: handleSize, - width: this.state.width, - height: this.state.height, - onResizeStart: onResizeStart, - onResize: this.onResize, - onResizeStop: onResizeStop, - draggableOpts: draggableOpts, - minConstraints: minConstraints, - maxConstraints: maxConstraints, - lockAspectRatio: lockAspectRatio, - axis: axis - }, - _react2.default.createElement('div', _extends({ style: { width: this.state.width + 'px', height: this.state.height + 'px' } }, props)) - ); - }; - - return ResizableBox; -}(_react2.default.Component); - -ResizableBox.propTypes = { - height: _propTypes2.default.number, - width: _propTypes2.default.number -}; -ResizableBox.defaultProps = { - handleSize: [20, 20] -}; -exports.default = ResizableBox; \ No newline at end of file diff --git a/webapp/libs/react-resizable/cloneElement.js b/webapp/libs/react-resizable/cloneElement.js deleted file mode 100644 index 22918ea97..000000000 --- a/webapp/libs/react-resizable/cloneElement.js +++ /dev/null @@ -1,20 +0,0 @@ -'use strict'; - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -// React.addons.cloneWithProps look-alike that merges style & className. -module.exports = function cloneElement(element, props) { - if (props.style && element.props.style) { - props.style = _extends({}, element.props.style, props.style); - } - if (props.className && element.props.className) { - props.className = element.props.className + ' ' + props.className; - } - return _react2.default.cloneElement(element, props); -}; \ No newline at end of file diff --git a/webapp/libs/react-resizable/css/styles.css b/webapp/libs/react-resizable/css/styles.css old mode 100644 new mode 100755 diff --git a/webapp/libs/react-resizable/index.js b/webapp/libs/react-resizable/index.js old mode 100644 new mode 100755 index efa0bf420..a074d1e4e --- a/webapp/libs/react-resizable/index.js +++ b/webapp/libs/react-resizable/index.js @@ -1,7 +1,7 @@ -'use strict'; -module.exports = function() { - throw new Error("Don't instantiate Resizable directly! Use require('react-resizable').Resizable"); -}; +import Resizable from './lib/Resizable' +import ResizableBox from './lib/ResizableBox' -module.exports.Resizable = require('./Resizable').default; -module.exports.ResizableBox = require('./ResizableBox').default; +export { + Resizable, + ResizableBox +} diff --git a/webapp/libs/react-resizable/lib/Resizable.tsx b/webapp/libs/react-resizable/lib/Resizable.tsx new file mode 100755 index 000000000..284e281ee --- /dev/null +++ b/webapp/libs/react-resizable/lib/Resizable.tsx @@ -0,0 +1,210 @@ +import * as React from 'react' +import {DraggableCore} from 'libs/react-draggable' +import cloneElement from './cloneElement' + +type Axis = 'both' | 'x' | 'y' | 'none' +interface IResizableState { + resizing: boolean, + width: number, height: number, + slackW: number, slackH: number +} +interface IDragCallbackData { + node: HTMLElement, + x: number, y: number, + deltaX: number, deltaY: number, + lastX: number, lastY: number +} +export interface IResizeCallbackData { + node: HTMLElement, + size: {width: number, height: number} +} +export interface IResizableProps { + children: React.ReactElement, + className?: string, + width: number, + height: number, + scale: number + handleSize: [number, number], + lockAspectRatio: boolean, + axis: Axis, + minConstraints: [number, number], + maxConstraints: [number, number], + onResizeStop?: (e, data: IResizeCallbackData) => any, + onResizeStart?: (e, data: IResizeCallbackData) => any, + onResize?: (e, data: IResizeCallbackData) => any, + draggableOpts?: object +} + +export default class Resizable extends React.Component { + + public static defaultProps = { + handleSize: [20, 20], + lockAspectRatio: false, + axis: 'both', + minConstraints: [20, 20], + maxConstraints: [Infinity, Infinity] + } + + public state: IResizableState = { + resizing: false, + width: this.props.width, height: this.props.height, + slackW: 0, slackH: 0 + } + + public componentWillReceiveProps (nextProps: IResizableProps) { + // If parent changes height/width, set that in our state. + if (!this.state.resizing && + (nextProps.width !== this.props.width || nextProps.height !== this.props.height)) { + this.setState({ + width: nextProps.width, + height: nextProps.height + }) + } + } + + public lockAspectRatio (width: number, height: number, aspectRatio: number): [number, number] { + height = width / aspectRatio + width = height * aspectRatio + return [width, height] + } + + // If you do this, be careful of constraints + private runConstraints (width: number, height: number): [number, number] { + const [min, max] = [this.props.minConstraints, this.props.maxConstraints] + + if (this.props.lockAspectRatio) { + const ratio = this.state.width / this.state.height + height = width / ratio + width = height * ratio + } + + if (!min && !max) { + return [width, height] + } + + const [oldW, oldH] = [width, height] + + // Add slack to the values used to calculate bound position. This will ensure that if + // we start removing slack, the element won't react to it right away until it's been + // completely removed. + let {slackW, slackH} = this.state + width += slackW + height += slackH + + if (min) { + width = Math.max(min[0], width) + height = Math.max(min[1], height) + } + if (max) { + width = Math.min(max[0], width) + height = Math.min(max[1], height) + } + + // If the numbers changed, we must have introduced some slack. Record it for the next iteration. + slackW += (oldW - width) + slackH += (oldH - height) + if (slackW !== this.state.slackW || slackH !== this.state.slackH) { + this.setState({slackW, slackH}) + } + + return [width, height] + } + + /** + * Wrapper around drag events to provide more useful data. + * + * @param {String} handlerName Handler name to wrap. + * @return {Function} Handler function. + */ + private resizeHandler (handlerName: string) { + return (e, {node, deltaX, deltaY}: IDragCallbackData) => { + const scale = this.props.scale || 1 + + // Axis restrictions + const canDragX = this.props.axis === 'both' || this.props.axis === 'x' + const canDragY = this.props.axis === 'both' || this.props.axis === 'y' + + // Update w/h + let width = this.state.width + (canDragX ? deltaX / scale : 0) + let height = this.state.height + (canDragY ? deltaY / scale : 0) + + // Early return if no change + const widthChanged = width !== this.state.width + const heightChanged = height !== this.state.height + if (handlerName === 'onResize' && !widthChanged && !heightChanged) { + return + } + + [width, height] = this.runConstraints(width, height) + + // Set the appropriate state for this handler. + const newState: Partial = {} + if (handlerName === 'onResizeStart') { + newState.resizing = true + } else if (handlerName === 'onResizeStop') { + newState.resizing = false + newState.slackW = newState.slackH = 0 + } else { + // Early return if no change after constraints + if (width === this.state.width && height === this.state.height) { + return + } + newState.width = width + newState.height = height + } + + const hasCb = typeof this.props[handlerName] === 'function' + if (hasCb) { + if (typeof e.persist === 'function') { + e.persist() + } + this.setState(newState as IResizableState, () => this.props[handlerName](e, {node, size: {width, height}})) + } else { + this.setState(newState as IResizableState) + } + } + } + + public render () { + // eslint-disable-next-line no-unused-vars + const { + children, + draggableOpts, + width, + height, + handleSize, + lockAspectRatio, + axis, + minConstraints, + maxConstraints, + onResize, + onResizeStop, + onResizeStart, + ...p } = this.props + + const className = p.className ? `${p.className} react-resizable` : 'react-resizable' + + // What we're doing here is getting the child of this element, and cloning it with this element's props. + // We are then defining its children as: + // Its original children (resizable's child's children), and + // A draggable handle. + return cloneElement(children, { + ...p, + className, + children: [ + children.props.children, + ( + + + + ) + ] + }) + } +} diff --git a/webapp/libs/react-resizable/lib/ResizableBox.tsx b/webapp/libs/react-resizable/lib/ResizableBox.tsx new file mode 100755 index 000000000..3d21c0a93 --- /dev/null +++ b/webapp/libs/react-resizable/lib/ResizableBox.tsx @@ -0,0 +1,80 @@ +import * as React from 'react' +import Resizable, {IResizableProps, IResizeCallbackData} from './Resizable' + +interface IResizableBoxState { + width: number, + height: number +} + +// An example use of Resizable. +export default class ResizableBox extends React.Component { + + public static defaultProps = { + handleSize: [20, 20] + } + + public state: IResizableBoxState = { + width: this.props.width, + height: this.props.height + } + + private onResize = (e, data: IResizeCallbackData) => { + const {size} = data + const {width, height} = size + + if (this.props.onResize) { + if (e.persist) { e.persist() } + this.setState(size, () => this.props.onResize && this.props.onResize(e, data)) + } else { + this.setState(size) + } + } + + public componentWillReceiveProps (nextProps: IResizableProps) { + if (nextProps.width !== this.props.width || nextProps.height !== this.props.height) { + this.setState({ + width: nextProps.width, + height: nextProps.height + }) + } + } + + public render () { + // Basic wrapper around a Resizable instance. + // If you use Resizable directly, you are responsible for updating the child component + // with a new width and height. + const { + handleSize, + onResize, + onResizeStart, + onResizeStop, + draggableOpts, + minConstraints, + maxConstraints, + lockAspectRatio, + axis, + width, + height, + scale, + ...props } = this.props + + return ( + +
    + + ) + } +} diff --git a/webapp/libs/react-resizable/lib/cloneElement.ts b/webapp/libs/react-resizable/lib/cloneElement.ts new file mode 100755 index 000000000..8eb73aa75 --- /dev/null +++ b/webapp/libs/react-resizable/lib/cloneElement.ts @@ -0,0 +1,12 @@ +import * as React from 'react' + +// React.addons.cloneWithProps look-alike that merges style & className. +export default function cloneElement (element: React.ReactElement, props): React.ReactElement { + if (props.style && element.props.style) { + props.style = {...element.props.style, ...props.style} + } + if (props.className && element.props.className) { + props.className = `${element.props.className} ${props.className}` + } + return React.cloneElement(element, props) +} From a2b869b91aeb169f8e6fc538c9c9457eb111d2f9 Mon Sep 17 00:00:00 2001 From: andyfong Date: Mon, 15 Oct 2018 16:55:49 +0800 Subject: [PATCH 34/45] chore(libs): localize react-grid-layout in libs with es5 build files --- webapp/libs/react-grid-layout/index.js | 10 +++++----- webapp/libs/react-grid-layout/{ => lib}/GridItem.js | 4 ++-- .../react-grid-layout/{ => lib}/ReactGridLayout.js | 0 .../{ => lib}/ResponsiveReactGridLayout.js | 0 .../{ => lib}/components/WidthProvider.js | 0 .../react-grid-layout/{ => lib}/responsiveUtils.js | 0 webapp/libs/react-grid-layout/{ => lib}/utils.js | 0 7 files changed, 7 insertions(+), 7 deletions(-) rename webapp/libs/react-grid-layout/{ => lib}/GridItem.js (99%) rename webapp/libs/react-grid-layout/{ => lib}/ReactGridLayout.js (100%) rename webapp/libs/react-grid-layout/{ => lib}/ResponsiveReactGridLayout.js (100%) rename webapp/libs/react-grid-layout/{ => lib}/components/WidthProvider.js (100%) rename webapp/libs/react-grid-layout/{ => lib}/responsiveUtils.js (100%) rename webapp/libs/react-grid-layout/{ => lib}/utils.js (100%) diff --git a/webapp/libs/react-grid-layout/index.js b/webapp/libs/react-grid-layout/index.js index e52f31379..55749147e 100644 --- a/webapp/libs/react-grid-layout/index.js +++ b/webapp/libs/react-grid-layout/index.js @@ -1,5 +1,5 @@ -module.exports = require('./ReactGridLayout').default; -module.exports.utils = require('./utils'); -module.exports.Responsive = require('./ResponsiveReactGridLayout').default; -module.exports.Responsive.utils = require('./responsiveUtils'); -module.exports.WidthProvider = require('./components/WidthProvider').default; +module.exports = require('./lib/ReactGridLayout').default; +module.exports.utils = require('./lib/utils'); +module.exports.Responsive = require('./lib/ResponsiveReactGridLayout').default; +module.exports.Responsive.utils = require('./lib/responsiveUtils'); +module.exports.WidthProvider = require('./lib/components/WidthProvider').default; diff --git a/webapp/libs/react-grid-layout/GridItem.js b/webapp/libs/react-grid-layout/lib/GridItem.js similarity index 99% rename from webapp/libs/react-grid-layout/GridItem.js rename to webapp/libs/react-grid-layout/lib/GridItem.js index be4eb0d18..3b3562cb9 100644 --- a/webapp/libs/react-grid-layout/GridItem.js +++ b/webapp/libs/react-grid-layout/lib/GridItem.js @@ -12,9 +12,9 @@ var _propTypes = require("prop-types"); var _propTypes2 = _interopRequireDefault(_propTypes); -var _reactDraggable = require("../react-draggable"); +var _reactDraggable = require("libs/react-draggable"); -var _reactResizable = require("../react-resizable"); +var _reactResizable = require("libs/react-resizable"); var _utils = require("./utils"); diff --git a/webapp/libs/react-grid-layout/ReactGridLayout.js b/webapp/libs/react-grid-layout/lib/ReactGridLayout.js similarity index 100% rename from webapp/libs/react-grid-layout/ReactGridLayout.js rename to webapp/libs/react-grid-layout/lib/ReactGridLayout.js diff --git a/webapp/libs/react-grid-layout/ResponsiveReactGridLayout.js b/webapp/libs/react-grid-layout/lib/ResponsiveReactGridLayout.js similarity index 100% rename from webapp/libs/react-grid-layout/ResponsiveReactGridLayout.js rename to webapp/libs/react-grid-layout/lib/ResponsiveReactGridLayout.js diff --git a/webapp/libs/react-grid-layout/components/WidthProvider.js b/webapp/libs/react-grid-layout/lib/components/WidthProvider.js similarity index 100% rename from webapp/libs/react-grid-layout/components/WidthProvider.js rename to webapp/libs/react-grid-layout/lib/components/WidthProvider.js diff --git a/webapp/libs/react-grid-layout/responsiveUtils.js b/webapp/libs/react-grid-layout/lib/responsiveUtils.js similarity index 100% rename from webapp/libs/react-grid-layout/responsiveUtils.js rename to webapp/libs/react-grid-layout/lib/responsiveUtils.js diff --git a/webapp/libs/react-grid-layout/utils.js b/webapp/libs/react-grid-layout/lib/utils.js similarity index 100% rename from webapp/libs/react-grid-layout/utils.js rename to webapp/libs/react-grid-layout/lib/utils.js From 595f8b59cb408fa61f44f19024ed7c1845e90bb3 Mon Sep 17 00:00:00 2001 From: andyfong Date: Mon, 15 Oct 2018 17:01:03 +0800 Subject: [PATCH 35/45] feat(Display): WIP: horizontal&vertical baselines, update file import path, add some ts types --- webapp/app/containers/Display/Editor.tsx | 99 +++++++++++++++---- webapp/app/containers/Display/Preview.tsx | 2 +- .../Display/components/DisplayHeader.tsx | 7 +- .../Display/components/LayerItem.tsx | 16 ++- .../Display/components/LayerList.tsx | 2 +- .../Display/components/util.ts} | 26 +++-- webapp/app/containers/Display/index.tsx | 19 ++++ webapp/app/containers/Display/reducer.ts | 2 +- webapp/app/containers/Display/sagas.ts | 2 +- webapp/app/utils/util.ts | 16 --- webapp/share/containers/Display/reducer.ts | 2 +- 11 files changed, 135 insertions(+), 58 deletions(-) rename webapp/app/{assets/json/slideSettings/index.ts => containers/Display/components/util.ts} (69%) diff --git a/webapp/app/containers/Display/Editor.tsx b/webapp/app/containers/Display/Editor.tsx index a2841e0e9..3aba31e04 100644 --- a/webapp/app/containers/Display/Editor.tsx +++ b/webapp/app/containers/Display/Editor.tsx @@ -49,7 +49,7 @@ import { makeSelectCurrentState, makeSelectNextState, makeSelectEditorBaselines } from './selectors' -import slideSettings from '../../assets/json/slideSettings' +import { slideSettings, GraphTypes } from './components/util' import DisplayHeader from './components/DisplayHeader' import DisplayBody from './components/DisplayBody' @@ -58,7 +58,7 @@ import DisplayContainer, { Keys } from './components/DisplayContainer' import DisplayBottom from './components/DisplayBottom' import DisplaySidebar from './components/DisplaySidebar' -import LayerItem from './components/LayerItem' +import LayerItem, { ILayerParams } from './components/LayerItem' import SettingForm from './components/SettingForm' import DisplaySetting from './components/DisplaySetting' import LayerAlign from './components/LayerAlign' @@ -83,7 +83,11 @@ import { pasteSlideLayers, undoOperation, redoOperation, - loadDisplayShareLink } from './actions' + loadDisplayShareLink, + showHorizontalBaseline, + hideHorizontalBaseline, + showVerticalBaseline, + hideVerticalBaseline } from './actions' const message = require('antd/lib/message') const styles = require('./Display.less') @@ -97,9 +101,10 @@ import { import { makeSelectWidgets } from '../Widget/selectors' import { makeSelectBizlogics } from '../Bizlogic/selectors' import { GRID_ITEM_MARGIN } from '../../globalConstants' -import { GraphTypes } from 'utils/util' // import { LayerContextMenu } from './components/LayerContextMenu' +import { ISlideParams } from './' + interface IParams { pid: number displayId: number @@ -190,10 +195,15 @@ interface IEditorProps extends RouteComponentProps<{}, IParams> { expired: number } ) => void + + onShowHorizontalBaseline: (top, right, left) => void + onHideHorizontalBaseline: () => void + onShowVerticalBaseline: (top, bottom, left) => void + onHideVerticalBaseline: () => void } interface IEditorStates { - slideParams: any + slideParams: Partial currentLocalLayers: any[] editorWidth: number editorHeight: number @@ -435,22 +445,61 @@ export class Editor extends React.Component { ) => { const editLayers = [] const { currentLayersOperationInfo } = this.props - const { currentLocalLayers } = this.state + const { currentLocalLayers, slideParams } = this.state const copyCurrentLocalLayers = fromJS(currentLocalLayers).toJS() - copyCurrentLocalLayers.forEach((localLayer) => { - if (localLayer.id === itemId || (currentLayersOperationInfo[itemId].selected && currentLayersOperationInfo[localLayer.id].selected)) { - const layerParams = JSON.parse(localLayer.params) - const { positionX, positionY, width, height } = layerParams - localLayer.params = JSON.stringify({ - ...layerParams, - positionX: Math.round(positionX + deltaX), - positionY: Math.round(positionY + deltaY), - width: Math.round(width + deltaWidth), - height: Math.round(height + deltaHeight) - }) - editLayers.push(localLayer) - } + + editLayers.push(copyCurrentLocalLayers.find((localLayer) => localLayer.id === itemId)) + if (editLayers[0].selected) { + editLayers.splice(0, 1, ...copyCurrentLocalLayers.filter((localLayer) => currentLayersOperationInfo[localLayer.id].selected)) + } + + const mapLayerParams: { [layerId: number]: ILayerParams } = editLayers.reduce((acc, layer) => { + acc[layer.id] = JSON.parse(layer.params) + return acc + }, {}) + + const minX = editLayers.reduce((min, layer) => Math.min(min, mapLayerParams[layer.id].positionX), Infinity) + const maxX = editLayers.reduce((max, layer) => { + const { positionX, width } = mapLayerParams[layer.id] + return Math.max(max, positionX + width) + }, -Infinity) + + const minY = editLayers.reduce((min, layer) => Math.min(min, mapLayerParams[layer.id].positionY), Infinity) + const maxY = editLayers.reduce((max, layer) => { + const { positionY, height } = mapLayerParams[layer.id] + return Math.max(max, positionY + height) + }, -Infinity) + + const middleX = Math.round((minX + maxX) / 2) + const middleY = Math.round((minY + maxY) / 2) + + const { width: slideWidth, height: slideHeight } = slideParams + const { onShowHorizontalBaseline, onHideHorizontalBaseline, onShowVerticalBaseline, onHideVerticalBaseline } = this.props + if (Math.abs(slideWidth / 2 - middleX) < GRID_ITEM_MARGIN) { + onShowVerticalBaseline(0, 0, slideWidth / 2) + // deltaX = 0 + } else { + onHideVerticalBaseline() + } + if (Math.abs(slideHeight / 2 - middleY) < GRID_ITEM_MARGIN) { + onShowHorizontalBaseline(slideHeight / 2, 0, 0) + // deltaY = 0 + } else { + onHideHorizontalBaseline() + } + + editLayers.forEach((localLayer) => { + const layerParams = JSON.parse(localLayer.params) + const { positionX, positionY, width, height } = layerParams + localLayer.params = JSON.stringify({ + ...layerParams, + positionX: Math.round(positionX + deltaX), + positionY: Math.round(positionY + deltaY), + width: Math.round(width + deltaWidth), + height: Math.round(height + deltaHeight) + }) }) + this.setState({ currentLocalLayers: copyCurrentLocalLayers }) return editLayers } @@ -470,8 +519,11 @@ export class Editor extends React.Component { deltaWidth: 0, deltaHeight: 0 }) - this.props.toggleLayersDraggingStatus(editLayers.map((l) => l.id), false) this.onEditLayers(editLayers) + const { onHideHorizontalBaseline, onHideVerticalBaseline, toggleLayersDraggingStatus } = this.props + toggleLayersDraggingStatus(editLayers.map((l) => l.id), false) + onHideHorizontalBaseline() + onHideVerticalBaseline() } private resizeLayer = (itemId, delta) => { @@ -946,7 +998,12 @@ function mapDispatchToProps (dispatch) { onLoadDisplayShareLink: (id, authName) => dispatch(loadDisplayShareLink(id, authName)), onUndo: (currentState) => dispatch(undoOperation(currentState)), onRedo: (nextState) => dispatch(redoOperation(nextState)), - onHideNavigator: () => dispatch(hideNavigator()) + onHideNavigator: () => dispatch(hideNavigator()), + + onShowHorizontalBaseline: (top, right, left) => dispatch(showHorizontalBaseline(top, right, left)), + onHideHorizontalBaseline: () => dispatch(hideHorizontalBaseline()), + onShowVerticalBaseline: (top, bottom, left) => dispatch(showVerticalBaseline(top, bottom, left)), + onHideVerticalBaseline: () => dispatch(hideVerticalBaseline()) } } diff --git a/webapp/app/containers/Display/Preview.tsx b/webapp/app/containers/Display/Preview.tsx index db354eaa3..42b9d15fc 100644 --- a/webapp/app/containers/Display/Preview.tsx +++ b/webapp/app/containers/Display/Preview.tsx @@ -16,7 +16,7 @@ import sagaBizlogic from '../Bizlogic/sagas' import injectReducer from '../../utils/injectReducer' import injectSaga from '../../utils/injectSaga' -import { GraphTypes, SecondaryGraphTypes } from 'utils/util' +import { GraphTypes, SecondaryGraphTypes } from './components/util' import { echartsOptionsGenerator } from '../Widget/components/chartUtil' import Container from '../../components/Container' diff --git a/webapp/app/containers/Display/components/DisplayHeader.tsx b/webapp/app/containers/Display/components/DisplayHeader.tsx index 12dfe5b21..c6b1743f6 100644 --- a/webapp/app/containers/Display/components/DisplayHeader.tsx +++ b/webapp/app/containers/Display/components/DisplayHeader.tsx @@ -34,7 +34,7 @@ const Modal = require('antd/lib/modal') const styles = require('../Display.less') -import slideSettings from '../../../assets/json/slideSettings' +import { slideSettings, GraphTypes, SecondaryGraphTypes } from './util' import LayerSelector from './LayerSelector' import SharePanel from '../../../components/SharePanel' @@ -44,10 +44,7 @@ import { makeSelectCurrentDisplayShareInfoLoading } from '../selectors' -import { - uuid, - GraphTypes, - SecondaryGraphTypes } from 'utils/util' +import { uuid } from 'utils/util' interface IDisplayHeaderProps { params: any diff --git a/webapp/app/containers/Display/components/LayerItem.tsx b/webapp/app/containers/Display/components/LayerItem.tsx index 623741460..296b53db0 100644 --- a/webapp/app/containers/Display/components/LayerItem.tsx +++ b/webapp/app/containers/Display/components/LayerItem.tsx @@ -13,12 +13,12 @@ import Draggable from 'libs/react-draggable' import { GraphTypes, SecondaryGraphTypes -} from 'utils/util' +} from './util' import { GRID_ITEM_MARGIN } from '../../../globalConstants' import { IWidgetProps, RenderType } from '../../Widget/components/Widget' import Widget from '../../Widget/components/Widget/WidgetInViz' -const Resizable = require('../../../../libs/react-resizable').Resizable +const Resizable = require('libs/react-resizable').Resizable const styles = require('../Display.less') @@ -158,6 +158,7 @@ export class LayerItem extends React.PureComponent { e.stopPropagation() + console.log('dragging') const { itemId, onDragLayer } = this.props if (onDragLayer) { onDragLayer(itemId, { deltaX, deltaY }) } } @@ -475,7 +478,14 @@ export class LayerItem extends React.PureComponent> */ -import { - GraphTypes, - SecondaryGraphTypes } from 'utils/util' +import * as slide from 'assets/json/slideSettings/slide.json' +import * as chart from 'assets/json/slideSettings/chart.json' +import * as rectangle from 'assets/json/slideSettings/rectangle.json' +import * as label from 'assets/json/slideSettings/label.json' -import * as slide from './slide.json' -import * as chart from './chart.json' -import * as rectangle from './rectangle.json' -import * as label from './label.json' +export enum SecondaryGraphTypes { + Rectangle = 20, + Label = 21 +} +export enum GraphTypes { + Slide, + Chart, + Secondary +} +export enum OrderDirection { + Asc, + Desc +} -export default { +export const slideSettings = { [GraphTypes.Slide]: slide, [GraphTypes.Chart]: chart, [SecondaryGraphTypes.Rectangle]: rectangle, diff --git a/webapp/app/containers/Display/index.tsx b/webapp/app/containers/Display/index.tsx index ba2c97e7a..3b27791ef 100644 --- a/webapp/app/containers/Display/index.tsx +++ b/webapp/app/containers/Display/index.tsx @@ -295,3 +295,22 @@ export default compose( withSagaWidget, withConnect)(Display) +export interface ISlide { + config: string + id: number + index: number +} + +export interface ISlideConfig { + slideParams: ISlideParams +} + +export interface ISlideParams { + backgroundColor: [number, number, number] + backgroundImage: string + height: number + width: number + opacity: number + scaleMode: string +} + diff --git a/webapp/app/containers/Display/reducer.ts b/webapp/app/containers/Display/reducer.ts index 3739bc00c..106dbb377 100644 --- a/webapp/app/containers/Display/reducer.ts +++ b/webapp/app/containers/Display/reducer.ts @@ -22,7 +22,7 @@ import { fromJS } from 'immutable' import undoable, { includeAction } from 'redux-undo' import { ActionTypes } from './constants' -import { GraphTypes } from 'utils/util' +import { GraphTypes } from './components/util' import { LOAD_DATA_FROM_ITEM, LOAD_DATA_FROM_ITEM_SUCCESS, diff --git a/webapp/app/containers/Display/sagas.ts b/webapp/app/containers/Display/sagas.ts index 9ef438f4c..e95815a71 100644 --- a/webapp/app/containers/Display/sagas.ts +++ b/webapp/app/containers/Display/sagas.ts @@ -24,7 +24,7 @@ import { call, fork, put, all } from 'redux-saga/effects' import request from '../../utils/request' import api from '../../utils/api' import { readObjectAdapter, readListAdapter } from '../../utils/asyncAdapter' -import { getDefaultSlideParams } from '../../assets/json/slideSettings' +import { getDefaultSlideParams } from './components/util' import { errorHandler } from '../../utils/util' import { diff --git a/webapp/app/utils/util.ts b/webapp/app/utils/util.ts index 9fff59278..4bfe2fa12 100644 --- a/webapp/app/utils/util.ts +++ b/webapp/app/utils/util.ts @@ -101,22 +101,6 @@ export function getBase64 (img, callback) { reader.readAsDataURL(img) } -export enum SecondaryGraphTypes { - Rectangle = 20, - Label = 21 -} - -export enum GraphTypes { - Slide, - Chart, - Secondary -} - -export enum OrderDirection { - Asc, - Desc -} - /** * View 组件 */ diff --git a/webapp/share/containers/Display/reducer.ts b/webapp/share/containers/Display/reducer.ts index 312ab971c..c85c68ed9 100644 --- a/webapp/share/containers/Display/reducer.ts +++ b/webapp/share/containers/Display/reducer.ts @@ -20,7 +20,7 @@ import { fromJS } from 'immutable' import { ActionTypes } from './constants' -import { GraphTypes } from 'utils/util' +import { GraphTypes } from '../../../app/containers/Display/components/util' const initialState = fromJS({ title: '', From 267332ae1aa43c3c54d93a50efad7d31e5d054d5 Mon Sep 17 00:00:00 2001 From: andyfong Date: Mon, 15 Oct 2018 17:28:48 +0800 Subject: [PATCH 36/45] fix(Display): fix selector currentSelectedLayers error --- webapp/app/containers/Display/selectors.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webapp/app/containers/Display/selectors.ts b/webapp/app/containers/Display/selectors.ts index b27710176..516479898 100644 --- a/webapp/app/containers/Display/selectors.ts +++ b/webapp/app/containers/Display/selectors.ts @@ -54,9 +54,9 @@ const makeSelectCurrentLayersOperationInfo = () => createSelector( const makeSelectCurrentSelectedLayers = () => createSelector( selectDisplay, ({ present }) => { - const layersInfo = present.get('currentLayersInfo') + const layersOperationInfo = present.get('currentLayersOperationInfo') const layers = present.get('currentLayers') - return layers.filter((layer) => layersInfo[layer.id].selected) + return layers.filter((layer) => layersOperationInfo[layer.id].selected) } ) From 55f2193597717061de63895daa1e8ec135772a1b Mon Sep 17 00:00:00 2001 From: Scott Sut Date: Mon, 15 Oct 2018 19:38:16 +0800 Subject: [PATCH 37/45] fix --- webapp/app/containers/Display/Preview.tsx | 3 ++- .../Display/components/DisplayContainer.tsx | 4 +++- .../Widget/components/Workbench/ColorPanel.tsx | 12 ++++++++++-- .../Widget/components/Workbench/Dropbox.tsx | 6 +++++- .../Widget/components/Workbench/OperatingPanel.tsx | 11 ++++++++--- .../Widget/components/Workbench/SizePanel.tsx | 7 ++++++- .../Widget/components/Workbench/Workbench.less | 1 + 7 files changed, 35 insertions(+), 9 deletions(-) diff --git a/webapp/app/containers/Display/Preview.tsx b/webapp/app/containers/Display/Preview.tsx index db354eaa3..ef755bcc4 100644 --- a/webapp/app/containers/Display/Preview.tsx +++ b/webapp/app/containers/Display/Preview.tsx @@ -278,7 +278,8 @@ export class Preview extends React.Component { slideStyle = { overflow: 'visible', width: `${width * scale[0]}px`, - height: `${height * scale[1]}px` + height: `${height * scale[1]}px`, + backgroundSize: 'cover' } if (backgroundColor) { diff --git a/webapp/app/containers/Display/components/DisplayContainer.tsx b/webapp/app/containers/Display/components/DisplayContainer.tsx index 86377d4c8..259e2ce4a 100644 --- a/webapp/app/containers/Display/components/DisplayContainer.tsx +++ b/webapp/app/containers/Display/components/DisplayContainer.tsx @@ -53,6 +53,7 @@ interface IDisplayStyle { transform: string backgroundColor?: string backgroundImage?: string + backgroundSize: string } export class DisplayContainer extends React.PureComponent { @@ -88,7 +89,8 @@ export class DisplayContainer extends React.PureComponent void } @@ -61,7 +63,7 @@ export class ColorPanel extends React.PureComponent ))) + + const tabClass = classnames({ + [styles.tabs]: true, + [utilStyles.hide]: !hasTabs + }) + return (
    -
      +
        {tabs}
      diff --git a/webapp/app/containers/Widget/components/Workbench/Dropbox.tsx b/webapp/app/containers/Widget/components/Workbench/Dropbox.tsx index f92d84a50..6c3596772 100644 --- a/webapp/app/containers/Widget/components/Workbench/Dropbox.tsx +++ b/webapp/app/containers/Widget/components/Workbench/Dropbox.tsx @@ -6,7 +6,7 @@ import DropboxItem from './DropboxItem' import DropboxContent from './DropboxContent' import ColorPanel from './ColorPanel' import SizePanel from './SizePanel' -import { IChartInfo } from '../Widget' +import { IChartInfo, WidgetMode } from '../Widget' import { decodeMetricName } from '../util' const Popover = require('antd/lib/popover') const Icon = require('antd/lib/icon') @@ -56,6 +56,7 @@ interface IDropboxProps { type: DropboxType value: object items: IDataParamSource[] + mode: WidgetMode dragged: IDataParamSource panelList: IDataParamSource[] dimetionsCount: number @@ -258,6 +259,7 @@ export class Dropbox extends React.PureComponent type, value, panelList, + mode, dragged, dimetionsCount, metricsCount, @@ -307,6 +309,7 @@ export class Dropbox extends React.PureComponent ) @@ -316,6 +319,7 @@ export class Dropbox extends React.PureComponent ) diff --git a/webapp/app/containers/Widget/components/Workbench/OperatingPanel.tsx b/webapp/app/containers/Widget/components/Workbench/OperatingPanel.tsx index 45d62aca2..ee011bd35 100644 --- a/webapp/app/containers/Widget/components/Workbench/OperatingPanel.tsx +++ b/webapp/app/containers/Widget/components/Workbench/OperatingPanel.tsx @@ -459,7 +459,7 @@ export class OperatingPanel extends React.Component { if (config) { const colorItems = specificParams.color.items - const actingOnItemIndex = colorItems.findIndex((i) => i.config.actOn === config['actOn']) + const actingOnItemIndex = colorItems.findIndex((i) => i.config.actOn === config['actOn'] && i.name !== item.name) if (actingOnItemIndex >= 0) { specificParams.color.items = [ ...colorItems.slice(0, actingOnItemIndex), @@ -1007,6 +1007,7 @@ export class OperatingPanel extends React.Component -
      +
      - {mode === 'pivot' && showColsAndRows ? ' 使用维度' : ' 使用行列'} + {showColsAndRows ? ' 使用维度' : ' 使用行列'}
      行列切换 diff --git a/webapp/app/containers/Widget/components/Workbench/SizePanel.tsx b/webapp/app/containers/Widget/components/Workbench/SizePanel.tsx index e6d8dd8e4..633b8c299 100644 --- a/webapp/app/containers/Widget/components/Workbench/SizePanel.tsx +++ b/webapp/app/containers/Widget/components/Workbench/SizePanel.tsx @@ -7,10 +7,12 @@ const Tabs = require('antd/lib/tabs') const TabPane = Tabs.TabPane const Slider = require('antd/lib/slider') const styles = require('./Workbench.less') +const utilStyles = require('../../../../assets/less/util.less') interface ISizePanelProps { list: IDataParamSource[] value: object + hasTabs: boolean onValueChange: (key: string, value: string) => void } @@ -62,8 +64,9 @@ export class SizePanel extends React.PureComponent )].concat(list.map((l) => ( @@ -73,12 +76,14 @@ export class SizePanel extends React.PureComponent ))) + return (
      {tabPanes} diff --git a/webapp/app/containers/Widget/components/Workbench/Workbench.less b/webapp/app/containers/Widget/components/Workbench/Workbench.less index ca7ec64c3..07f63196b 100644 --- a/webapp/app/containers/Widget/components/Workbench/Workbench.less +++ b/webapp/app/containers/Widget/components/Workbench/Workbench.less @@ -790,5 +790,6 @@ } .sizePanel { + min-width: 120px; max-width: 256px; } From bcc1c75a8b7f8fee6656b564f753bb540714cf10 Mon Sep 17 00:00:00 2001 From: Fuying <1165234947@qq.com> Date: Mon, 15 Oct 2018 21:21:41 +0800 Subject: [PATCH 38/45] =?UTF-8?q?widget=E7=BC=96=E8=BE=91=E5=99=A8=20?= =?UTF-8?q?=E8=A7=86=E5=9B=BE=E9=A9=B1=E5=8A=A8=E6=A8=A1=E5=BC=8F=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=BC=8F=E6=96=97=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Workbench/ConfigSections/LabelSection.tsx | 50 ++- .../Workbench/ConfigSections/SpecSection.tsx | 68 +++- .../containers/Widget/config/chart/funnel.ts | 53 ++++ .../containers/Widget/config/chart/index.tsx | 4 +- .../containers/Widget/render/chart/funnel.ts | 293 +++++++++--------- .../containers/Widget/render/chart/index.ts | 2 +- .../app/containers/Widget/render/chart/pie.ts | 2 +- .../containers/Widget/render/chart/util.ts | 6 +- webapp/app/globalConstants.ts | 19 +- 9 files changed, 336 insertions(+), 161 deletions(-) create mode 100644 webapp/app/containers/Widget/config/chart/funnel.ts diff --git a/webapp/app/containers/Widget/components/Workbench/ConfigSections/LabelSection.tsx b/webapp/app/containers/Widget/components/Workbench/ConfigSections/LabelSection.tsx index 2fb8a2ea9..82586b5da 100644 --- a/webapp/app/containers/Widget/components/Workbench/ConfigSections/LabelSection.tsx +++ b/webapp/app/containers/Widget/components/Workbench/ConfigSections/LabelSection.tsx @@ -5,16 +5,24 @@ const Checkbox = require('antd/lib/checkbox') const Select = require('antd/lib/select') const Option = Select.Option import ColorPicker from '../../../../../components/ColorPicker' -import { PIVOT_CHART_FONT_FAMILIES, PIVOT_CHART_LINE_STYLES, PIVOT_CHART_FONT_SIZES, CHART_LABEL_POSITIONS, CHART_PIE_LABEL_POSITIONS } from '../../../../../globalConstants' +import { + PIVOT_CHART_FONT_FAMILIES, + PIVOT_CHART_LINE_STYLES, + PIVOT_CHART_FONT_SIZES, + CHART_LABEL_POSITIONS, + CHART_PIE_LABEL_POSITIONS, + CHART_FUNNEL_LABEL_POSITIONS +} from '../../../../../globalConstants' const styles = require('../Workbench.less') export interface ILabelConfig { showLabel: boolean - labelPosition: string + labelPosition?: string labelFontFamily: string labelFontSize: string labelColor: string pieLabelPosition?: string + funnelLabelPosition?: string } interface ILabelSectionProps { @@ -30,6 +38,7 @@ export class LabelSection extends React.PureComponent { } private selectChange = (prop) => (value) => { + console.log('va', prop) this.props.onChange(prop, value) } @@ -46,16 +55,33 @@ export class LabelSection extends React.PureComponent { labelFontFamily, labelFontSize, labelColor, - pieLabelPosition + pieLabelPosition, + funnelLabelPosition } = config - const positions = name === 'pie' - ? CHART_PIE_LABEL_POSITIONS.map((p) => ( - - )) - : CHART_LABEL_POSITIONS.map((p) => ( - - )) + let positionValues + let positionName + let positionChangeName + switch (name) { + case 'pie': + positionValues = CHART_PIE_LABEL_POSITIONS + positionName = pieLabelPosition + positionChangeName = 'pieLabelPosition' + break + case 'funnel': + positionValues = CHART_FUNNEL_LABEL_POSITIONS + positionName = funnelLabelPosition + positionChangeName = 'funnelLabelPosition' + break + default: + positionValues = CHART_LABEL_POSITIONS + positionName = labelPosition + positionChangeName = 'labelPosition' + break + } + const positions = positionValues.map((p) => ( + + )) const fontFamilies = PIVOT_CHART_FONT_FAMILIES.map((f) => ( )) @@ -81,8 +107,8 @@ export class LabelSection extends React.PureComponent { diff --git a/webapp/app/containers/Widget/components/Workbench/ConfigSections/SpecSection.tsx b/webapp/app/containers/Widget/components/Workbench/ConfigSections/SpecSection.tsx index d02a69fe6..8d9bdbf4c 100644 --- a/webapp/app/containers/Widget/components/Workbench/ConfigSections/SpecSection.tsx +++ b/webapp/app/containers/Widget/components/Workbench/ConfigSections/SpecSection.tsx @@ -2,16 +2,22 @@ import * as React from 'react' const Row = require('antd/lib/row') const Col = require('antd/lib/col') const Checkbox = require('antd/lib/checkbox') +const Radio = require('antd/lib/radio') +const RadioGroup = Radio.Group const Select = require('antd/lib/select') const Option = Select.Option const InputNumber = require('antd/lib/input-number') const styles = require('../Workbench.less') +import { CHART_SORT_MODES, CHART_ALIGNMENT_MODES } from '../../../../../globalConstants' export interface ISpecConfig { smooth?: boolean step?: boolean roseType?: boolean circle?: boolean + sortMode?: string + alignmentMode?: string + gapNumber?: number } interface ISpecSectionProps { @@ -29,14 +35,29 @@ export class SpecSection extends React.PureComponent { this.props.onChange(prop, value) } + private inputNumberChange = (prop) => (value) => { + this.props.onChange(prop, value) + } + public render () { const { title, config } = this.props const { roseType, - circle + circle, + sortMode, + alignmentMode, + gapNumber } = config + const sortModes = CHART_SORT_MODES.map((f) => ( + + )) + + const alignmentModes = CHART_ALIGNMENT_MODES.map((f) => ( + + )) + let renderHtml switch (title) { case '饼图': @@ -66,6 +87,51 @@ export class SpecSection extends React.PureComponent {
      ) break + case '漏斗图': + renderHtml = ( +
      +

      {title}

      +
      + +
    排序 + + + + 间距 + + + + + + 对齐 + + + + + + + ) + break default: renderHtml = (
    diff --git a/webapp/app/containers/Widget/config/chart/funnel.ts b/webapp/app/containers/Widget/config/chart/funnel.ts new file mode 100644 index 000000000..743f2ea31 --- /dev/null +++ b/webapp/app/containers/Widget/config/chart/funnel.ts @@ -0,0 +1,53 @@ +import { + PIVOT_CHART_FONT_FAMILIES, + PIVOT_DEFAULT_FONT_COLOR, + CHART_FUNNEL_LABEL_POSITIONS, + CHART_SORT_MODES, + CHART_ALIGNMENT_MODES +} from '../../../../globalConstants' + +import { IChartInfo } from '../../../../containers/Widget/components/Widget' +const funnel: IChartInfo = { + id: 6, + name: 'funnel', + title: '漏斗图', + icon: 'icon-iconloudoutu', + coordinate: 'cartesian', + requireDimetions: [0, 9999], + requireMetrics: 1, + dimetionAxis: 'col', + data: { + color: { + title: '颜色', + type: 'category' + } + // tip: { + // title: '提示信息', + // type: 'value' + // } + }, + style: { + label: { + showLabel: false, + funnelLabelPosition: CHART_FUNNEL_LABEL_POSITIONS[0].value, + labelFontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + labelFontSize: '12', + labelColor: PIVOT_DEFAULT_FONT_COLOR + }, + legend: { + showLegend: true, + legendPosition: 'right', + selectAll: true, + fontFamily: PIVOT_CHART_FONT_FAMILIES[0].value, + fontSize: '12', + color: PIVOT_DEFAULT_FONT_COLOR + }, + spec: { + sortMode: CHART_SORT_MODES[0].value, + alignmentMode: CHART_ALIGNMENT_MODES[0].value, + gapNumber: 0 + } + } +} + +export default funnel diff --git a/webapp/app/containers/Widget/config/chart/index.tsx b/webapp/app/containers/Widget/config/chart/index.tsx index f4f30de6a..7cabbb01e 100644 --- a/webapp/app/containers/Widget/config/chart/index.tsx +++ b/webapp/app/containers/Widget/config/chart/index.tsx @@ -25,13 +25,15 @@ import line from './line' import bar from './bar' import scatter from './scatter' import pie from './pie' +import funnel from './funnel' const widgetlibs: IChartInfo[] = [ table, line, bar, scatter, - pie + pie, + funnel ] export default widgetlibs diff --git a/webapp/app/containers/Widget/render/chart/funnel.ts b/webapp/app/containers/Widget/render/chart/funnel.ts index 68c38ffc9..5e1dd27c3 100644 --- a/webapp/app/containers/Widget/render/chart/funnel.ts +++ b/webapp/app/containers/Widget/render/chart/funnel.ts @@ -18,172 +18,179 @@ * >> */ -/* - * Funnel chart options generator - */ +import { IChartProps } from '../../components/Chart' +import { + decodeMetricName, + getChartTooltipLabel, + getTextWidth +} from '../../components/util' +import { + getLegendOption, + getLabelOption, + getGridPositions +} from './util' -export default function (dataSource, flatInfo, chartParams, interactIndex) { +export default function (chartProps: IChartProps) { const { - title, - value, - min, - max, - gap, - hasLegend, - legendSelected, - legendPosition, - toolbox, - top, - left, width, height, - minSize, - maxSize - } = chartParams + data, + cols, + metrics, + chartStyles, + color, + tip + } = chartProps - let metricOptions - let minOption - let maxOption - let gapOption - let legendOptions - let toolboxOptions - - // legend - if (hasLegend && hasLegend.length) { - let orient - let positions + const { + label, + legend, + spec, + toolbox + } = chartStyles - switch (legendPosition) { - case 'right': - orient = { orient: 'vertical' } - positions = { right: 8, top: 40, bottom: 16 } - break - case 'bottom': - orient = { orient: 'horizontal' } - positions = { bottom: 16, left: 8, right: 8 } - break - default: - orient = { orient: 'horizontal' } - positions = { top: 3, left: 8, right: 96 } - break - } + const { + legendPosition, + fontSize + } = legend - const selected = legendSelected === 'unselectAll' - ? { - selected: dataSource.reduce((obj, d) => ({ ...obj, [d[title]]: false }), {}) - } : null + const { + alignmentMode, + gapNumber, + sortMode + } = spec - legendOptions = { - legend: { - data: dataSource.map((d) => d[title]), - type: 'scroll', - ...orient, - ...positions, - ...selected - } - } + const labelOption = { + label: getLabelOption('funnel', label) } - // series 数据项 - const metricArr = [] + let seriesObj = {} + const seriesArr = [] + let legendData = [] + metrics.forEach((m) => { + const decodedMetricName = decodeMetricName(m.name) + if (cols.length || color.items.length) { + const groupColumns = color.items.map((c) => c.name).concat(cols) + .reduce((distinctColumns, col) => { + if (!distinctColumns.includes(col)) { + distinctColumns.push(col) + } + return distinctColumns + }, []) + const grouped = data.reduce((obj, val) => { + const groupingKey = groupColumns + .reduce((keyArr, col) => keyArr.concat(val[col]), []) + .join(String.fromCharCode(0)) + if (!obj[groupingKey]) { + obj[groupingKey] = [] + } + obj[groupingKey].push(val) + return obj + }, {}) - minOption = min && { - min - } + const seriesData = [] + Object.entries(grouped).forEach(([key, value]) => { + const legendStr = key.replace(String.fromCharCode(0), ' ') + legendData.push(legendStr) + value.forEach((v) => { + const obj = { + name: legendStr, + value: v[`${m.agg}(${decodedMetricName})`] + } + seriesData.push(obj) + }) + }) - maxOption = max && { - max - } + const maxValue = Math.max(...data.map((s) => s[`${m.agg}(${decodedMetricName})`])) + const minValue = Math.min(...data.map((s) => s[`${m.agg}(${decodedMetricName})`])) - gapOption = gap && { - gap - } + const funnelLeft = 56 + Math.max(...legendData.map((s) => getTextWidth(s, '', `${fontSize}px`))) + const leftValue = legendPosition === 'left' + ? width * 0.15 + funnelLeft + : width * 0.15 + const topValue = legendPosition === 'top' + ? height * 0.15 + 32 + : height * 0.15 - const serieObj = { - name: '数据', - type: 'funnel', - top: `${top}%`, - left: `${left}%`, - width: `${width}%`, - height: `${height}%`, - minSize: `${minSize}%`, - maxSize: `${maxSize}%`, - sort: 'descending', - label: { - normal: { - show: true, - position: 'inside' - }, - emphasis: { - textStyle: { - fontSize: 20 - } - } - }, - labelLine: { - normal: { - length: 10, - lineStyle: { - width: 1, - type: 'solid' - } - } - }, - itemStyle: { - normal: { - borderColor: '#fff', - borderWidth: 1, - opacity: interactIndex === undefined ? 1 : 0.25 - } - }, - data: dataSource.map((d, index) => { - if (index === interactIndex) { - return { - name: d[title], - value: Number(d[value]), - itemStyle: { - normal: { - opacity: 1 - } + const heightValue = legendPosition === 'left' || legendPosition === 'right' + ? height - height * 0.15 * 2 + : height - 32 - height * 0.15 * 2 + const widthValue = legendPosition === 'left' || legendPosition === 'right' + ? width - funnelLeft - width * 0.15 * 2 + : width - width * 0.15 * 2 + + let colorArr = [] + if (color.items.length) { + const colorvaluesObj = color.items[0].config.values + for (const keys in colorvaluesObj) { + if (colorvaluesObj.hasOwnProperty(keys)) { + colorArr.push(colorvaluesObj[keys]) } } } else { - return { - name: d[title], - value: Number(d[value]) - } + colorArr = ['#509af2'] } - }), - ...minOption, - ...maxOption, - ...gapOption - } - - metricArr.push(serieObj) - metricOptions = { - series: metricArr - } - // toolbox - toolboxOptions = toolbox && toolbox.length - ? { - toolbox: { - feature: { - dataView: {readOnly: false}, - restore: {}, - saveAsImage: {} + seriesObj = { + name: '', + type: 'funnel', + min: minValue, + max: maxValue, + sort: sortMode, + funnelAlign: alignmentMode, + gap: gapNumber || 0, + left: leftValue, + top: topValue, + width: widthValue, + height: heightValue, + color: colorArr, + data: seriesData, + itemStyle: { + emphasis: { + shadowBlur: 10, + shadowOffsetX: 0, + shadowColor: 'rgba(0, 0, 0, 0.5)' + } }, - right: 8 + ...labelOption } - } : null + } else { + legendData = [] + seriesObj = { + name: '', + type: 'funnel', + sort: sortMode, + funnelAlign: alignmentMode, + gap: gapNumber || 0, + left: width * 0.15, + top: height * 0.15, + width: width - width * 0.15 * 2, + height: height - height * 0.15 * 2, + data: data.map((d, index) => { + return { + name: decodedMetricName, + value: d[`${m.agg}(${decodedMetricName})`] + } + }), + itemStyle: { + emphasis: { + shadowBlur: 10, + shadowOffsetX: 0, + shadowColor: 'rgba(0, 0, 0, 0.5)' + } + }, + ...labelOption + } + } + seriesArr.push(seriesObj) + }) return { - calculable: true, - tooltip: { - trigger: 'item' + tooltip : { + trigger: 'item', + formatter: '{b}
    {c} ({d}%)' }, - ...metricOptions, - ...legendOptions, - ...toolboxOptions + legend: getLegendOption(legend, legendData), + series: seriesArr } } diff --git a/webapp/app/containers/Widget/render/chart/index.ts b/webapp/app/containers/Widget/render/chart/index.ts index cde2f7b7a..cdb3ead81 100644 --- a/webapp/app/containers/Widget/render/chart/index.ts +++ b/webapp/app/containers/Widget/render/chart/index.ts @@ -36,8 +36,8 @@ export default function (type, chartProps: IChartProps): EChartOption { case 'bar': return bar(chartProps) case 'scatter': return scatter(chartProps) case 'pie': return pie(chartProps) + case 'funnel': return funnel(chartProps) // case 'area': return area(chartProps) - // case 'funnel': return funnel(chartProps) // case 'map': return map(chartProps) // case 'radar': return radar(chartProps) // case 'wordCloud': return wordCloud(chartProps) diff --git a/webapp/app/containers/Widget/render/chart/pie.ts b/webapp/app/containers/Widget/render/chart/pie.ts index 17c292249..f392ff106 100644 --- a/webapp/app/containers/Widget/render/chart/pie.ts +++ b/webapp/app/containers/Widget/render/chart/pie.ts @@ -159,7 +159,7 @@ export default function (chartProps: IChartProps) { } else { legendData = [] seriesObj = { - name: '', + name: decodedMetricName, type: 'pie', avoidLabelOverlap: false, center: [width / 2, height / 2], diff --git a/webapp/app/containers/Widget/render/chart/util.ts b/webapp/app/containers/Widget/render/chart/util.ts index 117d2ba93..286410927 100644 --- a/webapp/app/containers/Widget/render/chart/util.ts +++ b/webapp/app/containers/Widget/render/chart/util.ts @@ -164,7 +164,8 @@ export function getLabelOption (type: string, labelConfig: ILabelConfig, emphasi labelFontFamily, labelFontSize, labelColor, - pieLabelPosition + pieLabelPosition, + funnelLabelPosition } = labelConfig let positionVale @@ -172,6 +173,9 @@ export function getLabelOption (type: string, labelConfig: ILabelConfig, emphasi case 'pie': positionVale = pieLabelPosition break + case 'funnel': + positionVale = funnelLabelPosition + break default: positionVale = labelPosition break diff --git a/webapp/app/globalConstants.ts b/webapp/app/globalConstants.ts index 6c2126f39..3fcea2e05 100644 --- a/webapp/app/globalConstants.ts +++ b/webapp/app/globalConstants.ts @@ -92,11 +92,28 @@ export const CHART_LABEL_POSITIONS = [ { name: '内右上', value: 'insideTopRight' }, { name: '内右下', value: 'insideBottomRight' } ] -export const CHART_PIE_LABEL_POSITIONS = [ +export const CHART_PIE_LABEL_POSITIONS = [ { name: '外侧', value: 'outside'}, { name: '内部', value: 'inside'}, { name: '中心', value: 'center'} ] +export const CHART_FUNNEL_LABEL_POSITIONS = [ + { name: '左侧', value: 'left'}, + { name: '右侧', value: 'right'}, + { name: '内部', value: 'inside'} +] + +export const CHART_SORT_MODES = [ + { name: '降序', value: 'descending'}, + { name: '升序', value: 'ascending'}, + { name: '无', value: 'none'} +] + +export const CHART_ALIGNMENT_MODES = [ + { name: '居中', value: 'center'}, + { name: '居左', value: 'left'}, + { name: '居右', value: 'right'} +] export const CHART_LEGEND_POSITIONS = [ { name: '右', value: 'right' }, From 3701f23e055c0a96677e281f9390ab664c34b494 Mon Sep 17 00:00:00 2001 From: Fuying <1165234947@qq.com> Date: Tue, 16 Oct 2018 11:26:07 +0800 Subject: [PATCH 39/45] fix --- webapp/app/containers/Widget/components/util.ts | 6 ++++-- .../app/containers/Widget/render/chart/bar.ts | 2 +- .../containers/Widget/render/chart/funnel.ts | 17 ++++++++--------- .../app/containers/Widget/render/chart/line.ts | 2 +- .../app/containers/Widget/render/chart/pie.ts | 1 - .../containers/Widget/render/chart/scatter.ts | 2 +- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/webapp/app/containers/Widget/components/util.ts b/webapp/app/containers/Widget/components/util.ts index f03f6cfd9..f225cf460 100644 --- a/webapp/app/containers/Widget/components/util.ts +++ b/webapp/app/containers/Widget/components/util.ts @@ -567,7 +567,7 @@ export function getPivotTooltipLabel (seriesData, cols, rows, metrics, color, la } } -export function getChartTooltipLabel (seriesData, options) { +export function getChartTooltipLabel (type, seriesData, options) { const { cols, metrics, color, size, scatterXAxis, tip } = options let dimetionColumns = cols let metricColumns = [...metrics] @@ -600,7 +600,9 @@ export function getChartTooltipLabel (seriesData, options) { return function (params) { const { seriesIndex, dataIndex } = params - const record = seriesData[seriesIndex][dataIndex] + const record = type === 'funnel' + ? seriesData[dataIndex] + : seriesData[seriesIndex][dataIndex] return dimetionColumns .map((dc) => { const value = record diff --git a/webapp/app/containers/Widget/render/chart/bar.ts b/webapp/app/containers/Widget/render/chart/bar.ts index d1facbdf0..cfa05096f 100644 --- a/webapp/app/containers/Widget/render/chart/bar.ts +++ b/webapp/app/containers/Widget/render/chart/bar.ts @@ -205,7 +205,7 @@ export default function (chartProps: IChartProps) { yAxis: getMetricAxisOption(yAxis, yAxisSplitLineConfig, metrics.map((m) => decodeMetricName(m.name)).join(` / `)), series, tooltip: { - formatter: getChartTooltipLabel(seriesData, { cols, metrics, color, tip }) + formatter: getChartTooltipLabel('bar', seriesData, { cols, metrics, color, tip }) }, ...legendOption, grid: getGridPositions(legend, seriesNames) diff --git a/webapp/app/containers/Widget/render/chart/funnel.ts b/webapp/app/containers/Widget/render/chart/funnel.ts index 5e1dd27c3..b0e3a514c 100644 --- a/webapp/app/containers/Widget/render/chart/funnel.ts +++ b/webapp/app/containers/Widget/render/chart/funnel.ts @@ -109,12 +109,12 @@ export default function (chartProps: IChartProps) { ? width * 0.15 + funnelLeft : width * 0.15 const topValue = legendPosition === 'top' - ? height * 0.15 + 32 - : height * 0.15 + ? height * 0.12 + 32 + : height * 0.12 const heightValue = legendPosition === 'left' || legendPosition === 'right' - ? height - height * 0.15 * 2 - : height - 32 - height * 0.15 * 2 + ? height - height * 0.12 * 2 + : height - 32 - height * 0.12 * 2 const widthValue = legendPosition === 'left' || legendPosition === 'right' ? width - funnelLeft - width * 0.15 * 2 : width - width * 0.15 * 2 @@ -163,9 +163,9 @@ export default function (chartProps: IChartProps) { funnelAlign: alignmentMode, gap: gapNumber || 0, left: width * 0.15, - top: height * 0.15, + top: height * 0.12, width: width - width * 0.15 * 2, - height: height - height * 0.15 * 2, + height: height - height * 0.12 * 2, data: data.map((d, index) => { return { name: decodedMetricName, @@ -186,9 +186,8 @@ export default function (chartProps: IChartProps) { }) return { - tooltip : { - trigger: 'item', - formatter: '{b}
    {c} ({d}%)' + tooltip: { + formatter: getChartTooltipLabel('funnel', data, { cols, metrics, color, tip }) }, legend: getLegendOption(legend, legendData), series: seriesArr diff --git a/webapp/app/containers/Widget/render/chart/line.ts b/webapp/app/containers/Widget/render/chart/line.ts index 7a5d93acb..a96783b7e 100644 --- a/webapp/app/containers/Widget/render/chart/line.ts +++ b/webapp/app/containers/Widget/render/chart/line.ts @@ -213,7 +213,7 @@ export default function (chartProps: IChartProps) { yAxis: getMetricAxisOption(yAxis, yAxisSplitLineConfig, metrics.map((m) => decodeMetricName(m.name)).join(` / `)), series, tooltip: { - formatter: getChartTooltipLabel(seriesData, { cols, metrics, color, tip }) + formatter: getChartTooltipLabel('line', seriesData, { cols, metrics, color, tip }) }, ...legendOption, grid: getGridPositions(legend, seriesNames) diff --git a/webapp/app/containers/Widget/render/chart/pie.ts b/webapp/app/containers/Widget/render/chart/pie.ts index f392ff106..fd2259778 100644 --- a/webapp/app/containers/Widget/render/chart/pie.ts +++ b/webapp/app/containers/Widget/render/chart/pie.ts @@ -21,7 +21,6 @@ import { IChartProps } from '../../components/Chart' import { decodeMetricName, - getChartTooltipLabel, getTextWidth } from '../../components/util' import { diff --git a/webapp/app/containers/Widget/render/chart/scatter.ts b/webapp/app/containers/Widget/render/chart/scatter.ts index 23f4d3dbc..523bd99d5 100644 --- a/webapp/app/containers/Widget/render/chart/scatter.ts +++ b/webapp/app/containers/Widget/render/chart/scatter.ts @@ -217,7 +217,7 @@ export default function (chartProps: IChartProps) { yAxis: getMetricAxisOption(yAxis, yAxisSplitLineConfig, decodeMetricName(metrics[1].name)), series, tooltip: { - formatter: getChartTooltipLabel(seriesData, { cols, metrics, color, tip }) + formatter: getChartTooltipLabel('scatter', seriesData, { cols, metrics, color, tip }) }, ...legendOption, grid: getGridPositions(legend, seriesNames) From c3f5fce32af301bc2ba82cd7e1e17ea93994ac7c Mon Sep 17 00:00:00 2001 From: Scott Sut Date: Tue, 16 Oct 2018 14:21:59 +0800 Subject: [PATCH 40/45] fix --- webapp/app/containers/Dashboard/index.tsx | 3 ++- .../Widget/components/Workbench/ColorPanel.tsx | 18 +++++++++--------- .../Workbench/ConfigSections/LabelSection.tsx | 1 - .../Widget/components/Workbench/Dropbox.tsx | 2 +- .../components/Workbench/OperatingPanel.tsx | 12 +++++++----- .../app/containers/Widget/render/chart/bar.ts | 6 ++++-- .../app/containers/Widget/render/chart/line.ts | 6 ++++-- 7 files changed, 27 insertions(+), 21 deletions(-) diff --git a/webapp/app/containers/Dashboard/index.tsx b/webapp/app/containers/Dashboard/index.tsx index 61e3345ae..29b6336a6 100644 --- a/webapp/app/containers/Dashboard/index.tsx +++ b/webapp/app/containers/Dashboard/index.tsx @@ -583,7 +583,8 @@ export class Dashboard extends React.Component { - this.props.router.goBack() + const { router, params } = this.props + router.replace(`/project/${params.pid}/vizs`) } public render () { diff --git a/webapp/app/containers/Widget/components/Workbench/ColorPanel.tsx b/webapp/app/containers/Widget/components/Workbench/ColorPanel.tsx index ed2151619..8855620b7 100644 --- a/webapp/app/containers/Widget/components/Workbench/ColorPanel.tsx +++ b/webapp/app/containers/Widget/components/Workbench/ColorPanel.tsx @@ -11,7 +11,7 @@ const utilStyles = require('../../../../assets/less/util.less') interface IColorPanelProps { list: IDataParamSource[] value: object - hasTabs: boolean + showAll: boolean onValueChange: (key: string, value: string) => void } @@ -63,12 +63,17 @@ export class ColorPanel extends React.PureComponent @@ -84,14 +89,9 @@ export class ColorPanel extends React.PureComponent ))) - const tabClass = classnames({ - [styles.tabs]: true, - [utilStyles.hide]: !hasTabs - }) - return (
    -
      +
        {tabs}
      diff --git a/webapp/app/containers/Widget/components/Workbench/ConfigSections/LabelSection.tsx b/webapp/app/containers/Widget/components/Workbench/ConfigSections/LabelSection.tsx index 82586b5da..8ac8a2623 100644 --- a/webapp/app/containers/Widget/components/Workbench/ConfigSections/LabelSection.tsx +++ b/webapp/app/containers/Widget/components/Workbench/ConfigSections/LabelSection.tsx @@ -38,7 +38,6 @@ export class LabelSection extends React.PureComponent { } private selectChange = (prop) => (value) => { - console.log('va', prop) this.props.onChange(prop, value) } diff --git a/webapp/app/containers/Widget/components/Workbench/Dropbox.tsx b/webapp/app/containers/Widget/components/Workbench/Dropbox.tsx index 6c3596772..7e9df3fc9 100644 --- a/webapp/app/containers/Widget/components/Workbench/Dropbox.tsx +++ b/webapp/app/containers/Widget/components/Workbench/Dropbox.tsx @@ -309,7 +309,7 @@ export class Dropbox extends React.PureComponent ) diff --git a/webapp/app/containers/Widget/components/Workbench/OperatingPanel.tsx b/webapp/app/containers/Widget/components/Workbench/OperatingPanel.tsx index ee011bd35..4233b5a9f 100644 --- a/webapp/app/containers/Widget/components/Workbench/OperatingPanel.tsx +++ b/webapp/app/containers/Widget/components/Workbench/OperatingPanel.tsx @@ -192,7 +192,7 @@ export class OperatingPanel extends React.Component { - const { commonParams, specificParams, styleParams } = this.state + const { mode, commonParams, specificParams, styleParams } = this.state const { metrics } = commonParams const dataConfig = {} const styleConfig = {} @@ -206,8 +206,10 @@ export class OperatingPanel extends React.Component { - props[i.name] = specificParams[key].value[i.name] || specificParams[key].value['all'] + ...metrics.items.reduce((props, item, i) => { + props[item.name] = mode === 'pivot' + ? specificParams[key].value[item.name] || specificParams[key].value['all'] + : specificParams[key].value[item.name] || defaultThemeColors[i] return props }, {}) } @@ -773,11 +775,11 @@ export class OperatingPanel extends React.Component (key: string, value: string | number) => { - const { commonParams, specificParams, styleParams } = this.state + const { mode, commonParams, specificParams, styleParams } = this.state const { color, size } = specificParams switch (name) { case 'color': - if (key === 'all') { + if (key === 'all' && mode === 'pivot') { Object.keys(color.value).forEach((k) => { color.value[k] = value }) diff --git a/webapp/app/containers/Widget/render/chart/bar.ts b/webapp/app/containers/Widget/render/chart/bar.ts index cfa05096f..e939877d0 100644 --- a/webapp/app/containers/Widget/render/chart/bar.ts +++ b/webapp/app/containers/Widget/render/chart/bar.ts @@ -33,6 +33,8 @@ import { makeGrouped, distinctXaxis } from './util' +const defaultTheme = require('../../../../assets/json/echartsThemes/default.project.json') +const defaultThemeColors = defaultTheme.theme.color export default function (chartProps: IChartProps) { const { @@ -78,7 +80,7 @@ export default function (chartProps: IChartProps) { const series = [] const seriesData = [] - metrics.forEach((m) => { + metrics.forEach((m, i) => { const decodedMetricName = decodeMetricName(m.name) const localeMetricName = `[${getAggregatorLocale(m.agg)}] ${decodedMetricName}` if (color.items.length) { @@ -147,7 +149,7 @@ export default function (chartProps: IChartProps) { itemStyle: { normal: { // opacity: interactIndex === undefined ? 1 : 0.25 - color: color.value[m.name] || color.value['all'] + color: color.value[m.name] || defaultThemeColors[i] } }, ...labelOption diff --git a/webapp/app/containers/Widget/render/chart/line.ts b/webapp/app/containers/Widget/render/chart/line.ts index a96783b7e..228ec9955 100644 --- a/webapp/app/containers/Widget/render/chart/line.ts +++ b/webapp/app/containers/Widget/render/chart/line.ts @@ -33,6 +33,8 @@ import { makeGrouped, distinctXaxis } from './util' +const defaultTheme = require('../../../../assets/json/echartsThemes/default.project.json') +const defaultThemeColors = defaultTheme.theme.color export default function (chartProps: IChartProps) { const { @@ -83,7 +85,7 @@ export default function (chartProps: IChartProps) { const series = [] const seriesData = [] - metrics.forEach((m) => { + metrics.forEach((m, i) => { const decodedMetricName = decodeMetricName(m.name) const localeMetricName = `[${getAggregatorLocale(m.agg)}] ${decodedMetricName}` if (color.items.length) { @@ -153,7 +155,7 @@ export default function (chartProps: IChartProps) { itemStyle: { normal: { // opacity: interactIndex === undefined ? 1 : 0.25 - color: color.value[m.name] || color.value['all'] + color: color.value[m.name] || defaultThemeColors[i] } }, smooth, From e9d3e96532ba9db8c3ae21bcc682651bc899e43b Mon Sep 17 00:00:00 2001 From: Scott Sut Date: Tue, 16 Oct 2018 15:31:43 +0800 Subject: [PATCH 41/45] fix --- webapp/app/containers/Dashboard/index.tsx | 2 -- .../containers/Widget/components/Workbench/OperatingPanel.tsx | 2 +- webapp/libs/react-draggable/index.ts | 2 -- 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/webapp/app/containers/Dashboard/index.tsx b/webapp/app/containers/Dashboard/index.tsx index 29b6336a6..064a577a3 100644 --- a/webapp/app/containers/Dashboard/index.tsx +++ b/webapp/app/containers/Dashboard/index.tsx @@ -208,7 +208,6 @@ export class Dashboard extends React.Component} key={item.id} title={dashboardAction} /> }) - console.log({currentProject}) const AdminIcon = ModulePermission(currentProject, 'viz', true)(Icon) let portalDec = '' diff --git a/webapp/app/containers/Widget/components/Workbench/OperatingPanel.tsx b/webapp/app/containers/Widget/components/Workbench/OperatingPanel.tsx index 4233b5a9f..399d7ce67 100644 --- a/webapp/app/containers/Widget/components/Workbench/OperatingPanel.tsx +++ b/webapp/app/containers/Widget/components/Workbench/OperatingPanel.tsx @@ -1298,7 +1298,7 @@ export class OperatingPanel extends React.Component - 视图驱动 + 图表驱动
      diff --git a/webapp/libs/react-draggable/index.ts b/webapp/libs/react-draggable/index.ts index efee1a543..4aa33e7c7 100644 --- a/webapp/libs/react-draggable/index.ts +++ b/webapp/libs/react-draggable/index.ts @@ -6,8 +6,6 @@ import DraggableCore from './lib/DraggableCore' // See https://github.com/mzabriskie/react-draggable/pull/254 // and https://github.com/mzabriskie/react-draggable/issues/266 -console.log(Draggable, DraggableCore) - export default Draggable export { Draggable, From e65914b3cdfc39b6aa25000f932a5dd382bbff3f Mon Sep 17 00:00:00 2001 From: shanmengm Date: Mon, 15 Oct 2018 10:28:59 +0800 Subject: [PATCH 42/45] fix bug --- server/pom.xml | 11 +++++++---- .../main/java/edp/core/common/jdbc/ESDataSource.java | 8 +++++--- .../java/edp/core/common/jdbc/JdbcDataSource.java | 6 +++--- server/src/main/java/edp/core/enums/DataTypeEnum.java | 2 +- .../java/edp/davinci/core/utils/SqlParseUtils.java | 6 ++++-- 5 files changed, 20 insertions(+), 13 deletions(-) diff --git a/server/pom.xml b/server/pom.xml index afc92b869..16f09c342 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -15,8 +15,12 @@ + UTF-8 + UTF-8 + 1.8 true - 5.3.2 + 6.4.2 + 5.3.2 @@ -171,13 +175,12 @@ org.elasticsearch.client transport - ${elasticsearch-sql.version} + ${elasticsearch.version} - org.elasticsearch elasticsearch - ${elasticsearch-sql.version} + ${elasticsearch.version} diff --git a/server/src/main/java/edp/core/common/jdbc/ESDataSource.java b/server/src/main/java/edp/core/common/jdbc/ESDataSource.java index caebcd4f4..bccda51d1 100644 --- a/server/src/main/java/edp/core/common/jdbc/ESDataSource.java +++ b/server/src/main/java/edp/core/common/jdbc/ESDataSource.java @@ -18,8 +18,6 @@ package edp.core.common.jdbc; -import com.alibaba.druid.pool.ElasticSearchConnection; -import com.alibaba.druid.pool.ElasticSearchDruidDataSource; import com.alibaba.druid.pool.ElasticSearchDruidDataSourceFactory; import edp.core.exception.SourceException; import lombok.extern.slf4j.Slf4j; @@ -29,6 +27,9 @@ import java.util.Map; import java.util.Properties; +import static com.alibaba.druid.pool.DruidDataSourceFactory.PROP_CONNECTIONPROPERTIES; +import static com.alibaba.druid.pool.DruidDataSourceFactory.PROP_URL; + @Slf4j public class ESDataSource { @@ -43,7 +44,8 @@ public static synchronized DataSource getDataSource(String jdbcUrl) throws Sourc String url = jdbcUrl.toLowerCase(); if (!map.containsKey(url) || null == map.get(url)) { Properties properties = new Properties(); - properties.setProperty("url", url); + properties.setProperty(PROP_URL, url); + properties.put(PROP_CONNECTIONPROPERTIES, "client.transport.ignore_cluster_name=true"); try { dataSource = ElasticSearchDruidDataSourceFactory.createDataSource(properties); map.put(url, dataSource); diff --git a/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java b/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java index 86f16882c..7c4376d5e 100644 --- a/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java +++ b/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java @@ -73,8 +73,8 @@ public class JdbcDataSource extends DruidDataSource { @Value("${source.connection-error-retry-attempts:3}") private int connectionErrorRetryAttempts; - @Value("${spring.datasource.validation-query}") - private String validationQuery; +// @Value("${spring.datasource.validation-query}") +// private String validationQuery; private static volatile Map map = new HashMap<>(); @@ -124,7 +124,7 @@ public synchronized DruidDataSource getDataSource(String jdbcUrl, String usernam instance.setTestOnReturn(testOnReturn); instance.setConnectionErrorRetryAttempts(connectionErrorRetryAttempts); instance.setBreakAfterAcquireFailure(breakAfterAcquireFailure); - instance.setValidationQuery(validationQuery); +// instance.setValidationQuery(validationQuery); try { instance.init(); diff --git a/server/src/main/java/edp/core/enums/DataTypeEnum.java b/server/src/main/java/edp/core/enums/DataTypeEnum.java index 923cdcf1d..8727a3a41 100644 --- a/server/src/main/java/edp/core/enums/DataTypeEnum.java +++ b/server/src/main/java/edp/core/enums/DataTypeEnum.java @@ -36,7 +36,7 @@ public enum DataTypeEnum { MONGODB("mongodb", "mongodb", "mongodb.jdbc.MongoDriver", "", "", "'", "'"), - ELASTICSEARCH("sql4es", "elasticSearch", "nl.anchormen.sql4es.jdbc.ESDriver", "", "", "'", "'"), + ELASTICSEARCH("elasticsearch", "elasticsearch", "nl.anchormen.sql4es.jdbc.ESDriver", "", "", "'", "'"), PRESTO("presto", "presto", "com.facebook.presto.jdbc.PrestoDriver", "", "", "'", "'"), diff --git a/server/src/main/java/edp/davinci/core/utils/SqlParseUtils.java b/server/src/main/java/edp/davinci/core/utils/SqlParseUtils.java index aa3e4376c..159ee1a1a 100644 --- a/server/src/main/java/edp/davinci/core/utils/SqlParseUtils.java +++ b/server/src/main/java/edp/davinci/core/utils/SqlParseUtils.java @@ -51,6 +51,8 @@ public class SqlParseUtils { private static final String select = "select"; + private static final String with = "with"; + private static final String queryVarKey = "query@var"; private static final String teamVarKey = "team@var"; @@ -216,7 +218,7 @@ public static List getExecuteSqlList(String sql) { list = new ArrayList<>(); for (String sqlStr : split) { sqlStr = sqlStr.trim(); - if (sqlStr.toLowerCase().startsWith(select)) { + if (sqlStr.toLowerCase().startsWith(select) || sqlStr.toLowerCase().startsWith(with)) { continue; } else { list.add(sqlStr); @@ -247,7 +249,7 @@ public static List getQuerySqlList(String sql) { list = new ArrayList<>(); for (String sqlStr : split) { sqlStr = sqlStr.trim(); - if (sqlStr.toLowerCase().startsWith(select)) { + if (sqlStr.toLowerCase().startsWith(select) || sqlStr.toLowerCase().startsWith(with)) { list.add(sqlStr); } else { continue; From 47dabb697eeab6e6e1196de5788c88c74c5b3fce Mon Sep 17 00:00:00 2001 From: shanmengm Date: Tue, 16 Oct 2018 16:04:04 +0800 Subject: [PATCH 43/45] =?UTF-8?q?update=20ui=E3=80=81start=20shell?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/start-server.sh | 5 +-- ...g => 2b30acf9b166780fa3559b91f6896f8a.svg} | 6 +++ ...f => 360a23ab9773513a02861e5a8c0c207c.ttf} | Bin 24460 -> 24764 bytes ...t => 82ff331d7a0d7070bed0ebd83a9b7f74.eot} | Bin 24628 -> 24932 bytes ...5c2b420.js => app.469ae82133661622c661.js} | 37 ++++++------------ davinci-ui/index.html | 2 +- ...f4986.js => share.d06c3c2cc7f19c0f0c62.js} | 35 +++++------------ davinci-ui/share.html | 2 +- 8 files changed, 31 insertions(+), 56 deletions(-) rename davinci-ui/{d5451b22234691c54bc84522f691f651.svg => 2b30acf9b166780fa3559b91f6896f8a.svg} (98%) rename davinci-ui/{399a92a93efc679ce6169a00e20be760.ttf => 360a23ab9773513a02861e5a8c0c207c.ttf} (86%) rename davinci-ui/{65e1147825d932152347091396c437bd.eot => 82ff331d7a0d7070bed0ebd83a9b7f74.eot} (86%) rename davinci-ui/{app.875ce217417755c2b420.js => app.469ae82133661622c661.js} (64%) rename davinci-ui/{share.38c89c5d4f3c659f4986.js => share.d06c3c2cc7f19c0f0c62.js} (51%) diff --git a/bin/start-server.sh b/bin/start-server.sh index ce8ea0d2a..e75618c85 100755 --- a/bin/start-server.sh +++ b/bin/start-server.sh @@ -38,11 +38,10 @@ if [[ $Server -gt 0 ]]; then exit fi -script_dir=$(cd `dirname $0`; pwd) -cd $script_dir/../ +cd $DAVINCI3_HOME TODAY=`date "+%Y-%m-%d"` LOG_PATH=$DAVINCI3_HOME/logs/davinci.$TODAY.log -nohup java -Dfile.encoding=UTF-8 -cp $JAVA_HOME/lib/*:lib/*:davinci-server_3.01-0.3.0-SNAPSHOT.jar edp.DavinciServerApplication > $LOG_PATH 2>&1 & +nohup java -Dfile.encoding=UTF-8 -cp $JAVA_HOME/lib/*:lib/* edp.DavinciServerApplication > $LOG_PATH 2>&1 & echo "==========================================" echo "Starting..., press \`CRTL + C\` to exit log" diff --git a/davinci-ui/d5451b22234691c54bc84522f691f651.svg b/davinci-ui/2b30acf9b166780fa3559b91f6896f8a.svg similarity index 98% rename from davinci-ui/d5451b22234691c54bc84522f691f651.svg rename to davinci-ui/2b30acf9b166780fa3559b91f6896f8a.svg index afa79ad50..5127d6ca9 100644 --- a/davinci-ui/d5451b22234691c54bc84522f691f651.svg +++ b/davinci-ui/2b30acf9b166780fa3559b91f6896f8a.svg @@ -50,6 +50,9 @@ Created by iconfont + + + @@ -248,6 +251,9 @@ Created by iconfont + + + diff --git a/davinci-ui/399a92a93efc679ce6169a00e20be760.ttf b/davinci-ui/360a23ab9773513a02861e5a8c0c207c.ttf similarity index 86% rename from davinci-ui/399a92a93efc679ce6169a00e20be760.ttf rename to davinci-ui/360a23ab9773513a02861e5a8c0c207c.ttf index 40c78fe8f9aeba3272bb21f7867448f9fde5411d..6011ab877e2f07ac8079eb94dfb99afb0d2794d8 100644 GIT binary patch delta 1954 zcmZ{ldu&r>7{;HkrlXoyQ><<u z-sgSZ)7QRL!z1dAa3UX2djPE8(jD*J+JEhDz+%jK{h6+pwk==#`iDUJTR_|K&aLsM zOST=}&TD@mb)5|4z2bS6$HOGj*}bdpahbf#=UpL9T|HakPqZz+3%DnE{%Ci+uUGB2 zKH#|mu0z}7-CG;i6{hwA8&?9h?%tl~cl~zRGX;p90POZRhr^54K=E2KfUB22nfG9xygIqTbKV-@It?}*<)-gjlPpzn)s)<)4h=bNPSt4cg@flTQbicD z3hrGETOOnOzADb?_u_UXT(_c$_jr;kta^1MxyM@Q9gsm8kyCP7F3K&rEqBJ2j2%h- zV8s*qms_z1FLUhUcoqE|@8I40<2{&h82=sbP$|q(l$4WR>HOJ-~{9p7ldYpoHo$bkc$Qy9CFJ*t3z%ZXnM$mf%b>oG3c+w7(J_DOJMAXfz5%j zuMBJxjD4e_2iY+gJ8xj`;09&Yu#0em(rMUFxUt2+&ce+h1A7cN&luQk7-yy$_8rE* zG_V6P&ab6L_ae6{v}063MOEU8?S#G6(d9Vg_`+G`yxqYg(z3msrz z2?l$bckETJczWuryU?v>Iufy--O6eSg<34NyC;@#rmnb$Ui2$ZEAp z&Cd*Yv(%zh2U4S{(c0QTLvusGn;FUUMi0)ZwH=RCl!ZcN73FQ`T2p88Rjz6%Xg&9H zYE+d)`=bSgg$3TsOm9t1v>zDybc5Tj)+E1v@-Qd0Hn~2w+3DcF=+0e3pT~Z*d7Sr- MXWKhF;yZzV0Z&!9(f|Me delta 1605 zcmZvbU2Icj7{~vo?b>~I?fS8<>(=gzO_(@P$AG~;L`4`)G(<2Cu^Y&ut4!enmuYdq zpoRi%GJdFLIJ zxVQjZ`eaA@|NZQx*$v*a&aXKygu|@zGW(Ktt(CHR?A_LfS+B!k*+FNZxpeLk9Bw%0 zMy>3N=Yn=wm$|7A-6%k*opdg-_d1saj><8al+$uX&dUwCDR*-{_OvsVvH0dF#@OCr z+l@VJhj946b_5Sv=BVxbpLpc#*&9aU(-LsX;#kD?9p5QP^JJcSYz;bE*sEz00W z1p=547aFk$l?Wn)Qq*A;s<9L?)KE&dy{O>cL6;{(V^FDY%$?UdK-d|0eh4KuFcJvU zU|>uTr^4tU%$|X9LJAZ{3~?)r9pX`_0;Eu(9+0ApxpA{uWXcQ_2~wg^E(nikpm2~f zg%U!%3dMw!E0h)DQz$URuTW}8g+kFG0R^cA90V0+0>a`k%qbD(m@qq#N`-lXR4J%u zA61w-2!%B;iI64*VSArvd6hZRQiVx{7<~wu>}#HeOfP4v6($;D6edhL#3)Rde258@ z&;}3_9HAi~CToP&fFu=~1oEt63P_$)XdKAP3M~W~05axAH$h%g=qt#GLWe=#Q0O(t z9)+%h>{aML$VUpD2sx_IlaONy-3ggg=u^mPg^tZY&Tv9#UdVZcHiq0#XlTeyh1Q1L zQfP9>U4?c>ju|x2_{e>)umq4hrLY)~JFBoPkY{lD=tgc}%JY=Sz*<3mP+`^JdRAfm z;QCJrD+x1<&cK?&%y$Z_3o|Db)Y!L*A{jT_pS%C|yyQ7vxUe)|_Jz0Id!@Xy{10ER zZ_0Py-|pY<|JHw{VtvJ_!0*BS;B?3l3Wi!j{o%#o@$k=;uF6DYx@uL`xoB&(qk2vC ziCA&0EjAkau_jt`sP@lzB;FSviyx0mB9`b&j3<7ni`2E%-K#&`Fy0t!>~8eD-!wY! ttLB01!Q#r2tQGF)&0gGC=(3Xb<^E6Y(M_APS2ta76uO26Qg1Sre*u_=Zae@0 diff --git a/davinci-ui/65e1147825d932152347091396c437bd.eot b/davinci-ui/82ff331d7a0d7070bed0ebd83a9b7f74.eot similarity index 86% rename from davinci-ui/65e1147825d932152347091396c437bd.eot rename to davinci-ui/82ff331d7a0d7070bed0ebd83a9b7f74.eot index 3a0a0bb93a142da7aef03634a415561024e92682..3e9e5100939d159c90f4971918a8a9484bc191c6 100644 GIT binary patch delta 1870 zcmZ{leQZ-z7{;H|cI~>4ZY}HQK3ckNLpH`JW#emOFhJ&T14S}P`REupHc`@Hv#pH;t3D0_DbIJ4uJz1~*VHc@@7`R#NOpbh}oyt6Mguxt3%pMaHX_S-M@ zzP@|S#&Z3<-$0$bJrmcD`hR|kK&;hF^`zXEJF zqg$0%Y=Gj$qY0r=ti>Baw!#%UE)8;lDorJ9X7mZM{%7P~S&xB9CB zk8g*?1MA~i4aXct7=TR)Z*NC4vfwg)w>GE~M$ER%drC&-oSc^na#ilhefeu@<5T3$ZSg-^MEI<{C zQGg(xMjmqEL@inoh6^6dLJ_KALj{A1BLFXa$VU`wP=ci>MH%C@n+iYq8CS9%QUmV8 zpY_`(s~v!;qY1--FjFQB3}VqRM2Jwq%>{WyLz_VcG&CG!uZGrx9M;f;kRuw}5%QkKG?bh&F?KkMU#R8moQ76~ zoY&B_kP8~x7jjiYBSY?KXlclO4b2UCph2~9&FN25;HeWDS{_qhYiNEu=FEUqnnt$4Dez9d<4vgEhYwWVjnh2hoVq3~zn z+YwJ>U1TUS8hJE(_3UJHPIRJtG}au;?Tw9BoUFWFRaSLtEGO5WyIBD3hn6M;}D;LXeP*3~73fw9g`r;VSGuHpO)wk7`Wtz$;WNLmv{%IL5f%>C9;GiY5fr`xz8m*kKp z!Z(?l{Xv*cuG*s}_W5_$9mbEGccGo{6k31eEU@M|+R8takK~M;l?gd7H{_=LIoV|r~E!~eA-xL11<_in&q{_3Mxg<7=XVJyNDxUd3CF&9y+W{h2! zhh?}A9aw`F%ty@tB3J-FgU>}CoG3*J;!MOqCmupQ9z+5mG+;JNwBi9YqYf1)Mi7sn z0B+2|O3XqLJSams8YxW-_agu=d?-XUmZK625k^(^LT-_fIc96dYYiamY#1|y3feGw zh^a6S2o<+sMi8oQ!`vXOh7GfXI2Gm#$y1m)#HCOJh+DCq$}7sO;J84cG7!4dh8jVN z6siR&R;U}KM6s(cr3$r#coeD%DO0E~q+FrW5U)bbAv`5X`*v3VKNkoK0SPE92_&ST zhJA&?DnY6g)(a9>;I~>_i$Zot3l-K6V#`7hxAwVe*L8BXQejOYwy=cNh1kLp))`_a zN?37-og889A$G9{T>wccnEkptu(6esO$x06=~ZYF$a4zq0vS?h9LNg_Ed<%4&`glM z3T*{>!^Ya}u3R^VqcaMP205$Ha*zpy=7XG9XhX;ig@%OORA^1eEd`C%Eq5Rj113LH zXjn|1QfOUFeyz~Nm}1N}v@@n2Q)p~V^(nMCu4fgR9oN59XnRc4bv8TznEq7ZQNZ*V zkg;!IMR_&hN&IBMXfZCCV~%9*VD5e=obNb)&+E=R?wVUTRrGFgqWDV5;*wuWJ4?q) z?|2fP*F2wiu9U4UJ5~OJcZ2t`&-8hH4ZaQj`TkM=R{=*L8oV4@9y(XiRB2YOsyq?S z4>yO0!>6k%st(P%770e;U6GN<@rXpj(XQxd^qcBnb#wLKHHT|QW8PSMY+ro1?*01S pY+FH~Ap3#8wKKbOz01M>#?g&$TQ%K1*}dHtO_yV!H}xVD_!ruCWkUb} diff --git a/davinci-ui/app.875ce217417755c2b420.js b/davinci-ui/app.469ae82133661622c661.js similarity index 64% rename from davinci-ui/app.875ce217417755c2b420.js rename to davinci-ui/app.469ae82133661622c661.js index 6e0b3179c..258c614f1 100644 --- a/davinci-ui/app.875ce217417755c2b420.js +++ b/davinci-ui/app.469ae82133661622c661.js @@ -1,31 +1,26 @@ -!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/",t(t.s=2)}({"./app/app.tsx":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n("./node_modules/babel-polyfill/lib/index.js");var r=n("./node_modules/react/react.js"),o=n("./node_modules/react-dom/index.js"),a=n("./node_modules/react-redux/es/index.js"),i=n("./node_modules/react-router/es/index.js"),s=n("./node_modules/react-router-redux/lib/index.js"),l=n("./node_modules/react-router-scroll/lib/index.js"),c=n("./app/containers/App/index.tsx"),u=n("./app/containers/App/selectors.ts"),d=n("./app/containers/LanguageProvider/index.tsx"),p=n("./app/i18n.js");n("./node_modules/file-loader/index.js?name=[name].[ext]!./app/favicon.ico"),n("./node_modules/file-loader/index.js?name=[name].[ext]!./app/manifest.json"),n("./node_modules/file-loader/index.js?name=[name].[ext]!./app/.htaccess"),n("./node_modules/antd/dist/antd.less"),n("./node_modules/react-grid-layout/css/styles.css"),n("./node_modules/react-resizable/css/styles.css"),n("./node_modules/bootstrap-datepicker/dist/css/bootstrap-datepicker3.standalone.min.css"),n("./node_modules/react-quill/dist/quill.snow.css"),n("./app/assets/fonts/iconfont.css"),n("./app/assets/override/antd.css"),n("./app/assets/override/react-grid.css"),n("./app/assets/override/datepicker.css"),n("./app/assets/override/react-color.css"),n("./app/assets/less/style.less");var f=n("./node_modules/echarts/lib/echarts.js");n("./node_modules/zrender/lib/svg/svg.js"),n("./node_modules/echarts/lib/chart/bar.js"),n("./node_modules/echarts/lib/chart/line.js"),n("./node_modules/echarts/lib/chart/scatter.js"),n("./node_modules/echarts/lib/chart/pie.js"),n("./node_modules/echarts/lib/chart/sankey.js"),n("./node_modules/echarts/lib/chart/funnel.js"),n("./node_modules/echarts/lib/chart/treemap.js"),n("./node_modules/echarts/lib/chart/heatmap.js"),n("./node_modules/echarts/lib/chart/boxplot.js"),n("./node_modules/echarts/lib/chart/graph.js"),n("./node_modules/echarts/lib/chart/gauge.js"),n("./node_modules/echarts/lib/chart/radar.js"),n("./node_modules/echarts/lib/chart/parallel.js"),n("./node_modules/echarts/lib/chart/pictorialBar.js"),n("./node_modules/echarts-wordcloud/index.js"),n("./node_modules/echarts/lib/component/legend.js"),n("./node_modules/echarts/lib/component/legendScroll.js"),n("./node_modules/echarts/lib/component/tooltip.js"),n("./node_modules/echarts/lib/component/toolbox.js"),n("./node_modules/echarts/lib/component/dataZoom.js"),n("./node_modules/echarts/lib/component/visualMap.js"),n("./node_modules/echarts/lib/component/geo.js"),n("./app/containers/Widget/charts/mapFile/china.js");var h=n("./app/globalConstants.ts");f.registerTheme("default",h.DEFAULT_ECHARTS_THEME);var m=n("./app/store.ts"),g=n("./app/routes.ts"),b={},v=m.default(b,i.hashHistory),y=s.syncHistoryWithStore(i.hashHistory,v,{selectLocationState:u.makeSelectLocationState()}),_={path:"/",component:c.default,childRoutes:g.default(v),indexRoute:{onEnter:function(e,t){t("/projects")}}},A=function(e){o.render(r.createElement(a.Provider,{store:v},r.createElement(d.default,{messages:e},r.createElement(i.Router,{history:y,routes:_,render:i.applyRouterMiddleware(l.useScroll())}))),document.getElementById("app"))};window.Intl?A(p.translationMessages):new Promise(function(e){e(Promise.resolve().then(function(){return n("./node_modules/intl/index.js")}))}).then(function(){return Promise.all([Promise.resolve().then(function(){return n("./node_modules/intl/locale-data/jsonp/en.js")})])}).then(function(){return A(p.translationMessages)}).catch(function(e){throw e}),window.__REACT_DEVTOOLS_GLOBAL_HOOK__&&(window.__REACT_DEVTOOLS_GLOBAL_HOOK__.inject=function(){})},"./app/assets/fonts/iconfont.css":function(e,t,n){var r=n("./node_modules/css-loader/index.js!./node_modules/postcss-loader/index.js!./app/assets/fonts/iconfont.css");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/assets/fonts/iconfont.eot?t=1534415414863":function(e,t,n){e.exports=n.p+"65e1147825d932152347091396c437bd.eot"},"./app/assets/fonts/iconfont.svg?t=1534415414863":function(e,t,n){e.exports=n.p+"d5451b22234691c54bc84522f691f651.svg"},"./app/assets/fonts/iconfont.ttf?t=1534415414863":function(e,t,n){e.exports=n.p+"399a92a93efc679ce6169a00e20be760.ttf"},"./app/assets/images recursive ^\\.\\/bg.*\\.png$":function(e,t,n){function r(e){return n(o(e))}function o(e){var t=a[e];if(!(t+1))throw new Error("Cannot find module '"+e+"'.");return t}var a={"./bg1.png":"./app/assets/images/bg1.png","./bg10.png":"./app/assets/images/bg10.png","./bg11.png":"./app/assets/images/bg11.png","./bg12.png":"./app/assets/images/bg12.png","./bg13.png":"./app/assets/images/bg13.png","./bg14.png":"./app/assets/images/bg14.png","./bg15.png":"./app/assets/images/bg15.png","./bg16.png":"./app/assets/images/bg16.png","./bg17.png":"./app/assets/images/bg17.png","./bg18.png":"./app/assets/images/bg18.png","./bg19.png":"./app/assets/images/bg19.png","./bg2.png":"./app/assets/images/bg2.png","./bg20.png":"./app/assets/images/bg20.png","./bg3.png":"./app/assets/images/bg3.png","./bg4.png":"./app/assets/images/bg4.png","./bg5.png":"./app/assets/images/bg5.png","./bg6.png":"./app/assets/images/bg6.png","./bg7.png":"./app/assets/images/bg7.png","./bg8.png":"./app/assets/images/bg8.png","./bg9.png":"./app/assets/images/bg9.png"};r.keys=function(){return Object.keys(a)},r.resolve=o,e.exports=r,r.id="./app/assets/images recursive ^\\.\\/bg.*\\.png$"},"./app/assets/images/bg1.png":function(e,t,n){e.exports=n.p+"e6f17c7c334fb9352467084d5b69972c.png"},"./app/assets/images/bg10.png":function(e,t,n){e.exports=n.p+"9fb76c1987aaced56d46185fe2a9c9a7.png"},"./app/assets/images/bg11.png":function(e,t,n){e.exports=n.p+"cf7ab11b51a8a57e8f2d9fd125f2ba0a.png"},"./app/assets/images/bg12.png":function(e,t,n){e.exports=n.p+"ffb7a8f93fb3ee5363f716001678abff.png"},"./app/assets/images/bg13.png":function(e,t,n){e.exports=n.p+"e5aa55de921ddb8473af573d48c01276.png"},"./app/assets/images/bg14.png":function(e,t,n){e.exports=n.p+"4d093388b8468ddd4ca8b04969355abf.png"},"./app/assets/images/bg15.png":function(e,t,n){e.exports=n.p+"26f82ea10fdd6824908c461658e48b16.png"},"./app/assets/images/bg16.png":function(e,t,n){e.exports=n.p+"7e38fe4bc86856ff097225950fb1af4e.png"},"./app/assets/images/bg17.png":function(e,t,n){e.exports=n.p+"cfe25a8e11435078439040fa96f172aa.png"},"./app/assets/images/bg18.png":function(e,t,n){e.exports=n.p+"be019c805bcc4a0aae27afd859435329.png"},"./app/assets/images/bg19.png":function(e,t,n){e.exports=n.p+"65cde8fa1e0b87935a58744709f64bea.png"},"./app/assets/images/bg2.png":function(e,t,n){e.exports=n.p+"48cd5baaf8b54fde86471c6b1f21212f.png"},"./app/assets/images/bg20.png":function(e,t,n){e.exports=n.p+"2ea2b3275c6eebbcaceda228da181bea.png"},"./app/assets/images/bg3.png":function(e,t,n){e.exports=n.p+"3483156a52e2755f69eb3e7ae92c5ef9.png"},"./app/assets/images/bg4.png":function(e,t,n){e.exports=n.p+"a92e599185a3cd89e93521220c01fff6.png"},"./app/assets/images/bg5.png":function(e,t,n){e.exports=n.p+"8999a7c0e1b2bc8a9584c3aa29a24221.png"},"./app/assets/images/bg6.png":function(e,t,n){e.exports=n.p+"825c277337d89cb88266251b7ac075a7.png"},"./app/assets/images/bg7.png":function(e,t,n){e.exports=n.p+"9ea49e4080dec6ed0ef9d5b3262ebc63.png"},"./app/assets/images/bg8.png":function(e,t,n){e.exports=n.p+"fa522a4df5aed962ee1ca9d2b625fa94.png"},"./app/assets/images/bg9.png":function(e,t,n){e.exports=n.p+"1ba81eb07695fb6c0e11a8f83d9eacde.png"},"./app/assets/images/grid.png":function(e,t,n){e.exports=n.p+"723c56b4425401d1ec750b9f681acca5.png"},"./app/assets/images/logo.svg":function(e,t,n){e.exports=n.p+"1c8e2633766f2fb8bda742b37e16169e.svg"},"./app/assets/images/logo_light.svg":function(e,t,n){e.exports=n.p+"e92352b7d5694fd944eaa9e69ada160a.svg"},"./app/assets/images/logo_mobile.svg":function(e,t,n){e.exports=n.p+"6b49995ae3ae7870597e6843415551a0.svg"},"./app/assets/images/noDashboard.png":function(e,t,n){e.exports=n.p+"281aa6578d6d23625ff847d6d4e52c19.png"},"./app/assets/images/profile.png":function(e,t,n){e.exports=n.p+"f4f61f162db96f3f3c05a8ce556ce06c.png"},"./app/assets/json/echartsThemes/default.project.json":function(e,t){e.exports={version:1,themeName:"walden",theme:{seriesCnt:"8",backgroundColor:"rgba(252,252,252,0)",titleColor:"#666666",subtitleColor:"#999999",textColorShow:!1,textColor:"#333",markTextColor:"#ffffff",color:["#509af2","#3acf7a","#ffa223","#d465fb","#38caf7","#b3dd07","#ffd835","#e5b4fa"],borderColor:"#ccc",borderWidth:0,visualMapColor:["#2a99c9","#afe8ff"],legendTextColor:"#999999",kColor:"#e6a0d2",kColor0:"transparent",kBorderColor:"#e6a0d2",kBorderColor0:"#3fb1e3",kBorderWidth:"2",lineWidth:"3",symbolSize:"8",symbolBorderWidth:"2",lineSmooth:!1,graphLineWidth:"1",graphLineColor:"#cccccc",mapLabelColor:"#ffffff",mapLabelColorE:"rgb(63,177,227)",mapBorderColor:"#aaaaaa",mapBorderColorE:"#3fb1e3",mapBorderWidth:.5,mapBorderWidthE:1,mapAreaColor:"#eeeeee",mapAreaColorE:"rgba(63,177,227,0.25)",axes:[{type:"all",name:"通用坐标轴",axisLineShow:!0,axisLineColor:"#cccccc",axisTickShow:!1,axisTickColor:"#333",axisLabelShow:!0,axisLabelColor:"#999999",splitLineShow:!0,splitLineColor:["#eeeeee"],splitAreaShow:!1,splitAreaColor:["rgba(250,250,250,0.05)","rgba(200,200,200,0.02)"]},{type:"category",name:"类目坐标轴",axisLineShow:!0,axisLineColor:"#333",axisTickShow:!0,axisTickColor:"#333",axisLabelShow:!0,axisLabelColor:"#333",splitLineShow:!1,splitLineColor:["#ccc"],splitAreaShow:!1,splitAreaColor:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]},{type:"value",name:"数值坐标轴",axisLineShow:!0,axisLineColor:"#333",axisTickShow:!0,axisTickColor:"#333",axisLabelShow:!0,axisLabelColor:"#333",splitLineShow:!0,splitLineColor:["#ccc"],splitAreaShow:!1,splitAreaColor:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]},{type:"log",name:"对数坐标轴",axisLineShow:!0,axisLineColor:"#333",axisTickShow:!0,axisTickColor:"#333",axisLabelShow:!0,axisLabelColor:"#333",splitLineShow:!0,splitLineColor:["#ccc"],splitAreaShow:!1,splitAreaColor:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]},{type:"time",name:"时间坐标轴",axisLineShow:!0,axisLineColor:"#333",axisTickShow:!0,axisTickColor:"#333",axisLabelShow:!0,axisLabelColor:"#333",splitLineShow:!0,splitLineColor:["#ccc"],splitAreaShow:!1,splitAreaColor:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]}],axisSeperateSetting:!1,toolboxColor:"#999999",toolboxEmpasisColor:"#666666",tooltipAxisColor:"#cccccc",tooltipAxisWidth:1,timelineLineColor:"#626c91",timelineLineWidth:1,timelineItemColor:"#626c91",timelineItemColorE:"#626c91",timelineCheckColor:"#3fb1e3",timelineCheckBorderColor:"rgba(63,177,227,0.15)",timelineItemBorderWidth:1,timelineControlColor:"#626c91",timelineControlBorderColor:"#626c91",timelineControlBorderWidth:.5,timelineLabelColor:"#626c91",datazoomBackgroundColor:"rgba(255,255,255,0)",datazoomDataColor:"rgba(222,222,222,1)",datazoomFillColor:"rgba(114,230,212,0.25)",datazoomHandleColor:"#cccccc",datazoomHandleWidth:"100",datazoomLabelColor:"#999999"}}},"./app/assets/json/geo.json":function(e,t){e.exports={"上海":{lon:121.48,lat:31.22},"嘉定":{lon:121.24,lat:31.4},"宝山":{lon:121.48,lat:31.41},"川沙":{lon:121.7,lat:31.19},"南汇":{lon:121.76,lat:31.05},"奉贤":{lon:121.46,lat:30.92},"松江":{lon:121.24,lat:31},"金山":{lon:121.16,lat:30.89},"青浦":{lon:121.1,lat:31.15},"崇明":{lon:121.4,lat:31.73},"昆明":{lon:102.73,lat:25.04},"富民":{lon:102.48,lat:25.21},"晋宁":{lon:102.58,lat:24.68},"呈贡":{lon:102.79,lat:24.9},"安宁":{lon:102.44,lat:24.95},"昭通":{lon:103.7,lat:29.32},"永善":{lon:103.63,lat:28.22},"大关":{lon:103.91,lat:27.74},"彝良":{lon:104.06,lat:27.61},"鲁甸":{lon:103.54,lat:27.21},"绥江":{lon:103.97,lat:28.58},"盐津":{lon:104.28,lat:28.08},"威信":{lon:105.05,lat:27.85},"镇雄":{lon:104.86,lat:27.42},"巧家":{lon:102.92,lat:26.9},"永富":{lon:104.38,lat:28.62},"曲靖":{lon:103.79,lat:25.51},"宣威":{lon:104.09,lat:26.24},"富源":{lon:104.24,lat:25.67},"师宗":{lon:103.97,lat:24.85},"嵩明":{lon:103.03,lat:25.35},"会泽":{lon:103.27,lat:26.41},"沽益":{lon:103.82,lat:25.62},"罗平":{lon:104.3,lat:24.88},"陆良":{lon:104.64,lat:25.04},"宜良":{lon:103.12,lat:24.9},"马龙":{lon:103.61,lat:25.41},"路南":{lon:103.24,lat:24.77},"寻甸":{lon:103.25,lat:25.56},"玉溪":{lon:102.52,lat:24.35},"华宁":{lon:102.93,lat:24.26},"通海":{lon:102.75,lat:24.09},"澄江":{lon:102.91,lat:24.68},"江川":{lon:102.73,lat:24.27},"易门":{lon:102.15,lat:24.67},"元江":{lon:102,lat:23.59},"新平":{lon:101.98,lat:24.06},"峨山":{lon:102.38,lat:24.16},"思茅":{lon:101,lat:22.79},"普洱":{lon:101.03,lat:23.07},"镇沅":{lon:100.88,lat:23.9},"景东":{lon:100.82,lat:24.42},"景谷":{lon:100.71,lat:23.5},"黑江":{lon:101.71,lat:23.4},"澜沦":{lon:99.97,lat:22.55},"西盟":{lon:99.47,lat:22.73},"江城":{lon:101.88,lat:22.58},"孟连":{lon:99.55,lat:22.32},"临沦":{lon:100.09,lat:23.88},"云县":{lon:100.12,lat:24.44},"镇康":{lon:99.02,lat:23.92},"永德":{lon:99.25,lat:24.03},"凤庆":{lon:99.92,lat:24.58},"双江":{lon:99.85,lat:23.45},"沧源":{lon:99.24,lat:23.15},"耿马":{lon:99.41,lat:23.56},"保由":{lon:99.18,lat:25.12},"施甸":{lon:99.15,lat:24.69},"腾冲":{lon:98.51,lat:25.01},"昌宁":{lon:99.61,lat:24.82},"龙陵":{lon:98.7,lat:24.58},"丽江":{lon:100.25,lat:26.86},"华坪":{lon:101.24,lat:26.63},"永胜":{lon:100.76,lat:26.71},"宁蒗":{lon:100.82,lat:27.29},"文山":{lon:104.24,lat:23.37},"广南":{lon:105.09,lat:24.05},"西畴":{lon:104.68,lat:23.42},"麻栗坡":{lon:104.71,lat:23.12},"马关":{lon:104.4,lat:23.01},"丘北":{lon:104.19,lat:24.03},"砚山":{lon:104.35,lat:23.62},"富宁":{lon:105.6,lat:23.62},"个旧":{lon:102.43,lat:23.35},"弥勒":{lon:103.43,lat:24.41},"蒙自":{lon:103.41,lat:23.36},"元阳":{lon:102.81,lat:23.17},"红河":{lon:102.42,lat:23.35},"石屏":{lon:102.48,lat:23.73},"泸西":{lon:103.76,lat:24.52},"金平":{lon:103.24,lat:22.77},"开远":{lon:103.23,lat:23.7},"绿春":{lon:102.42,lat:23.01},"建水":{lon:102.79,lat:23.64},"河口":{lon:103.98,lat:22.52},"屏边":{lon:103.67,lat:22.68},"景淇":{lon:100.79,lat:22},"勐海":{lon:100.5,lat:21.95},"勐腊":{lon:101.56,lat:21.48},"楚雄":{lon:101.54,lat:25.01},"元谋":{lon:101.85,lat:25.7},"武定":{lon:102.36,lat:25.55},"禄丰":{lon:102.08,lat:25.15},"南华":{lon:101.26,lat:25.21},"大姚":{lon:101.34,lat:25.73},"永仁":{lon:101.7,lat:26.07},"禄劝":{lon:102.45,lat:25.58},"牟定":{lon:101.58,lat:25.32},"双柏":{lon:101.67,lat:24.68},"姚安":{lon:101.24,lat:25.4},"下关":{lon:100.24,lat:25.45},"剑川":{lon:99.88,lat:26.53},"洱源":{lon:99.94,lat:26.1},"宾川":{lon:100.55,lat:25.82},"弥渡":{lon:100.52,lat:25.34},"永平":{lon:99.52,lat:25.45},"鹤庆":{lon:100.18,lat:26.55},"大理":{lon:100.19,lat:25.69},"漾濞":{lon:99.98,lat:25.68},"云龙":{lon:99.39,lat:25.9},"祥云":{lon:100.56,lat:25.48},"巍山":{lon:100.33,lat:25.23},"南涧":{lon:100.51,lat:25.04},"潞西":{lon:98.6,lat:24.41},"陇川":{lon:97.96,lat:24.33},"盈江":{lon:97.93,lat:24.69},"畹町":{lon:98.08,lat:24.08},"瑞丽":{lon:97.83,lat:24},"梁河":{lon:98.3,lat:24.78},"泸水":{lon:98.82,lat:25.97},"碧江":{lon:98.95,lat:26.55},"福贡":{lon:98.92,lat:26.89},"兰坪":{lon:99.29,lat:26.49},"贡山":{lon:98.65,lat:27.73},"中甸":{lon:99.72,lat:27.78},"德钦":{lon:98.93,lat:28.49},"维西":{lon:99.27,lat:27.15},"钓鱼岛":{lon:123.33,lat:25},"黄岩岛":{lon:117.51,lat:15.07},"呼和浩特":{lon:111.65,lat:40.82},"上默特左旗":{lon:111.13,lat:40.72},"托克托":{lon:111.15,lat:40.28},"包头":{lon:110,lat:40.58},"上默特右旗":{lon:110.52,lat:40.55},"固阳":{lon:110.03,lat:41.03},"乌海":{lon:106.82,lat:39.67},"集宁":{lon:113.08,lat:41.03},"兴和":{lon:113.97,lat:40.88},"清水河":{lon:111.65,lat:39.92},"武川":{lon:111.42,lat:41.12},"卓资":{lon:112.52,lat:40.93},"商都":{lon:113.53,lat:41.58},"丰镇":{lon:113.15,lat:40.45},"凉城":{lon:112.48,lat:40.52},"和林格尔":{lon:111.8,lat:40.4},"化德":{lon:114,lat:41.9},"四子王旗":{lon:111.68,lat:41.37},"二连浩特":{lon:111.96,lat:43.65},"阿巴哈纳尔旗":{lon:116.08,lat:43.95},"多伦":{lon:116.48,lat:42.18},"阿巴嘎旗":{lon:114.97,lat:44.03},"西乌珠穆沁旗":{lon:117.58,lat:44.6},"东乌珠穆沁旗":{lon:116.97,lat:45.53},"苏尼特左旗":{lon:113.7,lat:43.85},"苏尼特右旗":{lon:112.95,lat:42.47},"太仆寺旗":{lon:115.3,lat:41.9},"正镶白旗":{lon:115,lat:42.32},"正蓝旗":{lon:116.02,lat:42.25},"镶黄旗":{lon:113.83,lat:42.25},"海拉尔":{lon:119.73,lat:29.22},"满洲里":{lon:117.47,lat:49.58},"陈巴尔虎旗":{lon:119.45,lat:49.33},"额尔古纳右旗":{lon:120.08,lat:50.45},"额尔古纳左旗":{lon:121.52,lat:50.8},"喜桂图旗":{lon:120.73,lat:49.3},"阿荣旗":{lon:123.5,lat:48.13},"布特哈旗":{lon:122.78,lat:47.98},"新巴尔虎左旗":{lon:116.82,lat:48.67},"新巴尔虎右旗":{lon:118.23,lat:48.22},"鄂伦春自治旗":{lon:123.7,lat:50.58},"通辽":{lon:122.28,lat:43.63},"开鲁":{lon:121.32,lat:43.62},"库伦旗":{lon:121.75,lat:42.72},"奈曼旗":{lon:120.65,lat:42.85},"扎鲁特旗":{lon:120.87,lat:44.55},"赤峰":{lon:118.87,lat:42.28},"宁城":{lon:119.32,lat:41.62},"林西":{lon:118.02,lat:43.62},"喀喇沁旗":{lon:118.67,lat:41.95},"敖汉旗":{lon:119.87,lat:42.3},"翁牛特旗":{lon:119,lat:42.97},"巴林右旗":{lon:118.65,lat:43.52},"巴林左旗":{lon:119.35,lat:43.98},"阿鲁科尔沁旗":{lon:120.05,lat:43.97},"克什克腾旗":{lon:117.48,lat:43.28},"伊克昭盟":{lon:110,lat:39.83},"东胜县":{lon:110,lat:39.83},"准格尔旗":{lon:111.13,lat:39.68},"乌审旗":{lon:109.03,lat:38.38},"伊金霍洛旗":{lon:109.77,lat:39.25},"鄂托克旗":{lon:107.97,lat:39.12},"鄂托克前旗":{lon:107.43,lat:38.18},"杭锦旗":{lon:108.7,lat:39.83},"达拉特旗":{lon:110.02,lat:40.42},"临河":{lon:107.37,lat:40.78},"五原":{lon:108.28,lat:41.12},"磴口":{lon:106.98,lat:40.33},"杭锦后旗":{lon:107.12,lat:40.88},"乌拉特中旗":{lon:108.52,lat:41.55},"乌拉特前旗":{lon:108.65,lat:40.75},"乌拉特后旗":{lon:108.52,lat:40.88},"阿拉善左旗":{lon:105.68,lat:38.85},"阿拉善右旗":{lon:101.68,lat:39.2},"额济纳旗":{lon:100.88,lat:41.9},"乌兰浩特":{lon:122.08,lat:46.07},"突泉":{lon:121.5,lat:45.4},"北京":{lon:116.46,lat:39.92},"平谷":{lon:117.1,lat:40.13},"密云":{lon:116.85,lat:40.37},"顺义":{lon:116.65,lat:40.13},"通县":{lon:116.67,lat:39.92},"怀柔":{lon:116.62,lat:40.32},"大兴":{lon:116.33,lat:39.73},"房山":{lon:115.98,lat:39.72},"长春":{lon:125.35,lat:43.88},"吉林":{lon:126.57,lat:43.87},"农安":{lon:125.15,lat:44.45},"德惠":{lon:125.68,lat:44.52},"榆树":{lon:126.55,lat:44.83},"九台":{lon:126.83,lat:44.15},"双阳":{lon:125.68,lat:43.53},"永吉":{lon:126.57,lat:43.87},"舒兰":{lon:126.97,lat:44.4},"蛟河":{lon:127.33,lat:43.75},"桦甸":{lon:126.72,lat:42.97},"磐石":{lon:126.03,lat:42.93},"延吉":{lon:129.52,lat:42.93},"汪清":{lon:129.75,lat:43.32},"珲春":{lon:130.35,lat:42.85},"图们":{lon:129.83,lat:42.98},"和龙":{lon:129,lat:42.52},"安图":{lon:128.3,lat:42.58},"敦化":{lon:128.18,lat:43.35},"通化":{lon:125.92,lat:41.49},"柳河":{lon:125.7,lat:40.88},"海龙":{lon:125.65,lat:42.53},"辉南":{lon:126.03,lat:42.68},"靖宇":{lon:126.8,lat:42.38},"浑江":{lon:126.4,lat:41.97},"抚松":{lon:127.27,lat:42.33},"集安":{lon:126.17,lat:41.15},"长白":{lon:128.17,lat:41.43},"四平":{lon:124.37,lat:43.17},"梨树":{lon:124.33,lat:43.32},"怀德":{lon:124.82,lat:43.5},"伊通":{lon:125.32,lat:43.33},"辽源":{lon:125.15,lat:42.97},"东丰":{lon:125.5,lat:42.68},"双辽":{lon:123.5,lat:43.52},"白城":{lon:122.82,lat:45.63},"大安":{lon:124.18,lat:45.5},"扶余":{lon:124.82,lat:45.2},"乾安":{lon:124.02,lat:45},"长岭":{lon:123.97,lat:44.3},"通榆":{lon:123.13,lat:44.82},"洮安":{lon:122.75,lat:45.35},"成都":{lon:104.06,lat:30.67},"金堂":{lon:104.32,lat:30.88},"双流":{lon:104.94,lat:30.57},"蒲江":{lon:103.29,lat:30.2},"郫县":{lon:103.86,lat:30.8},"新都":{lon:104.13,lat:30.82},"来易":{lon:102.15,lat:26.9},"盐边":{lon:101.56,lat:26.9},"温江":{lon:103.81,lat:30.97},"灌县":{lon:103.61,lat:31.04},"彭县":{lon:103.94,lat:30.99},"什邡":{lon:104.16,lat:31.13},"广汉":{lon:104.25,lat:30.99},"新津":{lon:103.78,lat:30.42},"邛崃":{lon:103.47,lat:30.42},"大邑":{lon:103.53,lat:30.58},"崇庆":{lon:103.69,lat:30.63},"绵阳":{lon:104.73,lat:31.48},"江油":{lon:104.7,lat:31.8},"青川":{lon:105.21,lat:32.59},"平武":{lon:104.52,lat:32.42},"光元":{lon:105.86,lat:32.44},"旺苍":{lon:106.33,lat:32.25},"剑阁":{lon:105.45,lat:32.03},"梓潼":{lon:105.16,lat:31.64},"三台":{lon:105.06,lat:31.1},"盐亭":{lon:105.35,lat:31.23},"射洪":{lon:105.31,lat:30.9},"遂宁":{lon:105.58,lat:30.52},"蓬溪":{lon:105.74,lat:30.78},"中江":{lon:104.68,lat:31.06},"德阳":{lon:104.37,lat:31.13},"绵竹":{lon:104.19,lat:31.32},"安县":{lon:104.41,lat:31.64},"北川":{lon:104.44,lat:31.89},"内江":{lon:105.04,lat:29.59},"乐至":{lon:105.02,lat:30.3},"安岳":{lon:105.3,lat:30.12},"威远":{lon:104.7,lat:29.57},"资中":{lon:104.85,lat:29.81},"资阳":{lon:104.6,lat:30.19},"简阳":{lon:104.53,lat:30.38},"隆昌":{lon:105.25,lat:29.64},"宜宾":{lon:104.56,lat:29.77},"富顺":{lon:104.97,lat:29.24},"南溪":{lon:104.96,lat:28.87},"江安":{lon:105.06,lat:28.71},"纳溪":{lon:105.38,lat:28.77},"泸县":{lon:105.46,lat:28.96},"合江":{lon:105.78,lat:28.79},"泸州":{lon:105.39,lat:28.91},"古蔺":{lon:105.79,lat:28.03},"叙水":{lon:105.44,lat:28.19},"长宁":{lon:104.91,lat:28.6},"兴文":{lon:105.06,lat:28.36},"琪县":{lon:104.81,lat:28.38},"高县":{lon:104.52,lat:28.4},"筠连":{lon:104.53,lat:28.16},"屏由":{lon:104.15,lat:28.68},"乐由":{lon:103.73,lat:29.59},"夹江":{lon:103.59,lat:29.75},"洪雅":{lon:103.38,lat:29.95},"丹棱":{lon:103.53,lat:30.04},"青神":{lon:103.81,lat:29.86},"眉由":{lon:103.81,lat:30.05},"彭由":{lon:103.83,lat:30.22},"井研":{lon:104.06,lat:29.67},"仁寿":{lon:104.09,lat:30},"犍为":{lon:103.93,lat:29.21},"沐川":{lon:103.98,lat:28.96},"娥眉":{lon:103.5,lat:29.62},"马边":{lon:103.53,lat:28.87},"峨边":{lon:103.25,lat:29.23},"金口":{lon:103.13,lat:29.24},"涪陵":{lon:107.36,lat:29.7},"垫江":{lon:107.34,lat:30.36},"丰都":{lon:107.7,lat:29.89},"石柱":{lon:108.13,lat:29.98},"秀山":{lon:108.97,lat:28.47},"西阳":{lon:108.75,lat:28.85},"黔江":{lon:108.81,lat:29.53},"彭水":{lon:108.19,lat:29.29},"武隆":{lon:108.72,lat:29.29},"南川":{lon:107.13,lat:29.15},"万县":{lon:108.35,lat:30.83},"开县":{lon:108.39,lat:31.23},"城口":{lon:108.67,lat:31.98},"巫溪":{lon:109.6,lat:31.42},"巫山":{lon:109.86,lat:31.1},"奉节":{lon:109.52,lat:31.06},"云阳":{lon:108.89,lat:30.99},"忠县":{lon:108.03,lat:30.33},"梁平":{lon:107.78,lat:30.66},"南允":{lon:106.06,lat:30.8},"苍溪":{lon:105.96,lat:31.75},"阆中":{lon:105.97,lat:31.75},"仪陇":{lon:106.38,lat:31.52},"南部":{lon:106.03,lat:31.34},"西允":{lon:105.84,lat:31.01},"营山":{lon:106.57,lat:31.07},"蓬安":{lon:106.44,lat:31.04},"广安":{lon:106.61,lat:30.48},"岳池":{lon:106.43,lat:30.55},"武胜":{lon:106.3,lat:30.38},"华云":{lon:106.74,lat:30.41},"达县":{lon:107.49,lat:31.23},"万源":{lon:108.06,lat:32.07},"宜汉":{lon:107.71,lat:31.39},"开江":{lon:107.87,lat:31.1},"邻水":{lon:106.91,lat:30.36},"大竹":{lon:107.21,lat:30.75},"渠县":{lon:106.94,lat:30.85},"南江":{lon:106.83,lat:32.36},"巴中":{lon:106.73,lat:31.86},"平昌":{lon:107.11,lat:31.59},"通江":{lon:108.24,lat:31.95},"百沙":{lon:108.18,lat:32},"雅安":{lon:102.97,lat:29.97},"芦山":{lon:102.91,lat:30.17},"名山":{lon:103.06,lat:30.09},"荣经":{lon:102.81,lat:29.79},"汉源":{lon:102.66,lat:29.4},"石棉":{lon:102.38,lat:29.21},"天全":{lon:102.78,lat:30.09},"宝兴":{lon:102.84,lat:30.36},"马尔康":{lon:102.22,lat:31.92},"红原":{lon:102.55,lat:31.79},"阿坝":{lon:101.72,lat:31.93},"若尔盖":{lon:102.94,lat:33.62},"黑水":{lon:102.95,lat:32.06},"松潘":{lon:103.61,lat:32.64},"南坪":{lon:104.19,lat:33.23},"汶川":{lon:103.61,lat:31.46},"理县":{lon:103.16,lat:31.42},"小金":{lon:102.34,lat:30.97},"金川":{lon:102.03,lat:31.48},"壤塘":{lon:100.97,lat:32.3},"茂汶":{lon:103.89,lat:31.67},"康定":{lon:101.95,lat:30.04},"炉霍":{lon:100.65,lat:31.38},"甘孜":{lon:99.96,lat:31.64},"新龙":{lon:100.28,lat:30.96},"白玉":{lon:98.83,lat:32.23},"德格":{lon:98.57,lat:31.81},"石渠":{lon:98.06,lat:33.01},"色达":{lon:100.35,lat:32.3},"泸定":{lon:102.25,lat:29.92},"丹巴":{lon:101.87,lat:30.85},"九龙":{lon:101.53,lat:29.01},"雅江":{lon:101,lat:30.03},"道孚":{lon:101.14,lat:30.99},"理塘":{lon:100.28,lat:30.03},"乡城":{lon:99.78,lat:28.93},"稻城":{lon:100.31,lat:29.04},"巴塘":{lon:99,lat:30},"得荣":{lon:99.25,lat:28.71},"西昌":{lon:102.29,lat:27.92},"昭觉":{lon:102.83,lat:28.03},"甘洛":{lon:102.74,lat:28.96},"雷波":{lon:103.62,lat:28.21},"宁南":{lon:102.76,lat:27.07},"会东":{lon:102.55,lat:26.74},"会理":{lon:102.21,lat:26.67},"德昌":{lon:102.15,lat:27.4},"美姑":{lon:103.14,lat:28.33},"金阳":{lon:103.22,lat:27.73},"布拖":{lon:102.8,lat:27.7},"普格":{lon:102.52,lat:27.38},"喜德":{lon:102.42,lat:28.33},"越西":{lon:102.49,lat:28.66},"盐源":{lon:101.51,lat:27.42},"冕宁":{lon:102.15,lat:28.58},"木里":{lon:101.25,lat:27.9},"天津":{lon:117.2,lat:39.13},"宁河":{lon:117.83,lat:39.33},"静海":{lon:116.92,lat:38.93},"蓟县":{lon:117.4,lat:40.05},"宝坻":{lon:117.3,lat:39.75},"武清":{lon:117.05,lat:39.4},"银川":{lon:106.27,lat:38.47},"永宁":{lon:106.24,lat:38.28},"贺兰":{lon:106.35,lat:38.55},"石嘴山":{lon:106.39,lat:39.04},"平罗":{lon:106.54,lat:38.91},"陶乐":{lon:106.69,lat:38.82},"吴忠":{lon:106.21,lat:37.99},"同心":{lon:105.94,lat:36.97},"灵武":{lon:106.34,lat:38.1},"中宁":{lon:105.66,lat:37.48},"盐池":{lon:107.41,lat:37.78},"中卫":{lon:105.18,lat:37.51},"青铜峡":{lon:106.07,lat:38.02},"固原":{lon:106.28,lat:36.01},"西吉":{lon:105.7,lat:35.97},"泾源":{lon:106.33,lat:35.5},"海原":{lon:105.64,lat:36.56},"隆德":{lon:106.11,lat:35.63},"合肥":{lon:117.27,lat:31.86},"长丰":{lon:117.16,lat:32.47},"淮南":{lon:116.98,lat:32.62},"凤台":{lon:116.71,lat:32.68},"淮北":{lon:116.77,lat:33.97},"濉溪":{lon:116.76,lat:33.92},"芜湖":{lon:118.38,lat:31.33},"铜陵":{lon:117.82,lat:30.93},"蚌埠":{lon:117.34,lat:32.93},"马鞍山":{lon:118.48,lat:31.56},"安庆":{lon:117.03,lat:30.52},"宿州":{lon:116.97,lat:33.63},"宿县":{lon:116.97,lat:33.63},"砀山":{lon:116.34,lat:34.42},"萧县":{lon:116.93,lat:34.19},"吴壁":{lon:117.55,lat:33.55},"泗县":{lon:117.89,lat:33.49},"五河":{lon:117.87,lat:33.14},"固镇":{lon:117.32,lat:33.33},"怀远":{lon:117.19,lat:32.95},"滁州":{lon:118.31,lat:32.33},"嘉山":{lon:117.98,lat:32.78},"天长":{lon:119,lat:32.68},"来安":{lon:118.44,lat:32.44},"全椒":{lon:118.27,lat:32.1},"定远":{lon:117.68,lat:32.52},"凤阳":{lon:117.4,lat:32.86},"巢湖":{lon:117.87,lat:31.62},"巢县":{lon:117.87,lat:31.62},"肥东":{lon:117.47,lat:31.89},"含山":{lon:118.11,lat:31.7},"和县":{lon:118.37,lat:31.7},"无为":{lon:117.75,lat:31.3},"卢江":{lon:117.29,lat:31.23},"宣城":{lon:118.73,lat:31.95},"当涂":{lon:118.49,lat:31.55},"郎溪":{lon:119.17,lat:31.14},"广德":{lon:119.41,lat:30.89},"泾县":{lon:118.41,lat:30.68},"南陵":{lon:118.32,lat:30.91},"繁昌":{lon:118.21,lat:31.07},"宁国":{lon:118.95,lat:30.62},"青阳":{lon:117.84,lat:30.64},"屯溪":{lon:118.31,lat:29.72},"休宁":{lon:118.19,lat:29.81},"旌得":{lon:118.53,lat:30.28},"绩溪":{lon:118.57,lat:30.07},"歙县":{lon:118.44,lat:29.88},"祁门":{lon:117.7,lat:29.86},"黟县":{lon:117.92,lat:29.93},"太平":{lon:118.13,lat:30.28},"石台":{lon:117.48,lat:30.19},"桐城":{lon:116.94,lat:31.04},"纵阳":{lon:117.21,lat:30.69},"怀宁":{lon:116.63,lat:30.41},"望江":{lon:116.69,lat:30.12},"宿松":{lon:116.13,lat:30.15},"太湖":{lon:116.27,lat:30.42},"岳西":{lon:116.36,lat:30.84},"潜山":{lon:116.53,lat:30.62},"东至":{lon:116.99,lat:30.08},"贵池":{lon:117.48,lat:30.66},"六安":{lon:116.49,lat:31.73},"霍丘":{lon:116.27,lat:32.32},"寿县":{lon:116.78,lat:32.57},"肥西":{lon:117.15,lat:31.7},"舒城":{lon:116.94,lat:31.45},"霍山":{lon:116.32,lat:31.38},"金寨":{lon:115.87,lat:31.67},"阜阳":{lon:115.81,lat:32.89},"毫县":{lon:116.76,lat:33.86},"涡阳":{lon:116.21,lat:33.49},"蒙城":{lon:116.55,lat:33.25},"利辛":{lon:116.19,lat:33.12},"颖上":{lon:116.26,lat:32.62},"阜南":{lon:115.6,lat:32.63},"临泉":{lon:115.24,lat:33.06},"界首":{lon:115.34,lat:33.24},"太和":{lon:115.61,lat:33.16},"济南":{lon:117,lat:36.65},"历城":{lon:117.07,lat:36.69},"长清":{lon:116.73,lat:36.55},"章丘":{lon:117.53,lat:36.72},"青岛":{lon:120.33,lat:36.07},"崂山":{lon:120.42,lat:36.15},"胶南":{lon:119.97,lat:35.88},"即墨":{lon:120.45,lat:36.38},"胶县":{lon:120,lat:36.28},"淄博":{lon:118.05,lat:36.78},"枣庄":{lon:117.57,lat:34.86},"滕县":{lon:117.17,lat:35.09},"东营":{lon:118.49,lat:37.46},"垦利":{lon:118.54,lat:37.59},"利津":{lon:118.25,lat:37.49},"德州":{lon:116.29,lat:37.45},"宁津":{lon:116.8,lat:37.64},"乐陵":{lon:117.22,lat:37.74},"商河":{lon:117.15,lat:37.31},"济阳":{lon:117.2,lat:36.97},"禹城":{lon:116.66,lat:36.95},"夏津":{lon:116,lat:36.95},"陵县":{lon:116.58,lat:37.34},"庆云":{lon:117.37,lat:37.37},"临邑":{lon:116.86,lat:37.2},"齐河":{lon:116.76,lat:36.79},"平原":{lon:116.44,lat:37.16},"武城":{lon:116.08,lat:37.2},"滨州":{lon:118.03,lat:37.36},"滨县":{lon:117.97,lat:37.47},"广饶":{lon:118.41,lat:37.04},"桓台":{lon:118.12,lat:36.95},"邹平":{lon:117.75,lat:36.89},"阳信":{lon:117.58,lat:37.65},"沾化":{lon:118.14,lat:37.7},"博兴":{lon:118.12,lat:37.12},"高青":{lon:117.66,lat:37.18},"惠民":{lon:117.51,lat:17.49},"无棣":{lon:117.58,lat:37.73},"潍坊":{lon:119.1,lat:36.62},"潍县":{lon:119.22,lat:36.77},"平度":{lon:119.97,lat:36.77},"诸城":{lon:119.42,lat:35.99},"安丘":{lon:119.2,lat:36.42},"临朐":{lon:118.53,lat:36.5},"寿光":{lon:118.73,lat:36.86},"昌邑":{lon:119.41,lat:36.86},"高密":{lon:119.75,lat:36.38},"五莲":{lon:119.2,lat:35.74},"昌乐":{lon:118.83,lat:36.69},"高都":{lon:118.47,lat:36.69},"烟台":{lon:121.39,lat:37.52},"牟平":{lon:121.59,lat:37.38},"文登":{lon:122.05,lat:37.2},"海阳":{lon:121.17,lat:36.76},"莱阳":{lon:120.71,lat:36.97},"栖霞":{lon:120.83,lat:37.28},"掖县":{lon:119.93,lat:37.18},"长岛":{lon:120.73,lat:37.91},"威海":{lon:122.1,lat:37.5},"福山":{lon:121.27,lat:37.49},"荣成":{lon:122.41,lat:37.16},"乳山":{lon:121.52,lat:36.89},"莱西":{lon:120.53,lat:36.86},"招远":{lon:120.38,lat:37.35},"黄县":{lon:120.51,lat:37.64},"蓬莱":{lon:120.75,lat:37.8},"临沂":{lon:118.35,lat:35.05},"沂水":{lon:118.64,lat:35.78},"日照":{lon:119.46,lat:35.42},"临沭":{lon:118.73,lat:34.89},"仓山":{lon:118.03,lat:34.84},"平邑":{lon:117.63,lat:35.49},"沂源":{lon:118.17,lat:36.18},"沂南":{lon:118.47,lat:35.54},"营县":{lon:118.83,lat:35.57},"莒南":{lon:118.83,lat:35.17},"郯城":{lon:118.35,lat:34.61},"费县":{lon:117.97,lat:35.26},"蒙阴":{lon:117.95,lat:35.7},"泰安":{lon:117.13,lat:36.18},"莱芜":{lon:117.67,lat:36.19},"肥城":{lon:116.76,lat:36.24},"平阴":{lon:116.46,lat:36.29},"新汶":{lon:117.67,lat:35.86},"新泰":{lon:117.76,lat:35.91},"宁阳":{lon:116.8,lat:35.76},"东平":{lon:116.3,lat:35.91},"济宁":{lon:116.59,lat:35.38},"兖州":{lon:116.83,lat:35.54},"泗水":{lon:117.27,lat:35.65},"鱼台":{lon:116.65,lat:35},"嘉祥":{lon:116.34,lat:35.41},"汶上":{lon:116.49,lat:35.71},"曲阜":{lon:116.98,lat:35.59},"邹县":{lon:116.97,lat:35.39},"微山":{lon:117.12,lat:34.8},"金乡":{lon:116.32,lat:35.07},"荷泽":{lon:115.43,lat:35.24},"郓城":{lon:115.94,lat:35.59},"巨野":{lon:116.08,lat:35.38},"单县":{lon:116.07,lat:34.82},"曹县":{lon:115.53,lat:34.83},"鄄城":{lon:115.5,lat:35.57},"梁山":{lon:116.1,lat:35.8},"成武":{lon:115.88,lat:34.97},"定陶":{lon:115.57,lat:35.07},"东明":{lon:115.08,lat:35.31},"聊城":{lon:115.97,lat:36.45},"高唐":{lon:116.23,lat:36.86},"东阿":{lon:116.23,lat:36.32},"莘县":{lon:115.67,lat:36.24},"临清":{lon:115.72,lat:36.68},"茌平":{lon:116.27,lat:36.58},"阳谷":{lon:115.78,lat:36.11},"冠县":{lon:115.45,lat:35.47},"太原":{lon:112.53,lat:37.87},"阳曲":{lon:112.65,lat:38.05},"娄烦":{lon:111.78,lat:38.05},"清徐":{lon:112.33,lat:37.62},"大同":{lon:113.3,lat:40.12},"阳泉":{lon:113.57,lat:37.85},"长治":{lon:113.08,lat:36.18},"天镇":{lon:114.08,lat:40.42},"灵丘":{lon:114.2,lat:39.47},"怀仁":{lon:113.1,lat:39.82},"山阴":{lon:112.82,lat:39.52},"平鲁":{lon:112.12,lat:39.53},"右玉":{lon:112.33,lat:40.18},"阳高":{lon:113.72,lat:40.38},"广灵":{lon:113.27,lat:39.75},"浑源":{lon:113.68,lat:39.7},"应县":{lon:113.18,lat:39.58},"朔县":{lon:112.42,lat:39.32},"左云":{lon:112.67,lat:40.02},"忻县":{lon:112.7,lat:38.38},"代县":{lon:112.97,lat:39.07},"五台":{lon:113.32,lat:38.72},"静乐":{lon:111.9,lat:38.37},"保德":{lon:111.09,lat:38.01},"河曲":{lon:111.17,lat:39.38},"神池":{lon:112.17,lat:39.1},"原平":{lon:112.7,lat:38.73},"繁峙":{lon:113.28,lat:39.2},"定襄":{lon:112.95,lat:38.5},"岢岚":{lon:111.58,lat:38.7},"五寨":{lon:111.82,lat:38.93},"偏关":{lon:111.47,lat:39.45},"宁武":{lon:112.28,lat:39},"榆次":{lon:112.72,lat:37.68},"孟县":{lon:113.37,lat:38.01},"昔阳":{lon:113.68,lat:37.62},"左权":{lon:113.35,lat:37.07},"太谷":{lon:112.53,lat:37.42},"平遥":{lon:112.18,lat:37.2},"灵石":{lon:111.77,lat:36.83},"寿阳":{lon:113.17,lat:37.88},"平定":{lon:113.62,lat:37.79},"和顺":{lon:113.55,lat:37.33},"榆社":{lon:112.97,lat:37.08},"祁县":{lon:112.33,lat:37.36},"介休":{lon:111.88,lat:37.03},"离石":{lon:111.13,lat:37.53},"兴县":{lon:111.22,lat:38.47},"方由":{lon:111.24,lat:37.86},"岚县":{lon:111.62,lat:38.28},"交城":{lon:112.14,lat:37.55},"文水":{lon:112.02,lat:37.42},"汾阳":{lon:111.75,lat:37.27},"孝义":{lon:111.8,lat:37.12},"交口":{lon:111.2,lat:36.97},"石楼":{lon:110.83,lat:37},"中阳":{lon:111.17,lat:37.37},"临县":{lon:110.95,lat:37.95},"柳林":{lon:110.85,lat:37.45},"襄垣":{lon:113.02,lat:36.55},"黎城":{lon:113.4,lat:36.56},"壶关":{lon:113.23,lat:35.11},"高平":{lon:112.88,lat:35.48},"阳城":{lon:112.38,lat:35.84},"长子":{lon:112.87,lat:36.13},"沁源":{lon:112.32,lat:36.5},"潞城":{lon:113.22,lat:36.33},"武乡":{lon:112.83,lat:36.83},"平顺":{lon:113.43,lat:36.19},"陵川":{lon:113.27,lat:35.78},"晋城":{lon:112.83,lat:35.52},"沁水":{lon:112.15,lat:35.67},"屯留":{lon:112.87,lat:36.32},"沁县":{lon:112.68,lat:36.75},"临汾":{lon:111.5,lat:36.08},"汾西":{lon:111.53,lat:36.63},"安泽":{lon:112.2,lat:36.15},"古县":{lon:111.9,lat:36.29},"翼城":{lon:111.68,lat:35.73},"曲沃":{lon:111.33,lat:35.63},"吉县":{lon:110.65,lat:36.12},"大宁":{lon:110.72,lat:36.47},"侯马":{lon:111.45,lat:35.03},"永和":{lon:110.64,lat:36.62},"洪洞":{lon:111.68,lat:36.25},"霍县":{lon:111.72,lat:36.57},"浮山":{lon:111.83,lat:35.97},"襄汾":{lon:111.43,lat:35.86},"乡宁":{lon:110.8,lat:35.97},"蒲县":{lon:111.07,lat:36.42},"运城":{lon:110.97,lat:35.03},"闻喜":{lon:111.2,lat:35.37},"垣曲":{lon:111.63,lat:35.3},"芮城":{lon:110.68,lat:34.71},"临猗":{lon:110.78,lat:35.15},"新绛":{lon:111.22,lat:35.62},"河津":{lon:110.7,lat:35.58},"夏县":{lon:111.22,lat:35.12},"绛县":{lon:111.58,lat:35.48},"平陆":{lon:111.2,lat:34.12},"永济":{lon:110.42,lat:34.88},"万荣":{lon:110.83,lat:35.42},"稷山":{lon:110.97,lat:35.6},"广州":{lon:113.23,lat:23.16},"花县":{lon:113.19,lat:23.4},"新十":{lon:114.2,lat:24.09},"增城":{lon:113.81,lat:23.13},"从化":{lon:113.55,lat:23.57},"龙门":{lon:114.25,lat:23.75},"番禺":{lon:113.36,lat:22.95},"汕头":{lon:116.69,lat:23.39},"洪江":{lon:110.38,lat:21.2},"茂名":{lon:110.88,lat:21.68},"佛山":{lon:113.11,lat:23.05},"江门":{lon:113.06,lat:22.61},"深圳":{lon:114.07,lat:22.62},"宝安":{lon:113.85,lat:22.58},"珠海":{lon:113.52,lat:22.3},"韶关":{lon:113.62,lat:24.84},"曲江":{lon:113.58,lat:24.68},"乐昌":{lon:113.35,lat:25.14},"仁化":{lon:113.73,lat:25.11},"南雄":{lon:114.33,lat:25.14},"始兴":{lon:114.08,lat:24.78},"翁源":{lon:114.13,lat:24.36},"佛岗":{lon:113.52,lat:23.86},"英德":{lon:113.38,lat:24.17},"清远":{lon:113.01,lat:23.7},"阳山":{lon:112.65,lat:24.48},"连县":{lon:112.4,lat:24.77},"连山":{lon:112.07,lat:24.59},"连南":{lon:112.28,lat:24.77},"惠州":{lon:114.4,lat:23.09},"惠阳":{lon:114.4,lat:23.09},"博罗":{lon:114.28,lat:23.18},"河源":{lon:114.68,lat:23.73},"连平":{lon:114.48,lat:24.39},"和平":{lon:114.89,lat:24.45},"龙川":{lon:115.25,lat:24.09},"紫金":{lon:115.18,lat:23.64},"惠东":{lon:114.7,lat:22.97},"东莞":{lon:113.75,lat:23.04},"梅州":{lon:116.1,lat:24.55},"梅县":{lon:116.1,lat:24.55},"平远":{lon:117.9,lat:24.59},"蕉岭":{lon:116.18,lat:24.66},"大埔":{lon:116.7,lat:24.34},"丰顺":{lon:116.18,lat:23.78},"五华":{lon:115.75,lat:23.93},"兴宁":{lon:115.75,lat:24.15},"潮州":{lon:116.63,lat:23.68},"澄海":{lon:116.8,lat:23.48},"潮安":{lon:116.63,lat:23.68},"饶平":{lon:117.01,lat:23.7},"南澳":{lon:117.03,lat:23.44},"潮阳":{lon:116.61,lat:23.27},"惠来":{lon:116.29,lat:23.07},"陆丰":{lon:117.64,lat:22.95},"海丰":{lon:117.33,lat:22.98},"普宁":{lon:116.17,lat:23.29},"揭西":{lon:115.82,lat:23.45},"揭阳":{lon:116.35,lat:23.55},"南海":{lon:113.11,lat:23.05},"三水":{lon:112.89,lat:23.18},"顺德":{lon:113.24,lat:22.84},"中山":{lon:113.38,lat:22.52},"斗门":{lon:113.25,lat:22.2},"新会":{lon:113.02,lat:22.52},"鹤山":{lon:112.94,lat:22.76},"开平":{lon:112.68,lat:22.36},"台山":{lon:112.78,lat:22.27},"恩平":{lon:112.29,lat:22.21},"高明":{lon:112.76,lat:21.71},"廉江":{lon:110.27,lat:21.63},"化州":{lon:110.59,lat:21.64},"高州":{lon:110.83,lat:21.95},"信宜":{lon:110.9,lat:22.36},"阳春":{lon:111.78,lat:22.16},"阳江":{lon:111.95,lat:21.85},"电白":{lon:110.99,lat:21.52},"吴川":{lon:110.78,lat:21.43},"徐闻":{lon:110.17,lat:20.34},"海康":{lon:110.07,lat:20.91},"遂溪":{lon:110.24,lat:21.39},"肇庆":{lon:112.44,lat:23.05},"高要":{lon:112.44,lat:23.05},"怀集":{lon:112.18,lat:23.93},"广宁":{lon:112.43,lat:23.14},"四会":{lon:112.68,lat:23.36},"新兴":{lon:112.2,lat:22.68},"云浮":{lon:112.02,lat:22.93},"罗定":{lon:111.56,lat:22.77},"郁南":{lon:111.51,lat:23.23},"德庆":{lon:111.75,lat:23.15},"封开":{lon:111.48,lat:23.45},"南宁":{lon:108.33,lat:22.84},"柳州":{lon:109.4,lat:24.33},"桂林":{lon:110.28,lat:25.29},"梧州":{lon:111.34,lat:23.51},"凭祥":{lon:106.75,lat:22.11},"邕宁":{lon:108.49,lat:22.74},"武鸣":{lon:108.27,lat:23.17},"马山":{lon:108.2,lat:23.73},"上林":{lon:108.59,lat:23.44},"宾阳":{lon:108.8,lat:23.22},"横县":{lon:109.2,lat:22.69},"扶绥":{lon:107.92,lat:22.65},"崇左":{lon:107.37,lat:22.42},"宁明":{lon:107.08,lat:22.12},"龙州":{lon:106.84,lat:22.36},"大新":{lon:107.21,lat:22.85},"天等":{lon:107.12,lat:23.08},"隆安":{lon:107.68,lat:23.18},"河池":{lon:108.06,lat:24.7},"环江":{lon:108.26,lat:24.83},"罗城":{lon:108.9,lat:24.79},"宜山":{lon:108.64,lat:24.47},"东兰":{lon:107.36,lat:24.53},"凤山":{lon:107.05,lat:24.55},"天峨":{lon:107.16,lat:25.01},"南丹":{lon:107.54,lat:24.98},"都安":{lon:108.09,lat:23.94},"巴马":{lon:107.25,lat:24.15},"合山":{lon:108.89,lat:23.82},"柳城":{lon:109.24,lat:24.67},"融安":{lon:109.37,lat:24.24},"鹿寨":{lon:109.74,lat:24.49},"象州":{lon:109.7,lat:23.98},"武宜":{lon:109.66,lat:23.6},"柳江":{lon:109.34,lat:24.27},"来宾":{lon:109.24,lat:23.76},"忻城":{lon:108.66,lat:24.07},"融水":{lon:109.24,lat:25.07},"三江":{lon:109.58,lat:25.8},"金秀":{lon:110.18,lat:24.14},"临桂":{lon:110.22,lat:25.22},"灵川":{lon:110.33,lat:25.42},"兴安":{lon:110.66,lat:25.6},"资源":{lon:110.66,lat:26.03},"全州":{lon:111.06,lat:25.96},"灌阳":{lon:111.14,lat:25.49},"恭城":{lon:110.81,lat:24.85},"平乐":{lon:110.66,lat:24.64},"荔浦":{lon:110.38,lat:24.51},"永福":{lon:109.98,lat:24.99},"龙胜":{lon:110.02,lat:25.78},"苍悟":{lon:111.22,lat:23.51},"钟山":{lon:111.3,lat:24.53},"富川":{lon:110.26,lat:24.83},"贺县":{lon:111.54,lat:24.44},"岑溪":{lon:111,lat:22.95},"藤县":{lon:110.9,lat:23.36},"蒙山":{lon:110.54,lat:24.22},"昭平":{lon:110.8,lat:24.18},"玉林":{lon:110.14,lat:22.64},"桂平":{lon:110.07,lat:23.38},"平南":{lon:110.4,lat:23.55},"容县":{lon:110.53,lat:22.87},"北流":{lon:110.33,lat:22.71},"陆川":{lon:110.25,lat:22.33},"博白":{lon:109.98,lat:22.27},"贵县":{lon:109.6,lat:23.11},"北海":{lon:109.12,lat:21.49},"钦州":{lon:108.61,lat:21.96},"灵山":{lon:109.29,lat:22.44},"浦北":{lon:109.56,lat:22.27},"合浦":{lon:109.2,lat:21.33},"上思":{lon:107.98,lat:22.16},"防城":{lon:108.35,lat:21.78},"百色":{lon:106.62,lat:23.91},"凌云":{lon:106.55,lat:24.35},"乐业":{lon:106.56,lat:24.78},"田阳":{lon:106.9,lat:23.75},"田东":{lon:107.12,lat:23.62},"平果":{lon:107.59,lat:23.33},"德保":{lon:106.6,lat:23.34},"靖西":{lon:106.41,lat:23.15},"那坡":{lon:105.85,lat:23.42},"西林":{lon:105.08,lat:24.51},"田林":{lon:106.24,lat:24.31},"隆林":{lon:105.34,lat:24.8},"乌鲁木齐":{lon:87.68,lat:43.77},"克拉玛依":{lon:84.77,lat:45.59},"石河子":{lon:85.94,lat:44.27},"吐鲁番":{lon:89.19,lat:42.91},"托克逊":{lon:88.63,lat:42.77},"鄯善":{lon:90.25,lat:42.82},"哈密":{lon:93.44,lat:42.78},"伊吾":{lon:94.65,lat:43.28},"巴里坤":{lon:93,lat:43.6},"库尔勒":{lon:86.06,lat:41.68},"和静":{lon:86.35,lat:42.31},"和硕":{lon:86.84,lat:42.23},"博湖":{lon:86.53,lat:41.95},"尉梨":{lon:86.24,lat:41.36},"轮台":{lon:84.25,lat:41.77},"焉耆":{lon:86.55,lat:42.05},"和田":{lon:79.94,lat:37.12},"民丰":{lon:82.63,lat:37.07},"策勒":{lon:80.78,lat:37.04},"于田":{lon:81.63,lat:36.86},"洛浦":{lon:80.17,lat:37.12},"皮山":{lon:78.29,lat:37.06},"墨玉":{lon:79.74,lat:37.31},"阿克苏":{lon:80.29,lat:41.15},"温宿":{lon:80.24,lat:41.29},"拜城":{lon:81.84,lat:41.82},"库车":{lon:82.97,lat:41.68},"新和":{lon:82.63,lat:41.55},"沙雅":{lon:82.9,lat:41.25},"阿瓦提":{lon:80.34,lat:40.64},"柯平":{lon:79.06,lat:40.55},"乌什":{lon:79.25,lat:41.22},"咯什":{lon:75.94,lat:39.52},"巴楚":{lon:78.59,lat:39.78},"枷师":{lon:76.78,lat:39.46},"乐普湖":{lon:76.67,lat:39.23},"麦盖提":{lon:77.62,lat:38.95},"莎车":{lon:77.25,lat:38.45},"泽普":{lon:77.26,lat:38.2},"叶城":{lon:77.42,lat:37.89},"疏勒":{lon:76.05,lat:39.41},"英吉沙":{lon:76.17,lat:38.91},"疏附":{lon:75.83,lat:39.42},"塔什库尔干":{lon:75.22,lat:37.76},"阿图什":{lon:76.12,lat:39.73},"阿合奇":{lon:78.42,lat:41.91},"阿克陶":{lon:75.94,lat:39.14},"乌恰":{lon:75.18,lat:39.7},"昌吉":{lon:87.31,lat:44.05},"阜康":{lon:87.94,lat:44.14},"奇台":{lon:89.52,lat:44.02},"吉木萨尔":{lon:89.14,lat:44},"米泉":{lon:87.68,lat:43.97},"玛纳斯":{lon:86.22,lat:44.28},"呼图壁":{lon:86.92,lat:44.18},"木垒":{lon:90.34,lat:43.8},"博乐":{lon:82.1,lat:44.93},"精河":{lon:82.92,lat:44.67},"温泉":{lon:81.08,lat:44.95},"伊宁":{lon:81.33,lat:43.91},"尼勒克":{lon:82.53,lat:43.82},"新源":{lon:83.27,lat:43.41},"巩留":{lon:82.23,lat:43.35},"奎屯":{lon:84.89,lat:44.45},"特克斯":{lon:81.81,lat:43.23},"昭苏":{lon:81.08,lat:43.15},"霍城":{lon:80.87,lat:44.07},"察布察尔":{lon:81.12,lat:43.82},"塔城":{lon:82.96,lat:46.74},"额敏":{lon:83.62,lat:46.52},"乌苏":{lon:84.62,lat:44.45},"托里":{lon:83.59,lat:45.92},"裕民":{lon:82.94,lat:46.21},"沙湾":{lon:85.56,lat:44.29},"和布克赛尔":{lon:85.13,lat:46.78},"阿勒泰":{lon:88.14,lat:47.86},"青河":{lon:90.37,lat:46.71},"富蕴":{lon:89.44,lat:47.05},"福海":{lon:87.51,lat:47.15},"吉木乃":{lon:85.84,lat:47.42},"布尔津":{lon:86.92,lat:47.7},"哈巴河":{lon:86.41,lat:48.05},"南京":{lon:118.78,lat:32.04},"江宁":{lon:118.83,lat:31.95},"六合":{lon:118.83,lat:32.36},"江浦":{lon:118.62,lat:32.07},"徐州":{lon:117.2,lat:34.26},"连云港":{lon:119.16,lat:34.59},"南通":{lon:120.86,lat:32.01},"苏州":{lon:120.62,lat:31.32},"无锡":{lon:120.29,lat:31.59},"常州":{lon:119.95,lat:31.79},"丰县":{lon:116.57,lat:34.79},"沛县":{lon:116.93,lat:34.73},"赣榆":{lon:119.11,lat:34.83},"东海":{lon:118.75,lat:34.54},"新沂":{lon:118.33,lat:34.38},"邳县":{lon:117.97,lat:34.3},"睢宁":{lon:117.94,lat:33.89},"铜山":{lon:117.2,lat:34.26},"清江":{lon:119.02,lat:33.59},"灌云":{lon:119.23,lat:34.3},"灌南":{lon:119.36,lat:34.09},"沭阳":{lon:118.79,lat:34.12},"宿迁":{lon:118.3,lat:33.96},"泗阳":{lon:118.68,lat:33.73},"盱眙":{lon:118.05,lat:33},"涟水":{lon:119.26,lat:33.77},"淮阴":{lon:119.02,lat:33.62},"淮安":{lon:119.15,lat:33.5},"洪泽":{lon:118.85,lat:33.28},"泗洪":{lon:118.23,lat:33.46},"金湖":{lon:119.02,lat:33.01},"盐城":{lon:120.13,lat:33.38},"滨海":{lon:119.84,lat:34.01},"阜宁":{lon:119.79,lat:33.78},"射阳":{lon:120.26,lat:33.77},"建湖":{lon:119.77,lat:33.46},"响水":{lon:119.56,lat:34.2},"大丰":{lon:120.45,lat:33.19},"东台":{lon:120.31,lat:32.84},"海安":{lon:120.45,lat:32.57},"如皋":{lon:120.56,lat:32.39},"如东":{lon:121.18,lat:32.33},"启东":{lon:121.66,lat:31.8},"海门":{lon:121.15,lat:31.89},"扬州":{lon:119.42,lat:32.39},"宝应":{lon:119.32,lat:33.23},"兴化":{lon:119.82,lat:32.93},"高邮":{lon:119.45,lat:32.78},"泰兴":{lon:120.02,lat:32.16},"泰县":{lon:120.15,lat:32.51},"泰州":{lon:119.9,lat:32.49},"靖江":{lon:120.26,lat:32.03},"江都":{lon:119.55,lat:32.43},"邗江":{lon:119.42,lat:32.39},"仪征":{lon:119.16,lat:32.27},"镇江":{lon:119.44,lat:32.2},"丹徒":{lon:119.44,lat:32.2},"扬中":{lon:119.81,lat:32.24},"丹阳":{lon:119.55,lat:32},"武进":{lon:119.95,lat:31.78},"宜兴":{lon:119.82,lat:31.36},"金坛":{lon:119.56,lat:31.74},"溧阳":{lon:119.48,lat:31.43},"句容":{lon:119.16,lat:31.95},"溧水":{lon:119.02,lat:31.65},"高淳":{lon:118.87,lat:31.32},"江阴":{lon:120.26,lat:31.91},"沙洲":{lon:120.55,lat:31.86},"常熟":{lon:120.74,lat:31.64},"太仓":{lon:121.1,lat:31.45},"昆山":{lon:120.95,lat:31.39},"吴县":{lon:120.62,lat:31.32},"吴江":{lon:120.63,lat:31.16},"南昌":{lon:115.89,lat:28.68},"新建":{lon:115.8,lat:28.69},"景德镇":{lon:117.22,lat:29.3},"萍乡":{lon:113.85,lat:27.6},"九江":{lon:115.97,lat:29.71},"彭泽":{lon:116.56,lat:29.9},"湖口":{lon:116.23,lat:29.75},"都昌":{lon:116.19,lat:29.29},"星子":{lon:116.03,lat:29.47},"永修":{lon:115.82,lat:29.04},"德安":{lon:115.75,lat:29.33},"瑞昌":{lon:115.65,lat:29.68},"武宁":{lon:115.09,lat:29.26},"修永":{lon:114.55,lat:29.04},"上饶":{lon:117.97,lat:28.47},"婺源":{lon:117.83,lat:29.25},"德兴":{lon:117.58,lat:28.96},"玉山":{lon:118.25,lat:28.68},"广丰":{lon:118.2,lat:28.45},"铅山":{lon:117.71,lat:28.32},"横峰":{lon:117.62,lat:28.42},"鹰潭":{lon:117.02,lat:28.23},"贵溪":{lon:117.2,lat:28.3},"余江":{lon:116.82,lat:28.22},"万年":{lon:117.08,lat:28.7},"乐平":{lon:117.12,lat:28.97},"波阳":{lon:116.68,lat:29},"于干":{lon:116.69,lat:28.7},"弋阳":{lon:117.43,lat:28.42},"宜春":{lon:114.38,lat:27.81},"万载":{lon:114.44,lat:28.11},"铜鼓":{lon:114.37,lat:28.53},"宜丰":{lon:114.78,lat:28.4},"上高":{lon:114.91,lat:28.25},"安义":{lon:115.55,lat:28.86},"奉新":{lon:115.38,lat:28.71},"高安":{lon:115.38,lat:28.42},"丰城":{lon:115.7,lat:28.19},"清江2":{lon:115.54,lat:28.07},"新余":{lon:114.92,lat:27.81},"分宜":{lon:114.68,lat:27.82},"靖安":{lon:115.37,lat:28.88},"抚州":{lon:116.34,lat:28},"临川":{lon:116.29,lat:27.95},"金溪":{lon:116.77,lat:27.92},"资溪":{lon:117.06,lat:27.7},"黎川":{lon:116.91,lat:27.3},"南丰":{lon:116.52,lat:27.22},"南城":{lon:116.62,lat:27.56},"宜黄":{lon:116.2,lat:27.55},"崇仁":{lon:116.05,lat:27.75},"乐安":{lon:115.82,lat:27.44},"东乡":{lon:116.61,lat:28.23},"进贤":{lon:116.26,lat:28.37},"吉安":{lon:114.97,lat:27.12},"新干":{lon:115.4,lat:27.77},"峡江":{lon:115.15,lat:27.56},"吉水":{lon:115.14,lat:27.22},"永丰":{lon:115.42,lat:27.33},"泰和":{lon:114.88,lat:26.81},"万安":{lon:114.77,lat:26.47},"遂川":{lon:114.5,lat:26.33},"宁冈":{lon:113.97,lat:26.71},"永新":{lon:114.23,lat:26.96},"莲花":{lon:113.94,lat:27.14},"安福":{lon:114.62,lat:27.39},"井冈山":{lon:114.17,lat:26.57},"赣州":{lon:114.92,lat:25.85},"广昌":{lon:116.32,lat:26.84},"石城":{lon:116.32,lat:26.34},"宁都":{lon:116,lat:26.46},"兴国":{lon:115.33,lat:26.32},"于都":{lon:115.39,lat:25.96},"瑞金":{lon:116.02,lat:25.89},"会昌":{lon:115.79,lat:25.58},"安远":{lon:115.41,lat:25.15},"寻乌":{lon:115.64,lat:24.96},"定南":{lon:115.02,lat:24.7},"龙南":{lon:114.79,lat:24.91},"全南":{lon:114.53,lat:24.76},"信丰":{lon:114.94,lat:25.39},"赣县":{lon:114.02,lat:25.85},"南康":{lon:114.75,lat:25.66},"上犹":{lon:114.55,lat:25.8},"崇义":{lon:114.31,lat:25.69},"大余":{lon:114.36,lat:25.39},"石家庄":{lon:114.48,lat:38.03},"唐山":{lon:118.02,lat:39.63},"行唐":{lon:114.54,lat:38.42},"灵寿":{lon:114.38,lat:38.31},"束鹿":{lon:115.18,lat:37.94},"晋县":{lon:115.03,lat:38.03},"藁城":{lon:114.84,lat:38.03},"高邑":{lon:114.58,lat:37.62},"赵县":{lon:114.78,lat:37.76},"井陉":{lon:114.13,lat:38.03},"获鹿":{lon:114.03,lat:38.08},"新乐":{lon:114.67,lat:38.33},"正定":{lon:114.56,lat:38.13},"深泽":{lon:115.2,lat:38.2},"无极":{lon:114.96,lat:38.16},"赞皇":{lon:114.35,lat:37.65},"元氏":{lon:114.5,lat:37.74},"栾城":{lon:114.64,lat:38.87},"平山":{lon:114.24,lat:38.2},"邯郸":{lon:114.47,lat:36.6},"永年":{lon:114.5,lat:36.77},"曲周":{lon:114.92,lat:36.78},"馆陶":{lon:115.4,lat:36.47},"魏县":{lon:114.94,lat:36.37},"成安":{lon:114.68,lat:36.43},"大名":{lon:115.14,lat:36.28},"涉县":{lon:113.67,lat:36.57},"鸡泽":{lon:113.85,lat:36.95},"丘县":{lon:115.18,lat:36.84},"广平":{lon:114.94,lat:36.49},"肥乡":{lon:114.8,lat:36.56},"临漳":{lon:114.62,lat:36.35},"磁县":{lon:114.37,lat:36.37},"武安":{lon:114.2,lat:36.7},"邢台":{lon:114.48,lat:37.05},"柏乡":{lon:114.68,lat:37.49},"宁普":{lon:114.9,lat:37.62},"隆尧":{lon:114.75,lat:37.35},"临西":{lon:115.5,lat:36.87},"南官":{lon:115.37,lat:37.37},"巨鹿":{lon:115.03,lat:37.22},"任县":{lon:114.68,lat:37.11},"沙河":{lon:114.52,lat:36.94},"临城":{lon:114.5,lat:37.43},"内丘":{lon:114.5,lat:37.28},"新河":{lon:115.22,lat:37.53},"清河":{lon:115.67,lat:37.07},"威县":{lon:115.08,lat:36.97},"广宗":{lon:115.14,lat:37.06},"平乡":{lon:115.02,lat:37.06},"南和":{lon:114.71,lat:37},"保定":{lon:115.48,lat:38.85},"涞水":{lon:115.71,lat:39.39},"涿县":{lon:115.98,lat:39.48},"定兴":{lon:115.78,lat:39.28},"容城":{lon:115.86,lat:39.06},"安新":{lon:115.92,lat:38.92},"蠡县":{lon:115.58,lat:38.49},"博野":{lon:115.46,lat:38.46},"定县":{lon:114.02,lat:38.52},"阜平":{lon:114.18,lat:38.85},"唐县":{lon:114.97,lat:38.75},"涞源":{lon:114.67,lat:39.37},"易县":{lon:115.49,lat:39.35},"新城":{lon:115.84,lat:39.34},"雄县":{lon:116.1,lat:38.98},"徐水":{lon:115.65,lat:39.02},"高阳":{lon:115.78,lat:38.68},"安国":{lon:115.3,lat:38.41},"清苑":{lon:115.47,lat:38.76},"望都":{lon:115.14,lat:38.71},"曲阳":{lon:114.68,lat:38.62},"完县":{lon:115.12,lat:38.84},"满城":{lon:115.45,lat:38.95},"张家口":{lon:114.87,lat:40.82},"康保":{lon:114.6,lat:41.87},"赤城":{lon:115.82,lat:40.92},"怀来":{lon:115.54,lat:40.4},"蔚县":{lon:114.53,lat:39.83},"宣化":{lon:115.03,lat:40.63},"张北":{lon:114.7,lat:41.15},"沽源":{lon:115.68,lat:41.68},"崇礼":{lon:115.25,lat:40.98},"涿鹿":{lon:115.2,lat:40.37},"阳原":{lon:114.15,lat:40.12},"怀安":{lon:114.38,lat:40.67},"尚义":{lon:113.95,lat:41.05},"万全":{lon:114.73,lat:40.84},"承德":{lon:117.93,lat:40.97},"围场":{lon:117.72,lat:41.95},"平泉":{lon:118.68,lat:41.02},"宽城":{lon:118.47,lat:40.62},"兴隆":{lon:117.48,lat:40.42},"滦平":{lon:117.53,lat:40.95},"隆化":{lon:117.7,lat:41.32},"青龙":{lon:118.93,lat:40.43},"丰宁":{lon:116.63,lat:41.2},"秦皇岛":{lon:119.57,lat:39.95},"迁西":{lon:118.3,lat:40.15},"迁安":{lon:118.69,lat:40.02},"昌黎":{lon:119.15,lat:39.72},"卢龙":{lon:118.85,lat:39.89},"滦南":{lon:118.67,lat:39.49},"玉田":{lon:117.9,lat:39.9},"唐海":{lon:118.54,lat:39.31},"遵化":{lon:117.97,lat:40.2},"抚宁":{lon:119.22,lat:39.88},"乐亭":{lon:118.9,lat:39.43},"滦县":{lon:118.73,lat:39.74},"丰南":{lon:118.1,lat:39.58},"丰润":{lon:118.13,lat:39.82},"廊坊":{lon:116.7,lat:39.53},"安次":{lon:116.69,lat:39.52},"三河":{lon:117.06,lat:39.97},"香河":{lon:117,lat:39.76},"霸县":{lon:116.38,lat:39.12},"固安":{lon:116.29,lat:39.44},"大城":{lon:116.63,lat:38.7},"文安":{lon:116.45,lat:38.87},"永清":{lon:116.48,lat:39.32},"大厂":{lon:116.98,lat:39.98},"沧州":{lon:116.83,lat:38.33},"黄骅":{lon:117.33,lat:38.4},"盐山":{lon:117.22,lat:38.07},"吴桥":{lon:116.37,lat:37.65},"东光":{lon:116.52,lat:37.89},"肃宁":{lon:115.82,lat:38.43},"河间":{lon:116.07,lat:38.45},"泊头":{lon:116.56,lat:38.08},"交河":{lon:116.27,lat:38.02},"青县":{lon:116.8,lat:38.58},"海兴":{lon:117.85,lat:38.17},"南皮":{lon:116.7,lat:38.05},"任丘":{lon:116.08,lat:38.72},"献县":{lon:116.12,lat:38.2},"孟村":{lon:117.1,lat:38.06},"衡水":{lon:115.72,lat:37.72},"饶阳":{lon:115.74,lat:38.24},"阜城":{lon:116.14,lat:37.87},"景县":{lon:116.26,lat:37.69},"枣强":{lon:115.72,lat:37.52},"深县":{lon:115.56,lat:38.02},"安平":{lon:115.5,lat:38.22},"武强":{lon:115.96,lat:38.03},"武邑":{lon:115.9,lat:37.81},"故城":{lon:115.96,lat:37.36},"冀县":{lon:115.56,lat:37.59},"郑州":{lon:113.65,lat:34.76},"荥阳":{lon:113.35,lat:34.79},"开封":{lon:114.35,lat:34.79},"平顶山":{lon:113.29,lat:33.75},"洛阳":{lon:112.44,lat:34.7},"焦作":{lon:113.21,lat:35.24},"鹤壁":{lon:114.17,lat:35.9},"杞县":{lon:114.77,lat:34.56},"尉氏":{lon:114.17,lat:34.41},"新郑":{lon:113.71,lat:34.4},"登封":{lon:113.02,lat:34.46},"通许":{lon:114.46,lat:34.48},"中牟":{lon:114,lat:34.73},"密县":{lon:113.35,lat:34.51},"巩县":{lon:112.96,lat:34.76},"兰考":{lon:114.81,lat:34.69},"新乡":{lon:113.85,lat:35.31},"汲县":{lon:114.05,lat:35.44},"封丘":{lon:114.04,lat:35.03},"获嘉":{lon:113.63,lat:35.27},"温贺":{lon:113.06,lat:34.94},"济源":{lon:112.57,lat:35.08},"博爱":{lon:113.05,lat:35.16},"辉县":{lon:113.77,lat:35.46},"延津":{lon:114.19,lat:35.14},"原阳":{lon:113.96,lat:35.05},"武陟":{lon:113.38,lat:35.1},"孟县2":{lon:112.77,lat:34.92},"沁阳":{lon:112.92,lat:35.08},"修武":{lon:113.42,lat:35.24},"安阳":{lon:114.35,lat:36.1},"南乐":{lon:115.21,lat:36.08},"范县":{lon:115.46,lat:35.9},"台前":{lon:115.83,lat:36},"滑县":{lon:114.52,lat:35.57},"浚县":{lon:114.54,lat:35.67},"淇县":{lon:114.17,lat:35.6},"内黄":{lon:114.88,lat:35.95},"清丰":{lon:115.1,lat:35.89},"濮阳":{lon:114.98,lat:35.71},"长垣":{lon:114.67,lat:35.19},"汤阴":{lon:114.35,lat:35.92},"林县":{lon:113.81,lat:36.06},"商丘":{lon:115.65,lat:34.44},"夏邑":{lon:116.13,lat:34.22},"柘城":{lon:115.29,lat:34.08},"睢县":{lon:115.04,lat:34.46},"虞城":{lon:115.87,lat:34.4},"永城":{lon:116.37,lat:33.94},"宁陵":{lon:115.31,lat:34.44},"民权":{lon:115.13,lat:34.65},"周口":{lon:114.63,lat:33.63},"商水":{lon:114.59,lat:33.54},"扶沟":{lon:114.38,lat:34.05},"鹿邑":{lon:115.48,lat:33.86},"淮阳":{lon:114.88,lat:33.74},"沈丘":{lon:115.06,lat:33.41},"西华":{lon:114.5,lat:33.79},"太康":{lon:114.85,lat:34.06},"郸城":{lon:115.17,lat:33.63},"项城":{lon:114.9,lat:33.44},"许昌":{lon:113.81,lat:34.02},"鄢县":{lon:114.17,lat:34.11},"郾城":{lon:113.98,lat:33.6},"襄城":{lon:113.46,lat:33.86},"鲁山":{lon:112.88,lat:33.74},"郏县":{lon:113.19,lat:33.98},"漯河":{lon:114.02,lat:33.56},"长葛":{lon:113.77,lat:34.22},"临颖":{lon:113.94,lat:33.81},"舞阳":{lon:113.58,lat:33.44},"叶县":{lon:113.35,lat:33.62},"宝丰":{lon:113.04,lat:33.86},"禹县":{lon:113.47,lat:34.16},"驻马店":{lon:114.02,lat:32.98},"确山":{lon:114.02,lat:32.83},"西平":{lon:114,lat:33.38},"汝南":{lon:114.35,lat:33},"新蔡":{lon:114.97,lat:32.75},"泌阳":{lon:113.31,lat:32.72},"遂平":{lon:113.98,lat:33.15},"上蔡":{lon:114.26,lat:33.25},"平舆":{lon:114.62,lat:32.97},"正阳":{lon:114.38,lat:32.62},"信阳":{lon:114.08,lat:32.13},"息县":{lon:114.72,lat:32.35},"固始":{lon:115.68,lat:32.17},"潢川":{lon:115.04,lat:32.13},"新县":{lon:114.83,lat:31.62},"罗山":{lon:114.53,lat:32.21},"淮滨":{lon:115.41,lat:32.44},"商城":{lon:115.42,lat:31.81},"光山":{lon:114.91,lat:32.02},"南阳":{lon:112.53,lat:33.01},"方城":{lon:112.98,lat:33.25},"唐河":{lon:112.83,lat:32.7},"新野":{lon:112.36,lat:32.51},"邓县":{lon:112.08,lat:32.68},"淅川":{lon:111.47,lat:33.14},"南召":{lon:112.4,lat:33.49},"社旗":{lon:112.92,lat:33.05},"桐柏":{lon:113.4,lat:32.37},"镇平":{lon:112.23,lat:33.03},"内乡":{lon:111.83,lat:33.05},"西峡":{lon:111.5,lat:33.31},"三门峡":{lon:111.19,lat:34.76},"孟津":{lon:112.42,lat:34.84},"临汝":{lon:112.83,lat:34.17},"汝阳":{lon:112.46,lat:34.16},"嵩县":{lon:112.07,lat:34.14},"栾川":{lon:111.6,lat:33.81},"灵宝":{lon:110.85,lat:34.52},"渑池":{lon:111.75,lat:34.76},"义马":{lon:111.92,lat:34.73},"偃师":{lon:112.77,lat:34.73},"伊川":{lon:112.42,lat:34.43},"宜阳":{lon:112.15,lat:34.51},"洛宁":{lon:111.65,lat:34.39},"卢氏":{lon:111.03,lat:34.06},"陕县":{lon:111.19,lat:34.76},"新安":{lon:112.14,lat:34.75},"杭州":{lon:120.19,lat:30.26},"余杭":{lon:120.3,lat:30.43},"富阳":{lon:119.95,lat:30.07},"建德":{lon:119.27,lat:29.49},"临安":{lon:119.72,lat:30.23},"萧山":{lon:120.25,lat:30.16},"桐庐":{lon:119.64,lat:29.8},"淳安":{lon:119.05,lat:29.61},"宁波":{lon:121.56,lat:29.86},"镇海":{lon:121.72,lat:29.96},"温州":{lon:120.65,lat:28.01},"瓯海":{lon:120.65,lat:28.01},"永喜":{lon:120.68,lat:28.16},"洞头":{lon:121.12,lat:27.84},"平阳":{lon:120.55,lat:27.68},"泰顺":{lon:119.7,lat:27.57},"乐清":{lon:120.94,lat:28.14},"瑞安":{lon:120.62,lat:27.8},"文成":{lon:120.08,lat:27.08},"苍南":{lon:120.36,lat:27.53},"湖州":{lon:120.1,lat:30.86},"平湖":{lon:121.02,lat:30.7},"桐乡":{lon:120.54,lat:30.64},"安吉":{lon:119.68,lat:30.68},"嘉善":{lon:120.92,lat:30.84},"嘉兴":{lon:120.76,lat:30.77},"海盐":{lon:120.92,lat:30.53},"海宁":{lon:120.69,lat:30.53},"德清":{lon:120.08,lat:30.54},"长兴":{lon:119.91,lat:30.01},"定海":{lon:122.11,lat:30.03},"岱山":{lon:122.2,lat:30.26},"嵊四":{lon:122.45,lat:30.72},"普陀":{lon:122.3,lat:29.97},"鄞县":{lon:121.56,lat:29.86},"象山":{lon:121.8,lat:29.48},"奉化":{lon:121.41,lat:29.66},"慈溪":{lon:121.23,lat:30.18},"宁海":{lon:121.42,lat:29.3},"余姚":{lon:121.16,lat:30.04},"绍兴":{lon:120.58,lat:30.01},"新昌":{lon:120.89,lat:29.49},"诸暨":{lon:120.23,lat:29.71},"上虞":{lon:120.87,lat:30.03},"嵊县":{lon:120.81,lat:29.6},"椒江":{lon:121.44,lat:28.67},"临海":{lon:121.13,lat:28.8},"三门":{lon:121.38,lat:29.11},"温岭":{lon:121.36,lat:28.36},"仙居":{lon:120.73,lat:28.85},"天台":{lon:121.03,lat:29.15},"黄岩":{lon:121.27,lat:28.64},"玉环":{lon:121.23,lat:28.14},"丽水":{lon:119.92,lat:28.45},"青田":{lon:120.28,lat:28.45},"庆无":{lon:119.06,lat:27.61},"遂昌":{lon:119.25,lat:28.59},"缙云":{lon:120.6,lat:28.66},"云和":{lon:119.56,lat:28.12},"龙泉":{lon:119.13,lat:28.08},"松阳":{lon:119.48,lat:28.46},"金华":{lon:119.64,lat:29.12},"浦江":{lon:119.88,lat:29.46},"东阳":{lon:120.23,lat:29.27},"武义":{lon:119.81,lat:28.9},"江山":{lon:118.61,lat:28.74},"开化":{lon:118.39,lat:29.15},"衢州":{lon:118.88,lat:28.97},"兰溪":{lon:119.48,lat:29.19},"义乌":{lon:120.06,lat:29.32},"永康":{lon:120.02,lat:28.92},"常山":{lon:118.5,lat:28.9},"海口":{lon:110.35,lat:20.02},"琼山":{lon:110.33,lat:19.98},"文昌":{lon:110.72,lat:19.61},"定安":{lon:110.31,lat:19.68},"琼海":{lon:110.46,lat:19.25},"万宁":{lon:110.39,lat:18.8},"屯昌":{lon:110.1,lat:19.36},"澄迈":{lon:110,lat:19.75},"儋县":{lon:109.57,lat:19.52},"临高":{lon:109.69,lat:19.91},"保亭":{lon:109.7,lat:18.64},"白沙":{lon:109.44,lat:19.23},"琼中":{lon:109.83,lat:19.05},"陵水":{lon:110.02,lat:18.48},"崖县":{lon:109.5,lat:18.25},"乐东":{lon:109.17,lat:18.73},"东方":{lon:108.64,lat:19.09},"昌江":{lon:109.03,lat:19.25},"香港":{lon:114.1,lat:22.2},"澳门":{lon:113.33,lat:22.13},"台北":{lon:121.5,lat:25.05},"高雄":{lon:120.37,lat:22.64},"基隆":{lon:121.73,lat:25.14},"台中":{lon:120.67,lat:24.15},"台南":{lon:120.19,lat:22.98},"宜兰":{lon:121.75,lat:24.75},"桃园":{lon:121.3,lat:25},"新竹":{lon:120.96,lat:24.81},"武汉":{lon:114.31,lat:30.52},"武昌":{lon:114.33,lat:30.35},"汉阳":{lon:114.02,lat:30.57},"黄石":{lon:115.09,lat:30.2},"十堰":{lon:110.79,lat:32.65},"沙市":{lon:112.24,lat:30.32},"宜昌":{lon:111.3,lat:30.7},"襄樊":{lon:112.14,lat:30.02},"孝感":{lon:113.91,lat:31.92},"黄陂":{lon:114.36,lat:30.88},"汉川":{lon:113.59,lat:30.63},"云梦":{lon:113.73,lat:31.02},"应山":{lon:113.81,lat:31.62},"大悟":{lon:114.09,lat:31.56},"应城":{lon:113.6,lat:30.94},"安陆":{lon:113.69,lat:31.25},"鄂城":{lon:114.87,lat:30.38},"黄冈":{lon:114.87,lat:30.44},"新洲":{lon:114.8,lat:31.84},"红安":{lon:114.61,lat:31.29},"麻城":{lon:115,lat:31.17},"罗川":{lon:115.37,lat:30.79},"浠水":{lon:115.22,lat:30.46},"蕲春":{lon:115.3,lat:30.24},"黄梅":{lon:115.93,lat:30.09},"广济":{lon:115.56,lat:29.85},"英山":{lon:115.57,lat:30.75},"咸宁":{lon:114.28,lat:29.87},"阳新":{lon:115.22,lat:29.83},"通山":{lon:114.52,lat:29.6},"通城":{lon:113.8,lat:29.23},"嘉鱼":{lon:113.91,lat:29.97},"崇阳":{lon:114.04,lat:29.54},"蒲圻":{lon:113.85,lat:29.71},"荆门":{lon:112.19,lat:31.02},"江陵":{lon:112.18,lat:30.35},"钟祥":{lon:112.58,lat:31.17},"京山":{lon:113.11,lat:31.03},"监利":{lon:112.9,lat:29.83},"石首":{lon:112.41,lat:29.73},"长沙":{lon:113,lat:28.21},"望城":{lon:112.8,lat:28.37},"株洲":{lon:113.16,lat:27.83},"湘潭":{lon:112.91,lat:27.87},"邵阳":{lon:111.5,lat:27.22},"岳阳":{lon:113.09,lat:29.37},"临湘":{lon:113.42,lat:29.48},"平江":{lon:113.56,lat:29.71},"泪罗":{lon:113.05,lat:28.8},"湘阴":{lon:112.87,lat:28.68},"华容":{lon:112.55,lat:29.52},"浏阳":{lon:113.63,lat:28.16},"醴陵":{lon:113.5,lat:27.67},"攸县":{lon:113.32,lat:27.01},"茶陵":{lon:113.54,lat:26.79},"酃县":{lon:113.77,lat:26.49},"湘乡":{lon:112.5,lat:27.75},"郴州":{lon:113,lat:25.79},"郴县":{lon:113,lat:25.79},"安仁":{lon:113.27,lat:26.71},"永兴":{lon:113.11,lat:26.13},"资兴":{lon:113.39,lat:25.95},"桂东":{lon:113.91,lat:25.08},"汝城":{lon:113.68,lat:25.54},"宜章":{lon:113.96,lat:25.41},"临武":{lon:112.55,lat:25.27},"嘉禾":{lon:112.35,lat:25.56},"桂阳":{lon:112.72,lat:25.73},"来阳":{lon:112.84,lat:26.41},"衡南":{lon:112.61,lat:26.89},"衡山":{lon:112.86,lat:27.25},"衡东":{lon:112.95,lat:27.1},"常宁":{lon:112.39,lat:26.38},"祁阳":{lon:111.85,lat:26.59},"祁东":{lon:112.14,lat:26.8},"衡阳":{lon:112.61,lat:26.89},"永州":{lon:111.63,lat:26.22},"零陵":{lon:111.63,lat:26.22},"新田":{lon:112.21,lat:25.91},"宁远":{lon:111.95,lat:25.6},"蓝山":{lon:112.16,lat:25.37},"双牌":{lon:111.64,lat:25.96},"江永":{lon:111.33,lat:25.41},"道县":{lon:111.57,lat:25.52},"东安":{lon:111.28,lat:26.41},"江华":{lon:111.79,lat:24.97},"新宁":{lon:110.84,lat:26.44},"武冈":{lon:110.61,lat:26.73},"隆回":{lon:111.04,lat:27.13},"绥宁":{lon:110.14,lat:25.59},"洞口":{lon:110.57,lat:27.06},"城步":{lon:110.3,lat:26.37},"娄底":{lon:111.96,lat:27.71},"涟源":{lon:111.66,lat:27.68},"新邵":{lon:111.46,lat:27.33},"双峰":{lon:112.18,lat:27.44},"冷水江":{lon:111.41,lat:27.68},"邵东":{lon:111.73,lat:27.25},"新化":{lon:111.29,lat:27.73},"怀化":{lon:109.95,lat:27.52},"黔阳":{lon:110.14,lat:27.33},"辰溪":{lon:110.18,lat:28.02},"沅陵":{lon:110.39,lat:28.46},"溆浦":{lon:110.57,lat:27.92},"会同":{lon:109.71,lat:26.86},"靖县":{lon:109.68,lat:26.57},"洪江2":{lon:109.96,lat:27.1},"芷江":{lon:109.78,lat:27.44},"麻阳":{lon:109.79,lat:27.87},"通道":{lon:109.77,lat:26.16},"新晃":{lon:109.16,lat:27.37},"吉首":{lon:109.71,lat:28.3},"永顺":{lon:109.84,lat:29},"桑植":{lon:110.16,lat:29.38},"大庸":{lon:110.48,lat:29.13},"古丈":{lon:109.91,lat:28.62},"泸溪":{lon:110.73,lat:28.29},"凤凰":{lon:109.43,lat:27.92},"花垣":{lon:109.46,lat:28.59},"保靖":{lon:109.64,lat:28.7},"龙山":{lon:109.42,lat:29.64},"常德":{lon:111.69,lat:29.05},"临澧":{lon:111.64,lat:29.44},"澧县":{lon:111.75,lat:29.65},"安乡":{lon:112.16,lat:29.41},"津市":{lon:111.87,lat:29.64},"汉寿":{lon:111.97,lat:28.9},"桃源":{lon:111.47,lat:28.9},"慈利":{lon:111.09,lat:29.41},"石门":{lon:111.35,lat:29.59},"益阳":{lon:112.33,lat:28.6},"南县":{lon:112.39,lat:29.37},"沅江":{lon:112.36,lat:28.83},"宁乡":{lon:112.55,lat:28.27},"安化":{lon:111.2,lat:28.38},"桃江":{lon:112.11,lat:28.51},"兰州":{lon:103.73,lat:36.03},"永登":{lon:103.25,lat:36.73},"榆中":{lon:104.09,lat:35.87},"永昌":{lon:101.94,lat:38.23},"皋兰":{lon:103.97,lat:36.32},"定西":{lon:104.57,lat:35.57},"会宁":{lon:105.08,lat:35.72},"陇西":{lon:104.61,lat:34.98},"临洮":{lon:103.88,lat:35.39},"靖远":{lon:104.71,lat:36.54},"通渭":{lon:105.27,lat:35.24},"渭源":{lon:104.19,lat:35.17},"平凉":{lon:106.68,lat:35.51},"灵台":{lon:107.61,lat:35.1},"华亭":{lon:106.65,lat:35.21},"静宁":{lon:105.73,lat:35.51},"泾川":{lon:107.38,lat:35.31},"崇信":{lon:107.05,lat:35.27},"庄浪":{lon:106.06,lat:35.2},"庆阳":{lon:107.88,lat:36.03},"华池":{lon:108,lat:36.44},"庄宁":{lon:108.43,lat:35.5},"镇源":{lon:107.22,lat:35.7},"环县":{lon:107.33,lat:36.57},"合水":{lon:108.02,lat:35.81},"宁县":{lon:107.94,lat:35.17},"天水":{lon:105.69,lat:34.6},"徽县":{lon:106.11,lat:33.78},"礼县":{lon:105.15,lat:34.22},"武山":{lon:104.88,lat:34.69},"秦安":{lon:105.69,lat:34.89},"清水":{lon:106.12,lat:34.73},"两当":{lon:106.28,lat:33.9},"西和":{lon:105.28,lat:34.02},"甘谷":{lon:105.35,lat:34.7},"漳县":{lon:104.48,lat:34.87},"张家川":{lon:106.23,lat:35},"武都":{lon:104.94,lat:33.43},"宕昌":{lon:104.38,lat:34.06},"康县":{lon:105.58,lat:33.33},"成县":{lon:105.7,lat:33.75},"文县":{lon:104.7,lat:32.95},"临潭":{lon:103.35,lat:34.69},"舟曲":{lon:104.38,lat:33.81},"玛曲":{lon:102.04,lat:33.97},"下河":{lon:102.46,lat:35.21},"卓尼":{lon:103.54,lat:34.61},"迭部":{lon:103.23,lat:34.08},"碌曲":{lon:102.5,lat:34.6},"临夏":{lon:103.22,lat:35.62},"永靖":{lon:103.34,lat:35.97},"和政":{lon:103.31,lat:35.43},"康乐":{lon:103.68,lat:35.39},"广河":{lon:103.54,lat:35.46},"东乡2":{lon:103.39,lat:35.68},"岷县":{lon:104.04,lat:34.41},"积石山":{lon:102.85,lat:35.74},"武威":{lon:102.61,lat:37.94},"民勤":{lon:103.08,lat:38.62},"古浪":{lon:102.86,lat:37.43},"景泰":{lon:104.05,lat:37.14},"天祝":{lon:102.84,lat:37.24},"张掖":{lon:100.46,lat:38.93},"民乐":{lon:100.85,lat:38.43},"临泽":{lon:100.17,lat:39.14},"山丹":{lon:101.19,lat:38.79},"高台":{lon:99.84,lat:39.14},"肃南":{lon:99.57,lat:38.86},"玉门":{lon:97.58,lat:39.81},"酒泉":{lon:98.5,lat:39.71},"敦煌":{lon:94.71,lat:40.13},"金塔":{lon:98.92,lat:39.97},"安西":{lon:95.77,lat:40.51},"阿克塞":{lon:94.25,lat:38.46},"肃北":{lon:94.89,lat:39.49},"福州":{lon:119.3,lat:26.08},"闽侯":{lon:119.14,lat:26.16},"厦门":{lon:118.1,lat:24.46},"同安":{lon:118.15,lat:24.74},"南平":{lon:118.16,lat:26.65},"建瓯":{lon:118.32,lat:27.05},"浦城":{lon:118.55,lat:27.92},"邵武":{lon:117.48,lat:27.34},"顺昌":{lon:117.8,lat:26.8},"崇安":{lon:118.02,lat:27.76},"光泽":{lon:117.34,lat:27.54},"松溪":{lon:118.77,lat:27.53},"政和":{lon:118.85,lat:27.38},"宁德":{lon:119.52,lat:26.65},"福安":{lon:119.65,lat:27.09},"连江":{lon:119.53,lat:26.2},"福鼎":{lon:120.2,lat:27.34},"霞浦":{lon:120,lat:26.89},"吉田":{lon:118.74,lat:26.59},"罗源":{lon:119.55,lat:26.49},"寿宁":{lon:119.5,lat:27.47},"周宁":{lon:119.36,lat:27.12},"屏南":{lon:118.98,lat:26.92},"柘荣":{lon:119.89,lat:27.25},"莆田":{lon:119,lat:25.44},"仙游":{lon:118.7,lat:25.37},"福清":{lon:119.39,lat:25.73},"长乐":{lon:119.52,lat:25.96},"永泰":{lon:118.95,lat:25.88},"平潭":{lon:119.78,lat:25.51},"闽清":{lon:118.86,lat:26.21},"泉州":{lon:118.58,lat:24.93},"晋江":{lon:118.57,lat:24.82},"南安":{lon:118.39,lat:24.96},"惠安":{lon:118.78,lat:25.04},"安溪":{lon:118.18,lat:25.07},"永春":{lon:118.3,lat:25.34},"德化":{lon:118.24,lat:25.5},"金门":{lon:118.34,lat:24.43},"漳州":{lon:117.35,lat:24.52},"龙海":{lon:117.79,lat:24.44},"漳浦":{lon:117.61,lat:24.12},"诏安":{lon:117.16,lat:23.73},"平和":{lon:117.3,lat:24.38},"云霄":{lon:117.34,lat:23.99},"南靖":{lon:117.35,lat:24.51},"长泰":{lon:117.75,lat:24.62},"东山":{lon:117.4,lat:23.72},"华安":{lon:117.53,lat:25},"龙岩":{lon:117.01,lat:25.12},"上杭":{lon:116.41,lat:25.43},"永定":{lon:116.81,lat:24.76},"长汀":{lon:116.37,lat:25.85},"武平":{lon:116.1,lat:25.11},"连城":{lon:116.75,lat:25.72},"漳平":{lon:117.4,lat:25.3},"三明":{lon:117.61,lat:26.23},"龙溪":{lon:118.17,lat:26.18},"宁化":{lon:116.64,lat:26.26},"大田":{lon:117.83,lat:25.69},"永安":{lon:117.37,lat:25.97},"沙县":{lon:117.77,lat:26.41},"将乐":{lon:117.45,lat:26.73},"清流":{lon:116.81,lat:26.12},"建宁":{lon:116.82,lat:26.85},"泰宁":{lon:117.15,lat:26.92},"明溪":{lon:117.18,lat:26.36},"拉萨":{lon:91.11,lat:29.97},"林周":{lon:91.24,lat:30.2},"当雄":{lon:91.05,lat:30.51},"墨竹工卡":{lon:91.77,lat:29.77},"尼木":{lon:90.14,lat:29.44},"米林":{lon:94.13,lat:29.18},"墨脱":{lon:95.26,lat:29.22},"达孜":{lon:91.39,lat:29.63},"曲水":{lon:90.7,lat:29.39},"堆龙德庆":{lon:90.96,lat:29.67},"林芝":{lon:94.25,lat:29.59},"工布江达":{lon:93.25,lat:29.92},"那曲":{lon:92.1,lat:31.47},"巴青":{lon:94.1,lat:31.96},"比如":{lon:93.68,lat:31.53},"班戈":{lon:90.05,lat:31.35},"嘉黎":{lon:93.46,lat:30.63},"聂荣":{lon:92.3,lat:31.08},"索县":{lon:93.71,lat:31.92},"安多":{lon:91.68,lat:32.29},"申扎":{lon:88.7,lat:30.94},"吕都":{lon:97.14,lat:31.18},"贡觉":{lon:98.29,lat:30.86},"左贡":{lon:97.9,lat:29.68},"察隅":{lon:97.49,lat:28.62},"洛隆":{lon:95.76,lat:30.81},"丁青":{lon:95.63,lat:31.42},"波密":{lon:95.75,lat:29.92},"江达":{lon:89.19,lat:31.53},"察雅":{lon:97.56,lat:30.69},"芒康":{lon:98.68,lat:29.64},"八宿":{lon:96.95,lat:30.04},"边坝":{lon:94.69,lat:30.94},"类乌齐":{lon:96.57,lat:31.2},"乃东":{lon:91.76,lat:29.18},"加查":{lon:92.6,lat:29.09},"曲松":{lon:92.11,lat:29.08},"错那":{lon:91.91,lat:27.98},"穷结":{lon:91.65,lat:29.04},"贡嘎":{lon:90.96,lat:29.25},"浪卡子":{lon:90.33,lat:29.96},"桑日":{lon:92,lat:29.26},"朗县":{lon:93.11,lat:29.06},"隆子":{lon:92.42,lat:28.46},"措美":{lon:91.4,lat:28.49},"洛扎":{lon:90.83,lat:28.42},"扎囊":{lon:91.26,lat:29.22},"日喀则":{lon:88.82,lat:29.28},"定结":{lon:87.77,lat:28.38},"拉孜":{lon:87.62,lat:29.1},"聂拉木":{lon:85.94,lat:28.19},"谢通门":{lon:88.25,lat:29.43},"仲巴":{lon:84.15,lat:29.66},"康马":{lon:89.67,lat:28.57},"亚东":{lon:88.93,lat:27.55},"岗巴":{lon:88.5,lat:28.29},"南木林":{lon:89.02,lat:29.71},"萨迦":{lon:88,lat:28.87},"定日":{lon:87.11,lat:28.57},"吉隆":{lon:85.29,lat:28.94},"昂仁":{lon:87.22,lat:29.3},"江孜":{lon:89.63,lat:28.94},"仁布":{lon:89.77,lat:29.21},"白朗":{lon:89.16,lat:29.11},"萨嘎":{lon:85.3,lat:29.38},"噶尔":{lon:80,lat:32.08},"革吉":{lon:81.13,lat:32.45},"扎达":{lon:79.76,lat:31.47},"措勤":{lon:85.16,lat:31.06},"日上":{lon:79.61,lat:33.44},"改则":{lon:84.1,lat:32.33},"普兰":{lon:81.18,lat:30.37},"贵阳":{lon:106.71,lat:26.57},"六盘水":{lon:104.82,lat:26.58},"水城":{lon:104.82,lat:26.58},"盘县":{lon:104.64,lat:25.81},"六枝":{lon:105.47,lat:26.21},"遵义":{lon:106.9,lat:27.7},"绥阳":{lon:107.19,lat:27.95},"道真":{lon:107.6,lat:28.89},"凤冈":{lon:107.72,lat:27.97},"余庆":{lon:107.88,lat:27.22},"赤水":{lon:105.69,lat:28.57},"桐梓":{lon:106.8,lat:28.16},"正安":{lon:107.43,lat:28.56},"务川":{lon:107.87,lat:28.54},"湄潭":{lon:107.5,lat:27.76},"仁怀":{lon:106.41,lat:27.81},"习水":{lon:106.2,lat:28.33},"铜仁":{lon:109.21,lat:27.73},"玉屏":{lon:108.91,lat:27.24},"思南":{lon:108.23,lat:27.94},"德江":{lon:108.13,lat:28.27},"万山":{lon:109.2,lat:27.52},"江口":{lon:108.82,lat:27.68},"师阡":{lon:108.24,lat:27.52},"印江":{lon:108.41,lat:28.02},"沿河":{lon:108.48,lat:28.57},"松桃":{lon:109.18,lat:28.17},"毕节":{lon:105.29,lat:27.32},"黔西":{lon:106.04,lat:27.03},"织金":{lon:105.76,lat:26.66},"赫章":{lon:104.71,lat:27.13},"大方":{lon:105.61,lat:27.16},"金沙":{lon:106.22,lat:27.46},"钠雍":{lon:105.38,lat:26.77},"威宁":{lon:104.28,lat:26.87},"安顺":{lon:105.92,lat:26.25},"息烽":{lon:106.73,lat:27.1},"清镇":{lon:106.46,lat:26.56},"普定":{lon:105.75,lat:26.32},"开阳":{lon:106.95,lat:27.06},"修文":{lon:106.59,lat:26.84},"平坝":{lon:106.26,lat:26.42},"镇宁":{lon:105.75,lat:26.08},"紫云":{lon:106.06,lat:25.75},"关岭":{lon:105.62,lat:25.94},"兴义":{lon:104.91,lat:25.1},"普安":{lon:104.96,lat:25.79},"贞丰":{lon:105.63,lat:25.39},"望谟":{lon:106.09,lat:25.17},"册亭":{lon:105.79,lat:25},"安龙":{lon:105.49,lat:25.11},"兴仁":{lon:105.18,lat:25.44},"晴龙":{lon:105.21,lat:25.83},"凯里":{lon:107.97,lat:26.59},"施秉":{lon:108.11,lat:27.03},"镇远":{lon:108.41,lat:27.06},"天柱":{lon:109.2,lat:26.89},"剑河":{lon:108.58,lat:26.64},"黎平":{lon:109.14,lat:26.24},"从江":{lon:108.9,lat:25.76},"麻江":{lon:107.58,lat:26.49},"黄平":{lon:107.89,lat:26.89},"三穗":{lon:108.68,lat:26.98},"岑巩":{lon:108.72,lat:27.21},"锦屏":{lon:109.18,lat:26.7},"台江":{lon:108.32,lat:26.68},"榕江":{lon:108.5,lat:25.94},"雷山":{lon:108.07,lat:26.38},"丹寨":{lon:107.79,lat:26.21},"都匀":{lon:107.53,lat:26.72},"贵定":{lon:107.22,lat:26.58},"瓮安":{lon:107.48,lat:27.08},"平塘":{lon:107.55,lat:25.83},"长顺":{lon:106.45,lat:26.03},"惠水":{lon:106.66,lat:26.14},"荔波":{lon:107.88,lat:25.42},"福泉":{lon:107.51,lat:26.7},"独山":{lon:107.54,lat:25.84},"罗甸":{lon:106.74,lat:25.43},"龙里":{lon:106.98,lat:26.46},"三都":{lon:107.86,lat:26},"沈阳":{lon:123.38,lat:41.8},"新民":{lon:122.83,lat:42},"辽中":{lon:122.7,lat:41.52},"大连":{lon:121.62,lat:38.92},"金县":{lon:121.7,lat:39.13},"复县":{lon:121.97,lat:39.63},"新金":{lon:121.95,lat:39.55},"庄河":{lon:22.97,lat:39.7},"长海":{lon:122.58,lat:39.28},"鞍山":{lon:122.85,lat:41.12},"海城":{lon:122.75,lat:40.85},"台安":{lon:122.4,lat:41.4},"抚顺":{lon:123.97,lat:41.97},"新宾":{lon:125.02,lat:41.72},"清原":{lon:124.9,lat:42.13},"本溪":{lon:123.73,lat:41.3},"垣仁":{lon:125.33,lat:41.28},"锦州":{lon:121.15,lat:41.13},"锦县":{lon:121.35,lat:41.17},"义县":{lon:121.22,lat:41.55},"黑山":{lon:122.12,lat:41.7},"北镇":{lon:121.8,lat:41.6},"锦西":{lon:120.83,lat:40.77},"兴城":{lon:120.68,lat:40.63},"绥中":{lon:120.32,lat:40.35},"丹东":{lon:124.37,lat:40.13},"东沟":{lon:124.13,lat:39.97},"岫岩":{lon:123.25,lat:40.3},"凤城":{lon:124.05,lat:40.47},"宽甸":{lon:124.77,lat:40.75},"阜新":{lon:121.65,lat:42},"彰武":{lon:122.52,lat:42.42},"营口":{lon:122.18,lat:40.65},"盖县":{lon:122.37,lat:40.42},"盘山":{lon:122.03,lat:41.02},"大洼":{lon:122.06,lat:41},"辽阳":{lon:123.17,lat:41.28},"灯塔":{lon:123.34,lat:41.43},"铁岭":{lon:123.85,lat:42.32},"开原":{lon:124.03,lat:42.53},"昌图":{lon:124.13,lat:42.8},"铁法":{lon:123.5,lat:42.48},"康平":{lon:123.33,lat:42.75},"法库":{lon:123.37,lat:42.52},"西丰":{lon:124.7,lat:42.77},"朝阳":{lon:120.42,lat:41.58},"建昌":{lon:119.78,lat:40.82},"北票":{lon:120.75,lat:41.82},"凌源":{lon:119.37,lat:41.27},"建平":{lon:119.63,lat:41.38},"重庆":{lon:106.54,lat:29.59},"綦江":{lon:106.56,lat:29.41},"长寿":{lon:106.64,lat:29.01},"南桐":{lon:107.04,lat:29.86},"合川":{lon:106.28,lat:29.26},"潼南":{lon:106.22,lat:30.03},"铜梁":{lon:105.8,lat:30.16},"壁山":{lon:106.03,lat:29.86},"荣昌":{lon:106.21,lat:29.62},"大足":{lon:105.59,lat:29.4},"永川":{lon:105.71,lat:29.75},"万盛":{lon:105.91,lat:29.38},"西安":{lon:108.95,lat:34.27},"长安":{lon:108.97,lat:34.18},"铜川":{lon:109.11,lat:35.09},"耀县":{lon:108.98,lat:34.91},"宝鸡":{lon:107.15,lat:34.38},"凤翔":{lon:107.39,lat:34.53},"千阳":{lon:107.13,lat:34.65},"陇县":{lon:106.86,lat:34.91},"麟游":{lon:107.8,lat:34.69},"岐山":{lon:107.63,lat:34.46},"浮风":{lon:107.87,lat:34.38},"武功":{lon:108.22,lat:34.28},"眉县":{lon:107.76,lat:34.29},"太白":{lon:107.3,lat:34.09},"凤县":{lon:106.51,lat:33.93},"榆林":{lon:109.77,lat:38.3},"神木":{lon:110.51,lat:38.83},"府谷":{lon:111.07,lat:39.05},"佳县":{lon:110.48,lat:38.04},"米脂":{lon:110.23,lat:37.78},"吴堡":{lon:110.73,lat:37.49},"绥德":{lon:110.24,lat:37.49},"清涧":{lon:110.15,lat:37.11},"子洲":{lon:110.05,lat:37.45},"横山":{lon:109.32,lat:37.97},"靖边":{lon:108.79,lat:37.61},"定边":{lon:107.59,lat:37.6},"延安":{lon:109.47,lat:36.6},"安寨":{lon:109.34,lat:36.88},"子长":{lon:109.65,lat:37.16},"延川":{lon:110.18,lat:36.87},"延长":{lon:110.02,lat:36.59},"宜川":{lon:110.15,lat:36.04},"黄龙":{lon:109.86,lat:35.6},"洛川":{lon:109.42,lat:35.76},"宜君":{lon:109.11,lat:35.43},"黄陵":{lon:109.27,lat:35.6},"富县":{lon:109.37,lat:36},"甘泉":{lon:109.37,lat:36.29},"志丹":{lon:108.78,lat:36.84},"吴旗":{lon:108.22,lat:36.93},"咸阳":{lon:108.72,lat:34.36},"礼泉":{lon:108.43,lat:34.5},"永寿":{lon:108.14,lat:34.71},"彬县":{lon:108.09,lat:35.04},"长武":{lon:107.8,lat:35.22},"旬邑":{lon:108.33,lat:35.13},"淳化":{lon:108.57,lat:34.81},"泾阳":{lon:108.84,lat:34.53},"三原":{lon:108.94,lat:34.62},"高陵":{lon:109.1,lat:34.55},"户县":{lon:108.61,lat:34.12},"周至":{lon:108.22,lat:34.18},"兴平":{lon:108.49,lat:34.32},"乾县":{lon:108.25,lat:34.54},"渭南":{lon:109.5,lat:34.52},"蒲城":{lon:109.59,lat:34.97},"白水":{lon:109.6,lat:35.18},"成城":{lon:109.93,lat:35.2},"韩城":{lon:110.45,lat:35.47},"合阳":{lon:110.15,lat:35.24},"人荔":{lon:109.96,lat:34.82},"潼关":{lon:110.25,lat:34.56},"华阴":{lon:110.09,lat:34.58},"华县":{lon:109.77,lat:34.53},"蓝田":{lon:109.32,lat:34.17},"临潼":{lon:109.22,lat:34.38},"富平":{lon:109.17,lat:34.76},"商县":{lon:109.96,lat:33.88},"洛南":{lon:110.15,lat:34.11},"丹凤":{lon:110.35,lat:33.71},"商南":{lon:110.88,lat:33.54},"山阳":{lon:109.91,lat:33.55},"镇安":{lon:109.16,lat:33.45},"柞水":{lon:109.14,lat:33.69},"安康":{lon:109.02,lat:32.7},"旬阳":{lon:109.35,lat:32.83},"白河":{lon:110.06,lat:32.83},"平利":{lon:109.37,lat:32.41},"镇坪":{lon:109.51,lat:31.91},"岚皋":{lon:108.89,lat:32.3},"紫阳":{lon:108.55,lat:32.56},"汉阴":{lon:108.53,lat:32.9},"石泉":{lon:108.26,lat:33.05},"宁陕":{lon:108.33,lat:33.34},"汉中":{lon:108.04,lat:33.07},"留坝":{lon:106.95,lat:33.65},"城固":{lon:107.32,lat:33.16},"洋县":{lon:107.56,lat:33.23},"佛坪":{lon:108,lat:33.55},"西乡":{lon:107.77,lat:33},"镇巴":{lon:107.91,lat:32.56},"南郑":{lon:106.93,lat:33},"宁强":{lon:106.25,lat:32.82},"勉县":{lon:106.68,lat:33.16},"略阳":{lon:106.16,lat:33.34},"西宁":{lon:101.74,lat:36.56},"大通":{lon:101.67,lat:36.92},"平安":{lon:102.09,lat:36.47},"湟中":{lon:101.57,lat:36.49},"乐都":{lon:102.38,lat:36.49},"民和":{lon:102.8,lat:36.3},"湟源":{lon:101.28,lat:36.72},"互助":{lon:101.95,lat:36.84},"化隆":{lon:102.3,lat:36.11},"循化":{lon:102.46,lat:35.84},"门源":{lon:101.62,lat:37.37},"海晏":{lon:100.99,lat:36.89},"刚察":{lon:100.17,lat:37.32},"祁连":{lon:100.22,lat:38.2},"同仁":{lon:102,lat:35.54},"尖扎":{lon:102,lat:35.92},"泽库":{lon:101.5,lat:35.03},"河南":{lon:101.62,lat:34.75},"共和":{lon:100.61,lat:36.27},"贵德":{lon:101.47,lat:36.02},"贵南":{lon:100.75,lat:35.57},"同德":{lon:100.63,lat:35.24},"兴海":{lon:99.99,lat:35.6},"玛沁":{lon:100.26,lat:34.49},"甘德":{lon:99.89,lat:33.95},"久治":{lon:101.47,lat:33.46},"班玛":{lon:100.73,lat:32.92},"达日":{lon:99.68,lat:33.74},"玛多":{lon:98.26,lat:34.92},"玉树":{lon:96.97,lat:33.03},"称多":{lon:97.12,lat:33.35},"囊谦":{lon:96.47,lat:32.23},"杂多":{lon:95.3,lat:32.92},"治多":{lon:95.6,lat:33.86},"曲麻菜":{lon:95.5,lat:34.52},"格尔木":{lon:94.9,lat:36.41},"乌兰":{lon:98.46,lat:36.9},"都兰":{lon:98.13,lat:36.3},"天峻":{lon:99.03,lat:37.28},"哈尔滨":{lon:126.63,lat:45.75},"齐齐哈尔":{lon:123.97,lat:47.33},"鹤岗":{lon:130.3,lat:47.33},"双鸭山":{lon:131.17,lat:46.65},"鸡四":{lon:130.97,lat:45.3},"大庆":{lon:125.03,lat:46.58},"伊春":{lon:128.92,lat:47.73},"嘉荫":{lon:130,lat:48.93},"铁力":{lon:128.08,lat:47.98},"绥化":{lon:127,lat:46.63},"绥棱":{lon:127.12,lat:47.22},"海伦":{lon:126.97,lat:47.47},"庆安":{lon:127.5,lat:46.87},"兰西":{lon:126.3,lat:46.28},"肇东":{lon:125.98,lat:46.07},"肇州":{lon:125.25,lat:45.72},"肇源":{lon:125.07,lat:45.53},"安达":{lon:125.33,lat:46.42},"明水":{lon:125.88,lat:47.18},"青岗":{lon:126.13,lat:46.68},"望奎":{lon:126.5,lat:46.83},"黑河":{lon:127.53,lat:50.22},"爱辉":{lon:127.53,lat:50.22},"德都":{lon:126.17,lat:48.5},"通北":{lon:126.8,lat:49.76},"北安":{lon:126.5,lat:48.22},"孙吴":{lon:127.5,lat:49.22},"逊克":{lon:128.42,lat:49.57},"嫩江":{lon:125.2,lat:49.17},"佳木斯":{lon:130.35,lat:46.83},"桦川":{lon:130.68,lat:47.02},"萝北":{lon:130.83,lat:47.58},"绥滨":{lon:131.83,lat:47.3},"富锦":{lon:132.02,lat:47.23},"同江":{lon:132.5,lat:47.67},"抚远":{lon:134.15,lat:48.33},"饶河":{lon:134,lat:46.78},"七台河":{lon:130.83,lat:45.82},"宝清":{lon:132.17,lat:46.33},"集贤":{lon:131.13,lat:46.7},"勃利":{lon:130.53,lat:45.75},"桦南":{lon:130.53,lat:46.25},"依兰":{lon:129.55,lat:46.33},"汤源":{lon:129.92,lat:46.73},"牡丹江":{lon:129.58,lat:44.6},"林口":{lon:130.23,lat:45.3},"鸡东":{lon:131.04,lat:45.27},"密山":{lon:131.85,lat:45.53},"虎林":{lon:133.97,lat:45.75},"绥芬河":{lon:131.17,lat:44.38},"东宁":{lon:131.12,lat:44.07},"穆棱":{lon:130.5,lat:44.9},"宁安":{lon:129.47,lat:44.35},"海林":{lon:129.35,lat:44.57},"阿城":{lon:126.95,lat:45.52},"呼兰":{lon:126.58,lat:46},"巴彦":{lon:127.38,lat:46.08},"宾县":{lon:127.48,lat:45.75},"木兰":{lon:128.03,lat:45.95},"通河":{lon:128.7,lat:45.98},"方正":{lon:128.8,lat:45.83},"延寿":{lon:128.35,lat:45.47},"尚志":{lon:127.95,lat:45.22},"五常":{lon:127.17,lat:44.93},"双城":{lon:126.32,lat:45.53},"富裕":{lon:124.4,lat:47.8},"讷河":{lon:124.85,lat:48.48},"克山":{lon:125.87,lat:48.03},"克东":{lon:126.22,lat:48.03},"拜泉":{lon:126.07,lat:47.62},"依安":{lon:125.3,lat:47.92},"林甸":{lon:124.87,lat:47.18},"泰来":{lon:123.45,lat:46.4},"龙江":{lon:123.18,lat:47.35},"甘南":{lon:123.48,lat:47.9},"杜尔伯特":{lon:124.44,lat:46.86},"加格达奇":{lon:124.07,lat:50.42},"呼玛":{lon:126.6,lat:51.72},"塔河":{lon:124.7,lat:52.32},"漠河":{lon:122.37,lat:53.48}}},"./app/assets/json/slideSettings/chart.json":function(e,t){e.exports={name:"chart",title:"图表",params:[{name:"size",title:"图表尺寸",items:[{name:"width",title:"宽度(像素)",component:"inputnumber",default:200},{name:"height",title:"高度(像素)",component:"inputnumber",default:120}]},{name:"position",title:"图表位置",items:[{name:"positionX",title:"x轴位置(像素)",component:"inputnumber"},{name:"positionY",title:"y轴位置(像素)",component:"inputnumber"}]},{name:"background",title:"背景",items:[{name:"backgroundColor",title:"背景颜色",component:"colorPicker",default:[255,255,255]},{name:"opacity",title:"透明度",component:"inputnumber",default:100,min:0,max:100}]},{name:"border",title:"边框",items:[{name:"borderColor",title:"边框颜色",component:"colorPicker",default:[0,0,0]},{name:"borderWidth",title:"边框粗细",component:"inputnumber",default:1},{name:"borderStyle",title:"边框样式",component:"select",values:[{name:"实线",value:"solid"},{name:"虚线",value:"dashed"},{name:"点线",value:"dotted"},{name:"双框",value:"double"}],default:"solid"},{name:"borderRadius",title:"圆角半径",component:"inputnumber",default:0}]},{name:"dataRefresh",title:"数据刷新",items:[{name:"polling",title:"模式",component:"select",values:[{name:"手动刷新",value:"false"},{name:"定时刷新",value:"true"}],default:"false"},{name:"frequency",title:"时长",component:"inputnumber",default:"60",min:1,placeholder:"秒"}]}]}},"./app/assets/json/slideSettings/index.ts":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(){var e=s.params,t={};return e.forEach(function(e){e.items.forEach(function(e){t[e.name]=e.default||null})}),t}var a;Object.defineProperty(t,"__esModule",{value:!0});var i=n("./app/utils/util.ts"),s=n("./app/assets/json/slideSettings/slide.json"),l=n("./app/assets/json/slideSettings/chart.json"),c=n("./app/assets/json/slideSettings/rectangle.json"),u=n("./app/assets/json/slideSettings/label.json");t.default=(a={},r(a,i.GraphTypes.Slide,s),r(a,i.GraphTypes.Chart,l),r(a,i.SecondaryGraphTypes.Rectangle,c),r(a,i.SecondaryGraphTypes.Label,u),a),t.getDefaultSlideParams=o},"./app/assets/json/slideSettings/label.json":function(e,t){e.exports={name:"label",title:"标签",params:[{name:"size",title:"矩形尺寸",items:[{name:"width",title:"宽度(像素)",component:"inputnumber",default:200},{name:"height",title:"高度(像素)",component:"inputnumber",default:120}]},{name:"position",title:"标签位置",items:[{name:"positionX",title:"x轴位置(像素)",component:"inputnumber"},{name:"positionY",title:"y轴位置(像素)",component:"inputnumber"}]},{name:"content",title:"文本",items:[{name:"contentText",tip:"输入文本",title:"文本内容",component:"input",default:"",labelCol:6,wrapperCol:24}]},{name:"font",title:"文字",items:[{name:"fontFamily",title:"字体",component:"select",values:[{name:"默认",value:""},{name:"微软雅黑",value:"Microsoft Yahei"},{name:"宋体",value:"SimSun"},{name:"黑体",value:"Heiti"},{name:"华文细黑",value:"STXihei"},{name:"Verdana",value:"Verdana"},{name:"Arial",value:"Arial"},{name:"Times New Roman",value:"Times New Roman"},{name:"Times",value:"Times"},{name:"MS Sans Serif",value:"MS Sans Serif"}],default:""},{name:"fontColor",title:"字体颜色",component:"colorPicker",default:[0,0,0]},{name:"fontSize",title:"字体大小(像素)",component:"inputnumber",default:40},{name:"textAlign",title:"对齐方式",component:"select",values:[{name:"左对齐",value:"left"},{name:"右对齐",value:"right"},{name:"居中",value:"center"},{name:"两端对齐",value:"justify"}],default:"justify"},{name:"textStyle",title:"样式",component:"checkbox",values:[{label:"粗体",value:"bold"},{label:"斜体",value:"italic"},{label:"下划线",value:"underline"}],default:[]},{name:"lineHeight",title:"行高(像素)",component:"inputnumber",default:40},{name:"textIndent",title:"首行缩进(像素)",component:"inputnumber",default:0}]},{name:"padding",title:"内边距(像素)",items:[{name:"paddingTop",tip:"px",title:"上",component:"inputnumber",default:0,span:12},{name:"paddingBottom",tip:"px",title:"下",component:"inputnumber",default:0,span:12},{name:"paddingLeft",tip:"px",title:"左",component:"inputnumber",default:0,span:12},{name:"paddingRight",tip:"px",title:"右",component:"inputnumber",default:0,span:12}]},{name:"background",title:"背景",items:[{name:"backgroundColor",title:"背景颜色",component:"colorPicker",default:[255,255,255],span:12},{name:"opacity",tip:"0-100",title:"透明度",component:"inputnumber",default:100,min:0,max:100,span:12}]},{name:"border",title:"边框",items:[{name:"borderColor",title:"边框颜色",component:"colorPicker",default:[0,0,0]},{name:"borderWidth",title:"边框粗细(像素)",component:"inputnumber",default:1},{name:"borderStyle",title:"边框样式",component:"select",values:[{name:"实线",value:"solid"},{name:"虚线",value:"dashed"},{name:"点线",value:"dotted"},{name:"双框",value:"double"}],default:"solid"},{name:"borderRadius",tip:"px",title:"圆角半径(像素)",component:"inputnumber",default:0}]}]}},"./app/assets/json/slideSettings/rectangle.json":function(e,t){e.exports={name:"rectangle",title:"矩形",params:[{name:"size",title:"矩形尺寸",items:[{name:"width",title:"宽度(像素)",component:"inputnumber",default:200},{name:"height",title:"高度(像素)",component:"inputnumber",default:120}]},{name:"position",title:"矩形位置",items:[{name:"positionX",title:"x轴位置(像素)",component:"inputnumber"},{name:"positionY",title:"y轴位置(像素)",component:"inputnumber"}]},{name:"background",title:"背景颜色",items:[{name:"backgroundColor",title:"颜色",component:"colorPicker",default:[255,255,255]},{name:"opacity",tip:"0-100",title:"透明度",component:"inputnumber",default:100,min:0,max:100}]},{name:"backgroundImage",title:"图片",items:[{name:"backgroundImage",title:"背景图片",component:"upload",action:"slide/widget/{id}/bgImage",accept:"image/*",autoUpdate:!0,labelCol:6,wrapperCol:24},{name:"backgroundSize",title:"大小",component:"select",values:[{name:"自动",value:"auto"},{name:"包含",value:"contain"},{name:"铺满",value:"cover"}],default:"auto"},{name:"backgroundRepeat",title:"重复",component:"select",values:[{name:"x轴y轴重复",value:"repeat"},{name:"x轴重复",value:"repeat-x"},{name:"y轴重复",value:"repeat-y"},{name:"不重复",value:"no-repeat"}],default:"repeat"}]},{name:"border",title:"边框",items:[{name:"borderColor",title:"边框颜色",component:"colorPicker",default:[0,0,0]},{name:"borderWidth",title:"边框粗细",component:"inputnumber",default:1},{name:"borderStyle",title:"边框样式",component:"select",values:[{name:"实线",value:"solid"},{name:"虚线",value:"dashed"},{name:"点线",value:"dotted"},{name:"双框",value:"double"}],default:"solid"},{name:"borderRadius",tip:"",title:"圆角半径",component:"inputnumber",default:0}]}]}},"./app/assets/json/slideSettings/slide.json":function(e,t){e.exports={name:"slide",title:"背景设置",params:[{name:"slideSize",title:"屏幕尺寸",items:[{name:"width",title:"宽度(像素)",component:"inputnumber",default:1920},{name:"height",title:"高度(像素)",component:"inputnumber",default:1080}]},{name:"background",title:"背景颜色",items:[{name:"backgroundColor",title:"背景颜色",component:"colorPicker",default:[255,255,255]},{name:"opacity",title:"透明度",component:"inputnumber",default:50,min:0,max:100}]},{name:"scale",title:"缩放",items:[{name:"scaleMode",title:"缩放方式",component:"radio",values:[{name:"等比缩放宽度",value:"scaleWidth"},{name:"等比缩放高度",value:"scaleHeight"},{name:"全屏铺满",value:"scaleFull"},{name:"实际尺寸",value:"noScale"}],default:"scaleWidth"}]},{name:"grid",title:"栅格",items:[{name:"gridDistance",title:"栅格间距",component:"inputnumber",default:10}]},{name:"image",title:"图片",items:[{name:"backgroundImage",title:"背景图片",component:"upload",action:"slide/{id}/upload/bgImage",accept:"image/*",autoUpdate:!0,labelCol:6,wrapperCol:24}]}]}},"./app/assets/json/widgetlib/index.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/globalConstants.ts"),o=[{id:1,name:"pivot",title:"透视表",icon:"icon-table",coordinate:"cartesian",requireDimetions:0,requireMetrics:0,data:{color:{title:"颜色",type:"category"}},style:{pivot:{fontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:r.PIVOT_DEFAULT_FONT_COLOR,lineStyle:"solid",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,headerBackgroundColor:r.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR}}},{id:2,name:"line",title:"折线图",icon:"icon-chart-line",coordinate:"cartesian",requireDimetions:1,requireMetrics:1,dimetionAxis:"col",data:{color:{title:"颜色",type:"category"},label:{title:"标签",type:"all"},tip:{title:"提示信息",type:"value"}},style:{spec:{smooth:!1,step:!1},xAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR},yAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR,showTitleAndUnit:!0,titleFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,titleFontSize:"12",titleColor:r.PIVOT_DEFAULT_FONT_COLOR},splitLine:{showHorizontalLine:!0,horizontalLineStyle:"dashed",horizontalLineSize:"1",horizontalLineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showVerticalLine:!1,verticalLineStyle:"dashed",verticalLineSize:"1",verticalLineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR},pivot:{fontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:r.PIVOT_DEFAULT_FONT_COLOR,lineStyle:"solid",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,headerBackgroundColor:r.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR}}},{id:3,name:"bar",title:"柱状图",icon:"icon-chart-bar",coordinate:"cartesian",requireDimetions:0,requireMetrics:1,dimetionAxis:"col",data:{color:{title:"颜色",type:"category"},label:{title:"标签",type:"all"},tip:{title:"提示信息",type:"value"}},style:{xAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR},yAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR,showTitleAndUnit:!0,titleFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,titleFontSize:"12",titleColor:r.PIVOT_DEFAULT_FONT_COLOR},splitLine:{showHorizontalLine:!0,horizontalLineStyle:"dashed",horizontalLineSize:"1",horizontalLineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showVerticalLine:!1,verticalLineStyle:"dashed",verticalLineSize:"1",verticalLineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR},pivot:{fontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:r.PIVOT_DEFAULT_FONT_COLOR,lineStyle:"solid",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,headerBackgroundColor:r.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR}}},{id:4,name:"scatter",title:"散点图",icon:"icon-scatter-chart",coordinate:"cartesian",requireDimetions:0,requireMetrics:1,data:{xAxis:{title:"x数据轴",type:"value"},color:{title:"颜色",type:"category"},size:{title:"尺寸",type:"value"},label:{title:"标签",type:"all"},tip:{title:"提示信息",type:"value"}},style:{xAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR},yAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR,showTitleAndUnit:!0,titleFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,titleFontSize:"12",titleColor:r.PIVOT_DEFAULT_FONT_COLOR},splitLine:{showHorizontalLine:!0,horizontalLineStyle:"dashed",horizontalLineSize:"1",horizontalLineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showVerticalLine:!1,verticalLineStyle:"dashed",verticalLineSize:"1",verticalLineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR},pivot:{fontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:r.PIVOT_DEFAULT_FONT_COLOR,lineStyle:"solid",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,headerBackgroundColor:r.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR}}},{id:5,name:"pie",title:"饼图",icon:"icon-chartpie",coordinate:"polar",requireDimetions:0,requireMetrics:1,data:{color:{title:"颜色",type:"category"},label:{title:"标签",type:"all"},tip:{title:"提示信息",type:"value"}},style:{spec:{circle:!1},xAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR},splitLine:{showHorizontalLine:!0,horizontalLineStyle:"dashed",horizontalLineSize:"1",horizontalLineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showVerticalLine:!1,verticalLineStyle:"dashed",verticalLineSize:"1",verticalLineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR},pivot:{fontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:r.PIVOT_DEFAULT_FONT_COLOR,lineStyle:"solid",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,headerBackgroundColor:r.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR}}}];t.default=o},"./app/assets/less/style.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/assets/less/style.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/assets/less/util.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/assets/less/util.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/assets/override/antd.css":function(e,t,n){var r=n("./node_modules/css-loader/index.js!./node_modules/postcss-loader/index.js!./app/assets/override/antd.css");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/assets/override/codemirror_theme.css":function(e,t,n){var r=n("./node_modules/css-loader/index.js!./node_modules/postcss-loader/index.js!./app/assets/override/codemirror_theme.css");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/assets/override/datepicker.css":function(e,t,n){var r=n("./node_modules/css-loader/index.js!./node_modules/postcss-loader/index.js!./app/assets/override/datepicker.css");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/assets/override/react-color.css":function(e,t,n){var r=n("./node_modules/css-loader/index.js!./node_modules/postcss-loader/index.js!./app/assets/override/react-color.css");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/assets/override/react-grid.css":function(e,t,n){var r=n("./node_modules/css-loader/index.js!./node_modules/postcss-loader/index.js!./app/assets/override/react-grid.css");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/components/Avatar/Avatar.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/components/Avatar/Avatar.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/components/Avatar/index.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{};return x({touchAction:"none"},e)}function _(e,t){e.classList?e.classList.add(t):e.className.match(new RegExp("(?:^|\\s)"+t+"(?!\\S)"))||(e.className+=" "+t)}function A(e,t){e.classList?e.classList.remove(t):e.className=e.className.replace(new RegExp("(?:^|\\s)"+t+"(?!\\S)","g"),"")}Object.defineProperty(t,"__esModule",{value:!0});var x=Object.assign||function(e){for(var t=1;t1?t-1:0),r=1;r2?n-2:0),o=2;o: Unmounted during event!");return t}Object.defineProperty(t,"__esModule",{value:!0}),t.getBoundPosition=r,t.snapToGrid=o,t.canDragX=a,t.canDragY=i,t.getControlPosition=s,t.createCoreData=l,t.createDraggableData=c;var p=n(0),f=n(4),h=function(e){return e&&e.__esModule?e:{default:e}}(f),m=n(5)},function(e,t,n){"use strict";(function(e){function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":i(t))&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":i(t)));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var l=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c=function(){function e(e,t){for(var n=0;n not mounted on DragStart!");var n=t.ownerDocument;if(!(r.props.disabled||!(e.target instanceof n.defaultView.Node)||r.props.handle&&!(0,g.matchesSelectorAndParentsTo)(e.target,r.props.handle,t)||r.props.cancel&&(0,g.matchesSelectorAndParentsTo)(e.target,r.props.cancel,t))){var o=(0,g.getTouchIdentifier)(e);r.setState({touchIdentifier:o});var a=(0,b.getControlPosition)(e,o,r);if(null!=a){var i=a.x,s=a.y,l=(0,b.createCoreData)(r,i,s);(0,_.default)("DraggableCore: handleDragStart: %j",l),(0,_.default)("calling",r.props.onStart);!1!==r.props.onStart(e,l)&&(r.props.enableUserSelectHack&&(0,g.addUserSelectStyles)(n),r.setState({dragging:!0,lastX:i,lastY:s}),(0,g.addEvent)(n,x.move,r.handleDrag),(0,g.addEvent)(n,x.stop,r.handleDragStop))}}},r.handleDrag=function(e){"touchmove"===e.type&&e.preventDefault();var t=(0,b.getControlPosition)(e,r.state.touchIdentifier,r);if(null!=t){var n=t.x,o=t.y;if(Array.isArray(r.props.grid)){var a=n-r.state.lastX,i=o-r.state.lastY,s=(0,b.snapToGrid)(r.props.grid,a,i),c=l(s,2);if(a=c[0],i=c[1],!a&&!i)return;n=r.state.lastX+a,o=r.state.lastY+i}var u=(0,b.createCoreData)(r,n,o);(0,_.default)("DraggableCore: handleDrag: %j",u);if(!1!==r.props.onDrag(e,u))r.setState({lastX:n,lastY:o});else try{r.handleDragStop(new MouseEvent("mouseup"))}catch(e){var d=document.createEvent("MouseEvents");d.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),r.handleDragStop(d)}}},r.handleDragStop=function(e){if(r.state.dragging){var t=(0,b.getControlPosition)(e,r.state.touchIdentifier,r);if(null!=t){var n=t.x,o=t.y,a=(0,b.createCoreData)(r,n,o),i=m.default.findDOMNode(r);i&&r.props.enableUserSelectHack&&(0,g.removeUserSelectStyles)(i.ownerDocument),(0,_.default)("DraggableCore: handleDragStop: %j",a),r.setState({dragging:!1,lastX:NaN,lastY:NaN}),r.props.onStop(e,a),i&&((0,_.default)("DraggableCore: Removing handlers"),(0,g.removeEvent)(i.ownerDocument,x.move,r.handleDrag),(0,g.removeEvent)(i.ownerDocument,x.stop,r.handleDragStop))}}},r.onMouseDown=function(e){return x=A.mouse,r.handleDragStart(e)},r.onMouseUp=function(e){return x=A.mouse,r.handleDragStop(e)},r.onTouchStart=function(e){return x=A.touch,r.handleDragStart(e)},r.onTouchEnd=function(e){return x=A.touch,r.handleDragStop(e)},i=n,a(r,i)}return s(t,e),c(t,[{key:"componentWillUnmount",value:function(){var e=m.default.findDOMNode(this);if(e){var t=e.ownerDocument;(0,g.removeEvent)(t,A.mouse.move,this.handleDrag),(0,g.removeEvent)(t,A.touch.move,this.handleDrag),(0,g.removeEvent)(t,A.mouse.stop,this.handleDragStop),(0,g.removeEvent)(t,A.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&(0,g.removeUserSelectStyles)(t)}}},{key:"render",value:function(){return d.default.cloneElement(d.default.Children.only(this.props.children),{style:(0,g.styleHacks)(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}]),t}(d.default.Component);w.displayName="DraggableCore",w.propTypes={allowAnyClick:f.default.bool,disabled:f.default.bool,enableUserSelectHack:f.default.bool,offsetParent:function(t,n){if(e.browser&&t[n]&&1!==t[n].nodeType)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:f.default.arrayOf(f.default.number),handle:f.default.string,cancel:f.default.string,onStart:f.default.func,onDrag:f.default.func,onStop:f.default.func,onMouseDown:f.default.func,className:v.dontSetMe,style:v.dontSetMe,transform:v.dontSetMe},w.defaultProps={allowAnyClick:!1,cancel:null,disabled:!1,enableUserSelectHack:!0,offsetParent:null,handle:null,grid:null,transform:null,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){}},t.default=w}).call(t,n(19))},function(e,t,n){"use strict";function r(){}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},function(e,t,n){"use strict";var r=n(13).default;e.exports=r,e.exports.default=r,e.exports.DraggableCore=n(10).default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":i(t))&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":i(t)));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var c=Object.assign||function(e){for(var t=1;t, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}},{key:"componentDidMount",value:function(){void 0!==window.SVGElement&&b.default.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:"componentWillReceiveProps",value:function(e){!e.position||this.props.position&&e.position.x===this.props.position.x&&e.position.y===this.props.position.y||this.setState({x:e.position.x,y:e.position.y})}},{key:"componentWillUnmount",value:function(){this.setState({dragging:!1})}},{key:"render",value:function(){var e,t={},n=null,r=Boolean(this.props.position),a=!r||this.state.dragging,i=this.props.position||this.props.defaultPosition,s={x:(0,A.canDragX)(this)&&a?this.state.x:i.x,y:(0,A.canDragY)(this)&&a?this.state.y:i.y};this.state.isElementSVG?n=(0,_.createSVGTransform)(s):t=(0,_.createCSSTransform)(s);var l=this.props,u=l.defaultClassName,d=l.defaultClassNameDragging,p=l.defaultClassNameDragged,h=(0,y.default)(this.props.children.props.className||"",u,(e={},o(e,d,this.state.dragging),o(e,p,this.state.dragged),e));return f.default.createElement(j.default,c({},this.props,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),f.default.cloneElement(f.default.Children.only(this.props.children),{className:h,style:c({},this.props.children.props.style,t),transform:n}))}}]),t}(f.default.Component);k.displayName="Draggable",k.propTypes=c({},j.default.propTypes,{axis:m.default.oneOf(["both","x","y","none"]),bounds:m.default.oneOfType([m.default.shape({left:m.default.number,right:m.default.number,top:m.default.number,bottom:m.default.number}),m.default.string,m.default.oneOf([!1])]),defaultClassName:m.default.string,defaultClassNameDragging:m.default.string,defaultClassNameDragged:m.default.string,defaultPosition:m.default.shape({x:m.default.number,y:m.default.number}),position:m.default.shape({x:m.default.number,y:m.default.number}),scale:m.default.number,className:x.dontSetMe,style:x.dontSetMe,transform:x.dontSetMe}),k.defaultProps=c({},j.default.defaultProps,{axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},position:null,scale:1}),t.default=k},function(e,t,n){"use strict";var r=n(1),o=n(2),a=n(8),s=n(3),l=n(15);e.exports=function(e,t){function n(e){var t=e&&(E&&e[E]||e[S]);if("function"==typeof t)return t}function c(e,t){return e===t?0!==e||1/e==1/t:e!==e&&t!==t}function u(e){this.message=e,this.stack=""}function d(e){function n(n,l,c,d,p,f,h){if(d=d||k,f=f||c,h!==s)if(t)o(!1,"Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");else if("production"!==Object({DRAGGABLE_DEBUG:void 0}).NODE_ENV&&"undefined"!=typeof console){var m=d+":"+c;!r[m]&&i<3&&(a(!1,"You are manually calling a React.PropTypes validation function for the `%s` prop on `%s`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details.",f,d),r[m]=!0,i++)}return null==l[c]?n?new u(null===l[c]?"The "+p+" `"+f+"` is marked as required in `"+d+"`, but its value is `null`.":"The "+p+" `"+f+"` is marked as required in `"+d+"`, but its value is `undefined`."):null:e(l,c,d,p,f)}if("production"!==Object({DRAGGABLE_DEBUG:void 0}).NODE_ENV)var r={},i=0;var l=n.bind(null,!1);return l.isRequired=n.bind(null,!0),l}function p(e){function t(t,n,r,o,a,i){var s=t[n];if(A(s)!==e)return new u("Invalid "+o+" `"+a+"` of type `"+x(s)+"` supplied to `"+r+"`, expected `"+e+"`.");return null}return d(t)}function f(e){function t(t,n,r,o,a){if("function"!=typeof e)return new u("Property `"+a+"` of component `"+r+"` has invalid PropType notation inside arrayOf.");var i=t[n];if(!Array.isArray(i)){return new u("Invalid "+o+" `"+a+"` of type `"+A(i)+"` supplied to `"+r+"`, expected an array.")}for(var l=0;l0&&void 0!==arguments[0]?arguments[0]:"transform";if("undefined"==typeof window||void 0===window.document)return"";var t=window.document.documentElement.style;if(e in t)return"";for(var n=0;n1)for(var n=1;n0?t[0]:{};n.setState({localFilters:t,selectedFilter:r,showPreview:f.FilterTypesViewSetting[r.type]},function(){r.key&&n.filterForm.setFieldsValue(r)})},n.selectFilter=function(e){var t=n.state.localFilters,r=t.find(function(t){return t.key===e});n.setState({selectedFilter:r,previewFilter:{key:"",viewId:"",fromModel:""}},function(){n.filterForm.setFieldsValue(r)})},n.addFilter=function(){var e=n.state.localFilters,t={key:p.uuid(8,16),name:"新建全局筛选",type:f.FilterTypes.InputText,relatedViews:{}};n.setState({localFilters:[].concat(o(e),[t]),selectedFilter:t,showPreview:!1},function(){n.filterForm.setFieldsValue(t)})},n.deleteFilter=function(e){var t=n.state,r=t.localFilters,o=t.selectedFilter,a=r.filter(function(t){return t.key!==e}),i=o.key!==e?o:a.length>0?a[0]:{};n.setState({localFilters:a,selectedFilter:i,showPreview:f.FilterTypesViewSetting[i.type]},function(){i.key&&n.filterForm.setFieldsValue(i)})},n.filterTypeChange=function(e){n.setState({showPreview:f.FilterTypesViewSetting[e]})},n.filterItemNameChange=function(e,t){var r=n.state.localFilters;r.find(function(t){return t.key===e}).name=t,n.setState({localFilters:r})},n.filterItemSave=function(e){var t=n.state.localFilters,r=t.findIndex(function(t){return t.key===e.key});r<0||(t.splice(r,1,e),n.setState({localFilters:t}))},n.ok=function(){var e=n.state.localFilters;e.length>0&&n.filterForm.saveFilterItem(),(0,n.props.onOk)([].concat(o(e)))},n.getPreviewData=function(e,t,r,o){var a=n.props.onGetPreviewData;n.setState({previewFilter:{key:e,viewId:t,fromModel:r}},function(){a(e,t,r,o)})},n.state={localFilters:[],selectedFilter:{},showPreview:!1,previewFilter:{key:"",viewId:"",fromModel:""}},n.refHandlers={filterForm:function(e){return n.filterForm=e}},n}return s(t,e),l(t,[{key:"componentWillMount",value:function(){this.initState()}},{key:"componentWillReceiveProps",value:function(e){var t=e.filters,n=e.saving;t!==this.props.filters&&this.initState(),n!==this.props.saving&&this.ok()}},{key:"render",value:function(){var e,t=this.props,n=t.views,o=t.widgets,a=t.items,i=t.previewData,s=this.state,l=s.localFilters,d=s.selectedFilter,p=s.showPreview,f=this.state.previewFilter,y=f.key,_=f.fromModel,A=i[y]?i[y][_]||[]:[],x=u((e={},r(e,v.right,!0),r(e,b.hide,!p),e));return c.createElement("div",{className:v.filterConfig},c.createElement("div",{className:v.content},c.createElement("div",{className:v.left},c.createElement(h.default,{list:l,onSelectFilter:this.selectFilter,onAddFilter:this.addFilter,onDeleteFilter:this.deleteFilter,selectedFilterKey:d.key})),c.createElement("div",{className:v.center},d.key?c.createElement(m.default,{views:n,widgets:o,items:a,filterItem:d,onFilterTypeChange:this.filterTypeChange,onFilterItemNameChange:this.filterItemNameChange,onFilterItemSave:this.filterItemSave,onGetPreviewData:this.getPreviewData,wrappedComponentRef:this.refHandlers.filterForm}):null),c.createElement("div",{className:x},d.key?c.createElement(g.default,{currentPreviewData:A}):null)))}}]),t}(c.Component);t.FilterConfig=y,t.default=y},"./app/components/Filters/FilterControl.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n=0}).forEach(function(e){var t=s[e],n=+e.substr(A.prefixView.length),r=!!s[A.prefixOther+n],o=a[n].model.find(function(e){return e.key===t}).sqlType;l.relatedViews[n]={key:t,name:t,isParam:r,sqlType:o,items:i[n].filter(function(e){return s[A.prefixItem+e.id]}).map(function(e){return e.id})}}),Object.keys(s).filter(function(e){return[A.prefixItem,A.prefixView,A.prefixOther].every(function(t){return e.indexOf(t)<0})}).forEach(function(e){l[e]=s[e]}),console.log("saved... ",JSON.parse(JSON.stringify(l))),r(l)},n.setFieldsValue=function(e){var t=n.props,r=t.views,o=t.widgets,a=t.items,i=e.key,s=e.name,l=e.type,c=e.fromView,u=e.fromModel,d={key:i,name:s,type:l,fromView:c,fromModel:u};c&&n.onFromViewChange(c,u);var p=e.relatedViews,f={};r.forEach(function(e){var t=e.id;if(p[t])d[""+A.prefixView+t]=p[t].key,d[""+A.prefixOther+t]=p[t].isParam;else{var n=JSON.parse(e.model),r=Object.keys(n)[0];d[""+A.prefixView+t]=r,d[""+A.prefixOther+t]=!1}}),a.forEach(function(e){var t=e.id,n=o.find(function(t){return t.id===e.widgetId}),r=n.viewId;p[r]?(d[""+A.prefixItem+t]=p[r].items.indexOf(t)>=0,f[r]=p[r].isParam):(d[""+A.prefixItem+t]=!1,f[r]=!1)}),n.setState({needSetView:!!x.FilterTypesViewSetting[l],modelOrParam:f},function(){var e=n.props,t=e.form;e.onGetPreviewData;t.setFieldsValue(d)})},n.filterItemNameChange=function(e){var t=n.props,r=t.onFilterItemNameChange,o=t.filterItem,a=e.target.value;r(o.key,a)},n.modelOrParamChange=function(e){return function(t){var o=n.state,a=o.modelOrParam,i=o.usedViews,s=i[e],l=s.param,c=s.model,u=t?l:c,d=u.length<=0?null:t?l[0]:c[0].key;n.setState({modelOrParam:Object.assign({},a,r({},e,t))},function(){n.props.form.setFieldsValue(r({},""+A.prefixView+e,d))})}},n.onFromViewChange=function(e,t){var r=n.props.views,o=r.find(function(t){return t.id===+e}),a=Object.entries(JSON.parse(o.model)).filter(function(e){var t=s(e,2);t[0];return"category"===t[1].modelType}).map(function(e){return s(e,1)[0]});n.setState({modelItems:a},function(){var r=n.props,o=r.form,i=r.filterItem,s=r.onGetPreviewData;!t||a.indexOf(t)<0?(o.setFieldsValue({fromModel:a[0]}),s(i.key,e,a[0],[])):s(i.key,e,t,[])})},n.onFromModelChange=function(e){var t=n.props,r=t.onGetPreviewData,o=t.form,a=t.filterItem,i=o.getFieldValue("fromView");r(a.key,i,e,[])},n.filterTypeChange=function(e){n.setState({needSetView:x.FilterTypesViewSetting[e]}),(0,n.props.onFilterTypeChange)(e)},n.state={usedViews:{},mappingViewItems:{},needSetView:!1,modelItems:[],modelOrParam:{}},n}return i(t,e),l(t,[{key:"componentWillMount",value:function(){var e=this.props,t=e.views,n=e.widgets,r=e.items;t&&n&&r&&this.initFormSetting(t,n,r)}},{key:"componentWillReceiveProps",value:function(e){var t=e.views,n=e.widgets,r=e.items,o=e.filterItem;t&&n&&r&&t!==this.props.views&&n!==this.props.widgets&&r!==this.props.items&&this.initFormSetting(t,n,r);var a=this.props.filterItem;o&&o!==a&&a.key&&this.saveFilterItem()}},{key:"initFormSetting",value:function(e,t,n){var r=/query@var\s+\$(\w+)\$/g,o={},a={};n.forEach(function(n){var i=n.widgetId,l=t.find(function(e){return e.id===i}),c=l.viewId;if(!o[c]){var u=e.find(function(e){return e.id===c}),d=u.id,p=u.name,f=u.description,h=u.model,m=u.sql,g=JSON.parse(h);o[c]={id:d,name:p,description:f,model:Object.entries(g).map(function(e){var t=s(e,2),n=t[0],r=t[1],o=r.sqlType;return{key:n,visualType:r.visualType,sqlType:o}}),param:(m.match(r)||[]).map(function(e){return e.substring(e.indexOf("$")+1,e.length-1)})}}a[c]||(a[c]=[]),a[c].push({id:n.id,name:l.name})}),this.setState({usedViews:o,mappingViewItems:a})}},{key:"renderConfigItem",value:function(e,t,n){var r=this.props.form,o=this.state.modelOrParam,a=r.getFieldDecorator,i=t[e],s=n[e],l=c.createElement(g,null,o[e]?i.param.map(function(e){return c.createElement(b,{key:e,value:e},e)}):i.model.map(function(e){return c.createElement(b,{key:e.key,value:e.key},e.key)}));return c.createElement(p,{key:e,className:_.configItem},c.createElement(f,{span:10,className:_.itemList},s.map(function(e){return c.createElement(d,{className:_.item,key:e.id,label:e.name,labelCol:{span:21},wrapperCol:{span:3}},a(""+A.prefixItem+e.id,{valuePropName:"checked"})(w))})),c.createElement(f,{span:14,className:_.viewSet},c.createElement(d,{className:_.item,label:"参数",labelCol:{span:8},wrapperCol:{span:16}},a(""+A.prefixOther+i.id,{valuePropName:"checked"})(c.createElement(v,{onChange:this.modelOrParamChange(e)}))),c.createElement(d,{className:_.item,label:i.name,labelCol:{span:8},wrapperCol:{span:15}},a(""+A.prefixView+i.id)(l))))}},{key:"renderConfigForm",value:function(e,t){var n=this,r=this.props,o=r.form,a=r.views,i=o.getFieldDecorator,s=this.state,l=s.needSetView,m=s.modelItems;return c.createElement("div",{className:_.filterForm},c.createElement("div",{className:_.title},j),c.createElement("div",{className:_.form},c.createElement(u,null,c.createElement(p,null,c.createElement(f,{span:12},c.createElement(d,{className:y.hide},i("key",{})(E)),c.createElement(d,{label:"名称",labelCol:{span:8},wrapperCol:{span:16}},i("name",{rules:[{required:!0,message:"不能为空"}]})(c.createElement(h,{onChange:this.filterItemNameChange,placeholder:"筛选项名称"})))),c.createElement(f,{span:12},c.createElement(d,{label:"类型",labelCol:{span:8},wrapperCol:{span:16}},i("type",{rules:[{required:!0,message:"不能为空"}]})(c.createElement(g,{onChange:this.filterTypeChange},x.FilterTypeList.map(function(e){return c.createElement(b,{key:e,value:e},x.FilterTypesLocale[e])})))))),c.createElement(p,{className:l?"":y.hide},c.createElement(f,{span:12},c.createElement(d,{label:"来源 View",labelCol:{span:8},wrapperCol:{span:16}},i("fromView",{rules:[{required:!0,message:"不能为空"}]})(c.createElement(g,{onChange:this.onFromViewChange},a.map(function(e){return c.createElement(b,{key:e.id,value:e.id.toString()},e.name)}))))),c.createElement(f,{span:12},c.createElement(d,{label:"来源字段",labelCol:{span:8},wrapperCol:{span:16}},i("fromModel",{rules:[{required:!0,message:"不能为空"}]})(c.createElement(g,{onChange:this.onFromModelChange},m.map(function(e){return c.createElement(b,{key:e,value:e},e)})))))),c.createElement(p,null,c.createElement(f,{span:24},Object.keys(e).map(function(r){return n.renderConfigItem(r,e,t)}))))))}},{key:"render",value:function(){var e=this.props,t=e.views,n=e.widgets,r=e.items;if(t&&n&&r){var o=this.state,a=o.usedViews,i=o.mappingViewItems;return this.renderConfigForm(a,i)}return null}}]),t}(c.Component);t.FilterForm=S,t.default=u.create()(S)},"./app/components/Filters/FilterList.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=function(){function e(e,t){for(var n=0;n0&&s.push({name:a,value:o.map(function(t){return e.getValidValue(t,i)}).join(",")});break;case d.FilterTypes.CascadeSelect:break;case d.FilterTypes.InputDate:o&&s.push({name:a,value:"'"+u.default(o).format("YYYY-MM-DD")+"'"});break;case d.FilterTypes.MultiDate:o&&s.push({name:a,value:o.split(",").map(function(e){return"'"+e+"'"}).join(",")});break;case d.FilterTypes.DateRange:if(o.length){var l;(l=s).push.apply(l,r(o.map(function(e){return{name:a,value:"'"+u.default(e).format("YYYY-MM-DD")+"'"}})))}break;case d.FilterTypes.Datetime:o&&s.push({name:a,value:"'"+u.default(o).format("YYYY-MM-DD HH:mm:ss")+"'"});break;case d.FilterTypes.DatetimeRange:if(o.length){var c;(c=s).push.apply(c,r(o.map(function(e){return{name:a,value:"'"+u.default(e).format("YYYY-MM-DD HH:mm:ss")+"'"}})))}break;default:var p=o.target.value.trim();p&&s.push({name:a,value:e.getValidValue(p,i)})}return s},e.getModelValue=function(t,n,r){var o=n.key,a=n.sqlType,i=[];switch(t){case d.FilterTypes.InputText:case d.FilterTypes.InputNumber:case d.FilterTypes.Select:void 0!==r&&i.push(o+" = "+e.getValidValue(r,a));break;case d.FilterTypes.NumberRange:""===r[0]||isNaN(r[0])||i.push(o+" >= "+e.getValidValue(r[0],a)),""===r[1]||isNaN(r[1])||i.push(o+" <= "+e.getValidValue(r[1],a));break;case d.FilterTypes.MultiSelect:r.length&&r.length>0&&i.push(o+" in ("+r.map(function(t){return e.getValidValue(t,a)}).join(",")+")");break;case d.FilterTypes.CascadeSelect:break;case d.FilterTypes.InputDate:r&&i.push(o+" = "+e.getValidValue(u.default(r).format("YYYY-MM-DD"),a));break;case d.FilterTypes.MultiDate:r&&i.push(o+" in ("+r.split(",").map(function(t){return e.getValidValue(t,a)}).join(",")+")");break;case d.FilterTypes.DateRange:r.length&&(i.push(o+" >= "+e.getValidValue(u.default(r[0]).format("YYYY-MM-DD"),a)),i.push(o+" <= "+e.getValidValue(u.default(r[1]).format("YYYY-MM-DD"),a)));break;case d.FilterTypes.Datetime:r&&i.push(o+" = "+e.getValidValue(u.default(r).format("YYYY-MM-DD HH:mm:ss"),a));break;case d.FilterTypes.DatetimeRange:r.length&&(i.push(o+" >= "+e.getValidValue(u.default(r[0]).format("YYYY-MM-DD HH:mm:ss"),a)),i.push(o+" <= "+e.getValidValue(u.default(r[1]).format("YYYY-MM-DD HH:mm:ss"),a)));break;default:var s=r.target.value.trim();s&&i.push(o+" = "+e.getValidValue(s,a))}return i},e.getValidValue=function(e,t){return p.SQL_NUMBER_TYPES.indexOf(t)>=0?e:"'"+e+"'"},e}return i(t,e),l(t,[{key:"render",value:function(){var e=this,t=this.props,n=t.filters,r=t.onGetOptions,o=t.filterOptions,a=t.form;return c.createElement(g,{className:b.filterPanel},c.createElement(h,{gutter:8},n.map(function(t){return c.createElement(m,{xl:3,lg:4,md:6,sm:12,key:t.key},c.createElement(f.default,{filter:t,onGetOptions:r,currentOptions:o[t.key]||{},formToAppend:a,onChange:e.change}))})))}}]),t}(c.Component);t.FilterPanel=v,t.default=g.create()(v)},"./app/components/Filters/FilterValuePreview.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n=0?t[0][n]:""+t[0][n];"parameter"===a?s.push(o+" "+i+" "+u):"variable"===a&&c.push({name:o,value:u})});var u=o[a];if(u){var d=u.filters,p=u.params;u.filters=s.length>0?Object.assign({},d,r({},e,s)):d,u.params=c.length>0?Object.assign({},p,r({},e,c)):p}else o[a]={filters:s.length>0?r({},e,s):{},params:c.length>0?r({},e,s):{}}}),o}function i(e,t,n){var r=[];return t.length<=0?r:(t.forEach(function(t){var o=t.trigger,a=t.linkager,i=+o[0],s=+a[0];e===i&&n[s]&&["filters","params"].forEach(function(t){n[s][t][e]&&(delete n[s][t][e],r.indexOf(s)<0&&r.push(s))})}),r)}var s=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();Object.defineProperty(t,"__esModule",{value:!0});var l=n("./app/globalConstants.ts");t.getMappingLinkage=o,t.processLinkage=a,t.removeLinkage=i},"./app/components/MultiDatePicker/MultiDatePicker.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/components/MultiDatePicker/MultiDatePicker.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/components/MultiDatePicker/index.js":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"MultiDatePicker",function(){return y});var i=n("./node_modules/react/react.js"),s=n.n(i),l=n("./node_modules/prop-types/index.js"),c=(n.n(l),n("./node_modules/jquery/dist/jquery.js")),u=n.n(c),d=n("./node_modules/moment/src/moment.js"),p=n("./node_modules/bootstrap-datepicker/dist/js/bootstrap-datepicker.js"),f=(n.n(p),n("./node_modules/antd/lib/icon/index.js")),h=n.n(f),m=n("./app/components/MultiDatePicker/MultiDatePicker.less"),g=n.n(m),b=function(){function e(e,t){for(var n=0;n=200){var o=r.payload.avatar,a=r.header.token;t&&"function"==typeof t.callback&&t.callback(o),h.setToken(a),localStorage.setItem("TOKEN",a)}}},n.state={currentPath:""},n}return a(t,e),i(t,[{key:"componentWillReceiveProps",value:function(e){var t=e.path;t&&t.length&&this.setState({currentPath:t})}},{key:"render",value:function(){var e=this.props,t=e.type,n=e.xhrParams,r=this.state.currentPath,o={Authorization:h.getToken()},a=r?r.indexOf("data:")>=0?r:""+r:"",i="";return"profile"===t?n&&n.id&&(i=f.default.user+"/"+n.id+"/avatar"):"organization"===t?n&&n.id&&(i=f.default.organizations+"/"+n.id+"/avatar"):"team"===t&&n&&n.id&&(i=f.default.teams+"/"+n.id+"/avatar"),s.createElement("div",{className:p.avatar},s.createElement(l.default,{path:a,size:"large",enlarge:!0}),s.createElement("div",{className:p.uploadAvatar},s.createElement("div",{className:p.uploadTitle},"上传新图像"),s.createElement(c,{name:"file",showUploadList:!1,headers:o,action:i,beforeUpload:this.beforeUpload,onChange:this.handleChange},m),s.createElement("p",{className:p.uploadDesc},"图片大小不超过1MB")))}}]),t}(s.PureComponent);t.UploadAvatar=g,t.default=g},"./app/containers/Account/Account.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Account/Account.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Account/components/Menus.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:i,t=arguments[1],n=t.type,r=t.payload,a=e.get("loginUser");switch(n){case o.LOGIN:return e.set("loginLoading",!0);case o.LOGGED:return e.set("loginLoading",!1).set("logged",!0).set("loginUser",r.user);case o.LOGIN_ERROR:return e.set("loginLoading",!1);case o.ACTIVE_SUCCESS:return e.set("logged",!0).set("loginUser",r.user);case o.LOGOUT:return e.set("logged",!1).set("loginUser",null);case o.SET_LOGIN_USER:return e.set("loginUser",r.user);case o.UPLOAD_AVATAR_SUCCESS:var s=Object.assign({},a,{avatar:r.path});return localStorage.setItem("loginUser",JSON.stringify(s)),e.set("loginUser",s);case o.SHOW_NAVIGATOR:return e.set("navigator",!0);case o.HIDE_NAVIGATOR:return e.set("navigator",!1);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/App/constants.ts"),a=n("./node_modules/immutable/dist/immutable.js"),i=a.fromJS({logged:!1,loginUser:null,loginLoading:!1,navigator:!0});t.default=r},"./app/containers/App/sagas.ts":function(e,t,n){"use strict";function r(e){var t,n,r,o,a,i;return regeneratorRuntime.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload,n=t.username,r=t.password,o=t.resolve,s.prev=1,s.next=4,x.call(S.default,{method:"post",url:k.default.login,data:{username:n,password:r}});case 4:return a=s.sent,i=C.readListAdapter(a),s.next=8,x.put(E.logged(i));case 8:localStorage.setItem("loginUser",JSON.stringify(i)),o(),s.next=17;break;case 12:return s.prev=12,s.t0=s.catch(1),s.next=16,x.put(E.loginError());case 16:T.errorHandler(s.t0);case 17:case"end":return s.stop()}},p,this,[[1,12]])}function o(e){var t,n,r,o,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,n=t.token,r=t.resolve,i.prev=1,i.next=4,x.call(S.default,{method:"post",url:k.default.signup+"/active/"+n});case 4:o=i.sent,i.t0=o.header.code,i.next=200===i.t0?8:302===i.t0?14:17;break;case 8:return a=C.readListAdapter(o),i.next=11,x.put(E.activeSuccess(a));case 11:return localStorage.setItem("loginUser",JSON.stringify(a)),r(),i.abrupt("return",a);case 14:return w.error(o.header.msg),setTimeout(function(){return location.replace("/")},500),i.abrupt("return");case 17:return i.next=19,x.put(E.activeError());case 19:return w.error(o.header.msg),i.abrupt("return",null);case 21:i.next=28;break;case 23:return i.prev=23,i.t1=i.catch(1),i.next=27,x.put(E.activeError());case 27:T.errorHandler(i.t1);case 28:case"end":return i.stop()}},f,this,[[1,23]])}function a(e){var t,n;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,x.call(S.default,k.default.user+"/token");case 3:return t=r.sent,n=C.readObjectAdapter(t),r.next=7,x.put(E.logged(n));case 7:localStorage.setItem("loginUser",JSON.stringify(n)),e.payload.resolve(),r.next=16;break;case 11:return r.prev=11,r.t0=r.catch(0),r.next=15,x.put(E.getLoginUserError());case 15:T.errorHandler(r.t0);case 16:case"end":return r.stop()}},h,this,[[0,11]])}function i(e){var t,n,r,o,a,i,s,l,c,u;return regeneratorRuntime.wrap(function(d){for(;;)switch(d.prev=d.next){case 0:return t=e.payload,n=t.id,r=t.name,o=t.type,a=t.params,i=t.resolve,s=t.reject,d.prev=1,d.next=4,x.call(S.default,k.default.checkName+"/"+o,{method:"get",params:Object.assign({},a,{id:n,name:r})});case 4:l=d.sent,c=l&&l.header&&l.header.msg?l.header.msg:"",u=l&&l.header&&l.header.code?l.header.code:"",i(c),d.next=13;break;case 10:d.prev=10,d.t0=d.catch(1),T.errorHandler(d.t0);case 13:case"end":return d.stop()}},m,this,[[1,10]])}function s(e){var t,n,r,o,a,i,s,l;return regeneratorRuntime.wrap(function(c){for(;;)switch(c.prev=c.next){case 0:if(t=e.payload,n=t.pathname,r=t.data,o=t.resolve,a=t.reject,c.prev=1,r.name){c.next=4;break}return c.abrupt("return");case 4:return c.next=6,x.call(S.default,{method:"get",url:k.default.checkNameUnique+"/"+n,params:r});case 6:i=c.sent,s=i&&i.header&&i.header.msg?i.header.msg:"",l=i&&i.header&&i.header.code?i.header.code:"",o(s),c.next=15;break;case 12:c.prev=12,c.t0=c.catch(1),T.errorHandler(c.t0);case 15:case"end":return c.stop()}},g,this,[[1,12]])}function l(e){var t,n,r,o,a,i,s;return regeneratorRuntime.wrap(function(l){for(;;)switch(l.prev=l.next){case 0:return t=e.payload,n=t.id,r=t.name,o=t.description,a=t.department,i=t.resolve,l.prev=1,l.next=4,x.call(S.default,{method:"put",url:k.default.signup+"/"+n,data:{name:r,description:o,department:a}});case 4:s=l.sent,i(s),l.next=13;break;case 8:return l.prev=8,l.t0=l.catch(1),l.next=12,x.put(E.updateProfileError());case 12:T.errorHandler(l.t0);case 13:case"end":return l.stop()}},b,this,[[1,8]])}function c(e){var t,n,r=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=r.user,e.prev=1,e.next=4,x.call(S.default,{method:"put",url:k.default.user+"/"+t.id+"/changepassword",data:t});case 4:return n=e.sent,e.next=7,x.put(E.userPasswordChanged(r.info));case 7:r.resolve(),e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,x.put(E.changeUserPasswordFail());case 14:T.errorHandler(e.t0);case 15:case"end":return e.stop()}},v,this,[[1,10]])}function u(e){var t,n,r,o,a,i;return regeneratorRuntime.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload,n=t.token,r=t.resolve,o=t.reject,s.prev=1,s.next=4,x.call(S.default,{method:"post",url:k.default.organizations+"/confirminvite/"+n});case 4:a=s.sent,s.t0=a.header.code,s.next=200===s.t0?8:13;break;case 8:return i=C.readListAdapter(a),s.next=11,x.put(E.joinOrganizationSuccess(i));case 11:return r&&r(i),s.abrupt("return",n);case 13:return s.next=15,x.put(E.joinOrganizationError());case 15:return w.error(a.header.msg),s.abrupt("return",null);case 17:s.next=22;break;case 19:s.prev=19,s.t1=s.catch(1),o&&o(s.t1);case 22:case"end":return s.stop()}},y,this,[[1,19]])}function d(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[A.throttle(1e3,j.CHECK_NAME,s),A.takeLatest(j.GET_LOGIN_USER,a),A.takeLatest(j.ACTIVE,o),A.takeLatest(j.LOGIN,r),A.takeLatest(j.UPDATE_PROFILE,l),A.takeLatest(j.CHANGE_USER_PASSWORD,c),A.takeLatest(j.JOIN_ORGANIZATION,u)];case 2:case"end":return e.stop()}},_,this)}var p=regeneratorRuntime.mark(r),f=regeneratorRuntime.mark(o),h=regeneratorRuntime.mark(a),m=regeneratorRuntime.mark(i),g=regeneratorRuntime.mark(s),b=regeneratorRuntime.mark(l),v=regeneratorRuntime.mark(c),y=regeneratorRuntime.mark(u),_=regeneratorRuntime.mark(d);Object.defineProperty(t,"__esModule",{value:!0});var A=n("./node_modules/redux-saga/es/index.js"),x=n("./node_modules/redux-saga/es/effects.js"),w=n("./node_modules/antd/lib/message/index.js"),j=n("./app/containers/App/constants.ts"),E=n("./app/containers/App/actions.ts"),S=n("./app/utils/request.ts"),k=n("./app/utils/api.js"),C=n("./app/utils/asyncAdapter.js"),T=n("./app/utils/util.ts");t.login=r,t.activeUser=o,t.getLoginUser=a,t.checkName=i,t.checkNameUnique=s,t.updateProfile=l,t.changeUserPassword=c,t.joinOrganization=u,t.default=d},"./app/containers/App/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("global")};t.selectGlobal=o;var a=function(){return r.createSelector(o,function(e){return e.get("logged")})};t.makeSelectLogged=a;var i=function(){return r.createSelector(o,function(e){return e.get("loginUser")})};t.makeSelectLoginUser=i;var s=function(){return r.createSelector(o,function(e){return e.get("loginLoading")})};t.makeSelectLoginLoading=s;var l=function(){return r.createSelector(o,function(e){return e.get("navigator")})};t.makeSelectNavigator=l;var c=function(){var e=void 0,t=void 0;return function(n){var r=n.get("route");return r.equals(e)||(e=r,t=r.toJS()),t}};t.makeSelectLocationState=c},"./app/containers/Background/Background.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Background/Background.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Background/Canvas.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n-1?n.getParentKey(e.key,Q.generateData(o)):null}).filter(function(e,t,n){return e&&n.indexOf(e)===t});n.setState({expandedKeys:i,searchValue:a,autoExpandParent:!0})},n.executeSql=function(){var e=n.state,t=e.sourceIdGeted,r=e.listData,o=e.isDeclarate;n.setState({isFold:!0,alertVisible:!0});var a=n.codeMirrorInstanceOfQuerySQL.getValue(),i="";if("yes"===o&&n.codeMirrorInstanceOfDeclaration){i=n.codeMirrorInstanceOfDeclaration.getValue()+"{"+a+"}",n.getTeamTreeData(i)}else{i="{"+a+"}";var s=r.map(function(e){return e.params=[],e});n.setState({teamParams:[{k:"",v:""}],listData:s},function(){n.setState({teamCheckedKeys:[]})})}n.props.onExecuteSql(t,i,function(e){if(e){var t=e.resultset,r=e.columns;r.map(function(e){var t=(te.SQL_FIELD_TYPES.date,void 0);for(var n in te.SQL_FIELD_TYPES)te.SQL_FIELD_TYPES.hasOwnProperty(n)&&te.SQL_FIELD_TYPES[n].indexOf(e.type)>=0&&(t=n);return e.visualType=t||"string",e.modelType=q.SQL_NUMBER_TYPES.indexOf(e.type)<0?"category":"value",e.sqlType=e.type,e}),n.setState({executeResultset:t,executeColumns:r})}}),n.asyncValidateResult=setTimeout(function(){n.setState({isShowSqlValidateAlert:!0})},100)},n.selectModelItem=function(e,t){return function(r){var o=n.state.executeColumns,a={name:e.name,sqlType:e.sqlType,visualType:"visualType"===t?r:e.visualType,modelType:"modelType"===t?"维度"===r.target.value?"category":"value":e.modelType};o.splice(o.findIndex(function(t){return t.name===e.name}),1,a),n.setState({executeColumns:o.slice()})}},n.onTeamParamChange=function(e,t){return function(r){var o=n.state,a=(o.configTeam,o.teamParams,o.listData);a.find(function(t){return t.id===e}).params[t].v=r.target.value,n.setState({listData:a.slice()})}},n.onModalOk=function(){n.props.form.validateFieldsAndScroll(function(e,t){if(!e){var r=n.state,o=r.executeColumns,a=(r.configTeam,r.listData),i=r.isDeclarate,s=r.name,l=r.description,c=r.isNameExited,u=r.sqlExecuteCode,d=n.props,p=d.route,f=d.params,h=t.id,m=t.source_id,g=t.source_name;if(!s.trim())return void L.error("\b\bView名称不能为空");if(c)return void L.error("\b\bView名称已存在");if(!m||!g)return void L.error("请选择一个Source");switch(u){case 200:var b=n.codeMirrorInstanceOfQuerySQL.doc.getValue(),v="";if("yes"===i&&n.codeMirrorInstanceOfDeclaration){var y=n.codeMirrorInstanceOfDeclaration.doc.getValue();v=b?y+"{"+b+"}":y}else v=b?"{"+b+"}":"";var _={};o.forEach(function(e){var t=e.name,n=e.sqlType,r=e.visualType,o=e.modelType;_[t]={sqlType:n,visualType:r,modelType:o}});var A=a.filter(function(e){return e.checked}).map(function(e){return{id:e.id,params:e.params}}),x={name:s,description:l,sql:v,model:JSON.stringify(_),config:0!==A.length?JSON.stringify({team:A}):"",projectId:f.pid};"/project/:pid/bizlogic"===p.path?n.props.onAddBizlogic(Object.assign({},x,{sourceId:Number(m)}),function(){n.hideForm()}):n.props.onEditBizlogic(Object.assign({},x,{id:h,source:{id:Number(m),name:g}}),function(){n.hideForm()});break;default:L.error("请检查SQL语句是否正确!",3)}}})},n.hideForm=function(){n.setState({executeResultset:[],executeColumns:[],isDeclarate:"no"},function(){n.codeMirrorInstanceOfDeclaration=!1,n.setState({isShowSqlValidateAlert:!1})}),n.props.form.resetFields(),n.props.router.push("/project/"+n.props.params.pid+"/bizlogics")},n.changeName=function(e){var t=n.props,r=t.onCheckUniqueName,o=t.route,a=t.params,i=t.form,s=i.getFieldsValue(),l=s.id,c={projectId:a.pid,id:"/project/:pid/bizlogic"===o.path?"":l,name:e.currentTarget.value};n.setState({name:e.currentTarget.value}),r("view",c,function(){n.setState({isNameExited:!1})},function(e){n.setState({isNameExited:!0})})},n.changeDesc=function(e){n.setState({description:e.currentTarget.value})},n.onTeamExpand=function(e){n.setState({teamExpandedKeys:e,teamAutoExpandParent:!1})},n.onCheck=function(e){n.setState({listData:n.getListData(e.checked),teamCheckedKeys:e.checked})},n.onSelect=function(e,t){n.setState({selectedKeys:e})},n.renderTreeNodes=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e.map(function(e){var r=n.state,o=r.listData,a=r.teamParams,i=o.find(function(t){return t.id===e.id}),s=c.createElement(ee.default,{depth:t,onTeamParamChange:n.onTeamParamChange,teamParams:a,currentItem:i});return e.children?c.createElement(B,{key:e.id,title:s,dataRef:e},n.renderTreeNodes(e.children,t+1)):c.createElement(B,{key:e.id,title:s,className:G.test})})},n.handleClose=function(){n.setState({alertVisible:!1})},n.foldBoard=function(){n.setState({isFold:!n.state.isFold})},n.cancel=function(){n.props.router.goBack()},n.changeTabs=function(e){var t=n.state.teamParams,r=n.props,o=r.params,a=r.bizlogics;if(!t.length){var i=a.find(function(e){return e.id===Number(o.bid)}),s=i.sql;n.getTeamTreeData(s)}},n.state={expandedKeys:[],searchValue:"",autoExpandParent:!0,modelType:"",dataList:[],sourceIdGeted:0,isDeclarate:"no",isShowSqlValidateAlert:!1,executeResultset:[],executeColumns:[],schemaData:[],treeData:[],listData:[],teamExpandedKeys:[],teamAutoExpandParent:!0,teamCheckedKeys:[],selectedKeys:[],teamParams:[{k:"",v:""}],configTeam:[],alertVisible:!0,screenWidth:0,isFold:!0,name:"",description:"",isNameExited:!1,selectedSourceName:"",sqlExecuteCode:!1},n.codeMirrorInstanceOfDeclaration=!1,n.codeMirrorInstanceOfQuerySQL=!1,n}return a(t,e),l(t,[{key:"componentWillMount",value:function(){var e=this.props,t=e.params,n=e.route,r=e.bizlogics,o=e.onLoadSources,a=(e.onLoadSchema,e.onLoadBizlogics),i=e.onLoadViewTeam,s=this.state;s.selectedSourceName,s.schemaData;this.setState({screenWidth:document.documentElement.clientWidth,isFold:"/project/:pid/bizlogic"!==n.path}),r||a(t.pid),o(t.pid),i(t.pid)}},{key:"componentWillReceiveProps",value:function(e){var t=this,n=e.viewTeam,r=e.sqlValidateCode,o=this.state,a=o.listData,i=(o.teamParams,o.teamCheckedKeys),s=(o.schemaData,this.props),l=s.route,c=s.params,u=s.bizlogics;window.onresize=function(){return t.setState({screenWidth:document.documentElement.clientWidth})};var d=void 0;d=0===a.length?te.toListBF(n).map(function(e){var t=[{k:"",v:""}],n=void 0,r=void 0;if(u)if("/project/:pid/bizlogic"===l.path)n=t,r=i.indexOf(""+e.id)>=0;else{var o=u.find(function(e){return e.id===Number(c.bid)});if(o.config){var a=JSON.parse(o.config).team,s=a.find(function(t){return t.id===e.id});n=s?s.params:[],r=!!s}else n=t}else n=t;return Object.assign({},e,{checked:r,params:n})}):this.state.listData.map(function(e){return Object.assign({},e,{checked:i.indexOf(""+e.id)>=0,params:e.params})});var p=d.filter(function(e){return e.checked}).map(function(e){return""+e.id});this.setState({treeData:n,listData:d,teamCheckedKeys:p,sqlExecuteCode:r})}},{key:"componentDidMount",value:function(){var e=this,t=this.props,n=t.params,r=t.bizlogics,o=t.onLoadBizlogics,a=this.state,i=a.schemaData;a.listData,a.teamParams;this.props.onHideNavigator(),this.generateList(Q.generateData(i));var s=document.querySelector("#sql_tmpl");this.handleTmplCodeMirror(s),n.bid&&(r?this.showViewInfo(r):o(n.pid,function(t){e.showViewInfo(t)}))}},{key:"showViewInfo",value:function(e){var t=this,n=this.props,r=n.params,o=n.onLoadSchema,a=this.state,i=a.listData,s=(a.teamParams,e.find(function(e){return e.id===Number(r.bid)})),l=s.name,c=s.description,u=s.source,d=s.sourceId,p=s.sql,f=s.model,h=s.config,m=p.includes("{")&&""!==p.substring(0,p.lastIndexOf("{"));if(o(d,function(e){t.setState({schemaData:e,sourceIdGeted:d},function(){t.promptCodeMirror(Q.generateData(t.state.schemaData))})}),f){var g=JSON.parse(f),b=[];for(var v in g)g.hasOwnProperty(v)&&b.push(Object.assign({name:v},g[v]));this.setState({executeColumns:b})}else this.setState({executeColumns:[]});this.props.onExecuteSql(d,p,function(e){t.setState({executeResultset:e.resultset})});var y=h?JSON.parse(h).team:"",_=i.map(function(e){var t=y.find(function(t){return e.id===t.id});return e.params=t.params,e});this.setState({selectedSourceName:u.name,name:l,description:c,listData:_,teamParams:y?y[0].params.map(function(e){return{k:e.k,v:e.v}}):[]}),this.props.form.setFieldsValue({id:Number(r.bid),source_id:""+d,source_name:u.name,isDeclarate:m?"yes":"no"}),m?this.setState({isDeclarate:"yes"},function(){var e=document.querySelector("#declaration");t.handleDelareCodeMirror(e),t.codeMirrorInstanceOfDeclaration.doc.setValue(p.includes("{")?p.substring(0,p.lastIndexOf("{")):p)}):this.codeMirrorInstanceOfDeclaration=!1,this.codeMirrorInstanceOfQuerySQL.doc.setValue(p.includes("{")?p.substring(p.indexOf("{")+1,p.lastIndexOf("}")):"")}},{key:"componentWillUnmount",value:function(){clearTimeout(this.asyncValidateResult)}},{key:"getListData",value:function(e){var t=this.state,n=t.listData,r=t.teamParams;return n.map(function(t){var n=r.map(function(e){return{k:e.k,v:""}});return Object.assign({},t,{checked:e.indexOf(""+t.id)>=0,params:t.params.length?t.params:n})})}},{key:"getTeamTreeData",value:function(e){var t=this.state.listData,n=e.match(/team@var\s+\$\w+\$/g),r=n?n.map(function(e){return e.substring(e.indexOf("$")+1,e.lastIndexOf("$"))}):[],o=r.map(function(e){return{k:e,v:""}}),a=t.map(function(e){var t=e.params;return e.params=r.map(function(e){var n=t.find(function(t){return t.k===e});return n?Object.assign({},n):{k:e,v:""}}),e});this.setState({teamParams:o,listData:a.slice()})}},{key:"render",value:function(){var e=this,t=this.props,n=t.form,r=t.sources,o=t.sqlValidateMessage,a=t.executeLoading,i=t.modalLoading,l=(t.route,t.viewTeam),u=n.getFieldDecorator,d=this.state,p=d.searchValue,f=d.expandedKeys,h=d.autoExpandParent,m=d.isDeclarate,g=d.isShowSqlValidateAlert,b=d.executeResultset,v=d.executeColumns,y=d.schemaData,A=(d.treeData,d.alertVisible),j=d.screenWidth,L=d.isFold,Y=d.name,q=d.description,K=d.selectedSourceName,X=d.sqlExecuteCode,J={labelCol:{span:8},wrapperCol:{span:16}},Z=b?b.map(function(e){return e}):[],$=v?v.map(function(e){return e}):[],ee=void 0;ee=r?c.createElement(R,{onClick:this.selectSource},(r||[]).map(function(e){return c.createElement(N,{key:e.id},e.name)})):re;var he=[];for(var me in Z[0])Z[0].hasOwnProperty(me)&&he.push(me);var ge=[];he.forEach(function(e,t){ge.push({title:e,dataIndex:e,className:""+W.textAlignLeft,width:80})});var be=[];for(var ve in te.SQL_FIELD_TYPES)te.SQL_FIELD_TYPES.hasOwnProperty(ve)&&be.push(ve);var ye=be.map(function(e){return c.createElement(z,{key:e,value:e},e)}),_e=[{title:"表名",dataIndex:"name",className:""+W.textAlignLeft,key:"name",width:"25%"},{title:"类型",dataIndex:"modelType",key:"modelType",className:""+W.textAlignLeft,width:"25%",render:function(t,n){return c.createElement(V,{options:["维度","指标"],value:"category"===n.modelType?"维度":"指标",onChange:e.selectModelItem(n,"modelType")})}},{title:"字段类型",dataIndex:"visualType",className:""+W.textAlignLeft,key:"visualType",width:"25%",render:function(t,n){return c.createElement(E,{size:"small",style:{width:"50%"},value:n.visualType,onChange:e.selectModelItem(n,"visualType")},ye)}},{title:"类型",dataIndex:"sqlType",className:""+W.hide,key:"sqlType",render:function(e,t){return oe}}],Ae=void 0;Ae=g&&X?A?c.createElement(M,{className:G.sqlAlertText,message:"syntax check "+(200===X?"success":"error"),description:""+(o||""),type:200===X?"success":"error",showIcon:!0,closable:!0,onClose:this.handleClose}):null:"";var xe=[];Q.generateData(y).forEach(function(e){if(e.key.search(p)>=0)xe.push(e);else if(e.children){var t=[];e.children.forEach(function(n){if(n.key.search(p)>=0){t.push(n);var r={title:e.title,key:e.key,children:t};if(t.length>1)return;xe.push(r)}})}});var we={simple:j<768||768===j,defaultPageSize:100,showSizeChanger:!0,pageSizeOptions:["100","200","300","400"]},je=c.createElement(k,{className:""+(L?G.foldIcon:G.noFoldIcon),type:L?"down-circle-o":"left-circle-o",onClick:this.foldBoard}),Ee=c.createElement("span",null,"声明变量",c.createElement(D,{title:"帮助"},c.createElement(P,{placement:"left",content:c.createElement("div",{className:G.declareMsg},c.createElement("p",{className:G.textMsg},"查询变量:query@var $变量名称$"),c.createElement("p",{className:G.exampleMsg},"query@var $age$ = '29'; "),c.createElement("p",{className:G.textMsg},"团队权限变量:team@var $变量名称$"),c.createElement("p",{className:G.exampleMsg},"team@var $city$ = '北京'; ")),title:ae,trigger:"click"},c.createElement(k,{type:"question-circle-o",className:G.questionClass}))));return c.createElement("div",{className:G.bizlogic},c.createElement(ne.default,{className:G.header,name:Y,description:q,placeholder:this.placeholder,onNameChange:this.changeName,onDescriptionChange:this.changeDesc,onSave:this.onModalOk,onCancel:this.cancel,loading:i}),c.createElement(_,{className:G.formView},c.createElement(x,{className:G.formLeft+" no-item-margin"},c.createElement(w,{span:24,className:G.leftInput},c.createElement(U,{className:W.hide},u("id",{hidden:"add"===this.props.type})(ie)),c.createElement(U,{label:"",className:W.hide},u("source_id",{})(se)),c.createElement(U,{label:"",className:W.hide},u("source_name",{})(le)),c.createElement("div",{className:G.sourceSelect},c.createElement(I,{overlay:ee,trigger:["click"],placement:"bottomLeft"},c.createElement("a",null,K||"选择一个Source")))),c.createElement(w,{span:24,className:""+(0!==y.length?G.treeSearch:W.hide)},c.createElement(F,{placeholder:"Search the Schema",onChange:this.searchSchema})),c.createElement(w,{span:24,className:""+(0!==y.length?G.sourceTree:W.hide)},c.createElement(O,{onExpand:this.onExpand,expandedKeys:f,autoExpandParent:h},function e(t){return t.map(function(t){return t.children?c.createElement(B,{key:t.key,title:t.key},e(t.children)):c.createElement(B,{key:t.key,title:t.key})})}(xe||[])))),c.createElement(x,{className:G.formRight},c.createElement(w,{span:24,className:"small-item-margin "+G.declareSelect},c.createElement(U,s({label:Ee},J),u("isDeclarate",{initialValue:"no"})(c.createElement(V,{size:"default",onChange:this.changeIsDeclarate},ce,ue)))),c.createElement(x,{className:G.formTop},c.createElement(w,{span:24,className:("no"===m?G.noDeclaration:"")+" "+G.declareText},c.createElement(U,{label:"",className:G.declareForm},u("declaration",{initialValue:""})(de))),c.createElement(w,{span:24,className:"no-item-margin "+G.sqlText},c.createElement(U,{label:"",className:G.sqlForm},u("sql_tmpl",{initialValue:""})(pe)))),c.createElement(x,{className:G.fromBtn},c.createElement("span",{className:G.sqlAlert},Ae),c.createElement(S,{className:G.executeBtn,key:"forward",size:"large",type:"primary",loading:a,onClick:this.executeSql},fe,"Execute")),L?c.createElement(x,{className:""+(L?G.formBottom:G.formBottomNone)},c.createElement(w,{span:24,className:G.tabCol},c.createElement(C,{defaultActiveKey:"data",tabBarExtraContent:je,className:G.viewTab,onChange:this.changeTabs},c.createElement(H,{tab:"Data",key:"data"},c.createElement(T,{className:G.viewTabPane,dataSource:Z,columns:ge,pagination:we})),c.createElement(H,{tab:"Model",key:"model"},c.createElement(T,{className:G.viewTabPane,dataSource:$,columns:_e,pagination:we})),c.createElement(H,{tab:"Team",key:"team"},c.createElement(O,{className:G.viewTabPane,checkStrictly:!0,checkable:!0,onExpand:this.onTeamExpand,expandedKeys:this.state.teamExpandedKeys,autoExpandParent:this.state.teamAutoExpandParent,defaultExpandAll:!0,onCheck:this.onCheck,checkedKeys:this.state.teamCheckedKeys,onSelect:this.onSelect,selectedKeys:this.state.selectedKeys},this.renderTreeNodes(l||[])))))):je)))}}]),t}(c.Component);t.Bizlogic=he;var me=d.createStructuredSelector({sqlValidateCode:K.makeSelectSqlValidateCode(),sqlValidateMessage:K.makeSelectSqlValidateMsg(),executeLoading:K.makeSelectExecuteLoading(),sources:Z.makeSelectSources(),modalLoading:K.makeSelectModalLoading(),bizlogics:K.makeSelectBizlogics(),viewTeam:K.makeSelectViewTeam()}),ge=u.connect(me,i),be=f.default({key:"bizlogic",reducer:m.default}),ve=h.default({key:"bizlogic",saga:g.default}),ye=f.default({key:"source",reducer:b.default}),_e=h.default({key:"source",saga:v.default});t.default=p.compose(be,ye,ve,_e,ge)(_.create()(he))},"./app/containers/Bizlogic/TeamTreeAction.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n0?[l.createElement("span",{key:t,className:O.highlight},n[0]),e]:e}))}):null}).filter(function(e){return!!e})})},n.state={tableSource:[],tableSortedInfo:{},nameFilterValue:"",nameFilterDropdownVisible:!1,screenWidth:0},n}return a(t,e),s(t,[{key:"componentWillMount",value:function(){this.props.onLoadBizlogics(this.props.params.pid),this.setState({screenWidth:document.documentElement.clientWidth})}},{key:"componentWillReceiveProps",value:function(e){var t=this;window.onresize=function(){return t.setState({screenWidth:document.documentElement.clientWidth})},e.bizlogics&&this.setState({tableSource:e.bizlogics.map(function(e){return e.key=e.id,e})})}},{key:"render",value:function(){var e=this,t=this.state,n=t.tableSource,r=t.tableSortedInfo,o=t.nameFilterValue,a=t.nameFilterDropdownVisible,i=t.screenWidth,s=this.props,c=s.onDeleteBizlogic,u=s.tableLoading,d=s.currentProject,p=P.default(d,"view",!0)(j),f=P.default(d,"view",!1)(j),h=l.createElement(E,{title:"删除"},l.createElement(p,{icon:"delete",shape:"circle",type:"ghost"})),m=[{title:"名称",dataIndex:"name",key:"name",filterDropdown:l.createElement(_.default,{placeholder:"name",value:o,onChange:this.onSearchInputChange,onSearch:this.onSearch}),filterDropdownVisible:a,onFilterDropdownVisibleChange:function(t){return e.setState({nameFilterDropdownVisible:t})},sorter:function(e,t){return e.name>t.name?-1:1},sortOrder:"name"===r.columnKey&&r.order},{title:"描述",dataIndex:"description",key:"description"},{title:"Source",dataIndex:"sourceId",key:"sourceId",render:function(e,t){return t.source.name}},{title:"操作",key:"action",width:120,className:""+(I.initializePermission(d,"viewPermission")?O.textAlignCenter:O.hide),render:function(t,n){return l.createElement("span",{className:"ant-table-action-column"},l.createElement(E,{title:"修改"},l.createElement(f,{icon:"edit",shape:"circle",type:"ghost",onClick:e.showDetail(n.id)})),l.createElement(k,{title:"确定删除?",placement:"bottom",onConfirm:c(n.id)},h))}}],g={simple:i<768||768===i,defaultPageSize:20,showSizeChanger:!0};return l.createElement(v.default,null,R,l.createElement(v.default.Title,null,l.createElement(A,null,l.createElement(x,{span:24},l.createElement(C,{className:O.breadcrumb},N)))),l.createElement(v.default.Body,null,l.createElement(y.default,null,l.createElement(y.default.Header,null,B,l.createElement(y.default.Tools,null,l.createElement(E,{placement:"bottom",title:"新增"},l.createElement(p,{type:"primary",icon:"plus",onClick:this.showAdd})))),l.createElement(y.default.Body,null,l.createElement(A,null,l.createElement(x,{span:24},l.createElement(w,{dataSource:n||[],columns:m,pagination:g,onChange:this.handleTableChange,loading:u,bordered:!0})))))))}}]),t}(l.PureComponent);t.Bizlogics=F,t.mapDispatchToProps=i;var U=d.createStructuredSelector({bizlogics:M.makeSelectBizlogics(),loginUser:L.makeSelectLoginUser(),tableLoading:M.makeSelectTableLoading(),currentProject:D.makeSelectCurrentProject()}),z=u.connect(U,i),H=h.default({key:"bizlogic",reducer:g.default}),V=m.default({key:"bizlogic",saga:b.default});t.default=f.compose(H,V,z)(F)},"./app/containers/Bizlogic/reducer.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i,t=arguments[1],n=t.type,r=t.payload,a=e.get("bizlogics");switch(n){case o.LOAD_BIZLOGICS:return e.set("tableLoading",!0);case o.LOAD_BIZLOGICS_SUCCESS:return e.set("bizlogics",r.bizlogics).set("tableLoading",!1);case o.ADD_BIZLOGIC:return e.set("modalLoading",!0);case o.ADD_BIZLOGIC_SUCCESS:return e.set("bizlogics",[r.result]).set("modalLoading",!1);case o.ADD_BIZLOGIC_FAILURE:return e.set("modalLoading",!1);case o.DELETE_BIZLOGIC:return e;case o.DELETE_BIZLOGIC_SUCCESS:return e.set("bizlogics",a.filter(function(e){return e.id!==r.id}));case o.DELETE_BIZLOGIC_FAILURE:return e;case o.EDIT_BIZLOGIC:return e.set("modalLoading",!0);case o.EDIT_BIZLOGIC_SUCCESS:return a.splice(a.findIndex(function(e){return e.id===r.result.id}),1,r.result),e.set("bizlogics",a.slice()).set("modalLoading",!1);case o.EDIT_BIZLOGIC_FAILURE:return e.set("modalLoading",!1);case o.LOAD_SCHEMA:case o.LOAD_SCHEMA_SUCCESS:case o.LOAD_SCHEMA_FAILURE:return e;case o.EXECUTE_SQL:return e.set("executeLoading",!0);case o.EXECUTE_SQL_SUCCESS:var s=r.result;s.code,s.msg;return e.set("executeLoading",!1).set("sqlValidateMessage",void 0).set("sqlValidateCode",200);case o.EXECUTE_SQL_FAILURE:return e.set("executeLoading",!1).set("sqlValidateMessage",r.error.response.data.header.msg).set("sqlValidateCode",1);case o.LOAD_VIEW_TEAM:return e;case o.LOAD_VIEW_TEAM_SUCCESS:return e.set("viewTeam",r.result);case o.LOAD_VIEW_TEAM_FAILURE:default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Bizlogic/constants.ts"),a=n("./node_modules/immutable/dist/immutable.js"),i=a.fromJS({bizlogics:null,sqlValidateCode:!1,sqlValidateMessage:!1,tableLoading:!1,modalLoading:!1,schemaData:[],viewTeam:[]});t.default=r},"./app/containers/Bizlogic/sagas.ts":function(e,t,n){"use strict";function r(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,o.prev=1,o.next=4,L.call(I.default,R.default.bizlogic+"?projectId="+t.projectId);case 4:return n=o.sent,r=N.readListAdapter(n),o.next=8,L.put(P.bizlogicsLoaded(r));case 8:t.resolve&&t.resolve(r),o.next=16;break;case 11:return o.prev=11,o.t0=o.catch(1),o.next=15,L.put(P.loadBizlogicsFail());case 15:F.errorHandler(o.t0);case 16:case"end":return o.stop()}},b,this,[[1,11]])}function o(e){var t,n;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=e.payload,r.prev=1,r.next=4,L.call(I.default,{method:"post",url:R.default.bizlogic,data:t.bizlogic});case 4:return n=r.sent,r.next=7,L.put(P.bizlogicAdded(n.payload));case 7:t.resolve(),r.next=15;break;case 10:return r.prev=10,r.t0=r.catch(1),r.next=14,L.put(P.addBizlogicFail());case 14:F.errorHandler(r.t0);case 15:case"end":return r.stop()}},v,this,[[1,10]])}function a(e){var t,n;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=e.payload,r.prev=1,r.next=4,L.call(I.default,{method:"delete",url:R.default.bizlogic+"/"+t.id});case 4:return n=r.sent,r.next=7,L.put(P.bizlogicDeleted(t.id));case 7:r.next=14;break;case 9:return r.prev=9,r.t0=r.catch(1),r.next=13,L.put(P.deleteBizlogicFail());case 13:F.errorHandler(r.t0);case 14:case"end":return r.stop()}},y,this,[[1,9]])}function i(e){var t,n,r,o,a,i,s,l,c;return regeneratorRuntime.wrap(function(u){for(;;)switch(u.prev=u.next){case 0:return t=e.payload,n=t.bizlogic,r=n.config,o=n.description,a=n.id,i=n.model,s=n.name,l=n.source,c=n.sql,u.prev=2,u.next=5,L.call(I.default,{method:"put",url:R.default.bizlogic+"/"+a,data:{config:r,description:o,id:a,model:i,name:s,sourceId:l.id,sql:c}});case 5:return u.next=7,L.put(P.bizlogicEdited(t.bizlogic));case 7:t.resolve(),u.next=15;break;case 10:return u.prev=10,u.t0=u.catch(2),u.next=14,L.put(P.editBizlogicFail());case 14:F.errorHandler(u.t0);case 15:case"end":return u.stop()}},_,this,[[2,10]])}function s(e){var t,n,r,o,a,i,s;return regeneratorRuntime.wrap(function(l){for(;;)switch(l.prev=l.next){case 0:return t=e.payload,l.prev=1,n=t.controlId,r=t.viewId,o=t.column,a=t.parents,l.next=5,L.call(I.default,{method:"post",url:R.default.bizlogic+"/"+r+"/getdistinctvalue",data:{column:o,parents:a||[]}});case 5:return i=l.sent,s=i.payload[o],l.next=9,L.put(P.cascadeSourceLoaded(n,o,s));case 9:l.next=16;break;case 11:return l.prev=11,l.t0=l.catch(1),l.next=15,L.put(P.loadCascadeSourceFail(l.t0));case 15:F.errorHandler(l.t0);case 16:case"end":return l.stop()}},A,this,[[1,11]])}function l(e){var t,n,r,o,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,i.prev=1,n=t.id,r=t.resolve,i.next=5,L.call(I.default,{method:"post",url:R.default.bizlogic+"/"+n+"/resultset?limit=1",data:{}});case 5:return o=i.sent,a=B.default(N.readListAdapter(o)),i.next=9,L.put(P.bizdataSchemaLoaded(a.keys));case 9:r(a.keys),i.next=16;break;case 12:return i.prev=12,i.t0=i.catch(1),i.next=16,L.put(P.loadBizdataSchemaFail(i.t0));case 16:case"end":return i.stop()}},x,this,[[1,12]])}function c(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,o.prev=1,o.next=4,L.call(I.default,R.default.bizlogic+"/database?sourceId="+t.sourceId);case 4:return n=o.sent,r=N.readListAdapter(n),o.next=8,L.put(P.schemaLoaded(r));case 8:t.resolve(r),o.next=16;break;case 11:return o.prev=11,o.t0=o.catch(1),o.next=15,L.put(P.loadSchemaFail());case 15:F.errorHandler(o.t0);case 16:case"end":return o.stop()}},w,this,[[1,11]])}function u(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,o.prev=1,o.next=4,L.call(I.default,{method:"post",url:R.default.bizlogic+"/executesql",data:{sql:t.sql,sourceId:t.sourceId}});case 4:return n=o.sent,r=n&&n.header,o.next=8,L.put(P.sqlExecuted(r));case 8:t.resolve&&t.resolve(n.payload),o.next=15;break;case 11:return o.prev=11,o.t0=o.catch(1),o.next=15,L.put(P.executeSqlFail(o.t0));case 15:case"end":return o.stop()}},j,this,[[1,11]])}function d(e){var t,n,r,o,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,i.prev=1,n=t.id,r=t.params,o=t.resolve,i.next=5,L.call(I.default,{method:"post",url:R.default.bizlogic+"/"+n+"/getdata",data:r});case 5:return a=i.sent,i.next=8,L.put(P.dataLoaded());case 8:o(a.payload),i.next=16;break;case 11:return i.prev=11,i.t0=i.catch(1),i.next=15,L.put(P.loadDataFail(i.t0));case 15:F.errorHandler(i.t0);case 16:case"end":return i.stop()}},E,this,[[1,11]])}function p(e){var t,n,r,o,a,i;return regeneratorRuntime.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload,s.prev=1,n=t.viewId,r=t.fieldName,o=t.filters,a=t.resolve,s.next=5,L.call(I.default,{method:"post",url:R.default.bizlogic+"/"+n+"/getdistinctvalue",data:{column:r,parents:o?Object.entries(o).map(function(e){var t=g(e,2);return{column:t[0],value:t[1]}}):[]}});case 5:return i=s.sent,s.next=8,L.put(P.distinctValueLoaded(i.payload,r));case 8:a&&a(N.readListAdapter(i)),s.next=16;break;case 11:return s.prev=11,s.t0=s.catch(1),s.next=15,L.put(P.loadDistinctValueFail(s.t0));case 15:F.errorHandler(s.t0);case 16:case"end":return s.stop()}},S,this,[[1,11]])}function f(e){var t,n,r,o,a,i,s,l,c,u,d,p,f,h;return regeneratorRuntime.wrap(function(m){for(;;)switch(m.prev=m.next){case 0:return t=e.payload,n=t.renderType,r=t.itemId,o=t.viewId,a=t.params,i=t.vizType,s=a.filters,l=a.linkageFilters,c=a.globalFilters,u=a.params,d=a.linkageParams,p=a.globalParams,f=M(a,["filters","linkageFilters","globalFilters","params","linkageParams","globalParams"]),m.prev=3,m.next=6,L.call(I.default,{method:"post",url:R.default.bizlogic+"/"+o+"/getdata",data:Object.assign({},f,{filters:s.concat(l).concat(c),params:u.concat(d).concat(p)})});case 6:return h=m.sent,m.next=9,L.put(P.dataFromItemLoaded(n,r,h.payload,i));case 9:m.next=16;break;case 11:return m.prev=11,m.t0=m.catch(3),m.next=15,L.put(P.loadDataFromItemFail(r,i));case 15:F.errorHandler(m.t0);case 16:case"end":return m.stop()}},k,this,[[3,11]])}function h(e){var t,n,r,o,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,i.prev=1,i.next=4,L.call(I.default,R.default.projects+"/"+t.projectId);case 4:return n=i.sent,r=N.readListAdapter(n),i.next=8,L.call(I.default,R.default.organizations+"/"+r.orgId+"/teams");case 8:return o=i.sent,a=N.readListAdapter(o),i.next=12,L.put(P.viewTeamLoaded(a));case 12:i.next=19;break;case 14:return i.prev=14,i.t0=i.catch(1),i.next=18,L.put(P.loadViewTeamFail(i.t0));case 18:F.errorHandler(i.t0);case 19:case"end":return i.stop()}},C,this,[[1,14]])}function m(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[O.takeLatest(D.LOAD_BIZLOGICS,r),O.takeEvery(D.ADD_BIZLOGIC,o),O.takeEvery(D.DELETE_BIZLOGIC,a),O.takeEvery(D.EDIT_BIZLOGIC,i),O.takeEvery(D.LOAD_CASCADESOURCE,s),O.takeEvery(D.LOAD_BIZDATA_SCHEMA,l),O.takeLatest(D.LOAD_SCHEMA,c),O.takeLatest(D.EXECUTE_SQL,u),O.takeEvery(D.LOAD_DATA,d),O.takeEvery(D.LOAD_DISTINCT_VALUE,p),O.takeEvery(D.LOAD_DATA_FROM_ITEM,f),O.takeLatest(D.LOAD_VIEW_TEAM,h)];case 2:case"end":return e.stop()}},T,this)}var g=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),b=regeneratorRuntime.mark(r),v=regeneratorRuntime.mark(o),y=regeneratorRuntime.mark(a),_=regeneratorRuntime.mark(i),A=regeneratorRuntime.mark(s),x=regeneratorRuntime.mark(l),w=regeneratorRuntime.mark(c),j=regeneratorRuntime.mark(u),E=regeneratorRuntime.mark(d),S=regeneratorRuntime.mark(p),k=regeneratorRuntime.mark(f),C=regeneratorRuntime.mark(h),T=regeneratorRuntime.mark(m),M=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o0&&f<=6?(o=t%2==0?6:0,a=r):0===f?(o=n,a=r):f>6&&(o=n,a=d+6*Math.floor(t/2)),Object.assign({widgetId:e,x:o,y:a},m,g)});n.props.onAddDashboardItem(Number(t.portalId),b,function(e){n.hideDashboardItemForm()})}else{var v=a.find(function(e){return e.id===Number(c.id)}),y=Object.assign({},v,m,{widgetId:s[0]});n.props.onEditDashboardItem(y,function(){n.getChartData("rerender",y.id,y.widgetId),n.hideDashboardItemForm()})}},n.deleteItem=function(e){return function(){n.props.onDeleteDashboardItem(e,function(){})}},n.navDropdownClick=function(e){var t=n.props.params;n.props.router.push("/project/"+t.pid+"/dashboard/"+e.key)},n.nextNavDropdownClick=function(e){var t=n.props.widgets,r=e.item&&e.item.props&&e.item.props.id,o=e.item&&e.item.props&&e.item.props.widgetId,a=d.findDOMNode(n["dashboardItem"+r]);if(a){var i=a.parentNode,s=i.style.transform&&i.style.transform.match(/\d+/g)[1],l=i.parentNode.parentNode,c=parseInt(s,10)-K.GRID_ITEM_MARGIN;l.scrollTop=c}n.setState({nextMenuTitle:t.find(function(e){return e.id===o}).name})},n.toggleLinkageConfig=function(e){return function(){n.setState({linkageConfigVisible:e})}},n.saveLinkageConfig=function(e){var t=n.props,r=t.currentDashboard;(0,t.onEditCurrentDashboard)(Object.assign({},r,{config:JSON.stringify(Object.assign({},JSON.parse(r.config||"{}"),{linkages:e}))}),function(){n.toggleLinkageConfig(!1)()})},n.checkInteract=function(e){return n.props.currentLinkages.some(function(t){var n=t.trigger;return t.linkager,t.relation,+n[0]===e})},n.doInteract=function(e,t){var o=n.props,a=o.currentItems,i=(o.currentItemsInfo,o.currentLinkages),s=(o.widgets,M.getMappingLinkage(e,i));n.interactingLinkagers=M.processLinkage(e,t,s,n.interactingLinkagers),Object.keys(s).forEach(function(e){var t=a.find(function(t){return t.id===+e}),o=n.interactingLinkagers[e],i=o.filters,s=o.params;n.getChartData("rerender",+e,t.widgetId,{linkageFilters:Object.values(i).reduce(function(e,t){return e.concat.apply(e,r(t))},[]),linkageParams:Object.values(s).reduce(function(e,t){return e.concat.apply(e,r(t))},[])})})},n.turnOffInteract=function(e){var t=n.props,o=t.currentLinkages,a=t.currentItems;M.removeLinkage(e,o,n.interactingLinkagers).forEach(function(e){var t=a.find(function(t){return t.id===e}),o=n.interactingLinkagers[e],i=o.filters,s=o.params;n.getChartData("rerender",e,t.widgetId,{linkageFilters:Object.values(i).reduce(function(e,t){return e.concat.apply(e,r(t))},[]),linkageParams:Object.values(s).reduce(function(e,t){return e.concat.apply(e,r(t))},[])})})},n.toggleGlobalFilterConfig=function(e){return function(){n.setState({globalFilterConfigVisible:e})}},n.saveFilters=function(e){var t=n.props,r=t.currentDashboard;(0,t.onEditCurrentDashboard)(Object.assign({},r,{config:JSON.stringify(Object.assign({},JSON.parse(r.config||"{}"),{filters:e})),active:!0}),function(){n.toggleGlobalFilterConfig(!1)()})},n.getOptions=function(e,t,r,o){n.props.onLoadCascadeSource(e,t,r,o)},n.globalFilterChange=function(e){var t=n.props.currentItems;Object.entries(e).forEach(function(e){var r=l(e,2),o=r[0],a=r[1],i=t.find(function(e){return e.id===+o}),s=a.params,c=a.filters;n.getChartData("rerender",+o,i.widgetId,{globalParams:s,globalFilters:c})})},n.visibleFullScreen=function(e){var t=n.state.allowFullScreen;e&&n.setState({currentDataInFullScreen:e}),n.setState({allowFullScreen:!t})},n.currentWidgetInFullScreen=function(e){var t=n.props,r=t.currentItems,o=t.currentItemsInfo,a=t.widgets,i=r.find(function(t){return t.id===e}),s=a.find(function(e){return e.id===i.widgetId}),l=o[e],c=o.loading;n.setState({currentDataInFullScreen:{itemId:e,widgetId:s.id,widget:s,data:l,loading:c,onGetChartData:n.getChartData}})},n.changeDashboardSharePanelAuthorizeState=function(e){return function(){n.setState({dashboardSharePanelAuthorized:e})}},n.getWidgetInfo=function(e){var t=n.props,r=t.currentItems,o=t.widgets,a=r.find(function(t){return t.id===e}),i=o.find(function(e){return e.id===a.widgetId}),s=U.default.find(function(e){return e.id===i.type});return{name:i.name,type:s.name}},n.toWorkbench=function(e,t){var r=n.props.params,o=r.pid,a=r.portalId,i=r.portalName,s=r.dashboardId,l=[o,a,i,s,e].join(K.DEFAULT_SPLITER);localStorage.setItem("editWidgetFromDashboard",l),n.props.router.push("/project/"+o+"/widget/"+t)},n.state={mounted:!1,layoutInitialized:!1,allowFullScreen:!1,currentDataInFullScreen:{},dashboardItemFormType:"",dashboardItemFormVisible:!1,dashboardItemFormStep:0,modalLoading:!1,selectedWidget:[],polling:!1,linkageConfigVisible:!1,globalFilterConfigVisible:!1,dashboardSharePanelAuthorized:!1,nextMenuTitle:""},n}return i(t,e),c(t,[{key:"componentWillMount",value:function(){var e=this.props,t=e.onLoadBizlogics,n=e.onLoadDashboardDetail,r=e.params,o=r.pid,a=r.portalId,i=r.dashboardId;t(o),i&&-1!==Number(i)&&n(o,a,Number(i))}},{key:"componentWillReceiveProps",value:function(e){var t=this,n=(e.currentDashboard,e.currentDashboardLoading),r=e.currentItems,o=(e.currentItemsInfo,e.params),a=this.props,i=a.onLoadDashboardDetail,s=(a.onLoadCascadeSource,this.state.layoutInitialized);o.dashboardId!==this.props.params.dashboardId&&(this.setState({nextMenuTitle:""}),o.dashboardId&&-1!==Number(o.dashboardId)&&i(o.pid,o.portalId,o.dashboardId)),n||r&&!s&&this.setState({mounted:!0},function(){t.lazyLoad(),t.containerBody.removeEventListener("scroll",t.lazyLoad,!1),t.containerBody.addEventListener("scroll",t.lazyLoad,!1)})}},{key:"componentDidMount",value:function(){window.addEventListener("resize",this.onWindowResize,!1)}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this.onWindowResize,!1),this.containerBody.removeEventListener("scroll",this.lazyLoad,!1),this.props.onClearCurrentDashboard()}},{key:"render",value:function(){var e=this,t=this.props,n=t.dashboards,r=t.widgets,o=t.currentDashboard,a=t.currentDashboardLoading,i=t.currentDashboardShareInfo,s=t.currentDashboardSecretInfo,l=t.currentDashboardShareInfoLoading,c=t.currentItems,f=t.currentItemsInfo,h=t.currentDashboardCascadeSources,g=t.bizlogics,b=t.onLoadDashboardShareLink,v=t.onLoadWidgetShareLink,y=t.router,_=t.currentProject,A=t.currentLinkages,x=this.state,M=x.mounted,O=x.dashboardItemFormType,N=x.dashboardItemFormVisible,U=x.modalLoading,H=x.selectedWidget,V=x.polling,Y=x.dashboardItemFormStep,W=x.linkageConfigVisible,G=x.globalFilterConfigVisible,Q=x.allowFullScreen,q=x.dashboardSharePanelAuthorized,re=$,oe=void 0;if(n){var ae=n.map(function(e){return u.createElement(F.Item,{key:e.id},e.name)});re=u.createElement(F,{onClick:this.navDropdownClick},ae)}var ie=ee;if(o&&r){var se=c.map(function(e){var t=r.find(function(t){return t.id===e.widgetId});return u.createElement(F.Item,{key:e.id,widgetId:e.widgetId},e.widgetId&&t&&t.name?t.name:"")});ie=u.createElement(F,{onClick:this.nextNavDropdownClick},se)}if(_&&c){var le=[],ce={lg:[]};c.forEach(function(t){var n=t.id,o=t.x,a=t.y,i=t.width,s=t.height,l=t.widgetId,c=t.polling,d=t.frequency,p=f[n],h=p.datasource,m=p.loading,g=p.shareInfo,b=p.secretInfo,A=p.shareInfoLoading,x=p.downloadCsvLoading,w=(p.interactId,p.rendered),j=p.renderType,E=r.find(function(e){return e.id===l});le.push(u.createElement("div",{key:n},u.createElement(S.default,{itemId:n,widget:E,data:h,loading:m,polling:c,frequency:d,shareInfo:g,secretInfo:b,shareInfoLoading:A,downloadCsvLoading:x,currentProject:_,onGetChartData:e.getChartData,onShowEdit:e.showEditDashboardItemForm,onDeleteDashboardItem:e.deleteItem,onLoadWidgetShareLink:v,onDownloadCsv:e.downloadCsv,onTurnOffInteract:e.turnOffInteract,onCheckTableInteract:e.checkInteract,onDoTableInteract:e.doInteract,onShowFullScreen:e.visibleFullScreen,onEditWidget:e.toWorkbench,rendered:w,renderType:j,router:y,ref:function(t){return e["dashboardItem"+n]=t}}))),ce.lg.push({x:o,y:a,w:i,h:s,i:""+n})}),oe=u.createElement(Z,{className:"layout",style:{marginTop:"-14px"},rowHeight:K.GRID_ROW_HEIGHT,margin:[K.GRID_ITEM_MARGIN,K.GRID_ITEM_MARGIN],breakpoints:K.GRID_BREAKPOINTS,cols:K.GRID_COLS,layouts:ce,onDragStop:this.onDragStop,onResizeStop:this.onResizeStop,measureBeforeMount:!1,draggableHandle:"."+J.title,useCSSTransforms:M},le)}var ue=u.createElement(P,{key:"submit",size:"large",type:"primary",loading:U,disabled:U,onClick:this.saveDashboardItem},"保 存"),de="add"===O?Y?[u.createElement(P,{key:"back",size:"large",onClick:this.changeDashboardItemFormStep(0)},"上一步"),ue]:[u.createElement(P,{key:"forward",size:"large",type:"primary",disabled:0===H.length,onClick:this.changeDashboardItemFormStep(1)},"下一步")]:ue;return u.createElement(w.default,null,u.createElement(p.default,{title:o&&o.name}),u.createElement(w.default.Title,null,u.createElement(L,null,u.createElement(D,{sm:12},u.createElement(R,{className:X.breadcrumb},o&&u.createElement(R.Item,null,u.createElement(B,{overlay:re,trigger:["click"]},u.createElement(m.Link,{to:""},o.name+" ",te))),o&&u.createElement(R.Item,null,u.createElement(B,{overlay:ie,trigger:["click"]},u.createElement(m.Link,{to:""},o.widgets&&o.widgets.length&&o.widgets.length>1?u.createElement("span",null,this.state.nextMenuTitle," ",ne):""))))),u.createElement(j.default,{currentProject:_,currentDashboard:o,currentDashboardShareInfo:i,currentDashboardSecretInfo:s,currentDashboardShareInfoLoading:l,dashboardSharePanelAuthorized:q,showAddDashboardItem:this.showAddDashboardItemForm,onChangeDashboardAuthorize:this.changeDashboardSharePanelAuthorizeState,onLoadDashboardShareLink:b,onToggleGlobalFilterVisibility:this.toggleGlobalFilterConfig,onToggleLinkageVisibility:this.toggleLinkageConfig})),u.createElement(C.default,{currentDashboard:o,currentItems:c,onGetOptions:this.getOptions,filterOptions:h,onChange:this.globalFilterChange})),u.createElement(w.default.Body,{grid:!0,ref:function(t){return e.containerBody=d.findDOMNode(t)}},oe,u.createElement("div",{className:J.gridBottom})),u.createElement(I,{title:("add"===O?"新增":"修改")+" Widget",wrapClassName:"ant-modal-large",visible:N,footer:de,onCancel:this.hideDashboardItemForm,afterClose:this.afterDashboardItemFormClose},u.createElement(E.default,{type:O,widgets:r||[],selectedWidget:H,polling:V,step:Y,onWidgetSelect:this.widgetSelect,onPollingSelect:this.pollingSelect,wrappedComponentRef:this.refHandles.dashboardItemForm})),u.createElement(k.default,{currentDashboard:o,currentItems:c,currentItemsInfo:f,views:g,widgets:r,visible:W,loading:a,onGetWidgetInfo:this.getWidgetInfo,onSave:this.saveLinkageConfig,onCancel:this.toggleLinkageConfig(!1),linkages:A}),u.createElement(T.default,{currentDashboard:o,currentItems:c,views:g,widgets:r,visible:G,loading:a,filterOptions:h,onCancel:this.toggleGlobalFilterConfig(!1),onSave:this.saveFilters,onGetOptions:this.getOptions}),u.createElement(z.default,{widgets:r,currentItems:c,currentDashboard:o,currentDatasources:f,visible:Q,isVisible:this.visibleFullScreen,currentDataInFullScreen:this.state.currentDataInFullScreen,onCurrentWidgetInFullScreen:this.currentWidgetInFullScreen}))}}]),t}(u.Component);t.Grid=re;var oe=h.createStructuredSelector({dashboards:Y.makeSelectDashboards(),currentDashboard:Y.makeSelectCurrentDashboard(),currentDashboardLoading:Y.makeSelectCurrentDashboardLoading(),currentDashboardShareInfo:Y.makeSelectCurrentDashboardShareInfo(),currentDashboardSecretInfo:Y.makeSelectCurrentDashboardSecretInfo(),currentDashboardShareInfoLoading:Y.makeSelectCurrentDashboardShareInfoLoading(),currentItems:Y.makeSelectCurrentItems(),currentItemsInfo:Y.makeSelectCurrentItemsInfo(),currentDashboardCascadeSources:Y.makeSelectCurrentDashboardCascadeSources(),currentLinkages:Y.makeSelectCurrentLinkages(),widgets:G.makeSelectWidgets(),bizlogics:Q.makeSelectBizlogics(),currentProject:q.makeSelectCurrentProject()});t.mapDispatchToProps=s;var ae=f.connect(oe,s),ie=b.default({key:"widget",reducer:y.default}),se=v.default({key:"widget",saga:_.default}),le=b.default({key:"bizlogic",reducer:A.default}),ce=v.default({key:"bizlogic",saga:x.default});t.default=g.compose(ie,le,se,ce,ae)(re)},"./app/containers/Dashboard/actions.ts":function(e,t,n){"use strict";function r(e,t,n){return{type:q.ADD_DASHBOARD_ITEM,payload:{portalId:e,item:t,resolve:n}}}function o(e,t){return{type:q.DELETE_DASHBOARD_ITEM,payload:{id:e,resolve:t}}}function a(){return{type:q.CLEAR_CURRENT_DASHBOARD}}function i(e,t){return{type:q.LOAD_DASHBOARDS,payload:{portalId:e,resolve:t}}}function s(e){return{type:q.LOAD_DASHBOARDS_SUCCESS,payload:{dashboards:e}}}function l(){return{type:q.LOAD_DASHBOARDS_FAILURE}}function c(e,t){return{type:q.ADD_DASHBOARD,payload:{dashboard:e,resolve:t}}}function u(e){return{type:q.ADD_DASHBOARD_SUCCESS,payload:{result:e}}}function d(){return{type:q.ADD_DASHBOARD_FAILURE}}function p(e,t,n){return{type:q.EDIT_DASHBOARD,payload:{formType:e,dashboard:t,resolve:n}}}function f(e,t){return{type:q.EDIT_DASHBOARD_SUCCESS,payload:{result:e,formType:t}}}function h(){return{type:q.EDIT_DASHBOARD_FAILURE}}function m(e,t){return{type:q.EDIT_CURRENT_DASHBOARD,payload:{dashboard:e,resolve:t}}}function g(e){return{type:q.EDIT_CURRENT_DASHBOARD_SUCCESS,payload:{result:e}}}function b(){return{type:q.EDIT_CURRENT_DASHBOARD_FAILURE}}function v(e,t){return{type:q.DELETE_DASHBOARD,payload:{resolve:t,id:e}}}function y(e){return{type:q.DELETE_DASHBOARD_SUCCESS,payload:{id:e}}}function _(){return{type:q.DELETE_DASHBOARD_FAILURE}}function A(e,t,n){return{type:q.LOAD_DASHBOARD_DETAIL,payload:{projectId:e,portalId:t,dashboardId:n}}}function x(e,t,n){return{type:q.LOAD_DASHBOARD_DETAIL_SUCCESS,payload:{dashboardId:e,dashboardDetail:t,widgets:n}}}function w(){return{type:q.LOAD_DASHBOARD_DETAIL_FAILURE}}function j(e){return{type:q.ADD_DASHBOARD_ITEM_SUCCESS,payload:{result:e}}}function E(){return{type:q.ADD_DASHBOARD_ITEM_FAILURE}}function S(e,t){return{type:q.EDIT_DASHBOARD_ITEM,payload:{item:e,resolve:t}}}function k(e){return{type:q.EDIT_DASHBOARD_ITEM_SUCCESS,payload:{result:e}}}function C(){return{type:q.EDIT_DASHBOARD_ITEM_FAILURE}}function T(e){return{type:q.EDIT_DASHBOARD_ITEMS,payload:{items:e}}}function M(e){return{type:q.EDIT_DASHBOARD_ITEMS_SUCCESS,payload:{items:e}}}function O(){return{type:q.EDIT_DASHBOARD_ITEMS_FAILURE}}function L(e){return{type:q.DELETE_DASHBOARD_ITEM_SUCCESS,payload:{id:e}}}function D(){return{type:q.DELETE_DASHBOARD_ITEM_FAILURE}}function P(e,t){return{type:q.LOAD_DASHBOARD_SHARE_LINK,payload:{id:e,authName:t}}}function I(e){return{type:q.LOAD_DASHBOARD_SHARE_LINK_SUCCESS,payload:{shareInfo:e}}}function R(e){return{type:q.LOAD_DASHBOARD_SECRET_LINK_SUCCESS,payload:{secretInfo:e}}}function N(){return{type:q.LOAD_DASHBOARD_SHARE_LINK_FAILURE}}function B(e,t,n,r){return{type:q.LOAD_WIDGET_SHARE_LINK,payload:{id:e,itemId:t,authName:n,resolve:r}}}function F(e,t){return{type:q.LOAD_WIDGET_SHARE_LINK_SUCCESS,payload:{shareInfo:e,itemId:t}}}function U(e,t){return{type:q.LOAD_WIDGET_SECRET_LINK_SUCCESS,payload:{shareInfo:e,itemId:t}}}function z(e){return{type:q.LOAD_WIDGET_SHARE_LINK_FAILURE,payload:{itemId:e}}}function H(e,t,n){return{type:q.LOAD_WIDGET_CSV,payload:{itemId:e,params:t,token:n}}}function V(e){return{type:q.LOAD_WIDGET_CSV_SUCCESS,payload:{itemId:e}}}function Y(e){return{type:q.LOAD_WIDGET_CSV_FAILURE,payload:{itemId:e}}}function W(e){return{type:q.RENDER_DASHBOARDITEM,payload:{itemId:e}}}function G(e){return{type:q.RESIZE_DASHBOARDITEM,payload:{itemId:e}}}function Q(){return{type:q.RESIZE_ALL_DASHBOARDITEM}}Object.defineProperty(t,"__esModule",{value:!0});var q=n("./app/containers/Dashboard/constants.ts");t.addDashboardItem=r,t.deleteDashboardItem=o,t.clearCurrentDashboard=a,t.loadDashboards=i,t.dashboardsLoaded=s,t.loadDashboardsFail=l,t.addDashboard=c,t.dashboardAdded=u,t.addDashboardFail=d,t.editDashboard=p,t.dashboardEdited=f,t.editDashboardFail=h,t.editCurrentDashboard=m,t.currentDashboardEdited=g,t.editCurrentDashboardFail=b,t.deleteDashboard=v,t.dashboardDeleted=y,t.deleteDashboardFail=_,t.loadDashboardDetail=A,t.dashboardDetailLoaded=x,t.loadDashboardDetailFail=w,t.dashboardItemAdded=j,t.addDashboardItemFail=E,t.editDashboardItem=S,t.dashboardItemEdited=k,t.editDashboardItemFail=C,t.editDashboardItems=T,t.dashboardItemsEdited=M,t.editDashboardItemsFail=O,t.dashboardItemDeleted=L,t.deleteDashboardItemFail=D,t.loadDashboardShareLink=P,t.dashboardShareLinkLoaded=I,t.dashboardSecretLinkLoaded=R,t.loadDashboardShareLinkFail=N,t.loadWidgetShareLink=B,t.widgetShareLinkLoaded=F,t.widgetSecretLinkLoaded=U,t.loadWidgetShareLinkFail=z,t.loadWidgetCsv=H,t.widgetCsvLoaded=V,t.loadWidgetCsvFail=Y,t.renderDashboardItem=W,t.resizeDashboardItem=G,t.resizeAllDashboardItem=Q},"./app/containers/Dashboard/components/DashboardAction.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n=0})),e});n.setState({filters:a})},n.onSavingFilterConfig=function(){n.setState({savingFilterConfig:!n.state.savingFilterConfig})},n.cancel=function(){var e=n.props.onCancel;c.confirm({content:"确认不保存当前全局筛选配置吗?",onOk:e,onCancel:void 0})},n.state={filters:[],savingFilterConfig:!1},n}return a(t,e),i(t,[{key:"componentWillReceiveProps",value:function(e){var t=e.currentDashboard,n=e.currentItems;t===this.props.currentDashboard&&n===this.props.currentItems||this.adjustGlobalFilterTableSource(t,n)}},{key:"render",value:function(){var e=this.props,t=e.visible,n=e.loading,r=e.currentItems,o=e.widgets,a=e.views,i=e.onSave,p=e.onGetOptions,f=e.filterOptions,h=this.state,m=h.filters,g=h.savingFilterConfig;if(!t)return null;var b=[s.createElement(l,{key:"cancel",size:"large",onClick:this.cancel},"取 消"),s.createElement(l,{key:"submit",size:"large",type:"primary",loading:n,disabled:n,onClick:this.onSavingFilterConfig},"保 存")];return s.createElement(c,{wrapClassName:"ant-modal-large",title:"全局筛选配置",visible:t,footer:b,onCancel:this.cancel},s.createElement("div",{className:d.modalFilterConfig},s.createElement(u.default,{views:a,widgets:o,items:r,filters:m,saving:g,onOk:i,onGetPreviewData:p,previewData:f})))}}]),t}(s.Component);t.DashboardFilterConfig=p,t.default=p},"./app/containers/Dashboard/components/DashboardFilterPanel.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=function(){function e(e,t){for(var n=0;n=0})),e});n.setState({filters:a})},n.state={filters:[]},n}return i(t,e),s(t,[{key:"componentWillReceiveProps",value:function(e){var t=e.currentDashboard,n=e.currentItems;t===this.props.currentDashboard&&n===this.props.currentItems||this.adjustGlobalFilterTableSource(t,n)}},{key:"render",value:function(){var e=this.props,t=e.onGetOptions,n=e.filterOptions,o=e.onChange,a=this.state.filters,i=c(r({},p.hide,!a.length));return l.createElement(u,{className:i},l.createElement(d,{span:24},l.createElement(f.default,{filters:a,onGetOptions:t,filterOptions:n,onChange:o})))}}]),t}(l.Component);t.DashboardFilterPanel=h,t.default=h},"./app/containers/Dashboard/components/DashboardForm.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2],o=e.props,a=o.onCheckUniqueName,i=o.type,s=o.form,l=o.portalId,c=s.getFieldsValue(),u=c.id,d={portal:l,id:"add"===i?"":u,name:n};"move"===i?r():a("dashboard",d,function(){r()},function(e){r(e)})},e}return a(t,e),s(t,[{key:"render",value:function(){var e=this.props.form.getFieldDecorator,t=this.props,n=t.dashboards,r=t.type,o=t.itemId,a={labelCol:{span:6},wrapperCol:{span:16}},s=n.filter(function(e){return 0===e.type}),p=s.map(function(e){return l.createElement(m,{key:""+e.id,value:""+e.id},e.name)}),f=n.find(function(e){return e.id===Number(o)}),S="",k="";return f&&(S=0===f.type?"文件夹":"Dashboard",k=f.name),l.createElement(c,null,l.createElement(g,{className:v.hide},e("id",{hidden:"add"===r&&"copy"})(y)),l.createElement(u,{gutter:8,className:"delete"===r?v.hide:""},l.createElement(d,{span:24},l.createElement(g,i({label:"所属文件夹"},a),e("folder",{rules:[{required:!0,message:"请选择所属文件夹"}],initialValue:"0"})(l.createElement(h,null,_,p))),l.createElement(g,{className:v.hide},e("config",{})(A)),l.createElement(g,{className:v.hide},e("index",{})(x)),l.createElement(g,i({label:"copy"===r?"重命名":"名称"},a,{hasFeedback:!0,className:"move"===r?v.hide:""}),e("name",{rules:[{required:!0,message:"Name 不能为空"},{validator:this.checkNameUnique}]})(w))),l.createElement(d,{span:24},l.createElement(g,i({label:"选择类型"},a,{className:"move"===r?v.hide:""}),e("selectType",{initialValue:!0})(l.createElement(b,{disabled:"edit"===r||"copy"===r||"move"===r},j,E))))),l.createElement("p",{className:"delete"===r?"":v.hide},"确定要删除 ",S,":",k," ?"))}}]),t}(l.PureComponent);t.DashboardForm=S,t.default=c.create()(S)},"./app/containers/Dashboard/components/DashboardItem.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e){return u.createElement("span",e,e.children)}var l=Object.assign||function(e){for(var t=1;t=0){var i=n.split("_");o=t.find(function(e){return e.id===i[1]}).sub.find(function(e){return e.id===i[2]})}else o=t.find(function(e){return e.id===n});if(o.type=o.variableType||o.type,"[object Array]"===Object.prototype.toString.call(r))switch(o.type){case"dateRange":r=r.map(function(e){return e.format("YYYY-MM-DD")}),e=e.concat({name:o.variables[0],value:"'"+r[0]+"'"}).concat({name:o.variables[1],value:"'"+r[1]+"'"});break;case"datetimeRange":r=r.map(function(e){return e.format("YYYY-MM-DD HH:mm:ss")}),e=e.concat({name:o.variables[0],value:"'"+r[0]+"'"}).concat({name:o.variables[1],value:"'"+r[1]+"'"});break;case"multiSelect":r.forEach(function(t){e=e.concat({name:o.variables[0],value:""+t})})}else if(r)if(o.variables[0])switch(o.type){case"date":r=r.format("YYYY-MM-DD"),e=e.concat({name:o.variables[0],value:"'"+r+"'"});break;case"datetime":r=r.format("YYYY-MM-DD HH:mm:ss"),e=e.concat({name:o.variables[0],value:"'"+r+"'"});break;case"multiDate":e=e.concat({name:o.variables[0],value:r.split(",").map(function(e){return"'"+e+"'"}).join(",")});break;case"select":e=e.concat({name:o.variables[0],value:""+r});break;default:e=e.concat({name:o.variables[0],value:"'"+r+"'"})}else if("select"===o.type&&"no"===o.hasRelatedComponent){var s=o.sub.find(function(e){return e.value===r});s.variables[0]&&(e=e.concat({name:s.variables[0],value:"'"+r+"'"}))}return e},[])}),o()},n.state={parentSelValues:null},n}return i(t,e),s(t,[{key:"componentWillMount",value:function(){this.getStateValues(this.props.controls)}},{key:"componentWillReceiveProps",value:function(e){e.controls.map(function(e){return e.id}).join(",")!==this.props.controls.map(function(e){return e.id}).join(",")&&this.getStateValues(e.controls)}},{key:"render",value:function(){var e=this,t=this.props.controls,n=t.map(function(t){return e.generateFormComponent(t)});return l.createElement(u,{className:A.controlForm},l.createElement(g,{gutter:10},n),l.createElement(g,{className:A.buttonRow},l.createElement(b,{span:24},l.createElement(m,{type:"primary",onClick:this.onControlSearch},"查询"))))}}]),t}(l.PureComponent);t.DashboardItemControlForm=w,t.default=u.create()(w)},"./app/containers/Dashboard/components/DashboardItemControlPanel.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e){var t,n,o=s((t={},r(t,l.controlPanel,!0),r(t,l.show,e.show),t)),c=s((n={},r(n,l.form,!0),r(n,l.show,e.show),n));return i.createElement("div",{className:o,onClick:e.onClose},i.createElement("div",{className:c,onClick:a},e.children))}function a(e){e.stopPropagation()}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/react/react.js"),s=n("./node_modules/classnames/index.js"),l=n("./app/containers/Dashboard/Dashboard.less");t.DashboardItemControlPanel=o,t.default=o},"./app/containers/Dashboard/components/DashboardItemForm.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=function(){function e(e,t){for(var n=0;n0?[l.createElement("span",{key:t,className:x.highlight},n[0]),e]:e}))}):null}).filter(function(e){return!!e})})},n.handleTableChange=function(e,t,r){n.setState({tableSortedInfo:r})},n.onSelectChange=function(e){n.setState({selectedRowKeys:e},function(){n.props.onWidgetSelect(n.state.selectedRowKeys)})},n.state={filteredWidgets:[],pageSize:24,currentPage:1,screenWidth:0,tableWidget:[],nameFilterValue:"",nameFilterDropdownVisible:!1,tableSortedInfo:{},selectedRowKeys:[]},n}return i(t,e),s(t,[{key:"componentWillMount",value:function(){var e=this.props.widgets;e&&this.setState({tableWidget:e.map(function(e){return e.key=e.id,e})})}},{key:"componentWillReceiveProps",value:function(e){window.addEventListener("resize",this.getScreenWidth,!1)}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this.getScreenWidth,!1)}},{key:"render",value:function(){var e=this,t=this.props,n=t.widgets,o=t.type,a=t.form,i=t.selectedWidget,s=t.polling,h=t.step,m=(t.onWidgetSelect,t.onPollingSelect),y=this.state,_=y.filteredWidgets,M=(y.pageSize,y.currentPage,y.screenWidth),O=y.tableWidget,L=y.nameFilterValue,D=y.nameFilterDropdownVisible,P=y.tableSortedInfo,I=(y.selectedRowKeys,[{title:"名称",dataIndex:"name",key:"name",filterDropdown:l.createElement(A.default,{placeholder:"name",value:L,onChange:this.onSearchInputChange,onSearch:this.onSearch}),filterDropdownVisible:D,onFilterDropdownVisibleChange:function(t){return e.setState({nameFilterDropdownVisible:t})},sorter:function(e,t){return e.name>t.name?-1:1},sortOrder:"name"===P.columnKey&&P.order},{title:"描述",dataIndex:"description",key:"description"}]),R={simple:M<768||768===M,defaultPageSize:20,showSizeChanger:!0},N={selectedRowKeys:i,onChange:this.onSelectChange,onShowSizeChange:this.onShowSizeChange},B="add"===o?l.createElement(b,{current:h},w,j,E):"",F=(_.length,a.getFieldDecorator),U=c(r({},x.hide,!!h)),z=c(r({},x.hide,!h)),H=c(r({},x.hide,!s));return l.createElement(u,null,l.createElement(d,{className:x.formStepArea},l.createElement(p,{span:24},B)),l.createElement(d,{gutter:20,className:U},l.createElement(f,{dataSource:O,columns:I,pagination:R,onChange:this.handleTableChange,rowSelection:N})),l.createElement("div",{className:z},l.createElement(d,{gutter:8},l.createElement(p,{sm:8},l.createElement(v,{className:x.hide},F("id",{hidden:"add"===o})(S)),l.createElement(v,{label:"数据刷新模式",labelCol:{span:10},wrapperCol:{span:14}},F("polling",{initialValue:s?"true":"false"})(l.createElement(g,{onSelect:m},k,C)))),l.createElement(p,{sm:4,className:H},l.createElement(v,{label:"时长",labelCol:{span:12},wrapperCol:{span:12}},F("frequency",{rules:[{required:!0,message:"不能为空"}],initialValue:60})(T))))))}}]),t}(l.PureComponent);t.DashboardItemForm=M,t.default=u.create()(M)},"./app/containers/Dashboard/components/DashboardLinkageConfig.tsx":function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0){var R=w;M=R.widget.name,O=R.renderType,L=j[R.itemId];var N=JSON.parse(w.widget.config);C="echarts"!==O?c.createElement(h.default,s({},N,{renderType:"rerender",data:L&&L.datasource?L.datasource:[]})):c.createElement("div",{style:{width:"100%",height:"100%"},id:"fsChartsWrapper"})}var B=void 0;if(w&&w.widget&&w.widget.query_params){var F=w.widget.query_params;B=!!JSON.parse(F).length}var U=w&&w.widget&&w.widget.query_params?JSON.parse(w.widget.query_params).filter(function(e){return e.type}):[],z=p((o={},r(o,m.modalPanel,!0),r(o,m.displayNone,!_),o)),H=p((a={},r(a,m.controlPanel,!0),r(a,m.displayNone,!_),r(a,m.showModalPanel,_),r(a,m.hideModalPanel,!_),a));return c.createElement("div",{className:k},c.createElement("div",{className:m.container},c.createElement("nav",{className:m.header},c.createElement("div",{className:m.logo},c.createElement(u,{type:this.state.isShowMenu?"menu-fold":"menu-unfold",onClick:this.isShowSideMenu,style:{marginRight:"32px"}}),c.createElement("span",null,M)),c.createElement("ul",{className:m.tools},B?c.createElement("li",{onClick:this.toggleControlPanel},c.createElement(u,{type:_?"up-square-o":"down-square-o"}),g):"",b,c.createElement("li",{onClick:this.hide},v,y))),c.createElement("div",{className:m.body},c.createElement("div",{className:D},T),c.createElement("div",{className:z}),c.createElement("div",{className:H},c.createElement("div",{className:m.formPanel},c.createElement(f.default,{controls:U,onSearch:this.onControlSearch,onHide:this.toggleControlPanel}))),c.createElement("div",{className:P},C))))}}]),t}(c.PureComponent);t.default=_},"./app/containers/Dashboard/components/fullScreenPanel/fullScreenPanel.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Dashboard/components/fullScreenPanel/fullScreenPanel.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Dashboard/components/localPositionUtil.ts":function(e,t,n){"use strict";function r(e){return e.map(function(e){return{x:e.x,y:e.y,w:e.width,h:e.height,i:""+e.id}})}function o(e,t){return t.forEach(function(t,n){var r=e[n];r.x=t.x,r.y=t.y,r.w===t.w&&r.h===t.h||(r.w=t.w,r.h=t.h)}),e}function a(e,t){for(var n=!1,r=0,o=t.length;r0)return s}}catch(e){n=!0,r=e}finally{try{!t&&a.return&&a.return()}finally{if(n)throw r}}return-1}Object.defineProperty(t,"__esModule",{value:!0}),t.initializePosition=r,t.changePosition=o,t.diffPosition=a,t.listToTree=i,t.findFirstLeaf=s},"./app/containers/Dashboard/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LOAD_DASHBOARDS="davinci/Dashboard/LOAD_DASHBOARDS",t.LOAD_DASHBOARDS_SUCCESS="davinci/Dashboard/LOAD_DASHBOARDS_SUCCESS",t.LOAD_DASHBOARDS_FAILURE="davinci/Dashboard/LOAD_DASHBOARDS_FAILURE",t.ADD_DASHBOARD="davinci/Dashboard/ADD_DASHBOARD",t.ADD_DASHBOARD_SUCCESS="davinci/Dashboard/ADD_DASHBOARD_SUCCESS",t.ADD_DASHBOARD_FAILURE="davinci/Dashboard/ADD_DASHBOARD_FAILURE",t.EDIT_DASHBOARD="davinci/Dashboard/EDIT_DASHBOARD",t.EDIT_DASHBOARD_SUCCESS="davinci/Dashboard/EDIT_DASHBOARD_SUCCESS",t.EDIT_DASHBOARD_FAILURE="davinci/Dashboard/EDIT_DASHBOARD_FAILURE",t.EDIT_CURRENT_DASHBOARD="davinci/Dashboard/EDIT_CURRENT_DASHBOARD",t.EDIT_CURRENT_DASHBOARD_SUCCESS="davinci/Dashboard/EDIT_CURRENT_DASHBOARD_SUCCESS",t.EDIT_CURRENT_DASHBOARD_FAILURE="davinci/Dashboard/EDIT_CURRENT_DASHBOARD_FAILURE",t.DELETE_DASHBOARD="davinci/Dashboard/DELETE_DASHBOARD",t.DELETE_DASHBOARD_SUCCESS="davinci/Dashboard/DELETE_DASHBOARD_SUCCESS",t.DELETE_DASHBOARD_FAILURE="davinci/Dashboard/DELETE_DASHBOARD_FAILURE",t.LOAD_DASHBOARD_DETAIL="davinci/Dashboard/LOAD_DASHBOARD_DETAIL",t.LOAD_DASHBOARD_DETAIL_SUCCESS="davinci/Dashboard/LOAD_DASHBOARD_DETAIL_SUCCESS",t.LOAD_DASHBOARD_DETAIL_FAILURE="davinci/Dashboard/LOAD_DASHBOARD_DETAIL_FAILURE",t.ADD_DASHBOARD_ITEM="davinci/Dashboard/ADD_DASHBOARD_ITEM",t.ADD_DASHBOARD_ITEM_SUCCESS="davinci/Dashboard/ADD_DASHBOARD_ITEM_SUCCESS",t.ADD_DASHBOARD_ITEM_FAILURE="davinci/Dashboard/ADD_DASHBOARD_ITEM_FAILURE",t.EDIT_DASHBOARD_ITEM="davinci/Dashboard/EDIT_DASHBOARD_ITEM",t.EDIT_DASHBOARD_ITEM_SUCCESS="davinci/Dashboard/EDIT_DASHBOARD_ITEM_SUCCESS",t.EDIT_DASHBOARD_ITEM_FAILURE="davinci/Dashboard/EDIT_DASHBOARD_ITEM_FAILURE",t.EDIT_DASHBOARD_ITEMS="davinci/Dashboard/EDIT_DASHBOARD_ITEMS",t.EDIT_DASHBOARD_ITEMS_SUCCESS="davinci/Dashboard/EDIT_DASHBOARD_ITEMS_SUCCESS",t.EDIT_DASHBOARD_ITEMS_FAILURE="davinci/Dashboard/EDIT_DASHBOARD_ITEMS_FAILURE",t.DELETE_DASHBOARD_ITEM="davinci/Dashboard/DELETE_DASHBOARD_ITEM",t.DELETE_DASHBOARD_ITEM_SUCCESS="davinci/Dashboard/DELETE_DASHBOARD_ITEM_SUCCESS",t.DELETE_DASHBOARD_ITEM_FAILURE="davinci/Dashboard/DELETE_DASHBOARD_ITEM_FAILURE",t.CLEAR_CURRENT_DASHBOARD="davinci/Dashboard/CLEAR_CURRENT_DASHBOARD",t.LOAD_DASHBOARD_SHARE_LINK="davinci/Dashboard/LOAD_DASHBOARD_SHARE_LINK",t.LOAD_DASHBOARD_SHARE_LINK_SUCCESS="davinci/Dashboard/LOAD_DASHBOARD_SHARE_LINK_SUCCESS",t.LOAD_DASHBOARD_SHARE_LINK_FAILURE="davinci/Dashboard/LOAD_DASHBOARD_SHARE_LINK_FAILURE",t.LOAD_DASHBOARD_SECRET_LINK_SUCCESS="davinci/Dashboard/LOAD_DASHBOARD_SECRET_LINK_SUCCESS",t.LOAD_WIDGET_SHARE_LINK="davinci/Dashboard/LOAD_WIDGET_SHARE_LINK",t.LOAD_WIDGET_SHARE_LINK_SUCCESS="davinci/Dashboard/LOAD_WIDGET_SHARE_LINK_SUCCESS",t.LOAD_WIDGET_SHARE_LINK_FAILURE="davinci/Dashboard/LOAD_WIDGET_SHARE_LINK_FAILURE",t.LOAD_WIDGET_SECRET_LINK_SUCCESS="davinci/Dashboard/LOAD_WIDGET_SECRET_LINK_SUCCESS",t.LOAD_WIDGET_CSV="davinci/Dashboard/LOAD_WIDGET_CSV",t.LOAD_WIDGET_CSV_SUCCESS="davinci/Dashboard/LOAD_WIDGET_CSV_SUCCESS",t.LOAD_WIDGET_CSV_FAILURE="davinci/Dashboard/LOAD_WIDGET_CSV_FAILURE",t.RENDER_DASHBOARDITEM="davinci/Dashboard/RENDER_DASHBOARDITEM",t.RESIZE_DASHBOARDITEM="davinci/Dashboard/RESIZE_DASHBOARDITEM",t.RESIZE_ALL_DASHBOARDITEM="davinci/Dashboard/RESIZE_ALL_DASHBOARDITEM"},"./app/containers/Dashboard/index.tsx":function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);te.dropPosition?v[o]:v[o+1];var y=h?h.index:v[o].index+1;if(h||g.unshift({config:c,dashboardPortalId:u,id:d,index:y,name:p,parentId:m,type:f}),h&&(e.dropToGap||1===h.type)){v=0===Number(h.parentId)?t.filter(function(e){return 0===e.parentId}):t.find(function(e){return e.id===Number(h.parentId)}).children;g=v.filter(function(e){return e.index>=h.index}).filter(function(e){return e.id!==d}).map(function(e){return{config:e.config,dashboardPortalId:e.dashboardPortalId,id:e.id,index:e.index+1,name:e.name,parentId:e.parentId,type:e.type}}),g.unshift({config:c,dashboardPortalId:u,id:d,index:y,name:p,parentId:h.parentId,type:f})}n.props.onEditDashboard("move",g,function(e){})}}),n.setState({dashboardData:s})},n.onAddItem=function(){n.setState({formVisible:!0,formType:"add"})},n.onCollapseAll=function(){n.onExpand([]),n.setState({isExpand:!1})},n.onExpandAll=function(){var e=n.props.dashboards;e&&n.expandAll(e)},n.onOperateMore=function(e,t){n.setState({formType:t},function(){n.onShowDashboardForm(e,n.state.formType)})},n.searchDashboard=function(e){var t=n.props.dashboards,r=e.target.value;n.setState({searchValue:r?t.filter(function(e){return e.name.includes(r)}):[]})},n.backPortal=function(){var e=n.props,t=e.router,r=e.params;t.replace("/project/"+r.pid+"/vizs")},n.pickSearchDashboard=function(e){return function(t){var r=n.props.dashboards;n.setState({searchVisible:!1});var o=r.find(function(t){return t.id===e});if(1===o.type)n.changeDashboard(e)(t);else if(0===o.type){var a=r.filter(function(t){return t.parentId===e});0!==a.length&&n.changeDashboard(a[0].id)(t)}}},n.confirmDeleteDashboard=function(e){var t=n.props,r=t.params,o=t.router,a=t.onDeleteDashboard,i=t.dashboards,s=n.state.dashboardData;a(e,function(){var t=r.pid,a=r.portalId,l=r.portalName,c=i.find(function(e){return e.id===Number(r.dashboardId)}),u=s.filter(function(t){return t.id!==e});if(0!==u.length&&c){var d=u.filter(function(t){return t.parentId!==e}),p={id:-1,type:2,children:d};if(Number(r.dashboardId)===e||c.parentId===e){var f=L.findFirstLeaf(p);o.replace("/project/"+t+"/portal/"+a+"/portalName/"+l+"/dashboard/"+f)}}else o.replace("/project/"+t+"/portal/"+a+"/portalName/"+l+"/dashboard/-1"),n.setState({isGrid:!1});n.hideDashboardForm()})},n.searchVisibleChange=function(e){n.setState({searchVisible:e})},n.state={formType:"",formVisible:!1,expandedKeys:[],autoExpandParent:!0,searchValue:[],dashboardData:[],itemId:0,dataList:[],isExpand:!0,searchVisible:!1,isGrid:!0},n}return i(t,e),l(t,[{key:"componentWillMount",value:function(){var e=this,t=this.props,n=t.params,r=t.router,o=(t.dashboards,n.pid),a=n.portalId,i=n.portalName,s=n.dashboardId;this.props.onLoadDashboards(n.portalId,function(t){var n=0,l=L.listToTree(t,0),c={id:-1,type:2,children:l};n=L.findFirstLeaf(c),n>=0&&(s||r.replace("/project/"+o+"/portal/"+a+"/portalName/"+i+"/dashboard/"+n)),e.setState({dashboardData:l,isGrid:n>=0}),e.expandAll(t)})}},{key:"initalDashboardData",value:function(e){this.setState({dashboardData:L.listToTree(e,0)}),this.expandAll(e)}},{key:"componentWillReceiveProps",value:function(e){e.dashboards!==this.props.dashboards&&this.initalDashboardData(e.dashboards)}},{key:"expandAll",value:function(e){var t=[];e.filter(function(e){return 0===e.type}).forEach(function(e){return t.push(""+e.id)}),this.onExpand(t),this.setState({isExpand:!0})}},{key:"onShowDashboardForm",value:function(e,t){var n=this,r=this.props.dashboards;this.setState({formVisible:!0,itemId:e},function(){var o=r.find(function(t){return t.id===e}),a=o.config,i=o.id,s=o.name,l=o.parentId,c=o.type,u=o.index;n.dashboardForm.props.form.setFieldsValue({id:i,folder:l?""+r.find(function(e){return e.id===l}).id:"0",config:a,name:"copy"===t?s+"_copy":s,selectType:1===c,index:u})})}},{key:"render",value:function(){var e=this,t=this.props,r=t.params,o=t.dashboards,a=t.modalLoading,i=t.children,s=t.currentProject,l=t.onCheckUniqueName,d=this.state,p=d.formType,f=d.formVisible,h=d.searchValue,m=d.dashboardData,g=d.isGrid,b=d.searchVisible,E=h.map(function(t){return c.createElement("li",{key:t.id,onClick:e.pickSearchDashboard(t.id)},t.name)}),T="";switch(p){case"add":T="新增";break;case"edit":T="修改";break;case"copy":T="复制";break;case"move":T="移动";break;case"delete":T="提示"}var M=[c.createElement(_,{key:"back",size:"large",onClick:this.hideDashboardForm},"取 消"),c.createElement(_,{key:"submit",size:"large",type:"primary",loading:a,onClick:this.onModalOk},"delete"===p?"确 定":"保 存")],O=I.default(s,"viz",!0)(A);return c.createElement("div",{className:D.portal},c.createElement(u.default,{title:r.portalName}),c.createElement("div",{className:D.portalBody},c.createElement("div",{className:D.portalTree},c.createElement("div",{className:D.portalRow},c.createElement("span",{className:D.portalTitle,title:r.portalName},r.portalName),c.createElement("span",{className:D.portalAction},c.createElement(w,{placement:"bottom",content:c.createElement("div",{className:D.portalTreeSearch},c.createElement(C,{placeholder:"Search",onChange:this.searchDashboard}),c.createElement("ul",null,E)),trigger:"click",visible:b,onVisibleChange:this.searchVisibleChange},c.createElement(x,{placement:"top",title:"搜索"},c.createElement(A,{type:"search",className:D.search}))),c.createElement(x,{placement:"top",title:"新增"},c.createElement(O,{type:"plus",className:D.plus,onClick:this.onAddItem})),c.createElement(w,{placement:"bottom",content:c.createElement("ul",{className:D.menu},c.createElement("li",{onClick:this.onCollapseAll},"收起全部"),c.createElement("li",{onClick:this.onExpandAll},"展开全部")),trigger:"click"},c.createElement(x,{placement:"top",title:"更多"},c.createElement(A,{type:"ellipsis",className:D.more}))))),m.length?c.createElement("div",{className:D.portalTreeNode},c.createElement(S,{onExpand:this.onExpand,expandedKeys:this.state.expandedKeys,autoExpandParent:this.state.autoExpandParent,selectedKeys:[this.props.params.dashboardId],draggable:R.initializePermission(s,"vizPermission"),onDrop:this.onDrop},function t(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return n.map(function(n){var o=c.createElement(y.default,{currentProject:s,depth:r,item:n,onInitOperateMore:e.onOperateMore,initChangeDashboard:e.changeDashboard});return 0===n.type?c.createElement(k,{icon:N,key:n.id,title:o},t(n.children,r+1)):c.createElement(k,{icon:B,key:n.id,title:o})})}(m))):g?c.createElement("h3",{className:D.loadingTreeMsg},"Loading tree......"):""),c.createElement("div",{className:D.gridClass},g?i:c.createElement("div",{className:D.noDashboard},c.createElement("img",{src:n("./app/assets/images/noDashboard.png"),onClick:this.onAddItem}),F))),c.createElement(j,{title:T,wrapClassName:"ant-modal-small",visible:f,footer:M,onCancel:this.hideDashboardForm},c.createElement(v.default,{type:p,itemId:this.state.itemId,dashboards:o,portalId:r.portalId,onCheckUniqueName:l,wrappedComponentRef:this.refHandlers.dashboardForm})))}}]),t}(c.Component);t.Dashboard=U;var z=p.createStructuredSelector({dashboards:M.makeSelectDashboards(),modalLoading:M.makeSelectModalLoading(),currentProject:P.makeSelectCurrentProject()});t.mapDispatchToProps=s;var H=d.connect(z,s),V=h.default({key:"dashboard",reducer:g.default}),Y=m.default({key:"dashboard",saga:b.default});t.default=f.compose(V,Y,H)(U)},"./app/containers/Dashboard/reducer.ts":function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:u,t=arguments[1],n=t.type,a=t.payload,s=e.get("dashboards"),d=e.get("currentDashboardCascadeSources"),p=e.get("currentItems"),f=e.get("currentItemsInfo");switch(n){case l.LOAD_DASHBOARDS_SUCCESS:return e.set("dashboards",a.dashboards);case l.LOAD_DASHBOARDS_FAILURE:return e;case l.ADD_DASHBOARD:return e.set("modalLoading",!0);case l.ADD_DASHBOARD_SUCCESS:return s?(s.push(a.result),e.set("dashboards",s.slice()).set("modalLoading",!1)):e.set("dashboards",[a.result]).set("modalLoading",!1);case l.ADD_DASHBOARD_FAILURE:return e.set("modalLoading",!1);case l.EDIT_DASHBOARD_SUCCESS:var h=a.result,m=a.formType;return"edit"===m?h.forEach(function(e){s.splice(s.findIndex(function(t){return t.id===e.id}),1,e)}):"move"===m&&(h.forEach(function(e){s.splice(s.findIndex(function(t){return t.id===e.id}),1)}),Array.prototype.push.apply(s,h)),e.set("dashboards",s.slice());case l.EDIT_CURRENT_DASHBOARD:return e.set("currentDashboardLoading",!0);case l.EDIT_CURRENT_DASHBOARD_SUCCESS:return e.set("currentDashboard",a.result).set("currentDashboardCascadeSources",{}).set("currentDashboardLoading",!1);case l.EDIT_CURRENT_DASHBOARD_FAILURE:return e.set("currentDashboardLoading",!1);case l.DELETE_DASHBOARD_SUCCESS:return e.set("dashboards",s.filter(function(e){return e.id!==a.id}));case l.LOAD_DASHBOARD_DETAIL:return e.set("currentDashboardLoading",!0).set("currentDashboardShareInfo","").set("currentDashboardSecretInfo","");case l.LOAD_DASHBOARD_DETAIL_SUCCESS:return e.set("currentDashboardLoading",!1).set("currentDashboard",a.dashboardDetail).set("currentDashboardCascadeSources",{}).set("currentItems",a.dashboardDetail.widgets).set("currentItemsInfo",a.dashboardDetail.widgets.reduce(function(e,t){return e[t.id]={datasource:[],loading:!1,queryParams:{linkageFilters:[],globalFilters:[],params:[],linkageParams:[],globalParams:[],pagination:{}},shareInfo:"",shareInfoLoading:!1,secretInfo:"",downloadCsvLoading:!1,interactId:"",rendered:!1,renderType:"rerender"},e},{}));case l.LOAD_DASHBOARD_DETAIL_FAILURE:return e.set("currentDashboardLoading",!1);case l.ADD_DASHBOARD_ITEM_SUCCESS:p||(p=[]);var g=new Object;return a.result.forEach(function(e){g[e.id]={datasource:[],loading:!1,queryParams:{linkageFilters:[],globalFilters:[],params:[],linkageParams:[],globalParams:[],pagination:{}},shareInfo:"",shareInfoLoading:!1,secretInfo:"",downloadCsvLoading:!1,interactId:"",rendered:!1,renderType:"rerender"}}),e.set("currentItems",p.concat(a.result)).set("currentItemsInfo",Object.assign({},f,g));case l.ADD_DASHBOARD_ITEM_FAILURE:return e;case l.EDIT_DASHBOARD_ITEM_SUCCESS:return p.splice(p.indexOf(p.find(function(e){return e.id===a.result.id})),1,a.result),e.set("currentItems",p.slice());case l.EDIT_DASHBOARD_ITEM_FAILURE:return e;case l.EDIT_DASHBOARD_ITEMS_SUCCESS:return e.set("currentItems",a.items);case l.EDIT_DASHBOARD_ITEMS_FAILURE:return e;case l.DELETE_DASHBOARD_ITEM_SUCCESS:return delete f[a.id],e.set("currentItems",p.filter(function(e){return e.id!==a.id}));case l.DELETE_DASHBOARD_ITEM_FAILURE:return e;case l.CLEAR_CURRENT_DASHBOARD:return e.set("currentDashboard",null).set("currentItems",null).set("currentItemsInfo",null);case c.LOAD_DATA_FROM_ITEM:return"dashboard"!==a.vizType?e:e.set("currentItemsInfo",Object.assign({},f,o({},a.itemId,Object.assign({},f[a.itemId],{loading:!0,queryParams:{linkageFilters:a.params.linkageFilters,globalFilters:a.params.globalFilters,params:a.params.params,linkageParams:a.params.linkageParams,globalParams:a.params.globalParams}}))));case c.LOAD_DATA_FROM_ITEM_SUCCESS:return"dashboard"!==a.vizType?e:e.set("currentItemsInfo",Object.assign({},f,o({},a.itemId,Object.assign({},f[a.itemId],{loading:!1,datasource:a.data,renderType:a.renderType}))));case c.LOAD_DATA_FROM_ITEM_FAILURE:return"dashboard"!==a.vizType?e:e.set("currentItemsInfo",Object.assign({},f,o({},a.itemId,Object.assign({},f[a.itemId],{loading:!1}))));case l.LOAD_DASHBOARD_SHARE_LINK:return e.set("currentDashboardShareInfoLoading",!0);case l.LOAD_DASHBOARD_SHARE_LINK_SUCCESS:return e.set("currentDashboardShareInfo",a.shareInfo).set("currentDashboardShareInfoLoading",!1);case l.LOAD_DASHBOARD_SECRET_LINK_SUCCESS:return e.set("currentDashboardSecretInfo",a.secretInfo).set("currentDashboardShareInfoLoading",!1);case l.LOAD_DASHBOARD_SHARE_LINK_FAILURE:return e.set("currentDashboardShareInfoLoading",!1);case l.LOAD_WIDGET_SHARE_LINK:return e.set("currentItemsInfo",Object.assign({},f,o({},a.itemId,Object.assign({},f[a.itemId],{shareInfoLoading:!0}))));case l.LOAD_WIDGET_SHARE_LINK_SUCCESS:return e.set("currentItemsInfo",Object.assign({},f,o({},a.itemId,Object.assign({},f[a.itemId],{shareInfo:a.shareInfo,shareInfoLoading:!1}))));case l.LOAD_WIDGET_SECRET_LINK_SUCCESS:return e.set("currentItemsInfo",Object.assign({},f,o({},a.itemId,Object.assign({},f[a.itemId],{secretInfo:a.shareInfo,shareInfoLoading:!1}))));case l.LOAD_WIDGET_SHARE_LINK_FAILURE:return e.set("currentItemsInfo",Object.assign({},f,o({},a.itemId,Object.assign({},f[a.itemId],{shareInfoLoading:!1}))));case l.LOAD_WIDGET_CSV:return e.set("currentItemsInfo",Object.assign({},f,o({},a.itemId,Object.assign({},f[a.itemId],{downloadCsvLoading:!0}))));case l.LOAD_WIDGET_CSV_SUCCESS:case l.LOAD_WIDGET_CSV_FAILURE:return e.set("currentItemsInfo",Object.assign({},f,o({},a.itemId,Object.assign({},f[a.itemId],{downloadCsvLoading:!1}))));case c.LOAD_CASCADESOURCE_SUCCESS:return e.set("currentDashboardCascadeSources",Object.assign({},d,o({},a.controlId,Object.assign({},d[a.controlId],o({},a.column,a.values)))));case l.RENDER_DASHBOARDITEM:return e.set("currentItemsInfo",Object.assign({},f,o({},a.itemId,Object.assign({},f[a.itemId],{rendered:!0}))));case l.RESIZE_DASHBOARDITEM:return e.set("currentItemsInfo",Object.assign({},f,o({},a.itemId,Object.assign({},f[a.itemId],{renderType:"resize",datasource:[].concat(r(f[a.itemId].datasource))}))));case l.RESIZE_ALL_DASHBOARDITEM:return e.set("currentItemsInfo",Object.entries(f).reduce(function(e,t){var n=i(t,2),o=n[0],a=n[1];return e[o]=Object.assign({},a,{renderType:"resize",datasource:[].concat(r(a.datasource))}),e},{}));default:return e}}var i=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();Object.defineProperty(t,"__esModule",{value:!0});var s=n("./node_modules/immutable/dist/immutable.js"),l=n("./app/containers/Dashboard/constants.ts"),c=n("./app/containers/Bizlogic/constants.ts"),u=s.fromJS({dashboards:null,currentDashboard:null,currentDashboardLoading:!1,currentDashboardShareInfo:"",currentDashboardSecretInfo:"",currentDashboardShareInfoLoading:!1,currentDashboardCascadeSources:null,currentItems:null,currentItemsInfo:null,modalLoading:!1});t.default=a},"./app/containers/Dashboard/sagas.ts":function(e,t,n){"use strict";function r(e){var t,n=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,L.call(I.default,N.default.portal+"/"+n.portalId+"/dashboards");case 3:return t=e.sent,e.next=6,L.put(P.dashboardsLoaded(t.payload));case 6:n.resolve(t.payload),e.next=14;break;case 9:return e.prev=9,e.t0=e.catch(0),e.next=13,L.put(P.loadDashboardsFail());case 13:R.errorHandler(e.t0);case 14:case"end":return e.stop()}},b,this,[[0,9]])}function o(e){var t,n,r,o=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=o.dashboard,n=o.resolve,e.prev=1,e.next=4,L.call(I.default,{method:"post",url:N.default.portal+"/"+t.dashboardPortalId+"/dashboards",data:t});case 4:return r=e.sent,e.next=7,L.put(P.dashboardAdded(r.payload));case 7:n(r.payload.id),e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,L.put(P.addDashboardFail());case 14:R.errorHandler(e.t0);case 15:case"end":return e.stop()}},v,this,[[1,10]])}function a(e){var t,n,r,o=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=o.formType,n=o.dashboard,r=o.resolve,e.prev=1,e.next=4,L.call(I.default,{method:"put",url:N.default.portal+"/"+n[0].dashboardPortalId+"/dashboards",data:n});case 4:return e.next=6,L.put(P.dashboardEdited(n,t));case 6:r(n),e.next=14;break;case 9:return e.prev=9,e.t0=e.catch(1),e.next=13,L.put(P.editDashboardFail());case 13:R.errorHandler(e.t0);case 14:case"end":return e.stop()}},y,this,[[1,9]])}function i(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,n=t.dashboard,r=t.resolve,o.prev=1,o.next=4,L.call(I.default,{method:"put",url:N.default.portal+"/"+n.dashboardPortalId+"/dashboards",data:[n]});case 4:return o.next=6,L.put(P.currentDashboardEdited(n));case 6:r(),o.next=14;break;case 9:return o.prev=9,o.t0=o.catch(1),o.next=13,L.put(P.editCurrentDashboardFail());case 13:R.errorHandler(o.t0);case 14:case"end":return o.stop()}},_,this,[[1,9]])}function s(e){var t=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,L.call(I.default,{method:"delete",url:N.default.portal+"/dashboards/"+t.id});case 3:return e.next=5,L.put(P.dashboardDeleted(t.id));case 5:t.resolve&&t.resolve(),e.next=13;break;case 8:return e.prev=8,e.t0=e.catch(0),e.next=12,L.put(P.deleteDashboardFail());case 12:R.errorHandler(e.t0);case 13:case"end":return e.stop()}},A,this,[[0,8]])}function l(e){var t,n,r,o,a=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=a.projectId,n=a.portalId,r=a.dashboardId,e.prev=1,e.next=4,L.all({dashboardDetail:L.call(I.default,N.default.portal+"/"+n+"/dashboards/"+r),widgets:L.call(I.default,N.default.widget+"?projectId="+t)});case 4:return o=e.sent,e.next=7,L.put(P.dashboardDetailLoaded(r,o.dashboardDetail.payload,o.widgets.payload));case 7:e.next=14;break;case 9:return e.prev=9,e.t0=e.catch(1),e.next=13,L.put(P.loadDashboardDetailFail());case 13:R.errorHandler(e.t0);case 14:case"end":return e.stop()}},x,this,[[1,9]])}function c(e){var t,n,r,o,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,n=t.portalId,r=t.item,o=t.resolve,i.prev=1,i.next=4,L.call(I.default,{method:"post",url:N.default.portal+"/"+n+"/dashboards/"+r[0].dashboardId+"/widgets",data:r});case 4:return a=i.sent,i.next=7,L.put(P.dashboardItemAdded(a.payload));case 7:o(a),i.next=15;break;case 10:return i.prev=10,i.t0=i.catch(1),i.next=14,L.put(P.addDashboardItemFail());case 14:R.errorHandler(i.t0);case 15:case"end":return i.stop()}},w,this,[[1,10]])}function u(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,n=t.item,r=t.resolve,o.prev=1,o.next=4,L.call(I.default,{method:"put",url:N.default.portal+"/dashboards/widgets",data:[n]});case 4:return o.next=6,L.put(P.dashboardItemEdited(n));case 6:r(),o.next=14;break;case 9:return o.prev=9,o.t0=o.catch(1),o.next=13,L.put(P.editDashboardItemFail());case 13:R.errorHandler(o.t0);case 14:case"end":return o.stop()}},j,this,[[1,9]])}function d(e){var t;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return t=e.payload.items,n.prev=1,n.next=4,L.call(I.default,{method:"put",url:N.default.portal+"/dashboards/widgets",data:t});case 4:return n.next=6,L.put(P.dashboardItemsEdited(t));case 6:n.next=13;break;case 8:return n.prev=8,n.t0=n.catch(1),n.next=12,L.put(P.editDashboardItemsFail());case 12:R.errorHandler(n.t0);case 13:case"end":return n.stop()}},E,this,[[1,8]])}function p(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,n=t.id,r=t.resolve,o.prev=1,o.next=4,L.call(I.default,{method:"delete",url:N.default.portal+"/dashboards/widgets/"+n});case 4:return o.next=6,L.put(P.dashboardItemDeleted(n));case 6:r(),o.next=14;break;case 9:return o.prev=9,o.t0=o.catch(1),o.next=13,L.put(P.deleteDashboardItemFail());case 13:R.errorHandler(o.t0);case 14:case"end":return o.stop()}},S,this,[[1,9]])}function f(e){var t,n,r,o;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return t=e.payload,n=t.id,r=t.authName,a.prev=1,a.next=4,L.call(I.default,{method:"get",url:N.default.portal+"/dashboards/"+n+"/share",params:{username:r}});case 4:if(o=a.sent,!r){a.next=10;break}return a.next=8,L.put(P.dashboardSecretLinkLoaded(o.payload));case 8:a.next=12;break;case 10:return a.next=12,L.put(P.dashboardShareLinkLoaded(o.payload));case 12:a.next=19;break;case 14:return a.prev=14,a.t0=a.catch(1),a.next=18,L.put(P.loadDashboardShareLinkFail());case 18:R.errorHandler(a.t0);case 19:case"end":return a.stop()}},k,this,[[1,14]])}function h(e){var t,n,r,o,a,i;return regeneratorRuntime.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload,n=t.id,r=t.authName,o=t.itemId,a=t.resolve,s.prev=1,s.next=4,L.call(I.default,{method:"get",url:N.default.widget+"/"+n+"/share",params:{username:r}});case 4:if(i=s.sent,!r){s.next=10;break}return s.next=8,L.put(P.widgetSecretLinkLoaded(i.payload,o));case 8:s.next=12;break;case 10:return s.next=12,L.put(P.widgetShareLinkLoaded(i.payload,o));case 12:a&&a(),s.next=20;break;case 15:return s.prev=15,s.t0=s.catch(1),s.next=19,L.put(P.loadWidgetShareLinkFail(o));case 19:R.errorHandler(s.t0);case 20:case"end":return s.stop()}},C,this,[[1,15]])}function m(e){var t,n,r,o,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,n=t.itemId,r=t.params,o=t.token,i.prev=1,i.next=4,L.call(I.default,{method:"post",url:N.default.widget+"/"+n+"/csv",data:r});case 4:return a=i.sent,i.next=7,L.put(P.widgetCsvLoaded(n));case 7:location.href=a.payload,i.next=15;break;case 10:return i.prev=10,i.t0=i.catch(1),i.next=14,L.put(P.loadWidgetCsvFail(n));case 14:R.errorHandler(i.t0);case 15:case"end":return i.stop()}},T,this,[[1,10]])}function g(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[O.takeLatest(D.LOAD_DASHBOARDS,r),O.takeLatest(D.ADD_DASHBOARD,o),O.takeEvery(D.EDIT_DASHBOARD,a),O.takeEvery(D.EDIT_CURRENT_DASHBOARD,i),O.takeEvery(D.DELETE_DASHBOARD,s),O.takeLatest(D.LOAD_DASHBOARD_DETAIL,l),O.takeEvery(D.ADD_DASHBOARD_ITEM,c),O.takeEvery(D.EDIT_DASHBOARD_ITEM,u),O.takeEvery(D.EDIT_DASHBOARD_ITEMS,d),O.takeEvery(D.DELETE_DASHBOARD_ITEM,p),O.takeLatest(D.LOAD_DASHBOARD_SHARE_LINK,f),O.takeLatest(D.LOAD_WIDGET_SHARE_LINK,h),O.takeLatest(D.LOAD_WIDGET_CSV,m)];case 2:case"end":return e.stop()}},M,this)}var b=regeneratorRuntime.mark(r),v=regeneratorRuntime.mark(o),y=regeneratorRuntime.mark(a),_=regeneratorRuntime.mark(i),A=regeneratorRuntime.mark(s),x=regeneratorRuntime.mark(l),w=regeneratorRuntime.mark(c),j=regeneratorRuntime.mark(u),E=regeneratorRuntime.mark(d),S=regeneratorRuntime.mark(p),k=regeneratorRuntime.mark(f),C=regeneratorRuntime.mark(h),T=regeneratorRuntime.mark(m),M=regeneratorRuntime.mark(g);Object.defineProperty(t,"__esModule",{value:!0});var O=n("./node_modules/redux-saga/es/index.js"),L=n("./node_modules/redux-saga/es/effects.js"),D=n("./app/containers/Dashboard/constants.ts"),P=n("./app/containers/Dashboard/actions.ts"),I=n("./app/utils/request.ts"),R=n("./app/utils/util.ts"),N=n("./app/utils/api.js"),B=n("./app/globalConfig.ts");B.default[B.env].shareHost;t.getDashboards=r,t.addDashboard=o,t.editDashboard=a,t.editCurrentDashboard=i,t.deleteDashboard=s,t.getDashboardDetail=l,t.addDashboardItem=c,t.editDashboardItem=u,t.editDashboardItems=d,t.deleteDashboardItem=p,t.getDashboardShareLink=f,t.getWidgetShareLink=h,t.getWidgetCsv=m,t.default=g},"./app/containers/Dashboard/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("dashboard")};t.selectDashboard=o;var a=function(){return r.createSelector(o,function(e){return e.get("dashboards")})};t.makeSelectDashboards=a;var i=function(){return r.createSelector(o,function(e){return e.get("currentDashboard")})};t.makeSelectCurrentDashboard=i;var s=function(){return r.createSelector(o,function(e){return e.get("currentDashboardLoading")})};t.makeSelectCurrentDashboardLoading=s;var l=function(){return r.createSelector(o,function(e){return e.get("currentDashboardShareInfo")})};t.makeSelectCurrentDashboardShareInfo=l;var c=function(){return r.createSelector(o,function(e){return e.get("currentDashboardSecretInfo")})};t.makeSelectCurrentDashboardSecretInfo=c;var u=function(){return r.createSelector(o,function(e){return e.get("currentDashboardShareInfoLoading")})};t.makeSelectCurrentDashboardShareInfoLoading=u;var d=function(){return r.createSelector(o,function(e){return e.get("currentDashboardCascadeSources")})};t.makeSelectCurrentDashboardCascadeSources=d;var p=function(){return r.createSelector(o,function(e){return e.get("currentItems")})};t.makeSelectCurrentItems=p;var f=function(){return r.createSelector(o,function(e){return e.get("currentItemsInfo")})};t.makeSelectCurrentItemsInfo=f;var h=function(){return r.createSelector(o,function(e){return e.get("modalLoading")})};t.makeSelectModalLoading=h;var m=function(){return r.createSelector(o,function(e){var t=e.get("currentDashboard"),n=e.get("currentItemsInfo");if(!t&&!n)return[];var r=JSON.parse(t.config||"{}"),o=r.linkages;return o?o.filter(function(e){var t=e.linkager,r=e.trigger;return n[t[0]]&&n[r[0]]}):[]})};t.makeSelectCurrentLinkages=m},"./app/containers/Display/Display.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Display/Display.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Display/Editor.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);ti/s?(i-64)/t.width*e:(s-64)/t.height*e;l=+(.05*Math.floor(l/.05)).toFixed(2);var c=Math.max((o-t.width*l)/2,32),u=Math.max((a-t.height*l)/2,32);n.setState({editorWidth:Math.max(i,t.width*l+64),editorHeight:Math.max(s,t.height*l+64),editorPadding:u+"px "+c+"px",scale:l})},n.displaySizeChange=function(e,t){var r=n.state.slideParams;n.setState({slideParams:Object.assign({},r,{width:e,height:t})},function(){n.sliderChange(n.state.sliderValue)})},n.gridDistanceChange=function(e){var t=n.state.slideParams;n.setState({slideParams:Object.assign({},t,{gridDistance:e})})},n.getChartData=function(e,t,r,o){var a=n.props,i=a.currentLayersInfo,s=a.widgets,l=a.onLoadDataFromItem,c=s.find(function(e){return e.id===r}),u=JSON.parse(c.config),d=u.cols,p=u.rows,f=u.metrics,h=u.filters,m=u.color,g=u.label,b=u.size,v=u.xAxis,y=u.tip,_=u.orders,A=u.cache,x=u.expired,w=i[t].queryParams,j=void 0,E=void 0,S=void 0,k=void 0,C=void 0;o?(j=void 0!==o.linkageFilters?o.linkageFilters:w.linkageFilters,E=void 0!==o.globalFilters?o.globalFilters:w.globalFilters,S=o.params||w.params,k=o.linkageParams||w.linkageParams,C=o.globalParams||w.globalParams):(j=w.linkageFilters,E=w.globalFilters,S=w.params,k=w.linkageParams,C=w.globalParams);var T=d.concat(p).filter(function(e){return"指标名称"!==e}),M=f.map(function(e){return{column:z.decodeMetricName(e.name),func:e.agg}});m&&(T=T.concat(m.items.map(function(e){return e.name}))),g&&(T=T.concat(g.items.filter(function(e){return"category"===e.type}).map(function(e){return e.name})),M=M.concat(g.items.filter(function(e){return"value"===e.type}).map(function(e){return{column:z.decodeMetricName(e.name),func:e.agg}}))),b&&(M=M.concat(b.items.map(function(e){return{column:z.decodeMetricName(e.name),func:e.agg}}))),v&&(M=M.concat(v.items.map(function(e){return{column:z.decodeMetricName(e.name),func:e.agg}}))),y&&(M=M.concat(y.items.map(function(e){return{column:z.decodeMetricName(e.name),func:e.agg}}))),l(e,t,c.viewId,{groups:T,aggregators:M,filters:h.map(function(e){return e.config.sql}),linkageFilters:j,globalFilters:E,params:S,linkageParams:k,globalParams:C,orders:_,cache:A,expired:x})},n.dragLayer=function(e,t){var r=t.deltaX,o=t.deltaY,a=n.props,i=a.currentLayersInfo,s=a.onDragSelectedLayer;i[e].selected&&s(e,r,o)},n.resizeLayer=function(e,t){var r=t.deltaWidth,o=t.deltaHeight,a=n.props.currentLayersInfo,i=n.state.currentLocalLayers,s=d.fromJS(i).toJS();s.forEach(function(t){if(a[t.id].selected&&e!==t.id){var n=JSON.parse(t.params),i=n.width,s=n.height;t.params=JSON.stringify(Object.assign({},n,{width:i+r,height:s+o}))}}),n.setState({currentLocalLayers:s})},n.resizeLayerStop=function(e,t,r){var a=n.props,i=a.currentLayersInfo,s=a.onResizeLayers,l=n.state.currentLocalLayers,c=Object.assign({},JSON.parse(e.params),t),u=[];i[e.id].selected&&(u=l.filter(function(t){return i[t.id].selected&&t.id!==e.id}));var d=[Object.assign({},e,{params:JSON.stringify(c)})].concat(o(u));n.onEditLayers(d),s(d.map(function(e){return e.id}))},n.formItemChange=function(e,t){var o=n.state.slideParams,a=n.props,i=a.currentDisplay,s=a.currentSlide,l=a.currentSelectedLayers,c=a.onEditCurrentSlide;if(1===l.length){var u=l[0],d=Object.assign({},JSON.parse(u.params),r({},e,t));n.onEditLayers([Object.assign({},u,{params:JSON.stringify(d)})])}else{var p=Object.assign({},o,r({},e,t)),f=Object.assign({},JSON.parse(s.config),{slideParams:p});c(i.id,Object.assign({},s,{config:JSON.stringify(f)}))}},n.getSettingInfo=function(){var e=n.props,t=e.currentSlide,r=e.currentSelectedLayers,o=n.state.slideParams;if(1===r.length){var a=r[0],i=a.subType||a.type;return{key:"layer_"+a.id,id:a.id,setting:E.default[i],param:JSON.parse(a.params)}}return{key:"slide",id:t.id,setting:E.default[W.GraphTypes.Slide],param:o}},n.deleteLayers=function(){var e=n.props,t=e.currentDisplay,r=e.currentSlide,o=e.currentLayersInfo,a=Object.keys(o).filter(function(e){return o[e].selected});if(a.length<=0)return void F.warning("请选择图层");n.props.onDeleteDisplayLayers(t.id,r.id,a)},n.onEditLayers=function(e){var t=n.props,r=t.currentDisplay,o=t.currentSlide;(0,t.onEditDisplayLayers)(r.id,o.id,e)},n.addLayers=function(e){if(Array.isArray(e)){var t=n.props,r=t.currentDisplay,o=t.currentSlide,a=t.currentLayers,i=t.onAddDisplayLayers,s=n.state.slideParams,l=s.gridDistance,c=0===a.length?0:a.reduce(function(e,t){return Math.max(e,t.index)},-1/0);e.forEach(function(e){e.index=++c,e.displaySlideId=o.id,e.params=JSON.stringify(Object.assign({},JSON.parse(e.params),{width:(s.width-5*s.gridDistance)/4,height:(s.height-5*s.gridDistance)/4,positionX:l,positionY:l}))}),i(r.id,o.id,e)}},n.copyLayers=function(){var e=n.props,t=e.currentSlide,r=e.currentSelectedLayers,o=e.onCopySlideLayers;if(!r.length)return void F.warning("请选择图层");var a=n.state.slideParams,i=a.gridDistance,s=r.map(function(e){var t=JSON.parse(e.params),n=t.positionX,r=t.positionY;return Object.assign({},e,{params:JSON.stringify(Object.assign({},t,{positionX:n+i,positionY:r+i})),id:null})});o(t.id,s)},n.pasteLayers=function(){var e=n.props,t=e.currentDisplay,r=e.currentSlide,o=e.clipboardLayers,a=e.onPasteSlideLayers;o.length&&a(t.id,r.id,o)},n.coverCut=function(){n.editor.createCoverCut()},n.coverCutCreated=function(e){var t=n.props,r=t.currentDisplay,o=(t.currentSlide,t.onUploadCurrentSlideCover),a=t.onEditCurrentDisplay;o(e,function(e){a(Object.assign({},r,{avatar:e}))})},n.coverUploaded=function(e){var t=n.props,r=t.onEditCurrentDisplay,o=t.currentDisplay;r(Object.assign({},o,{avatar:e}))},n.collapseChange=function(){var e=n.state.sliderValue;n.doScale(e/40+.5)},n.keyDown=function(e){var t=n.state.slideParams,r=t.gridDistance;switch(e){case T.Keys.Up:n.moveSelectedLayersPosition({positionXD:0,positionYD:-r});break;case T.Keys.Down:n.moveSelectedLayersPosition({positionXD:0,positionYD:r});break;case T.Keys.Left:n.moveSelectedLayersPosition({positionXD:-r,positionYD:0});break;case T.Keys.Right:n.moveSelectedLayersPosition({positionXD:r,positionYD:0});break;case T.Keys.Delete:n.deleteLayers();break;case T.Keys.Copy:n.copyLayers();break;case T.Keys.Paste:n.pasteLayers();break;case T.Keys.UnDo:n.undo();break;case T.Keys.Redo:n.redo()}},n.moveSelectedLayersPosition=function(e){var t=n.props.currentSelectedLayers;if(!(t.length<=0)){var r=e.positionXD,o=e.positionYD,a=n.props,i=a.currentDisplay,s=a.currentSlide,l=a.onEditDisplayLayers,c=n.state.slideParams,u=c.gridDistance,d=t.map(function(e){var t=JSON.parse(e.params),n=t.positionX,a=t.positionY;return Object.assign({},e,{params:JSON.stringify(Object.assign({},t,{positionX:n-n%u+r,positionY:a-a%u+o}))})});l(i.id,s.id,d)}},n.undo=function(){var e=n.props;(0,e.onUndo)(e.currentState)},n.redo=function(){var e=n.props;(0,e.onRedo)(e.nextState)},n.layersSelectionRemove=function(){(0,n.props.onClearLayersSelection)()},n.state={slideParams:{},currentLocalLayers:[],editorWidth:0,editorHeight:0,editorPadding:"",scale:1,sliderValue:20},n.refHandlers={settingForm:function(e){return n.settingForm=e},editor:function(e){return n.editor=e}},n}return s(t,e),c(t,[{key:"componentWillMount",value:function(){var e=this.props,t=e.params,n=e.onLoadWidgets,r=(e.onLoadBizlogics,e.onLoadDisplayDetail),o=+t.pid;r(+t.displayId),n(o)}},{key:"componentDidMount",value:function(){var e=this.state;e.slideParams,e.scale;this.props.onHideNavigator(),window.addEventListener("resize",this.containerResize,!1)}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this.containerResize,!1)}},{key:"componentWillReceiveProps",value:function(e){var t=this,n=e.currentSlide,r=e.currentLayers;if(n!==this.props.currentSlide){var o=JSON.parse(n.config),a=o.slideParams;this.setState({slideParams:a},function(){t.doScale(1)})}if(r!==this.props.currentLayers){var i=d.fromJS(r).toJS();this.setState({currentLocalLayers:i})}}},{key:"render",value:function(){var e=this,t=this.props,n=t.params,r=t.currentLayersInfo,o=t.currentSelectedLayers,a=t.widgets,i=t.currentDisplay,s=t.onSelectLayer,l=t.onLoadDisplayShareLink,c=t.canUndo,d=t.canRedo,p=this.state,h=p.slideParams,m=p.currentLocalLayers,g=p.editorWidth,b=p.editorHeight,v=p.editorPadding,y=p.scale,_=p.sliderValue;if(!i)return null;var A=Array.isArray(a)?m.map(function(t,n){var o=a.find(function(e){return e.id===t.widgetId}),i=t.id,l=JSON.parse(t.params),c=l.polling,d=l.frequency,p=r[i],f=p.datasource,m=p.loading,g=p.selected,b=p.interactId,v=p.rendered,_=p.renderType;return u.createElement(L.default,{key:t.id,pure:!1,scale:[y,y],slideParams:h,layer:t,selected:g,itemId:i,widget:o,data:f,loading:m,polling:c,frequency:d,interactId:b,rendered:v,renderType:_,onSelectLayer:s,onGetChartData:e.getChartData,onDragLayer:e.dragLayer,onResizeLayer:e.resizeLayer,onResizeLayerStop:e.resizeLayerStop})}):null,x=this.getSettingInfo(),w=null;return w=o.length>1?u.createElement(I.default,{layers:o,onEditDisplayLayers:this.onEditLayers,onCollapseChange:this.collapseChange}):u.createElement(D.default,{key:x.key,id:x.id,settingInfo:x.setting,settingParams:x.param,onDisplaySizeChange:this.displaySizeChange,onGridDistanceChange:this.gridDistanceChange,onFormItemChange:this.formItemChange,wrappedComponentRef:this.refHandlers.settingForm,onCollapseChange:this.collapseChange},0===o.length?u.createElement(P.default,{key:"displaySetting",display:i,onCoverCut:this.coverCut,onCoverUploaded:this.coverUploaded}):null),u.createElement("div",{className:U.preview+" "+U.edit},u.createElement(f.default,{title:i.name}),u.createElement(S.default,{display:i,widgets:a,params:n,onAddLayers:this.addLayers,onDeleteLayers:this.deleteLayers,onCopyLayers:this.copyLayers,onPasteLayers:this.pasteLayers,onLoadDisplayShareLink:l,onUndo:this.undo,onRedo:this.redo,canUndo:c,canRedo:d}),u.createElement(k.default,null,u.createElement(T.default,{key:"editor",width:g,height:b,padding:v,slideParams:h,scale:y,onCoverCutCreated:this.coverCutCreated,onKeyDown:this.keyDown,onLayersSelectionRemove:this.layersSelectionRemove,ref:this.refHandlers.editor},A),u.createElement(M.default,{scale:y,sliderValue:_,onZoomIn:this.zoomIn,onZoomOut:this.zoomOut,onSliderChange:this.sliderChange}),u.createElement(O.default,null,u.createElement(C.default,{layers:m,layersStatus:r,selectedLayers:o,onSelectLayer:s,onEditDisplayLayers:this.onEditLayers,onCollapseChange:this.collapseChange}),w)))}}]),t}(u.Component);t.Editor=G;var Q=h.createStructuredSelector({widgets:V.makeSelectWidgets(),bizlogics:Y.makeSelectBizlogics(),displays:j.makeSelectDisplays(),currentDisplay:j.makeSelectCurrentDisplay(),currentSlide:j.makeSelectCurrentSlide(),currentLayers:j.makeSelectCurrentLayers(),currentLayersInfo:j.makeSelectCurrentLayersInfo(),clipboardLayers:j.makeSelectClipboardLayers(),currentSelectedLayers:j.makeSelectCurrentSelectedLayers(),canUndo:j.makeSelectCanUndo(),canRedo:j.makeSelectCanRedo(),currentState:j.makeSelectCurrentState(),nextState:j.makeSelectNextState()}),q=p.connect(Q,l),K=x.default({key:"display",reducer:g.default}),X=w.default({key:"display",saga:b.default}),J=x.default({key:"widget",reducer:v.default}),Z=w.default({key:"widget",saga:y.default}),$=x.default({key:"bizlogic",reducer:_.default}),ee=w.default({key:"bizlogic",saga:A.default});t.default=m.compose(K,J,$,X,Z,ee,q)(G)},"./app/containers/Display/Preview.tsx":function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0)){var n=t.key,r=t.ctrlKey,o=t.metaKey,a=t.shiftKey,i=e.props.onKeyDown;switch(n){case"ArrowUp":i(l.Up);break;case"ArrowDown":i(l.Down);break;case"ArrowLeft":i(l.Left);break;case"ArrowRight":i(l.Right);break;case"Delete":case"Backspace":i(l.Delete);break;case"c":case"C":(r||o)&&i(l.Copy);break;case"v":case"V":(r||o)&&i(l.Paste);break;case"y":case"Y":r&&!o&&i(l.Redo);break;case"z":case"Z":o?i(a?l.Redo:l.UnDo):r&&i(l.UnDo)}}},e}return i(t,e),s(t,[{key:"componentDidMount",value:function(){document.addEventListener("keydown",this.keyDown,!1)}},{key:"componentWillUnmount",value:function(){document.removeEventListener("keydown",this.keyDown,!1)}},{key:"render",value:function(){var e=this.props,t=e.slideParams,n=e.width,r=e.height,o=e.padding,a=e.scale,i=e.children,s=e.onLayersSelectionRemove,l=this.getSlideStyle(t,a);return c.createElement("div",{className:d.editor},c.createElement("div",{ref:this.refHandlers.container,className:d.editorContainer},c.createElement("div",{className:d.displayContainer,style:{width:n+"px",height:r+"px",padding:o},tabIndex:0},c.createElement("div",{className:d.displayPanelWrapper},c.createElement("div",{ref:this.refHandlers.content,className:d.displayPanel,style:l,onClick:s},i)))))}}]),t}(c.PureComponent);t.DisplayContainer=p,t.default=p},"./app/containers/Display/components/DisplayForm.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{onCheckName:function(t,n,r,o){return e(v.checkNameUniqueAction(t,n,r,o))}}}var s=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2],o=n.props,a=o.projectId,i=o.onCheckName;o.type;i("display",{projectId:a,id:o.form.getFieldsValue().id,name:t},function(){r()},function(e){r(e)})},n}return a(t,e),l(t,[{key:"render",value:function(){var e=this.props.form.getFieldDecorator,t={labelCol:{span:6},wrapperCol:{span:16}};return c.createElement(d,null,c.createElement(p,{gutter:8},c.createElement(f,{span:24},c.createElement(g,{className:y.hide},e("projectId",{hidden:"add"===this.props.type})(_)),c.createElement(g,{className:y.hide},e("id",{hidden:"add"===this.props.type})(A)),c.createElement(g,s({label:"名称"},t),e("name",{rules:[{required:!0,message:"Name 不能为空"},{validator:this.checkNameUnique}]})(x))),c.createElement(f,{span:24},c.createElement(g,s({label:"描述"},t),e("description",{initialValue:""})(c.createElement(h,{placeholder:"Description",type:"textarea",autosize:{minRows:2,maxRows:6}})))),c.createElement(f,{span:24},c.createElement(g,s({label:"是否发布"},t),e("publish",{initialValue:!0})(w)),c.createElement(g,{className:y.hide},e("avatar",{hidden:"add"===this.props.type})(j)))))}}]),t}(c.PureComponent);t.DisplayForm=E,t.default=d.create()(u.connect(null,i)(E))},"./app/containers/Display/components/DisplayHeader.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=function(){function e(e,t){for(var n=0;n1?t-1:0),o=1;ot.positionX+t.width?e:t},t[0]),l=r.reduce(function(e,t){return e.positionY+e.height>t.positionY+t.height?e:t},t[0]);switch(e){case s.Top:n.spreadPositions(function(e){return{positionX:e.positionX,positionY:a}});break;case s.Left:n.spreadPositions(function(e){return{positionX:o,positionY:e.positionY}});break;case s.Bottom:var c=l.positionY,u=l.height;n.spreadPositions(function(e){return{positionX:e.positionX,positionY:c+u-e.height}});break;case s.Right:var d=i.positionX,p=i.width;n.spreadPositions(function(e){return{positionX:d+p-e.width,positionY:e.positionY}});break;case s.HorizontalCenter:var f=(o+i.positionX+i.width)/2;n.spreadPositions(function(e){return{positionX:f-e.width/2,positionY:e.positionY}});break;case s.VerticalCenter:var h=(a+l.positionY+l.height)/2;n.spreadPositions(function(e){return{positionX:e.positionX,positionY:h-e.height/2}})}}},n.spreadPositions=function(e){var t=n.props,r=t.layers;(0,t.onEditDisplayLayers)(r.map(function(t){var n=JSON.parse(t.params);return Object.assign({},t,{params:JSON.stringify(Object.assign({},n,e(n)))})}))},n.toggleCollapse=function(){var e=n.props.onCollapseChange,t=n.state.collapse;n.setState({collapse:!t},function(){e()})},n.state={collapse:!1},n}return a(t,e),i(t,[{key:"render",value:function(){return this.state.collapse?l.createElement("div",{className:d.collapse},l.createElement("h2",{className:d.formTitle},l.createElement(u,{title:"显示/隐藏设置"},l.createElement(c,{onClick:this.toggleCollapse,type:"left-square-o"}))),l.createElement("div",{className:d.title},p)):l.createElement("div",{className:d.right},l.createElement("h2",{className:d.formTitle},f,l.createElement(u,{title:"显示/隐藏设置"},l.createElement(c,{onClick:this.toggleCollapse,type:"right-square-o"}))),l.createElement("div",{className:d.alignList},l.createElement("div",{className:d.category},l.createElement(u,{placement:"bottom",title:"上对齐"},l.createElement("i",{onClick:this.setAlign(s.Top),className:"iconfont icon-align-top"}))),l.createElement("div",{className:d.category},l.createElement(u,{placement:"bottom",title:"左对齐"},l.createElement("i",{onClick:this.setAlign(s.Left),className:"iconfont icon-align-left"})),l.createElement(u,{placement:"bottom",title:"水平居中"},l.createElement("i",{onClick:this.setAlign(s.HorizontalCenter),className:"iconfont icon-horizontal-center"})),l.createElement(u,{placement:"bottom",title:"垂直居中"},l.createElement("i",{onClick:this.setAlign(s.VerticalCenter),className:"iconfont icon-vertical-center"})),l.createElement(u,{placement:"bottom",title:"右对齐"},l.createElement("i",{onClick:this.setAlign(s.Right),className:"iconfont icon-align-right"}))),l.createElement("div",{className:d.category},l.createElement(u,{placement:"bottom",title:"下对齐"},l.createElement("i",{onClick:this.setAlign(s.Bottom),className:"iconfont icon-align-bottom"})))))}}]),t}(l.Component);t.LayerAlign=h,t.default=h},"./app/containers/Display/components/LayerItem.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=Object.assign||function(e){for(var t=1;t-1?"bold":"normal",p.fontStyle=v.indexOf("italic")>-1?"italic":"normal",p.textDecoration=v.indexOf("underline")>-1?"underline":"none"),c.createElement("div",{className:d,style:p,onClick:n.onClickLayer},c.createElement("p",{style:k},o.contentText))};var i=n.props.layer,l=JSON.parse(i.params),d=l.width,h=l.height;return n.state={layerParams:l,mousePos:[-1,-1],width:d,height:h,pivotProps:null},n}return i(t,e),l(t,[{key:"componentWillMount",value:function(){var e=this.props.widget;e&&this.setState({pivotProps:JSON.parse(e.config)})}},{key:"componentDidMount",value:function(){var e=this.props,t=e.itemId,n=e.layer,r=e.widget,o=e.onGetChartData;n.type===p.GraphTypes.Chart&&(o("clear",t,r.id),this.setFrequent(this.props))}},{key:"componentWillReceiveProps",value:function(e){if(this.props.layer.params!==e.layer.params){var t=JSON.parse(e.layer.params),n=t.width,r=t.height;this.setState({layerParams:t,width:n,height:r})}this.props.widget!==e.widget&&this.setState({pivotProps:JSON.parse(e.widget.config)})}},{key:"componentWillUpdate",value:function(e){var t=(e.itemId,e.widget,e.polling);e.onGetChartData,e.rendered;e.layer.type===p.GraphTypes.Chart&&t!==this.props.polling&&this.setFrequent(e)}},{key:"componentWillUnmount",value:function(){clearInterval(this.frequent)}},{key:"render",value:function(){var e=this.props,t=e.pure,n=e.scale,r=e.slideParams,o=e.layer,a=(e.selected,this.state),i=a.layerParams,s=a.width,l=a.height,u={x:i.positionX,y:i.positionY},p=this.renderLayer(o);if(t)return p;var f=r.gridDistance,g=[r.width-u.x,r.height-u.y];return c.createElement(d.default,{grid:[f,f],bounds:"parent",scale:Math.min(n[0],n[1]),onStart:this.dragOnStart,onStop:this.dragOnStop,onDrag:this.drag,handle:"."+m.layer,position:u},c.createElement(h,{width:s,height:l,onResize:this.onResize,onResizeStop:this.onResizeStop,draggableOpts:{grid:[f,f]},minConstraints:[50,50],maxConstraints:g,handleSize:[20,20]},p))}}]),t}(c.PureComponent);t.LayerItem=g,t.default=g},"./app/containers/Display/components/LayerList.tsx":function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t=0)){var a=t[o].index;t[o].index=t[o-1].index,t[o-1].index=a;var i=t[o];t[o]=t[o-1],t[o-1]=i;[t[o],t[o-1]].forEach(function(e){var t=r.findIndex(function(t){return t.id===e.id});t<0?r.push(Object.assign({},e)):r.splice(t,1,Object.assign({},e))})}}),r.length<=0||n.props.onEditDisplayLayers(r)},n.bringToUpper=function(){var e=n.props,t=e.selectedLayers,r=e.layers,o=n.sortLayers(t,c.OrderDirection.Desc),a=n.sortLayers(r,c.OrderDirection.Desc);n.swapLayerIndex(o,a)},n.sendToNext=function(){var e=n.props,t=e.selectedLayers,r=e.layers,o=n.sortLayers(t,c.OrderDirection.Asc),a=n.sortLayers(r,c.OrderDirection.Asc);n.swapLayerIndex(o,a)},n.bringToFront=function(){var e=n.props,t=e.selectedLayers,r=e.layers,o=e.onEditDisplayLayers;if(!(t.length<=0)){var a=r.reduce(function(e,t){return Math.max(t.index,e)},-1/0);o(n.sortLayers(t,c.OrderDirection.Asc).map(function(e,t){return Object.assign({},e,{index:a+t+1})}))}},n.sendToBottom=function(){var e=n.props,t=e.selectedLayers,r=e.layers,o=e.onEditDisplayLayers;if(!(t.length<=0)){var a=r.reduce(function(e,t){return Math.min(t.index,e)},1/0);o(n.sortLayers(t,c.OrderDirection.Desc).map(function(e,t){return Object.assign({},e,{index:a-t-1})}))}},n.commands=[{title:"上移一层",icon:"icon-bring-upper",handler:n.bringToUpper},{title:"下移一层",icon:"icon-send-next",handler:n.sendToNext},{title:"置顶",icon:"icon-bring-front",handler:n.bringToFront},{title:"置底",icon:"icon-send-bottom",handler:n.sendToBottom}],n.changeLayerStatus=function(e){return function(t){var r=t.ctrlKey,o=t.metaKey,a=n.props,i=a.layersStatus,s=a.onSelectLayer,l=!r&&!o;s({id:e,selected:!i[e].selected,exclusive:l}),t.stopPropagation()}},n.getLayersByIndexDesc=function(e){return Array.isArray(e)?[].concat(r(e)).sort(function(e,t){return t.index-e.index}):[]},n.toggleCollapse=function(){var e=n.props.onCollapseChange,t=n.state.collapse;n.setState({collapse:!t},function(){e()})},n.state={collapse:!1},n}return i(t,e),s(t,[{key:"render",value:function(){var e=this,t=this.props,n=t.layers,r=t.layersStatus;if(this.state.collapse)return l.createElement("div",{className:f.collapse},l.createElement("h2",{className:f.formTitle},l.createElement(d,{title:"显示/隐藏图层"},l.createElement(u,{onClick:this.toggleCollapse,type:"left-square-o"}))),l.createElement("div",{className:f.title},h));var o=this.commands.map(function(e,t){return l.createElement("li",{key:t,onClick:e.handler},l.createElement(d,{placement:"bottom",title:e.title},l.createElement("i",{className:"iconfont "+e.icon})))}),a=this.getLayersByIndexDesc(n).map(function(t){return l.createElement("li",{key:t.id},l.createElement("i",{onClick:e.changeLayerStatus(t.id),className:"iconfont "+(r[t.id].selected?"icon-selected":"icon-unselected")}),l.createElement("span",{title:t.name},t.name))});return l.createElement("div",{className:f.left},l.createElement("h2",{className:f.formTitle},m,l.createElement(d,{title:"显示/隐藏图层"},l.createElement(u,{onClick:this.toggleCollapse,type:"right-square-o"}))),l.createElement("div",{className:f.commands},l.createElement("ul",{className:f.commandGroup},o)),l.createElement("div",{className:f.layerList},l.createElement("ul",null,a)))}}]),t}(l.Component);t.LayerList=g,t.default=g},"./app/containers/Display/components/LayerSelector.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:p,t=arguments[1],n=t.type,a=t.payload,l=e.get("displays"),f=(e.get("currentDisplayCascadeSources"),e.get("currentLayers")),h=e.get("currentLayersInfo");switch(n){case c.ActionTypes.LOAD_DISPLAYS_SUCCESS:return e.set("displays",a.displays);case c.ActionTypes.LOAD_DISPLAYS_FAILURE:return e;case c.ActionTypes.ADD_DISPLAY:return e.set("displayLoading",!0);case c.ActionTypes.ADD_DISPLAY_SUCCESS:return l.unshift(a.result),e.set("displays",l.slice()).set("displayLoading",!1);case c.ActionTypes.ADD_DISPLAY_FAILURE:return e.set("displayLoading",!1);case c.ActionTypes.EDIT_DISPLAY:return e.set("displayLoading",!0);case c.ActionTypes.EDIT_DISPLAY_SUCCESS:return l.splice(l.findIndex(function(e){return e.id===a.result.id}),1,a.result),e.set("displays",l.slice());case c.ActionTypes.EDIT_DISPLAY_FAILURE:return e.set("displayLoading",!1);case c.ActionTypes.EDIT_CURRENT_DISPLAY:return e.set("currentDisplayLoading",!0);case c.ActionTypes.EDIT_CURRENT_DISPLAY_SUCCESS:return e.set("currentDisplay",a.result).set("currentDisplayLoading",!1);case c.ActionTypes.EDIT_CURRENT_DISPLAY_FAILURE:return e.set("currentDisplayLoading",!1);case c.ActionTypes.EDIT_CURRENT_SLIDE:return e.set("currentSlideLoading",!0);case c.ActionTypes.EDIT_CURRENT_SLIDE_SUCCESS:return e.set("lastOperationType",c.ActionTypes.EDIT_CURRENT_SLIDE_SUCCESS).set("currentSlide",a.result).set("currentSlideLoading",!1);case c.ActionTypes.EDIT_CURRENT_SLIDE_FAILURE:return e.set("currentSlideLoading",!1);case c.ActionTypes.LOAD_DISPLAY_DETAIL:return e.set("currentDisplayLoading",!0).set("currentDisplayShareInfo","").set("currentDisplaySecretInfo","");case c.ActionTypes.LOAD_DISPLAY_DETAIL_SUCCESS:return e.set("currentDisplayLoading",!1).set("currentDisplay",a.display).set("currentDisplayCascadeSources",{}).set("currentSlide",a.slide).set("currentLayers",a.layers||[]).set("currentLayersInfo",a.layers.reduce(function(e,t){return e[t.id]=t.type===u.GraphTypes.Chart?{datasource:[],loading:!1,selected:!1,queryParams:{linkageFilters:[],globalFilters:[],params:[],linkageParams:[],globalParams:[],pagination:{}},interactId:"",rendered:!1,renderType:"rerender"}:{loading:!1,selected:!1,datasource:[]},e},{}));case c.ActionTypes.LOAD_DISPLAY_DETAIL_FAILURE:return e.set("currentDisplayLoading",!1).set("currentDisplay",null);case c.ActionTypes.DELETE_DISPLAY_SUCCESS:return e.set("displays",l.filter(function(e){return e.id!==a.id}));case c.ActionTypes.DELETE_DISPLAY_FAILURE:return e;case c.ActionTypes.ADD_DISPLAY_LAYERS_SUCCESS:return e.set("lastOperationType",c.ActionTypes.ADD_DISPLAY_LAYERS_SUCCESS).set("lastLayers",[].concat(o(a.result))).set("currentLayers",[].concat(o(f),o(a.result))).set("currentLayersInfo",Object.assign({},h,a.result.reduce(function(e,t){return e[t.id]=t.type===u.GraphTypes.Chart?{datasource:[],loading:!1,selected:!1,queryParams:{linkageFilters:[],globalFilters:[],params:[],linkageParams:[],globalParams:[],pagination:{}},interactId:"",rendered:!1,renderType:"rerender"}:{datasource:[],loading:!1,selected:!1},e},{})));case c.ActionTypes.DELETE_DISPLAY_LAYERS_SUCCESS:return a.ids.forEach(function(e){delete h[e]}),e.set("lastOperationType",c.ActionTypes.DELETE_DISPLAY_LAYERS_SUCCESS).set("lastLayers",f.filter(function(e){return a.ids.indexOf(e.id.toString())>=0})).set("currentLayers",f.filter(function(e){return a.ids.indexOf(e.id.toString())<0})).set("currentLayersInfo",h);case c.ActionTypes.EDIT_DISPLAY_LAYERS_SUCCESS:var m=s.fromJS(f).toJS(),g=[];return a.result.forEach(function(e){g.push(m.find(function(t){return t.id===e.id})),m.splice(m.findIndex(function(t){return t.id===e.id}),1,e)}),e.set("lastOperationType",c.ActionTypes.EDIT_DISPLAY_LAYERS_SUCCESS).set("lastLayers",g).set("currentLayers",m);case d.LOAD_DATA_FROM_ITEM:return"display"!==a.vizType?e:e.set("currentLayersInfo",Object.assign({},h,r({},a.itemId,Object.assign({},h[a.itemId],{loading:!0,queryParams:{linkageFilters:a.params.linkageFilters,globalFilters:a.params.globalFilters,params:a.params.params,linkageParams:a.params.linkageParams,globalParams:a.params.globalParams}}))));case d.LOAD_DATA_FROM_ITEM_SUCCESS:return"display"!==a.vizType?e:e.set("currentLayersInfo",Object.assign({},h,r({},a.itemId,Object.assign({},h[a.itemId],{loading:!1,datasource:a.data,renderType:a.renderType}))));case d.LOAD_DATA_FROM_ITEM_FAILURE:return"display"!==a.vizType?e:e.set("currentLayersInfo",Object.assign({},h,r({},a.layerId,Object.assign({},h[a.layerId],{loading:!1}))));case c.ActionTypes.DRAG_SELECT_LAYER:return e.set("currentLayers",f.map(function(e){if(!h[e.id].selected||e.id===a.id)return e;var t=JSON.parse(e.params),n=t.positionX,r=t.positionY;return Object.assign({},e,{params:JSON.stringify(Object.assign({},t,{positionX:n+a.deltaX,positionY:r+a.deltaY}))})}));case c.ActionTypes.RESIZE_LAYERS:return e.set("currentLayersInfo",Object.entries(h).reduce(function(e,t){var n=i(t,2),r=n[0],s=n[1];return a.layerIds.indexOf(+r)>=0?e[r]=Object.assign({},s,{renderType:"resize",datasource:[].concat(o(s.datasource))}):e[r]=s,e},{}));case c.ActionTypes.SELECT_LAYER:return a.selected&&a.exclusive&&Object.keys(h).forEach(function(e){h[e].selected=!1}),e.set("currentLayersInfo",Object.assign({},h,r({},a.id,Object.assign({},h[a.id],{selected:a.selected}))));case c.ActionTypes.CLEAR_LAYERS_SELECTION:return Object.keys(h).forEach(function(e){h[e].selected=!1,h[e].renderType="refresh"}),e.set("currentLayersInfo",h);case c.ActionTypes.COPY_SLIDE_LAYERS:return e.set("clipboardLayers",a.layers);case c.ActionTypes.PASTE_SLIDE_LAYERS_SUCCESS:return e.set("lastOperationType",c.ActionTypes.PASTE_SLIDE_LAYERS_SUCCESS).set("lastLayers",[].concat(o(a.result))).set("currentLayers",[].concat(o(f),o(a.result))).set("currentLayersInfo",Object.assign({},h,a.result.reduce(function(e,t){return e[t.id]=t.type===u.GraphTypes.Chart?{datasource:[],loading:!1,selected:!1,queryParams:{linkageFilters:[],globalFilters:[],params:[],linkageParams:[],globalParams:[],pagination:{}},interactId:"",rendered:!1,renderType:"rerender"}:{datasource:[],loading:!1,selected:!1},e},{})));case c.ActionTypes.LOAD_DISPLAY_SHARE_LINK:return e.set("currentDisplayShareInfoLoading",!0);case c.ActionTypes.LOAD_DISPLAY_SHARE_LINK_SUCCESS:return e.set("currentDisplayShareInfo",a.shareInfo).set("currentDisplayShareInfoLoading",!1);case c.ActionTypes.LOAD_DISPLAY_SECRET_LINK_SUCCESS:return e.set("currentDisplaySecretInfo",a.secretInfo).set("currentDisplayShareInfoLoading",!1);case c.ActionTypes.LOAD_DISPLAY_SHARE_LINK_FAILURE:return e.set("currentDisplayShareInfoLoading",!1);default:return e}}var i=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();Object.defineProperty(t,"__esModule",{value:!0});var s=n("./node_modules/immutable/dist/immutable.js"),l=n("./node_modules/redux-undo/lib/index.js"),c=n("./app/containers/Display/constants.ts"),u=n("./app/utils/util.ts"),d=n("./app/containers/Bizlogic/constants.ts"),p=s.fromJS({displays:[],currentDisplay:null,currentDisplayLoading:!1,currentDisplayShareInfo:"",currentDisplaySecretInfo:"",currentSlide:null,currentSlideLoading:!1,currentDisplayCascadeSources:{},currentLayers:[],currentLayersInfo:{},displayLoading:!1,clipboardLayers:[],lastOperationType:"",lastLayers:[]});t.default=l.default(a,{filter:l.includeAction([c.ActionTypes.EDIT_CURRENT_SLIDE_SUCCESS,c.ActionTypes.ADD_DISPLAY_LAYERS_SUCCESS,c.ActionTypes.EDIT_DISPLAY_LAYERS_SUCCESS,c.ActionTypes.DELETE_DISPLAY_LAYERS_SUCCESS,c.ActionTypes.PASTE_SLIDE_LAYERS_SUCCESS]),undoType:c.ActionTypes.UNDO_OPERATION_SUCCESS,redoType:c.ActionTypes.REDO_OPERATION_SUCCESS})},"./app/containers/Display/sagas.ts":function(e,t,n){"use strict";function r(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload.projectId,o.prev=1,o.next=4,R.call(N.default,B.default.display+"?projectId="+t);case 4:return n=o.sent,r=F.readListAdapter(n),o.next=8,R.put(V.displaysLoaded(r));case 8:o.next=14;break;case 10:return o.prev=10,o.t0=o.catch(1),o.next=14,R.put(V.loadDisplaysFail(o.t0));case 14:case"end":return o.stop()}},y,this,[[1,10]])}function o(e){var t,n,r,o,a,i,s;return regeneratorRuntime.wrap(function(l){for(;;)switch(l.prev=l.next){case 0:return t=e.payload,n=t.display,r=t.resolve,l.prev=1,l.next=4,R.call(N.default,B.default.display,{method:"post",data:n});case 4:return o=l.sent,a=F.readObjectAdapter(o),i=a.id,s={displayId:i,index:0,config:JSON.stringify({slideParams:U.getDefaultSlideParams()})},l.next=10,R.call(N.default,B.default.display+"/"+i+"/slides",{method:"post",data:s});case 10:return l.next=12,R.put(V.displayAdded(a));case 12:r(),l.next=20;break;case 15:return l.prev=15,l.t0=l.catch(1),l.next=19,R.put(V.addDisplayFail());case 19:z.errorHandler(l.t0);case 20:case"end":return l.stop()}},_,this,[[1,15]])}function a(e){var t,n,r,o,a,i;return regeneratorRuntime.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload.id,s.prev=1,s.next=4,R.call(N.default,B.default.display+"/"+t+"/slides");case 4:return n=s.sent,r=F.readObjectAdapter(n),o=r.slides[0],delete r.slides,s.next=10,R.call(N.default,B.default.display+"/"+t+"/slides/"+o.id+"/widgets");case 10:return a=s.sent,i=F.readListAdapter(a),s.next=14,R.put(V.displayDetailLoaded(r,o,i));case 14:return s.abrupt("return",r);case 17:return s.prev=17,s.t0=s.catch(1),s.next=21,R.put(V.loadDisplaysFail(s.t0));case 21:case"end":return s.stop()}},A,this,[[1,17]])}function i(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,n=t.display,r=t.resolve,o.prev=1,o.next=4,R.call(N.default,B.default.display+"/"+n.id,{method:"put",data:n});case 4:return o.next=6,R.put(V.displayEdited(n));case 6:r&&r(),o.next=14;break;case 9:return o.prev=9,o.t0=o.catch(1),o.next=13,R.put(V.editDisplayFail(o.t0));case 13:z.errorHandler(o.t0);case 14:case"end":return o.stop()}},x,this,[[1,9]])}function s(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,n=t.display,r=t.resolve,o.prev=1,o.next=4,R.call(N.default,B.default.display+"/"+n.id,{method:"put",data:n});case 4:return o.next=6,R.put(V.currentDisplayEdited(n));case 6:r&&r(),o.next=14;break;case 9:return o.prev=9,o.t0=o.catch(1),o.next=13,R.put(V.editCurrentDisplayFail(o.t0));case 13:z.errorHandler(o.t0);case 14:case"end":return o.stop()}},w,this,[[1,9]])}function l(e){var t,n,r,o;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return t=e.payload,n=t.displayId,r=t.slide,o=t.resolve,a.prev=1,a.next=4,R.call(N.default,B.default.display+"/"+n+"/slides",{method:"put",data:[Object.assign({},r,{displayId:n})]});case 4:return a.next=6,R.put(V.currentSlideEdited(r));case 6:a.next=13;break;case 8:return a.prev=8,a.t0=a.catch(1),a.next=12,R.put(V.editCurrentSlideFail(a.t0));case 12:z.errorHandler(a.t0);case 13:case"end":return a.stop()}},j,this,[[1,8]])}function c(e){var t,n,r,o,a,i;return regeneratorRuntime.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload,n=t.cover,r=t.resolve,s.prev=1,o=new FormData,o.append("coverImage",new File([n],"coverImage.png")),s.next=6,R.call(N.default,B.default.display+"/upload/coverImage",{method:"post",data:o});case 6:return a=s.sent,i=F.readObjectAdapter(a),s.next=10,R.put(V.currentSlideCoverUploaded(i));case 10:r(i),s.next=18;break;case 13:return s.prev=13,s.t0=s.catch(1),s.next=17,R.put(V.uploadCurrentSlideCoverFail(s.t0));case 17:z.errorHandler(s.t0);case 18:case"end":return s.stop()}},E,this,[[1,13]])}function u(e){var t;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return t=e.payload.id,n.prev=1,n.next=4,R.call(N.default,B.default.display+"/"+t,{method:"delete"});case 4:return n.next=6,R.put(V.displayDeleted(t));case 6:n.next=13;break;case 8:return n.prev=8,n.t0=n.catch(1),n.next=12,R.put(V.deleteDisplayFail());case 12:z.errorHandler(n.t0);case 13:case"end":return n.stop()}},S,this,[[1,8]])}function d(e){var t,n,r,o,a,i;return regeneratorRuntime.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload,n=t.displayId,r=t.slideId,o=t.layers,s.prev=1,s.next=4,R.call(N.default,B.default.display+"/"+n+"/slides/"+r+"/widgets",{method:"post",data:o});case 4:return a=s.sent,i=F.readListAdapter(a),s.next=8,R.put(V.displayLayersAdded(i));case 8:return s.abrupt("return",i);case 11:return s.prev=11,s.t0=s.catch(1),s.next=15,R.put(V.addDisplayLayersFail());case 15:z.errorHandler(s.t0);case 16:case"end":return s.stop()}},k,this,[[1,11]])}function p(e){var t,n,r,o;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return t=e.payload,n=t.displayId,r=t.slideId,o=t.layers,a.prev=1,a.next=4,R.call(N.default,B.default.display+"/"+n+"/slides/"+r+"/widgets",{method:"put",data:o});case 4:return a.next=6,R.put(V.displayLayersEdited(o));case 6:a.next=13;break;case 8:return a.prev=8,a.t0=a.catch(1),a.next=12,R.put(V.editDisplayLayersFail());case 12:z.errorHandler(a.t0);case 13:case"end":return a.stop()}},C,this,[[1,8]])}function f(e){var t,n,r,o;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return t=e.payload,n=t.displayId,r=t.slideId,o=t.ids,a.prev=1,a.next=4,R.call(N.default,B.default.display+"/"+n+"/slides/"+r+"/widgets",{method:"delete",data:o});case 4:return a.next=6,R.put(V.displayLayersDeleted(o));case 6:a.next=13;break;case 8:return a.prev=8,a.t0=a.catch(1),a.next=12,R.put(V.deleteDisplayLayersFail());case 12:z.errorHandler(a.t0);case 13:case"end":return a.stop()}},T,this,[[1,8]])}function h(e){var t,n,r,o,a,i;return regeneratorRuntime.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload,n=t.displayId,r=t.slideId,o=t.layers,s.prev=1,s.next=4,R.call(N.default,B.default.display+"/"+n+"/slides/"+r+"/widgets",{method:"post",data:o});case 4:return a=s.sent,i=F.readListAdapter(a),s.next=8,R.put(V.slideLayersPasted(i));case 8:return s.abrupt("return",i);case 11:return s.prev=11,s.t0=s.catch(1),s.next=15,R.put(V.pasteSlideLayersFail());case 15:z.errorHandler(s.t0);case 16:case"end":return s.stop()}},M,this,[[1,11]])}function m(e){var t,n,r,o,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,n=t.id,r=t.authName,i.prev=1,i.next=4,R.call(N.default,{method:"get",url:B.default.display+"/"+n+"/share",params:{username:r}});case 4:if(o=i.sent,a=F.readListAdapter(o),!r){i.next=11;break}return i.next=9,R.put(V.displaySecretLinkLoaded(a));case 9:i.next=13;break;case 11:return i.next=13,R.put(V.displayShareLinkLoaded(a));case 13:i.next=20;break;case 15:return i.prev=15,i.t0=i.catch(1),i.next=19,R.put(V.loadDisplayShareLinkFail());case 19:z.errorHandler(i.t0);case 20:case"end":return i.stop()}},O,this,[[1,15]])}function g(e){var t,n,r,o,a,i,s;return regeneratorRuntime.wrap(function(l){for(;;)switch(l.prev=l.next){case 0:t=e.payload.currentState,n=t.displayId,r=t.slide,o=t.lastOperationType,a=t.lastLayers,i=r.id,l.prev=3,l.t0=o,l.next=l.t0===H.ActionTypes.EDIT_CURRENT_SLIDE_SUCCESS?7:l.t0===H.ActionTypes.ADD_DISPLAY_LAYERS_SUCCESS?10:l.t0===H.ActionTypes.PASTE_SLIDE_LAYERS_SUCCESS?10:l.t0===H.ActionTypes.DELETE_DISPLAY_LAYERS_SUCCESS?14:l.t0===H.ActionTypes.EDIT_DISPLAY_LAYERS_SUCCESS?17:20;break;case 7:return l.next=9,R.call(N.default,B.default.display+"/"+n+"/slides",{method:"put",data:[Object.assign({},r,{displayId:n})]});case 9:return l.abrupt("break",20);case 10:return s=a.map(function(e){return e.id}),l.next=13,R.call(N.default,B.default.display+"/"+n+"/slides/"+i+"/widgets",{method:"delete",data:s});case 13:return l.abrupt("break",20);case 14:return l.next=16,R.call(N.default,B.default.display+"/"+n+"/slides/"+i+"/widgets",{method:"post",data:a});case 16:return l.abrupt("break",20);case 17:return l.next=19,R.call(N.default,B.default.display+"/"+n+"/slides/"+i+"/widgets",{method:"put",data:a});case 19:return l.abrupt("break",20);case 20:return l.next=22,R.put(V.undoOperationDone());case 22:l.next=29;break;case 24:return l.prev=24,l.t1=l.catch(3),l.next=28,R.put(V.undoOperationFail());case 28:z.errorHandler(l.t1);case 29:case"end":return l.stop()}},L,this,[[3,24]])}function b(e){var t,n,r,o,a,i,s;return regeneratorRuntime.wrap(function(l){for(;;)switch(l.prev=l.next){case 0:t=e.payload.nextState,n=t.displayId,r=t.slide,o=t.lastOperationType,a=t.lastLayers,i=r.id,l.prev=3,l.t0=o,l.next=l.t0===H.ActionTypes.EDIT_CURRENT_SLIDE_SUCCESS?7:l.t0===H.ActionTypes.ADD_DISPLAY_LAYERS_SUCCESS?10:l.t0===H.ActionTypes.PASTE_SLIDE_LAYERS_SUCCESS?10:l.t0===H.ActionTypes.DELETE_DISPLAY_LAYERS_SUCCESS?13:l.t0===H.ActionTypes.EDIT_DISPLAY_LAYERS_SUCCESS?17:20;break;case 7:return l.next=9,R.call(N.default,B.default.display+"/"+n+"/slides",{method:"put",data:[Object.assign({},r,{displayId:n})]});case 9:return l.abrupt("break",20);case 10:return l.next=12,R.call(N.default,B.default.display+"/"+n+"/slides/"+i+"/widgets",{method:"post",data:a});case 12:return l.abrupt("break",20);case 13:return s=a.map(function(e){return e.id}),l.next=16,R.call(N.default,B.default.display+"/"+n+"/slides/"+i+"/widgets",{method:"delete",data:s});case 16:return l.abrupt("break",20);case 17:return l.next=19,R.call(N.default,B.default.display+"/"+n+"/slides/"+i+"/widgets",{method:"put",data:a});case 19:return l.abrupt("break",20);case 20:return l.next=22,R.put(V.redoOperationDone());case 22:l.next=29;break;case 24:return l.prev=24,l.t1=l.catch(3),l.next=28,R.put(V.redoOperationFail());case 28:z.errorHandler(l.t1);case 29:case"end":return l.stop()}},D,this,[[3,24]])}function v(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[I.takeLatest(H.ActionTypes.LOAD_DISPLAYS,r),I.takeEvery(H.ActionTypes.ADD_DISPLAY,o),I.takeLatest(H.ActionTypes.LOAD_DISPLAY_DETAIL,a),I.takeEvery(H.ActionTypes.EDIT_DISPLAY,i),I.takeEvery(H.ActionTypes.EDIT_CURRENT_DISPLAY,s),I.takeEvery(H.ActionTypes.EDIT_CURRENT_SLIDE,l),I.takeEvery(H.ActionTypes.UPLOAD_CURRENT_SLIDE_COVER,c),I.takeEvery(H.ActionTypes.DELETE_DISPLAY,u),I.takeEvery(H.ActionTypes.ADD_DISPLAY_LAYERS,d),I.takeEvery(H.ActionTypes.EDIT_DISPLAY_LAYERS,p),I.takeEvery(H.ActionTypes.DELETE_DISPLAY_LAYERS,f),I.takeEvery(H.ActionTypes.PASTE_SLIDE_LAYERS,h),I.takeLatest(H.ActionTypes.LOAD_DISPLAY_SHARE_LINK,m),I.takeEvery(H.ActionTypes.UNDO_OPERATION,g),I.takeEvery(H.ActionTypes.REDO_OPERATION,b)];case 2:case"end":return e.stop()}},P,this)}var y=regeneratorRuntime.mark(r),_=regeneratorRuntime.mark(o),A=regeneratorRuntime.mark(a),x=regeneratorRuntime.mark(i),w=regeneratorRuntime.mark(s),j=regeneratorRuntime.mark(l),E=regeneratorRuntime.mark(c),S=regeneratorRuntime.mark(u),k=regeneratorRuntime.mark(d),C=regeneratorRuntime.mark(p),T=regeneratorRuntime.mark(f),M=regeneratorRuntime.mark(h),O=regeneratorRuntime.mark(m),L=regeneratorRuntime.mark(g),D=regeneratorRuntime.mark(b),P=regeneratorRuntime.mark(v);Object.defineProperty(t,"__esModule",{value:!0});var I=n("./node_modules/redux-saga/es/index.js"),R=n("./node_modules/redux-saga/es/effects.js"),N=n("./app/utils/request.ts"),B=n("./app/utils/api.js"),F=n("./app/utils/asyncAdapter.js"),U=n("./app/assets/json/slideSettings/index.ts"),z=n("./app/utils/util.ts"),H=n("./app/containers/Display/constants.ts"),V=n("./app/containers/Display/actions.ts");t.getDisplays=r,t.addDisplay=o,t.getDisplayDetail=a,t.editDisplay=i,t.editCurrentDisplay=s,t.editCurrentSlide=l,t.uploadCurrentSlideCover=c,t.deleteDisplay=u,t.addDisplayLayers=d,t.editDisplayLayers=p,t.deleteDisplayLayers=f,t.pasteSlideLayers=h,t.getDisplayShareLink=m,t.undoOperation=g,t.redoOperation=b,t.default=v},"./app/containers/Display/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("display")};t.selectDisplay=o;var a=function(){return r.createSelector(o,function(e){return e.present.get("displays")})};t.makeSelectDisplays=a;var i=function(){return r.createSelector(o,function(e){return e.present.get("currentDisplay")})};t.makeSelectCurrentDisplay=i;var s=function(){return r.createSelector(o,function(e){return e.present.get("currentSlide")})};t.makeSelectCurrentSlide=s;var l=function(){return r.createSelector(o,function(e){return e.present.get("currentLayers")})};t.makeSelectCurrentLayers=l;var c=function(){return r.createSelector(o,function(e){return e.present.get("currentLayersInfo")})};t.makeSelectCurrentLayersInfo=c;var u=function(){return r.createSelector(o,function(e){var t=e.present,n=t.get("currentLayersInfo");return t.get("currentLayers").filter(function(e){return n[e.id].selected})})};t.makeSelectCurrentSelectedLayers=u;var d=function(){return r.createSelector(o,function(e){return e.present.get("clipboardLayers")})};t.makeSelectClipboardLayers=d;var p=function(){return r.createSelector(o,function(e){return e.present.get("currentDisplayShareInfo")})};t.makeSelectCurrentDisplayShareInfo=p;var f=function(){return r.createSelector(o,function(e){return e.present.get("currentDisplaySecretInfo")})};t.makeSelectCurrentDisplaySecretInfo=f;var h=function(){return r.createSelector(o,function(e){return e.present.get("currentDisplayShareInfoLoading")})};t.makeSelectCurrentDisplayShareInfoLoading=h;var m=function(){return r.createSelector(o,function(e){return e.past.length>0})};t.makeSelectCanUndo=m;var g=function(){return r.createSelector(o,function(e){return e.future.length>0})};t.makeSelectCanRedo=g;var b=function(){return r.createSelector(o,function(e){var t=e.present,n=t.get("currentDisplay");return{displayId:n&&n.id,slide:t.get("currentSlide"),layers:t.get("currentLayers"),lastOperationType:t.get("lastOperationType"),lastLayers:t.get("lastLayers")}})};t.makeSelectCurrentState=b;var v=function(){return r.createSelector(o,function(e){var t=e.future;if(0===t.length)return{};var n=t[0];return{displayId:n.get("currentDisplay").id,slide:n.get("currentSlide"),layers:n.get("currentLayers"),lastOperationType:n.get("lastOperationType"),lastLayers:n.get("lastLayers")}})};t.makeSelectNextState=v},"./app/containers/LanguageProvider/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CHANGE_LOCALE="app/LanguageToggle/CHANGE_LOCALE"},"./app/containers/LanguageProvider/index.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:s,t=arguments[1];switch(t.type){case a.CHANGE_LOCALE:return e.set("locale",t.locale);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/immutable/dist/immutable.js"),a=n("./app/containers/LanguageProvider/constants.ts"),i=n("./app/containers/App/constants.ts"),s=o.fromJS({locale:i.DEFAULT_LOCALE});t.default=r},"./app/containers/LanguageProvider/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("language")};t.selectLanguage=o;var a=function(){return r.createSelector(o,function(e){return e.get("locale")})};t.makeSelectLocale=a},"./app/containers/Login/Login.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Login/Login.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Login/LoginForm.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n-1});n.setState({organizationMembers:t&&t.length?o:n.props.organizationMembers})},n.searchMember=function(){n.forceUpdate(function(){n.MemberForm.validateFieldsAndScroll(function(e,t){if(!e){var r=t.searchValue;n.props.handleSearchMember(r)}})})},n.hideChangeRoleForm=function(){n.setState({changeRoleFormVisible:!1,changeRoleModalLoading:!1},function(){n.ChangeRoleForm.resetFields()})},n.toUserProfile=function(e){return function(){var t=e.id;t&&n.props.toThatUserProfile("account/profile/"+t)}},n.state={formKey:0,category:"",changeRoleFormCategory:"",currentMember:{},formVisible:!1,modalLoading:!1,changeRoleFormVisible:!1,changeRoleModalLoading:!1,organizationMembers:[]},n}return a(t,e),i(t,[{key:"componentDidMount",value:function(){var e=this.props.organizationMembers;e&&this.setState({organizationMembers:e})}},{key:"componentWillReceiveProps",value:function(e){var t=this.props.organizationMembers,n=e.organizationMembers;n&&n!==t&&this.setState({organizationMembers:n})}},{key:"render",value:function(){var e=this,t=this.state,n=t.formVisible,r=t.category,o=t.modalLoading,a=t.changeRoleFormVisible,i=t.changeRoleModalLoading,w=t.changeRoleFormCategory,j=t.organizationMembers,E=this.props,S=E.inviteMemberList,k=E.currentOrganization,C=void 0;k&&(C=_.default(k,"")(d));var T=s.createElement(u,{placement:"bottom",title:"邀请"},s.createElement(C,{size:"large",type:"primary",icon:"plus",onClick:this.showMemberForm("member")})),M=[];return M=k&&1===k.role?[{title:"Name",dataIndex:"user",key:"user",render:function(t){return s.createElement("div",{className:g.avatarWrapper},s.createElement(v.default,{path:t.avatar,size:"small",enlarge:!0}),s.createElement("span",{className:g.avatarName,onClick:e.toUserProfile(t)},t.username))}},{title:"role",dataIndex:"user",key:"userKey",render:function(e){return s.createElement("span",null,1===e.role?"Owner":"Member")}},{title:"team",dataIndex:"teamNum",key:"teamNum"},{title:"settings",dataIndex:"user",key:"settings",render:function(t,n){return s.createElement("span",null,s.createElement(f,{title:"确定删除此成员吗?",placement:"bottom",onConfirm:e.removeMemberForm(t,n)},A),x,s.createElement("a",{href:"javascript:;",onClick:e.showChangeRoleForm("orgMember",n)},"改变角色"))}}]:[{title:"Name",dataIndex:"user",key:"user",render:function(t){return s.createElement("div",{className:g.avatarWrapper},s.createElement(v.default,{path:t.avatar,size:"small",enlarge:!0}),s.createElement("span",{className:g.avatarName,onClick:e.toUserProfile(t)},t.username))}},{title:"role",dataIndex:"user",key:"userKey",render:function(e){return s.createElement("span",null,1===e.role?"Owner":"Member")}},{title:"team",dataIndex:"teamNum",key:"teamNum"}],s.createElement("div",{className:g.listWrapper},s.createElement(l,null,s.createElement(c,{span:16},s.createElement(p.Search,{size:"large",placeholder:"placeholder",onChange:this.search})),s.createElement(c,{span:1,offset:7},T)),s.createElement(l,null,s.createElement("div",{className:g.tableWrap},s.createElement(m,{bordered:!0,columns:M,dataSource:j}))),s.createElement(h,{key:this.state.formKey,title:null,visible:n,footer:null,onCancel:this.hideMemberForm},s.createElement(b.default,{category:r,submitLoading:o,inviteMemberList:S,handleSearchMember:this.searchMember,organizationOrTeam:this.props.currentOrganization,ref:function(t){e.MemberForm=t},addHandler:this.add})),s.createElement(h,{title:null,visible:a,footer:null,onCancel:this.hideChangeRoleForm},s.createElement(y.default,{category:w,organizationOrTeam:this.props.currentOrganization,submitLoading:i,ref:function(t){e.ChangeRoleForm=t},changeHandler:this.changRole})))}}]),t}(s.PureComponent);t.MemberList=w,t.default=w},"./app/containers/Organizations/component/OrganizationForm.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=Object.assign||function(e){for(var t=1;t-1}),{keyword:t,pageNum:n.state.pageNum,pageSize:n.state.pageSize});n.props.getOrganizationProjectsByPagination(o)},n.hideProjectForm=function(){n.setState({formVisible:!1,modalLoading:!1},function(){n.ProjectForm.props.form.resetFields()})},n.checkUniqueName=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2],o=n.props;(0,o.onCheckUniqueName)("project",{name:t,orgId:o.organizationId,id:(0,n.ProjectForm.props.form.getFieldsValue)().id},function(){r()},function(e){r(e)})},n.onModalOk=function(){var e=n.props,t=e.organizationId,r=e.currentOrganization,o=e.onAddProject,a=e.onEditProject,i=e.onLoadOrganizationProjects,s=n.state.formType;n.ProjectForm.props.form.validateFieldsAndScroll(function(e,l){e||(n.setState({modalLoading:!0}),l.visibility="true"===l.visibility,"organizationProject"===s?o(Object.assign({},l,{orgId:t},{pic:""+Math.ceil(19*Math.random())}),function(){n.hideProjectForm()}):"edit"===s&&a(Object.assign({},l,{orgId:Number(l.orgId)}),function(){i({id:r.id}),n.hideProjectForm()}))})},n.onShowSizeChange=function(e,t){n.setState({pageNum:e,pageSize:t},function(){var e={pageNum:n.state.pageNum,pageSize:n.state.pageSize};n.props.getOrganizationProjectsByPagination(e)})},n.onPaginationChange=function(e){n.setState({pageNum:e},function(){var e={pageNum:n.state.pageNum,pageSize:n.state.pageSize};n.props.getOrganizationProjectsByPagination(e)})},n.state={formType:"",formVisible:!1,modalLoading:!1,pageNum:1,pageSize:10,organizationProjects:!1},n}return a(t,e),i(t,[{key:"componentWillReceiveProps",value:function(e){var t=this.props.organizationProjects,n=e.organizationProjects;n&&n!==t&&this.setState({organizationProjects:n})}},{key:"render",value:function(){var e=this,t=this.state,n=t.formVisible,r=t.formType,o=t.modalLoading,a=t.organizationProjects,i=this.props,_=i.currentOrganization,A=i.organizationProjectsDetail,x=(i.onCheckUniqueName,void 0);_&&(x=v.default(_,y.CREATE_ORGANIZATION_PROJECT)(d));var w=s.createElement(u,{placement:"bottom",title:"创建"},s.createElement(x,{size:"large",type:"primary",icon:"plus",onClick:this.showProjectForm("organizationProject")})),j=void 0;A&&(j=s.createElement(p,{showSizeChanger:!0,defaultCurrent:2,total:A.total,onShowSizeChange:this.onShowSizeChange,onChange:this.onPaginationChange,defaultPageSize:10,pageSizeOptions:["10","15","20"],current:this.state.pageNum}));var E=Array.isArray(a)?a.map(function(t,n){return s.createElement(g.default,{unStar:e.props.unStar,userList:e.props.userList,starUser:e.props.starUser,currentOrganization:_,key:n,loginUser:e.props.loginUser,options:t,toProject:e.props.toProject,deleteProject:e.props.deleteProject,showEditProjectForm:e.showEditProjectForm("edit",t)})}):"";return s.createElement("div",{className:h.listWrapper},s.createElement(l,null,s.createElement(c,{span:16},s.createElement(f.Search,{size:"large",placeholder:"Project 名称",onChange:this.onSearchProject})),s.createElement(c,{span:1,offset:7},w)),s.createElement(l,null,s.createElement(c,{span:24},E)),s.createElement(l,{type:"flex",justify:"end",style:{marginTop:"16px"}},s.createElement(c,null,j)),s.createElement(m,{title:null,visible:n,footer:null,onCancel:this.hideProjectForm},s.createElement(b.default,{type:r,modalLoading:o,onModalOk:this.onModalOk,onCheckUniqueName:this.checkUniqueName,wrappedComponentRef:this.refHandlers.ProjectForm})))}}]),t}(s.PureComponent);t.ProjectList=_,t.default=_},"./app/containers/Organizations/component/Setting.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2],o=n.props;(0,o.onCheckUniqueName)("team",{name:t,orgId:o.currentOrganization.id,id:null},function(){r()},function(e){r(e)})},n.onModalOk=function(){var e=n.props.currentOrganization;n.TeamForm.validateFieldsAndScroll(function(t,r){t||(n.setState({modalLoading:!0}),n.props.onAddTeam(Object.assign({},r,{visibility:!!r.visibility},{orgId:e.id,pic:""+Math.ceil(19*Math.random()),config:"{}"}),function(){var t=e.id;n.props.loadOrganizationTeams&&(n.props.loadOrganizationTeams(Number(t)),n.props.onLoadTeams()),n.hideTeamForm()}))})},n.hideTeamForm=function(){n.setState({formVisible:!1,modalLoading:!1},function(){n.TeamForm.resetFields()})},n.organizationTypeChange=function(){return new Promise(function(e){n.forceUpdate(function(){return e()})})},n.enterTeam=function(e,t){return function(){var e=t.id;e&&n.props.toThatTeam("account/team/"+e)}},n.isEmptyObj=function(e){for(var t in e)return!1;return!0},n.filter=function(e){return Array.isArray(e)?(e.forEach(function(e){n.isEmptyObj(e)||(e.key="key"+e.id),e.children&&e.children.length>0&&n.filter(e.children),e.children&&0===e.children.length&&delete e.children}),e):e},n.state={formVisible:!1,modalLoading:!1},n}return a(t,e),s(t,[{key:"componentWillMount",value:function(){(0,this.props.onLoadTeams)()}},{key:"render",value:function(){var e=this,t=this.state,n=t.formVisible,r=t.modalLoading,o=this.props,a=o.organizationTeams,i=o.currentOrganization,s=o.currentOrganization.id;this.filter(a);var c=void 0;i&&(c=E.default(i,"")(b));var u=l.createElement(g,{placement:"bottom",title:"创建"},l.createElement(c,{size:"large",type:"primary",icon:"plus",onClick:this.showTeamForm()})),p=[{title:"Name",dataIndex:"name",key:"name",width:"40%",render:function(t,n){return l.createElement("a",{href:"javascript:;",onClick:e.enterTeam(t,n),className:_.avatarName},t)}},{title:"Member",dataIndex:"users",key:"users",width:"30%",render:function(e){return l.createElement("div",{className:_.avatarWrapper},e.map(function(e,t){return l.createElement(g,{key:"tooltip"+t,placement:"topRight",title:e.username},l.createElement("span",null,l.createElement(j.default,{key:t,path:e.avatar,size:"small",enlarge:!0})))}),l.createElement("span",{className:_.avatarName},(e?e.length:0)+"members"))}}];return l.createElement("div",{className:_.listWrapper},l.createElement(h,null,l.createElement(m,{span:1,offset:23},u)),l.createElement(h,null,l.createElement("div",{className:_.tableWrap},l.createElement(v,{bordered:!0,columns:p,dataSource:a}))),l.createElement(y,{title:null,visible:n,footer:null,onCancel:this.hideTeamForm},l.createElement(d.default,{orgId:s,teams:this.props.teams,onModalOk:this.onModalOk,modalLoading:r,onOrganizationTypeChange:this.organizationTypeChange,onCheckUniqueName:this.checkNameUnique,ref:function(t){e.TeamForm=t}})))}}]),t}(l.PureComponent);t.TeamList=S;var k=u.createStructuredSelector({teams:p.makeSelectTeams(),loginUser:c.makeSelectLoginUser()});t.mapDispatchToProps=i,t.default=f.connect(k,i)(S)},"./app/containers/Organizations/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LOAD_ORGANIZATIONS="davinci/Organization/LOAD_ORGANIZATIONS",t.LOAD_ORGANIZATIONS_SUCCESS="davinci/Organization/LOAD_ORGANIZATIONS_SUCCESS",t.LOAD_ORGANIZATIONS_FAILURE="davinci/Organization/LOAD_ORGANIZATIONS_FAILURE",t.ADD_ORGANIZATION="davinci/Organization/ADD_ORGANIZATION",t.ADD_ORGANIZATION_SUCCESS="davinci/Organization/ADD_ORGANIZATION_SUCCESS",t.ADD_ORGANIZATION_FAILURE="davinci/Organization/ADD_ORGANIZATION_FAILURE",t.EDIT_ORGANIZATION="davinci/Organization/EDIT_ORGANIZATION",t.EDIT_ORGANIZATION_SUCCESS="davinci/Organization/EDIT_ORGANIZATION_SUCCESS",t.EDIT_ORGANIZATION_FAILURE="davinci/Organization/EDIT_ORGANIZATION_FAILURE",t.DELETE_ORGANIZATION="davinci/Organization/DELETE_ORGANIZATION",t.DELETE_ORGANIZATION_SUCCESS="davinci/Organization/DELETE_ORGANIZATION_SUCCESS",t.DELETE_ORGANIZATION_FAILURE="davinci/Organization/DELETE_ORGANIZATION_FAILURE",t.LOAD_ORGANIZATION_DETAIL="davinci/Organization/LOAD_ORGANIZATION_DETAIL",t.LOAD_ORGANIZATION_DETAIL_SUCCESS="davinci/Organization/LOAD_ORGANIZATION_DETAIL_SUCCESS",t.LOAD_ORGANIZATION_DETAIL_FAILURE="davinci/Organization/LOAD_ORGANIZATION_DETAIL_FAILURE",t.LOAD_ORGANIZATIONS_PROJECTS="davinci/Organization/LOAD_ORGANIZATIONS_PROJECTS",t.LOAD_ORGANIZATIONS_PROJECTS_SUCCESS="davinci/Organization/LOAD_ORGANIZATIONS_PROJECTS_SUCCESS",t.LOAD_ORGANIZATIONS_PROJECTS_FAILURE="davinci/Organization/LOAD_ORGANIZATIONS_PROJECTS_FAILURE",t.LOAD_ORGANIZATIONS_MEMBERS="davinci/Organization/LOAD_ORGANIZATIONS_MEMBERS",t.LOAD_ORGANIZATIONS_MEMBERS_SUCCESS="davinci/Organization/LOAD_ORGANIZATIONS_MEMBERS_SUCCESS",t.LOAD_ORGANIZATIONS_MEMBERS_FAILURE="davinci/Organization/LOAD_ORGANIZATIONS_MEMBERS_FAILURE",t.LOAD_ORGANIZATIONS_TEAMS="davinci/Organization/LOAD_ORGANIZATIONS_TEAMS",t.LOAD_ORGANIZATIONS_TEAMS_SUCCESS="davinci/Organization/LOAD_ORGANIZATIONS_TEAMS_SUCCESS",t.LOAD_ORGANIZATIONS_TEAMS_FAILURE="davinci/Organization/LOAD_ORGANIZATIONS_TEAMS_FAILURE",t.ADD_TEAM="davinci/Organization/ADD_TEAM",t.ADD_TEAM_SUCCESS="davinci/Organization/ADD_TEAM_SUCCESS",t.ADD_TEAM_FAILURE="davinci/Organization/ADD_TEAM_FAILURE",t.SEARCH_MEMBER="davinci/Organization/SEARCH_MEMBER",t.SEARCH_MEMBER_SUCCESS="davinci/Organization/SEARCH_MEMBER_SUCCESS",t.SEARCH_MEMBER_FAILURE="davinci/Organization/SEARCH_MEMBER_FAILURE",t.INVITE_MEMBER="davinci/Organization/INVITE_MEMBER",t.INVITE_MEMBER_SUCCESS="davinci/Organization/INVITE_MEMBER_SUCCESS",t.INVITE_MEMBER_FAILURE="davinci/Organization/INVITE_MEMBER_FAILURE",t.DELETE_ORGANIZATION_MEMBER="davinci/Organization/DELETE_ORGANIZATION_MEMBER",t.DELETE_ORGANIZATION_MEMBER_SUCCESS="davinci/Organization/DELETE_ORGANIZATION_MEMBER_SUCCESS",t.DELETE_ORGANIZATION_MEMBER_ERROR="davinci/Organization/DELETE_ORGANIZATION_MEMBER_ERROR",t.CHANGE_MEMBER_ROLE_ORGANIZATION="davinci/Organization/CHANGE_MEMBER_ROLE_ORGANIZATION",t.CHANGE_MEMBER_ROLE_ORGANIZATION_SUCCESS="davinci/Organization/CHANGE_MEMBER_ROLE_ORGANIZATION_SUCCESS",t.CHANGE_MEMBER_ROLE_ORGANIZATION_ERROR="davinci/Organization/CHANGE_MEMBER_ROLE_ORGANIZATION_ERROR"},"./app/containers/Organizations/index.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{onLoadOrganizations:function(){return e(v.loadOrganizations())},onAddOrganization:function(t,n){return e(v.addOrganization(t,n))},onCheckUniqueName:function(t,n,r,o){return e(S.checkNameUniqueAction(t,n,r,o))}}}var s=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2];(0,n.props.onCheckUniqueName)("organization",{name:t,id:(0,n.OrganizationForm.getFieldsValue)().id},function(){r()},function(e){r(e)})},n.toOrganization=function(e){return function(){n.props.router.push("/account/organization/"+e.id)}},n.showOrganizationForm=function(){return function(e){e.stopPropagation(),n.setState({formVisible:!0})}},n.onModalOk=function(){n.OrganizationForm.validateFieldsAndScroll(function(e,t){e||(n.setState({modalLoading:!0}),n.props.onAddOrganization(Object.assign({},t,{config:"{}"}),function(){n.hideOrganizationForm()}))})},n.hideOrganizationForm=function(){n.setState({formVisible:!1,modalLoading:!1},function(){n.OrganizationForm.resetFields()})},n.state={formVisible:!1,modalLoading:!1},n}return a(t,e),s(t,[{key:"componentWillMount",value:function(){(0,this.props.onLoadOrganizations)()}},{key:"render",value:function(){var e=this,t=this.state,n=t.formVisible,r=t.modalLoading,o=this.props.organizations,a=o?o.map(function(t){return l.createElement("div",{className:A.groupList,key:t.id,onClick:e.toOrganization(t)},l.createElement("div",{className:A.orgHeader},l.createElement("div",{className:A.avatar},l.createElement(E.default,{path:t.avatar,enlarge:!1,size:"small"})),l.createElement("div",{className:A.name},l.createElement("div",{className:A.title},t.name),l.createElement("div",{className:A.desc},t.description))),l.createElement("div",{className:A.setting},k))}):"";return l.createElement(m.default,null,l.createElement(m.default.Header,null,l.createElement(m.default.Title,null,l.createElement(d,null,l.createElement(p,{span:20},l.createElement(j,{className:w.breadcrumb},C)),l.createElement(p,{span:1,offset:3},l.createElement(u,{type:"plus-circle-o",className:A.create,onClick:this.showOrganizationForm()}))))),a,l.createElement(f,{title:null,visible:n,footer:null,onCancel:this.hideOrganizationForm},l.createElement(x.default,{ref:function(t){e.OrganizationForm=t},modalLoading:r,onModalOk:this.onModalOk,onCheckUniqueName:this.checkNameUnique})))}}]),t}(l.PureComponent);t.Organizations=T;var M=y.createStructuredSelector({organizations:_.makeSelectOrganizations(),loginUser:b.makeSelectLoginUser()});t.mapDispatchToProps=i;var O=c.connect(M,i);t.default=g.compose(O)(T)},"./app/containers/Organizations/reducer.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s,t=arguments[1],n=t.type,r=t.payload,o=e.get("organizations"),l=e.get("currentOrganizationMembers"),c=e.get("currentOrganizationProjects");switch(n){case a.DELETE_ORGANIZATION_MEMBER_SUCCESS:return l?e.set("currentTeamMembers",l.filter(function(e){return e.id!==r.id})):e;case a.LOAD_ORGANIZATIONS_PROJECTS_SUCCESS:return e.set("currentOrganizationProjects",r.projects.list).set("currentOrganizationProjectsDetail",r.projects);case a.LOAD_ORGANIZATIONS_MEMBERS_SUCCESS:return e.set("currentOrganizationMembers",r.members);case a.LOAD_ORGANIZATIONS_TEAMS_SUCCESS:return e.set("currentOrganizationTeams",r.teams);case a.LOAD_ORGANIZATIONS_SUCCESS:return e.set("organizations",r.organizations);case i.ADD_PROJECT_SUCCESS:return c?(c.unshift(r.result),e.set("currentOrganizationProjects",c.slice())):e.set("currentOrganizationProjects",[r.result]);case i.DELETE_PROJECT_SUCCESS:return c?e.set("currentOrganizationProjects",c.filter(function(e){return e.id!==r.id})):e;case a.LOAD_ORGANIZATIONS_FAILURE:return e;case a.ADD_ORGANIZATION_SUCCESS:return o?(o.unshift(r.result),e.set("organizations",o.slice())):e.set("organizations",[r.result]);case a.ADD_ORGANIZATION_FAILURE:return e;case a.EDIT_ORGANIZATION_SUCCESS:return o.splice(o.findIndex(function(e){return e.id===r.result.id}),1,r.result),e.set("organizations",o.slice());case a.DELETE_ORGANIZATION_SUCCESS:return e.set("organizations",o.filter(function(e){return e.id!==r.id}));case a.LOAD_ORGANIZATION_DETAIL:return e.set("currentOrganizationLoading",!0);case a.LOAD_ORGANIZATION_DETAIL_SUCCESS:return e.set("currentOrganizationLoading",!1).set("currentOrganization",r.organization);case a.ADD_TEAM_FAILURE:return e;case a.SEARCH_MEMBER_SUCCESS:return e.set("inviteMemberLists",r.result);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/immutable/dist/immutable.js"),a=n("./app/containers/Organizations/constants.ts"),i=n("./app/containers/Projects/constants.ts"),s=o.fromJS({organizations:[],currentOrganization:{},currentOrganizationLoading:!1,currentOrganizationProjects:[],currentOrganizationProjectsDetail:!1,currentOrganizationTeams:[],currentOrganizationMembers:[],inviteMemberLists:[]});t.default=r},"./app/containers/Organizations/sagas.ts":function(e,t,n){"use strict";function r(){var e,t;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,L.call(R.default,N.default.organizations);case 3:return e=n.sent,t=B.readListAdapter(e),n.next=7,L.put(P.organizationsLoaded(t));case 7:n.next=14;break;case 9:return n.prev=9,n.t0=n.catch(0),n.next=13,L.put(P.loadOrganizationsFail());case 13:F.errorHandler(n.t0);case 14:case"end":return n.stop()}},b,this,[[0,9]])}function o(e){var t,n,r,o,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,n=t.organization,r=t.resolve,i.prev=1,i.next=4,L.call(R.default,{method:"post",url:N.default.organizations,data:n});case 4:return o=i.sent,a=B.readListAdapter(o),i.next=8,L.put(P.organizationAdded(a));case 8:r(),i.next=16;break;case 11:return i.prev=11,i.t0=i.catch(1),i.next=15,L.put(P.addOrganizationFail());case 15:F.errorHandler(i.t0);case 16:case"end":return i.stop()}},v,this,[[1,11]])}function a(e){var t;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return t=e.payload.organization,n.prev=1,n.next=4,L.call(R.default,{method:"put",url:N.default.organizations+"/"+t.id,data:t});case 4:return n.next=6,L.put(P.organizationEdited(t));case 6:I.success("success"),n.next=14;break;case 9:return n.prev=9,n.t0=n.catch(1),n.next=13,L.put(P.editOrganizationFail());case 13:F.errorHandler(n.t0);case 14:case"end":return n.stop()}},y,this,[[1,9]])}function i(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,n=t.id,r=t.resolve,o.prev=1,o.next=4,L.call(R.default,{method:"delete",url:N.default.organizations+"/"+n});case 4:return o.next=6,L.put(P.organizationDeleted(n));case 6:r(),o.next=14;break;case 9:return o.prev=9,o.t0=o.catch(1),o.next=13,L.put(P.deleteOrganizationFail());case 13:F.errorHandler(o.t0);case 14:case"end":return o.stop()}},_,this,[[1,9]])}function s(e){var t,n,r=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,L.call(R.default,N.default.organizations+"/"+r.id);case 3:return t=e.sent,n=B.readListAdapter(t),e.next=7,L.put(P.organizationDetailLoaded(n));case 7:e.next=12;break;case 9:e.prev=9,e.t0=e.catch(0),F.errorHandler(e.t0);case 12:case"end":return e.stop()}},A,this,[[0,9]])}function l(e){var t,n,r,o,a,i,s,l,c=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=c.param,n=t.id,r=t.keyword,o=t.pageNum,a=t.pageSize,i=r?N.default.organizations+"/"+n+"/projects?keyword="+r+"&pageNum=1&pageSize="+(a||10):N.default.organizations+"/"+n+"/projects/?pageNum="+(o||1)+"&pageSize="+(a||10),e.prev=2,e.next=5,L.call(R.default,{method:"get",url:i});case 5:return s=e.sent,l=B.readListAdapter(s),e.next=9,L.put(P.organizationsProjectsLoaded(l));case 9:e.next=16;break;case 11:return e.prev=11,e.t0=e.catch(2),e.next=15,L.put(P.loadOrganizationsProjectsFail());case 15:F.errorHandler(e.t0);case 16:case"end":return e.stop()}},x,this,[[2,11]])}function c(e){var t,n,r,o=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=o.id,e.prev=1,e.next=4,L.call(R.default,N.default.organizations+"/"+t+"/members");case 4:return n=e.sent,r=B.readListAdapter(n),e.next=8,L.put(P.organizationsMembersLoaded(r));case 8:e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,L.put(P.loadOrganizationsMembersFail());case 14:F.errorHandler(e.t0);case 15:case"end":return e.stop()}},w,this,[[1,10]])}function u(e){var t,n,r,o=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=o.id,e.prev=1,e.next=4,L.call(R.default,N.default.organizations+"/"+t+"/teams");case 4:return n=e.sent,r=B.readListAdapter(n),e.next=8,L.put(P.organizationsTeamsLoaded(r));case 8:e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,L.put(P.loadOrganizationsTeamsFail());case 14:F.errorHandler(e.t0);case 15:case"end":return e.stop()}},j,this,[[1,10]])}function d(e){var t,n,r,o,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,n=t.team,r=t.resolve,i.prev=1,i.next=4,L.call(R.default,{method:"post",url:N.default.teams,data:n});case 4:return o=i.sent,a=B.readListAdapter(o),i.next=8,L.put(P.teamAdded(a));case 8:r(),i.next=16;break;case 11:return i.prev=11,i.t0=i.catch(1),i.next=15,L.put(P.addTeamFail());case 15:F.errorHandler(i.t0);case 16:case"end":return i.stop()}},E,this,[[1,11]])}function p(e){var t,n,r,o,a,i=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=i.keyword,e.prev=1,e.next=4,L.call(R.default,{method:"get",url:N.default.user+"?keyword="+t});case 4:return n=e.sent,r=n&&n.header&&n.header.msg?n.header.msg:"",o=n&&n.header&&n.header.code?n.header.code:"",a=B.readListAdapter(n),e.next=10,L.put(P.memberSearched(a));case 10:e.next=17;break;case 12:return e.prev=12,e.t0=e.catch(1),e.next=16,L.put(P.searchMemberFail());case 16:F.errorHandler(e.t0);case 17:case"end":return e.stop()}},S,this,[[1,12]])}function f(e){var t,n,r,o,a=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=a.orgId,n=a.memId,e.prev=1,e.next=4,L.call(R.default,{method:"post",url:N.default.organizations+"/"+t+"/member/"+n,data:{orgId:t,memId:n}});case 4:return r=e.sent,o=B.readListAdapter(r),e.next=8,L.put(P.inviteMemberSuccess(o));case 8:e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,L.put(P.inviteMemberFail());case 14:F.errorHandler(e.t0);case 15:case"end":return e.stop()}},k,this,[[1,10]])}function h(e){var t,n,r,o=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=o.relationId,n=o.resolve,e.prev=1,e.next=4,L.call(R.default,{url:N.default.organizations+"/member/"+t,method:"delete"});case 4:return r=e.sent,e.next=7,L.put(P.organizationMemberDeleted(t));case 7:n(),e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,L.put(P.deleteOrganizationMemberFail());case 14:F.errorHandler(e.t0);case 15:case"end":return e.stop()}},C,this,[[1,10]])}function m(e){var t,n,r,o,a,i=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=i.relationId,n=i.newRole,r=i.resolve,e.prev=1,e.next=4,L.call(R.default,{url:N.default.organizations+"/member/"+t,method:"put",data:{role:n}});case 4:return o=e.sent,a=B.readListAdapter(o),e.next=8,L.put(P.organizationMemberRoleChanged(t,a));case 8:return e.next=10,r();case 10:e.next=17;break;case 12:return e.prev=12,e.t0=e.catch(1),e.next=16,L.put(P.changeOrganizationMemberRoleFail());case 16:F.errorHandler(e.t0);case 17:case"end":return e.stop()}},T,this,[[1,12]])}function g(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[O.takeLatest(D.LOAD_ORGANIZATIONS,r),O.takeEvery(D.ADD_ORGANIZATION,o),O.takeEvery(D.EDIT_ORGANIZATION,a),O.takeEvery(D.DELETE_ORGANIZATION,i),O.takeLatest(D.LOAD_ORGANIZATION_DETAIL,s),O.takeLatest(D.LOAD_ORGANIZATIONS_MEMBERS,c),O.takeLatest(D.LOAD_ORGANIZATIONS_PROJECTS,l),O.takeLatest(D.LOAD_ORGANIZATIONS_TEAMS,u),O.takeEvery(D.ADD_TEAM,d),O.takeLatest(D.INVITE_MEMBER,f),O.throttle(600,D.SEARCH_MEMBER,p),O.takeLatest(D.DELETE_ORGANIZATION_MEMBER,h),O.takeLatest(D.CHANGE_MEMBER_ROLE_ORGANIZATION,m)];case 2:case"end":return e.stop()}},M,this)}var b=regeneratorRuntime.mark(r),v=regeneratorRuntime.mark(o),y=regeneratorRuntime.mark(a),_=regeneratorRuntime.mark(i),A=regeneratorRuntime.mark(s),x=regeneratorRuntime.mark(l),w=regeneratorRuntime.mark(c),j=regeneratorRuntime.mark(u),E=regeneratorRuntime.mark(d),S=regeneratorRuntime.mark(p),k=regeneratorRuntime.mark(f),C=regeneratorRuntime.mark(h),T=regeneratorRuntime.mark(m),M=regeneratorRuntime.mark(g);Object.defineProperty(t,"__esModule",{value:!0});var O=n("./node_modules/redux-saga/es/index.js"),L=n("./node_modules/redux-saga/es/effects.js"),D=n("./app/containers/Organizations/constants.ts"),P=n("./app/containers/Organizations/actions.ts"),I=n("./node_modules/antd/lib/message/index.js"),R=n("./app/utils/request.ts"),N=n("./app/utils/api.js"),B=n("./app/utils/asyncAdapter.js"),F=n("./app/utils/util.ts");t.getOrganizations=r,t.addOrganization=o,t.editOrganization=a,t.deleteOrganization=i,t.getOrganizationDetail=s,t.getOrganizationsProjects=l,t.getOrganizationsMembers=c,t.getOrganizationsTeams=u,t.addTeam=d,t.searchMember=p,t.inviteMember=f,t.deleteOrganizationMember=h,t.changeOrganizationMemberRole=m,t.default=g},"./app/containers/Organizations/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("organization")};t.selectOrganization=o;var a=function(){return r.createSelector(o,function(e){return e.get("organizations")})};t.makeSelectOrganizations=a;var i=function(){return r.createSelector(o,function(e){return e.get("inviteMemberLists")})};t.makeSelectInviteMemberList=i;var s=function(){return r.createSelector(o,function(e){return e.get("currentOrganization")})};t.makeSelectCurrentOrganizations=s;var l=function(){return r.createSelector(o,function(e){return e.get("currentOrganizationProjects")})};t.makeSelectCurrentOrganizationProjects=l;var c=function(){return r.createSelector(o,function(e){return e.get("currentOrganizationProjectsDetail")})};t.makeSelectCurrentOrganizationProjectsDetail=c;var u=function(){return r.createSelector(o,function(e){return e.get("currentOrganizationTeams")})};t.makeSelectCurrentOrganizationTeams=u;var d=function(){return r.createSelector(o,function(e){return e.get("currentOrganizationMembers")})};t.makeSelectCurrentOrganizationMembers=d},"./app/containers/Portal/Portal.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Portal/Portal.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Portal/actions.ts":function(e,t,n){"use strict";function r(e){return{type:m.LOAD_PORTALS,payload:{projectId:e}}}function o(e){return{type:m.LOAD_PORTALS_SUCCESS,payload:{result:e}}}function a(){return{type:m.LOAD_PORTALS_FAILURE}}function i(e,t){return{type:m.ADD_PORTAL,payload:{values:e,resolve:t}}}function s(e){return{type:m.ADD_PORTAL_SUCCESS,payload:{result:e}}}function l(){return{type:m.ADD_PORTAL_FAILURE}}function c(e,t){return{type:m.EDIT_PORTAL,payload:{values:e,resolve:t}}}function u(e){return{type:m.EDIT_PORTAL_SUCCESS,payload:{result:e}}}function d(){return{type:m.EDIT_PORTAL_FAILURE}}function p(e){return{type:m.DELETE_PORTAL,payload:{id:e}}}function f(e){return{type:m.DELETE_PORTAL_SUCCESS,payload:{id:e}}}function h(){return{type:m.DELETE_PORTAL_FAILURE}}Object.defineProperty(t,"__esModule",{value:!0});var m=n("./app/containers/Portal/constants.ts");t.loadPortals=r,t.portalsLoaded=o,t.loadPortalsFail=a,t.addPortal=i,t.portalAdded=s,t.addPortalFail=l,t.editPortal=c,t.portalEdited=u,t.editPortalFail=d,t.deletePortal=p,t.portalDeleted=f,t.deletePortalFail=h},"./app/containers/Portal/components/PortalForm.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2],o=e.props,a=o.onCheckUniqueName,i=o.type,s=o.form,l=o.projectId,c=s.getFieldsValue(),u=c.id;a("dashboardPortal",{projectId:l,id:"add"===i?"":u,name:n},function(){r()},function(e){r(e)})},e}return a(t,e),s(t,[{key:"render",value:function(){var e=this.props.form.getFieldDecorator,t={labelCol:{span:6},wrapperCol:{span:16}};return l.createElement(c,null,l.createElement(u,{gutter:8},l.createElement(d,{span:24},l.createElement(h,{className:g.hide},e("id",{hidden:"add"===this.props.type})(b)),l.createElement(h,{className:g.hide},e("avatar",{})(v)),l.createElement(h,i({label:"名称"},t,{hasFeedback:!0}),e("name",{rules:[{required:!0,message:"Name 不能为空"},{validator:this.checkNameUnique}]})(y))),l.createElement(d,{span:24},l.createElement(h,i({label:"描述"},t),e("description",{initialValue:""})(l.createElement(p,{placeholder:"Description",type:"textarea",autosize:{minRows:2,maxRows:6}})))),l.createElement(d,{span:24},l.createElement(h,i({label:"是否发布"},t),e("publish",{initialValue:!0})(_)))))}}]),t}(l.PureComponent);t.PortalForm=A,t.default=c.create()(A)},"./app/containers/Portal/components/PortalList.tsx":function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t1?t-1:0),o=1;o0&&void 0!==arguments[0]?arguments[0]:i,t=arguments[1],n=t.type,r=t.payload,a=e.get("portals");switch(n){case o.LOAD_PORTALS:return e;case o.LOAD_PORTALS_SUCCESS:return e.set("portals",r.result);case o.LOAD_PORTALS_FAILURE:case o.ADD_PORTAL:return e;case o.ADD_PORTAL_SUCCESS:return a.unshift(r.result),e.set("portals",a.slice());case o.ADD_PORTAL_FAILURE:case o.DELETE_PORTAL:return e;case o.DELETE_PORTAL_SUCCESS:return e.set("portals",a.filter(function(e){return e.id!==r.id}));case o.DELETE_PORTAL_FAILURE:case o.EDIT_PORTAL:return e;case o.EDIT_PORTAL_SUCCESS:return a.splice(a.findIndex(function(e){return e.id===r.result.id}),1,r.result),e.set("portals",a.slice());case o.EDIT_PORTAL_FAILURE:default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Portal/constants.ts"),a=n("./node_modules/immutable/dist/immutable.js"),i=a.fromJS({portals:!1});t.default=r},"./app/containers/Portal/sagas.ts":function(e,t,n){"use strict";function r(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,o.prev=1,o.next=4,h.call(b.default,v.default.portal+"?projectId="+t.projectId);case 4:return n=o.sent,r=y.readListAdapter(n),o.next=8,h.put(g.portalsLoaded(r));case 8:o.next=15;break;case 10:return o.prev=10,o.t0=o.catch(1),o.next=14,h.put(g.loadPortalsFail());case 14:_.errorHandler(o.t0);case 15:case"end":return o.stop()}},l,this,[[1,10]])}function o(e){var t,n;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=e.payload,r.prev=1,r.next=4,h.call(b.default,{method:"post",url:v.default.portal,data:t.values});case 4:return n=r.sent,r.next=7,h.put(g.portalAdded(n.payload));case 7:t.resolve(),r.next=15;break;case 10:return r.prev=10,r.t0=r.catch(1),r.next=14,h.put(g.addPortalFail());case 14:_.errorHandler(r.t0);case 15:case"end":return r.stop()}},c,this,[[1,10]])}function a(e){var t;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return t=e.payload,n.prev=1,n.next=4,h.call(b.default,{method:"delete",url:v.default.portal+"/"+t.id});case 4:return n.next=6,h.put(g.portalDeleted(t.id));case 6:n.next=13;break;case 8:return n.prev=8,n.t0=n.catch(1),n.next=12,h.put(g.deletePortalFail());case 12:_.errorHandler(n.t0);case 13:case"end":return n.stop()}},u,this,[[1,8]])}function i(e){var t;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return t=e.payload,n.prev=1,n.next=4,h.call(b.default,{method:"put",url:v.default.portal+"/"+t.values.id,data:t.values});case 4:return n.next=6,h.put(g.portalEdited(t.values));case 6:t.resolve(),n.next=14;break;case 9:return n.prev=9,n.t0=n.catch(1),n.next=13,h.put(g.editPortalFail());case 13:_.errorHandler(n.t0);case 14:case"end":return n.stop()}},d,this,[[1,9]])}function s(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[f.takeLatest(m.LOAD_PORTALS,r),f.takeEvery(m.ADD_PORTAL,o),f.takeEvery(m.DELETE_PORTAL,a),f.takeEvery(m.EDIT_PORTAL,i)];case 2:case"end":return e.stop()}},p,this)}var l=regeneratorRuntime.mark(r),c=regeneratorRuntime.mark(o),u=regeneratorRuntime.mark(a),d=regeneratorRuntime.mark(i),p=regeneratorRuntime.mark(s);Object.defineProperty(t,"__esModule",{value:!0});var f=n("./node_modules/redux-saga/es/index.js"),h=n("./node_modules/redux-saga/es/effects.js"),m=n("./app/containers/Portal/constants.ts"),g=n("./app/containers/Portal/actions.ts"),b=n("./app/utils/request.ts"),v=n("./app/utils/api.js"),y=n("./app/utils/asyncAdapter.js"),_=n("./app/utils/util.ts");t.getPortals=r,t.addPortal=o,t.deletePortal=a,t.editPortal=i,t.default=s},"./app/containers/Portal/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("portal")};t.selectPortal=o;var a=function(){return r.createSelector(o,function(e){return e.get("portals")})};t.makeSelectPortals=a},"./app/containers/Profile/UserProfile.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{onGetUserProfile:function(t){return e(S.getUserProfile(t))}}}var s=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2],o=e.props;(0,o.onCheckUniqueName)("user",{username:n,id:o.loginUser.id},function(){r()},function(e){r(e)})},e.submit=function(){var t=e.props,n=t.onUpdateProfile,r=t.loginUser.id;e.props.form.validateFieldsAndScroll(function(e,t){if(!e){var o=t.name,a=t.description,i=t.department;n(r,o,a,i,function(e){h.success(e.header&&e.header.msg)})}})},e}return a(t,e),l(t,[{key:"componentDidMount",value:function(){var e=this.props.loginUser,t=e.name,n=e.description,r=e.department;this.props.form.setFieldsValue({name:t,description:n,department:r})}},{key:"render",value:function(){var e=this.props.form.getFieldDecorator,t=this.props.loginUser,n=t.id,r=t.avatar,o={labelCol:{span:4},wrapperCol:{span:18}};return c.createElement(A.default,null,c.createElement(A.default.Header,null,c.createElement(A.default.Title,null,c.createElement(C,{className:k.breadcrumb},T))),c.createElement(A.default.Body,null,c.createElement("div",{className:y.container},c.createElement("div",{className:y.uploadWrapper},c.createElement(x.default,{type:"profile",xhrParams:{id:n,callback:this.props.onUploadAvatarSuccess},path:r})),M,c.createElement("div",{className:y.form},c.createElement(b,{className:y.formView},c.createElement(m,null,c.createElement(f,null,c.createElement(v,s({className:y.hide},o),e("id",{})(O)),c.createElement(v,s({},o,{label:"姓名"}),e("name",{initialValue:"",rules:[{required:!0},{validator:this.checkNameUnique}]})(L))),c.createElement(f,null,c.createElement(v,s({},o,{label:"描述"}),e("description",{initialValue:""})(D))),c.createElement(f,null,c.createElement(v,s({},o,{label:"部门"}),e("department",{initialValue:""})(P))),c.createElement(f,{offset:4},c.createElement(_,{size:"large",type:"primary",onClick:this.submit},"保存设置"))))))))}}]),t}(c.PureComponent);t.Profile=I,t.mapDispatchToProps=i;var R=w.createStructuredSelector({loginUser:j.makeSelectLoginUser()}),N=u.connect(R,i);t.default=E.compose(N)(b.create()(I))},"./app/containers/Profile/profile.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Profile/profile.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Profile/reducer.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i,t=arguments[1],n=t.type,r=t.payload;switch(n){case o.GET_USER_PROFILE:return e.set("loading",!0);case o.GET_USER_PROFILE_SUCCESS:return e.set("loading",!1).set("userProfile",r.result);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Profile/constants.ts"),a=n("./node_modules/immutable/dist/immutable.js"),i=a.fromJS({userProfile:!1,loading:!1});t.default=r},"./app/containers/Profile/sagas.ts":function(e,t,n){"use strict";function r(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload.id,o.prev=1,o.next=4,l.call(d.default,{method:"get",url:p.default.user+"/profile/"+t});case 4:return n=o.sent,r=f.readListAdapter(n),o.next=8,l.put(u.userProfileGot(r));case 8:o.next=15;break;case 10:return o.prev=10,o.t0=o.catch(1),o.next=14,l.put(u.getUserProfileFail());case 14:h.errorHandler(o.t0);case 15:case"end":return o.stop()}},a,this,[[1,10]])}function o(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[s.takeLatest(c.GET_USER_PROFILE,r)];case 2:case"end":return e.stop()}},i,this)}var a=regeneratorRuntime.mark(r),i=regeneratorRuntime.mark(o);Object.defineProperty(t,"__esModule",{value:!0});var s=n("./node_modules/redux-saga/es/index.js"),l=n("./node_modules/redux-saga/es/effects.js"),c=n("./app/containers/Profile/constants.ts"),u=n("./app/containers/Profile/actions.ts"),d=n("./app/utils/request.ts"),p=n("./app/utils/api.js"),f=n("./app/utils/asyncAdapter.js"),h=n("./app/utils/util.ts");t.getUserProfile=r,t.default=o},"./app/containers/Profile/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("profile")},a=function(){return r.createSelector(o,function(e){return e.get("userProfile")})};t.makeSelectUserProfile=a;var i=function(){return r.createSelector(o,function(e){return e.get("loading")})};t.makeSelectLoading=i},"./app/containers/Projects/Project.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Projects/Project.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Projects/ProjectForm.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2],o=n.props.onCheckUniqueName,a=n.ProjectForm.getFieldsValue,i=a();o("project",{name:t,orgId:i.orgId,id:i.id},function(){r()},function(e){r(e)})},n.toProject=function(e){return function(){var t=e.id;n.props.router.push("/project/"+t),n.saveHistory(e)}},n.saveHistory=function(e){V.pushNode(e)},n.hideSearchMask=function(){n.setState({searchMaskVisible:!0,searchKeywordsVisible:!0})},n.onChangeKeywords=function(e){var t={keywords:e.target.value.trim(),pageNum:n.state.currentPage,pageSize:n.state.pageSize};n.setState({keywords:e.target.value.trim()},function(){return n.props.onSearchProject(t)})},n.selectKeywords=function(e){return function(){var t={keywords:e,pageNum:n.state.currentPage,pageSize:n.state.pageSize};n.setState({keywords:e,searchKeywordsVisible:!0},function(){return n.props.onSearchProject(t)})}},n.computSearchListWrapperStyle=function(){var e=n.props.searchProject;return n.state.searchMaskVisible?n.state.searchMaskVisible:!e||!e.list||0===e.list.length||n.state.searchMaskVisible},n.onShowSizeChange=function(e,t){n.setState({currentPage:e,pageSize:t},function(){var e={keywords:n.state.keywords,pageNum:n.state.currentPage,pageSize:n.state.pageSize};n.props.onSearchProject(e)})},n.onPaginationChange=function(e){n.setState({currentPage:e},function(){var e={keywords:n.state.keywords,pageNum:n.state.currentPage,pageSize:n.state.pageSize};n.props.onSearchProject(e)})},n.starProject=function(e){return function(){(0,n.props.onStarProject)(e,function(){n.props.onLoadProjects()})}},n.getStarProjectUserList=function(e){return function(){(0,n.props.onGetProjectStarUser)(e)}},n.state={formType:"",formVisible:!1,modalLoading:!1,mimePanel:!0,joinPanel:!0,searchMaskVisible:!0,searchKeywordsVisible:!1,keywords:"",currentPage:1,pageSize:10},n}return s(t,e),c(t,[{key:"componentWillMount",value:function(){this.props.onLoadProjects(),this.props.onLoadOrganizations(),V.init()}},{key:"componentWillUnmount",value:function(){this.unbindDocumentKeypress()}},{key:"render",value:function(){var e,t,a,i,s,l,c,d=this,v=this.state,x=v.formType,w=v.formVisible,j=v.modalLoading,E=this.props,S=E.onDeleteProject,k=E.organizations,C=E.projects,M=E.searchProject,O=E.loginUser,L=E.starUserList,D=Array.isArray(C)?[].concat(o(C),[{id:"add",type:"add"}]):[{id:"add",type:"add"}].concat(),P=(A((e={},r(e,_.starWrapperPosition,!0),r(e,_.starWrapper,!0),e)),D?D.map(function(e){var t=void 0,o=void 0;if(e.type&&"add"===e.type)return u.createElement(f,{key:e.id,xl:6,lg:8,md:8,sm:12,xs:24},u.createElement("div",{className:_.unit,onClick:d.showProjectForm("add")},u.createElement("div",{className:_.createNewWrapper},u.createElement("div",{className:_.createIcon},Y),u.createElement("div",{className:_.createText},"创建新项目"))));if(O&&e.createBy&&O.id!==e.createBy.id)return[];k&&(o=k.find(function(t){return t.id===e.orgId}),t=N.default(o,"")(g));var a=void 0,i=void 0,s=void 0,l=void 0,c=void 0;e&&e.id&&(c=u.createElement(U.default,{d:e,starUser:L,unStar:d.starProject,userList:d.getStarProjectUserList})),l=u.createElement(h,{title:"点赞项目"},u.createElement("div",{className:_.starWrapperPosition},c)),s=u.createElement(h,{title:"移交项目"},u.createElement(t,{className:_.transfer,type:"double-right",onClick:d.showProjectForm("transfer",e)})),a=u.createElement(h,{title:"编辑"},u.createElement(t,{className:_.edit,type:"setting",onClick:d.showProjectForm("edit",e)})),i=u.createElement(m,{title:"确定删除?",placement:"bottom",onConfirm:S(e.id)},u.createElement(h,{title:"删除"},u.createElement(t,{className:_.delete,type:"delete",onClick:d.stopPPG})));var p=void 0,b=k.find(function(t,n){return e.orgId===t.id});e&&k&&(p=e.name+" ("+(b&&b.name?b.name:"")+")");var v=A(r({},_.unit,!0));return u.createElement(f,{key:e.id,xl:6,lg:8,md:8,sm:12,xs:24},u.createElement("div",{className:v,style:{backgroundImage:"url("+n("./app/assets/images recursive ^\\.\\/bg.*\\.png$")("./bg"+(e.pic||9)+".png")+")"},onClick:d.toProject(e)},u.createElement("header",null,u.createElement("h3",{className:_.title},p),u.createElement("p",{className:_.content},e.description)),l,s,a,i))}):""),I=D?D.map(function(e){var t=void 0,o=void 0;if(e.type&&"add"===e.type)return[];if(O&&e.createBy&&O.id===e.createBy.id)return[];k&&(o=k.find(function(t){return t.id===e.orgId}),t=N.default(o,"")(g));var a=void 0;e&&e.id&&(a=u.createElement(U.default,{d:e,starUser:L,unStar:d.starProject,userList:d.getStarProjectUserList}));var i=void 0,s=void 0,l=void 0,c=void 0,p=void 0,b=k.find(function(t,n){return e.orgId===t.id});e&&k&&(p=e.name+" ("+(b&&b.name?b.name:"")+")"),c=u.createElement(h,{title:"点赞项目"},u.createElement("div",{className:_.starWrapperPosition},a)),l=u.createElement(h,{title:"移交项目"},u.createElement(t,{className:_.transfer,type:"double-right",onClick:d.showProjectForm("transfer",e)})),i=u.createElement(h,{title:"编辑"},u.createElement(t,{className:_.edit,type:"setting",onClick:d.showProjectForm("edit",e)})),s=u.createElement(m,{title:"确定删除?",placement:"bottom",onConfirm:S(e.id)},u.createElement(h,{title:"删除"},u.createElement(t,{className:_.delete,type:"delete",onClick:d.stopPPG})));var v=A(r({},_.unit,!0));return u.createElement(f,{key:e.id,xl:6,lg:8,md:8,sm:12,xs:24},u.createElement("div",{className:v,style:{backgroundImage:"url("+n("./app/assets/images recursive ^\\.\\/bg.*\\.png$")("./bg"+(e.pic||9)+".png")+")"},onClick:d.toProject(e)},u.createElement("header",null,u.createElement("h3",{className:_.title},p),u.createElement("p",{className:_.content},e.description)),c,l,i,s))}):"",R=V.getAll(),H=[];R.forEach(function(e){D.forEach(function(t){e.id===t.id&&H.push(t)})});var q=H?H.map(function(e){var t=n("./app/assets/images recursive ^\\.\\/bg.*\\.png$")("./bg"+(e.pic||9)+".png");return u.createElement("div",{className:_.groupList,key:e.id,onClick:d.toProject(e)},u.createElement("div",{className:_.orgHeader},u.createElement("div",{className:_.avatar},u.createElement(B.default,{path:t,enlarge:!1,size:"small"})),u.createElement("div",{className:_.name},u.createElement("div",{className:_.title},e.name),u.createElement("div",{className:_.desc},e.description))))}):"",K=M&&M.list&&M.list.length?M.list.map(function(e){var t=n("./app/assets/images recursive ^\\.\\/bg.*\\.png$")("./bg"+(e.pic||9)+".png");return e&&e.id&&u.createElement(U.default,{d:e,starUser:L,unStar:d.starProject,userList:d.getStarProjectUserList}),u.createElement(f,{xl:6,lg:8,md:8,sm:12,xs:24,key:e.id},u.createElement("div",{className:_.searchList,key:e.id,onClick:d.toProject(e)},u.createElement("div",{className:_.orgHeader},u.createElement("div",{className:_.avatar},u.createElement(B.default,{path:t,enlarge:!1,size:"small"})),u.createElement("div",{className:_.name},u.createElement("div",{className:_.title},e.name),u.createElement("div",{className:_.desc},e.description)))))}):"",X=void 0;M&&(X=u.createElement(y,{showSizeChanger:!0,defaultCurrent:2,total:M.total,onShowSizeChange:this.onShowSizeChange,onChange:this.onPaginationChange,defaultPageSize:10,pageSizeOptions:["10","15","18"],current:this.state.currentPage}));var J=A((t={},r(t,z.hide,this.state.searchMaskVisible),r(t,_.mask,!0),t)),Z=(u.createElement("ul",null,M&&M.list.map(function(e,t){return u.createElement("li",{key:e.name+"of"+t,onClick:d.selectKeywords(e.name)},u.createElement("p",null,e.name))})),A((a={},r(a,z.hide,this.state.searchKeywordsVisible),r(a,_.searchKeywords,M&&0!==M.list.length),a)),A((i={},r(i,_.listPadding,!0),r(i,z.hide,!this.state.mimePanel),i))),$=A((s={},r(s,_.listPadding,!0),r(s,z.hide,!this.state.joinPanel),s)),ee=A((l={},r(l,z.hide,this.computSearchListWrapperStyle()),r(l,_.searchListWrapper,!0),l)),te=A((c={},r(c,_.wrapper,!0),r(c,_.overflowY,this.state.searchMaskVisible),c));return u.createElement("div",{className:te},u.createElement("div",{className:_.search},u.createElement("div",{className:_.searchWrapper},u.createElement("label",{htmlFor:"newtab-search-text",className:_.searchLabel}),u.createElement("input",{id:"newtab-search-text",placeholder:"Search the Davinci",title:"Search the Web",autoComplete:"off",onFocus:this.bindDocumentKeypress,onBlur:this.unbindDocumentKeypress,onChange:this.onChangeKeywords,value:this.state.keywords,type:"search"}),u.createElement("span",{className:_.searchButton,onClick:this.searchProject},W))),u.createElement("div",{className:ee},u.createElement(F.default,null,G,u.createElement("div",{className:_.listPadding,style:{overflow:"auto"}},u.createElement(p,{gutter:16},K),u.createElement(p,{type:"flex",justify:"end"},u.createElement(f,null,X))))),u.createElement("div",{className:_.wrap},u.createElement(p,{style:{width:"100%"}},u.createElement(f,{xl:18,lg:18,md:24,sm:24,xs:24,key:"projects"},u.createElement("div",{className:_.container},u.createElement("div",{className:_.projects},u.createElement("div",{className:_.mime,id:"mime"},u.createElement(F.default,null,u.createElement(F.default.Header,null,u.createElement(F.default.Title,null,u.createElement(p,{onClick:this.foldPanel("mimePanel")},u.createElement(f,{span:20},u.createElement(g,{type:this.state.mimePanel?"down":"right"}),"我创建的项目")))),u.createElement("div",{className:Z},u.createElement(p,{gutter:16},P)))),u.createElement("div",{className:_.join,id:"join"},u.createElement(F.default,null,u.createElement(F.default.Header,null,u.createElement(F.default.Title,null,u.createElement(p,{onClick:this.foldPanel("joinPanel")},u.createElement(f,{span:20},u.createElement(g,{type:this.state.joinPanel?"down":"right"}),"我参与的项目")))),u.createElement("div",{className:$},u.createElement(p,{gutter:16},I))))))),u.createElement(f,{xl:6,lg:6,md:24,sm:24,xs:24,key:"history"},u.createElement("div",{className:_.sideBox},u.createElement(F.default,null,Q,q))))),u.createElement("div",{className:J,onClick:this.hideSearchMask}),u.createElement(b,{title:null,footer:null,visible:w,onCancel:this.hideProjectForm},u.createElement(T.default,{type:x,ref:function(e){d.ProjectForm=e},modalLoading:j,organizations:k,onModalOk:this.onModalOk,onTransfer:this.onTransfer,onCheckUniqueName:this.checkNameUnique,onWidgetTypeChange:this.widgetTypeChange})))}}]),t}(u.PureComponent);t.Projects=q;var K=k.createStructuredSelector({organizations:I.makeSelectOrganizations(),projects:E.makeSelectProjects(),loginUser:j.makeSelectLoginUser(),searchProject:E.makeSelectSearchProject(),starUserList:E.makeSelectStarUserList()});t.mapDispatchToProps=l;var X=d.connect(K,l),J=S.default({key:"project",reducer:O.default}),Z=C.default({key:"project",saga:M.default}),$=S.default({key:"organization",reducer:L.default}),ee=C.default({key:"organization",saga:D.default});t.default=w.compose(J,$,Z,ee,X)(q)},"./app/containers/Projects/reducer.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i,t=arguments[1],n=t.type,r=t.payload,o=e.get("projects");switch(n){case a.LOAD_PROJECTS_SUCCESS:return e.set("projects",r.projects);case a.LOAD_PROJECTS_FAILURE:return e;case a.ADD_PROJECT_SUCCESS:return o?(o.unshift(r.result),e.set("projects",o.slice())):e.set("projects",[r.result]);case a.ADD_PROJECT_FAILURE:return e;case a.DELETE_PROJECT_SUCCESS:return o?e.set("projects",o.filter(function(e){return e.id!==r.id})):e;case a.LOAD_PROJECT_DETAIL:return e.set("currentProjectLoading",!0);case a.LOAD_PROJECT_DETAIL_SUCCESS:return e.set("currentProjectLoading",!1).set("currentProject",r.project);case a.KILL_PROJECT_DETAIL:return e.set("currentProject",!1);case a.SEARCH_PROJECT_SUCCESS:return e.set("searchProject",r.result);case a.GET_PROJECT_STAR_USER_SUCCESS:return e.set("starUserList",r.result);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/immutable/dist/immutable.js"),a=n("./app/containers/Projects/constants.ts"),i=o.fromJS({projects:null,currentProject:null,currentProjectLoading:!1,searchProject:!1,starUserList:!1});t.default=r},"./app/containers/Projects/sagas.ts":function(e,t,n){"use strict";function r(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,o.prev=1,o.next=4,j.call(k.default,C.default.projects);case 4:return n=o.sent,r=M.readListAdapter(n),o.next=8,j.put(S.projectsLoaded(r));case 8:o.next=15;break;case 10:return o.prev=10,o.t0=o.catch(1),o.next=14,j.put(S.loadProjectsFail());case 14:T.errorHandler(o.t0);case 15:case"end":return o.stop()}},f,this,[[1,10]])}function o(e){var t,n,r,o,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,n=t.project,r=t.resolve,i.prev=1,i.next=4,j.call(k.default,{method:"post",url:C.default.projects,data:n});case 4:return o=i.sent,a=M.readListAdapter(o),i.next=8,j.put(S.projectAdded(a));case 8:r(),i.next=16;break;case 11:return i.prev=11,i.t0=i.catch(1),i.next=15,j.put(S.addProjectFail());case 15:T.errorHandler(i.t0);case 16:case"end":return i.stop()}},h,this,[[1,11]])}function a(e){var t,n,r,o;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return t=e.payload,n=t.project,r=t.resolve,o=n.id,a.prev=2,a.next=5,j.call(k.default,{method:"put",url:C.default.projects+"/"+o,data:n});case 5:return a.next=7,j.put(S.projectEdited(n));case 7:r(),a.next=15;break;case 10:return a.prev=10,a.t0=a.catch(2),a.next=14,j.put(S.editProjectFail());case 14:T.errorHandler(a.t0);case 15:case"end":return a.stop()}},m,this,[[2,10]])}function i(e){var t;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return t=e.payload.id,n.prev=1,n.next=4,j.call(k.default,{method:"delete",url:C.default.projects+"/"+t});case 4:return n.next=6,j.put(S.projectDeleted(t));case 6:n.next=13;break;case 8:return n.prev=8,n.t0=n.catch(1),n.next=12,j.put(S.deleteProjectFail());case 12:T.errorHandler(n.t0);case 13:case"end":return n.stop()}},g,this,[[1,8]])}function s(e){var t,n,r=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,j.call(k.default,C.default.projects+"/"+r.id);case 3:return t=e.sent,n=M.readListAdapter(t),e.next=7,j.put(S.projectDetailLoaded(n));case 7:e.next=12;break;case 9:e.prev=9,e.t0=e.catch(0),T.errorHandler(e.t0);case 12:case"end":return e.stop()}},b,this,[[0,9]])}function l(e){var t,n,r,o,a=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=a.id,n=a.orgId,e.prev=1,e.next=4,j.call(k.default,{method:"put",url:C.default.projects+"/"+t+"/transfer",data:{orgId:n}});case 4:return r=e.sent,o=M.readListAdapter(r),e.next=8,j.put(S.projectTransfered(o));case 8:e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,j.put(S.transferProjectFail());case 14:T.errorHandler(e.t0);case 15:case"end":return e.stop()}},v,this,[[1,10]])}function c(e){var t,n,r,o,a,i,s=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=s.param,n=t.keywords,r=t.pageNum,o=t.pageSize,e.prev=1,e.next=4,j.call(k.default,{method:"get",url:C.default.projects+"/search/?pageNum="+(r||1)+"&pageSize="+(o||10)+"&keywords="+(n||"")});case 4:return a=e.sent,i=M.readListAdapter(a),e.next=8,j.put(S.projectSearched(i));case 8:e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,j.put(S.searchProjectFail());case 14:T.errorHandler(e.t0);case 15:case"end":return e.stop()}},y,this,[[1,10]])}function u(e){var t,n,r,o,a=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=a.id,n=a.resolve,e.prev=1,e.next=4,j.call(k.default,{method:"post",url:C.default.star+"/project/"+t,data:{id:t}});case 4:return r=e.sent,o=M.readListAdapter(r),e.next=8,j.put(S.unStarProjectSuccess(o));case 8:return e.next=10,n();case 10:e.next=17;break;case 12:return e.prev=12,e.t0=e.catch(1),e.next=16,j.put(S.unStarProjectFail());case 16:T.errorHandler(e.t0);case 17:case"end":return e.stop()}},_,this,[[1,12]])}function d(e){var t,n,r,o=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=o.id,e.prev=1,e.next=4,j.call(k.default,{method:"get",url:C.default.star+"/project/"+t});case 4:return n=e.sent,r=M.readListAdapter(n),e.next=8,j.put(S.getProjectStarUserSuccess(r));case 8:e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,j.put(S.getProjectStarUserFail());case 14:T.errorHandler(e.t0);case 15:case"end":return e.stop()}},A,this,[[1,10]])}function p(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[w.takeLatest(E.LOAD_PROJECTS,r),w.takeEvery(E.ADD_PROJECT,o),w.takeEvery(E.EDIT_PROJECT,a),w.takeEvery(E.DELETE_PROJECT,i),w.takeLatest(E.LOAD_PROJECT_DETAIL,s),w.takeEvery(E.TRANSFER_PROJECT,l),w.takeEvery(E.PROJECT_UNSTAR,u),w.takeEvery(E.GET_PROJECT_STAR_USER,d),w.throttle(1e3,E.SEARCH_PROJECT,c)];case 2:case"end":return e.stop()}},x,this)}var f=regeneratorRuntime.mark(r),h=regeneratorRuntime.mark(o),m=regeneratorRuntime.mark(a),g=regeneratorRuntime.mark(i),b=regeneratorRuntime.mark(s),v=regeneratorRuntime.mark(l),y=regeneratorRuntime.mark(c),_=regeneratorRuntime.mark(u),A=regeneratorRuntime.mark(d),x=regeneratorRuntime.mark(p);Object.defineProperty(t,"__esModule",{value:!0});var w=n("./node_modules/redux-saga/es/index.js"),j=n("./node_modules/redux-saga/es/effects.js"),E=n("./app/containers/Projects/constants.ts"),S=n("./app/containers/Projects/actions.ts"),k=n("./app/utils/request.ts"),C=n("./app/utils/api.js"),T=n("./app/utils/util.ts"),M=n("./app/utils/asyncAdapter.js");t.getProjects=r,t.addProject=o,t.editProject=a,t.deleteProject=i,t.getProjectDetail=s,t.transferProject=l,t.searchProject=c,t.unStarProject=u,t.getProjectStarUser=d,t.default=p},"./app/containers/Projects/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("project")};t.selectProject=o;var a=function(){return r.createSelector(o,function(e){return e.get("projects")})};t.makeSelectProjects=a;var i=function(){return r.createSelector(o,function(e){return e.get("currentProject")})};t.makeSelectCurrentProject=i;var s=function(){return r.createSelector(o,function(e){return e.get("searchProject")})};t.makeSelectSearchProject=s;var l=function(){return r.createSelector(o,function(e){return e.get("starUserList")})};t.makeSelectStarUserList=l},"./app/containers/Register/Activate.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{onActiveUser:function(t,n){return e(m.active(t,n))}}}var s=function(){function e(e,t){for(var n=0;n0?"https://email."+n:"https://mail."+n;window.open(r)}},e}return a(t,e),i(t,[{key:"render",value:function(){var e=this.props.email;return s.createElement("div",{className:l.content},u,s.createElement("p",null,"我们向 ",s.createElement("b",null,e)," 发送了一封电子邮件,请",s.createElement("b",null,s.createElement("a",{onClick:this.goEmailNet},"前往")),"电子邮件中确认。"),s.createElement("p",null,"没收到? ",s.createElement("a",{href:"javascript:;",onClick:this.props.sendEmailOnceMore},"重新发送电子邮件")),s.createElement("div",{className:l.back,onClick:this.props.goBack},d," 返回上一步"))}}]),t}(s.PureComponent);t.SendEmailTips=p,t.default=p},"./app/containers/Register/actions.ts":function(e,t,n){"use strict";function r(e,t,n,r){return{type:c.SIGNUP,payload:{username:e,email:t,password:n,resolve:r}}}function o(){return{type:c.SIGNUP_SUCCESS}}function a(){return{type:c.SIGNUP_ERROR}}function i(e,t){return{type:c.SEND_MAIL_AGAIN,payload:{email:e,resolve:t}}}function s(){return{type:c.SEND_MAIL_AGAIN_SUCCESS}}function l(){return{type:c.SEND_MAIL_AGAIN_ERROR}}Object.defineProperty(t,"__esModule",{value:!0});var c=n("./app/containers/Register/constants.ts");t.signup=r,t.signupSuccess=o,t.signupError=a,t.sendMailAgain=i,t.sendMailAgainSuccess=s,t.sendMailAgainFail=l},"./app/containers/Register/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SIGNUP="davinci/App/SIGNUP",t.SIGNUP_SUCCESS="davinci/App/SIGNUP_SUCCESS",t.SIGNUP_ERROR="davinci/App/SIGNUP_ERROR",t.SEND_MAIL_AGAIN="davinci/App/SEND_MAIL_AGAIN",t.SEND_MAIL_AGAIN_SUCCESS="davinci/App/SEND_MAIL_AGAIN_SUCCESS",t.SEND_MAIL_AGAIN_ERROR="davinci/App/SEND_MAIL_AGAIN_ERROR"},"./app/containers/Register/index.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{onSignup:function(t,n,r,o){return e(w.signup(t,n,r,o))},onCheckName:function(t,n,r,o,a,i){return e(x.checkNameAction(t,n,r,o,a,i))},onSendEmailOnceMore:function(t,n){return e(w.sendMailAgain(t,n))}}}var s=function(){function e(e,t){for(var n=0;n20)return void v.error("密码长度为6-20位");if(a!==i)return void v.error("两次输入的密码不一致");e(r,o,a,function(){n.setState({step:"second"})})}},n.goBack=function(){n.setState({step:"first"})},n.toLogin=function(){n.props.router.replace("/login")},n.sendEmailOnceMore=function(){(0,n.props.onSendEmailOnceMore)(n.state.email,function(e){v.success(e)})},n.state={step:"first",username:"",email:"",password:"",password2:""},n}return a(t,e),s(t,[{key:"render",value:function(){var e=this.state,t=e.step,n=e.email,r=this.props,o=r.onCheckName,a=r.signupLoading,i=l.createElement("div",{className:A.window},E,l.createElement(y.default,{username:this.state.username,email:this.state.email,password:this.state.password,password2:this.state.password2,onChangeUsername:this.changeUsername,onChangeEmail:this.onChangeEmail,onChangePassword:this.changePassword,onChangePassword2:this.changePassword2,onCheckName:o,onSignup:this.signUp}),l.createElement("button",{disabled:a,onClick:this.signUp},a?S:"","注册"),l.createElement("p",{className:A.tips},k,l.createElement("a",{href:"javascript:;",onClick:this.toLogin},"点击登录"))),s=l.createElement("div",{className:A.window},C,l.createElement(_.default,{email:n,goBack:this.goBack,sendEmailOnceMore:this.sendEmailOnceMore}));return"first"===t?i:s}}]),t}(l.PureComponent);t.Register=T;var M=d.createStructuredSelector({signupLoading:j.makeSelectSignupLoading()});t.mapDispatchToProps=i;var O=c.connect(M,i),L=f.default({key:"register",reducer:m.default}),D=h.default({key:"register",saga:g.default});t.default=p.compose(L,D,O)(T)},"./app/containers/Register/reducer.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i;switch(arguments[1].type){case o.SIGNUP:return e.set("signupLoading",!0);case o.SIGNUP_SUCCESS:case o.SIGNUP_ERROR:return e.set("signupLoading",!1);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Register/constants.ts"),a=n("./node_modules/immutable/dist/immutable.js"),i=a.fromJS({signupLoading:!1});t.default=r},"./app/containers/Register/register.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Register/register.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Register/sagas.ts":function(e,t,n){"use strict";function r(e){var t,n,r,o,a,s,l;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,n=t.username,r=t.email,o=t.password,a=t.resolve,i.prev=1,i.next=4,m.call(d.default,{method:"post",url:p.default.signup,data:{username:n,email:r,password:o}});case 4:return s=i.sent,l=f.readListAdapter(s),i.next=8,m.put(u.signupSuccess());case 8:a(l),i.next=16;break;case 11:return i.prev=11,i.t0=i.catch(1),i.next=15,m.put(u.signupError());case 15:h.errorHandler(i.t0);case 16:case"end":return i.stop()}},i,this,[[1,11]])}function o(e){var t,n,r,o,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,n=t.email,r=t.resolve,i.prev=1,i.next=4,m.call(d.default,{method:"post",url:p.default.signup+"/sendmail",data:{email:n}});case 4:return o=i.sent,a=o.header.msg,i.next=8,m.put(u.sendMailAgainSuccess());case 8:r(a),i.next=16;break;case 11:return i.prev=11,i.t0=i.catch(1),i.next=15,m.put(u.sendMailAgainFail());case 15:h.errorHandler(i.t0);case 16:case"end":return i.stop()}},s,this,[[1,11]])}function a(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[g.takeLatest(c.SIGNUP,r),g.takeLatest(c.SEND_MAIL_AGAIN,o)];case 2:case"end":return e.stop()}},l,this)}var i=regeneratorRuntime.mark(r),s=regeneratorRuntime.mark(o),l=regeneratorRuntime.mark(a);Object.defineProperty(t,"__esModule",{value:!0});var c=n("./app/containers/Register/constants.ts"),u=n("./app/containers/Register/actions.ts"),d=n("./app/utils/request.ts"),p=n("./app/utils/api.js"),f=n("./app/utils/asyncAdapter.js"),h=n("./app/utils/util.ts"),m=n("./node_modules/redux-saga/es/effects.js"),g=n("./node_modules/redux-saga/es/index.js");t.signup=r,t.sendMailAgain=o,t.default=a},"./app/containers/Register/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("register")},a=function(){return r.createSelector(o,function(e){return e.get("signupLoading")})};t.makeSelectSignupLoading=a},"./app/containers/Report/Report.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Report/Report.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Report/actions.ts":function(e,t,n){"use strict";function r(e){return{type:o.LOAD_SIDEBAR,sidebar:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Report/constants.ts");t.loadSidebar=r},"./app/containers/Report/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LOAD_SIDEBAR="davinci/Report/LOAD_SIDEBAR"},"./app/containers/Report/index.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{onPageLoad:function(){var t=[{icon:"icon-dashboard",route:["vizs","dashboard"],permission:"viz"},{icon:"icon-widget-gallery",route:["widgets"],permission:"widget"},{icon:"icon-custom-business",route:["bizlogics","bizlogic"],permission:"view"},{icon:"icon-datasource24",route:["sources"],permission:"source"},{icon:"anticon anticon-clock-circle-o",route:["schedule"],permission:"schedule"}];e(h.loadSidebar(t))},onLoadProjectDetail:function(t){return e(b.loadProjectDetail(t))},onShowNavigator:function(){return e(g.showNavigator())},onKillProjectDetail:function(){return e(b.killProjectDetail())}}}var s=function(){function e(e,t){for(var n=0;n0?r=o[a]:i.indexOf("bizlogics")>0&&i.replace("bizlogics","view").indexOf(s)>0&&(r=o[a])}}0===r&&this.props.router.replace("/noAuthorization")}},{key:"componentWillUnmount",value:function(){this.props.onKillProjectDetail()}},{key:"render",value:function(){var e=this,t=this.props,n=t.sidebar,r=(t.loginUser,t.routes),o=t.currentProject,a=n&&n.map(function(t){var n=t.route.indexOf(r[3].name)>=0,a="iconfont "+t.icon,i=E.default(o,t.permission)(p.default);return l.createElement(i,{key:t.permission,route:t.route,active:n,params:e.props.params},l.createElement("i",{className:a}))}),i=o&&o.inTeam?l.createElement(d.default,null,a):"";return l.createElement("div",{className:j.report},i,l.createElement("div",{className:j.container},this.props.children))}}]),t}(l.Component);t.Report=S;var k=u.createStructuredSelector({sidebar:f.selectSidebar(),loginUser:m.makeSelectLoginUser(),currentProject:w.makeSelectCurrentProject()});t.mapDispatchToProps=i;var C=y.default({key:"project",reducer:v.default}),T=A.default({key:"project",saga:_.default}),M=c.connect(k,i);t.default=x.compose(C,T,M)(S)},"./app/containers/Report/reducer.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i,t=arguments[1];t.payload;switch(t.type){case o.LOAD_SIDEBAR:return e.set("sidebar",t.sidebar);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Report/constants.ts"),a=n("./node_modules/immutable/dist/immutable.js"),i=a.fromJS({sidebar:!1,currentProject:!1});t.default=r},"./app/containers/Report/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(){return function(e){return e.get("report")}};t.selectReport=o;var a=function(){return r.createSelector(o(),function(e){return e.get("sidebar")})};t.selectSidebar=a},"./app/containers/ResetPassword/ResetPasswordForm.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2],o=e.props;(0,o.onCheckUniqueName)("cronjob",{name:n,projectId:o.projectId,id:(0,e.props.form.getFieldsValue)().id},function(){r()},function(e){r(e)})},e}return a(t,e),l(t,[{key:"render",value:function(){for(var e=this.props,t=e.onShowConfig,n=e.configValue,r=this.props.form.getFieldDecorator,o={labelCol:{span:4},wrapperCol:{span:18}},a=0,i=0,l=[],u=[];a<60;)l.push(c.createElement(_,{key:a,value:""+a},a)),a++;for(;i<32;)u.push(c.createElement(_,{key:i,value:""+i},i)),i++;return c.createElement(f,null,c.createElement(h,null,c.createElement(m,{span:24},c.createElement(x,{className:w.hide},r("id",{hidden:"add"===this.props.type})(j)),c.createElement(x,s({label:"名称"},o),r("name",{rules:[{required:!0,message:"Name 不能为空"},{validator:this.checkUniqueName}]})(E)))),c.createElement(h,null,c.createElement(m,{span:24},c.createElement(x,s({label:"描述"},o),r("description",{initialValue:""})(c.createElement(g,{placeholder:"Description",type:"textarea",autosize:{minRows:2,maxRows:6}})))),c.createElement(m,{span:24},c.createElement(x,s({label:"类型"},o),r("jobType",{initialValue:"email"})(S))),c.createElement(m,{span:24},c.createElement(x,s({label:"配置"},o),r("config",{rules:[{required:!0,message:"配置不能为空"}],initialValue:n&&n.length>2?n:""})(c.createElement(g,{placeholder:"config",readOnly:!0,onClick:t}))))),c.createElement(h,null,c.createElement(m,{span:24},c.createElement(x,s({label:"范围"},o),r("range",{initialValue:"",rules:[{required:!0,message:"范围不能为空"}]})(c.createElement(A,{style:{width:"300px"},size:"large",showTime:!0,format:"YYYY-MM-DD HH:mm:ss",placeholder:["Start Time","End Time"]}))))),c.createElement(h,null,k,c.createElement(m,{span:5},c.createElement(x,null,r("time_range",{initialValue:""})(c.createElement(b,{onChange:this.props.changeRange},["Minute","Hour","Day","Week","Month"].map(function(e){return c.createElement(_,{key:e,value:e},e)}))))),c.createElement(m,{span:5,offset:1,className:""+("Minute"===this.props.rangeTime?"":w.hide)},c.createElement(x,null,r("minute",{initialValue:""})(c.createElement(b,null,l)))),c.createElement(m,{span:5,offset:1,className:""+("Month"===this.props.rangeTime?"":w.hide)},c.createElement(x,null,r("month",{initialValue:""})(c.createElement(b,null,u)))),c.createElement(m,{span:5,offset:1,className:""+("Hour"===this.props.rangeTime?"":w.hide)},c.createElement(x,null,r("hour",{initialValue:""})(C))),c.createElement(m,{span:5,offset:1,className:""+("Week"===this.props.rangeTime?"":w.hide)},c.createElement(x,null,r("week",{initialValue:""})(c.createElement(b,null,["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"].map(function(e,t){return c.createElement(_,{key:t,value:""+t},e)}))))),c.createElement(m,{span:5,offset:1,className:""+(["Day","Week","Month"].indexOf(this.props.rangeTime)>-1?"":w.hide)},c.createElement(x,null,r("time",{initialValue:p.default("00:00","HH:mm"),hidden:["Day","Week","Month"].indexOf(this.props.rangeTime)<0})(T)))))}}]),t}(c.PureComponent);t.ScheduleForm=M,t.default=f.create()(u.connect(null,i)(M))},"./app/containers/Schedule/actions.ts":function(e,t,n){"use strict";function r(e){return{type:A.LOAD_SCHEDULES,payload:{pid:e}}}function o(e){return{type:A.LOAD_SCHEDULES_SUCCESS,payload:{schedules:e}}}function a(){return{type:A.LOAD_SCHEDULES_FAILUER}}function i(e,t){return{type:A.ADD_SCHEDULES,payload:{schedule:e,resolve:t}}}function s(e){return{type:A.ADD_SCHEDULES_SUCCESS,payload:{result:e}}}function l(){return{type:A.ADD_SCHEDULES_FAILURE}}function c(e,t){return{type:A.UPDATE_SCHEDULES,payload:{schedule:e,resolve:t}}}function u(e){return{type:A.UPDATE_SCHEDULES_SUCCESS,payload:{result:e}}}function d(){return{type:A.UPDATE_SCHEDULES_FAILURE}}function p(e){return{type:A.DELETE_SCHEDULES,payload:{id:e}}}function f(e){return{type:A.DELETE_SCHEDULES_SUCCESS,payload:{id:e}}}function h(){return{type:A.DELETE_SCHEDULES_FAILURE}}function m(e,t){return{type:A.CHANGE_SCHEDULE_STATUS,payload:{id:e,currentStatus:t}}}function g(e,t){return{type:A.CHANGE_SCHEDULE_STATUS_SUCCESS,payload:{id:e,schedules:t}}}function b(){return{type:A.CHANGE_SCHEDULE_STATUS_FAILURE}}function v(e){return{type:A.LOAD_VIZS,payload:{pid:e}}}function y(e){return{type:A.LOAD_VIZS_SUCCESS,payload:{result:e}}}function _(){return{type:A.LOAD_VIZS_FAILUER}}Object.defineProperty(t,"__esModule",{value:!0});var A=n("./app/containers/Schedule/constants.ts");t.loadSchedules=r,t.schedulesLoaded=o,t.loadSchedulesFail=a,t.addSchedule=i,t.scheduleAdded=s,t.addScheduleFail=l,t.updateSchedule=c,t.scheduleUpdated=u,t.updateScheduleFail=d,t.deleteSchedule=p,t.scheduleDeleted=f,t.deleteScheduleFail=h,t.changeSchedulesStatus=m,t.currentScheduleStatusChanged=g,t.changeSchedulesStatusFail=b,t.loadVizs=v,t.vizsLoaded=y,t.loadVizsFail=_},"./app/containers/Schedule/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LOAD_SCHEDULES="app/Schedule/LOAD_SCHEDULES",t.LOAD_SCHEDULES_SUCCESS="app/Schedule/LOAD_SCHEDULES_SUCCESS",t.LOAD_SCHEDULES_FAILUER="app/Schedule/LOAD_SCHEDULES_FAILUER",t.ADD_SCHEDULES="app/Schedule/ADD_SCHEDULES",t.ADD_SCHEDULES_SUCCESS="app/Schedule/ADD_SCHEDULES_SUCCESS",t.ADD_SCHEDULES_FAILURE="app/Schedule/ADD_SCHEDULES_FAILURE",t.UPDATE_SCHEDULES="app/Schedule/UPDATE_SCHEDULES",t.UPDATE_SCHEDULES_SUCCESS="app/Schedule/UPDATE_SCHEDULES_SUCCESS",t.UPDATE_SCHEDULES_FAILURE="app/Schedule/UPDATE_SCHEDULES_FAILURE",t.DELETE_SCHEDULES="app/Schedule/DELETE_SCHEDULES",t.DELETE_SCHEDULES_SUCCESS="app/Schedule/DELETE_SCHEDULES_SUCCESS",t.DELETE_SCHEDULES_FAILURE="app/Schedule/DELETE_SCHEDULES_FAILURE",t.CHANGE_SCHEDULE_STATUS="app/Schedule/CHANGE_SCHEDULE_STATUS",t.CHANGE_SCHEDULE_STATUS_SUCCESS="app/Schedule/CHANGE_SCHEDULE_STATUS_SUCCESS",t.CHANGE_SCHEDULE_STATUS_FAILURE="app/Schedule/CHANGE_SCHEDULE_STATUS_FAILURE",t.LOAD_VIZS="app/Schedule/LOAD_VIZS",t.LOAD_VIZS_SUCCESS="app/Schedule/LOAD_VIZS_SUCCESS",t.LOAD_VIZS_FAILUER="app/Schedule/LOAD_VIZS_FAILUER"},"./app/containers/Schedule/index.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e){return{onLoadVizs:function(t){return e(T.loadVizs(t))},onLoadWidgets:function(t){return e(M.loadWidgets(t))},onLoadSchedules:function(t){return e(T.loadSchedules(t))},onLoadDashboards:function(){return E.promiseDispatcher(e,C.loadDashboards)},onAddSchedule:function(t,n){return e(T.addSchedule(t,n))},onUpdateSchedule:function(t,n){return e(T.updateSchedule(t,n))},onLoadDashboardDetail:function(t){return E.promiseDispatcher(e,C.loadDashboardDetail,t)},onDeleteSchedule:function(t){return function(){return e(T.deleteSchedule(t))}},onChangeCurrentJobStatus:function(t,n){return e(T.changeSchedulesStatus(t,n))}}}var l=function(){function e(e,t){for(var n=0;n-1){var o=parseInt(e.replace("(p)",""),10),a=t.find(function(e,t){return"portal"===e.contentType}).children,i=n.getCurrentListById(a,o);return n.getIdByArray(i)}return{id:parseInt(e.replace("(d)",""),10),contentType:"display"}})},n.getCurrentListById=function(e,t){function n(e){for(var o=0;o2){var r=e.to,o=e.cc,a=e.subject,i=e.bcc;n.configForm.setFieldsValue({to:r,cc:o,subject:a,bcc:i})}})},n.onTreeSelect=function(e){return e},n.onTreeChange=function(e){console.log(e),n.setState({dashboardTreeValue:e})},n.onLoadTreeData=function(e){var t=e.props.eventKey;return new Promise(function(e){n.props.onLoadDashboardDetail(t).then(function(){var e=n.props,r=e.currentDashboard,o=e.widgets,a=n.state.dashboardTree,i=function(e){return r.widgets.map(function(t){return Object.assign({},t,{label:e+" / "+o.find(function(e){return e.id===t.widget_id}).name,key:t.id,value:t.id+"(w)",type:"widget",isLeaf:!0})})},s=a.map(function(e){return""+e.key===t?Object.assign({},e,{children:i(e.name)}):e});n.setState({dashboardTree:s})}),e()})},n.onChangeRange=function(e){var t=["month","hour","week","time"];n.setState({rangeTime:e}),t.map(function(e){if("time"===e)return e;n.scheduleForm.setFieldsValue(r({},e,void 0))})},n.formatStatusIcon=function(e){switch(e){case"new":return"caret-right";case"failed":return"reload";case"started":return"pause";case"stopped":default:return"caret-right"}},n.formatStatusText=function(e){return{new:"启动",failed:"重启",started:"暂停",stopped:"启动"}[e]},n.changeStatus=function(e){return function(){var t=e.id,r=e.jobStatus;(0,n.props.onChangeCurrentJobStatus)(t,r)}},n.state={emailConfig:{},formType:"add",tableSource:[],configType:"add",dashboardTree:[],formVisible:!1,configVisible:!1,dashboardTreeValue:[],rangeTime:"Minute",screenWidth:0},n}return i(t,e),l(t,[{key:"componentWillMount",value:function(){var e=this,t=this.props.params.pid;this.props.onLoadWidgets(t),this.props.onLoadVizs(t),this.props.onLoadDashboards().then(function(){var t=e.props.dashboards,n=t.map(function(e){return Object.assign({},e,{label:e.name,key:e.id,value:e.id+"(d)",type:"dashboard"})});e.setState({dashboardTree:n,screenWidth:document.documentElement.clientWidth})}),this.props.onLoadSchedules(t)}},{key:"componentWillReceiveProps",value:function(e){var t=this;window.onresize=function(){return t.setState({screenWidth:document.documentElement.clientWidth})},e.schedule&&this.setState({tableSource:e.schedule.map(function(e){return e.key=e.id,e})})}},{key:"render",value:function(){var e=this,t=this.state,n=t.formType,r=t.configType,o=t.tableSource,a=t.formVisible,i=t.configVisible,s=t.dashboardTree,l=t.dashboardTreeValue,u=this.props,d=u.onDeleteSchedule,p=u.currentProject,h=u.tableLoading,m=u.formLoading,g=u.vizs,b={defaultPageSize:20,showSizeChanger:!0,total:o.length},v=H.default(p,"schedule",!0)(R),y=[{title:"名称",dataIndex:"name",key:"name"},{title:"描述",dataIndex:"description",key:"desc"},{title:"类型",dataIndex:"jobType",key:"job_type"},{title:"开始时间",dataIndex:"startDate",key:"start_date"},{title:"结束时间",dataIndex:"endDate",key:"end_date"},{title:"状态",dataIndex:"jobStatus",key:"job_status"},{title:"操作",key:"action",width:135,className:""+z.textAlignCenter,render:function(t,n){return c.createElement("span",{className:"ant-table-action-column"},c.createElement(N,{title:""+e.formatStatusText(n.jobStatus)},c.createElement(R,{icon:e.formatStatusIcon(n.jobStatus),shape:"circle",type:"ghost",onClick:e.changeStatus(n)})),c.createElement(N,{title:"修改"},c.createElement(R,{icon:"edit",shape:"circle",type:"ghost",onClick:e.showDetail(n.id)})),c.createElement(F,{title:"确定删除?",placement:"bottom",onConfirm:d(n.id)},V))}}],_=[c.createElement(R,{key:"back",size:"large",onClick:this.hideForm},"取 消"),c.createElement(R,{key:"submit",size:"large",type:"primary",loading:m,disabled:m,onClick:this.onScheduleOk},"保 存")],A=[c.createElement(R,{key:"back",size:"large",onClick:this.hideConfigForm},"取 消"),c.createElement(R,{key:"submit",size:"large",type:"primary",onClick:this.onConfigModalOk},"保 存")],x=p&&p.id?p.id:void 0;return c.createElement(f.default,null,Y,c.createElement(f.default.Title,null,c.createElement(D,null,c.createElement(P,{span:24},c.createElement(U,{className:z.breadcrumb},W)))),c.createElement(f.default.Body,null,c.createElement(O.default,null,c.createElement(O.default.Header,null,G,c.createElement(O.default.Tools,null,c.createElement(N,{placement:"bottom",title:"新增"},c.createElement(v,{type:"primary",icon:"plus",onClick:this.showAdd})))),c.createElement(O.default.Body,null,c.createElement(D,null,c.createElement(P,{span:24},c.createElement(I,{dataSource:o,columns:y,pagination:b,loading:h,bordered:!0}))),c.createElement(L,{title:("add"===n?"新增":"修改")+"schedule",maskClosable:!1,visible:a,footer:_,onCancel:this.hideForm},c.createElement(S.default,{type:n,projectId:x,rangeTime:this.state.rangeTime,changeRange:this.onChangeRange,configValue:JSON.stringify(this.state.emailConfig),onShowConfig:this.showConfig,ref:function(t){e.scheduleForm=t}})),c.createElement(L,{title:("add"===r?"新增":"修改")+"config",wrapClassName:"ant-modal-large",maskClosable:!1,visible:i,footer:A,onCancel:this.hideConfigForm},c.createElement(k.default,{type:r,vizs:g,dashboardTree:s,treeSelect:this.onTreeSelect,treeChange:this.onTreeChange,loadTreeData:this.onLoadTreeData,dashboardTreeValue:l,ref:function(t){e.configForm=t}}))))))}}]),t}(c.Component);t.Schedule=Q;var q=m.createStructuredSelector({widgets:j.makeSelectWidgets(),schedule:j.makeSelectSchedule(),dashboards:j.makeSelectDashboards(),currentDashboard:j.makeSelectCurrentDashboard(),currentProject:w.makeSelectCurrentProject(),tableLoading:j.makeSelectTableLoading(),formLoading:j.makeSelectFormLoading(),vizs:j.makeSelectVizs()}),K=u.connect(q,s),X=b.default({key:"schedule",reducer:y.default}),J=v.default({key:"schedule",saga:_.default}),Z=b.default({key:"widget",reducer:A.default}),$=v.default({key:"widget",saga:x.default});t.default=g.compose(X,Z,J,$,K)(Q)},"./app/containers/Schedule/reducer.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l,t=arguments[1],n=t.type,r=t.payload,o=e.get("schedule");e.get("dashboards");switch(n){case s.LOAD_WIDGETS_SUCCESS:return e.set("widgets",r.widgets);case i.LOAD_DASHBOARDS_SUCCESS:return e.set("dashboards",r.dashboards);case i.LOAD_DASHBOARD_DETAIL_SUCCESS:return e.set("currentDashboard",r.dashboard);case a.LOAD_SCHEDULES:return e.set("tableLoading",!0);case a.LOAD_SCHEDULES_SUCCESS:return e.set("schedule",r.schedules).set("tableLoading",!1);case a.LOAD_SCHEDULES_FAILUER:return e.set("tableLoading",!1);case a.ADD_SCHEDULES:return e.set("formLoading",!0);case a.ADD_SCHEDULES_SUCCESS:return o?(o.unshift(r.result),e.set("schedule",o.slice()).set("formLoading",!1)):e.set("schedule",[r.result]).set("formLoading",!1);case a.ADD_SCHEDULES_FAILURE:return e.set("formLoading",!1);case a.DELETE_SCHEDULES:return e;case a.DELETE_SCHEDULES_SUCCESS:return e.set("schedule",o.filter(function(e){return e.id!==r.id}));case a.CHANGE_SCHEDULE_STATUS:return e;case a.CHANGE_SCHEDULE_STATUS_SUCCESS:return e.set("schedule",o.map(function(e){return e.id===r.id?r.schedules:e}));case a.CHANGE_SCHEDULE_STATUS_FAILURE:return e;case a.UPDATE_SCHEDULES:return e.set("formLoading",!0);case a.UPDATE_SCHEDULES_SUCCESS:return e.set("schedule",o.map(function(e){return e.id===r.result.id?r.result:e})).set("formLoading",!1);case a.UPDATE_SCHEDULES_FAILURE:return e.set("formLoading",!1);case a.LOAD_VIZS_SUCCESS:return e.set("vizs",r.result);case a.LOAD_VIZS_FAILUER:default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/immutable/dist/immutable.js"),a=n("./app/containers/Schedule/constants.ts"),i=n("./app/containers/Dashboard/constants.ts"),s=n("./app/containers/Widget/constants.ts"),l=o.fromJS({widgets:!1,schedule:!1,dashboards:!1,currentDashboard:!1,tableLoading:!1,formLoading:!1,vizs:!1});t.default=r},"./app/containers/Schedule/sagas.ts":function(e,t,n){"use strict";function r(e){var t,n,r=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,v.call(A.default,x.default.schedule+"?projectId="+r.pid);case 3:return t=e.sent,n=w.readListAdapter(t),e.next=7,v.put(_.schedulesLoaded(n));case 7:e.next=14;break;case 9:return e.prev=9,e.t0=e.catch(0),e.next=13,v.put(_.loadSchedulesFail());case 13:j.errorHandler(e.t0);case 14:case"end":return e.stop()}},u,this,[[0,9]])}function o(e){var t,n,r=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,v.call(A.default,{method:"post",url:x.default.schedule,data:r.schedule});case 3:return t=e.sent,n=w.readObjectAdapter(t),e.next=7,v.put(_.scheduleAdded(n));case 7:r.resolve(),e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(0),e.next=14,v.put(_.addScheduleFail());case 14:j.errorHandler(e.t0);case 15:case"end":return e.stop()}},d,this,[[0,10]])}function a(e){var t=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,v.call(A.default,{method:"delete",url:x.default.schedule+"/"+t.id});case 3:return e.next=5,v.put(_.scheduleDeleted(t.id));case 5:e.next=12;break;case 7:return e.prev=7,e.t0=e.catch(0),e.next=11,v.put(_.deleteScheduleFail());case 11:j.errorHandler(e.t0);case 12:case"end":return e.stop()}},p,this,[[0,7]])}function i(e){var t,n,r,o=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,t="",e.t0=o.currentStatus,e.next="new"===e.t0?5:"failed"===e.t0?7:"started"===e.t0?9:"stopped"===e.t0?11:13;break;case 5:case 7:return t="start",e.abrupt("break",14);case 9:return t="stop",e.abrupt("break",14);case 11:return t="start",e.abrupt("break",14);case 13:return e.abrupt("break",14);case 14:return e.next=16,v.call(A.default,{method:"post",url:x.default.schedule+"/"+t+"/"+o.id});case 16:return n=e.sent,r=w.readObjectAdapter(n),e.next=20,v.put(_.currentScheduleStatusChanged(o.id,r));case 20:e.next=27;break;case 22:return e.prev=22,e.t1=e.catch(0),e.next=26,v.put(_.changeSchedulesStatusFail());case 26:j.errorHandler(e.t1);case 27:case"end":return e.stop()}},f,this,[[0,22]])}function s(e){var t,n,r=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,v.call(A.default,{method:"put",url:x.default.schedule+"/"+r.schedule.id,data:r.schedule});case 3:return t=e.sent,n=w.readObjectAdapter(t),e.next=7,v.put(_.scheduleUpdated(n));case 7:r.resolve(),e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(0),e.next=14,v.put(_.updateScheduleFail());case 14:j.errorHandler(e.t0);case 15:case"end":return e.stop()}},h,this,[[0,10]])}function l(e){var t,n,r,o,a,i,s,l,c,u=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return c=function(e){function t(e,n){for(var r in e)if(e[r].children){e[r]=Object.assign({},e[r],{contentType:"portal",label:""+e[r].name,key:e[r].name,value:e[r].id+"(p)",isLeaf:!0}),n.push(e[r]);var o=e[r].children;e[r].children=[],t(o,e[r].children)}else e[r]=Object.assign({},e[r],{contentType:"portal",label:""+e[r].name,key:e[r].name,value:e[r].id+"(p)",isLeaf:!0}),n.push(e[r])}var n={},r={},o=[];e.forEach(function(t,r){return n[e[r].id]=e[r]});for(var a in n)n[a].parentId?(n[n[a].parentId].children||(n[n[a].parentId].children={}),n[n[a].parentId].children[n[a].id]=n[a]):r[n[a].id]=n[a];return t(r,o),o},t=u.pid,e.prev=2,e.next=5,v.call(A.default,x.default.display+"?projectId="+t);case 5:return n=e.sent,e.next=8,v.call(A.default,x.default.portal+"?projectId="+t);case 8:return r=e.sent,o=w.readListAdapter(r),a=w.readListAdapter(n).map(function(e){return Object.assign({},e,{contentType:"display",label:""+e.name,key:e.name,value:e.id+"(d)",isLeaf:!0})}),e.next=13,v.all(o.map(function(e,t){return v.call(A.default,x.default.portal+"/"+e.id+"/dashboards")}));case 13:return i=e.sent,s=o.map(function(e,t){return e.children=c(w.readListAdapter(i[t])),Object.assign({},e,{contentType:"portal",label:""+e.name,key:e.name,value:e.id+"(p)",isLeaf:!0})}),l=[{contentType:"display",label:"Display",key:"display",value:"display",isLeaf:!0,children:a},{contentType:"portal",label:"Dashboard",key:"portal",value:"portal",isLeaf:!0,children:s}],e.next=18,v.put(_.vizsLoaded(l));case 18:e.next=25;break;case 20:return e.prev=20,e.t0=e.catch(2),e.next=24,v.put(_.loadVizsFail());case 24:E.error("获取失败");case 25:case"end":return e.stop()}},m,this,[[2,20]])}function c(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[b.takeEvery(y.LOAD_SCHEDULES,r),b.takeEvery(y.ADD_SCHEDULES,o),b.takeEvery(y.DELETE_SCHEDULES,a),b.takeEvery(y.CHANGE_SCHEDULE_STATUS,i),b.takeEvery(y.UPDATE_SCHEDULES,s),b.takeEvery(y.LOAD_VIZS,l)];case 2:case"end":return e.stop()}},g,this)}var u=regeneratorRuntime.mark(r),d=regeneratorRuntime.mark(o),p=regeneratorRuntime.mark(a),f=regeneratorRuntime.mark(i),h=regeneratorRuntime.mark(s),m=regeneratorRuntime.mark(l),g=regeneratorRuntime.mark(c);Object.defineProperty(t,"__esModule",{value:!0});var b=n("./node_modules/redux-saga/es/index.js"),v=n("./node_modules/redux-saga/es/effects.js"),y=n("./app/containers/Schedule/constants.ts"),_=n("./app/containers/Schedule/actions.ts"),A=n("./app/utils/request.ts"),x=n("./app/utils/api.js"),w=n("./app/utils/asyncAdapter.js"),j=n("./app/utils/util.ts"),E=n("./node_modules/antd/lib/message/index.js");t.getSchedules=r,t.addSchedules=o,t.deleteSchedule=a,t.changeScheduleStatus=i,t.updateSchedule=s,t.getVizsData=l,t.default=c},"./app/containers/Schedule/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("schedule")};t.selectSchedule=o;var a=function(){return r.createSelector(o,function(e){return e.get("schedule")})};t.makeSelectSchedule=a;var i=function(){return r.createSelector(o,function(e){return e.get("dashboards")})};t.makeSelectDashboards=i;var s=function(){return r.createSelector(o,function(e){return e.get("currentDashboard")})};t.makeSelectCurrentDashboard=s;var l=function(){return r.createSelector(o,function(e){return e.get("widgets")})};t.makeSelectWidgets=l;var c=function(){return r.createSelector(o,function(e){return e.get("tableLoading")})};t.makeSelectTableLoading=c;var u=function(){return r.createSelector(o,function(e){return e.get("formLoading")})};t.makeSelectFormLoading=u;var d=function(){return r.createSelector(o,function(e){return e.get("vizs")})};t.makeSelectVizs=d},"./app/containers/Source/SourceForm.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2],o=e.props,a=o.onCheckUniqueName,i=o.type,s=o.projectId,l=o.form,c=l.getFieldsValue(),u=c.id;a("source",{projectId:s,id:"add"===i?"":u,name:n},function(){r()},function(e){r(e)})},e}return a(t,e),s(t,[{key:"render",value:function(){var e=this.props,t=e.testLoading,n=e.form,r=e.onTestSourceConnection,o=n.getFieldDecorator,a={labelCol:{span:6},wrapperCol:{span:16}};return l.createElement(c,null,l.createElement(u,{gutter:8},l.createElement(d,{span:24},l.createElement(m,{className:b.hide},o("id",{hidden:"add"===this.props.type})(v)),l.createElement(m,i({label:"名称"},a,{hasFeedback:!0}),o("name",{rules:[{required:!0,message:"Name 不能为空"},{validator:this.checkNameUnique}]})(y))),l.createElement(d,{span:24},l.createElement(m,i({label:"类型"},a),o("type",{initialValue:"jdbc"})(_))),l.createElement(d,{span:24},l.createElement(m,i({label:"用户名"},a),o("user",{rules:[{required:!0,message:"User 不能为空"}],initialValue:""})(A))),l.createElement(d,{span:24},l.createElement(m,i({label:"密码"},a),o("password",{rules:[{required:!0,message:"Password 不能为空"}],initialValue:""})(x))),l.createElement(d,{span:24},l.createElement(m,i({label:"连接Url"},a),o("url",{rules:[{required:!0,message:"Url 不能为空"}],initialValue:""})(l.createElement(p,{placeholder:"Connection Url",addonAfter:t?w:l.createElement("span",{onClick:r,style:{cursor:"pointer"}},"点击测试")})))),l.createElement(d,{span:24},l.createElement(m,i({label:"描述"},a),o("desc",{initialValue:""})(l.createElement(p,{placeholder:"Description",type:"textarea",autosize:{minRows:2,maxRows:6}})))),l.createElement(d,{span:24},l.createElement(m,i({label:"配置信息"},a),o("config",{initialValue:""})(l.createElement(p,{placeholder:"Config",type:"textarea",autosize:{minRows:2,maxRows:6}}))))))}}]),t}(l.PureComponent);t.SourceForm=j,t.default=c.create()(j)},"./app/containers/Source/UploadCsvForm.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=Object.assign||function(e){for(var t=1;t0?[l.createElement("span",{key:t,className:I.highlight},n[0]),e]:e}))}):null}).filter(function(e){return!!e})})},n.testSourceConnection=function(){var e=n.sourceForm.props.form.getFieldsValue(),t=e.user,r=e.password,o=e.url;t&&r&&o?n.props.onTestSourceConnection({username:t,password:r,url:o}):w.error("用户名,密码和连接Url都不能为空")},n.uploadOnchange=function(e){if("uploading"!==e.file.status){0===e.fileList.length&&n.setState({isUploadDisabled:!1})}"done"===e.file.status?(w.success(e.file.name+" file uploaded successfully"),n.setState({formStep:2,isUploadDisabled:!0})):"error"===e.file.status&&w.error(e.file.name+" file upload failed.")},n.state={tableSource:[],tableSortedInfo:{},nameFilterValue:"",nameFilterDropdownVisible:!1,formVisible:!1,formType:"add",uploadFormVisible:!1,formStep:0,metaObj:{},isUploadDisabled:!1,newUploadModalKey:"1",screenWidth:0},n}return a(t,e),s(t,[{key:"componentWillMount",value:function(){this.props.onLoadSources(this.props.params.pid),this.setState({screenWidth:document.documentElement.clientWidth})}},{key:"componentWillReceiveProps",value:function(e){var t=this;window.onresize=function(){return t.setState({screenWidth:document.documentElement.clientWidth})},e.sources&&this.setState({tableSource:e.sources.map(function(e){return e.key=e.id,e})})}},{key:"render",value:function(){var e=this,t=this.state,n=t.tableSource,r=t.tableSortedInfo,o=t.nameFilterValue,a=t.nameFilterDropdownVisible,i=t.formVisible,s=t.uploadFormVisible,c=t.formType,u=t.formStep,d=t.metaObj,p=t.isUploadDisabled,f=t.newUploadModalKey,h=t.screenWidth,m=this.props,g=m.params,b=m.listLoading,w=m.formLoading,M=m.testLoading,D=m.onDeleteSource,P=m.currentProject,N=m.onCheckUniqueName,B=U.default(P,"source",!0)(C),F=U.default(P,"source",!1)(C),W=d.table_name,G=d.source_id,Q=d.replace_mode,q={name:"file",disabled:p,action:R.default.source+"/"+G+"/uploadcsv?tableName="+W+"&mode="+Q,onChange:this.uploadOnchange,headers:{authorization:"Bearer "+localStorage.getItem("TOKEN")}},K=l.createElement(T,{title:"删除"},l.createElement(B,{icon:"delete",shape:"circle",type:"ghost"})),X=[{title:"名称",dataIndex:"name",key:"name",filterDropdown:l.createElement(_.default,{placeholder:"name",value:o,onChange:this.onSearchInputChange,onSearch:this.onSearch}),filterDropdownVisible:a,onFilterDropdownVisibleChange:function(t){return e.setState({nameFilterDropdownVisible:t})},sorter:function(e,t){return e.name>t.name?-1:1},sortOrder:"name"===r.columnKey&&r.order},{title:"描述",dataIndex:"description",key:"description"},{title:"类型",dataIndex:"type",key:"type",filters:[{text:"JDBC",value:"jdbc"},{text:"CSV",value:"csv"}],filterMultiple:!1,onFilter:function(e,t){return t.type===e},render:function(e,t){switch(t.type){case"jdbc":return"JDBC";case"csv":return"CSV"}}},{title:"操作",key:"action",width:135,className:""+(z.initializePermission(P,"sourcePermission")?I.textAlignLeft:I.hide),render:function(t,n){return l.createElement("span",{className:"ant-table-action-column"},l.createElement(T,{title:"修改"},l.createElement(F,{icon:"edit",shape:"circle",type:"ghost",onClick:e.showDetail(n.id)})),l.createElement(O,{title:"确定删除?",placement:"bottom",onConfirm:D(n.id)},K),n&&"csv"===n.type?l.createElement(T,{title:"上传"},l.createElement(F,{icon:"upload",shape:"circle",type:"ghost",onClick:e.showUpload(n.id)})):"")}}],J={simple:h<768||768===h,defaultPageSize:20,showSizeChanger:!0},Z=[l.createElement(C,{key:"submit",size:"large",type:"primary",loading:w,disabled:w,onClick:this.onModalOk},"保 存"),l.createElement(C,{key:"back",size:"large",onClick:this.hideForm},"取 消")],$=u?[l.createElement(C,{key:"submit",size:"large",type:"primary",onClick:this.onUploadFile},"保 存")]:[l.createElement(C,{key:"forward",size:"large",type:"primary",onClick:this.changeFormStep(1)},"下一步")];return l.createElement(v.default,null,H,l.createElement(v.default.Title,null,l.createElement(E,null,l.createElement(S,{span:24},l.createElement(L,{className:I.breadcrumb},V)))),l.createElement(v.default.Body,null,l.createElement(y.default,null,l.createElement(y.default.Header,null,Y,l.createElement(y.default.Tools,null,l.createElement(T,{placement:"bottom",title:"新增"},l.createElement(B,{type:"primary",icon:"plus",onClick:this.showAdd})))),l.createElement(y.default.Body,null,l.createElement(E,null,l.createElement(S,{span:24},l.createElement(k,{dataSource:n,columns:X,pagination:J,loading:b,onChange:this.handleTableChange,bordered:!0}))),l.createElement(j,{title:("add"===c?"新增":"修改")+" Source",wrapClassName:"ant-modal-small",visible:i,footer:Z,onCancel:this.hideForm},l.createElement(A.default,{type:c,projectId:g.pid,testLoading:M,onTestSourceConnection:this.testSourceConnection,onCheckUniqueName:N,wrappedComponentRef:this.refHandlers.sourceForm})),l.createElement(j,{title:"上传CSV",key:f,visible:s,wrapClassName:"ant-modal-small",footer:$,onCancel:this.hideUploadForm},l.createElement(x.default,{step:u,uploadProps:q,wrappedComponentRef:this.refHandlers.uploadForm}))))))}}]),t}(l.PureComponent);t.Source=W,t.mapDispatchToProps=i;var G=d.createStructuredSelector({sources:P.makeSelectSources(),listLoading:P.makeSelectListLoading(),formLoading:P.makeSelectFormLoading(),testLoading:P.makeSelectTestLoading(),currentProject:F.makeSelectCurrentProject()}),Q=u.connect(G,i),q=h.default({key:"source",reducer:g.default}),K=m.default({key:"source",saga:b.default});t.default=f.compose(q,K,Q)(W)},"./app/containers/Source/reducer.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i,t=arguments[1],n=t.type,r=t.payload,a=e.get("sources");switch(n){case o.LOAD_SOURCES:return e.set("listLoading",!0);case o.LOAD_SOURCES_SUCCESS:return e.set("listLoading",!1).set("sources",r.sources);case o.LOAD_SOURCES_FAILURE:return e.set("listLoading",!1);case o.ADD_SOURCE:return e.set("formLoading",!0);case o.ADD_SOURCE_SUCCESS:return a?(a.unshift(r.result),e.set("formLoading",!1).set("sources",a.slice())):e.set("formLoading",!1).set("sources",[r.result]);case o.ADD_SOURCE_FAILURE:return e.set("formLoading",!1);case o.DELETE_SOURCE:return e.set("listLoading",!0);case o.DELETE_SOURCE_SUCCESS:return e.set("listLoading",!1).set("sources",a.filter(function(e){return e.id!==r.id}));case o.DELETE_SOURCE_FAILURE:return e.set("listLoading",!1);case o.LOAD_SOURCE_DETAIL:case o.LOAD_SOURCE_DETAIL_SUCCESS:return e;case o.EDIT_SOURCE:return e.set("formLoading",!0);case o.EDIT_SOURCE_SUCCESS:return a.splice(a.findIndex(function(e){return e.id===r.result.id}),1,r.result),e.set("formLoading",!1).set("sources",a.slice());case o.EDIT_SOURCE_FAILURE:return e.set("formLoading",!1);case o.TEST_SOURCE_CONNECTION:return e.set("testLoading",!0);case o.TEST_SOURCE_CONNECTION_SUCCESS:case o.TEST_SOURCE_CONNECTION_FAILURE:return e.set("testLoading",!1);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Source/constants.ts"),a=n("./node_modules/immutable/dist/immutable.js"),i=a.fromJS({sources:!1,listLoading:!1,formLoading:!1,testLoading:!1});t.default=r},"./app/containers/Source/sagas.ts":function(e,t,n){"use strict";function r(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,o.prev=1,o.next=4,_.call(w.default,j.default.source+"?projectId="+t.projectId);case 4:return n=o.sent,r=E.readListAdapter(n),o.next=8,_.put(x.sourcesLoaded(r));case 8:o.next=15;break;case 10:return o.prev=10,o.t0=o.catch(1),o.next=14,_.put(x.loadSourceFail());case 14:S.errorHandler(o.t0);case 15:case"end":return o.stop()}},d,this,[[1,10]])}function o(e){var t,n;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=e.payload,r.prev=1,r.next=4,_.call(w.default,{method:"post",url:j.default.source,data:t.source});case 4:return n=r.sent,t.resolve(),r.next=8,_.put(x.sourceAdded(n.payload));case 8:r.next=15;break;case 10:return r.prev=10,r.t0=r.catch(1),r.next=14,_.put(x.addSourceFail());case 14:S.errorHandler(r.t0);case 15:case"end":return r.stop()}},p,this,[[1,10]])}function a(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,o.prev=1,o.next=4,_.call(w.default,{method:"delete",url:j.default.source+"/"+t.id});case 4:return n=o.sent,r=n.header.code,o.next=8,_.put(x.sourceDeleted(t.id));case 8:o.next=15;break;case 10:return o.prev=10,o.t0=o.catch(1),o.next=14,_.put(x.deleteSourceFail());case 14:S.errorHandler(o.t0);case 15:case"end":return o.stop()}},f,this,[[1,10]])}function i(e){var t,n;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=e.payload,r.prev=1,r.next=4,_.call(w.default,j.default.source+"/"+t.id);case 4:return n=r.sent,r.next=7,_.put(x.sourceDetailLoaded(n));case 7:r.next=14;break;case 9:return r.prev=9,r.t0=r.catch(1),r.next=13,_.put(x.loadSourceDetailFail());case 13:S.errorHandler(r.t0);case 14:case"end":return r.stop()}},h,this,[[1,9]])}function s(e){var t,n,r,o,a,i,s,l,c,u,d;return regeneratorRuntime.wrap(function(p){for(;;)switch(p.prev=p.next){case 0:return t=e.payload,n=t.source,r=t.resolve,o=n.config,a=n.description,i=n.id,s=n.name,l=n.type,p.prev=2,p.next=5,_.call(w.default,{method:"put",url:j.default.source+"/"+n.id,data:{config:o,description:a,id:i,name:s,type:l}});case 5:return c=o.password,u=o.url,d=o.username,n.config=JSON.stringify(o),n.password=c,n.jdbcUrl=u,n.username=d,p.next=12,_.put(x.sourceEdited(n));case 12:r(),p.next=20;break;case 15:return p.prev=15,p.t0=p.catch(2),p.next=19,_.put(x.editSourceFail());case 19:S.errorHandler(p.t0);case 20:case"end":return p.stop()}},m,this,[[2,15]])}function l(e){var t,n;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=e.payload,r.prev=1,r.next=4,_.call(w.default,{method:"post",url:j.default.source+"/test",data:t.url});case 4:return n=r.sent,r.next=7,_.put(x.sourceConnected());case 7:k.success("测试成功"),r.next=15;break;case 10:return r.prev=10,r.t0=r.catch(1),r.next=14,_.put(x.testSourceConnectionFail());case 14:S.errorHandler(r.t0);case 15:case"end":return r.stop()}},g,this,[[1,10]])}function c(e){var t,n,r,o,a,i,s,l;return regeneratorRuntime.wrap(function(c){for(;;)switch(c.prev=c.next){case 0:return t=e.payload,n=t.resolve,r=t.reject,o=e.payload.csvMeta,a=o.source_id,i=o.replace_mode,s=o.table_name,c.prev=2,c.next=5,_.call(w.default,{url:j.default.source+"/"+a+"/csvmeta",method:"post",data:{mode:i,tableName:s}});case 5:l=c.sent,l&&l.header&&200===l.header.code?n():r(l.header.msg),c.next=12;break;case 9:c.prev=9,c.t0=c.catch(2),r(c.t0);case 12:case"end":return c.stop()}},b,this,[[2,9]])}function u(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[y.takeLatest(A.LOAD_SOURCES,r),y.takeEvery(A.ADD_SOURCE,o),y.takeEvery(A.DELETE_SOURCE,a),y.takeLatest(A.LOAD_SOURCE_DETAIL,i),y.takeEvery(A.EDIT_SOURCE,s),y.takeEvery(A.TEST_SOURCE_CONNECTION,l),y.takeEvery(A.GET_CSV_META_ID,c)];case 2:case"end":return e.stop()}},v,this)}var d=regeneratorRuntime.mark(r),p=regeneratorRuntime.mark(o),f=regeneratorRuntime.mark(a),h=regeneratorRuntime.mark(i),m=regeneratorRuntime.mark(s),g=regeneratorRuntime.mark(l),b=regeneratorRuntime.mark(c),v=regeneratorRuntime.mark(u);Object.defineProperty(t,"__esModule",{value:!0});var y=n("./node_modules/redux-saga/es/index.js"),_=n("./node_modules/redux-saga/es/effects.js"),A=n("./app/containers/Source/constants.ts"),x=n("./app/containers/Source/actions.ts"),w=n("./app/utils/request.ts"),j=n("./app/utils/api.js"),E=n("./app/utils/asyncAdapter.js"),S=n("./app/utils/util.ts"),k=n("./node_modules/antd/lib/message/index.js");t.getSources=r,t.addSource=o,t.deleteSource=a,t.getSourceDetail=i,t.editSource=s,t.testSourceConnection=l,t.getCsvMetaId=c,t.default=u},"./app/containers/Source/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("source")};t.selectSource=o;var a=function(){return r.createSelector(o,function(e){return e.get("sources")})};t.makeSelectSources=a;var i=function(){return r.createSelector(o,function(e){return e.get("listLoading")})};t.makeSelectListLoading=i;var s=function(){return r.createSelector(o,function(e){return e.get("formLoading")})};t.makeSelectFormLoading=s;var l=function(){return r.createSelector(o,function(e){return e.get("testLoading")})};t.makeSelectTestLoading=l},"./app/containers/Source/upload.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Source/upload.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Teams/Team.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Teams/Team.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Teams/Team.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{onEditTeam:function(t){return e(j.editTeam(t))},onLoadTeams:function(){return e(j.loadTeams())},onDeleteTeam:function(t,n){return e(j.deleteTeam(t,n))},onLoadTeamProjects:function(t){return e(j.loadTeamProjects(t))},onLoadTeamMembers:function(t){return e(j.loadTeamMembers(t))},onLoadTeamTeams:function(t){return e(j.loadTeamTeams(t))},onDeleteTeamProject:function(t){return e(j.deleteTeamProject(t))},onDeleteTeamMember:function(t){return e(j.deleteTeamMember(t))},onChangeTeamMemberRole:function(t,n){return e(j.changeTeamMemberRole(t,n))},onLoadTeamDetail:function(t,n){return e(j.loadTeamDetail(t,n))},onLoadOrganizationProjects:function(t){return e(T.loadOrganizationProjects(t))},onLoadOrganizationMembers:function(t){return e(T.loadOrganizationMembers(t))},onLoadOrganizationTeams:function(t){return e(T.loadOrganizationTeams(t))},onPullProjectInTeam:function(t,n,r){return e(j.pullProjectInTeam(t,n,r))},onPullMemberInTeam:function(t,n,r){return e(j.pullMemberInTeam(t,n,r))},onUpdateTeamProjectPermission:function(t,n,r){return e(j.updateTeamProjectPermission(t,n,r))}}}var s=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:n.props.params.teamId,t=n.props,r=t.onLoadTeamProjects,o=t.onLoadTeamMembers,a=t.onLoadTeamTeams,i=t.onLoadTeamDetail,s=t.onLoadOrganizationProjects,l=t.onLoadOrganizationMembers,c=t.onLoadOrganizationTeams;r(Number(e)),o(Number(e)),a(Number(e)),i(Number(e),function(e){var t=e.organization.id;s({id:Number(t)}),l(Number(t)),c(Number(t))})},n.toThatTeam=function(e){e&&n.props.router.push(e)},n.computeTeamNum=function(e,t){for(var r=0;r0&&n.computeTeamNum(e[r].children,t)},n.deleteProject=function(e,t){return function(){e.stopPropagation(),t&&n.props.onDeleteTeamProject(t)}},n.pullProjectInTeam=function(e){var t=n.props,r=t.onPullProjectInTeam,o=t.onLoadTeamDetail,a=t.params.teamId;e&&r(Number(a),e,function(){o(Number(a))})},n.createTeamRouter=function(e){function t(e,n){return n&&n.hasOwnProperty("id")&&n.hasOwnProperty("name")&&(e.push({id:n.id,name:n.name}),n.hasOwnProperty("child")&&""!==n.child&&t(e,n.child)),e}var n=[];return t(n,e),n},n.deleteTeam=function(e){return function(){n.props.onDeleteTeam(e,function(){n.props.router.push("/account/teams")})}},n.editTeam=function(e){return function(){var t=Object.assign({},e);delete t.parentTeamId,n.props.onEditTeam(t)}},n.teamTeams=[],n}return a(t,e),s(t,[{key:"componentWillMount",value:function(){(0,this.props.onLoadTeams)(),this.loadDatas()}},{key:"componentWillReceiveProps",value:function(e){var t=this,n=this.props,r=n.params.teamId,o=n.currentTeamTeams,a=e.params.teamId;r!==a&&this.loadDatas(a),this.teamTeams=[],this.computeTeamNum(o,this.teamTeams),this.teamTeams.filter(function(e,n){return t.teamTeams.indexOf(e)===n})}},{key:"render",value:function(){var e=this.props,t=e.teamRouter,n=e.currentTeam,r=e.currentTeamProjects,o=e.currentTeamTeams,a=e.currentTeamMembers,i=e.currentOrganizationProjects,s=e.currentOrganizationMembers,c=n.avatar,u=n.name,w=r.length,j=a.length,E=this.teamTeams.length,S=this.createTeamRouter(t);return l.createElement(p.default,null,l.createElement(p.default.Header,null,l.createElement(p.default.Title,null,l.createElement(A,{className:v.breadcrumb},M,S?S.map(function(e){return l.createElement(A.Item,{key:e.name+"@@@"+e.id},l.createElement(d.Link,{to:"/account/team/"+e.id},e.name))}):""))),l.createElement(p.default.Body,null,l.createElement("div",{className:b.teamLogo},l.createElement(x.default,{path:c,enlarge:!1,size:"small"}),l.createElement("div",{className:b.title},u)),l.createElement(y,{onChange:this.tabChange},l.createElement(_,{tab:l.createElement("span",null,O,"项目",l.createElement("span",{className:b.badge},w)),key:"projects"},l.createElement(h.default,{deleteProject:this.deleteProject,currentTeam:n,currentTeamProjects:r,currentOrganizationProjects:i,pullProjectInTeam:this.pullProjectInTeam,onUpdateTeamProjectPermission:this.props.onUpdateTeamProjectPermission})),l.createElement(_,{tab:l.createElement("span",null,L,"成员",l.createElement("span",{className:b.badge},j)),key:"members"},l.createElement(f.default,{currentTeam:n,deleteTeamMember:this.props.onDeleteTeamMember,pullMemberInTeam:this.props.onPullMemberInTeam,changeTeamMemberRole:this.props.onChangeTeamMemberRole,currentTeamMembers:a,currentOrganizationMembers:s})),l.createElement(_,{tab:l.createElement("span",null,D,"团队",l.createElement("span",{className:b.badge},E)),key:"teams"},l.createElement(g.default,{toThatTeam:this.toThatTeam,currentTeam:n,currentTeamTeams:o})),n&&1===n.role?l.createElement(_,{tab:P,key:"settings"},l.createElement(m.default,{teams:this.props.teams,currentTeam:n,editTeam:this.editTeam,deleteTeam:this.deleteTeam})):"")))}}]),t}(l.Component);t.Teams=I;var R=E.createStructuredSelector({loginUser:S.makeSelectLoginUser(),teams:k.makeSelectTeams(),teamRouter:k.makeSelectTeamRouter(),currentTeam:k.makeSelectCurrentTeams(),currentTeamProjects:k.makeSelectCurrentTeamProjects(),currentTeamTeams:k.makeSelectCurrentTeamTeams(),currentTeamMembers:k.makeSelectCurrentTeamMembers(),currentOrganizationProjects:C.makeSelectCurrentOrganizationProjects(),currentOrganizationTeams:C.makeSelectCurrentOrganizationTeams(),currentOrganizationMembers:C.makeSelectCurrentOrganizationMembers()});t.mapDispatchToProps=i;var N=c.connect(R,i);t.default=w.compose(N)(I)},"./app/containers/Teams/actions.ts":function(e,t,n){"use strict";function r(){return{type:H.LOAD_TEAMS}}function o(e){return{type:H.LOAD_TEAMS_SUCCESS,payload:{teams:e}}}function a(){return{type:H.LOAD_TEAMS_FAILURE}}function i(e){return{type:H.EDIT_TEAM,payload:{team:e}}}function s(e){return{type:H.EDIT_TEAM_SUCCESS,payload:{result:e}}}function l(){return{type:H.EDIT_TEAM_FAILURE}}function c(e,t){return{type:H.DELETE_TEAM,payload:{id:e,resolve:t}}}function u(e){return{type:H.DELETE_TEAM_SUCCESS,payload:{id:e}}}function d(){return{type:H.DELETE_TEAM_FAILURE}}function p(e,t){return{type:H.LOAD_TEAM_DETAIL,payload:{id:e,resolve:t}}}function f(e){return{type:H.LOAD_TEAM_DETAIL_SUCCESS,payload:{team:e}}}function h(e,t){return{type:H.LOAD_TEAM_DETAIL_FAILURE,payload:{team:e,widgets:t}}}function m(e){return{type:H.LOAD_TEAM_PROJECTS,payload:{id:e}}}function g(e){return{type:H.LOAD_TEAM_PROJECTS_SUCCESS,payload:{projects:e}}}function b(){return{type:H.LOAD_TEAM_PROJECTS_FAILURE}}function v(e){return{type:H.LOAD_TEAM_MEMBERS,payload:{id:e}}}function y(e){return{type:H.LOAD_TEAM_MEMBERS_SUCCESS,payload:{members:e}}}function _(){return{type:H.LOAD_TEAM_MEMBERS_FAILURE}}function A(e){return{type:H.LOAD_TEAM_TEAMS,payload:{id:e}}}function x(e){return{type:H.LOAD_TEAM_TEAMS_SUCCESS,payload:{teams:e}}}function w(){return{type:H.LOAD_TEAM_TEAMS_FAILURE}}function j(e,t,n){return{type:H.PULL_PROJECT_IN_TEAM,payload:{id:e,projectId:t,resolve:n}}}function E(e){return{type:H.PULL_PROJECT_IN_TEAM_SUCCESS,payload:{result:e}}}function S(){return{type:H.PULL_PROJECT_IN_TEAM_FAILURE}}function k(e,t,n){return{type:H.UPDATE_TEAM_PROJECT_PERMISSION,payload:{relationId:e,relTeamProjectDto:t,resolve:n}}}function C(e){return{type:H.UPDATE_TEAM_PROJECT_PERMISSION_SUCCESS,payload:{result:e}}}function T(){return{type:H.UPDATE_TEAM_PROJECT_PERMISSION_FAILURE}}function M(e){return{type:H.DELETE_TEAM_PROJECT,payload:{relationId:e}}}function O(e){return{type:H.DELETE_TEAM_PROJECT_SUCCESS,payload:{id:e}}}function L(){return{type:H.DELETE_TEAM_PROJECT_FAILURE}}function D(e){return{type:H.DELETE_TEAM_MEMBER,payload:{relationId:e}}}function P(e){return{type:H.DELETE_TEAM_MEMBER_SUCCESS,payload:{id:e}}}function I(){return{type:H.DELETE_TEAM_MEMBER_ERROR}}function R(e,t,n){return{type:H.PULL_MEMBER_IN_TEAM,payload:{teamId:e,memberId:t,resolve:n}}}function N(e){return{type:H.PULL_MEMBER_IN_TEAM_SUCCESS,payload:{result:e}}}function B(){return{type:H.PULL_MEMBRE_IN_TEAM_FAILURE}}function F(e,t){return{type:H.CHANGE_MEMBER_ROLE_TEAM,payload:{relationId:e,newRole:t}}}function U(e,t){return{type:H.CHANGE_MEMBER_ROLE_TEAM_SUCCESS,payload:{relationId:e,newRole:t}}}function z(){return{type:H.CHANGE_MEMBER_ROLE_TEAM_ERROR}}Object.defineProperty(t,"__esModule",{value:!0});var H=n("./app/containers/Teams/constants.ts");t.loadTeams=r,t.teamsLoaded=o,t.loadTeamsFail=a,t.editTeam=i,t.teamEdited=s,t.editTeamFail=l,t.deleteTeam=c,t.teamDeleted=u,t.deleteTeamFail=d,t.loadTeamDetail=p,t.teamDetailLoaded=f,t.loadTeamDetailFail=h,t.loadTeamProjects=m,t.teamProjectsLoaded=g,t.loadTeamProjectsFail=b,t.loadTeamMembers=v,t.teamMembersLoaded=y,t.loadTeamMembersFail=_,t.loadTeamTeams=A,t.teamTeamsLoaded=x,t.loadTeamTeamsFail=w,t.pullProjectInTeam=j,t.projectInTeamPulled=E,t.pullProjectInTeamFail=S,t.updateTeamProjectPermission=k,t.teamProjectPermissionUpdated=C,t.updateTeamProjectPermissionFail=T,t.deleteTeamProject=M,t.teamProjectDeleted=O,t.deleteTeamProjectFail=L,t.deleteTeamMember=D,t.teamMemberDeleted=P,t.deleteTeamMemberFail=I,t.pullMemberInTeam=R,t.memberInTeamPulled=N,t.pullMemberInTeamFail=B,t.changeTeamMemberRole=F,t.teamMemberRoleChanged=U,t.changeTeamMemberRoleFail=z},"./app/containers/Teams/component/AddForm.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=function(){function e(e,t){for(var n=0;n-1});n.setState({currentTeamMembers:t&&t.length?o:n.props.currentTeamMembers})},n.showAddForm=function(e){return function(t){t.stopPropagation(),n.setState({formType:e,formVisible:!0})}},n.hideAddForm=function(){n.setState({formVisible:!1,formKey:n.state.formKey+11})},n.add=function(){var e=n.props.currentTeam;n.AddForm.validateFieldsAndScroll(function(t,r){if(!t){var o=r.projectId,a=e.id;n.props.pullMemberInTeam(a,o,function(){n.hideAddForm()})}})},n.removeMemberForm=function(e,t){return function(){n.props.deleteTeamMember(t.id)}},n.changRole=function(){n.ChangeRoleForm.validateFieldsAndScroll(function(e,t){if(!e){var r=t.id,o=t.role;n.props.changeTeamMemberRole(r,o),n.hideChangeRoleForm()}})},n.hideChangeRoleForm=function(){n.setState({changeRoleFormVisible:!1,changeRoleModalLoading:!1},function(){n.ChangeRoleForm.resetFields()})},n.showChangeRoleForm=function(e,t){return function(r){r.stopPropagation(),n.setState({currentMember:t,changeRoleFormVisible:!0,changeRoleFormCategory:e},function(){var e=t.user.role,r=t.id;n.ChangeRoleForm.setFieldsValue({id:r,role:e})})}},n.state={formKey:0,formType:"",category:"",modalLoading:!1,formVisible:!1,changeRoleFormCategory:"",currentMember:{},changeRoleFormVisible:!1,changeRoleModalLoading:!1,currentTeamMembers:[]},n}return a(t,e),i(t,[{key:"componentDidMount",value:function(){var e=this.props.currentTeamMembers;e&&this.setState({currentTeamMembers:e})}},{key:"componentWillReceiveProps",value:function(e){var t=this.props.currentTeamMembers,n=e.currentTeamMembers;n&&n!==t&&this.setState({currentTeamMembers:n})}},{key:"render",value:function(){var e=this,t=this.state,n=t.formVisible,r=t.formType,o=t.changeRoleFormVisible,a=t.changeRoleModalLoading,i=t.changeRoleFormCategory,w=t.currentTeamMembers,j=this.props.currentTeam,E=void 0;j&&(E=_.default(j,"")(p));var S=s.createElement(u,{placement:"bottom",title:"添加"},s.createElement(E,{size:"large",type:"primary",icon:"plus",onClick:this.showAddForm("teamMember")})),k=[];return k=j&&1===j.role?[{title:"Name",dataIndex:"user",key:"user",render:function(e){return s.createElement("div",{className:g.avatarWrapper},s.createElement(v.default,{path:e.avatar,size:"small",enlarge:!0}),s.createElement("span",{className:g.avatarName},e.username))}},{title:"role",dataIndex:"user",key:"userKey",render:function(e){return s.createElement("span",null,1===e.role?"Maintainer":"Member")}},{title:"settings",dataIndex:"user",key:"settings",render:function(t,n){return s.createElement("span",null,s.createElement(d,{title:"确定删除此成员吗?",placement:"bottom",onConfirm:e.removeMemberForm(t,n)},A),x,s.createElement("a",{href:"javascript:;",onClick:e.showChangeRoleForm("teamMember",n)},"改变角色"))}}]:[{title:"Name",dataIndex:"user",key:"user",render:function(e){return s.createElement("div",{className:g.avatarWrapper},s.createElement(v.default,{path:e.avatar,size:"small",enlarge:!0}),s.createElement("span",{className:g.avatarName},e.username))}},{title:"role",dataIndex:"user",key:"userKey",render:function(e){return s.createElement("span",null,1===e.role?"Maintainer":"Member")}}],s.createElement("div",{className:g.listWrapper},s.createElement(l,null,s.createElement(c,{span:16},s.createElement(f.Search,{size:"large",placeholder:"placeholder",onChange:this.onSearchMember})),s.createElement(c,{span:1,offset:7},S)),s.createElement(l,null,s.createElement("div",{className:g.tableWrap},s.createElement(h,{bordered:!0,columns:k,dataSource:w}))),s.createElement(m,{key:this.state.formKey,title:null,footer:null,visible:n,onCancel:this.hideAddForm},s.createElement(b.default,{category:r,organizationOrTeam:j,addHandler:this.add,ref:function(t){e.AddForm=t},currentOrganizationMembers:this.props.currentOrganizationMembers})),s.createElement(m,{title:null,visible:o,footer:null,onCancel:this.hideChangeRoleForm},s.createElement(y.default,{category:i,organizationOrTeam:this.props.currentTeam,submitLoading:a,ref:function(t){e.ChangeRoleForm=t},changeHandler:this.changRole})))}}]),t}(s.PureComponent);t.MemberList=w,t.default=w},"./app/containers/Teams/component/PermissionLevel.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=Object.assign||function(e){for(var t=1;t-1});n.setState({currentTeamProjects:t&&t.length?o:n.props.currentTeamProjects})},n.stopPPG=function(e){e.stopPropagation()},n.headerPanel=function(e){var t=n.props.currentTeam,r=void 0;return t&&(r=A.default(t,"")(d)),s.createElement("div",{className:g.headerPanel},s.createElement("div",{className:g.titleWrapper},s.createElement("div",{className:g.avatar},s.createElement(_.default,{size:"small",path:e.project.path})),s.createElement("div",{className:g.title},e.project.name)),s.createElement("div",{className:g.delete},s.createElement(c,{title:"确定删除?",placement:"bottom",onConfirm:n.props.deleteProject(event,e.id)},s.createElement(u,{title:"删除"},s.createElement(r,{shape:"circle",icon:"close",onClick:n.stopPPG})))))},n.state={formKey:0,modalLoading:!1,formType:"",formVisible:!1,currentTeamProjects:[]},n}return a(t,e),i(t,[{key:"componentWillReceiveProps",value:function(e){var t=this.props.currentTeamProjects,n=e.currentTeamProjects;n&&n!==t&&this.setState({currentTeamProjects:n})}},{key:"render",value:function(){var e=this,t=this.state,n=t.formVisible,r=t.formType,o=(t.modalLoading,t.currentTeamProjects),a=this.props,i=a.currentTeam,c=a.currentOrganizationProjects,b=void 0;i&&(b=A.default(i,"")(d));var _=s.createElement(l,{defaultActiveKey:["project0"]},o?o.map(function(t,n){return s.createElement(l.Panel,{header:e.headerPanel(t),key:"project"+n},s.createElement(v.default,{param:t,role:i.role,selectChanged:e.selectChanged(t.project.id+"permissionForm"),ref:function(n){e[t.project.id+"permissionForm"]=n}}))}):""),x=s.createElement(u,{placement:"bottom",title:"添加"},s.createElement(b,{size:"large",type:"primary",icon:"plus",onClick:this.showAddForm("project")}));return s.createElement("div",{className:g.listWrapper},s.createElement(p,null,s.createElement(f,{span:16},s.createElement(m.Search,{size:"large",placeholder:"Project 名称",onChange:this.onSearchProject})),s.createElement(f,{span:1,offset:7},x)),s.createElement("div",{style:{height:"24px"}}),_,s.createElement(h,{key:this.state.formKey,title:null,footer:null,visible:n,onCancel:this.hideAddForm},s.createElement(y.default,{category:r,organizationOrTeam:i,currentOrganizationProjects:c,ref:function(t){e.AddForm=t},addHandler:this.add})))}}]),t}(s.PureComponent);t.ProjectList=x,t.default=x},"./app/containers/Teams/component/Setting.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=Object.assign||function(e){for(var t=1;t0&&n.filter(e.children),e.children&&0===e.children.length&&delete e.children}),e):e},n.state={modalLoading:!1,formType:"",formVisible:!1},n}return a(t,e),i(t,[{key:"render",value:function(){var e=this,t=this.state.formVisible,n=this.props.currentTeamTeams;this.filter(n);var r=[{title:"Name",dataIndex:"name",key:"name",width:"40%",render:function(t,n){return s.createElement("a",{href:"javascript:;",onClick:e.toThatTeam(t,n),className:p.avatarName},t)}},{title:"Member",dataIndex:"users",key:"users",width:"30%",render:function(e){return s.createElement("div",{className:p.avatarWrapper},e.map(function(e,t){return s.createElement(c,{key:"tooltip"+t,placement:"topRight",title:e.username},s.createElement("span",null,s.createElement(h.default,{key:t,path:e.avatar,size:"small",enlarge:!0})))}),s.createElement("span",{className:p.avatarName},(e?e.length:0)+"menbers"))}}];return s.createElement("div",{className:p.listWrapper},s.createElement(l,null,s.createElement("div",{className:p.tableWrap},s.createElement(u,{bordered:!0,columns:r,dataSource:n}))),s.createElement(d,{title:null,footer:null,visible:t,onCancel:this.hideAddForm},s.createElement(f.default,{ref:function(t){e.AddForm=t}})))}}]),t}(s.PureComponent);t.TeamList=m,t.default=m},"./app/containers/Teams/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LOAD_TEAMS="davinci/Team/LOAD_TEAMS",t.LOAD_TEAMS_SUCCESS="davinci/Team/LOAD_TEAMS_SUCCESS",t.LOAD_TEAMS_FAILURE="davinci/Team/LOAD_TEAMS_FAILURE",t.EDIT_TEAM="davinci/Team/EDIT_TEAM",t.EDIT_TEAM_SUCCESS="davinci/Team/EDIT_TEAM_SUCCESS",t.EDIT_TEAM_FAILURE="davinci/Team/EDIT_TEAM_FAILURE",t.DELETE_TEAM="davinci/Team/DELETE_TEAM",t.DELETE_TEAM_SUCCESS="davinci/Team/DELETE_TEAM_SUCCESS",t.DELETE_TEAM_FAILURE="davinci/Team/DELETE_TEAM_FAILURE",t.LOAD_TEAM_DETAIL="davinci/Team/LOAD_TEAM_DETAIL",t.LOAD_TEAM_DETAIL_SUCCESS="davinci/Team/LOAD_TEAM_DETAIL_SUCCESS",t.LOAD_TEAM_DETAIL_FAILURE="davinci/Team/LOAD_TEAM_DETAIL_FAILURE",t.LOAD_TEAM_PROJECTS="davinci/Organization/LOAD_TEAM_PROJECTS",t.LOAD_TEAM_PROJECTS_SUCCESS="davinci/Organization/LOAD_TEAM_PROJECTS_SUCCESS",t.LOAD_TEAM_PROJECTS_FAILURE="davinci/Organization/LOAD_TEAM_PROJECTS_FAILURE",t.LOAD_TEAM_MEMBERS="davinci/Organization/LOAD_TEAM_MEMBERS",t.LOAD_TEAM_MEMBERS_SUCCESS="davinci/Organization/LOAD_TEAM_MEMBERS_SUCCESS",t.LOAD_TEAM_MEMBERS_FAILURE="davinci/Organization/LOAD_TEAM_MEMBERS_FAILURE",t.LOAD_TEAM_TEAMS="davinci/Organization/LOAD_TEAM_TEAMS",t.LOAD_TEAM_TEAMS_SUCCESS="davinci/Organization/LOAD_TEAM_TEAMS_SUCCESS",t.LOAD_TEAM_TEAMS_FAILURE="davinci/Organization/LOAD_TEAM_TEAMS_FAILURE",t.PULL_MEMBER_IN_TEAM="davinci/Organization/PULL_MEMBER_IN_TEAM",t.PULL_MEMBER_IN_TEAM_SUCCESS="davinci/Organization/PULL_MEMBER_IN_TEAM_SUCCESS",t.PULL_MEMBRE_IN_TEAM_FAILURE="davinci/Organization/PULL_MEMBRE_IN_TEAM_FAILURE",t.PULL_PROJECT_IN_TEAM="davinci/Organization/PULL_PROJECT_IN_TEAM",t.PULL_PROJECT_IN_TEAM_SUCCESS="davinci/Organization/PULL_PROJECT_IN_TEAM_SUCCESS",t.PULL_PROJECT_IN_TEAM_FAILURE="davinci/Organization/PULL_PROJECT_IN_TEAM_FAILURE",t.UPDATE_TEAM_PROJECT_PERMISSION="davinci/Organization/UPDATE_TEAM_PROJECT_PERMISSION",t.UPDATE_TEAM_PROJECT_PERMISSION_SUCCESS="davinci/Organization/UPDATE_TEAM_PROJECT_PERMISSION_SUCCESS",t.UPDATE_TEAM_PROJECT_PERMISSION_FAILURE="davinci/Organization/UPDATE_TEAM_PROJECT_PERMISSION_FAILURE",t.DELETE_TEAM_PROJECT="davinci/Project/DELETE_TEAM_PROJECT",t.DELETE_TEAM_PROJECT_SUCCESS="davinci/Project/DELETE_TEAM_PROJECT_SUCCESS",t.DELETE_TEAM_PROJECT_FAILURE="davinci/Project/DELETE_TEAM_PROJECT_FAILURE",t.DELETE_TEAM_MEMBER="davinci/Project/DELETE_TEAM_MEMBER",t.DELETE_TEAM_MEMBER_SUCCESS="davinci/Project/DELETE_TEAM_MEMBER_SUCCESS",t.DELETE_TEAM_MEMBER_ERROR="davinci/Project/DELETE_TEAM_MEMBER_ERROR",t.CHANGE_MEMBER_ROLE_TEAM="davinci/Team/CHANGE_MEMBER_ROLE_TEAM",t.CHANGE_MEMBER_ROLE_TEAM_SUCCESS="davinci/Team/CHANGE_MEMBER_ROLE_TEAM_SUCCESS",t.CHANGE_MEMBER_ROLE_TEAM_ERROR="davinci/Team/CHANGE_MEMBER_ROLE_TEAM_ERROR"},"./app/containers/Teams/index.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{onLoadTeams:function(){return e(m.loadTeams())}}}var s=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:s,t=arguments[1],n=t.type,r=t.payload,o=e.get("teams"),l=e.get("currentTeamProjects"),c=e.get("currentTeamMembers");switch(n){case a.LOAD_TEAMS_SUCCESS:return e.set("teams",r.teams);case a.LOAD_TEAMS_FAILURE:return e;case a.DELETE_TEAM_SUCCESS:return e.set("teams",o.filter(function(e){return e.id!==r.id}));case a.LOAD_TEAM_DETAIL:return e.set("currentTeamLoading",!0);case a.LOAD_TEAM_DETAIL_SUCCESS:return e.set("currentTeamLoading",!1).set("currentTeam",r.team).set("teamRouter",r.team.parents);case a.LOAD_TEAM_PROJECTS_SUCCESS:return e.set("currentTeamProjects",r.projects);case a.PULL_PROJECT_IN_TEAM_SUCCESS:return l?(l.unshift(r.result),e.set("currentTeamProjects",l.slice())):e.set("currentTeamProjects",[r.result]),e;case a.DELETE_TEAM_PROJECT_SUCCESS:return l?e.set("currentTeamProjects",l.filter(function(e){return e.id!==r.id})):e;case a.PULL_MEMBER_IN_TEAM_SUCCESS:return c?(c.unshift(r.result),e.set("currentTeamMembers",c.slice())):e.set("currentTeamMembers",[r.result]),e;case a.DELETE_TEAM_MEMBER_SUCCESS:return c?e.set("currentTeamMembers",c.filter(function(e){return e.id!==r.id})):e;case a.LOAD_TEAM_MEMBERS_SUCCESS:return e.set("currentTeamMembers",r.members);case a.CHANGE_MEMBER_ROLE_TEAM_SUCCESS:var u=c.findIndex(function(e){return e.id===r.relationId}),d=Object.assign({},c[u]);return d.user.role=r.newRole,c.splice(u,1,d),e.set("currentTeamMembers",c.slice());case a.LOAD_TEAM_TEAMS_SUCCESS:return e.set("currentTeamTeams",r.teams);case i.LOAD_ORGANIZATIONS_PROJECTS_SUCCESS:return e.set("currentOrganizationProjects",r.projects);case i.LOAD_ORGANIZATIONS_MEMBERS_SUCCESS:return e.set("currentOrganizationMembers",r.members);case i.LOAD_ORGANIZATIONS_TEAMS_SUCCESS:return e.set("currentOrganizationTeams",r.teams);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/immutable/dist/immutable.js"),a=n("./app/containers/Teams/constants.ts"),i=n("./app/containers/Organizations/constants.ts"),s=o.fromJS({teams:[],teamRouter:{},currentTeam:{},currentTeamLoading:!1,currentTeamProjects:[],currentTeamTeams:[],currentTeamMembers:[],currentOrganizationProjects:[],currentOrganizationTeams:[],currentOrganizationMembers:[]});t.default=r},"./app/containers/Teams/sagas.ts":function(e,t,n){"use strict";function r(){var e,t;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,L.call(R.default,N.default.teams);case 3:return e=n.sent,t=F.readListAdapter(e),n.next=7,L.put(P.teamsLoaded(t));case 7:n.next=14;break;case 9:return n.prev=9,n.t0=n.catch(0),n.next=13,L.put(P.loadTeamsFail());case 13:B.errorHandler(n.t0);case 14:case"end":return n.stop()}},b,this,[[0,9]])}function o(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,n=t.team,r=t.resolve,o.prev=1,o.next=4,L.call(R.default,{method:"put",url:N.default.teams+"/"+n.id,data:n});case 4:return o.next=6,L.put(P.teamEdited(n));case 6:r&&r(),I.success("success"),o.next=15;break;case 10:return o.prev=10,o.t0=o.catch(1),o.next=14,L.put(P.editTeamFail());case 14:B.errorHandler(o.t0);case 15:case"end":return o.stop()}},v,this,[[1,10]])}function a(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,n=t.id,r=t.resolve,o.prev=1,o.next=4,L.call(R.default,{method:"delete",url:N.default.teams+"/"+n});case 4:return o.next=6,L.put(P.teamDeleted(n));case 6:r(),o.next=14;break;case 9:return o.prev=9,o.t0=o.catch(1),o.next=13,L.put(P.deleteTeamFail());case 13:B.errorHandler(o.t0);case 14:case"end":return o.stop()}},y,this,[[1,9]])}function i(e){var t,n,r=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,L.call(R.default,N.default.teams+"/"+r.id);case 3:return t=e.sent,n=F.readListAdapter(t),e.next=7,L.put(P.teamDetailLoaded(n));case 7:return e.next=9,r.resolve&&r.resolve(n);case 9:e.next=14;break;case 11:e.prev=11,e.t0=e.catch(0),B.errorHandler(e.t0);case 14:case"end":return e.stop()}},_,this,[[0,11]])}function s(e){var t,n,r,o=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=o.id,e.prev=1,e.next=4,L.call(R.default,N.default.teams+"/"+t+"/projects");case 4:return n=e.sent,r=F.readListAdapter(n),e.next=8,L.put(P.teamProjectsLoaded(r));case 8:e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,L.put(P.loadTeamProjectsFail());case 14:B.errorHandler(e.t0);case 15:case"end":return e.stop()}},A,this,[[1,10]])}function l(e){var t,n,r,o=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=o.id,e.prev=1,e.next=4,L.call(R.default,N.default.teams+"/"+t+"/members");case 4:return n=e.sent,r=F.readListAdapter(n),e.next=8,L.put(P.teamMembersLoaded(r));case 8:e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,L.put(P.loadTeamMembersFail());case 14:B.errorHandler(e.t0);case 15:case"end":return e.stop()}},x,this,[[1,10]])}function c(e){var t,n,r,o=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=o.id,e.prev=1,e.next=4,L.call(R.default,N.default.teams+"/"+t+"/teams");case 4:return n=e.sent,r=F.readListAdapter(n),e.next=8,L.put(P.teamTeamsLoaded(r));case 8:e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,L.put(P.loadTeamTeamsFail());case 14:B.errorHandler(e.t0);case 15:case"end":return e.stop()}},w,this,[[1,10]])}function u(e){var t,n,r,o,a,i=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=i.id,n=i.projectId,r=i.resolve,e.prev=1,e.next=4,L.call(R.default,{url:N.default.teams+"/"+t+"/project",method:"post",data:{projectId:n}});case 4:return o=e.sent,a=F.readListAdapter(o),e.next=8,L.put(P.projectInTeamPulled(a));case 8:r(),e.next=16;break;case 11:return e.prev=11,e.t0=e.catch(1),e.next=15,L.put(P.pullProjectInTeamFail());case 15:B.errorHandler(e.t0);case 16:case"end":return e.stop()}},j,this,[[1,11]])}function d(e){var t,n,r,o,a,i=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=i.relationId,n=i.relTeamProjectDto,r=i.resolve,e.prev=1,e.next=4,L.call(R.default,{url:N.default.teams+"/project/"+t,method:"put",data:n});case 4:return o=e.sent,a=F.readListAdapter(o),e.next=8,L.put(P.teamProjectPermissionUpdated(a));case 8:r&&r(a),e.next=16;break;case 11:return e.prev=11,e.t0=e.catch(1),e.next=15,L.put(P.updateTeamProjectPermissionFail());case 15:B.errorHandler(e.t0);case 16:case"end":return e.stop()}},E,this,[[1,11]])}function p(e){var t,n,r=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=r.relationId,e.prev=1,e.next=4,L.call(R.default,{url:N.default.teams+"/project/"+t,method:"delete"});case 4:return n=e.sent,e.next=7,L.put(P.teamProjectDeleted(t));case 7:e.next=14;break;case 9:return e.prev=9,e.t0=e.catch(1),e.next=13,L.put(P.deleteTeamProjectFail());case 13:B.errorHandler(e.t0);case 14:case"end":return e.stop()}},S,this,[[1,9]])}function f(e){var t,n,r,o,a,i=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=i.teamId,n=i.memberId,r=i.resolve,e.prev=1,e.next=4,L.call(R.default,{url:N.default.teams+"/"+t+"/member/"+n,method:"post"});case 4:return o=e.sent,a=F.readListAdapter(o),e.next=8,L.put(P.memberInTeamPulled(a));case 8:r(),e.next=16;break;case 11:return e.prev=11,e.t0=e.catch(1),e.next=15,L.put(P.pullMemberInTeamFail());case 15:B.errorHandler(e.t0);case 16:case"end":return e.stop()}},k,this,[[1,11]])}function h(e){var t,n,r=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=r.relationId,e.prev=1,e.next=4,L.call(R.default,{url:N.default.teams+"/member/"+t,method:"delete"});case 4:return n=e.sent,e.next=7,L.put(P.teamMemberDeleted(t));case 7:e.next=14;break;case 9:return e.prev=9,e.t0=e.catch(1),e.next=13,L.put(P.deleteTeamMemberFail());case 13:B.errorHandler(e.t0);case 14:case"end":return e.stop()}},C,this,[[1,9]])}function m(e){var t,n,r,o,a,i=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=i.relationId,n=i.newRole,e.prev=1,e.next=4,L.call(R.default,{url:N.default.teams+"/member/"+t,method:"put",data:{role:n}});case 4:return r=e.sent,o=r&&r.header&&r.header.msg?r.header.msg:"",a=r&&r.header&&r.header.code?r.header.code:"",e.next=9,L.put(P.teamMemberRoleChanged(t,n));case 9:e.next=16;break;case 11:return e.prev=11,e.t0=e.catch(1),e.next=15,L.put(P.changeTeamMemberRoleFail());case 15:B.errorHandler(e.t0);case 16:case"end":return e.stop()}},T,this,[[1,11]])}function g(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[O.takeLatest(D.LOAD_TEAMS,r),O.takeEvery(D.EDIT_TEAM,o),O.takeEvery(D.DELETE_TEAM,a),O.takeLatest(D.LOAD_TEAM_DETAIL,i),O.takeLatest(D.LOAD_TEAM_MEMBERS,l),O.takeLatest(D.LOAD_TEAM_PROJECTS,s),O.takeLatest(D.LOAD_TEAM_TEAMS,c),O.takeLatest(D.PULL_PROJECT_IN_TEAM,u),O.takeLatest(D.UPDATE_TEAM_PROJECT_PERMISSION,d),O.takeLatest(D.DELETE_TEAM_PROJECT,p),O.takeLatest(D.DELETE_TEAM_MEMBER,h),O.takeLatest(D.CHANGE_MEMBER_ROLE_TEAM,m),O.takeLatest(D.PULL_MEMBER_IN_TEAM,f)];case 2:case"end":return e.stop()}},M,this)}var b=regeneratorRuntime.mark(r),v=regeneratorRuntime.mark(o),y=regeneratorRuntime.mark(a),_=regeneratorRuntime.mark(i),A=regeneratorRuntime.mark(s),x=regeneratorRuntime.mark(l),w=regeneratorRuntime.mark(c),j=regeneratorRuntime.mark(u),E=regeneratorRuntime.mark(d),S=regeneratorRuntime.mark(p),k=regeneratorRuntime.mark(f),C=regeneratorRuntime.mark(h),T=regeneratorRuntime.mark(m),M=regeneratorRuntime.mark(g);Object.defineProperty(t,"__esModule",{value:!0});var O=n("./node_modules/redux-saga/es/index.js"),L=n("./node_modules/redux-saga/es/effects.js"),D=n("./app/containers/Teams/constants.ts"),P=n("./app/containers/Teams/actions.ts"),I=n("./node_modules/antd/lib/message/index.js"),R=n("./app/utils/request.ts"),N=n("./app/utils/api.js"),B=n("./app/utils/util.ts"),F=n("./app/utils/asyncAdapter.js");t.getTeams=r,t.editTeam=o,t.deleteTeam=a,t.getTeamDetail=i,t.getTeamProjects=s,t.getTeamMembers=l,t.getTeamTeams=c,t.pullProjectInTeam=u,t.updateTeamProjectPermission=d,t.deleteTeamProject=p,t.pullMemberInTeam=f,t.deleteTeamMember=h,t.changeTeamMemberRole=m,t.default=g},"./app/containers/Teams/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("team")};t.selectTeam=o;var a=function(){return r.createSelector(o,function(e){return e.get("teams")})};t.makeSelectTeams=a;var i=function(){return r.createSelector(o,function(e){return e.get("teamRouter")})};t.makeSelectTeamRouter=i;var s=function(){return r.createSelector(o,function(e){return e.get("currentTeam")})};t.makeSelectCurrentTeams=s;var l=function(){return r.createSelector(o,function(e){return e.get("currentTeamProjects")})};t.makeSelectCurrentTeamProjects=l;var c=function(){return r.createSelector(o,function(e){return e.get("currentTeamTeams")})};t.makeSelectCurrentTeamTeams=c;var u=function(){return r.createSelector(o,function(e){return e.get("currentTeamMembers")})};t.makeSelectCurrentTeamMembers=u},"./app/containers/Viz/Viz.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Viz/Viz.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Viz/index.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e){return{onLoadDisplays:function(t){return e(A.loadDisplays(t))},onAddDisplay:function(t,n){return e(A.addDisplay(t,n))},onEditDisplay:function(t,n){return e(A.editDisplay(t,n))},onDeleteDisplay:function(t){return e(A.deleteDisplay(t))},onLoadPortals:function(t){return e(x.loadPortals(t))},onAddPortal:function(t,n){return e(x.addPortal(t,n))},onEditPortal:function(t,n){return e(x.editPortal(t,n))},onDeletePortal:function(t){return e(x.deletePortal(t))},onCheckUniqueName:function(t,n,r,o){return e(E.checkNameUniqueAction(t,n,r,o))}}}var l=function(){function e(e,t){for(var n=0;n0&&p")}}})},[])}}L=j&&j.length?{axisLabel:{formatter:"{value} "+j}}:null,k={yAxis:Object.assign({type:"value",splitArea:{show:!1},splitLine:{show:b&&b.length,lineStyle:{width:y,type:v}}},L)};var B=0,F=0;if(p&&p.length){var U=void 0,z=void 0;switch(h){case"right":U={orient:"vertical"},z={right:8,top:40,bottom:16},F=108;break;case"bottom":U={orient:"horizontal"},z={bottom:16,left:8,right:8},B=72;break;default:U={orient:"horizontal"},z={top:3,left:8,right:120}}var H="unselectAll"===f?{selected:l.reduce(function(e,t){return Object.assign({},e,r({},t,!1))},{})}:null;C={legend:Object.assign({data:l,type:"scroll"},U,z,H)}}return T=m&&m.length?{toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,M={grid:{top:_,left:x,right:Math.max(w,F),bottom:Math.max(A,B)}},O=d>0&&d")}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/echarts/extension-src/dataTool/prepareBoxplotData.js");t.default=o},"./app/containers/Widget/charts/confidenceBand.ts":function(e,t,n){"use strict";function r(e,t,n,r){var o=n.xAxis,a=n.metrics,i=n.lower,s=n.upper,l=n.label,c=n.xAxisInterval,u=n.xAxisRotate,d=n.dataZoomThreshold,p=n.smooth,f=n.step,h=n.symbol,m=n.toolbox,g=n.splitLineX,b=n.splitLineY,v=n.splitLineStyle,y=n.splitLineWidth,_=n.top,A=n.bottom,x=n.left,w=n.right,j=n.suffixYAxis,E=void 0,S=void 0,k=void 0,C=void 0,T=void 0,M=void 0,O=void 0,L=void 0,D=void 0,P=void 0,I=-e.reduce(function(e,t){return Math.floor(Math.min(e,+t[i]))},1/0);P={axisLabel:{formatter:function(e){return e-I+" "+(j||"")}}},T=h&&h.length?{symbol:"emptyCircle"}:{symbol:"none"},k=p&&p.length?{smooth:!0}:null,C=f&&f.length?{step:!0}:null,L=l&&l.length?{label:{normal:{show:!0,position:"top"}}}:null;var R=[];if(a){var N=Object.assign({name:a,type:"line",sampling:"average",symbol:T,data:e.map(function(e,t){return t===r?{value:+e[a]+I,lineStyle:{normal:{opacity:1}},itemStyle:{normal:{opacity:1}}}:+e[a]+I}),lineStyle:{normal:{opacity:void 0===r?1:.25}},itemStyle:{normal:{opacity:void 0===r?1:.25}}},T,k,C,L);R.push(N)}var B={type:"line",lineStyle:{normal:{opacity:0}},stack:"confidence-band",symbol:"none"},F=[{name:"L",data:e.map(function(e){return+e[i]+I})},{name:"U",data:e.map(function(e){return+e[s]-e[i]}),areaStyle:{normal:{color:"#ccc"}}}];return F.forEach(function(e){Object.assign(e,B)}),R.push.apply(R,F),E={series:R},S=o&&{xAxis:{data:e.map(function(e){return e[o]}),axisLabel:{interval:c,rotate:u},splitLine:{show:g&&g.length,lineStyle:{width:y,type:v}}}},M=m&&m.length?{toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,O={grid:{top:_,left:x,right:w,bottom:A}},D=d>0&&d"+e[0].value}}},E,S,M,O,D)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},"./app/containers/Widget/charts/doubleYAxis.ts":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&(J=M.map(function(t){return Object.assign({name:t,type:L,data:e.map(function(e){return e[t]})},U,F("left"))})),O&&O.length>0&&(Z=O.map(function(t){return Object.assign({name:t,type:D,yAxisIndex:1,data:e.map(function(e){return e[t]})},U,F("right"))}));R={series:[].concat(o(J),o(Z)).map(function(e){return"line"===e.type?Object.assign({},e,X,q,K):Object.assign({},e)})}}s&&(N={xAxis:[{data:e.map(function(e){return e[s]}),type:"category",axisLabel:{interval:h,rotate:m},splitLine:{show:x&&x.length,lineStyle:{width:E,type:j}}}]});var oe=0,ae=0;if(v&&v.length){var ie=void 0,se=void 0;switch(_){case"right":ie={orient:"vertical"},se={right:8,top:40,bottom:16},ae=180;break;case"bottom":ie={orient:"horizontal"},se={bottom:16,left:8,right:8},oe=72;break;default:ie={orient:"horizontal"},se={top:3,left:8,right:120}}var le="unselectAll"===y?{selected:R.series.reduce(function(e,t){return Object.assign({},e,r({},t.name,!1))},{})}:null;z={legend:Object.assign({data:R.series.map(function(e){return e.name}),type:"scroll"},ie,se,le)}}return H=A&&A.length?{toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,V={grid:{top:S,left:C,right:Math.max(T,ae),bottom:Math.max(k,oe)}},Y=b>0&&b3&&(C.axisLine.lineStyle.color=_),y.push(C),m={series:y},g=r&&r.length?{tooltip:{formatter:"{a}
      {b} : "+w+"{c}"+j}}:null,b=i&&i.length?{toolbox:{feature:{restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,Object.assign({},m,g,b)}Object.defineProperty(t,"__esModule",{value:!0});var o="#c23531",a=["#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"];t.default=r},"./app/containers/Widget/charts/graph.ts":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t,n,o){var i=n.metrics,s=n.target,l=n.source,c=n.tooltip,u=n.legend,d=n.toolbox,p=n.top,f=n.bottom,h=n.left,m=n.right,g=n.category;g&&g.length||(g=l);var b=void 0,v=void 0,y=void 0,_=void 0,A=void 0,x=void 0,w=void 0,j=[],E=[],S=[],k=[],C=[],T=e.map(function(e){return e[g]});k=T.filter(function(e,t){return T.indexOf(e)===t}).concat(["其他"]),C=k.map(function(t){var n=e.filter(function(e){return e[g]===t});return{key:t,value:n}}),s&&s.length&&l&&l.length&&i&&i.length&&(S=e.map(function(e){return Array.prototype.push.apply(E,[e[l],e[s]]),{value:e[i],source:e[l],target:e[s]}}),C&&C.length&&(C=C.map(function(e){return r({},e.key,e.value.reduce(function(e,t){return e+Number(t[i])},0))}))),E&&E.length&&(E=E.filter(function(e,t){return E.indexOf(e)===t}).map(function(e){return{name:e,category:e}}));var M=C.reduce(function(e,t){return Object.assign({},e,t)},{}),O=Object.keys(M),L=Object.values(M),D=a(Object.values(M));k&&k.length&&E&&E.length&&(E=E.map(function(e,t){var n=void 0,r=void 0,o=void 0;return k.find(function(t){return t===e.category})?(o=O.indexOf(e.category),n=D[o],r=L[o],Object.assign({},e,{symbolSize:n,realValue:r})):Object.assign({},e,{category:"其他",symbolSize:1,realValue:0})})),v={label:{normal:{show:!0,position:"right"}}},x={grid:{top:p,left:h,right:m,bottom:f}},w={animationDurationUpdate:1e3,animationEasingUpdate:"quinticInOut"};var P=Object.assign({type:"graph",layout:"circular",symbolSize:30,roam:!0,focusNodeAdjacency:!0,edgeSymbol:["circle","arrow"],edgeSymbolSize:[4,10],edgeLabel:{normal:{}},circular:{rotateLabel:!0},data:E,links:S,categories:k.map(function(e){return{name:e}}),lineStyle:{normal:{color:"source",opacity:.9,curveness:.3}}},v);return j.push(P),b={series:j},y=c&&c.length?{tooltip:{formatter:function(e){var t=e.data;switch(e.dataType){case"edge":return t.source+" => "+t.target+" : "+t.value;case"node":return t.name+" : "+t.realValue;default:return""}}}}:null,_=u&&u.length?{legend:{data:k,orient:"vertical",left:"left",type:"scroll"}}:null,A=d&&d.length?{toolbox:{feature:{dataView:{readOnly:!1},restore:{},saveAsImage:{}}}}:null,Object.assign({},b,y,_,A,x,w)}function a(e){if(!(e&&Array.isArray(e)&&e.length))return!1;var t=e.reduce(function(e,t){return t>e?t:e},0);return e.map(function(e){var n=60*Number(e)/t;return n<1?1:n})}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o},"./app/containers/Widget/charts/index.ts":function(e,t,n){"use strict";function r(e,t){switch(e){case"line":return o.default();case"bar":return a.default(t.elementSize);case"scatter":return i.default(t.sizeRate);case"pie":return s.default();case"radar":return l.default()}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Widget/charts/line.ts"),a=n("./app/containers/Widget/charts/bar.ts"),i=n("./app/containers/Widget/charts/scatter.ts"),s=n("./app/containers/Widget/charts/pie.ts"),l=n("./app/containers/Widget/charts/radar.ts");t.default=r},"./app/containers/Widget/charts/line.ts":function(e,t,n){"use strict";function r(){return{chartOption:{type:"line"}}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},"./app/containers/Widget/charts/map.ts":function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t"+Object.keys(t.children).map(function(e){return e+":"+t.children[e]+"
      "}).join("")}return n}}},v=f&&f.length?{toolbox:{feature:{dataView:{readOnly:!1},restore:{},saveAsImage:{}}}}:null,Object.assign({geo:{map:"china",label:{emphasis:{show:!1}},itemStyle:{normal:{areaColor:"#0000003F",borderColor:"#FFFFFF",borderWidth:1},emphasis:{areaColor:"#00000059"}},roam:!(!p||!p.length)}},h,g,b,v)})}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./app/utils/util.ts"),i=n("./app/globalConstants.ts"),s=void 0;t.default=o},"./app/containers/Widget/charts/mapFile/china.js":function(e,t,n){var r,o,a,i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function(s,l){"object"===i(t)&&"string"!=typeof t.nodeName?l(t,n("./node_modules/echarts/lib/echarts.js")):(o=[t,n("./node_modules/echarts/lib/echarts.js")],r=l,void 0!==(a="function"==typeof r?r.apply(t,o):r)&&(e.exports=a))}(0,function(e,t){var n=function(e){"undefined"!=typeof console&&console&&console.error&&console.error(e)};return t?t.registerMap?void t.registerMap("china",{type:"FeatureCollection",features:[{id:"710000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@°Ü¯Û"],["@@ƛĴÕƊÉɼģºðʀ\\ƎsÆNŌÔĚäœnÜƤɊĂǀĆĴžĤNJŨxĚĮǂƺòƌ‚–âÔ®ĮXŦţƸZûЋƕƑGđ¨ĭMó·ęcëƝɉlÝƯֹÅŃ^Ó·śŃNjƏďíåɛGɉ™¿@ăƑŽ¥ĘWǬÏĶŁâ"],["@@\\p|WoYG¿¥I†j@¢"],["@@…¡‰@ˆV^RqˆBbAŒnTXeRz¤Lž«³I"],["@@ÆEE—„kWqë @œ"],["@@fced"]],encodeOffsets:[[[122886,24033]],[[123335,22980]],[[122375,24193]],[[122518,24117]],[[124427,22618]],[[124862,26043]]]},properties:{cp:[121.509062,25.044332],name:"台湾",childNum:6}},{id:"130000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@o~†Z]‚ªr‰ºc_ħ²G¼s`jΟnüsœłNX_“M`ǽÓnUK…Ĝēs¤­©yrý§uģŒc†JŠ›e"],["@@U`Ts¿m‚"],["@@oºƋÄd–eVŽDJj£€J|Ådz•Ft~žKŨ¸IÆv|”‡¢r}膎onb˜}`RÎÄn°ÒdÞ²„^®’lnÐèĄlðӜ×]ªÆ}LiĂ±Ö`^°Ç¶p®đDcœŋ`–ZÔ’¶êqvFƚ†N®ĆTH®¦O’¾ŠIbÐã´BĐɢŴÆíȦp–ĐÞXR€·nndOž¤’OÀĈƒ­Qg˜µFo|gȒęSWb©osx|hYh•gŃfmÖĩnº€T̒Sp›¢dYĤ¶UĈjl’ǐpäìë|³kÛfw²Xjz~ÂqbTŠÑ„ěŨ@|oM‡’zv¢ZrÃVw¬ŧĖ¸fŒ°ÐT€ªqŽs{Sž¯r æÝlNd®²Ğ džiGʂJ™¼lr}~K¨ŸƐÌWö€™ÆŠzRš¤lêmĞL΄’@¡|q]SvK€ÑcwpÏρ†ĿćènĪWlĄkT}ˆJ”¤~ƒÈT„d„™pddʾĬŠ”ŽBVt„EÀ¢ôPĎƗè@~‚k–ü\\rÊĔÖæW_§¼F˜†´©òDòj’ˆYÈrbĞāøŀG{ƀ|¦ðrb|ÀH`pʞkv‚GpuARhÞÆǶgʊTǼƹS£¨¡ù³ŘÍ]¿Ây™ôEP xX¶¹܇O¡“gÚ¡IwÃ鑦ÅB‡Ï|Ç°…N«úmH¯‹âŸDùŽyŜžŲIÄuШDž•¸dɂ‡‚FŸƒ•›Oh‡đ©OŸ›iÃ`ww^ƒÌkŸ‘ÑH«ƇǤŗĺtFu…{Z}Ö@U‡´…ʚLg®¯Oı°ÃwŸ ^˜—€VbÉs‡ˆmA…ê]]w„§›RRl£‡ȭµu¯b{ÍDěïÿȧŽuT£ġƒěŗƃĝ“Q¨fV†Ƌ•ƅn­a@‘³@šď„yýIĹÊKšŭfċŰóŒxV@tˆƯŒJ”]eƒR¾fe|rHA˜|h~Ėƍl§ÏŠlTíb ØoˆÅbbx³^zÃĶš¶Sj®A”yÂhðk`š«P€”ˈµEF†Û¬Y¨Ļrõqi¼‰Wi°§’б´°^[ˆÀ|ĠO@ÆxO\\tŽa\\tĕtû{ġŒȧXýĪÓjùÎRb›š^ΛfK[ݏděYfíÙTyŽuUSyŌŏů@Oi½’éŅ­aVcř§ax¹XŻác‡žWU£ôãºQ¨÷Ñws¥qEH‰Ù|‰›šYQoŕÇyáĂ£MðoťÊ‰P¡mšWO¡€v†{ôvîēÜISpÌhp¨ ‘j†deŔQÖj˜X³à™Ĉ[n`Yp@Už–cM`’RKhŒEbœ”pŞlNut®Etq‚nsÁŠgA‹iú‹oH‡qCX‡”hfgu“~ϋWP½¢G^}¯ÅīGCŸÑ^ãziMáļMTÃƘrMc|O_ž¯Ŏ´|‡morDkO\\mĆJfl@cĢ¬¢aĦtRıҙ¾ùƀ^juųœK­ƒUFy™—Ɲ…›īÛ÷ąV×qƥV¿aȉd³B›qPBm›aËđŻģm“Å®VŠ¹d^K‡KoŸnYg“¯Xhqa”Ldu¥•ÍpDž¡KąÅƒkĝęěhq‡}HyÓ]¹ǧ£…Í÷¿qᵧš™g‘¤o^á¾ZE‡¤i`ij{n•ƒOl»ŸWÝĔįhg›F[¿¡—ßkOüš_‰€ū‹i„DZàUtėGylƒ}ŒÓM}€jpEC~¡FtoQi‘šHkk{Ãmï‚"]],encodeOffsets:[[[119712,40641]],[[121616,39981]],[[116462,37237]]]},properties:{cp:[114.502461,38.045474],name:"河北",childNum:3}},{id:"140000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@Þĩ҃S‰ra}Á€yWix±Üe´lè“ßÓǏok‘ćiµVZģ¡coœ‘TS˹ĪmnÕńe–hZg{gtwªpXaĚThȑp{¶Eh—®RćƑP¿£‘Pmc¸mQÝW•ďȥoÅîɡųAďä³aωJ‘½¥PG­ąSM­™…EÅruµé€‘Yӎ•Ō_d›ĒCo­Èµ]¯_²ÕjāŽK~©ÅØ^ԛkïçămϑk]­±ƒcݯÑÃmQÍ~_a—pm…~ç¡q“ˆu{JÅŧ·Ls}–EyÁÆcI{¤IiCfUc•ƌÃp§]웫vD@¡SÀ‘µM‚ÅwuŽYY‡¡DbÑc¡hƒ×]nkoQdaMç~eD•ÛtT‰©±@¥ù@É¡‰ZcW|WqOJmĩl«ħşvOÓ«IqăV—¥ŸD[mI~Ó¢cehiÍ]Ɠ~ĥqXŠ·eƷœn±“}v•[ěďŽŕ]_‘œ•`‰¹ƒ§ÕōI™o©b­s^}Ét±ū«³p£ÿ·Wµ|¡¥ăFÏs׌¥ŅxŸÊdÒ{ºvĴÎêÌɊ²¶€ü¨|ÞƸµȲ‘LLúÉƎ¤ϊęĔV`„_bª‹S^|ŸdŠzY|dz¥p†ZbÆ£¶ÒK}tĦÔņƠ‚PYzn€ÍvX¶Ěn ĠÔ„zý¦ª˜÷žÑĸَUȌ¸‚dòÜJð´’ìúNM¬ŒXZ´‘¤ŊǸ_tldIš{¦ƀðĠȤ¥NehXnYG‚‡R° ƬDj¬¸|CĞ„Kq‚ºfƐiĺ©ª~ĆOQª ¤@ìǦɌ²æBŒÊ”TœŸ˜ʂōĖ’šĴŞ–ȀœÆÿȄlŤĒö„t”νî¼ĨXhŒ‘˜|ªM¤Ðz"],encodeOffsets:[[116874,41716]]},properties:{cp:[112.549248,37.857014],name:"山西",childNum:1}},{id:"150000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@Č^â£Ăh–šĖMÈÄw‚\\fŦ°W ¢¾luŸD„wŠ\\̀ʉÌÛM…Ā[bӞEn}¶Vc…ê“sƒ–›¯PqƒFB…‰|S•³C|kñ•H‹d‘iÄ¥sˆʼnő…PóÑÑE^‘ÅPpy_YtS™hQ·aHwsOnʼnÚs©iqj›‰€USiº]ïWš‰«gW¡A–R붛ijʕ…Œů`çõh]y»ǃŸǛҤxÒm~zf}pf|ÜroÈzrKÈĵSƧ„ż؜Ġu¦ö"],["@@sKCš…GS|úþX”gp›{ÁX¿Ÿć{ƱȏñZáĔyoÁhA™}ŅĆfdʼn„_¹„Y°ėǩÑ¡H¯¶oMQqð¡Ë™|‘Ñ`ƭŁX½·óۓxğįÅcQ‡ˆ“ƒs«tȋDžF“Ÿù^i‘t«Č¯[›hAi©á¥ÇĚ×l|¹y¯YȵƓ‹ñǙµï‚ċ™Ļ|Dœ™üȭ¶¡˜›oŽäÕG\\ďT¿Òõr¯œŸLguÏYęRƩšɷŌO\\İТæ^Ŋ IJȶȆbÜGŽĝ¬¿ĚVĎgª^íu½jÿĕęjık@Ľƒ]ėl¥Ë‡ĭûÁ„ƒėéV©±ćn©­ȇžÍq¯½•YÃÔʼn“ÉNѝÅÝy¹NqáʅDǡËñ­ƁYÅy̱os§ȋµʽǘǏƬɱà‘ưN¢ƔÊuľýľώȪƺɂļžxœZĈ}ÌʼnŪ˜ĺœŽĭFЛĽ̅ȣͽÒŵìƩÇϋÿȮǡŏçƑůĕ~Ǎ›¼ȳÐUf†dIxÿ\\G ˆzâɏÙOº·pqy£†@ŒŠqþ@Ǟ˽IBäƣzsÂZ†ÁàĻdñ°ŕzéØűzșCìDȐĴĺf®ŽÀľưø@ɜÖÞKĊŇƄ§‚͑těï͡VAġÑÑ»d³öǍÝXĉĕÖ{þĉu¸ËʅğU̎éhɹƆ̗̮ȘNJ֥ड़ࡰţાíϲäʮW¬®ҌeרūȠkɬɻ̼ãüfƠSצɩςåȈHϚÎKdzͲOðÏȆƘ¼CϚǚ࢚˼ФԂ¤ƌžĞ̪Qʤ´¼mȠJˀŸƲÀɠmǐnǔĎȆÞǠN~€ʢĜ‚¶ƌĆĘźʆȬ˪ĚĒ¸ĞGȖƴƀj`ĢçĶāàŃºēĢƒĖćšYŒÀŎüôQÐÂŎŞdžŞêƖš˜oˆDĤÕºÑǘÛˤ³̀gńƘĔÀ^žªƂ`ªt¾äƚêĦĀ¼Ð€Ĕǎ¨Ȕ»͠^ˮÊȦƤøxRrŜH¤¸ÂxDĝŒ|ø˂˜ƮÐ¬ɚwɲFjĔ²Äw°dždÀɞ_ĸdîàŎjʜêTЪŌ‡ŜWÈ|tqĢUB~´°ÎFC•ŽU¼pĀēƄN¦¾O¶ŠłKĊOj“Ě”j´ĜYp˜{¦„ˆSĚÍ\\Tš×ªV–÷Ší¨ÅDK°ßtŇĔKš¨ǵÂcḷ̌ĚǣȄĽF‡lġUĵœŇ‹ȣFʉɁƒMğįʏƶɷØŭOǽ«ƽū¹Ʊő̝Ȩ§ȞʘĖiɜɶʦ}¨֪ࠜ̀ƇǬ¹ǨE˦ĥªÔêFŽxúQ„Er´W„rh¤Ɛ \\talĈDJ˜Ü|[Pll̚¸ƎGú´Pž¬W¦†^¦–H]prR“n|or¾wLVnÇIujkmon£cX^Bh`¥V”„¦U¤¸}€xRj–[^xN[~ªŠxQ„‚[`ªHÆÂExx^wšN¶Ê˜|¨ì†˜€MrœdYp‚oRzNy˜ÀDs~€bcfÌ`L–¾n‹|¾T‚°c¨È¢a‚r¤–`[|òDŞĔöxElÖdH„ÀI`„Ď\\Àì~ƎR¼tf•¦^¢ķ¶e”ÐÚMŒptgj–„ɡČÅyġLû™ŇV®ŠÄÈƀ†Ď°P|ªVV†ªj–¬ĚÒêp¬–E|ŬÂc|ÀtƐK fˆ{ĘFĒœƌXƲąo½Ę‘\\¥–o}›Ûu£ç­kX‘{uĩ«āíÓUŅßŢq€Ť¥lyň[€oi{¦‹L‡ń‡ðFȪȖ”ĒL„¿Ì‹ˆfŒ£K£ʺ™oqNŸƒwğc`ue—tOj×°KJ±qƒÆġm‰Ěŗos¬…qehqsuœƒH{¸kH¡Š…ÊRǪÇƌbȆ¢´ä܍¢NìÉʖ¦â©Ż؛Ç@Vu»A—ylßí¹ĵê…ÝlISò³C¹Ìâ„²i¶’Ìoú^H“²CǜңDŽ z¼g^èöŰ_‹‚–†IJĕꄜ}gÁnUI«m‰…„‹]j‡vV¼euhwqA„aW˜ƒ_µj…»çjioQR¹ēÃßt@r³[ÛlćË^ÍÉáG“›OUۗOB±•XŸkŇ¹£k|e]ol™ŸkVͼÕqtaÏõjgÁ£§U^Œ”RLˆËnX°Ç’Bz†^~wfvˆypV ¯„ƫĉ˭ȫƗŷɿÿĿƑ˃ĝÿÃǃßËőó©ǐȍŒĖM×ÍEyx‹þp]Évïè‘vƀnÂĴÖ@‚‰†V~Ĉ™Š³MEˆĸÅĖt—ējyÄDXÄxGQuv_›i¦aBçw‘˛wD™©{ŸtāmQ€{EJ§KPśƘƿ¥@‰sCT•É}ɃwˆƇy±ŸgÑ“}T[÷kÐ禫…SÒ¥¸ëBX½‰HáŵÀğtSÝÂa[ƣ°¯¦P]£ġ“–“Òk®G²„èQ°óMq}EŠóƐÇ\\ƒ‡@áügQ͋u¥Fƒ“T՛¿Jû‡]|mvāÎYua^WoÀa·­ząÒot׶CLƗi¯¤mƎHNJ¤îìɾŊìTdåwsRÖgĒųúÍġäÕ}Q¶—ˆ¿A•†‹[¡Œ{d×uQAƒ›M•xV‹vMOmăl«ct[wº_šÇʊŽŸjb£ĦS_é“QZ“_lwgOiýe`YYLq§IÁˆdz£ÙË[ÕªuƏ³ÍT—s·bÁĽäė[›b[ˆŗfãcn¥îC¿÷µ[ŏÀQ­ōšĉm¿Á^£mJVm‡—L[{Ï_£›F¥Ö{ŹA}…×Wu©ÅaųijƳhB{·TQqÙIķˑZđ©Yc|M¡…L•eVUóK_QWk’_ĥ‘¿ãZ•»X\\ĴuUƒè‡lG®ěłTĠğDєOrÍd‚ÆÍz]‹±…ŭ©ŸÅ’]ŒÅÐ}UË¥©Tċ™ïxgckfWgi\\ÏĒ¥HkµE˜ë{»ÏetcG±ahUiñiWsɁˆ·c–C‚Õk]wȑ|ća}w…VaĚ᠞ŒG°ùnM¬¯†{ȈÐÆA’¥ÄêJxÙ¢”hP¢Ûˆº€µwWOŸóFŽšÁz^ÀŗÎú´§¢T¤ǻƺSė‰ǵhÝÅQgvBHouʝl_o¿Ga{ïq{¥|ſĿHĂ÷aĝÇq‡Z‘ñiñC³ª—…»E`¨åXēÕqÉû[l•}ç@čƘóO¿¡ƒFUsA‰“ʽīccšocƒ‚ƒÇS}„“£‡IS~ălkĩXçmĈ…ŀЂoÐdxÒuL^T{r@¢‘žÍƒĝKén£kQ™‰yšÅõËXŷƏL§~}kqš»IHėDžjĝŸ»ÑÞoŸå°qTt|r©ÏS‹¯·eŨĕx«È[eMˆ¿yuˆ‘pN~¹ÏyN£{©’—g‹ħWí»Í¾s“əšDž_ÃĀɗ±ą™ijĉʍŌŷ—S›É“A‹±åǥɋ@럣R©ąP©}ĹªƏj¹erƒLDĝ·{i«ƫC£µ"]],encodeOffsets:[[[127444,52594]],[[113793,40312]]]},properties:{cp:[111.670801,40.818311],name:"内蒙古",childNum:2}},{id:"210000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@L–Ž@@s™a"],["@@MnNm"],["@@d‚c"],["@@eÀ‚C@b‚“‰"],["@@f‡…Xwkbr–Ä`qg"],["@@^jtW‘Q"],["@@~ Y]c"],["@@G`ĔN^_¿Z‚ÃM"],["@@iX¶B‹Y"],["@@„YƒZ"],["@@L_{Epf"],["@@^WqCT\\"],["@@\\[“‹§t|”¤_"],["@@m`n_"],["@@Ïxnj{q_×^Giip"],["@@@œé^B†‡ntˆaÊU—˜Ÿ]x ¯ÄPIJ­°h€ʙK³†VˆÕ@Y~†|EvĹsDŽ¦­L^p²ŸÒG ’Ël]„xxÄ_˜fT¤Ď¤cŽœP„–C¨¸TVjbgH²sdÎdHt`Bˆ—²¬GJję¶[ÐhjeXdlwhšðSȦªVÊπ‹Æ‘Z˜ÆŶ®²†^ŒÎyÅÎcPqń“ĚDMħĜŁH­ˆk„çvV[ij¼W–‚YÀäĦ’‘`XlžR`žôLUVžfK–¢†{NZdĒª’YĸÌÚJRr¸SA|ƴgŴĴÆbvªØX~†źBŽ|¦ÕœEž¤Ð`\\|Kˆ˜UnnI]¤ÀÂĊnŎ™R®Ő¿¶\\ÀøíDm¦ÎbŨab‰œaĘ\\ľã‚¸a˜tÎSƐ´©v\\ÖÚÌǴ¤Â‡¨JKr€Z_Z€fjþhPkx€`Y”’RIŒjJcVf~sCN¤ ˆE‚œhæm‰–sHy¨SðÑÌ\\\\ŸĐRZk°IS§fqŒßýáЍÙÉÖ[^¯ǤŲ„ê´\\¦¬ĆPM¯£Ÿˆ»uïpùzEx€žanµyoluqe¦W^£ÊL}ñrkqWňûP™‰UP¡ôJŠoo·ŒU}£Œ„[·¨@XŒĸŸ“‹‹DXm­Ûݏº‡›GU‹CÁª½{íĂ^cj‡k“¶Ã[q¤“LÉö³cux«zZfƒ²BWÇ®Yß½ve±ÃC•ý£W{Ú^’q^sÑ·¨‹ÍOt“¹·C¥‡GD›rí@wÕKţ݋˜Ÿ«V·i}xËÍ÷‘i©ĝ‡ɝǡ]ƒˆ{c™±OW‹³Ya±Ÿ‰_穂Hžĕoƫ€Ňqƒr³‰Lys[„ñ³¯OS–ďOMisZ†±ÅFC¥Pq{‚Ã[Pg}\\—¿ghćO…•k^ģÁFıĉĥM­oEqqZûěʼn³F‘¦oĵ—hŸÕP{¯~TÍlª‰N‰ßY“Ð{Ps{ÃVU™™eĎwk±ʼnVÓ½ŽJãÇÇ»Jm°dhcÀff‘dF~ˆ€ĀeĖ€d`sx² šƒ®EżĀdQ‹Âd^~ăÔHˆ¦\\›LKpĄVez¤NP ǹӗR™ÆąJSh­a[¦´Âghwm€BÐ¨źhI|žVVŽ—Ž|p] Â¼èNä¶ÜBÖ¼“L`‚¼bØæŒKV”ŸpoœúNZÞÒKxpw|ÊEMnzEQšŽIZ”ŽZ‡NBˆčÚFÜçmĩ‚WĪñt‘ÞĵÇñZ«uD‚±|Əlij¥ãn·±PmÍa‰–da‡ CL‡Ǒkùó¡³Ï«QaċϑOÃ¥ÕđQȥċƭy‹³ÃA"]],encodeOffsets:[[[123686,41445]],[[126019,40435]],[[124393,40128]],[[126117,39963]],[[125322,40140]],[[126686,40700]],[[126041,40374]],[[125584,40168]],[[125453,40165]],[[125362,40214]],[[125280,40291]],[[125774,39997]],[[125976,40496]],[[125822,39993]],[[125509,40217]],[[122731,40949]]]},properties:{cp:[123.429096,41.796767],name:"辽宁",childNum:16}},{id:"220000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@‘p䔳PClƒFbbÍzš€wBG’ĭ€Z„Åi“»ƒlY­ċ²SgŽkÇ£—^S‰“qd¯•‹R…©éŽ£¯S†\\cZ¹iűƏCuƍÓX‡oR}“M^o•£…R}oªU­F…uuXHlEŕ‡€Ï©¤ÛmTŽþ¤D–²ÄufàÀ­XXȱAe„yYw¬dvõ´KÊ£”\\rµÄl”iˆdā]|DÂVŒœH¹ˆÞ®ÜWnŒC”Œķ W‹§@\\¸‹ƒ~¤‹Vp¸‰póIO¢ŠVOšŇürXql~òÉK]¤¥Xrfkvzpm¶bwyFoúvð‡¼¤ N°ąO¥«³[ƒéǡű_°Õ\\ÚÊĝŽþâőàerR¨­JYlďQ[ ÏYëЧTGz•tnŠß¡gFkMŸāGÁ¤ia É‰™È¹`\\xs€¬dĆkNnuNUŠ–užP@‚vRY¾•–\\¢…ŒGªóĄ~RãÖÎĢù‚đŴÕhQŽxtcæëSɽʼníëlj£ƍG£nj°KƘµDsØÑpyƸ®¿bXp‚]vbÍZuĂ{nˆ^IüœÀSք”¦EŒvRÎûh@℈[‚Əȉô~FNr¯ôçR±ƒ­HÑl•’Ģ–^¤¢‚OðŸŒævxsŒ]ÞÁTĠs¶¿âƊGW¾ìA¦·TѬ†è¥€ÏÐJ¨¼ÒÖ¼ƒƦɄxÊ~S–tD@ŠĂ¼Ŵ¡jlºWžvЉˆzƦZЎ²CH— „Axiukd‹ŒGgetqmcžÛ£Ozy¥cE}|…¾cZ…k‚‰¿uŐã[oxGikfeäT@…šSUwpiÚFM©’£è^ڟ‚`@v¶eň†f h˜eP¶žt“äOlÔUgƒÞzŸU`lœ}ÔÆUvØ_Ō¬Öi^ĉi§²ÃŠB~¡Ĉ™ÚEgc|DC_Ȧm²rBx¼MÔ¦ŮdĨÃâYx‘ƘDVÇĺĿg¿cwÅ\\¹˜¥Yĭlœ¤žOv†šLjM_a W`zļMž·\\swqÝSA‡š—q‰Śij¯Š‘°kŠRē°wx^Đkǂғ„œž“œŽ„‹\\]˜nrĂ}²ĊŲÒøãh·M{yMzysěnĒġV·°“G³¼XÀ““™¤¹i´o¤ŃšŸÈ`̃DzÄUĞd\\i֚ŒˆmÈBĤÜɲDEh LG¾ƀľ{WaŒYÍȏĢĘÔRîĐj‹}Ǟ“ccj‡oUb½š{“h§Ǿ{K‹ƖµÎ÷žGĀÖŠåưÎs­l›•yiē«‹`姝H¥Ae^§„GK}iã\\c]v©ģZ“mÃ|“[M}ģTɟĵ‘Â`À–çm‰‘FK¥ÚíÁbXš³ÌQґHof{‰]e€pt·GŋĜYünĎųVY^’˜ydõkÅZW„«WUa~U·Sb•wGçǑ‚“iW^q‹F‚“›uNĝ—·Ew„‹UtW·Ýďæ©PuqEzwAV•—XR‰ãQ`­©GŒM‡ehc›c”ďϝd‡©ÑW_ϗYƅŒ»…é\\ƒɹ~ǙG³mØ©BšuT§Ĥ½¢Ã_ý‘L¡‘ýŸqT^rme™\\Pp•ZZbƒyŸ’uybQ—efµ]UhĿDCmûvašÙNSkCwn‰cćfv~…Y‹„ÇG"],encodeOffsets:[[130196,42528]]},properties:{cp:[125.3245,43.886841],name:"吉林",childNum:1}},{id:"230000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@ƨƒĶTLÇyqpÇÛqe{~oyen}s‰`q‡iXG”ù]Ëp½“©lɇÁp]Þñ´FÔ^f‘äîºkà˜z¼BUvÈ@"],["@@UƒµNÿ¥īè灋•HÍøƕ¶LŒǽ|g¨|”™Ža¾pViˆdd”~ÈiŒíďÓQġėǐZ΋ŽXb½|ſÃH½ŸKFgɱCģÛÇA‡n™‹jÕc[VĝDZÃ˄Ç_™ £ń³pŽj£º”š¿”»WH´¯”U¸đĢmžtĜyzzNN|g¸÷äűѱĉā~mq^—Œ[ƒ”››”ƒǁÑďlw]¯xQĔ‰¯l‰’€°řĴrŠ™˜BˆÞTxr[tŽ¸ĻN_yŸX`biN™Ku…P›£k‚ZĮ—¦[ºxÆÀdhŽĹŀUÈƗCw’áZħÄŭcÓ¥»NAw±qȥnD`{ChdÙFćš}¢‰A±Äj¨]ĊÕjŋ«×`VuÓś~_kŷVÝyh„“VkÄãPs”Oµ—fŸge‚Ň…µf@u_Ù ÙcŸªNªÙEojVx™T@†ãSefjlwH\\pŏäÀvŠŽlY†½d{†F~¦dyz¤PÜndsrhf‹HcŒvlwjFœ£G˜±DύƥY‡yϊu¹XikĿ¦ÏqƗǀOŜ¨LI|FRĂn sª|Cš˜zxAè¥bœfudTrFWÁ¹Am|˜ĔĕsķÆF‡´Nš‰}ć…UŠÕ@Áijſmužç’uð^ÊýowŒFzØÎĕNőžǏȎôªÌŒDŽàĀÄ˄ĞŀƒʀĀƘŸˮȬƬĊ°ƒUŸzou‡xe]}Ž…AyȑW¯ÌmK‡“Q]‹Īºif¸ÄX|sZt|½ÚUΠlkš^p{f¤lˆºlÆW –€A²˜PVܜPH”Êâ]ÎĈÌÜk´\\@qàsĔÄQºpRij¼èi†`¶—„bXƒrBgxfv»ŽuUiˆŒ^v~”J¬mVp´£Œ´VWrnP½ì¢BX‚¬h™ŠðX¹^TjVœŠriªj™tŊÄm€tPGx¸bgRšŽsT`ZozÆO]’ÒFô҆Oƒ‡ŊŒvŞ”p’cGŒêŠsx´DR–Œ{A†„EOr°Œ•žx|íœbˆ³Wm~DVjºéNN†Ëܲɶ­GƒxŷCStŸ}]ûō•SmtuÇÃĕN•™āg»šíT«u}ç½BĵÞʣ¥ëÊ¡Mێ³ãȅ¡ƋaǩÈÉQ‰†G¢·lG|›„tvgrrf«†ptęŘnŠÅĢr„I²¯LiØsPf˜_vĠd„xM prʹšL¤‹¤‡eˌƒÀđK“žïÙVY§]I‡óáĥ]ķ†Kˆ¥Œj|pŇ\\kzţ¦šnņäÔVĂîĪ¬|vW’®l¤èØr‚˜•xm¶ă~lÄƯĄ̈́öȄEÔ¤ØQĄ–Ą»ƢjȦOǺ¨ìSŖÆƬy”Qœv`–cwƒZSÌ®ü±DŽ]ŀç¬B¬©ńzƺŷɄeeOĨS’Œfm Ċ‚ƀP̎ēz©Ċ‚ÄÕÊmgŸÇsJ¥ƔˆŊśæ’΁Ñqv¿íUOµª‰ÂnĦÁ_½ä@ê텣P}Ġ[@gġ}g“ɊדûÏWXá¢užƻÌsNͽƎÁ§č՛AēeL³àydl›¦ĘVçŁpśdžĽĺſʃQíÜçÛġԏsĕ¬—Ǹ¯YßċġHµ ¡eå`ļƒrĉŘóƢFì“ĎWøxÊk†”ƈdƬv|–I|·©NqńRŀƒ¤é”eŊœŀ›ˆàŀU²ŕƀB‚Q£Ď}L¹Îk@©ĈuǰųǨ”Ú§ƈnTËÇéƟÊcfčŤ^Xm‡—HĊĕË«W·ċëx³ǔķÐċJā‚wİ_ĸ˜Ȁ^ôWr­°oú¬Ħ…ŨK~”ȰCĐ´Ƕ£’fNÎèâw¢XnŮeÂÆĶŽ¾¾xäLĴĘlļO¤ÒĨA¢Êɚ¨®‚ØCÔ ŬGƠ”ƦYĜ‡ĘÜƬDJ—g_ͥœ@čŅĻA“¶¯@wÎqC½Ĉ»NŸăëK™ďÍQ“Ùƫ[«Ãí•gßÔÇOÝáW‘ñuZ“¯ĥ€Ÿŕā¡ÑķJu¤E Ÿå¯°WKɱ_d_}}vyŸõu¬ï¹ÓU±½@gÏ¿rýD‰†g…Cd‰µ—°MFYxw¿CG£‹Rƛ½Õ{]L§{qqąš¿BÇƻğëšܭNJË|c²}Fµ}›ÙRsÓpg±ŠQNqǫŋRwŕnéÑÉKŸ†«SeYR…ŋ‹@{¤SJ}šD Ûǖ֍Ÿ]gr¡µŷjqWÛham³~S«“„›Þ]"]],encodeOffsets:[[[127123,51780]],[[134456,44547]]]},properties:{cp:[126.642464,45.756967],name:"黑龙江",childNum:2}},{id:"320000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@cþÅPiŠ`ZŸRu¥É\\]~°ŽY`µ†Óƒ^phÁbnÀşúŽòa–ĬºTÖŒb‚˜e¦¦€{¸ZâćNpŒ©žHr|^ˆmjhŠSEb\\afv`sz^lkŽlj‹Ätg‹¤D˜­¾Xš¿À’|ДiZ„ȀåB·î}GL¢õcßjaŸyBFµÏC^ĭ•cÙt¿sğH]j{s©HM¢ƒQnDÀ©DaÜތ·jgàiDbPufjDk`dPOîƒhw¡ĥ‡¥šG˜ŸP²ĐobºrY†„î¶aHŢ´ ]´‚rılw³r_{£DB_Ûdåuk|ˆŨ¯F Cºyr{XFy™e³Þċ‡¿Â™kĭB¿„MvÛpm`rÚã”@Ę¹hågËÖƿxnlč¶Åì½Ot¾dJlŠVJʜǀœŞqvnOŠ^ŸJ”Z‘ż·Q}ê͎ÅmµÒ]Žƍ¦Dq}¬R^èĂ´ŀĻĊIԒtžIJyQŐĠMNtœR®òLh‰›Ěs©»œ}OӌGZz¶A\\jĨFˆäOĤ˜HYš†JvÞHNiÜaϚɖnFQlšNM¤ˆB´ĄNöɂtp–Ŭdf先‹qm¿QûŠùއÚb¤uŃJŴu»¹Ą•lȖħŴw̌ŵ²ǹǠ͛hĭłƕrçü±Y™xci‡tğ®jű¢KOķ•Coy`å®VTa­_Ā]ŐÝɞï²ʯÊ^]afYǸÃĆēĪȣJđ͍ôƋĝÄ͎ī‰çÛɈǥ£­ÛmY`ó£Z«§°Ó³QafusNıDž_k}¢m[ÝóDµ—¡RLčiXy‡ÅNïă¡¸iĔϑNÌŕoēdōîåŤûHcs}~Ûwbù¹£¦ÓCt‹OPrƒE^ÒoŠg™ĉIµžÛÅʹK…¤½phMŠü`o怆ŀ"],encodeOffsets:[[121740,32276]]},properties:{cp:[118.767413,32.041544],name:"江苏",childNum:1}},{id:"330000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@E^dQ]K"],["@@jX^j‡"],["@@sfŠbU‡"],["@@qP\\xz[ck"],["@@‘Rƒ¢‚FX}°[s_"],["@@Cbœ\\—}"],["@@e|v\\la{u"],["@@v~u}"],["@@QxÂF¯}"],["@@¹nŒvÞs¯o"],["@@rSkUEj"],["@@bi­ZŒP"],["@@p[}INf"],["@@À¿€"],["@@¹dnbŒ…"],["@@rSŸBnR"],["@@g~h}"],["@@FlEk"],["@@OdPc"],["@@v[u\\"],["@@FjâL~wyoo~›sµL–\\"],["@@¬e¹aNˆ"],["@@\\nÔ¡q]L³ë\\ÿ®ŒQ֎"],["@@ÊA­©[¬"],["@@KxŒv­"],["@@@hlIk]"],["@@pW{o||j"],["@@Md|_mC"],["@@¢…X£ÏylD¼XˆtH"],["@@hlÜ[LykAvyfw^Ež›¤"],["@@fp¤Mus“R"],["@@®_ma~•LÁ¬šZ"],["@@iM„xZ"],["@@ZcYd"],["@@Z~dOSo|A¿qZv"],["@@@`”EN¡v"],["@@|–TY{"],["@@@n@m"],["@@XWkCT\\"],["@@ºwšZRkĕWO¢"],["@@™X®±Grƪ\\ÔáXq{‹"],["@@ůTG°ĄLHm°UC‹"],["@@¤Ž€aÜx~}dtüGæţŎíĔcŖpMËВjē¢·ðĄÆMzˆjWKĎ¢Q¶˜À_꒔_Bı€i«pZ€gf€¤Nrq]§ĂN®«H±‡yƳí¾×ŸīàLłčŴǝĂíÀBŖÕªˆŠÁŖHŗʼnåqûõi¨hÜ·ƒñt»¹ýv_[«¸m‰YL¯‰Qª…mĉÅdMˆ•gÇjcº«•ęœ¬­K­´ƒB«Âącoċ\\xKd¡gěŧ«®á’[~ıxu·Å”KsËɏc¢Ù\\ĭƛëbf¹­ģSƒĜkáƉÔ­ĈZB{ŠaM‘µ‰fzʼnfåÂŧįƋǝÊĕġć£g³ne­ą»@­¦S®‚\\ßðCšh™iqªĭiAu‡A­µ”_W¥ƣO\\lċĢttC¨£t`ˆ™PZäuXßBs‡Ļyek€OđġĵHuXBšµ]׌‡­­\\›°®¬F¢¾pµ¼kŘó¬Wät’¸|@ž•L¨¸µr“ºù³Ù~§WI‹ŸZWŽ®’±Ð¨ÒÉx€`‰²pĜ•rOògtÁZ}þÙ]„’¡ŒŸFK‚wsPlU[}¦Rvn`hq¬\\”nQ´ĘRWb”‚_ rtČFI֊kŠŠĦPJ¶ÖÀÖJĈĄTĚòžC ²@Pú…Øzœ©PœCÈڜĒ±„hŖ‡l¬â~nm¨f©–iļ«m‡nt–u†ÖZÜÄj“ŠLŽ®E̜Fª²iÊxبžIÈhhst"],["@@o\\V’zRZ}y"],["@@†@°¡mۛGĕ¨§Ianá[ýƤjfæ‡ØL–•äGr™"]],encodeOffsets:[[[125592,31553]],[[125785,31436]],[[125729,31431]],[[125513,31380]],[[125223,30438]],[[125115,30114]],[[124815,29155]],[[124419,28746]],[[124095,28635]],[[124005,28609]],[[125e3,30713]],[[125111,30698]],[[125078,30682]],[[125150,30684]],[[124014,28103]],[[125008,31331]],[[125411,31468]],[[125329,31479]],[[125626,30916]],[[125417,30956]],[[125254,30976]],[[125199,30997]],[[125095,31058]],[[125083,30915]],[[124885,31015]],[[125218,30798]],[[124867,30838]],[[124755,30788]],[[124802,30809]],[[125267,30657]],[[125218,30578]],[[125200,30562]],[[124968,30474]],[[125167,30396]],[[124955,29879]],[[124714,29781]],[[124762,29462]],[[124325,28754]],[[123990,28459]],[[125366,31477]],[[125115,30363]],[[125369,31139]],[[122495,31878]],[[125329,30690]],[[125192,30787]]]},properties:{cp:[120.153576,30.287459],name:"浙江",childNum:45}},{id:"340000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@^iuLX^"],["@@‚e©Ehl"],["@@°ZÆëϵmkǀwÌÕæhºgBĝâqÙĊz›ÖgņtÀÁÊÆá’hEz|WzqD¹€Ÿ°E‡ŧl{ævÜcA`¤C`|´qžxIJkq^³³ŸGšµbƒíZ…¹qpa±ď OH—¦™Ħˆx¢„gPícOl_iCveaOjCh߸i݋bÛªCC¿€m„RV§¢A|t^iĠGÀtÚs–d]ĮÐDE¶zAb àiödK¡~H¸íæAžǿYƒ“j{ď¿‘™À½W—®£ChŒÃsiŒkkly]_teu[bFa‰Tig‡n{]Gqªo‹ĈMYá|·¥f¥—őaSÕė™NµñĞ«ImŒ_m¿Âa]uĜp …Z_§{Cƒäg¤°r[_Yj‰ÆOdý“[ŽI[á·¥“Q_n‡ùgL¾mv™ˊBÜƶĊJhšp“c¹˜O]iŠ]œ¥ jtsggJǧw×jÉ©±›EFˍ­‰Ki”ÛÃÕYv…s•ˆm¬njĻª•§emná}k«ŕˆƒgđ²Ù›DǤ›í¡ªOy›†×Où±@DŸñSęćăÕIÕ¿IµĥO‰‰jNÕËT¡¿tNæŇàåyķrĕq§ÄĩsWÆߎF¶žX®¿‰mŒ™w…RIޓfßoG‘³¾©uyH‘į{Ɓħ¯AFnuP…ÍÔzšŒV—dàôº^Ðæd´€‡oG¤{S‰¬ćxã}›ŧ×Kǥĩ«žÕOEзÖdÖsƘѨ[’Û^Xr¢¼˜§xvěƵ`K”§ tÒ´Cvlo¸fzŨð¾NY´ı~ÉĔē…ßúLÃϖ_ÈÏ|]ÂÏFl”g`bšežž€n¾¢pU‚h~ƴĖ¶_‚r sĄ~cž”ƈ]|r c~`¼{À{ȒiJjz`îÀT¥Û³…]’u}›f…ïQl{skl“oNdŸjŸäËzDvčoQŠďHI¦rb“tHĔ~BmlRš—V_„ħTLnñH±’DžœL‘¼L˜ªl§Ťa¸ŒĚlK²€\\RòvDcÎJbt[¤€D@®hh~kt°ǾzÖ@¾ªdb„YhüóZ ň¶vHrľ\\ʗJuxAT|dmÀO„‹[ÃԋG·ĚąĐlŪÚpSJ¨ĸˆLvÞcPæķŨŽ®mАˆálŸwKhïgA¢ųƩޖ¤OȜm’°ŒK´"]],encodeOffsets:[[[121722,32278]],[[119475,30423]],[[119168,35472]]]},properties:{cp:[117.283042,31.86119],name:"安徽",childNum:3}},{id:"350000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@“zht´‡]"],["@@aj^~ĆG—©O"],["@@ed¨„C}}i"],["@@@vˆPGsQ"],["@@‰sBz‚ddW]Q"],["@@SŽ¨Q“{"],["@@NŽVucW"],["@@qptBAq"],["@@‰’¸[mu"],["@@Q\\pD]_"],["@@jSwUadpF"],["@@eXª~ƒ•"],["@@AjvFso"],["@@fT–›_Çí\\Ÿ™—v|ba¦jZÆy€°"],["@@IjJi"],["@@wJI€ˆxš«¼AoNe{M­"],["@@K‰±¡Óˆ”ČäeZ"],["@@k¡¹Eh~c®wBk‹UplÀ¡I•~Māe£bN¨gZý¡a±Öcp©PhžI”Ÿ¢Qq…ÇGj‹|¥U™ g[Ky¬ŏ–v@OpˆtÉEŸF„\\@ åA¬ˆV{Xģ‰ĐBy…cpě…¼³Ăp·¤ƒ¥o“hqqÚ¡ŅLsƒ^ᗞ§qlŸÀhH¨MCe»åÇGD¥zPO£čÙkJA¼ß–ėu›ĕeûҍiÁŧSW¥˜QŠûŗ½ùěcݧSùĩąSWó«íęACµ›eR—åǃRCÒÇZÍ¢‹ź±^dlsŒtjD¸•‚ZpužÔâÒH¾oLUêÃÔjjēò´ĄW‚ƛ…^Ñ¥‹ĦŸ@Çò–ŠmŒƒOw¡õyJ†yD}¢ďÑÈġfŠZd–a©º²z£šN–ƒjD°Ötj¶¬ZSÎ~¾c°¶Ðm˜x‚O¸¢Pl´žSL|¥žA†ȪĖM’ņIJg®áIJČĒü` ŽQF‡¬h|ÓJ@zµ |ê³È ¸UÖŬŬÀEttĸr‚]€˜ðŽM¤ĶIJHtÏ A’†žĬkvsq‡^aÎbvŒd–™fÊòSD€´Z^’xPsÞrv‹ƞŀ˜jJd×ŘÉ ®A–ΦĤd€xĆqAŒ†ZR”ÀMźŒnĊ»ŒİÐZ— YX–æJŠyĊ²ˆ·¶q§·–K@·{s‘Xãô«lŗ¶»o½E¡­«¢±¨Yˆ®Ø‹¶^A™vWĶGĒĢžPlzfˆļŽtàAvWYãšO_‡¤sD§ssČġ[kƤPX¦Ž`¶“ž®ˆBBvĪjv©šjx[L¥àï[F…¼ÍË»ğV`«•Ip™}ccÅĥZE‹ãoP…´B@ŠD—¸m±“z«Ƴ—¿å³BRضˆœWlâþäą`“]Z£Tc— ĹGµ¶H™m@_©—kŒ‰¾xĨ‡ôȉðX«½đCIbćqK³Á‹Äš¬OAwã»aLʼn‡ËĥW[“ÂGI—ÂNxij¤D¢ŽîĎÎB§°_JœGsƒ¥E@…¤uć…P‘å†cuMuw¢BI¿‡]zG¹guĮck\\_"]],encodeOffsets:[[[123250,27563]],[[122541,27268]],[[123020,27189]],[[122916,27125]],[[122887,26845]],[[122808,26762]],[[122568,25912]],[[122778,26197]],[[122515,26757]],[[122816,26587]],[[123388,27005]],[[122450,26243]],[[122578,25962]],[[121255,25103]],[[120987,24903]],[[122339,25802]],[[121042,25093]],[[122439,26024]]]},properties:{cp:[119.306239,26.075302],name:"福建",childNum:18}},{id:"360000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@ĢĨƐgļˆ¼ÂMD~ņªe^\\^§„ý©j׍cZ†Ø¨zdÒa¶ˆlҍJŒìõ`oz÷@¤u޸´†ôęöY¼‰HČƶajlÞƩ¥éZ[”|h}^U Œ ¥p„ĄžƦO lt¸Æ €Q\\€ŠaÆ|CnÂOjt­ĚĤd’ÈŒF`’¶„@Ð딠¦ōҞ¨Sêv†HĢûXD®…QgėWiØPÞìºr¤dž€NĠ¢l–•ĄtZoœCƞÔºCxrpĠV®Ê{f_Y`_ƒeq’’®Aot`@o‚DXfkp¨|Šs¬\\D‘ÄSfè©Hn¬…^DhÆyøJh“ØxĢĀLʈ„ƠPżċĄwȠ̦G®ǒĤäTŠÆ~ĦwŠ«|TF¡Šn€c³Ïå¹]ĉđxe{ÎӐ†vOEm°BƂĨİ|G’vz½ª´€H’àp”eJ݆Qšxn‹ÀŠW­žEµàXÅĪt¨ÃĖrÄwÀFÎ|ňÓMå¼ibµ¯»åDT±m[“r«_gŽmQu~¥V\\OkxtL E¢‹ƒ‘Ú^~ýê‹Pó–qo슱_Êw§ÑªåƗā¼‹mĉŹ‹¿NQ“…YB‹ąrwģcÍ¥B•Ÿ­ŗÊcØiI—žƝĿuŒqtāwO]‘³YCñTeɕš‹caub͈]trlu€ī…B‘ПGsĵıN£ï—^ķqss¿FūūV՟·´Ç{éĈý‰ÿ›OEˆR_ŸđûIċâJh­ŅıN‘ȩĕB…¦K{Tk³¡OP·wn—µÏd¯}½TÍ«YiµÕsC¯„iM•¤™­•¦¯P|ÿUHv“he¥oFTu‰õ\\ŽOSs‹MòđƇiaºćXŸĊĵà·çhƃ÷ǜ{‘ígu^›đg’m[×zkKN‘¶Õ»lčÓ{XSƉv©_ÈëJbVk„ĔVÀ¤P¾ºÈMÖxlò~ªÚàGĂ¢B„±’ÌŒK˜y’áV‡¼Ã~­…`g›ŸsÙfI›Ƌlę¹e|–~udjˆuTlXµf`¿JdŠ[\\˜„L‚‘²"],encodeOffsets:[[116689,26234]]},properties:{cp:[115.892151,28.676493],name:"江西",childNum:1}},{id:"370000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@Xjd]{K"],["@@itbFHy"],["@@HlGk"],["@@T‚ŒGŸy"],["@@K¬˜•‹U"],["@@WdXc"],["@@PtOs"],["@@•LnXhc"],["@@ppVƒu]Or"],["@@cdzAUa"],["@@udRhnCI‡"],["@@ˆoIƒpR„"],["@@Ľč{fzƤî’Kš–ÎMĮ]†—ZFˆ½Y]â£ph’™š¶¨râøÀ†ÎǨ¤^ºÄ”Gzˆ~grĚĜlĞƄLĆdž¢Îo¦–cv“Kb€gr°Wh”mZp ˆL]LºcU‰Æ­n”żĤÌĒœbAnrOAœ´žȊcÀbƦUØrĆUÜøœĬƞ†š˜Ez„VL®öØBkŖÝĐĖ¹ŧ̄±ÀbÎɜnb²ĦhņBĖ›žįĦåXćì@L¯´ywƕCéõė ƿ¸‘lµ¾Z|†ZWyFYŸ¨Mf~C¿`€à_RÇzwƌfQnny´INoƬˆèôº|sT„JUš›‚L„îVj„ǎ¾Ē؍‚Dz²XPn±ŴPè¸ŔLƔÜƺ_T‘üÃĤBBċȉöA´fa„˜M¨{«M`‡¶d¡ô‰Ö°šmȰBÔjjŒ´PM|”c^d¤u•ƒ¤Û´Œä«ƢfPk¶Môlˆ]Lb„}su^ke{lC‘…M•rDŠÇ­]NÑFsmoõľH‰yGă{{çrnÓE‰‹ƕZGª¹Fj¢ïW…uøCǷ돡ąuhÛ¡^Kx•C`C\\bÅxì²ĝÝ¿_N‰īCȽĿåB¥¢·IŖÕy\\‡¹kx‡Ã£Č×GDyÕ¤ÁçFQ¡„KtŵƋ]CgÏAùSed‡cÚź—ŠuYfƒyMmhUWpSyGwMPqŀ—›Á¼zK›¶†G•­Y§Ëƒ@–´śÇµƕBmœ@Io‚g——Z¯u‹TMx}C‘‰VK‚ï{éƵP—™_K«™pÛÙqċtkkù]gŽ‹Tğwo•ɁsMõ³ă‡AN£™MRkmEʕč™ÛbMjÝGu…IZ™—GPģ‡ãħE[iµBEuŸDPԛ~ª¼ętŠœ]ŒûG§€¡QMsğNPŏįzs£Ug{đJĿļā³]ç«Qr~¥CƎÑ^n¶ÆéÎR~Ż¸Y’I“] P‰umŝrƿ›‰›Iā‹[x‰edz‹L‘¯v¯s¬ÁY…~}…ťuŁŒg›ƋpÝĄ_ņī¶ÏSR´ÁP~ž¿Cyžċßdwk´Ss•X|t‰`Ä Èð€AªìÎT°¦Dd–€a^lĎDĶÚY°Ž`ĪŴǒˆ”àŠv\\ebŒZH„ŖR¬ŢƱùęO•ÑM­³FۃWp[ƒ"]],encodeOffsets:[[[123806,39303]],[[123821,39266]],[[123742,39256]],[[123702,39203]],[[123649,39066]],[[123847,38933]],[[123580,38839]],[[123894,37288]],[[123043,36624]],[[123344,38676]],[[123522,38857]],[[123628,38858]],[[118260,36742]]]},properties:{cp:[117.000923,36.675807],name:"山东",childNum:13}},{id:"410000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@•ýL™ùµP³swIÓxcŢĞð†´E®žÚPt†ĴXØx¶˜@«ŕŕQGƒ‹Yfa[şu“ßǩ™đš_X³ijÕčC]kbc•¥CS¯ëÍB©÷‹–³­Siˆ_}m˜YTtž³xlàcȂzÀD}ÂOQ³ÐTĨ¯†ƗòËŖ[hœł‹Ŧv~††}ÂZž«¤lPǕ£ªÝŴÅR§ØnhcŒtâk‡nύ­ľŹUÓÝdKuķ‡I§oTũÙďkęĆH¸ÓŒ\\ăŒ¿PcnS{wBIvɘĽ[GqµuŸŇôYgûƒZcaŽ©@½Õǽys¯}lgg@­C\\£as€IdÍuCQñ[L±ęk·‹ţb¨©kK—’»›KC²‘òGKmĨS`ƒ˜UQ™nk}AGē”sqaJ¥ĐGR‰ĎpCuÌy ã iMc”plk|tRk†ðœev~^‘´†¦ÜŽSí¿_iyjI|ȑ|¿_»d}qŸ^{“Ƈdă}Ÿtqµ`Ƴĕg}V¡om½fa™Ço³TTj¥„tĠ—Ry”K{ùÓjuµ{t}uËR‘iŸvGŠçJFjµŠÍyqΘàQÂFewixGw½Yŷpµú³XU›½ġy™łå‰kÚwZXˆ·l„¢Á¢K”zO„Λ΀jc¼htoDHr…|­J“½}JZ_¯iPq{tę½ĕ¦Zpĵø«kQ…Ťƒ]MÛfaQpě±ǽ¾]u­Fu‹÷nƒ™čįADp}AjmcEǒaª³o³ÆÍSƇĈÙDIzˑ赟^ˆKLœ—i—Þñ€[œƒaA²zz‰Ì÷Dœ|[šíijgf‚ÕÞd®|`ƒĆ~„oĠƑô³Ŋ‘D×°¯CsŠøÀ«ì‰UMhTº¨¸ǡîS–Ô„DruÂÇZ•ÖEŽ’vPZ„žW”~؋ÐtĄE¢¦Ðy¸bŠô´oŬ¬Ž²Ês~€€]®tªašpŎJ¨Öº„_ŠŔ–`’Ŗ^Ѝ\\Ĝu–”~m²Ƹ›¸fW‰ĦrƔ}Î^gjdfÔ¡J}\\n C˜¦þWxªJRÔŠu¬ĨĨmF†dM{\\d\\ŠYÊ¢ú@@¦ª²SŠÜsC–}fNècbpRmlØ^g„d¢aÒ¢CZˆZxvÆ¶N¿’¢T@€uCœ¬^ĊðÄn|žlGl’™Rjsp¢ED}€Fio~ÔNŽ‹„~zkĘHVsDzßjƒŬŒŠŢ`Pûàl¢˜\\ÀœEhŽİgÞē X¼Pk–„|m"],encodeOffsets:[[118256,37017]]},properties:{cp:[113.665412,34.757975],name:"河南",childNum:1}},{id:"420000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@AB‚"],["@@lskt"],["@@¾«}{ra®pîÃ\\™›{øCŠËyyB±„b\\›ò˜Ý˜jK›‡L ]ĎĽÌ’JyÚCƈćÎT´Å´pb©È‘dFin~BCo°BĎĚømvŒ®E^vǾ½Ĝ²Ro‚bÜeNŽ„^ĺ£R†¬lĶ÷YoĖ¥Ě¾|sOr°jY`~I”¾®I†{GqpCgyl{‡£œÍƒÍyPL“¡ƒ¡¸kW‡xYlÙ抚ŁĢzœ¾žV´W¶ùŸo¾ZHxjwfx„GNÁ•³Xéæl¶‰EièIH‰ u’jÌQ~v|sv¶Ôi|ú¢Fh˜Qsğ¦ƒSiŠBg™ÐE^ÁÐ{–čnOÂȞUÎóĔ†ÊēIJ}Z³½Mŧïeyp·uk³DsѨŸL“¶_œÅuèw»—€¡WqÜ]\\‘Ò§tƗcÕ¸ÕFÏǝĉăxŻČƟO‡ƒKÉġÿ×wg”÷IÅzCg†]m«ªGeçÃTC’«[‰t§{loWeC@ps_Bp‘­r‘„f_``Z|ei¡—oċMqow€¹DƝӛDYpûs•–‹Ykıǃ}s¥ç³[§ŸcYŠ§HK„«Qy‰]¢“wwö€¸ïx¼ņ¾Xv®ÇÀµRĠЋžHMž±cÏd„ƒǍũȅȷ±DSyúĝ£ŤĀàtÖÿï[îb\\}pĭÉI±Ñy…¿³x¯N‰o‰|¹H™ÏÛm‹júË~Tš•u˜ęjCöAwě¬R’đl¯ Ñb­‰ŇT†Ŀ_[Œ‘IčĄʿnM¦ğ\\É[T·™k¹œ©oĕ@A¾w•ya¥Y\\¥Âaz¯ãÁ¡k¥ne£Ûw†E©Êō¶˓uoj_Uƒ¡cF¹­[Wv“P©w—huÕyBF“ƒ`R‹qJUw\\i¡{jŸŸEPïÿ½fć…QÑÀQ{ž‚°‡fLԁ~wXg—ītêݾ–ĺ‘Hdˆ³fJd]‹HJ²…E€ƒoU¥†HhwQsƐ»Xmg±çve›]Dm͂PˆoCc¾‹_h”–høYrŊU¶eD°Č_N~øĹĚ·`z’]Äþp¼…äÌQŒv\\rCŒé¾TnkžŐڀÜa‡“¼ÝƆĢ¶Ûo…d…ĔňТJq’Pb ¾|JŒ¾fXŠƐîĨ_Z¯À}úƲ‹N_ĒĊ^„‘ĈaŐyp»CÇĕKŠšñL³ŠġMŒ²wrIÒŭxjb[œžn«øœ˜—æˆàƒ ^²­h¯Ú€ŐªÞ¸€Y²ĒVø}Ā^İ™´‚LŠÚm„¥ÀJÞ{JVŒųÞŃx×sxxƈē ģMř–ÚðòIf–Ċ“Œ\\Ʈ±ŒdʧĘD†vČ_Àæ~DŒċ´A®µ†¨ØLV¦êHÒ¤"]],encodeOffsets:[[[113712,34e3]],[[115612,30507]],[[113649,34054]]]},properties:{cp:[114.298572,30.584355],name:"湖北",childNum:3}},{id:"430000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@—n„FTs"],["@@ßÅÆችÔXr—†CO™“…ËR‘ïÿĩ­TooQyšÓ[‹ŅBE¬–ÎÓXa„į§Ã¸G °ITxp‰úxÚij¥Ïš–Ģ¾ŠedžÄ©ĸG…œàGh‚€M¤–Â_U}Ċ}¢pczfŠþg¤€”ÇòAV‘‹M"],["@@©K—ƒA·³CQ±Á«³BUŠƑ¹AŠtćOw™D]ŒJiØSm¯b£‘ylƒ›X…HËѱH•«–‘C^õľA–Å§¤É¥„ïyuǙuA¢^{ÌC´­¦ŷJ£^[†“ª¿‡ĕ~•Ƈ…•N… skóā‡¹¿€ï]ă~÷O§­@—Vm¡‹Qđ¦¢Ĥ{ºjԏŽŒª¥nf´•~ÕoŸž×Ûą‹MąıuZœmZcÒ IJĪ²SÊDŽŶ¨ƚƒ’CÖŎªQؼrŭŽ­«}NÏürʬŒmjr€@ĘrTW ­SsdHzƓ^ÇÂyUi¯DÅYlŹu{hTœ}mĉ–¹¥ě‰Dÿë©ıÓ[Oº£ž“¥ót€ł¹MՄžƪƒ`Pš…Di–ÛUŠ¾Å‌ìˆU’ñB“È£ýhe‰dy¡oċ€`pfmjP~‚kZa…ZsÐd°wj§ƒ@€Ĵ®w~^‚kÀÅKvNmX\\¨a“”сqvíó¿F„¤¡@ũÑVw}S@j}¾«pĂr–ªg àÀ²NJ¶¶Dô…K‚|^ª†Ž°LX¾ŴäPĪ±œ£EXd›”^¶›IJÞܓ~‘u¸ǔ˜Ž›MRhsR…e†`ÄofIÔ\\Ø  i”ćymnú¨cj ¢»–GČìƊÿШXeĈĀ¾Oð Fi ¢|[jVxrIQŒ„_E”zAN¦zLU`œcªx”OTu RLÄ¢dV„i`p˔vŎµªÉžF~ƒØ€d¢ºgİàw¸Áb[¦Zb¦–z½xBĖ@ªpº›šlS¸Ö\\Ĕ[N¥ˀmĎă’J\\‹ŀ`€…ňSڊĖÁĐiO“Ĝ«BxDõĚiv—ž–S™Ì}iùŒžÜnšÐºGŠ{Šp°M´w†ÀÒzJ²ò¨ oTçüöoÛÿñŽőФ‚ùTz²CȆȸǎŪƒƑÐc°dPÎŸğ˶[Ƚu¯½WM¡­Éž“’B·rížnZŸÒ `‡¨GA¾\\pē˜XhÆRC­üWGġu…T靧Ŏѝ©ò³I±³}_‘‹EÃħg®ęisÁPDmÅ{‰b[Rşs·€kPŸŽƥƒóRo”O‹ŸVŸ~]{g\\“êYƪ¦kÝbiċƵŠGZ»Ěõ…ó·³vŝž£ø@pyö_‹ëŽIkѵ‡bcѧy…×dY؎ªiþž¨ƒ[]f]Ņ©C}ÁN‡»hĻħƏ’ĩ"]],encodeOffsets:[[[115640,30489]],[[112543,27312]],[[116690,26230]]]},properties:{cp:[112.982279,28.19409],name:"湖南",childNum:3}},{id:"440000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@QdˆAua"],["@@ƒlxDLo"],["@@sbhNLo"],["@@Ă āŸ"],["@@WltO[["],["@@Krœ]S"],["@@e„„I]y"],["@@I|„Mym"],["@@ƒÛ³LSŒž¼Y"],["@@nvºB–ëui©`¾"],["@@zdšÛ›Jw®"],["@@†°…¯"],["@@a yAª¸ËJIx،@€ĀHAmßV¡o•fu•o"],["@@šs‰ŗÃÔėAƁ›ZšÄ ~°ČP‚‹äh"],["@@‹¶Ý’Ì‚vmĞh­ı‡Q"],["@@HœŠdSjĒ¢D}war…“u«ZqadYM"],["@@elŒ\\LqqU"],["@@~rMo\\"],["@@f„^ƒC"],["@@øPªoj÷ÍÝħXČx”°Q¨ıXNv"],["@@gÇƳˆŽˆ”oˆŠˆ[~tly"],["@@E–ÆC¿‘"],["@@OŽP"],["@@w‹†đóg‰™ĝ—[³‹¡VÙæÅöM̳¹pÁaËýý©D©Ü“JŹƕģGą¤{Ùū…ǘO²«BƱéA—Ò‰ĥ‡¡«BhlmtÃPµyU¯uc“d·w_bŝcīímGOŽ|KP’ȏ‡ŹãŝIŕŭŕ@Óoo¿ē‹±ß}Ž…ŭ‚ŸIJWÈCőâUâǙI›ğʼn©I›ijEׅÁ”³Aó›wXJþ±ÌŒÜӔĨ£L]ĈÙƺZǾĆĖMĸĤfŒÎĵl•ŨnȈ‘ĐtF”Š–FĤ–‚êk¶œ^k°f¶gŠŽœ}®Fa˜f`vXŲxl˜„¦–ÔÁ²¬ÐŸ¦pqÊ̲ˆi€XŸØRDÎ}†Ä@ZĠ’s„x®AR~®ETtĄZ†–ƈfŠŠHâÒÐA†µ\\S¸„^wĖkRzŠalŽŜ|E¨ÈNĀňZTŒ’pBh£\\ŒĎƀuXĖtKL–¶G|Ž»ĺEļĞ~ÜĢÛĊrˆO˜Ùîvd]nˆ¬VœÊĜ°R֟pM††–‚ƂªFbwžEÀˆ˜©Œž\\…¤]ŸI®¥D³|ˎ]CöAŤ¦…æ’´¥¸Lv¼€•¢ĽBaô–F~—š®²GÌҐEY„„œzk¤’°ahlV՞I^‹šCxĈPŽsB‰ƒºV‰¸@¾ªR²ĨN]´_eavSi‡vc•}p}Đ¼ƌkJœÚe thœ†_¸ ºx±ò_xN›Ë‹²‘@ƒă¡ßH©Ùñ}wkNÕ¹ÇO½¿£ĕ]ly_WìIžÇª`ŠuTÅxYĒÖ¼k֞’µ‚MžjJÚwn\\h‘œĒv]îh|’È›Ƅøègž¸Ķß ĉĈWb¹ƀdéʌNTtP[ŠöSvrCZžžaGuœbo´ŖÒÇА~¡zCI…özx¢„Pn‹•‰Èñ @ŒĥÒ¦†]ƞŠV}³ăĔñiiÄÓVépKG½Ä‘ÓávYo–C·sit‹iaÀy„ŧΡÈYDÑům}‰ý|m[węõĉZÅxUO}÷N¹³ĉo_qtă“qwµŁYلǝŕ¹tïÛUïmRCº…ˆĭ|µ›ÕÊK™½R‘ē ó]‘–GªęAx–»HO£|ām‡¡diď×YïYWªʼnOeÚtĐ«zđ¹T…ā‡úE™á²\\‹ķÍ}jYàÙÆſ¿Çdğ·ùTßÇţʄ¡XgWÀLJğ·¿ÃˆOj YÇ÷Qě‹i"]],encodeOffsets:[[[117381,22988]],[[116552,22934]],[[116790,22617]],[[116973,22545]],[[116444,22536]],[[116931,22515]],[[116496,22490]],[[116453,22449]],[[113301,21439]],[[118726,21604]],[[118709,21486]],[[113210,20816]],[[115482,22082]],[[113171,21585]],[[113199,21590]],[[115232,22102]],[[115739,22373]],[[115134,22184]],[[113056,21175]],[[119573,21271]],[[119957,24020]],[[115859,22356]],[[116561,22649]],[[116285,22746]]]},properties:{cp:[113.280637,23.125178],name:"广东",childNum:24}},{id:"450000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@H– TQ§•A"],["@@ĨʪƒLƒƊDÎĹĐCǦė¸zÚGn£¾›rªŀÜt¬@֛ڈSx~øOŒ˜ŶÐÂæȠ\\„ÈÜObĖw^oބLf¬°bI lTØB̈F£Ć¹gñĤaY“t¿¤VSñœK¸¤nM†¼‚JE±„½¸šŠño‹ÜCƆæĪ^ŠĚQÖ¦^‡ˆˆf´Q†üÜʝz¯šlzUĺš@쇀p¶n]sxtx¶@„~ÒĂJb©gk‚{°‚~c°`ԙ¬rV\\“la¼¤ôá`¯¹LC†ÆbŒxEræO‚v[H­˜„[~|aB£ÖsºdAĐzNÂðsŽÞƔ…Ĥªbƒ–ab`ho¡³F«èVloŽ¤™ÔRzpp®SŽĪº¨ÖƒºN…ij„d`’a”¦¤F³ºDÎńĀìŠCžĜº¦Ċ•~nS›|gźvZkCÆj°zVÈÁƔ]LÊFZg…čP­kini«‹qǀcz͔Y®¬Ů»qR×ō©DՄ‘§ƙǃŵTÉĩ±ŸıdÑnYY›IJvNĆƌØÜ Öp–}e³¦m‹©iÓ|¹Ÿħņ›|ª¦QF¢Â¬ʖovg¿em‡^ucà÷gՎuŒíÙćĝ}FĻ¼Ĺ{µHK•sLSđƃr‹č¤[Ag‘oS‹ŇYMÿ§Ç{Fśbky‰lQxĕƒ]T·¶[B…ÑÏGáşşƇe€…•ăYSs­FQ}­Bƒw‘tYğÃ@~…C̀Q ×W‡j˱rÉ¥oÏ ±«ÓÂ¥•ƒ€k—ŽwWűŒmcih³K›~‰µh¯e]lµ›él•Eģ‰•E“ďs‡’mǖŧē`ãògK_ÛsUʝ“ćğ¶hŒöŒO¤Ǜn³Žc‘`¡y‹¦C‘ez€YŠwa™–‘[ďĵűMę§]X˜Î_‚훘Û]é’ÛUćİÕBƣ±…dƒy¹T^džûÅÑŦ·‡PĻþÙ`K€¦˜…¢ÍeœĥR¿Œ³£[~Œäu¼dl‰t‚†W¸oRM¢ď\\zœ}Æzdvň–{ÎXF¶°Â_„ÒÂÏL©Ö•TmuŸ¼ãl‰›īkiqéfA„·Êµ\\őDc¥ÝF“y›Ôć˜c€űH_hL܋êĺШc}rn`½„Ì@¸¶ªVLŒŠhŒ‹\\•Ţĺk~ŽĠið°|gŒtTĭĸ^x‘vK˜VGréAé‘bUu›MJ‰VÃO¡…qĂXËS‰ģãlýàŸ_ju‡YÛÒB†œG^˜é֊¶§ŽƒEG”ÅzěƒƯ¤Ek‡N[kdåucé¬dnYpAyČ{`]þ¯T’bÜÈk‚¡Ġ•vŒàh„ÂƄ¢J"]],encodeOffsets:[[[111707,21520]],[[107619,25527]]]},properties:{cp:[108.320004,22.82402],name:"广西",childNum:2}},{id:"460000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@š¦Ŝil¢”XƦ‘ƞò–ïè§ŞCêɕrŧůÇąĻõ™·ĉ³œ̅kÇm@ċȧƒŧĥ‰Ľʉ­ƅſ“ȓÒ˦ŝE}ºƑ[ÍĜȋ gÎfǐÏĤ¨êƺ\\Ɔ¸ĠĎvʄȀœÐ¾jNðĀÒRŒšZdž™zÐŘΰH¨Ƣb²_Ġ "],encodeOffsets:[[112750,20508]]},properties:{cp:[110.33119,20.031971],name:"海南",childNum:1}},{id:"510000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@LqKr"],["@@Š[ĻéV£ž_ţġñpG •réÏ·~ąSfy×͂·ºſƽiÍıƣıĻmHH}siaX@iÇ°ÁÃ×t«ƒ­Tƒ¤J–JJŒyJ•ÈŠ`Ohߦ¡uËhIyCjmÿw…ZG……Ti‹SˆsO‰žB²ŸfNmsPaˆ{M{ŠõE‘^Hj}gYpaeuž¯‘oáwHjÁ½M¡pM“–uå‡mni{fk”\\oƒÎqCw†EZ¼K›ĝŠƒAy{m÷L‡wO×SimRI¯rK™õBS«sFe‡]fµ¢óY_ÆPRcue°Cbo׌bd£ŌIHgtrnyPt¦foaXďx›lBowz‹_{ÊéWiêE„GhܸºuFĈIxf®Ž•Y½ĀǙ]¤EyŸF²ċ’w¸¿@g¢§RGv»–áŸW`ÃĵJwi]t¥wO­½a[׈]`Ãi­üL€¦LabbTÀå’c}Íh™Æhˆ‹®BH€î|Ék­¤S†y£„ia©taį·Ɖ`ō¥Uh“O…ƒĝLk}©Fos‰´›Jm„µlŁu—…ø–nÑJWΪ–YÀïAetTžŅ‚ӍG™Ë«bo‰{ıwodƟ½ƒžOġܑµxàNÖ¾P²§HKv¾–]|•B‡ÆåoZ`¡Ø`ÀmºĠ~ÌЧnDž¿¤]wğ@sƒ‰rğu‰~‘Io”[é±¹ ¿žſđӉ@q‹gˆ¹zƱřaí°KtǤV»Ã[ĩǭƑ^ÇÓ@ỗs›Zϕ‹œÅĭ€Ƌ•ěpwDóÖሯneQˌq·•GCœýS]xŸ·ý‹q³•O՜Œ¶Qzßti{ř‰áÍÇWŝŭñzÇW‹pç¿JŒ™‚Xœĩè½cŒF–ÂLiVjx}\\N†ŇĖ¥Ge–“JA¼ÄHfÈu~¸Æ«dE³ÉMA|b˜Ò…˜ćhG¬CM‚õŠ„ƤąAvƒüV€éŀ‰_V̳ĐwQj´·ZeÈÁ¨X´Æ¡Qu·»Ÿ“˜ÕZ³ġqDo‰y`L¬gdp°şŠp¦ėìÅĮZŽ°Iä”h‚‘ˆzŠĵœf²å ›ĚрKp‹IN|‹„Ñz]ń……·FU×é»R³™MƒÉ»GM«€ki€™ér™}Ã`¹ăÞmȝnÁîRǀ³ĜoİzŔwǶVÚ£À]ɜ»ĆlƂ²Ġ…þTº·àUȞÏʦ¶†I’«dĽĢdĬ¿–»Ĕ׊h\\c¬†ä²GêëĤł¥ÀǿżÃÆMº}BÕĢyFVvw–ˆxBèĻĒ©Ĉ“tCĢɽŠȣ¦āæ·HĽî“ôNԓ~^¤Ɗœu„œ^s¼{TA¼ø°¢İªDè¾Ň¶ÝJ‘®Z´ğ~Sn|ªWÚ©òzPOȸ‚bð¢|‹øĞŠŒœŒQìÛÐ@Ğ™ǎRS¤Á§d…i“´ezÝúØã]Hq„kIŸþËQǦÃsǤ[E¬ÉŪÍxXƒ·ÖƁİlƞ¹ª¹|XÊwn‘ÆƄmÀêErĒtD®ċæcQƒ”E®³^ĭ¥©l}äQto˜ŖÜqƎkµ–„ªÔĻĴ¡@Ċ°B²Èw^^RsºTĀ£ŚæœQP‘JvÄz„^Đ¹Æ¯fLà´GC²‘dt˜­ĀRt¼¤ĦOðğfÔðDŨŁĞƘïžPȆ®âbMüÀXZ ¸£@Ś›»»QÉ­™]d“sÖ×_͖_ÌêŮPrĔĐÕGĂeZÜîĘqBhtO ¤tE[h|Y‹Ô‚ZśÎs´xº±UŒ’ñˆt|O’ĩĠºNbgþŠJy^dÂY Į„]Řz¦gC‚³€R`ĀŠz’¢AjŒ¸CL„¤RÆ»@­Ŏk\\Ç´£YW}z@Z}‰Ã¶“oû¶]´^N‡Ò}èN‚ª–P˜Íy¹`S°´†ATe€VamdUĐwʄvĮÕ\\ƒu‹Æŗ¨Yp¹àZÂm™Wh{á„}WØǍ•Éüw™ga§áCNęÎ[ĀÕĪgÖɪX˜øx¬½Ů¦¦[€—„NΆL€ÜUÖ´òrÙŠxR^–†J˜k„ijnDX{Uƒ~ET{ļº¦PZc”jF²Ė@Žp˜g€ˆ¨“B{ƒu¨ŦyhoÚD®¯¢˜ WòàFΤ¨GDäz¦kŮPœġq˚¥À]€Ÿ˜eŽâÚ´ªKxī„Pˆ—Ö|æ[xäJÞĥ‚s’NÖ½ž€I†¬nĨY´®Ð—ƐŠ€mD™ŝuäđđEb…e’e_™v¡}ìęNJē}q”É埁T¯µRs¡M@}ůa†a­¯wvƉåZwž\\Z{åû^›"]],encodeOffsets:[[[108815,30935]],[[110617,31811]]]},properties:{cp:[104.065735,30.659462],name:"四川",childNum:2}},{id:"520000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@†G\\†lY£‘in"],["@@q‚|ˆ‚mc¯tχVSÎ"],["@@hÑ£Is‡NgßH†›HªķÃh_¹ƒ¡ĝħń¦uيùŽgS¯JHŸ|sÝÅtÁïyMDč»eÕtA¤{b\\}—ƒG®u\\åPFq‹wÅaD…žK°ºâ_£ùbµ”mÁ‹ÛœĹM[q|hlaªāI}тƒµ@swtwm^oµˆD鼊yV™ky°ÉžûÛR…³‚‡eˆ‡¥]RՋěħ[ƅåÛDpŒ”J„iV™™‰ÂF²I…»mN·£›LbÒYb—WsÀbŽ™pki™TZĄă¶HŒq`……ĥ_JŸ¯ae«ƒKpÝx]aĕÛPƒÇȟ[ÁåŵÏő—÷Pw}‡TœÙ@Õs«ĿÛq©½œm¤ÙH·yǥĘĉBµĨÕnđ]K„©„œá‹ŸG纍§Õßg‡ǗĦTèƤƺ{¶ÉHÎd¾ŚÊ·OÐjXWrãLyzÉAL¾ę¢bĶėy_qMĔąro¼hĊžw¶øV¤w”²Ĉ]ʚKx|`ź¦ÂÈdr„cȁbe¸›`I¼čTF´¼Óýȃr¹ÍJ©k_șl³´_pН`oÒhŽ¶pa‚^ÓĔ}D»^Xyœ`d˜[Kv…JPhèhCrĂĚÂ^Êƌ wˆZL­Ġ£šÁbrzOIl’MM”ĪŐžËr×ÎeŦŽtw|Œ¢mKjSǘňĂStÎŦEtqFT†¾†E쬬ôxÌO¢Ÿ KŠ³ŀºäY†„”PVgŎ¦Ŋm޼VZwVlŒ„z¤…ž£Tl®ctĽÚó{G­A‡ŒÇgeš~Αd¿æaSba¥KKûj®_ć^\\ؾbP®¦x^sxjĶI_Ä X‚⼕Hu¨Qh¡À@Ëô}Ž±žGNìĎlT¸ˆ…`V~R°tbÕĊ`¸úÛtπFDu€[ƒMfqGH·¥yA‰ztMFe|R‚_Gk†ChZeÚ°to˜v`x‹b„ŒDnÐ{E}šZ˜è€x—†NEފREn˜[Pv@{~rĆAB§‚EO¿|UZ~ì„Uf¨J²ĂÝƀ‚sª–B`„s¶œfvö¦ŠÕ~dÔq¨¸º»uù[[§´sb¤¢zþFœ¢Æ…Àhˆ™ÂˆW\\ıŽËI݊o±ĭŠ£þˆÊs}¡R]ŒěƒD‚g´VG¢‚j±®è†ºÃmpU[Á›‘Œëº°r›ÜbNu¸}Žº¼‡`ni”ºÔXĄ¤¼Ôdaµ€Á_À…†ftQQgœR—‘·Ǔ’v”}Ýלĵ]µœ“Wc¤F²›OĩųãW½¯K‚©…]€{†LóµCIµ±Mß¿hŸ•©āq¬o‚½ž~@i~TUxŪÒ¢@ƒ£ÀEîôruń‚”“‚b[§nWuMÆLl¿]x}ij­€½"]],encodeOffsets:[[[112158,27383]],[[112105,27474]],[[112095,27476]]]},properties:{cp:[106.713478,26.578343],name:"贵州",childNum:3}},{id:"530000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@[„ùx½}ÑRH‘YīĺûsÍn‘iEoã½Ya²ė{c¬ĝg•ĂsA•ØÅwď‚õzFjw}—«Dx¿}UũlŸê™@•HÅ­F‰¨ÇoJ´Ónũuą¡Ã¢pÒŌ“Ø TF²‚xa²ËX€‚cʋlHîAßËŁkŻƑŷÉ©h™W­æßU‡“Ës¡¦}•teèƶStǀÇ}Fd£j‹ĈZĆÆ‹¤T‚č\\Dƒ}O÷š£Uˆ§~ŃG™‚åŃDĝ¸œTsd¶¶Bªš¤u¢ŌĎo~t¾ÍŶÒtD¦Ú„iôö‰€z›ØX²ghįh½Û±¯€ÿm·zR¦Ɵ`ªŊÃh¢rOԍ´£Ym¼èêf¯ŪĽn„†cÚbŒw\\zlvWžªâˆ ¦g–mĿBş£¢ƹřbĥkǫßeeZkÙIKueT»sVesb‘aĕ  ¶®dNœĄÄpªyŽ¼—„³BE˜®l‡ŽGœŭCœǶwêżĔÂe„pÍÀQƞpC„–¼ŲÈ­AÎô¶R„ä’Q^Øu¬°š_Èôc´¹ò¨P΢hlϦ´Ħ“Æ´sâDŽŲPnÊD^¯°’Upv†}®BP̪–jǬx–Söwlfòªv€qĸ|`H€­viļ€ndĜ­Ćhň•‚em·FyށqóžSį¯‘³X_ĞçêtryvL¤§z„¦c¦¥jnŞk˜ˆlD¤øz½ĜàžĂŧMÅ|áƆàÊcðÂF܎‚áŢ¥\\\\º™İøÒÐJĴ‡„îD¦zK²ǏÎEh~’CD­hMn^ÌöÄ©ČZÀžaü„fɭyœpį´ěFűk]Ôě¢qlÅĆÙa¶~Äqššê€ljN¬¼H„ÊšNQ´ê¼VظE††^ŃÒyŒƒM{ŒJLoÒœęæŸe±Ķ›y‰’‡gã“¯JYÆĭĘëo¥Š‰o¯hcK«z_pŠrC´ĢÖY”—¼ v¸¢RŽÅW³Â§fǸYi³xR´ďUˊ`êĿU„û€uĆBƒƣö‰N€DH«Ĉg†——Ñ‚aB{ÊNF´¬c·Åv}eÇÃGB»”If•¦HňĕM…~[iwjUÁKE•Ž‹¾dĪçW›šI‹èÀŒoÈXòyŞŮÈXâÎŚŠj|àsRy‹µÖ›–Pr´þŒ ¸^wþTDŔ–Hr¸‹žRÌmf‡żÕâCôox–ĜƌÆĮŒ›Ð–œY˜tâŦÔ@]ÈǮƒ\\Ī¼Ä£UsȯLbîƲŚºyh‡rŒŠ@ĒԝƀŸÀ²º\\êp“’JŠ}ĠvŠqt„Ġ@^xÀ£È†¨mËÏğ}n¹_¿¢×Y_æpˆÅ–A^{½•Lu¨GO±Õ½ßM¶w’ÁĢۂP‚›Ƣ¼pcIJxŠ|ap̬HšÐŒŊSfsðBZ¿©“XÏÒK•k†÷Eû¿‰S…rEFsÕūk”óVǥʼniTL‚¡n{‹uxţÏh™ôŝ¬ğōN“‘NJkyPaq™Âğ¤K®‡YŸxÉƋÁ]āęDqçgOg†ILu—\\_gz—]W¼ž~CÔē]bµogpў_oď`´³Țkl`IªºÎȄqÔþž»E³ĎSJ»œ_f·‚adÇqƒÇc¥Á_Źw{™L^ɱćx“U£µ÷xgĉp»ĆqNē`rĘzaĵĚ¡K½ÊBzyäKXqiWPÏɸ½řÍcÊG|µƕƣG˛÷Ÿk°_^ý|_zċBZocmø¯hhcæ\\lˆMFlư£Ĝ„ÆyH“„F¨‰µêÕ]—›HA…àӄ^it `þßäkŠĤÎT~Wlÿ¨„ÔPzUC–NVv [jâôDôď[}ž‰z¿–msSh‹¯{jïğl}šĹ[–őŒ‰gK‹©U·µË@¾ƒm_~q¡f¹…ÅË^»‘f³ø}Q•„¡Ö˳gͱ^ǁ…\\ëÃA_—¿bW›Ï[¶ƛ鏝£F{īZgm@|kHǭƁć¦UĔťƒ×ë}ǝƒeďºȡȘÏíBə£āĘPªij¶“ʼnÿ‡y©n‰ď£G¹¡I›Š±LÉĺÑdĉ܇W¥˜‰}g˜Á†{aqÃ¥aŠıęÏZ—ï`"],encodeOffsets:[[104636,22969]]},properties:{cp:[102.712251,25.040609],name:"云南",childNum:1}},{id:"540000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@hžľxŽŖ‰xƒÒVŽ†ºÅâAĪÝȆµę¯Ňa±r_w~uSÕň‘qOj]ɄQ…£Z……UDûoY’»©M[‹L¼qãË{V͕çWViŽ]ë©Ä÷àyƛh›ÚU°ŒŒa”d„cQƒ~Mx¥™cc¡ÙaSyF—ցk­ŒuRýq¿Ôµ•QĽ³aG{¿FµëªéĜÿª@¬·–K‰·àariĕĀ«V»Ŷ™Ĵū˜gèLǴŇƶaf‹tŒèBŚ£^Šâ†ǐÝ®–šM¦ÁǞÿ¬LhŸŽJ¾óƾƺcxw‹f]Y…´ƒ¦|œQLn°aœdĊ…œ\\¨o’œǀÍŎœ´ĩĀd`tÊQŞŕ|‚¨C^©œĈ¦„¦ÎJĊ{ŽëĎjª²rЉšl`¼Ą[t|¦St辉PŒÜK¸€d˜Ƅı]s¤—î_v¹ÎVòŦj˜£Əsc—¬_Ğ´|Ł˜¦AvŽ¦w`ăaÝaa­¢e¤ı²©ªSªšÈMĄwžÉØŔì@T‘¤—Ę™\\õª@”þo´­xA s”ÂtŎKzó´ÇĊµ¢rž^nĊ­Æ¬×üGž¢‚³ {âĊ]š™G‚~bÀgVjzlhǶf€žOšfdŠ‰ªB]pj„•TO–tĊ‚n¤}®¦ƒČ¥d¢¼»ddš”Y¼Žt—¢eȤJ¤}Ǿ¡°§¤AГlc@ĝ”sªćļđAç‡wx•UuzEÖġ~AN¹ÄÅȀŻ¦¿ģŁéì±H…ãd«g[؉¼ēÀ•cīľġ¬cJ‘µ…ÐʥVȝ¸ßS¹†ý±ğkƁ¼ą^ɛ¤Ûÿ‰b[}¬ōõÃ]ËNm®g@•Bg}ÍF±ǐyL¥íCˆƒIij€Ï÷њį[¹¦[⚍EÛïÁÉdƅß{âNÆāŨߝ¾ě÷yC£‡k­´ÓH@¹†TZ¥¢įƒ·ÌAЧ®—Zc…v½ŸZ­¹|ŕWZqgW“|ieZÅYVӁqdq•bc²R@†c‡¥Rã»Ge†ŸeƃīQ•}J[ғK…¬Ə|o’ėjġĠÑN¡ð¯EBčnwôɍėªƒ²•CλŹġǝʅįĭạ̃ūȹ]ΓͧgšsgȽóϧµǛ†ęgſ¶ҍć`ĘąŌJޚä¤rÅň¥ÖÁUětęuůÞiĊÄÀ\\Æs¦ÓRb|Â^řÌkÄŷ¶½÷‡f±iMݑ›‰@ĥ°G¬ÃM¥n£Øą‚ğ¯ß”§aëbéüÑOčœk£{\\‘eµª×M‘šÉfm«Ƒ{Å׃Gŏǩãy³©WÑăû‚··‘Q—òı}¯ã‰I•éÕÂZ¨īès¶ZÈsŽæĔTŘvŽgÌsN@îá¾ó@‰˜ÙwU±ÉT廣TđŸWxq¹Zo‘b‹s[׌¯cĩv‡Œėŧ³BM|¹k‰ªħ—¥TzNYnݍßpęrñĠĉRS~½ŠěVVŠµ‚õ‡«ŒM££µB•ĉ¥áºae~³AuĐh`Ü³ç@BۘïĿa©|z²Ý¼D”£àč²‹ŸƒIƒû›I ā€óK¥}rÝ_Á´éMaň¨€~ªSĈ½Ž½KÙóĿeƃÆBŽ·¬ën×W|Uº}LJrƳ˜lŒµ`bÔ`QˆˆÐÓ@s¬ñIŒÍ@ûws¡åQÑßÁ`ŋĴ{Ī“T•ÚÅTSij‚‹Yo|Ç[ǾµMW¢ĭiÕØ¿@˜šMh…pÕ]j†éò¿OƇĆƇp€êĉâlØw–ěsˆǩ‚ĵ¸c…bU¹ř¨WavquSMzeo_^gsÏ·¥Ó@~¯¿RiīB™Š\\”qTGªÇĜçPoŠÿfñòą¦óQīÈáP•œābß{ƒZŗĸIæńhnszÁCËìñšÏ·ąĚÝUm®ó­L·ăU›Èíoù´Êj°ŁŤ_uµ^‘°Œìǖ@tĶĒ¡Æ‡M³Ģ«˜İĨÅ®ğ†RŽāð“ggheÆ¢z‚Ê©Ô\\°ÝĎz~ź¤Pn–MĪÖB£Ÿk™n鄧żćŠ˜ĆK„Ē°¼L¶è‰âz¨u¦¥LDĘz¬ýÎmĘd¾ß”Fz“hg²™Fy¦ĝ¤ċņbΛ@y‚Ąæm°NĮZRÖíŽJ²öLĸÒ¨Y®ƌÐV‰à˜tt_ڀÂyĠzž]Ţh€zĎ{†ĢX”ˆc|šÐqŽšfO¢¤ög‚ÌHNŽ„PKŖœŽ˜Uú´xx[xˆvĐCûĀŠìÖT¬¸^}Ìsòd´_Ž‡KgžLĴ…ÀBon|H@–Êx˜—¦BpŰˆŌ¿fµƌA¾zLjRxŠ¶F”œkĄźRzŀˆ~¶[”´Hnª–VƞuĒ­È¨ƎcƽÌm¸ÁÈM¦x͊ëÀxdžB’šú^´W†£–d„kɾĬpœw‚˂ØɦļĬIŚœÊ•n›Ŕa¸™~J°î”lɌxĤÊÈðhÌ®‚g˜T´øŽàCˆŽÀ^ªerrƘdž¢İP|Ė ŸWœªĦ^¶´ÂL„aT±üWƜ˜ǀRšŶUńšĖ[QhlLüA†‹Ü\\†qR›Ą©"],encodeOffsets:[[90849,37210]]},properties:{cp:[91.132212,29.660361],name:"西藏",childNum:1}},{id:"610000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@˜p¢—ȮµšûG™Ħ}Ħšðǚ¶òƄ€jɂz°{ºØkÈęâ¦jª‚Bg‚\\œċ°s¬Ž’]jžú ‚E”Ȍdž¬s„t‡”RˆÆdĠݎwܔ¸ôW¾ƮłÒ_{’Ìšû¼„jº¹¢GǪÒ¯ĘƒZ`ºŊƒecņąš~BÂgzpâēòYǠȰÌTΨÂWœ|fcŸă§uF—Œ@NŸ¢XLƒŠRMº[ğȣſï|¥J™kc`sʼnǷ’Y¹‹W@µ÷K…ãï³ÛIcñ·VȋڍÒķø©—þ¥ƒy‚ÓŸğęmWµÎumZyOŅƟĥÓ~sÑL¤µaŅY¦ocyZ{‰y c]{ŒTa©ƒ`U_Ěē£ωÊƍKù’K¶ȱÝƷ§{û»ÅÁȹÍéuij|¹cÑd‘ŠìUYƒŽO‘uF–ÕÈYvÁCqӃT•Ǣí§·S¹NgŠV¬ë÷Át‡°Dد’C´ʼnƒópģ}„ċcE˅FŸŸéGU¥×K…§­¶³B‹Č}C¿åċ`wġB·¤őcƭ²ő[Å^axwQO…ÿEËߌ•ĤNĔŸwƇˆÄŠńwĪ­Šo[„_KÓª³“ÙnK‰Çƒěœÿ]ď€ă_d©·©Ýŏ°Ù®g]±„Ÿ‡ß˜å›—¬÷m\\›iaǑkěX{¢|ZKlçhLt€Ňîŵ€œè[€É@ƉĄEœ‡tƇÏ˜³­ħZ«mJ…›×¾‘MtÝĦ£IwÄå\\Õ{‡˜ƒOwĬ©LÙ³ÙgBƕŀr̛ĢŭO¥lãyC§HÍ£ßEñŸX¡—­°ÙCgpťz‘ˆb`wI„vA|§”‡—hoĕ@E±“iYd¥OĻ¹S|}F@¾oAO²{tfžÜ—¢Fǂ҈W²°BĤh^Wx{@„¬‚­F¸¡„ķn£P|ŸªĴ@^ĠĈæb–Ôc¶l˜Yi…–^Mi˜cĎ°Â[ä€vï¶gv@À“Ĭ·lJ¸sn|¼u~a]’ÆÈtŌºJp’ƒþ£KKf~Š¦UbyäIšĺãn‡Ô¿^­žŵMT–hĠܤko¼Ŏìąǜh`[tŒRd²IJ_œXPrɲ‰l‘‚XžiL§àƒ–¹ŽH˜°Ȧqº®QC—bA†„ŌJ¸ĕÚ³ĺ§ `d¨YjžiZvRĺ±öVKkjGȊĐePОZmļKÀ€‚[ŠŽ`ösìh†ïÎoĬdtKÞ{¬èÒÒBŒÔpIJÇĬJŊ¦±J«ˆY§‹@·pH€µàåVKe›pW†ftsAÅqC·¬ko«pHÆuK@oŸHĆۄķhx“e‘n›S³àǍrqƶRbzy€¸ËАl›¼EºpĤ¼Œx¼½~Ğ’”à@†ÚüdK^ˆmÌSj"],encodeOffsets:[[110234,38774]]},properties:{cp:[108.948024,34.263161],name:"陕西",childNum:1}},{id:"620000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@VuUv"],["@@ũ‹EĠtt~nkh`Q‰¦ÅÄÜdw˜Ab×ĠąJˆ¤DüègĺqBqœj°lI¡ĨÒ¤úSHbš‡ŠjΑBŠ°aZˆ¢KJŽ’O[|A£žDx}Nì•HUnrk„ kp€¼Y kMJn[aG‚áÚÏ[½rc†}aQxOgsPMnUs‡nc‹Z…ž–sKúvA›t„Þġ’£®ĀYKdnFwš¢JE°”Latf`¼h¬we|€Æ‡šbj}GA€·~WŽ”—`†¢MC¤tL©IJ°qdf”O‚“bÞĬ¹ttu`^ZúE`Œ[@„Æsîz®¡’C„ƳƜG²“R‘¢R’m”fŽwĸg܃‚ą G@pzJM½mŠhVy¸uÈÔO±¨{LfæU¶ßGĂq\\ª¬‡²I‚¥IʼnÈīoı‹ÓÑAçÑ|«LÝcspīðÍg…të_õ‰\\ĉñLYnĝg’ŸRǡÁiHLlõUĹ²uQjYi§Z_c¨Ÿ´ĹĖÙ·ŋI…ƒaBD˜­R¹ȥr—¯G•ºß„K¨jWk’ɱŠOq›Wij\\a­‹Q\\sg_ĆǛōëp»£lğۀgS•ŶN®À]ˆÓäm™ĹãJaz¥V}‰Le¤L„ýo‘¹IsŋÅÇ^‘Žbz…³tmEÁ´aŠ¹cčecÇN•ĊãÁ\\č¯—dNj•]j†—ZµkÓda•ćå]ğij@ ©O{¤ĸm¢ƒE·®ƒ«|@Xwg]Aģ±¯‡XǁÑdzªc›wQÚŝñsÕ³ÛV_ýƒ˜¥\\ů¥©¾÷w—Ž©WÕÊĩhÿÖÁRo¸V¬âDb¨šhûx–Ê×nj~Zâƒg|šXÁnßYoº§ZÅŘvŒ[„ĭÖʃuďxcVbnUSf…B¯³_Tzº—ΕO©çMÑ~Mˆ³]µ^püµ”ŠÄY~y@X~¤Z³€[Èōl@®Å¼£QKƒ·Di‹¡By‘ÿ‰Q_´D¥hŗyƒ^ŸĭÁZ]cIzý‰ah¹MĪğP‘s{ò‡‹‘²Vw¹t³Ŝˁ[ŽÑ}X\\gsFŸ£sPAgěp×ëfYHāďÖqēŭOÏë“dLü•\\iŒ”t^c®šRʺ¶—¢H°mˆ‘rYŸ£BŸ¹čIoľu¶uI]vģSQ{ƒUŻ”Å}QÂ|̋°ƅ¤ĩŪU ęĄžÌZҞ\\v˜²PĔ»ƢNHƒĂyAmƂwVmž`”]ȏb•”H`‰Ì¢²ILvĜ—H®¤Dlt_„¢JJÄämèÔDëþgºƫ™”aʎÌrêYi~ ÎݤNpÀA¾Ĕ¼b…ð÷’Žˆ‡®‚”üs”zMzÖĖQdȨý†v§Tè|ªH’þa¸|šÐ ƒwKĢx¦ivr^ÿ ¸l öæfƟĴ·PJv}n\\h¹¶v†·À|\\ƁĚN´Ĝ€çèÁz]ġ¤²¨QÒŨTIl‡ªťØ}¼˗ƦvÄùØE‹’«Fï˛Iq”ōŒTvāÜŏ‚íÛߜÛV—j³âwGăÂíNOŠˆŠPìyV³ʼnĖýZso§HіiYw[߆\\X¦¥c]ÔƩÜ·«j‡ÐqvÁ¦m^ċ±R™¦΋ƈťĚgÀ»IïĨʗƮŽ°Ɲ˜ĻþÍAƉſ±tÍEÕÞāNU͗¡\\ſčåÒʻĘm ƭÌŹöʥ’ëQ¤µ­ÇcƕªoIýˆ‰Iɐ_mkl³ă‰Ɠ¦j—¡Yz•Ňi–}Msßõ–īʋ —}ƒÁVmŸ_[n}eı­Uĥ¼‘ª•I{ΧDӜƻėoj‘qYhĹT©oūĶ£]ďxĩ‹ǑMĝ‰q`B´ƃ˺Ч—ç~™²ņj@”¥@đ´ί}ĥtPńǾV¬ufӃÉC‹tÓ̻‰…¹£G³€]ƖƾŎĪŪĘ̖¨ʈĢƂlɘ۪üºňUðǜȢƢż̌ȦǼ‚ĤŊɲĖ­Kq´ï¦—ºĒDzņɾªǀÞĈĂD†½ĄĎÌŗĞrôñnŽœN¼â¾ʄľԆ|DŽŽ֦ज़ȗlj̘̭ɺƅêgV̍ʆĠ·ÌĊv|ýĖÕWĊǎÞ´õ¼cÒÒBĢ͢UĜð͒s¨ňƃLĉÕÝ@ɛƯ÷¿Ľ­ĹeȏijëCȚDŲyê×Ŗyò¯ļcÂßY…tÁƤyAã˾J@ǝrý‹‰@¤…rz¸oP¹ɐÚyᐇHŸĀ[Jw…cVeȴϜ»ÈŽĖ}ƒŰŐèȭǢόĀƪÈŶë;Ñ̆ȤМľĮEŔ—ĹŊũ~ËUă{ŸĻƹɁύȩþĽvĽƓÉ@ē„ĽɲßǐƫʾǗĒpäWÐxnsÀ^ƆwW©¦cÅ¡Ji§vúF¶Ž¨c~c¼īŒeXǚ‹\\đ¾JŽwÀďksãA‹fÕ¦L}wa‚o”Z’‹D½†Ml«]eÒÅaɲáo½FõÛ]ĻÒ¡wYR£¢rvÓ®y®LF‹LzĈ„ôe]gx}•|KK}xklL]c¦£fRtív¦†PĤoH{tK"]],encodeOffsets:[[[108619,36299]],[[108589,36341]]]},properties:{cp:[103.823557,36.058039],name:"甘肃",childNum:2}},{id:"630000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@InJm"],["@@CƒÆ½OŃĦsΰ~Ē³¦@@“Ņiš±è}ؘƄ˹A³r_ĞŠǒNĪŒĐw¤^ŬĵªpĺSZg’rpiƼĘԛ¨C|͖J’©Ħ»®VIJ~f\\m `Un„˜~ʌŸ•ĬàöNt•~ňjy–¢Zi˜Ɣ¥ĄŠk´nl`JʇŠJþ©pdƖ®È£¶ìRʦ‘źõƮËnŸʼėæÑƀĎ[‚˜¢VÎĂMÖÝÎF²sƊƀÎBļýƞ—¯ʘƭðħ¼Jh¿ŦęΌƇš¥²Q]Č¥nuÂÏriˆ¸¬ƪÛ^Ó¦d€¥[Wà…x\\ZŽjҕ¨GtpþYŊĕ´€zUO뇉P‰îMĄÁxH´á˜iÜUà›îÜՁĂÛSuŎ‹r“œJð̬EŒ‘FÁú×uÃÎkr“Ē{V}İ«O_ÌËĬ©ŽÓŧSRѱ§Ģ£^ÂyèçěM³Ƃę{[¸¿u…ºµ[gt£¸OƤĿéYŸõ·kĀŸq]juw¥Dĩƍ€õÇPéĽG‘ž©ã‡¤G…uȧþRcÕĕNy“yût“ˆ­‡ø‘†ï»a½ē¿BMoį£ŸÍj}éZËqbʍš“Ƭh¹ìÿÓAçãnIáI`ƒks£CG­ě˜Uy×Cy•…’Ÿ@¶ʡÊBnāzG„ơMē¼±O÷õJËĚăVŸĪũƆ£Œ¯{ËL½Ìzż“„VR|ĠTbuvJvµhĻĖH”Aëáa…­OÇðñęNw‡…œľ·L›mI±íĠĩPÉ×®ÿs—’cB³±JKßĊ«`…ađ»·QAmO’‘Vţéÿ¤¹SQt]]Çx€±¯A@ĉij¢Óļ©•ƒl¶ÅÛr—ŕspãRk~¦ª]Į­´“FR„åd­ČsCqđéFn¿Åƃm’Éx{W©ºƝºįkÕƂƑ¸wWūЩÈFž£\\tÈ¥ÄRÈýÌJ ƒlGr^×äùyÞ³fj”c†€¨£ÂZ|ǓMĝšÏ@ëÜőR‹›ĝ‰Œ÷¡{aïȷPu°ËXÙ{©TmĠ}Y³’­ÞIňµç½©C¡į÷¯B»|St»›]vƒųƒs»”}MÓ ÿʪƟǭA¡fs˜»PY¼c¡»¦c„ċ­¥£~msĉP•–Siƒ^o©A‰Šec‚™PeǵŽkg‚yUi¿h}aH™šĉ^|ᴟ¡HØûÅ«ĉ®]m€¡qĉ¶³ÈyôōLÁst“BŸ®wn±ă¥HSòėš£˜S’ë@לÊăxÇN©™©T±ª£IJ¡fb®ÞbŽb_Ą¥xu¥B—ž{łĝ³«`d˜Ɛt—¤ťiñžÍUuºí`£˜^tƃIJc—·ÛLO‹½Šsç¥Ts{ă\\_»™kϊ±q©čiìĉ|ÍIƒ¥ć¥›€]ª§D{ŝŖÉR_sÿc³Īō›ƿΑ›§p›[ĉ†›c¯bKm›R¥{³„Z†e^ŽŒwx¹dƽŽôIg §Mĕ ƹĴ¿—ǣÜ̓]‹Ý–]snåA{‹eŒƭ`ǻŊĿ\\ijŬű”YÂÿ¬jĖqŽßbŠ¸•L«¸©@ěĀ©ê¶ìÀEH|´bRľž–Ó¶rÀQþ‹vl®Õ‚E˜TzÜdb ˜hw¤{LR„ƒd“c‹b¯‹ÙVgœ‚ƜßzÃô쮍^jUèXΖ|UäÌ»rKŽ\\ŒªN‘¼pZCü†VY††¤ɃRi^rPҒTÖ}|br°qňbĚ°ªiƶGQ¾²„x¦PœmlŜ‘[Ĥ¡ΞsĦŸÔÏâ\\ªÚŒU\\f…¢N²§x|¤§„xĔsZPòʛ²SÐqF`ª„VƒÞŜĶƨVZŒÌL`ˆ¢dŐIqr\\oäõ–F礻Ŷ×h¹]Clـ\\¦ďÌį¬řtTӺƙgQÇÓHţĒ”´ÃbEÄlbʔC”|CˆŮˆk„Ʈ[ʼ¬ňœ´KŮÈΰÌĪ¶ƶlð”ļA†TUvdTŠG†º̼ŠÔ€ŒsÊDԄveOg"]],encodeOffsets:[[[105308,37219]],[[95370,40081]]]},properties:{cp:[101.778916,36.623178],name:"青海",childNum:2}},{id:"640000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@KëÀęĞ«OęȿȕŸı]ʼn¡åįÕÔ«Ǵõƪ™ĚQÐZhv K°›öqÀѐS[ÃÖHƖčË‡nL]ûc…Ùß@‚“ĝ‘¾}w»»‹oģF¹œ»kÌÏ·{zPƒ§B­¢íyÅt@ƒ@áš]Yv_ssģ¼i߁”ĻL¾ġsKD£¡N_…“˜X¸}B~Haiˆ™Åf{«x»ge_bs“KF¯¡Ix™mELcÿZ¤­Ģ‘ƒÝœsuBLù•t†ŒYdˆmVtNmtOPhRw~bd…¾qÐ\\âÙH\\bImlNZŸ»loƒŸqlVm–Gā§~QCw¤™{A\\‘PKŸNY‡¯bF‡kC¥’sk‹Šs_Ã\\ă«¢ħkJi¯r›rAhĹûç£CU‡ĕĊ_ԗBixÅُĄnªÑaM~ħpOu¥sîeQ¥¤^dkKwlL~{L~–hw^‚ófćƒKyEŒ­K­zuÔ¡qQ¤xZÑ¢^ļöܾEpž±âbÊÑÆ^fk¬…NC¾‘Œ“YpxbK~¥Že֎ŒäBlt¿Đx½I[ĒǙŒWž‹f»Ĭ}d§dµùEuj¨‚IÆ¢¥dXªƅx¿]mtÏwßRĶŒX¢͎vÆzƂZò®ǢÌʆCrâºMÞzžÆMҔÊÓŊZľ–r°Î®Ȉmª²ĈUªĚøºˆĮ¦ÌĘk„^FłĬhĚiĀĖ¾iİbjÕ"],["@@mfwěwMrŢªv@G‰"]],encodeOffsets:[[[109366,40242]],[[108600,36303]]]},properties:{cp:[106.278179,38.46637],name:"宁夏",childNum:2}},{id:"650000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@QØĔ²X¨”~ǘBºjʐßØvK”ƔX¨vĊOžÃƒ·¢i@~c—‡ĝe_«”Eš“}QxgɪëÏÃ@sÅyXoŖ{ô«ŸuX…ê•Îf`œC‚¹ÂÿÐGĮÕĞXŪōŸMźÈƺQèĽôe|¿ƸJR¤ĘEjcUóº¯Ĩ_ŘÁMª÷Ð¥Oéȇ¿ÖğǤǷÂF҇zÉx[]­Ĥĝ‰œ¦EP}ûƥé¿İƷTėƫœŕƅ™ƱB»Đ±’ēO…¦E–•}‘`cȺrĦáŖuҞª«IJ‡πdƺÏØZƴwʄ¤ĖGЙǂZĶƒèH¶}ÚZצʥĪï|ÇĦMŔ»İĝLj‹ì¥Βœba­¯¥ǕǚkĆŵĦɑĺƯxūД̵nơʃĽá½M»›òmqóŘĝč˾ăC…ćāƿÝɽ©DZŅ¹đ¥˜³ðLrÁ®ɱĕģʼnǻ̋ȥơŻǛȡVï¹Ň۩ûkɗġƁ§ʇė̕ĩũƽō^ƕŠUv£ƁQï“Ƶkŏ½ΉÃŭdzLқʻ«ƭ\\lƒ‡ŭD‡“{ʓDkaFÃÄa“³ŤđÔGRÈƚhSӹŚsİ«ĐË[¥ÚDkº^Øg¼ŵ¸£EÍö•€ůʼnT¡c_‡ËKY‹ƧUśĵ„݃U_©rETÏʜ±OñtYwē¨ƒ{£¨uM³x½şL©Ùá[ÓÐĥ Νtģ¢\\‚ś’nkO›w¥±ƒT»ƷFɯàĩÞáB¹Æ…ÑUw„੍žĽw[“mG½Èå~‡Æ÷QyŠěCFmĭZī—ŵVÁ™ƿQƛ—ûXS²‰b½KϽĉS›©ŷXĕŸ{ŽĕK·¥Ɨcqq©f¿]‡ßDõU³h—­gËÇïģÉɋw“k¯í}I·šœbmœÉ–ř›īJɥĻˁ×xo›ɹī‡l•c…¤³Xù]‘™DžA¿w͉ì¥wÇN·ÂËnƾƍdǧđ®Ɲv•Um©³G\\“}µĿ‡QyŹl㓛µEw‰LJQ½yƋBe¶ŋÀů‡ož¥A—˜Éw@•{Gpm¿Aij†ŽKLhˆ³`ñcËtW‚±»ÕS‰ëüÿďD‡u\\wwwù³—V›LŕƒOMËGh£õP¡™er™Ïd{“‡ġWÁ…č|yšg^ğyÁzÙs`—s|ÉåªÇ}m¢Ń¨`x¥’ù^•}ƒÌ¥H«‰Yªƅ”Aйn~ź¯šf¤áÀz„gŠÇDIԝ´AňĀ҄¶ûEYospõD[{ù°]u›Jq•U•|Soċxţ[õÔĥkŋÞŭZ˺óYËüċrw €ÞkrťË¿XGÉbřaDü·Ē÷Aê[Ää€I®BÕИÞ_¢āĠpŠÛÄȉĖġDKwbm‡ÄNô‡ŠfœƫVÉvi†dz—H‘‹QµâFšù­Âœ³¦{YGžƒd¢ĚÜO „€{Ö¦ÞÍÀPŒ^b–ƾŠlŽ[„vt×ĈÍE˨¡Đ~´î¸ùÎh€uè`¸ŸHÕŔVºwĠââWò‡@{œÙNÝ´ə²ȕn{¿¥{l—÷eé^e’ďˆXj©î\\ªÑò˜Üìc\\üqˆÕ[Č¡xoÂċªbØ­Œø|€¶ȴZdÆšońéŒGš\\”¼C°ÌƁn´nxšÊOĨ’Ūƴĸ¢¸òTxÊǪMīИÖŲÃɎOvˆʦƢ~FŽ‡Rěò—¿ġ~åŊœú‰Nšžš¸qŽ’Ę[Ĕ¶ÂćnÒPĒÜvúĀÊbÖ{Äî¸~Ŕünp¤ÂH¾œĄYÒ©ÊfºmԈĘcDoĬMŬ’˜S¤„s²‚”ʘچžȂVŦ –ŽèW°ªB|IJXŔþÈJĦÆæFĚêŠYĂªĂ]øªŖNÞüA€’fɨJ€˜¯ÎrDDšĤ€`€mz\\„§~D¬{vJÂ˜«lµĂb–¤p€ŌŰNĄ¨ĊXW|ų ¿¾ɄĦƐMT”‡òP˜÷fØĶK¢ȝ˔Sô¹òEð­”`Ɩ½ǒÂň×äı–§ĤƝ§C~¡‚hlå‚ǺŦŞkâ’~}ŽFøàIJaĞ‚fƠ¥Ž„Ŕdž˜®U¸ˆźXœv¢aƆúŪtŠųƠjd•ƺŠƺÅìnrh\\ĺ¯äɝĦ]èpĄ¦´LƞĬŠ´ƤǬ˼Ēɸ¤rºǼ²¨zÌPðŀbþ¹ļD¢¹œ\\ĜÑŚŸ¶ZƄ³àjĨoâŠȴLʉȮŒĐ­ĚăŽÀêZǚŐ¤qȂ\\L¢ŌİfÆs|zºeªÙæ§΢{Ā´ƐÚ¬¨Ĵà²łhʺKÞºÖTŠiƢ¾ªì°`öøu®Ê¾ãØ"],encodeOffsets:[[88824,50096]]},properties:{cp:[87.617733,43.792818],name:"新疆",childNum:1}},{id:"110000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@ĽOÁ›ûtŷmiÍt_H»Ĩ±d`Š¹­{bw…Yr“³S]§§o¹€qGtm_Sŧ€“oa›‹FLg‘QN_•dV€@Zom_ć\\ߚc±x¯oœRcfe…£’o§ËgToÛJíĔóu…|wP¤™XnO¢ÉˆŦ¯rNÄā¤zâŖÈRpŢZŠœÚ{GŠrFt¦Òx§ø¹RóäV¤XdˆżâºWbwŚ¨Ud®bêņ¾‘jnŎGŃŶŠnzÚSeîĜZczî¾i]͜™QaúÍÔiþĩȨWĢ‹ü|Ėu[qb[swP@ÅğP¿{\\‡¥A¨Ï‘Ѩj¯ŠX\\¯œMK‘pA³[H…īu}}"],encodeOffsets:[[120023,41045]]},properties:{cp:[116.405285,39.904989],name:"北京",childNum:1}},{id:"120000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@ŬgX§Ü«E…¶Ḟ“¬O_™ïlÁg“z±AXe™µÄĵ{¶]gitgšIj·›¥îakS€‰¨ÐƎk}ĕ{gB—qGf{¿a†U^fI“ư‹³õ{YƒıëNĿžk©ïËZŏ‘R§òoY×Ógc…ĥs¡bġ«@dekąI[nlPqCnp{ˆō³°`{PNdƗqSÄĻNNâyj]äžÒD ĬH°Æ]~¡HO¾ŒX}ÐxŒgp“gWˆrDGˆŒpù‚Š^L‚ˆrzWxˆZ^¨´T\\|~@I‰zƒ–bĤ‹œjeĊªz£®Ĕvě€L†mV¾Ô_ȔNW~zbĬvG†²ZmDM~”~"],encodeOffsets:[[120237,41215]]},properties:{cp:[117.190182,39.125596],name:"天津",childNum:1}},{id:"310000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@ɧư¬EpƸÁxc‡"],["@@©„ªƒ"],["@@”MA‹‘š"],["@@Qp݁E§ÉC¾"],["@@bŝՕÕEȣÚƥêImɇǦèÜĠŒÚžÃƌÃ͎ó"],["@@ǜûȬɋŠŭ™×^‰sYŒɍDŋ‘ŽąñCG²«ªč@h–_p¯A{‡oloY€¬j@IJ`•gQڛhr|ǀ^MIJvtbe´R¯Ô¬¨YŽô¤r]ì†Ƭį"]],encodeOffsets:[[[124702,32062]],[[124547,32200]],[[124808,31991]],[[124726,32110]],[[124903,32376]],[[124438,32149]]]},properties:{cp:[121.472644,31.231706],name:"上海",childNum:6}},{id:"500000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@vjG~nGŘŬĶȂƀƾ¹¸ØÎezĆT¸}êЖqHŸðqĖ䒊¥^CƒIj–²p…\\_ æüY|[YxƊæuž°xb®…Űb@~¢NQt°¶‚S栓Ê~rljĔëĚ¢~šuf`‘‚†fa‚ĔJåĊ„nÖ]„jƎćÊ@Š£¾a®£Ű{ŶĕF‹ègLk{Y|¡ĜWƔtƬJÑxq‹±ĢN´‰òK‰™–LÈüD|s`ŋ’ć]ƒÃ‰`đŒMûƱ½~Y°ħ`ƏíW‰½eI‹½{aŸ‘OIrÏ¡ĕŇa†p†µÜƅġ‘œ^ÖÛbÙŽŏml½S‹êqDu[R‹ãË»†ÿw`»y‘¸_ĺę}÷`M¯ċfCVµqʼn÷Z•gg“Œ`d½pDO‡ÎCnœ^uf²ènh¼WtƏxRGg¦…pV„†FI±ŽG^ŒIc´ec‡’G•ĹÞ½sëĬ„h˜xW‚}Kӈe­Xsbk”F¦›L‘ØgTkïƵNï¶}Gy“w\\oñ¡nmĈzjŸ•@™Óc£»Wă¹Ój“_m»ˆ¹·~MvÛaqœ»­‰êœ’\\ÂoVnŽÓØ͙²«‹bq¿efE „€‹Ĝ^Qž~ Évý‡ş¤²Į‰pEİ}zcĺƒL‹½‡š¿gņ›¡ýE¡ya£³t\\¨\\vú»¼§·Ñr_oÒý¥u‚•_n»_ƒ•At©Þűā§IVeëƒY}{VPÀFA¨ąB}q@|Ou—\\Fm‰QF݅Mw˜å}]•€|FmϋCaƒwŒu_p—¯sfÙgY…DHl`{QEfNysBŠ¦zG¸rHe‚„N\\CvEsÐùÜ_·ÖĉsaQ¯€}_U‡†xÃđŠq›NH¬•Äd^ÝŰR¬ã°wećJEž·vÝ·Hgƒ‚éFXjÉê`|yŒpxkAwœWĐpb¥eOsmzwqChóUQl¥F^laf‹anòsr›EvfQdÁUVf—ÎvÜ^efˆtET¬ôA\\œ¢sJŽnQTjP؈xøK|nBz‰„œĞ»LY‚…FDxӄvr“[ehľš•vN”¢o¾NiÂxGp⬐z›bfZo~hGi’]öF|‰|Nb‡tOMn eA±ŠtPT‡LjpYQ|†SH††YĀxinzDJ€Ìg¢và¥Pg‰_–ÇzII‹€II•„£®S¬„Øs쐣ŒN"],["@@ifjN@s"]],encodeOffsets:[[[109628,30765]],[[111725,31320]]]},properties:{cp:[106.504962,29.533155],name:"重庆",childNum:2}},{id:"810000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@AlBk"],["@@mŽn"],["@@EpFo"],["@@ea¢pl¸Eõ¹‡hj[ƒ]ÔCΖ@lj˜¡uBXŸ…•´‹AI¹…[‹yDUˆ]W`çwZkmc–…M›žp€Åv›}I‹oJlcaƒfёKŽ°ä¬XJmРđhI®æÔtSHn€Eˆ„ÒrÈc"],["@@rMUw‡AS®€e"]],encodeOffsets:[[[117111,23002]],[[117072,22876]],[[117045,22887]],[[116975,23082]],[[116882,22747]]]},properties:{cp:[114.173355,22.320048],name:"香港",childNum:5}},{id:"820000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@kÊd°å§s"],encodeOffsets:[[116279,22639]]},properties:{cp:[113.54909,22.198951],name:"澳门",childNum:1}}],UTF8Encoding:!0}):void n("ECharts Map is not loaded"):void n("ECharts is not Loaded")})},"./app/containers/Widget/charts/markBoxplot.ts":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t,n,o){var s=n.xAxis,l=n.xAxisInterval,c=n.xAxisRotate,u=n.dataZoomThreshold,d=n.hasLegend,p=n.legendSelected,f=n.legendPosition,h=n.toolbox,m=n.splitLineX,g=n.splitLineY,b=n.splitLineStyle,v=n.splitLineWidth,y=n.top,_=n.bottom,A=n.left,x=n.right,w=n.suffixYAxis,j=n.markMetrics,E=n.metrics,S=void 0,k=void 0,C=void 0,T=void 0,M=void 0,O=void 0,L=void 0,D=void 0,P=void 0,I=void 0;if(s&&E&&E.length){var R=e.map(function(e){return e[s]});I=R.filter(function(e,t){return R.indexOf(e)===t}),k={xAxis:{type:"category",data:I,boundaryGap:!0,nameGap:30,splitArea:{show:!0},axisLabel:{interval:l,rotate:c,formatter:"{value}"},splitLine:{show:m&&m.length,lineStyle:{width:v,type:b}}}}}if(P=[],E&&E.length){E=[E];var N=I.map(function(t){return e.filter(function(e){return e[s]===t})}),B=N.map(function(e){return E.map(function(t){return e.map(function(e){return e[t]})})});P=E.map(function(e,t){var n=[];return B.forEach(function(e,r){n.push(e[t])}),n}).map(function(e){return i.default(e)}),S={series:P.reduce(function(e,t,n){return e.concat({name:E[n],type:"boxplot",data:t.boxData,tooltip:{formatter:a}},{name:E[n],type:"pictorialBar",symbolPosition:"end",symbolSize:8,barGap:"30%",data:t.outliers,tooltip:{formatter:function(e){return[e.name+" ","异常值: "+e.data[1]].join("
      ")}}})},[])}}if(j&&j.length){var F=e.map(function(e){var t;return t={},r(t,s,e[s]),r(t,j,e[j]),t}),U=F.reduce(function(e,t){return Object.assign({},e,r({},t[s],t[j]))},{}),z=Object.values(U);S.series.push({name:j,type:"scatter",data:z,itemStyle:{normal:{color:"rgb(251, 118, 123)"}}})}D=w&&w.length?{axisLabel:{formatter:"{value} "+w}}:null,C={yAxis:Object.assign({type:"value",splitArea:{show:!1},splitLine:{show:g&&g.length,lineStyle:{width:v,type:b}}},D)};var H=0,V=0;if(d&&d.length){var Y=void 0,W=void 0;switch(f){case"right":Y={orient:"vertical"},W={right:8,top:40,bottom:16},V=108;break;case"bottom":Y={orient:"horizontal"},W={bottom:16,left:8,right:8},H=72;break;default:Y={orient:"horizontal"},W={top:3,left:8,right:120}}var G="unselectAll"===p?{selected:E.reduce(function(e,t){return Object.assign({},e,r({},t,!1))},{})}:null;T={legend:Object.assign({data:E,type:"scroll"},Y,W,G)}}return M=h&&h.length?{toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,O={grid:{top:y,left:A,right:Math.max(x,V),bottom:Math.max(_,H)}},L=u>0&&u")}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/echarts/extension-src/dataTool/prepareBoxplotData.js");t.default=o},"./app/containers/Widget/charts/parallel.ts":function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);tn){b=["0%",100/u/l*Math.min(r/o[0],1)*.75+"%"]}else{b=["0%",100/a*Math.min(o[0]/r,1)*.75+"%"]}}else{var _=100/i,A=100/c/u;if(g=[A*(h+u*f+1)-A/2+"%",_*(i-m-p*d)-_/2+"%"],t>n){b=["0%",100/i*Math.min(o[1]/r,1)*.75+"%"]}else{b=["0%",100/u/c*Math.min(r/o[1],1)*.75+"%"]}}return{center:g,radius:b}}}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},"./app/containers/Widget/charts/radar.ts":function(e,t,n){"use strict";function r(){return{chartOption:{type:"radar"}}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},"./app/containers/Widget/charts/sankey.ts":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0){var r=e-parseFloat(M[t-1]);return r>=0?(o.push(r),a.push("-"),n.push(parseFloat(M[t-1]))):(o.push("-"),a.push(Math.abs(r)),n.push(parseFloat(M[t-1])-Math.abs(r))),r}return o.push(e),a.push("-"),n.push(0),e});var i=o.reduce(function(e,t){return"number"==typeof t?e+t:e+0},0),s=a.reduce(function(e,t){return"number"==typeof t?e+t:e+0},0),l=i-s;b&&b.length&&(C.push("累计"),n.push("-"),l>0?(o.push(l),a.push("-")):(a.push(Math.abs(l)),o.push("-")));var c={name:t,type:"bar",sampling:"average",data:n,itemStyle:{normal:{barBorderColor:"rgba(0,0,0,0)",color:"rgba(0,0,0,0)",opacity:void 0===r?1:.25},emphasis:{barBorderColor:"rgba(0,0,0,0)",color:"rgba(0,0,0,0)"}},stack:"stack"},u={name:"升",type:"bar",sampling:"average",data:o,itemStyle:{normal:{opacity:void 0===r?1:.25}},stack:"stack",label:{normal:{show:!(!f||!f.length),position:"top"}}},d={name:"降",type:"bar",sampling:"average",data:a,itemStyle:{normal:{opacity:void 0===r?1:.25}},stack:"stack",label:{normal:{show:!(!f||!f.length),position:"bottom"}}};T.push(c),T.push(u),T.push(d)}),_={series:T}}k=v&&v.length?{axisLabel:{formatter:"{value} "+v}}:null,a&&a.length?(o&&(A={yAxis:{data:e.map(function(e){return e[o]}),axisLabel:{show:!1},axisLine:{show:!1},axisTick:{show:!1}}}),x={xAxis:{type:"value",position:"top",splitLine:{lineStyle:{type:"dashed"}},axisLabel:{interval:i,rotate:s}}}):(o&&(A={xAxis:{data:C,axisLabel:{interval:i,rotate:s}}}),x={yAxis:Object.assign({type:"value"},k)});var D=0,P=0;if(c&&c.length){var I=void 0,R=void 0;switch(u){case"right":I={orient:"vertical"},R={right:8,top:40,bottom:16},P=108;break;case"bottom":I={orient:"horizontal"},R={bottom:16,left:8,right:8},D=72;break;default:I={orient:"horizontal"},R={top:3,left:8,right:120}}w={legend:Object.assign({data:T.map(function(e){return e.name}),type:"scroll"},I,R)}}return j=d&&d.length?{toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,E={grid:{top:p,left:m,right:Math.max(g,P),bottom:Math.max(h,D)}},S=l>0&&l"))}}},_,A,x,w,j,E,S)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},"./app/containers/Widget/charts/wordCloud.ts":function(e,t,n){"use strict";function r(e,t,n){var r=n.title,o=n.gridSize,a=n.sizeRangeX,i=n.sizeRangeY,s=void 0,l=void 0,c=void 0,u=void 0,d=[];l=o&&{gridSize:o},c=(a||i)&&{sizeRange:[a||0,i||0]};var p=e.reduce(function(e,t){var n=t[r];return e[n]?e[n].value+=1:e[n]={name:n,value:1},e},{}),f=Object.assign({type:"wordCloud",textStyle:{normal:{color:"#509af2"},emphasis:{shadowBlur:10,shadowColor:"#509af2"}},data:Object.keys(p).map(function(e){return p[e]}),rotationStep:45,rotationRange:[-90,90]},l,c);return d.push(f),s={series:d},u={grid:{top:0,left:0,right:0,bottom:0}},Object.assign({},s,u)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},"./app/containers/Widget/components/CopyWidgetForm.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2],o=e.props,a=o.form,i=o.onCheckUniqueName,s=o.projectId,l=a.getFieldsValue();l.id;i("widget",{projectId:s,id:"",name:n},function(){r()},function(e){r(e)})},e}return a(t,e),s(t,[{key:"render",value:function(){var e=(this.props.type,this.props.form.getFieldDecorator),t={labelCol:{span:7},wrapperCol:{span:16}};return l.createElement(c,{className:m.formView},l.createElement(u,{gutter:8},l.createElement(d,{span:24},l.createElement(f,{className:h.hide},e("type",{})(g)),l.createElement(f,{className:h.hide},e("viewId",{})(b)),l.createElement(f,{className:h.hide},e("config",{})(v)),l.createElement(f,{className:h.hide},e("projectId",{})(y)),l.createElement(f,{className:h.hide},e("publish",{})(_)),l.createElement(f,i({label:"Widget 名称"},t,{hasFeedback:!0}),e("name",{rules:[{required:!0},{validator:this.checkNameUnique}]})(A))),l.createElement(d,{span:24},l.createElement(f,i({label:"Widget 描述"},t),e("description",{initialValue:""})(x)))))}}]),t}(l.Component);t.CopyWidgetForm=w,t.default=c.create()(w)},"./app/containers/Widget/components/Pivot/Cell.tsx":function(e,t,n){"use strict";function r(e){var t=e.colKey,n=void 0===t?"":t,r=e.rowKey,u=void 0===r?"":r,d=e.width,p=e.height,f=e.data,h=e.chartStyles,m=e.color,g=e.legend,b=h.pivot,v=b.color,y=b.fontSize,_=b.fontFamily,A=b.lineColor,x=b.lineStyle,w=e.metrics;if(n.includes(s.DEFAULT_SPLITER)&&u.includes(s.DEFAULT_SPLITER)){var j=o(n);if(j===o(u)){var E=j.split(s.DEFAULT_SPLITER),S=a(E,2),k=S[0],C=S[1];w=w.filter(function(e){return e.name===""+k+s.DEFAULT_SPLITER+C})}else w=[]}else if(n.includes(s.DEFAULT_SPLITER)){var T=o(n).split(s.DEFAULT_SPLITER),M=a(T,2),O=M[0],L=M[1];w=w.filter(function(e){return e.name===""+O+s.DEFAULT_SPLITER+L})}else if(u.includes(s.DEFAULT_SPLITER)){var D=o(u).split(s.DEFAULT_SPLITER),P=a(D,2),I=P[0],R=P[1];w=w.filter(function(e){return e.name===""+I+s.DEFAULT_SPLITER+R})}var N=w.map(function(e){var t=l.decodeMetricName(e.name),n=m.items.find(function(t){return t.config.actOn===e.name})||m.items.find(function(e){return"all"===e.config.actOn});return f&&f.map(function(r,o){var a=void 0;if(n){var s=g[n.name];s&&s.includes(r[n.name])||(a={color:n.config.values[r[n.name]]})}return i.createElement("p",{key:""+e.name+o,className:c.cellContent,style:Object.assign({},a)},r[e.agg+"("+t+")"])})}),B=Object.assign({width:d},p&&{height:p},{color:v,fontSize:Number(y),fontFamily:_,borderColor:A,borderStyle:x});return i.createElement("td",{style:B},N)}function o(e){return e.split(String.fromCharCode(0)).filter(function(e){return e.includes(s.DEFAULT_SPLITER)})[0]}var a=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/react/react.js"),s=n("./app/globalConstants.ts"),l=n("./app/containers/Widget/components/util.ts"),c=n("./app/containers/Widget/components/Pivot/Pivot.less");t.Cell=r,t.default=r},"./app/containers/Widget/components/Pivot/Chart.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function(){function e(e,t){for(var n=0;ns){var l=[],c={key:"",height:0,data:[]};return n.forEach(function(e,t){var r="col"===a?e.height*o.length:e.height;c.height+r>s&&(c.key=""+t+c.data.map(function(e){return e.key}).join(","),l.push(c),c={key:"",height:0,data:[]}),c.height+=r,c.data.push(e),t===n.length-1&&(c.key=""+t+c.data.map(function(e){return e.key}).join(","),l.push(c))}),l}return[{key:"chunk",height:t,data:n}]},e.verticalCutting=function(t,n){var r=e.props,o=r.metrics,a=r.dimetionAxis,i=r.drawingData.multiCoordinate,s=i?p.PIVOT_CANVAS_POLAR_SIZE_LIMIT:p.PIVOT_CANVAS_SIZE_LIMIT;if(t>s){var l={};return n.forEach(function(t){var n=e.initBlockLine(t),r=e.initBlock(n);t.data.forEach(function(i,c){var u="row"===a?i.width*o.length:i.width;if(r.width+u>s){if(l[c-1]){var d=l[c-1];d.data=d.data.concat(r.data)}else l[c-1]=Object.assign({},r,{key:""+(c-1)+r.data.map(function(e){return e.key}).join(",")});n=e.initBlockLine(t),r=e.initBlock(n)}if(r.width+=u,n.data.push(i),c===t.data.length-1)if(l[c]){var p=l[c];p.data=p.data.concat(r.data)}else l[c]=Object.assign({},r,{key:""+c+r.data.map(function(e){return e.key}).join(",")})})}),Object.values(l).map(function(e){return Object.assign({},e,{pieces:f.getChartPieces(e.data.reduce(function(e,t){return e+t.data.reduce(function(e,t){return e+("col"===a?t.records.length*o.length:t.records.length)},0)},0),e.data.length)})})}return[{key:"block",width:t,data:n,pieces:f.getChartPieces(n.reduce(function(e,t){return e+t.data.reduce(function(e,t){return e+("col"===a?t.records.length*o.length:t.records.length)},0)},0),n.length)}]},e.initBlock=function(e){return{key:"",width:0,data:[e],pieces:0}},e.initBlockLine=function(e){return Object.assign({},e,{key:""+h.uuid(8,16)+e.key,data:[]})},e}return i(t,e),s(t,[{key:"render",value:function(){var e,t=this.props,n=t.rows,o=t.cols,a=t.rowKeys,i=t.colKeys,s=t.rowTree,p=t.rowWidths,g=t.colTree,b=t.tree,v=t.metrics,y=t.metricAxisConfig,_=t.chartStyles,A=t.drawingData,x=t.dimetionAxis,w=t.color,j=t.label,E=t.size,S=t.xAxis,k=t.tip,C=t.renderType,T=t.legend,M=t.onCheckTableInteract,O=t.onDoInteract,L=A.elementSize,D=A.unitMetricWidth,P=A.unitMetricHeight,I=A.tableBodyCollapsed,R=null,N=[],B=[],F=0;if(x){var U=0;if(i.length&&a.length){var z=[];a.forEach(function(e,t){var n=e.join(String.fromCharCode(0)),r=[];i.forEach(function(o,s){var l=o.join(String.fromCharCode(0)),c=b[n][l];if("col"===x){var u=i[s+1]||[],d=r[r.length-1];if(d&&!d.ended||(d={key:""+n+l,width:0,records:[],ended:!1},r.push(d)),d.records.push({key:o[o.length-1],value:c}),1===o.length&&s===i.length-1||o[o.length-2]!==u[u.length-2]){var p=d.records.length*L;d.width=p,d.ended=!0,u.length||(N.push({key:n,height:P,data:r.slice()}),U+=1,r=[])}}else{var f=a[t+1]||[];z[s]||(z[s]=[]);var h=z[s],m=h[h.length-1];if(m&&!m.ended||(m={key:""+l+n,width:0,records:[],ended:!1},h.push(m)),m.records.push({key:e[e.length-1],value:c}),1===e.length&&t===a.length-1||e[e.length-2]!==f[f.length-2]){if(m.width=D,m.ended=!0,s===i.length-1){var g=m.records.length*L;N.push({key:n,height:g,data:z.reduce(function(e,t){return e.concat(t)},[])}),z=[]}t===a.length-1&&(U+=1)}}})})}else if(i.length){var H=[];i.forEach(function(e,t){var n=e.join(String.fromCharCode(0)),r=g[n].records;if("col"===x){var o=i[t+1]||[],a=H[H.length-1];if(a&&!a.ended||(a={key:n,width:0,records:[],ended:!1},H.push(a)),a.records.push({key:e[e.length-1],value:r}),1===e.length&&t===i.length-1||e[e.length-2]!==o[o.length-2]){var s=a.records.length*L;a.width=s,a.ended=!0,o.length||(N.push({key:n,height:P,data:H.slice()}),U+=1)}}else H.push({key:n,width:D,records:[{key:e[e.length-1],value:r}],ended:!0}),U+=1,t===i.length-1&&N.push({key:n,height:L,data:H.slice()})})}else if(a.length){var V=[];a.forEach(function(e,t){var n=e.join(String.fromCharCode(0)),r=s[n].records;if("row"===x){var o=a[t+1]||[],i=V[V.length-1];if(i&&!i.ended||(i={key:n,width:0,records:[],ended:!1},V.push(i)),i.records.push({key:e[e.length-1],value:r}),1===e.length&&t===a.length-1||e[e.length-2]!==o[o.length-2]){i.width=D,i.ended=!0;var l=i.records.length*L;N.push({key:n,height:l,data:V.slice()}),V=[],t===a.length-1&&(U+=1)}}else N.push({key:n,height:P,data:[{key:n,width:L,records:[{key:e[e.length-1],value:r}],ended:!1}]}),U+=1})}else{var Y=b[0],W="col"===x?L:D,G="row"===x?L:P,Q={width:W,records:[{key:"data",value:Y}],ended:!0};N.push({height:G,data:[Q]})}var q=i.length||1,K=a.length||1;U=U||1;var X=0;"col"===x?(F=q*L,X=U*P*v.length):(F=U*D*v.length,X=K*L),R=l.createElement(d.default,{width:F,height:X,cols:o,rows:n,dimetionAxisCount:"col"===x?q:K,metricAxisCount:U,metrics:v,data:this.gridCutting(F,X,N),chartStyles:_,drawingData:A,dimetionAxis:x,metricAxisConfig:y,color:w,label:j,size:E,xAxis:S,tip:k,renderType:C,legend:T,onCheckTableInteract:M,onDoInteract:O})}else{if(i.length&&a.length)a.forEach(function(e){var t=e.join(String.fromCharCode(0)),n=[];F=0,i.forEach(function(e){var r=e.join(String.fromCharCode(0)),o=b[t][r],a=g[r],i=a.width,s=a.height,c=f.getPivotCellWidth(i);F+=c,n.push(l.createElement(u.default,{key:""+t+r,colKey:r,rowKey:t,width:c,height:f.getPivotCellHeight(s),metrics:v,data:o,chartStyles:_,color:w,legend:T}))}),B.push(l.createElement("tr",{key:t},n))});else if(i.length){var J=[];F=0,i.forEach(function(e){var t=e.join(String.fromCharCode(0)),n=g[t],r=n.width,o=n.height,a=n.records,i=f.getPivotCellWidth(r);F+=i,J.push(l.createElement(u.default,{key:t,colKey:t,width:i,height:f.getPivotCellHeight(o),metrics:v,data:a,chartStyles:_,color:w,legend:T}))}),B.push(l.createElement("tr",{key:h.uuid(8,16)},J))}else if(a.length)a.forEach(function(e){var t=e.join(String.fromCharCode(0)),n=s[t],r=n.height,o=n.records,a=[];F=0;var i=f.getPivotCellWidth(p[p.length-1]);F+=i,a.push(l.createElement(u.default,{key:t,rowKey:t,width:i,height:f.getPivotCellHeight(r),metrics:v,data:o,chartStyles:_,color:w,legend:T})),a.length&&B.push(l.createElement("tr",{key:t},a))});else if(v.length){var Z=b[0],$=0;v.forEach(function(e){var t=Z[e.agg+"("+e.name+")"];$=Math.max($,f.getPivotContentTextWidth(t))});var ee=f.getPivotCellHeight();B.push(l.createElement("tr",{key:h.uuid(8,16)},l.createElement(u.default,{key:h.uuid(8,16),width:$,height:ee,metrics:v,data:Z,chartStyles:_,color:w,legend:T})))}R=l.createElement("table",{className:m.pivot,style:{width:F}},l.createElement("tbody",null,B))}var te=c((e={},r(e,m.columnBody,!0),r(e,m.bodyCollapsed,I),r(e,m.raw,!x),e));return l.createElement("div",{className:te},R)}}]),t}(l.Component);t.TableBody=g,t.default=g},"./app/containers/Widget/components/Pivot/Xaxis.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n=0?{variableFirst:t.variables[0],variableSecond:t.variables[1]}:{variable:t.variables[0]};n.props.form.setFieldsValue(Object.assign({id:t.id,type:t.type},r)),n.setState({variableNumber:n.DOUBLE_VARIABLES.indexOf(t.type)>=0?2:1,chosenType:t.type,tableVisible:n.WITH_TABLE.indexOf(t.type)>=0,hasRelatedComponent:t.hasRelatedComponent,tableSource:t.sub})}},n.formInit=function(e){n.setState({variableNumber:e.control.variables?e.control.variables.length:1})},n.addVariableConfig=function(){var e=n.state.tableSource;n.setState({tableSource:e.concat({id:_.uuid(8,16),text:"",value:"",variables:[],variableType:void 0,status:0})})},n.changeConfigValueStatus=function(e){return function(){var t=n.state.tableSource;t.find(function(t){return t.id===e}).status=0,n.setState({tableSource:t})}},n.updateConfigValue=function(e){return function(){n.variableConfigTable.validateFieldsAndScroll(function(t,r){if(!t){var o=n.state.tableSource,a=o.find(function(t){return t.id===e});a.text=r[e+"Text"],a.value=r[e+"Value"],a.variables=r[e+"Variables"],a.variableType=r[e+"VariableType"],a.status=1,n.setState({tableSource:o})}})}},n.deleteConfigValue=function(e){return function(){var t=n.state.tableSource;n.setState({tableSource:t.filter(function(t){return t.id!==e})})}},n.typeChange=function(e){n.setState({chosenType:e,variableNumber:n.DOUBLE_VARIABLES.indexOf(e)>=0?2:1,tableVisible:n.WITH_TABLE.indexOf(e)>=0})},n.hasRelatedComponentChange=function(e){n.setState({hasRelatedComponent:e.target.value})},n.saveConfig=function(){n.props.form.validateFieldsAndScroll(function(e,t){if(!e){var r=n.state,o=r.variableNumber,a=r.tableSource,i=t.id||_.uuid(8,16),s=t.type,l=1===o?[t.variable]:[t.variableFirst,t.variableSecond],c=n.WITH_TABLE.indexOf(s)>=0?"yes"===n.state.hasRelatedComponent?a:a.map(function(e){return delete e.variableType,e}):[];n.props.onSave({id:i,type:s,hasRelatedComponent:t.hasRelatedComponent,variables:l,sub:c}),n.props.onClose()}})},n.resetForm=function(){n.props.form.resetFields(),n.setState({variableNumber:1,tableVisible:!1,tableSource:[]})},n.state={variableNumber:1,chosenType:"",tableVisible:!1,hasRelatedComponent:"yes",tableSource:[]},n}return a(t,e),i(t,[{key:"componentWillMount",value:function(){this.formInit(this.props)}},{key:"componentDidMount",value:function(){this.setFormValue(this.props)}},{key:"componentWillReceiveProps",value:function(e){e.control!==this.props.control&&this.formInit(e)}},{key:"componentDidUpdate",value:function(e){e.control!==this.props.control&&this.setFormValue(this.props)}},{key:"render",value:function(){var e=this,t=this.props,n=t.form,r=t.queryInfo,o=t.onClose,a=this.state,i=a.variableNumber,u=a.chosenType,p=a.tableVisible,v=a.hasRelatedComponent,_=a.tableSource,S=n.getFieldDecorator,k=[{text:"文本输入框",value:"input"},{text:"数字输入框",value:"inputNumber"},{text:"单选下拉菜单",value:"select"},{text:"多选下拉菜单",value:"multiSelect"},{text:"日期选择",value:"date"},{text:"日期多选",value:"multiDate"},{text:"日期范围选择",value:"dateRange"},{text:"日期时间选择",value:"datetime"},{text:"日期时间范围选择",value:"datetimeRange"}].map(function(e){return s.createElement(b,{key:e.value,value:e.value},e.text)}),C=null;r&&(C=r.map(function(e){return s.createElement(b,{key:e,value:e},e)}));var T=void 0;return 1===i?(T=[s.createElement(m,{span:8,key:"variable"},s.createElement(g,null,S("variable",{})(s.createElement(d,{placeholder:"关联变量",allowClear:!0},C))))],"select"===u&&T.push(s.createElement(m,{span:8,key:"hasRelatedComponent"},s.createElement(g,null,S("hasRelatedComponent",{initialValue:v})(s.createElement(y,{onChange:this.hasRelatedComponentChange},w,j)))))):T=[s.createElement(m,{span:8,key:"first"},s.createElement(g,null,S("variableFirst",{})(s.createElement(d,{placeholder:"关联变量1",allowClear:!0},C)))),s.createElement(m,{span:8,key:"second"},s.createElement(g,null,S("variableSecond",{})(s.createElement(d,{placeholder:"关联变量2",allowClear:!0},C))))],s.createElement("div",{className:x.variableConfigForm},s.createElement(c,null,s.createElement(h,{gutter:8},s.createElement(m,{span:8},s.createElement(g,{className:A.hide},S("id",{})(E)),s.createElement(g,null,S("type",{rules:[{required:!0,message:"控件类型不能为空"}]})(s.createElement(d,{placeholder:"控件类型",onSelect:this.typeChange},k)))),T)),p?s.createElement(l.default,{dataSource:_,variableSource:r,onAddConfigValue:this.addVariableConfig,hasRelatedComponent:v,onChangeConfigValueStatus:this.changeConfigValueStatus,onUpdateConfigValue:this.updateConfigValue,onDeleteConfigValue:this.deleteConfigValue,ref:function(t){e.variableConfigTable=t}}):"",s.createElement("div",{className:x.footer},s.createElement(f,{onClick:o},"取消"),s.createElement(f,{type:"primary",onClick:this.saveConfig},"保存")))}}]),t}(s.Component);t.VariableConfigForm=S,t.default=c.create()(S)},"./app/containers/Widget/components/VariableConfigTable.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n=0),t&&o&&(t=t&&i.test(e.name)),t})}},{key:"render",value:function(){var e=this,t=this.props,n=t.className,o=t.widgetsSelected,a=this.state,i=a.screenWidth,s=a.pageSize,l=a.currentPage,p=a.showSelected,b=this.getWidgets(),A=(l-1)*s,x=Math.min(l*s,b.length),w=b.slice(A,x),j=w.map(function(t,n){var a,i=t.type,s=u((a={},r(a,y.widget,!0),r(a,y.selector,!0),r(a,y.selected,1===t.id),a)),l=o.findIndex(function(e){return e.id===t.id})>=0?c.createElement("div",{className:y.checkmark},_):"";return c.createElement(h,{md:8,sm:12,xs:24,key:t.id,onClick:e.onWidgetSelect(t)},c.createElement("div",{className:s},c.createElement("h3",{className:y.title},t.name),c.createElement("p",{className:y.content},t.desc),c.createElement("i",{className:y.pic+" iconfont "+d.iconMapping[i]}),l))});return c.createElement("div",{className:n},c.createElement(f,{gutter:20,className:""+y.searchRow},c.createElement(h,{span:17},c.createElement(m,{checked:p,onChange:this.onShowTypeChange},"已选")),c.createElement(h,{span:7},c.createElement(v,{placeholder:"Widget 名称",onSearch:this.onSearchWidgetItem}))),c.createElement(f,{gutter:20},j),c.createElement(f,null,c.createElement(g,{simple:i<768||768===i,className:y.paginationPosition,showSizeChanger:!0,onShowSizeChange:this.onShowSizeChange,onChange:this.onChange,total:b.length,defaultPageSize:24,pageSizeOptions:["24","48","72","96"],current:l})))}}]),t}(c.Component);t.WidgetSelector=A,t.default=A},"./app/containers/Widget/components/Workbench/ActOnSettingForm.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n","<",">=","<=","!="],["=",">","<",">=","<=","!="]],n=t[0].slice().map(function(e){return l.createElement(v,{key:e,value:e},e)}),r=t[1].slice().map(function(e){return l.createElement(v,{key:e,value:e},e)});return"number"===e||"date"===e?r:n},n.generateFilterValueInput=function(e){var t=n.props.type,r=l.createElement(p,{onChange:n.changeStringFilterValue(e)}),o=l.createElement(f,{className:x.inputNumber,onChange:n.changeNumberFilterValue(e)});return"number"===t?o:r},n.addParallelNode=function(e){return function(){var t=n.state.flattenTree,r=t[e],o={id:u.uuid(8,16),type:"node",parent:void 0};if(r.parent){var a=t[r.parent];o.parent=a.id,a.children.push(o),t[o.id]=o,n.setState({flattenTree:Object.assign({},t)})}else{var i={id:u.uuid(8,16),root:!0,type:"link",rel:"and",children:[]};o.parent=i.id,i.children.push(r),i.children.push(o),delete r.root,delete t[r.id],r.id=u.uuid(8,16),r.parent=i.id,t[r.id]=r,t[i.id]=i,t[o.id]=o,n.setState({flattenTree:Object.assign({},t)}),n.props.onAddTreeNode(i)}}},n.forkNode=function(e){return function(){var t=n.state.flattenTree,r=t[e],o=Object.assign({},r,{id:u.uuid(8,16),parent:r.id}),a={id:u.uuid(8,16),type:"node",parent:r.id};r.type="link",r.rel="and",r.children=[o,a],t[o.id]=o,t[a.id]=a,n.setState({flattenTree:Object.assign({},t)})}},n.deleteNode=function(e){return function(){var t=n.state.flattenTree,r=t[e];if(delete t[e],r.parent){var o=t[r.parent];if(o.children=o.children.filter(function(t){return t.id!==e}),1===o.children.length){var a=o.children[0];n.refreshTreeId(a);var i=o.id;o.id=a.id,o.type=a.type,o.rel=a.rel,o.filterKey=a.filterKey,o.filterOperator=a.filterOperator,o.filterValue=a.filterValue,o.children=a.children,delete t[i],t[a.id]=o}n.setState({flattenTree:Object.assign({},t)})}else n.setState({flattenTree:null}),n.props.onDeleteTreeNode()}},n.refreshTreeId=function(e){var t=n.state.flattenTree;delete t[e.id],e.id=u.uuid(8,16),t[e.id]=e,e.children&&e.children.forEach(function(t){t.parent=e.id,n.refreshTreeId(t)})},n.changeLinkRel=function(e){return function(t){e.rel=t.target.value}},n.changeFilterOperator=function(e){return function(t){e.filterOperator=t}},n.changeStringFilterValue=function(e){return function(t){e.filterValue=t.target.value}},n.changeNumberFilterValue=function(e){return function(t){e.filterValue=t}},n.changeDateFilterValue=function(e){return function(t){e.filterValue=t}},n.resetTree=function(){n.setState({flattenTree:null})},n.state={flattenTree:null},n}return i(t,e),s(t,[{key:"componentWillReceiveProps",value:function(e){var t=e.filterTree,n=this.state.flattenTree;Object.keys(t).length>0&&!n&&this.setState({flattenTree:this.initFlattenTree(t,{})})}},{key:"renderFilters",value:function(e){var t=this;if("link"===e.type){var n=e.children.map(function(e){return t.renderFilters(e)});return this.renderFilterList(e,n)}return"node"===e.type?this.renderFilterItem(e):l.createElement("div",{className:x.empty,onClick:this.props.onAddRoot},E)}},{key:"render",value:function(){var e=this.props.filterTree;return l.createElement("div",{className:x.conditionalFilterPanel},l.createElement(d,{className:x.conditionalFilterForm},this.renderFilters(e)))}}]),t}(l.PureComponent);t.ConditionalFilterPanel=S,t.default=d.create({widthRef:!0})(S)},"./app/containers/Widget/components/Workbench/ConfigSections/AxisSection.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n=0){var d=r.findIndex(function(e){return e.name===o.name});"category"===o.type&&d>=0&&o.from!==t||a(t,o,function(e){e?i(t,c,u,l,e):n.dragLeave()})}n.setState({entering:!1,dropIndex:-1,dropType:"outside"===u?void 0:void 0===u?"unmoved":u})},n.itemDragEnd=function(){n.props.onItemDragEnd(n.state.dropType),n.setState({dropType:void 0})},n.calcPhysicalDropIndex=function(e,t){var r=e-n.x,o=t-n.y,a=n.width-n.PADDING,i=Math.max(n.BOX_MIN_HEIGHT-n.PADDING,n.state.items.length*n.ITEM_HEIGHT+n.PADDING);if(r>n.PADDING&&o>n.PADDING&&r=0&&(c-=1);var u=void 0!==e?Math.min(c,e):c;if(s<0)(l<0||l!==u)&&n.setState({items:[].concat(o(r.slice(0,u)),[{name:"category"===a.type?a.name:m.decodeMetricName(a.name),type:"add"}],o(r.slice(u))),dropIndex:u,dropType:"outside"});else if(l!==u){var d=i.filter(function(e,t){return t!==l});d.splice(u,0,a),n.setState({items:d,dropIndex:u,dropType:"inside"})}},n.state={entering:!1,items:[],dropIndex:-1,dropType:void 0},n}return s(t,e),l(t,[{key:"componentWillMount",value:function(){this.getItems(this.props)}},{key:"componentWillReceiveProps",value:function(e){e.items!==this.props.items&&this.getItems(e)}},{key:"render",value:function(){var e,t,n=this,o=this.props,a=o.name,i=o.title,s=o.type,l=o.value,m=o.panelList,b=o.dragged,_=o.dimetionsCount,A=o.metricsCount,x=o.onValueChange,w=o.onItemDragStart,j=o.onItemSort,E=o.onItemChangeAgg,S=o.onItemChangeColorConfig,k=o.onItemChangeFilterConfig,C=o.onItemChangeChart,T=o.onItemRemove,M=this.state,O=M.entering,L=M.items,D=!1,P=!1,I="";b&&(I=b.type,"all"!==s&&s!==I||(D=!0,P=O));var R=u((e={},r(e,v.dropContainer,!0),r(e,v.dragOver,D),e)),N=u((t={},r(t,v.mask,!0),r(t,v.onTop,D),r(t,v.enter,P),r(t,v.category,"category"===I),r(t,v.value,"value"===I),t)),B=void 0;if(["color","size"].includes(a)){var F=void 0;switch(a){case"color":F=c.createElement(f.default,{list:m,value:l,onValueChange:x});break;case"size":F=c.createElement(h.default,{list:m,value:l,onValueChange:x})}B=c.createElement(g,{content:F,trigger:"click",placement:"right"},c.createElement("span",{className:v.setting},y," 设置"))}var U=L.length?L.map(function(e){return c.createElement(d.default,{key:e.name,container:a,item:e,dimetionsCount:_,metricsCount:A,onDragStart:w,onDragEnd:n.itemDragEnd,onSort:j,onChangAgg:E,onChangeColorConfig:S,onChangeFilterConfig:k,onChangeChart:C,onRemove:T(e.name)})}):c.createElement(p.default,{title:i,type:s});return c.createElement("div",{className:v.dropbox},c.createElement("p",{className:v.title},i,B),c.createElement("div",{className:R,ref:function(e){return n.container=e}},U,c.createElement("div",{className:N,onDragEnter:this.dragEnter,onDragOver:this.dragOver,onDragLeave:this.dragLeave,onDrop:this.drop})))}}]),t}(c.PureComponent);t.Dropbox=_,t.default=_},"./app/containers/Widget/components/Workbench/DropboxContent.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n=0?a(o,t):"color"===t?s(o):"filters"===t?l(o):i(o,t)},n.getSpecificDropdownList=function(e){var t=n.props.container,r=n.dropdownList[e];return"color"===t?r=[{color:"配置颜色"}].concat(r):"filters"===t&&(r=[{filters:"配置筛选"}].concat(r)),r},n.state={dragging:!1},n}return i(t,e),l(t,[{key:"render",value:function(){var e,t,n=this.props,o=n.container,a=n.item,i=n.dimetionsCount,s=n.metricsCount,l=n.onChangeChart,m=n.onRemove,g=a.name,b=a.type,A=a.sort,x=a.agg,w=this.state.dragging,j="value"===b?p.decodeMetricName(g):g,E=void 0;"metrics"===o&&"add"!==a.type&&(E=c.createElement(d.default,{chart:a.chart,dimetionsCount:i,metricsCount:s,onChangeChart:l(a)}));var S=u((e={},r(e,y.dropItemContent,!0),r(e,y.category,"category"===b),r(e,y.value,"value"===b),r(e,y.add,"add"===b),r(e,y.dragging,w),e)),k=u((t={iconfont:!0},r(t,y.sort,!0),r(t,"icon-sortascending","asc"===A),r(t,"icon-sortdescending","desc"===A),t)),C=c.createElement("p",null,_,x?" ["+p.getAggregatorLocale(x)+"] "+j+" ":" "+j+" ",A&&c.createElement("i",{className:k})),T=void 0;if("add"===b)T=C;else{var M=this.getSpecificDropdownList(b),O="";"value"===b&&(O=y.valueDropDown),T=c.createElement(v,{overlay:c.createElement(h,{className:O,onClick:this.dropdownMenuClick},this.getDropdownList(M)),trigger:["click"]},C)}return c.createElement("div",{className:y.dropItem},c.createElement("div",{className:S,onDragStart:this.dragStart,onDragEnd:this.dragEnd,draggable:!0},E,T,c.createElement(f,{type:"close-square-o",className:y.remove,onClick:m})))}}]),t}(c.PureComponent);t.DropboxItem=A,t.default=A},"./app/containers/Widget/components/Workbench/FilterSettingForm.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n= '"+a+"'":"yesterday"===r?t+" >= '"+i+"' and "+t+" <= '"+a+"'":"yesterdayFromNow"===r?t+" >= '"+i+"'":"7"===r?t+" >= '"+l.default().subtract(7,"days").format(u.DEFAULT_DATETIME_FORMAT)+"'":"30"===r?t+" >= '"+l.default().subtract(30,"days").format(u.DEFAULT_DATETIME_FORMAT)+"'":"90"===r?t+" >= '"+l.default().subtract(90,"days").format(u.DEFAULT_DATETIME_FORMAT)+"'":"365"===r?t+" >= '"+l.default().subtract(365,"days").format(u.DEFAULT_DATETIME_FORMAT)+"'":"week"===r?t+" >= '"+l.default().startOf("week").format(u.DEFAULT_DATETIME_FORMAT)+"'":"month"===r?t+" >= '"+l.default().startOf("month").format(u.DEFAULT_DATETIME_FORMAT)+"'":"quarter"===r?t+" >= '"+l.default().startOf("quarter").format(u.DEFAULT_DATETIME_FORMAT)+"'":"year"===r?t+" >= '"+l.default().startOf("year").format(u.DEFAULT_DATETIME_FORMAT)+"'":t+" >= '"+o[0].format(u.DEFAULT_DATETIME_FORMAT)+"' and "+t+" <= '"+o[1].format(u.DEFAULT_DATETIME_FORMAT)+"'"},n.save=function(){var e=n.props,t=e.onSave,r=e.onCancel,o=n.state,a=o.name,i=o.mode,s=o.target,l=o.filterTree,c=o.selectedDate,d=o.datepickerValue;if("value"===i){var p=s.map(function(e){return"'"+e+"'"}).join(",");p?t({sql:a+" in ("+p+")",filterSource:s.slice()}):r()}else"conditional"===i?Object.keys(l).length>0?n.conditionalFilterForm.props.form.validateFieldsAndScroll(function(e){e||(t({sql:n.getSqlExpresstions(l),filterSource:Object.assign({},l)}),n.conditionalFilterForm.resetTree())}):r():t({sql:n.getDateSql(),filterSource:{selectedDate:c,datepickerValue:d.map(function(e){return e.format(u.DEFAULT_DATETIME_FORMAT)})}})},n.reset=function(){n.setState({mode:"value",name:"",type:"",list:[],target:[],filterTree:{},selectedDate:"today",datepickerValue:[l.default(),l.default()]})},n.state={mode:"value",name:"",type:"",list:[],target:[],filterTree:{},selectedDate:"today",datepickerValue:[l.default(),l.default()]},n}return a(t,e),i(t,[{key:"componentWillMount",value:function(){var e=this.props,t=e.item,n=e.config;this.initNameAndType(t),this.initFilterSource(t.visualType,n)}},{key:"componentWillReceiveProps",value:function(e){var t=e.item,n=e.config,r=e.list;t&&this.initNameAndType(t),n&&this.initFilterSource(t.visualType,n),r&&this.setState({list:r.map(function(e){return{key:""===e?p.uuid(8,16):e,title:e}})})}},{key:"render",value:function(){var e=this.props.onCancel,t=this.state,n=t.mode,r=t.name,o=t.type,a=t.list,i=t.target,l=t.filterTree,d=t.selectedDate,p=t.datepickerValue,h=[];"number"===o?h.push(x):"date"===o?h.push(w):(h.push(j),h.push(E));var b=this.dateRadioSource.map(function(e){return e.map(function(e){return s.createElement(m,{key:e.value,value:e.value,className:A.radio},e.name)}).concat(S)}),y=void 0;return y="value"===n?s.createElement("div",{className:A.valueBlock},s.createElement(f,{dataSource:a,titles:["值列表","所选值"],render:this.transferRender,targetKeys:i,onChange:this.transferChange})):"conditional"===n?s.createElement("div",{className:A.conditionalBlock},s.createElement(c.default,{name:r,type:o,filterTree:l,onAddRoot:this.initFilterTree,onAddTreeNode:this.addTreeNode,onDeleteTreeNode:this.deleteTreeNode,wrappedComponentRef:this.refHandles.conditionalFilterForm})):s.createElement("div",{className:A.dateBlock},s.createElement(g,{value:d,onChange:this.selectDate,className:A.dateFilterRadios},b),"other"===d&&s.createElement(_,{value:p,format:u.DEFAULT_DATETIME_FORMAT,onChange:this.datepickerChange,showTime:!0})),s.createElement("div",{className:A.filterSettingForm},s.createElement("div",{className:A.header},s.createElement(g,{onChange:this.radioChange,value:n},h)),y,s.createElement("div",{className:A.footer},s.createElement(v,{type:"primary",onClick:this.save},"保存"),s.createElement(v,{onClick:e},"取消")))}}]),t}(s.PureComponent);t.FilterSettingForm=k,t.default=k},"./app/containers/Widget/components/Workbench/OperatingPanel.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t=0&&(g.splice(b,1),t=t<=b?t:t-1)}"xAxis"===e&&(g.splice(0,1),t=0)}if("outside"===r){var v=f;"metrics"===e&&(v=Object.assign({},f,{chart:c.metrics.items.length?c.metrics.items[0].chart:x.getPivot()})),m.items=[].concat(o(g.slice(0,t)),[v],o(g.slice(t)))}else m.items=[].concat(o(a));h&&(h.items=h.items.filter(function(e){return e.name!==f.name})),n.setState({dragged:null,modalCachedData:null}),n.getVisualData(c,u,d)},n.toggleRowsAndCols=function(){var e=n.state,t=e.commonParams,r=e.specificParams,o=e.styleParams,a=t.cols,i=t.rows;n.state.showColsAndRows&&i.items.length&&(a.items=a.items.concat(i.items),i.items=[],n.getVisualData(t,r,o)),n.setState({showColsAndRows:!n.state.showColsAndRows})},n.switchRowsAndCols=function(){var e=n.state,t=e.commonParams,r=e.specificParams,o=e.styleParams,a=t.cols,i=t.rows,s=a.items.slice();a.items=i.items.slice(),i.items=s,s=null,n.getVisualData(t,r,o)},n.removeDropboxItem=function(e){return function(t){return function(){var r=n.state,o=r.commonParams,a=r.specificParams,i=r.styleParams,s=o[e]||a[e];s.items=s.items.filter(function(e){return e.name!==t}),n.getVisualData(o,a,i)}}},n.getDropboxItemSortDirection=function(e){return function(t,r){var a=n.state,i=a.commonParams,s=a.specificParams,l=a.styleParams,c=i[e]||s[e];t.sort=["asc","desc"].indexOf(r)>=0?r:void 0,c.items=[].concat(o(c.items)),n.getVisualData(i,s,l)}},n.getDropboxItemAggregator=function(e){return function(t,r){var a=n.state,i=a.commonParams,s=a.specificParams,l=a.styleParams,c=i[e]||s[e];t.agg=r,c.items=[].concat(o(c.items)),n.getVisualData(i,s,l)}},n.dropboxItemChangeColorConfig=function(e){var t=n.props,r=t.selectedView,a=t.onLoadDistinctValue,i=n.state,s=i.commonParams,l=i.specificParams,c=i.styleParams;a(r.id,e.name),n.setState({modalCachedData:e,modalDataFrom:"color",modalCallback:function(t){if(t){var r=l.color.items,a=r.findIndex(function(e){return e.config.actOn===t.actOn});a>=0&&(l.color.items=[].concat(o(r.slice(0,a)),o(r.slice(a+1)))),e.config=t,n.getVisualData(s,l,c),n.setState({modalCachedData:null})}},colorModalVisible:!0})},n.dropboxItemChangeFilterConfig=function(e){var t=n.props,r=t.selectedView,o=t.onLoadDistinctValue,a=n.state,i=a.commonParams,s=a.specificParams,l=a.styleParams;"category"===e.type&&o(r.id,e.name),n.setState({modalCachedData:e,modalDataFrom:"filters",modalCallback:function(t){t&&(e.config=t,n.getVisualData(i,s,l),n.setState({modalCachedData:null}))},filterModalVisible:!0})},n.getDropboxItemChart=function(e){return function(t){var r=n.state.commonParams;e.chart=t,r.metrics.items=[].concat(o(r.metrics.items));var a=n.getChartDataConfig(n.getSelectedCharts(r.metrics.items)),i=a.specificParams,s=a.styleParams;n.getVisualData(r,i,s)}},n.getDiemtionsAndMetricsCount=function(){var e=n.state.commonParams,t=e.cols,r=e.rows,o=e.metrics;return[t.items.length+r.items.length,o.items.length]},n.getVisualData=function(e,t,r,o){var a=e.cols,i=e.rows,s=e.metrics,l=e.filters,c=t.color,u=t.label,d=t.size,p=t.xAxis,f=t.tip,h=n.props,m=h.selectedView,g=h.onLoadData,b=h.onSetPivotProps,v=n.getSelectedCharts(s.items),y=a.items.map(function(e){return e.name}).concat(i.items.map(function(e){return e.name})).filter(function(e){return"指标名称"!==e}),_=s.items.map(function(e){return{column:x.decodeMetricName(e.name),func:e.agg}});c&&(y=y.concat(c.items.map(function(e){return e.name}))),u&&(y=y.concat(u.items.filter(function(e){return"category"===e.type}).map(function(e){return e.name})),_=_.concat(u.items.filter(function(e){return"value"===e.type}).map(function(e){return{column:x.decodeMetricName(e.name),func:e.agg}}))),d&&(_=_.concat(d.items.map(function(e){return{column:x.decodeMetricName(e.name),func:e.agg}}))),p&&(_=_.concat(p.items.map(function(e){return{column:x.decodeMetricName(e.name),func:e.agg}}))),f&&(_=_.concat(f.items.map(function(e){return{column:x.decodeMetricName(e.name),func:e.agg}}))),y.sort(),_.sort();var A=[];Object.values(e).concat(Object.values(t)).reduce(function(e,t){return e.concat(t.items)},[]).forEach(function(e){e.sort&&A.push({column:"category"===e.type?e.name:e.agg+"("+x.decodeMetricName(e.name)+")",direction:e.sort})});var w={groups:y,aggregators:_,filters:l.items.map(function(e){return e.config.sql}),orders:A,cache:!1,expired:0},j=JSON.stringify(w);x.checkChartEnable(y.length,s.items.length,v)||(v=n.getSelectedCharts([])),m&&j!==n.lastRequestParamString?(n.lastRequestParamString=j,g(m.id,w,function(t){b(t.length?Object.assign({cols:a.items.map(function(e){return e.name}),rows:i.items.map(function(e){return e.name}),metrics:s.items.map(function(e){return Object.assign({},e)}),filters:l.items},c&&{color:c},u&&{label:u},d&&{size:d},p&&{xAxis:p},f&&{tip:f},{chartStyles:r,data:t,dimetionAxis:n.getDimetionAxis(v),renderType:o||"rerender",orders:A}):{cols:[],rows:[],metrics:[],filters:[],data:[],chartStyles:r,dimetionAxis:n.getDimetionAxis([x.getPivot()]),renderType:"rerender",orders:A}),n.setState(Object.assign({commonParams:e},n.getChartDataConfig(v)))})):(b(Object.assign({cols:a.items.map(function(e){return e.name}),rows:i.items.map(function(e){return e.name}),metrics:s.items.map(function(e){return Object.assign({},e)}),filters:l.items},c&&{color:c},u&&{label:u},d&&{size:d},p&&{xAxis:p},f&&{tip:f},{chartStyles:r,dimetionAxis:n.getDimetionAxis(v),renderType:o||"clear",orders:A})),n.setState(Object.assign({commonParams:e},n.getChartDataConfig(v))))},n.getDimetionAxis=function(e){var t=x.getPivot();if(e.filter(function(e){return e.id!==t.id}).length)return"col"},n.chartSelect=function(e){var t=n.state.commonParams,r=t.cols,o=t.rows,a=t.metrics;if(1!==a.items.length||a.items[0].chart.id!==e.id){a.items.forEach(function(t){t.chart=e}),e.id!==x.getPivot().id&&(r.items=r.items.filter(function(e){return"指标名称"!==e.name}),o.items=o.items.filter(function(e){return"指标名称"!==e.name}));var i=n.getChartDataConfig(n.getSelectedCharts(a.items)),s=i.specificParams,l=i.styleParams;n.getVisualData(t,s,l)}},n.viewSelect=function(e){var t=e.key,r=n.state,o=r.commonParams,a=r.specificParams;Object.values(o).concat(Object.values(a)).filter(function(e){return!!e.items.length}).length?N({title:"切换 View 会清空所有配置项,是否继续?",onOk:function(){n.resetWorkbench(),n.props.onViewSelect(n.props.views.find(function(e){return e.id===Number(t)}))}}):n.props.onViewSelect(n.props.views.find(function(e){return e.id===Number(t)}))},n.resetWorkbench=function(){var e=n.state,t=e.commonParams,r=e.specificParams;Object.values(t).forEach(function(e){e.items=[],e.value&&(e.value={})}),Object.values(r).forEach(function(e){e.items=[],e.value&&(e.value={})});var o=n.getChartDataConfig(n.getSelectedCharts([]));n.getVisualData(t,o.specificParams,o.styleParams)},n.dropboxValueChange=function(e){return function(t,r){var o=n.state,a=o.commonParams,i=o.specificParams,s=o.styleParams,l=i.color,c=i.size;switch(e){case"color":"all"===t?Object.keys(l.value).forEach(function(e){l.value[e]=r}):l.value[t]=r;break;case"size":"all"===t?Object.keys(c.value).forEach(function(e){c.value[e]=r}):c.value[t]=r}n.getVisualData(a,i,s,"refresh")}},n.styleChange=function(e){return function(t,r){var o=n.state,a=o.commonParams,i=o.specificParams,s=o.styleParams;s[e][t]=r,n.getVisualData(a,i,s,"refresh")}},n.confirmColorModal=function(e){n.state.modalCallback(e),n.closeColorModal()},n.cancelColorModal=function(){n.state.modalCallback(!1),n.closeColorModal()},n.closeColorModal=function(){n.setState({colorModalVisible:!1,modalCallback:null})},n.confirmActOnModal=function(e){n.state.modalCallback(e),n.closeActOnModal()},n.cancelActOnModal=function(){n.state.modalCallback(!1),n.closeActOnModal()},n.closeActOnModal=function(){n.setState({actOnModalVisible:!1,actOnModalList:null})},n.confirmFilterModal=function(e){n.state.modalCallback(e),n.closeFilterModal()},n.cancelFilterModal=function(){n.state.modalCallback(!1),n.closeFilterModal()},n.closeFilterModal=function(){n.setState({filterModalVisible:!1})},n.afterColorModalClose=function(){n.colorSettingForm.reset()},n.afterActOnModalClose=function(){n.actOnSettingForm.reset()},n.afterFilterModalClose=function(){n.filterSettingForm.reset()},n.tabSelect=function(e){return function(){n.setState({selectedTab:e})}},n.showVariableConfigTable=function(e){return function(){n.setState({variableConfigModalVisible:!0,variableConfigControl:e?n.props.queryParams.find(function(t){return t.id===e}):{}})}},n.hideVariableConfigTable=function(){n.setState({variableConfigModalVisible:!1,variableConfigControl:{}})},n.resetVariableConfigForm=function(){n.variableConfigForm.resetForm()},n.saveControl=function(e){var t=n.props,r=t.queryParams,a=t.onSetQueryParams,i=n.state,s=(i.commonParams,i.specificParams,i.styleParams,r.findIndex(function(t){return t.id===e.id}));s>=0?(r.splice(s,1,e),a([].concat(o(r.slice(0,s)),[e],o(r.slice(s+1))))):a(r.concat(e))},n.deleteControl=function(e){return function(){var t=n.props,r=t.queryParams;(0,t.onSetQueryParams)(r.filter(function(t){return t.id!==e}))}},n.state={dragged:null,showColsAndRows:!1,selectedTab:"data",commonParams:{cols:{title:"列",type:"category",items:[]},rows:{title:"行",type:"category",items:[]},metrics:{title:"指标",type:"value",items:[]},filters:{title:"筛选",type:"all",items:[]}},specificParams:{},styleParams:{},modalCachedData:null,modalCallback:null,modalDataFrom:void 0,colorModalVisible:!1,actOnModalVisible:!1,actOnModalList:null,filterModalVisible:!1,variableConfigModalVisible:!1,variableConfigControl:{}},n}return s(t,e),c(t,[{key:"componentWillMount",value:function(){this.setState(Object.assign({},this.getChartDataConfig(this.getSelectedCharts([]))))}},{key:"componentWillReceiveProps",value:function(e){var t=this,n=e.selectedView,r=e.currentWidgetConfig;if(r&&r!==this.props.currentWidgetConfig){var o=r.cols,a=r.rows,i=r.metrics,s=r.filters,l=r.color,c=r.label,u=r.size,d=r.xAxis,p=r.tip,f=r.chartStyles,h=(r.queryParams,r.cache,r.expired,this.state.commonParams),m=JSON.parse(n.model);h.cols.items=o.map(function(e){return{name:e,from:"cols",type:"category",visualType:"指标名称"===e?"string":m[e].visualType}}),h.rows.items=a.map(function(e){return{name:e,from:"rows",type:"category",visualType:"指标名称"===e?"string":m[e].visualType}}),h.metrics.items=i.map(function(e){return Object.assign({},e,{type:"value",visualType:m[x.decodeMetricName(e.name)].visualType})}),h.filters.items=s.map(function(e){return Object.assign({},e,{visualType:m[e.name]})});var g=Object.assign({},l&&{color:l},c&&{label:c},u&&{size:u},d&&{xAxis:d},p&&{tip:p});this.setState({commonParams:h,specificParams:g,styleParams:f,showColsAndRows:!!a.length},function(){t.getVisualData(h,g,f)})}}},{key:"render",value:function(){var e,t=this,n=this.props,o=n.views,a=n.selectedView,i=n.distinctColumnValues,s=n.columnValueLoading,c=n.queryParams,w=n.cache,S=n.expired,O=n.onCacheChange,L=n.onExpiredChange,N=this.state,F=N.dragged,U=N.showColsAndRows,Z=N.selectedTab,$=N.commonParams,ee=N.specificParams,te=N.styleParams,ne=N.modalCachedData,re=N.modalDataFrom,oe=N.colorModalVisible,ae=N.actOnModalVisible,ie=N.actOnModalList,se=N.filterModalVisible,le=N.variableConfigModalVisible,ce=N.variableConfigControl,ue=$.metrics,de=this.getDiemtionsAndMetricsCount(),pe=l(de,2),fe=pe[0],he=pe[1],me=(te.spec,te.xAxis),ge=te.yAxis,be=te.splitLine,ve=te.pivot,ye=u.createElement(k,{onClick:this.viewSelect},(o||[]).map(function(e){return u.createElement(C,{key:e.id},e.name)})),_e=[],Ae=[];if(a){var xe=JSON.parse(a.model),we=x.getPivot();Object.entries(xe).forEach(function(e){var t=l(e,2),n=t[0],r=t[1];"category"===r.modelType?_e.push({name:n,type:"category",visualType:r.visualType}):Ae.push({name:n,type:"value",visualType:r.visualType})}),Ae.length&&!ue.items.filter(function(e){return e.chart.id!==we.id}).length&&_e.push({name:"指标名称",type:"category",visualType:"string"})}var je=Object.entries($).concat(Object.entries(ee)).map(function(e){var n=l(e,2),r=n[0],o=n[1];if("rows"!==r||U){"cols"===r&&(o.title=U?"列":"维度");var a=[];return"color"===r&&(a=ue.items),"size"===r&&(a=o.items),u.createElement(f.default,{key:r,name:r,title:o.title,type:o.type,value:o.value,items:o.items,dragged:F,panelList:a,dimetionsCount:fe,metricsCount:he,onValueChange:t.dropboxValueChange(r),onItemDragStart:t.insideDragStart(r),onItemDragEnd:t.insideDragEnd,onItemRemove:t.removeDropboxItem(r),onItemSort:t.getDropboxItemSortDirection(r),onItemChangeAgg:t.getDropboxItemAggregator(r),onItemChangeColorConfig:t.dropboxItemChangeColorConfig,onItemChangeFilterConfig:t.dropboxItemChangeFilterConfig,onItemChangeChart:t.getDropboxItemChart,beforeDrop:t.beforeDrop,onDrop:t.drop})}}),Ee=d((e={},r(e,B.switchRowsAndCols,!0),r(e,z.hide,!U),e)),Se=this.tabKeys.map(function(e){var n=e.key,o=e.title,a=d(r({},B.selected,n===Z));return u.createElement("li",{key:n,className:a,onClick:t.tabSelect(n)},o)}),ke=[{title:"变量",dataIndex:"variables",key:"variables",render:function(e,t){return t.variables.join(",")}},{title:"操作",key:"action",width:100,className:""+z.textAlignCenter,render:function(e,n){return u.createElement("span",{className:"ant-table-action-column"},u.createElement(M,{size:"small",shape:"circle",icon:"edit",onClick:t.showVariableConfigTable(n.id)}),u.createElement(M,{size:"small",shape:"circle",icon:"delete",onClick:t.deleteControl(n.id)}))}}],Ce=[];a&&(Ce=(a.sql.match(/query@var\s+\$\w+\$/g)||[]).map(function(e){return e.substring(e.indexOf("$")+1,e.lastIndexOf("$"))}));var Te=void 0;switch(Z){case"data":Te=u.createElement("div",{className:B.paramsPane+" "+B.dropPane},u.createElement("div",{className:B.toggleRowsAndCols,onClick:this.toggleRowsAndCols},H,U?" 使用维度":" 使用行列"),u.createElement("div",{className:Ee,onClick:this.switchRowsAndCols},V," 行列切换"),je);break;case"style":Te=u.createElement("div",{className:B.paramsPane},me&&u.createElement(y.default,{title:"X轴",type:"x",config:me,onChange:this.styleChange("xAxis")}),ge&&u.createElement(y.default,{title:"Y轴",type:"y",config:ge,onChange:this.styleChange("yAxis")}),be&&u.createElement(_.default,{title:"分隔线",config:be,onChange:this.styleChange("splitLine")}),ve&&u.createElement(A.default,{title:"透视表",config:ve,onChange:this.styleChange("pivot")}));break;case"variable":Te=Ce.length?u.createElement("div",{className:B.paramsPane},u.createElement(j,{gutter:8,type:"flex",align:"middle",className:B.blockRow},u.createElement(E,{span:24,className:B.addVariable,onClick:this.showVariableConfigTable()},Y," 点击添加")),u.createElement(T,{dataSource:c,columns:ke,rowKey:"id",pagination:!1})):u.createElement("div",{className:B.paramsPane},u.createElement("div",{className:B.paneBlock},u.createElement(j,{gutter:8,type:"flex",align:"middle",className:B.blockRow},W)));break;case"cache":Te=u.createElement("div",{className:B.paramsPane},u.createElement("div",{className:B.paneBlock},G,u.createElement("div",{className:B.blockBody},u.createElement(j,{gutter:8,type:"flex",align:"middle",className:B.blockRow},u.createElement(E,{span:24},u.createElement(D,{size:"small",value:w,onChange:O},Q,q))))),u.createElement("div",{className:B.paneBlock},K,u.createElement("div",{className:B.blockBody},u.createElement(j,{gutter:8,type:"flex",align:"middle",className:B.blockRow},u.createElement(E,{span:24},u.createElement(P,{value:S,disabled:!w,onChange:L}))))))}var Me=void 0,Oe=void 0,Le=void 0;if(ne){var De="filters"===re?$[re].items.find(function(e){return e.name===ne.name}):ee[re].items.find(function(e){return e.name===ne.name});switch(re){case"color":Me=De?De.config:{};break;case"filters":Le=De?De.config:{};break;default:Oe=De?De.config:{}}}return u.createElement("div",{className:B.operatingPanel},u.createElement("div",{className:B.model},u.createElement("div",{className:B.viewSelect},u.createElement(I,{overlay:ye,trigger:["click"],placement:"bottomLeft"},u.createElement("a",null,a?a.name:"选择一个View"))),u.createElement("div",{className:B.columnContainer},X,u.createElement("ul",{className:B.columnList+" "+B.categories},_e.map(function(e){return u.createElement("li",{key:e.name,onDragStart:t.dragStart(e),onDragEnd:t.dragEnd,draggable:!0},u.createElement("i",{className:"iconfont "+t.getDragItemIconClass(e.visualType)}),u.createElement("p",null,e.name))}))),u.createElement("div",{className:B.columnContainer},J,u.createElement("ul",{className:B.columnList+" "+B.values},Ae.map(function(e){return u.createElement("li",{key:e.name,onDragStart:t.dragStart(Object.assign({},e,{name:x.encodeMetricName(e.name),agg:"sum"})),onDragEnd:t.dragEnd,draggable:!0},u.createElement("i",{className:"iconfont "+t.getDragItemIconClass(e.visualType)}),u.createElement("p",null,e.name))})))),u.createElement("div",{className:B.config},u.createElement("div",{className:B.charts},p.default.map(function(e){return u.createElement(v.default,{key:e.id,chartInfo:e,dimetionsCount:fe,metricsCount:he,selectedCharts:t.getSelectedCharts(ue.items),onSelect:t.chartSelect})})),u.createElement("div",{className:B.params},u.createElement("ul",{className:B.paramsTab},Se),Te)),u.createElement(R,{wrapClassName:"ant-modal-small",visible:oe,onCancel:this.cancelColorModal,afterClose:this.afterColorModalClose,footer:null},u.createElement(h.default,{list:i,loading:s,metrics:ue.items,config:Me,onSave:this.confirmColorModal,onCancel:this.cancelColorModal,ref:function(e){return t.colorSettingForm=e}})),u.createElement(R,{title:"作用于",wrapClassName:"ant-modal-small",visible:ae,onCancel:this.cancelActOnModal,afterClose:this.afterActOnModalClose,footer:null},u.createElement(m.default,{list:ie,config:Oe,onSave:this.confirmActOnModal,onCancel:this.cancelActOnModal,ref:function(e){return t.actOnSettingForm=e}})),u.createElement(R,{title:"筛选配置",visible:se,onCancel:this.cancelFilterModal,afterClose:this.afterFilterModalClose,footer:null},u.createElement(g.default,{item:ne,list:i,config:Le,onSave:this.confirmFilterModal,onCancel:this.cancelFilterModal,ref:function(e){return t.filterSettingForm=e}})),u.createElement(R,{title:"QUERY变量配置",wrapClassName:"ant-modal-large",visible:le,onCancel:this.hideVariableConfigTable,afterClose:this.resetVariableConfigForm,footer:!1,maskClosable:!1},u.createElement(b.default,{queryInfo:Ce,control:ce,onSave:this.saveControl,onClose:this.hideVariableConfigTable,wrappedComponentRef:this.refHandlers.variableConfigForm})))}}]),t}(u.Component);t.OperatingPanel=Z,t.default=Z},"./app/containers/Widget/components/Workbench/SizePanel.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;ni)return 1;if("number"==typeof e&&"number"!=typeof t)return-1;if("number"==typeof t&&"number"!=typeof e)return 1;if("number"==typeof e&&"number"==typeof t)return 0;if(isNaN(i)&&!isNaN(a))return-1;if(isNaN(a)&&!isNaN(i))return 1;var s=String(e),l=String(t);if(s===l)return 0;if(!r.test(s)||!r.test(l))return s>l?1:-1;for(var c=s.match(n),u=l.match(n);c.length&&u.length;){var d=c.shift(),p=u.shift();if(d!==p)return r.test(d)&&r.test(p)?Number(d.replace(o,".0"))-Number(p.replace(o,".0")):d>p?1:-1}return c.length-u.length}function c(e){return e+2*I.PIVOT_CELL_PADDING+2*I.PIVOT_CELL_BORDER}function u(e){return(e||I.PIVOT_LINE_HEIGHT)+2*I.PIVOT_CELL_PADDING+I.PIVOT_CELL_BORDER}function d(e,t,n,r){var o=void 0,a=void 0;"col"===e?(o=Math.max(1,n[0]),a=t[0]):(o=Math.max(1,n[1]),a=t[1]);var i=a/o,s=r?I.PIVOT_CHART_METRIC_AXIS_MIN_SIZE:I.PIVOT_CHART_ELEMENT_MIN_WIDTH;return Math.max(Math.floor(i),s)}function p(e,t,n,r){return"row"===e&&n>r*t}function f(e,t,n){return Math.max(e,t*n*I.PIVOT_CHART_METRIC_AXIS_MIN_SIZE)/t/n}function h(e,t,n){return Math.max(e,t*n*I.PIVOT_CHART_METRIC_AXIS_MIN_SIZE)/t/n}function m(e,t,n){var r=Array.isArray(n)?n:[n],o=!0,a=!1,i=void 0;try{for(var s,l=r[Symbol.iterator]();!(o=(s=l.next()).done);o=!0){var c=s.value,u=c.requireDimetions,d=c.requireMetrics;if(eI.PIVOT_CHART_POINT_LIMIT?t:b(e,Math.round(t/2))}function v(e){function t(e){return e>=10?Math.floor(e):e.toFixed(1)}return e>=Math.pow(10,9)&&e=Math.pow(10,6)&&e=Math.pow(10,3)&&eI.PIVOT_CANVAS_AXIS_SIZE_LIMIT){var a=[];return o.forEach(function(r){var o={key:""+N.uuid(8,16)+r.key,data:[]},i={key:"",length:0,data:[o]};r.data.forEach(function(s,l){var c="x"===e&&"row"===t||"y"===e&&"col"===t?s.width*n.length:s.width;i.length+c>I.PIVOT_CANVAS_AXIS_SIZE_LIMIT&&(i.key=""+l+i.data.map(function(e){return e.key}).join(","),a.push(i),o={key:""+N.uuid(8,16)+r.key,data:[]},i={key:"",length:0,data:[o]}),i.length+=c,o.data.push(s),l===r.data.length-1&&(i.key=""+l+i.data.map(function(e){return e.key}).join(","),a.push(i))})}),a}return[{key:"block",data:o,length:r}]}function S(e){return function(n){for(var r=n,o=e>I.PIVOT_XAXIS_ROTATE_LIMIT?e:I.PIVOT_XAXIS_SIZE-I.PIVOT_XAXIS_TICK_SIZE;t.getTextWidth(n)>o;)n=n.substring(0,n.length-1);return n===r?n:n.substring(0,n.length-1)+"…"}}function k(e,t,n,r,o){var a=D(e,2),i=a[0],s=a[1],l=o.contentSize,c=o.viewSize,u=D(l,2),d=u[0],p=u[1],f=D(c,2),h=f[0],m=f[1];return[i+d+10>h?i-10-d:i+10,Math.min(s,m-p)]}function C(e,t,n,o,a,s,l,c,u){var d=t.concat(n),p=[].concat(r(o));return a&&(d=d.concat(a.items.map(function(e){return e.name}))),s&&(d=d.concat(s.items.filter(function(e){return"category"===e.type}).map(function(e){return e.name})),p=p.concat(s.items.filter(function(e){return"value"===e.type}))),l&&(p=p.concat(l.items)),c&&(p=p.concat(c.items)),u&&(p=p.concat(u.items)),d=d.reduce(function(e,t){return e.includes(t)||e.push(t),e},[]),p=p.reduce(function(e,t){var n=i(t.name);return e.find(function(e){return e.name.includes(n)&&e.agg===t.agg})||e.push(t),e},[]),function(t){var n=M(t,e);return p.map(function(e){var t=i(e.name),r=n?Array.isArray(n)?n.reduce(function(n,r){return n+r[e.agg+"("+t+")"]},0):n[e.agg+"("+t+")"]:0;return t+": "+r}).concat(d.map(function(e){return e+": "+(n?Array.isArray(n)?n[0][e]:n[e]:"")})).join("
      ")}}function T(e,t){return function(n){var r=M(n,e)||{};return"category"===t.type?Array.isArray(r)?r[0][t.name]:r[t.name]||"":Array.isArray(r)?r.reduce(function(e,n){return e+n[t.agg+"("+i(t.name)+")"]},0):r[t.agg+"("+i(t.name)+")"]||0}}function M(e,t){var n=e.seriesIndex,r=e.dataIndex,o=t[n],a=o.type,i=o.grouped,s=o.records;return"cartesian"===a?i?s[r]:s[r].value:"polar"===a?s[r]:s?s[0]:{}}function O(e,t){return Math.max(e/10,t/100)}function L(e){return e>=I.PIVOT_DEFAULT_SCATTER_SIZE_TIMES?e-I.PIVOT_DEFAULT_SCATTER_SIZE_TIMES+1:1/Math.pow(2,I.PIVOT_DEFAULT_SCATTER_SIZE_TIMES-e)}var D=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),P=this;Object.defineProperty(t,"__esModule",{value:!0});var I=n("./app/globalConstants.ts"),R=n("./app/assets/json/widgetlib/index.ts"),N=n("./app/utils/util.ts");t.getAggregatorLocale=o,t.encodeMetricName=a,t.decodeMetricName=i,t.spanSize=s,t.naturalSort=l,t.getTextWidth=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:I.DEFAULT_FONT_WEIGHT,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:I.DEFAULT_FONT_SIZE,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:I.DEFAULT_FONT_FAMILY,o=P.canvas||(P.canvas=document.createElement("canvas")),a=o.getContext("2d");a.font=t+" "+n+" "+r;var i=a.measureText(e);return Math.ceil(i.width)},t.getPivotContentTextWidth=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:I.DEFAULT_FONT_WEIGHT,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:I.DEFAULT_FONT_SIZE,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:I.DEFAULT_FONT_FAMILY;return Math.min(t.getTextWidth(e,n,r,o),I.PIVOT_MAX_CONTENT_WIDTH)},t.getPivotCellWidth=c,t.getPivotCellHeight=u,t.getTableBodyWidth=function(e,t,n){var r=n.length&&I.PIVOT_TITLE_SIZE,o="row"===e?n.slice(0,n.length-1).reduce(function(e,t){return e+c(t)},0):n.reduce(function(e,t){return e+c(t)},0);return t-2*I.PIVOT_BORDER-o-I.PIVOT_YAXIS_SIZE-r},t.getTableBodyHeight=function(e,t,n){var r=n&&I.PIVOT_TITLE_SIZE,o="col"===e?Math.max(n-1,0):n;return t-2*I.PIVOT_BORDER-o*u()-I.PIVOT_XAXIS_SIZE-r},t.getChartElementSize=d,t.shouldTableBodyCollapsed=p,t.getChartUnitMetricWidth=f,t.getChartUnitMetricHeight=h,t.checkChartEnable=m,t.getAxisInterval=g,t.getChartPieces=b,t.metricAxisLabelFormatter=v,t.getPivot=y,t.getBar=_,t.getScatter=A,t.getStyleConfig=x,t.getChartViewMetrics=w,t.getAxisData=j,t.axisDataCutting=E,t.getXaxisLabel=S,t.getTooltipPosition=k,t.getTooltipLabel=C,t.getChartLabel=T,t.getTriggeringRecord=M,t.getSizeRate=O,t.getSizeValue=L},"./app/containers/Widget/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LOAD_WIDGETS="davinci/Widget/LOAD_WIDGETS",t.LOAD_WIDGETS_SUCCESS="davinci/Widget/LOAD_WIDGETS_SUCCESS",t.LOAD_WIDGETS_FAILURE="davinci/Widget/LOAD_WIDGETS_FAILURE",t.ADD_WIDGET="davinci/Widget/ADD_WIDGET",t.ADD_WIDGET_SUCCESS="davinci/Widget/ADD_WIDGET_SUCCESS",t.ADD_WIDGET_FAILURE="davinci/Widget/ADD_WIDGET_FAILURE",t.LOAD_WIDGET_DETAIL="davinci/Widget/LOAD_WIDGET_DETAIL",t.LOAD_WIDGET_DETAIL_SUCCESS="davinci/Widget/LOAD_WIDGET_DETAIL_SUCCESS",t.LOAD_WIDGET_DETAIL_FAILURE="davinci/Widget/LOAD_WIDGET_DETAIL_FAILURE",t.EDIT_WIDGET="davinci/Widget/EDIT_WIDGET",t.EDIT_WIDGET_SUCCESS="davinci/Widget/EDIT_WIDGET_SUCCESS",t.EDIT_WIDGET_FAILURE="davinci/Widget/EDIT_WIDGET_FAILURE",t.DELETE_WIDGET="davinci/Widget/DELETE_WIDGET",t.DELETE_WIDGET_SUCCESS="davinci/Widget/DELETE_WIDGET_SUCCESS",t.DELETE_WIDGET_FAILURE="davinci/Widget/DELETE_WIDGET_FAILURE",t.CLEAR_CURRENT_WIDGET="davinci/Widget/CLEAR_CURRENT_WIDGET"},"./app/containers/Widget/index.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{onLoadWidgets:function(t){return e(R.loadWidgets(t))},onLoadBizlogics:function(t,n){return e(N.loadBizlogics(t,n))},onDeleteWidget:function(t){return function(){return e(R.deleteWidget(t))}},onAddWidget:function(t,n){return e(R.addWidget(t,n))},onCheckUniqueName:function(t,n,r,o){return e(z.checkNameUniqueAction(t,n,r,o))}}}var s=function(){function e(e,t){for(var n=0;n0?[l.createElement("span",{key:t,className:Q.highlight},n[0]),e]:e}))}):null}).filter(function(e){return!!e})})},n.handleTableChange=function(e,t,r){n.setState({tableSortedInfo:r})},n.state={workbenchType:"",currentWidget:null,workbenchVisible:!1,copyWidgetVisible:!1,copyQueryInfo:null,filteredWidgets:null,filteredWidgetsName:null,filteredWidgetsType:void 0,filteredWidgetsTypeId:"",pageSize:24,currentPage:1,screenWidth:0,tableWidget:[],nameFilterValue:"",nameFilterDropdownVisible:!1,tableSortedInfo:{}},n}return a(t,e),s(t,[{key:"componentWillMount",value:function(){var e=this.props,t=e.onLoadWidgets,n=e.onLoadBizlogics,r=e.params;t(r.pid),n(r.pid),this.setState({screenWidth:document.documentElement.clientWidth})}},{key:"componentWillReceiveProps",value:function(e){var t=this;window.onresize=function(){return t.setState({screenWidth:document.documentElement.clientWidth})},e.widgets&&this.setState({tableWidget:e.widgets.map(function(e){return e.key=e.id,e})})}},{key:"render",value:function(){var e=this,t=this.props,n=t.params,r=(t.widgets,t.onDeleteWidget),o=t.onCheckUniqueName,a=t.loading,i=t.currentProject,s=this.state,c=s.workbenchType,u=s.currentWidget,d=s.copyWidgetVisible,p=(s.filteredWidgets,s.currentPage,s.pageSize,s.filteredWidgetsTypeId),f=(s.filteredWidgetsType,s.screenWidth),h=s.tableWidget,m=s.nameFilterValue,g=s.nameFilterDropdownVisible,b=s.tableSortedInfo,v=Y.default(i,"widget",!1)(k),y=Y.default(i,"widget",!0)(k),T=l.createElement(C,{title:"删除"},l.createElement(y,{icon:"delete",shape:"circle"})),D=[{title:"名称",dataIndex:"name",key:"name",filterDropdown:l.createElement(w.default,{placeholder:"name",value:m,onChange:this.onSearchInputChange,onSearch:this.onSearch}),filterDropdownVisible:g,onFilterDropdownVisibleChange:function(t){return e.setState({nameFilterDropdownVisible:t})},sorter:function(e,t){return e.name>t.name?-1:1},sortOrder:"name"===b.columnKey&&b.order},{title:"描述",dataIndex:"description",key:"description"},{title:"操作",key:"action",width:135,className:""+(W.initializePermission(i,"widgetPermission")?Q.textAlignCenter:Q.hide),render:function(t,n){return l.createElement("span",{className:"ant-table-action-column"},l.createElement(C,{title:"修改"},l.createElement(v,{icon:"edit",shape:"circle",type:"ghost",onClick:e.toWorkbench(n.id)})),l.createElement(C,{title:"复制"},l.createElement(y,{icon:"copy",shape:"circle",onClick:e.onCopy("copy",n)})),l.createElement(O,{title:"确定删除?",placement:"bottom",onConfirm:r(n.id)},T))}}],R={simple:f<768||768===f,defaultPageSize:20,showSizeChanger:!0};I.default.map(function(e){return l.createElement(P.Option,{key:e.id,value:""+e.id},e.title,""+e.id!==p?l.createElement("i",{className:"iconfont "+H.iconMapping[e.name]+" "+G.chartSelectOption}):"")});return l.createElement(A.default,null,q,l.createElement(A.default.Title,null,l.createElement(j,null,l.createElement(E,{xl:18,lg:18,md:16,sm:12,xs:24},l.createElement(L,{className:Q.breadcrumb},K)))),l.createElement(A.default.Body,null,l.createElement(x.default,null,l.createElement(x.default.Header,null,X,l.createElement(x.default.Tools,null,l.createElement(C,{placement:"bottom",title:"新增"},l.createElement(y,{size:"large",type:"primary",icon:"plus",onClick:this.toWorkbench("add")})))),l.createElement(x.default.Body,null,l.createElement(j,null,l.createElement(E,{span:24},l.createElement(S,{dataSource:h,columns:D,pagination:R,loading:a,onChange:this.handleTableChange,bordered:!0})))))),l.createElement(M,{title:"复制 Widget",okText:"保存",wrapClassName:"ant-modal-small",visible:d,onCancel:this.hideForm,afterClose:this.resetModal,footer:[l.createElement(k,{key:"cancel",size:"large",type:"ghost",onClick:this.hideForm},"取消"),l.createElement(k,{key:"submit",size:"large",type:"primary",onClick:this.onModalOk},"确认")]},l.createElement(_.default,{type:c,projectId:n.pid,widget:u,onCheckUniqueName:o,ref:function(t){e.copyWidgetForm=t}})))}}]),t}(l.Component);t.Widget=J;var Z=d.createStructuredSelector({widgets:B.makeSelectWidgets(),bizlogics:F.makeSelectBizlogics(),loginUser:U.makeSelectLoginUser(),loading:B.makeSelectLoading(),currentProject:V.makeSelectCurrentProject()});t.mapDispatchToProps=i;var $=u.connect(Z,i),ee=h.default({key:"widget",reducer:g.default}),te=m.default({key:"widget",saga:b.default}),ne=h.default({key:"bizlogic",reducer:v.default}),re=m.default({key:"bizlogic",saga:y.default});t.default=f.compose(ee,ne,re,te,$)(J)},"./app/containers/Widget/reducer.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l,t=arguments[1],n=t.type,r=t.payload,s=e.get("widgets");switch(n){case o.LOAD_WIDGETS:return e.set("loading",!0).set("widgets",null);case o.LOAD_WIDGETS_SUCCESS:return e.set("loading",!1).set("widgets",r.widgets);case o.LOAD_WIDGETS_FAILURE:return e.set("loading",!1);case o.ADD_WIDGET:return e.set("loading",!0);case o.ADD_WIDGET_SUCCESS:return s?(s.push(r.result),e.set("loading",!1).set("widgets",s.slice())):e.set("loading",!1).set("widgets",[r.result]);case o.ADD_WIDGET_FAILURE:return e.set("loading",!1);case o.DELETE_WIDGET:return e.set("loading",!0);case o.DELETE_WIDGET_SUCCESS:return e.set("widgets",s.filter(function(e){return e.id!==r.id})).set("loading",!1);case o.DELETE_WIDGET_FAILURE:return e.set("loading",!1);case o.LOAD_WIDGET_DETAIL:return e.set("loading",!0).set("currentWidget",null);case o.LOAD_WIDGET_DETAIL_SUCCESS:return e.set("loading",!1).set("currentWidget",r.detail);case o.LOAD_WIDGET_DETAIL_FAILURE:return e.set("loading",!1);case o.EDIT_WIDGET:return e.set("loading",!0);case o.EDIT_WIDGET_SUCCESS:case o.EDIT_WIDGET_FAILURE:return e.set("loading",!1);case i.LOAD_DATA:return e.set("dataLoading",!0);case i.LOAD_DATA_SUCCESS:case i.LOAD_DATA_FAILURE:return e.set("dataLoading",!1);case i.CLEAR_BIZDATAS:return e.set("bizdatas",!1);case a.LOAD_DASHBOARD_DETAIL_SUCCESS:return e.set("widgets",r.widgets);case i.LOAD_DISTINCT_VALUE:return e.set("columnValueLoading",!0).set("distinctColumnValues",null);case i.LOAD_DISTINCT_VALUE_SUCCESS:return e.set("columnValueLoading",!1).set("distinctColumnValues",r.data[r.fieldName].slice(0,100));case i.LOAD_DISTINCT_VALUE_FAILURE:return e.set("columnValueLoading",!1);case o.CLEAR_CURRENT_WIDGET:return e.set("currentWidget",null);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Widget/constants.ts"),a=n("./app/containers/Dashboard/constants.ts"),i=n("./app/containers/Bizlogic/constants.ts"),s=n("./node_modules/immutable/dist/immutable.js"),l=s.fromJS({widgets:null,currentWidget:null,loading:!1,dataLoading:!1,columnValueLoading:!1,distinctColumnValues:null});t.default=r},"./app/containers/Widget/sagas.ts":function(e,t,n){"use strict";function r(e){var t,n;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=e.payload.projectId,r.prev=1,r.next=4,g.call(y.default,_.default.widget+"?projectId="+t);case 4:return n=r.sent,r.next=7,g.put(v.widgetsLoaded(n.payload));case 7:r.next=14;break;case 9:return r.prev=9,r.t0=r.catch(1),r.next=13,g.put(v.widgetsLoadedFail());case 13:A.errorHandler(r.t0);case 14:case"end":return r.stop()}},c,this,[[1,9]])}function o(e){var t,n=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,g.call(y.default,{method:"post",url:_.default.widget,data:n.widget});case 3:return t=e.sent,e.next=6,g.put(v.widgetAdded(t.payload));case 6:n.resolve(),e.next=14;break;case 9:return e.prev=9,e.t0=e.catch(0),e.next=13,g.put(v.addWidgetFail());case 13:A.errorHandler(e.t0);case 14:case"end":return e.stop()}},u,this,[[0,9]])}function a(e){var t=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,g.call(y.default,{method:"delete",url:_.default.widget+"/"+t.id});case 3:return e.next=5,g.put(v.widgetDeleted(t.id));case 5:e.next=12;break;case 7:return e.prev=7,e.t0=e.catch(0),e.next=11,g.put(v.deleteWidgetFail());case 11:A.errorHandler(e.t0);case 12:case"end":return e.stop()}},d,this,[[0,7]])}function i(e){var t,n;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=e.payload,r.prev=1,r.next=4,g.call(y.default,_.default.widget+"/"+t.id);case 4:return n=r.sent,r.next=7,g.put(v.widgetDetailLoaded(n.payload));case 7:r.next=14;break;case 9:return r.prev=9,r.t0=r.catch(1),r.next=13,g.put(v.loadWidgetDetailFail(r.t0));case 13:A.errorHandler(r.t0);case 14:case"end":return r.stop()}},p,this,[[1,9]])}function s(e){var t=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,g.call(y.default,{method:"put",url:_.default.widget+"/"+t.widget.id,data:t.widget});case 3:return e.next=5,g.put(v.widgetEdited());case 5:t.resolve(),e.next=13;break;case 8:return e.prev=8,e.t0=e.catch(0),e.next=12,g.put(v.editWidgetFail());case 12:A.errorHandler(e.t0);case 13:case"end":return e.stop()}},f,this,[[0,8]])}function l(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[m.takeLatest(b.LOAD_WIDGETS,r),m.takeEvery(b.ADD_WIDGET,o),m.takeEvery(b.DELETE_WIDGET,a),m.takeLatest(b.LOAD_WIDGET_DETAIL,i),m.takeEvery(b.EDIT_WIDGET,s)];case 2:case"end":return e.stop()}},h,this)}var c=regeneratorRuntime.mark(r),u=regeneratorRuntime.mark(o),d=regeneratorRuntime.mark(a),p=regeneratorRuntime.mark(i),f=regeneratorRuntime.mark(s),h=regeneratorRuntime.mark(l);Object.defineProperty(t,"__esModule",{value:!0});var m=n("./node_modules/redux-saga/es/index.js"),g=n("./node_modules/redux-saga/es/effects.js"),b=n("./app/containers/Widget/constants.ts"),v=n("./app/containers/Widget/actions.ts"),y=n("./app/utils/request.ts"),_=n("./app/utils/api.js"),A=n("./app/utils/util.ts");t.getWidgets=r,t.addWidget=o,t.deleteWidget=a,t.getWidgetDetail=i,t.editWidget=s,t.default=l},"./app/containers/Widget/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("widget")};t.selectWidget=o;var a=function(){return r.createSelector(o,function(e){return e.get("widgets")})};t.makeSelectWidgets=a;var i=function(){return r.createSelector(o,function(e){return e.get("currentWidget")})};t.makeSelectCurrentWidget=i;var s=function(){return r.createSelector(o,function(e){return e.get("loading")})};t.makeSelectLoading=s;var l=function(){return r.createSelector(o,function(e){return e.get("dataLoading")})};t.makeSelectDataLoading=l;var c=function(){return r.createSelector(o,function(e){return e.get("distinctColumnValues")})};t.makeSelectDistinctColumnValues=c;var u=function(){return r.createSelector(o,function(e){return e.get("columnValueLoading")})};t.makeSelectColumnValueLoading=u},"./app/globalConfig.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.envName={production:"production",dev:"dev"},t.env=t.envName.production,t.default={dev:{host:"/api/v3",shareHost:"/share.html"},production:{host:"/api/v3",shareHost:"/share.html"}}},"./app/globalConstants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/assets/json/echartsThemes/default.project.json");t.DEFAULT_ECHARTS_THEME=r.theme,t.DEFAULT_PRIMARY_COLOR="#1B98E0",t.DEFAULT_SECONDARY_COLOR="#223151",t.GRID_BREAKPOINTS={lg:1200,md:996,sm:768,xs:480,xxs:0},t.GRID_COLS={lg:12,md:12,sm:12,xs:2,xxs:2},t.GRID_ITEM_MARGIN=16,t.GRID_ROW_HEIGHT=30,t.TABLE_HEADER_HEIGHT=50,t.TABLE_PAGINATION_HEIGHT=61,t.COLUMN_WIDTH=150,t.DASHBOARD_ITEM_FILTER_HEIGHT=40,t.DEFAULT_TABLE_PAGE=1,t.DEFAULT_TABLE_PAGE_SIZE=20,t.PIVOT_CELL_PADDING=4,t.PIVOT_CELL_BORDER=1,t.PIVOT_LINE_HEIGHT=18,t.PIVOT_MAX_CONTENT_WIDTH=200,t.PIVOT_BORDER=1,t.PIVOT_CHART_ELEMENT_MIN_WIDTH=24,t.PIVOT_CHART_ELEMENT_MAX_WIDTH=72,t.PIVOT_CHART_METRIC_AXIS_MIN_SIZE=80,t.PIVOT_CHART_SPLIT_SIZE=40,t.PIVOT_CHART_POINT_LIMIT=100,t.PIVOT_XAXIS_SIZE=50,t.PIVOT_YAXIS_SIZE=64,t.PIVOT_TITLE_SIZE=27,t.PIVOT_XAXIS_ROTATE_LIMIT=30,t.PIVOT_XAXIS_TICK_SIZE=12,t.PIVOT_LEGEND_ITEM_PADDING=32,t.PIVOT_LEGEND_PADDING=16,t.PIVOT_DEFAULT_SCATTER_SIZE=10,t.PIVOT_DEFAULT_SCATTER_SIZE_TIMES=4,t.PIVOT_CANVAS_SIZE_LIMIT=3e3,t.PIVOT_CANVAS_AXIS_SIZE_LIMIT=8e3,t.PIVOT_CANVAS_POLAR_SIZE_LIMIT=8e3,t.PIVOT_DEFAULT_AXIS_LINE_COLOR="#D9D9D9",t.PIVOT_DEFAULT_FONT_COLOR="#666",t.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR="#f7f7f7",t.PIVOT_CHART_FONT_FAMILIES=[{name:"苹方",value:"PingFang SC"},{name:"微软雅黑",value:"Microsoft YaHei"},{name:"宋体",value:"SimSun"},{name:"黑体",value:"SimHei"},{name:"Helvetica Neue",value:'"Helvetica Neue"'},{name:"Helvetica",value:"Helvetica"},{name:"Arial",value:"Arial"},{name:"sans-serif",value:"sans-serif"}],t.PIVOT_CHART_LINE_STYLES=[{name:"实线",value:"solid"},{name:"虚线",value:"dashed"},{name:"点",value:"dotted"}],t.PIVOT_CHART_FONT_SIZES=[10,12,13,14,15,16,18,20,24,28,32,36,40,48,56,64],t.SQL_STRING_TYPES=["CHAR","VARCHAR","TINYTEXT","TEXT","MEDIUMTEXT","LONGTEXT","JSON","LINESTRING","MULTILINESTRING","TINYBLOB","MEDIUMBLOB","BLOB","LONGBLOB","BINARY","VARBINARY","ENUM","SET"],t.SQL_NUMBER_TYPES=["TINYINT","SMALLINT","MEDIUMINT","INT","INTEGER","BIGINT","FLOAT","DOUBLE","DOUBLE PRECISION","REAL","DECIMAL","BIT","SERIAL","BOOL","BOOLEAN","DEC","FIXED","NUMERIC"],t.SQL_DATE_TYPES=["DATE","DATETIME","TIMESTAMP","TIME","YEAR"],t.DEFAULT_SPLITER="@davinci@",t.KEY_COLUMN="davinciUniqueId",t.ECHARTS_RENDERER="echarts",t.DEFAULT_FONT_WEIGHT="normal",t.DEFAULT_FONT_SIZE="12px",t.DEFAULT_FONT_FAMILY='"Helvetica Neue For Number", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif',t.DEFAULT_DATE_FORMAT="YYYY-MM-DD",t.DEFAULT_DATETIME_FORMAT="YYYY-MM-DD HH:mm:ss"},"./app/i18n.js":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"appLocales",function(){return h}),n.d(t,"formatTranslationMessages",function(){return m}),n.d(t,"translationMessages",function(){return g});var o=n("./node_modules/react-intl/lib/index.es.js"),a=n("./node_modules/react-intl/locale-data/en.js"),i=n.n(a),s=n("./node_modules/react-intl/locale-data/de.js"),l=n.n(s),c=n("./app/containers/App/constants.ts"),u=(n.n(c),n("./app/translations/en.json")),d=n.n(u),p=n("./app/translations/de.json"),f=n.n(p);Object(o.addLocaleData)(i.a),Object(o.addLocaleData)(l.a);var h=["en","de"],m=function e(t,n){var o=t!==c.DEFAULT_LOCALE?e(c.DEFAULT_LOCALE,d.a):{};return Object.keys(n).reduce(function(e,a){var i=n[a]||t===c.DEFAULT_LOCALE?n[a]:o[a];return Object.assign(e,r({},a,i))},{})},g={en:m("en",d.a),de:m("de",f.a)}},"./app/reducers.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p,t=arguments[1];switch(t.type){case s.LOCATION_CHANGE:return e.merge({locationBeforeTransitions:t.payload});default:return e}}function o(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return i.combineReducers(Object.assign({route:r,language:l.default,report:c.default,bizlogic:u.default,widget:d.default},e))}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/immutable/dist/immutable.js"),i=n("./node_modules/redux-immutable/dist/index.js"),s=n("./node_modules/react-router-redux/lib/index.js"),l=n("./app/containers/LanguageProvider/reducer.ts"),c=n("./app/containers/Report/reducer.ts"),u=n("./app/containers/Bizlogic/reducer.ts"),d=n("./app/containers/Widget/reducer.ts"),p=a.fromJS({locationBeforeTransitions:null});t.default=o},"./app/routes.ts":function(e,t,n){"use strict";function r(e){return[{component:g.default,childRoutes:[{path:"/login",component:b.default},{path:"/register",name:"register",component:f.default},{path:"/joinOrganization",name:"joinOrganization",component:m.default}]},{path:"/activate",name:"activate",component:h.default},{component:v.default,childRoutes:[{path:"/projects",name:"projects",component:w.default},{path:"/project/:pid",name:"project",component:o.default,indexRoute:{onEnter:function(e,t){t("/project/"+e.params.pid+"/vizs")}},childRoutes:[{path:"/project/:pid/vizs",name:"vizs",components:u.default},{path:"/project/:pid/widgets",name:"widgets",component:l.default},{path:"/project/:pid/bizlogics",name:"bizlogics",component:i.default},{path:"/project/:pid/sources",name:"sources",component:a.default},{path:"/project/:pid/schedule",name:"schedule",component:y.default},{path:"/project/:pid/portal/:portalId/portalName/:portalName",name:"dashboard",component:d.default,childRoutes:[{path:"/project/:pid/portal/:portalId/portalName/:portalName/dashboard/:dashboardId",name:"grid",component:p.default}]}]},{path:"/account",name:"account",indexRoute:{onEnter:function(e,t){t("/account/profile")}},component:x.default,childRoutes:[{path:"/account/profile",name:"profile",component:j.default},{path:"/account/profile/:uid",name:"userProfile",component:M.default},{path:"/account/resetPassword",name:"resetPassword",component:E.default},{path:"/account/organizations",name:"organizations",component:S.default},{path:"/account/organization/:organizationId",name:"organization",component:k.default},{path:"/account/teams",name:"teams",component:C.default},{path:"/account/team/:teamId",name:"team",component:T.default}]},{path:"/project/:pid/bizlogic",name:"bizlogic",component:s.default},{path:"/project/:pid/bizlogic/:bid",name:"bizlogic",component:s.default},{path:"/project/:pid/display/:displayId",name:"display",component:_.default},{path:"/project/:pid/display/preview/:displayId",name:"displayPreview",component:A.default},{path:"/project/:pid/widget/:wid",name:"workbench",component:c.default}]},{path:"/noAuthorization",name:"noAuthorization",component:O.default},{path:"*",name:"notfound",getComponent:function(e,t){Promise.resolve().then(function(){return n("./app/containers/NotFoundPage/index.js")}).then(D(t)).catch(L)}}]}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Report/index.tsx"),a=n("./app/containers/Source/index.tsx"),i=n("./app/containers/Bizlogic/index.tsx"),s=n("./app/containers/Bizlogic/Bizlogic.tsx"),l=n("./app/containers/Widget/index.tsx"),c=n("./app/containers/Widget/components/Workbench/index.tsx"),u=n("./app/containers/Viz/index.tsx"),d=n("./app/containers/Dashboard/index.tsx"),p=n("./app/containers/Dashboard/Grid.tsx"),f=n("./app/containers/Register/index.tsx"),h=n("./app/containers/Register/Activate.tsx"),m=n("./app/containers/Register/JoinOrganization.tsx"),g=n("./app/containers/Background/index.tsx"),b=n("./app/containers/Login/index.tsx"),v=n("./app/containers/Main/index.tsx"),y=n("./app/containers/Schedule/index.tsx"),_=n("./app/containers/Display/Editor.tsx"),A=n("./app/containers/Display/Preview.tsx"),x=n("./app/containers/Account/index.tsx"),w=n("./app/containers/Projects/index.tsx"),j=n("./app/containers/Profile/index.tsx"),E=n("./app/containers/ResetPassword/index.tsx"),S=n("./app/containers/Organizations/index.tsx"),k=n("./app/containers/Organizations/Organization.tsx"),C=n("./app/containers/Teams/index.tsx"),T=n("./app/containers/Teams/Team.tsx"),M=n("./app/containers/Profile/UserProfile.tsx"),O=n("./app/containers/NoAuthorization/index.js"),L=function(e){console.error("Dynamic page loading failed",e)},D=function(e){return function(t){e(null,t.default)}};t.default=r},"./app/sagas.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=[]},"./app/store.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1],n=[u,i.routerMiddleware(t)],r=o.compose,s=o.createStore(l.default(),a.fromJS(e),r(o.applyMiddleware.apply(o,n)));return s.runSaga=u.run,c.default.map(s.runSaga),s.injectedReducers={},s.injectedSagas={},s}"function"==typeof Symbol&&Symbol.iterator;Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/redux/es/index.js"),a=n("./node_modules/immutable/dist/immutable.js"),i=n("./node_modules/react-router-redux/lib/index.js"),s=n("./node_modules/redux-saga/es/index.js"),l=n("./app/reducers.ts"),c=n("./app/sagas.ts"),u=s.default();t.default=r},"./app/translations/de.json":function(e,t){e.exports={}},"./app/translations/en.json":function(e,t){e.exports={}},"./app/utils/api.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/globalConfig.ts"),o=n.n(r),a=o.a[r.env].host;t.default={login:a+"/login",group:a+"/groups",user:a+"/users",changepwd:a+"/changepwd",source:a+"/sources",bizlogic:a+"/views",widget:a+"/widgets",display:a+"/displays",share:a+"/share",checkName:a+"/check",projectsCheckName:a+"/check/",uploads:a+"/uploads",schedule:a+"/cronjobs",signup:a+"/users",organizations:a+"/organizations",checkNameUnique:a+"/check",projects:a+"/projects",teams:a+"/teams",portal:a+"/dashboardPortals",star:a+"/star"}},"./app/utils/asyncAdapter.js":function(e,t,n){"use strict";function r(e){return e&&l.apiConfig[e]?l.apiConfig[e].env:s.env}function o(e,t){switch(r(t)){case"production":return e.payload||[];default:return e}}function a(e,t){switch(r(t)){case"production":return e.payload;default:return e}}function i(e,t){switch(r(t)){case"production":return{payload:[e]};default:return e}}Object.defineProperty(t,"__esModule",{value:!0}),t.readListAdapter=o,t.readObjectAdapter=a,t.writeAdapter=i;var s=n("./app/globalConfig.ts"),l=(n.n(s),n("./app/utils/api.js"))},"./app/utils/checkLogin.ts":function(e,t,n){"use strict";function r(){if(localStorage.getItem("TOKEN")){var e=localStorage.getItem("TOKEN_EXPIRE"),t=(new Date).getTime();return Number(e)>t||(localStorage.removeItem("TOKEN"),localStorage.removeItem("TOKEN_EXPIRE"),!1)}return!1}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},"./app/utils/checkStore.ts":function(e,t,n){"use strict";function r(e){s(o(e,{dispatch:a,subscribe:a,getState:a,replaceReducer:a,runSaga:a,injectedReducers:i,injectedSagas:i}),"(app/utils...) injectors: Expected a valid redux store")}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/lodash/conformsTo.js"),a=n("./node_modules/lodash/isFunction.js"),i=n("./node_modules/lodash/isObject.js"),s=n("./node_modules/invariant/browser.js");t.default=r},"./app/utils/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RESTART_ON_REMOUNT="@@saga-injector/restart-on-remount",t.DAEMON="@@saga-injector/daemon",t.ONCE_TILL_UNMOUNT="@@saga-injector/once-till-unmount"},"./app/utils/injectReducer.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n2?n-2:0),o=2;o1&&void 0!==arguments[1]?arguments[1]:[];return function(n,r){for(var a=arguments.length,s=Array(a>2?a-2:0),l=2;l0?Object.keys(e[0]):[],types:[],pageSize:e.limit,pageIndex:Math.floor(e.offset/e.limit)+1,total:e.totalCount}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},"./app/utils/sagaInjectors.ts":function(e,t,n){"use strict";function r(e,t){return function(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments[2];t||d.default(e);var a=Object.assign({},r,{mode:r.mode||p.RESTART_ON_REMOUNT}),i=a.saga,s=a.mode;h(n),m(a);var l=Reflect.has(e.injectedSagas,n);(!l||l&&s!==p.DAEMON&&s!==p.ONCE_TILL_UNMOUNT)&&(e.injectedSagas[n]=Object.assign({},a,{task:e.runSaga(i,o)}))}}function o(e,t){return function(n){if(t||d.default(e),h(n),Reflect.has(e.injectedSagas,n)){var r=e.injectedSagas[n];r.mode!==p.DAEMON&&(r.task.cancel(),e.injectedSagas[n]="done")}}}function a(e){return d.default(e),{injectSaga:r(e,!0),ejectSaga:o(e,!0)}}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/lodash/isEmpty.js"),s=n("./node_modules/lodash/isFunction.js"),l=n("./node_modules/lodash/isString.js"),c=n("./node_modules/invariant/browser.js"),u=n("./node_modules/lodash/conformsTo.js"),d=n("./app/utils/checkStore.ts"),p=n("./app/utils/constants.ts"),f=[p.RESTART_ON_REMOUNT,p.DAEMON,p.ONCE_TILL_UNMOUNT],h=function(e){return c(l(e)&&!i(e),"(app/utils...) injectSaga: Expected `key` to be a non empty string")},m=function(e){c(u(e,{saga:s,mode:function(e){return l(e)&&f.includes(e)}}),"(app/utils...) injectSaga: Expected a valid saga descriptor")};t.injectSagaFactory=r,t.ejectSagaFactory=o,t.default=a},"./app/utils/util.ts":function(e,t,n){"use strict";function r(e,t){var n=Math.max((""+e).indexOf(".")>=0?(""+e).substr((""+e).indexOf(".")+1).length:0,(""+t).indexOf(".")>=0?(""+t).substr((""+t).indexOf(".")+1).length:0);if(n){var r=Math.pow(10,n);return(Math.round(e*r)+Math.round(t*r))/r}return e+t}function o(e){if(e.response)switch(e.response.status){case 403:l.error("未登录或会话过期,请重新登录",1),s.removeToken(),localStorage.removeItem("TOKEN");var t=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search+"#login";location.replace(t);case 401:l.error("您没有权限访问此数据",2);break;default:l.error(e.response.data.header.msg,3)}else l.error(e,3)}function a(e,t){var n=new FileReader;n.addEventListener("load",function(){return t(n.result)}),n.readAsDataURL(e)}function i(e){var t=[];return e.length&&e.forEach(function(e){var n=[];e.columns&&e.columns.length&&e.columns.forEach(function(e){n.push({title:e.name,key:e.name})}),t.push({title:e.tableName,key:e.tableName,children:n})}),t}Object.defineProperty(t,"__esModule",{value:!0});var s=n("./app/utils/request.ts"),l=n("./node_modules/antd/lib/message/index.js");t.uuid=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:62,n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),r=[],o=void 0;if(e)for(o=0;o0&&void 0!==arguments[0]?arguments[0]:{},t=(0,w.default)((0,a.default)({fieldNameProp:"id"},e,{fieldMetaProp:P.FIELD_META_PROP}));return function(n){return t((0,T.default)({propTypes:{form:y.default.object.isRequired},childContextTypes:{form:y.default.object.isRequired},getChildContext:function(){return{form:this.props.form}},componentWillMount:function(){this.__getFieldProps=this.props.form.getFieldProps},deprecatedGetFieldProps:function(e,t){return(0,O.default)(!1,"`getFieldProps` is not recommended, please use `getFieldDecorator` instead, see: https://u.ant.design/get-field-decorator"),this.__getFieldProps(e,t)},render:function(){this.props.form.getFieldProps=this.deprecatedGetFieldProps;var t={};return e.withRef?t.ref="formWrappedComponent":this.props.wrappedComponentRef&&(t.ref=this.props.wrappedComponentRef),b.default.createElement(n,(0,a.default)({},this.props,t))}}))}},e.exports=t.default},"./node_modules/antd/lib/Form/FormItem.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/extends.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/react-dom/index.js"),y=n("./node_modules/prop-types/index.js"),_=r(y),A=n("./node_modules/classnames/index.js"),x=r(A),w=n("./node_modules/rc-util/lib/PureRenderMixin.js"),j=r(w),E=n("./node_modules/antd/lib/grid/row.js"),S=r(E),k=n("./node_modules/antd/lib/grid/col.js"),C=r(k),T=n("./node_modules/antd/lib/Form/constants.js"),M=n("./node_modules/antd/lib/_util/warning.js"),O=r(M),L=function(e){function t(){(0,c.default)(this,t);var e=(0,f.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.onLabelClick=function(){var t=e.props.id||e.getId();if(t){if(1!==document.querySelectorAll('[id="'+t+'"]').length){var n=(0,v.findDOMNode)(e).querySelector('[id="'+t+'"]');n&&n.focus&&n.focus()}}},e}return(0,m.default)(t,e),(0,d.default)(t,[{key:"componentDidMount",value:function(){(0,O.default)(this.getControls(this.props.children,!0).length<=1,"`Form.Item` cannot generate `validateStatus` and `help` automatically, while there are more than one `getFieldDecorator` in it.")}},{key:"shouldComponentUpdate",value:function(){for(var e=arguments.length,t=Array(e),n=0;n0));a++){var i=o[a];(!i.type||i.type!==t&&"FormItem"!==i.type.displayName)&&i.props&&(T.FIELD_META_PROP in i.props?r.push(i):i.props.children&&(r=r.concat(this.getControls(i.props.children,n))))}return r}},{key:"getOnlyControl",value:function(){var e=this.getControls(this.props.children,!1)[0];return void 0!==e?e:null}},{key:"getChildProp",value:function(e){var t=this.getOnlyControl();return t&&t.props&&t.props[e]}},{key:"getId",value:function(){return this.getChildProp("id")}},{key:"getMeta",value:function(){return this.getChildProp(T.FIELD_META_PROP)}},{key:"renderHelp",value:function(){var e=this.props.prefixCls,t=this.getHelpMsg();return t?b.default.createElement("div",{className:e+"-explain",key:"help"},t):null}},{key:"renderExtra",value:function(){var e=this.props,t=e.prefixCls,n=e.extra;return n?b.default.createElement("div",{className:t+"-extra"},n):null}},{key:"getValidateStatus",value:function(){var e=this.context.form,t=e.isFieldValidating,n=e.getFieldError,r=e.getFieldValue,o=this.getId();if(!o)return"";if(t(o))return"validating";if(n(o))return"error";var a=r(o);return void 0!==a&&null!==a&&""!==a?"success":""}},{key:"renderValidateWrapper",value:function(e,t,n){var r="",o=this.context.form,a=this.props,i=void 0===a.validateStatus&&o?this.getValidateStatus():a.validateStatus;return i&&(r=(0,x.default)({"has-feedback":a.hasFeedback||"validating"===i,"has-success":"success"===i,"has-warning":"warning"===i,"has-error":"error"===i,"is-validating":"validating"===i})),b.default.createElement("div",{className:this.props.prefixCls+"-item-control "+r},e,t,n)}},{key:"renderWrapper",value:function(e){var t=this.props,n=t.prefixCls,r=t.wrapperCol,o=(0,x.default)(n+"-item-control-wrapper",r&&r.className);return b.default.createElement(C.default,(0,s.default)({},r,{className:o,key:"wrapper"}),e)}},{key:"isRequired",value:function(){var e=this.props.required;if(void 0!==e)return e;if(this.context.form){return((this.getMeta()||{}).validate||[]).filter(function(e){return!!e.rules}).some(function(e){return e.rules.some(function(e){return e.required})})}return!1}},{key:"renderLabel",value:function(){var e=this.props,t=e.prefixCls,n=e.label,r=e.labelCol,o=e.colon,i=e.id,l=this.context,c=this.isRequired(),u=(0,x.default)(t+"-item-label",r&&r.className),d=(0,x.default)((0,a.default)({},t+"-item-required",c)),p=n;return o&&!l.vertical&&"string"==typeof n&&""!==n.trim()&&(p=n.replace(/[:|:]\s*$/,"")),n?b.default.createElement(C.default,(0,s.default)({},r,{className:u,key:"label"}),b.default.createElement("label",{htmlFor:i||this.getId(),className:d,title:"string"==typeof n?n:"",onClick:this.onLabelClick},p)):null}},{key:"renderChildren",value:function(){var e=this.props,t=b.default.Children.map(e.children,function(e){return e&&"function"==typeof e.type&&!e.props.size?b.default.cloneElement(e,{size:"large"}):e});return[this.renderLabel(),this.renderWrapper(this.renderValidateWrapper(t,this.renderHelp(),this.renderExtra()))]}},{key:"renderFormItem",value:function(e){var t,n=this.props,r=n.prefixCls,o=n.style,i=(t={},(0,a.default)(t,r+"-item",!0),(0,a.default)(t,r+"-item-with-help",!!this.getHelpMsg()),(0,a.default)(t,r+"-item-no-colon",!n.colon),(0,a.default)(t,""+n.className,!!n.className),t);return b.default.createElement(S.default,{className:(0,x.default)(i),style:o},e)}},{key:"render",value:function(){var e=this.renderChildren();return this.renderFormItem(e)}}]),t}(b.default.Component);t.default=L,L.defaultProps={hasFeedback:!1,prefixCls:"ant-form",colon:!0},L.propTypes={prefixCls:_.default.string,label:_.default.oneOfType([_.default.string,_.default.node]),labelCol:_.default.object,help:_.default.oneOfType([_.default.node,_.default.bool]),validateStatus:_.default.oneOf(["","success","warning","error","validating"]),hasFeedback:_.default.bool,wrapperCol:_.default.object,className:_.default.string,id:_.default.string,children:_.default.node,colon:_.default.bool},L.contextTypes={form:_.default.object,vertical:_.default.bool},e.exports=t.default},"./node_modules/antd/lib/Form/constants.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.FIELD_META_PROP="data-__meta"},"./node_modules/antd/lib/Form/index.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/antd/lib/Form/Form.js"),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=o.default,e.exports=t.default},"./node_modules/antd/lib/_util/getLocale.js":function(e,t,n){"use strict";function r(e,t,n,r){var o={};if(t&&t.antLocale&&t.antLocale[n])o=t.antLocale[n];else{var a=r();o=a.default||a}var s=(0,i.default)({},o,e.locale);return s.lang=(0,i.default)({},o.lang,e.locale.lang),s}function o(e){var t=e.antLocale&&e.antLocale.locale;return e.antLocale&&e.antLocale.exist&&!t?"zh-cn":t}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/extends.js"),i=function(e){return e&&e.__esModule?e:{default:e}}(a);t.getComponentLocale=r,t.getLocaleCode=o},"./node_modules/antd/lib/_util/getRequestAnimationFrame.js":function(e,t,n){"use strict";function r(){var e=0;return function(t){var n=(new Date).getTime(),r=Math.max(0,16-(n-e)),o=window.setTimeout(function(){t(n+r)},r);return e=n+r,o}}function o(){if("undefined"==typeof window)return function(){};if(window.requestAnimationFrame)return window.requestAnimationFrame.bind(window);var e=i.filter(function(e){return e+"RequestAnimationFrame"in window})[0];return e?window[e+"RequestAnimationFrame"]:r()}function a(e){if("undefined"==typeof window)return null;if(window.cancelAnimationFrame)return window.cancelAnimationFrame(e);var t=i.filter(function(e){return e+"CancelAnimationFrame"in window||e+"CancelRequestAnimationFrame"in window})[0];return t?(window[t+"CancelAnimationFrame"]||window[t+"CancelRequestAnimationFrame"]).call(this,e):clearTimeout(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o,t.cancelRequestAnimationFrame=a;var i=["moz","ms","webkit"]},"./node_modules/antd/lib/_util/isCssAnimationSupported.js":function(e,t,n){"use strict";function r(){if(void 0!==o)return o;var e="Webkit Moz O ms Khtml".split(" "),t=document.createElement("div");if(void 0!==t.style.animationName&&(o=!0),void 0!==o)for(var n=0;n0){var f=[];e=s.map(function(e){e.path=e.path||"";var t=e.path.replace(/^\//,"");return Object.keys(c).forEach(function(e){t=t.replace(":"+e,c[e])}),t&&f.push(t),m.default.createElement(A.default,{separator:n,key:e.breadcrumbName||t},p(e,c,s,f))})}else u&&(e=m.default.Children.map(u,function(e,t){return e?((0,y.default)(e.type&&e.type.__ANT_BREADCRUMB_ITEM,"Breadcrumb only accepts Breadcrumb.Item as it's children"),(0,h.cloneElement)(e,{separator:n,key:t})):e}));return m.default.createElement("div",{className:(0,w.default)(i,r),style:o},e)}}]),t}(m.default.Component);t.default=j,j.defaultProps={prefixCls:"ant-breadcrumb",separator:"/"},j.propTypes={prefixCls:b.default.string,separator:b.default.node,routes:b.default.array,params:b.default.object,linkRender:b.default.func,nameRender:b.default.func},e.exports=t.default},"./node_modules/antd/lib/breadcrumb/BreadcrumbItem.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/inherits.js"),f=r(p),h=n("./node_modules/react/react.js"),m=r(h),g=n("./node_modules/prop-types/index.js"),b=r(g),v=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o-1})}function i(e,t,n){return t.map(function(t,r){var a=t.label,i=a.indexOf(e)>-1?o(a,e,n):a;return 0===r?i:[" / ",i]})}function s(e,t,n){function r(e){return e.label.indexOf(n)>-1}return e.findIndex(r)-t.findIndex(r)}Object.defineProperty(t,"__esModule",{value:!0});var l=n("./node_modules/babel-runtime/helpers/extends.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/defineProperty.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/createClass.js"),m=r(h),g=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),b=r(g),v=n("./node_modules/babel-runtime/helpers/inherits.js"),y=r(v),_=n("./node_modules/react/react.js"),A=r(_),x=n("./node_modules/rc-cascader/lib/index.js"),w=r(x),j=n("./node_modules/array-tree-filter/index.js"),E=r(j),S=n("./node_modules/classnames/index.js"),k=r(S),C=n("./node_modules/omit.js/lib/index.js"),T=r(C),M=n("./node_modules/rc-util/lib/KeyCode.js"),O=r(M),L=n("./node_modules/antd/lib/input/index.js"),D=r(L),P=n("./node_modules/antd/lib/icon/index.js"),I=r(P),R=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o1&&void 0!==arguments[1]?arguments[1]:[];"value"in n.props||n.setState({value:e});var r=n.props.onChange;r&&r(e,t)},n.clearSelection=function(e){e.preventDefault(),e.stopPropagation(),n.state.inputValue?n.setState({inputValue:""}):(n.setValue([]),n.handlePopupVisibleChange(!1))},n.state={value:e.value||e.defaultValue||[],inputValue:"",inputFocused:!1,popupVisible:e.popupVisible,flattenOptions:e.showSearch&&n.flattenTree(e.options,e.changeOnSelect)},n}return(0,y.default)(t,e),(0,m.default)(t,[{key:"componentWillReceiveProps",value:function(e){"value"in e&&this.setState({value:e.value||[]}),"popupVisible"in e&&this.setState({popupVisible:e.popupVisible}),e.showSearch&&this.props.options!==e.options&&this.setState({flattenOptions:this.flattenTree(e.options,e.changeOnSelect)})}},{key:"getLabel",value:function(){var e=this.props,t=e.options,n=e.displayRender,r=void 0===n?N:n,o=this.state.value,a=Array.isArray(o[0])?o[0]:o,i=(0,E.default)(t,function(e,t){return e.value===a[t]});return r(i.map(function(e){return e.label}),i)}},{key:"flattenTree",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],o=[];return e.forEach(function(e){var a=r.concat(e);!t&&e.children&&e.children.length||o.push(a),e.children&&(o=o.concat(n.flattenTree(e.children,t,a)))}),o}},{key:"generateFilteredOptions",value:function(e){var t=this,n=this.props,r=n.showSearch,o=n.notFoundContent,l=r.filter,c=void 0===l?a:l,u=r.render,d=void 0===u?i:u,p=r.sort,f=void 0===p?s:p,h=this.state,m=h.flattenOptions,g=h.inputValue,b=m.filter(function(e){return c(t.state.inputValue,e)}).sort(function(e,t){return f(e,t,g)});return b.length>0?b.map(function(t){return{__IS_FILTERED_OPTION:!0,path:t,label:d(g,t,e),value:t.map(function(e){return e.value}),disabled:t.some(function(e){return e.disabled})}}):[{label:o,value:"ANT_CASCADER_NOT_FOUND",disabled:!0}]}},{key:"render",value:function(){var e,t,n,r=this.props,o=this.state,a=r.prefixCls,i=r.inputPrefixCls,s=r.children,l=r.placeholder,u=r.size,p=r.disabled,f=r.className,h=r.style,m=r.allowClear,g=r.showSearch,b=void 0!==g&&g,v=R(r,["prefixCls","inputPrefixCls","children","placeholder","size","disabled","className","style","allowClear","showSearch"]),y=o.value,_=(0,k.default)((e={},(0,d.default)(e,i+"-lg","large"===u),(0,d.default)(e,i+"-sm","small"===u),e)),x=m&&!p&&y.length>0||o.inputValue?A.default.createElement(I.default,{type:"cross-circle",className:a+"-picker-clear",onClick:this.clearSelection}):null,j=(0,k.default)((t={},(0,d.default)(t,a+"-picker-arrow",!0),(0,d.default)(t,a+"-picker-arrow-expand",o.popupVisible),t)),E=(0,k.default)(f,(n={},(0,d.default)(n,a+"-picker",!0),(0,d.default)(n,a+"-picker-with-value",o.inputValue),(0,d.default)(n,a+"-picker-disabled",p),n)),S=(0,T.default)(v,["onChange","options","popupPlacement","transitionName","displayRender","onPopupVisibleChange","changeOnSelect","expandTrigger","popupVisible","getPopupContainer","loadData","popupClassName","filterOption","renderFilteredOption","sortFilteredOption","notFoundContent"]),C=r.options;o.inputValue&&(C=this.generateFilteredOptions(a)),o.popupVisible?this.cachedOptions=C:C=this.cachedOptions;var M={};1===(C||[]).length&&"ANT_CASCADER_NOT_FOUND"===C[0].value&&(M.height="auto"),!1!==b.matchInputWidth&&o.inputValue&&this.refs.input&&(M.width=this.refs.input.refs.input.offsetWidth);var O=s||A.default.createElement("span",{style:h,className:E},A.default.createElement("span",{className:a+"-picker-label"},this.getLabel()),A.default.createElement(D.default,(0,c.default)({},S,{ref:"input",prefixCls:i,placeholder:y&&y.length>0?void 0:l,className:a+"-input "+_,value:o.inputValue,disabled:p,readOnly:!b,autoComplete:"off",onClick:b?this.handleInputClick:void 0,onBlur:b?this.handleInputBlur:void 0,onKeyDown:this.handleKeyDown,onChange:b?this.handleInputChange:void 0})),x,A.default.createElement(I.default,{type:"down",className:j}));return A.default.createElement(w.default,(0,c.default)({},r,{options:C,value:y,popupVisible:o.popupVisible,onPopupVisibleChange:this.handlePopupVisibleChange,onChange:this.handleChange,dropdownMenuColumnStyle:M}),O)}}]),t}(A.default.Component);t.default=B,B.defaultProps={prefixCls:"ant-cascader",inputPrefixCls:"ant-input",placeholder:"Please select",transitionName:"slide-up",popupPlacement:"bottomLeft",options:[],disabled:!1,allowClear:!0,notFoundContent:"Not Found"},e.exports=t.default},"./node_modules/antd/lib/checkbox/Checkbox.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/extends.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/prop-types/index.js"),y=r(v),_=n("./node_modules/classnames/index.js"),A=r(_),x=n("./node_modules/rc-checkbox/lib/index.js"),w=r(x),j=n("./node_modules/shallowequal/index.js"),E=r(j),S=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o0&&(i=this.getOptions().map(function(o){return m.default.createElement(w.default,{key:o.value,disabled:"disabled"in o?o.disabled:t.disabled,value:o.value,checked:-1!==n.value.indexOf(o.value),onChange:function(){return e.toggleOption(o)},className:r+"-item"},o.label)}));var s=(0,y.default)(r,o);return m.default.createElement("div",{className:s},i)}}]),t}(m.default.Component);t.default=j,j.defaultProps={options:[],prefixCls:"ant-checkbox-group"},j.propTypes={defaultValue:b.default.array,value:b.default.array,options:b.default.array.isRequired,onChange:b.default.func},j.childContextTypes={checkboxGroup:b.default.any},e.exports=t.default},"./node_modules/antd/lib/checkbox/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/antd/lib/checkbox/Checkbox.js"),a=r(o),i=n("./node_modules/antd/lib/checkbox/Group.js"),s=r(i);a.default.Group=s.default,t.default=a.default,e.exports=t.default},"./node_modules/antd/lib/col/index.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/antd/lib/grid/index.js");t.default=r.Col,e.exports=t.default},"./node_modules/antd/lib/collapse/Collapse.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.CollapsePanel=void 0;var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/defineProperty.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/rc-collapse/lib/index.js"),y=r(v),_=n("./node_modules/classnames/index.js"),A=r(_),x=n("./node_modules/antd/lib/_util/openAnimation.js"),w=r(x),j=(t.CollapsePanel=function(e){function t(){return(0,d.default)(this,t),(0,f.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return(0,m.default)(t,e),t}(b.default.Component),function(e){function t(){return(0,d.default)(this,t),(0,f.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return(0,m.default)(t,e),(0,c.default)(t,[{key:"render",value:function(){var e=this.props,t=e.prefixCls,n=e.className,r=void 0===n?"":n,o=e.bordered,i=(0,A.default)((0,s.default)({},t+"-borderless",!o),r);return b.default.createElement(y.default,(0,a.default)({},this.props,{className:i}))}}]),t}(b.default.Component));t.default=j,j.Panel=y.default.Panel,j.defaultProps={prefixCls:"ant-collapse",bordered:!0,openAnimation:(0,a.default)({},w.default,{appear:function(){}})}},"./node_modules/antd/lib/collapse/index.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/antd/lib/collapse/Collapse.js"),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=o.default,e.exports=t.default},"./node_modules/antd/lib/date-picker/Calendar.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/createClass.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/inherits.js"),d=r(u),p=n("./node_modules/react/react.js"),f=r(p),h=n("./node_modules/rc-calendar/lib/locale/zh_CN.js"),m=r(h),g=n("./node_modules/rc-calendar/lib/index.js"),b=r(g),v=n("./node_modules/warning/browser.js"),y=r(v),_=function(e){function t(){return(0,a.default)(this,t),(0,c.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return(0,d.default)(t,e),(0,s.default)(t,[{key:"render",value:function(){return(0,y.default)(!1,"DatePicker.Calendar is deprecated, use Calendar instead."),f.default.createElement(b.default,this.props)}}]),t}(f.default.Component);t.default=_,_.defaultProps={locale:m.default,prefixCls:"ant-calendar"},e.exports=t.default},"./node_modules/antd/lib/date-picker/RangePicker.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){var t=(0,A.default)(e,2),n=t[0],r=t[1];if(n||r){return[n,r&&r.isSame(n,"month")?r.clone().add(1,"month"):r]}}function a(e,t){return e&&e.format(t)||""}function i(e){if(e)return Array.isArray(e)?e:[e,e.clone().add(1,"month")]}function s(e){return!!Array.isArray(e)&&(0===e.length||e.every(function(e){return!e}))}Object.defineProperty(t,"__esModule",{value:!0});var l=n("./node_modules/babel-runtime/helpers/extends.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/defineProperty.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/createClass.js"),m=r(h),g=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),b=r(g),v=n("./node_modules/babel-runtime/helpers/inherits.js"),y=r(v),_=n("./node_modules/babel-runtime/helpers/slicedToArray.js"),A=r(_),x=n("./node_modules/react/react.js"),w=r(x),j=n("./node_modules/moment/src/moment.js"),E=r(j),S=n("./node_modules/prop-types/index.js"),k=r(S),C=n("./node_modules/rc-calendar/lib/RangeCalendar.js"),T=r(C),M=n("./node_modules/rc-calendar/lib/Picker.js"),O=r(M),L=n("./node_modules/classnames/index.js"),D=r(L),P=n("./node_modules/antd/lib/icon/index.js"),I=r(P),R=n("./node_modules/antd/lib/_util/getLocale.js"),N=n("./node_modules/antd/lib/_util/warning.js"),B=r(N),F=function(e){function t(e){(0,f.default)(this,t);var n=(0,b.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.clearSelection=function(e){e.preventDefault(),e.stopPropagation(),n.setState({value:[]}),n.handleChange([])},n.clearHoverValue=function(){return n.setState({hoverValue:[]})},n.handleChange=function(e){var t=n.props;"value"in t||n.setState(function(t){var n=t.showDate;return{value:e,showDate:o(e)||n}}),t.onChange(e,[a(e[0],t.format),a(e[1],t.format)])},n.handleOpenChange=function(e){"open"in n.props||n.setState({open:e});var t=n.props.onOpenChange;t&&t(e)},n.handleShowDateChange=function(e){return n.setState({showDate:e})},n.handleHoverChange=function(e){return n.setState({hoverValue:e})},n.renderFooter=function(){var e=n.props,t=e.prefixCls,r=e.ranges,o=e.renderExtraFooter;if(!r&&!o)return null;var a=o?w.default.createElement("div",{className:t+"-footer-extra",key:"extra"},o.apply(void 0,arguments)):null,i=Object.keys(r||{}).map(function(e){var t=r[e];return w.default.createElement("a",{key:e,onClick:function(){return n.setValue(t,!0)},onMouseEnter:function(){return n.setState({hoverValue:t})},onMouseLeave:n.clearHoverValue},e)});return[w.default.createElement("div",{className:t+"-footer-extra "+t+"-range-quick-selector",key:"range"},i),a]};var r=e.value||e.defaultValue||[];if(r[0]&&!E.default.isMoment(r[0])||r[1]&&!E.default.isMoment(r[1]))throw new Error("The value/defaultValue of RangePicker must be a moment object array after `antd@2.0`, see: https://u.ant.design/date-picker-value");var l=!r||s(r)?e.defaultPickerValue:r;return n.state={value:r,showDate:i(l||(0,E.default)()),open:e.open,hoverValue:[]},n}return(0,y.default)(t,e),(0,m.default)(t,[{key:"componentWillReceiveProps",value:function(e){if("value"in e){var t=this.state,n=e.value||[];this.setState({value:n,showDate:o(n)||t.showDate})}"open"in e&&this.setState({open:e.open})}},{key:"setValue",value:function(e,t){this.handleChange(e),!t&&this.props.showTime||"open"in this.props||this.setState({open:!1})}},{key:"render",value:function(){var e,t=this,n=this.state,r=this.props,o=this.context,a=n.value,i=n.showDate,s=n.hoverValue,l=n.open,u=(0,R.getLocaleCode)(o);a&&u&&(a[0]&&a[0].locale(u),a[1]&&a[1].locale(u));var p=r.prefixCls,f=r.popupStyle,h=r.style,m=r.disabledDate,g=r.disabledTime,b=r.showTime,v=r.showToday,y=r.ranges,_=r.onOk,A=r.locale,x=r.format;(0,B.default)(!("onOK"in r),"It should be `RangePicker[onOk]`, instead of `onOK`!");var j=(0,D.default)((e={},(0,d.default)(e,p+"-time",b),(0,d.default)(e,p+"-range-with-ranges",y),e)),E={onChange:this.handleChange},S={onOk:this.handleChange};r.timePicker?E.onChange=function(e){return t.handleChange(e)}:S={};var k="placeholder"in r?r.placeholder[0]:A.lang.rangePlaceholder[0],C="placeholder"in r?r.placeholder[1]:A.lang.rangePlaceholder[1],M=w.default.createElement(T.default,(0,c.default)({},S,{format:x,prefixCls:p,className:j,renderFooter:this.renderFooter,timePicker:r.timePicker,disabledDate:m,disabledTime:g,dateInputPlaceholder:[k,C],locale:A.lang,onOk:_,value:i,onValueChange:this.handleShowDateChange,hoverValue:s,onHoverChange:this.handleHoverChange,showToday:v})),L={};r.showTime&&(L.width=h&&h.width||300);var P=!r.disabled&&r.allowClear&&a&&(a[0]||a[1])?w.default.createElement(I.default,{type:"cross-circle",className:p+"-picker-clear",onClick:this.clearSelection}):null,N=function(e){var t=e.value,n=t[0],o=t[1];return w.default.createElement("span",{className:r.pickerInputClass},w.default.createElement("input",{disabled:r.disabled,readOnly:!0,value:n&&n.format(r.format)||"",placeholder:k,className:p+"-range-picker-input"}),w.default.createElement("span",{className:p+"-range-picker-separator"}," ~ "),w.default.createElement("input",{disabled:r.disabled,readOnly:!0,value:o&&o.format(r.format)||"",placeholder:C,className:p+"-range-picker-input"}),P,w.default.createElement("span",{className:p+"-picker-icon"}))};return w.default.createElement("span",{className:(0,D.default)(r.className,r.pickerClass),style:(0,c.default)({},h,L)},w.default.createElement(O.default,(0,c.default)({},r,E,{calendar:M,value:a,open:l,onOpenChange:this.handleOpenChange,prefixCls:p+"-picker-container",style:f}),N))}}]),t}(w.default.Component);t.default=F,F.contextTypes={antLocale:k.default.object},F.defaultProps={prefixCls:"ant-calendar",allowClear:!0,showToday:!1},e.exports=t.default},"./node_modules/antd/lib/date-picker/createPicker.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){return t=function(t){function n(e){(0,u.default)(this,n);var t=(0,h.default)(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,e));t.renderFooter=function(){var e=t.props,n=e.prefixCls,r=e.renderExtraFooter;return r?v.default.createElement("div",{className:n+"-footer-extra"},r.apply(void 0,arguments)):null},t.clearSelection=function(e){e.preventDefault(),e.stopPropagation(),t.handleChange(null)},t.handleChange=function(e){var n=t.props;"value"in n||t.setState({value:e,showDate:e}),n.onChange(e,e&&e.format(n.format)||"")},t.handleCalendarChange=function(e){t.setState({showDate:e})};var r=e.value||e.defaultValue;if(r&&!x.default.isMoment(r))throw new Error("The value/defaultValue of DatePicker or MonthPicker must be a moment object after `antd@2.0`, see: https://u.ant.design/date-picker-value");return t.state={value:r,showDate:r},t}return(0,g.default)(n,t),(0,p.default)(n,[{key:"componentWillReceiveProps",value:function(e){"value"in e&&this.setState({value:e.value,showDate:e.value})}},{key:"render",value:function(){var t,n=this.state,r=n.value,o=n.showDate,a=(0,M.default)(this.props,["onChange"]),s=a.prefixCls,c=a.locale,u="placeholder"in a?a.placeholder:c.lang.placeholder,d=a.showTime?a.disabledTime:null,p=(0,C.default)((t={},(0,l.default)(t,s+"-time",a.showTime),(0,l.default)(t,s+"-month",j.default===e),t)),f={},h={};a.showTime?h={onSelect:this.handleChange}:f={onChange:this.handleChange},(0,I.default)(!("onOK"in a),"It should be `DatePicker[onOk]` or `MonthPicker[onOk]`, instead of `onOK`!");var m=v.default.createElement(e,(0,i.default)({},h,{disabledDate:a.disabledDate,disabledTime:d,locale:c.lang,timePicker:a.timePicker,defaultValue:a.defaultPickerValue||(0,x.default)(),dateInputPlaceholder:u,prefixCls:s,className:p,onOk:a.onOk,format:a.format,showToday:a.showToday,monthCellContentRender:a.monthCellContentRender,renderFooter:this.renderFooter,onChange:this.handleCalendarChange,value:o})),g={};a.showTime&&(g.width=a.style&&a.style.width||154);var b=!a.disabled&&a.allowClear&&r?v.default.createElement(L.default,{type:"cross-circle",className:s+"-picker-clear",onClick:this.clearSelection}):null,y=function(e){var t=e.value;return v.default.createElement("div",null,v.default.createElement("input",{disabled:a.disabled,readOnly:!0,value:t&&t.format(a.format)||"",placeholder:u,className:a.pickerInputClass}),b,v.default.createElement("span",{className:s+"-picker-icon"}))},_=r,A=(0,D.getLocaleCode)(this.context);_&&A&&_.locale(A);var w=(0,i.default)({},a.style,g);return v.default.createElement("span",{className:(0,C.default)(a.className,a.pickerClass),style:w},v.default.createElement(S.default,(0,i.default)({},a,f,{calendar:m,value:r,prefixCls:s+"-picker-container",style:a.popupStyle}),y))}}]),n}(v.default.Component),t.contextTypes={antLocale:_.default.object},t.defaultProps={prefixCls:"ant-calendar",allowClear:!0,showToday:!0},t;var t}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/extends.js"),i=r(a),s=n("./node_modules/babel-runtime/helpers/defineProperty.js"),l=r(s),c=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),u=r(c),d=n("./node_modules/babel-runtime/helpers/createClass.js"),p=r(d),f=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),h=r(f),m=n("./node_modules/babel-runtime/helpers/inherits.js"),g=r(m);t.default=o;var b=n("./node_modules/react/react.js"),v=r(b),y=n("./node_modules/prop-types/index.js"),_=r(y),A=n("./node_modules/moment/src/moment.js"),x=r(A),w=n("./node_modules/rc-calendar/lib/MonthCalendar.js"),j=r(w),E=n("./node_modules/rc-calendar/lib/Picker.js"),S=r(E),k=n("./node_modules/classnames/index.js"),C=r(k),T=n("./node_modules/omit.js/lib/index.js"),M=r(T),O=n("./node_modules/antd/lib/icon/index.js"),L=r(O),D=n("./node_modules/antd/lib/_util/getLocale.js"),P=n("./node_modules/antd/lib/_util/warning.js"),I=r(P);e.exports=t.default},"./node_modules/antd/lib/date-picker/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/rc-calendar/lib/index.js"),s=r(i),l=n("./node_modules/rc-calendar/lib/MonthCalendar.js"),c=r(l),u=n("./node_modules/antd/lib/date-picker/createPicker.js"),d=r(u),p=n("./node_modules/antd/lib/date-picker/wrapPicker.js"),f=r(p),h=n("./node_modules/antd/lib/date-picker/RangePicker.js"),m=r(h),g=n("./node_modules/antd/lib/date-picker/Calendar.js"),b=r(g),v=(0,f.default)((0,d.default)(s.default)),y=(0,f.default)((0,d.default)(c.default),"YYYY-MM");(0,a.default)(v,{RangePicker:(0,f.default)(m.default),Calendar:b.default,MonthPicker:y}),t.default=v,e.exports=t.default},"./node_modules/antd/lib/date-picker/locale/zh_CN.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/rc-calendar/lib/locale/zh_CN.js"),s=r(i),l=n("./node_modules/antd/lib/time-picker/locale/zh_CN.js"),c=r(l),u=n("./node_modules/moment/src/moment.js"),d=r(u);n("./node_modules/moment/locale/zh-cn.js"),d.default.locale("zh-cn");var p={lang:(0,a.default)({placeholder:"请选择日期",rangePlaceholder:["开始日期","结束日期"]},s.default),timePickerLocale:(0,a.default)({},c.default)};p.lang.ok="确 定",t.default=p,e.exports=t.default},"./node_modules/antd/lib/date-picker/wrapPicker.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){var t=e.showHour,n=e.showMinute,r=e.showSecond,o=e.use12Hours,a=0;return t&&(a+=1),n&&(a+=1),r&&(a+=1),o&&(a+=1),a}function a(e,t){return r=function(t){function r(){(0,d.default)(this,r);var e=(0,m.default)(this,(r.__proto__||Object.getPrototypeOf(r)).apply(this,arguments));return e.handleOpenChange=function(t){var n=e.props,r=n.onOpenChange,o=n.toggleOpen;r(t),o&&((0,C.default)(!1,"`toggleOpen` is deprecated and will be removed in the future, please use `onOpenChange` instead, see: https://u.ant.design/date-picker-on-open-change"),o({open:t}))},e}return(0,b.default)(r,t),(0,f.default)(r,[{key:"render",value:function(){var t,r=this.props,a=r.prefixCls,i=r.inputPrefixCls,l=(0,E.default)((0,c.default)({},a+"-picker",!0)),u=(0,E.default)(a+"-picker-input",i,(t={},(0,c.default)(t,i+"-lg","large"===r.size),(0,c.default)(t,i+"-sm","small"===r.size),(0,c.default)(t,i+"-disabled",r.disabled),t)),d=(0,T.getComponentLocale)(r,this.context,"DatePicker",function(){return n("./node_modules/antd/lib/date-picker/locale/zh_CN.js")}),p=r.showTime&&r.showTime.format||"HH:mm:ss",f=(0,s.default)({},(0,S.generateShowHourMinuteSecond)(p),{format:p,use12Hours:r.showTime&&r.showTime.use12Hours}),h=o(f),m=a+"-time-picker-column-"+h,g=r.showTime?y.default.createElement(w.default,(0,s.default)({},f,r.showTime,{prefixCls:a+"-time-picker",className:m,placeholder:d.timePickerLocale.placeholder,transitionName:"slide-up"})):null;return y.default.createElement(e,(0,s.default)({},r,{pickerClass:l,pickerInputClass:u,locale:d,timePicker:g,onOpenChange:this.handleOpenChange}))}}]),r}(y.default.Component),r.contextTypes={antLocale:A.default.object},r.defaultProps={format:t||"YYYY-MM-DD",transitionName:"slide-up",popupStyle:{},onChange:function(){},onOk:function(){},onOpenChange:function(){},locale:{},prefixCls:"ant-calendar",inputPrefixCls:"ant-input"},r;var r}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/babel-runtime/helpers/extends.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/defineProperty.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/createClass.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),m=r(h),g=n("./node_modules/babel-runtime/helpers/inherits.js"),b=r(g);t.default=a;var v=n("./node_modules/react/react.js"),y=r(v),_=n("./node_modules/prop-types/index.js"),A=r(_),x=n("./node_modules/rc-time-picker/lib/Panel.js"),w=r(x),j=n("./node_modules/classnames/index.js"),E=r(j),S=n("./node_modules/antd/lib/time-picker/index.js"),k=n("./node_modules/antd/lib/_util/warning.js"),C=r(k),T=n("./node_modules/antd/lib/_util/getLocale.js");e.exports=t.default},"./node_modules/antd/lib/dropdown/dropdown-button.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/inherits.js"),f=r(p),h=n("./node_modules/react/react.js"),m=r(h),g=n("./node_modules/antd/lib/button/index.js"),b=r(g),v=n("./node_modules/antd/lib/icon/index.js"),y=r(v),_=n("./node_modules/antd/lib/dropdown/dropdown.js"),A=r(_),x=n("./node_modules/classnames/index.js"),w=r(x),j=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o=0?"slide-down":"slide-up"}},{key:"componentDidMount",value:function(){var e=this.props.overlay,t=e.props;(0,A.default)(!t.mode||"vertical"===t.mode,'mode="'+t.mode+"\" is not supported for Dropdown's Menu.")}},{key:"render",value:function(){var e=this.props,t=e.children,n=e.prefixCls,r=e.overlay,o=e.trigger,i=e.disabled,s=(0,h.cloneElement)(t,{className:(0,y.default)(t.props.className,n+"-trigger"),disabled:i}),l=r&&r.props,c=!!(l&&"selectable"in l)&&l.selectable,u=(0,h.cloneElement)(r,{mode:"vertical",selectable:c});return m.default.createElement(b.default,(0,a.default)({},this.props,{transitionName:this.getTransitionName(),trigger:i?[]:o,overlay:u}),s)}}]),t}(m.default.Component);t.default=x,x.defaultProps={prefixCls:"ant-dropdown",mouseEnterDelay:.15,mouseLeaveDelay:.1,placement:"bottomLeft"},e.exports=t.default},"./node_modules/antd/lib/dropdown/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/antd/lib/dropdown/dropdown.js"),a=r(o),i=n("./node_modules/antd/lib/dropdown/dropdown-button.js"),s=r(i);a.default.Button=s.default,t.default=a.default,e.exports=t.default},"./node_modules/antd/lib/form/Form.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/defineProperty.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/prop-types/index.js"),y=r(v),_=n("./node_modules/classnames/index.js"),A=r(_),x=n("./node_modules/rc-form/lib/createDOMForm.js"),w=r(x),j=n("./node_modules/rc-util/lib/PureRenderMixin.js"),E=r(j),S=n("./node_modules/omit.js/lib/index.js"),k=r(S),C=n("./node_modules/create-react-class/index.js"),T=r(C),M=n("./node_modules/antd/lib/_util/warning.js"),O=r(M),L=n("./node_modules/antd/lib/form/FormItem.js"),D=r(L),P=n("./node_modules/antd/lib/form/constants.js"),I=function(e){function t(e){(0,c.default)(this,t);var n=(0,f.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return(0,O.default)(!e.form,"It is unnecessary to pass `form` to `Form` after antd@1.7.0."),n}return(0,m.default)(t,e),(0,d.default)(t,[{key:"shouldComponentUpdate",value:function(){for(var e=arguments.length,t=Array(e),n=0;n0&&void 0!==arguments[0]?arguments[0]:{},t=(0,w.default)((0,a.default)({fieldNameProp:"id"},e,{fieldMetaProp:P.FIELD_META_PROP}));return function(n){return t((0,T.default)({propTypes:{form:y.default.object.isRequired},childContextTypes:{form:y.default.object.isRequired},getChildContext:function(){return{form:this.props.form}},componentWillMount:function(){this.__getFieldProps=this.props.form.getFieldProps},deprecatedGetFieldProps:function(e,t){return(0,O.default)(!1,"`getFieldProps` is not recommended, please use `getFieldDecorator` instead, see: https://u.ant.design/get-field-decorator"),this.__getFieldProps(e,t)},render:function(){this.props.form.getFieldProps=this.deprecatedGetFieldProps;var t={};return e.withRef?t.ref="formWrappedComponent":this.props.wrappedComponentRef&&(t.ref=this.props.wrappedComponentRef),b.default.createElement(n,(0,a.default)({},this.props,t))}}))}},e.exports=t.default},"./node_modules/antd/lib/form/FormItem.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/extends.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/react-dom/index.js"),y=n("./node_modules/prop-types/index.js"),_=r(y),A=n("./node_modules/classnames/index.js"),x=r(A),w=n("./node_modules/rc-util/lib/PureRenderMixin.js"),j=r(w),E=n("./node_modules/antd/lib/grid/row.js"),S=r(E),k=n("./node_modules/antd/lib/grid/col.js"),C=r(k),T=n("./node_modules/antd/lib/form/constants.js"),M=n("./node_modules/antd/lib/_util/warning.js"),O=r(M),L=function(e){function t(){(0,c.default)(this,t);var e=(0,f.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.onLabelClick=function(){var t=e.props.id||e.getId();if(t){if(1!==document.querySelectorAll('[id="'+t+'"]').length){var n=(0,v.findDOMNode)(e).querySelector('[id="'+t+'"]');n&&n.focus&&n.focus()}}},e}return(0,m.default)(t,e),(0,d.default)(t,[{key:"componentDidMount",value:function(){(0,O.default)(this.getControls(this.props.children,!0).length<=1,"`Form.Item` cannot generate `validateStatus` and `help` automatically, while there are more than one `getFieldDecorator` in it.")}},{key:"shouldComponentUpdate",value:function(){for(var e=arguments.length,t=Array(e),n=0;n0));a++){var i=o[a];(!i.type||i.type!==t&&"FormItem"!==i.type.displayName)&&i.props&&(T.FIELD_META_PROP in i.props?r.push(i):i.props.children&&(r=r.concat(this.getControls(i.props.children,n))))}return r}},{key:"getOnlyControl",value:function(){var e=this.getControls(this.props.children,!1)[0];return void 0!==e?e:null}},{key:"getChildProp",value:function(e){var t=this.getOnlyControl();return t&&t.props&&t.props[e]}},{key:"getId",value:function(){return this.getChildProp("id")}},{key:"getMeta",value:function(){return this.getChildProp(T.FIELD_META_PROP)}},{key:"renderHelp",value:function(){var e=this.props.prefixCls,t=this.getHelpMsg();return t?b.default.createElement("div",{className:e+"-explain",key:"help"},t):null}},{key:"renderExtra",value:function(){var e=this.props,t=e.prefixCls,n=e.extra;return n?b.default.createElement("div",{className:t+"-extra"},n):null}},{key:"getValidateStatus",value:function(){var e=this.context.form,t=e.isFieldValidating,n=e.getFieldError,r=e.getFieldValue,o=this.getId();if(!o)return"";if(t(o))return"validating";if(n(o))return"error";var a=r(o);return void 0!==a&&null!==a&&""!==a?"success":""}},{key:"renderValidateWrapper",value:function(e,t,n){var r="",o=this.context.form,a=this.props,i=void 0===a.validateStatus&&o?this.getValidateStatus():a.validateStatus;return i&&(r=(0,x.default)({"has-feedback":a.hasFeedback||"validating"===i,"has-success":"success"===i,"has-warning":"warning"===i,"has-error":"error"===i,"is-validating":"validating"===i})),b.default.createElement("div",{className:this.props.prefixCls+"-item-control "+r},e,t,n)}},{key:"renderWrapper",value:function(e){var t=this.props,n=t.prefixCls,r=t.wrapperCol,o=(0,x.default)(n+"-item-control-wrapper",r&&r.className);return b.default.createElement(C.default,(0,s.default)({},r,{className:o,key:"wrapper"}),e)}},{key:"isRequired",value:function(){var e=this.props.required;if(void 0!==e)return e;if(this.context.form){return((this.getMeta()||{}).validate||[]).filter(function(e){return!!e.rules}).some(function(e){return e.rules.some(function(e){return e.required})})}return!1}},{key:"renderLabel",value:function(){var e=this.props,t=e.prefixCls,n=e.label,r=e.labelCol,o=e.colon,i=e.id,l=this.context,c=this.isRequired(),u=(0,x.default)(t+"-item-label",r&&r.className),d=(0,x.default)((0,a.default)({},t+"-item-required",c)),p=n;return o&&!l.vertical&&"string"==typeof n&&""!==n.trim()&&(p=n.replace(/[:|:]\s*$/,"")),n?b.default.createElement(C.default,(0,s.default)({},r,{className:u,key:"label"}),b.default.createElement("label",{htmlFor:i||this.getId(),className:d,title:"string"==typeof n?n:"",onClick:this.onLabelClick},p)):null}},{key:"renderChildren",value:function(){var e=this.props,t=b.default.Children.map(e.children,function(e){return e&&"function"==typeof e.type&&!e.props.size?b.default.cloneElement(e,{size:"large"}):e});return[this.renderLabel(),this.renderWrapper(this.renderValidateWrapper(t,this.renderHelp(),this.renderExtra()))]}},{key:"renderFormItem",value:function(e){var t,n=this.props,r=n.prefixCls,o=n.style,i=(t={},(0,a.default)(t,r+"-item",!0),(0,a.default)(t,r+"-item-with-help",!!this.getHelpMsg()),(0,a.default)(t,r+"-item-no-colon",!n.colon),(0,a.default)(t,""+n.className,!!n.className),t);return b.default.createElement(S.default,{className:(0,x.default)(i),style:o},e)}},{key:"render",value:function(){var e=this.renderChildren();return this.renderFormItem(e)}}]),t}(b.default.Component);t.default=L,L.defaultProps={hasFeedback:!1,prefixCls:"ant-form",colon:!0},L.propTypes={prefixCls:_.default.string,label:_.default.oneOfType([_.default.string,_.default.node]),labelCol:_.default.object,help:_.default.oneOfType([_.default.node,_.default.bool]),validateStatus:_.default.oneOf(["","success","warning","error","validating"]),hasFeedback:_.default.bool,wrapperCol:_.default.object,className:_.default.string,id:_.default.string,children:_.default.node,colon:_.default.bool},L.contextTypes={form:_.default.object,vertical:_.default.bool},e.exports=t.default},"./node_modules/antd/lib/form/constants.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.FIELD_META_PROP="data-__meta"},"./node_modules/antd/lib/form/index.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/antd/lib/form/Form.js"),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=o.default,e.exports=t.default},"./node_modules/antd/lib/grid/col.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/extends.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/typeof.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/createClass.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),m=r(h),g=n("./node_modules/babel-runtime/helpers/inherits.js"),b=r(g),v=n("./node_modules/react/react.js"),y=r(v),_=n("./node_modules/prop-types/index.js"),A=r(_),x=n("./node_modules/classnames/index.js"),w=r(x),j=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o0?(0,a.default)({marginLeft:l/-2,marginRight:l/-2},c):c,v=g.Children.map(u,function(e){return e?e.props&&l>0?(0,g.cloneElement)(e,{style:(0,a.default)({paddingLeft:l/2,paddingRight:l/2},e.props.style)}):e:null});return b.default.createElement("div",(0,a.default)({},f,{className:h,style:m}),v)}}]),t}(b.default.Component);t.default=w,w.defaultProps={gutter:0},w.propTypes={type:A.default.string,align:A.default.string,justify:A.default.string,className:A.default.string,children:A.default.node,gutter:A.default.number,prefixCls:A.default.string},e.exports=t.default},"./node_modules/antd/lib/icon/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/defineProperty.js"),s=r(i),l=n("./node_modules/react/react.js"),c=r(l),u=n("./node_modules/classnames/index.js"),d=r(u),p=n("./node_modules/omit.js/lib/index.js"),f=r(p),h=function(e){var t=e.type,n=e.className,r=void 0===n?"":n,o=e.spin,i=(0,d.default)((0,s.default)({anticon:!0,"anticon-spin":!!o||"loading"===t},"anticon-"+t,!0),r);return c.default.createElement("i",(0,a.default)({},(0,f.default)(e,["type","spin"]),{className:i}))};t.default=h,e.exports=t.default},"./node_modules/antd/lib/input-number/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/defineProperty.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/classnames/index.js"),y=r(v),_=n("./node_modules/rc-input-number/lib/index.js"),A=r(_),x=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o1&&void 0!==arguments[1]&&arguments[1],n=e.getAttribute("id")||e.getAttribute("data-reactid")||e.getAttribute("name");if(t&&s[n])return s[n];var r=window.getComputedStyle(e),o=r.getPropertyValue("box-sizing")||r.getPropertyValue("-moz-box-sizing")||r.getPropertyValue("-webkit-box-sizing"),a=parseFloat(r.getPropertyValue("padding-bottom"))+parseFloat(r.getPropertyValue("padding-top")),l=parseFloat(r.getPropertyValue("border-bottom-width"))+parseFloat(r.getPropertyValue("border-top-width")),c=i.map(function(e){return e+":"+r.getPropertyValue(e)}).join(";"),u={sizingStyle:c,paddingSize:a,borderSize:l,boxSizing:o};return t&&n&&(s[n]=u),u}function o(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;l||(l=document.createElement("textarea"),document.body.appendChild(l)),e.getAttribute("wrap")?l.setAttribute("wrap",e.getAttribute("wrap")):l.removeAttribute("wrap");var i=r(e,t),s=i.paddingSize,c=i.borderSize,u=i.boxSizing,d=i.sizingStyle;l.setAttribute("style",d+";"+a),l.value=e.value||e.placeholder||"";var p=-1/0,f=1/0,h=l.scrollHeight,m=void 0;if("border-box"===u?h+=c:"content-box"===u&&(h-=s),null!==n||null!==o){l.value="";var g=l.scrollHeight-s;null!==n&&(p=g*n,"border-box"===u&&(p=p+s+c),h=Math.max(p,h)),null!==o&&(f=g*o,"border-box"===u&&(f=f+s+c),m=h>f?"":"hidden",h=Math.min(f,h))}return o||(m="hidden"),{height:h,minHeight:p,maxHeight:f,overflowY:m}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o;var a="\n min-height:0 !important;\n max-height:none !important;\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important\n",i=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"],s={},l=void 0;e.exports=t.default},"./node_modules/antd/lib/input/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/antd/lib/input/Input.js"),a=r(o),i=n("./node_modules/antd/lib/input/Group.js"),s=r(i),l=n("./node_modules/antd/lib/input/Search.js"),c=r(l),u=n("./node_modules/antd/lib/input/TextArea.js"),d=r(u);a.default.Group=s.default,a.default.Search=c.default,a.default.TextArea=d.default,t.default=a.default,e.exports=t.default},"./node_modules/antd/lib/locale-provider/injectLocale.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/inherits.js"),f=r(p),h=n("./node_modules/prop-types/index.js"),m=r(h);t.default=function(e,t){return function(n){var r=n;return o=function(n){function r(){return(0,s.default)(this,r),(0,d.default)(this,(r.__proto__||Object.getPrototypeOf(r)).apply(this,arguments))}return(0,f.default)(r,n),(0,c.default)(r,[{key:"getLocale",value:function(){var n=this.context.antLocale,r=n&&n[e],o=this.props.locale||{};return(0,a.default)({},t,r||{},o)}}]),r}(n),o.propTypes=r.propTypes,o.defaultProps=r.defaultProps,o.contextTypes=(0,a.default)({},r.context||{},{antLocale:m.default.object}),o;var o}},e.exports=t.default},"./node_modules/antd/lib/menu/MenuItem.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/createClass.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/inherits.js"),d=r(u),p=n("./node_modules/react/react.js"),f=r(p),h=n("./node_modules/rc-menu/lib/index.js"),m=n("./node_modules/prop-types/index.js"),g=r(m),b=n("./node_modules/antd/lib/tooltip/index.js"),v=r(b),y=function(e){function t(){return(0,a.default)(this,t),(0,c.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return(0,d.default)(t,e),(0,s.default)(t,[{key:"render",value:function(){var e=this.context.inlineCollapsed,t=this.props;return f.default.createElement(v.default,{title:e&&1===t.level?t.children:"",placement:"right",overlayClassName:t.rootPrefixCls+"-inline-collapsed-tooltip"},f.default.createElement(h.Item,t))}}]),t}(f.default.Component);y.contextTypes={inlineCollapsed:g.default.bool},y.isMenuItem=1,t.default=y,e.exports=t.default},"./node_modules/antd/lib/menu/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/extends.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/rc-menu/lib/index.js"),y=r(v),_=n("./node_modules/prop-types/index.js"),A=r(_),x=n("./node_modules/classnames/index.js"),w=r(x),j=n("./node_modules/antd/lib/_util/openAnimation.js"),E=r(j),S=n("./node_modules/antd/lib/_util/warning.js"),k=r(S),C=n("./node_modules/antd/lib/menu/MenuItem.js"),T=r(C),M=function(e){function t(e){(0,c.default)(this,t);var n=(0,f.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.inlineOpenKeys=[],n.handleClick=function(e){n.handleOpenChange([]);var t=n.props.onClick;t&&t(e)},n.handleOpenChange=function(e){n.setOpenKeys(e);var t=n.props.onOpenChange;t&&t(e)},(0,k.default)(!("onOpen"in e||"onClose"in e),"`onOpen` and `onClose` are removed, please use `onOpenChange` instead, see: https://u.ant.design/menu-on-open-change."),(0,k.default)(!("inlineCollapsed"in e&&"inline"!==e.mode),"`inlineCollapsed` should only be used when Menu's `mode` is inline.");var r=void 0;return"defaultOpenKeys"in e?r=e.defaultOpenKeys:"openKeys"in e&&(r=e.openKeys),n.state={openKeys:r||[]},n}return(0,m.default)(t,e),(0,d.default)(t,[{key:"getChildContext",value:function(){return{inlineCollapsed:this.getInlineCollapsed()}}},{key:"componentWillReceiveProps",value:function(e,t){if("inline"===this.props.mode&&"inline"!==e.mode&&(this.switchModeFromInline=!0),"openKeys"in e)return void this.setState({openKeys:e.openKeys});(e.inlineCollapsed&&!this.props.inlineCollapsed||t.siderCollapsed&&!this.context.siderCollapsed)&&(this.switchModeFromInline=!!this.state.openKeys.length,this.inlineOpenKeys=this.state.openKeys,this.setState({openKeys:[]})),(!e.inlineCollapsed&&this.props.inlineCollapsed||!t.siderCollapsed&&this.context.siderCollapsed)&&(this.setState({openKeys:this.inlineOpenKeys}),this.inlineOpenKeys=[])}},{key:"setOpenKeys",value:function(e){"openKeys"in this.props||this.setState({openKeys:e})}},{key:"getRealMenuMode",value:function(){var e=this.getInlineCollapsed();if(this.switchModeFromInline&&e&&this.leaveAnimationExecutedWhenInlineCollapsed)return this.leaveAnimationExecutedWhenInlineCollapsed=!1,"inline";var t=this.props.mode;return e?"vertical":t}},{key:"getInlineCollapsed",value:function(){var e=this.props.inlineCollapsed;return void 0!==this.context.siderCollapsed?this.context.siderCollapsed:e}},{key:"getMenuOpenAnimation",value:function(e){var t=this,n=this.props,r=n.openAnimation,o=n.openTransitionName,a=r||o;if(void 0===r&&void 0===o)switch(e){case"horizontal":a="slide-up";break;case"vertical":this.switchModeFromInline?(a="",this.switchModeFromInline=!1):a="zoom-big";break;case"inline":a=(0,s.default)({},E.default,{leave:function(e,n){return E.default.leave(e,function(){t.switchModeFromInline=!1,t.leaveAnimationExecutedWhenInlineCollapsed=!0,t.setState({}),n()})}})}return a}},{key:"render",value:function(){var e=this.props,t=e.prefixCls,n=e.className,r=e.theme,o=this.getRealMenuMode(),i=this.getMenuOpenAnimation(o),l=(0,w.default)(n,t+"-"+r,(0,a.default)({},t+"-inline-collapsed",this.getInlineCollapsed())),c={openKeys:this.state.openKeys,onOpenChange:this.handleOpenChange,className:l,mode:o};return"inline"!==o?(c.onClick=this.handleClick,c.openTransitionName=i):c.openAnimation=i,b.default.createElement(y.default,(0,s.default)({},this.props,c))}}]),t}(b.default.Component);t.default=M,M.Divider=v.Divider,M.Item=T.default,M.SubMenu=v.SubMenu,M.ItemGroup=v.ItemGroup,M.defaultProps={prefixCls:"ant-menu",className:"",theme:"light"},M.childContextTypes={inlineCollapsed:A.default.bool},M.contextTypes={siderCollapsed:A.default.bool},e.exports=t.default},"./node_modules/antd/lib/message/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(){return h=h||c.default.newInstance({prefixCls:g,transitionName:"move-up",style:{top:f},getContainer:b})}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p,n=arguments[2],r=arguments[3],a={info:"info-circle",success:"check-circle",error:"cross-circle",warning:"exclamation-circle",loading:"loading"}[n],i=o();return i.notice({key:m,duration:t,style:{},content:s.default.createElement("div",{className:g+"-custom-content "+g+"-"+n},s.default.createElement(d.default,{type:a}),s.default.createElement("span",null,e)),onClose:r}),function(){var e=m++;return function(){i.removeNotice(e)}}()}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/react/react.js"),s=r(i),l=n("./node_modules/rc-notification/lib/index.js"),c=r(l),u=n("./node_modules/antd/lib/icon/index.js"),d=r(u),p=3,f=void 0,h=void 0,m=1,g="ant-message",b=void 0;t.default={info:function(e,t,n){return a(e,t,"info",n)},success:function(e,t,n){return a(e,t,"success",n)},error:function(e,t,n){return a(e,t,"error",n)},warn:function(e,t,n){return a(e,t,"warning",n)},warning:function(e,t,n){return a(e,t,"warning",n)},loading:function(e,t,n){return a(e,t,"loading",n)},config:function(e){void 0!==e.top&&(f=e.top,h=null),void 0!==e.duration&&(p=e.duration),void 0!==e.prefixCls&&(g=e.prefixCls),void 0!==e.getContainer&&(b=e.getContainer)},destroy:function(){h&&(h.destroy(),h=null)}},e.exports=t.default},"./node_modules/antd/lib/modal/ActionButton.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/createClass.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/inherits.js"),d=r(u),p=n("./node_modules/react/react.js"),f=r(p),h=n("./node_modules/react-dom/index.js"),m=r(h),g=n("./node_modules/antd/lib/button/index.js"),b=r(g),v=function(e){function t(e){(0,a.default)(this,t);var n=(0,c.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.onClick=function(){var e=n.props,t=e.actionFn,r=e.closeModal;if(t){var o=void 0;t.length?o=t(r):(o=t())||r(),o&&o.then&&(n.setState({loading:!0}),o.then(function(){r.apply(void 0,arguments)},function(){n.setState({loading:!1})}))}else r()},n.state={loading:!1},n}return(0,d.default)(t,e),(0,s.default)(t,[{key:"componentDidMount",value:function(){if(this.props.autoFocus){var e=m.default.findDOMNode(this);this.timeoutId=setTimeout(function(){return e.focus()})}}},{key:"componentWillUnmount",value:function(){clearTimeout(this.timeoutId)}},{key:"render",value:function(){var e=this.props,t=e.type,n=e.children,r=this.state.loading;return f.default.createElement(b.default,{type:t,size:"large",onClick:this.onClick,loading:r},n)}}]),t}(f.default.Component);t.default=v,e.exports=t.default},"./node_modules/antd/lib/modal/Modal.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/inherits.js"),f=r(p),h=n("./node_modules/react/react.js"),m=r(h),g=n("./node_modules/rc-dialog/lib/DialogWrap.js"),b=r(g),v=n("./node_modules/prop-types/index.js"),y=r(v),_=n("./node_modules/rc-util/lib/Dom/addEventListener.js"),A=r(_),x=n("./node_modules/antd/lib/button/index.js"),w=r(x),j=void 0,E=void 0,S=function(e){function t(){(0,s.default)(this,t);var e=(0,d.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.handleCancel=function(t){var n=e.props.onCancel;n&&n(t)},e.handleOk=function(t){var n=e.props.onOk;n&&n(t)},e}return(0,f.default)(t,e),(0,c.default)(t,[{key:"componentDidMount",value:function(){E||((0,A.default)(document.documentElement,"click",function(e){j={x:e.pageX,y:e.pageY},setTimeout(function(){return j=null},100)}),E=!0)}},{key:"render",value:function(){var e=this.props,t=e.okText,n=e.okType,r=e.cancelText,o=e.confirmLoading,i=e.footer,s=e.visible;this.context.antLocale&&this.context.antLocale.Modal&&(t=t||this.context.antLocale.Modal.okText,r=r||this.context.antLocale.Modal.cancelText);var l=[m.default.createElement(w.default,{key:"cancel",size:"large",onClick:this.handleCancel},r||"取消"),m.default.createElement(w.default,{key:"confirm",type:n,size:"large",loading:o,onClick:this.handleOk},t||"确定")];return m.default.createElement(b.default,(0,a.default)({},this.props,{footer:void 0===i?l:i,visible:s,mousePosition:j,onClose:this.handleCancel}))}}]),t}(m.default.Component);t.default=S,S.defaultProps={prefixCls:"ant-modal",width:520,transitionName:"zoom",maskTransitionName:"fade",confirmLoading:!1,visible:!1,okType:"primary"},S.propTypes={prefixCls:y.default.string,onOk:y.default.func,onCancel:y.default.func,okText:y.default.node,cancelText:y.default.node,width:y.default.oneOfType([y.default.number,y.default.string]),confirmLoading:y.default.bool,visible:y.default.bool,align:y.default.object,footer:y.default.node,title:y.default.node,closable:y.default.bool},S.contextTypes={antLocale:y.default.object},e.exports=t.default},"./node_modules/antd/lib/modal/confirm.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){function t(){p.default.unmountComponentAtNode(o)&&o.parentNode&&o.parentNode.removeChild(o);for(var e=arguments.length,t=Array(e),r=0;r=100&&!("status"in t)?"success":l||"normal",w=void 0,k=void 0,C=c||function(e){return e+"%"};if(h){var T=void 0,M="circle"===d||"dashboard"===d?"":"-circle";T="exception"===_?c?C(i):y.default.createElement(A.default,{type:"cross"+M}):"success"===_?c?C(i):y.default.createElement(A.default,{type:"check"+M}):C(i),w=y.default.createElement("span",{className:n+"-text"},T)}if("line"===d){var O={width:i+"%",height:p||10};k=y.default.createElement("div",null,y.default.createElement("div",{className:n+"-outer"},y.default.createElement("div",{className:n+"-inner"},y.default.createElement("div",{className:n+"-bg",style:O}))),w)}else if("circle"===d||"dashboard"===d){var L=f||132,D={width:L,height:L,fontSize:.16*L+6},P=p||6,I=b||"dashboard"===d&&"bottom"||"top",R=g||"dashboard"===d&&75;k=y.default.createElement("div",{className:n+"-inner",style:D},y.default.createElement(x.Circle,{percent:i,strokeWidth:P,trailWidth:P,strokeColor:S[_],trailColor:u,prefixCls:n,gapDegree:R,gapPosition:I}),w)}var N=(0,j.default)(n,(e={},(0,s.default)(e,n+"-"+("dashboard"===d&&"circle"||d),!0),(0,s.default)(e,n+"-status-"+_,!0),(0,s.default)(e,n+"-show-info",h),e),r);return y.default.createElement("div",(0,a.default)({},v,{className:N}),k)}}]),t}(y.default.Component);t.default=k,k.defaultProps={type:"line",percent:0,showInfo:!0,trailColor:"#f3f3f3",prefixCls:"ant-progress"},k.propTypes={status:b.default.oneOf(["normal","exception","active","success"]),type:b.default.oneOf(["line","circle","dashboard"]),showInfo:b.default.bool,percent:b.default.number,width:b.default.number,strokeWidth:b.default.number,trailColor:b.default.string,format:b.default.func,gapDegree:b.default.number},e.exports=t.default},"./node_modules/antd/lib/radio/group.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){var t=null,n=!1;return g.default.Children.forEach(e,function(e){e&&e.props&&e.props.checked&&(t=e.props.value,n=!0)}),n?{value:t}:void 0}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/defineProperty.js"),i=r(a),s=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),l=r(s),c=n("./node_modules/babel-runtime/helpers/createClass.js"),u=r(c),d=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),p=r(d),f=n("./node_modules/babel-runtime/helpers/inherits.js"),h=r(f),m=n("./node_modules/react/react.js"),g=r(m),b=n("./node_modules/prop-types/index.js"),v=r(b),y=n("./node_modules/classnames/index.js"),_=r(y),A=n("./node_modules/shallowequal/index.js"),x=r(A),w=n("./node_modules/antd/lib/radio/radio.js"),j=r(w),E=function(e){function t(e){(0,l.default)(this,t);var n=(0,p.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.onRadioChange=function(e){var t=n.state.value,r=e.target.value;"value"in n.props||n.setState({value:r});var o=n.props.onChange;o&&r!==t&&o(e)};var r=void 0;if("value"in e)r=e.value;else if("defaultValue"in e)r=e.defaultValue;else{var a=o(e.children);r=a&&a.value}return n.state={value:r},n}return(0,h.default)(t,e),(0,u.default)(t,[{key:"getChildContext",value:function(){return{radioGroup:{onChange:this.onRadioChange,value:this.state.value,disabled:this.props.disabled,name:this.props.name}}}},{key:"componentWillReceiveProps",value:function(e){if("value"in e)this.setState({value:e.value});else{var t=o(e.children);t&&this.setState({value:t.value})}}},{key:"shouldComponentUpdate",value:function(e,t){return!(0,x.default)(this.props,e)||!(0,x.default)(this.state,t)}},{key:"render",value:function(){var e=this,t=this.props,n=t.prefixCls,r=void 0===n?"ant-radio-group":n,o=t.className,a=void 0===o?"":o,s=t.options,l=(0,_.default)(r,(0,i.default)({},r+"-"+t.size,t.size),a),c=t.children;return s&&s.length>0&&(c=s.map(function(t,n){return"string"==typeof t?g.default.createElement(j.default,{key:n,disabled:e.props.disabled,value:t,onChange:e.onRadioChange,checked:e.state.value===t},t):g.default.createElement(j.default,{key:n,disabled:t.disabled||e.props.disabled,value:t.value,onChange:e.onRadioChange,checked:e.state.value===t.value},t.label)})),g.default.createElement("div",{className:l,style:t.style,onMouseEnter:t.onMouseEnter,onMouseLeave:t.onMouseLeave,id:t.id},c)}}]),t}(g.default.Component);t.default=E,E.defaultProps={disabled:!1},E.childContextTypes={radioGroup:v.default.any},e.exports=t.default},"./node_modules/antd/lib/radio/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.Group=t.Button=void 0;var o=n("./node_modules/antd/lib/radio/radio.js"),a=r(o),i=n("./node_modules/antd/lib/radio/group.js"),s=r(i),l=n("./node_modules/antd/lib/radio/radioButton.js"),c=r(l);a.default.Button=c.default,a.default.Group=s.default,t.Button=c.default,t.Group=s.default,t.default=a.default},"./node_modules/antd/lib/radio/radio.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/extends.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/prop-types/index.js"),y=r(v),_=n("./node_modules/rc-checkbox/lib/index.js"),A=r(_),x=n("./node_modules/classnames/index.js"),w=r(x),j=n("./node_modules/shallowequal/index.js"),E=r(j),S=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o=0:t.getState().selectedRowKeys.indexOf(r)>=0||n.indexOf(r)>=0}},{key:"render",value:function(){var e=this.props,t=e.type,n=e.rowIndex,r=e.disabled,o=e.onChange,a=this.state.checked;return"radio"===t?f.default.createElement(b.default,{disabled:r,onChange:o,value:n,checked:a}):f.default.createElement(m.default,{checked:a,disabled:r,onChange:o})}}]),t}(f.default.Component);t.default=v,e.exports=t.default},"./node_modules/antd/lib/table/SelectionCheckboxAll.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/inherits.js"),f=r(p),h=n("./node_modules/react/react.js"),m=r(h),g=n("./node_modules/antd/lib/checkbox/index.js"),b=r(g),v=n("./node_modules/antd/lib/dropdown/index.js"),y=r(v),_=n("./node_modules/antd/lib/menu/index.js"),A=r(_),x=n("./node_modules/antd/lib/icon/index.js"),w=r(x),j=n("./node_modules/classnames/index.js"),E=r(j),S=function(e){function t(e){(0,s.default)(this,t);var n=(0,d.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.handleSelectAllChagne=function(e){var t=e.target.checked;n.props.onSelect(t?"all":"removeAll",0,null)},n.defaultSelections=e.hideDefaultSelections?[]:[{key:"all",text:e.locale.selectAll,onSelect:function(){}},{key:"invert",text:e.locale.selectInvert,onSelect:function(){}}],n.state={checked:n.getCheckState(e),indeterminate:n.getIndeterminateState(e)},n}return(0,f.default)(t,e),(0,c.default)(t,[{key:"componentDidMount",value:function(){this.subscribe()}},{key:"componentWillReceiveProps",value:function(e){this.setCheckState(e)}},{key:"componentWillUnmount",value:function(){this.unsubscribe&&this.unsubscribe()}},{key:"subscribe",value:function(){var e=this,t=this.props.store;this.unsubscribe=t.subscribe(function(){e.setCheckState(e.props)})}},{key:"checkSelection",value:function(e,t,n){var r=this.props,o=r.store,a=r.getCheckboxPropsByItem,i=r.getRecordKey;return("every"===t||"some"===t)&&(n?e[t](function(e,t){return a(e,t).defaultChecked}):e[t](function(e,t){return o.getState().selectedRowKeys.indexOf(i(e,t))>=0}))}},{key:"setCheckState",value:function(e){var t=this.getCheckState(e),n=this.getIndeterminateState(e);t!==this.state.checked&&this.setState({checked:t}),n!==this.state.indeterminate&&this.setState({indeterminate:n})}},{key:"getCheckState",value:function(e){var t=e.store,n=e.data;return!!n.length&&(t.getState().selectionDirty?this.checkSelection(n,"every",!1):this.checkSelection(n,"every",!1)||this.checkSelection(n,"every",!0))}},{key:"getIndeterminateState",value:function(e){var t=e.store,n=e.data;return!!n.length&&(t.getState().selectionDirty?this.checkSelection(n,"some",!1)&&!this.checkSelection(n,"every",!1):this.checkSelection(n,"some",!1)&&!this.checkSelection(n,"every",!1)||this.checkSelection(n,"some",!0)&&!this.checkSelection(n,"every",!0))}},{key:"renderMenus",value:function(e){var t=this;return e.map(function(e,n){return m.default.createElement(A.default.Item,{key:e.key||n},m.default.createElement("div",{onClick:function(){t.props.onSelect(e.key,n,e.onSelect)}},e.text))})}},{key:"render",value:function(){var e=this.props,t=e.disabled,n=e.prefixCls,r=e.selections,o=e.getPopupContainer,i=this.state,s=i.checked,l=i.indeterminate,c=n+"-selection",u=null;if(r){var d=Array.isArray(r)?this.defaultSelections.concat(r):this.defaultSelections,p=m.default.createElement(A.default,{className:c+"-menu",selectedKeys:[]},this.renderMenus(d));u=d.length>0?m.default.createElement(y.default,{overlay:p,getPopupContainer:o},m.default.createElement("div",{className:c+"-down"},m.default.createElement(w.default,{type:"down"}))):null}return m.default.createElement("div",{className:c},m.default.createElement(b.default,{className:(0,E.default)((0,a.default)({},c+"-select-all-custom",u)),checked:s,indeterminate:l,disabled:t,onChange:this.handleSelectAllChagne}),u)}}]),t}(m.default.Component);t.default=S,e.exports=t.default},"./node_modules/antd/lib/table/Table.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(){}function a(e){e.stopPropagation(),e.nativeEvent.stopImmediatePropagation&&e.nativeEvent.stopImmediatePropagation()}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/babel-runtime/helpers/typeof.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/defineProperty.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/extends.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/createClass.js"),m=r(h),g=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),b=r(g),v=n("./node_modules/babel-runtime/helpers/inherits.js"),y=r(v),_=n("./node_modules/react/react.js"),A=r(_),x=n("./node_modules/react-dom/index.js"),w=n("./node_modules/rc-table/lib/index.js"),j=r(w),E=n("./node_modules/prop-types/index.js"),S=r(E),k=n("./node_modules/classnames/index.js"),C=r(k),T=n("./node_modules/antd/lib/pagination/index.js"),M=r(T),O=n("./node_modules/antd/lib/icon/index.js"),L=r(O),D=n("./node_modules/antd/lib/spin/index.js"),P=r(D),I=n("./node_modules/antd/lib/_util/warning.js"),R=r(I),N=n("./node_modules/antd/lib/table/filterDropdown.js"),B=r(N),F=n("./node_modules/antd/lib/table/createStore.js"),U=r(F),z=n("./node_modules/antd/lib/table/SelectionBox.js"),H=r(z),V=n("./node_modules/antd/lib/table/SelectionCheckboxAll.js"),Y=r(V),W=n("./node_modules/antd/lib/table/Column.js"),G=r(W),Q=n("./node_modules/antd/lib/table/ColumnGroup.js"),q=r(Q),K=n("./node_modules/antd/lib/table/util.js"),X=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o0&&(l.filters=u),"object"===(0,s.default)(r.pagination)&&"current"in r.pagination&&(l.pagination=(0,d.default)({},o,{current:n.state.pagination.current})),n.setState(l,function(){n.store.setState({selectionDirty:!1});var e=n.props.onChange;e&&e.apply(null,n.prepareParamsArguments((0,d.default)({},n.state,{selectionDirty:!1,filters:a,pagination:o})))})},n.handleSelect=function(e,t,r){var o=r.target.checked,a=n.store.getState().selectionDirty?[]:n.getDefaultSelection(),i=n.store.getState().selectedRowKeys.concat(a),s=n.getRecordKey(e,t);o?i.push(n.getRecordKey(e,t)):i=i.filter(function(e){return s!==e}),n.store.setState({selectionDirty:!0}),n.setSelectedRowKeys(i,{selectWay:"onSelect",record:e,checked:o})},n.handleRadioSelect=function(e,t,r){var o=r.target.checked,a=n.store.getState().selectionDirty?[]:n.getDefaultSelection(),i=n.store.getState().selectedRowKeys.concat(a);i=[n.getRecordKey(e,t)],n.store.setState({selectionDirty:!0}),n.setSelectedRowKeys(i,{selectWay:"onSelect",record:e,checked:o})},n.handleSelectRow=function(e,t,r){var o=n.getFlatCurrentPageData(),a=n.store.getState().selectionDirty?[]:n.getDefaultSelection(),i=n.store.getState().selectedRowKeys.concat(a),s=o.filter(function(e,t){return!n.getCheckboxPropsByItem(e,t).disabled}).map(function(e,t){return n.getRecordKey(e,t)}),l=[],c="",u=void 0;switch(e){case"all":s.forEach(function(e){i.indexOf(e)<0&&(i.push(e),l.push(e))}),c="onSelectAll",u=!0;break;case"removeAll":s.forEach(function(e){i.indexOf(e)>=0&&(i.splice(i.indexOf(e),1),l.push(e))}),c="onSelectAll",u=!1;break;case"invert":s.forEach(function(e){i.indexOf(e)<0?i.push(e):i.splice(i.indexOf(e),1),l.push(e),c="onSelectInvert"})}n.store.setState({selectionDirty:!0});var d=n.props.rowSelection,p=2;if(d&&d.hideDefaultSelections&&(p=0),t>=p&&"function"==typeof r)return r(s);n.setSelectedRowKeys(i,{selectWay:c,checked:u,changeRowKeys:l})},n.handlePageChange=function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),o=1;o0){var n=this.getSortStateFromColumns(this.columns);n.sortColumn===this.state.sortColumn&&n.sortOrder===this.state.sortOrder||this.setState(n)}if(this.getFilteredValueColumns(this.columns).length>0){var r=this.getFiltersFromColumns(this.columns),o=(0,d.default)({},this.state.filters);Object.keys(r).forEach(function(e){o[e]=r[e]}),this.isFiltersChanged(o)&&this.setState({filters:o})}}},{key:"setSelectedRowKeys",value:function(e,t){var n=this,r=t.selectWay,o=t.record,a=t.checked,i=t.changeRowKeys,s=this.props.rowSelection,l=void 0===s?{}:s;!l||"selectedRowKeys"in l||this.store.setState({selectedRowKeys:e});var c=this.getFlatData();if(l.onChange||l[r]){var u=c.filter(function(t,r){return e.indexOf(n.getRecordKey(t,r))>=0});if(l.onChange&&l.onChange(e,u),"onSelect"===r&&l.onSelect)l.onSelect(o,a,u);else if("onSelectAll"===r&&l.onSelectAll){var d=c.filter(function(e,t){return i.indexOf(n.getRecordKey(e,t))>=0});l.onSelectAll(a,u,d)}else"onSelectInvert"===r&&l.onSelectInvert&&l.onSelectInvert(e)}}},{key:"hasPagination",value:function(e){return!1!==(e||this.props).pagination}},{key:"isFiltersChanged",value:function(e){var t=this,n=!1;return Object.keys(e).length!==Object.keys(this.state.filters).length?n=!0:Object.keys(e).forEach(function(r){e[r]!==t.state.filters[r]&&(n=!0)}),n}},{key:"getSortOrderColumns",value:function(e){return(0,K.flatFilter)(e||this.columns||[],function(e){return"sortOrder"in e})}},{key:"getFilteredValueColumns",value:function(e){return(0,K.flatFilter)(e||this.columns||[],function(e){return void 0!==e.filteredValue})}},{key:"getFiltersFromColumns",value:function(e){var t=this,n={};return this.getFilteredValueColumns(e).forEach(function(e){n[t.getColumnKey(e)]=e.filteredValue}),n}},{key:"getSortStateFromColumns",value:function(e){var t=this.getSortOrderColumns(e).filter(function(e){return e.sortOrder})[0];return t?{sortColumn:t,sortOrder:t.sortOrder}:{sortColumn:null,sortOrder:null}}},{key:"getSorterFn",value:function(){var e=this.state,t=e.sortOrder,n=e.sortColumn;if(t&&n&&"function"==typeof n.sorter)return function(e,r){var o=n.sorter(e,r);return 0!==o?"descend"===t?-o:o:0}}},{key:"toggleSortOrder",value:function(e,t){var n=this.state,r=n.sortColumn,o=n.sortOrder;this.isSortColumn(t)?o===e?(o="",r=null):o=e:(o=e,r=t);var a={sortOrder:o,sortColumn:r};0===this.getSortOrderColumns().length&&this.setState(a);var i=this.props.onChange;i&&i.apply(null,this.prepareParamsArguments((0,d.default)({},this.state,a)))}},{key:"renderRowSelection",value:function(){var e=this,t=this.props,n=t.prefixCls,r=t.rowSelection,o=this.columns.concat();if(r){var a=this.getFlatCurrentPageData().filter(function(t,n){return!r.getCheckboxProps||!e.getCheckboxPropsByItem(t,n).disabled}),i=(0,C.default)(n+"-selection-column",(0,c.default)({},n+"-selection-column-custom",r.selections)),s={key:"selection-column",render:this.renderSelectionBox(r.type),className:i};if("radio"!==r.type){var l=a.every(function(t,n){return e.getCheckboxPropsByItem(t,n).disabled});s.title=A.default.createElement(Y.default,{store:this.store,locale:this.getLocale(),data:a,getCheckboxPropsByItem:this.getCheckboxPropsByItem,getRecordKey:this.getRecordKey,disabled:l,prefixCls:n,onSelect:this.handleSelectRow,selections:r.selections,hideDefaultSelections:r.hideDefaultSelections,getPopupContainer:this.getPopupContainer})}o.some(function(e){return"left"===e.fixed||!0===e.fixed})&&(s.fixed="left"),o[0]&&"selection-column"===o[0].key?o[0]=s:o.unshift(s)}return o}},{key:"getColumnKey",value:function(e,t){return e.key||e.dataIndex||t}},{key:"getMaxCurrent",value:function(e){var t=this.state.pagination,n=t.current,r=t.pageSize;return(n-1)*r>=e?Math.floor((e-1)/r)+1:n}},{key:"isSortColumn",value:function(e){var t=this.state.sortColumn;return!(!e||!t)&&this.getColumnKey(t)===this.getColumnKey(e)}},{key:"renderColumnsDropdown",value:function(e){var t=this,n=this.props,r=n.prefixCls,o=n.dropdownPrefixCls,a=this.state.sortOrder,i=this.getLocale();return(0,K.treeMap)(e,function(e,n){var s=(0,d.default)({},e),l=t.getColumnKey(s,n),c=void 0,u=void 0;if(s.filters&&s.filters.length>0||s.filterDropdown){var p=t.state.filters[l]||[];c=A.default.createElement(B.default,{locale:i,column:s,selectedKeys:p,confirmFilter:t.handleFilter,prefixCls:r+"-filter",dropdownPrefixCls:o||"ant-dropdown",getPopupContainer:t.getPopupContainer})}if(s.sorter){var f=t.isSortColumn(s);f&&(s.className=s.className||"",a&&(s.className+=" "+r+"-column-sort"));var h=f&&"ascend"===a,m=f&&"descend"===a;u=A.default.createElement("div",{className:r+"-column-sorter"},A.default.createElement("span",{className:r+"-column-sorter-up "+(h?"on":"off"),title:"↑",onClick:function(){return t.toggleSortOrder("ascend",s)}},A.default.createElement(L.default,{type:"caret-up"})),A.default.createElement("span",{className:r+"-column-sorter-down "+(m?"on":"off"),title:"↓",onClick:function(){return t.toggleSortOrder("descend",s)}},A.default.createElement(L.default,{type:"caret-down"})))}return s.title=A.default.createElement("span",null,s.title,u,c),s})}},{key:"renderPagination",value:function(){if(!this.hasPagination())return null;var e="default",t=this.state.pagination;t.size?e=t.size:"middle"!==this.props.size&&"small"!==this.props.size||(e="small");var n=t.total||this.getLocalData().length;return n>0?A.default.createElement(M.default,(0,d.default)({key:"pagination"},t,{className:(0,C.default)(t.className,this.props.prefixCls+"-pagination"),onChange:this.handlePageChange,total:n,size:e,current:this.getMaxCurrent(n),onShowSizeChange:this.handleShowSizeChange})):null}},{key:"prepareParamsArguments",value:function(e){var t=(0,d.default)({},e.pagination);delete t.onChange,delete t.onShowSizeChange;var n=e.filters,r={};return e.sortColumn&&e.sortOrder&&(r.column=e.sortColumn,r.order=e.sortOrder,r.field=e.sortColumn.dataIndex,r.columnKey=this.getColumnKey(e.sortColumn)),[t,n,r]}},{key:"findColumn",value:function(e){var t=this,n=void 0;return(0,K.treeMap)(this.columns,function(r){t.getColumnKey(r)===e&&(n=r)}),n}},{key:"getCurrentPageData",value:function(){var e=this.getLocalData(),t=void 0,n=void 0,r=this.state;return this.hasPagination()?(n=r.pagination.pageSize,t=this.getMaxCurrent(r.pagination.total||e.length)):(n=Number.MAX_VALUE,t=1),(e.length>n||n===Number.MAX_VALUE)&&(e=e.filter(function(e,r){return r>=(t-1)*n&&r=0?delete t[e.key]:t[e.key]=e.keyPath,n.setState({keyPathOfSelectedItem:t})}},n.renderFilterIcon=function(){var e=n.props,t=e.column,r=e.locale,o=e.prefixCls,i=t.filterIcon,s=n.props.selectedKeys.length>0?o+"-selected":"";return i?m.default.cloneElement(i,{title:r.filterTitle,className:(0,w.default)(i.className,(0,a.default)({},o+"-icon",!0))}):m.default.createElement(k.default,{title:r.filterTitle,type:"filter",className:s})};var r="filterDropdownVisible"in e.column&&e.column.filterDropdownVisible;return n.state={selectedKeys:e.selectedKeys,keyPathOfSelectedItem:{},visible:r},n}return(0,f.default)(t,e),(0,c.default)(t,[{key:"componentDidMount",value:function(){var e=this.props.column;this.setNeverShown(e)}},{key:"componentWillReceiveProps",value:function(e){var t=e.column;this.setNeverShown(t);var n={};"selectedKeys"in e&&(n.selectedKeys=e.selectedKeys),"filterDropdownVisible"in t&&(n.visible=t.filterDropdownVisible),Object.keys(n).length>0&&this.setState(n)}},{key:"setVisible",value:function(e){var t=this.props.column;"filterDropdownVisible"in t||this.setState({visible:e}),t.onFilterDropdownVisibleChange&&t.onFilterDropdownVisibleChange(e)}},{key:"confirmFilter",value:function(){this.state.selectedKeys!==this.props.selectedKeys&&this.props.confirmFilter(this.props.column,this.state.selectedKeys)}},{key:"renderMenuItem",value:function(e){var t=this.props.column,n=!("filterMultiple"in t)||t.filterMultiple,r=n?m.default.createElement(T.default,{checked:this.state.selectedKeys.indexOf(e.value.toString())>=0}):m.default.createElement(O.default,{checked:this.state.selectedKeys.indexOf(e.value.toString())>=0});return m.default.createElement(v.Item,{key:e.value},r,m.default.createElement("span",null,e.text))}},{key:"hasSubMenu",value:function(){var e=this.props.column.filters;return(void 0===e?[]:e).some(function(e){return!!(e.children&&e.children.length>0)})}},{key:"renderMenus",value:function(e){var t=this;return e.map(function(e){if(e.children&&e.children.length>0){var n=t.state.keyPathOfSelectedItem,r=Object.keys(n).some(function(t){return n[t].indexOf(e.value)>=0}),o=r?t.props.dropdownPrefixCls+"-submenu-contain-selected":"";return m.default.createElement(v.SubMenu,{title:e.text,className:o,key:e.value.toString()},t.renderMenus(e.children))}return t.renderMenuItem(e)})}},{key:"render",value:function(){var e=this.props,t=e.column,n=e.locale,r=e.prefixCls,o=e.dropdownPrefixCls,i=e.getPopupContainer,s=!("filterMultiple"in t)||t.filterMultiple,l=(0,w.default)((0,a.default)({},o+"-menu-without-submenu",!this.hasSubMenu())),c=t.filterDropdown?m.default.createElement(D.default,null,t.filterDropdown):m.default.createElement(D.default,{className:r+"-dropdown"},m.default.createElement(y.default,{multiple:s,onClick:this.handleMenuItemClick,prefixCls:o+"-menu",className:l,onSelect:this.setSelectedKeys,onDeselect:this.setSelectedKeys,selectedKeys:this.state.selectedKeys},this.renderMenus(t.filters)),m.default.createElement("div",{className:r+"-dropdown-btns"},m.default.createElement("a",{className:r+"-dropdown-link confirm",onClick:this.handleConfirm},n.filterConfirm),m.default.createElement("a",{className:r+"-dropdown-link clear",onClick:this.handleClearFilters},n.filterReset)));return m.default.createElement(E.default,{trigger:["click"],overlay:c,visible:!this.neverShown&&this.state.visible,onVisibleChange:this.onVisibleChange,getPopupContainer:i},this.renderFilterIcon())}}]),t}(m.default.Component);t.default=P,P.defaultProps={handleFilter:function(){},column:{}},e.exports=t.default},"./node_modules/antd/lib/table/index.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/antd/lib/table/Table.js"),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=o.default,e.exports=t.default},"./node_modules/antd/lib/table/util.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"children",n=[];return function e(r){r.forEach(function(r){if(r[t]){var o=(0,d.default)({},r);delete o[t],n.push(o),r[t].length>0&&e(r[t])}else n.push(r)})}(e),n}function a(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"children";return e.map(function(e,r){var o={};return e[n]&&(o[n]=a(e[n],t,n)),(0,d.default)({},t(e,r),o)})}function i(e,t){return e.reduce(function(e,n){if(t(n)&&e.push(n),n.children){var r=i(n.children,t);e.push.apply(e,(0,c.default)(r))}return e},[])}function s(e){var t=[];return f.default.Children.forEach(e,function(e){if(f.default.isValidElement(e)){var n=(0,d.default)({},e.props);e.key&&(n.key=e.key),e.type&&e.type.__ANT_TABLE_COLUMN_GROUP&&(n.children=s(n.children)),t.push(n)}}),t}Object.defineProperty(t,"__esModule",{value:!0});var l=n("./node_modules/babel-runtime/helpers/toConsumableArray.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/extends.js"),d=r(u);t.flatArray=o,t.treeMap=a,t.flatFilter=i,t.normalizeColumns=s;var p=n("./node_modules/react/react.js"),f=r(p)},"./node_modules/antd/lib/tabs/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/defineProperty.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/typeof.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/createClass.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),m=r(h),g=n("./node_modules/babel-runtime/helpers/inherits.js"),b=r(g),v=n("./node_modules/react/react.js"),y=r(v),_=n("./node_modules/react-dom/index.js"),A=n("./node_modules/rc-tabs/lib/index.js"),x=r(A),w=n("./node_modules/rc-tabs/lib/ScrollableInkTabBar.js"),j=r(w),E=n("./node_modules/rc-tabs/lib/TabContent.js"),S=r(E),k=n("./node_modules/classnames/index.js"),C=r(k),T=n("./node_modules/antd/lib/icon/index.js"),M=r(T),O=n("./node_modules/antd/lib/_util/warning.js"),L=r(O),D=n("./node_modules/antd/lib/_util/isFlexSupported.js"),P=r(D),I=function(e){function t(){(0,d.default)(this,t);var e=(0,m.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.createNewTab=function(t){var n=e.props.onEdit;n&&n(t,"add")},e.removeTab=function(t,n){if(n.stopPropagation(),t){var r=e.props.onEdit;r&&r(t,"remove")}},e.handleChange=function(t){var n=e.props.onChange;n&&n(t)},e}return(0,b.default)(t,e),(0,f.default)(t,[{key:"componentDidMount",value:function(){var e=(0,_.findDOMNode)(this);e&&!(0,P.default)()&&-1===e.className.indexOf(" no-flex")&&(e.className+=" no-flex")}},{key:"render",value:function(){var e,t=this,n=this.props,r=n.prefixCls,o=n.className,i=void 0===o?"":o,l=n.size,u=n.type,d=void 0===u?"line":u,p=n.tabPosition,f=n.children,h=n.tabBarExtraContent,m=n.tabBarStyle,g=n.hideAdd,b=n.onTabClick,_=n.onPrevClick,A=n.onNextClick,w=n.animated,E=void 0===w||w,k="object"===(void 0===E?"undefined":(0,c.default)(E))?{inkBarAnimated:E.inkBar,tabPaneAnimated:E.tabPane}:{inkBarAnimated:E,tabPaneAnimated:E},T=k.inkBarAnimated,O=k.tabPaneAnimated;"line"!==d&&(O="animated"in this.props&&O),(0,L.default)(!(d.indexOf("card")>=0&&"small"===l),"Tabs[type=card|editable-card] doesn't have small size, it's by designed.");var D=(0,C.default)(i,(e={},(0,s.default)(e,r+"-mini","small"===l||"mini"===l),(0,s.default)(e,r+"-vertical","left"===p||"right"===p),(0,s.default)(e,r+"-card",d.indexOf("card")>=0),(0,s.default)(e,r+"-"+d,!0),(0,s.default)(e,r+"-no-animation",!O),e)),P=void 0;"editable-card"===d&&(P=[],y.default.Children.forEach(f,function(e,n){var o=e.props.closable;o=void 0===o||o;var a=o?y.default.createElement(M.default,{type:"close",onClick:function(n){return t.removeTab(e.key,n)}}):null;P.push((0,v.cloneElement)(e,{tab:y.default.createElement("div",{className:o?void 0:r+"-tab-unclosable"},e.props.tab,a),key:e.key||n}))}),g||(h=y.default.createElement("span",null,y.default.createElement(M.default,{type:"plus",className:r+"-new-tab",onClick:this.createNewTab}),h))),h=h?y.default.createElement("div",{className:r+"-extra-content"},h):null;var I=function(){return y.default.createElement(j.default,{inkBarAnimated:T,extraContent:h,onTabClick:b,onPrevClick:_,onNextClick:A,style:m})};return y.default.createElement(x.default,(0,a.default)({},this.props,{className:D,tabBarPosition:p,renderTabBar:I,renderTabContent:function(){return y.default.createElement(S.default,{animated:O,animatedWithMargin:!0})},onChange:this.handleChange}),P||f)}}]),t}(y.default.Component);t.default=I,I.TabPane=A.TabPane,I.defaultProps={prefixCls:"ant-tabs",hideAdd:!1},e.exports=t.default},"./node_modules/antd/lib/tag/CheckableTag.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/defineProperty.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/classnames/index.js"),y=r(v),_=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o-1||e.indexOf("h")>-1||e.indexOf("k")>-1,showMinute:e.indexOf("m")>-1,showSecond:e.indexOf("s")>-1}}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/defineProperty.js"),i=r(a),s=n("./node_modules/babel-runtime/helpers/extends.js"),l=r(s),c=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),u=r(c),d=n("./node_modules/babel-runtime/helpers/createClass.js"),p=r(d),f=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),h=r(f),m=n("./node_modules/babel-runtime/helpers/inherits.js"),g=r(m);t.generateShowHourMinuteSecond=o;var b=n("./node_modules/react/react.js"),v=r(b),y=n("./node_modules/moment/src/moment.js"),_=r(y),A=n("./node_modules/rc-time-picker/lib/TimePicker.js"),x=r(A),w=n("./node_modules/classnames/index.js"),j=r(w),E=n("./node_modules/antd/lib/locale-provider/injectLocale.js"),S=r(E),k=n("./node_modules/antd/lib/time-picker/locale/zh_CN.js"),C=r(k),T=function(e){function t(e){(0,u.default)(this,t);var n=(0,h.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.handleChange=function(e){"value"in n.props||n.setState({value:e});var t=n.props,r=t.onChange,o=t.format,a=void 0===o?"HH:mm:ss":o;r&&r(e,e&&e.format(a)||"")},n.handleOpenClose=function(e){var t=e.open,r=n.props.onOpenChange;r&&r(t)},n.saveTimePicker=function(e){n.timePickerRef=e};var r=e.value||e.defaultValue;if(r&&!_.default.isMoment(r))throw new Error("The value/defaultValue of TimePicker must be a moment object after `antd@2.0`, see: https://u.ant.design/time-picker-value");return n.state={value:r},n}return(0,g.default)(t,e),(0,p.default)(t,[{key:"componentWillReceiveProps",value:function(e){"value"in e&&this.setState({value:e.value})}},{key:"focus",value:function(){this.timePickerRef.focus()}},{key:"getDefaultFormat",value:function(){var e=this.props,t=e.format,n=e.use12Hours;return t||(n?"h:mm:ss a":"HH:mm:ss")}},{key:"render",value:function(){var e=(0,l.default)({},this.props);delete e.defaultValue;var t=this.getDefaultFormat(),n=(0,j.default)(e.className,(0,i.default)({},e.prefixCls+"-"+e.size,!!e.size)),r=function(t){return e.addon?v.default.createElement("div",{className:e.prefixCls+"-panel-addon"},e.addon(t)):null};return v.default.createElement(x.default,(0,l.default)({},o(t),e,{ref:this.saveTimePicker,format:t,className:n,value:this.state.value,placeholder:void 0===e.placeholder?this.getLocale().placeholder:e.placeholder,onChange:this.handleChange,onOpen:this.handleOpenClose,onClose:this.handleOpenClose,addon:r}))}}]),t}(v.default.Component);T.defaultProps={prefixCls:"ant-time-picker",align:{offset:[0,-2]},disabled:!1,disabledHours:void 0,disabledMinutes:void 0,disabledSeconds:void 0,hideDisabledOptions:!1,placement:"bottomLeft",transitionName:"slide-up"};var M=(0,S.default)("TimePicker",C.default);t.default=M(T)},"./node_modules/antd/lib/time-picker/locale/zh_CN.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={placeholder:"请选择时间"};t.default=r,e.exports=t.default},"./node_modules/antd/lib/tooltip/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/inherits.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/extends.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/rc-tooltip/lib/index.js"),y=r(v),_=n("./node_modules/classnames/index.js"),A=r(_),x=n("./node_modules/antd/lib/tooltip/placements.js"),w=r(x),j=function(e,t){var n={},r=(0,m.default)({},e);return t.forEach(function(t){e&&t in e&&(n[t]=e[t],delete r[t])}),{picked:n,omited:r}},E=function(e){function t(e){(0,s.default)(this,t);var n=(0,d.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.onVisibleChange=function(e){var t=n.props.onVisibleChange;"visible"in n.props||n.setState({visible:!n.isNoTitle()&&e}),t&&!n.isNoTitle()&&t(e)},n.onPopupAlign=function(e,t){var r=n.getPlacements(),o=Object.keys(r).filter(function(e){return r[e].points[0]===t.points[0]&&r[e].points[1]===t.points[1]})[0];if(o){var a=e.getBoundingClientRect(),i={top:"50%",left:"50%"};o.indexOf("top")>=0||o.indexOf("Bottom")>=0?i.top=a.height-t.offset[1]+"px":(o.indexOf("Top")>=0||o.indexOf("bottom")>=0)&&(i.top=-t.offset[1]+"px"),o.indexOf("left")>=0||o.indexOf("Right")>=0?i.left=a.width-t.offset[0]+"px":(o.indexOf("right")>=0||o.indexOf("Left")>=0)&&(i.left=-t.offset[0]+"px"),e.style.transformOrigin=i.left+" "+i.top}},n.state={visible:!!e.visible||!!e.defaultVisible},n}return(0,f.default)(t,e),(0,c.default)(t,[{key:"componentWillReceiveProps",value:function(e){"visible"in e&&this.setState({visible:e.visible})}},{key:"getPopupDomNode",value:function(){return this.refs.tooltip.getPopupDomNode()}},{key:"getPlacements",value:function(){var e=this.props,t=e.builtinPlacements,n=e.arrowPointAtCenter,r=e.autoAdjustOverflow;return t||(0,w.default)({arrowPointAtCenter:n,verticalArrowShift:8,autoAdjustOverflow:r})}},{key:"isHoverTrigger",value:function(){var e=this.props.trigger;return!e||"hover"===e||!!Array.isArray(e)&&e.indexOf("hover")>=0}},{key:"getDisabledCompatibleChildren",value:function(e){if((e.type.__ANT_BUTTON||"button"===e.type)&&e.props.disabled&&this.isHoverTrigger()){var t=j(e.props.style,["position","left","right","top","bottom","float","display","zIndex"]),n=t.picked,r=t.omited,o=(0,m.default)({display:"inline-block"},n,{cursor:"not-allowed"}),a=(0,m.default)({},r,{pointerEvents:"none"}),i=(0,g.cloneElement)(e,{style:a,className:null});return b.default.createElement("span",{style:o,className:e.props.className},i)}return e}},{key:"isNoTitle",value:function(){var e=this.props,t=e.title,n=e.overlay;return!t&&!n}},{key:"render",value:function(){var e=this.props,t=this.state,n=e.prefixCls,r=e.title,o=e.overlay,i=e.openClassName,s=e.getPopupContainer,l=e.getTooltipContainer,c=e.children,u=t.visible;"visible"in e||!this.isNoTitle()||(u=!1);var d=this.getDisabledCompatibleChildren(b.default.isValidElement(c)?c:b.default.createElement("span",null,c)),p=d.props,f=(0,A.default)(p.className,(0,a.default)({},i||n+"-open",!0));return b.default.createElement(y.default,(0,m.default)({},this.props,{getTooltipContainer:s||l,ref:"tooltip",builtinPlacements:this.getPlacements(),overlay:o||r||"",visible:u,onVisibleChange:this.onVisibleChange,onPopupAlign:this.onPopupAlign}),u?(0,g.cloneElement)(d,{className:f}):d)}}]),t}(b.default.Component);t.default=E,E.defaultProps={prefixCls:"ant-tooltip",placement:"top",transitionName:"zoom-big-fast",mouseEnterDelay:.1,mouseLeaveDelay:.1,arrowPointAtCenter:!1,autoAdjustOverflow:!0},e.exports=t.default},"./node_modules/antd/lib/tooltip/placements.js":function(e,t,n){"use strict";function r(e){return"boolean"==typeof e?e?l:c:(0,i.default)({},c,e)}function o(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.arrowWidth,n=void 0===t?5:t,o=e.horizontalArrowShift,a=void 0===o?16:o,l=e.verticalArrowShift,c=void 0===l?12:l,d=e.autoAdjustOverflow,p=void 0===d||d,f={left:{points:["cr","cl"],offset:[-4,0]},right:{points:["cl","cr"],offset:[4,0]},top:{points:["bc","tc"],offset:[0,-4]},bottom:{points:["tc","bc"],offset:[0,4]},topLeft:{points:["bl","tc"],offset:[-(a+n),-4]},leftTop:{points:["tr","cl"],offset:[-4,-(c+n)]},topRight:{points:["br","tc"],offset:[a+n,-4]},rightTop:{points:["tl","cr"],offset:[4,-(c+n)]},bottomRight:{points:["tr","bc"],offset:[a+n,4]},rightBottom:{points:["bl","cr"],offset:[4,c+n]},bottomLeft:{points:["tl","bc"],offset:[-(a+n),4]},leftBottom:{points:["br","cl"],offset:[-4,c+n]}};return Object.keys(f).forEach(function(t){f[t]=e.arrowPointAtCenter?(0,i.default)({},f[t],{overflow:r(p),targetOffset:u}):(0,i.default)({},s.placements[t],{overflow:r(p)})}),f}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/extends.js"),i=function(e){return e&&e.__esModule?e:{default:e}}(a);t.getOverflowOptions=r,t.default=o;var s=n("./node_modules/rc-tooltip/lib/placements.js"),l={adjustX:1,adjustY:1},c={adjustX:0,adjustY:0},u=[0,0]},"./node_modules/antd/lib/transfer/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(){}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/toConsumableArray.js"),i=r(a),s=n("./node_modules/babel-runtime/helpers/defineProperty.js"),l=r(s),c=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),u=r(c),d=n("./node_modules/babel-runtime/helpers/createClass.js"),p=r(d),f=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),h=r(f),m=n("./node_modules/babel-runtime/helpers/inherits.js"),g=r(m),b=n("./node_modules/react/react.js"),v=r(b),y=n("./node_modules/prop-types/index.js"),_=r(y),A=n("./node_modules/classnames/index.js"),x=r(A),w=n("./node_modules/antd/lib/transfer/list.js"),j=r(w),E=n("./node_modules/antd/lib/transfer/operation.js"),S=r(E),k=n("./node_modules/antd/lib/transfer/search.js"),C=r(k),T=n("./node_modules/antd/lib/locale-provider/injectLocale.js"),M=r(T),O=function(e){function t(e){(0,u.default)(this,t);var n=(0,h.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.moveTo=function(e){var t=n.props,r=t.targetKeys,o=void 0===r?[]:r,a=t.dataSource,i=void 0===a?[]:a,s=t.onChange,c=n.state,u=c.sourceSelectedKeys,d=c.targetSelectedKeys,p="right"===e?u:d,f=p.filter(function(e){return!i.some(function(t){return!(e!==t.key||!t.disabled)})}),h="right"===e?f.concat(o):o.filter(function(e){return-1===f.indexOf(e)}),m="right"===e?"left":"right";n.setState((0,l.default)({},n.getSelectedKeysName(m),[])),n.handleSelectChange(m,[]),s&&s(h,e,f)},n.moveToLeft=function(){return n.moveTo("left")},n.moveToRight=function(){return n.moveTo("right")},n.handleSelectAll=function(e,t,r){var o=n.state[n.getSelectedKeysName(e)]||[],a=t.map(function(e){return e.key}),s=o.filter(function(e){return-1===a.indexOf(e)}),c=[].concat((0,i.default)(o));a.forEach(function(e){-1===c.indexOf(e)&&c.push(e)});var u=r?s:c;n.handleSelectChange(e,u),n.props.selectedKeys||n.setState((0,l.default)({},n.getSelectedKeysName(e),u))},n.handleLeftSelectAll=function(e,t){return n.handleSelectAll("left",e,t)},n.handleRightSelectAll=function(e,t){return n.handleSelectAll("right",e,t)},n.handleFilter=function(e,t){n.setState((0,l.default)({},e+"Filter",t.target.value)),n.props.onSearchChange&&n.props.onSearchChange(e,t)},n.handleLeftFilter=function(e){return n.handleFilter("left",e)},n.handleRightFilter=function(e){return n.handleFilter("right",e)},n.handleClear=function(e){n.setState((0,l.default)({},e+"Filter",""))},n.handleLeftClear=function(){return n.handleClear("left")},n.handleRightClear=function(){return n.handleClear("right")},n.handleSelect=function(e,t,r){var o=n.state,a=o.sourceSelectedKeys,s=o.targetSelectedKeys,c=[].concat("left"===e?(0,i.default)(a):(0,i.default)(s)),u=c.indexOf(t.key);u>-1&&c.splice(u,1),r&&c.push(t.key),n.handleSelectChange(e,c),n.props.selectedKeys||n.setState((0,l.default)({},n.getSelectedKeysName(e),c))},n.handleLeftSelect=function(e,t){return n.handleSelect("left",e,t)},n.handleRightSelect=function(e,t){return n.handleSelect("right",e,t)},n.handleScroll=function(e,t){var r=n.props.onScroll;r&&r(e,t)},n.handleLeftScroll=function(e){return n.handleScroll("left",e)},n.handleRightScroll=function(e){return n.handleScroll("right",e)};var r=e.selectedKeys,o=void 0===r?[]:r,a=e.targetKeys,s=void 0===a?[]:a;return n.state={leftFilter:"",rightFilter:"",sourceSelectedKeys:o.filter(function(e){return-1===s.indexOf(e)}),targetSelectedKeys:o.filter(function(e){return s.indexOf(e)>-1})},n}return(0,g.default)(t,e),(0,p.default)(t,[{key:"componentWillReceiveProps",value:function(e){var t=this.state,n=t.sourceSelectedKeys,r=t.targetSelectedKeys;if((e.targetKeys!==this.props.targetKeys||e.dataSource!==this.props.dataSource)&&(this.splitedDataSource=null,!e.selectedKeys)){var o=e.dataSource,a=e.targetKeys,i=void 0===a?[]:a,s=[],l=[];o.forEach(function(e){var t=e.key;n.includes(t)&&!i.includes(t)&&s.push(t),r.includes(t)&&i.includes(t)&&l.push(t)}),this.setState({sourceSelectedKeys:s,targetSelectedKeys:l})}if(e.selectedKeys){var c=e.targetKeys||[];this.setState({sourceSelectedKeys:e.selectedKeys.filter(function(e){return!c.includes(e)}),targetSelectedKeys:e.selectedKeys.filter(function(e){return c.includes(e)})})}}},{key:"splitDataSource",value:function(e){if(this.splitedDataSource)return this.splitedDataSource;var t=e.dataSource,n=e.rowKey,r=e.targetKeys,o=void 0===r?[]:r,a=[],i=new Array(o.length);return t.forEach(function(e){n&&(e.key=n(e));var t=o.indexOf(e.key);-1!==t?i[t]=e:a.push(e)}),this.splitedDataSource={leftDataSource:a,rightDataSource:i},this.splitedDataSource}},{key:"handleSelectChange",value:function(e,t){var n=this.state,r=n.sourceSelectedKeys,o=n.targetSelectedKeys,a=this.props.onSelectChange;a&&("left"===e?a(t,o):a(r,t))}},{key:"getTitles",value:function(){var e=this.props;return e.titles?e.titles:this.getLocale().titles}},{key:"getSelectedKeysName",value:function(e){return"left"===e?"sourceSelectedKeys":"targetSelectedKeys"}},{key:"render",value:function(){var e=this.getLocale(),t=this.props,n=t.prefixCls,r=void 0===n?"ant-transfer":n,o=t.className,a=t.operations,i=void 0===a?[]:a,s=t.showSearch,l=t.notFoundContent,c=void 0===l?e.notFoundContent:l,u=t.searchPlaceholder,d=void 0===u?e.searchPlaceholder:u,p=t.body,f=t.footer,h=t.listStyle,m=t.filterOption,g=t.render,b=t.lazy,y=this.state,_=y.leftFilter,A=y.rightFilter,w=y.sourceSelectedKeys,E=y.targetSelectedKeys,k=this.splitDataSource(this.props),C=k.leftDataSource,T=k.rightDataSource,M=E.length>0,O=w.length>0,L=(0,x.default)(o,r),D=this.getTitles();return v.default.createElement("div",{className:L},v.default.createElement(j.default,{prefixCls:r+"-list",titleText:D[0],dataSource:C,filter:_,filterOption:m,style:h,checkedKeys:w,handleFilter:this.handleLeftFilter,handleClear:this.handleLeftClear,handleSelect:this.handleLeftSelect,handleSelectAll:this.handleLeftSelectAll,render:g,showSearch:s,searchPlaceholder:d,notFoundContent:c,itemUnit:e.itemUnit,itemsUnit:e.itemsUnit,body:p,footer:f,lazy:b,onScroll:this.handleLeftScroll}),v.default.createElement(S.default,{className:r+"-operation",rightActive:O,rightArrowText:i[0],moveToRight:this.moveToRight,leftActive:M,leftArrowText:i[1],moveToLeft:this.moveToLeft}),v.default.createElement(j.default,{prefixCls:r+"-list",titleText:D[1],dataSource:T,filter:A,filterOption:m,style:h,checkedKeys:E,handleFilter:this.handleRightFilter,handleClear:this.handleRightClear,handleSelect:this.handleRightSelect,handleSelectAll:this.handleRightSelectAll,render:g,showSearch:s,searchPlaceholder:d,notFoundContent:c,itemUnit:e.itemUnit,itemsUnit:e.itemsUnit,body:p,footer:f,lazy:b,onScroll:this.handleRightScroll}))}}]),t}(v.default.Component);O.List=j.default,O.Operation=S.default,O.Search=C.default,O.defaultProps={dataSource:[],render:o,showSearch:!1},O.propTypes={prefixCls:_.default.string,dataSource:_.default.array,render:_.default.func,targetKeys:_.default.array,onChange:_.default.func,height:_.default.number,listStyle:_.default.object,className:_.default.string,titles:_.default.array,operations:_.default.array,showSearch:_.default.bool,filterOption:_.default.func,searchPlaceholder:_.default.string,notFoundContent:_.default.node,body:_.default.func,footer:_.default.func,rowKey:_.default.func,lazy:_.default.oneOfType([_.default.object,_.default.bool])};var L=(0,M.default)("Transfer",{titles:["",""],searchPlaceholder:"Search",notFoundContent:"Not Found"});t.default=L(O),e.exports=t.default},"./node_modules/antd/lib/transfer/item.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/defineProperty.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/classnames/index.js"),y=r(v),_=n("./node_modules/rc-util/lib/PureRenderMixin.js"),A=r(_),x=n("./node_modules/react-lazy-load/lib/LazyLoad.js"),w=r(x),j=n("./node_modules/antd/lib/checkbox/index.js"),E=r(j),S=function(e){function t(){return(0,c.default)(this,t),(0,f.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return(0,m.default)(t,e),(0,d.default)(t,[{key:"shouldComponentUpdate",value:function(){for(var e=arguments.length,t=Array(e),n=0;n=0},n.renderItem=function(e){var t=n.props.render,r=void 0===t?o:t,i=r(e),s=a(i);return{renderedText:s?i.value:i,renderedEl:s?i.label:i}},n.state={mounted:!1},n}return(0,b.default)(t,e),(0,f.default)(t,[{key:"componentDidMount",value:function(){var e=this;this.timer=setTimeout(function(){e.setState({mounted:!0})},0)}},{key:"componentWillUnmount",value:function(){clearTimeout(this.timer),clearTimeout(this.triggerScrollTimer)}},{key:"shouldComponentUpdate",value:function(){for(var e=arguments.length,t=Array(e),n=0;n=0})?"all":"part"}},{key:"render",value:function(){var e=this,t=this.props,n=t.prefixCls,r=t.dataSource,a=t.titleText,i=t.checkedKeys,l=t.lazy,u=t.body,d=void 0===u?o:u,p=t.footer,f=void 0===p?o:p,h=t.showSearch,m=t.style,g=t.filter,b=t.searchPlaceholder,v=t.notFoundContent,_=t.itemUnit,A=t.itemsUnit,w=t.onScroll,E=f((0,c.default)({},this.props)),S=d((0,c.default)({},this.props)),k=(0,x.default)(n,(0,s.default)({},n+"-with-footer",!!E)),T=[],O=[],D=r.map(function(t){var r=e.renderItem(t),o=r.renderedText,a=r.renderedEl;if(g&&g.trim()&&!e.matchFilter(o,t))return null;O.push(t),t.disabled||T.push(t);var s=i.indexOf(t.key)>=0;return y.default.createElement(L.default,{key:t.key,item:t,lazy:l,renderedText:o,renderedEl:a,checked:s,prefixCls:n,onClick:e.handleSelect})}),P=r.length>1?A:_,I=h?y.default.createElement("div",{className:n+"-body-search-wrapper"},y.default.createElement(M.default,{prefixCls:n+"-search",onChange:this.handleFilter,handleClear:this.handleClear,placeholder:b,value:g})):null,R=S||y.default.createElement("div",{className:h?n+"-body "+n+"-body-with-search":n+"-body"},I,y.default.createElement(j.default,{component:"ul",componentProps:{onScroll:w},className:n+"-content",transitionName:this.state.mounted?n+"-content-item-highlight":"",transitionLeave:!1},D),y.default.createElement("div",{className:n+"-body-not-found"},v)),N=E?y.default.createElement("div",{className:n+"-footer"},E):null,B=this.getCheckStatus(T),F="all"===B,U=y.default.createElement(C.default,{ref:"checkbox",checked:F,indeterminate:"part"===B,onChange:function(){return e.props.handleSelectAll(T,F)}});return y.default.createElement("div",{className:k,style:m},y.default.createElement("div",{className:n+"-header"},U,y.default.createElement("span",{className:n+"-header-selected"},y.default.createElement("span",null,(i.length>0?i.length+"/":"")+O.length," ",P),y.default.createElement("span",{className:n+"-header-title"},a))),R,N)}}]),t}(y.default.Component);t.default=I,I.defaultProps={dataSource:[],titleText:"",showSearch:!1,render:o,lazy:{}},e.exports=t.default},"./node_modules/antd/lib/transfer/operation.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(){}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),i=r(a),s=n("./node_modules/babel-runtime/helpers/createClass.js"),l=r(s),c=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),u=r(c),d=n("./node_modules/babel-runtime/helpers/inherits.js"),p=r(d),f=n("./node_modules/react/react.js"),h=r(f),m=n("./node_modules/antd/lib/button/index.js"),g=r(m),b=n("./node_modules/antd/lib/icon/index.js"),v=r(b),y=function(e){function t(){return(0,i.default)(this,t),(0,u.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return(0,p.default)(t,e),(0,l.default)(t,[{key:"render",value:function(){var e=this.props,t=e.moveToLeft,n=e.moveToRight,r=e.leftArrowText,o=e.rightArrowText,a=e.leftActive,i=e.rightActive,s=e.className,l=h.default.createElement(g.default,{type:"primary",size:"small",disabled:!a,onClick:t},h.default.createElement("span",null,h.default.createElement(v.default,{type:"left"}),r)),c=h.default.createElement(g.default,{type:"primary",size:"small",disabled:!i,onClick:n},h.default.createElement("span",null,o,h.default.createElement(v.default,{type:"right"})));return h.default.createElement("div",{className:s},l,c)}}]),t}(h.default.Component);t.default=y,y.defaultProps={leftArrowText:"",rightArrowText:"",moveToLeft:o,moveToRight:o},e.exports=t.default},"./node_modules/antd/lib/transfer/search.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/createClass.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/inherits.js"),d=r(u),p=n("./node_modules/react/react.js"),f=r(p),h=n("./node_modules/antd/lib/icon/index.js"),m=r(h),g=n("./node_modules/antd/lib/input/index.js"),b=r(g),v=function(e){function t(){(0,a.default)(this,t);var e=(0,c.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.handleChange=function(t){var n=e.props.onChange;n&&n(t)},e.handleClear=function(t){t.preventDefault();var n=e.props.handleClear;n&&n(t)},e}return(0,d.default)(t,e),(0,s.default)(t,[{key:"render",value:function(){var e=this.props,t=e.placeholder,n=e.value,r=e.prefixCls,o=n&&n.length>0?f.default.createElement("a",{href:"#",className:r+"-action",onClick:this.handleClear},f.default.createElement(m.default,{type:"cross-circle"})):f.default.createElement("span",{className:r+"-action"},f.default.createElement(m.default,{type:"search"}));return f.default.createElement("div",null,f.default.createElement(b.default,{placeholder:t,className:r,value:n,ref:"input",onChange:this.handleChange}),o)}}]),t}(f.default.Component);t.default=v,v.defaultProps={placeholder:""},e.exports=t.default},"./node_modules/antd/lib/tree-select/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/defineProperty.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/rc-tree-select/lib/index.js"),y=r(v),_=n("./node_modules/classnames/index.js"),A=r(_),x=n("./node_modules/antd/lib/locale-provider/injectLocale.js"),w=r(x),j=n("./node_modules/antd/lib/_util/warning.js"),E=r(j),S=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o0?(t=e.map(function(e){var t=(0,C.fileToObject)(e);return t.status="uploading",t}),r=r.concat(t)):(t=(0,C.fileToObject)(e),t.status="uploading",r.push(t)),n.onChange({file:t,fileList:r}),window.FormData||n.autoUpdateProgress(0,t)},n.onSuccess=function(e,t){n.clearProgressTimer();try{"string"==typeof e&&(e=JSON.parse(e))}catch(e){}var r=n.state.fileList,o=(0,C.getFileItem)(t,r);o&&(o.status="done",o.response=e,n.onChange({file:(0,s.default)({},o),fileList:r}))},n.onProgress=function(e,t){var r=n.state.fileList,o=(0,C.getFileItem)(t,r);o&&(o.percent=e.percent,n.onChange({event:e,file:(0,s.default)({},o),fileList:n.state.fileList}))},n.onError=function(e,t,r){n.clearProgressTimer();var o=n.state.fileList,a=(0,C.getFileItem)(r,o);a&&(a.error=e,a.response=t,a.status="error",n.onChange({file:(0,s.default)({},a),fileList:o}))},n.handleManualRemove=function(e){n.refs.upload.abort(e),e.status="removed",n.handleRemove(e)},n.onChange=function(e){"fileList"in n.props||n.setState({fileList:e.fileList});var t=n.props.onChange;t&&t(e)},n.onFileDrop=function(e){n.setState({dragState:e.type})},n.beforeUpload=function(e,t){if(!n.props.beforeUpload)return!0;var r=n.props.beforeUpload(e,t);return!1===r?(n.onChange({file:e,fileList:(0,E.default)(t.concat(n.state.fileList),function(e){return e.uid})}),!1):!r||!r.then||r},n.state={fileList:e.fileList||e.defaultFileList||[],dragState:"drop"},n}return(0,m.default)(t,e),(0,d.default)(t,[{key:"componentWillUnmount",value:function(){this.clearProgressTimer()}},{key:"getLocale",value:function(){var e={};return this.context.antLocale&&this.context.antLocale.Upload&&(e=this.context.antLocale.Upload),(0,s.default)({},T,e,this.props.locale)}},{key:"autoUpdateProgress",value:function(e,t){var n=this,r=(0,C.genPercentAdd)(),o=0;this.clearProgressTimer(),this.progressTimer=setInterval(function(){o=r(o),n.onProgress({percent:o},t)},200)}},{key:"handleRemove",value:function(e){var t=this,n=this.props.onRemove;Promise.resolve("function"==typeof n?n(e):n).then(function(n){if(!1!==n){var r=(0,C.removeFileItem)(e,t.state.fileList);r&&t.onChange({file:e,fileList:r})}})}},{key:"componentWillReceiveProps",value:function(e){"fileList"in e&&this.setState({fileList:e.fileList||[]})}},{key:"clearProgressTimer",value:function(){clearInterval(this.progressTimer)}},{key:"render",value:function(){var e,t=this.props,n=t.prefixCls,r=void 0===n?"":n,o=t.showUploadList,i=t.listType,l=t.onPreview,c=t.type,u=t.disabled,d=t.children,p=t.className,f=(0,s.default)({onStart:this.onStart,onError:this.onError,onProgress:this.onProgress,onSuccess:this.onSuccess},this.props,{beforeUpload:this.beforeUpload});delete f.className;var h=o.showRemoveIcon,m=o.showPreviewIcon,g=o?b.default.createElement(k.default,{listType:i,items:this.state.fileList,onPreview:l,onRemove:this.handleManualRemove,showRemoveIcon:h,showPreviewIcon:m,locale:this.getLocale()}):null;if("drag"===c){var v,_=(0,w.default)(r,(v={},(0,a.default)(v,r+"-drag",!0),(0,a.default)(v,r+"-drag-uploading",this.state.fileList.some(function(e){return"uploading"===e.status})),(0,a.default)(v,r+"-drag-hover","dragover"===this.state.dragState),(0,a.default)(v,r+"-disabled",u),v));return b.default.createElement("span",{className:p},b.default.createElement("div",{className:_,onDrop:this.onFileDrop,onDragOver:this.onFileDrop,onDragLeave:this.onFileDrop},b.default.createElement(y.default,(0,s.default)({},f,{ref:"upload",className:r+"-btn"}),b.default.createElement("div",{className:r+"-drag-container"},d))),g)}var A=(0,w.default)(r,(e={},(0,a.default)(e,r+"-select",!0),(0,a.default)(e,r+"-select-"+i,!0),(0,a.default)(e,r+"-disabled",u),e)),x=b.default.createElement("div",{className:A,style:{display:d?"":"none"}},b.default.createElement(y.default,(0,s.default)({},f,{ref:"upload"})));return"picture-card"===i?b.default.createElement("span",{className:p},g,x):b.default.createElement("span",{className:p},x,g)}}]),t}(b.default.Component);t.default=M,M.defaultProps={prefixCls:"ant-upload",type:"select",multiple:!1,action:"",data:{},accept:"",beforeUpload:C.T,showUploadList:!0,listType:"text",className:"",disabled:!1,supportServerRender:!0},M.contextTypes={antLocale:A.default.object},e.exports=t.default},"./node_modules/antd/lib/upload/UploadList.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/extends.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/rc-animate/lib/Animate.js"),y=r(v),_=n("./node_modules/antd/lib/icon/index.js"),A=r(_),x=n("./node_modules/antd/lib/tooltip/index.js"),w=r(x),j=n("./node_modules/antd/lib/progress/index.js"),E=r(j),S=n("./node_modules/classnames/index.js"),k=r(S),C=function(e,t){var n=new FileReader;n.onloadend=function(){return t(n.result)},n.readAsDataURL(e)},T=function(e){function t(){(0,c.default)(this,t);var e=(0,f.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.handleClose=function(t){var n=e.props.onRemove;n&&n(t)},e.handlePreview=function(t,n){var r=e.props.onPreview;if(r)return n.preventDefault(),r(t)},e}return(0,m.default)(t,e),(0,d.default)(t,[{key:"componentDidUpdate",value:function(){var e=this;"picture"!==this.props.listType&&"picture-card"!==this.props.listType||(this.props.items||[]).forEach(function(t){"undefined"!=typeof document&&"undefined"!=typeof window&&window.FileReader&&window.File&&t.originFileObj instanceof File&&void 0===t.thumbUrl&&(t.thumbUrl="",C(t.originFileObj,function(n){t.thumbUrl=n,e.forceUpdate()}))})}},{key:"render",value:function(){var e,t=this,n=this.props,r=n.prefixCls,o=n.items,i=void 0===o?[]:o,l=n.listType,c=n.showPreviewIcon,u=n.showRemoveIcon,d=n.locale,p=i.map(function(e){var n,o=void 0,i=b.default.createElement(A.default,{type:"uploading"===e.status?"loading":"paper-clip"});if("picture"!==l&&"picture-card"!==l||(i="uploading"===e.status||!e.thumbUrl&&!e.url?"picture-card"===l?b.default.createElement("div",{className:r+"-list-item-uploading-text"},d.uploading):b.default.createElement(A.default,{className:r+"-list-item-thumbnail",type:"picture"}):b.default.createElement("a",{className:r+"-list-item-thumbnail",onClick:function(n){return t.handlePreview(e,n)},href:e.url||e.thumbUrl,target:"_blank",rel:"noopener noreferrer"},b.default.createElement("img",{src:e.thumbUrl||e.url,alt:e.name}))),"uploading"===e.status){var p="percent"in e?b.default.createElement(E.default,(0,s.default)({type:"line"},t.props.progressAttr,{percent:e.percent})):null;o=b.default.createElement("div",{className:r+"-list-item-progress",key:"progress"},p)}var f=(0,k.default)((n={},(0,a.default)(n,r+"-list-item",!0),(0,a.default)(n,r+"-list-item-"+e.status,!0),n)),h=e.url?b.default.createElement("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:r+"-list-item-name",onClick:function(n){return t.handlePreview(e,n)},title:e.name},e.name):b.default.createElement("span",{className:r+"-list-item-name",onClick:function(n){return t.handlePreview(e,n)},title:e.name},e.name),m=e.url||e.thumbUrl?void 0:{pointerEvents:"none",opacity:.5},g=c?b.default.createElement("a",{href:e.url||e.thumbUrl,target:"_blank",rel:"noopener noreferrer",style:m,onClick:function(n){return t.handlePreview(e,n)},title:d.previewFile},b.default.createElement(A.default,{type:"eye-o"})):null,v=u?b.default.createElement(A.default,{type:"delete",title:d.removeFile,onClick:function(){return t.handleClose(e)}}):null,_=u?b.default.createElement(A.default,{type:"cross",title:d.removeFile,onClick:function(){return t.handleClose(e)}}):null,x="picture-card"===l&&"uploading"!==e.status?b.default.createElement("span",{className:r+"-list-item-actions"},g,v):_,j=void 0;j=e.response&&"string"==typeof e.response?e.response:e.error&&e.error.statusText||d.uploadError;var S="error"===e.status?b.default.createElement(w.default,{title:j},i,h):b.default.createElement("span",null,i,h);return b.default.createElement("div",{className:f,key:e.uid},b.default.createElement("div",{className:r+"-list-item-info"},S),x,b.default.createElement(y.default,{transitionName:"fade",component:""},o))}),f=(0,k.default)((e={},(0,a.default)(e,r+"-list",!0),(0,a.default)(e,r+"-list-"+l,!0),e)),h="picture-card"===l?"animate-inline":"animate";return b.default.createElement(y.default,{transitionName:r+"-"+h,component:"div",className:f},p)}}]),t}(b.default.Component);t.default=T,T.defaultProps={listType:"text",progressAttr:{strokeWidth:2,showInfo:!1},prefixCls:"ant-upload",showRemoveIcon:!0,showPreviewIcon:!0},e.exports=t.default},"./node_modules/antd/lib/upload/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/antd/lib/upload/Upload.js"),a=r(o),i=n("./node_modules/antd/lib/upload/Dragger.js"),s=r(i);a.default.Dragger=s.default,t.default=a.default,e.exports=t.default},"./node_modules/antd/lib/upload/utils.js":function(e,t,n){"use strict";function r(){return!0}function o(e){return{lastModified:e.lastModified,lastModifiedDate:e.lastModifiedDate,name:e.filename||e.name,size:e.size,type:e.type,uid:e.uid,response:e.response,error:e.error,percent:0,originFileObj:e,status:null}}function a(){var e=.1;return function(t){var n=t;return n>=.98?n:(n+=e,e-=.01,e<.001&&(e=.001),100*n)}}function i(e,t){var n=void 0!==e.uid?"uid":"name";return t.filter(function(t){return t[n]===e[n]})[0]}function s(e,t){var n=void 0!==e.uid?"uid":"name",r=t.filter(function(t){return t[n]!==e[n]});return r.length===t.length?null:r}Object.defineProperty(t,"__esModule",{value:!0}),t.T=r,t.fileToObject=o,t.genPercentAdd=a,t.getFileItem=i,t.removeFileItem=s},"./node_modules/array-tree-filter/index.js":function(e,t){function n(e,t,n){n=n||{},n.childrenKeyName=n.childrenKeyName||"children";var r,o=e||[],a=[],i=0;do{var r=o.filter(function(e){return t(e,i)})[0];if(!r)break;a.push(r),o=r[n.childrenKeyName]||[],i+=1}while(o.length>0);return a}e.exports=n},"./node_modules/async-validator/lib/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){this.rules=null,this._messages=p.messages,this.define(e)}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/extends.js"),i=r(a),s=n("./node_modules/babel-runtime/helpers/typeof.js"),l=r(s),c=n("./node_modules/async-validator/lib/util.js"),u=n("./node_modules/async-validator/lib/validator/index.js"),d=r(u),p=n("./node_modules/async-validator/lib/messages.js");o.prototype={messages:function(e){return e&&(this._messages=(0,c.deepMerge)((0,p.newMessages)(),e)),this._messages},define:function(e){if(!e)throw new Error("Cannot configure a schema with no rules");if("object"!==(void 0===e?"undefined":(0,l.default)(e))||Array.isArray(e))throw new Error("Rules must be an object");this.rules={};var t=void 0,n=void 0;for(t in e)e.hasOwnProperty(t)&&(n=e[t],this.rules[t]=Array.isArray(n)?n:[n])},validate:function(e){function t(e){var t=void 0,n=void 0,r=[],o={};for(t=0;t1&&void 0!==arguments[1]?arguments[1]:{},a=arguments[2],s=e,u=r,d=a;if("function"==typeof u&&(d=u,u={}),!this.rules||0===Object.keys(this.rules).length)return void(d&&d());if(u.messages){var f=this.messages();f===p.messages&&(f=(0,p.newMessages)()),(0,c.deepMerge)(f,u.messages),u.messages=f}else u.messages=this.messages();var h=void 0,m=void 0,g={};(u.keys||Object.keys(this.rules)).forEach(function(t){h=n.rules[t],m=s[t],h.forEach(function(r){var o=r;"function"==typeof o.transform&&(s===e&&(s=(0,i.default)({},s)),m=s[t]=o.transform(m)),o="function"==typeof o?{validator:o}:(0,i.default)({},o),o.validator=n.getValidationMethod(o),o.field=t,o.fullField=o.fullField||t,o.type=n.getType(o),o.validator&&(g[t]=g[t]||[],g[t].push({rule:o,value:m,source:s,field:t}))})});var b={};(0,c.asyncMap)(g,u,function(e,t){function n(e,t){return(0,i.default)({},t,{fullField:a.fullField+"."+e})}function r(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],l=r;if(Array.isArray(l)||(l=[l]),l.length&&(0,c.warning)("async-validator:",l),l.length&&a.message&&(l=[].concat(a.message)),l=l.map((0,c.complementError)(a)),u.first&&l.length)return b[a.field]=1,t(l);if(s){if(a.required&&!e.value)return l=a.message?[].concat(a.message).map((0,c.complementError)(a)):u.error?[u.error(a,(0,c.format)(u.messages.required,a.field))]:[],t(l);var d={};if(a.defaultField)for(var p in e.value)e.value.hasOwnProperty(p)&&(d[p]=a.defaultField);d=(0,i.default)({},d,e.rule.fields);for(var f in d)if(d.hasOwnProperty(f)){var h=Array.isArray(d[f])?d[f]:[d[f]];d[f]=h.map(n.bind(null,f))}var m=new o(d);m.messages(u.messages),e.rule.options&&(e.rule.options.messages=u.messages,e.rule.options.error=u.error),m.validate(e.value,e.rule.options||u,function(e){t(e&&e.length?l.concat(e):e)})}else t(l)}var a=e.rule,s=!("object"!==a.type&&"array"!==a.type||"object"!==(0,l.default)(a.fields)&&"object"!==(0,l.default)(a.defaultField));s=s&&(a.required||!a.required&&e.value),a.field=e.field;var d=a.validator(a,e.value,r,e.source,u);d&&d.then&&d.then(function(){return r()},function(e){return r(e)})},function(e){t(e)})},getType:function(e){if(void 0===e.type&&e.pattern instanceof RegExp&&(e.type="pattern"),"function"!=typeof e.validator&&e.type&&!d.default.hasOwnProperty(e.type))throw new Error((0,c.format)("Unknown rule type %s",e.type));return e.type||"string"},getValidationMethod:function(e){if("function"==typeof e.validator)return e.validator;var t=Object.keys(e),n=t.indexOf("message");return-1!==n&&t.splice(n,1),1===t.length&&"required"===t[0]?d.default.required:d.default[this.getType(e)]||!1}},o.register=function(e,t){if("function"!=typeof t)throw new Error("Cannot register a validator by type, validator is not a function");d.default[e]=t},o.messages=p.messages,t.default=o,e.exports=t.default},"./node_modules/async-validator/lib/messages.js":function(e,t,n){"use strict";function r(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}Object.defineProperty(t,"__esModule",{value:!0}),t.newMessages=r;t.messages=r()},"./node_modules/async-validator/lib/rule/enum.js":function(e,t,n){"use strict";function r(e,t,n,r,o){e[i]=Array.isArray(e[i])?e[i]:[],-1===e[i].indexOf(t)&&r.push(a.format(o.messages[i],e.fullField,e[i].join(", ")))}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/async-validator/lib/util.js"),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(o),i="enum";t.default=r,e.exports=t.default},"./node_modules/async-validator/lib/rule/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/async-validator/lib/rule/required.js"),a=r(o),i=n("./node_modules/async-validator/lib/rule/whitespace.js"),s=r(i),l=n("./node_modules/async-validator/lib/rule/type.js"),c=r(l),u=n("./node_modules/async-validator/lib/rule/range.js"),d=r(u),p=n("./node_modules/async-validator/lib/rule/enum.js"),f=r(p),h=n("./node_modules/async-validator/lib/rule/pattern.js"),m=r(h);t.default={required:a.default,whitespace:s.default,type:c.default,range:d.default,enum:f.default,pattern:m.default},e.exports=t.default},"./node_modules/async-validator/lib/rule/pattern.js":function(e,t,n){"use strict";function r(e,t,n,r,o){if(e.pattern)if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||r.push(a.format(o.messages.pattern.mismatch,e.fullField,t,e.pattern));else if("string"==typeof e.pattern){var i=new RegExp(e.pattern);i.test(t)||r.push(a.format(o.messages.pattern.mismatch,e.fullField,t,e.pattern))}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/async-validator/lib/util.js"),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(o);t.default=r,e.exports=t.default},"./node_modules/async-validator/lib/rule/range.js":function(e,t,n){"use strict";function r(e,t,n,r,o){var i="number"==typeof e.len,s="number"==typeof e.min,l="number"==typeof e.max,c=t,u=null,d="number"==typeof t,p="string"==typeof t,f=Array.isArray(t);if(d?u="number":p?u="string":f&&(u="array"),!u)return!1;(p||f)&&(c=t.length),i?c!==e.len&&r.push(a.format(o.messages[u].len,e.fullField,e.len)):s&&!l&&ce.max?r.push(a.format(o.messages[u].max,e.fullField,e.max)):s&&l&&(ce.max)&&r.push(a.format(o.messages[u].range,e.fullField,e.min,e.max))}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/async-validator/lib/util.js"),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(o);t.default=r,e.exports=t.default},"./node_modules/async-validator/lib/rule/required.js":function(e,t,n){"use strict";function r(e,t,n,r,o,i){!e.required||n.hasOwnProperty(e.field)&&!a.isEmptyValue(t,i||e.type)||r.push(a.format(o.messages.required,e.fullField))}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/async-validator/lib/util.js"),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(o);t.default=r,e.exports=t.default},"./node_modules/async-validator/lib/rule/type.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t,n,r,o){if(e.required&&void 0===t)return void(0,u.default)(e,t,n,r,o);var a=["integer","float","array","regexp","object","method","email","number","date","url","hex"],s=e.type;a.indexOf(s)>-1?p[s](t)||r.push(l.format(o.messages.types[s],e.fullField,e.type)):s&&(void 0===t?"undefined":(0,i.default)(t))!==e.type&&r.push(l.format(o.messages.types[s],e.fullField,e.type))}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/typeof.js"),i=r(a),s=n("./node_modules/async-validator/lib/util.js"),l=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(s),c=n("./node_modules/async-validator/lib/rule/required.js"),u=r(c),d={email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,url:new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$","i"),hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},p={integer:function(e){return p.number(e)&&parseInt(e,10)===e},float:function(e){return p.number(e)&&!p.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch(e){return!1}},date:function(e){return"function"==typeof e.getTime&&"function"==typeof e.getMonth&&"function"==typeof e.getYear},number:function(e){return!isNaN(e)&&"number"==typeof e},object:function(e){return"object"===(void 0===e?"undefined":(0,i.default)(e))&&!p.array(e)},method:function(e){return"function"==typeof e},email:function(e){return"string"==typeof e&&!!e.match(d.email)&&e.length<255},url:function(e){return"string"==typeof e&&!!e.match(d.url)},hex:function(e){return"string"==typeof e&&!!e.match(d.hex)}};t.default=o,e.exports=t.default},"./node_modules/async-validator/lib/rule/whitespace.js":function(e,t,n){"use strict";function r(e,t,n,r,o){(/^\s+$/.test(t)||""===t)&&r.push(a.format(o.messages.whitespace,e.fullField))}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/async-validator/lib/util.js"),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(o);t.default=r,e.exports=t.default},"./node_modules/async-validator/lib/util.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(){for(var e=arguments.length,t=Array(e),n=0;n=a)return e;switch(e){case"%s":return String(t[r++]);case"%d":return Number(t[r++]);case"%j":try{return JSON.stringify(t[r++])}catch(e){return"[Circular]"}break;default:return e}}),s=t[r];r=200&&e<300}};s.headers={common:{Accept:"application/json, text/plain, */*"}},o.forEach(["delete","get","head"],function(e){s.headers[e]={}}),o.forEach(["post","put","patch"],function(e){s.headers[e]=o.merge(i)}),e.exports=s}).call(t,n("./node_modules/process/browser.js"))},"./node_modules/axios/lib/helpers/bind.js":function(e,t,n){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r>8-s%1*8)){if((n=o.charCodeAt(s+=.75))>255)throw new r;t=t<<8|n}return i}var a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.prototype=new Error,r.prototype.code=5,r.prototype.name="InvalidCharacterError",e.exports=o},"./node_modules/axios/lib/helpers/buildURL.js":function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var o=n("./node_modules/axios/lib/utils.js");e.exports=function(e,t,n){if(!t)return e;var a;if(n)a=n(t);else if(o.isURLSearchParams(t))a=t.toString();else{var i=[];o.forEach(t,function(e,t){null!==e&&void 0!==e&&(o.isArray(e)&&(t+="[]"),o.isArray(e)||(e=[e]),o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),i.push(r(t)+"="+r(e))}))}),a=i.join("&")}return a&&(e+=(-1===e.indexOf("?")?"?":"&")+a),e}},"./node_modules/axios/lib/helpers/combineURLs.js":function(e,t,n){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},"./node_modules/axios/lib/helpers/cookies.js":function(e,t,n){"use strict";var r=n("./node_modules/axios/lib/utils.js");e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,a,i){var s=[];s.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),r.isString(o)&&s.push("path="+o),r.isString(a)&&s.push("domain="+a),!0===i&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},"./node_modules/axios/lib/helpers/isAbsoluteURL.js":function(e,t,n){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},"./node_modules/axios/lib/helpers/isURLSameOrigin.js":function(e,t,n){"use strict";var r=n("./node_modules/axios/lib/utils.js");e.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},"./node_modules/axios/lib/helpers/normalizeHeaderName.js":function(e,t,n){"use strict";var r=n("./node_modules/axios/lib/utils.js");e.exports=function(e,t){r.forEach(e,function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])})}},"./node_modules/axios/lib/helpers/parseHeaders.js":function(e,t,n){"use strict";var r=n("./node_modules/axios/lib/utils.js"),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,a,i={};return e?(r.forEach(e.split("\n"),function(e){if(a=e.indexOf(":"),t=r.trim(e.substr(0,a)).toLowerCase(),n=r.trim(e.substr(a+1)),t){if(i[t]&&o.indexOf(t)>=0)return;i[t]="set-cookie"===t?(i[t]?i[t]:[]).concat([n]):i[t]?i[t]+", "+n:n}}),i):i}},"./node_modules/axios/lib/helpers/spread.js":function(e,t,n){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},"./node_modules/axios/lib/utils.js":function(e,t,n){"use strict";function r(e){return"[object Array]"===j.call(e)}function o(e){return"[object ArrayBuffer]"===j.call(e)}function a(e){return"undefined"!=typeof FormData&&e instanceof FormData}function i(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function s(e){return"string"==typeof e}function l(e){return"number"==typeof e}function c(e){return void 0===e}function u(e){return null!==e&&"object"==typeof e}function d(e){return"[object Date]"===j.call(e)}function p(e){return"[object File]"===j.call(e)}function f(e){return"[object Blob]"===j.call(e)}function h(e){return"[object Function]"===j.call(e)}function m(e){return u(e)&&h(e.pipe)}function g(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams}function b(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function v(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)}function y(e,t){if(null!==e&&void 0!==e)if("object"!=typeof e&&(e=[e]),r(e))for(var n=0,o=e.length;n=0;--r){var o=this.tryEntries[r],a=o.completion;if("root"===o.tryLoc)return t("end");if(o.tryLoc<=this.prev){var i=v.call(o,"catchLoc"),s=v.call(o,"finallyLoc");if(i&&s){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&v.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),p(n),T}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;p(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:h(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=g),T}}}("object"==typeof t?t:"object"==typeof window?window:"object"==typeof self?self:this)}).call(t,n("./node_modules/webpack/buildin/global.js"))},"./node_modules/babel-runtime/core-js/array/from.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/array/from.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/get-iterator.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/get-iterator.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/is-iterable.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/is-iterable.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/assign.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/object/assign.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/create.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/object/create.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/define-property.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/object/define-property.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/object/get-own-property-descriptor.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/get-prototype-of.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/object/get-prototype-of.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/set-prototype-of.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/object/set-prototype-of.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/symbol.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/symbol/index.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/symbol/iterator.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/symbol/iterator.js"),__esModule:!0}},"./node_modules/babel-runtime/helpers/classCallCheck.js":function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},"./node_modules/babel-runtime/helpers/createClass.js":function(e,t,n){"use strict";t.__esModule=!0;var r=n("./node_modules/babel-runtime/core-js/object/define-property.js"),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=function(){function e(e,t){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}},"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js":function(e,t,n){"use strict";t.__esModule=!0;var r=n("./node_modules/babel-runtime/helpers/typeof.js"),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":(0,o.default)(t))&&"function"!=typeof t?e:t}},"./node_modules/babel-runtime/helpers/slicedToArray.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=n("./node_modules/babel-runtime/core-js/is-iterable.js"),a=r(o),i=n("./node_modules/babel-runtime/core-js/get-iterator.js"),s=r(i);t.default=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=(0,s.default)(e);!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&l.return&&l.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if((0,a.default)(Object(t)))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},"./node_modules/babel-runtime/helpers/toConsumableArray.js":function(e,t,n){"use strict";t.__esModule=!0;var r=n("./node_modules/babel-runtime/core-js/array/from.js"),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0?t[0]:{};n.setState({localFilters:t,selectedFilter:r,showPreview:f.FilterTypesViewSetting[r.type]},function(){r.key&&n.filterForm.setFieldsValue(r)})},n.selectFilter=function(e){var t=n.state.localFilters,r=t.find(function(t){return t.key===e});n.setState({selectedFilter:r,previewFilter:{key:"",viewId:"",fromModel:""}},function(){n.filterForm.setFieldsValue(r)})},n.addFilter=function(){var e=n.state.localFilters,t={key:p.uuid(8,16),name:"新建全局筛选",type:f.FilterTypes.InputText,operator:f.FilterTypesOperatorSetting[f.FilterTypes.InputText][0],relatedViews:{}};n.setState({localFilters:[].concat(o(e),[t]),selectedFilter:t,showPreview:!1},function(){n.filterForm.setFieldsValue(t)})},n.deleteFilter=function(e){var t=n.state,r=t.localFilters,o=t.selectedFilter,a=r.filter(function(t){return t.key!==e}),i=o.key!==e?o:a.length>0?a[0]:{};n.setState({localFilters:a,selectedFilter:i,showPreview:f.FilterTypesViewSetting[i.type]},function(){i.key&&n.filterForm.setFieldsValue(i)})},n.filterTypeChange=function(e){n.setState({showPreview:f.FilterTypesViewSetting[e]})},n.filterItemNameChange=function(e,t){var r=n.state.localFilters;r.find(function(t){return t.key===e}).name=t,n.setState({localFilters:r})},n.filterItemSave=function(e){var t=n.state.localFilters,r=t.findIndex(function(t){return t.key===e.key});r<0||(t.splice(r,1,e),n.setState({localFilters:t}))},n.ok=function(){var e=n.state.localFilters,t=n.props.onOk;e.length>0?n.filterForm.saveFilterItem(function(n){n||t([].concat(o(e)))}):t([])},n.getPreviewData=function(e,t,r,o){var a=n.props.onGetPreviewData;n.setState({previewFilter:{key:e,viewId:t,fromModel:r}},function(){a(e,t,r,o)})},n.state={localFilters:[],selectedFilter:{},showPreview:!1,previewFilter:{key:"",viewId:"",fromModel:""}},n.refHandlers={filterForm:function(e){return n.filterForm=e}},n}return s(t,e),l(t,[{key:"componentWillMount",value:function(){this.initState()}},{key:"componentWillReceiveProps",value:function(e){var t=e.filters,n=e.saving;t!==this.props.filters&&this.initState(),n!==this.props.saving&&this.ok()}},{key:"render",value:function(){var e,t=this.props,n=t.views,o=t.widgets,a=t.items,i=t.previewData,s=this.state,l=s.localFilters,d=s.selectedFilter,p=s.showPreview,f=this.state.previewFilter,_=f.key,y=f.fromModel,A=i[_]?i[_][y]||[]:[],x=u((e={},r(e,v.right,!0),r(e,b.hide,!p),e));return c.createElement("div",{className:v.filterConfig},c.createElement("div",{className:v.content},c.createElement("div",{className:v.left},c.createElement(h.default,{list:l,onSelectFilter:this.selectFilter,onAddFilter:this.addFilter,onDeleteFilter:this.deleteFilter,selectedFilterKey:d.key})),c.createElement("div",{className:v.center},d.key?c.createElement(m.default,{views:n,widgets:o,items:a,filterItem:d,onFilterTypeChange:this.filterTypeChange,onFilterItemNameChange:this.filterItemNameChange,onFilterItemSave:this.filterItemSave,onGetPreviewData:this.getPreviewData,wrappedComponentRef:this.refHandlers.filterForm}):null),c.createElement("div",{className:x},d.key?c.createElement(g.default,{currentPreviewData:A}):null)))}}]),t}(c.Component);t.FilterConfig=_,t.default=_},"./app/components/Filters/FilterControl.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n=0}).forEach(function(e){var t=n[e],o=+e.substr(A.prefixView.length),a=!!n[A.prefixOther+o],l=i[o].model.find(function(e){return e.key===t}).sqlType;r.relatedViews[o]={key:t,name:t,isParam:a,sqlType:l,items:s[o].filter(function(e){return n[A.prefixItem+e.id]}).map(function(e){return e.id})}}),Object.keys(n).filter(function(e){return[A.prefixItem,A.prefixView,A.prefixOther].every(function(t){return e.indexOf(t)<0})}).forEach(function(e){r[e]=n[e]}),console.log("saved... ",JSON.parse(JSON.stringify(r))),o(r),e&&e()})},n.setFieldsValue=function(e){var t=n.props,r=t.views,o=t.widgets,a=t.items,i=e.key,s=e.name,l=e.type,c=e.fromView,u=e.fromModel,d=e.operator,p={key:i,name:s,type:l,fromView:c,fromModel:u,operator:d};c&&n.onFromViewChange(c,u);var f=e.relatedViews,h={};r.forEach(function(e){var t=e.id;if(f[t])p[""+A.prefixView+t]=f[t].key,p[""+A.prefixOther+t]=f[t].isParam;else{var n=JSON.parse(e.model),r=Object.keys(n)[0];p[""+A.prefixView+t]=r,p[""+A.prefixOther+t]=!1}}),a.forEach(function(e){var t=e.id,n=o.find(function(t){return t.id===e.widgetId}),r=n.viewId;f[r]?(p[""+A.prefixItem+t]=f[r].items.indexOf(t)>=0,h[r]=f[r].isParam):(p[""+A.prefixItem+t]=!1,h[r]=!1)}),n.setState({needSetView:!!x.FilterTypesViewSetting[l],availableOperatorTypes:x.FilterTypesOperatorSetting[l],modelOrParam:h},function(){var e=n.props,t=e.form;e.onGetPreviewData;t.setFieldsValue(p)})},n.filterItemNameChange=function(e){var t=n.props,r=t.onFilterItemNameChange,o=t.filterItem,a=e.target.value;r(o.key,a)},n.modelOrParamChange=function(e){return function(t){var o=n.state,a=o.modelOrParam,i=o.usedViews,s=i[e],l=s.param,c=s.model,u=t?l:c,d=u.length<=0?null:t?l[0]:c[0].key;n.setState({modelOrParam:Object.assign({},a,r({},e,t))},function(){n.props.form.setFieldsValue(r({},""+A.prefixView+e,d))})}},n.onFromViewChange=function(e,t){var r=n.props.views,o=r.find(function(t){return t.id===+e}),a=Object.entries(JSON.parse(o.model)).filter(function(e){var t=s(e,2);t[0];return"category"===t[1].modelType}).map(function(e){return s(e,1)[0]});n.setState({modelItems:a},function(){var r=n.props,o=r.form,i=r.filterItem,s=r.onGetPreviewData;!t||a.indexOf(t)<0?(o.setFieldsValue({fromModel:a[0]}),s(i.key,e,a[0],[])):s(i.key,e,t,[])})},n.onFromModelChange=function(e){var t=n.props,r=t.onGetPreviewData,o=t.form,a=t.filterItem,i=o.getFieldValue("fromView");r(a.key,i,e,[])},n.filterTypeChange=function(e){n.setState({needSetView:x.FilterTypesViewSetting[e],availableOperatorTypes:x.FilterTypesOperatorSetting[e]},function(){var e=n.props.form,t=n.state.availableOperatorTypes,r=e.getFieldValue("operator");t.indexOf(r)<0&&e.setFieldsValue({operator:t[0]})}),(0,n.props.onFilterTypeChange)(e)},n.state={usedViews:{},mappingViewItems:{},needSetView:!1,modelItems:[],modelOrParam:{},availableOperatorTypes:[]},n}return i(t,e),l(t,[{key:"componentWillMount",value:function(){var e=this.props,t=e.views,n=e.widgets,r=e.items;t&&n&&r&&this.initFormSetting(t,n,r)}},{key:"componentWillReceiveProps",value:function(e){var t=e.views,n=e.widgets,r=e.items,o=e.filterItem;t&&n&&r&&t!==this.props.views&&n!==this.props.widgets&&r!==this.props.items&&this.initFormSetting(t,n,r);var a=this.props.filterItem;o&&o!==a&&a.key&&this.saveFilterItem()}},{key:"initFormSetting",value:function(e,t,n){var r=/query@var\s+\$(\w+)\$/g,o={},a={};n.forEach(function(n){var i=n.widgetId,l=t.find(function(e){return e.id===i}),c=l.viewId;if(!o[c]){var u=e.find(function(e){return e.id===c}),d=u.id,p=u.name,f=u.description,h=u.model,m=u.sql,g=JSON.parse(h);o[c]={id:d,name:p,description:f,model:Object.entries(g).map(function(e){var t=s(e,2),n=t[0],r=t[1],o=r.sqlType;return{key:n,visualType:r.visualType,sqlType:o}}),param:(m.match(r)||[]).map(function(e){return e.substring(e.indexOf("$")+1,e.length-1)})}}a[c]||(a[c]=[]),a[c].push({id:n.id,name:l.name})}),this.setState({usedViews:o,mappingViewItems:a})}},{key:"renderConfigItem",value:function(e,t,n){var r=this.props.form,o=this.state.modelOrParam,a=r.getFieldDecorator,i=t[e],s=n[e],l=c.createElement(g,null,o[e]?i.param.map(function(e){return c.createElement(b,{key:e,value:e},e)}):i.model.map(function(e){return c.createElement(b,{key:e.key,value:e.key},e.key)}));return c.createElement(p,{key:e,className:y.configItem},c.createElement(f,{span:10,className:y.itemList},s.map(function(e){return c.createElement(d,{className:y.item,key:e.id,label:e.name,labelCol:{span:21},wrapperCol:{span:3}},a(""+A.prefixItem+e.id,{valuePropName:"checked"})(w))})),c.createElement(f,{span:14,className:y.viewSet},c.createElement(d,{className:y.item,label:"参数",labelCol:{span:8},wrapperCol:{span:16}},a(""+A.prefixOther+i.id,{valuePropName:"checked"})(c.createElement(v,{onChange:this.modelOrParamChange(e)}))),c.createElement(d,{className:y.item,label:i.name,labelCol:{span:8},wrapperCol:{span:15}},a(""+A.prefixView+i.id)(l))))}},{key:"renderConfigForm",value:function(e,t){var n=this,r=this.props,o=r.form,a=r.views,i=o.getFieldDecorator,s=this.state,l=s.needSetView,m=s.modelItems,v=s.availableOperatorTypes;return c.createElement("div",{className:y.filterForm},c.createElement("div",{className:y.title},j),c.createElement("div",{className:y.form},c.createElement(u,null,c.createElement(p,null,c.createElement(f,{span:12},c.createElement(d,{className:_.hide},i("key",{})(E)),c.createElement(d,{label:"名称",labelCol:{span:8},wrapperCol:{span:16}},i("name",{rules:[{required:!0,message:"不能为空"}]})(c.createElement(h,{onChange:this.filterItemNameChange,placeholder:"筛选项名称"})))),c.createElement(f,{span:12},c.createElement(d,{label:"类型",labelCol:{span:8},wrapperCol:{span:16}},i("type",{rules:[{required:!0,message:"不能为空"}]})(c.createElement(g,{onChange:this.filterTypeChange},x.FilterTypeList.map(function(e){return c.createElement(b,{key:e,value:e},x.FilterTypesLocale[e])})))))),l?c.createElement(p,null,c.createElement(f,{span:12},c.createElement(d,{label:"来源 View",labelCol:{span:8},wrapperCol:{span:16}},i("fromView",{rules:[{required:!0,message:"不能为空"}]})(c.createElement(g,{onChange:this.onFromViewChange},a.map(function(e){return c.createElement(b,{key:e.id,value:e.id.toString()},e.name)}))))),c.createElement(f,{span:12},c.createElement(d,{label:"来源字段",labelCol:{span:8},wrapperCol:{span:16}},i("fromModel",{rules:[{required:!0,message:"不能为空"}]})(c.createElement(g,{onChange:this.onFromModelChange},m.map(function(e){return c.createElement(b,{key:e,value:e},e)})))))):null,c.createElement(p,null,c.createElement(f,{span:12},c.createElement(d,{label:"对应关系",labelCol:{span:8},wrapperCol:{span:16}},i("operator",{rules:[{required:!0,message:"不能为空"}]})(c.createElement(g,null,v.map(function(e){return c.createElement(b,{key:e,value:e},e)})))))),c.createElement(p,null,c.createElement(f,{span:24},Object.keys(e).map(function(r){return n.renderConfigItem(r,e,t)}))))))}},{key:"render",value:function(){var e=this.props,t=e.views,n=e.widgets,r=e.items;if(t&&n&&r){var o=this.state,a=o.usedViews,i=o.mappingViewItems;return this.renderConfigForm(a,i)}return null}}]),t}(c.Component);t.FilterForm=S,t.default=u.create()(S)},"./app/components/Filters/FilterList.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=function(){function e(e,t){for(var n=0;n0&&s.push({name:a,value:o.map(function(t){return e.getValidValue(t,i)}).join(",")});break;case d.FilterTypes.CascadeSelect:break;case d.FilterTypes.InputDate:o&&s.push({name:a,value:"'"+u.default(o).format("YYYY-MM-DD")+"'"});break;case d.FilterTypes.MultiDate:o&&s.push({name:a,value:o.split(",").map(function(e){return"'"+e+"'"}).join(",")});break;case d.FilterTypes.DateRange:if(o.length){var l;(l=s).push.apply(l,r(o.map(function(e){return{name:a,value:"'"+u.default(e).format("YYYY-MM-DD")+"'"}})))}break;case d.FilterTypes.Datetime:o&&s.push({name:a,value:"'"+u.default(o).format("YYYY-MM-DD HH:mm:ss")+"'"});break;case d.FilterTypes.DatetimeRange:if(o.length){var c;(c=s).push.apply(c,r(o.map(function(e){return{name:a,value:"'"+u.default(e).format("YYYY-MM-DD HH:mm:ss")+"'"}})))}break;default:var p=o.target.value.trim();p&&s.push({name:a,value:e.getValidValue(p,i)})}return s},e.getModelValue=function(t,n,r,o){var a=n.key,i=n.sqlType,s=[];switch(t){case d.FilterTypes.InputText:case d.FilterTypes.InputNumber:case d.FilterTypes.Select:void 0!==o&&s.push(a+" "+r+" "+e.getValidValue(o,i));break;case d.FilterTypes.NumberRange:""===o[0]||isNaN(o[0])||s.push(a+" >= "+e.getValidValue(o[0],i)),""===o[1]||isNaN(o[1])||s.push(a+" <= "+e.getValidValue(o[1],i));break;case d.FilterTypes.MultiSelect:o.length&&o.length>0&&s.push(a+" "+r+" ("+o.map(function(t){return e.getValidValue(t,i)}).join(",")+")");break;case d.FilterTypes.CascadeSelect:break;case d.FilterTypes.InputDate:o&&s.push(a+" "+r+" "+e.getValidValue(u.default(o).format("YYYY-MM-DD"),i));break;case d.FilterTypes.MultiDate:o&&s.push(a+" "+r+" ("+o.split(",").map(function(t){return e.getValidValue(t,i)}).join(",")+")");break;case d.FilterTypes.DateRange:o.length&&(s.push(a+" >= "+e.getValidValue(u.default(o[0]).format("YYYY-MM-DD"),i)),s.push(a+" <= "+e.getValidValue(u.default(o[1]).format("YYYY-MM-DD"),i)));break;case d.FilterTypes.Datetime:o&&s.push(a+" "+r+" "+e.getValidValue(u.default(o).format("YYYY-MM-DD HH:mm:ss"),i));break;case d.FilterTypes.DatetimeRange:o.length&&(s.push(a+" >= "+e.getValidValue(u.default(o[0]).format("YYYY-MM-DD HH:mm:ss"),i)),s.push(a+" <= "+e.getValidValue(u.default(o[1]).format("YYYY-MM-DD HH:mm:ss"),i)));break;default:var l=o.target.value.trim();l&&s.push(a+" "+r+" "+e.getValidValue(l,i))}return s},e.getValidValue=function(e,t){return p.SQL_NUMBER_TYPES.indexOf(t)>=0?e:"'"+e+"'"},e}return i(t,e),l(t,[{key:"render",value:function(){var e=this,t=this.props,n=t.filters,r=t.onGetOptions,o=t.filterOptions,a=t.form;return c.createElement(g,{className:b.filterPanel},c.createElement(h,{gutter:8},n.map(function(t){return c.createElement(m,{xl:3,lg:4,md:6,sm:12,key:t.key},c.createElement(f.default,{filter:t,onGetOptions:r,currentOptions:o[t.key]||{},formToAppend:a,onChange:e.change}))})))}}]),t}(c.Component);t.FilterPanel=v,t.default=g.create()(v)},"./app/components/Filters/FilterValuePreview.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n=0?t[0][n]:"'"+t[0][n]+"'";"parameter"===a?s.push(o+" "+i+" "+u):"variable"===a&&c.push({name:o,value:u})});var u=o[a];if(u){var d=u.filters,p=u.params;u.filters=s.length>0?Object.assign({},d,r({},e,s)):d,u.params=c.length>0?Object.assign({},p,r({},e,c)):p}else o[a]={filters:s.length>0?r({},e,s):{},params:c.length>0?r({},e,s):{}}}),o}function i(e,t,n){var r=[];return t.length<=0?r:(t.forEach(function(t){var o=t.trigger,a=t.linkager,i=+o[0],s=+a[0];e===i&&n[s]&&["filters","params"].forEach(function(t){n[s][t][e]&&(delete n[s][t][e],r.indexOf(s)<0&&r.push(s))})}),r)}var s=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();Object.defineProperty(t,"__esModule",{value:!0});var l=n("./app/globalConstants.ts");t.getMappingLinkage=o,t.processLinkage=a,t.removeLinkage=i},"./app/components/MultiDatePicker/MultiDatePicker.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/components/MultiDatePicker/MultiDatePicker.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/components/MultiDatePicker/index.js":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"MultiDatePicker",function(){return _});var i=n("./node_modules/react/react.js"),s=n.n(i),l=n("./node_modules/prop-types/index.js"),c=(n.n(l),n("./node_modules/jquery/dist/jquery.js")),u=n.n(c),d=n("./node_modules/moment/src/moment.js"),p=n("./node_modules/bootstrap-datepicker/dist/js/bootstrap-datepicker.js"),f=(n.n(p),n("./node_modules/antd/lib/icon/index.js")),h=n.n(f),m=n("./app/components/MultiDatePicker/MultiDatePicker.less"),g=n.n(m),b=function(){function e(e,t){for(var n=0;n=200){var o=r.payload.avatar,a=r.header.token;t&&"function"==typeof t.callback&&t.callback(o),h.setToken(a),localStorage.setItem("TOKEN",a)}}},n.state={currentPath:""},n}return a(t,e),i(t,[{key:"componentWillReceiveProps",value:function(e){var t=e.path;t&&t.length&&this.setState({currentPath:t})}},{key:"render",value:function(){var e=this.props,t=e.type,n=e.xhrParams,r=this.state.currentPath,o={Authorization:h.getToken()},a=r?r.indexOf("data:")>=0?r:""+r:"",i="";return"profile"===t?n&&n.id&&(i=f.default.user+"/"+n.id+"/avatar"):"organization"===t?n&&n.id&&(i=f.default.organizations+"/"+n.id+"/avatar"):"team"===t&&n&&n.id&&(i=f.default.teams+"/"+n.id+"/avatar"),s.createElement("div",{className:p.avatar},s.createElement(l.default,{path:a,size:"large",enlarge:!0}),s.createElement("div",{className:p.uploadAvatar},s.createElement("div",{className:p.uploadTitle},"上传新图像"),s.createElement(c,{name:"file",showUploadList:!1,headers:o,action:i,beforeUpload:this.beforeUpload,onChange:this.handleChange},m),s.createElement("p",{className:p.uploadDesc},"图片大小不超过1MB")))}}]),t}(s.PureComponent);t.UploadAvatar=g,t.default=g},"./app/containers/Account/Account.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Account/Account.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Account/components/Menus.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:i,t=arguments[1],n=t.type,r=t.payload,a=e.get("loginUser");switch(n){case o.LOGIN:return e.set("loginLoading",!0);case o.LOGGED:return e.set("loginLoading",!1).set("logged",!0).set("loginUser",r.user);case o.LOGIN_ERROR:return e.set("loginLoading",!1);case o.ACTIVE_SUCCESS:return e.set("logged",!0).set("loginUser",r.user);case o.LOGOUT:return e.set("logged",!1).set("loginUser",null);case o.SET_LOGIN_USER:return e.set("loginUser",r.user);case o.UPLOAD_AVATAR_SUCCESS:var s=Object.assign({},a,{avatar:r.path});return localStorage.setItem("loginUser",JSON.stringify(s)),e.set("loginUser",s);case o.SHOW_NAVIGATOR:return e.set("navigator",!0);case o.HIDE_NAVIGATOR:return e.set("navigator",!1);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/App/constants.ts"),a=n("./node_modules/immutable/dist/immutable.js"),i=a.fromJS({logged:!1,loginUser:null,loginLoading:!1,navigator:!0});t.default=r},"./app/containers/App/sagas.ts":function(e,t,n){"use strict";function r(e){var t,n,r,o,a,i;return regeneratorRuntime.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload,n=t.username,r=t.password,o=t.resolve,s.prev=1,s.next=4,x.call(S.default,{method:"post",url:k.default.login,data:{username:n,password:r}});case 4:return a=s.sent,i=C.readListAdapter(a),s.next=8,x.put(E.logged(i));case 8:localStorage.setItem("loginUser",JSON.stringify(i)),o(),s.next=17;break;case 12:return s.prev=12,s.t0=s.catch(1),s.next=16,x.put(E.loginError());case 16:T.errorHandler(s.t0);case 17:case"end":return s.stop()}},p,this,[[1,12]])}function o(e){var t,n,r,o,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,n=t.token,r=t.resolve,i.prev=1,i.next=4,x.call(S.default,{method:"post",url:k.default.signup+"/active/"+n});case 4:o=i.sent,i.t0=o.header.code,i.next=200===i.t0?8:302===i.t0?14:17;break;case 8:return a=C.readListAdapter(o),i.next=11,x.put(E.activeSuccess(a));case 11:return localStorage.setItem("loginUser",JSON.stringify(a)),r(),i.abrupt("return",a);case 14:return w.error(o.header.msg),setTimeout(function(){return location.replace("/")},500),i.abrupt("return");case 17:return i.next=19,x.put(E.activeError());case 19:return w.error(o.header.msg),i.abrupt("return",null);case 21:i.next=28;break;case 23:return i.prev=23,i.t1=i.catch(1),i.next=27,x.put(E.activeError());case 27:T.errorHandler(i.t1);case 28:case"end":return i.stop()}},f,this,[[1,23]])}function a(e){var t,n;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return r.prev=0,r.next=3,x.call(S.default,k.default.user+"/token");case 3:return t=r.sent,n=C.readObjectAdapter(t),r.next=7,x.put(E.logged(n));case 7:localStorage.setItem("loginUser",JSON.stringify(n)),e.payload.resolve(),r.next=16;break;case 11:return r.prev=11,r.t0=r.catch(0),r.next=15,x.put(E.getLoginUserError());case 15:T.errorHandler(r.t0);case 16:case"end":return r.stop()}},h,this,[[0,11]])}function i(e){var t,n,r,o,a,i,s,l,c,u;return regeneratorRuntime.wrap(function(d){for(;;)switch(d.prev=d.next){case 0:return t=e.payload,n=t.id,r=t.name,o=t.type,a=t.params,i=t.resolve,s=t.reject,d.prev=1,d.next=4,x.call(S.default,k.default.checkName+"/"+o,{method:"get",params:Object.assign({},a,{id:n,name:r})});case 4:l=d.sent,c=l&&l.header&&l.header.msg?l.header.msg:"",u=l&&l.header&&l.header.code?l.header.code:"",i(c),d.next=13;break;case 10:d.prev=10,d.t0=d.catch(1),T.errorHandler(d.t0);case 13:case"end":return d.stop()}},m,this,[[1,10]])}function s(e){var t,n,r,o,a,i,s,l;return regeneratorRuntime.wrap(function(c){for(;;)switch(c.prev=c.next){case 0:if(t=e.payload,n=t.pathname,r=t.data,o=t.resolve,a=t.reject,c.prev=1,r.name){c.next=4;break}return c.abrupt("return");case 4:return c.next=6,x.call(S.default,{method:"get",url:k.default.checkNameUnique+"/"+n,params:r});case 6:i=c.sent,s=i&&i.header&&i.header.msg?i.header.msg:"",l=i&&i.header&&i.header.code?i.header.code:"",o(s),c.next=15;break;case 12:c.prev=12,c.t0=c.catch(1),T.errorHandler(c.t0);case 15:case"end":return c.stop()}},g,this,[[1,12]])}function l(e){var t,n,r,o,a,i,s;return regeneratorRuntime.wrap(function(l){for(;;)switch(l.prev=l.next){case 0:return t=e.payload,n=t.id,r=t.name,o=t.description,a=t.department,i=t.resolve,l.prev=1,l.next=4,x.call(S.default,{method:"put",url:k.default.signup+"/"+n,data:{name:r,description:o,department:a}});case 4:s=l.sent,i(s),l.next=13;break;case 8:return l.prev=8,l.t0=l.catch(1),l.next=12,x.put(E.updateProfileError());case 12:T.errorHandler(l.t0);case 13:case"end":return l.stop()}},b,this,[[1,8]])}function c(e){var t,n,r=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=r.user,e.prev=1,e.next=4,x.call(S.default,{method:"put",url:k.default.user+"/"+t.id+"/changepassword",data:t});case 4:return n=e.sent,e.next=7,x.put(E.userPasswordChanged(r.info));case 7:r.resolve(),e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,x.put(E.changeUserPasswordFail());case 14:T.errorHandler(e.t0);case 15:case"end":return e.stop()}},v,this,[[1,10]])}function u(e){var t,n,r,o,a,i;return regeneratorRuntime.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload,n=t.token,r=t.resolve,o=t.reject,s.prev=1,s.next=4,x.call(S.default,{method:"post",url:k.default.organizations+"/confirminvite/"+n});case 4:a=s.sent,s.t0=a.header.code,s.next=200===s.t0?8:13;break;case 8:return i=C.readListAdapter(a),s.next=11,x.put(E.joinOrganizationSuccess(i));case 11:return r&&r(i),s.abrupt("return",n);case 13:return s.next=15,x.put(E.joinOrganizationError());case 15:return w.error(a.header.msg),s.abrupt("return",null);case 17:s.next=34;break;case 19:if(s.prev=19,s.t1=s.catch(1),o&&o(s.t1),!s.t1.response){s.next=34;break}console.log(s.t1.response.status),s.t2=s.t1.response.status,s.next=403===s.t2?27:400===s.t2?30:33;break;case 27:return S.removeToken(),localStorage.removeItem("TOKEN"),s.abrupt("break",34);case 30:return console.log({error:s.t1}),w.error(s.t1.response.data.header.msg,3),s.abrupt("break",34);case 33:return s.abrupt("break",34);case 34:case"end":return s.stop()}},_,this,[[1,19]])}function d(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[A.throttle(1e3,j.CHECK_NAME,s),A.takeLatest(j.GET_LOGIN_USER,a),A.takeLatest(j.ACTIVE,o),A.takeLatest(j.LOGIN,r),A.takeLatest(j.UPDATE_PROFILE,l),A.takeLatest(j.CHANGE_USER_PASSWORD,c),A.takeLatest(j.JOIN_ORGANIZATION,u)];case 2:case"end":return e.stop()}},y,this)}var p=regeneratorRuntime.mark(r),f=regeneratorRuntime.mark(o),h=regeneratorRuntime.mark(a),m=regeneratorRuntime.mark(i),g=regeneratorRuntime.mark(s),b=regeneratorRuntime.mark(l),v=regeneratorRuntime.mark(c),_=regeneratorRuntime.mark(u),y=regeneratorRuntime.mark(d);Object.defineProperty(t,"__esModule",{value:!0});var A=n("./node_modules/redux-saga/es/index.js"),x=n("./node_modules/redux-saga/es/effects.js"),w=n("./node_modules/antd/lib/message/index.js"),j=n("./app/containers/App/constants.ts"),E=n("./app/containers/App/actions.ts"),S=n("./app/utils/request.ts"),k=n("./app/utils/api.js"),C=n("./app/utils/asyncAdapter.js"),T=n("./app/utils/util.ts");t.login=r,t.activeUser=o,t.getLoginUser=a,t.checkName=i,t.checkNameUnique=s,t.updateProfile=l,t.changeUserPassword=c,t.joinOrganization=u,t.default=d},"./app/containers/App/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("global")};t.selectGlobal=o;var a=function(){return r.createSelector(o,function(e){return e.get("logged")})};t.makeSelectLogged=a;var i=function(){return r.createSelector(o,function(e){return e.get("loginUser")})};t.makeSelectLoginUser=i;var s=function(){return r.createSelector(o,function(e){return e.get("loginLoading")})};t.makeSelectLoginLoading=s;var l=function(){return r.createSelector(o,function(e){return e.get("navigator")})};t.makeSelectNavigator=l;var c=function(){var e=void 0,t=void 0;return function(n){var r=n.get("route");return r.equals(e)||(e=r,t=r.toJS()),t}};t.makeSelectLocationState=c},"./app/containers/Background/Background.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Background/Background.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Background/Canvas.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n-1?n.getParentKey(e.key,Q.generateData(o)):null}).filter(function(e,t,n){return e&&n.indexOf(e)===t});n.setState({expandedKeys:i,searchValue:a,autoExpandParent:!0})},n.executeSql=function(){var e=n.state,t=e.sourceIdGeted,r=e.listData,o=e.isDeclarate;n.setState({isFold:!0,alertVisible:!0});var a=n.codeMirrorInstanceOfQuerySQL.getValue(),i="";if("yes"===o&&n.codeMirrorInstanceOfDeclaration){i=n.codeMirrorInstanceOfDeclaration.getValue()+"{"+a+"}",n.getTeamTreeData(i)}else{i="{"+a+"}";var s=r.map(function(e){return e.params=[],e});n.setState({teamParams:[{k:"",v:""}],listData:s},function(){n.setState({teamCheckedKeys:[]})})}n.props.onExecuteSql(t,i,function(e){if(e){var t=e.resultset,r=e.columns;r.map(function(e){var t=(te.SQL_FIELD_TYPES.date,void 0);for(var n in te.SQL_FIELD_TYPES)te.SQL_FIELD_TYPES.hasOwnProperty(n)&&te.SQL_FIELD_TYPES[n].indexOf(e.type)>=0&&(t=n);return e.visualType=t||"string",e.modelType=q.SQL_NUMBER_TYPES.indexOf(e.type)<0?"category":"value",e.sqlType=e.type,e}),n.setState({executeResultset:t,executeColumns:r})}}),n.asyncValidateResult=setTimeout(function(){n.setState({isShowSqlValidateAlert:!0})},100)},n.selectModelItem=function(e,t){return function(r){var o=n.state.executeColumns,a={name:e.name,sqlType:e.sqlType,visualType:"visualType"===t?r:e.visualType,modelType:"modelType"===t?"维度"===r.target.value?"category":"value":e.modelType};o.splice(o.findIndex(function(t){return t.name===e.name}),1,a),n.setState({executeColumns:o.slice()})}},n.onTeamParamChange=function(e,t){return function(r){var o=n.state,a=(o.configTeam,o.teamParams,o.listData);a.find(function(t){return t.id===e}).params[t].v=r.target.value,n.setState({listData:a.slice()})}},n.onModalOk=function(){n.props.form.validateFieldsAndScroll(function(e,t){if(!e){var r=n.state,o=r.executeColumns,a=(r.configTeam,r.listData),i=r.isDeclarate,s=r.name,l=r.description,c=r.isNameExited,u=r.sqlExecuteCode,d=n.props,p=d.route,f=d.params,h=t.id,m=t.source_id,g=t.source_name;if(!s.trim())return void L.error("\b\bView名称不能为空");if(c)return void L.error("\b\bView名称已存在");if(!m||!g)return void L.error("请选择一个Source");switch(u){case 200:var b=n.codeMirrorInstanceOfQuerySQL.doc.getValue(),v="";if("yes"===i&&n.codeMirrorInstanceOfDeclaration){var _=n.codeMirrorInstanceOfDeclaration.doc.getValue();v=b?_+"{"+b+"}":_}else v=b?"{"+b+"}":"";var y={};o.forEach(function(e){var t=e.name,n=e.sqlType,r=e.visualType,o=e.modelType;y[t]={sqlType:n,visualType:r,modelType:o}});var A=a.filter(function(e){return e.checked}).map(function(e){return{id:e.id,params:e.params}}),x={name:s,description:l,sql:v,model:JSON.stringify(y),config:0!==A.length?JSON.stringify({team:A}):"",projectId:f.pid};"/project/:pid/bizlogic"===p.path?n.props.onAddBizlogic(Object.assign({},x,{sourceId:Number(m)}),function(){n.hideForm()}):n.props.onEditBizlogic(Object.assign({},x,{id:h,source:{id:Number(m),name:g}}),function(){n.hideForm()});break;default:L.error("请检查SQL语句是否正确!",3)}}})},n.hideForm=function(){n.setState({executeResultset:[],executeColumns:[],isDeclarate:"no"},function(){n.codeMirrorInstanceOfDeclaration=!1,n.setState({isShowSqlValidateAlert:!1})}),n.props.form.resetFields(),n.props.router.push("/project/"+n.props.params.pid+"/bizlogics")},n.changeName=function(e){var t=n.props,r=t.onCheckUniqueName,o=t.route,a=t.params,i=t.form,s=i.getFieldsValue(),l=s.id,c={projectId:a.pid,id:"/project/:pid/bizlogic"===o.path?"":l,name:e.currentTarget.value};n.setState({name:e.currentTarget.value}),r("view",c,function(){n.setState({isNameExited:!1})},function(e){n.setState({isNameExited:!0})})},n.changeDesc=function(e){n.setState({description:e.currentTarget.value})},n.onTeamExpand=function(e){n.setState({teamExpandedKeys:e,teamAutoExpandParent:!1})},n.onCheck=function(e){n.setState({listData:n.getListData(e.checked),teamCheckedKeys:e.checked})},n.onSelect=function(e,t){n.setState({selectedKeys:e})},n.renderTreeNodes=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e.map(function(e){var r=n.state,o=r.listData,a=r.teamParams,i=o.find(function(t){return t.id===e.id}),s=c.createElement(ee.default,{depth:t,onTeamParamChange:n.onTeamParamChange,teamParams:a,currentItem:i});return e.children?c.createElement(B,{key:e.id,title:s,dataRef:e},n.renderTreeNodes(e.children,t+1)):c.createElement(B,{key:e.id,title:s,className:G.test})})},n.handleClose=function(){n.setState({alertVisible:!1})},n.foldBoard=function(){n.setState({isFold:!n.state.isFold})},n.cancel=function(){n.props.router.goBack()},n.changeTabs=function(e){var t=n.state.teamParams,r=n.props,o=r.params,a=r.bizlogics;if(!t.length){var i=a.find(function(e){return e.id===Number(o.bid)}),s=i.sql;n.getTeamTreeData(s)}},n.handleTree=function(e,t){var r=n.state.expandedKeys;if(n.setState({autoExpandParent:!1}),t.selected)r.indexOf(e[0])<0?(r.push(e[0]),n.setState({expandedKeys:r})):n.setState({expandedKeys:r.filter(function(t){return t!==e[0]})});else{var o=[];0===r.length?(r.push(t.node.props.title),o=r):o=r.filter(function(e){return e!==t.node.props.title}),n.setState({expandedKeys:o})}},n.state={expandedKeys:[],searchValue:"",autoExpandParent:!0,modelType:"",dataList:[],sourceIdGeted:0,isDeclarate:"no",isShowSqlValidateAlert:!1,executeResultset:[],executeColumns:[],schemaData:[],treeData:[],listData:[],teamExpandedKeys:[],teamAutoExpandParent:!0,teamCheckedKeys:[],selectedKeys:[],teamParams:[{k:"",v:""}],configTeam:[],alertVisible:!0,screenWidth:0,isFold:!0,name:"",description:"",isNameExited:!1,selectedSourceName:"",sqlExecuteCode:!1},n.codeMirrorInstanceOfDeclaration=!1,n.codeMirrorInstanceOfQuerySQL=!1,n}return a(t,e),l(t,[{key:"componentWillMount",value:function(){var e=this.props,t=e.params,n=e.route,r=e.bizlogics,o=e.onLoadSources,a=(e.onLoadSchema,e.onLoadBizlogics),i=e.onLoadViewTeam,s=this.state;s.selectedSourceName,s.schemaData;this.setState({screenWidth:document.documentElement.clientWidth,isFold:"/project/:pid/bizlogic"!==n.path}),r||a(t.pid),o(t.pid),i(t.pid)}},{key:"componentWillReceiveProps",value:function(e){var t=this,n=e.viewTeam,r=e.sqlValidateCode,o=this.state,a=o.listData,i=(o.teamParams,o.teamCheckedKeys),s=(o.schemaData,this.props),l=s.route,c=s.params,u=s.bizlogics;window.onresize=function(){return t.setState({screenWidth:document.documentElement.clientWidth})};var d=void 0;d=0===a.length?te.toListBF(n).map(function(e){var t=[{k:"",v:""}],n=void 0,r=void 0;if(u)if("/project/:pid/bizlogic"===l.path)n=t,r=i.indexOf(""+e.id)>=0;else{var o=u.find(function(e){return e.id===Number(c.bid)});if(o.config){var a=JSON.parse(o.config).team,s=a.find(function(t){return t.id===e.id});n=s?s.params:[],r=!!s}else n=t}else n=t;return Object.assign({},e,{checked:r,params:n})}):this.state.listData.map(function(e){return Object.assign({},e,{checked:i.indexOf(""+e.id)>=0,params:e.params})});var p=d.filter(function(e){return e.checked}).map(function(e){return""+e.id});this.setState({treeData:n,listData:d,teamCheckedKeys:p,sqlExecuteCode:r})}},{key:"componentDidMount",value:function(){var e=this,t=this.props,n=t.params,r=t.bizlogics,o=t.onLoadBizlogics,a=this.state,i=a.schemaData;a.listData,a.teamParams;this.props.onHideNavigator(),this.generateList(Q.generateData(i));var s=document.querySelector("#sql_tmpl");this.handleTmplCodeMirror(s),n.bid&&(r?this.showViewInfo(r):o(n.pid,function(t){e.showViewInfo(t)}))}},{key:"showViewInfo",value:function(e){var t=this,n=this.props,r=n.params,o=n.onLoadSchema,a=this.state,i=a.listData,s=(a.teamParams,e.find(function(e){return e.id===Number(r.bid)})),l=s.name,c=s.description,u=s.source,d=s.sourceId,p=s.sql,f=s.model,h=s.config,m=p.includes("{")&&""!==p.substring(0,p.lastIndexOf("{"));if(o(d,function(e){t.setState({schemaData:e,sourceIdGeted:d},function(){t.promptCodeMirror(Q.generateData(t.state.schemaData))})}),f){var g=JSON.parse(f),b=[];for(var v in g)g.hasOwnProperty(v)&&b.push(Object.assign({name:v},g[v]));this.setState({executeColumns:b})}else this.setState({executeColumns:[]});this.props.onExecuteSql(d,p,function(e){t.setState({executeResultset:e.resultset})});var _=h?JSON.parse(h).team:"",y=i.map(function(e){var t=_.find(function(t){return e.id===t.id});return e.params=t.params,e});this.setState({selectedSourceName:u.name,name:l,description:c,listData:y,teamParams:_?_[0].params.map(function(e){return{k:e.k,v:e.v}}):[]}),this.props.form.setFieldsValue({id:Number(r.bid),source_id:""+d,source_name:u.name,isDeclarate:m?"yes":"no"}),m?this.setState({isDeclarate:"yes"},function(){var e=document.querySelector("#declaration");t.handleDelareCodeMirror(e),t.codeMirrorInstanceOfDeclaration.doc.setValue(p.includes("{")?p.substring(0,p.lastIndexOf("{")):p)}):this.codeMirrorInstanceOfDeclaration=!1,this.codeMirrorInstanceOfQuerySQL.doc.setValue(p.includes("{")?p.substring(p.indexOf("{")+1,p.lastIndexOf("}")):"")}},{key:"componentWillUnmount",value:function(){clearTimeout(this.asyncValidateResult)}},{key:"getListData",value:function(e){var t=this.state,n=t.listData,r=t.teamParams;return n.map(function(t){var n=r.map(function(e){return{k:e.k,v:""}});return Object.assign({},t,{checked:e.indexOf(""+t.id)>=0,params:t.params.length?t.params:n})})}},{key:"getTeamTreeData",value:function(e){var t=this.state.listData,n=e.match(/team@var\s+\$\w+\$/g),r=n?n.map(function(e){return e.substring(e.indexOf("$")+1,e.lastIndexOf("$"))}):[],o=r.map(function(e){return{k:e,v:""}}),a=t.map(function(e){var t=e.params;return e.params=r.map(function(e){var n=t.find(function(t){return t.k===e});return n?Object.assign({},n):{k:e,v:""}}),e});this.setState({teamParams:o,listData:a.slice()})}},{key:"render",value:function(){var e=this,t=this.props,n=t.form,r=t.sources,o=t.sqlValidateMessage,a=t.executeLoading,i=t.modalLoading,l=(t.route,t.viewTeam),u=n.getFieldDecorator,d=this.state,p=d.searchValue,f=d.expandedKeys,h=d.autoExpandParent,m=d.isDeclarate,g=d.isShowSqlValidateAlert,b=d.executeResultset,v=d.executeColumns,_=d.schemaData,A=(d.treeData,d.alertVisible),j=d.screenWidth,L=d.isFold,Y=d.name,q=d.description,K=d.selectedSourceName,X=d.sqlExecuteCode,J={labelCol:{span:8},wrapperCol:{span:16}},Z=b?b.map(function(e){return e}):[],$=v?v.map(function(e){return e}):[],ee=void 0;ee=r?c.createElement(R,{onClick:this.selectSource},(r||[]).map(function(e){return c.createElement(N,{key:e.id},e.name)})):re;var he=[];for(var me in Z[0])Z[0].hasOwnProperty(me)&&he.push(me);var ge=[];he.forEach(function(e,t){ge.push({title:e,dataIndex:e,className:""+W.textAlignLeft,width:80})});var be=[];for(var ve in te.SQL_FIELD_TYPES)te.SQL_FIELD_TYPES.hasOwnProperty(ve)&&be.push(ve);var _e=be.map(function(e){return c.createElement(z,{key:e,value:e},e)}),ye=[{title:"表名",dataIndex:"name",className:""+W.textAlignLeft,key:"name",width:"25%"},{title:"类型",dataIndex:"modelType",key:"modelType",className:""+W.textAlignLeft,width:"25%",render:function(t,n){return c.createElement(V,{options:["维度","指标"],value:"category"===n.modelType?"维度":"指标",onChange:e.selectModelItem(n,"modelType")})}},{title:"字段类型",dataIndex:"visualType",className:""+W.textAlignLeft,key:"visualType",width:"25%",render:function(t,n){return c.createElement(E,{size:"small",style:{width:"50%"},value:n.visualType,onChange:e.selectModelItem(n,"visualType")},_e)}},{title:"类型",dataIndex:"sqlType",className:""+W.hide,key:"sqlType",render:function(e,t){return oe}}],Ae=void 0;Ae=g&&X?A?c.createElement(M,{className:G.sqlAlertText,message:"syntax check "+(200===X?"success":"error"),description:""+(o||""),type:200===X?"success":"error",showIcon:!0,closable:!0,onClose:this.handleClose}):null:"";var xe=[];Q.generateData(_).forEach(function(e){if(e.key.search(p)>=0)xe.push(e);else if(e.children){var t=[];e.children.forEach(function(n){if(n.key.search(p)>=0){t.push(n);var r={title:e.title,key:e.key,children:t};if(t.length>1)return;xe.push(r)}})}});var we={simple:j<768||768===j,defaultPageSize:100,showSizeChanger:!0,pageSizeOptions:["100","200","300","400"]},je=c.createElement(k,{className:""+(L?G.foldIcon:G.noFoldIcon),type:L?"down-circle-o":"left-circle-o",onClick:this.foldBoard}),Ee=c.createElement("span",null,"声明变量",c.createElement(D,{title:"帮助"},c.createElement(P,{placement:"left",content:c.createElement("div",{className:G.declareMsg},c.createElement("p",{className:G.textMsg},"查询变量:query@var $变量名称$"),c.createElement("p",{className:G.exampleMsg},"query@var $age$ = '29'; "),c.createElement("p",{className:G.textMsg},"团队权限变量:team@var $变量名称$"),c.createElement("p",{className:G.exampleMsg},"team@var $city$ = '北京'; ")),title:ae,trigger:"click"},c.createElement(k,{type:"question-circle-o",className:G.questionClass}))));return c.createElement("div",{className:G.bizlogic},c.createElement(ne.default,{currentType:"view",className:G.header,name:Y,description:q,placeholder:this.placeholder,onNameChange:this.changeName,onDescriptionChange:this.changeDesc,onSave:this.onModalOk,onCancel:this.cancel,loading:i}),c.createElement(y,{className:G.formView},c.createElement(x,{className:G.formLeft+" no-item-margin"},c.createElement(w,{span:24,className:G.leftInput},c.createElement(U,{className:W.hide},u("id",{hidden:"add"===this.props.type})(ie)),c.createElement(U,{label:"",className:W.hide},u("source_id",{})(se)),c.createElement(U,{label:"",className:W.hide},u("source_name",{})(le)),c.createElement("div",{className:G.sourceSelect},c.createElement(I,{overlay:ee,trigger:["click"],placement:"bottomLeft"},c.createElement("a",null,K||"选择一个Source")))),c.createElement(w,{span:24,className:""+(0!==_.length?G.treeSearch:W.hide)},c.createElement(F,{placeholder:"Search the Schema",onChange:this.searchSchema})),c.createElement(w,{span:24,className:""+(0!==_.length?G.sourceTree:W.hide)},c.createElement(O,{onExpand:this.onExpand,expandedKeys:f,autoExpandParent:h,onSelect:this.handleTree},function e(t){return t.map(function(t){return t.children?c.createElement(B,{key:t.key,title:t.key},e(t.children)):c.createElement(B,{key:t.key,title:t.key})})}(xe||[])))),c.createElement(x,{className:G.formRight},c.createElement(w,{span:24,className:"small-item-margin "+G.declareSelect},c.createElement(U,s({label:Ee},J),u("isDeclarate",{initialValue:"no"})(c.createElement(V,{size:"default",onChange:this.changeIsDeclarate},ce,ue)))),c.createElement(x,{className:G.formTop},c.createElement(w,{span:24,className:("no"===m?G.noDeclaration:"")+" "+G.declareText},c.createElement(U,{label:"",className:G.declareForm},u("declaration",{initialValue:""})(de))),c.createElement(w,{span:24,className:"no-item-margin "+G.sqlText},c.createElement(U,{label:"",className:G.sqlForm},u("sql_tmpl",{initialValue:""})(pe)))),c.createElement(x,{className:G.fromBtn},c.createElement("span",{className:G.sqlAlert},Ae),c.createElement(S,{className:G.executeBtn,key:"forward",size:"large",type:"primary",loading:a,onClick:this.executeSql},fe,"Execute")),L?c.createElement(x,{className:""+(L?G.formBottom:G.formBottomNone)},c.createElement(w,{span:24,className:G.tabCol},c.createElement(C,{defaultActiveKey:"data",tabBarExtraContent:je,className:G.viewTab,onChange:this.changeTabs},c.createElement(H,{tab:"Data",key:"data"},c.createElement(T,{className:G.viewTabPane,dataSource:Z,columns:ge,pagination:we})),c.createElement(H,{tab:"Model",key:"model"},c.createElement(T,{className:G.viewTabPane,dataSource:$,columns:ye,pagination:we})),c.createElement(H,{tab:"Team",key:"team"},c.createElement(O,{className:G.viewTabPane,checkStrictly:!0,checkable:!0,onExpand:this.onTeamExpand,expandedKeys:this.state.teamExpandedKeys,autoExpandParent:this.state.teamAutoExpandParent,defaultExpandAll:!0,onCheck:this.onCheck,checkedKeys:this.state.teamCheckedKeys,onSelect:this.onSelect,selectedKeys:this.state.selectedKeys},this.renderTreeNodes(l||[])))))):je)))}}]),t}(c.Component);t.Bizlogic=he;var me=d.createStructuredSelector({sqlValidateCode:K.makeSelectSqlValidateCode(),sqlValidateMessage:K.makeSelectSqlValidateMsg(),executeLoading:K.makeSelectExecuteLoading(),sources:Z.makeSelectSources(),modalLoading:K.makeSelectModalLoading(),bizlogics:K.makeSelectBizlogics(),viewTeam:K.makeSelectViewTeam()}),ge=u.connect(me,i),be=f.default({key:"bizlogic",reducer:m.default}),ve=h.default({key:"bizlogic",saga:g.default}),_e=f.default({key:"source",reducer:b.default}),ye=h.default({key:"source",saga:v.default});t.default=p.compose(be,_e,ve,ye,ge)(y.create()(he))},"./app/containers/Bizlogic/TeamTreeAction.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n0?[l.createElement("span",{key:t,className:O.highlight},n[0]),e]:e}))}):null}).filter(function(e){return!!e})})},n.state={tableSource:[],tableSortedInfo:{},nameFilterValue:"",nameFilterDropdownVisible:!1,screenWidth:0},n}return a(t,e),s(t,[{key:"componentWillMount",value:function(){this.props.onLoadBizlogics(this.props.params.pid),this.setState({screenWidth:document.documentElement.clientWidth})}},{key:"componentWillReceiveProps",value:function(e){var t=this;window.onresize=function(){return t.setState({screenWidth:document.documentElement.clientWidth})},e.bizlogics&&this.setState({tableSource:e.bizlogics.map(function(e){return e.key=e.id,e})})}},{key:"render",value:function(){var e=this,t=this.state,n=t.tableSource,r=t.tableSortedInfo,o=t.nameFilterValue,a=t.nameFilterDropdownVisible,i=t.screenWidth,s=this.props,c=s.onDeleteBizlogic,u=s.tableLoading,d=s.currentProject,p=P.default(d,"view",!0)(j),f=P.default(d,"view",!1)(j),h=l.createElement(E,{title:"删除"},l.createElement(p,{icon:"delete",shape:"circle",type:"ghost"})),m=[{title:"名称",dataIndex:"name",key:"name",filterDropdown:l.createElement(y.default,{placeholder:"name",value:o,onChange:this.onSearchInputChange,onSearch:this.onSearch}),filterDropdownVisible:a,onFilterDropdownVisibleChange:function(t){return e.setState({nameFilterDropdownVisible:t})},sorter:function(e,t){return e.name>t.name?-1:1},sortOrder:"name"===r.columnKey&&r.order},{title:"描述",dataIndex:"description",key:"description"},{title:"Source",dataIndex:"sourceId",key:"sourceId",render:function(e,t){return t.source.name}},{title:"操作",key:"action",width:120,className:""+(I.initializePermission(d,"viewPermission")?O.textAlignCenter:O.hide),render:function(t,n){return l.createElement("span",{className:"ant-table-action-column"},l.createElement(E,{title:"修改"},l.createElement(f,{icon:"edit",shape:"circle",type:"ghost",onClick:e.showDetail(n.id)})),l.createElement(k,{title:"确定删除?",placement:"bottom",onConfirm:c(n.id)},h))}}],g={simple:i<768||768===i,defaultPageSize:20,showSizeChanger:!0};return l.createElement(v.default,null,R,l.createElement(v.default.Title,null,l.createElement(A,null,l.createElement(x,{span:24},l.createElement(C,{className:O.breadcrumb},N)))),l.createElement(v.default.Body,null,l.createElement(_.default,null,l.createElement(_.default.Header,null,B,l.createElement(_.default.Tools,null,l.createElement(E,{placement:"bottom",title:"新增"},l.createElement(p,{type:"primary",icon:"plus",onClick:this.showAdd})))),l.createElement(_.default.Body,null,l.createElement(A,null,l.createElement(x,{span:24},l.createElement(w,{dataSource:n||[],columns:m,pagination:g,onChange:this.handleTableChange,loading:u,bordered:!0})))))))}}]),t}(l.PureComponent);t.Bizlogics=F,t.mapDispatchToProps=i;var U=d.createStructuredSelector({bizlogics:M.makeSelectBizlogics(),loginUser:L.makeSelectLoginUser(),tableLoading:M.makeSelectTableLoading(),currentProject:D.makeSelectCurrentProject()}),z=u.connect(U,i),H=h.default({key:"bizlogic",reducer:g.default}),V=m.default({key:"bizlogic",saga:b.default});t.default=f.compose(H,V,z)(F)},"./app/containers/Bizlogic/reducer.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i,t=arguments[1],n=t.type,r=t.payload,a=e.get("bizlogics");switch(n){case o.LOAD_BIZLOGICS:return e.set("tableLoading",!0);case o.LOAD_BIZLOGICS_SUCCESS:return e.set("bizlogics",r.bizlogics).set("tableLoading",!1);case o.ADD_BIZLOGIC:return e.set("modalLoading",!0);case o.ADD_BIZLOGIC_SUCCESS:return e.set("bizlogics",[r.result]).set("modalLoading",!1);case o.ADD_BIZLOGIC_FAILURE:return e.set("modalLoading",!1);case o.DELETE_BIZLOGIC:return e;case o.DELETE_BIZLOGIC_SUCCESS:return e.set("bizlogics",a.filter(function(e){return e.id!==r.id}));case o.DELETE_BIZLOGIC_FAILURE:return e;case o.EDIT_BIZLOGIC:return e.set("modalLoading",!0);case o.EDIT_BIZLOGIC_SUCCESS:return a.splice(a.findIndex(function(e){return e.id===r.result.id}),1,r.result),e.set("bizlogics",a.slice()).set("modalLoading",!1);case o.EDIT_BIZLOGIC_FAILURE:return e.set("modalLoading",!1);case o.LOAD_SCHEMA:case o.LOAD_SCHEMA_SUCCESS:case o.LOAD_SCHEMA_FAILURE:return e;case o.EXECUTE_SQL:return e.set("executeLoading",!0);case o.EXECUTE_SQL_SUCCESS:var s=r.result;s.code,s.msg;return e.set("executeLoading",!1).set("sqlValidateMessage",void 0).set("sqlValidateCode",200);case o.EXECUTE_SQL_FAILURE:return e.set("executeLoading",!1).set("sqlValidateMessage",r.error.response.data.header.msg).set("sqlValidateCode",1);case o.LOAD_VIEW_TEAM:return e;case o.LOAD_VIEW_TEAM_SUCCESS:return e.set("viewTeam",r.result);case o.LOAD_VIEW_TEAM_FAILURE:default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Bizlogic/constants.ts"),a=n("./node_modules/immutable/dist/immutable.js"),i=a.fromJS({bizlogics:null,sqlValidateCode:!1,sqlValidateMessage:!1,tableLoading:!1,modalLoading:!1,schemaData:[],viewTeam:[]});t.default=r},"./app/containers/Bizlogic/sagas.ts":function(e,t,n){"use strict";function r(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,o.prev=1,o.next=4,L.call(I.default,R.default.bizlogic+"?projectId="+t.projectId);case 4:return n=o.sent,r=N.readListAdapter(n),o.next=8,L.put(P.bizlogicsLoaded(r));case 8:t.resolve&&t.resolve(r),o.next=16;break;case 11:return o.prev=11,o.t0=o.catch(1),o.next=15,L.put(P.loadBizlogicsFail());case 15:F.errorHandler(o.t0);case 16:case"end":return o.stop()}},b,this,[[1,11]])}function o(e){var t,n;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=e.payload,r.prev=1,r.next=4,L.call(I.default,{method:"post",url:R.default.bizlogic,data:t.bizlogic});case 4:return n=r.sent,r.next=7,L.put(P.bizlogicAdded(n.payload));case 7:t.resolve(),r.next=15;break;case 10:return r.prev=10,r.t0=r.catch(1),r.next=14,L.put(P.addBizlogicFail());case 14:F.errorHandler(r.t0);case 15:case"end":return r.stop()}},v,this,[[1,10]])}function a(e){var t,n;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=e.payload,r.prev=1,r.next=4,L.call(I.default,{method:"delete",url:R.default.bizlogic+"/"+t.id});case 4:return n=r.sent,r.next=7,L.put(P.bizlogicDeleted(t.id));case 7:r.next=14;break;case 9:return r.prev=9,r.t0=r.catch(1),r.next=13,L.put(P.deleteBizlogicFail());case 13:F.errorHandler(r.t0);case 14:case"end":return r.stop()}},_,this,[[1,9]])}function i(e){var t,n,r,o,a,i,s,l,c;return regeneratorRuntime.wrap(function(u){for(;;)switch(u.prev=u.next){case 0:return t=e.payload,n=t.bizlogic,r=n.config,o=n.description,a=n.id,i=n.model,s=n.name,l=n.source,c=n.sql,u.prev=2,u.next=5,L.call(I.default,{method:"put",url:R.default.bizlogic+"/"+a,data:{config:r,description:o,id:a,model:i,name:s,sourceId:l.id,sql:c}});case 5:return u.next=7,L.put(P.bizlogicEdited(t.bizlogic));case 7:t.resolve(),u.next=15;break;case 10:return u.prev=10,u.t0=u.catch(2),u.next=14,L.put(P.editBizlogicFail());case 14:F.errorHandler(u.t0);case 15:case"end":return u.stop()}},y,this,[[2,10]])}function s(e){var t,n,r,o,a,i,s;return regeneratorRuntime.wrap(function(l){for(;;)switch(l.prev=l.next){case 0:return t=e.payload,l.prev=1,n=t.controlId,r=t.viewId,o=t.column,a=t.parents,l.next=5,L.call(I.default,{method:"post",url:R.default.bizlogic+"/"+r+"/getdistinctvalue",data:{column:o,parents:a||[]}});case 5:return i=l.sent,s=i.payload[o],l.next=9,L.put(P.cascadeSourceLoaded(n,o,s));case 9:l.next=16;break;case 11:return l.prev=11,l.t0=l.catch(1),l.next=15,L.put(P.loadCascadeSourceFail(l.t0));case 15:F.errorHandler(l.t0);case 16:case"end":return l.stop()}},A,this,[[1,11]])}function l(e){var t,n,r,o,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,i.prev=1,n=t.id,r=t.resolve,i.next=5,L.call(I.default,{method:"post",url:R.default.bizlogic+"/"+n+"/resultset?limit=1",data:{}});case 5:return o=i.sent,a=B.default(N.readListAdapter(o)),i.next=9,L.put(P.bizdataSchemaLoaded(a.keys));case 9:r(a.keys),i.next=16;break;case 12:return i.prev=12,i.t0=i.catch(1),i.next=16,L.put(P.loadBizdataSchemaFail(i.t0));case 16:case"end":return i.stop()}},x,this,[[1,12]])}function c(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,o.prev=1,o.next=4,L.call(I.default,R.default.bizlogic+"/database?sourceId="+t.sourceId);case 4:return n=o.sent,r=N.readListAdapter(n),o.next=8,L.put(P.schemaLoaded(r));case 8:t.resolve(r),o.next=16;break;case 11:return o.prev=11,o.t0=o.catch(1),o.next=15,L.put(P.loadSchemaFail());case 15:F.errorHandler(o.t0);case 16:case"end":return o.stop()}},w,this,[[1,11]])}function u(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,o.prev=1,o.next=4,L.call(I.default,{method:"post",url:R.default.bizlogic+"/executesql",data:{sql:t.sql,sourceId:t.sourceId}});case 4:return n=o.sent,r=n&&n.header,o.next=8,L.put(P.sqlExecuted(r));case 8:t.resolve&&t.resolve(n.payload),o.next=15;break;case 11:return o.prev=11,o.t0=o.catch(1),o.next=15,L.put(P.executeSqlFail(o.t0));case 15:case"end":return o.stop()}},j,this,[[1,11]])}function d(e){var t,n,r,o,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,i.prev=1,n=t.id,r=t.params,o=t.resolve,i.next=5,L.call(I.default,{method:"post",url:R.default.bizlogic+"/"+n+"/getdata",data:r});case 5:return a=i.sent,i.next=8,L.put(P.dataLoaded());case 8:o(a.payload),i.next=16;break;case 11:return i.prev=11,i.t0=i.catch(1),i.next=15,L.put(P.loadDataFail(i.t0));case 15:F.errorHandler(i.t0);case 16:case"end":return i.stop()}},E,this,[[1,11]])}function p(e){var t,n,r,o,a,i;return regeneratorRuntime.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload,s.prev=1,n=t.viewId,r=t.fieldName,o=t.filters,a=t.resolve,s.next=5,L.call(I.default,{method:"post",url:R.default.bizlogic+"/"+n+"/getdistinctvalue",data:{column:r,parents:o?Object.entries(o).map(function(e){var t=g(e,2);return{column:t[0],value:t[1]}}):[]}});case 5:return i=s.sent,s.next=8,L.put(P.distinctValueLoaded(i.payload,r));case 8:a&&a(N.readListAdapter(i)),s.next=16;break;case 11:return s.prev=11,s.t0=s.catch(1),s.next=15,L.put(P.loadDistinctValueFail(s.t0));case 15:F.errorHandler(s.t0);case 16:case"end":return s.stop()}},S,this,[[1,11]])}function f(e){var t,n,r,o,a,i,s,l,c,u,d,p,f,h;return regeneratorRuntime.wrap(function(m){for(;;)switch(m.prev=m.next){case 0:return t=e.payload,n=t.renderType,r=t.itemId,o=t.viewId,a=t.params,i=t.vizType,s=a.filters,l=a.linkageFilters,c=a.globalFilters,u=a.params,d=a.linkageParams,p=a.globalParams,f=M(a,["filters","linkageFilters","globalFilters","params","linkageParams","globalParams"]),m.prev=3,m.next=6,L.call(I.default,{method:"post",url:R.default.bizlogic+"/"+o+"/getdata",data:Object.assign({},f,{filters:s.concat(l).concat(c),params:u.concat(d).concat(p)})});case 6:return h=m.sent,m.next=9,L.put(P.dataFromItemLoaded(n,r,h.payload,i));case 9:m.next=16;break;case 11:return m.prev=11,m.t0=m.catch(3),m.next=15,L.put(P.loadDataFromItemFail(r,i));case 15:F.errorHandler(m.t0);case 16:case"end":return m.stop()}},k,this,[[3,11]])}function h(e){var t,n,r,o,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,i.prev=1,i.next=4,L.call(I.default,R.default.projects+"/"+t.projectId);case 4:return n=i.sent,r=N.readListAdapter(n),i.next=8,L.call(I.default,R.default.organizations+"/"+r.orgId+"/teams");case 8:return o=i.sent,a=N.readListAdapter(o),i.next=12,L.put(P.viewTeamLoaded(a));case 12:i.next=19;break;case 14:return i.prev=14,i.t0=i.catch(1),i.next=18,L.put(P.loadViewTeamFail(i.t0));case 18:F.errorHandler(i.t0);case 19:case"end":return i.stop()}},C,this,[[1,14]])}function m(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[O.takeLatest(D.LOAD_BIZLOGICS,r),O.takeEvery(D.ADD_BIZLOGIC,o),O.takeEvery(D.DELETE_BIZLOGIC,a),O.takeEvery(D.EDIT_BIZLOGIC,i),O.takeEvery(D.LOAD_CASCADESOURCE,s),O.takeEvery(D.LOAD_BIZDATA_SCHEMA,l),O.takeLatest(D.LOAD_SCHEMA,c),O.takeLatest(D.EXECUTE_SQL,u),O.takeEvery(D.LOAD_DATA,d),O.takeEvery(D.LOAD_DISTINCT_VALUE,p),O.takeEvery(D.LOAD_DATA_FROM_ITEM,f),O.takeLatest(D.LOAD_VIEW_TEAM,h)];case 2:case"end":return e.stop()}},T,this)}var g=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),b=regeneratorRuntime.mark(r),v=regeneratorRuntime.mark(o),_=regeneratorRuntime.mark(a),y=regeneratorRuntime.mark(i),A=regeneratorRuntime.mark(s),x=regeneratorRuntime.mark(l),w=regeneratorRuntime.mark(c),j=regeneratorRuntime.mark(u),E=regeneratorRuntime.mark(d),S=regeneratorRuntime.mark(p),k=regeneratorRuntime.mark(f),C=regeneratorRuntime.mark(h),T=regeneratorRuntime.mark(m),M=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o0&&f<=6?(o=t%2==0?6:0,a=r):0===f?(o=n,a=r):f>6&&(o=n,a=d+6*Math.floor(t/2)),Object.assign({widgetId:e,x:o,y:a},m,g)});n.props.onAddDashboardItem(Number(t.portalId),b,function(e){n.hideDashboardItemForm()})}else{var v=a.find(function(e){return e.id===Number(c.id)}),_=Object.assign({},v,m,{widgetId:s[0]});n.props.onEditDashboardItem(_,function(){n.getChartData("rerender",_.id,_.widgetId),n.hideDashboardItemForm()})}},n.deleteItem=function(e){return function(){n.props.onDeleteDashboardItem(e)}},n.navDropdownClick=function(e){var t=n.props.params;n.props.router.push("/project/"+t.pid+"/dashboard/"+e.key)},n.nextNavDropdownClick=function(e){var t=n.props.widgets,r=e.item&&e.item.props&&e.item.props.id,o=e.item&&e.item.props&&e.item.props.widgetId,a=p.findDOMNode(n["dashboardItem"+r]);if(a){var i=a.parentNode,s=i.style.transform&&i.style.transform.match(/\d+/g)[1],l=i.parentNode.parentNode,c=parseInt(s,10)-K.GRID_ITEM_MARGIN;l.scrollTop=c}n.setState({nextMenuTitle:t.find(function(e){return e.id===o}).name})},n.toggleLinkageConfig=function(e){return function(){n.setState({linkageConfigVisible:e})}},n.saveLinkageConfig=function(e){var t=n.props,r=t.currentDashboard;(0,t.onEditCurrentDashboard)(Object.assign({},r,{config:JSON.stringify(Object.assign({},JSON.parse(r.config||"{}"),{linkages:e}))}),function(){n.toggleLinkageConfig(!1)(),n.clearAllInteracts()})},n.checkInteract=function(e){return n.props.currentLinkages.some(function(t){var n=t.trigger;return t.linkager,t.relation,+n[0]===e})},n.doInteract=function(e,t){var a=n.props,i=a.currentItems,s=(a.currentItemsInfo,a.currentLinkages),l=(a.widgets,O.getMappingLinkage(e,s));n.interactingLinkagers=O.processLinkage(e,t,l,n.interactingLinkagers),Object.keys(l).forEach(function(e){var t=i.find(function(t){return t.id===+e}),r=n.interactingLinkagers[e],a=r.filters,s=r.params;n.getChartData("rerender",+e,t.widgetId,{linkageFilters:Object.values(a).reduce(function(e,t){return e.concat.apply(e,o(t))},[]),linkageParams:Object.values(s).reduce(function(e,t){return e.concat.apply(e,o(t))},[])})}),n.setState({interactingStatus:Object.assign({},n.state.interactingStatus,r({},e,!0))})},n.clearAllInteracts=function(){var e=n.props.currentItems;Object.keys(n.interactingLinkagers).forEach(function(t){var r=e.find(function(e){return e.id===+t});n.getChartData("rerender",+t,r.widgetId,{linkageFilters:[],linkageParams:[]})}),n.interactingLinkagers={},n.setState({interactingStatus:{}})},n.turnOffInteract=function(e){var t=n.props,a=t.currentLinkages,i=t.currentItems;O.removeLinkage(e,a,n.interactingLinkagers).forEach(function(e){var t=i.find(function(t){return t.id===e}),r=n.interactingLinkagers[e],a=r.filters,s=r.params;n.getChartData("rerender",e,t.widgetId,{linkageFilters:Object.values(a).reduce(function(e,t){return e.concat.apply(e,o(t))},[]),linkageParams:Object.values(s).reduce(function(e,t){return e.concat.apply(e,o(t))},[])})}),n.setState({interactingStatus:Object.assign({},n.state.interactingStatus,r({},e,!1))})},n.toggleGlobalFilterConfig=function(e){return function(){n.setState({globalFilterConfigVisible:e})}},n.saveFilters=function(e){var t=n.props,r=t.currentDashboard;(0,t.onEditCurrentDashboard)(Object.assign({},r,{config:JSON.stringify(Object.assign({},JSON.parse(r.config||"{}"),{filters:e})),active:!0}),function(){n.toggleGlobalFilterConfig(!1)()})},n.getOptions=function(e,t,r,o){n.props.onLoadCascadeSource(e,t,r,o)},n.globalFilterChange=function(e){var t=n.props.currentItems;Object.entries(e).forEach(function(e){var r=c(e,2),o=r[0],a=r[1],i=t.find(function(e){return e.id===+o}),s=a.params,l=a.filters;n.getChartData("rerender",+o,i.widgetId,{globalParams:s,globalFilters:l})})},n.visibleFullScreen=function(e){var t=n.state.allowFullScreen;e&&n.setState({currentDataInFullScreen:e}),n.setState({allowFullScreen:!t})},n.currentWidgetInFullScreen=function(e){var t=n.props,r=t.currentItems,o=t.currentItemsInfo,a=t.widgets,i=r.find(function(t){return t.id===e}),s=a.find(function(e){return e.id===i.widgetId}),l=o[e],c=o.loading;n.setState({currentDataInFullScreen:{itemId:e,widgetId:s.id,widget:s,data:l,loading:c,onGetChartData:n.getChartData}})},n.changeDashboardSharePanelAuthorizeState=function(e){return function(){n.setState({dashboardSharePanelAuthorized:e})}},n.getWidgetInfo=function(e){var t=n.props,r=t.currentItems,o=t.widgets,a=r.find(function(t){return t.id===e});return{name:o.find(function(e){return e.id===a.widgetId}).name}},n.toWorkbench=function(e,t){var r=n.props.params,o=r.pid,a=r.portalId,i=r.portalName,s=r.dashboardId,l=[o,a,i,s,e].join(K.DEFAULT_SPLITER);localStorage.setItem("editWidgetFromDashboard",l),n.props.router.push("/project/"+o+"/widget/"+t)},n.state={mounted:!1,layoutInitialized:!1,allowFullScreen:!1,currentDataInFullScreen:{},dashboardItemFormType:"",dashboardItemFormVisible:!1,dashboardItemFormStep:0,modalLoading:!1,selectedWidget:[],polling:!1,linkageConfigVisible:!1,interactingStatus:{},globalFilterConfigVisible:!1,dashboardSharePanelAuthorized:!1,nextMenuTitle:""},n}return s(t,e),u(t,[{key:"componentWillMount",value:function(){var e=this.props,t=e.onLoadBizlogics,n=e.onLoadDashboardDetail,r=e.params,o=r.pid,a=r.portalId,i=r.dashboardId;t(o),i&&-1!==Number(i)&&n(o,a,Number(i))}},{key:"componentWillReceiveProps",value:function(e){var t=this,n=(e.currentDashboard,e.currentDashboardLoading),r=e.currentItems,o=(e.currentItemsInfo,e.params),a=this.props,i=a.onLoadDashboardDetail,s=(a.onLoadCascadeSource,this.state.layoutInitialized);o.dashboardId!==this.props.params.dashboardId&&(this.setState({nextMenuTitle:""}),o.dashboardId&&-1!==Number(o.dashboardId)&&i(o.pid,o.portalId,o.dashboardId)),n||r&&!s&&this.setState({mounted:!0},function(){t.lazyLoad(),t.containerBody.removeEventListener("scroll",t.lazyLoad,!1),t.containerBody.addEventListener("scroll",t.lazyLoad,!1)})}},{key:"componentDidMount",value:function(){window.addEventListener("resize",this.onWindowResize,!1)}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this.onWindowResize,!1),this.containerBody.removeEventListener("scroll",this.lazyLoad,!1),this.props.onClearCurrentDashboard()}},{key:"render",value:function(){var e=this,t=this.props,n=t.dashboards,r=t.widgets,o=t.currentDashboard,a=t.currentDashboardLoading,i=t.currentDashboardShareInfo,s=t.currentDashboardSecretInfo,l=t.currentDashboardShareInfoLoading,c=t.currentItems,u=t.currentItemsInfo,h=t.currentDashboardCascadeSources,m=t.bizlogics,b=t.onLoadDashboardShareLink,v=t.onLoadWidgetShareLink,_=t.router,y=t.currentProject,A=t.currentLinkages,x=this.state,w=x.mounted,O=x.dashboardItemFormType,L=x.dashboardItemFormVisible,B=x.modalLoading,H=x.selectedWidget,V=x.polling,Y=x.dashboardItemFormStep,W=x.linkageConfigVisible,G=x.interactingStatus,Q=x.globalFilterConfigVisible,q=x.allowFullScreen,re=x.dashboardSharePanelAuthorized,oe=$,ae=void 0;if(n){var ie=n.map(function(e){return d.createElement(U.Item,{key:e.id},e.name)});oe=d.createElement(U,{onClick:this.navDropdownClick},ie)}var se=ee;if(o&&r){var le=c.map(function(e){var t=r.find(function(t){return t.id===e.widgetId});return d.createElement(U.Item,{key:e.id,widgetId:e.widgetId},e.widgetId&&t&&t.name?t.name:"")});se=d.createElement(U,{onClick:this.nextNavDropdownClick},le)}if(y&&c){var ce=[],ue={lg:[]};c.forEach(function(t){var n=t.id,o=t.x,a=t.y,i=t.width,s=t.height,l=t.widgetId,c=t.polling,p=t.frequency,f=u[n],h=f.datasource,m=f.loading,g=f.shareInfo,b=f.secretInfo,A=f.shareInfoLoading,x=f.downloadCsvLoading,w=(f.interactId,f.rendered),j=f.renderType,E=r.find(function(e){return e.id===l}),S=G[n]||!1;ce.push(d.createElement("div",{key:n},d.createElement(k.default,{itemId:n,widget:E,data:h,loading:m,polling:c,interacting:S,frequency:p,shareInfo:g,secretInfo:b,shareInfoLoading:A,downloadCsvLoading:x,currentProject:y,onGetChartData:e.getChartData,onShowEdit:e.showEditDashboardItemForm,onDeleteDashboardItem:e.deleteItem,onLoadWidgetShareLink:v,onDownloadCsv:e.downloadCsv,onTurnOffInteract:e.turnOffInteract,onCheckTableInteract:e.checkInteract,onDoTableInteract:e.doInteract,onShowFullScreen:e.visibleFullScreen,onEditWidget:e.toWorkbench,rendered:w,renderType:j,router:_,ref:function(t){return e["dashboardItem"+n]=t}}))),ue.lg.push({x:o,y:a,w:i,h:s,i:""+n})}),ae=d.createElement(Z,{className:"layout",style:{marginTop:"-14px"},rowHeight:K.GRID_ROW_HEIGHT,margin:[K.GRID_ITEM_MARGIN,K.GRID_ITEM_MARGIN],breakpoints:K.GRID_BREAKPOINTS,cols:K.GRID_COLS,layouts:ue,onDragStop:this.onDragStop,onResizeStop:this.onResizeStop,measureBeforeMount:!1,draggableHandle:"."+J.title,useCSSTransforms:w},ce)}var de=d.createElement(I,{key:"submit",size:"large",type:"primary",loading:B,disabled:B,onClick:this.saveDashboardItem},"保 存"),pe="add"===O?Y?[d.createElement(I,{key:"back",size:"large",onClick:this.changeDashboardItemFormStep(0)},"上一步"),de]:[d.createElement(I,{key:"forward",size:"large",type:"primary",disabled:0===H.length,onClick:this.changeDashboardItemFormStep(1)},"下一步")]:de;return d.createElement(j.default,null,d.createElement(f.default,{title:o&&o.name}),d.createElement(j.default.Title,null,d.createElement(D,null,d.createElement(P,{sm:12},d.createElement(N,{className:X.breadcrumb},o&&d.createElement(N.Item,null,d.createElement(F,{overlay:oe,trigger:["click"]},d.createElement(g.Link,{to:""},o.name+" ",te))),o&&d.createElement(N.Item,null,d.createElement(F,{overlay:se,trigger:["click"]},d.createElement(g.Link,{to:""},o.widgets&&o.widgets.length&&o.widgets.length>1?d.createElement("span",null,this.state.nextMenuTitle," ",ne):""))))),d.createElement(E.default,{currentProject:y,currentDashboard:o,currentDashboardShareInfo:i,currentDashboardSecretInfo:s,currentDashboardShareInfoLoading:l,dashboardSharePanelAuthorized:re,showAddDashboardItem:this.showAddDashboardItemForm,onChangeDashboardAuthorize:this.changeDashboardSharePanelAuthorizeState,onLoadDashboardShareLink:b,onToggleGlobalFilterVisibility:this.toggleGlobalFilterConfig,onToggleLinkageVisibility:this.toggleLinkageConfig})),d.createElement(T.default,{currentDashboard:o,currentItems:c,onGetOptions:this.getOptions,filterOptions:h,onChange:this.globalFilterChange})),d.createElement(j.default.Body,{grid:!0,ref:function(t){return e.containerBody=p.findDOMNode(t)}},ae,d.createElement("div",{className:J.gridBottom})),d.createElement(R,{title:("add"===O?"新增":"修改")+" Widget",wrapClassName:"ant-modal-large",visible:L,footer:pe,onCancel:this.hideDashboardItemForm,afterClose:this.afterDashboardItemFormClose},d.createElement(S.default,{type:O,widgets:r||[],selectedWidget:H,polling:V,step:Y,onWidgetSelect:this.widgetSelect,onPollingSelect:this.pollingSelect,wrappedComponentRef:this.refHandles.dashboardItemForm})),d.createElement(C.default,{currentDashboard:o,currentItems:c,currentItemsInfo:u,views:m,widgets:r,visible:W,loading:a,onGetWidgetInfo:this.getWidgetInfo,onSave:this.saveLinkageConfig,onCancel:this.toggleLinkageConfig(!1),linkages:A}),d.createElement(M.default,{currentDashboard:o,currentItems:c,views:m,widgets:r,visible:Q,loading:a,filterOptions:h,onCancel:this.toggleGlobalFilterConfig(!1),onSave:this.saveFilters,onGetOptions:this.getOptions}),d.createElement(z.default,{widgets:r,currentItems:c,currentDashboard:o,currentDatasources:u,visible:q,isVisible:this.visibleFullScreen,currentDataInFullScreen:this.state.currentDataInFullScreen,onCurrentWidgetInFullScreen:this.currentWidgetInFullScreen}))}}]),t}(d.Component);t.Grid=re;var oe=m.createStructuredSelector({dashboards:Y.makeSelectDashboards(),currentDashboard:Y.makeSelectCurrentDashboard(),currentDashboardLoading:Y.makeSelectCurrentDashboardLoading(),currentDashboardShareInfo:Y.makeSelectCurrentDashboardShareInfo(),currentDashboardSecretInfo:Y.makeSelectCurrentDashboardSecretInfo(),currentDashboardShareInfoLoading:Y.makeSelectCurrentDashboardShareInfoLoading(),currentItems:Y.makeSelectCurrentItems(),currentItemsInfo:Y.makeSelectCurrentItemsInfo(),currentDashboardCascadeSources:Y.makeSelectCurrentDashboardCascadeSources(),currentLinkages:Y.makeSelectCurrentLinkages(),widgets:G.makeSelectWidgets(),bizlogics:Q.makeSelectBizlogics(),currentProject:q.makeSelectCurrentProject()});t.mapDispatchToProps=l;var ae=h.connect(oe,l),ie=v.default({key:"widget",reducer:y.default}),se=_.default({key:"widget",saga:A.default}),le=v.default({key:"bizlogic",reducer:x.default}),ce=_.default({key:"bizlogic",saga:w.default});t.default=b.compose(ie,le,se,ce,ae)(re)},"./app/containers/Dashboard/actions.ts":function(e,t,n){"use strict";function r(e,t,n){return{type:q.ADD_DASHBOARD_ITEM,payload:{portalId:e,item:t,resolve:n}}}function o(e,t){return{type:q.DELETE_DASHBOARD_ITEM,payload:{id:e,resolve:t}}}function a(){return{type:q.CLEAR_CURRENT_DASHBOARD}}function i(e,t){return{type:q.LOAD_DASHBOARDS,payload:{portalId:e,resolve:t}}}function s(e){return{type:q.LOAD_DASHBOARDS_SUCCESS,payload:{dashboards:e}}}function l(){return{type:q.LOAD_DASHBOARDS_FAILURE}}function c(e,t){return{type:q.ADD_DASHBOARD,payload:{dashboard:e,resolve:t}}}function u(e){return{type:q.ADD_DASHBOARD_SUCCESS,payload:{result:e}}}function d(){return{type:q.ADD_DASHBOARD_FAILURE}}function p(e,t,n){return{type:q.EDIT_DASHBOARD,payload:{formType:e,dashboard:t,resolve:n}}}function f(e,t){return{type:q.EDIT_DASHBOARD_SUCCESS,payload:{result:e,formType:t}}}function h(){return{type:q.EDIT_DASHBOARD_FAILURE}}function m(e,t){return{type:q.EDIT_CURRENT_DASHBOARD,payload:{dashboard:e,resolve:t}}}function g(e){return{type:q.EDIT_CURRENT_DASHBOARD_SUCCESS,payload:{result:e}}}function b(){return{type:q.EDIT_CURRENT_DASHBOARD_FAILURE}}function v(e,t){return{type:q.DELETE_DASHBOARD,payload:{resolve:t,id:e}}}function _(e){return{type:q.DELETE_DASHBOARD_SUCCESS,payload:{id:e}}}function y(){return{type:q.DELETE_DASHBOARD_FAILURE}}function A(e,t,n){return{type:q.LOAD_DASHBOARD_DETAIL,payload:{projectId:e,portalId:t,dashboardId:n}}}function x(e,t,n){return{type:q.LOAD_DASHBOARD_DETAIL_SUCCESS,payload:{dashboardId:e,dashboardDetail:t,widgets:n}}}function w(){return{type:q.LOAD_DASHBOARD_DETAIL_FAILURE}}function j(e){return{type:q.ADD_DASHBOARD_ITEM_SUCCESS,payload:{result:e}}}function E(){return{type:q.ADD_DASHBOARD_ITEM_FAILURE}}function S(e,t){return{type:q.EDIT_DASHBOARD_ITEM,payload:{item:e,resolve:t}}}function k(e){return{type:q.EDIT_DASHBOARD_ITEM_SUCCESS,payload:{result:e}}}function C(){return{type:q.EDIT_DASHBOARD_ITEM_FAILURE}}function T(e){return{type:q.EDIT_DASHBOARD_ITEMS,payload:{items:e}}}function M(e){return{type:q.EDIT_DASHBOARD_ITEMS_SUCCESS,payload:{items:e}}}function O(){return{type:q.EDIT_DASHBOARD_ITEMS_FAILURE}}function L(e){return{type:q.DELETE_DASHBOARD_ITEM_SUCCESS,payload:{id:e}}}function D(){return{type:q.DELETE_DASHBOARD_ITEM_FAILURE}}function P(e,t){return{type:q.LOAD_DASHBOARD_SHARE_LINK,payload:{id:e,authName:t}}}function I(e){return{type:q.LOAD_DASHBOARD_SHARE_LINK_SUCCESS,payload:{shareInfo:e}}}function R(e){return{type:q.LOAD_DASHBOARD_SECRET_LINK_SUCCESS,payload:{secretInfo:e}}}function N(){return{type:q.LOAD_DASHBOARD_SHARE_LINK_FAILURE}}function B(e,t,n,r){return{type:q.LOAD_WIDGET_SHARE_LINK,payload:{id:e,itemId:t,authName:n,resolve:r}}}function F(e,t){return{type:q.LOAD_WIDGET_SHARE_LINK_SUCCESS,payload:{shareInfo:e,itemId:t}}}function U(e,t){return{type:q.LOAD_WIDGET_SECRET_LINK_SUCCESS,payload:{shareInfo:e,itemId:t}}}function z(e){return{type:q.LOAD_WIDGET_SHARE_LINK_FAILURE,payload:{itemId:e}}}function H(e,t,n){return{type:q.LOAD_WIDGET_CSV,payload:{itemId:e,params:t,token:n}}}function V(e){return{type:q.LOAD_WIDGET_CSV_SUCCESS,payload:{itemId:e}}}function Y(e){return{type:q.LOAD_WIDGET_CSV_FAILURE,payload:{itemId:e}}}function W(e){return{type:q.RENDER_DASHBOARDITEM,payload:{itemId:e}}}function G(e){return{type:q.RESIZE_DASHBOARDITEM,payload:{itemId:e}}}function Q(){return{type:q.RESIZE_ALL_DASHBOARDITEM}}Object.defineProperty(t,"__esModule",{value:!0});var q=n("./app/containers/Dashboard/constants.ts");t.addDashboardItem=r,t.deleteDashboardItem=o,t.clearCurrentDashboard=a,t.loadDashboards=i,t.dashboardsLoaded=s,t.loadDashboardsFail=l,t.addDashboard=c,t.dashboardAdded=u,t.addDashboardFail=d,t.editDashboard=p,t.dashboardEdited=f,t.editDashboardFail=h,t.editCurrentDashboard=m,t.currentDashboardEdited=g,t.editCurrentDashboardFail=b,t.deleteDashboard=v,t.dashboardDeleted=_,t.deleteDashboardFail=y,t.loadDashboardDetail=A,t.dashboardDetailLoaded=x,t.loadDashboardDetailFail=w,t.dashboardItemAdded=j,t.addDashboardItemFail=E,t.editDashboardItem=S,t.dashboardItemEdited=k,t.editDashboardItemFail=C,t.editDashboardItems=T,t.dashboardItemsEdited=M,t.editDashboardItemsFail=O,t.dashboardItemDeleted=L,t.deleteDashboardItemFail=D,t.loadDashboardShareLink=P,t.dashboardShareLinkLoaded=I,t.dashboardSecretLinkLoaded=R,t.loadDashboardShareLinkFail=N,t.loadWidgetShareLink=B,t.widgetShareLinkLoaded=F,t.widgetSecretLinkLoaded=U,t.loadWidgetShareLinkFail=z,t.loadWidgetCsv=H,t.widgetCsvLoaded=V,t.loadWidgetCsvFail=Y,t.renderDashboardItem=W,t.resizeDashboardItem=G,t.resizeAllDashboardItem=Q},"./app/containers/Dashboard/components/DashboardAction.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n=0})),e});n.setState({filters:a})},n.onSavingFilterConfig=function(){n.setState({savingFilterConfig:!n.state.savingFilterConfig})},n.state={filters:[],savingFilterConfig:!1},n}return a(t,e),i(t,[{key:"componentWillReceiveProps",value:function(e){var t=e.currentDashboard,n=e.currentItems;t===this.props.currentDashboard&&n===this.props.currentItems||this.adjustGlobalFilterTableSource(t,n)}},{key:"render",value:function(){var e=this.props,t=e.visible,n=e.loading,r=e.currentItems,o=e.widgets,a=e.views,i=e.onSave,p=e.onGetOptions,f=e.filterOptions,h=e.onCancel,m=this.state,g=m.filters,b=m.savingFilterConfig;if(!t)return null;var v=[s.createElement(l,{key:"cancel",size:"large",onClick:h},"取 消"),s.createElement(l,{key:"submit",size:"large",type:"primary",loading:n,disabled:n,onClick:this.onSavingFilterConfig},"保 存")];return s.createElement(c,{wrapClassName:"ant-modal-large",title:"全局筛选配置",maskClosable:!1,visible:t,footer:v,onCancel:h},s.createElement("div",{className:d.modalFilterConfig},s.createElement(u.default,{views:a,widgets:o,items:r,filters:g,saving:b,onOk:i,onGetPreviewData:p,previewData:f})))}}]),t}(s.Component);t.DashboardFilterConfig=p,t.default=p},"./app/containers/Dashboard/components/DashboardFilterPanel.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=function(){function e(e,t){for(var n=0;n=0})),e});n.setState({filters:a})},n.state={filters:[]},n}return i(t,e),s(t,[{key:"componentWillReceiveProps",value:function(e){var t=e.currentDashboard,n=e.currentItems;t===this.props.currentDashboard&&n===this.props.currentItems||this.adjustGlobalFilterTableSource(t,n)}},{key:"render",value:function(){var e=this.props,t=e.onGetOptions,n=e.filterOptions,o=e.onChange,a=this.state.filters,i=c(r({},p.hide,!a.length));return l.createElement(u,{className:i},l.createElement(d,{span:24},l.createElement(f.default,{filters:a,onGetOptions:t,filterOptions:n,onChange:o})))}}]),t}(l.Component);t.DashboardFilterPanel=h,t.default=h},"./app/containers/Dashboard/components/DashboardForm.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2],o=e.props,a=o.onCheckUniqueName,i=o.type,s=o.form,l=o.portalId,c=s.getFieldsValue(),u=c.id,d={portal:l,id:"add"===i?"":u,name:n};"move"===i?r():a("dashboard",d,function(){r()},function(e){r(e)})},e}return a(t,e),s(t,[{key:"render",value:function(){var e=this.props.form.getFieldDecorator,t=this.props,n=t.dashboards,r=t.type,o=t.itemId,a={labelCol:{span:6},wrapperCol:{span:16}},s=n.filter(function(e){return 0===e.type}),p=s.map(function(e){return l.createElement(m,{key:""+e.id,value:""+e.id},e.name)}),f=n.find(function(e){return e.id===Number(o)}),S="",k="";return f&&(S=0===f.type?"文件夹":"Dashboard",k=f.name),l.createElement(c,null,l.createElement(g,{className:v.hide},e("id",{hidden:"add"===r&&"copy"})(_)),l.createElement(u,{gutter:8,className:"delete"===r?v.hide:""},l.createElement(d,{span:24},l.createElement(g,i({label:"所属文件夹"},a),e("folder",{rules:[{required:!0,message:"请选择所属文件夹"}],initialValue:"0"})(l.createElement(h,null,y,p))),l.createElement(g,{className:v.hide},e("config",{})(A)),l.createElement(g,{className:v.hide},e("index",{})(x)),l.createElement(g,i({label:"copy"===r?"重命名":"名称"},a,{hasFeedback:!0,className:"move"===r?v.hide:""}),e("name",{rules:[{required:!0,message:"Name 不能为空"},{validator:this.checkNameUnique}]})(w))),l.createElement(d,{span:24},l.createElement(g,i({label:"选择类型"},a,{className:"move"===r?v.hide:""}),e("selectType",{initialValue:!0})(l.createElement(b,{disabled:"edit"===r||"copy"===r||"move"===r},j,E))))),l.createElement("p",{className:"delete"===r?"":v.hide},"确定要删除 ",S,":",k," ?"))}}]),t}(l.PureComponent);t.DashboardForm=S,t.default=c.create()(S)},"./app/containers/Dashboard/components/DashboardItem.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e){return u.createElement("span",e,e.children)}var l=Object.assign||function(e){for(var t=1;t=0){var i=n.split("_");o=t.find(function(e){return e.id===i[1]}).sub.find(function(e){return e.id===i[2]})}else o=t.find(function(e){return e.id===n});if(o.type=o.variableType||o.type,"[object Array]"===Object.prototype.toString.call(r))switch(o.type){case"dateRange":r=r.map(function(e){return e.format("YYYY-MM-DD")}),e=e.concat({name:o.variables[0],value:"'"+r[0]+"'"}).concat({name:o.variables[1],value:"'"+r[1]+"'"});break;case"datetimeRange":r=r.map(function(e){return e.format("YYYY-MM-DD HH:mm:ss")}),e=e.concat({name:o.variables[0],value:"'"+r[0]+"'"}).concat({name:o.variables[1],value:"'"+r[1]+"'"});break;case"multiSelect":r.length&&(e=e.concat({name:o.variables[0],value:r.map(function(e){return""+e}).join(",")}))}else if(r)if(o.variables[0])switch(o.type){case"date":r=r.format("YYYY-MM-DD"),e=e.concat({name:o.variables[0],value:"'"+r+"'"});break;case"datetime":r=r.format("YYYY-MM-DD HH:mm:ss"),e=e.concat({name:o.variables[0],value:"'"+r+"'"});break;case"multiDate":e=e.concat({name:o.variables[0],value:r.split(",").map(function(e){return"'"+e+"'"}).join(",")});break;case"select":e=e.concat({name:o.variables[0],value:""+r});break;default:e=e.concat({name:o.variables[0],value:"'"+r+"'"})}else if("select"===o.type&&"no"===o.hasRelatedComponent){var s=o.sub.find(function(e){return e.value===r});s.variables[0]&&(e=e.concat({name:s.variables[0],value:"'"+r+"'"}))}return e},[])}),o()},n.state={parentSelValues:null},n}return i(t,e),s(t,[{key:"componentWillMount",value:function(){this.getStateValues(this.props.controls)}},{key:"componentWillReceiveProps",value:function(e){e.controls.map(function(e){return e.id}).join(",")!==this.props.controls.map(function(e){return e.id}).join(",")&&this.getStateValues(e.controls)}},{key:"render",value:function(){var e=this,t=this.props.controls,n=t.map(function(t){return e.generateFormComponent(t)});return l.createElement(u,{className:A.controlForm},l.createElement(g,{gutter:10},n),l.createElement(g,{className:A.buttonRow},l.createElement(b,{span:24},l.createElement(m,{type:"primary",onClick:this.onControlSearch},"查询"))))}}]),t}(l.PureComponent);t.DashboardItemControlForm=w,t.default=u.create()(w)},"./app/containers/Dashboard/components/DashboardItemControlPanel.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e){var t,n,o=s((t={},r(t,l.controlPanel,!0),r(t,l.show,e.show),t)),c=s((n={},r(n,l.form,!0),r(n,l.show,e.show),n));return i.createElement("div",{className:o,onClick:e.onClose},i.createElement("div",{className:c,onClick:a},e.children))}function a(e){e.stopPropagation()}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/react/react.js"),s=n("./node_modules/classnames/index.js"),l=n("./app/containers/Dashboard/Dashboard.less");t.DashboardItemControlPanel=o,t.default=o},"./app/containers/Dashboard/components/DashboardItemForm.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=function(){function e(e,t){for(var n=0;n0?[l.createElement("span",{key:t,className:x.highlight},n[0]),e]:e}))}):null}).filter(function(e){return!!e})})},n.handleTableChange=function(e,t,r){n.setState({tableSortedInfo:r})},n.onSelectChange=function(e){n.setState({selectedRowKeys:e},function(){n.props.onWidgetSelect(n.state.selectedRowKeys)})},n.state={filteredWidgets:[],pageSize:24,currentPage:1,screenWidth:0,tableWidget:[],nameFilterValue:"",nameFilterDropdownVisible:!1,tableSortedInfo:{},selectedRowKeys:[]},n}return i(t,e),s(t,[{key:"componentWillMount",value:function(){var e=this.props.widgets;e&&this.setState({tableWidget:e.map(function(e){return e.key=e.id,e})})}},{key:"componentWillReceiveProps",value:function(e){window.addEventListener("resize",this.getScreenWidth,!1)}},{key:"componentWillUnmount",value:function(){window.removeEventListener("resize",this.getScreenWidth,!1)}},{key:"render",value:function(){var e=this,t=this.props,n=t.widgets,o=t.type,a=t.form,i=t.selectedWidget,s=t.polling,h=t.step,m=(t.onWidgetSelect,t.onPollingSelect),_=this.state,y=_.filteredWidgets,M=(_.pageSize,_.currentPage,_.screenWidth),O=_.tableWidget,L=_.nameFilterValue,D=_.nameFilterDropdownVisible,P=_.tableSortedInfo,I=(_.selectedRowKeys,[{title:"名称",dataIndex:"name",key:"name",filterDropdown:l.createElement(A.default,{placeholder:"name",value:L,onChange:this.onSearchInputChange,onSearch:this.onSearch}),filterDropdownVisible:D,onFilterDropdownVisibleChange:function(t){return e.setState({nameFilterDropdownVisible:t})},sorter:function(e,t){return e.name>t.name?-1:1},sortOrder:"name"===P.columnKey&&P.order},{title:"描述",dataIndex:"description",key:"description"}]),R={simple:M<768||768===M,defaultPageSize:20,showSizeChanger:!0},N={selectedRowKeys:i,onChange:this.onSelectChange,onShowSizeChange:this.onShowSizeChange},B="add"===o?l.createElement(b,{current:h},w,j,E):"",F=(y.length,a.getFieldDecorator),U=c(r({},x.hide,!!h)),z=c(r({},x.hide,!h)),H=c(r({},x.hide,!s));return l.createElement(u,null,l.createElement(d,{className:x.formStepArea},l.createElement(p,{span:24},B)),l.createElement(d,{gutter:20,className:U},l.createElement(f,{dataSource:O,columns:I,pagination:R,onChange:this.handleTableChange,rowSelection:N})),l.createElement("div",{className:z},l.createElement(d,{gutter:8},l.createElement(p,{sm:8},l.createElement(v,{className:x.hide},F("id",{hidden:"add"===o})(S)),l.createElement(v,{label:"数据刷新模式",labelCol:{span:10},wrapperCol:{span:14}},F("polling",{initialValue:s?"true":"false"})(l.createElement(g,{onSelect:m},k,C)))),l.createElement(p,{sm:4,className:H},l.createElement(v,{label:"时长",labelCol:{span:12},wrapperCol:{span:12}},F("frequency",{rules:[{required:!0,message:"不能为空"}],initialValue:60})(T))))))}}]),t}(l.PureComponent);t.DashboardItemForm=M,t.default=u.create()(M)},"./app/containers/Dashboard/components/DashboardLinkageConfig.tsx":function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0){var R=w;M=R.widget.name,O=R.renderType,L=j[R.itemId];var N=JSON.parse(w.widget.config);C="echarts"!==O?c.createElement(h.default,s({},N,{renderType:"rerender",data:L&&L.datasource?L.datasource:[]})):c.createElement("div",{style:{width:"100%",height:"100%"},id:"fsChartsWrapper"})}var B=void 0;if(w&&w.widget&&w.widget.query_params){var F=w.widget.query_params;B=!!JSON.parse(F).length}var U=w&&w.widget&&w.widget.query_params?JSON.parse(w.widget.query_params).filter(function(e){return e.type}):[],z=p((o={},r(o,m.modalPanel,!0),r(o,m.displayNone,!y),o)),H=p((a={},r(a,m.controlPanel,!0),r(a,m.displayNone,!y),r(a,m.showModalPanel,y),r(a,m.hideModalPanel,!y),a));return c.createElement("div",{className:k},c.createElement("div",{className:m.container},c.createElement("nav",{className:m.header},c.createElement("div",{className:m.logo},c.createElement(u,{type:this.state.isShowMenu?"menu-fold":"menu-unfold",onClick:this.isShowSideMenu,style:{marginRight:"32px"}}),c.createElement("span",null,M)),c.createElement("ul",{className:m.tools},B?c.createElement("li",{onClick:this.toggleControlPanel},c.createElement(u,{type:y?"up-square-o":"down-square-o"}),g):"",b,c.createElement("li",{onClick:this.hide},v,_))),c.createElement("div",{className:m.body},c.createElement("div",{className:D},T),c.createElement("div",{className:z}),c.createElement("div",{className:H},c.createElement("div",{className:m.formPanel},c.createElement(f.default,{controls:U,onSearch:this.onControlSearch,onHide:this.toggleControlPanel}))),c.createElement("div",{className:P},C))))}}]),t}(c.PureComponent);t.default=y},"./app/containers/Dashboard/components/fullScreenPanel/fullScreenPanel.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Dashboard/components/fullScreenPanel/fullScreenPanel.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Dashboard/components/localPositionUtil.ts":function(e,t,n){"use strict";function r(e){return e.map(function(e){return{x:e.x,y:e.y,w:e.width,h:e.height,i:""+e.id}})}function o(e,t){return t.forEach(function(t,n){var r=e[n];r.x=t.x,r.y=t.y,r.w===t.w&&r.h===t.h||(r.w=t.w,r.h=t.h)}),e}function a(e,t){for(var n=!1,r=0,o=t.length;r0)return s}}catch(e){n=!0,r=e}finally{try{!t&&a.return&&a.return()}finally{if(n)throw r}}return-1}Object.defineProperty(t,"__esModule",{value:!0}),t.initializePosition=r,t.changePosition=o,t.diffPosition=a,t.listToTree=i,t.findFirstLeaf=s},"./app/containers/Dashboard/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LOAD_DASHBOARDS="davinci/Dashboard/LOAD_DASHBOARDS",t.LOAD_DASHBOARDS_SUCCESS="davinci/Dashboard/LOAD_DASHBOARDS_SUCCESS",t.LOAD_DASHBOARDS_FAILURE="davinci/Dashboard/LOAD_DASHBOARDS_FAILURE",t.ADD_DASHBOARD="davinci/Dashboard/ADD_DASHBOARD",t.ADD_DASHBOARD_SUCCESS="davinci/Dashboard/ADD_DASHBOARD_SUCCESS",t.ADD_DASHBOARD_FAILURE="davinci/Dashboard/ADD_DASHBOARD_FAILURE",t.EDIT_DASHBOARD="davinci/Dashboard/EDIT_DASHBOARD",t.EDIT_DASHBOARD_SUCCESS="davinci/Dashboard/EDIT_DASHBOARD_SUCCESS",t.EDIT_DASHBOARD_FAILURE="davinci/Dashboard/EDIT_DASHBOARD_FAILURE",t.EDIT_CURRENT_DASHBOARD="davinci/Dashboard/EDIT_CURRENT_DASHBOARD",t.EDIT_CURRENT_DASHBOARD_SUCCESS="davinci/Dashboard/EDIT_CURRENT_DASHBOARD_SUCCESS",t.EDIT_CURRENT_DASHBOARD_FAILURE="davinci/Dashboard/EDIT_CURRENT_DASHBOARD_FAILURE",t.DELETE_DASHBOARD="davinci/Dashboard/DELETE_DASHBOARD",t.DELETE_DASHBOARD_SUCCESS="davinci/Dashboard/DELETE_DASHBOARD_SUCCESS",t.DELETE_DASHBOARD_FAILURE="davinci/Dashboard/DELETE_DASHBOARD_FAILURE",t.LOAD_DASHBOARD_DETAIL="davinci/Dashboard/LOAD_DASHBOARD_DETAIL",t.LOAD_DASHBOARD_DETAIL_SUCCESS="davinci/Dashboard/LOAD_DASHBOARD_DETAIL_SUCCESS",t.LOAD_DASHBOARD_DETAIL_FAILURE="davinci/Dashboard/LOAD_DASHBOARD_DETAIL_FAILURE",t.ADD_DASHBOARD_ITEM="davinci/Dashboard/ADD_DASHBOARD_ITEM",t.ADD_DASHBOARD_ITEM_SUCCESS="davinci/Dashboard/ADD_DASHBOARD_ITEM_SUCCESS",t.ADD_DASHBOARD_ITEM_FAILURE="davinci/Dashboard/ADD_DASHBOARD_ITEM_FAILURE",t.EDIT_DASHBOARD_ITEM="davinci/Dashboard/EDIT_DASHBOARD_ITEM",t.EDIT_DASHBOARD_ITEM_SUCCESS="davinci/Dashboard/EDIT_DASHBOARD_ITEM_SUCCESS",t.EDIT_DASHBOARD_ITEM_FAILURE="davinci/Dashboard/EDIT_DASHBOARD_ITEM_FAILURE",t.EDIT_DASHBOARD_ITEMS="davinci/Dashboard/EDIT_DASHBOARD_ITEMS",t.EDIT_DASHBOARD_ITEMS_SUCCESS="davinci/Dashboard/EDIT_DASHBOARD_ITEMS_SUCCESS",t.EDIT_DASHBOARD_ITEMS_FAILURE="davinci/Dashboard/EDIT_DASHBOARD_ITEMS_FAILURE",t.DELETE_DASHBOARD_ITEM="davinci/Dashboard/DELETE_DASHBOARD_ITEM",t.DELETE_DASHBOARD_ITEM_SUCCESS="davinci/Dashboard/DELETE_DASHBOARD_ITEM_SUCCESS",t.DELETE_DASHBOARD_ITEM_FAILURE="davinci/Dashboard/DELETE_DASHBOARD_ITEM_FAILURE",t.CLEAR_CURRENT_DASHBOARD="davinci/Dashboard/CLEAR_CURRENT_DASHBOARD",t.LOAD_DASHBOARD_SHARE_LINK="davinci/Dashboard/LOAD_DASHBOARD_SHARE_LINK",t.LOAD_DASHBOARD_SHARE_LINK_SUCCESS="davinci/Dashboard/LOAD_DASHBOARD_SHARE_LINK_SUCCESS",t.LOAD_DASHBOARD_SHARE_LINK_FAILURE="davinci/Dashboard/LOAD_DASHBOARD_SHARE_LINK_FAILURE",t.LOAD_DASHBOARD_SECRET_LINK_SUCCESS="davinci/Dashboard/LOAD_DASHBOARD_SECRET_LINK_SUCCESS",t.LOAD_WIDGET_SHARE_LINK="davinci/Dashboard/LOAD_WIDGET_SHARE_LINK",t.LOAD_WIDGET_SHARE_LINK_SUCCESS="davinci/Dashboard/LOAD_WIDGET_SHARE_LINK_SUCCESS",t.LOAD_WIDGET_SHARE_LINK_FAILURE="davinci/Dashboard/LOAD_WIDGET_SHARE_LINK_FAILURE",t.LOAD_WIDGET_SECRET_LINK_SUCCESS="davinci/Dashboard/LOAD_WIDGET_SECRET_LINK_SUCCESS",t.LOAD_WIDGET_CSV="davinci/Dashboard/LOAD_WIDGET_CSV",t.LOAD_WIDGET_CSV_SUCCESS="davinci/Dashboard/LOAD_WIDGET_CSV_SUCCESS",t.LOAD_WIDGET_CSV_FAILURE="davinci/Dashboard/LOAD_WIDGET_CSV_FAILURE",t.RENDER_DASHBOARDITEM="davinci/Dashboard/RENDER_DASHBOARDITEM",t.RESIZE_DASHBOARDITEM="davinci/Dashboard/RESIZE_DASHBOARDITEM",t.RESIZE_ALL_DASHBOARDITEM="davinci/Dashboard/RESIZE_ALL_DASHBOARDITEM"},"./app/containers/Dashboard/index.tsx":function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);te.dropPosition?v[o]:v[o+1];var _=h?h.index:v[o].index+1;if(h||g.unshift({config:c,dashboardPortalId:u,id:d,index:_,name:p,parentId:m,type:f}),h&&(e.dropToGap||1===h.type)){v=0===Number(h.parentId)?t.filter(function(e){return 0===e.parentId}):t.find(function(e){return e.id===Number(h.parentId)}).children;g=v.filter(function(e){return e.index>=h.index}).filter(function(e){return e.id!==d}).map(function(e){return{config:e.config,dashboardPortalId:e.dashboardPortalId,id:e.id,index:e.index+1,name:e.name,parentId:e.parentId,type:e.type}}),g.unshift({config:c,dashboardPortalId:u,id:d,index:_,name:p,parentId:h.parentId,type:f})}n.props.onEditDashboard("move",g,function(e){})}}),n.setState({dashboardData:s})},n.onAddItem=function(){n.setState({formVisible:!0,formType:"add"})},n.onCollapseAll=function(){n.onExpand([]),n.setState({isExpand:!1})},n.onExpandAll=function(){var e=n.props.dashboards;e&&n.expandAll(e)},n.onOperateMore=function(e,t){n.setState({formType:t},function(){n.onShowDashboardForm(e,n.state.formType)})},n.searchDashboard=function(e){var t=n.props.dashboards,r=e.target.value;n.setState({searchValue:r?t.filter(function(e){return e.name.includes(r)}):[]})},n.backPortal=function(){var e=n.props,t=e.router,r=e.params;t.replace("/project/"+r.pid+"/vizs")},n.pickSearchDashboard=function(e){return function(t){var r=n.props.dashboards;n.setState({searchVisible:!1});var o=r.find(function(t){return t.id===e});if(1===o.type)n.changeDashboard(e)(t);else if(0===o.type){var a=r.filter(function(t){return t.parentId===e});0!==a.length&&n.changeDashboard(a[0].id)(t)}}},n.confirmDeleteDashboard=function(e){var t=n.props,r=t.params,o=t.router,a=t.onDeleteDashboard,i=t.dashboards,s=n.state.dashboardData;a(e,function(){var t=r.pid,a=r.portalId,l=r.portalName,c=i.find(function(e){return e.id===Number(r.dashboardId)}),u=s.filter(function(t){return t.id!==e});if(0!==u.length&&c){var d=u.filter(function(t){return t.parentId!==e}),p={id:-1,type:2,children:d};if(Number(r.dashboardId)===e||c.parentId===e){var f=R.findFirstLeaf(p);o.replace("/project/"+t+"/portal/"+a+"/portalName/"+l+"/dashboard/"+f)}}else o.replace("/project/"+t+"/portal/"+a+"/portalName/"+l+"/dashboard/-1"),n.setState({isGrid:!1});n.hideDashboardForm()})},n.searchVisibleChange=function(e){n.setState({searchVisible:e})},n.handleTree=function(e,t){var r=n.state.expandedKeys;if(n.setState({autoExpandParent:!1}),t.selected)r.indexOf(e[0])<0?(r.push(e[0]),n.setState({expandedKeys:r})):n.setState({expandedKeys:r.filter(function(t){return t!==e[0]})});else{var o=[];0===r.length?(r.push(t.node.props.title),o=r):o=r.filter(function(e){return e!==t.node.props.title}),n.setState({expandedKeys:o})}},n.cancel=function(){var e=n.props,t=e.router,r=e.params;t.replace("/project/"+r.pid+"/vizs")},n.state={formType:"",formVisible:!1,expandedKeys:[],autoExpandParent:!0,searchValue:[],dashboardData:[],itemId:0,dataList:[],isExpand:!0,searchVisible:!1,isGrid:!0},n}return i(t,e),l(t,[{key:"componentWillMount",value:function(){var e=this,t=this.props,n=t.params,r=t.router,o=(t.dashboards,n.pid),a=n.portalId,i=n.portalName,s=n.dashboardId;this.props.onLoadDashboards(n.portalId,function(t){var n=0,l=R.listToTree(t,0),c={id:-1,type:2,children:l};n=R.findFirstLeaf(c),n>=0&&(s||r.replace("/project/"+o+"/portal/"+a+"/portalName/"+i+"/dashboard/"+n)),e.setState({dashboardData:l,isGrid:n>=0}),e.expandAll(t)}),this.props.onLoadPortals(o),this.props.onLoadProjectDetail(o)}},{key:"initalDashboardData",value:function(e){this.setState({dashboardData:R.listToTree(e,0)}),this.expandAll(e)}},{key:"componentWillReceiveProps",value:function(e){e.dashboards!==this.props.dashboards&&this.initalDashboardData(e.dashboards)}},{key:"componentDidMount",value:function(){this.props.onHideNavigator()}},{key:"expandAll",value:function(e){var t=[];e.filter(function(e){return 0===e.type}).forEach(function(e){return t.push(""+e.id)}),this.onExpand(t),this.setState({isExpand:!0})}},{key:"onShowDashboardForm",value:function(e,t){var n=this,r=this.props.dashboards;this.setState({formVisible:!0,itemId:e},function(){var o=r.find(function(t){return t.id===e}),a=o.config,i=o.id,s=o.name,l=o.parentId,c=o.type,u=o.index;n.dashboardForm.props.form.setFieldsValue({id:i,folder:l?""+r.find(function(e){return e.id===l}).id:"0",config:a,name:"copy"===t?s+"_copy":s,selectType:1===c,index:u})})}},{key:"render",value:function(){var e=this,t=this.props,r=t.params,o=t.dashboards,a=t.modalLoading,i=t.children,s=t.currentProject,l=t.onCheckUniqueName,d=t.portals,p=this.state,f=p.formType,h=p.formVisible,m=p.searchValue,g=p.dashboardData,b=p.isGrid,v=p.searchVisible,_=m.map(function(t){return c.createElement("li",{key:t.id,onClick:e.pickSearchDashboard(t.id)},t.name)}),y="";switch(f){case"add":y="新增";break;case"edit":y="修改";break;case"copy":y="复制";break;case"move":y="移动";break;case"delete":y="提示"}var A=[c.createElement(j,{key:"back",size:"large",onClick:this.hideDashboardForm},"取 消"),c.createElement(j,{key:"submit",size:"large",type:"primary",loading:a,onClick:this.onModalOk},"delete"===f?"确 定":"保 存")],T=H.default(s,"viz",!0)(E),D="";return d&&(D=d.find(function(e){return e.name===r.portalName}).description),c.createElement("div",{className:U.portal},c.createElement(Y.default,{className:U.portalHeader,currentType:"dashboard",name:r.portalName,description:D,onCancel:this.cancel}),c.createElement(u.default,{title:r.portalName}),c.createElement("div",{className:U.portalBody},c.createElement("div",{className:U.portalTree},c.createElement("div",{className:U.portalRow},c.createElement("span",{className:U.portalAction},c.createElement(k,{placement:"bottom",content:c.createElement("div",{className:U.portalTreeSearch},c.createElement(L,{placeholder:"Search",onChange:this.searchDashboard}),c.createElement("ul",null,_)),trigger:"click",visible:v,onVisibleChange:this.searchVisibleChange},c.createElement(S,{placement:"top",title:"搜索"},c.createElement(E,{type:"search",className:U.search}))),c.createElement(S,{placement:"top",title:"新增"},c.createElement(T,{type:"plus",className:U.plus,onClick:this.onAddItem})),c.createElement(k,{placement:"bottom",content:c.createElement("ul",{className:U.menu},c.createElement("li",{onClick:this.onCollapseAll},"收起全部"),c.createElement("li",{onClick:this.onExpandAll},"展开全部")),trigger:"click"},c.createElement(S,{placement:"top",title:"更多"},c.createElement(E,{type:"ellipsis",className:U.more}))))),g.length?c.createElement("div",{className:U.portalTreeNode},c.createElement(M,{onExpand:this.onExpand,expandedKeys:this.state.expandedKeys,autoExpandParent:this.state.autoExpandParent,selectedKeys:[this.props.params.dashboardId],draggable:V.initializePermission(s,"vizPermission"),onDrop:this.onDrop,onSelect:this.handleTree},function t(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return n.map(function(n){var o=c.createElement(w.default,{currentProject:s,depth:r,item:n,onInitOperateMore:e.onOperateMore,initChangeDashboard:e.changeDashboard});return 0===n.type?c.createElement(O,{icon:W,key:n.id,title:o},t(n.children,r+1)):c.createElement(O,{icon:G,key:n.id,title:o})})}(g))):b?c.createElement("h3",{className:U.loadingTreeMsg},"Loading tree......"):""),c.createElement("div",{className:U.gridClass},b?i:c.createElement("div",{className:U.noDashboard},c.createElement("img",{src:n("./app/assets/images/noDashboard.png"),onClick:this.onAddItem}),Q))),c.createElement(C,{title:y,wrapClassName:"ant-modal-small",visible:h,footer:A,onCancel:this.hideDashboardForm},c.createElement(x.default,{type:f,itemId:this.state.itemId,dashboards:o,portalId:r.portalId,onCheckUniqueName:l,wrappedComponentRef:this.refHandlers.dashboardForm})))}}]),t}(c.Component);t.Dashboard=q;var K=p.createStructuredSelector({dashboards:P.makeSelectDashboards(),modalLoading:P.makeSelectModalLoading(),currentProject:z.makeSelectCurrentProject(),portals:B.makeSelectPortals()});t.mapDispatchToProps=s;var X=d.connect(K,s),J=h.default({key:"dashboard",reducer:g.default}),Z=m.default({key:"dashboard",saga:b.default}),$=h.default({key:"project",reducer:v.default}),ee=m.default({key:"project",saga:_.default}),te=h.default({key:"portal",reducer:A.default}),ne=m.default({key:"portal",saga:y.default});t.default=f.compose(J,$,te,Z,ee,ne,X)(q)},"./app/containers/Dashboard/reducer.ts":function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:u,t=arguments[1],n=t.type,a=t.payload,s=e.get("dashboards"),d=e.get("currentDashboardCascadeSources"),p=e.get("currentItems"),f=e.get("currentItemsInfo");switch(n){case l.LOAD_DASHBOARDS_SUCCESS:return e.set("dashboards",a.dashboards);case l.LOAD_DASHBOARDS_FAILURE:return e;case l.ADD_DASHBOARD:return e.set("modalLoading",!0);case l.ADD_DASHBOARD_SUCCESS:return s?(s.push(a.result),e.set("dashboards",s.slice()).set("modalLoading",!1)):e.set("dashboards",[a.result]).set("modalLoading",!1);case l.ADD_DASHBOARD_FAILURE:return e.set("modalLoading",!1);case l.EDIT_DASHBOARD_SUCCESS:var h=a.result,m=a.formType;return"edit"===m?h.forEach(function(e){s.splice(s.findIndex(function(t){return t.id===e.id}),1,e)}):"move"===m&&(h.forEach(function(e){s.splice(s.findIndex(function(t){return t.id===e.id}),1)}),Array.prototype.push.apply(s,h)),e.set("dashboards",s.slice());case l.EDIT_CURRENT_DASHBOARD:return e.set("currentDashboardLoading",!0);case l.EDIT_CURRENT_DASHBOARD_SUCCESS:return e.set("currentDashboard",a.result).set("currentDashboardCascadeSources",{}).set("currentDashboardLoading",!1);case l.EDIT_CURRENT_DASHBOARD_FAILURE:return e.set("currentDashboardLoading",!1);case l.DELETE_DASHBOARD_SUCCESS:return e.set("dashboards",s.filter(function(e){return e.id!==a.id}));case l.LOAD_DASHBOARD_DETAIL:return e.set("currentDashboardLoading",!0).set("currentDashboardShareInfo","").set("currentDashboardSecretInfo","");case l.LOAD_DASHBOARD_DETAIL_SUCCESS:return e.set("currentDashboardLoading",!1).set("currentDashboard",a.dashboardDetail).set("currentDashboardCascadeSources",{}).set("currentItems",a.dashboardDetail.widgets).set("currentItemsInfo",a.dashboardDetail.widgets.reduce(function(e,t){return e[t.id]={datasource:[],loading:!1,queryParams:{linkageFilters:[],globalFilters:[],params:[],linkageParams:[],globalParams:[],pagination:{}},shareInfo:"",shareInfoLoading:!1,secretInfo:"",downloadCsvLoading:!1,interactId:"",rendered:!1,renderType:"rerender"},e},{}));case l.LOAD_DASHBOARD_DETAIL_FAILURE:return e.set("currentDashboardLoading",!1);case l.ADD_DASHBOARD_ITEM_SUCCESS:p||(p=[]);var g=new Object;return a.result.forEach(function(e){g[e.id]={datasource:[],loading:!1,queryParams:{linkageFilters:[],globalFilters:[],params:[],linkageParams:[],globalParams:[],pagination:{}},shareInfo:"",shareInfoLoading:!1,secretInfo:"",downloadCsvLoading:!1,interactId:"",rendered:!1,renderType:"rerender"}}),e.set("currentItems",p.concat(a.result)).set("currentItemsInfo",Object.assign({},f,g));case l.ADD_DASHBOARD_ITEM_FAILURE:return e;case l.EDIT_DASHBOARD_ITEM_SUCCESS:return p.splice(p.indexOf(p.find(function(e){return e.id===a.result.id})),1,a.result),e.set("currentItems",p.slice());case l.EDIT_DASHBOARD_ITEM_FAILURE:return e;case l.EDIT_DASHBOARD_ITEMS_SUCCESS:return e.set("currentItems",a.items);case l.EDIT_DASHBOARD_ITEMS_FAILURE:return e;case l.DELETE_DASHBOARD_ITEM_SUCCESS:return delete f[a.id],e.set("currentItems",p.filter(function(e){return e.id!==a.id}));case l.DELETE_DASHBOARD_ITEM_FAILURE:return e;case l.CLEAR_CURRENT_DASHBOARD:return e.set("currentDashboard",null).set("currentItems",null).set("currentItemsInfo",null);case c.LOAD_DATA_FROM_ITEM:return"dashboard"!==a.vizType?e:e.set("currentItemsInfo",Object.assign({},f,o({},a.itemId,Object.assign({},f[a.itemId],{loading:!0,queryParams:{linkageFilters:a.params.linkageFilters,globalFilters:a.params.globalFilters,params:a.params.params,linkageParams:a.params.linkageParams,globalParams:a.params.globalParams}}))));case c.LOAD_DATA_FROM_ITEM_SUCCESS:return"dashboard"!==a.vizType?e:e.set("currentItemsInfo",Object.assign({},f,o({},a.itemId,Object.assign({},f[a.itemId],{loading:!1,datasource:a.data,renderType:a.renderType}))));case c.LOAD_DATA_FROM_ITEM_FAILURE:return"dashboard"!==a.vizType?e:e.set("currentItemsInfo",Object.assign({},f,o({},a.itemId,Object.assign({},f[a.itemId],{loading:!1}))));case l.LOAD_DASHBOARD_SHARE_LINK:return e.set("currentDashboardShareInfoLoading",!0);case l.LOAD_DASHBOARD_SHARE_LINK_SUCCESS:return e.set("currentDashboardShareInfo",a.shareInfo).set("currentDashboardShareInfoLoading",!1);case l.LOAD_DASHBOARD_SECRET_LINK_SUCCESS:return e.set("currentDashboardSecretInfo",a.secretInfo).set("currentDashboardShareInfoLoading",!1);case l.LOAD_DASHBOARD_SHARE_LINK_FAILURE:return e.set("currentDashboardShareInfoLoading",!1);case l.LOAD_WIDGET_SHARE_LINK:return e.set("currentItemsInfo",Object.assign({},f,o({},a.itemId,Object.assign({},f[a.itemId],{shareInfoLoading:!0}))));case l.LOAD_WIDGET_SHARE_LINK_SUCCESS:return e.set("currentItemsInfo",Object.assign({},f,o({},a.itemId,Object.assign({},f[a.itemId],{shareInfo:a.shareInfo,shareInfoLoading:!1}))));case l.LOAD_WIDGET_SECRET_LINK_SUCCESS:return e.set("currentItemsInfo",Object.assign({},f,o({},a.itemId,Object.assign({},f[a.itemId],{secretInfo:a.shareInfo,shareInfoLoading:!1}))));case l.LOAD_WIDGET_SHARE_LINK_FAILURE:return e.set("currentItemsInfo",Object.assign({},f,o({},a.itemId,Object.assign({},f[a.itemId],{shareInfoLoading:!1}))));case l.LOAD_WIDGET_CSV:return e.set("currentItemsInfo",Object.assign({},f,o({},a.itemId,Object.assign({},f[a.itemId],{downloadCsvLoading:!0}))));case l.LOAD_WIDGET_CSV_SUCCESS:case l.LOAD_WIDGET_CSV_FAILURE:return e.set("currentItemsInfo",Object.assign({},f,o({},a.itemId,Object.assign({},f[a.itemId],{downloadCsvLoading:!1}))));case c.LOAD_CASCADESOURCE_SUCCESS:return e.set("currentDashboardCascadeSources",Object.assign({},d,o({},a.controlId,Object.assign({},d[a.controlId],o({},a.column,a.values)))));case l.RENDER_DASHBOARDITEM:return e.set("currentItemsInfo",Object.assign({},f,o({},a.itemId,Object.assign({},f[a.itemId],{rendered:!0}))));case l.RESIZE_DASHBOARDITEM:return e.set("currentItemsInfo",Object.assign({},f,o({},a.itemId,Object.assign({},f[a.itemId],{renderType:"resize",datasource:[].concat(r(f[a.itemId].datasource))}))));case l.RESIZE_ALL_DASHBOARDITEM:return e.set("currentItemsInfo",Object.entries(f).reduce(function(e,t){var n=i(t,2),o=n[0],a=n[1];return e[o]=Object.assign({},a,{renderType:"resize",datasource:[].concat(r(a.datasource))}),e},{}));default:return e}}var i=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();Object.defineProperty(t,"__esModule",{value:!0});var s=n("./node_modules/immutable/dist/immutable.js"),l=n("./app/containers/Dashboard/constants.ts"),c=n("./app/containers/Bizlogic/constants.ts"),u=s.fromJS({dashboards:null,currentDashboard:null,currentDashboardLoading:!1,currentDashboardShareInfo:"",currentDashboardSecretInfo:"",currentDashboardShareInfoLoading:!1,currentDashboardCascadeSources:null,currentItems:null,currentItemsInfo:null,modalLoading:!1});t.default=a},"./app/containers/Dashboard/sagas.ts":function(e,t,n){"use strict";function r(e){var t,n=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,L.call(I.default,N.default.portal+"/"+n.portalId+"/dashboards");case 3:return t=e.sent,e.next=6,L.put(P.dashboardsLoaded(t.payload));case 6:n.resolve(t.payload),e.next=14;break;case 9:return e.prev=9,e.t0=e.catch(0),e.next=13,L.put(P.loadDashboardsFail());case 13:R.errorHandler(e.t0);case 14:case"end":return e.stop()}},b,this,[[0,9]])}function o(e){var t,n,r,o=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=o.dashboard,n=o.resolve,e.prev=1,e.next=4,L.call(I.default,{method:"post",url:N.default.portal+"/"+t.dashboardPortalId+"/dashboards",data:t});case 4:return r=e.sent,e.next=7,L.put(P.dashboardAdded(r.payload));case 7:n(r.payload.id),e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,L.put(P.addDashboardFail());case 14:R.errorHandler(e.t0);case 15:case"end":return e.stop()}},v,this,[[1,10]])}function a(e){var t,n,r,o=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=o.formType,n=o.dashboard,r=o.resolve,e.prev=1,e.next=4,L.call(I.default,{method:"put",url:N.default.portal+"/"+n[0].dashboardPortalId+"/dashboards",data:n});case 4:return e.next=6,L.put(P.dashboardEdited(n,t));case 6:r(n),e.next=14;break;case 9:return e.prev=9,e.t0=e.catch(1),e.next=13,L.put(P.editDashboardFail());case 13:R.errorHandler(e.t0);case 14:case"end":return e.stop()}},_,this,[[1,9]])}function i(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,n=t.dashboard,r=t.resolve,o.prev=1,o.next=4,L.call(I.default,{method:"put",url:N.default.portal+"/"+n.dashboardPortalId+"/dashboards",data:[n]});case 4:return o.next=6,L.put(P.currentDashboardEdited(n));case 6:r(),o.next=14;break;case 9:return o.prev=9,o.t0=o.catch(1),o.next=13,L.put(P.editCurrentDashboardFail());case 13:R.errorHandler(o.t0);case 14:case"end":return o.stop()}},y,this,[[1,9]])}function s(e){var t=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,L.call(I.default,{method:"delete",url:N.default.portal+"/dashboards/"+t.id});case 3:return e.next=5,L.put(P.dashboardDeleted(t.id));case 5:t.resolve&&t.resolve(),e.next=13;break;case 8:return e.prev=8,e.t0=e.catch(0),e.next=12,L.put(P.deleteDashboardFail());case 12:R.errorHandler(e.t0);case 13:case"end":return e.stop()}},A,this,[[0,8]])}function l(e){var t,n,r,o,a=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=a.projectId,n=a.portalId,r=a.dashboardId,e.prev=1,e.next=4,L.all({dashboardDetail:L.call(I.default,N.default.portal+"/"+n+"/dashboards/"+r),widgets:L.call(I.default,N.default.widget+"?projectId="+t)});case 4:return o=e.sent,e.next=7,L.put(P.dashboardDetailLoaded(r,o.dashboardDetail.payload,o.widgets.payload));case 7:e.next=14;break;case 9:return e.prev=9,e.t0=e.catch(1),e.next=13,L.put(P.loadDashboardDetailFail());case 13:R.errorHandler(e.t0);case 14:case"end":return e.stop()}},x,this,[[1,9]])}function c(e){var t,n,r,o,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,n=t.portalId,r=t.item,o=t.resolve,i.prev=1,i.next=4,L.call(I.default,{method:"post",url:N.default.portal+"/"+n+"/dashboards/"+r[0].dashboardId+"/widgets",data:r});case 4:return a=i.sent,i.next=7,L.put(P.dashboardItemAdded(a.payload));case 7:o(a),i.next=15;break;case 10:return i.prev=10,i.t0=i.catch(1),i.next=14,L.put(P.addDashboardItemFail());case 14:R.errorHandler(i.t0);case 15:case"end":return i.stop()}},w,this,[[1,10]])}function u(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,n=t.item,r=t.resolve,o.prev=1,o.next=4,L.call(I.default,{method:"put",url:N.default.portal+"/dashboards/widgets",data:[n]});case 4:return o.next=6,L.put(P.dashboardItemEdited(n));case 6:r(),o.next=14;break;case 9:return o.prev=9,o.t0=o.catch(1),o.next=13,L.put(P.editDashboardItemFail());case 13:R.errorHandler(o.t0);case 14:case"end":return o.stop()}},j,this,[[1,9]])}function d(e){var t;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return t=e.payload.items,n.prev=1,n.next=4,L.call(I.default,{method:"put",url:N.default.portal+"/dashboards/widgets",data:t});case 4:return n.next=6,L.put(P.dashboardItemsEdited(t));case 6:n.next=13;break;case 8:return n.prev=8,n.t0=n.catch(1),n.next=12,L.put(P.editDashboardItemsFail());case 12:R.errorHandler(n.t0);case 13:case"end":return n.stop()}},E,this,[[1,8]])}function p(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,n=t.id,r=t.resolve,o.prev=1,o.next=4,L.call(I.default,{method:"delete",url:N.default.portal+"/dashboards/widgets/"+n});case 4:return o.next=6,L.put(P.dashboardItemDeleted(n));case 6:r&&r(),o.next=14;break;case 9:return o.prev=9,o.t0=o.catch(1),o.next=13,L.put(P.deleteDashboardItemFail());case 13:R.errorHandler(o.t0);case 14:case"end":return o.stop()}},S,this,[[1,9]])}function f(e){var t,n,r,o;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return t=e.payload,n=t.id,r=t.authName,a.prev=1,a.next=4,L.call(I.default,{method:"get",url:N.default.portal+"/dashboards/"+n+"/share",params:{username:r}});case 4:if(o=a.sent,!r){a.next=10;break}return a.next=8,L.put(P.dashboardSecretLinkLoaded(o.payload));case 8:a.next=12;break;case 10:return a.next=12,L.put(P.dashboardShareLinkLoaded(o.payload));case 12:a.next=19;break;case 14:return a.prev=14,a.t0=a.catch(1),a.next=18,L.put(P.loadDashboardShareLinkFail());case 18:R.errorHandler(a.t0);case 19:case"end":return a.stop()}},k,this,[[1,14]])}function h(e){var t,n,r,o,a,i;return regeneratorRuntime.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload,n=t.id,r=t.authName,o=t.itemId,a=t.resolve,s.prev=1,s.next=4,L.call(I.default,{method:"get",url:N.default.widget+"/"+n+"/share",params:{username:r}});case 4:if(i=s.sent,!r){s.next=10;break}return s.next=8,L.put(P.widgetSecretLinkLoaded(i.payload,o));case 8:s.next=12;break;case 10:return s.next=12,L.put(P.widgetShareLinkLoaded(i.payload,o));case 12:a&&a(),s.next=20;break;case 15:return s.prev=15,s.t0=s.catch(1),s.next=19,L.put(P.loadWidgetShareLinkFail(o));case 19:R.errorHandler(s.t0);case 20:case"end":return s.stop()}},C,this,[[1,15]])}function m(e){var t,n,r,o,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,n=t.itemId,r=t.params,o=t.token,i.prev=1,i.next=4,L.call(I.default,{method:"post",url:N.default.widget+"/"+n+"/csv",data:r});case 4:return a=i.sent,i.next=7,L.put(P.widgetCsvLoaded(n));case 7:location.href=a.payload,i.next=15;break;case 10:return i.prev=10,i.t0=i.catch(1),i.next=14,L.put(P.loadWidgetCsvFail(n));case 14:R.errorHandler(i.t0);case 15:case"end":return i.stop()}},T,this,[[1,10]])}function g(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[O.takeLatest(D.LOAD_DASHBOARDS,r),O.takeLatest(D.ADD_DASHBOARD,o),O.takeEvery(D.EDIT_DASHBOARD,a),O.takeEvery(D.EDIT_CURRENT_DASHBOARD,i),O.takeEvery(D.DELETE_DASHBOARD,s),O.takeLatest(D.LOAD_DASHBOARD_DETAIL,l),O.takeEvery(D.ADD_DASHBOARD_ITEM,c),O.takeEvery(D.EDIT_DASHBOARD_ITEM,u),O.takeEvery(D.EDIT_DASHBOARD_ITEMS,d),O.takeEvery(D.DELETE_DASHBOARD_ITEM,p),O.takeLatest(D.LOAD_DASHBOARD_SHARE_LINK,f),O.takeLatest(D.LOAD_WIDGET_SHARE_LINK,h),O.takeLatest(D.LOAD_WIDGET_CSV,m)];case 2:case"end":return e.stop()}},M,this)}var b=regeneratorRuntime.mark(r),v=regeneratorRuntime.mark(o),_=regeneratorRuntime.mark(a),y=regeneratorRuntime.mark(i),A=regeneratorRuntime.mark(s),x=regeneratorRuntime.mark(l),w=regeneratorRuntime.mark(c),j=regeneratorRuntime.mark(u),E=regeneratorRuntime.mark(d),S=regeneratorRuntime.mark(p),k=regeneratorRuntime.mark(f),C=regeneratorRuntime.mark(h),T=regeneratorRuntime.mark(m),M=regeneratorRuntime.mark(g);Object.defineProperty(t,"__esModule",{value:!0});var O=n("./node_modules/redux-saga/es/index.js"),L=n("./node_modules/redux-saga/es/effects.js"),D=n("./app/containers/Dashboard/constants.ts"),P=n("./app/containers/Dashboard/actions.ts"),I=n("./app/utils/request.ts"),R=n("./app/utils/util.ts"),N=n("./app/utils/api.js"),B=n("./app/globalConfig.ts");B.default[B.env].shareHost;t.getDashboards=r,t.addDashboard=o,t.editDashboard=a,t.editCurrentDashboard=i,t.deleteDashboard=s,t.getDashboardDetail=l,t.addDashboardItem=c,t.editDashboardItem=u,t.editDashboardItems=d,t.deleteDashboardItem=p,t.getDashboardShareLink=f,t.getWidgetShareLink=h,t.getWidgetCsv=m,t.default=g},"./app/containers/Dashboard/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("dashboard")};t.selectDashboard=o;var a=function(){return r.createSelector(o,function(e){return e.get("dashboards")})};t.makeSelectDashboards=a;var i=function(){return r.createSelector(o,function(e){return e.get("currentDashboard")})};t.makeSelectCurrentDashboard=i;var s=function(){return r.createSelector(o,function(e){return e.get("currentDashboardLoading")})};t.makeSelectCurrentDashboardLoading=s;var l=function(){return r.createSelector(o,function(e){return e.get("currentDashboardShareInfo")})};t.makeSelectCurrentDashboardShareInfo=l;var c=function(){return r.createSelector(o,function(e){return e.get("currentDashboardSecretInfo")})};t.makeSelectCurrentDashboardSecretInfo=c;var u=function(){return r.createSelector(o,function(e){return e.get("currentDashboardShareInfoLoading")})};t.makeSelectCurrentDashboardShareInfoLoading=u;var d=function(){return r.createSelector(o,function(e){return e.get("currentDashboardCascadeSources")})};t.makeSelectCurrentDashboardCascadeSources=d;var p=function(){return r.createSelector(o,function(e){return e.get("currentItems")})};t.makeSelectCurrentItems=p;var f=function(){return r.createSelector(o,function(e){return e.get("currentItemsInfo")})};t.makeSelectCurrentItemsInfo=f;var h=function(){return r.createSelector(o,function(e){return e.get("modalLoading")})};t.makeSelectModalLoading=h;var m=function(){return r.createSelector(o,function(e){var t=e.get("currentDashboard"),n=e.get("currentItemsInfo");if(!t&&!n)return[];var r=JSON.parse(t.config||"{}"),o=r.linkages;return o?o.filter(function(e){var t=e.linkager,r=e.trigger;return n[t[0]]&&n[r[0]]}):[]})};t.makeSelectCurrentLinkages=m},"./app/containers/Display/Display.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Display/Display.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Display/Editor.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);ti/s?(i-64)/t.width*e:(s-64)/t.height*e;l=+(.05*Math.floor(l/.05)).toFixed(2);var c=Math.max((o-t.width*l)/2,32),u=Math.max((a-t.height*l)/2,32);n.setState({editorWidth:Math.max(i,t.width*l+64),editorHeight:Math.max(s,t.height*l+64),editorPadding:u+"px "+c+"px",scale:l})},n.displaySizeChange=function(e,t){var r=n.state.slideParams;n.setState({slideParams:Object.assign({},r,{width:e,height:t})},function(){n.sliderChange(n.state.sliderValue)})},n.getChartData=function(e,t,r,o){var a=n.props,i=a.currentLayersInfo,s=a.widgets,l=a.onLoadDataFromItem,c=s.find(function(e){return e.id===r}),u=JSON.parse(c.config),d=u.cols,p=u.rows,f=u.metrics,h=u.filters,m=u.color,g=u.label,b=u.size,v=u.xAxis,_=u.tip,y=u.orders,A=u.cache,x=u.expired,w=i[t].queryParams,j=void 0,E=void 0,S=void 0,k=void 0,C=void 0;o?(j=void 0!==o.linkageFilters?o.linkageFilters:w.linkageFilters,E=void 0!==o.globalFilters?o.globalFilters:w.globalFilters,S=o.params||w.params,k=o.linkageParams||w.linkageParams,C=o.globalParams||w.globalParams):(j=w.linkageFilters,E=w.globalFilters,S=w.params,k=w.linkageParams,C=w.globalParams);var T=d.concat(p).filter(function(e){return"指标名称"!==e}),M=f.map(function(e){return{column:H.decodeMetricName(e.name),func:e.agg}});m&&(T=T.concat(m.items.map(function(e){return e.name}))),g&&(T=T.concat(g.items.filter(function(e){return"category"===e.type}).map(function(e){return e.name})),M=M.concat(g.items.filter(function(e){return"value"===e.type}).map(function(e){return{column:H.decodeMetricName(e.name),func:e.agg}}))),b&&(M=M.concat(b.items.map(function(e){return{column:H.decodeMetricName(e.name),func:e.agg}}))),v&&(M=M.concat(v.items.map(function(e){return{column:H.decodeMetricName(e.name),func:e.agg}}))),_&&(M=M.concat(_.items.map(function(e){return{column:H.decodeMetricName(e.name),func:e.agg}}))),l(e,t,c.viewId,{groups:T,aggregators:M,filters:h.map(function(e){return e.config.sql}),linkageFilters:j,globalFilters:E,params:S,linkageParams:k,globalParams:C,orders:y,cache:A,expired:x})},n.updateCurrentLocalLayers=function(e,t){var r=t.deltaX,a=t.deltaY,i=t.deltaWidth,s=t.deltaHeight,l=[],c=n.props.currentLayersOperationInfo,u=n.state,d=u.currentLocalLayers,f=u.slideParams,h=p.fromJS(d).toJS();l.push(h.find(function(t){return t.id===e})),l[0].selected&&l.splice.apply(l,[0,1].concat(o(h.filter(function(e){return c[e.id].selected}))));var m=l.reduce(function(e,t){return e[t.id]=JSON.parse(t.params),e},{}),g=l.reduce(function(e,t){return Math.min(e,m[t.id].positionX)},1/0),b=l.reduce(function(e,t){var n=m[t.id],r=n.positionX,o=n.width;return Math.max(e,r+o)},-1/0),v=l.reduce(function(e,t){return Math.min(e,m[t.id].positionY)},1/0),_=l.reduce(function(e,t){var n=m[t.id],r=n.positionY,o=n.height;return Math.max(e,r+o)},-1/0),y=Math.round((g+b)/2),A=Math.round((v+_)/2),x=f.width,w=f.height,j=n.props,E=j.onShowHorizontalBaseline,S=j.onHideHorizontalBaseline,k=j.onShowVerticalBaseline,C=j.onHideVerticalBaseline;return Math.abs(x/2-y)1?d.createElement(R.default,{layers:i,onEditDisplayLayers:this.onEditLayers,onCollapseChange:this.collapseChange}):d.createElement(P.default,{key:E.key,id:E.id,settingInfo:E.setting,settingParams:E.param,onDisplaySizeChange:this.displaySizeChange,onFormItemChange:this.formItemChange,wrappedComponentRef:this.refHandlers.settingForm,onCollapseChange:this.collapseChange},0===i.length?d.createElement(I.default,{key:"displaySetting",display:l,onCoverCut:this.coverCut,onCoverUploaded:this.coverUploaded}):null),d.createElement("div",{className:z.preview+" "+z.edit},d.createElement(h.default,{title:l.name}),d.createElement(k.default,{display:l,widgets:s,params:n,onAddLayers:this.addLayers,onDeleteLayers:this.deleteLayers,onCopyLayers:this.copyLayers,onPasteLayers:this.pasteLayers,onLoadDisplayShareLink:u,onUndo:this.undo,onRedo:this.redo,canUndo:p,canRedo:f}),d.createElement(C.default,null,d.createElement(M.default,{key:"editor",width:v,height:_,padding:y,slideParams:g,scale:A,onCoverCutCreated:this.coverCutCreated,onKeyDown:this.keyDown,onLayersSelectionRemove:this.layersSelectionRemove,ref:this.refHandlers.editor},[].concat(o(j),o(w))),d.createElement(O.default,{scale:A,sliderValue:x,onZoomIn:this.zoomIn,onZoomOut:this.zoomOut,onSliderChange:this.sliderChange}),d.createElement(L.default,null,d.createElement(T.default,{layers:b,layersStatus:a,selectedLayers:i,onSelectLayer:c,onEditDisplayLayers:this.onEditLayers,onCollapseChange:this.collapseChange}),S)))}}]),t}(d.Component);t.Editor=Q;var q=m.createStructuredSelector({widgets:Y.makeSelectWidgets(),bizlogics:W.makeSelectBizlogics(),displays:E.makeSelectDisplays(),currentDisplay:E.makeSelectCurrentDisplay(),currentSlide:E.makeSelectCurrentSlide(),currentLayers:E.makeSelectCurrentLayers(),currentLayersInfo:E.makeSelectCurrentLayersInfo(),currentLayersOperationInfo:E.makeSelectCurrentLayersOperationInfo(),clipboardLayers:E.makeSelectClipboardLayers(),currentSelectedLayers:E.makeSelectCurrentSelectedLayers(),canUndo:E.makeSelectCanUndo(),canRedo:E.makeSelectCanRedo(),currentState:E.makeSelectCurrentState(),nextState:E.makeSelectNextState(),editorBaselines:E.makeSelectEditorBaselines()}),K=f.connect(q,l),X=w.default({key:"display",reducer:b.default}),J=j.default({key:"display",saga:v.default}),Z=w.default({key:"widget",reducer:_.default}),$=j.default({key:"widget",saga:y.default}),ee=w.default({key:"bizlogic",reducer:A.default}),te=j.default({key:"bizlogic",saga:x.default});t.default=g.compose(X,Z,ee,J,$,te,K)(Q)},"./app/containers/Display/Preview.tsx":function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0)){var n=t.key,r=t.ctrlKey,o=t.metaKey,a=t.shiftKey,i=e.props.onKeyDown;switch(n){case"ArrowUp":i(l.Up);break;case"ArrowDown":i(l.Down);break;case"ArrowLeft":i(l.Left);break;case"ArrowRight":i(l.Right);break;case"Delete":case"Backspace":i(l.Delete);break;case"c":case"C":(r||o)&&i(l.Copy);break;case"v":case"V":(r||o)&&i(l.Paste);break;case"y":case"Y":r&&!o&&i(l.Redo);break;case"z":case"Z":o?i(a?l.Redo:l.UnDo):r&&i(l.UnDo)}}},e}return i(t,e),s(t,[{key:"componentDidMount",value:function(){document.addEventListener("keydown",this.keyDown,!1)}},{key:"componentWillUnmount",value:function(){document.removeEventListener("keydown",this.keyDown,!1)}},{key:"render",value:function(){var e=this.props,t=e.slideParams,n=e.width,r=e.height,o=e.padding,a=e.scale,i=e.children,s=e.onLayersSelectionRemove,l=this.getSlideStyle(t,a);return c.createElement("div",{className:d.editor},c.createElement("div",{ref:this.refHandlers.container,className:d.editorContainer},c.createElement("div",{className:d.displayContainer,style:{width:n+"px",height:r+"px",padding:o},tabIndex:0},c.createElement("div",{className:d.displayPanelWrapper},c.createElement("div",{ref:this.refHandlers.content,className:d.displayPanel,style:l,onClick:s},i)))))}}]),t}(c.PureComponent);t.DisplayContainer=p,t.default=p},"./app/containers/Display/components/DisplayForm.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{onCheckName:function(t,n,r,o){return e(v.checkNameUniqueAction(t,n,r,o))}}}var s=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2],o=n.props,a=o.projectId,i=o.onCheckName;o.type;i("display",{projectId:a,id:o.form.getFieldsValue().id,name:t},function(){r()},function(e){r(e)})},n}return a(t,e),l(t,[{key:"render",value:function(){var e=this.props.form.getFieldDecorator,t={labelCol:{span:6},wrapperCol:{span:16}};return c.createElement(d,null,c.createElement(p,{gutter:8},c.createElement(f,{span:24},c.createElement(g,{className:_.hide},e("projectId",{hidden:"add"===this.props.type})(y)),c.createElement(g,{className:_.hide},e("id",{hidden:"add"===this.props.type})(A)),c.createElement(g,s({label:"名称"},t),e("name",{rules:[{required:!0,message:"Name 不能为空"},{validator:this.checkNameUnique}]})(x))),c.createElement(f,{span:24},c.createElement(g,s({label:"描述"},t),e("description",{initialValue:""})(c.createElement(h,{placeholder:"Description",type:"textarea",autosize:{minRows:2,maxRows:6}})))),c.createElement(f,{span:24},c.createElement(g,s({label:"是否发布"},t),e("publish",{initialValue:!0})(w)),c.createElement(g,{className:_.hide},e("avatar",{hidden:"add"===this.props.type})(j)))))}}]),t}(c.PureComponent);t.DisplayForm=E,t.default=d.create()(u.connect(null,i)(E))},"./app/containers/Display/components/DisplayHeader.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=function(){function e(e,t){for(var n=0;n1?t-1:0),o=1;ot.positionX+t.width?e:t},t[0]),l=r.reduce(function(e,t){return e.positionY+e.height>t.positionY+t.height?e:t},t[0]);switch(e){case s.Top:n.spreadPositions(function(e){return{positionX:e.positionX,positionY:a}});break;case s.Left:n.spreadPositions(function(e){return{positionX:o,positionY:e.positionY}});break;case s.Bottom:var c=l.positionY,u=l.height;n.spreadPositions(function(e){return{positionX:e.positionX,positionY:c+u-e.height}});break;case s.Right:var d=i.positionX,p=i.width;n.spreadPositions(function(e){return{positionX:d+p-e.width,positionY:e.positionY}});break;case s.HorizontalCenter:var f=(o+i.positionX+i.width)/2;n.spreadPositions(function(e){return{positionX:f-e.width/2,positionY:e.positionY}});break;case s.VerticalCenter:var h=(a+l.positionY+l.height)/2;n.spreadPositions(function(e){return{positionX:e.positionX,positionY:h-e.height/2}})}}},n.spreadPositions=function(e){var t=n.props,r=t.layers;(0,t.onEditDisplayLayers)(r.map(function(t){var n=JSON.parse(t.params);return Object.assign({},t,{params:JSON.stringify(Object.assign({},n,e(n)))})}))},n.toggleCollapse=function(){var e=n.props.onCollapseChange,t=n.state.collapse;n.setState({collapse:!t},function(){e()})},n.state={collapse:!1},n}return a(t,e),i(t,[{key:"render",value:function(){return this.state.collapse?l.createElement("div",{className:d.collapse},l.createElement("h2",{className:d.formTitle},l.createElement(u,{title:"显示/隐藏设置"},l.createElement(c,{onClick:this.toggleCollapse,type:"left-square-o"}))),l.createElement("div",{className:d.title},p)):l.createElement("div",{className:d.right},l.createElement("h2",{className:d.formTitle},f,l.createElement(u,{title:"显示/隐藏设置"},l.createElement(c,{onClick:this.toggleCollapse,type:"right-square-o"}))),l.createElement("div",{className:d.alignList},l.createElement("div",{className:d.category},l.createElement(u,{placement:"bottom",title:"上对齐"},l.createElement("i",{onClick:this.setAlign(s.Top),className:"iconfont icon-align-top"}))),l.createElement("div",{className:d.category},l.createElement(u,{placement:"bottom",title:"左对齐"},l.createElement("i",{onClick:this.setAlign(s.Left),className:"iconfont icon-align-left"})),l.createElement(u,{placement:"bottom",title:"水平居中"},l.createElement("i",{onClick:this.setAlign(s.HorizontalCenter),className:"iconfont icon-horizontal-center"})),l.createElement(u,{placement:"bottom",title:"垂直居中"},l.createElement("i",{onClick:this.setAlign(s.VerticalCenter),className:"iconfont icon-vertical-center"})),l.createElement(u,{placement:"bottom",title:"右对齐"},l.createElement("i",{onClick:this.setAlign(s.Right),className:"iconfont icon-align-right"}))),l.createElement("div",{className:d.category},l.createElement(u,{placement:"bottom",title:"下对齐"},l.createElement("i",{onClick:this.setAlign(s.Bottom),className:"iconfont icon-align-bottom"})))))}}]),t}(l.Component);t.LayerAlign=h,t.default=h},"./app/containers/Display/components/LayerItem.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),l=Object.assign||function(e){for(var t=1;t-1?"bold":"normal",d.fontStyle=b.indexOf("italic")>-1?"italic":"normal",d.textDecoration=b.indexOf("underline")>-1?"underline":"none"),u.createElement("div",{ref:function(e){return n.refLayer=e},className:c,style:d,onClick:n.onClickLayer},n.wrapLayerTooltip(u.createElement("p",{style:k},o.contentText)))},n.wrapLayerTooltip=function(e){var t=n.props,r=t.resizing,o=t.dragging;if(!r&&!o)return e;var a=n.state,i=a.layerParams,l=a.layerTooltipPosition,c=i.positionX,d=i.positionY,p=i.width,h=i.height,m=r?"宽度:"+p+"px,高度:"+h+"px":o?"x:"+c+"px,y:"+d+"px":"",g=r||o,b=s(l,2),v=b[0],_=b[1],y={top:v,left:_};return u.createElement(f,{title:m,overlayStyle:y,placement:"right",visible:g},e)};var i=n.props.layer,c=JSON.parse(i.params);return n.state={layerParams:c,layerTooltipPosition:[0,0],mousePos:[-1,-1],widgetProps:null},n}return i(t,e),c(t,[{key:"componentWillMount",value:function(){var e=this.props.widget;e&&this.setState({widgetProps:JSON.parse(e.config)})}},{key:"componentDidMount",value:function(){var e=this.props,t=e.itemId,n=e.layer,r=e.widget,o=e.onGetChartData;n.type===m.GraphTypes.Chart&&(o("clear",t,r.id),this.setFrequent(this.props))}},{key:"componentWillReceiveProps",value:function(e){if(this.props.layer.params!==e.layer.params){var t=JSON.parse(e.layer.params);this.setState({layerParams:t})}this.props.widget!==e.widget&&this.setState({widgetProps:JSON.parse(e.widget.config)})}},{key:"componentWillUpdate",value:function(e){var t=e.polling;e.layer.type===m.GraphTypes.Chart&&t!==this.props.polling&&this.setFrequent(e)}},{key:"componentDidUpdate",value:function(){var e=d.findDOMNode(this.refLayer).getBoundingClientRect(),t=e.top,n=e.height,r=e.right,o=s(this.state.layerTooltipPosition,2),a=o[0],i=o[1],l=t+n/2,c=r;a===l&&i===c||this.setState({layerTooltipPosition:[l,c]})}},{key:"componentWillUnmount",value:function(){clearInterval(this.frequent)}},{key:"render",value:function(){var e=this.props,t=e.pure,n=e.scale,r=e.slideParams,o=e.layer,a=this.state.layerParams,i=a.positionX,s=a.positionY,l=a.width,c=a.height,d={x:i,y:s},p=this.renderLayer(o);if(t)return p;var f=[r.width-d.x,r.height-d.y];return u.createElement(h.default,{grid:[1,1],bounds:"parent",scale:Math.min(n[0],n[1]),onStart:this.dragOnStart,onStop:this.dragOnStop,onDrag:this.onDrag,handle:"."+v.layer,position:d},u.createElement(b,{width:l,height:c,onResize:this.onResize,onResizeStop:this.onResizeStop,draggableOpts:{grid:[1,1]},minConstraints:[50,50],maxConstraints:f,handleSize:[20,20],scale:Math.min(n[0],n[1])},p))}}]),t}(u.PureComponent);t.LayerItem=_,t.default=_},"./app/containers/Display/components/LayerList.tsx":function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t=0)){var a=t[o].index;t[o].index=t[o-1].index,t[o-1].index=a;var i=t[o];t[o]=t[o-1],t[o-1]=i;[t[o],t[o-1]].forEach(function(e){var t=r.findIndex(function(t){return t.id===e.id});t<0?r.push(Object.assign({},e)):r.splice(t,1,Object.assign({},e))})}}),r.length<=0||n.props.onEditDisplayLayers(r)},n.bringToUpper=function(){var e=n.props,t=e.selectedLayers,r=e.layers,o=n.sortLayers(t,c.OrderDirection.Desc),a=n.sortLayers(r,c.OrderDirection.Desc);n.swapLayerIndex(o,a)},n.sendToNext=function(){var e=n.props,t=e.selectedLayers,r=e.layers,o=n.sortLayers(t,c.OrderDirection.Asc),a=n.sortLayers(r,c.OrderDirection.Asc);n.swapLayerIndex(o,a)},n.bringToFront=function(){var e=n.props,t=e.selectedLayers,r=e.layers,o=e.onEditDisplayLayers;if(!(t.length<=0)){var a=r.reduce(function(e,t){return Math.max(t.index,e)},-1/0);o(n.sortLayers(t,c.OrderDirection.Asc).map(function(e,t){return Object.assign({},e,{index:a+t+1})}))}},n.sendToBottom=function(){var e=n.props,t=e.selectedLayers,r=e.layers,o=e.onEditDisplayLayers;if(!(t.length<=0)){var a=r.reduce(function(e,t){return Math.min(t.index,e)},1/0);o(n.sortLayers(t,c.OrderDirection.Desc).map(function(e,t){return Object.assign({},e,{index:a-t-1})}))}},n.commands=[{title:"上移一层",icon:"icon-bring-upper",handler:n.bringToUpper},{title:"下移一层",icon:"icon-send-next",handler:n.sendToNext},{title:"置顶",icon:"icon-bring-front",handler:n.bringToFront},{title:"置底",icon:"icon-send-bottom",handler:n.sendToBottom}],n.changeLayerStatus=function(e){return function(t){var r=t.ctrlKey,o=t.metaKey,a=n.props,i=a.layersStatus,s=a.onSelectLayer,l=!r&&!o;s({id:e,selected:!i[e].selected,exclusive:l}),t.stopPropagation()}},n.getLayersByIndexDesc=function(e){return Array.isArray(e)?[].concat(r(e)).sort(function(e,t){return t.index-e.index}):[]},n.toggleCollapse=function(){var e=n.props.onCollapseChange,t=n.state.collapse;n.setState({collapse:!t},function(){e()})},n.state={collapse:!1},n}return i(t,e),s(t,[{key:"render",value:function(){var e=this,t=this.props,n=t.layers,r=t.layersStatus;if(this.state.collapse)return l.createElement("div",{className:f.collapse},l.createElement("h2",{className:f.formTitle},l.createElement(d,{title:"显示/隐藏图层"},l.createElement(u,{onClick:this.toggleCollapse,type:"left-square-o"}))),l.createElement("div",{className:f.title},h));var o=this.commands.map(function(e,t){return l.createElement("li",{key:t,onClick:e.handler},l.createElement(d,{placement:"bottom",title:e.title},l.createElement("i",{className:"iconfont "+e.icon})))}),a=this.getLayersByIndexDesc(n).map(function(t){return l.createElement("li",{key:t.id},l.createElement("i",{onClick:e.changeLayerStatus(t.id),className:"iconfont "+(r[t.id].selected?"icon-selected":"icon-unselected")}),l.createElement("span",{title:t.name},t.name))});return l.createElement("div",{className:f.left},l.createElement("h2",{className:f.formTitle},m,l.createElement(d,{title:"显示/隐藏图层"},l.createElement(u,{onClick:this.toggleCollapse,type:"right-square-o"}))),l.createElement("div",{className:f.commands},l.createElement("ul",{className:f.commandGroup},o)),l.createElement("div",{className:f.layerList},l.createElement("ul",null,a)))}}]),t}(l.Component);t.LayerList=g,t.default=g},"./app/containers/Display/components/LayerSelector.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&void 0!==arguments[0]?arguments[0]:p,t=arguments[1],n=t.type,a=t.payload,l=e.get("displays"),f=(e.get("currentDisplayCascadeSources"),e.get("currentLayers")),h=e.get("currentLayersInfo"),m=e.get("currentLayersOperationInfo"),g=e.get("editorBaselines");switch(n){case c.ActionTypes.LOAD_DISPLAYS_SUCCESS:return e.set("displays",a.displays);case c.ActionTypes.LOAD_DISPLAYS_FAILURE:return e;case c.ActionTypes.ADD_DISPLAY:return e.set("displayLoading",!0);case c.ActionTypes.ADD_DISPLAY_SUCCESS:return l.unshift(a.result),e.set("displays",l.slice()).set("displayLoading",!1);case c.ActionTypes.ADD_DISPLAY_FAILURE:return e.set("displayLoading",!1);case c.ActionTypes.EDIT_DISPLAY:return e.set("displayLoading",!0);case c.ActionTypes.EDIT_DISPLAY_SUCCESS:return l.splice(l.findIndex(function(e){return e.id===a.result.id}),1,a.result),e.set("displays",l.slice());case c.ActionTypes.EDIT_DISPLAY_FAILURE:return e.set("displayLoading",!1);case c.ActionTypes.EDIT_CURRENT_DISPLAY:return e.set("currentDisplayLoading",!0);case c.ActionTypes.EDIT_CURRENT_DISPLAY_SUCCESS:return e.set("currentDisplay",a.result).set("currentDisplayLoading",!1);case c.ActionTypes.EDIT_CURRENT_DISPLAY_FAILURE:return e.set("currentDisplayLoading",!1);case c.ActionTypes.EDIT_CURRENT_SLIDE:return e.set("currentSlideLoading",!0);case c.ActionTypes.EDIT_CURRENT_SLIDE_SUCCESS:return e.set("lastOperationType",c.ActionTypes.EDIT_CURRENT_SLIDE_SUCCESS).set("currentSlide",a.result).set("currentSlideLoading",!1);case c.ActionTypes.EDIT_CURRENT_SLIDE_FAILURE:return e.set("currentSlideLoading",!1);case c.ActionTypes.LOAD_DISPLAY_DETAIL:return e.set("currentDisplayLoading",!0).set("currentDisplayShareInfo","").set("currentDisplaySecretInfo","");case c.ActionTypes.LOAD_DISPLAY_DETAIL_SUCCESS:return e.set("currentDisplayLoading",!1).set("currentDisplay",a.display).set("currentDisplayCascadeSources",{}).set("currentSlide",a.slide).set("currentLayers",a.layers||[]).set("currentLayersInfo",a.layers.reduce(function(e,t){return e[t.id]=t.type===u.GraphTypes.Chart?{datasource:[],loading:!1,queryParams:{linkageFilters:[],globalFilters:[],params:[],linkageParams:[],globalParams:[],pagination:{}},interactId:"",rendered:!1,renderType:"rerender"}:{loading:!1,datasource:[]},e},{})).set("currentLayersOperationInfo",a.layers.reduce(function(e,t){return e[t.id]={selected:!1,dragging:!1,resizing:!1},e},{})).set("editorBaselines",{horizontal:{visible:!1,position:[0,0,0]},vertical:{visible:!1,position:[0,0,0]}});case c.ActionTypes.LOAD_DISPLAY_DETAIL_FAILURE:return e.set("currentDisplayLoading",!1).set("currentDisplay",null);case c.ActionTypes.DELETE_DISPLAY_SUCCESS:return e.set("displays",l.filter(function(e){return e.id!==a.id}));case c.ActionTypes.DELETE_DISPLAY_FAILURE:return e;case c.ActionTypes.ADD_DISPLAY_LAYERS_SUCCESS:return e.set("lastOperationType",c.ActionTypes.ADD_DISPLAY_LAYERS_SUCCESS).set("lastLayers",[].concat(o(a.result))).set("currentLayers",[].concat(o(f),o(a.result))).set("currentLayersInfo",Object.assign({},h,a.result.reduce(function(e,t){return e[t.id]=t.type===u.GraphTypes.Chart?{datasource:[],loading:!1,queryParams:{linkageFilters:[],globalFilters:[],params:[],linkageParams:[],globalParams:[],pagination:{}},interactId:"",rendered:!1,renderType:"rerender"}:{datasource:[],loading:!1},e},{}))).set("currentLayersOperationInfo",Object.assign({},m,a.result.reduce(function(e,t){e[t.id]={selected:!1,resizing:!1,dragging:!1}},{})));case c.ActionTypes.DELETE_DISPLAY_LAYERS_SUCCESS:return a.ids.forEach(function(e){delete h[e],delete m[e]}),e.set("lastOperationType",c.ActionTypes.DELETE_DISPLAY_LAYERS_SUCCESS).set("lastLayers",f.filter(function(e){return a.ids.indexOf(e.id.toString())>=0})).set("currentLayers",f.filter(function(e){return a.ids.indexOf(e.id.toString())<0})).set("currentLayersInfo",h).set("currentLayersOperationInfo",m);case c.ActionTypes.EDIT_DISPLAY_LAYERS_SUCCESS:var b=s.fromJS(f).toJS(),v=[];return a.result.forEach(function(e){v.push(b.find(function(t){return t.id===e.id})),b.splice(b.findIndex(function(t){return t.id===e.id}),1,e)}),e.set("lastOperationType",c.ActionTypes.EDIT_DISPLAY_LAYERS_SUCCESS).set("lastLayers",v).set("currentLayers",b);case d.LOAD_DATA_FROM_ITEM:return"display"!==a.vizType?e:e.set("currentLayersInfo",Object.assign({},h,r({},a.itemId,Object.assign({},h[a.itemId],{loading:!0,queryParams:{linkageFilters:a.params.linkageFilters,globalFilters:a.params.globalFilters,params:a.params.params,linkageParams:a.params.linkageParams,globalParams:a.params.globalParams}}))));case d.LOAD_DATA_FROM_ITEM_SUCCESS:return"display"!==a.vizType?e:e.set("currentLayersInfo",Object.assign({},h,r({},a.itemId,Object.assign({},h[a.itemId],{loading:!1,datasource:a.data,renderType:a.renderType}))));case d.LOAD_DATA_FROM_ITEM_FAILURE:return"display"!==a.vizType?e:e.set("currentLayersInfo",Object.assign({},h,r({},a.layerId,Object.assign({},h[a.layerId],{loading:!1}))));case c.ActionTypes.DRAG_SELECT_LAYER:return e.set("currentLayers",f.map(function(e){if(!m[e.id].selected||e.id===a.id)return e;var t=JSON.parse(e.params),n=t.positionX,r=t.positionY;return Object.assign({},e,{params:JSON.stringify(Object.assign({},t,{positionX:n+a.deltaX,positionY:r+a.deltaY}))})}));case c.ActionTypes.RESIZE_LAYERS:return e.set("currentLayersInfo",Object.entries(h).reduce(function(e,t){var n=i(t,2),r=n[0],s=n[1];return a.layerIds.indexOf(+r)>=0?e[r]=Object.assign({},s,{renderType:"resize",datasource:[].concat(o(s.datasource))}):e[r]=s,e},{}));case c.ActionTypes.SELECT_LAYER:return a.selected&&a.exclusive&&Object.keys(m).forEach(function(e){m[e].selected=!1}),e.set("currentLayersOperationInfo",Object.assign({},m,r({},a.id,Object.assign({},m[a.id],{selected:a.selected}))));case c.ActionTypes.CLEAR_LAYERS_SELECTION:return Object.keys(m).forEach(function(e){m[e].selected=!1}),e.set("currentLayersOperationInfo",m);case c.ActionTypes.TOGGLE_LAYERS_RESIZING_STATUS:return e.set("currentLayersOperationInfo",a.layerIds.reduce(function(e,t){return Object.assign({},e,r({},t,Object.assign({},e[t],{resizing:a.resizing})))},m));case c.ActionTypes.TOGGLE_LAYERS_DRAGGING_STATUS:return e.set("currentLayersOperationInfo",a.layerIds.reduce(function(e,t){return Object.assign({},e,r({},t,Object.assign({},e[t],{dragging:a.dragging})))},m));case c.ActionTypes.HIDE_EDITOR_VERTICAL_BASELINE:return e.set("editorBaselines",Object.assign({},g,{vertical:Object.assign({},g.vertical,{visible:!1})}));case c.ActionTypes.SHOW_EDITOR_VERTICAL_BASELINE:return e.set("editorBaselines",Object.assign({},g,{vertical:{visible:!0,position:[a.top,a.bottom,a.left]}}));case c.ActionTypes.HIDE_EDITOR_HORIZONTAL_BASELINE:return e.set("editorBaselines",Object.assign({},g,{horizontal:Object.assign({},g.horizontal,{visible:!1})}));case c.ActionTypes.SHOW_EDITOR_HORIZONTAL_BASELINE:return e.set("editorBaselines",Object.assign({},g,{horizontal:{visible:!0,position:[a.top,a.right,a.left]}}));case c.ActionTypes.COPY_SLIDE_LAYERS:return e.set("clipboardLayers",a.layers);case c.ActionTypes.PASTE_SLIDE_LAYERS_SUCCESS:return e.set("lastOperationType",c.ActionTypes.PASTE_SLIDE_LAYERS_SUCCESS).set("lastLayers",[].concat(o(a.result))).set("currentLayers",[].concat(o(f),o(a.result))).set("currentLayersInfo",Object.assign({},h,a.result.reduce(function(e,t){return e[t.id]=t.type===u.GraphTypes.Chart?{datasource:[],loading:!1,queryParams:{linkageFilters:[],globalFilters:[],params:[],linkageParams:[],globalParams:[],pagination:{}},interactId:"",rendered:!1,renderType:"rerender"}:{datasource:[],loading:!1},e},{}))).set("currentLayersOperationInfo",Object.assign({},m,a.result.reduce(function(e,t){e[t.id]={selected:!1,resizing:!1,dragging:!1}},{})));case c.ActionTypes.LOAD_DISPLAY_SHARE_LINK:return e.set("currentDisplayShareInfoLoading",!0);case c.ActionTypes.LOAD_DISPLAY_SHARE_LINK_SUCCESS:return e.set("currentDisplayShareInfo",a.shareInfo).set("currentDisplayShareInfoLoading",!1);case c.ActionTypes.LOAD_DISPLAY_SECRET_LINK_SUCCESS:return e.set("currentDisplaySecretInfo",a.secretInfo).set("currentDisplayShareInfoLoading",!1);case c.ActionTypes.LOAD_DISPLAY_SHARE_LINK_FAILURE:return e.set("currentDisplayShareInfoLoading",!1);default:return e}}var i=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();Object.defineProperty(t,"__esModule",{value:!0});var s=n("./node_modules/immutable/dist/immutable.js"),l=n("./node_modules/redux-undo/lib/index.js"),c=n("./app/containers/Display/constants.ts"),u=n("./app/containers/Display/components/util.ts"),d=n("./app/containers/Bizlogic/constants.ts"),p=s.fromJS({displays:[],currentDisplay:null,currentDisplayLoading:!1,currentDisplayShareInfo:"",currentDisplaySecretInfo:"",currentSlide:null,currentSlideLoading:!1,currentDisplayCascadeSources:{},currentLayers:[],currentLayersInfo:{},currentLayersOperationInfo:{},displayLoading:!1,clipboardLayers:[],lastOperationType:"",lastLayers:[],editorBaselines:{}});t.default=l.default(a,{filter:l.includeAction([c.ActionTypes.EDIT_CURRENT_SLIDE_SUCCESS,c.ActionTypes.ADD_DISPLAY_LAYERS_SUCCESS,c.ActionTypes.EDIT_DISPLAY_LAYERS_SUCCESS,c.ActionTypes.DELETE_DISPLAY_LAYERS_SUCCESS,c.ActionTypes.PASTE_SLIDE_LAYERS_SUCCESS]),undoType:c.ActionTypes.UNDO_OPERATION_SUCCESS,redoType:c.ActionTypes.REDO_OPERATION_SUCCESS})},"./app/containers/Display/sagas.ts":function(e,t,n){"use strict";function r(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload.projectId,o.prev=1,o.next=4,R.call(N.default,B.default.display+"?projectId="+t);case 4:return n=o.sent,r=F.readListAdapter(n),o.next=8,R.put(V.displaysLoaded(r));case 8:o.next=14;break;case 10:return o.prev=10,o.t0=o.catch(1),o.next=14,R.put(V.loadDisplaysFail(o.t0));case 14:case"end":return o.stop()}},_,this,[[1,10]])}function o(e){var t,n,r,o,a,i,s;return regeneratorRuntime.wrap(function(l){for(;;)switch(l.prev=l.next){case 0:return t=e.payload,n=t.display,r=t.resolve,l.prev=1,l.next=4,R.call(N.default,B.default.display,{method:"post",data:n});case 4:return o=l.sent,a=F.readObjectAdapter(o),i=a.id,s={displayId:i,index:0,config:JSON.stringify({slideParams:U.getDefaultSlideParams()})},l.next=10,R.call(N.default,B.default.display+"/"+i+"/slides",{method:"post",data:s});case 10:return l.next=12,R.put(V.displayAdded(a));case 12:r(),l.next=20;break;case 15:return l.prev=15,l.t0=l.catch(1),l.next=19,R.put(V.addDisplayFail());case 19:z.errorHandler(l.t0);case 20:case"end":return l.stop()}},y,this,[[1,15]])}function a(e){var t,n,r,o,a,i;return regeneratorRuntime.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload.id,s.prev=1,s.next=4,R.call(N.default,B.default.display+"/"+t+"/slides");case 4:return n=s.sent,r=F.readObjectAdapter(n),o=r.slides[0],delete r.slides,s.next=10,R.call(N.default,B.default.display+"/"+t+"/slides/"+o.id+"/widgets");case 10:return a=s.sent,i=F.readListAdapter(a),s.next=14,R.put(V.displayDetailLoaded(r,o,i));case 14:return s.abrupt("return",r);case 17:return s.prev=17,s.t0=s.catch(1),s.next=21,R.put(V.loadDisplaysFail(s.t0));case 21:case"end":return s.stop()}},A,this,[[1,17]])}function i(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,n=t.display,r=t.resolve,o.prev=1,o.next=4,R.call(N.default,B.default.display+"/"+n.id,{method:"put",data:n});case 4:return o.next=6,R.put(V.displayEdited(n));case 6:r&&r(),o.next=14;break;case 9:return o.prev=9,o.t0=o.catch(1),o.next=13,R.put(V.editDisplayFail(o.t0));case 13:z.errorHandler(o.t0);case 14:case"end":return o.stop()}},x,this,[[1,9]])}function s(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,n=t.display,r=t.resolve,o.prev=1,o.next=4,R.call(N.default,B.default.display+"/"+n.id,{method:"put",data:n});case 4:return o.next=6,R.put(V.currentDisplayEdited(n));case 6:r&&r(),o.next=14;break;case 9:return o.prev=9,o.t0=o.catch(1),o.next=13,R.put(V.editCurrentDisplayFail(o.t0));case 13:z.errorHandler(o.t0);case 14:case"end":return o.stop()}},w,this,[[1,9]])}function l(e){var t,n,r,o;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return t=e.payload,n=t.displayId,r=t.slide,o=t.resolve,a.prev=1,a.next=4,R.call(N.default,B.default.display+"/"+n+"/slides",{method:"put",data:[Object.assign({},r,{displayId:n})]});case 4:return a.next=6,R.put(V.currentSlideEdited(r));case 6:a.next=13;break;case 8:return a.prev=8,a.t0=a.catch(1),a.next=12,R.put(V.editCurrentSlideFail(a.t0));case 12:z.errorHandler(a.t0);case 13:case"end":return a.stop()}},j,this,[[1,8]])}function c(e){var t,n,r,o,a,i;return regeneratorRuntime.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload,n=t.cover,r=t.resolve,s.prev=1,o=new FormData,o.append("coverImage",new File([n],"coverImage.png")),s.next=6,R.call(N.default,B.default.display+"/upload/coverImage",{method:"post",data:o});case 6:return a=s.sent,i=F.readObjectAdapter(a),s.next=10,R.put(V.currentSlideCoverUploaded(i));case 10:r(i),s.next=18;break;case 13:return s.prev=13,s.t0=s.catch(1),s.next=17,R.put(V.uploadCurrentSlideCoverFail(s.t0));case 17:z.errorHandler(s.t0);case 18:case"end":return s.stop()}},E,this,[[1,13]])}function u(e){var t;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return t=e.payload.id,n.prev=1,n.next=4,R.call(N.default,B.default.display+"/"+t,{method:"delete"});case 4:return n.next=6,R.put(V.displayDeleted(t));case 6:n.next=13;break;case 8:return n.prev=8,n.t0=n.catch(1),n.next=12,R.put(V.deleteDisplayFail());case 12:z.errorHandler(n.t0);case 13:case"end":return n.stop()}},S,this,[[1,8]])}function d(e){var t,n,r,o,a,i;return regeneratorRuntime.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload,n=t.displayId,r=t.slideId,o=t.layers,s.prev=1,s.next=4,R.call(N.default,B.default.display+"/"+n+"/slides/"+r+"/widgets",{method:"post",data:o});case 4:return a=s.sent,i=F.readListAdapter(a),s.next=8,R.put(V.displayLayersAdded(i));case 8:return s.abrupt("return",i);case 11:return s.prev=11,s.t0=s.catch(1),s.next=15,R.put(V.addDisplayLayersFail());case 15:z.errorHandler(s.t0);case 16:case"end":return s.stop()}},k,this,[[1,11]])}function p(e){var t,n,r,o;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return t=e.payload,n=t.displayId,r=t.slideId,o=t.layers,a.prev=1,a.next=4,R.call(N.default,B.default.display+"/"+n+"/slides/"+r+"/widgets",{method:"put",data:o});case 4:return a.next=6,R.put(V.displayLayersEdited(o));case 6:a.next=13;break;case 8:return a.prev=8,a.t0=a.catch(1),a.next=12,R.put(V.editDisplayLayersFail());case 12:z.errorHandler(a.t0);case 13:case"end":return a.stop()}},C,this,[[1,8]])}function f(e){var t,n,r,o;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return t=e.payload,n=t.displayId,r=t.slideId,o=t.ids,a.prev=1,a.next=4,R.call(N.default,B.default.display+"/"+n+"/slides/"+r+"/widgets",{method:"delete",data:o});case 4:return a.next=6,R.put(V.displayLayersDeleted(o));case 6:a.next=13;break;case 8:return a.prev=8,a.t0=a.catch(1),a.next=12,R.put(V.deleteDisplayLayersFail());case 12:z.errorHandler(a.t0);case 13:case"end":return a.stop()}},T,this,[[1,8]])}function h(e){var t,n,r,o,a,i;return regeneratorRuntime.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return t=e.payload,n=t.displayId,r=t.slideId,o=t.layers,s.prev=1,s.next=4,R.call(N.default,B.default.display+"/"+n+"/slides/"+r+"/widgets",{method:"post",data:o});case 4:return a=s.sent,i=F.readListAdapter(a),s.next=8,R.put(V.slideLayersPasted(i));case 8:return s.abrupt("return",i);case 11:return s.prev=11,s.t0=s.catch(1),s.next=15,R.put(V.pasteSlideLayersFail());case 15:z.errorHandler(s.t0);case 16:case"end":return s.stop()}},M,this,[[1,11]])}function m(e){var t,n,r,o,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,n=t.id,r=t.authName,i.prev=1,i.next=4,R.call(N.default,{method:"get",url:B.default.display+"/"+n+"/share",params:{username:r}});case 4:if(o=i.sent,a=F.readListAdapter(o),!r){i.next=11;break}return i.next=9,R.put(V.displaySecretLinkLoaded(a));case 9:i.next=13;break;case 11:return i.next=13,R.put(V.displayShareLinkLoaded(a));case 13:i.next=20;break;case 15:return i.prev=15,i.t0=i.catch(1),i.next=19,R.put(V.loadDisplayShareLinkFail());case 19:z.errorHandler(i.t0);case 20:case"end":return i.stop()}},O,this,[[1,15]])}function g(e){var t,n,r,o,a,i,s;return regeneratorRuntime.wrap(function(l){for(;;)switch(l.prev=l.next){case 0:t=e.payload.currentState,n=t.displayId,r=t.slide,o=t.lastOperationType,a=t.lastLayers,i=r.id,l.prev=3,l.t0=o,l.next=l.t0===H.ActionTypes.EDIT_CURRENT_SLIDE_SUCCESS?7:l.t0===H.ActionTypes.ADD_DISPLAY_LAYERS_SUCCESS?10:l.t0===H.ActionTypes.PASTE_SLIDE_LAYERS_SUCCESS?10:l.t0===H.ActionTypes.DELETE_DISPLAY_LAYERS_SUCCESS?14:l.t0===H.ActionTypes.EDIT_DISPLAY_LAYERS_SUCCESS?17:20;break;case 7:return l.next=9,R.call(N.default,B.default.display+"/"+n+"/slides",{method:"put",data:[Object.assign({},r,{displayId:n})]});case 9:return l.abrupt("break",20);case 10:return s=a.map(function(e){return e.id}),l.next=13,R.call(N.default,B.default.display+"/"+n+"/slides/"+i+"/widgets",{method:"delete",data:s});case 13:return l.abrupt("break",20);case 14:return l.next=16,R.call(N.default,B.default.display+"/"+n+"/slides/"+i+"/widgets",{method:"post",data:a});case 16:return l.abrupt("break",20);case 17:return l.next=19,R.call(N.default,B.default.display+"/"+n+"/slides/"+i+"/widgets",{method:"put",data:a});case 19:return l.abrupt("break",20);case 20:return l.next=22,R.put(V.undoOperationDone());case 22:l.next=29;break;case 24:return l.prev=24,l.t1=l.catch(3),l.next=28,R.put(V.undoOperationFail());case 28:z.errorHandler(l.t1);case 29:case"end":return l.stop()}},L,this,[[3,24]])}function b(e){var t,n,r,o,a,i,s;return regeneratorRuntime.wrap(function(l){for(;;)switch(l.prev=l.next){case 0:t=e.payload.nextState,n=t.displayId,r=t.slide,o=t.lastOperationType,a=t.lastLayers,i=r.id,l.prev=3,l.t0=o,l.next=l.t0===H.ActionTypes.EDIT_CURRENT_SLIDE_SUCCESS?7:l.t0===H.ActionTypes.ADD_DISPLAY_LAYERS_SUCCESS?10:l.t0===H.ActionTypes.PASTE_SLIDE_LAYERS_SUCCESS?10:l.t0===H.ActionTypes.DELETE_DISPLAY_LAYERS_SUCCESS?13:l.t0===H.ActionTypes.EDIT_DISPLAY_LAYERS_SUCCESS?17:20;break;case 7:return l.next=9,R.call(N.default,B.default.display+"/"+n+"/slides",{method:"put",data:[Object.assign({},r,{displayId:n})]});case 9:return l.abrupt("break",20);case 10:return l.next=12,R.call(N.default,B.default.display+"/"+n+"/slides/"+i+"/widgets",{method:"post",data:a});case 12:return l.abrupt("break",20);case 13:return s=a.map(function(e){return e.id}),l.next=16,R.call(N.default,B.default.display+"/"+n+"/slides/"+i+"/widgets",{method:"delete",data:s});case 16:return l.abrupt("break",20);case 17:return l.next=19,R.call(N.default,B.default.display+"/"+n+"/slides/"+i+"/widgets",{method:"put",data:a});case 19:return l.abrupt("break",20);case 20:return l.next=22,R.put(V.redoOperationDone());case 22:l.next=29;break;case 24:return l.prev=24,l.t1=l.catch(3),l.next=28,R.put(V.redoOperationFail());case 28:z.errorHandler(l.t1);case 29:case"end":return l.stop()}},D,this,[[3,24]])}function v(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[I.takeLatest(H.ActionTypes.LOAD_DISPLAYS,r),I.takeEvery(H.ActionTypes.ADD_DISPLAY,o),I.takeLatest(H.ActionTypes.LOAD_DISPLAY_DETAIL,a),I.takeEvery(H.ActionTypes.EDIT_DISPLAY,i),I.takeEvery(H.ActionTypes.EDIT_CURRENT_DISPLAY,s),I.takeEvery(H.ActionTypes.EDIT_CURRENT_SLIDE,l),I.takeEvery(H.ActionTypes.UPLOAD_CURRENT_SLIDE_COVER,c),I.takeEvery(H.ActionTypes.DELETE_DISPLAY,u),I.takeEvery(H.ActionTypes.ADD_DISPLAY_LAYERS,d),I.takeEvery(H.ActionTypes.EDIT_DISPLAY_LAYERS,p),I.takeEvery(H.ActionTypes.DELETE_DISPLAY_LAYERS,f),I.takeEvery(H.ActionTypes.PASTE_SLIDE_LAYERS,h),I.takeLatest(H.ActionTypes.LOAD_DISPLAY_SHARE_LINK,m),I.takeEvery(H.ActionTypes.UNDO_OPERATION,g),I.takeEvery(H.ActionTypes.REDO_OPERATION,b)];case 2:case"end":return e.stop()}},P,this)}var _=regeneratorRuntime.mark(r),y=regeneratorRuntime.mark(o),A=regeneratorRuntime.mark(a),x=regeneratorRuntime.mark(i),w=regeneratorRuntime.mark(s),j=regeneratorRuntime.mark(l),E=regeneratorRuntime.mark(c),S=regeneratorRuntime.mark(u),k=regeneratorRuntime.mark(d),C=regeneratorRuntime.mark(p),T=regeneratorRuntime.mark(f),M=regeneratorRuntime.mark(h),O=regeneratorRuntime.mark(m),L=regeneratorRuntime.mark(g),D=regeneratorRuntime.mark(b),P=regeneratorRuntime.mark(v);Object.defineProperty(t,"__esModule",{value:!0});var I=n("./node_modules/redux-saga/es/index.js"),R=n("./node_modules/redux-saga/es/effects.js"),N=n("./app/utils/request.ts"),B=n("./app/utils/api.js"),F=n("./app/utils/asyncAdapter.js"),U=n("./app/containers/Display/components/util.ts"),z=n("./app/utils/util.ts"),H=n("./app/containers/Display/constants.ts"),V=n("./app/containers/Display/actions.ts");t.getDisplays=r,t.addDisplay=o,t.getDisplayDetail=a,t.editDisplay=i,t.editCurrentDisplay=s,t.editCurrentSlide=l,t.uploadCurrentSlideCover=c,t.deleteDisplay=u,t.addDisplayLayers=d,t.editDisplayLayers=p,t.deleteDisplayLayers=f,t.pasteSlideLayers=h,t.getDisplayShareLink=m,t.undoOperation=g,t.redoOperation=b,t.default=v},"./app/containers/Display/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("display")};t.selectDisplay=o;var a=function(){return r.createSelector(o,function(e){return e.present.get("displays")})};t.makeSelectDisplays=a;var i=function(){return r.createSelector(o,function(e){return e.present.get("currentDisplay")})};t.makeSelectCurrentDisplay=i;var s=function(){return r.createSelector(o,function(e){return e.present.get("currentSlide")})};t.makeSelectCurrentSlide=s;var l=function(){return r.createSelector(o,function(e){return e.present.get("currentLayers")})};t.makeSelectCurrentLayers=l;var c=function(){return r.createSelector(o,function(e){return e.present.get("currentLayersInfo")})};t.makeSelectCurrentLayersInfo=c;var u=function(){return r.createSelector(o,function(e){return e.present.get("currentLayersOperationInfo")})};t.makeSelectCurrentLayersOperationInfo=u;var d=function(){return r.createSelector(o,function(e){var t=e.present,n=t.get("currentLayersOperationInfo");return t.get("currentLayers").filter(function(e){return n[e.id].selected})})};t.makeSelectCurrentSelectedLayers=d;var p=function(){return r.createSelector(o,function(e){return e.present.get("clipboardLayers")})};t.makeSelectClipboardLayers=p;var f=function(){return r.createSelector(o,function(e){return e.present.get("currentDisplayShareInfo")})};t.makeSelectCurrentDisplayShareInfo=f;var h=function(){return r.createSelector(o,function(e){return e.present.get("currentDisplaySecretInfo")})};t.makeSelectCurrentDisplaySecretInfo=h;var m=function(){return r.createSelector(o,function(e){return e.present.get("currentDisplayShareInfoLoading")})};t.makeSelectCurrentDisplayShareInfoLoading=m;var g=function(){return r.createSelector(o,function(e){return e.past.length>0})};t.makeSelectCanUndo=g;var b=function(){return r.createSelector(o,function(e){return e.future.length>0})};t.makeSelectCanRedo=b;var v=function(){return r.createSelector(o,function(e){var t=e.present,n=t.get("currentDisplay");return{displayId:n&&n.id,slide:t.get("currentSlide"),layers:t.get("currentLayers"),lastOperationType:t.get("lastOperationType"),lastLayers:t.get("lastLayers")}})};t.makeSelectCurrentState=v;var _=function(){return r.createSelector(o,function(e){var t=e.future;if(0===t.length)return{};var n=t[0];return{displayId:n.get("currentDisplay").id,slide:n.get("currentSlide"),layers:n.get("currentLayers"),lastOperationType:n.get("lastOperationType"),lastLayers:n.get("lastLayers")}})};t.makeSelectNextState=_;var y=function(){return r.createSelector(o,function(e){return e.present.get("editorBaselines")})};t.makeSelectEditorBaselines=y},"./app/containers/LanguageProvider/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CHANGE_LOCALE="app/LanguageToggle/CHANGE_LOCALE"},"./app/containers/LanguageProvider/index.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:s,t=arguments[1];switch(t.type){case a.CHANGE_LOCALE:return e.set("locale",t.locale);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/immutable/dist/immutable.js"),a=n("./app/containers/LanguageProvider/constants.ts"),i=n("./app/containers/App/constants.ts"),s=o.fromJS({locale:i.DEFAULT_LOCALE});t.default=r},"./app/containers/LanguageProvider/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("language")};t.selectLanguage=o;var a=function(){return r.createSelector(o,function(e){return e.get("locale")})};t.makeSelectLocale=a},"./app/containers/Login/Login.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Login/Login.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Login/LoginForm.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n-1});n.setState({organizationMembers:t&&t.length?o:n.props.organizationMembers})},n.searchMember=function(){n.forceUpdate(function(){n.MemberForm.validateFieldsAndScroll(function(e,t){if(!e){var r=t.searchValue;n.props.handleSearchMember(r)}})})},n.hideChangeRoleForm=function(){n.setState({changeRoleFormVisible:!1,changeRoleModalLoading:!1},function(){n.ChangeRoleForm.resetFields()})},n.toUserProfile=function(e){return function(){var t=e.id;t&&n.props.toThatUserProfile("account/profile/"+t)}},n.state={formKey:0,category:"",changeRoleFormCategory:"",currentMember:{},formVisible:!1,modalLoading:!1,changeRoleFormVisible:!1,changeRoleModalLoading:!1,organizationMembers:[]},n}return a(t,e),i(t,[{key:"componentDidMount",value:function(){var e=this.props.organizationMembers;e&&this.setState({organizationMembers:e})}},{key:"componentWillReceiveProps",value:function(e){var t=this.props.organizationMembers,n=e.organizationMembers;n&&n!==t&&this.setState({organizationMembers:n})}},{key:"render",value:function(){var e=this,t=this.state,n=t.formVisible,r=t.category,o=t.modalLoading,a=t.changeRoleFormVisible,i=t.changeRoleModalLoading,j=t.changeRoleFormCategory,E=t.organizationMembers,S=!1;E&&E.length&&E.forEach(function(e){S=!(!e||!e.user||1!==e.user.role)});var k=this.props,C=k.inviteMemberList,T=k.currentOrganization,M=void 0;T&&(M=A.default(T,"")(d));var O=s.createElement(u,{placement:"bottom",title:"邀请"},s.createElement(M,{size:"large",type:"primary",icon:"plus",onClick:this.showMemberForm("member")})),L=[];return L=T&&1===T.role?[{title:"Name",dataIndex:"user",key:"user",render:function(t){return s.createElement("div",{className:g.avatarWrapper},s.createElement(_.default,{path:t.avatar,size:"small",enlarge:!0}),s.createElement("span",{className:g.avatarName,onClick:e.toUserProfile(t)},t.username))}},{title:"role",dataIndex:"user",key:"userKey",render:function(e){return s.createElement("span",null,1===e.role?"Owner":"Member")}},{title:"team",dataIndex:"teamNum",key:"teamNum"},{title:"settings",dataIndex:"user",className:S?b.hide:"",key:"settings",render:function(t,n){return 1===t.role?"":s.createElement("span",null,s.createElement(f,{title:"确定删除此成员吗?",placement:"bottom",onConfirm:e.removeMemberForm(t,n)},x),w,s.createElement("a",{href:"javascript:;",onClick:e.showChangeRoleForm("orgMember",n)},"改变角色"))}}]:[{title:"Name",dataIndex:"user",key:"user",render:function(t){return s.createElement("div",{className:g.avatarWrapper},s.createElement(_.default,{path:t.avatar,size:"small",enlarge:!0}),s.createElement("span",{className:g.avatarName,onClick:e.toUserProfile(t)},t.username))}},{title:"role",dataIndex:"user",key:"userKey",render:function(e){return s.createElement("span",null,1===e.role?"Owner":"Member")}},{title:"team",dataIndex:"teamNum",key:"teamNum"}],s.createElement("div",{className:g.listWrapper},s.createElement(l,null,s.createElement(c,{span:16},s.createElement(p.Search,{size:"large",placeholder:"placeholder",onChange:this.search})),s.createElement(c,{span:1,offset:7},O)),s.createElement(l,null,s.createElement("div",{className:g.tableWrap},s.createElement(m,{bordered:!0,columns:L,dataSource:E}))),s.createElement(h,{key:this.state.formKey,title:null,visible:n,footer:null,onCancel:this.hideMemberForm},s.createElement(v.default,{category:r,submitLoading:o,inviteMemberList:C,handleSearchMember:this.searchMember,organizationOrTeam:this.props.currentOrganization,ref:function(t){e.MemberForm=t},addHandler:this.add})),s.createElement(h,{title:null,visible:a,footer:null,onCancel:this.hideChangeRoleForm},s.createElement(y.default,{category:j,organizationOrTeam:this.props.currentOrganization,submitLoading:i,ref:function(t){e.ChangeRoleForm=t},changeHandler:this.changRole})))}}]),t}(s.PureComponent);t.MemberList=j,t.default=j},"./app/containers/Organizations/component/OrganizationForm.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=Object.assign||function(e){for(var t=1;t-1}),{keyword:t,pageNum:n.state.pageNum,pageSize:n.state.pageSize});n.props.getOrganizationProjectsByPagination(o)},n.hideProjectForm=function(){n.setState({formVisible:!1,modalLoading:!1},function(){n.ProjectForm.props.form.resetFields()})},n.checkUniqueName=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2],o=n.props;(0,o.onCheckUniqueName)("project",{name:t,orgId:o.organizationId,id:(0,n.ProjectForm.props.form.getFieldsValue)().id},function(){r()},function(e){r(e)})},n.onModalOk=function(){var e=n.props,t=e.organizationId,r=e.currentOrganization,o=e.onAddProject,a=e.onEditProject,i=e.onLoadOrganizationProjects,s=n.state.formType;n.ProjectForm.props.form.validateFieldsAndScroll(function(e,l){e||(n.setState({modalLoading:!0}),l.visibility="true"===l.visibility,"organizationProject"===s?o(Object.assign({},l,{orgId:t},{pic:""+Math.ceil(19*Math.random())}),function(){n.hideProjectForm()}):"edit"===s&&a(Object.assign({},l,{orgId:Number(l.orgId)}),function(){i({id:r.id}),n.hideProjectForm()}))})},n.onShowSizeChange=function(e,t){n.setState({pageNum:e,pageSize:t},function(){var e={pageNum:n.state.pageNum,pageSize:n.state.pageSize};n.props.getOrganizationProjectsByPagination(e)})},n.onPaginationChange=function(e){n.setState({pageNum:e},function(){var e={pageNum:n.state.pageNum,pageSize:n.state.pageSize};n.props.getOrganizationProjectsByPagination(e)})},n.state={formType:"",formVisible:!1,modalLoading:!1,pageNum:1,pageSize:10,organizationProjects:!1},n}return a(t,e),i(t,[{key:"componentWillReceiveProps",value:function(e){var t=this.props.organizationProjects,n=e.organizationProjects;n&&n!==t&&this.setState({organizationProjects:n})}},{key:"render",value:function(){var e=this,t=this.state,n=t.formVisible,r=t.formType,o=t.modalLoading,a=t.organizationProjects,i=this.props,y=i.currentOrganization,A=i.organizationProjectsDetail,x=(i.onCheckUniqueName,i.collectProjects),w=void 0;y&&(w=v.default(y,_.CREATE_ORGANIZATION_PROJECT)(d));var j=s.createElement(u,{placement:"bottom",title:"创建"},s.createElement(w,{size:"large",type:"primary",icon:"plus",onClick:this.showProjectForm("organizationProject")})),E=void 0;A&&(E=s.createElement(p,{showSizeChanger:!0,defaultCurrent:2,total:A.total,onShowSizeChange:this.onShowSizeChange,onChange:this.onPaginationChange,defaultPageSize:10,pageSizeOptions:["10","15","20"],current:this.state.pageNum}));var S=Array.isArray(a)?a.map(function(t,n){return s.createElement(g.default,{unStar:e.props.unStar,userList:e.props.userList,starUser:e.props.starUser,collectProjects:x,currentOrganization:y,key:n,loginUser:e.props.loginUser,options:t,toProject:e.props.toProject,deleteProject:e.props.deleteProject,showEditProjectForm:e.showEditProjectForm("edit",t),onClickCollectProjects:e.props.onClickCollectProjects,onLoadCollectProjects:e.props.onLoadCollectProjects})}):"";return s.createElement("div",{className:h.listWrapper},s.createElement(l,null,s.createElement(c,{span:16},s.createElement(f.Search,{size:"large",placeholder:"Project 名称",onChange:this.onSearchProject})),s.createElement(c,{span:1,offset:7},j)),s.createElement(l,null,s.createElement(c,{span:24},S)),s.createElement(l,{type:"flex",justify:"end",style:{marginTop:"16px"}},s.createElement(c,null,E)),s.createElement(m,{title:null,visible:n,footer:null,onCancel:this.hideProjectForm},s.createElement(b.default,{type:r,modalLoading:o,onModalOk:this.onModalOk,onCheckUniqueName:this.checkUniqueName,wrappedComponentRef:this.refHandlers.ProjectForm})))}}]),t}(s.PureComponent);t.ProjectList=y,t.default=y},"./app/containers/Organizations/component/Setting.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2],o=n.props;(0,o.onCheckUniqueName)("team",{name:t,orgId:o.currentOrganization.id,id:null},function(){r()},function(e){r(e)})},n.onModalOk=function(){var e=n.props.currentOrganization;n.TeamForm.validateFieldsAndScroll(function(t,r){t||n.props.onAddTeam(Object.assign({},r,{visibility:!!r.visibility},{orgId:e.id,pic:""+Math.ceil(19*Math.random()),config:"{}"}),function(){var t=e.id;n.props.loadOrganizationTeams&&(n.props.loadOrganizationTeams(Number(t)),n.props.onLoadOrganizationDetail(Number(t)),n.props.onLoadTeams()),n.hideTeamForm()})})},n.hideTeamForm=function(){n.setState({formVisible:!1},function(){n.TeamForm.resetFields()})},n.organizationTypeChange=function(){return new Promise(function(e){n.forceUpdate(function(){return e()})})},n.enterTeam=function(e,t){return function(){var e=t.id;e&&n.props.toThatTeam("account/team/"+e)}},n.isEmptyObj=function(e){for(var t in e)if(e.hasOwnProperty(t))return!1;return!0},n.filter=function(e){return Array.isArray(e)?(e.forEach(function(e){n.isEmptyObj(e)||(e.key="key"+e.id),e.children&&e.children.length>0&&n.filter(e.children),e.children&&0===e.children.length&&delete e.children}),e):e},n.state={formVisible:!1},n}return a(t,e),s(t,[{key:"componentWillMount",value:function(){(0,this.props.onLoadTeams)()}},{key:"render",value:function(){var e=this,t=this.state.formVisible,n=this.props,r=n.organizationTeams,o=n.currentOrganization,a=n.currentOrganization.id,i=n.teamModalLoading;this.filter(r);var s=void 0;o&&(s=E.default(o,"")(b));var c=l.createElement(g,{placement:"bottom",title:"创建"},l.createElement(s,{size:"large",type:"primary",icon:"plus",onClick:this.showTeamForm()})),u=[{title:"Name",dataIndex:"name",key:"name",width:"40%",render:function(t,n){return l.createElement("a",{href:"javascript:;",onClick:e.enterTeam(t,n),className:y.avatarName},t)}},{title:"Member",dataIndex:"users",key:"users",width:"30%",render:function(e){return l.createElement("div",{className:y.avatarWrapper},e.map(function(e,t){return l.createElement(g,{key:"tooltip"+t,placement:"topRight",title:e.username},l.createElement("span",null,l.createElement(j.default,{key:t,path:e.avatar,size:"small",enlarge:!0})))}),l.createElement("span",{className:y.avatarName},(e?e.length:0)+"members"))}}];return l.createElement("div",{className:y.listWrapper},l.createElement(h,null,l.createElement(m,{span:1,offset:23},c)),l.createElement(h,null,l.createElement("div",{className:y.tableWrap},l.createElement(v,{bordered:!0,columns:u,dataSource:r}))),l.createElement(_,{title:null,visible:t,footer:null,onCancel:this.hideTeamForm},l.createElement(d.default,{orgId:a,teams:this.props.teams,onModalOk:this.onModalOk,modalLoading:i,onOrganizationTypeChange:this.organizationTypeChange,onCheckUniqueName:this.checkNameUnique,ref:function(t){e.TeamForm=t}})))}}]),t}(l.PureComponent);t.TeamList=k;var C=u.createStructuredSelector({teams:p.makeSelectTeams(),loginUser:c.makeSelectLoginUser(),teamModalLoading:S.makeSelectTeamModalLoading()});t.mapDispatchToProps=i,t.default=f.connect(C,i)(k)},"./app/containers/Organizations/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LOAD_ORGANIZATIONS="davinci/Organization/LOAD_ORGANIZATIONS",t.LOAD_ORGANIZATIONS_SUCCESS="davinci/Organization/LOAD_ORGANIZATIONS_SUCCESS",t.LOAD_ORGANIZATIONS_FAILURE="davinci/Organization/LOAD_ORGANIZATIONS_FAILURE",t.ADD_ORGANIZATION="davinci/Organization/ADD_ORGANIZATION",t.ADD_ORGANIZATION_SUCCESS="davinci/Organization/ADD_ORGANIZATION_SUCCESS",t.ADD_ORGANIZATION_FAILURE="davinci/Organization/ADD_ORGANIZATION_FAILURE",t.EDIT_ORGANIZATION="davinci/Organization/EDIT_ORGANIZATION",t.EDIT_ORGANIZATION_SUCCESS="davinci/Organization/EDIT_ORGANIZATION_SUCCESS",t.EDIT_ORGANIZATION_FAILURE="davinci/Organization/EDIT_ORGANIZATION_FAILURE",t.DELETE_ORGANIZATION="davinci/Organization/DELETE_ORGANIZATION",t.DELETE_ORGANIZATION_SUCCESS="davinci/Organization/DELETE_ORGANIZATION_SUCCESS",t.DELETE_ORGANIZATION_FAILURE="davinci/Organization/DELETE_ORGANIZATION_FAILURE",t.LOAD_ORGANIZATION_DETAIL="davinci/Organization/LOAD_ORGANIZATION_DETAIL",t.LOAD_ORGANIZATION_DETAIL_SUCCESS="davinci/Organization/LOAD_ORGANIZATION_DETAIL_SUCCESS",t.LOAD_ORGANIZATION_DETAIL_FAILURE="davinci/Organization/LOAD_ORGANIZATION_DETAIL_FAILURE",t.LOAD_ORGANIZATIONS_PROJECTS="davinci/Organization/LOAD_ORGANIZATIONS_PROJECTS",t.LOAD_ORGANIZATIONS_PROJECTS_SUCCESS="davinci/Organization/LOAD_ORGANIZATIONS_PROJECTS_SUCCESS",t.LOAD_ORGANIZATIONS_PROJECTS_FAILURE="davinci/Organization/LOAD_ORGANIZATIONS_PROJECTS_FAILURE",t.LOAD_ORGANIZATIONS_MEMBERS="davinci/Organization/LOAD_ORGANIZATIONS_MEMBERS",t.LOAD_ORGANIZATIONS_MEMBERS_SUCCESS="davinci/Organization/LOAD_ORGANIZATIONS_MEMBERS_SUCCESS",t.LOAD_ORGANIZATIONS_MEMBERS_FAILURE="davinci/Organization/LOAD_ORGANIZATIONS_MEMBERS_FAILURE",t.LOAD_ORGANIZATIONS_TEAMS="davinci/Organization/LOAD_ORGANIZATIONS_TEAMS",t.LOAD_ORGANIZATIONS_TEAMS_SUCCESS="davinci/Organization/LOAD_ORGANIZATIONS_TEAMS_SUCCESS",t.LOAD_ORGANIZATIONS_TEAMS_FAILURE="davinci/Organization/LOAD_ORGANIZATIONS_TEAMS_FAILURE",t.ADD_TEAM="davinci/Organization/ADD_TEAM",t.ADD_TEAM_SUCCESS="davinci/Organization/ADD_TEAM_SUCCESS",t.ADD_TEAM_FAILURE="davinci/Organization/ADD_TEAM_FAILURE",t.SEARCH_MEMBER="davinci/Organization/SEARCH_MEMBER",t.SEARCH_MEMBER_SUCCESS="davinci/Organization/SEARCH_MEMBER_SUCCESS",t.SEARCH_MEMBER_FAILURE="davinci/Organization/SEARCH_MEMBER_FAILURE",t.INVITE_MEMBER="davinci/Organization/INVITE_MEMBER",t.INVITE_MEMBER_SUCCESS="davinci/Organization/INVITE_MEMBER_SUCCESS",t.INVITE_MEMBER_FAILURE="davinci/Organization/INVITE_MEMBER_FAILURE",t.DELETE_ORGANIZATION_MEMBER="davinci/Organization/DELETE_ORGANIZATION_MEMBER",t.DELETE_ORGANIZATION_MEMBER_SUCCESS="davinci/Organization/DELETE_ORGANIZATION_MEMBER_SUCCESS",t.DELETE_ORGANIZATION_MEMBER_ERROR="davinci/Organization/DELETE_ORGANIZATION_MEMBER_ERROR",t.CHANGE_MEMBER_ROLE_ORGANIZATION="davinci/Organization/CHANGE_MEMBER_ROLE_ORGANIZATION",t.CHANGE_MEMBER_ROLE_ORGANIZATION_SUCCESS="davinci/Organization/CHANGE_MEMBER_ROLE_ORGANIZATION_SUCCESS",t.CHANGE_MEMBER_ROLE_ORGANIZATION_ERROR="davinci/Organization/CHANGE_MEMBER_ROLE_ORGANIZATION_ERROR"},"./app/containers/Organizations/index.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{onLoadOrganizations:function(){return e(v.loadOrganizations())},onAddOrganization:function(t,n){return e(v.addOrganization(t,n))},onCheckUniqueName:function(t,n,r,o){return e(S.checkNameUniqueAction(t,n,r,o))}}}var s=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2];(0,n.props.onCheckUniqueName)("organization",{name:t,id:(0,n.OrganizationForm.getFieldsValue)().id},function(){r()},function(e){r(e)})},n.toOrganization=function(e){return function(){n.props.router.push("/account/organization/"+e.id)}},n.showOrganizationForm=function(){return function(e){e.stopPropagation(),n.setState({formVisible:!0})}},n.onModalOk=function(){n.OrganizationForm.validateFieldsAndScroll(function(e,t){e||(n.setState({modalLoading:!0}),n.props.onAddOrganization(Object.assign({},t,{config:"{}"}),function(){n.hideOrganizationForm()}))})},n.hideOrganizationForm=function(){n.setState({formVisible:!1,modalLoading:!1},function(){n.OrganizationForm.resetFields()})},n.state={formVisible:!1,modalLoading:!1},n}return a(t,e),s(t,[{key:"componentWillMount",value:function(){(0,this.props.onLoadOrganizations)()}},{key:"render",value:function(){var e=this,t=this.state,n=t.formVisible,r=t.modalLoading,o=this.props.organizations;console.log({organizations:o});var a=o?o.map(function(t){return l.createElement("div",{className:A.groupList,key:t.id,onClick:e.toOrganization(t)},l.createElement("div",{className:A.orgHeader},l.createElement("div",{className:A.avatar},l.createElement(E.default,{path:t.avatar,enlarge:!1,size:"small"}),l.createElement("div",{className:A.name},l.createElement("div",{className:A.title},t.name,1===t.role?l.createElement("span",{className:A.nameTag},"Owner"):null),l.createElement("div",{className:A.desc},t.description)))),l.createElement("div",{className:A.setting},k))}):"";return l.createElement(m.default,null,l.createElement(m.default.Header,null,l.createElement(m.default.Title,null,l.createElement(d,null,l.createElement(p,{span:20},l.createElement(j,{className:w.breadcrumb},C)),l.createElement(p,{span:1,offset:3},l.createElement(u,{type:"plus-circle-o",className:A.create,onClick:this.showOrganizationForm()}))))),a,l.createElement(f,{title:null,visible:n,footer:null,onCancel:this.hideOrganizationForm},l.createElement(x.default,{ref:function(t){e.OrganizationForm=t},modalLoading:r,onModalOk:this.onModalOk,onCheckUniqueName:this.checkNameUnique})))}}]),t}(l.PureComponent);t.Organizations=T;var M=_.createStructuredSelector({organizations:y.makeSelectOrganizations(),loginUser:b.makeSelectLoginUser()});t.mapDispatchToProps=i;var O=c.connect(M,i);t.default=g.compose(O)(T)},"./app/containers/Organizations/reducer.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s,t=arguments[1],n=t.type,r=t.payload,o=e.get("organizations"),l=e.get("currentOrganizationMembers"),c=e.get("currentOrganizationProjects");switch(n){case a.DELETE_ORGANIZATION_MEMBER_SUCCESS:return l?e.set("currentTeamMembers",l.filter(function(e){return e.id!==r.id})):e;case a.LOAD_ORGANIZATIONS_PROJECTS_SUCCESS:return e.set("currentOrganizationProjects",r.projects.list).set("currentOrganizationProjectsDetail",r.projects);case a.LOAD_ORGANIZATIONS_MEMBERS_SUCCESS:return e.set("currentOrganizationMembers",r.members);case a.LOAD_ORGANIZATIONS_TEAMS_SUCCESS:return e.set("currentOrganizationTeams",r.teams);case a.LOAD_ORGANIZATIONS_SUCCESS:return e.set("organizations",r.organizations);case i.ADD_PROJECT_SUCCESS:return c?(c.unshift(r.result),e.set("currentOrganizationProjects",c.slice())):e.set("currentOrganizationProjects",[r.result]);case i.DELETE_PROJECT_SUCCESS:return c?e.set("currentOrganizationProjects",c.filter(function(e){return e.id!==r.id})):e;case a.LOAD_ORGANIZATIONS_FAILURE:return e;case a.ADD_ORGANIZATION_SUCCESS:return o?(o.unshift(r.result),e.set("organizations",o.slice())):e.set("organizations",[r.result]);case a.ADD_ORGANIZATION_FAILURE:return e;case a.EDIT_ORGANIZATION_SUCCESS:return o.splice(o.findIndex(function(e){return e.id===r.result.id}),1,r.result),e.set("organizations",o.slice());case a.DELETE_ORGANIZATION_SUCCESS:return e.set("organizations",o.filter(function(e){return e.id!==r.id}));case a.LOAD_ORGANIZATION_DETAIL:return e.set("currentOrganizationLoading",!0);case a.LOAD_ORGANIZATION_DETAIL_SUCCESS:return e.set("currentOrganizationLoading",!1).set("currentOrganization",r.organization);case a.LOAD_ORGANIZATION_DETAIL_FAILURE:return e;case a.ADD_TEAM:return e.set("teamModalLoading",!0);case a.ADD_TEAM_SUCCESS:case a.ADD_TEAM_FAILURE:return e.set("teamModalLoading",!1);case a.SEARCH_MEMBER_SUCCESS:return e.set("inviteMemberLists",r.result);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/immutable/dist/immutable.js"),a=n("./app/containers/Organizations/constants.ts"),i=n("./app/containers/Projects/constants.ts"),s=o.fromJS({organizations:[],currentOrganization:{},currentOrganizationLoading:!1,currentOrganizationProjects:[],currentOrganizationProjectsDetail:!1,currentOrganizationTeams:[],currentOrganizationMembers:[],inviteMemberLists:[],teamModalLoading:!1});t.default=r},"./app/containers/Organizations/sagas.ts":function(e,t,n){"use strict";function r(){var e,t;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,L.call(R.default,N.default.organizations);case 3:return e=n.sent,t=B.readListAdapter(e),n.next=7,L.put(P.organizationsLoaded(t));case 7:n.next=14;break;case 9:return n.prev=9,n.t0=n.catch(0),n.next=13,L.put(P.loadOrganizationsFail());case 13:F.errorHandler(n.t0);case 14:case"end":return n.stop()}},b,this,[[0,9]])}function o(e){var t,n,r,o,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,n=t.organization,r=t.resolve,i.prev=1,i.next=4,L.call(R.default,{method:"post",url:N.default.organizations,data:n});case 4:return o=i.sent,a=B.readListAdapter(o),i.next=8,L.put(P.organizationAdded(a));case 8:r(),i.next=16;break;case 11:return i.prev=11,i.t0=i.catch(1),i.next=15,L.put(P.addOrganizationFail());case 15:F.errorHandler(i.t0);case 16:case"end":return i.stop()}},v,this,[[1,11]])}function a(e){var t;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return t=e.payload.organization,n.prev=1,n.next=4,L.call(R.default,{method:"put",url:N.default.organizations+"/"+t.id,data:t});case 4:return n.next=6,L.put(P.organizationEdited(t));case 6:I.success("success"),n.next=14;break;case 9:return n.prev=9,n.t0=n.catch(1),n.next=13,L.put(P.editOrganizationFail());case 13:F.errorHandler(n.t0);case 14:case"end":return n.stop()}},_,this,[[1,9]])}function i(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,n=t.id,r=t.resolve,o.prev=1,o.next=4,L.call(R.default,{method:"delete",url:N.default.organizations+"/"+n});case 4:return o.next=6,L.put(P.organizationDeleted(n));case 6:r(),o.next=14;break;case 9:return o.prev=9,o.t0=o.catch(1),o.next=13,L.put(P.deleteOrganizationFail());case 13:F.errorHandler(o.t0);case 14:case"end":return o.stop()}},y,this,[[1,9]])}function s(e){var t,n,r=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,L.call(R.default,N.default.organizations+"/"+r.id);case 3:return t=e.sent,n=B.readListAdapter(t),e.next=7,L.put(P.organizationDetailLoaded(n));case 7:e.next=12;break;case 9:e.prev=9,e.t0=e.catch(0),F.errorHandler(e.t0);case 12:case"end":return e.stop()}},A,this,[[0,9]])}function l(e){var t,n,r,o,a,i,s,l,c=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=c.param,n=t.id,r=t.keyword,o=t.pageNum,a=t.pageSize,i=r?N.default.organizations+"/"+n+"/projects?keyword="+r+"&pageNum=1&pageSize="+(a||10):N.default.organizations+"/"+n+"/projects/?pageNum="+(o||1)+"&pageSize="+(a||10),e.prev=2,e.next=5,L.call(R.default,{method:"get",url:i});case 5:return s=e.sent,l=B.readListAdapter(s),e.next=9,L.put(P.organizationsProjectsLoaded(l));case 9:e.next=16;break;case 11:return e.prev=11,e.t0=e.catch(2),e.next=15,L.put(P.loadOrganizationsProjectsFail());case 15:F.errorHandler(e.t0);case 16:case"end":return e.stop()}},x,this,[[2,11]])}function c(e){var t,n,r,o=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=o.id,e.prev=1,e.next=4,L.call(R.default,N.default.organizations+"/"+t+"/members");case 4:return n=e.sent,r=B.readListAdapter(n),e.next=8,L.put(P.organizationsMembersLoaded(r));case 8:e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,L.put(P.loadOrganizationsMembersFail());case 14:F.errorHandler(e.t0);case 15:case"end":return e.stop()}},w,this,[[1,10]])}function u(e){var t,n,r,o=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=o.id,e.prev=1,e.next=4,L.call(R.default,N.default.organizations+"/"+t+"/teams");case 4:return n=e.sent,r=B.readListAdapter(n),e.next=8,L.put(P.organizationsTeamsLoaded(r));case 8:e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,L.put(P.loadOrganizationsTeamsFail());case 14:F.errorHandler(e.t0);case 15:case"end":return e.stop()}},j,this,[[1,10]])}function d(e){var t,n,r,o,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,n=t.team,r=t.resolve,i.prev=1,i.next=4,L.call(R.default,{method:"post",url:N.default.teams,data:n});case 4:return o=i.sent,a=B.readListAdapter(o),i.next=8,L.put(P.teamAdded(a));case 8:r(),i.next=16;break;case 11:return i.prev=11,i.t0=i.catch(1),i.next=15,L.put(P.addTeamFail());case 15:F.errorHandler(i.t0);case 16:case"end":return i.stop()}},E,this,[[1,11]])}function p(e){var t,n,r,o,a,i=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=i.keyword,e.prev=1,e.next=4,L.call(R.default,{method:"get",url:N.default.user+"?keyword="+t});case 4:return n=e.sent,r=n&&n.header&&n.header.msg?n.header.msg:"",o=n&&n.header&&n.header.code?n.header.code:"",a=B.readListAdapter(n),e.next=10,L.put(P.memberSearched(a));case 10:e.next=17;break;case 12:return e.prev=12,e.t0=e.catch(1),e.next=16,L.put(P.searchMemberFail());case 16:F.errorHandler(e.t0);case 17:case"end":return e.stop()}},S,this,[[1,12]])}function f(e){var t,n,r,o,a=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=a.orgId,n=a.memId,e.prev=1,e.next=4,L.call(R.default,{method:"post",url:N.default.organizations+"/"+t+"/member/"+n,data:{orgId:t,memId:n}});case 4:return r=e.sent,o=B.readListAdapter(r),e.next=8,L.put(P.inviteMemberSuccess(o));case 8:e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,L.put(P.inviteMemberFail());case 14:F.errorHandler(e.t0);case 15:case"end":return e.stop()}},k,this,[[1,10]])}function h(e){var t,n,r,o=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=o.relationId,n=o.resolve,e.prev=1,e.next=4,L.call(R.default,{url:N.default.organizations+"/member/"+t,method:"delete"});case 4:return r=e.sent,e.next=7,L.put(P.organizationMemberDeleted(t));case 7:n(),e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,L.put(P.deleteOrganizationMemberFail());case 14:F.errorHandler(e.t0);case 15:case"end":return e.stop()}},C,this,[[1,10]])}function m(e){var t,n,r,o,a,i=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=i.relationId,n=i.newRole,r=i.resolve,e.prev=1,e.next=4,L.call(R.default,{url:N.default.organizations+"/member/"+t,method:"put",data:{role:n}});case 4:return o=e.sent,a=B.readListAdapter(o),e.next=8,L.put(P.organizationMemberRoleChanged(t,a));case 8:return e.next=10,r();case 10:e.next=17;break;case 12:return e.prev=12,e.t0=e.catch(1),e.next=16,L.put(P.changeOrganizationMemberRoleFail());case 16:F.errorHandler(e.t0);case 17:case"end":return e.stop()}},T,this,[[1,12]])}function g(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[O.takeLatest(D.LOAD_ORGANIZATIONS,r),O.takeEvery(D.ADD_ORGANIZATION,o),O.takeEvery(D.EDIT_ORGANIZATION,a),O.takeEvery(D.DELETE_ORGANIZATION,i),O.takeLatest(D.LOAD_ORGANIZATION_DETAIL,s),O.takeLatest(D.LOAD_ORGANIZATIONS_MEMBERS,c),O.takeLatest(D.LOAD_ORGANIZATIONS_PROJECTS,l),O.takeLatest(D.LOAD_ORGANIZATIONS_TEAMS,u),O.takeEvery(D.ADD_TEAM,d),O.takeLatest(D.INVITE_MEMBER,f),O.throttle(600,D.SEARCH_MEMBER,p),O.takeLatest(D.DELETE_ORGANIZATION_MEMBER,h),O.takeLatest(D.CHANGE_MEMBER_ROLE_ORGANIZATION,m)];case 2:case"end":return e.stop()}},M,this)}var b=regeneratorRuntime.mark(r),v=regeneratorRuntime.mark(o),_=regeneratorRuntime.mark(a),y=regeneratorRuntime.mark(i),A=regeneratorRuntime.mark(s),x=regeneratorRuntime.mark(l),w=regeneratorRuntime.mark(c),j=regeneratorRuntime.mark(u),E=regeneratorRuntime.mark(d),S=regeneratorRuntime.mark(p),k=regeneratorRuntime.mark(f),C=regeneratorRuntime.mark(h),T=regeneratorRuntime.mark(m),M=regeneratorRuntime.mark(g);Object.defineProperty(t,"__esModule",{value:!0});var O=n("./node_modules/redux-saga/es/index.js"),L=n("./node_modules/redux-saga/es/effects.js"),D=n("./app/containers/Organizations/constants.ts"),P=n("./app/containers/Organizations/actions.ts"),I=n("./node_modules/antd/lib/message/index.js"),R=n("./app/utils/request.ts"),N=n("./app/utils/api.js"),B=n("./app/utils/asyncAdapter.js"),F=n("./app/utils/util.ts");t.getOrganizations=r,t.addOrganization=o,t.editOrganization=a,t.deleteOrganization=i,t.getOrganizationDetail=s,t.getOrganizationsProjects=l,t.getOrganizationsMembers=c,t.getOrganizationsTeams=u,t.addTeam=d,t.searchMember=p,t.inviteMember=f,t.deleteOrganizationMember=h,t.changeOrganizationMemberRole=m,t.default=g},"./app/containers/Organizations/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("organization")};t.selectOrganization=o;var a=function(){return r.createSelector(o,function(e){return e.get("organizations")})};t.makeSelectOrganizations=a;var i=function(){return r.createSelector(o,function(e){return e.get("inviteMemberLists")})};t.makeSelectInviteMemberList=i;var s=function(){return r.createSelector(o,function(e){return e.get("currentOrganization")})};t.makeSelectCurrentOrganizations=s;var l=function(){return r.createSelector(o,function(e){return e.get("currentOrganizationProjects")})};t.makeSelectCurrentOrganizationProjects=l;var c=function(){return r.createSelector(o,function(e){return e.get("currentOrganizationProjectsDetail")})};t.makeSelectCurrentOrganizationProjectsDetail=c;var u=function(){return r.createSelector(o,function(e){return e.get("currentOrganizationTeams")})};t.makeSelectCurrentOrganizationTeams=u;var d=function(){return r.createSelector(o,function(e){return e.get("currentOrganizationMembers")})};t.makeSelectCurrentOrganizationMembers=d;var p=function(){return r.createSelector(o,function(e){return e.get("teamModalLoading")})};t.makeSelectTeamModalLoading=p},"./app/containers/Portal/Portal.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Portal/Portal.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Portal/actions.ts":function(e,t,n){"use strict";function r(e){return{type:m.LOAD_PORTALS,payload:{projectId:e}}}function o(e){return{type:m.LOAD_PORTALS_SUCCESS,payload:{result:e}}}function a(){return{type:m.LOAD_PORTALS_FAILURE}}function i(e,t){return{type:m.ADD_PORTAL,payload:{values:e,resolve:t}}}function s(e){return{type:m.ADD_PORTAL_SUCCESS,payload:{result:e}}}function l(){return{type:m.ADD_PORTAL_FAILURE}}function c(e,t){return{type:m.EDIT_PORTAL,payload:{values:e,resolve:t}}}function u(e){return{type:m.EDIT_PORTAL_SUCCESS,payload:{result:e}}}function d(){return{type:m.EDIT_PORTAL_FAILURE}}function p(e){return{type:m.DELETE_PORTAL,payload:{id:e}}}function f(e){return{type:m.DELETE_PORTAL_SUCCESS,payload:{id:e}}}function h(){return{type:m.DELETE_PORTAL_FAILURE}}Object.defineProperty(t,"__esModule",{value:!0});var m=n("./app/containers/Portal/constants.ts");t.loadPortals=r,t.portalsLoaded=o,t.loadPortalsFail=a,t.addPortal=i,t.portalAdded=s,t.addPortalFail=l,t.editPortal=c,t.portalEdited=u,t.editPortalFail=d,t.deletePortal=p,t.portalDeleted=f,t.deletePortalFail=h},"./app/containers/Portal/components/PortalForm.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2],o=e.props,a=o.onCheckUniqueName,i=o.type,s=o.form,l=o.projectId,c=s.getFieldsValue(),u=c.id;a("dashboardPortal",{projectId:l,id:"add"===i?"":u,name:n},function(){r()},function(e){r(e)})},e}return a(t,e),s(t,[{key:"render",value:function(){var e=this.props.form.getFieldDecorator,t={labelCol:{span:6},wrapperCol:{span:16}};return l.createElement(c,null,l.createElement(u,{gutter:8},l.createElement(d,{span:24},l.createElement(h,{className:g.hide},e("id",{hidden:"add"===this.props.type})(b)),l.createElement(h,{className:g.hide},e("avatar",{})(v)),l.createElement(h,i({label:"名称"},t,{hasFeedback:!0}),e("name",{rules:[{required:!0,message:"Name 不能为空"},{validator:this.checkNameUnique}]})(_))),l.createElement(d,{span:24},l.createElement(h,i({label:"描述"},t),e("description",{initialValue:""})(l.createElement(p,{placeholder:"Description",type:"textarea",autosize:{minRows:2,maxRows:6}})))),l.createElement(d,{span:24},l.createElement(h,i({label:"是否发布"},t),e("publish",{initialValue:!0})(y)))))}}]),t}(l.PureComponent);t.PortalForm=A,t.default=c.create()(A)},"./app/containers/Portal/components/PortalList.tsx":function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t1?t-1:0),o=1;o0&&void 0!==arguments[0]?arguments[0]:i,t=arguments[1],n=t.type,r=t.payload,a=e.get("portals");switch(n){case o.LOAD_PORTALS:return e;case o.LOAD_PORTALS_SUCCESS:return e.set("portals",r.result);case o.LOAD_PORTALS_FAILURE:case o.ADD_PORTAL:return e;case o.ADD_PORTAL_SUCCESS:return a.unshift(r.result),e.set("portals",a.slice());case o.ADD_PORTAL_FAILURE:case o.DELETE_PORTAL:return e;case o.DELETE_PORTAL_SUCCESS:return e.set("portals",a.filter(function(e){return e.id!==r.id}));case o.DELETE_PORTAL_FAILURE:case o.EDIT_PORTAL:return e;case o.EDIT_PORTAL_SUCCESS:return a.splice(a.findIndex(function(e){return e.id===r.result.id}),1,r.result),e.set("portals",a.slice());case o.EDIT_PORTAL_FAILURE:default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Portal/constants.ts"),a=n("./node_modules/immutable/dist/immutable.js"),i=a.fromJS({portals:!1});t.default=r},"./app/containers/Portal/sagas.ts":function(e,t,n){"use strict";function r(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,o.prev=1,o.next=4,h.call(b.default,v.default.portal+"?projectId="+t.projectId);case 4:return n=o.sent,r=_.readListAdapter(n),o.next=8,h.put(g.portalsLoaded(r));case 8:o.next=15;break;case 10:return o.prev=10,o.t0=o.catch(1),o.next=14,h.put(g.loadPortalsFail());case 14:y.errorHandler(o.t0);case 15:case"end":return o.stop()}},l,this,[[1,10]])}function o(e){var t,n;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=e.payload,r.prev=1,r.next=4,h.call(b.default,{method:"post",url:v.default.portal,data:t.values});case 4:return n=r.sent,r.next=7,h.put(g.portalAdded(n.payload));case 7:t.resolve(),r.next=15;break;case 10:return r.prev=10,r.t0=r.catch(1),r.next=14,h.put(g.addPortalFail());case 14:y.errorHandler(r.t0);case 15:case"end":return r.stop()}},c,this,[[1,10]])}function a(e){var t;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return t=e.payload,n.prev=1,n.next=4,h.call(b.default,{method:"delete",url:v.default.portal+"/"+t.id});case 4:return n.next=6,h.put(g.portalDeleted(t.id));case 6:n.next=13;break;case 8:return n.prev=8,n.t0=n.catch(1),n.next=12,h.put(g.deletePortalFail());case 12:y.errorHandler(n.t0);case 13:case"end":return n.stop()}},u,this,[[1,8]])}function i(e){var t;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return t=e.payload,n.prev=1,n.next=4,h.call(b.default,{method:"put",url:v.default.portal+"/"+t.values.id,data:t.values});case 4:return n.next=6,h.put(g.portalEdited(t.values));case 6:t.resolve(),n.next=14;break;case 9:return n.prev=9,n.t0=n.catch(1),n.next=13,h.put(g.editPortalFail());case 13:y.errorHandler(n.t0);case 14:case"end":return n.stop()}},d,this,[[1,9]])}function s(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[f.takeLatest(m.LOAD_PORTALS,r),f.takeEvery(m.ADD_PORTAL,o),f.takeEvery(m.DELETE_PORTAL,a),f.takeEvery(m.EDIT_PORTAL,i)];case 2:case"end":return e.stop()}},p,this)}var l=regeneratorRuntime.mark(r),c=regeneratorRuntime.mark(o),u=regeneratorRuntime.mark(a),d=regeneratorRuntime.mark(i),p=regeneratorRuntime.mark(s);Object.defineProperty(t,"__esModule",{value:!0});var f=n("./node_modules/redux-saga/es/index.js"),h=n("./node_modules/redux-saga/es/effects.js"),m=n("./app/containers/Portal/constants.ts"),g=n("./app/containers/Portal/actions.ts"),b=n("./app/utils/request.ts"),v=n("./app/utils/api.js"),_=n("./app/utils/asyncAdapter.js"),y=n("./app/utils/util.ts");t.getPortals=r,t.addPortal=o,t.deletePortal=a,t.editPortal=i,t.default=s},"./app/containers/Portal/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("portal")};t.selectPortal=o;var a=function(){return r.createSelector(o,function(e){return e.get("portals")})};t.makeSelectPortals=a},"./app/containers/Profile/UserProfile.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{onGetUserProfile:function(t){return e(S.getUserProfile(t))}}}var s=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2],o=e.props;(0,o.onCheckUniqueName)("user",{username:n,id:o.loginUser.id},function(){r()},function(e){r(e)})},e.submit=function(){var t=e.props,n=t.onUpdateProfile,r=t.loginUser.id;e.props.form.validateFieldsAndScroll(function(e,t){if(!e){var o=t.name,a=t.description,i=t.department;n(r,o,a,i,function(e){h.success(e.header&&e.header.msg)})}})},e}return a(t,e),l(t,[{key:"componentDidMount",value:function(){var e=this.props.loginUser,t=e.name,n=e.description,r=e.department;this.props.form.setFieldsValue({name:t,description:n,department:r})}},{key:"render",value:function(){var e=this.props.form.getFieldDecorator,t=this.props.loginUser,n=t.id,r=t.avatar,o={labelCol:{span:4},wrapperCol:{span:18}};return c.createElement(A.default,null,c.createElement(A.default.Header,null,c.createElement(A.default.Title,null,c.createElement(C,{className:k.breadcrumb},T))),c.createElement(A.default.Body,null,c.createElement("div",{className:_.container},c.createElement("div",{className:_.uploadWrapper},c.createElement(x.default,{type:"profile",xhrParams:{id:n,callback:this.props.onUploadAvatarSuccess},path:r})),M,c.createElement("div",{className:_.form},c.createElement(b,{className:_.formView},c.createElement(m,null,c.createElement(f,null,c.createElement(v,s({className:_.hide},o),e("id",{})(O)),c.createElement(v,s({},o,{label:"姓名"}),e("name",{initialValue:"",rules:[{required:!0},{validator:this.checkNameUnique}]})(L))),c.createElement(f,null,c.createElement(v,s({},o,{label:"描述"}),e("description",{initialValue:""})(D))),c.createElement(f,null,c.createElement(v,s({},o,{label:"部门"}),e("department",{initialValue:""})(P))),c.createElement(f,{offset:4},c.createElement(y,{size:"large",type:"primary",onClick:this.submit},"保存设置"))))))))}}]),t}(c.PureComponent);t.Profile=I,t.mapDispatchToProps=i;var R=w.createStructuredSelector({loginUser:j.makeSelectLoginUser()}),N=u.connect(R,i);t.default=E.compose(N)(b.create()(I))},"./app/containers/Profile/profile.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Profile/profile.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Profile/reducer.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i,t=arguments[1],n=t.type,r=t.payload;switch(n){case o.GET_USER_PROFILE:return e.set("loading",!0);case o.GET_USER_PROFILE_SUCCESS:return e.set("loading",!1).set("userProfile",r.result);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Profile/constants.ts"),a=n("./node_modules/immutable/dist/immutable.js"),i=a.fromJS({userProfile:!1,loading:!1});t.default=r},"./app/containers/Profile/sagas.ts":function(e,t,n){"use strict";function r(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload.id,o.prev=1,o.next=4,l.call(d.default,{method:"get",url:p.default.user+"/profile/"+t});case 4:return n=o.sent,r=f.readListAdapter(n),o.next=8,l.put(u.userProfileGot(r));case 8:o.next=15;break;case 10:return o.prev=10,o.t0=o.catch(1),o.next=14,l.put(u.getUserProfileFail());case 14:h.errorHandler(o.t0);case 15:case"end":return o.stop()}},a,this,[[1,10]])}function o(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[s.takeLatest(c.GET_USER_PROFILE,r)];case 2:case"end":return e.stop()}},i,this)}var a=regeneratorRuntime.mark(r),i=regeneratorRuntime.mark(o);Object.defineProperty(t,"__esModule",{value:!0});var s=n("./node_modules/redux-saga/es/index.js"),l=n("./node_modules/redux-saga/es/effects.js"),c=n("./app/containers/Profile/constants.ts"),u=n("./app/containers/Profile/actions.ts"),d=n("./app/utils/request.ts"),p=n("./app/utils/api.js"),f=n("./app/utils/asyncAdapter.js"),h=n("./app/utils/util.ts");t.getUserProfile=r,t.default=o},"./app/containers/Profile/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("profile")},a=function(){return r.createSelector(o,function(e){return e.get("userProfile")})};t.makeSelectUserProfile=a;var i=function(){return r.createSelector(o,function(e){return e.get("loading")})};t.makeSelectLoading=i},"./app/containers/Projects/Project.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Projects/Project.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Projects/ProjectForm.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2],o=n.props.onCheckUniqueName,a=n.ProjectForm.getFieldsValue,i=a();o("project",{name:t,orgId:i.orgId,id:i.id},function(){r()},function(e){r(e)})},n.toProject=function(e){return function(){var t=e.id;n.props.router.push("/project/"+t),n.saveHistory(e)}},n.saveHistory=function(e){V.pushNode(e)},n.hideSearchMask=function(){n.setState({searchMaskVisible:!0,searchKeywordsVisible:!0})},n.onChangeKeywords=function(e){var t={keywords:e.target.value.trim(),pageNum:n.state.currentPage,pageSize:n.state.pageSize};n.setState({keywords:e.target.value.trim()},function(){return n.props.onSearchProject(t)})},n.selectKeywords=function(e){return function(){var t={keywords:e,pageNum:n.state.currentPage,pageSize:n.state.pageSize};n.setState({keywords:e,searchKeywordsVisible:!0},function(){return n.props.onSearchProject(t)})}},n.computSearchListWrapperStyle=function(){var e=n.props.searchProject;return n.state.searchMaskVisible?n.state.searchMaskVisible:!e||!e.list||0===e.list.length||n.state.searchMaskVisible},n.onShowSizeChange=function(e,t){n.setState({currentPage:e,pageSize:t},function(){var e={keywords:n.state.keywords,pageNum:n.state.currentPage,pageSize:n.state.pageSize};n.props.onSearchProject(e)})},n.onPaginationChange=function(e){n.setState({currentPage:e},function(){var e={keywords:n.state.keywords,pageNum:n.state.currentPage,pageSize:n.state.pageSize};n.props.onSearchProject(e)})},n.starProject=function(e){return function(){(0,n.props.onStarProject)(e,function(){n.props.onLoadProjects()})}},n.getStarProjectUserList=function(e){return function(){(0,n.props.onGetProjectStarUser)(e)}},n.confirmDeleteProject=function(e,t){return function(){"collect"===e?n.props.onDeleteProject(t):n.props.onDeleteProject(t,function(){n.setState({})})}},n.state={formType:"",formVisible:!1,modalLoading:!1,mimePanel:!0,joinPanel:!0,collectPanel:!0,searchMaskVisible:!0,searchKeywordsVisible:!1,keywords:"",currentPage:1,pageSize:10,isDisableCollect:!1},n}return s(t,e),c(t,[{key:"componentWillMount",value:function(){this.props.onLoadProjects(),this.props.onLoadOrganizations(),this.props.onLoadCollectProjects()}},{key:"componentWillReceiveProps",value:function(e){var t=e.projects;e.collectProjects;t&&V.init(t)}},{key:"componentWillUnmount",value:function(){this.unbindDocumentKeypress()}},{key:"render",value:function(){var e,t,a,i,s,l,c,d,v,x,w=this,j=this.state,E=j.formType,S=j.formVisible,k=j.modalLoading,C=this.props,M=(C.onDeleteProject,C.organizations),O=C.projects,L=C.searchProject,D=C.loginUser,P=C.starUserList,I=C.collectProjects,R=Array.isArray(O)?[].concat(o(O),[{id:"add",type:"add"}]):[{id:"add",type:"add"}].concat(),H=(A((e={},r(e,y.starWrapperPosition,!0),r(e,y.starWrapper,!0),e)),R?R.map(function(e){var t=void 0,o=void 0;if(e.type&&"add"===e.type)return u.createElement(f,{key:e.id,xl:6,lg:8,md:8,sm:12,xs:24},u.createElement("div",{className:y.unit,onClick:w.showProjectForm("add")},u.createElement("div",{className:y.createNewWrapper},u.createElement("div",{className:y.createIcon},Y),u.createElement("div",{className:y.createText},"创建新项目"))));if(D&&e.createBy&&D.id!==e.createBy.id)return[];M&&(o=M.find(function(t){return t.id===e.orgId}),t=N.default(o,"")(g));var a=void 0,i=void 0,s=void 0,l=void 0,c=void 0;e&&e.id&&(c=u.createElement(U.default,{d:e,starUser:P,unStar:w.starProject,userList:w.getStarProjectUserList})),l=u.createElement(h,{title:"点赞项目"},u.createElement("div",{className:y.starWrapperPosition},c)),s=u.createElement(h,{title:"移交项目"},u.createElement(t,{className:y.transfer,type:"double-right",onClick:w.showProjectForm("transfer",e)})),a=u.createElement(h,{title:"编辑"},u.createElement(t,{className:y.edit,type:"setting",onClick:w.showProjectForm("edit",e)})),i=u.createElement(m,{title:"确定删除?",placement:"bottom",onConfirm:w.confirmDeleteProject("collect",e.id)},u.createElement(h,{title:"删除"},u.createElement(t,{className:y.delete,type:"delete",onClick:w.stopPPG})));var d=void 0,p=M.find(function(t,n){return e.orgId===t.id});e&&M&&(d=e.name+" ("+(p&&p.name?p.name:"")+")");var b=A(r({},y.unit,!0));return u.createElement(f,{key:e.id,xl:6,lg:8,md:8,sm:12,xs:24},u.createElement("div",{className:b,style:{backgroundImage:"url("+n("./app/assets/images recursive ^\\.\\/bg.*\\.png$")("./bg"+e.pic+".png")+")"},onClick:w.toProject(e)},u.createElement("header",null,u.createElement("h3",{className:y.title},d),u.createElement("p",{className:y.content},e.description)),l,u.createElement("div",{className:y.mimeActions},s,a,i)))}):""),q=R?R.map(function(e){var t=void 0,o=void 0;if(e.type&&"add"===e.type)return[];if(D&&e.createBy&&D.id===e.createBy.id)return[];M&&(o=M.find(function(t){return t.id===e.orgId}),t=N.default(o,"")(g));var a=void 0;e&&e.id&&(a=u.createElement(U.default,{d:e,starUser:P,unStar:w.starProject,userList:w.getStarProjectUserList}));var i=void 0,s=void 0,l=void 0,c=void 0,d=void 0,p=void 0,b=void 0,v=M.find(function(t,n){return e.orgId===t.id});e&&M&&(b=e.name+" ("+(v&&v.name?v.name:"")+")"),p=u.createElement(h,{title:"点赞项目"},u.createElement("div",{className:y.starWrapperPosition},a));var _=[];I&&(_=I.map(function(e){return e.id})),l=u.createElement(h,{title:"收藏"},u.createElement("i",{className:"iconfont icon-heart1 "+y.collect,onClick:w.collectProject("collect",e)})),c=u.createElement(h,{title:"取消收藏"},u.createElement("i",{className:"iconfont icon-heart "+y.unCollect,onClick:w.collectProject("unCollect",e)})),d=u.createElement(h,{title:"移交项目"},u.createElement(t,{className:y.transfer,type:"double-right",onClick:w.showProjectForm("transfer",e)})),i=u.createElement(h,{title:"编辑"},u.createElement(t,{className:y.edit,type:"setting",onClick:w.showProjectForm("edit",e)})),s=u.createElement(m,{title:"确定删除?",placement:"bottom",onConfirm:w.confirmDeleteProject("onCollect",e.id)},u.createElement(h,{title:"删除"},u.createElement(t,{className:y.delete,type:"delete",onClick:w.stopPPG})));var x=A(r({},y.unit,!0));return u.createElement(f,{key:e.id,xl:6,lg:8,md:8,sm:12,xs:24},u.createElement("div",{className:x,style:{backgroundImage:"url("+n("./app/assets/images recursive ^\\.\\/bg.*\\.png$")("./bg"+e.pic+".png")+")"},onClick:w.toProject(e)},u.createElement("header",null,u.createElement("h3",{className:y.title},b),u.createElement("p",{className:y.content},e.description)),p,u.createElement("div",{className:y.joinActions},_.indexOf(e.id)<0?l:c,d,i,s)))}):"",K=I?I.map(function(e){var t=void 0;if(e.type&&"add"===e.type)return[];if(D&&e.createBy&&D.id===e.createBy.id)return[];M&&(t=M.find(function(t){return t.id===e.orgId}),N.default(t,"")(g));var o=void 0;e&&e.id&&(o=u.createElement(U.default,{d:e,starUser:P,unStar:w.starProject,userList:w.getStarProjectUserList}));var a=void 0,i=void 0,s=void 0,l=M.find(function(t,n){return e.orgId===t.id});e&&M&&(s=e.name+" ("+(l&&l.name?l.name:"")+")"),i=u.createElement(h,{title:"点赞项目"},u.createElement("div",{className:y.starWrapperPosition},o)),a=u.createElement(h,{title:"取消收藏"},u.createElement("i",{className:"iconfont icon-heart "+y.unCollect,onClick:w.collectProject("unCollect",e)}));var c=A(r({},y.unit,!0));return u.createElement(f,{key:e.id,xl:6,lg:8,md:8,sm:12,xs:24},u.createElement("div",{className:c,style:{backgroundImage:"url("+n("./app/assets/images recursive ^\\.\\/bg.*\\.png$")("./bg"+e.pic+".png")+")"},onClick:w.toProject(e)},u.createElement("header",null,u.createElement("h3",{className:y.title},s),u.createElement("p",{className:y.content},e.description)),i,u.createElement("div",{className:y.collectActions},a)))}):"",X=V.getAll(),J=X?X.map(function(e){var t=n("./app/assets/images recursive ^\\.\\/bg.*\\.png$")("./bg"+e.pic+".png");return u.createElement("div",{className:y.groupList,key:e.id,onClick:w.toProject(e)},u.createElement("div",{className:y.orgHeader},u.createElement("div",{className:y.avatar},u.createElement(B.default,{path:t,enlarge:!1,size:"small"})),u.createElement("div",{className:y.name},u.createElement("div",{className:y.title},e.name),u.createElement("div",{className:y.desc},e.description))))}):"",Z=L&&L.list&&L.list.length?L.list.map(function(e){var t=n("./app/assets/images recursive ^\\.\\/bg.*\\.png$")("./bg"+e.pic+".png");return e&&e.id&&u.createElement(U.default,{d:e,starUser:P,unStar:w.starProject,userList:w.getStarProjectUserList}),u.createElement(f,{xl:6,lg:8,md:8,sm:12,xs:24,key:e.id},u.createElement("div",{className:y.searchList,key:e.id,onClick:w.toProject(e)},u.createElement("div",{className:y.orgHeader},u.createElement("div",{className:y.avatar},u.createElement(B.default,{path:t,enlarge:!1,size:"small"})),u.createElement("div",{className:y.name},u.createElement("div",{className:y.title},e.name),u.createElement("div",{className:y.desc},e.description)))))}):"",$=void 0;L&&($=u.createElement(_,{showSizeChanger:!0,defaultCurrent:2,total:L.total,onShowSizeChange:this.onShowSizeChange,onChange:this.onPaginationChange,defaultPageSize:10,pageSizeOptions:["10","15","18"],current:this.state.currentPage}));var ee=A((t={},r(t,z.hide,this.state.searchMaskVisible),r(t,y.mask,!0),t)),te=(u.createElement("ul",null,L&&L.list.map(function(e,t){return u.createElement("li",{key:e.name+"of"+t,onClick:w.selectKeywords(e.name)},u.createElement("p",null,e.name))})),A((a={},r(a,z.hide,this.state.searchKeywordsVisible),r(a,y.searchKeywords,L&&0!==L.list.length),a)),A((i={},r(i,y.listPadding,!0),r(i,z.hide,!this.state.mimePanel),i))),ne=A((s={},r(s,y.listPadding,!0),r(s,z.hide,!this.state.joinPanel),s)),re=A((l={},r(l,y.listPadding,!0),r(l,z.hide,!this.state.collectPanel),l)),oe=A((c={},r(c,z.hide,this.computSearchListWrapperStyle()),r(c,y.searchListWrapper,!0),c)),ae=A((d={},r(d,y.wrapper,!0),r(d,y.overflowY,this.state.searchMaskVisible),d)),ie=A((v={},r(v,y.join,!0),r(v,z.hide,!(q&&q.length>0)),v)),se=A((x={},r(x,y.mime,!0),r(x,z.hide,!(K&&K.length>0)),x));return u.createElement("div",{className:ae},u.createElement("div",{className:y.search},u.createElement("div",{className:y.searchWrapper},u.createElement("label",{htmlFor:"newtab-search-text",className:y.searchLabel}),u.createElement("input",{id:"newtab-search-text",placeholder:"Search the Davinci",title:"Search the Web",autoComplete:"off",onFocus:this.bindDocumentKeypress,onBlur:this.unbindDocumentKeypress,onChange:this.onChangeKeywords,value:this.state.keywords,type:"search"}),u.createElement("span",{className:y.searchButton,onClick:this.searchProject},W))),u.createElement("div",{className:oe},u.createElement(F.default,null,G,u.createElement("div",{className:y.listPadding,style:{overflow:"auto"}},u.createElement(p,{gutter:16},Z),u.createElement(p,{type:"flex",justify:"end"},u.createElement(f,null,$))))),u.createElement("div",{className:y.wrap},u.createElement(p,{style:{width:"100%"}},u.createElement(f,{xl:18,lg:18,md:24,sm:24,xs:24,key:"projects"},u.createElement("div",{className:y.container},u.createElement("div",{className:y.projects},u.createElement("div",{className:y.mime,id:"mime"},u.createElement(F.default,null,u.createElement(F.default.Header,null,u.createElement(F.default.Title,null,u.createElement(p,{onClick:this.foldPanel("mimePanel")},u.createElement(f,{span:20},u.createElement(g,{type:this.state.mimePanel?"down":"right"}),"我创建的项目")))),u.createElement("div",{className:te},u.createElement(p,{gutter:16},H)))),u.createElement("div",{className:ie,id:"join"},u.createElement(F.default,null,u.createElement(F.default.Header,null,u.createElement(F.default.Title,null,u.createElement(p,{onClick:this.foldPanel("joinPanel")},u.createElement(f,{span:20},u.createElement(g,{type:this.state.joinPanel?"down":"right"}),"我参与的项目")))),u.createElement("div",{className:ne},u.createElement(p,{gutter:16},q)))),u.createElement("div",{className:se,id:"collect"},u.createElement(F.default,null,u.createElement(F.default.Header,null,u.createElement(F.default.Title,null,u.createElement(p,{onClick:this.foldPanel("collectPanel")},u.createElement(f,{span:20},u.createElement(g,{type:this.state.collectPanel?"down":"right"}),"我收藏的项目")))),u.createElement("div",{className:re},u.createElement(p,{gutter:16},K))))))),u.createElement(f,{xl:6,lg:6,md:24,sm:24,xs:24,key:"history"},u.createElement("div",{className:y.sideBox},u.createElement(F.default,null,Q,J))))),u.createElement("div",{className:ee,onClick:this.hideSearchMask}),u.createElement(b,{title:null,footer:null,visible:S,onCancel:this.hideProjectForm},u.createElement(T.default,{type:E,ref:function(e){w.ProjectForm=e},modalLoading:k,organizations:M,onModalOk:this.onModalOk,onTransfer:this.onTransfer,onCheckUniqueName:this.checkNameUnique,onWidgetTypeChange:this.widgetTypeChange})))}}]),t}(u.PureComponent);t.Projects=q;var K=k.createStructuredSelector({organizations:I.makeSelectOrganizations(),projects:E.makeSelectProjects(),loginUser:j.makeSelectLoginUser(),searchProject:E.makeSelectSearchProject(),starUserList:E.makeSelectStarUserList(),collectProjects:E.makeSelectCollectProjects()});t.mapDispatchToProps=l;var X=d.connect(K,l),J=S.default({key:"project",reducer:O.default}),Z=C.default({key:"project",saga:M.default}),$=S.default({key:"organization",reducer:L.default}),ee=C.default({key:"organization",saga:D.default});t.default=w.compose(J,$,Z,ee,X)(q)},"./app/containers/Projects/reducer.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i,t=arguments[1],n=t.type,r=t.payload,o=e.get("projects"),s=e.get("collectProjects");switch(n){case a.LOAD_PROJECTS_SUCCESS:return e.set("projects",r.projects);case a.LOAD_PROJECTS_FAILURE:return e;case a.ADD_PROJECT_SUCCESS:return o?(o.unshift(r.result),e.set("projects",o.slice())):e.set("projects",[r.result]);case a.ADD_PROJECT_FAILURE:return e;case a.DELETE_PROJECT_SUCCESS:return o?e.set("projects",o.filter(function(e){return e.id!==r.id})).set("collectProjects",s.filter(function(e){return e.id!==r.id})):e;case a.LOAD_PROJECT_DETAIL:return e.set("currentProjectLoading",!0);case a.LOAD_PROJECT_DETAIL_SUCCESS:return e.set("currentProjectLoading",!1).set("currentProject",r.project);case a.KILL_PROJECT_DETAIL:return e.set("currentProject",!1);case a.SEARCH_PROJECT_SUCCESS:return e.set("searchProject",r.result);case a.GET_PROJECT_STAR_USER_SUCCESS:return e.set("starUserList",r.result);case a.LOAD_COLLECT_PROJECTS:return e;case a.LOAD_COLLECT_PROJECTS_SUCCESS:return e.set("collectProjects",r.result);case a.LOAD_COLLECT_PROJECTS_FAILURE:return e;case a.CLICK_COLLECT_PROJECT_SUCCESS:return"unCollect"===r.result.formType?e.set("collectProjects",s.filter(function(e){return e.id!==r.result.project.id})):(s.push(r.result.project),e.set("collectProjects",s.slice()));default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/immutable/dist/immutable.js"),a=n("./app/containers/Projects/constants.ts"),i=o.fromJS({projects:null,currentProject:null,currentProjectLoading:!1,searchProject:!1,starUserList:!1,collectProjects:null});t.default=r},"./app/containers/Projects/sagas.ts":function(e,t,n){"use strict";function r(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,o.prev=1,o.next=4,C.call(O.default,L.default.projects);case 4:return n=o.sent,r=P.readListAdapter(n),o.next=8,C.put(M.projectsLoaded(r));case 8:o.next=15;break;case 10:return o.prev=10,o.t0=o.catch(1),o.next=14,C.put(M.loadProjectsFail());case 14:D.errorHandler(o.t0);case 15:case"end":return o.stop()}},m,this,[[1,10]])}function o(e){var t,n,r,o,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,n=t.project,r=t.resolve,i.prev=1,i.next=4,C.call(O.default,{method:"post",url:L.default.projects,data:n});case 4:return o=i.sent,a=P.readListAdapter(o),i.next=8,C.put(M.projectAdded(a));case 8:r(),i.next=16;break;case 11:return i.prev=11,i.t0=i.catch(1),i.next=15,C.put(M.addProjectFail());case 15:D.errorHandler(i.t0);case 16:case"end":return i.stop()}},g,this,[[1,11]])}function a(e){var t,n,r,o;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return t=e.payload,n=t.project,r=t.resolve,o=n.id,a.prev=2,a.next=5,C.call(O.default,{method:"put",url:L.default.projects+"/"+o,data:n});case 5:return a.next=7,C.put(M.projectEdited(n));case 7:r(),a.next=15;break;case 10:return a.prev=10,a.t0=a.catch(2),a.next=14,C.put(M.editProjectFail());case 14:D.errorHandler(a.t0);case 15:case"end":return a.stop()}},b,this,[[2,10]])}function i(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,n=t.id,r=t.resolve,o.prev=1,o.next=4,C.call(O.default,{method:"delete",url:L.default.projects+"/"+n});case 4:return o.next=6,C.put(M.projectDeleted(n));case 6:r&&r(),o.next=14;break;case 9:return o.prev=9,o.t0=o.catch(1),o.next=13,C.put(M.deleteProjectFail());case 13:D.errorHandler(o.t0);case 14:case"end":return o.stop()}},v,this,[[1,9]])}function s(e){var t,n,r=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,C.call(O.default,L.default.projects+"/"+r.id);case 3:return t=e.sent,n=P.readListAdapter(t),e.next=7,C.put(M.projectDetailLoaded(n));case 7:e.next=12;break;case 9:e.prev=9,e.t0=e.catch(0),D.errorHandler(e.t0);case 12:case"end":return e.stop()}},_,this,[[0,9]])}function l(e){var t,n,r,o,a=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=a.id,n=a.orgId,e.prev=1,e.next=4,C.call(O.default,{method:"put",url:L.default.projects+"/"+t+"/transfer",data:{orgId:n}});case 4:return r=e.sent,o=P.readListAdapter(r),e.next=8,C.put(M.projectTransfered(o));case 8:e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,C.put(M.transferProjectFail());case 14:D.errorHandler(e.t0);case 15:case"end":return e.stop()}},y,this,[[1,10]])}function c(e){var t,n,r,o,a,i,s=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=s.param,n=t.keywords,r=t.pageNum,o=t.pageSize,e.prev=1,e.next=4,C.call(O.default,{method:"get",url:L.default.projects+"/search/?pageNum="+(r||1)+"&pageSize="+(o||10)+"&keywords="+(n||"")});case 4:return a=e.sent,i=P.readListAdapter(a),e.next=8,C.put(M.projectSearched(i));case 8:e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,C.put(M.searchProjectFail());case 14:D.errorHandler(e.t0);case 15:case"end":return e.stop()}},A,this,[[1,10]])}function u(e){var t,n,r,o,a=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=a.id,n=a.resolve,e.prev=1,e.next=4,C.call(O.default,{method:"post",url:L.default.star+"/project/"+t,data:{id:t}});case 4:return r=e.sent,o=P.readListAdapter(r),e.next=8,C.put(M.unStarProjectSuccess(o));case 8:return e.next=10,n();case 10:e.next=17;break;case 12:return e.prev=12,e.t0=e.catch(1),e.next=16,C.put(M.unStarProjectFail());case 16:D.errorHandler(e.t0);case 17:case"end":return e.stop()}},x,this,[[1,12]])}function d(e){var t,n,r,o=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=o.id,e.prev=1,e.next=4,C.call(O.default,{method:"get",url:L.default.star+"/project/"+t});case 4:return n=e.sent,r=P.readListAdapter(n),e.next=8,C.put(M.getProjectStarUserSuccess(r));case 8:e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,C.put(M.getProjectStarUserFail());case 14:D.errorHandler(e.t0);case 15:case"end":return e.stop()}},w,this,[[1,10]])}function p(e){var t,n;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,C.call(O.default,{method:"get",url:L.default.projects+"/favorites"});case 3:return t=e.sent,n=P.readListAdapter(t),e.next=7,C.put(M.collectProjectLoaded(n));case 7:e.next=14;break;case 9:return e.prev=9,e.t0=e.catch(0),e.next=13,C.put(M.collectProjectFail());case 13:D.errorHandler(e.t0);case 14:case"end":return e.stop()}},j,this,[[0,9]])}function f(e){var t,n,r,o=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t=o.formType,n=o.project,r=o.resolve,e.prev=1,"collect"!==t){e.next=7;break}return e.next=5,C.call(O.default,{method:"post",url:L.default.projects+"/favorite/"+n.id,data:{id:n.id}});case 5:e.next=9;break;case 7:return e.next=9,C.call(O.default,{method:"delete",url:L.default.projects+"/remove/favorites",data:[n.id]});case 9:return e.next=11,C.put(M.collectProjectClicked(o));case 11:return e.next=13,r();case 13:e.next=20;break;case 15:return e.prev=15,e.t0=e.catch(1),e.next=19,C.put(M.clickCollectProjectFail());case 19:D.errorHandler(e.t0);case 20:case"end":return e.stop()}},E,this,[[1,15]])}function h(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[k.takeLatest(T.LOAD_PROJECTS,r),k.takeEvery(T.ADD_PROJECT,o),k.takeEvery(T.EDIT_PROJECT,a),k.takeEvery(T.DELETE_PROJECT,i),k.takeLatest(T.LOAD_PROJECT_DETAIL,s),k.takeEvery(T.TRANSFER_PROJECT,l),k.takeEvery(T.PROJECT_UNSTAR,u),k.takeEvery(T.GET_PROJECT_STAR_USER,d),k.throttle(1e3,T.SEARCH_PROJECT,c),k.takeLatest(T.LOAD_COLLECT_PROJECTS,p),k.takeEvery(T.CLICK_COLLECT_PROJECT,f)];case 2:case"end":return e.stop()}},S,this)}var m=regeneratorRuntime.mark(r),g=regeneratorRuntime.mark(o),b=regeneratorRuntime.mark(a),v=regeneratorRuntime.mark(i),_=regeneratorRuntime.mark(s),y=regeneratorRuntime.mark(l),A=regeneratorRuntime.mark(c),x=regeneratorRuntime.mark(u),w=regeneratorRuntime.mark(d),j=regeneratorRuntime.mark(p),E=regeneratorRuntime.mark(f),S=regeneratorRuntime.mark(h);Object.defineProperty(t,"__esModule",{value:!0});var k=n("./node_modules/redux-saga/es/index.js"),C=n("./node_modules/redux-saga/es/effects.js"),T=n("./app/containers/Projects/constants.ts"),M=n("./app/containers/Projects/actions.ts"),O=n("./app/utils/request.ts"),L=n("./app/utils/api.js"),D=n("./app/utils/util.ts"),P=n("./app/utils/asyncAdapter.js");t.getProjects=r,t.addProject=o,t.editProject=a,t.deleteProject=i,t.getProjectDetail=s,t.transferProject=l,t.searchProject=c,t.unStarProject=u,t.getProjectStarUser=d,t.getCollectProjects=p,t.editCollectProject=f,t.default=h},"./app/containers/Projects/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("project")};t.selectProject=o;var a=function(){return r.createSelector(o,function(e){return e.get("projects")})};t.makeSelectProjects=a;var i=function(){return r.createSelector(o,function(e){return e.get("currentProject")})};t.makeSelectCurrentProject=i;var s=function(){return r.createSelector(o,function(e){return e.get("searchProject")})};t.makeSelectSearchProject=s;var l=function(){return r.createSelector(o,function(e){return e.get("starUserList")})};t.makeSelectStarUserList=l;var c=function(){return r.createSelector(o,function(e){return e.get("collectProjects")})};t.makeSelectCollectProjects=c},"./app/containers/Register/Activate.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{onActiveUser:function(t,n){return e(m.active(t,n))}}}var s=function(){function e(e,t){for(var n=0;n0?"https://email."+n:"https://mail."+n;window.open(r)}},e}return a(t,e),i(t,[{key:"render",value:function(){var e=this.props.email;return s.createElement("div",{className:l.content},u,s.createElement("p",null,"我们向 ",s.createElement("b",null,e)," 发送了一封电子邮件,请",s.createElement("b",null,s.createElement("a",{onClick:this.goEmailNet},"前往")),"电子邮件中确认。"),s.createElement("p",null,"没收到? ",s.createElement("a",{href:"javascript:;",onClick:this.props.sendEmailOnceMore},"重新发送电子邮件")),s.createElement("div",{className:l.back,onClick:this.props.goBack},d," 返回上一步"))}}]),t}(s.PureComponent);t.SendEmailTips=p,t.default=p},"./app/containers/Register/actions.ts":function(e,t,n){"use strict";function r(e,t,n,r){return{type:c.SIGNUP,payload:{username:e,email:t,password:n,resolve:r}}}function o(){return{type:c.SIGNUP_SUCCESS}}function a(){return{type:c.SIGNUP_ERROR}}function i(e,t){return{type:c.SEND_MAIL_AGAIN,payload:{email:e,resolve:t}}}function s(){return{type:c.SEND_MAIL_AGAIN_SUCCESS}}function l(){return{type:c.SEND_MAIL_AGAIN_ERROR}}Object.defineProperty(t,"__esModule",{value:!0});var c=n("./app/containers/Register/constants.ts");t.signup=r,t.signupSuccess=o,t.signupError=a,t.sendMailAgain=i,t.sendMailAgainSuccess=s,t.sendMailAgainFail=l},"./app/containers/Register/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SIGNUP="davinci/App/SIGNUP",t.SIGNUP_SUCCESS="davinci/App/SIGNUP_SUCCESS",t.SIGNUP_ERROR="davinci/App/SIGNUP_ERROR",t.SEND_MAIL_AGAIN="davinci/App/SEND_MAIL_AGAIN",t.SEND_MAIL_AGAIN_SUCCESS="davinci/App/SEND_MAIL_AGAIN_SUCCESS",t.SEND_MAIL_AGAIN_ERROR="davinci/App/SEND_MAIL_AGAIN_ERROR"},"./app/containers/Register/index.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{onSignup:function(t,n,r,o){return e(w.signup(t,n,r,o))},onCheckName:function(t,n,r,o,a,i){return e(x.checkNameAction(t,n,r,o,a,i))},onSendEmailOnceMore:function(t,n){return e(w.sendMailAgain(t,n))}}}var s=function(){function e(e,t){for(var n=0;n20)return void v.error("密码长度为6-20位");if(a!==i)return void v.error("两次输入的密码不一致");e(r,o,a,function(){n.setState({step:"second"})})}},n.goBack=function(){n.setState({step:"first"})},n.toLogin=function(){n.props.router.replace("/login")},n.sendEmailOnceMore=function(){(0,n.props.onSendEmailOnceMore)(n.state.email,function(e){v.success(e)})},n.state={step:"first",username:"",email:"",password:"",password2:""},n}return a(t,e),s(t,[{key:"render",value:function(){var e=this.state,t=e.step,n=e.email,r=this.props,o=r.onCheckName,a=r.signupLoading,i=l.createElement("div",{className:A.window},E,l.createElement(_.default,{username:this.state.username,email:this.state.email,password:this.state.password,password2:this.state.password2,onChangeUsername:this.changeUsername,onChangeEmail:this.onChangeEmail,onChangePassword:this.changePassword,onChangePassword2:this.changePassword2,onCheckName:o,onSignup:this.signUp}),l.createElement("button",{disabled:a,onClick:this.signUp},a?S:"","注册"),l.createElement("p",{className:A.tips},k,l.createElement("a",{href:"javascript:;",onClick:this.toLogin},"点击登录"))),s=l.createElement("div",{className:A.window},C,l.createElement(y.default,{email:n,goBack:this.goBack,sendEmailOnceMore:this.sendEmailOnceMore}));return"first"===t?i:s}}]),t}(l.PureComponent);t.Register=T;var M=d.createStructuredSelector({signupLoading:j.makeSelectSignupLoading()});t.mapDispatchToProps=i;var O=c.connect(M,i),L=f.default({key:"register",reducer:m.default}),D=h.default({key:"register",saga:g.default});t.default=p.compose(L,D,O)(T)},"./app/containers/Register/reducer.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i;switch(arguments[1].type){case o.SIGNUP:return e.set("signupLoading",!0);case o.SIGNUP_SUCCESS:case o.SIGNUP_ERROR:return e.set("signupLoading",!1);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Register/constants.ts"),a=n("./node_modules/immutable/dist/immutable.js"),i=a.fromJS({signupLoading:!1});t.default=r},"./app/containers/Register/register.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Register/register.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Register/sagas.ts":function(e,t,n){"use strict";function r(e){var t,n,r,o,a,s,l;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,n=t.username,r=t.email,o=t.password,a=t.resolve,i.prev=1,i.next=4,m.call(d.default,{method:"post",url:p.default.signup,data:{username:n,email:r,password:o}});case 4:return s=i.sent,l=f.readListAdapter(s),i.next=8,m.put(u.signupSuccess());case 8:a(l),i.next=16;break;case 11:return i.prev=11,i.t0=i.catch(1),i.next=15,m.put(u.signupError());case 15:h.errorHandler(i.t0);case 16:case"end":return i.stop()}},i,this,[[1,11]])}function o(e){var t,n,r,o,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return t=e.payload,n=t.email,r=t.resolve,i.prev=1,i.next=4,m.call(d.default,{method:"post",url:p.default.signup+"/sendmail",data:{email:n}});case 4:return o=i.sent,a=o.header.msg,i.next=8,m.put(u.sendMailAgainSuccess());case 8:r(a),i.next=16;break;case 11:return i.prev=11,i.t0=i.catch(1),i.next=15,m.put(u.sendMailAgainFail());case 15:h.errorHandler(i.t0);case 16:case"end":return i.stop()}},s,this,[[1,11]])}function a(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[g.takeLatest(c.SIGNUP,r),g.takeLatest(c.SEND_MAIL_AGAIN,o)];case 2:case"end":return e.stop()}},l,this)}var i=regeneratorRuntime.mark(r),s=regeneratorRuntime.mark(o),l=regeneratorRuntime.mark(a);Object.defineProperty(t,"__esModule",{value:!0});var c=n("./app/containers/Register/constants.ts"),u=n("./app/containers/Register/actions.ts"),d=n("./app/utils/request.ts"),p=n("./app/utils/api.js"),f=n("./app/utils/asyncAdapter.js"),h=n("./app/utils/util.ts"),m=n("./node_modules/redux-saga/es/effects.js"),g=n("./node_modules/redux-saga/es/index.js");t.signup=r,t.sendMailAgain=o,t.default=a},"./app/containers/Register/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("register")},a=function(){return r.createSelector(o,function(e){return e.get("signupLoading")})};t.makeSelectSignupLoading=a},"./app/containers/Report/Report.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Report/Report.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Report/actions.ts":function(e,t,n){"use strict";function r(e){return{type:o.LOAD_SIDEBAR,sidebar:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Report/constants.ts");t.loadSidebar=r},"./app/containers/Report/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LOAD_SIDEBAR="davinci/Report/LOAD_SIDEBAR"},"./app/containers/Report/index.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{onPageLoad:function(){var t=[{icon:"icon-dashboard",route:["vizs","dashboard"],permission:"viz"},{icon:"icon-widget-gallery",route:["widgets"],permission:"widget"},{icon:"icon-custom-business",route:["bizlogics","bizlogic"],permission:"view"},{icon:"icon-datasource24",route:["sources"],permission:"source"},{icon:"anticon anticon-clock-circle-o",route:["schedule"],permission:"schedule"}];e(h.loadSidebar(t))},onLoadProjectDetail:function(t){return e(b.loadProjectDetail(t))},onShowNavigator:function(){return e(g.showNavigator())},onKillProjectDetail:function(){return e(b.killProjectDetail())}}}var s=function(){function e(e,t){for(var n=0;n0?r=o[a]:i.indexOf("bizlogics")>0&&i.replace("bizlogics","view").indexOf(s)>0&&(r=o[a])}}0===r&&this.props.router.replace("/noAuthorization")}},{key:"componentWillUnmount",value:function(){this.props.onKillProjectDetail()}},{key:"render",value:function(){var e=this,t=this.props,n=t.sidebar,r=(t.loginUser,t.routes),o=t.currentProject,a=n&&n.map(function(t){var n=t.route.indexOf(r[3].name)>=0,a="iconfont "+t.icon,i=E.default(o,t.permission)(p.default);return l.createElement(i,{key:t.permission,route:t.route,active:n,params:e.props.params},l.createElement("i",{className:a}))}),i=o&&o.inTeam?l.createElement(d.default,null,a):"";return l.createElement("div",{className:j.report},i,l.createElement("div",{className:j.container},this.props.children))}}]),t}(l.Component);t.Report=S;var k=u.createStructuredSelector({sidebar:f.selectSidebar(),loginUser:m.makeSelectLoginUser(),currentProject:w.makeSelectCurrentProject()});t.mapDispatchToProps=i;var C=_.default({key:"project",reducer:v.default}),T=A.default({key:"project",saga:y.default}),M=c.connect(k,i);t.default=x.compose(C,T,M)(S)},"./app/containers/Report/reducer.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i,t=arguments[1];t.payload;switch(t.type){case o.LOAD_SIDEBAR:return e.set("sidebar",t.sidebar);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Report/constants.ts"),a=n("./node_modules/immutable/dist/immutable.js"),i=a.fromJS({sidebar:!1,currentProject:!1});t.default=r},"./app/containers/Report/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(){return function(e){return e.get("report")}};t.selectReport=o;var a=function(){return r.createSelector(o(),function(e){return e.get("sidebar")})};t.selectSidebar=a},"./app/containers/ResetPassword/ResetPasswordForm.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2],o=e.props;(0,o.onCheckUniqueName)("cronjob",{name:n,projectId:o.projectId,id:(0,e.props.form.getFieldsValue)().id},function(){r()},function(e){r(e)})},e}return a(t,e),l(t,[{key:"render",value:function(){for(var e=this.props,t=e.onShowConfig,n=e.configValue,r=this.props.form.getFieldDecorator,o={labelCol:{span:4},wrapperCol:{span:18}},a=0,i=0,l=[],u=[];a<60;)l.push(c.createElement(y,{key:a,value:""+a},a)),a++;for(;i<32;)u.push(c.createElement(y,{key:i,value:""+i},i)),i++;return c.createElement(f,null,c.createElement(h,null,c.createElement(m,{span:24},c.createElement(x,{className:w.hide},r("id",{hidden:"add"===this.props.type})(j)),c.createElement(x,s({label:"名称"},o),r("name",{rules:[{required:!0,message:"Name 不能为空"},{validator:this.checkUniqueName}]})(E)))),c.createElement(h,null,c.createElement(m,{span:24},c.createElement(x,s({label:"描述"},o),r("description",{initialValue:""})(c.createElement(g,{placeholder:"Description",type:"textarea",autosize:{minRows:2,maxRows:6}})))),c.createElement(m,{span:24},c.createElement(x,s({label:"类型"},o),r("jobType",{initialValue:"email"})(S))),c.createElement(m,{span:24},c.createElement(x,s({label:"配置"},o),r("config",{rules:[{required:!0,message:"配置不能为空"}],initialValue:n&&n.length>2?n:""})(c.createElement(g,{placeholder:"config",readOnly:!0,onClick:t}))))),c.createElement(h,null,c.createElement(m,{span:24},c.createElement(x,s({label:"范围"},o),r("range",{initialValue:"",rules:[{required:!0,message:"范围不能为空"}]})(c.createElement(A,{style:{width:"300px"},size:"large",showTime:!0,format:"YYYY-MM-DD HH:mm:ss",placeholder:["Start Time","End Time"]}))))),c.createElement(h,null,k,c.createElement(m,{span:5},c.createElement(x,null,r("time_range",{initialValue:""})(c.createElement(b,{onChange:this.props.changeRange},["Minute","Hour","Day","Week","Month"].map(function(e){return c.createElement(y,{key:e,value:e},e)}))))),c.createElement(m,{span:5,offset:1,className:""+("Minute"===this.props.rangeTime?"":w.hide)},c.createElement(x,null,r("minute",{initialValue:""})(c.createElement(b,null,l)))),c.createElement(m,{span:5,offset:1,className:""+("Month"===this.props.rangeTime?"":w.hide)},c.createElement(x,null,r("month",{initialValue:""})(c.createElement(b,null,u)))),c.createElement(m,{span:5,offset:1,className:""+("Hour"===this.props.rangeTime?"":w.hide)},c.createElement(x,null,r("hour",{initialValue:""})(C))),c.createElement(m,{span:5,offset:1,className:""+("Week"===this.props.rangeTime?"":w.hide)},c.createElement(x,null,r("week",{initialValue:""})(c.createElement(b,null,["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"].map(function(e,t){return c.createElement(y,{key:t,value:""+t},e)}))))),c.createElement(m,{span:5,offset:1,className:""+(["Day","Week","Month"].indexOf(this.props.rangeTime)>-1?"":w.hide)},c.createElement(x,null,r("time",{initialValue:p.default("00:00","HH:mm"),hidden:["Day","Week","Month"].indexOf(this.props.rangeTime)<0})(T)))))}}]),t}(c.PureComponent);t.ScheduleForm=M,t.default=f.create()(u.connect(null,i)(M))},"./app/containers/Schedule/actions.ts":function(e,t,n){"use strict";function r(e){return{type:A.LOAD_SCHEDULES,payload:{pid:e}}}function o(e){return{type:A.LOAD_SCHEDULES_SUCCESS,payload:{schedules:e}}}function a(){return{type:A.LOAD_SCHEDULES_FAILUER}}function i(e,t){return{type:A.ADD_SCHEDULES,payload:{schedule:e,resolve:t}}}function s(e){return{type:A.ADD_SCHEDULES_SUCCESS,payload:{result:e}}}function l(){return{type:A.ADD_SCHEDULES_FAILURE}}function c(e,t){return{type:A.UPDATE_SCHEDULES,payload:{schedule:e,resolve:t}}}function u(e){return{type:A.UPDATE_SCHEDULES_SUCCESS,payload:{result:e}}}function d(){return{type:A.UPDATE_SCHEDULES_FAILURE}}function p(e){return{type:A.DELETE_SCHEDULES,payload:{id:e}}}function f(e){return{type:A.DELETE_SCHEDULES_SUCCESS,payload:{id:e}}}function h(){return{type:A.DELETE_SCHEDULES_FAILURE}}function m(e,t){return{type:A.CHANGE_SCHEDULE_STATUS,payload:{id:e,currentStatus:t}}}function g(e,t){return{type:A.CHANGE_SCHEDULE_STATUS_SUCCESS,payload:{id:e,schedules:t}}}function b(){return{type:A.CHANGE_SCHEDULE_STATUS_FAILURE}}function v(e){return{type:A.LOAD_VIZS,payload:{pid:e}}}function _(e){return{type:A.LOAD_VIZS_SUCCESS,payload:{result:e}}}function y(){return{type:A.LOAD_VIZS_FAILUER}}Object.defineProperty(t,"__esModule",{value:!0});var A=n("./app/containers/Schedule/constants.ts");t.loadSchedules=r,t.schedulesLoaded=o,t.loadSchedulesFail=a,t.addSchedule=i,t.scheduleAdded=s,t.addScheduleFail=l,t.updateSchedule=c,t.scheduleUpdated=u,t.updateScheduleFail=d,t.deleteSchedule=p,t.scheduleDeleted=f,t.deleteScheduleFail=h,t.changeSchedulesStatus=m,t.currentScheduleStatusChanged=g,t.changeSchedulesStatusFail=b,t.loadVizs=v,t.vizsLoaded=_,t.loadVizsFail=y},"./app/containers/Schedule/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LOAD_SCHEDULES="app/Schedule/LOAD_SCHEDULES",t.LOAD_SCHEDULES_SUCCESS="app/Schedule/LOAD_SCHEDULES_SUCCESS",t.LOAD_SCHEDULES_FAILUER="app/Schedule/LOAD_SCHEDULES_FAILUER",t.ADD_SCHEDULES="app/Schedule/ADD_SCHEDULES",t.ADD_SCHEDULES_SUCCESS="app/Schedule/ADD_SCHEDULES_SUCCESS",t.ADD_SCHEDULES_FAILURE="app/Schedule/ADD_SCHEDULES_FAILURE",t.UPDATE_SCHEDULES="app/Schedule/UPDATE_SCHEDULES",t.UPDATE_SCHEDULES_SUCCESS="app/Schedule/UPDATE_SCHEDULES_SUCCESS",t.UPDATE_SCHEDULES_FAILURE="app/Schedule/UPDATE_SCHEDULES_FAILURE",t.DELETE_SCHEDULES="app/Schedule/DELETE_SCHEDULES",t.DELETE_SCHEDULES_SUCCESS="app/Schedule/DELETE_SCHEDULES_SUCCESS",t.DELETE_SCHEDULES_FAILURE="app/Schedule/DELETE_SCHEDULES_FAILURE",t.CHANGE_SCHEDULE_STATUS="app/Schedule/CHANGE_SCHEDULE_STATUS",t.CHANGE_SCHEDULE_STATUS_SUCCESS="app/Schedule/CHANGE_SCHEDULE_STATUS_SUCCESS",t.CHANGE_SCHEDULE_STATUS_FAILURE="app/Schedule/CHANGE_SCHEDULE_STATUS_FAILURE",t.LOAD_VIZS="app/Schedule/LOAD_VIZS",t.LOAD_VIZS_SUCCESS="app/Schedule/LOAD_VIZS_SUCCESS",t.LOAD_VIZS_FAILUER="app/Schedule/LOAD_VIZS_FAILUER"},"./app/containers/Schedule/index.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e){return{onLoadVizs:function(t){return e(T.loadVizs(t))},onLoadWidgets:function(t){return e(M.loadWidgets(t))},onLoadSchedules:function(t){return e(T.loadSchedules(t))},onLoadDashboards:function(){return E.promiseDispatcher(e,C.loadDashboards)},onAddSchedule:function(t,n){return e(T.addSchedule(t,n))},onUpdateSchedule:function(t,n){return e(T.updateSchedule(t,n))},onLoadDashboardDetail:function(t){return E.promiseDispatcher(e,C.loadDashboardDetail,t)},onDeleteSchedule:function(t){return function(){return e(T.deleteSchedule(t))}},onChangeCurrentJobStatus:function(t,n){return e(T.changeSchedulesStatus(t,n))}}}var l=function(){function e(e,t){for(var n=0;n-1){var o=parseInt(e.replace("(p)",""),10),a=t.find(function(e,t){return"portal"===e.contentType}).children,i=n.getCurrentListById(a,o);return n.getIdByArray(i)}return{id:parseInt(e.replace("(d)",""),10),contentType:"display"}})},n.getCurrentListById=function(e,t){function n(e){for(var o=0;o2){var r=e.to,o=e.cc,a=e.subject,i=e.bcc;n.configForm.setFieldsValue({to:r,cc:o,subject:a,bcc:i})}})},n.onTreeSelect=function(e){return e},n.onTreeChange=function(e){console.log(e),n.setState({dashboardTreeValue:e})},n.onLoadTreeData=function(e){var t=e.props.eventKey;return new Promise(function(e){n.props.onLoadDashboardDetail(t).then(function(){var e=n.props,r=e.currentDashboard,o=e.widgets,a=n.state.dashboardTree,i=function(e){return r.widgets.map(function(t){return Object.assign({},t,{label:e+" / "+o.find(function(e){return e.id===t.widget_id}).name,key:t.id,value:t.id+"(w)",type:"widget",isLeaf:!0})})},s=a.map(function(e){return""+e.key===t?Object.assign({},e,{children:i(e.name)}):e});n.setState({dashboardTree:s})}),e()})},n.onChangeRange=function(e){var t=["month","hour","week","time"];n.setState({rangeTime:e}),t.map(function(e){if("time"===e)return e;n.scheduleForm.setFieldsValue(r({},e,void 0))})},n.formatStatusIcon=function(e){switch(e){case"new":return"caret-right";case"failed":return"reload";case"started":return"pause";case"stopped":default:return"caret-right"}},n.formatStatusText=function(e){return{new:"启动",failed:"重启",started:"暂停",stopped:"启动"}[e]},n.changeStatus=function(e){return function(){var t=e.id,r=e.jobStatus;(0,n.props.onChangeCurrentJobStatus)(t,r)}},n.state={emailConfig:{},formType:"add",tableSource:[],configType:"add",dashboardTree:[],formVisible:!1,configVisible:!1,dashboardTreeValue:[],rangeTime:"Minute",screenWidth:0},n}return i(t,e),l(t,[{key:"componentWillMount",value:function(){var e=this,t=this.props.params.pid;this.props.onLoadWidgets(t),this.props.onLoadVizs(t),this.props.onLoadDashboards().then(function(){var t=e.props.dashboards,n=t.map(function(e){return Object.assign({},e,{label:e.name,key:e.id,value:e.id+"(d)",type:"dashboard"})});e.setState({dashboardTree:n,screenWidth:document.documentElement.clientWidth})}),this.props.onLoadSchedules(t)}},{key:"componentWillReceiveProps",value:function(e){var t=this;window.onresize=function(){return t.setState({screenWidth:document.documentElement.clientWidth})},e.schedule&&this.setState({tableSource:e.schedule.map(function(e){return e.key=e.id,e})})}},{key:"render",value:function(){var e=this,t=this.state,n=t.formType,r=t.configType,o=t.tableSource,a=t.formVisible,i=t.configVisible,s=t.dashboardTree,l=t.dashboardTreeValue,u=this.props,d=u.onDeleteSchedule,p=u.currentProject,h=u.tableLoading,m=u.formLoading,g=u.vizs,b={defaultPageSize:20,showSizeChanger:!0,total:o.length},v=H.default(p,"schedule",!0)(R),_=[{title:"名称",dataIndex:"name",key:"name"},{title:"描述",dataIndex:"description",key:"desc"},{title:"类型",dataIndex:"jobType",key:"job_type"},{title:"开始时间",dataIndex:"startDate",key:"start_date"},{title:"结束时间",dataIndex:"endDate",key:"end_date"},{title:"状态",dataIndex:"jobStatus",key:"job_status"},{title:"操作",key:"action",width:135,className:""+z.textAlignCenter,render:function(t,n){return c.createElement("span",{className:"ant-table-action-column"},c.createElement(N,{title:""+e.formatStatusText(n.jobStatus)},c.createElement(R,{icon:e.formatStatusIcon(n.jobStatus),shape:"circle",type:"ghost",onClick:e.changeStatus(n)})),c.createElement(N,{title:"修改"},c.createElement(R,{icon:"edit",shape:"circle",type:"ghost",onClick:e.showDetail(n.id)})),c.createElement(F,{title:"确定删除?",placement:"bottom",onConfirm:d(n.id)},V))}}],y=[c.createElement(R,{key:"back",size:"large",onClick:this.hideForm},"取 消"),c.createElement(R,{key:"submit",size:"large",type:"primary",loading:m,disabled:m,onClick:this.onScheduleOk},"保 存")],A=[c.createElement(R,{key:"back",size:"large",onClick:this.hideConfigForm},"取 消"),c.createElement(R,{key:"submit",size:"large",type:"primary",onClick:this.onConfigModalOk},"保 存")],x=p&&p.id?p.id:void 0;return c.createElement(f.default,null,Y,c.createElement(f.default.Title,null,c.createElement(D,null,c.createElement(P,{span:24},c.createElement(U,{className:z.breadcrumb},W)))),c.createElement(f.default.Body,null,c.createElement(O.default,null,c.createElement(O.default.Header,null,G,c.createElement(O.default.Tools,null,c.createElement(N,{placement:"bottom",title:"新增"},c.createElement(v,{type:"primary",icon:"plus",onClick:this.showAdd})))),c.createElement(O.default.Body,null,c.createElement(D,null,c.createElement(P,{span:24},c.createElement(I,{dataSource:o,columns:_,pagination:b,loading:h,bordered:!0}))),c.createElement(L,{title:("add"===n?"新增":"修改")+"schedule",maskClosable:!1,visible:a,footer:y,onCancel:this.hideForm},c.createElement(S.default,{type:n,projectId:x,rangeTime:this.state.rangeTime,changeRange:this.onChangeRange,configValue:JSON.stringify(this.state.emailConfig),onShowConfig:this.showConfig,ref:function(t){e.scheduleForm=t}})),c.createElement(L,{title:("add"===r?"新增":"修改")+"config",wrapClassName:"ant-modal-large",maskClosable:!1,visible:i,footer:A,onCancel:this.hideConfigForm},c.createElement(k.default,{type:r,vizs:g,dashboardTree:s,treeSelect:this.onTreeSelect,treeChange:this.onTreeChange,loadTreeData:this.onLoadTreeData,dashboardTreeValue:l,ref:function(t){e.configForm=t}}))))))}}]),t}(c.Component);t.Schedule=Q;var q=m.createStructuredSelector({widgets:j.makeSelectWidgets(),schedule:j.makeSelectSchedule(),dashboards:j.makeSelectDashboards(),currentDashboard:j.makeSelectCurrentDashboard(),currentProject:w.makeSelectCurrentProject(),tableLoading:j.makeSelectTableLoading(),formLoading:j.makeSelectFormLoading(),vizs:j.makeSelectVizs()}),K=u.connect(q,s),X=b.default({key:"schedule",reducer:_.default}),J=v.default({key:"schedule",saga:y.default}),Z=b.default({key:"widget",reducer:A.default}),$=v.default({key:"widget",saga:x.default});t.default=g.compose(X,Z,J,$,K)(Q)},"./app/containers/Schedule/reducer.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l,t=arguments[1],n=t.type,r=t.payload,o=e.get("schedule");e.get("dashboards");switch(n){case s.LOAD_WIDGETS_SUCCESS:return e.set("widgets",r.widgets);case i.LOAD_DASHBOARDS_SUCCESS:return e.set("dashboards",r.dashboards);case i.LOAD_DASHBOARD_DETAIL_SUCCESS:return e.set("currentDashboard",r.dashboard);case a.LOAD_SCHEDULES:return e.set("tableLoading",!0);case a.LOAD_SCHEDULES_SUCCESS:return e.set("schedule",r.schedules).set("tableLoading",!1);case a.LOAD_SCHEDULES_FAILUER:return e.set("tableLoading",!1);case a.ADD_SCHEDULES:return e.set("formLoading",!0);case a.ADD_SCHEDULES_SUCCESS:return o?(o.unshift(r.result),e.set("schedule",o.slice()).set("formLoading",!1)):e.set("schedule",[r.result]).set("formLoading",!1);case a.ADD_SCHEDULES_FAILURE:return e.set("formLoading",!1);case a.DELETE_SCHEDULES:return e;case a.DELETE_SCHEDULES_SUCCESS:return e.set("schedule",o.filter(function(e){return e.id!==r.id}));case a.CHANGE_SCHEDULE_STATUS:return e;case a.CHANGE_SCHEDULE_STATUS_SUCCESS:return e.set("schedule",o.map(function(e){return e.id===r.id?r.schedules:e}));case a.CHANGE_SCHEDULE_STATUS_FAILURE:return e;case a.UPDATE_SCHEDULES:return e.set("formLoading",!0);case a.UPDATE_SCHEDULES_SUCCESS:return e.set("schedule",o.map(function(e){return e.id===r.result.id?r.result:e})).set("formLoading",!1);case a.UPDATE_SCHEDULES_FAILURE:return e.set("formLoading",!1);case a.LOAD_VIZS_SUCCESS:return e.set("vizs",r.result);case a.LOAD_VIZS_FAILUER:default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/immutable/dist/immutable.js"),a=n("./app/containers/Schedule/constants.ts"),i=n("./app/containers/Dashboard/constants.ts"),s=n("./app/containers/Widget/constants.ts"),l=o.fromJS({widgets:!1,schedule:!1,dashboards:!1,currentDashboard:!1,tableLoading:!1,formLoading:!1,vizs:!1});t.default=r},"./app/containers/Schedule/sagas.ts":function(e,t,n){"use strict";function r(e){var t,n,r=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,v.call(A.default,x.default.schedule+"?projectId="+r.pid);case 3:return t=e.sent,n=w.readListAdapter(t),e.next=7,v.put(y.schedulesLoaded(n));case 7:e.next=14;break;case 9:return e.prev=9,e.t0=e.catch(0),e.next=13,v.put(y.loadSchedulesFail());case 13:j.errorHandler(e.t0);case 14:case"end":return e.stop()}},u,this,[[0,9]])}function o(e){var t,n,r=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,v.call(A.default,{method:"post",url:x.default.schedule,data:r.schedule});case 3:return t=e.sent,n=w.readObjectAdapter(t),e.next=7,v.put(y.scheduleAdded(n));case 7:r.resolve(),e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(0),e.next=14,v.put(y.addScheduleFail());case 14:j.errorHandler(e.t0);case 15:case"end":return e.stop()}},d,this,[[0,10]])}function a(e){var t=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,v.call(A.default,{method:"delete",url:x.default.schedule+"/"+t.id});case 3:return e.next=5,v.put(y.scheduleDeleted(t.id));case 5:e.next=12;break;case 7:return e.prev=7,e.t0=e.catch(0),e.next=11,v.put(y.deleteScheduleFail());case 11:j.errorHandler(e.t0);case 12:case"end":return e.stop()}},p,this,[[0,7]])}function i(e){var t,n,r,o=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,t="",e.t0=o.currentStatus,e.next="new"===e.t0?5:"failed"===e.t0?7:"started"===e.t0?9:"stopped"===e.t0?11:13;break;case 5:case 7:return t="start",e.abrupt("break",14);case 9:return t="stop",e.abrupt("break",14);case 11:return t="start",e.abrupt("break",14);case 13:return e.abrupt("break",14);case 14:return e.next=16,v.call(A.default,{method:"post",url:x.default.schedule+"/"+t+"/"+o.id});case 16:return n=e.sent,r=w.readObjectAdapter(n),e.next=20,v.put(y.currentScheduleStatusChanged(o.id,r));case 20:e.next=27;break;case 22:return e.prev=22,e.t1=e.catch(0),e.next=26,v.put(y.changeSchedulesStatusFail());case 26:j.errorHandler(e.t1);case 27:case"end":return e.stop()}},f,this,[[0,22]])}function s(e){var t,n,r=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,v.call(A.default,{method:"put",url:x.default.schedule+"/"+r.schedule.id,data:r.schedule});case 3:return t=e.sent,n=w.readObjectAdapter(t),e.next=7,v.put(y.scheduleUpdated(n));case 7:r.resolve(),e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(0),e.next=14,v.put(y.updateScheduleFail());case 14:j.errorHandler(e.t0);case 15:case"end":return e.stop()}},h,this,[[0,10]])}function l(e){var t,n,r,o,a,i,s,l,c,u=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return c=function(e){function t(e,n){for(var r in e)if(e[r].children){e[r]=Object.assign({},e[r],{contentType:"portal",label:""+e[r].name,key:e[r].name,value:e[r].id+"(p)",isLeaf:!0}),n.push(e[r]);var o=e[r].children;e[r].children=[],t(o,e[r].children)}else e[r]=Object.assign({},e[r],{contentType:"portal",label:""+e[r].name,key:e[r].name,value:e[r].id+"(p)",isLeaf:!0}),n.push(e[r])}var n={},r={},o=[];e.forEach(function(t,r){return n[e[r].id]=e[r]});for(var a in n)n[a].parentId?(n[n[a].parentId].children||(n[n[a].parentId].children={}),n[n[a].parentId].children[n[a].id]=n[a]):r[n[a].id]=n[a];return t(r,o),o},t=u.pid,e.prev=2,e.next=5,v.call(A.default,x.default.display+"?projectId="+t);case 5:return n=e.sent,e.next=8,v.call(A.default,x.default.portal+"?projectId="+t);case 8:return r=e.sent,o=w.readListAdapter(r),a=w.readListAdapter(n).map(function(e){return Object.assign({},e,{contentType:"display",label:""+e.name,key:e.name,value:e.id+"(d)",isLeaf:!0})}),e.next=13,v.all(o.map(function(e,t){return v.call(A.default,x.default.portal+"/"+e.id+"/dashboards")}));case 13:return i=e.sent,s=o.map(function(e,t){return e.children=c(w.readListAdapter(i[t])),Object.assign({},e,{contentType:"portal",label:""+e.name,key:e.name,value:e.id+"(p)",isLeaf:!0})}),l=[{contentType:"display",label:"Display",key:"display",value:"display",isLeaf:!0,children:a},{contentType:"portal",label:"Dashboard",key:"portal",value:"portal",isLeaf:!0,children:s}],e.next=18,v.put(y.vizsLoaded(l));case 18:e.next=25;break;case 20:return e.prev=20,e.t0=e.catch(2),e.next=24,v.put(y.loadVizsFail());case 24:E.error("获取失败");case 25:case"end":return e.stop()}},m,this,[[2,20]])}function c(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[b.takeEvery(_.LOAD_SCHEDULES,r),b.takeEvery(_.ADD_SCHEDULES,o),b.takeEvery(_.DELETE_SCHEDULES,a),b.takeEvery(_.CHANGE_SCHEDULE_STATUS,i),b.takeEvery(_.UPDATE_SCHEDULES,s),b.takeEvery(_.LOAD_VIZS,l)];case 2:case"end":return e.stop()}},g,this)}var u=regeneratorRuntime.mark(r),d=regeneratorRuntime.mark(o),p=regeneratorRuntime.mark(a),f=regeneratorRuntime.mark(i),h=regeneratorRuntime.mark(s),m=regeneratorRuntime.mark(l),g=regeneratorRuntime.mark(c);Object.defineProperty(t,"__esModule",{value:!0});var b=n("./node_modules/redux-saga/es/index.js"),v=n("./node_modules/redux-saga/es/effects.js"),_=n("./app/containers/Schedule/constants.ts"),y=n("./app/containers/Schedule/actions.ts"),A=n("./app/utils/request.ts"),x=n("./app/utils/api.js"),w=n("./app/utils/asyncAdapter.js"),j=n("./app/utils/util.ts"),E=n("./node_modules/antd/lib/message/index.js");t.getSchedules=r,t.addSchedules=o,t.deleteSchedule=a,t.changeScheduleStatus=i,t.updateSchedule=s,t.getVizsData=l,t.default=c},"./app/containers/Schedule/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("schedule")};t.selectSchedule=o;var a=function(){return r.createSelector(o,function(e){return e.get("schedule")})};t.makeSelectSchedule=a;var i=function(){return r.createSelector(o,function(e){return e.get("dashboards")})};t.makeSelectDashboards=i;var s=function(){return r.createSelector(o,function(e){return e.get("currentDashboard")})};t.makeSelectCurrentDashboard=s;var l=function(){return r.createSelector(o,function(e){return e.get("widgets")})};t.makeSelectWidgets=l;var c=function(){return r.createSelector(o,function(e){return e.get("tableLoading")})};t.makeSelectTableLoading=c;var u=function(){return r.createSelector(o,function(e){return e.get("formLoading")})};t.makeSelectFormLoading=u;var d=function(){return r.createSelector(o,function(e){return e.get("vizs")})};t.makeSelectVizs=d},"./app/containers/Source/SourceForm.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2],o=e.props,a=o.onCheckUniqueName,i=o.type,s=o.projectId,l=o.form,c=l.getFieldsValue(),u=c.id;a("source",{projectId:s,id:"add"===i?"":u,name:n},function(){r()},function(e){r(e)})},e}return a(t,e),s(t,[{key:"render",value:function(){var e=this.props,t=e.testLoading,n=e.form,r=e.onTestSourceConnection,o=n.getFieldDecorator,a={labelCol:{span:6},wrapperCol:{span:16}};return l.createElement(c,null,l.createElement(u,{gutter:8},l.createElement(d,{span:24},l.createElement(m,{className:b.hide},o("id",{hidden:"add"===this.props.type})(v)),l.createElement(m,i({label:"名称"},a,{hasFeedback:!0}),o("name",{rules:[{required:!0,message:"Name 不能为空"},{validator:this.checkNameUnique}]})(_))),l.createElement(d,{span:24},l.createElement(m,i({label:"类型"},a),o("type",{initialValue:"jdbc"})(y))),l.createElement(d,{span:24},l.createElement(m,i({label:"用户名"},a),o("user",{rules:[{required:!0,message:"User 不能为空"}],initialValue:""})(A))),l.createElement(d,{span:24},l.createElement(m,i({label:"密码"},a),o("password",{rules:[{required:!0,message:"Password 不能为空"}],initialValue:""})(x))),l.createElement(d,{span:24},l.createElement(m,i({label:"连接Url"},a),o("url",{rules:[{required:!0,message:"Url 不能为空"}],initialValue:""})(l.createElement(p,{placeholder:"Connection Url",addonAfter:t?w:l.createElement("span",{onClick:r,style:{cursor:"pointer"}},"点击测试")})))),l.createElement(d,{span:24},l.createElement(m,i({label:"描述"},a),o("desc",{initialValue:""})(l.createElement(p,{placeholder:"Description",type:"textarea",autosize:{minRows:2,maxRows:6}})))),l.createElement(d,{span:24},l.createElement(m,i({label:"配置信息"},a),o("config",{initialValue:""})(l.createElement(p,{placeholder:"Config",type:"textarea",autosize:{minRows:2,maxRows:6}}))))))}}]),t}(l.PureComponent);t.SourceForm=j,t.default=c.create()(j)},"./app/containers/Source/UploadCsvForm.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=Object.assign||function(e){for(var t=1;t0?[l.createElement("span",{key:t,className:I.highlight},n[0]),e]:e}))}):null}).filter(function(e){return!!e})})},n.testSourceConnection=function(){var e=n.sourceForm.props.form.getFieldsValue(),t=e.user,r=e.password,o=e.url;t&&r&&o?n.props.onTestSourceConnection({username:t,password:r,url:o}):w.error("用户名,密码和连接Url都不能为空")},n.uploadOnchange=function(e){if("uploading"!==e.file.status){0===e.fileList.length&&n.setState({isUploadDisabled:!1})}"done"===e.file.status?(w.success(e.file.name+" file uploaded successfully"),n.setState({formStep:2,isUploadDisabled:!0})):"error"===e.file.status&&w.error(e.file.name+" file upload failed.")},n.state={tableSource:[],tableSortedInfo:{},nameFilterValue:"",nameFilterDropdownVisible:!1,formVisible:!1,formType:"add",uploadFormVisible:!1,formStep:0,metaObj:{},isUploadDisabled:!1,newUploadModalKey:"1",screenWidth:0},n}return a(t,e),s(t,[{key:"componentWillMount",value:function(){this.props.onLoadSources(this.props.params.pid),this.setState({screenWidth:document.documentElement.clientWidth})}},{key:"componentWillReceiveProps",value:function(e){var t=this;window.onresize=function(){return t.setState({screenWidth:document.documentElement.clientWidth})},e.sources&&this.setState({tableSource:e.sources.map(function(e){return e.key=e.id,e})})}},{key:"render",value:function(){var e=this,t=this.state,n=t.tableSource,r=t.tableSortedInfo,o=t.nameFilterValue,a=t.nameFilterDropdownVisible,i=t.formVisible,s=t.uploadFormVisible,c=t.formType,u=t.formStep,d=t.metaObj,p=t.isUploadDisabled,f=t.newUploadModalKey,h=t.screenWidth,m=this.props,g=m.params,b=m.listLoading,w=m.formLoading,M=m.testLoading,D=m.onDeleteSource,P=m.currentProject,N=m.onCheckUniqueName,B=U.default(P,"source",!0)(C),F=U.default(P,"source",!1)(C),W=d.table_name,G=d.source_id,Q=d.replace_mode,q={name:"file",disabled:p,action:R.default.source+"/"+G+"/uploadcsv?tableName="+W+"&mode="+Q,onChange:this.uploadOnchange,headers:{authorization:"Bearer "+localStorage.getItem("TOKEN")}},K=l.createElement(T,{title:"删除"},l.createElement(B,{icon:"delete",shape:"circle",type:"ghost"})),X=[{title:"名称",dataIndex:"name",key:"name",filterDropdown:l.createElement(y.default,{placeholder:"name",value:o,onChange:this.onSearchInputChange,onSearch:this.onSearch}),filterDropdownVisible:a,onFilterDropdownVisibleChange:function(t){return e.setState({nameFilterDropdownVisible:t})},sorter:function(e,t){return e.name>t.name?-1:1},sortOrder:"name"===r.columnKey&&r.order},{title:"描述",dataIndex:"description",key:"description"},{title:"类型",dataIndex:"type",key:"type",filters:[{text:"JDBC",value:"jdbc"},{text:"CSV",value:"csv"}],filterMultiple:!1,onFilter:function(e,t){return t.type===e},render:function(e,t){switch(t.type){case"jdbc":return"JDBC";case"csv":return"CSV"}}},{title:"操作",key:"action",width:135,className:""+(z.initializePermission(P,"sourcePermission")?I.textAlignLeft:I.hide),render:function(t,n){return l.createElement("span",{className:"ant-table-action-column"},l.createElement(T,{title:"修改"},l.createElement(F,{icon:"edit",shape:"circle",type:"ghost",onClick:e.showDetail(n.id)})),l.createElement(O,{title:"确定删除?",placement:"bottom",onConfirm:D(n.id)},K),n&&"csv"===n.type?l.createElement(T,{title:"上传"},l.createElement(F,{icon:"upload",shape:"circle",type:"ghost",onClick:e.showUpload(n.id)})):"")}}],J={simple:h<768||768===h,defaultPageSize:20,showSizeChanger:!0},Z=[l.createElement(C,{key:"submit",size:"large",type:"primary",loading:w,disabled:w,onClick:this.onModalOk},"保 存"),l.createElement(C,{key:"back",size:"large",onClick:this.hideForm},"取 消")],$=u?[l.createElement(C,{key:"submit",size:"large",type:"primary",onClick:this.onUploadFile},"保 存")]:[l.createElement(C,{key:"forward",size:"large",type:"primary",onClick:this.changeFormStep(1)},"下一步")];return l.createElement(v.default,null,H,l.createElement(v.default.Title,null,l.createElement(E,null,l.createElement(S,{span:24},l.createElement(L,{className:I.breadcrumb},V)))),l.createElement(v.default.Body,null,l.createElement(_.default,null,l.createElement(_.default.Header,null,Y,l.createElement(_.default.Tools,null,l.createElement(T,{placement:"bottom",title:"新增"},l.createElement(B,{type:"primary",icon:"plus",onClick:this.showAdd})))),l.createElement(_.default.Body,null,l.createElement(E,null,l.createElement(S,{span:24},l.createElement(k,{dataSource:n,columns:X,pagination:J,loading:b,onChange:this.handleTableChange,bordered:!0}))),l.createElement(j,{title:("add"===c?"新增":"修改")+" Source",wrapClassName:"ant-modal-small",visible:i,footer:Z,onCancel:this.hideForm},l.createElement(A.default,{type:c,projectId:g.pid,testLoading:M,onTestSourceConnection:this.testSourceConnection,onCheckUniqueName:N,wrappedComponentRef:this.refHandlers.sourceForm})),l.createElement(j,{title:"上传CSV",key:f,visible:s,wrapClassName:"ant-modal-small",footer:$,onCancel:this.hideUploadForm},l.createElement(x.default,{step:u,uploadProps:q,wrappedComponentRef:this.refHandlers.uploadForm}))))))}}]),t}(l.PureComponent);t.Source=W,t.mapDispatchToProps=i;var G=d.createStructuredSelector({sources:P.makeSelectSources(),listLoading:P.makeSelectListLoading(),formLoading:P.makeSelectFormLoading(),testLoading:P.makeSelectTestLoading(),currentProject:F.makeSelectCurrentProject()}),Q=u.connect(G,i),q=h.default({key:"source",reducer:g.default}),K=m.default({key:"source",saga:b.default});t.default=f.compose(q,K,Q)(W)},"./app/containers/Source/reducer.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i,t=arguments[1],n=t.type,r=t.payload,a=e.get("sources");switch(n){case o.LOAD_SOURCES:return e.set("listLoading",!0);case o.LOAD_SOURCES_SUCCESS:return e.set("listLoading",!1).set("sources",r.sources);case o.LOAD_SOURCES_FAILURE:return e.set("listLoading",!1);case o.ADD_SOURCE:return e.set("formLoading",!0);case o.ADD_SOURCE_SUCCESS:return a?(a.unshift(r.result),e.set("formLoading",!1).set("sources",a.slice())):e.set("formLoading",!1).set("sources",[r.result]);case o.ADD_SOURCE_FAILURE:return e.set("formLoading",!1);case o.DELETE_SOURCE:return e.set("listLoading",!0);case o.DELETE_SOURCE_SUCCESS:return e.set("listLoading",!1).set("sources",a.filter(function(e){return e.id!==r.id}));case o.DELETE_SOURCE_FAILURE:return e.set("listLoading",!1);case o.LOAD_SOURCE_DETAIL:case o.LOAD_SOURCE_DETAIL_SUCCESS:return e;case o.EDIT_SOURCE:return e.set("formLoading",!0);case o.EDIT_SOURCE_SUCCESS:return a.splice(a.findIndex(function(e){return e.id===r.result.id}),1,r.result),e.set("formLoading",!1).set("sources",a.slice());case o.EDIT_SOURCE_FAILURE:return e.set("formLoading",!1);case o.TEST_SOURCE_CONNECTION:return e.set("testLoading",!0);case o.TEST_SOURCE_CONNECTION_SUCCESS:case o.TEST_SOURCE_CONNECTION_FAILURE:return e.set("testLoading",!1);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Source/constants.ts"),a=n("./node_modules/immutable/dist/immutable.js"),i=a.fromJS({sources:!1,listLoading:!1,formLoading:!1,testLoading:!1});t.default=r},"./app/containers/Source/sagas.ts":function(e,t,n){"use strict";function r(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,o.prev=1,o.next=4,y.call(w.default,j.default.source+"?projectId="+t.projectId);case 4:return n=o.sent,r=E.readListAdapter(n),o.next=8,y.put(x.sourcesLoaded(r));case 8:o.next=15;break;case 10:return o.prev=10,o.t0=o.catch(1),o.next=14,y.put(x.loadSourceFail());case 14:S.errorHandler(o.t0);case 15:case"end":return o.stop()}},d,this,[[1,10]])}function o(e){var t,n;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=e.payload,r.prev=1,r.next=4,y.call(w.default,{method:"post",url:j.default.source,data:t.source});case 4:return n=r.sent,t.resolve(),r.next=8,y.put(x.sourceAdded(n.payload));case 8:r.next=15;break;case 10:return r.prev=10,r.t0=r.catch(1),r.next=14,y.put(x.addSourceFail());case 14:S.errorHandler(r.t0);case 15:case"end":return r.stop()}},p,this,[[1,10]])}function a(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,o.prev=1,o.next=4,y.call(w.default,{method:"delete",url:j.default.source+"/"+t.id});case 4:return n=o.sent,r=n.header.code,o.next=8,y.put(x.sourceDeleted(t.id));case 8:o.next=15;break;case 10:return o.prev=10,o.t0=o.catch(1),o.next=14,y.put(x.deleteSourceFail());case 14:S.errorHandler(o.t0);case 15:case"end":return o.stop()}},f,this,[[1,10]])}function i(e){var t,n;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=e.payload,r.prev=1,r.next=4,y.call(w.default,j.default.source+"/"+t.id);case 4:return n=r.sent,r.next=7,y.put(x.sourceDetailLoaded(n));case 7:r.next=14;break;case 9:return r.prev=9,r.t0=r.catch(1),r.next=13,y.put(x.loadSourceDetailFail());case 13:S.errorHandler(r.t0);case 14:case"end":return r.stop()}},h,this,[[1,9]])}function s(e){var t,n,r,o,a,i,s,l,c,u,d;return regeneratorRuntime.wrap(function(p){for(;;)switch(p.prev=p.next){case 0:return t=e.payload,n=t.source,r=t.resolve,o=n.config,a=n.description,i=n.id,s=n.name,l=n.type,p.prev=2,p.next=5,y.call(w.default,{method:"put",url:j.default.source+"/"+n.id,data:{config:o,description:a,id:i,name:s,type:l}});case 5:return c=o.password,u=o.url,d=o.username,n.config=JSON.stringify(o),n.password=c,n.jdbcUrl=u,n.username=d,p.next=12,y.put(x.sourceEdited(n));case 12:r(),p.next=20;break;case 15:return p.prev=15,p.t0=p.catch(2),p.next=19,y.put(x.editSourceFail());case 19:S.errorHandler(p.t0);case 20:case"end":return p.stop()}},m,this,[[2,15]])}function l(e){var t,n;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=e.payload,r.prev=1,r.next=4,y.call(w.default,{method:"post",url:j.default.source+"/test",data:t.url});case 4:return n=r.sent,r.next=7,y.put(x.sourceConnected());case 7:k.success("测试成功"),r.next=15;break;case 10:return r.prev=10,r.t0=r.catch(1),r.next=14,y.put(x.testSourceConnectionFail());case 14:S.errorHandler(r.t0);case 15:case"end":return r.stop()}},g,this,[[1,10]])}function c(e){var t,n,r,o,a,i,s,l;return regeneratorRuntime.wrap(function(c){for(;;)switch(c.prev=c.next){case 0:return t=e.payload,n=t.resolve,r=t.reject,o=e.payload.csvMeta,a=o.source_id,i=o.replace_mode,s=o.table_name,c.prev=2,c.next=5,y.call(w.default,{url:j.default.source+"/"+a+"/csvmeta",method:"post",data:{mode:i,tableName:s}});case 5:l=c.sent,l&&l.header&&200===l.header.code?n():r(l.header.msg),c.next=12;break;case 9:c.prev=9,c.t0=c.catch(2),r(c.t0);case 12:case"end":return c.stop()}},b,this,[[2,9]])}function u(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[_.takeLatest(A.LOAD_SOURCES,r),_.takeEvery(A.ADD_SOURCE,o),_.takeEvery(A.DELETE_SOURCE,a),_.takeLatest(A.LOAD_SOURCE_DETAIL,i),_.takeEvery(A.EDIT_SOURCE,s),_.takeEvery(A.TEST_SOURCE_CONNECTION,l),_.takeEvery(A.GET_CSV_META_ID,c)];case 2:case"end":return e.stop()}},v,this)}var d=regeneratorRuntime.mark(r),p=regeneratorRuntime.mark(o),f=regeneratorRuntime.mark(a),h=regeneratorRuntime.mark(i),m=regeneratorRuntime.mark(s),g=regeneratorRuntime.mark(l),b=regeneratorRuntime.mark(c),v=regeneratorRuntime.mark(u);Object.defineProperty(t,"__esModule",{value:!0});var _=n("./node_modules/redux-saga/es/index.js"),y=n("./node_modules/redux-saga/es/effects.js"),A=n("./app/containers/Source/constants.ts"),x=n("./app/containers/Source/actions.ts"),w=n("./app/utils/request.ts"),j=n("./app/utils/api.js"),E=n("./app/utils/asyncAdapter.js"),S=n("./app/utils/util.ts"),k=n("./node_modules/antd/lib/message/index.js");t.getSources=r,t.addSource=o,t.deleteSource=a,t.getSourceDetail=i,t.editSource=s,t.testSourceConnection=l,t.getCsvMetaId=c,t.default=u},"./app/containers/Source/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("source")};t.selectSource=o;var a=function(){return r.createSelector(o,function(e){return e.get("sources")})};t.makeSelectSources=a;var i=function(){return r.createSelector(o,function(e){return e.get("listLoading")})};t.makeSelectListLoading=i;var s=function(){return r.createSelector(o,function(e){return e.get("formLoading")})};t.makeSelectFormLoading=s;var l=function(){return r.createSelector(o,function(e){return e.get("testLoading")})};t.makeSelectTestLoading=l},"./app/containers/Source/upload.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Source/upload.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Teams/Team.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Teams/Team.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Teams/Team.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{onEditTeam:function(t){return e(j.editTeam(t))},onLoadTeams:function(){return e(j.loadTeams())},onDeleteTeam:function(t,n){return e(j.deleteTeam(t,n))},onLoadTeamProjects:function(t){return e(j.loadTeamProjects(t))},onLoadTeamMembers:function(t){return e(j.loadTeamMembers(t))},onLoadTeamTeams:function(t){return e(j.loadTeamTeams(t))},onDeleteTeamProject:function(t){return e(j.deleteTeamProject(t))},onDeleteTeamMember:function(t){return e(j.deleteTeamMember(t))},onChangeTeamMemberRole:function(t,n){return e(j.changeTeamMemberRole(t,n))},onLoadTeamDetail:function(t,n){return e(j.loadTeamDetail(t,n))},onLoadOrganizationProjects:function(t){return e(T.loadOrganizationProjects(t))},onLoadOrganizationMembers:function(t){return e(T.loadOrganizationMembers(t))},onLoadOrganizationTeams:function(t){return e(T.loadOrganizationTeams(t))},onPullProjectInTeam:function(t,n,r){return e(j.pullProjectInTeam(t,n,r))},onPullMemberInTeam:function(t,n,r){return e(j.pullMemberInTeam(t,n,r))},onUpdateTeamProjectPermission:function(t,n,r){return e(j.updateTeamProjectPermission(t,n,r))}}}var s=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:n.props.params.teamId,t=n.props,r=t.onLoadTeamProjects,o=t.onLoadTeamMembers,a=t.onLoadTeamTeams,i=t.onLoadTeamDetail,s=t.onLoadOrganizationProjects,l=t.onLoadOrganizationMembers,c=t.onLoadOrganizationTeams;r(Number(e)),o(Number(e)),a(Number(e)),i(Number(e),function(e){var t=e.organization.id;s({id:Number(t)}),l(Number(t)),c(Number(t))})},n.toThatTeam=function(e){e&&n.props.router.push(e)},n.computeTeamNum=function(e,t){for(var r=0;r0&&n.computeTeamNum(e[r].children,t)},n.deleteProject=function(e,t){return function(){e.stopPropagation(),t&&n.props.onDeleteTeamProject(t)}},n.pullProjectInTeam=function(e){var t=n.props,r=t.onPullProjectInTeam,o=t.onLoadTeamDetail,a=t.params.teamId;e&&r(Number(a),e,function(){o(Number(a))})},n.createTeamRouter=function(e){function t(e,n){return n&&n.hasOwnProperty("id")&&n.hasOwnProperty("name")&&(e.push({id:n.id,name:n.name}),n.hasOwnProperty("child")&&""!==n.child&&t(e,n.child)),e}var n=[];return t(n,e),n},n.deleteTeam=function(e){return function(){n.props.onDeleteTeam(e,function(){n.props.router.push("/account/teams")})}},n.editTeam=function(e){return function(){var t=Object.assign({},e);delete t.parentTeamId,n.props.onEditTeam(t)}},n.teamTeams=[],n}return a(t,e),s(t,[{key:"componentWillMount",value:function(){(0,this.props.onLoadTeams)(),this.loadDatas()}},{key:"componentWillReceiveProps",value:function(e){var t=this,n=this.props.params.teamId,r=e.params.teamId,o=e.currentTeamTeams;e.currentTeamMembers;n!==r&&this.loadDatas(r),this.teamTeams=[],this.computeTeamNum(o,this.teamTeams),this.teamTeams.filter(function(e,n){return t.teamTeams.indexOf(e)===n})}},{key:"render",value:function(){var e=this.props,t=e.teamRouter,n=e.currentTeam,r=e.currentTeamProjects,o=e.currentTeamTeams,a=e.currentTeamMembers,i=e.currentOrganizationProjects,s=e.currentOrganizationMembers,c=n.avatar,u=n.name,w=r.length,j=a.length,E=this.teamTeams.length,S=this.createTeamRouter(t);return l.createElement(p.default,null,l.createElement(p.default.Header,null,l.createElement(p.default.Title,null,l.createElement(A,{className:v.breadcrumb},M,S?S.map(function(e){return l.createElement(A.Item,{key:e.name+"@@@"+e.id},l.createElement(d.Link,{to:"/account/team/"+e.id},e.name))}):""))),l.createElement(p.default.Body,null,l.createElement("div",{className:b.teamLogo},l.createElement(x.default,{path:c,enlarge:!1,size:"small"}),l.createElement("div",{className:b.title},u)),l.createElement(_,null,l.createElement(y,{tab:l.createElement("span",null,O,"项目",l.createElement("span",{className:b.badge},w)),key:"projects"},l.createElement(h.default,{deleteProject:this.deleteProject,currentTeam:n,currentTeamProjects:r,currentOrganizationProjects:i,pullProjectInTeam:this.pullProjectInTeam,onUpdateTeamProjectPermission:this.props.onUpdateTeamProjectPermission})),l.createElement(y,{tab:l.createElement("span",null,L,"成员",l.createElement("span",{className:b.badge},j)),key:"members"},l.createElement(f.default,{currentTeam:n,deleteTeamMember:this.props.onDeleteTeamMember,pullMemberInTeam:this.props.onPullMemberInTeam,onLoadTeamMembers:this.props.onLoadTeamMembers,changeTeamMemberRole:this.props.onChangeTeamMemberRole,currentTeamMembers:a,currentOrganizationMembers:s})),l.createElement(y,{tab:l.createElement("span",null,D,"团队",l.createElement("span",{className:b.badge},E)),key:"teams"},l.createElement(g.default,{toThatTeam:this.toThatTeam,currentTeam:n,currentTeamTeams:o})),n&&1===n.role?l.createElement(y,{tab:P,key:"settings"},l.createElement(m.default,{teams:this.props.teams,currentTeam:n,editTeam:this.editTeam,deleteTeam:this.deleteTeam})):"")))}}]),t}(l.Component);t.Teams=I;var R=E.createStructuredSelector({loginUser:S.makeSelectLoginUser(),teams:k.makeSelectTeams(),teamRouter:k.makeSelectTeamRouter(),currentTeam:k.makeSelectCurrentTeams(),currentTeamProjects:k.makeSelectCurrentTeamProjects(),currentTeamTeams:k.makeSelectCurrentTeamTeams(),currentTeamMembers:k.makeSelectCurrentTeamMembers(),currentOrganizationProjects:C.makeSelectCurrentOrganizationProjects(),currentOrganizationTeams:C.makeSelectCurrentOrganizationTeams(),currentOrganizationMembers:C.makeSelectCurrentOrganizationMembers()});t.mapDispatchToProps=i;var N=c.connect(R,i);t.default=w.compose(N)(I)},"./app/containers/Teams/actions.ts":function(e,t,n){"use strict";function r(){return{type:H.LOAD_TEAMS}}function o(e){return{type:H.LOAD_TEAMS_SUCCESS,payload:{teams:e}}}function a(){return{type:H.LOAD_TEAMS_FAILURE}}function i(e){return{type:H.EDIT_TEAM,payload:{team:e}}}function s(e){return{type:H.EDIT_TEAM_SUCCESS,payload:{result:e}}}function l(){return{type:H.EDIT_TEAM_FAILURE}}function c(e,t){return{type:H.DELETE_TEAM,payload:{id:e,resolve:t}}}function u(e){return{type:H.DELETE_TEAM_SUCCESS,payload:{id:e}}}function d(){return{type:H.DELETE_TEAM_FAILURE}}function p(e,t){return{type:H.LOAD_TEAM_DETAIL,payload:{id:e,resolve:t}}}function f(e){return{type:H.LOAD_TEAM_DETAIL_SUCCESS,payload:{team:e}}}function h(e,t){return{type:H.LOAD_TEAM_DETAIL_FAILURE,payload:{team:e,widgets:t}}}function m(e){return{type:H.LOAD_TEAM_PROJECTS,payload:{id:e}}}function g(e){return{type:H.LOAD_TEAM_PROJECTS_SUCCESS,payload:{projects:e}}}function b(){return{type:H.LOAD_TEAM_PROJECTS_FAILURE}}function v(e){return{type:H.LOAD_TEAM_MEMBERS,payload:{id:e}}}function _(e){return{type:H.LOAD_TEAM_MEMBERS_SUCCESS,payload:{members:e}}}function y(){return{type:H.LOAD_TEAM_MEMBERS_FAILURE}}function A(e){return{type:H.LOAD_TEAM_TEAMS,payload:{id:e}}}function x(e){return{type:H.LOAD_TEAM_TEAMS_SUCCESS,payload:{teams:e}}}function w(){return{type:H.LOAD_TEAM_TEAMS_FAILURE}}function j(e,t,n){return{type:H.PULL_PROJECT_IN_TEAM,payload:{id:e,projectId:t,resolve:n}}}function E(e){return{type:H.PULL_PROJECT_IN_TEAM_SUCCESS,payload:{result:e}}}function S(){return{type:H.PULL_PROJECT_IN_TEAM_FAILURE}}function k(e,t,n){return{type:H.UPDATE_TEAM_PROJECT_PERMISSION,payload:{relationId:e,relTeamProjectDto:t,resolve:n}}}function C(e){return{type:H.UPDATE_TEAM_PROJECT_PERMISSION_SUCCESS,payload:{result:e}}}function T(){return{type:H.UPDATE_TEAM_PROJECT_PERMISSION_FAILURE}}function M(e){return{type:H.DELETE_TEAM_PROJECT,payload:{relationId:e}}}function O(e){return{type:H.DELETE_TEAM_PROJECT_SUCCESS,payload:{id:e}}}function L(){return{type:H.DELETE_TEAM_PROJECT_FAILURE}}function D(e){return{type:H.DELETE_TEAM_MEMBER,payload:{relationId:e}}}function P(e){return{type:H.DELETE_TEAM_MEMBER_SUCCESS,payload:{id:e}}}function I(){return{type:H.DELETE_TEAM_MEMBER_ERROR}}function R(e,t,n){return{type:H.PULL_MEMBER_IN_TEAM,payload:{teamId:e,memberId:t,resolve:n}}}function N(e){return{type:H.PULL_MEMBER_IN_TEAM_SUCCESS,payload:{result:e}}}function B(){return{type:H.PULL_MEMBRE_IN_TEAM_FAILURE}}function F(e,t){return{type:H.CHANGE_MEMBER_ROLE_TEAM,payload:{relationId:e,newRole:t}}}function U(e,t){return{type:H.CHANGE_MEMBER_ROLE_TEAM_SUCCESS,payload:{relationId:e,newRole:t}}}function z(){return{type:H.CHANGE_MEMBER_ROLE_TEAM_ERROR}}Object.defineProperty(t,"__esModule",{value:!0});var H=n("./app/containers/Teams/constants.ts");t.loadTeams=r,t.teamsLoaded=o,t.loadTeamsFail=a,t.editTeam=i,t.teamEdited=s,t.editTeamFail=l,t.deleteTeam=c,t.teamDeleted=u,t.deleteTeamFail=d,t.loadTeamDetail=p,t.teamDetailLoaded=f,t.loadTeamDetailFail=h,t.loadTeamProjects=m,t.teamProjectsLoaded=g,t.loadTeamProjectsFail=b,t.loadTeamMembers=v,t.teamMembersLoaded=_,t.loadTeamMembersFail=y,t.loadTeamTeams=A,t.teamTeamsLoaded=x,t.loadTeamTeamsFail=w,t.pullProjectInTeam=j,t.projectInTeamPulled=E,t.pullProjectInTeamFail=S,t.updateTeamProjectPermission=k,t.teamProjectPermissionUpdated=C,t.updateTeamProjectPermissionFail=T,t.deleteTeamProject=M,t.teamProjectDeleted=O,t.deleteTeamProjectFail=L,t.deleteTeamMember=D,t.teamMemberDeleted=P,t.deleteTeamMemberFail=I,t.pullMemberInTeam=R,t.memberInTeamPulled=N,t.pullMemberInTeamFail=B,t.changeTeamMemberRole=F,t.teamMemberRoleChanged=U,t.changeTeamMemberRoleFail=z},"./app/containers/Teams/component/AddForm.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=function(){function e(e,t){for(var n=0;n-1});n.setState({currentTeamMembers:t&&t.length?o:n.props.currentTeamMembers})},n.showAddForm=function(e){return function(t){t.stopPropagation(),n.setState({formType:e,formVisible:!0})}},n.hideAddForm=function(){n.setState({formVisible:!1,formKey:n.state.formKey+11})},n.add=function(){var e=n.props.currentTeam;n.AddForm.validateFieldsAndScroll(function(t,r){if(!t){var o=r.projectId,a=e.id;n.props.pullMemberInTeam(a,o,function(){n.props.onLoadTeamMembers(a),n.hideAddForm()})}})},n.removeMemberForm=function(e,t){return function(){n.props.deleteTeamMember(t.id)}},n.changRole=function(){n.ChangeRoleForm.validateFieldsAndScroll(function(e,t){if(!e){var r=t.id,o=t.role;n.props.changeTeamMemberRole(r,o),n.hideChangeRoleForm()}})},n.hideChangeRoleForm=function(){n.setState({changeRoleFormVisible:!1,changeRoleModalLoading:!1},function(){n.ChangeRoleForm.resetFields()})},n.showChangeRoleForm=function(e,t){return function(r){r.stopPropagation(),n.setState({currentMember:t,changeRoleFormVisible:!0,changeRoleFormCategory:e},function(){var e=t.user.role,r=t.id;n.ChangeRoleForm.setFieldsValue({id:r,role:e})})}},n.state={formKey:0,formType:"",category:"",modalLoading:!1,formVisible:!1,changeRoleFormCategory:"",currentMember:{},changeRoleFormVisible:!1,changeRoleModalLoading:!1,currentTeamMembers:[]},n}return a(t,e),i(t,[{key:"componentDidMount",value:function(){var e=this.props.currentTeamMembers;e&&this.setState({currentTeamMembers:e})}},{key:"componentWillReceiveProps",value:function(e){var t=this.props.currentTeamMembers,n=e.currentTeamMembers;n&&n!==t&&this.setState({currentTeamMembers:n})}},{key:"render",value:function(){var e=this,t=this.state,n=t.formVisible,r=t.formType,o=t.changeRoleFormVisible,a=t.changeRoleModalLoading,i=t.changeRoleFormCategory,w=t.currentTeamMembers,j=this.props.currentTeam,E=void 0;j&&(E=y.default(j,"")(p));var S=s.createElement(u,{placement:"bottom",title:"添加"},s.createElement(E,{size:"large",type:"primary",icon:"plus",onClick:this.showAddForm("teamMember")})),k=[];return k=j&&1===j.role?[{title:"Name",dataIndex:"user",key:"user",render:function(e){return s.createElement("div",{className:g.avatarWrapper},s.createElement(v.default,{path:e.avatar,size:"small",enlarge:!0}),s.createElement("span",{className:g.avatarName},e.username))}},{title:"role",dataIndex:"user",key:"userKey",render:function(e){return s.createElement("span",null,1===e.role?"Maintainer":"Member")}},{title:"settings",dataIndex:"user",key:"settings",render:function(t,n){return s.createElement("span",null,s.createElement(d,{title:"确定删除此成员吗?",placement:"bottom",onConfirm:e.removeMemberForm(t,n)},A),x,s.createElement("a",{href:"javascript:;",onClick:e.showChangeRoleForm("teamMember",n)},"改变角色"))}}]:[{title:"Name",dataIndex:"user",key:"user",render:function(e){return s.createElement("div",{className:g.avatarWrapper},s.createElement(v.default,{path:e.avatar,size:"small",enlarge:!0}),s.createElement("span",{className:g.avatarName},e.username))}},{title:"role",dataIndex:"user",key:"userKey",render:function(e){return s.createElement("span",null,1===e.role?"Maintainer":"Member")}}],s.createElement("div",{className:g.listWrapper},s.createElement(l,null,s.createElement(c,{span:16},s.createElement(f.Search,{size:"large",placeholder:"placeholder",onChange:this.onSearchMember})),s.createElement(c,{span:1,offset:7},S)),s.createElement(l,null,s.createElement("div",{className:g.tableWrap},s.createElement(h,{bordered:!0,columns:k,dataSource:w}))),s.createElement(m,{key:this.state.formKey,title:null,footer:null,visible:n,onCancel:this.hideAddForm},s.createElement(b.default,{category:r,organizationOrTeam:j,addHandler:this.add,ref:function(t){e.AddForm=t},currentOrganizationMembers:this.props.currentOrganizationMembers})),s.createElement(m,{title:null,visible:o,footer:null,onCancel:this.hideChangeRoleForm},s.createElement(_.default,{category:i,organizationOrTeam:this.props.currentTeam,submitLoading:a,ref:function(t){e.ChangeRoleForm=t},changeHandler:this.changRole})))}}]),t}(s.PureComponent);t.MemberList=w,t.default=w},"./app/containers/Teams/component/PermissionLevel.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=Object.assign||function(e){for(var t=1;t-1});n.setState({currentTeamProjects:t&&t.length?o:n.props.currentTeamProjects})},n.stopPPG=function(e){e.stopPropagation()},n.headerPanel=function(e){var t=n.props.currentTeam,r=void 0;return t&&(r=A.default(t,"")(d)),s.createElement("div",{className:g.headerPanel},s.createElement("div",{className:g.titleWrapper},s.createElement("div",{className:g.avatar},s.createElement(y.default,{size:"small",path:e.project.path})),s.createElement("div",{className:g.title},e.project.name)),s.createElement("div",{className:g.delete},s.createElement(c,{title:"确定删除?",placement:"bottom",onConfirm:n.props.deleteProject(event,e.id)},s.createElement(u,{title:"删除"},s.createElement(r,{shape:"circle",icon:"close",onClick:n.stopPPG})))))},n.state={formKey:0,modalLoading:!1,formType:"",formVisible:!1,currentTeamProjects:[]},n}return a(t,e),i(t,[{key:"componentWillReceiveProps",value:function(e){var t=this.props.currentTeamProjects,n=e.currentTeamProjects;n&&n!==t&&this.setState({currentTeamProjects:n})}},{key:"render",value:function(){var e=this,t=this.state,n=t.formVisible,r=t.formType,o=(t.modalLoading,t.currentTeamProjects),a=this.props,i=a.currentTeam,c=a.currentOrganizationProjects,b=void 0;i&&(b=A.default(i,"")(d));var y=s.createElement(l,{defaultActiveKey:["project0"]},o?o.map(function(t,n){return s.createElement(l.Panel,{header:e.headerPanel(t),key:"project"+n},s.createElement(v.default,{param:t,role:i.role,selectChanged:e.selectChanged(t.project.id+"permissionForm"),ref:function(n){e[t.project.id+"permissionForm"]=n}}))}):""),x=s.createElement(u,{placement:"bottom",title:"添加"},s.createElement(b,{size:"large",type:"primary",icon:"plus",onClick:this.showAddForm("project")}));return s.createElement("div",{className:g.listWrapper},s.createElement(p,null,s.createElement(f,{span:16},s.createElement(m.Search,{size:"large",placeholder:"Project 名称",onChange:this.onSearchProject})),s.createElement(f,{span:1,offset:7},x)),s.createElement("div",{style:{height:"24px"}}),y,s.createElement(h,{key:this.state.formKey,title:null,footer:null,visible:n,onCancel:this.hideAddForm},s.createElement(_.default,{category:r,organizationOrTeam:i,currentOrganizationProjects:c,ref:function(t){e.AddForm=t},addHandler:this.add})))}}]),t}(s.PureComponent);t.ProjectList=x,t.default=x},"./app/containers/Teams/component/Setting.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=Object.assign||function(e){for(var t=1;t0&&n.filter(e.children),e.children&&0===e.children.length&&delete e.children}),e):e},n.checkNameUnique=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2],o=n.props;(0,o.onCheckUniqueName)("team",{name:t,orgId:o.currentTeam.organization.id,id:null},function(){r()},function(e){r(e)})},n.showTeamForm=function(){return function(e){var t=n.props.currentTeam;e.stopPropagation(),n.setState({teamFormVisible:!0,listType:"teamTeamList"},function(){n.TeamForm.setFieldsValue({parentTeamId:t.name})})}},n.onTeamFormModalOk=function(){var e=n.props.currentTeam;n.TeamForm.validateFieldsAndScroll(function(t,r){if(!t){var o=r.name,a=r.description;n.props.onAddTeam(Object.assign({parentTeamId:e.id,name:o,description:a},{visibility:!!r.visibility},{orgId:e.organization.id,pic:""+Math.ceil(19*Math.random()),config:"{}"}),function(){n.props.onLoadTeamTeams(e.id),n.hideTeamForm()})}})},n.hideTeamForm=function(){n.setState({teamFormVisible:!1},function(){n.TeamForm.resetFields()})},n.state={modalLoading:!1,formType:"",formVisible:!1,teamFormVisible:!1,listType:""},n}return a(t,e),s(t,[{key:"render",value:function(){var e=this,t=this.state,n=t.formVisible,r=t.teamFormVisible,o=t.listType,a=this.props,i=a.currentTeamTeams,s=a.currentTeam,c=a.teamModalLoading;this.filter(i);var u=void 0;s&&(u=A.default(s,"")(g));var x=l.createElement(f,{placement:"bottom",title:"创建"},l.createElement(u,{size:"large",type:"primary",icon:"plus",onClick:this.showTeamForm()})),w=[{title:"Name",dataIndex:"name",key:"name",width:"40%",render:function(t,n){return l.createElement("a",{href:"javascript:;",onClick:e.toThatTeam(t,n),className:b.avatarName},t)}},{title:"Member",dataIndex:"users",key:"users",width:"30%",render:function(e){return l.createElement("div",{className:b.avatarWrapper},e.map(function(e,t){return l.createElement(f,{key:"tooltip"+t,placement:"topRight",title:e.username},l.createElement("span",null,l.createElement(y.default,{key:t,path:e.avatar,size:"small",enlarge:!0})))}),l.createElement("span",{className:b.avatarName},(e?e.length:0)+"menbers"))}}];return l.createElement("div",{className:b.listWrapper},l.createElement(d,null,l.createElement(p,{span:1,offset:23},x)),l.createElement(d,null,l.createElement("div",{className:b.tableWrap},l.createElement(h,{bordered:!0,columns:w,dataSource:i}))),l.createElement(m,{title:null,footer:null,visible:n,onCancel:this.hideAddForm},l.createElement(v.default,{ref:function(t){e.AddForm=t}})),l.createElement(m,{title:null,visible:r,footer:null,onCancel:this.hideTeamForm},l.createElement(_.default,{listType:o,onModalOk:this.onTeamFormModalOk,modalLoading:c,onCheckUniqueName:this.checkNameUnique,ref:function(t){e.TeamForm=t}})))}}]),t}(l.PureComponent);t.TeamList=S;var k=u.createStructuredSelector({teamModalLoading:E.makeSelectTeamModalLoading()});t.mapDispatchToProps=i,t.default=c.connect(k,i)(S)},"./app/containers/Teams/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LOAD_TEAMS="davinci/Team/LOAD_TEAMS",t.LOAD_TEAMS_SUCCESS="davinci/Team/LOAD_TEAMS_SUCCESS",t.LOAD_TEAMS_FAILURE="davinci/Team/LOAD_TEAMS_FAILURE",t.EDIT_TEAM="davinci/Team/EDIT_TEAM",t.EDIT_TEAM_SUCCESS="davinci/Team/EDIT_TEAM_SUCCESS",t.EDIT_TEAM_FAILURE="davinci/Team/EDIT_TEAM_FAILURE",t.DELETE_TEAM="davinci/Team/DELETE_TEAM",t.DELETE_TEAM_SUCCESS="davinci/Team/DELETE_TEAM_SUCCESS",t.DELETE_TEAM_FAILURE="davinci/Team/DELETE_TEAM_FAILURE",t.LOAD_TEAM_DETAIL="davinci/Team/LOAD_TEAM_DETAIL",t.LOAD_TEAM_DETAIL_SUCCESS="davinci/Team/LOAD_TEAM_DETAIL_SUCCESS",t.LOAD_TEAM_DETAIL_FAILURE="davinci/Team/LOAD_TEAM_DETAIL_FAILURE",t.LOAD_TEAM_PROJECTS="davinci/Organization/LOAD_TEAM_PROJECTS",t.LOAD_TEAM_PROJECTS_SUCCESS="davinci/Organization/LOAD_TEAM_PROJECTS_SUCCESS",t.LOAD_TEAM_PROJECTS_FAILURE="davinci/Organization/LOAD_TEAM_PROJECTS_FAILURE",t.LOAD_TEAM_MEMBERS="davinci/Organization/LOAD_TEAM_MEMBERS",t.LOAD_TEAM_MEMBERS_SUCCESS="davinci/Organization/LOAD_TEAM_MEMBERS_SUCCESS",t.LOAD_TEAM_MEMBERS_FAILURE="davinci/Organization/LOAD_TEAM_MEMBERS_FAILURE",t.LOAD_TEAM_TEAMS="davinci/Organization/LOAD_TEAM_TEAMS",t.LOAD_TEAM_TEAMS_SUCCESS="davinci/Organization/LOAD_TEAM_TEAMS_SUCCESS",t.LOAD_TEAM_TEAMS_FAILURE="davinci/Organization/LOAD_TEAM_TEAMS_FAILURE",t.PULL_MEMBER_IN_TEAM="davinci/Organization/PULL_MEMBER_IN_TEAM",t.PULL_MEMBER_IN_TEAM_SUCCESS="davinci/Organization/PULL_MEMBER_IN_TEAM_SUCCESS",t.PULL_MEMBRE_IN_TEAM_FAILURE="davinci/Organization/PULL_MEMBRE_IN_TEAM_FAILURE",t.PULL_PROJECT_IN_TEAM="davinci/Organization/PULL_PROJECT_IN_TEAM",t.PULL_PROJECT_IN_TEAM_SUCCESS="davinci/Organization/PULL_PROJECT_IN_TEAM_SUCCESS",t.PULL_PROJECT_IN_TEAM_FAILURE="davinci/Organization/PULL_PROJECT_IN_TEAM_FAILURE",t.UPDATE_TEAM_PROJECT_PERMISSION="davinci/Organization/UPDATE_TEAM_PROJECT_PERMISSION",t.UPDATE_TEAM_PROJECT_PERMISSION_SUCCESS="davinci/Organization/UPDATE_TEAM_PROJECT_PERMISSION_SUCCESS",t.UPDATE_TEAM_PROJECT_PERMISSION_FAILURE="davinci/Organization/UPDATE_TEAM_PROJECT_PERMISSION_FAILURE",t.DELETE_TEAM_PROJECT="davinci/Project/DELETE_TEAM_PROJECT",t.DELETE_TEAM_PROJECT_SUCCESS="davinci/Project/DELETE_TEAM_PROJECT_SUCCESS",t.DELETE_TEAM_PROJECT_FAILURE="davinci/Project/DELETE_TEAM_PROJECT_FAILURE",t.DELETE_TEAM_MEMBER="davinci/Project/DELETE_TEAM_MEMBER",t.DELETE_TEAM_MEMBER_SUCCESS="davinci/Project/DELETE_TEAM_MEMBER_SUCCESS",t.DELETE_TEAM_MEMBER_ERROR="davinci/Project/DELETE_TEAM_MEMBER_ERROR",t.CHANGE_MEMBER_ROLE_TEAM="davinci/Team/CHANGE_MEMBER_ROLE_TEAM",t.CHANGE_MEMBER_ROLE_TEAM_SUCCESS="davinci/Team/CHANGE_MEMBER_ROLE_TEAM_SUCCESS",t.CHANGE_MEMBER_ROLE_TEAM_ERROR="davinci/Team/CHANGE_MEMBER_ROLE_TEAM_ERROR"},"./app/containers/Teams/index.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{onLoadTeams:function(){return e(m.loadTeams())}}}var s=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:s,t=arguments[1],n=t.type,r=t.payload,o=e.get("teams"),l=e.get("currentTeamProjects"),c=e.get("currentTeamMembers");switch(n){case a.LOAD_TEAMS_SUCCESS:return e.set("teams",r.teams);case a.LOAD_TEAMS_FAILURE:return e;case a.DELETE_TEAM_SUCCESS:return e.set("teams",o.filter(function(e){return e.id!==r.id}));case a.LOAD_TEAM_DETAIL:return e.set("currentTeamLoading",!0);case a.LOAD_TEAM_DETAIL_SUCCESS:return e.set("currentTeamLoading",!1).set("currentTeam",r.team).set("teamRouter",r.team.parents);case a.LOAD_TEAM_PROJECTS_SUCCESS:return e.set("currentTeamProjects",r.projects);case a.PULL_PROJECT_IN_TEAM_SUCCESS:return l?(l.unshift(r.result),e.set("currentTeamProjects",l.slice())):e.set("currentTeamProjects",[r.result]),e;case a.DELETE_TEAM_PROJECT_SUCCESS:return l?e.set("currentTeamProjects",l.filter(function(e){return e.id!==r.id})):e;case a.PULL_MEMBER_IN_TEAM_SUCCESS:return c?(c.unshift(r.result),e.set("currentTeamMembers",c.slice())):e.set("currentTeamMembers",[r.result]),e;case a.DELETE_TEAM_MEMBER_SUCCESS:return c?e.set("currentTeamMembers",c.filter(function(e){return e.id!==r.id})):e;case a.LOAD_TEAM_MEMBERS_SUCCESS:return e.set("currentTeamMembers",r.members);case a.CHANGE_MEMBER_ROLE_TEAM_SUCCESS:var u=c.findIndex(function(e){return e.id===r.relationId}),d=Object.assign({},c[u]);return d.user.role=r.newRole,c.splice(u,1,d),e.set("currentTeamMembers",c.slice());case a.LOAD_TEAM_TEAMS_SUCCESS:return e.set("currentTeamTeams",r.teams);case i.LOAD_ORGANIZATIONS_PROJECTS_SUCCESS:return e.set("currentOrganizationProjects",r.projects);case i.LOAD_ORGANIZATIONS_MEMBERS_SUCCESS:return e.set("currentOrganizationMembers",r.members);case i.LOAD_ORGANIZATIONS_TEAMS_SUCCESS:return e.set("currentOrganizationTeams",r.teams);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/immutable/dist/immutable.js"),a=n("./app/containers/Teams/constants.ts"),i=n("./app/containers/Organizations/constants.ts"),s=o.fromJS({teams:[],teamRouter:{},currentTeam:{},currentTeamLoading:!1,currentTeamProjects:[],currentTeamTeams:[],currentTeamMembers:[],currentOrganizationProjects:[],currentOrganizationTeams:[],currentOrganizationMembers:[]});t.default=r},"./app/containers/Teams/sagas.ts":function(e,t,n){"use strict";function r(){var e,t;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,L.call(R.default,N.default.teams);case 3:return e=n.sent,t=F.readListAdapter(e),n.next=7,L.put(P.teamsLoaded(t));case 7:n.next=14;break;case 9:return n.prev=9,n.t0=n.catch(0),n.next=13,L.put(P.loadTeamsFail());case 13:B.errorHandler(n.t0);case 14:case"end":return n.stop()}},b,this,[[0,9]])}function o(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,n=t.team,r=t.resolve,o.prev=1,o.next=4,L.call(R.default,{method:"put",url:N.default.teams+"/"+n.id,data:n});case 4:return o.next=6,L.put(P.teamEdited(n));case 6:r&&r(),I.success("success"),o.next=15;break;case 10:return o.prev=10,o.t0=o.catch(1),o.next=14,L.put(P.editTeamFail());case 14:B.errorHandler(o.t0);case 15:case"end":return o.stop()}},v,this,[[1,10]])}function a(e){var t,n,r;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return t=e.payload,n=t.id,r=t.resolve,o.prev=1,o.next=4,L.call(R.default,{method:"delete",url:N.default.teams+"/"+n});case 4:return o.next=6,L.put(P.teamDeleted(n));case 6:r(),o.next=14;break;case 9:return o.prev=9,o.t0=o.catch(1),o.next=13,L.put(P.deleteTeamFail());case 13:B.errorHandler(o.t0);case 14:case"end":return o.stop()}},_,this,[[1,9]])}function i(e){var t,n,r=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,L.call(R.default,N.default.teams+"/"+r.id);case 3:return t=e.sent,n=F.readListAdapter(t),e.next=7,L.put(P.teamDetailLoaded(n));case 7:return e.next=9,r.resolve&&r.resolve(n);case 9:e.next=14;break;case 11:e.prev=11,e.t0=e.catch(0),B.errorHandler(e.t0);case 14:case"end":return e.stop()}},y,this,[[0,11]])}function s(e){var t,n,r,o=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=o.id,e.prev=1,e.next=4,L.call(R.default,N.default.teams+"/"+t+"/projects");case 4:return n=e.sent,r=F.readListAdapter(n),e.next=8,L.put(P.teamProjectsLoaded(r));case 8:e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,L.put(P.loadTeamProjectsFail());case 14:B.errorHandler(e.t0);case 15:case"end":return e.stop()}},A,this,[[1,10]])}function l(e){var t,n,r,o=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=o.id,e.prev=1,e.next=4,L.call(R.default,N.default.teams+"/"+t+"/members");case 4:return n=e.sent,r=F.readListAdapter(n),e.next=8,L.put(P.teamMembersLoaded(r));case 8:e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,L.put(P.loadTeamMembersFail());case 14:B.errorHandler(e.t0);case 15:case"end":return e.stop()}},x,this,[[1,10]])}function c(e){var t,n,r,o=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=o.id,e.prev=1,e.next=4,L.call(R.default,N.default.teams+"/"+t+"/teams");case 4:return n=e.sent,r=F.readListAdapter(n),e.next=8,L.put(P.teamTeamsLoaded(r));case 8:e.next=15;break;case 10:return e.prev=10,e.t0=e.catch(1),e.next=14,L.put(P.loadTeamTeamsFail());case 14:B.errorHandler(e.t0);case 15:case"end":return e.stop()}},w,this,[[1,10]])}function u(e){var t,n,r,o,a,i=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=i.id,n=i.projectId,r=i.resolve,e.prev=1,e.next=4,L.call(R.default,{url:N.default.teams+"/"+t+"/project",method:"post",data:{projectId:n}});case 4:return o=e.sent,a=F.readListAdapter(o),e.next=8,L.put(P.projectInTeamPulled(a));case 8:r(),e.next=16;break;case 11:return e.prev=11,e.t0=e.catch(1),e.next=15,L.put(P.pullProjectInTeamFail());case 15:B.errorHandler(e.t0);case 16:case"end":return e.stop()}},j,this,[[1,11]])}function d(e){var t,n,r,o,a,i=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=i.relationId,n=i.relTeamProjectDto,r=i.resolve,e.prev=1,e.next=4,L.call(R.default,{url:N.default.teams+"/project/"+t,method:"put",data:n});case 4:return o=e.sent,a=F.readListAdapter(o),e.next=8,L.put(P.teamProjectPermissionUpdated(a));case 8:r&&r(a),e.next=16;break;case 11:return e.prev=11,e.t0=e.catch(1),e.next=15,L.put(P.updateTeamProjectPermissionFail());case 15:B.errorHandler(e.t0);case 16:case"end":return e.stop()}},E,this,[[1,11]])}function p(e){var t,n,r=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=r.relationId,e.prev=1,e.next=4,L.call(R.default,{url:N.default.teams+"/project/"+t,method:"delete"});case 4:return n=e.sent,e.next=7,L.put(P.teamProjectDeleted(t));case 7:e.next=14;break;case 9:return e.prev=9,e.t0=e.catch(1),e.next=13,L.put(P.deleteTeamProjectFail());case 13:B.errorHandler(e.t0);case 14:case"end":return e.stop()}},S,this,[[1,9]])}function f(e){var t,n,r,o,a,i=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=i.teamId,n=i.memberId,r=i.resolve,e.prev=1,e.next=4,L.call(R.default,{url:N.default.teams+"/"+t+"/member/"+n,method:"post"});case 4:return o=e.sent,a=F.readListAdapter(o),e.next=8,L.put(P.memberInTeamPulled(a));case 8:r(),e.next=16;break;case 11:return e.prev=11,e.t0=e.catch(1),e.next=15,L.put(P.pullMemberInTeamFail());case 15:B.errorHandler(e.t0);case 16:case"end":return e.stop()}},k,this,[[1,11]])}function h(e){var t,n,r=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=r.relationId,e.prev=1,e.next=4,L.call(R.default,{url:N.default.teams+"/member/"+t,method:"delete"});case 4:return n=e.sent,e.next=7,L.put(P.teamMemberDeleted(t));case 7:e.next=14;break;case 9:return e.prev=9,e.t0=e.catch(1),e.next=13,L.put(P.deleteTeamMemberFail());case 13:B.errorHandler(e.t0);case 14:case"end":return e.stop()}},C,this,[[1,9]])}function m(e){var t,n,r,o,a,i=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=i.relationId,n=i.newRole,e.prev=1,e.next=4,L.call(R.default,{url:N.default.teams+"/member/"+t,method:"put",data:{role:n}});case 4:return r=e.sent,o=r&&r.header&&r.header.msg?r.header.msg:"",a=r&&r.header&&r.header.code?r.header.code:"",e.next=9,L.put(P.teamMemberRoleChanged(t,n));case 9:e.next=16;break;case 11:return e.prev=11,e.t0=e.catch(1),e.next=15,L.put(P.changeTeamMemberRoleFail());case 15:B.errorHandler(e.t0);case 16:case"end":return e.stop()}},T,this,[[1,11]])}function g(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[O.takeLatest(D.LOAD_TEAMS,r),O.takeEvery(D.EDIT_TEAM,o),O.takeEvery(D.DELETE_TEAM,a),O.takeLatest(D.LOAD_TEAM_DETAIL,i),O.takeLatest(D.LOAD_TEAM_MEMBERS,l),O.takeLatest(D.LOAD_TEAM_PROJECTS,s),O.takeLatest(D.LOAD_TEAM_TEAMS,c),O.takeLatest(D.PULL_PROJECT_IN_TEAM,u),O.takeLatest(D.UPDATE_TEAM_PROJECT_PERMISSION,d),O.takeLatest(D.DELETE_TEAM_PROJECT,p),O.takeLatest(D.DELETE_TEAM_MEMBER,h),O.takeLatest(D.CHANGE_MEMBER_ROLE_TEAM,m),O.takeLatest(D.PULL_MEMBER_IN_TEAM,f)];case 2:case"end":return e.stop()}},M,this)}var b=regeneratorRuntime.mark(r),v=regeneratorRuntime.mark(o),_=regeneratorRuntime.mark(a),y=regeneratorRuntime.mark(i),A=regeneratorRuntime.mark(s),x=regeneratorRuntime.mark(l),w=regeneratorRuntime.mark(c),j=regeneratorRuntime.mark(u),E=regeneratorRuntime.mark(d),S=regeneratorRuntime.mark(p),k=regeneratorRuntime.mark(f),C=regeneratorRuntime.mark(h),T=regeneratorRuntime.mark(m),M=regeneratorRuntime.mark(g);Object.defineProperty(t,"__esModule",{value:!0});var O=n("./node_modules/redux-saga/es/index.js"),L=n("./node_modules/redux-saga/es/effects.js"),D=n("./app/containers/Teams/constants.ts"),P=n("./app/containers/Teams/actions.ts"),I=n("./node_modules/antd/lib/message/index.js"),R=n("./app/utils/request.ts"),N=n("./app/utils/api.js"),B=n("./app/utils/util.ts"),F=n("./app/utils/asyncAdapter.js");t.getTeams=r,t.editTeam=o,t.deleteTeam=a,t.getTeamDetail=i,t.getTeamProjects=s,t.getTeamMembers=l,t.getTeamTeams=c,t.pullProjectInTeam=u,t.updateTeamProjectPermission=d,t.deleteTeamProject=p,t.pullMemberInTeam=f,t.deleteTeamMember=h,t.changeTeamMemberRole=m,t.default=g},"./app/containers/Teams/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("team")};t.selectTeam=o;var a=function(){return r.createSelector(o,function(e){return e.get("teams")})};t.makeSelectTeams=a;var i=function(){return r.createSelector(o,function(e){return e.get("teamRouter")})};t.makeSelectTeamRouter=i;var s=function(){return r.createSelector(o,function(e){return e.get("currentTeam")})};t.makeSelectCurrentTeams=s;var l=function(){return r.createSelector(o,function(e){return e.get("currentTeamProjects")})};t.makeSelectCurrentTeamProjects=l;var c=function(){return r.createSelector(o,function(e){return e.get("currentTeamTeams")})};t.makeSelectCurrentTeamTeams=c;var u=function(){return r.createSelector(o,function(e){return e.get("currentTeamMembers")})};t.makeSelectCurrentTeamMembers=u},"./app/containers/Viz/Viz.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Viz/Viz.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Viz/index.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e){return{onLoadDisplays:function(t){return e(A.loadDisplays(t))},onAddDisplay:function(t,n){return e(A.addDisplay(t,n))},onEditDisplay:function(t,n){return e(A.editDisplay(t,n))},onDeleteDisplay:function(t){return e(A.deleteDisplay(t))},onLoadPortals:function(t){return e(x.loadPortals(t))},onAddPortal:function(t,n){return e(x.addPortal(t,n))},onEditPortal:function(t,n){return e(x.editPortal(t,n))},onDeletePortal:function(t){return e(x.deletePortal(t))},onCheckUniqueName:function(t,n,r,o){return e(E.checkNameUniqueAction(t,n,r,o))}}}var l=function(){function e(e,t){for(var n=0;n0&&p")}}})},[])}}L=j&&j.length?{axisLabel:{formatter:"{value} "+j}}:null,k={yAxis:Object.assign({type:"value",splitArea:{show:!1},splitLine:{show:b&&b.length,lineStyle:{width:_,type:v}}},L)};var B=0,F=0;if(p&&p.length){var U=void 0,z=void 0;switch(h){case"right":U={orient:"vertical"},z={right:8,top:40,bottom:16},F=108;break;case"bottom":U={orient:"horizontal"},z={bottom:16,left:8,right:8},B=72;break;default:U={orient:"horizontal"},z={top:3,left:8,right:120}}var H="unselectAll"===f?{selected:l.reduce(function(e,t){return Object.assign({},e,r({},t,!1))},{})}:null;C={legend:Object.assign({data:l,type:"scroll"},U,z,H)}}return T=m&&m.length?{toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,M={grid:{top:y,left:x,right:Math.max(w,F),bottom:Math.max(A,B)}},O=d>0&&d")}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/echarts/extension-src/dataTool/prepareBoxplotData.js");t.default=o},"./app/containers/Widget/charts/confidenceBand.ts":function(e,t,n){"use strict";function r(e,t,n,r){var o=n.xAxis,a=n.metrics,i=n.lower,s=n.upper,l=n.label,c=n.xAxisInterval,u=n.xAxisRotate,d=n.dataZoomThreshold,p=n.smooth,f=n.step,h=n.symbol,m=n.toolbox,g=n.splitLineX,b=n.splitLineY,v=n.splitLineStyle,_=n.splitLineWidth,y=n.top,A=n.bottom,x=n.left,w=n.right,j=n.suffixYAxis,E=void 0,S=void 0,k=void 0,C=void 0,T=void 0,M=void 0,O=void 0,L=void 0,D=void 0,P=void 0,I=-e.reduce(function(e,t){return Math.floor(Math.min(e,+t[i]))},1/0);P={axisLabel:{formatter:function(e){return e-I+" "+(j||"")}}},T=h&&h.length?{symbol:"emptyCircle"}:{symbol:"none"},k=p&&p.length?{smooth:!0}:null,C=f&&f.length?{step:!0}:null,L=l&&l.length?{label:{normal:{show:!0,position:"top"}}}:null;var R=[];if(a){var N=Object.assign({name:a,type:"line",sampling:"average",symbol:T,data:e.map(function(e,t){return t===r?{value:+e[a]+I,lineStyle:{normal:{opacity:1}},itemStyle:{normal:{opacity:1}}}:+e[a]+I}),lineStyle:{normal:{opacity:void 0===r?1:.25}},itemStyle:{normal:{opacity:void 0===r?1:.25}}},T,k,C,L);R.push(N)}var B={type:"line",lineStyle:{normal:{opacity:0}},stack:"confidence-band",symbol:"none"},F=[{name:"L",data:e.map(function(e){return+e[i]+I})},{name:"U",data:e.map(function(e){return+e[s]-e[i]}),areaStyle:{normal:{color:"#ccc"}}}];return F.forEach(function(e){Object.assign(e,B)}),R.push.apply(R,F),E={series:R},S=o&&{xAxis:{data:e.map(function(e){return e[o]}),axisLabel:{interval:c,rotate:u},splitLine:{show:g&&g.length,lineStyle:{width:_,type:v}}}},M=m&&m.length?{toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,O={grid:{top:y,left:x,right:w,bottom:A}},D=d>0&&d"+e[0].value}}},E,S,M,O,D)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},"./app/containers/Widget/charts/doubleYAxis.ts":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&(J=M.map(function(t){return Object.assign({name:t,type:L,data:e.map(function(e){return e[t]})},U,F("left"))})),O&&O.length>0&&(Z=O.map(function(t){return Object.assign({name:t,type:D,yAxisIndex:1,data:e.map(function(e){return e[t]})},U,F("right"))}));R={series:[].concat(o(J),o(Z)).map(function(e){return"line"===e.type?Object.assign({},e,X,q,K):Object.assign({},e)})}}s&&(N={xAxis:[{data:e.map(function(e){return e[s]}),type:"category",axisLabel:{interval:h,rotate:m},splitLine:{show:x&&x.length,lineStyle:{width:E,type:j}}}]});var oe=0,ae=0;if(v&&v.length){var ie=void 0,se=void 0;switch(y){case"right":ie={orient:"vertical"},se={right:8,top:40,bottom:16},ae=180;break;case"bottom":ie={orient:"horizontal"},se={bottom:16,left:8,right:8},oe=72;break;default:ie={orient:"horizontal"},se={top:3,left:8,right:120}}var le="unselectAll"===_?{selected:R.series.reduce(function(e,t){return Object.assign({},e,r({},t.name,!1))},{})}:null;z={legend:Object.assign({data:R.series.map(function(e){return e.name}),type:"scroll"},ie,se,le)}}return H=A&&A.length?{toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,V={grid:{top:S,left:C,right:Math.max(T,ae),bottom:Math.max(k,oe)}},Y=b>0&&b3&&(C.axisLine.lineStyle.color=y),_.push(C),m={series:_},g=r&&r.length?{tooltip:{formatter:"{a}
      {b} : "+w+"{c}"+j}}:null,b=i&&i.length?{toolbox:{feature:{restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,Object.assign({},m,g,b)}Object.defineProperty(t,"__esModule",{value:!0});var o="#c23531",a=["#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"];t.default=r},"./app/containers/Widget/charts/graph.ts":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t,n,o){var i=n.metrics,s=n.target,l=n.source,c=n.tooltip,u=n.legend,d=n.toolbox,p=n.top,f=n.bottom,h=n.left,m=n.right,g=n.category;g&&g.length||(g=l);var b=void 0,v=void 0,_=void 0,y=void 0,A=void 0,x=void 0,w=void 0,j=[],E=[],S=[],k=[],C=[],T=e.map(function(e){return e[g]});k=T.filter(function(e,t){return T.indexOf(e)===t}).concat(["其他"]),C=k.map(function(t){var n=e.filter(function(e){return e[g]===t});return{key:t,value:n}}),s&&s.length&&l&&l.length&&i&&i.length&&(S=e.map(function(e){return Array.prototype.push.apply(E,[e[l],e[s]]),{value:e[i],source:e[l],target:e[s]}}),C&&C.length&&(C=C.map(function(e){return r({},e.key,e.value.reduce(function(e,t){return e+Number(t[i])},0))}))),E&&E.length&&(E=E.filter(function(e,t){return E.indexOf(e)===t}).map(function(e){return{name:e,category:e}}));var M=C.reduce(function(e,t){return Object.assign({},e,t)},{}),O=Object.keys(M),L=Object.values(M),D=a(Object.values(M));k&&k.length&&E&&E.length&&(E=E.map(function(e,t){var n=void 0,r=void 0,o=void 0;return k.find(function(t){return t===e.category})?(o=O.indexOf(e.category),n=D[o],r=L[o],Object.assign({},e,{symbolSize:n,realValue:r})):Object.assign({},e,{category:"其他",symbolSize:1,realValue:0})})),v={label:{normal:{show:!0,position:"right"}}},x={grid:{top:p,left:h,right:m,bottom:f}},w={animationDurationUpdate:1e3,animationEasingUpdate:"quinticInOut"};var P=Object.assign({type:"graph",layout:"circular",symbolSize:30,roam:!0,focusNodeAdjacency:!0,edgeSymbol:["circle","arrow"],edgeSymbolSize:[4,10],edgeLabel:{normal:{}},circular:{rotateLabel:!0},data:E,links:S,categories:k.map(function(e){return{name:e}}),lineStyle:{normal:{color:"source",opacity:.9,curveness:.3}}},v);return j.push(P),b={series:j},_=c&&c.length?{tooltip:{formatter:function(e){var t=e.data;switch(e.dataType){case"edge":return t.source+" => "+t.target+" : "+t.value;case"node":return t.name+" : "+t.realValue;default:return""}}}}:null,y=u&&u.length?{legend:{data:k,orient:"vertical",left:"left",type:"scroll"}}:null,A=d&&d.length?{toolbox:{feature:{dataView:{readOnly:!1},restore:{},saveAsImage:{}}}}:null,Object.assign({},b,_,y,A,x,w)}function a(e){if(!(e&&Array.isArray(e)&&e.length))return!1;var t=e.reduce(function(e,t){return t>e?t:e},0);return e.map(function(e){var n=60*Number(e)/t;return n<1?1:n})}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o},"./app/containers/Widget/charts/map.ts":function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t"+Object.keys(t.children).map(function(e){return e+":"+t.children[e]+"
      "}).join("")}return n}}},v=f&&f.length?{toolbox:{feature:{dataView:{readOnly:!1},restore:{},saveAsImage:{}}}}:null,Object.assign({geo:{map:"china",label:{emphasis:{show:!1}},itemStyle:{normal:{areaColor:"#0000003F",borderColor:"#FFFFFF",borderWidth:1},emphasis:{areaColor:"#00000059"}},roam:!(!p||!p.length)}},h,g,b,v)})}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./app/utils/util.ts"),i=n("./app/globalConstants.ts"),s=void 0;t.default=o},"./app/containers/Widget/charts/mapFile/china.js":function(e,t,n){var r,o,a,i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function(s,l){"object"===i(t)&&"string"!=typeof t.nodeName?l(t,n("./node_modules/echarts/lib/echarts.js")):(o=[t,n("./node_modules/echarts/lib/echarts.js")],r=l,void 0!==(a="function"==typeof r?r.apply(t,o):r)&&(e.exports=a))}(0,function(e,t){var n=function(e){"undefined"!=typeof console&&console&&console.error&&console.error(e)};return t?t.registerMap?void t.registerMap("china",{type:"FeatureCollection",features:[{id:"710000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@°Ü¯Û"],["@@ƛĴÕƊÉɼģºðʀ\\ƎsÆNŌÔĚäœnÜƤɊĂǀĆĴžĤNJŨxĚĮǂƺòƌ‚–âÔ®ĮXŦţƸZûЋƕƑGđ¨ĭMó·ęcëƝɉlÝƯֹÅŃ^Ó·śŃNjƏďíåɛGɉ™¿@ăƑŽ¥ĘWǬÏĶŁâ"],["@@\\p|WoYG¿¥I†j@¢"],["@@…¡‰@ˆV^RqˆBbAŒnTXeRz¤Lž«³I"],["@@ÆEE—„kWqë @œ"],["@@fced"]],encodeOffsets:[[[122886,24033]],[[123335,22980]],[[122375,24193]],[[122518,24117]],[[124427,22618]],[[124862,26043]]]},properties:{cp:[121.509062,25.044332],name:"台湾",childNum:6}},{id:"130000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@o~†Z]‚ªr‰ºc_ħ²G¼s`jΟnüsœłNX_“M`ǽÓnUK…Ĝēs¤­©yrý§uģŒc†JŠ›e"],["@@U`Ts¿m‚"],["@@oºƋÄd–eVŽDJj£€J|Ådz•Ft~žKŨ¸IÆv|”‡¢r}膎onb˜}`RÎÄn°ÒdÞ²„^®’lnÐèĄlðӜ×]ªÆ}LiĂ±Ö`^°Ç¶p®đDcœŋ`–ZÔ’¶êqvFƚ†N®ĆTH®¦O’¾ŠIbÐã´BĐɢŴÆíȦp–ĐÞXR€·nndOž¤’OÀĈƒ­Qg˜µFo|gȒęSWb©osx|hYh•gŃfmÖĩnº€T̒Sp›¢dYĤ¶UĈjl’ǐpäìë|³kÛfw²Xjz~ÂqbTŠÑ„ěŨ@|oM‡’zv¢ZrÃVw¬ŧĖ¸fŒ°ÐT€ªqŽs{Sž¯r æÝlNd®²Ğ džiGʂJ™¼lr}~K¨ŸƐÌWö€™ÆŠzRš¤lêmĞL΄’@¡|q]SvK€ÑcwpÏρ†ĿćènĪWlĄkT}ˆJ”¤~ƒÈT„d„™pddʾĬŠ”ŽBVt„EÀ¢ôPĎƗè@~‚k–ü\\rÊĔÖæW_§¼F˜†´©òDòj’ˆYÈrbĞāøŀG{ƀ|¦ðrb|ÀH`pʞkv‚GpuARhÞÆǶgʊTǼƹS£¨¡ù³ŘÍ]¿Ây™ôEP xX¶¹܇O¡“gÚ¡IwÃ鑦ÅB‡Ï|Ç°…N«úmH¯‹âŸDùŽyŜžŲIÄuШDž•¸dɂ‡‚FŸƒ•›Oh‡đ©OŸ›iÃ`ww^ƒÌkŸ‘ÑH«ƇǤŗĺtFu…{Z}Ö@U‡´…ʚLg®¯Oı°ÃwŸ ^˜—€VbÉs‡ˆmA…ê]]w„§›RRl£‡ȭµu¯b{ÍDěïÿȧŽuT£ġƒěŗƃĝ“Q¨fV†Ƌ•ƅn­a@‘³@šď„yýIĹÊKšŭfċŰóŒxV@tˆƯŒJ”]eƒR¾fe|rHA˜|h~Ėƍl§ÏŠlTíb ØoˆÅbbx³^zÃĶš¶Sj®A”yÂhðk`š«P€”ˈµEF†Û¬Y¨Ļrõqi¼‰Wi°§’б´°^[ˆÀ|ĠO@ÆxO\\tŽa\\tĕtû{ġŒȧXýĪÓjùÎRb›š^ΛfK[ݏděYfíÙTyŽuUSyŌŏů@Oi½’éŅ­aVcř§ax¹XŻác‡žWU£ôãºQ¨÷Ñws¥qEH‰Ù|‰›šYQoŕÇyáĂ£MðoťÊ‰P¡mšWO¡€v†{ôvîēÜISpÌhp¨ ‘j†deŔQÖj˜X³à™Ĉ[n`Yp@Už–cM`’RKhŒEbœ”pŞlNut®Etq‚nsÁŠgA‹iú‹oH‡qCX‡”hfgu“~ϋWP½¢G^}¯ÅīGCŸÑ^ãziMáļMTÃƘrMc|O_ž¯Ŏ´|‡morDkO\\mĆJfl@cĢ¬¢aĦtRıҙ¾ùƀ^juųœK­ƒUFy™—Ɲ…›īÛ÷ąV×qƥV¿aȉd³B›qPBm›aËđŻģm“Å®VŠ¹d^K‡KoŸnYg“¯Xhqa”Ldu¥•ÍpDž¡KąÅƒkĝęěhq‡}HyÓ]¹ǧ£…Í÷¿qᵧš™g‘¤o^á¾ZE‡¤i`ij{n•ƒOl»ŸWÝĔįhg›F[¿¡—ßkOüš_‰€ū‹i„DZàUtėGylƒ}ŒÓM}€jpEC~¡FtoQi‘šHkk{Ãmï‚"]],encodeOffsets:[[[119712,40641]],[[121616,39981]],[[116462,37237]]]},properties:{cp:[114.502461,38.045474],name:"河北",childNum:3}},{id:"140000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@Þĩ҃S‰ra}Á€yWix±Üe´lè“ßÓǏok‘ćiµVZģ¡coœ‘TS˹ĪmnÕńe–hZg{gtwªpXaĚThȑp{¶Eh—®RćƑP¿£‘Pmc¸mQÝW•ďȥoÅîɡųAďä³aωJ‘½¥PG­ąSM­™…EÅruµé€‘Yӎ•Ō_d›ĒCo­Èµ]¯_²ÕjāŽK~©ÅØ^ԛkïçămϑk]­±ƒcݯÑÃmQÍ~_a—pm…~ç¡q“ˆu{JÅŧ·Ls}–EyÁÆcI{¤IiCfUc•ƌÃp§]웫vD@¡SÀ‘µM‚ÅwuŽYY‡¡DbÑc¡hƒ×]nkoQdaMç~eD•ÛtT‰©±@¥ù@É¡‰ZcW|WqOJmĩl«ħşvOÓ«IqăV—¥ŸD[mI~Ó¢cehiÍ]Ɠ~ĥqXŠ·eƷœn±“}v•[ěďŽŕ]_‘œ•`‰¹ƒ§ÕōI™o©b­s^}Ét±ū«³p£ÿ·Wµ|¡¥ăFÏs׌¥ŅxŸÊdÒ{ºvĴÎêÌɊ²¶€ü¨|ÞƸµȲ‘LLúÉƎ¤ϊęĔV`„_bª‹S^|ŸdŠzY|dz¥p†ZbÆ£¶ÒK}tĦÔņƠ‚PYzn€ÍvX¶Ěn ĠÔ„zý¦ª˜÷žÑĸَUȌ¸‚dòÜJð´’ìúNM¬ŒXZ´‘¤ŊǸ_tldIš{¦ƀðĠȤ¥NehXnYG‚‡R° ƬDj¬¸|CĞ„Kq‚ºfƐiĺ©ª~ĆOQª ¤@ìǦɌ²æBŒÊ”TœŸ˜ʂōĖ’šĴŞ–ȀœÆÿȄlŤĒö„t”νî¼ĨXhŒ‘˜|ªM¤Ðz"],encodeOffsets:[[116874,41716]]},properties:{cp:[112.549248,37.857014],name:"山西",childNum:1}},{id:"150000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@Č^â£Ăh–šĖMÈÄw‚\\fŦ°W ¢¾luŸD„wŠ\\̀ʉÌÛM…Ā[bӞEn}¶Vc…ê“sƒ–›¯PqƒFB…‰|S•³C|kñ•H‹d‘iÄ¥sˆʼnő…PóÑÑE^‘ÅPpy_YtS™hQ·aHwsOnʼnÚs©iqj›‰€USiº]ïWš‰«gW¡A–R붛ijʕ…Œů`çõh]y»ǃŸǛҤxÒm~zf}pf|ÜroÈzrKÈĵSƧ„ż؜Ġu¦ö"],["@@sKCš…GS|úþX”gp›{ÁX¿Ÿć{ƱȏñZáĔyoÁhA™}ŅĆfdʼn„_¹„Y°ėǩÑ¡H¯¶oMQqð¡Ë™|‘Ñ`ƭŁX½·óۓxğįÅcQ‡ˆ“ƒs«tȋDžF“Ÿù^i‘t«Č¯[›hAi©á¥ÇĚ×l|¹y¯YȵƓ‹ñǙµï‚ċ™Ļ|Dœ™üȭ¶¡˜›oŽäÕG\\ďT¿Òõr¯œŸLguÏYęRƩšɷŌO\\İТæ^Ŋ IJȶȆbÜGŽĝ¬¿ĚVĎgª^íu½jÿĕęjık@Ľƒ]ėl¥Ë‡ĭûÁ„ƒėéV©±ćn©­ȇžÍq¯½•YÃÔʼn“ÉNѝÅÝy¹NqáʅDǡËñ­ƁYÅy̱os§ȋµʽǘǏƬɱà‘ưN¢ƔÊuľýľώȪƺɂļžxœZĈ}ÌʼnŪ˜ĺœŽĭFЛĽ̅ȣͽÒŵìƩÇϋÿȮǡŏçƑůĕ~Ǎ›¼ȳÐUf†dIxÿ\\G ˆzâɏÙOº·pqy£†@ŒŠqþ@Ǟ˽IBäƣzsÂZ†ÁàĻdñ°ŕzéØűzșCìDȐĴĺf®ŽÀľưø@ɜÖÞKĊŇƄ§‚͑těï͡VAġÑÑ»d³öǍÝXĉĕÖ{þĉu¸ËʅğU̎éhɹƆ̗̮ȘNJ֥ड़ࡰţાíϲäʮW¬®ҌeרūȠkɬɻ̼ãüfƠSצɩςåȈHϚÎKdzͲOðÏȆƘ¼CϚǚ࢚˼ФԂ¤ƌžĞ̪Qʤ´¼mȠJˀŸƲÀɠmǐnǔĎȆÞǠN~€ʢĜ‚¶ƌĆĘźʆȬ˪ĚĒ¸ĞGȖƴƀj`ĢçĶāàŃºēĢƒĖćšYŒÀŎüôQÐÂŎŞdžŞêƖš˜oˆDĤÕºÑǘÛˤ³̀gńƘĔÀ^žªƂ`ªt¾äƚêĦĀ¼Ð€Ĕǎ¨Ȕ»͠^ˮÊȦƤøxRrŜH¤¸ÂxDĝŒ|ø˂˜ƮÐ¬ɚwɲFjĔ²Äw°dždÀɞ_ĸdîàŎjʜêTЪŌ‡ŜWÈ|tqĢUB~´°ÎFC•ŽU¼pĀēƄN¦¾O¶ŠłKĊOj“Ě”j´ĜYp˜{¦„ˆSĚÍ\\Tš×ªV–÷Ší¨ÅDK°ßtŇĔKš¨ǵÂcḷ̌ĚǣȄĽF‡lġUĵœŇ‹ȣFʉɁƒMğįʏƶɷØŭOǽ«ƽū¹Ʊő̝Ȩ§ȞʘĖiɜɶʦ}¨֪ࠜ̀ƇǬ¹ǨE˦ĥªÔêFŽxúQ„Er´W„rh¤Ɛ \\talĈDJ˜Ü|[Pll̚¸ƎGú´Pž¬W¦†^¦–H]prR“n|or¾wLVnÇIujkmon£cX^Bh`¥V”„¦U¤¸}€xRj–[^xN[~ªŠxQ„‚[`ªHÆÂExx^wšN¶Ê˜|¨ì†˜€MrœdYp‚oRzNy˜ÀDs~€bcfÌ`L–¾n‹|¾T‚°c¨È¢a‚r¤–`[|òDŞĔöxElÖdH„ÀI`„Ď\\Àì~ƎR¼tf•¦^¢ķ¶e”ÐÚMŒptgj–„ɡČÅyġLû™ŇV®ŠÄÈƀ†Ď°P|ªVV†ªj–¬ĚÒêp¬–E|ŬÂc|ÀtƐK fˆ{ĘFĒœƌXƲąo½Ę‘\\¥–o}›Ûu£ç­kX‘{uĩ«āíÓUŅßŢq€Ť¥lyň[€oi{¦‹L‡ń‡ðFȪȖ”ĒL„¿Ì‹ˆfŒ£K£ʺ™oqNŸƒwğc`ue—tOj×°KJ±qƒÆġm‰Ěŗos¬…qehqsuœƒH{¸kH¡Š…ÊRǪÇƌbȆ¢´ä܍¢NìÉʖ¦â©Ż؛Ç@Vu»A—ylßí¹ĵê…ÝlISò³C¹Ìâ„²i¶’Ìoú^H“²CǜңDŽ z¼g^èöŰ_‹‚–†IJĕꄜ}gÁnUI«m‰…„‹]j‡vV¼euhwqA„aW˜ƒ_µj…»çjioQR¹ēÃßt@r³[ÛlćË^ÍÉáG“›OUۗOB±•XŸkŇ¹£k|e]ol™ŸkVͼÕqtaÏõjgÁ£§U^Œ”RLˆËnX°Ç’Bz†^~wfvˆypV ¯„ƫĉ˭ȫƗŷɿÿĿƑ˃ĝÿÃǃßËőó©ǐȍŒĖM×ÍEyx‹þp]Évïè‘vƀnÂĴÖ@‚‰†V~Ĉ™Š³MEˆĸÅĖt—ējyÄDXÄxGQuv_›i¦aBçw‘˛wD™©{ŸtāmQ€{EJ§KPśƘƿ¥@‰sCT•É}ɃwˆƇy±ŸgÑ“}T[÷kÐ禫…SÒ¥¸ëBX½‰HáŵÀğtSÝÂa[ƣ°¯¦P]£ġ“–“Òk®G²„èQ°óMq}EŠóƐÇ\\ƒ‡@áügQ͋u¥Fƒ“T՛¿Jû‡]|mvāÎYua^WoÀa·­ząÒot׶CLƗi¯¤mƎHNJ¤îìɾŊìTdåwsRÖgĒųúÍġäÕ}Q¶—ˆ¿A•†‹[¡Œ{d×uQAƒ›M•xV‹vMOmăl«ct[wº_šÇʊŽŸjb£ĦS_é“QZ“_lwgOiýe`YYLq§IÁˆdz£ÙË[ÕªuƏ³ÍT—s·bÁĽäė[›b[ˆŗfãcn¥îC¿÷µ[ŏÀQ­ōšĉm¿Á^£mJVm‡—L[{Ï_£›F¥Ö{ŹA}…×Wu©ÅaųijƳhB{·TQqÙIķˑZđ©Yc|M¡…L•eVUóK_QWk’_ĥ‘¿ãZ•»X\\ĴuUƒè‡lG®ěłTĠğDєOrÍd‚ÆÍz]‹±…ŭ©ŸÅ’]ŒÅÐ}UË¥©Tċ™ïxgckfWgi\\ÏĒ¥HkµE˜ë{»ÏetcG±ahUiñiWsɁˆ·c–C‚Õk]wȑ|ća}w…VaĚ᠞ŒG°ùnM¬¯†{ȈÐÆA’¥ÄêJxÙ¢”hP¢Ûˆº€µwWOŸóFŽšÁz^ÀŗÎú´§¢T¤ǻƺSė‰ǵhÝÅQgvBHouʝl_o¿Ga{ïq{¥|ſĿHĂ÷aĝÇq‡Z‘ñiñC³ª—…»E`¨åXēÕqÉû[l•}ç@čƘóO¿¡ƒFUsA‰“ʽīccšocƒ‚ƒÇS}„“£‡IS~ălkĩXçmĈ…ŀЂoÐdxÒuL^T{r@¢‘žÍƒĝKén£kQ™‰yšÅõËXŷƏL§~}kqš»IHėDžjĝŸ»ÑÞoŸå°qTt|r©ÏS‹¯·eŨĕx«È[eMˆ¿yuˆ‘pN~¹ÏyN£{©’—g‹ħWí»Í¾s“əšDž_ÃĀɗ±ą™ijĉʍŌŷ—S›É“A‹±åǥɋ@럣R©ąP©}ĹªƏj¹erƒLDĝ·{i«ƫC£µ"]],encodeOffsets:[[[127444,52594]],[[113793,40312]]]},properties:{cp:[111.670801,40.818311],name:"内蒙古",childNum:2}},{id:"210000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@L–Ž@@s™a"],["@@MnNm"],["@@d‚c"],["@@eÀ‚C@b‚“‰"],["@@f‡…Xwkbr–Ä`qg"],["@@^jtW‘Q"],["@@~ Y]c"],["@@G`ĔN^_¿Z‚ÃM"],["@@iX¶B‹Y"],["@@„YƒZ"],["@@L_{Epf"],["@@^WqCT\\"],["@@\\[“‹§t|”¤_"],["@@m`n_"],["@@Ïxnj{q_×^Giip"],["@@@œé^B†‡ntˆaÊU—˜Ÿ]x ¯ÄPIJ­°h€ʙK³†VˆÕ@Y~†|EvĹsDŽ¦­L^p²ŸÒG ’Ël]„xxÄ_˜fT¤Ď¤cŽœP„–C¨¸TVjbgH²sdÎdHt`Bˆ—²¬GJję¶[ÐhjeXdlwhšðSȦªVÊπ‹Æ‘Z˜ÆŶ®²†^ŒÎyÅÎcPqń“ĚDMħĜŁH­ˆk„çvV[ij¼W–‚YÀäĦ’‘`XlžR`žôLUVžfK–¢†{NZdĒª’YĸÌÚJRr¸SA|ƴgŴĴÆbvªØX~†źBŽ|¦ÕœEž¤Ð`\\|Kˆ˜UnnI]¤ÀÂĊnŎ™R®Ő¿¶\\ÀøíDm¦ÎbŨab‰œaĘ\\ľã‚¸a˜tÎSƐ´©v\\ÖÚÌǴ¤Â‡¨JKr€Z_Z€fjþhPkx€`Y”’RIŒjJcVf~sCN¤ ˆE‚œhæm‰–sHy¨SðÑÌ\\\\ŸĐRZk°IS§fqŒßýáЍÙÉÖ[^¯ǤŲ„ê´\\¦¬ĆPM¯£Ÿˆ»uïpùzEx€žanµyoluqe¦W^£ÊL}ñrkqWňûP™‰UP¡ôJŠoo·ŒU}£Œ„[·¨@XŒĸŸ“‹‹DXm­Ûݏº‡›GU‹CÁª½{íĂ^cj‡k“¶Ã[q¤“LÉö³cux«zZfƒ²BWÇ®Yß½ve±ÃC•ý£W{Ú^’q^sÑ·¨‹ÍOt“¹·C¥‡GD›rí@wÕKţ݋˜Ÿ«V·i}xËÍ÷‘i©ĝ‡ɝǡ]ƒˆ{c™±OW‹³Ya±Ÿ‰_穂Hžĕoƫ€Ňqƒr³‰Lys[„ñ³¯OS–ďOMisZ†±ÅFC¥Pq{‚Ã[Pg}\\—¿ghćO…•k^ģÁFıĉĥM­oEqqZûěʼn³F‘¦oĵ—hŸÕP{¯~TÍlª‰N‰ßY“Ð{Ps{ÃVU™™eĎwk±ʼnVÓ½ŽJãÇÇ»Jm°dhcÀff‘dF~ˆ€ĀeĖ€d`sx² šƒ®EżĀdQ‹Âd^~ăÔHˆ¦\\›LKpĄVez¤NP ǹӗR™ÆąJSh­a[¦´Âghwm€BÐ¨źhI|žVVŽ—Ž|p] Â¼èNä¶ÜBÖ¼“L`‚¼bØæŒKV”ŸpoœúNZÞÒKxpw|ÊEMnzEQšŽIZ”ŽZ‡NBˆčÚFÜçmĩ‚WĪñt‘ÞĵÇñZ«uD‚±|Əlij¥ãn·±PmÍa‰–da‡ CL‡Ǒkùó¡³Ï«QaċϑOÃ¥ÕđQȥċƭy‹³ÃA"]],encodeOffsets:[[[123686,41445]],[[126019,40435]],[[124393,40128]],[[126117,39963]],[[125322,40140]],[[126686,40700]],[[126041,40374]],[[125584,40168]],[[125453,40165]],[[125362,40214]],[[125280,40291]],[[125774,39997]],[[125976,40496]],[[125822,39993]],[[125509,40217]],[[122731,40949]]]},properties:{cp:[123.429096,41.796767],name:"辽宁",childNum:16}},{id:"220000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@‘p䔳PClƒFbbÍzš€wBG’ĭ€Z„Åi“»ƒlY­ċ²SgŽkÇ£—^S‰“qd¯•‹R…©éŽ£¯S†\\cZ¹iűƏCuƍÓX‡oR}“M^o•£…R}oªU­F…uuXHlEŕ‡€Ï©¤ÛmTŽþ¤D–²ÄufàÀ­XXȱAe„yYw¬dvõ´KÊ£”\\rµÄl”iˆdā]|DÂVŒœH¹ˆÞ®ÜWnŒC”Œķ W‹§@\\¸‹ƒ~¤‹Vp¸‰póIO¢ŠVOšŇürXql~òÉK]¤¥Xrfkvzpm¶bwyFoúvð‡¼¤ N°ąO¥«³[ƒéǡű_°Õ\\ÚÊĝŽþâőàerR¨­JYlďQ[ ÏYëЧTGz•tnŠß¡gFkMŸāGÁ¤ia É‰™È¹`\\xs€¬dĆkNnuNUŠ–užP@‚vRY¾•–\\¢…ŒGªóĄ~RãÖÎĢù‚đŴÕhQŽxtcæëSɽʼníëlj£ƍG£nj°KƘµDsØÑpyƸ®¿bXp‚]vbÍZuĂ{nˆ^IüœÀSք”¦EŒvRÎûh@℈[‚Əȉô~FNr¯ôçR±ƒ­HÑl•’Ģ–^¤¢‚OðŸŒævxsŒ]ÞÁTĠs¶¿âƊGW¾ìA¦·TѬ†è¥€ÏÐJ¨¼ÒÖ¼ƒƦɄxÊ~S–tD@ŠĂ¼Ŵ¡jlºWžvЉˆzƦZЎ²CH— „Axiukd‹ŒGgetqmcžÛ£Ozy¥cE}|…¾cZ…k‚‰¿uŐã[oxGikfeäT@…šSUwpiÚFM©’£è^ڟ‚`@v¶eň†f h˜eP¶žt“äOlÔUgƒÞzŸU`lœ}ÔÆUvØ_Ō¬Öi^ĉi§²ÃŠB~¡Ĉ™ÚEgc|DC_Ȧm²rBx¼MÔ¦ŮdĨÃâYx‘ƘDVÇĺĿg¿cwÅ\\¹˜¥Yĭlœ¤žOv†šLjM_a W`zļMž·\\swqÝSA‡š—q‰Śij¯Š‘°kŠRē°wx^Đkǂғ„œž“œŽ„‹\\]˜nrĂ}²ĊŲÒøãh·M{yMzysěnĒġV·°“G³¼XÀ““™¤¹i´o¤ŃšŸÈ`̃DzÄUĞd\\i֚ŒˆmÈBĤÜɲDEh LG¾ƀľ{WaŒYÍȏĢĘÔRîĐj‹}Ǟ“ccj‡oUb½š{“h§Ǿ{K‹ƖµÎ÷žGĀÖŠåưÎs­l›•yiē«‹`姝H¥Ae^§„GK}iã\\c]v©ģZ“mÃ|“[M}ģTɟĵ‘Â`À–çm‰‘FK¥ÚíÁbXš³ÌQґHof{‰]e€pt·GŋĜYünĎųVY^’˜ydõkÅZW„«WUa~U·Sb•wGçǑ‚“iW^q‹F‚“›uNĝ—·Ew„‹UtW·Ýďæ©PuqEzwAV•—XR‰ãQ`­©GŒM‡ehc›c”ďϝd‡©ÑW_ϗYƅŒ»…é\\ƒɹ~ǙG³mØ©BšuT§Ĥ½¢Ã_ý‘L¡‘ýŸqT^rme™\\Pp•ZZbƒyŸ’uybQ—efµ]UhĿDCmûvašÙNSkCwn‰cćfv~…Y‹„ÇG"],encodeOffsets:[[130196,42528]]},properties:{cp:[125.3245,43.886841],name:"吉林",childNum:1}},{id:"230000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@ƨƒĶTLÇyqpÇÛqe{~oyen}s‰`q‡iXG”ù]Ëp½“©lɇÁp]Þñ´FÔ^f‘äîºkà˜z¼BUvÈ@"],["@@UƒµNÿ¥īè灋•HÍøƕ¶LŒǽ|g¨|”™Ža¾pViˆdd”~ÈiŒíďÓQġėǐZ΋ŽXb½|ſÃH½ŸKFgɱCģÛÇA‡n™‹jÕc[VĝDZÃ˄Ç_™ £ń³pŽj£º”š¿”»WH´¯”U¸đĢmžtĜyzzNN|g¸÷äűѱĉā~mq^—Œ[ƒ”››”ƒǁÑďlw]¯xQĔ‰¯l‰’€°řĴrŠ™˜BˆÞTxr[tŽ¸ĻN_yŸX`biN™Ku…P›£k‚ZĮ—¦[ºxÆÀdhŽĹŀUÈƗCw’áZħÄŭcÓ¥»NAw±qȥnD`{ChdÙFćš}¢‰A±Äj¨]ĊÕjŋ«×`VuÓś~_kŷVÝyh„“VkÄãPs”Oµ—fŸge‚Ň…µf@u_Ù ÙcŸªNªÙEojVx™T@†ãSefjlwH\\pŏäÀvŠŽlY†½d{†F~¦dyz¤PÜndsrhf‹HcŒvlwjFœ£G˜±DύƥY‡yϊu¹XikĿ¦ÏqƗǀOŜ¨LI|FRĂn sª|Cš˜zxAè¥bœfudTrFWÁ¹Am|˜ĔĕsķÆF‡´Nš‰}ć…UŠÕ@Áijſmužç’uð^ÊýowŒFzØÎĕNőžǏȎôªÌŒDŽàĀÄ˄ĞŀƒʀĀƘŸˮȬƬĊ°ƒUŸzou‡xe]}Ž…AyȑW¯ÌmK‡“Q]‹Īºif¸ÄX|sZt|½ÚUΠlkš^p{f¤lˆºlÆW –€A²˜PVܜPH”Êâ]ÎĈÌÜk´\\@qàsĔÄQºpRij¼èi†`¶—„bXƒrBgxfv»ŽuUiˆŒ^v~”J¬mVp´£Œ´VWrnP½ì¢BX‚¬h™ŠðX¹^TjVœŠriªj™tŊÄm€tPGx¸bgRšŽsT`ZozÆO]’ÒFô҆Oƒ‡ŊŒvŞ”p’cGŒêŠsx´DR–Œ{A†„EOr°Œ•žx|íœbˆ³Wm~DVjºéNN†Ëܲɶ­GƒxŷCStŸ}]ûō•SmtuÇÃĕN•™āg»šíT«u}ç½BĵÞʣ¥ëÊ¡Mێ³ãȅ¡ƋaǩÈÉQ‰†G¢·lG|›„tvgrrf«†ptęŘnŠÅĢr„I²¯LiØsPf˜_vĠd„xM prʹšL¤‹¤‡eˌƒÀđK“žïÙVY§]I‡óáĥ]ķ†Kˆ¥Œj|pŇ\\kzţ¦šnņäÔVĂîĪ¬|vW’®l¤èØr‚˜•xm¶ă~lÄƯĄ̈́öȄEÔ¤ØQĄ–Ą»ƢjȦOǺ¨ìSŖÆƬy”Qœv`–cwƒZSÌ®ü±DŽ]ŀç¬B¬©ńzƺŷɄeeOĨS’Œfm Ċ‚ƀP̎ēz©Ċ‚ÄÕÊmgŸÇsJ¥ƔˆŊśæ’΁Ñqv¿íUOµª‰ÂnĦÁ_½ä@ê텣P}Ġ[@gġ}g“ɊדûÏWXá¢užƻÌsNͽƎÁ§č՛AēeL³àydl›¦ĘVçŁpśdžĽĺſʃQíÜçÛġԏsĕ¬—Ǹ¯YßċġHµ ¡eå`ļƒrĉŘóƢFì“ĎWøxÊk†”ƈdƬv|–I|·©NqńRŀƒ¤é”eŊœŀ›ˆàŀU²ŕƀB‚Q£Ď}L¹Îk@©ĈuǰųǨ”Ú§ƈnTËÇéƟÊcfčŤ^Xm‡—HĊĕË«W·ċëx³ǔķÐċJā‚wİ_ĸ˜Ȁ^ôWr­°oú¬Ħ…ŨK~”ȰCĐ´Ƕ£’fNÎèâw¢XnŮeÂÆĶŽ¾¾xäLĴĘlļO¤ÒĨA¢Êɚ¨®‚ØCÔ ŬGƠ”ƦYĜ‡ĘÜƬDJ—g_ͥœ@čŅĻA“¶¯@wÎqC½Ĉ»NŸăëK™ďÍQ“Ùƫ[«Ãí•gßÔÇOÝáW‘ñuZ“¯ĥ€Ÿŕā¡ÑķJu¤E Ÿå¯°WKɱ_d_}}vyŸõu¬ï¹ÓU±½@gÏ¿rýD‰†g…Cd‰µ—°MFYxw¿CG£‹Rƛ½Õ{]L§{qqąš¿BÇƻğëšܭNJË|c²}Fµ}›ÙRsÓpg±ŠQNqǫŋRwŕnéÑÉKŸ†«SeYR…ŋ‹@{¤SJ}šD Ûǖ֍Ÿ]gr¡µŷjqWÛham³~S«“„›Þ]"]],encodeOffsets:[[[127123,51780]],[[134456,44547]]]},properties:{cp:[126.642464,45.756967],name:"黑龙江",childNum:2}},{id:"320000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@cþÅPiŠ`ZŸRu¥É\\]~°ŽY`µ†Óƒ^phÁbnÀşúŽòa–ĬºTÖŒb‚˜e¦¦€{¸ZâćNpŒ©žHr|^ˆmjhŠSEb\\afv`sz^lkŽlj‹Ätg‹¤D˜­¾Xš¿À’|ДiZ„ȀåB·î}GL¢õcßjaŸyBFµÏC^ĭ•cÙt¿sğH]j{s©HM¢ƒQnDÀ©DaÜތ·jgàiDbPufjDk`dPOîƒhw¡ĥ‡¥šG˜ŸP²ĐobºrY†„î¶aHŢ´ ]´‚rılw³r_{£DB_Ûdåuk|ˆŨ¯F Cºyr{XFy™e³Þċ‡¿Â™kĭB¿„MvÛpm`rÚã”@Ę¹hågËÖƿxnlč¶Åì½Ot¾dJlŠVJʜǀœŞqvnOŠ^ŸJ”Z‘ż·Q}ê͎ÅmµÒ]Žƍ¦Dq}¬R^èĂ´ŀĻĊIԒtžIJyQŐĠMNtœR®òLh‰›Ěs©»œ}OӌGZz¶A\\jĨFˆäOĤ˜HYš†JvÞHNiÜaϚɖnFQlšNM¤ˆB´ĄNöɂtp–Ŭdf先‹qm¿QûŠùއÚb¤uŃJŴu»¹Ą•lȖħŴw̌ŵ²ǹǠ͛hĭłƕrçü±Y™xci‡tğ®jű¢KOķ•Coy`å®VTa­_Ā]ŐÝɞï²ʯÊ^]afYǸÃĆēĪȣJđ͍ôƋĝÄ͎ī‰çÛɈǥ£­ÛmY`ó£Z«§°Ó³QafusNıDž_k}¢m[ÝóDµ—¡RLčiXy‡ÅNïă¡¸iĔϑNÌŕoēdōîåŤûHcs}~Ûwbù¹£¦ÓCt‹OPrƒE^ÒoŠg™ĉIµžÛÅʹK…¤½phMŠü`o怆ŀ"],encodeOffsets:[[121740,32276]]},properties:{cp:[118.767413,32.041544],name:"江苏",childNum:1}},{id:"330000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@E^dQ]K"],["@@jX^j‡"],["@@sfŠbU‡"],["@@qP\\xz[ck"],["@@‘Rƒ¢‚FX}°[s_"],["@@Cbœ\\—}"],["@@e|v\\la{u"],["@@v~u}"],["@@QxÂF¯}"],["@@¹nŒvÞs¯o"],["@@rSkUEj"],["@@bi­ZŒP"],["@@p[}INf"],["@@À¿€"],["@@¹dnbŒ…"],["@@rSŸBnR"],["@@g~h}"],["@@FlEk"],["@@OdPc"],["@@v[u\\"],["@@FjâL~wyoo~›sµL–\\"],["@@¬e¹aNˆ"],["@@\\nÔ¡q]L³ë\\ÿ®ŒQ֎"],["@@ÊA­©[¬"],["@@KxŒv­"],["@@@hlIk]"],["@@pW{o||j"],["@@Md|_mC"],["@@¢…X£ÏylD¼XˆtH"],["@@hlÜ[LykAvyfw^Ež›¤"],["@@fp¤Mus“R"],["@@®_ma~•LÁ¬šZ"],["@@iM„xZ"],["@@ZcYd"],["@@Z~dOSo|A¿qZv"],["@@@`”EN¡v"],["@@|–TY{"],["@@@n@m"],["@@XWkCT\\"],["@@ºwšZRkĕWO¢"],["@@™X®±Grƪ\\ÔáXq{‹"],["@@ůTG°ĄLHm°UC‹"],["@@¤Ž€aÜx~}dtüGæţŎíĔcŖpMËВjē¢·ðĄÆMzˆjWKĎ¢Q¶˜À_꒔_Bı€i«pZ€gf€¤Nrq]§ĂN®«H±‡yƳí¾×ŸīàLłčŴǝĂíÀBŖÕªˆŠÁŖHŗʼnåqûõi¨hÜ·ƒñt»¹ýv_[«¸m‰YL¯‰Qª…mĉÅdMˆ•gÇjcº«•ęœ¬­K­´ƒB«Âącoċ\\xKd¡gěŧ«®á’[~ıxu·Å”KsËɏc¢Ù\\ĭƛëbf¹­ģSƒĜkáƉÔ­ĈZB{ŠaM‘µ‰fzʼnfåÂŧįƋǝÊĕġć£g³ne­ą»@­¦S®‚\\ßðCšh™iqªĭiAu‡A­µ”_W¥ƣO\\lċĢttC¨£t`ˆ™PZäuXßBs‡Ļyek€OđġĵHuXBšµ]׌‡­­\\›°®¬F¢¾pµ¼kŘó¬Wät’¸|@ž•L¨¸µr“ºù³Ù~§WI‹ŸZWŽ®’±Ð¨ÒÉx€`‰²pĜ•rOògtÁZ}þÙ]„’¡ŒŸFK‚wsPlU[}¦Rvn`hq¬\\”nQ´ĘRWb”‚_ rtČFI֊kŠŠĦPJ¶ÖÀÖJĈĄTĚòžC ²@Pú…Øzœ©PœCÈڜĒ±„hŖ‡l¬â~nm¨f©–iļ«m‡nt–u†ÖZÜÄj“ŠLŽ®E̜Fª²iÊxبžIÈhhst"],["@@o\\V’zRZ}y"],["@@†@°¡mۛGĕ¨§Ianá[ýƤjfæ‡ØL–•äGr™"]],encodeOffsets:[[[125592,31553]],[[125785,31436]],[[125729,31431]],[[125513,31380]],[[125223,30438]],[[125115,30114]],[[124815,29155]],[[124419,28746]],[[124095,28635]],[[124005,28609]],[[125e3,30713]],[[125111,30698]],[[125078,30682]],[[125150,30684]],[[124014,28103]],[[125008,31331]],[[125411,31468]],[[125329,31479]],[[125626,30916]],[[125417,30956]],[[125254,30976]],[[125199,30997]],[[125095,31058]],[[125083,30915]],[[124885,31015]],[[125218,30798]],[[124867,30838]],[[124755,30788]],[[124802,30809]],[[125267,30657]],[[125218,30578]],[[125200,30562]],[[124968,30474]],[[125167,30396]],[[124955,29879]],[[124714,29781]],[[124762,29462]],[[124325,28754]],[[123990,28459]],[[125366,31477]],[[125115,30363]],[[125369,31139]],[[122495,31878]],[[125329,30690]],[[125192,30787]]]},properties:{cp:[120.153576,30.287459],name:"浙江",childNum:45}},{id:"340000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@^iuLX^"],["@@‚e©Ehl"],["@@°ZÆëϵmkǀwÌÕæhºgBĝâqÙĊz›ÖgņtÀÁÊÆá’hEz|WzqD¹€Ÿ°E‡ŧl{ævÜcA`¤C`|´qžxIJkq^³³ŸGšµbƒíZ…¹qpa±ď OH—¦™Ħˆx¢„gPícOl_iCveaOjCh߸i݋bÛªCC¿€m„RV§¢A|t^iĠGÀtÚs–d]ĮÐDE¶zAb àiödK¡~H¸íæAžǿYƒ“j{ď¿‘™À½W—®£ChŒÃsiŒkkly]_teu[bFa‰Tig‡n{]Gqªo‹ĈMYá|·¥f¥—őaSÕė™NµñĞ«ImŒ_m¿Âa]uĜp …Z_§{Cƒäg¤°r[_Yj‰ÆOdý“[ŽI[á·¥“Q_n‡ùgL¾mv™ˊBÜƶĊJhšp“c¹˜O]iŠ]œ¥ jtsggJǧw×jÉ©±›EFˍ­‰Ki”ÛÃÕYv…s•ˆm¬njĻª•§emná}k«ŕˆƒgđ²Ù›DǤ›í¡ªOy›†×Où±@DŸñSęćăÕIÕ¿IµĥO‰‰jNÕËT¡¿tNæŇàåyķrĕq§ÄĩsWÆߎF¶žX®¿‰mŒ™w…RIޓfßoG‘³¾©uyH‘į{Ɓħ¯AFnuP…ÍÔzšŒV—dàôº^Ðæd´€‡oG¤{S‰¬ćxã}›ŧ×Kǥĩ«žÕOEзÖdÖsƘѨ[’Û^Xr¢¼˜§xvěƵ`K”§ tÒ´Cvlo¸fzŨð¾NY´ı~ÉĔē…ßúLÃϖ_ÈÏ|]ÂÏFl”g`bšežž€n¾¢pU‚h~ƴĖ¶_‚r sĄ~cž”ƈ]|r c~`¼{À{ȒiJjz`îÀT¥Û³…]’u}›f…ïQl{skl“oNdŸjŸäËzDvčoQŠďHI¦rb“tHĔ~BmlRš—V_„ħTLnñH±’DžœL‘¼L˜ªl§Ťa¸ŒĚlK²€\\RòvDcÎJbt[¤€D@®hh~kt°ǾzÖ@¾ªdb„YhüóZ ň¶vHrľ\\ʗJuxAT|dmÀO„‹[ÃԋG·ĚąĐlŪÚpSJ¨ĸˆLvÞcPæķŨŽ®mАˆálŸwKhïgA¢ųƩޖ¤OȜm’°ŒK´"]],encodeOffsets:[[[121722,32278]],[[119475,30423]],[[119168,35472]]]},properties:{cp:[117.283042,31.86119],name:"安徽",childNum:3}},{id:"350000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@“zht´‡]"],["@@aj^~ĆG—©O"],["@@ed¨„C}}i"],["@@@vˆPGsQ"],["@@‰sBz‚ddW]Q"],["@@SŽ¨Q“{"],["@@NŽVucW"],["@@qptBAq"],["@@‰’¸[mu"],["@@Q\\pD]_"],["@@jSwUadpF"],["@@eXª~ƒ•"],["@@AjvFso"],["@@fT–›_Çí\\Ÿ™—v|ba¦jZÆy€°"],["@@IjJi"],["@@wJI€ˆxš«¼AoNe{M­"],["@@K‰±¡Óˆ”ČäeZ"],["@@k¡¹Eh~c®wBk‹UplÀ¡I•~Māe£bN¨gZý¡a±Öcp©PhžI”Ÿ¢Qq…ÇGj‹|¥U™ g[Ky¬ŏ–v@OpˆtÉEŸF„\\@ åA¬ˆV{Xģ‰ĐBy…cpě…¼³Ăp·¤ƒ¥o“hqqÚ¡ŅLsƒ^ᗞ§qlŸÀhH¨MCe»åÇGD¥zPO£čÙkJA¼ß–ėu›ĕeûҍiÁŧSW¥˜QŠûŗ½ùěcݧSùĩąSWó«íęACµ›eR—åǃRCÒÇZÍ¢‹ź±^dlsŒtjD¸•‚ZpužÔâÒH¾oLUêÃÔjjēò´ĄW‚ƛ…^Ñ¥‹ĦŸ@Çò–ŠmŒƒOw¡õyJ†yD}¢ďÑÈġfŠZd–a©º²z£šN–ƒjD°Ötj¶¬ZSÎ~¾c°¶Ðm˜x‚O¸¢Pl´žSL|¥žA†ȪĖM’ņIJg®áIJČĒü` ŽQF‡¬h|ÓJ@zµ |ê³È ¸UÖŬŬÀEttĸr‚]€˜ðŽM¤ĶIJHtÏ A’†žĬkvsq‡^aÎbvŒd–™fÊòSD€´Z^’xPsÞrv‹ƞŀ˜jJd×ŘÉ ®A–ΦĤd€xĆqAŒ†ZR”ÀMźŒnĊ»ŒİÐZ— YX–æJŠyĊ²ˆ·¶q§·–K@·{s‘Xãô«lŗ¶»o½E¡­«¢±¨Yˆ®Ø‹¶^A™vWĶGĒĢžPlzfˆļŽtàAvWYãšO_‡¤sD§ssČġ[kƤPX¦Ž`¶“ž®ˆBBvĪjv©šjx[L¥àï[F…¼ÍË»ğV`«•Ip™}ccÅĥZE‹ãoP…´B@ŠD—¸m±“z«Ƴ—¿å³BRضˆœWlâþäą`“]Z£Tc— ĹGµ¶H™m@_©—kŒ‰¾xĨ‡ôȉðX«½đCIbćqK³Á‹Äš¬OAwã»aLʼn‡ËĥW[“ÂGI—ÂNxij¤D¢ŽîĎÎB§°_JœGsƒ¥E@…¤uć…P‘å†cuMuw¢BI¿‡]zG¹guĮck\\_"]],encodeOffsets:[[[123250,27563]],[[122541,27268]],[[123020,27189]],[[122916,27125]],[[122887,26845]],[[122808,26762]],[[122568,25912]],[[122778,26197]],[[122515,26757]],[[122816,26587]],[[123388,27005]],[[122450,26243]],[[122578,25962]],[[121255,25103]],[[120987,24903]],[[122339,25802]],[[121042,25093]],[[122439,26024]]]},properties:{cp:[119.306239,26.075302],name:"福建",childNum:18}},{id:"360000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@ĢĨƐgļˆ¼ÂMD~ņªe^\\^§„ý©j׍cZ†Ø¨zdÒa¶ˆlҍJŒìõ`oz÷@¤u޸´†ôęöY¼‰HČƶajlÞƩ¥éZ[”|h}^U Œ ¥p„ĄžƦO lt¸Æ €Q\\€ŠaÆ|CnÂOjt­ĚĤd’ÈŒF`’¶„@Ð딠¦ōҞ¨Sêv†HĢûXD®…QgėWiØPÞìºr¤dž€NĠ¢l–•ĄtZoœCƞÔºCxrpĠV®Ê{f_Y`_ƒeq’’®Aot`@o‚DXfkp¨|Šs¬\\D‘ÄSfè©Hn¬…^DhÆyøJh“ØxĢĀLʈ„ƠPżċĄwȠ̦G®ǒĤäTŠÆ~ĦwŠ«|TF¡Šn€c³Ïå¹]ĉđxe{ÎӐ†vOEm°BƂĨİ|G’vz½ª´€H’àp”eJ݆Qšxn‹ÀŠW­žEµàXÅĪt¨ÃĖrÄwÀFÎ|ňÓMå¼ibµ¯»åDT±m[“r«_gŽmQu~¥V\\OkxtL E¢‹ƒ‘Ú^~ýê‹Pó–qo슱_Êw§ÑªåƗā¼‹mĉŹ‹¿NQ“…YB‹ąrwģcÍ¥B•Ÿ­ŗÊcØiI—žƝĿuŒqtāwO]‘³YCñTeɕš‹caub͈]trlu€ī…B‘ПGsĵıN£ï—^ķqss¿FūūV՟·´Ç{éĈý‰ÿ›OEˆR_ŸđûIċâJh­ŅıN‘ȩĕB…¦K{Tk³¡OP·wn—µÏd¯}½TÍ«YiµÕsC¯„iM•¤™­•¦¯P|ÿUHv“he¥oFTu‰õ\\ŽOSs‹MòđƇiaºćXŸĊĵà·çhƃ÷ǜ{‘ígu^›đg’m[×zkKN‘¶Õ»lčÓ{XSƉv©_ÈëJbVk„ĔVÀ¤P¾ºÈMÖxlò~ªÚàGĂ¢B„±’ÌŒK˜y’áV‡¼Ã~­…`g›ŸsÙfI›Ƌlę¹e|–~udjˆuTlXµf`¿JdŠ[\\˜„L‚‘²"],encodeOffsets:[[116689,26234]]},properties:{cp:[115.892151,28.676493],name:"江西",childNum:1}},{id:"370000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@Xjd]{K"],["@@itbFHy"],["@@HlGk"],["@@T‚ŒGŸy"],["@@K¬˜•‹U"],["@@WdXc"],["@@PtOs"],["@@•LnXhc"],["@@ppVƒu]Or"],["@@cdzAUa"],["@@udRhnCI‡"],["@@ˆoIƒpR„"],["@@Ľč{fzƤî’Kš–ÎMĮ]†—ZFˆ½Y]â£ph’™š¶¨râøÀ†ÎǨ¤^ºÄ”Gzˆ~grĚĜlĞƄLĆdž¢Îo¦–cv“Kb€gr°Wh”mZp ˆL]LºcU‰Æ­n”żĤÌĒœbAnrOAœ´žȊcÀbƦUØrĆUÜøœĬƞ†š˜Ez„VL®öØBkŖÝĐĖ¹ŧ̄±ÀbÎɜnb²ĦhņBĖ›žįĦåXćì@L¯´ywƕCéõė ƿ¸‘lµ¾Z|†ZWyFYŸ¨Mf~C¿`€à_RÇzwƌfQnny´INoƬˆèôº|sT„JUš›‚L„îVj„ǎ¾Ē؍‚Dz²XPn±ŴPè¸ŔLƔÜƺ_T‘üÃĤBBċȉöA´fa„˜M¨{«M`‡¶d¡ô‰Ö°šmȰBÔjjŒ´PM|”c^d¤u•ƒ¤Û´Œä«ƢfPk¶Môlˆ]Lb„}su^ke{lC‘…M•rDŠÇ­]NÑFsmoõľH‰yGă{{çrnÓE‰‹ƕZGª¹Fj¢ïW…uøCǷ돡ąuhÛ¡^Kx•C`C\\bÅxì²ĝÝ¿_N‰īCȽĿåB¥¢·IŖÕy\\‡¹kx‡Ã£Č×GDyÕ¤ÁçFQ¡„KtŵƋ]CgÏAùSed‡cÚź—ŠuYfƒyMmhUWpSyGwMPqŀ—›Á¼zK›¶†G•­Y§Ëƒ@–´śÇµƕBmœ@Io‚g——Z¯u‹TMx}C‘‰VK‚ï{éƵP—™_K«™pÛÙqċtkkù]gŽ‹Tğwo•ɁsMõ³ă‡AN£™MRkmEʕč™ÛbMjÝGu…IZ™—GPģ‡ãħE[iµBEuŸDPԛ~ª¼ętŠœ]ŒûG§€¡QMsğNPŏįzs£Ug{đJĿļā³]ç«Qr~¥CƎÑ^n¶ÆéÎR~Ż¸Y’I“] P‰umŝrƿ›‰›Iā‹[x‰edz‹L‘¯v¯s¬ÁY…~}…ťuŁŒg›ƋpÝĄ_ņī¶ÏSR´ÁP~ž¿Cyžċßdwk´Ss•X|t‰`Ä Èð€AªìÎT°¦Dd–€a^lĎDĶÚY°Ž`ĪŴǒˆ”àŠv\\ebŒZH„ŖR¬ŢƱùęO•ÑM­³FۃWp[ƒ"]],encodeOffsets:[[[123806,39303]],[[123821,39266]],[[123742,39256]],[[123702,39203]],[[123649,39066]],[[123847,38933]],[[123580,38839]],[[123894,37288]],[[123043,36624]],[[123344,38676]],[[123522,38857]],[[123628,38858]],[[118260,36742]]]},properties:{cp:[117.000923,36.675807],name:"山东",childNum:13}},{id:"410000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@•ýL™ùµP³swIÓxcŢĞð†´E®žÚPt†ĴXØx¶˜@«ŕŕQGƒ‹Yfa[şu“ßǩ™đš_X³ijÕčC]kbc•¥CS¯ëÍB©÷‹–³­Siˆ_}m˜YTtž³xlàcȂzÀD}ÂOQ³ÐTĨ¯†ƗòËŖ[hœł‹Ŧv~††}ÂZž«¤lPǕ£ªÝŴÅR§ØnhcŒtâk‡nύ­ľŹUÓÝdKuķ‡I§oTũÙďkęĆH¸ÓŒ\\ăŒ¿PcnS{wBIvɘĽ[GqµuŸŇôYgûƒZcaŽ©@½Õǽys¯}lgg@­C\\£as€IdÍuCQñ[L±ęk·‹ţb¨©kK—’»›KC²‘òGKmĨS`ƒ˜UQ™nk}AGē”sqaJ¥ĐGR‰ĎpCuÌy ã iMc”plk|tRk†ðœev~^‘´†¦ÜŽSí¿_iyjI|ȑ|¿_»d}qŸ^{“Ƈdă}Ÿtqµ`Ƴĕg}V¡om½fa™Ço³TTj¥„tĠ—Ry”K{ùÓjuµ{t}uËR‘iŸvGŠçJFjµŠÍyqΘàQÂFewixGw½Yŷpµú³XU›½ġy™łå‰kÚwZXˆ·l„¢Á¢K”zO„Λ΀jc¼htoDHr…|­J“½}JZ_¯iPq{tę½ĕ¦Zpĵø«kQ…Ťƒ]MÛfaQpě±ǽ¾]u­Fu‹÷nƒ™čįADp}AjmcEǒaª³o³ÆÍSƇĈÙDIzˑ赟^ˆKLœ—i—Þñ€[œƒaA²zz‰Ì÷Dœ|[šíijgf‚ÕÞd®|`ƒĆ~„oĠƑô³Ŋ‘D×°¯CsŠøÀ«ì‰UMhTº¨¸ǡîS–Ô„DruÂÇZ•ÖEŽ’vPZ„žW”~؋ÐtĄE¢¦Ðy¸bŠô´oŬ¬Ž²Ês~€€]®tªašpŎJ¨Öº„_ŠŔ–`’Ŗ^Ѝ\\Ĝu–”~m²Ƹ›¸fW‰ĦrƔ}Î^gjdfÔ¡J}\\n C˜¦þWxªJRÔŠu¬ĨĨmF†dM{\\d\\ŠYÊ¢ú@@¦ª²SŠÜsC–}fNècbpRmlØ^g„d¢aÒ¢CZˆZxvÆ¶N¿’¢T@€uCœ¬^ĊðÄn|žlGl’™Rjsp¢ED}€Fio~ÔNŽ‹„~zkĘHVsDzßjƒŬŒŠŢ`Pûàl¢˜\\ÀœEhŽİgÞē X¼Pk–„|m"],encodeOffsets:[[118256,37017]]},properties:{cp:[113.665412,34.757975],name:"河南",childNum:1}},{id:"420000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@AB‚"],["@@lskt"],["@@¾«}{ra®pîÃ\\™›{øCŠËyyB±„b\\›ò˜Ý˜jK›‡L ]ĎĽÌ’JyÚCƈćÎT´Å´pb©È‘dFin~BCo°BĎĚømvŒ®E^vǾ½Ĝ²Ro‚bÜeNŽ„^ĺ£R†¬lĶ÷YoĖ¥Ě¾|sOr°jY`~I”¾®I†{GqpCgyl{‡£œÍƒÍyPL“¡ƒ¡¸kW‡xYlÙ抚ŁĢzœ¾žV´W¶ùŸo¾ZHxjwfx„GNÁ•³Xéæl¶‰EièIH‰ u’jÌQ~v|sv¶Ôi|ú¢Fh˜Qsğ¦ƒSiŠBg™ÐE^ÁÐ{–čnOÂȞUÎóĔ†ÊēIJ}Z³½Mŧïeyp·uk³DsѨŸL“¶_œÅuèw»—€¡WqÜ]\\‘Ò§tƗcÕ¸ÕFÏǝĉăxŻČƟO‡ƒKÉġÿ×wg”÷IÅzCg†]m«ªGeçÃTC’«[‰t§{loWeC@ps_Bp‘­r‘„f_``Z|ei¡—oċMqow€¹DƝӛDYpûs•–‹Ykıǃ}s¥ç³[§ŸcYŠ§HK„«Qy‰]¢“wwö€¸ïx¼ņ¾Xv®ÇÀµRĠЋžHMž±cÏd„ƒǍũȅȷ±DSyúĝ£ŤĀàtÖÿï[îb\\}pĭÉI±Ñy…¿³x¯N‰o‰|¹H™ÏÛm‹júË~Tš•u˜ęjCöAwě¬R’đl¯ Ñb­‰ŇT†Ŀ_[Œ‘IčĄʿnM¦ğ\\É[T·™k¹œ©oĕ@A¾w•ya¥Y\\¥Âaz¯ãÁ¡k¥ne£Ûw†E©Êō¶˓uoj_Uƒ¡cF¹­[Wv“P©w—huÕyBF“ƒ`R‹qJUw\\i¡{jŸŸEPïÿ½fć…QÑÀQ{ž‚°‡fLԁ~wXg—ītêݾ–ĺ‘Hdˆ³fJd]‹HJ²…E€ƒoU¥†HhwQsƐ»Xmg±çve›]Dm͂PˆoCc¾‹_h”–høYrŊU¶eD°Č_N~øĹĚ·`z’]Äþp¼…äÌQŒv\\rCŒé¾TnkžŐڀÜa‡“¼ÝƆĢ¶Ûo…d…ĔňТJq’Pb ¾|JŒ¾fXŠƐîĨ_Z¯À}úƲ‹N_ĒĊ^„‘ĈaŐyp»CÇĕKŠšñL³ŠġMŒ²wrIÒŭxjb[œžn«øœ˜—æˆàƒ ^²­h¯Ú€ŐªÞ¸€Y²ĒVø}Ā^İ™´‚LŠÚm„¥ÀJÞ{JVŒųÞŃx×sxxƈē ģMř–ÚðòIf–Ċ“Œ\\Ʈ±ŒdʧĘD†vČ_Àæ~DŒċ´A®µ†¨ØLV¦êHÒ¤"]],encodeOffsets:[[[113712,34e3]],[[115612,30507]],[[113649,34054]]]},properties:{cp:[114.298572,30.584355],name:"湖北",childNum:3}},{id:"430000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@—n„FTs"],["@@ßÅÆችÔXr—†CO™“…ËR‘ïÿĩ­TooQyšÓ[‹ŅBE¬–ÎÓXa„į§Ã¸G °ITxp‰úxÚij¥Ïš–Ģ¾ŠedžÄ©ĸG…œàGh‚€M¤–Â_U}Ċ}¢pczfŠþg¤€”ÇòAV‘‹M"],["@@©K—ƒA·³CQ±Á«³BUŠƑ¹AŠtćOw™D]ŒJiØSm¯b£‘ylƒ›X…HËѱH•«–‘C^õľA–Å§¤É¥„ïyuǙuA¢^{ÌC´­¦ŷJ£^[†“ª¿‡ĕ~•Ƈ…•N… skóā‡¹¿€ï]ă~÷O§­@—Vm¡‹Qđ¦¢Ĥ{ºjԏŽŒª¥nf´•~ÕoŸž×Ûą‹MąıuZœmZcÒ IJĪ²SÊDŽŶ¨ƚƒ’CÖŎªQؼrŭŽ­«}NÏürʬŒmjr€@ĘrTW ­SsdHzƓ^ÇÂyUi¯DÅYlŹu{hTœ}mĉ–¹¥ě‰Dÿë©ıÓ[Oº£ž“¥ót€ł¹MՄžƪƒ`Pš…Di–ÛUŠ¾Å‌ìˆU’ñB“È£ýhe‰dy¡oċ€`pfmjP~‚kZa…ZsÐd°wj§ƒ@€Ĵ®w~^‚kÀÅKvNmX\\¨a“”сqvíó¿F„¤¡@ũÑVw}S@j}¾«pĂr–ªg àÀ²NJ¶¶Dô…K‚|^ª†Ž°LX¾ŴäPĪ±œ£EXd›”^¶›IJÞܓ~‘u¸ǔ˜Ž›MRhsR…e†`ÄofIÔ\\Ø  i”ćymnú¨cj ¢»–GČìƊÿШXeĈĀ¾Oð Fi ¢|[jVxrIQŒ„_E”zAN¦zLU`œcªx”OTu RLÄ¢dV„i`p˔vŎµªÉžF~ƒØ€d¢ºgİàw¸Áb[¦Zb¦–z½xBĖ@ªpº›šlS¸Ö\\Ĕ[N¥ˀmĎă’J\\‹ŀ`€…ňSڊĖÁĐiO“Ĝ«BxDõĚiv—ž–S™Ì}iùŒžÜnšÐºGŠ{Šp°M´w†ÀÒzJ²ò¨ oTçüöoÛÿñŽőФ‚ùTz²CȆȸǎŪƒƑÐc°dPÎŸğ˶[Ƚu¯½WM¡­Éž“’B·rížnZŸÒ `‡¨GA¾\\pē˜XhÆRC­üWGġu…T靧Ŏѝ©ò³I±³}_‘‹EÃħg®ęisÁPDmÅ{‰b[Rşs·€kPŸŽƥƒóRo”O‹ŸVŸ~]{g\\“êYƪ¦kÝbiċƵŠGZ»Ěõ…ó·³vŝž£ø@pyö_‹ëŽIkѵ‡bcѧy…×dY؎ªiþž¨ƒ[]f]Ņ©C}ÁN‡»hĻħƏ’ĩ"]],encodeOffsets:[[[115640,30489]],[[112543,27312]],[[116690,26230]]]},properties:{cp:[112.982279,28.19409],name:"湖南",childNum:3}},{id:"440000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@QdˆAua"],["@@ƒlxDLo"],["@@sbhNLo"],["@@Ă āŸ"],["@@WltO[["],["@@Krœ]S"],["@@e„„I]y"],["@@I|„Mym"],["@@ƒÛ³LSŒž¼Y"],["@@nvºB–ëui©`¾"],["@@zdšÛ›Jw®"],["@@†°…¯"],["@@a yAª¸ËJIx،@€ĀHAmßV¡o•fu•o"],["@@šs‰ŗÃÔėAƁ›ZšÄ ~°ČP‚‹äh"],["@@‹¶Ý’Ì‚vmĞh­ı‡Q"],["@@HœŠdSjĒ¢D}war…“u«ZqadYM"],["@@elŒ\\LqqU"],["@@~rMo\\"],["@@f„^ƒC"],["@@øPªoj÷ÍÝħXČx”°Q¨ıXNv"],["@@gÇƳˆŽˆ”oˆŠˆ[~tly"],["@@E–ÆC¿‘"],["@@OŽP"],["@@w‹†đóg‰™ĝ—[³‹¡VÙæÅöM̳¹pÁaËýý©D©Ü“JŹƕģGą¤{Ùū…ǘO²«BƱéA—Ò‰ĥ‡¡«BhlmtÃPµyU¯uc“d·w_bŝcīímGOŽ|KP’ȏ‡ŹãŝIŕŭŕ@Óoo¿ē‹±ß}Ž…ŭ‚ŸIJWÈCőâUâǙI›ğʼn©I›ijEׅÁ”³Aó›wXJþ±ÌŒÜӔĨ£L]ĈÙƺZǾĆĖMĸĤfŒÎĵl•ŨnȈ‘ĐtF”Š–FĤ–‚êk¶œ^k°f¶gŠŽœ}®Fa˜f`vXŲxl˜„¦–ÔÁ²¬ÐŸ¦pqÊ̲ˆi€XŸØRDÎ}†Ä@ZĠ’s„x®AR~®ETtĄZ†–ƈfŠŠHâÒÐA†µ\\S¸„^wĖkRzŠalŽŜ|E¨ÈNĀňZTŒ’pBh£\\ŒĎƀuXĖtKL–¶G|Ž»ĺEļĞ~ÜĢÛĊrˆO˜Ùîvd]nˆ¬VœÊĜ°R֟pM††–‚ƂªFbwžEÀˆ˜©Œž\\…¤]ŸI®¥D³|ˎ]CöAŤ¦…æ’´¥¸Lv¼€•¢ĽBaô–F~—š®²GÌҐEY„„œzk¤’°ahlV՞I^‹šCxĈPŽsB‰ƒºV‰¸@¾ªR²ĨN]´_eavSi‡vc•}p}Đ¼ƌkJœÚe thœ†_¸ ºx±ò_xN›Ë‹²‘@ƒă¡ßH©Ùñ}wkNÕ¹ÇO½¿£ĕ]ly_WìIžÇª`ŠuTÅxYĒÖ¼k֞’µ‚MžjJÚwn\\h‘œĒv]îh|’È›Ƅøègž¸Ķß ĉĈWb¹ƀdéʌNTtP[ŠöSvrCZžžaGuœbo´ŖÒÇА~¡zCI…özx¢„Pn‹•‰Èñ @ŒĥÒ¦†]ƞŠV}³ăĔñiiÄÓVépKG½Ä‘ÓávYo–C·sit‹iaÀy„ŧΡÈYDÑům}‰ý|m[węõĉZÅxUO}÷N¹³ĉo_qtă“qwµŁYلǝŕ¹tïÛUïmRCº…ˆĭ|µ›ÕÊK™½R‘ē ó]‘–GªęAx–»HO£|ām‡¡diď×YïYWªʼnOeÚtĐ«zđ¹T…ā‡úE™á²\\‹ķÍ}jYàÙÆſ¿Çdğ·ùTßÇţʄ¡XgWÀLJğ·¿ÃˆOj YÇ÷Qě‹i"]],encodeOffsets:[[[117381,22988]],[[116552,22934]],[[116790,22617]],[[116973,22545]],[[116444,22536]],[[116931,22515]],[[116496,22490]],[[116453,22449]],[[113301,21439]],[[118726,21604]],[[118709,21486]],[[113210,20816]],[[115482,22082]],[[113171,21585]],[[113199,21590]],[[115232,22102]],[[115739,22373]],[[115134,22184]],[[113056,21175]],[[119573,21271]],[[119957,24020]],[[115859,22356]],[[116561,22649]],[[116285,22746]]]},properties:{cp:[113.280637,23.125178],name:"广东",childNum:24}},{id:"450000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@H– TQ§•A"],["@@ĨʪƒLƒƊDÎĹĐCǦė¸zÚGn£¾›rªŀÜt¬@֛ڈSx~øOŒ˜ŶÐÂæȠ\\„ÈÜObĖw^oބLf¬°bI lTØB̈F£Ć¹gñĤaY“t¿¤VSñœK¸¤nM†¼‚JE±„½¸šŠño‹ÜCƆæĪ^ŠĚQÖ¦^‡ˆˆf´Q†üÜʝz¯šlzUĺš@쇀p¶n]sxtx¶@„~ÒĂJb©gk‚{°‚~c°`ԙ¬rV\\“la¼¤ôá`¯¹LC†ÆbŒxEræO‚v[H­˜„[~|aB£ÖsºdAĐzNÂðsŽÞƔ…Ĥªbƒ–ab`ho¡³F«èVloŽ¤™ÔRzpp®SŽĪº¨ÖƒºN…ij„d`’a”¦¤F³ºDÎńĀìŠCžĜº¦Ċ•~nS›|gźvZkCÆj°zVÈÁƔ]LÊFZg…čP­kini«‹qǀcz͔Y®¬Ů»qR×ō©DՄ‘§ƙǃŵTÉĩ±ŸıdÑnYY›IJvNĆƌØÜ Öp–}e³¦m‹©iÓ|¹Ÿħņ›|ª¦QF¢Â¬ʖovg¿em‡^ucà÷gՎuŒíÙćĝ}FĻ¼Ĺ{µHK•sLSđƃr‹č¤[Ag‘oS‹ŇYMÿ§Ç{Fśbky‰lQxĕƒ]T·¶[B…ÑÏGáşşƇe€…•ăYSs­FQ}­Bƒw‘tYğÃ@~…C̀Q ×W‡j˱rÉ¥oÏ ±«ÓÂ¥•ƒ€k—ŽwWűŒmcih³K›~‰µh¯e]lµ›él•Eģ‰•E“ďs‡’mǖŧē`ãògK_ÛsUʝ“ćğ¶hŒöŒO¤Ǜn³Žc‘`¡y‹¦C‘ez€YŠwa™–‘[ďĵűMę§]X˜Î_‚훘Û]é’ÛUćİÕBƣ±…dƒy¹T^džûÅÑŦ·‡PĻþÙ`K€¦˜…¢ÍeœĥR¿Œ³£[~Œäu¼dl‰t‚†W¸oRM¢ď\\zœ}Æzdvň–{ÎXF¶°Â_„ÒÂÏL©Ö•TmuŸ¼ãl‰›īkiqéfA„·Êµ\\őDc¥ÝF“y›Ôć˜c€űH_hL܋êĺШc}rn`½„Ì@¸¶ªVLŒŠhŒ‹\\•Ţĺk~ŽĠið°|gŒtTĭĸ^x‘vK˜VGréAé‘bUu›MJ‰VÃO¡…qĂXËS‰ģãlýàŸ_ju‡YÛÒB†œG^˜é֊¶§ŽƒEG”ÅzěƒƯ¤Ek‡N[kdåucé¬dnYpAyČ{`]þ¯T’bÜÈk‚¡Ġ•vŒàh„ÂƄ¢J"]],encodeOffsets:[[[111707,21520]],[[107619,25527]]]},properties:{cp:[108.320004,22.82402],name:"广西",childNum:2}},{id:"460000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@š¦Ŝil¢”XƦ‘ƞò–ïè§ŞCêɕrŧůÇąĻõ™·ĉ³œ̅kÇm@ċȧƒŧĥ‰Ľʉ­ƅſ“ȓÒ˦ŝE}ºƑ[ÍĜȋ gÎfǐÏĤ¨êƺ\\Ɔ¸ĠĎvʄȀœÐ¾jNðĀÒRŒšZdž™zÐŘΰH¨Ƣb²_Ġ "],encodeOffsets:[[112750,20508]]},properties:{cp:[110.33119,20.031971],name:"海南",childNum:1}},{id:"510000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@LqKr"],["@@Š[ĻéV£ž_ţġñpG •réÏ·~ąSfy×͂·ºſƽiÍıƣıĻmHH}siaX@iÇ°ÁÃ×t«ƒ­Tƒ¤J–JJŒyJ•ÈŠ`Ohߦ¡uËhIyCjmÿw…ZG……Ti‹SˆsO‰žB²ŸfNmsPaˆ{M{ŠõE‘^Hj}gYpaeuž¯‘oáwHjÁ½M¡pM“–uå‡mni{fk”\\oƒÎqCw†EZ¼K›ĝŠƒAy{m÷L‡wO×SimRI¯rK™õBS«sFe‡]fµ¢óY_ÆPRcue°Cbo׌bd£ŌIHgtrnyPt¦foaXďx›lBowz‹_{ÊéWiêE„GhܸºuFĈIxf®Ž•Y½ĀǙ]¤EyŸF²ċ’w¸¿@g¢§RGv»–áŸW`ÃĵJwi]t¥wO­½a[׈]`Ãi­üL€¦LabbTÀå’c}Íh™Æhˆ‹®BH€î|Ék­¤S†y£„ia©taį·Ɖ`ō¥Uh“O…ƒĝLk}©Fos‰´›Jm„µlŁu—…ø–nÑJWΪ–YÀïAetTžŅ‚ӍG™Ë«bo‰{ıwodƟ½ƒžOġܑµxàNÖ¾P²§HKv¾–]|•B‡ÆåoZ`¡Ø`ÀmºĠ~ÌЧnDž¿¤]wğ@sƒ‰rğu‰~‘Io”[é±¹ ¿žſđӉ@q‹gˆ¹zƱřaí°KtǤV»Ã[ĩǭƑ^ÇÓ@ỗs›Zϕ‹œÅĭ€Ƌ•ěpwDóÖሯneQˌq·•GCœýS]xŸ·ý‹q³•O՜Œ¶Qzßti{ř‰áÍÇWŝŭñzÇW‹pç¿JŒ™‚Xœĩè½cŒF–ÂLiVjx}\\N†ŇĖ¥Ge–“JA¼ÄHfÈu~¸Æ«dE³ÉMA|b˜Ò…˜ćhG¬CM‚õŠ„ƤąAvƒüV€éŀ‰_V̳ĐwQj´·ZeÈÁ¨X´Æ¡Qu·»Ÿ“˜ÕZ³ġqDo‰y`L¬gdp°şŠp¦ėìÅĮZŽ°Iä”h‚‘ˆzŠĵœf²å ›ĚрKp‹IN|‹„Ñz]ń……·FU×é»R³™MƒÉ»GM«€ki€™ér™}Ã`¹ăÞmȝnÁîRǀ³ĜoİzŔwǶVÚ£À]ɜ»ĆlƂ²Ġ…þTº·àUȞÏʦ¶†I’«dĽĢdĬ¿–»Ĕ׊h\\c¬†ä²GêëĤł¥ÀǿżÃÆMº}BÕĢyFVvw–ˆxBèĻĒ©Ĉ“tCĢɽŠȣ¦āæ·HĽî“ôNԓ~^¤Ɗœu„œ^s¼{TA¼ø°¢İªDè¾Ň¶ÝJ‘®Z´ğ~Sn|ªWÚ©òzPOȸ‚bð¢|‹øĞŠŒœŒQìÛÐ@Ğ™ǎRS¤Á§d…i“´ezÝúØã]Hq„kIŸþËQǦÃsǤ[E¬ÉŪÍxXƒ·ÖƁİlƞ¹ª¹|XÊwn‘ÆƄmÀêErĒtD®ċæcQƒ”E®³^ĭ¥©l}äQto˜ŖÜqƎkµ–„ªÔĻĴ¡@Ċ°B²Èw^^RsºTĀ£ŚæœQP‘JvÄz„^Đ¹Æ¯fLà´GC²‘dt˜­ĀRt¼¤ĦOðğfÔðDŨŁĞƘïžPȆ®âbMüÀXZ ¸£@Ś›»»QÉ­™]d“sÖ×_͖_ÌêŮPrĔĐÕGĂeZÜîĘqBhtO ¤tE[h|Y‹Ô‚ZśÎs´xº±UŒ’ñˆt|O’ĩĠºNbgþŠJy^dÂY Į„]Řz¦gC‚³€R`ĀŠz’¢AjŒ¸CL„¤RÆ»@­Ŏk\\Ç´£YW}z@Z}‰Ã¶“oû¶]´^N‡Ò}èN‚ª–P˜Íy¹`S°´†ATe€VamdUĐwʄvĮÕ\\ƒu‹Æŗ¨Yp¹àZÂm™Wh{á„}WØǍ•Éüw™ga§áCNęÎ[ĀÕĪgÖɪX˜øx¬½Ů¦¦[€—„NΆL€ÜUÖ´òrÙŠxR^–†J˜k„ijnDX{Uƒ~ET{ļº¦PZc”jF²Ė@Žp˜g€ˆ¨“B{ƒu¨ŦyhoÚD®¯¢˜ WòàFΤ¨GDäz¦kŮPœġq˚¥À]€Ÿ˜eŽâÚ´ªKxī„Pˆ—Ö|æ[xäJÞĥ‚s’NÖ½ž€I†¬nĨY´®Ð—ƐŠ€mD™ŝuäđđEb…e’e_™v¡}ìęNJē}q”É埁T¯µRs¡M@}ůa†a­¯wvƉåZwž\\Z{åû^›"]],encodeOffsets:[[[108815,30935]],[[110617,31811]]]},properties:{cp:[104.065735,30.659462],name:"四川",childNum:2}},{id:"520000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@†G\\†lY£‘in"],["@@q‚|ˆ‚mc¯tχVSÎ"],["@@hÑ£Is‡NgßH†›HªķÃh_¹ƒ¡ĝħń¦uيùŽgS¯JHŸ|sÝÅtÁïyMDč»eÕtA¤{b\\}—ƒG®u\\åPFq‹wÅaD…žK°ºâ_£ùbµ”mÁ‹ÛœĹM[q|hlaªāI}тƒµ@swtwm^oµˆD鼊yV™ky°ÉžûÛR…³‚‡eˆ‡¥]RՋěħ[ƅåÛDpŒ”J„iV™™‰ÂF²I…»mN·£›LbÒYb—WsÀbŽ™pki™TZĄă¶HŒq`……ĥ_JŸ¯ae«ƒKpÝx]aĕÛPƒÇȟ[ÁåŵÏő—÷Pw}‡TœÙ@Õs«ĿÛq©½œm¤ÙH·yǥĘĉBµĨÕnđ]K„©„œá‹ŸG纍§Õßg‡ǗĦTèƤƺ{¶ÉHÎd¾ŚÊ·OÐjXWrãLyzÉAL¾ę¢bĶėy_qMĔąro¼hĊžw¶øV¤w”²Ĉ]ʚKx|`ź¦ÂÈdr„cȁbe¸›`I¼čTF´¼Óýȃr¹ÍJ©k_șl³´_pН`oÒhŽ¶pa‚^ÓĔ}D»^Xyœ`d˜[Kv…JPhèhCrĂĚÂ^Êƌ wˆZL­Ġ£šÁbrzOIl’MM”ĪŐžËr×ÎeŦŽtw|Œ¢mKjSǘňĂStÎŦEtqFT†¾†E쬬ôxÌO¢Ÿ KŠ³ŀºäY†„”PVgŎ¦Ŋm޼VZwVlŒ„z¤…ž£Tl®ctĽÚó{G­A‡ŒÇgeš~Αd¿æaSba¥KKûj®_ć^\\ؾbP®¦x^sxjĶI_Ä X‚⼕Hu¨Qh¡À@Ëô}Ž±žGNìĎlT¸ˆ…`V~R°tbÕĊ`¸úÛtπFDu€[ƒMfqGH·¥yA‰ztMFe|R‚_Gk†ChZeÚ°to˜v`x‹b„ŒDnÐ{E}šZ˜è€x—†NEފREn˜[Pv@{~rĆAB§‚EO¿|UZ~ì„Uf¨J²ĂÝƀ‚sª–B`„s¶œfvö¦ŠÕ~dÔq¨¸º»uù[[§´sb¤¢zþFœ¢Æ…Àhˆ™ÂˆW\\ıŽËI݊o±ĭŠ£þˆÊs}¡R]ŒěƒD‚g´VG¢‚j±®è†ºÃmpU[Á›‘Œëº°r›ÜbNu¸}Žº¼‡`ni”ºÔXĄ¤¼Ôdaµ€Á_À…†ftQQgœR—‘·Ǔ’v”}Ýלĵ]µœ“Wc¤F²›OĩųãW½¯K‚©…]€{†LóµCIµ±Mß¿hŸ•©āq¬o‚½ž~@i~TUxŪÒ¢@ƒ£ÀEîôruń‚”“‚b[§nWuMÆLl¿]x}ij­€½"]],encodeOffsets:[[[112158,27383]],[[112105,27474]],[[112095,27476]]]},properties:{cp:[106.713478,26.578343],name:"贵州",childNum:3}},{id:"530000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@[„ùx½}ÑRH‘YīĺûsÍn‘iEoã½Ya²ė{c¬ĝg•ĂsA•ØÅwď‚õzFjw}—«Dx¿}UũlŸê™@•HÅ­F‰¨ÇoJ´Ónũuą¡Ã¢pÒŌ“Ø TF²‚xa²ËX€‚cʋlHîAßËŁkŻƑŷÉ©h™W­æßU‡“Ës¡¦}•teèƶStǀÇ}Fd£j‹ĈZĆÆ‹¤T‚č\\Dƒ}O÷š£Uˆ§~ŃG™‚åŃDĝ¸œTsd¶¶Bªš¤u¢ŌĎo~t¾ÍŶÒtD¦Ú„iôö‰€z›ØX²ghįh½Û±¯€ÿm·zR¦Ɵ`ªŊÃh¢rOԍ´£Ym¼èêf¯ŪĽn„†cÚbŒw\\zlvWžªâˆ ¦g–mĿBş£¢ƹřbĥkǫßeeZkÙIKueT»sVesb‘aĕ  ¶®dNœĄÄpªyŽ¼—„³BE˜®l‡ŽGœŭCœǶwêżĔÂe„pÍÀQƞpC„–¼ŲÈ­AÎô¶R„ä’Q^Øu¬°š_Èôc´¹ò¨P΢hlϦ´Ħ“Æ´sâDŽŲPnÊD^¯°’Upv†}®BP̪–jǬx–Söwlfòªv€qĸ|`H€­viļ€ndĜ­Ćhň•‚em·FyށqóžSį¯‘³X_ĞçêtryvL¤§z„¦c¦¥jnŞk˜ˆlD¤øz½ĜàžĂŧMÅ|áƆàÊcðÂF܎‚áŢ¥\\\\º™İøÒÐJĴ‡„îD¦zK²ǏÎEh~’CD­hMn^ÌöÄ©ČZÀžaü„fɭyœpį´ěFűk]Ôě¢qlÅĆÙa¶~Äqššê€ljN¬¼H„ÊšNQ´ê¼VظE††^ŃÒyŒƒM{ŒJLoÒœęæŸe±Ķ›y‰’‡gã“¯JYÆĭĘëo¥Š‰o¯hcK«z_pŠrC´ĢÖY”—¼ v¸¢RŽÅW³Â§fǸYi³xR´ďUˊ`êĿU„û€uĆBƒƣö‰N€DH«Ĉg†——Ñ‚aB{ÊNF´¬c·Åv}eÇÃGB»”If•¦HňĕM…~[iwjUÁKE•Ž‹¾dĪçW›šI‹èÀŒoÈXòyŞŮÈXâÎŚŠj|àsRy‹µÖ›–Pr´þŒ ¸^wþTDŔ–Hr¸‹žRÌmf‡żÕâCôox–ĜƌÆĮŒ›Ð–œY˜tâŦÔ@]ÈǮƒ\\Ī¼Ä£UsȯLbîƲŚºyh‡rŒŠ@ĒԝƀŸÀ²º\\êp“’JŠ}ĠvŠqt„Ġ@^xÀ£È†¨mËÏğ}n¹_¿¢×Y_æpˆÅ–A^{½•Lu¨GO±Õ½ßM¶w’ÁĢۂP‚›Ƣ¼pcIJxŠ|ap̬HšÐŒŊSfsðBZ¿©“XÏÒK•k†÷Eû¿‰S…rEFsÕūk”óVǥʼniTL‚¡n{‹uxţÏh™ôŝ¬ğōN“‘NJkyPaq™Âğ¤K®‡YŸxÉƋÁ]āęDqçgOg†ILu—\\_gz—]W¼ž~CÔē]bµogpў_oď`´³Țkl`IªºÎȄqÔþž»E³ĎSJ»œ_f·‚adÇqƒÇc¥Á_Źw{™L^ɱćx“U£µ÷xgĉp»ĆqNē`rĘzaĵĚ¡K½ÊBzyäKXqiWPÏɸ½řÍcÊG|µƕƣG˛÷Ÿk°_^ý|_zċBZocmø¯hhcæ\\lˆMFlư£Ĝ„ÆyH“„F¨‰µêÕ]—›HA…àӄ^it `þßäkŠĤÎT~Wlÿ¨„ÔPzUC–NVv [jâôDôď[}ž‰z¿–msSh‹¯{jïğl}šĹ[–őŒ‰gK‹©U·µË@¾ƒm_~q¡f¹…ÅË^»‘f³ø}Q•„¡Ö˳gͱ^ǁ…\\ëÃA_—¿bW›Ï[¶ƛ鏝£F{īZgm@|kHǭƁć¦UĔťƒ×ë}ǝƒeďºȡȘÏíBə£āĘPªij¶“ʼnÿ‡y©n‰ď£G¹¡I›Š±LÉĺÑdĉ܇W¥˜‰}g˜Á†{aqÃ¥aŠıęÏZ—ï`"],encodeOffsets:[[104636,22969]]},properties:{cp:[102.712251,25.040609],name:"云南",childNum:1}},{id:"540000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@hžľxŽŖ‰xƒÒVŽ†ºÅâAĪÝȆµę¯Ňa±r_w~uSÕň‘qOj]ɄQ…£Z……UDûoY’»©M[‹L¼qãË{V͕çWViŽ]ë©Ä÷àyƛh›ÚU°ŒŒa”d„cQƒ~Mx¥™cc¡ÙaSyF—ցk­ŒuRýq¿Ôµ•QĽ³aG{¿FµëªéĜÿª@¬·–K‰·àariĕĀ«V»Ŷ™Ĵū˜gèLǴŇƶaf‹tŒèBŚ£^Šâ†ǐÝ®–šM¦ÁǞÿ¬LhŸŽJ¾óƾƺcxw‹f]Y…´ƒ¦|œQLn°aœdĊ…œ\\¨o’œǀÍŎœ´ĩĀd`tÊQŞŕ|‚¨C^©œĈ¦„¦ÎJĊ{ŽëĎjª²rЉšl`¼Ą[t|¦St辉PŒÜK¸€d˜Ƅı]s¤—î_v¹ÎVòŦj˜£Əsc—¬_Ğ´|Ł˜¦AvŽ¦w`ăaÝaa­¢e¤ı²©ªSªšÈMĄwžÉØŔì@T‘¤—Ę™\\õª@”þo´­xA s”ÂtŎKzó´ÇĊµ¢rž^nĊ­Æ¬×üGž¢‚³ {âĊ]š™G‚~bÀgVjzlhǶf€žOšfdŠ‰ªB]pj„•TO–tĊ‚n¤}®¦ƒČ¥d¢¼»ddš”Y¼Žt—¢eȤJ¤}Ǿ¡°§¤AГlc@ĝ”sªćļđAç‡wx•UuzEÖġ~AN¹ÄÅȀŻ¦¿ģŁéì±H…ãd«g[؉¼ēÀ•cīľġ¬cJ‘µ…ÐʥVȝ¸ßS¹†ý±ğkƁ¼ą^ɛ¤Ûÿ‰b[}¬ōõÃ]ËNm®g@•Bg}ÍF±ǐyL¥íCˆƒIij€Ï÷њį[¹¦[⚍EÛïÁÉdƅß{âNÆāŨߝ¾ě÷yC£‡k­´ÓH@¹†TZ¥¢įƒ·ÌAЧ®—Zc…v½ŸZ­¹|ŕWZqgW“|ieZÅYVӁqdq•bc²R@†c‡¥Rã»Ge†ŸeƃīQ•}J[ғK…¬Ə|o’ėjġĠÑN¡ð¯EBčnwôɍėªƒ²•CλŹġǝʅįĭạ̃ūȹ]ΓͧgšsgȽóϧµǛ†ęgſ¶ҍć`ĘąŌJޚä¤rÅň¥ÖÁUětęuůÞiĊÄÀ\\Æs¦ÓRb|Â^řÌkÄŷ¶½÷‡f±iMݑ›‰@ĥ°G¬ÃM¥n£Øą‚ğ¯ß”§aëbéüÑOčœk£{\\‘eµª×M‘šÉfm«Ƒ{Å׃Gŏǩãy³©WÑăû‚··‘Q—òı}¯ã‰I•éÕÂZ¨īès¶ZÈsŽæĔTŘvŽgÌsN@îá¾ó@‰˜ÙwU±ÉT廣TđŸWxq¹Zo‘b‹s[׌¯cĩv‡Œėŧ³BM|¹k‰ªħ—¥TzNYnݍßpęrñĠĉRS~½ŠěVVŠµ‚õ‡«ŒM££µB•ĉ¥áºae~³AuĐh`Ü³ç@BۘïĿa©|z²Ý¼D”£àč²‹ŸƒIƒû›I ā€óK¥}rÝ_Á´éMaň¨€~ªSĈ½Ž½KÙóĿeƃÆBŽ·¬ën×W|Uº}LJrƳ˜lŒµ`bÔ`QˆˆÐÓ@s¬ñIŒÍ@ûws¡åQÑßÁ`ŋĴ{Ī“T•ÚÅTSij‚‹Yo|Ç[ǾµMW¢ĭiÕØ¿@˜šMh…pÕ]j†éò¿OƇĆƇp€êĉâlØw–ěsˆǩ‚ĵ¸c…bU¹ř¨WavquSMzeo_^gsÏ·¥Ó@~¯¿RiīB™Š\\”qTGªÇĜçPoŠÿfñòą¦óQīÈáP•œābß{ƒZŗĸIæńhnszÁCËìñšÏ·ąĚÝUm®ó­L·ăU›Èíoù´Êj°ŁŤ_uµ^‘°Œìǖ@tĶĒ¡Æ‡M³Ģ«˜İĨÅ®ğ†RŽāð“ggheÆ¢z‚Ê©Ô\\°ÝĎz~ź¤Pn–MĪÖB£Ÿk™n鄧żćŠ˜ĆK„Ē°¼L¶è‰âz¨u¦¥LDĘz¬ýÎmĘd¾ß”Fz“hg²™Fy¦ĝ¤ċņbΛ@y‚Ąæm°NĮZRÖíŽJ²öLĸÒ¨Y®ƌÐV‰à˜tt_ڀÂyĠzž]Ţh€zĎ{†ĢX”ˆc|šÐqŽšfO¢¤ög‚ÌHNŽ„PKŖœŽ˜Uú´xx[xˆvĐCûĀŠìÖT¬¸^}Ìsòd´_Ž‡KgžLĴ…ÀBon|H@–Êx˜—¦BpŰˆŌ¿fµƌA¾zLjRxŠ¶F”œkĄźRzŀˆ~¶[”´Hnª–VƞuĒ­È¨ƎcƽÌm¸ÁÈM¦x͊ëÀxdžB’šú^´W†£–d„kɾĬpœw‚˂ØɦļĬIŚœÊ•n›Ŕa¸™~J°î”lɌxĤÊÈðhÌ®‚g˜T´øŽàCˆŽÀ^ªerrƘdž¢İP|Ė ŸWœªĦ^¶´ÂL„aT±üWƜ˜ǀRšŶUńšĖ[QhlLüA†‹Ü\\†qR›Ą©"],encodeOffsets:[[90849,37210]]},properties:{cp:[91.132212,29.660361],name:"西藏",childNum:1}},{id:"610000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@˜p¢—ȮµšûG™Ħ}Ħšðǚ¶òƄ€jɂz°{ºØkÈęâ¦jª‚Bg‚\\œċ°s¬Ž’]jžú ‚E”Ȍdž¬s„t‡”RˆÆdĠݎwܔ¸ôW¾ƮłÒ_{’Ìšû¼„jº¹¢GǪÒ¯ĘƒZ`ºŊƒecņąš~BÂgzpâēòYǠȰÌTΨÂWœ|fcŸă§uF—Œ@NŸ¢XLƒŠRMº[ğȣſï|¥J™kc`sʼnǷ’Y¹‹W@µ÷K…ãï³ÛIcñ·VȋڍÒķø©—þ¥ƒy‚ÓŸğęmWµÎumZyOŅƟĥÓ~sÑL¤µaŅY¦ocyZ{‰y c]{ŒTa©ƒ`U_Ěē£ωÊƍKù’K¶ȱÝƷ§{û»ÅÁȹÍéuij|¹cÑd‘ŠìUYƒŽO‘uF–ÕÈYvÁCqӃT•Ǣí§·S¹NgŠV¬ë÷Át‡°Dد’C´ʼnƒópģ}„ċcE˅FŸŸéGU¥×K…§­¶³B‹Č}C¿åċ`wġB·¤őcƭ²ő[Å^axwQO…ÿEËߌ•ĤNĔŸwƇˆÄŠńwĪ­Šo[„_KÓª³“ÙnK‰Çƒěœÿ]ď€ă_d©·©Ýŏ°Ù®g]±„Ÿ‡ß˜å›—¬÷m\\›iaǑkěX{¢|ZKlçhLt€Ňîŵ€œè[€É@ƉĄEœ‡tƇÏ˜³­ħZ«mJ…›×¾‘MtÝĦ£IwÄå\\Õ{‡˜ƒOwĬ©LÙ³ÙgBƕŀr̛ĢŭO¥lãyC§HÍ£ßEñŸX¡—­°ÙCgpťz‘ˆb`wI„vA|§”‡—hoĕ@E±“iYd¥OĻ¹S|}F@¾oAO²{tfžÜ—¢Fǂ҈W²°BĤh^Wx{@„¬‚­F¸¡„ķn£P|ŸªĴ@^ĠĈæb–Ôc¶l˜Yi…–^Mi˜cĎ°Â[ä€vï¶gv@À“Ĭ·lJ¸sn|¼u~a]’ÆÈtŌºJp’ƒþ£KKf~Š¦UbyäIšĺãn‡Ô¿^­žŵMT–hĠܤko¼Ŏìąǜh`[tŒRd²IJ_œXPrɲ‰l‘‚XžiL§àƒ–¹ŽH˜°Ȧqº®QC—bA†„ŌJ¸ĕÚ³ĺ§ `d¨YjžiZvRĺ±öVKkjGȊĐePОZmļKÀ€‚[ŠŽ`ösìh†ïÎoĬdtKÞ{¬èÒÒBŒÔpIJÇĬJŊ¦±J«ˆY§‹@·pH€µàåVKe›pW†ftsAÅqC·¬ko«pHÆuK@oŸHĆۄķhx“e‘n›S³àǍrqƶRbzy€¸ËАl›¼EºpĤ¼Œx¼½~Ğ’”à@†ÚüdK^ˆmÌSj"],encodeOffsets:[[110234,38774]]},properties:{cp:[108.948024,34.263161],name:"陕西",childNum:1}},{id:"620000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@VuUv"],["@@ũ‹EĠtt~nkh`Q‰¦ÅÄÜdw˜Ab×ĠąJˆ¤DüègĺqBqœj°lI¡ĨÒ¤úSHbš‡ŠjΑBŠ°aZˆ¢KJŽ’O[|A£žDx}Nì•HUnrk„ kp€¼Y kMJn[aG‚áÚÏ[½rc†}aQxOgsPMnUs‡nc‹Z…ž–sKúvA›t„Þġ’£®ĀYKdnFwš¢JE°”Latf`¼h¬we|€Æ‡šbj}GA€·~WŽ”—`†¢MC¤tL©IJ°qdf”O‚“bÞĬ¹ttu`^ZúE`Œ[@„Æsîz®¡’C„ƳƜG²“R‘¢R’m”fŽwĸg܃‚ą G@pzJM½mŠhVy¸uÈÔO±¨{LfæU¶ßGĂq\\ª¬‡²I‚¥IʼnÈīoı‹ÓÑAçÑ|«LÝcspīðÍg…të_õ‰\\ĉñLYnĝg’ŸRǡÁiHLlõUĹ²uQjYi§Z_c¨Ÿ´ĹĖÙ·ŋI…ƒaBD˜­R¹ȥr—¯G•ºß„K¨jWk’ɱŠOq›Wij\\a­‹Q\\sg_ĆǛōëp»£lğۀgS•ŶN®À]ˆÓäm™ĹãJaz¥V}‰Le¤L„ýo‘¹IsŋÅÇ^‘Žbz…³tmEÁ´aŠ¹cčecÇN•ĊãÁ\\č¯—dNj•]j†—ZµkÓda•ćå]ğij@ ©O{¤ĸm¢ƒE·®ƒ«|@Xwg]Aģ±¯‡XǁÑdzªc›wQÚŝñsÕ³ÛV_ýƒ˜¥\\ů¥©¾÷w—Ž©WÕÊĩhÿÖÁRo¸V¬âDb¨šhûx–Ê×nj~Zâƒg|šXÁnßYoº§ZÅŘvŒ[„ĭÖʃuďxcVbnUSf…B¯³_Tzº—ΕO©çMÑ~Mˆ³]µ^püµ”ŠÄY~y@X~¤Z³€[Èōl@®Å¼£QKƒ·Di‹¡By‘ÿ‰Q_´D¥hŗyƒ^ŸĭÁZ]cIzý‰ah¹MĪğP‘s{ò‡‹‘²Vw¹t³Ŝˁ[ŽÑ}X\\gsFŸ£sPAgěp×ëfYHāďÖqēŭOÏë“dLü•\\iŒ”t^c®šRʺ¶—¢H°mˆ‘rYŸ£BŸ¹čIoľu¶uI]vģSQ{ƒUŻ”Å}QÂ|̋°ƅ¤ĩŪU ęĄžÌZҞ\\v˜²PĔ»ƢNHƒĂyAmƂwVmž`”]ȏb•”H`‰Ì¢²ILvĜ—H®¤Dlt_„¢JJÄämèÔDëþgºƫ™”aʎÌrêYi~ ÎݤNpÀA¾Ĕ¼b…ð÷’Žˆ‡®‚”üs”zMzÖĖQdȨý†v§Tè|ªH’þa¸|šÐ ƒwKĢx¦ivr^ÿ ¸l öæfƟĴ·PJv}n\\h¹¶v†·À|\\ƁĚN´Ĝ€çèÁz]ġ¤²¨QÒŨTIl‡ªťØ}¼˗ƦvÄùØE‹’«Fï˛Iq”ōŒTvāÜŏ‚íÛߜÛV—j³âwGăÂíNOŠˆŠPìyV³ʼnĖýZso§HіiYw[߆\\X¦¥c]ÔƩÜ·«j‡ÐqvÁ¦m^ċ±R™¦΋ƈťĚgÀ»IïĨʗƮŽ°Ɲ˜ĻþÍAƉſ±tÍEÕÞāNU͗¡\\ſčåÒʻĘm ƭÌŹöʥ’ëQ¤µ­ÇcƕªoIýˆ‰Iɐ_mkl³ă‰Ɠ¦j—¡Yz•Ňi–}Msßõ–īʋ —}ƒÁVmŸ_[n}eı­Uĥ¼‘ª•I{ΧDӜƻėoj‘qYhĹT©oūĶ£]ďxĩ‹ǑMĝ‰q`B´ƃ˺Ч—ç~™²ņj@”¥@đ´ί}ĥtPńǾV¬ufӃÉC‹tÓ̻‰…¹£G³€]ƖƾŎĪŪĘ̖¨ʈĢƂlɘ۪üºňUðǜȢƢż̌ȦǼ‚ĤŊɲĖ­Kq´ï¦—ºĒDzņɾªǀÞĈĂD†½ĄĎÌŗĞrôñnŽœN¼â¾ʄľԆ|DŽŽ֦ज़ȗlj̘̭ɺƅêgV̍ʆĠ·ÌĊv|ýĖÕWĊǎÞ´õ¼cÒÒBĢ͢UĜð͒s¨ňƃLĉÕÝ@ɛƯ÷¿Ľ­ĹeȏijëCȚDŲyê×Ŗyò¯ļcÂßY…tÁƤyAã˾J@ǝrý‹‰@¤…rz¸oP¹ɐÚyᐇHŸĀ[Jw…cVeȴϜ»ÈŽĖ}ƒŰŐèȭǢόĀƪÈŶë;Ñ̆ȤМľĮEŔ—ĹŊũ~ËUă{ŸĻƹɁύȩþĽvĽƓÉ@ē„ĽɲßǐƫʾǗĒpäWÐxnsÀ^ƆwW©¦cÅ¡Ji§vúF¶Ž¨c~c¼īŒeXǚ‹\\đ¾JŽwÀďksãA‹fÕ¦L}wa‚o”Z’‹D½†Ml«]eÒÅaɲáo½FõÛ]ĻÒ¡wYR£¢rvÓ®y®LF‹LzĈ„ôe]gx}•|KK}xklL]c¦£fRtív¦†PĤoH{tK"]],encodeOffsets:[[[108619,36299]],[[108589,36341]]]},properties:{cp:[103.823557,36.058039],name:"甘肃",childNum:2}},{id:"630000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@InJm"],["@@CƒÆ½OŃĦsΰ~Ē³¦@@“Ņiš±è}ؘƄ˹A³r_ĞŠǒNĪŒĐw¤^ŬĵªpĺSZg’rpiƼĘԛ¨C|͖J’©Ħ»®VIJ~f\\m `Un„˜~ʌŸ•ĬàöNt•~ňjy–¢Zi˜Ɣ¥ĄŠk´nl`JʇŠJþ©pdƖ®È£¶ìRʦ‘źõƮËnŸʼėæÑƀĎ[‚˜¢VÎĂMÖÝÎF²sƊƀÎBļýƞ—¯ʘƭðħ¼Jh¿ŦęΌƇš¥²Q]Č¥nuÂÏriˆ¸¬ƪÛ^Ó¦d€¥[Wà…x\\ZŽjҕ¨GtpþYŊĕ´€zUO뇉P‰îMĄÁxH´á˜iÜUà›îÜՁĂÛSuŎ‹r“œJð̬EŒ‘FÁú×uÃÎkr“Ē{V}İ«O_ÌËĬ©ŽÓŧSRѱ§Ģ£^ÂyèçěM³Ƃę{[¸¿u…ºµ[gt£¸OƤĿéYŸõ·kĀŸq]juw¥Dĩƍ€õÇPéĽG‘ž©ã‡¤G…uȧþRcÕĕNy“yût“ˆ­‡ø‘†ï»a½ē¿BMoį£ŸÍj}éZËqbʍš“Ƭh¹ìÿÓAçãnIáI`ƒks£CG­ě˜Uy×Cy•…’Ÿ@¶ʡÊBnāzG„ơMē¼±O÷õJËĚăVŸĪũƆ£Œ¯{ËL½Ìzż“„VR|ĠTbuvJvµhĻĖH”Aëáa…­OÇðñęNw‡…œľ·L›mI±íĠĩPÉ×®ÿs—’cB³±JKßĊ«`…ađ»·QAmO’‘Vţéÿ¤¹SQt]]Çx€±¯A@ĉij¢Óļ©•ƒl¶ÅÛr—ŕspãRk~¦ª]Į­´“FR„åd­ČsCqđéFn¿Åƃm’Éx{W©ºƝºįkÕƂƑ¸wWūЩÈFž£\\tÈ¥ÄRÈýÌJ ƒlGr^×äùyÞ³fj”c†€¨£ÂZ|ǓMĝšÏ@ëÜőR‹›ĝ‰Œ÷¡{aïȷPu°ËXÙ{©TmĠ}Y³’­ÞIňµç½©C¡į÷¯B»|St»›]vƒųƒs»”}MÓ ÿʪƟǭA¡fs˜»PY¼c¡»¦c„ċ­¥£~msĉP•–Siƒ^o©A‰Šec‚™PeǵŽkg‚yUi¿h}aH™šĉ^|ᴟ¡HØûÅ«ĉ®]m€¡qĉ¶³ÈyôōLÁst“BŸ®wn±ă¥HSòėš£˜S’ë@לÊăxÇN©™©T±ª£IJ¡fb®ÞbŽb_Ą¥xu¥B—ž{łĝ³«`d˜Ɛt—¤ťiñžÍUuºí`£˜^tƃIJc—·ÛLO‹½Šsç¥Ts{ă\\_»™kϊ±q©čiìĉ|ÍIƒ¥ć¥›€]ª§D{ŝŖÉR_sÿc³Īō›ƿΑ›§p›[ĉ†›c¯bKm›R¥{³„Z†e^ŽŒwx¹dƽŽôIg §Mĕ ƹĴ¿—ǣÜ̓]‹Ý–]snåA{‹eŒƭ`ǻŊĿ\\ijŬű”YÂÿ¬jĖqŽßbŠ¸•L«¸©@ěĀ©ê¶ìÀEH|´bRľž–Ó¶rÀQþ‹vl®Õ‚E˜TzÜdb ˜hw¤{LR„ƒd“c‹b¯‹ÙVgœ‚ƜßzÃô쮍^jUèXΖ|UäÌ»rKŽ\\ŒªN‘¼pZCü†VY††¤ɃRi^rPҒTÖ}|br°qňbĚ°ªiƶGQ¾²„x¦PœmlŜ‘[Ĥ¡ΞsĦŸÔÏâ\\ªÚŒU\\f…¢N²§x|¤§„xĔsZPòʛ²SÐqF`ª„VƒÞŜĶƨVZŒÌL`ˆ¢dŐIqr\\oäõ–F礻Ŷ×h¹]Clـ\\¦ďÌį¬řtTӺƙgQÇÓHţĒ”´ÃbEÄlbʔC”|CˆŮˆk„Ʈ[ʼ¬ňœ´KŮÈΰÌĪ¶ƶlð”ļA†TUvdTŠG†º̼ŠÔ€ŒsÊDԄveOg"]],encodeOffsets:[[[105308,37219]],[[95370,40081]]]},properties:{cp:[101.778916,36.623178],name:"青海",childNum:2}},{id:"640000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@KëÀęĞ«OęȿȕŸı]ʼn¡åįÕÔ«Ǵõƪ™ĚQÐZhv K°›öqÀѐS[ÃÖHƖčË‡nL]ûc…Ùß@‚“ĝ‘¾}w»»‹oģF¹œ»kÌÏ·{zPƒ§B­¢íyÅt@ƒ@áš]Yv_ssģ¼i߁”ĻL¾ġsKD£¡N_…“˜X¸}B~Haiˆ™Åf{«x»ge_bs“KF¯¡Ix™mELcÿZ¤­Ģ‘ƒÝœsuBLù•t†ŒYdˆmVtNmtOPhRw~bd…¾qÐ\\âÙH\\bImlNZŸ»loƒŸqlVm–Gā§~QCw¤™{A\\‘PKŸNY‡¯bF‡kC¥’sk‹Šs_Ã\\ă«¢ħkJi¯r›rAhĹûç£CU‡ĕĊ_ԗBixÅُĄnªÑaM~ħpOu¥sîeQ¥¤^dkKwlL~{L~–hw^‚ófćƒKyEŒ­K­zuÔ¡qQ¤xZÑ¢^ļöܾEpž±âbÊÑÆ^fk¬…NC¾‘Œ“YpxbK~¥Že֎ŒäBlt¿Đx½I[ĒǙŒWž‹f»Ĭ}d§dµùEuj¨‚IÆ¢¥dXªƅx¿]mtÏwßRĶŒX¢͎vÆzƂZò®ǢÌʆCrâºMÞzžÆMҔÊÓŊZľ–r°Î®Ȉmª²ĈUªĚøºˆĮ¦ÌĘk„^FłĬhĚiĀĖ¾iİbjÕ"],["@@mfwěwMrŢªv@G‰"]],encodeOffsets:[[[109366,40242]],[[108600,36303]]]},properties:{cp:[106.278179,38.46637],name:"宁夏",childNum:2}},{id:"650000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@QØĔ²X¨”~ǘBºjʐßØvK”ƔX¨vĊOžÃƒ·¢i@~c—‡ĝe_«”Eš“}QxgɪëÏÃ@sÅyXoŖ{ô«ŸuX…ê•Îf`œC‚¹ÂÿÐGĮÕĞXŪōŸMźÈƺQèĽôe|¿ƸJR¤ĘEjcUóº¯Ĩ_ŘÁMª÷Ð¥Oéȇ¿ÖğǤǷÂF҇zÉx[]­Ĥĝ‰œ¦EP}ûƥé¿İƷTėƫœŕƅ™ƱB»Đ±’ēO…¦E–•}‘`cȺrĦáŖuҞª«IJ‡πdƺÏØZƴwʄ¤ĖGЙǂZĶƒèH¶}ÚZצʥĪï|ÇĦMŔ»İĝLj‹ì¥Βœba­¯¥ǕǚkĆŵĦɑĺƯxūД̵nơʃĽá½M»›òmqóŘĝč˾ăC…ćāƿÝɽ©DZŅ¹đ¥˜³ðLrÁ®ɱĕģʼnǻ̋ȥơŻǛȡVï¹Ň۩ûkɗġƁ§ʇė̕ĩũƽō^ƕŠUv£ƁQï“Ƶkŏ½ΉÃŭdzLқʻ«ƭ\\lƒ‡ŭD‡“{ʓDkaFÃÄa“³ŤđÔGRÈƚhSӹŚsİ«ĐË[¥ÚDkº^Øg¼ŵ¸£EÍö•€ůʼnT¡c_‡ËKY‹ƧUśĵ„݃U_©rETÏʜ±OñtYwē¨ƒ{£¨uM³x½şL©Ùá[ÓÐĥ Νtģ¢\\‚ś’nkO›w¥±ƒT»ƷFɯàĩÞáB¹Æ…ÑUw„੍žĽw[“mG½Èå~‡Æ÷QyŠěCFmĭZī—ŵVÁ™ƿQƛ—ûXS²‰b½KϽĉS›©ŷXĕŸ{ŽĕK·¥Ɨcqq©f¿]‡ßDõU³h—­gËÇïģÉɋw“k¯í}I·šœbmœÉ–ř›īJɥĻˁ×xo›ɹī‡l•c…¤³Xù]‘™DžA¿w͉ì¥wÇN·ÂËnƾƍdǧđ®Ɲv•Um©³G\\“}µĿ‡QyŹl㓛µEw‰LJQ½yƋBe¶ŋÀů‡ož¥A—˜Éw@•{Gpm¿Aij†ŽKLhˆ³`ñcËtW‚±»ÕS‰ëüÿďD‡u\\wwwù³—V›LŕƒOMËGh£õP¡™er™Ïd{“‡ġWÁ…č|yšg^ğyÁzÙs`—s|ÉåªÇ}m¢Ń¨`x¥’ù^•}ƒÌ¥H«‰Yªƅ”Aйn~ź¯šf¤áÀz„gŠÇDIԝ´AňĀ҄¶ûEYospõD[{ù°]u›Jq•U•|Soċxţ[õÔĥkŋÞŭZ˺óYËüċrw €ÞkrťË¿XGÉbřaDü·Ē÷Aê[Ää€I®BÕИÞ_¢āĠpŠÛÄȉĖġDKwbm‡ÄNô‡ŠfœƫVÉvi†dz—H‘‹QµâFšù­Âœ³¦{YGžƒd¢ĚÜO „€{Ö¦ÞÍÀPŒ^b–ƾŠlŽ[„vt×ĈÍE˨¡Đ~´î¸ùÎh€uè`¸ŸHÕŔVºwĠââWò‡@{œÙNÝ´ə²ȕn{¿¥{l—÷eé^e’ďˆXj©î\\ªÑò˜Üìc\\üqˆÕ[Č¡xoÂċªbØ­Œø|€¶ȴZdÆšońéŒGš\\”¼C°ÌƁn´nxšÊOĨ’Ūƴĸ¢¸òTxÊǪMīИÖŲÃɎOvˆʦƢ~FŽ‡Rěò—¿ġ~åŊœú‰Nšžš¸qŽ’Ę[Ĕ¶ÂćnÒPĒÜvúĀÊbÖ{Äî¸~Ŕünp¤ÂH¾œĄYÒ©ÊfºmԈĘcDoĬMŬ’˜S¤„s²‚”ʘچžȂVŦ –ŽèW°ªB|IJXŔþÈJĦÆæFĚêŠYĂªĂ]øªŖNÞüA€’fɨJ€˜¯ÎrDDšĤ€`€mz\\„§~D¬{vJÂ˜«lµĂb–¤p€ŌŰNĄ¨ĊXW|ų ¿¾ɄĦƐMT”‡òP˜÷fØĶK¢ȝ˔Sô¹òEð­”`Ɩ½ǒÂň×äı–§ĤƝ§C~¡‚hlå‚ǺŦŞkâ’~}ŽFøàIJaĞ‚fƠ¥Ž„Ŕdž˜®U¸ˆźXœv¢aƆúŪtŠųƠjd•ƺŠƺÅìnrh\\ĺ¯äɝĦ]èpĄ¦´LƞĬŠ´ƤǬ˼Ēɸ¤rºǼ²¨zÌPðŀbþ¹ļD¢¹œ\\ĜÑŚŸ¶ZƄ³àjĨoâŠȴLʉȮŒĐ­ĚăŽÀêZǚŐ¤qȂ\\L¢ŌİfÆs|zºeªÙæ§΢{Ā´ƐÚ¬¨Ĵà²łhʺKÞºÖTŠiƢ¾ªì°`öøu®Ê¾ãØ"],encodeOffsets:[[88824,50096]]},properties:{cp:[87.617733,43.792818],name:"新疆",childNum:1}},{id:"110000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@ĽOÁ›ûtŷmiÍt_H»Ĩ±d`Š¹­{bw…Yr“³S]§§o¹€qGtm_Sŧ€“oa›‹FLg‘QN_•dV€@Zom_ć\\ߚc±x¯oœRcfe…£’o§ËgToÛJíĔóu…|wP¤™XnO¢ÉˆŦ¯rNÄā¤zâŖÈRpŢZŠœÚ{GŠrFt¦Òx§ø¹RóäV¤XdˆżâºWbwŚ¨Ud®bêņ¾‘jnŎGŃŶŠnzÚSeîĜZczî¾i]͜™QaúÍÔiþĩȨWĢ‹ü|Ėu[qb[swP@ÅğP¿{\\‡¥A¨Ï‘Ѩj¯ŠX\\¯œMK‘pA³[H…īu}}"],encodeOffsets:[[120023,41045]]},properties:{cp:[116.405285,39.904989],name:"北京",childNum:1}},{id:"120000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@ŬgX§Ü«E…¶Ḟ“¬O_™ïlÁg“z±AXe™µÄĵ{¶]gitgšIj·›¥îakS€‰¨ÐƎk}ĕ{gB—qGf{¿a†U^fI“ư‹³õ{YƒıëNĿžk©ïËZŏ‘R§òoY×Ógc…ĥs¡bġ«@dekąI[nlPqCnp{ˆō³°`{PNdƗqSÄĻNNâyj]äžÒD ĬH°Æ]~¡HO¾ŒX}ÐxŒgp“gWˆrDGˆŒpù‚Š^L‚ˆrzWxˆZ^¨´T\\|~@I‰zƒ–bĤ‹œjeĊªz£®Ĕvě€L†mV¾Ô_ȔNW~zbĬvG†²ZmDM~”~"],encodeOffsets:[[120237,41215]]},properties:{cp:[117.190182,39.125596],name:"天津",childNum:1}},{id:"310000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@ɧư¬EpƸÁxc‡"],["@@©„ªƒ"],["@@”MA‹‘š"],["@@Qp݁E§ÉC¾"],["@@bŝՕÕEȣÚƥêImɇǦèÜĠŒÚžÃƌÃ͎ó"],["@@ǜûȬɋŠŭ™×^‰sYŒɍDŋ‘ŽąñCG²«ªč@h–_p¯A{‡oloY€¬j@IJ`•gQڛhr|ǀ^MIJvtbe´R¯Ô¬¨YŽô¤r]ì†Ƭį"]],encodeOffsets:[[[124702,32062]],[[124547,32200]],[[124808,31991]],[[124726,32110]],[[124903,32376]],[[124438,32149]]]},properties:{cp:[121.472644,31.231706],name:"上海",childNum:6}},{id:"500000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@vjG~nGŘŬĶȂƀƾ¹¸ØÎezĆT¸}êЖqHŸðqĖ䒊¥^CƒIj–²p…\\_ æüY|[YxƊæuž°xb®…Űb@~¢NQt°¶‚S栓Ê~rljĔëĚ¢~šuf`‘‚†fa‚ĔJåĊ„nÖ]„jƎćÊ@Š£¾a®£Ű{ŶĕF‹ègLk{Y|¡ĜWƔtƬJÑxq‹±ĢN´‰òK‰™–LÈüD|s`ŋ’ć]ƒÃ‰`đŒMûƱ½~Y°ħ`ƏíW‰½eI‹½{aŸ‘OIrÏ¡ĕŇa†p†µÜƅġ‘œ^ÖÛbÙŽŏml½S‹êqDu[R‹ãË»†ÿw`»y‘¸_ĺę}÷`M¯ċfCVµqʼn÷Z•gg“Œ`d½pDO‡ÎCnœ^uf²ènh¼WtƏxRGg¦…pV„†FI±ŽG^ŒIc´ec‡’G•ĹÞ½sëĬ„h˜xW‚}Kӈe­Xsbk”F¦›L‘ØgTkïƵNï¶}Gy“w\\oñ¡nmĈzjŸ•@™Óc£»Wă¹Ój“_m»ˆ¹·~MvÛaqœ»­‰êœ’\\ÂoVnŽÓØ͙²«‹bq¿efE „€‹Ĝ^Qž~ Évý‡ş¤²Į‰pEİ}zcĺƒL‹½‡š¿gņ›¡ýE¡ya£³t\\¨\\vú»¼§·Ñr_oÒý¥u‚•_n»_ƒ•At©Þűā§IVeëƒY}{VPÀFA¨ąB}q@|Ou—\\Fm‰QF݅Mw˜å}]•€|FmϋCaƒwŒu_p—¯sfÙgY…DHl`{QEfNysBŠ¦zG¸rHe‚„N\\CvEsÐùÜ_·ÖĉsaQ¯€}_U‡†xÃđŠq›NH¬•Äd^ÝŰR¬ã°wećJEž·vÝ·Hgƒ‚éFXjÉê`|yŒpxkAwœWĐpb¥eOsmzwqChóUQl¥F^laf‹anòsr›EvfQdÁUVf—ÎvÜ^efˆtET¬ôA\\œ¢sJŽnQTjP؈xøK|nBz‰„œĞ»LY‚…FDxӄvr“[ehľš•vN”¢o¾NiÂxGp⬐z›bfZo~hGi’]öF|‰|Nb‡tOMn eA±ŠtPT‡LjpYQ|†SH††YĀxinzDJ€Ìg¢và¥Pg‰_–ÇzII‹€II•„£®S¬„Øs쐣ŒN"],["@@ifjN@s"]],encodeOffsets:[[[109628,30765]],[[111725,31320]]]},properties:{cp:[106.504962,29.533155],name:"重庆",childNum:2}},{id:"810000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@AlBk"],["@@mŽn"],["@@EpFo"],["@@ea¢pl¸Eõ¹‡hj[ƒ]ÔCΖ@lj˜¡uBXŸ…•´‹AI¹…[‹yDUˆ]W`çwZkmc–…M›žp€Åv›}I‹oJlcaƒfёKŽ°ä¬XJmРđhI®æÔtSHn€Eˆ„ÒrÈc"],["@@rMUw‡AS®€e"]],encodeOffsets:[[[117111,23002]],[[117072,22876]],[[117045,22887]],[[116975,23082]],[[116882,22747]]]},properties:{cp:[114.173355,22.320048],name:"香港",childNum:5}},{id:"820000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@kÊd°å§s"],encodeOffsets:[[116279,22639]]},properties:{cp:[113.54909,22.198951],name:"澳门",childNum:1}}],UTF8Encoding:!0}):void n("ECharts Map is not loaded"):void n("ECharts is not Loaded")})},"./app/containers/Widget/charts/markBoxplot.ts":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t,n,o){var s=n.xAxis,l=n.xAxisInterval,c=n.xAxisRotate,u=n.dataZoomThreshold,d=n.hasLegend,p=n.legendSelected,f=n.legendPosition,h=n.toolbox,m=n.splitLineX,g=n.splitLineY,b=n.splitLineStyle,v=n.splitLineWidth,_=n.top,y=n.bottom,A=n.left,x=n.right,w=n.suffixYAxis,j=n.markMetrics,E=n.metrics,S=void 0,k=void 0,C=void 0,T=void 0,M=void 0,O=void 0,L=void 0,D=void 0,P=void 0,I=void 0;if(s&&E&&E.length){var R=e.map(function(e){return e[s]});I=R.filter(function(e,t){return R.indexOf(e)===t}),k={xAxis:{type:"category",data:I,boundaryGap:!0,nameGap:30,splitArea:{show:!0},axisLabel:{interval:l,rotate:c,formatter:"{value}"},splitLine:{show:m&&m.length,lineStyle:{width:v,type:b}}}}}if(P=[],E&&E.length){E=[E];var N=I.map(function(t){return e.filter(function(e){return e[s]===t})}),B=N.map(function(e){return E.map(function(t){return e.map(function(e){return e[t]})})});P=E.map(function(e,t){var n=[];return B.forEach(function(e,r){n.push(e[t])}),n}).map(function(e){return i.default(e)}),S={series:P.reduce(function(e,t,n){return e.concat({name:E[n],type:"boxplot",data:t.boxData,tooltip:{formatter:a}},{name:E[n],type:"pictorialBar",symbolPosition:"end",symbolSize:8,barGap:"30%",data:t.outliers,tooltip:{formatter:function(e){return[e.name+" ","异常值: "+e.data[1]].join("
      ")}}})},[])}}if(j&&j.length){var F=e.map(function(e){var t;return t={},r(t,s,e[s]),r(t,j,e[j]),t}),U=F.reduce(function(e,t){return Object.assign({},e,r({},t[s],t[j]))},{}),z=Object.values(U);S.series.push({name:j,type:"scatter",data:z,itemStyle:{normal:{color:"rgb(251, 118, 123)"}}})}D=w&&w.length?{axisLabel:{formatter:"{value} "+w}}:null,C={yAxis:Object.assign({type:"value",splitArea:{show:!1},splitLine:{show:g&&g.length,lineStyle:{width:v,type:b}}},D)};var H=0,V=0;if(d&&d.length){var Y=void 0,W=void 0;switch(f){case"right":Y={orient:"vertical"},W={right:8,top:40,bottom:16},V=108;break;case"bottom":Y={orient:"horizontal"},W={bottom:16,left:8,right:8},H=72;break;default:Y={orient:"horizontal"},W={top:3,left:8,right:120}}var G="unselectAll"===p?{selected:E.reduce(function(e,t){return Object.assign({},e,r({},t,!1))},{})}:null;T={legend:Object.assign({data:E,type:"scroll"},Y,W,G)}}return M=h&&h.length?{toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,O={grid:{top:_,left:A,right:Math.max(x,V),bottom:Math.max(y,H)}},L=u>0&&u")}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/echarts/extension-src/dataTool/prepareBoxplotData.js");t.default=o},"./app/containers/Widget/charts/parallel.ts":function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0){var r=e-parseFloat(M[t-1]);return r>=0?(o.push(r),a.push("-"),n.push(parseFloat(M[t-1]))):(o.push("-"),a.push(Math.abs(r)),n.push(parseFloat(M[t-1])-Math.abs(r))),r}return o.push(e),a.push("-"),n.push(0),e});var i=o.reduce(function(e,t){return"number"==typeof t?e+t:e+0},0),s=a.reduce(function(e,t){return"number"==typeof t?e+t:e+0},0),l=i-s;b&&b.length&&(C.push("累计"),n.push("-"),l>0?(o.push(l),a.push("-")):(a.push(Math.abs(l)),o.push("-")));var c={name:t,type:"bar",sampling:"average",data:n,itemStyle:{normal:{barBorderColor:"rgba(0,0,0,0)",color:"rgba(0,0,0,0)",opacity:void 0===r?1:.25},emphasis:{barBorderColor:"rgba(0,0,0,0)",color:"rgba(0,0,0,0)"}},stack:"stack"},u={name:"升",type:"bar",sampling:"average",data:o,itemStyle:{normal:{opacity:void 0===r?1:.25}},stack:"stack",label:{normal:{show:!(!f||!f.length),position:"top"}}},d={name:"降",type:"bar",sampling:"average",data:a,itemStyle:{normal:{opacity:void 0===r?1:.25}},stack:"stack",label:{normal:{show:!(!f||!f.length),position:"bottom"}}};T.push(c),T.push(u),T.push(d)}),y={series:T}}k=v&&v.length?{axisLabel:{formatter:"{value} "+v}}:null,a&&a.length?(o&&(A={yAxis:{data:e.map(function(e){return e[o]}),axisLabel:{show:!1},axisLine:{show:!1},axisTick:{show:!1}}}),x={xAxis:{type:"value",position:"top",splitLine:{lineStyle:{type:"dashed"}},axisLabel:{interval:i,rotate:s}}}):(o&&(A={xAxis:{data:C,axisLabel:{interval:i,rotate:s}}}),x={yAxis:Object.assign({type:"value"},k)});var D=0,P=0;if(c&&c.length){var I=void 0,R=void 0;switch(u){case"right":I={orient:"vertical"},R={right:8,top:40,bottom:16},P=108;break;case"bottom":I={orient:"horizontal"},R={bottom:16,left:8,right:8},D=72;break;default:I={orient:"horizontal"},R={top:3,left:8,right:120}}w={legend:Object.assign({data:T.map(function(e){return e.name}),type:"scroll"},I,R)}}return j=d&&d.length?{toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,E={grid:{top:p,left:m,right:Math.max(g,P),bottom:Math.max(h,D)}},S=l>0&&l"))}}},y,A,x,w,j,E,S)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},"./app/containers/Widget/charts/wordCloud.ts":function(e,t,n){"use strict";function r(e,t,n){var r=n.title,o=n.gridSize,a=n.sizeRangeX,i=n.sizeRangeY,s=void 0,l=void 0,c=void 0,u=void 0,d=[];l=o&&{gridSize:o},c=(a||i)&&{sizeRange:[a||0,i||0]};var p=e.reduce(function(e,t){var n=t[r];return e[n]?e[n].value+=1:e[n]={name:n,value:1},e},{}),f=Object.assign({type:"wordCloud",textStyle:{normal:{color:"#509af2"},emphasis:{shadowBlur:10,shadowColor:"#509af2"}},data:Object.keys(p).map(function(e){return p[e]}),rotationStep:45,rotationRange:[-90,90]},l,c);return d.push(f),s={series:d},u={grid:{top:0,left:0,right:0,bottom:0}},Object.assign({},s,u)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},"./app/containers/Widget/components/Chart/Chart.less":function(e,t,n){var r=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Widget/components/Chart/Chart.less");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./app/containers/Widget/components/Chart/Chart.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n=0?[]:["",""],e},{}):e.reduce(function(e,t){return e[t]=["",""],e},{})},n.handleTableChange=function(e,t,r){n.setState({pagination:e,sortedInfo:r},function(){n.onLoadData()})},n.onSearchInputChange=function(e){return function(t){var o=n.state.filterValues;n.setState({filterValues:Object.assign({},o,r({},e,[t.target.value]))})}},n.onNumberInputChange=function(e){return function(t){var o=n.state.filterValues;n.setState({filterValues:Object.assign({},o,r({},e,[isNaN(t[0])?o[e][0]:t[0],isNaN(t[1])?o[e][1]:t[1]]))})}},n.onRangePickerChange=function(e){return function(t,o){n.setState({filterValues:Object.assign({},n.state.filterValues,r({},e,[o[0],o[1]]))}),n.onLoadData()}},n.onLoadData=function(){},n.rowClick=function(e,t,r){var o=r.target,a=o.tagName,i=o.classList[0],s=/select/g;if("DIV"===a&&s.test(i))return void r.stopPropagation();var l=n.props,c=l.id,u=l.onCheckInteract,p=l.onDoInteract,f=n.state.data;if(u&&p){var h=u(Number(c));Object.keys(h).length&&(f.forEach(function(t){t[d.KEY_COLUMN]===e[d.KEY_COLUMN]&&p(Number(c),h,e[d.KEY_COLUMN])}),n.setState({data:Object.assign({},f)}))}},n.rowClassFilter=function(e,t){return n.props.interactId===e[d.KEY_COLUMN]?p.selectedRow:""},n.state={data:e.data,sortedInfo:{},filterDropdownVisibles:{},filterValues:{},pagination:{}},n}return i(t,e),s(t,[{key:"componentWillMount",value:function(){this.setState({pagination:this.props.width<=768?this.pageAutoAdapted("mobile"):this.pageAutoAdapted("pc")})}},{key:"componentWillReceiveProps",value:function(e){this.props.data!==e.data&&this.setState({data:e.data,filterValues:{}}),this.setState({pagination:e.width<=768?this.pageAutoAdapted("mobile"):this.pageAutoAdapted("pc")})}},{key:"render",value:function(){var e=this.props,t=e.className,n=(e.filterable,e.sortable,e.width),r=e.height,o=this.state,a=o.data,i=(o.filterDropdownVisibles,o.filterValues,o.pagination),s=[];a.length&&(s=Object.keys(a[0]).map(function(e,t){var n={title:e.toUpperCase(),dataIndex:e,key:e,width:d.COLUMN_WIDTH};return Object.assign({},n)}));var u=(a.length?Object.keys(a[0]).length:1)*d.COLUMN_WIDTH,p=u>n?{x:u}:null,f=Object.assign({},p,{y:r-40-60});return l.createElement(c,{className:t,dataSource:a,columns:s,pagination:i,scroll:f,onChange:this.handleTableChange,onRowClick:this.rowClick,rowClassName:this.rowClassFilter,bordered:!0})}}]),t}(l.PureComponent);f.defaultProps={filterable:!0,sortable:!0},t.Table=f,t.default=f},"./app/containers/Widget/components/Chart/index.tsx":function(e,t,n){"use strict";function r(e){var t=e.width,n=e.height,r=e.data;return e.selectedChart===s.getTable().id?o.createElement(a.default,{data:r,width:t,height:n}):o.createElement(i.default,e)}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/react/react.js"),a=n("./app/containers/Widget/components/Chart/Table.tsx"),i=n("./app/containers/Widget/components/Chart/Chart.tsx"),s=n("./app/containers/Widget/components/util.ts");t.CombinedChart=r,t.default=r},"./app/containers/Widget/components/CopyWidgetForm.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:"",r=arguments[2],o=e.props,a=o.form,i=o.onCheckUniqueName,s=o.projectId,l=a.getFieldsValue();l.id;i("widget",{projectId:s,id:"",name:n},function(){r()},function(e){r(e)})},e}return a(t,e),s(t,[{key:"render",value:function(){var e=(this.props.type,this.props.form.getFieldDecorator),t={labelCol:{span:7},wrapperCol:{span:16}};return l.createElement(c,{className:m.formView},l.createElement(u,{gutter:8},l.createElement(d,{span:24},l.createElement(f,{className:h.hide},e("type",{})(g)),l.createElement(f,{className:h.hide},e("viewId",{})(b)),l.createElement(f,{className:h.hide},e("config",{})(v)),l.createElement(f,{className:h.hide},e("projectId",{})(_)),l.createElement(f,{className:h.hide},e("publish",{})(y)),l.createElement(f,i({label:"Widget 名称"},t,{hasFeedback:!0}),e("name",{rules:[{required:!0},{validator:this.checkNameUnique}]})(A))),l.createElement(d,{span:24},l.createElement(f,i({label:"Widget 描述"},t),e("description",{initialValue:""})(x)))))}}]),t}(l.Component);t.CopyWidgetForm=w,t.default=c.create()(w)},"./app/containers/Widget/components/Pivot/Cell.tsx":function(e,t,n){"use strict";function r(e){var t=e.colKey,n=void 0===t?"":t,r=e.rowKey,u=void 0===r?"":r,d=e.width,p=e.height,f=e.data,h=e.chartStyles,m=e.color,g=e.legend,b=h.pivot,v=b.color,_=b.fontSize,y=b.fontFamily,A=b.lineColor,x=b.lineStyle,w=e.metrics;if(n.includes(s.DEFAULT_SPLITER)&&u.includes(s.DEFAULT_SPLITER)){var j=o(n);if(j===o(u)){var E=j.split(s.DEFAULT_SPLITER),S=a(E,2),k=S[0],C=S[1];w=w.filter(function(e){return e.name===""+k+s.DEFAULT_SPLITER+C})}else w=[]}else if(n.includes(s.DEFAULT_SPLITER)){var T=o(n).split(s.DEFAULT_SPLITER),M=a(T,2),O=M[0],L=M[1];w=w.filter(function(e){return e.name===""+O+s.DEFAULT_SPLITER+L})}else if(u.includes(s.DEFAULT_SPLITER)){var D=o(u).split(s.DEFAULT_SPLITER),P=a(D,2),I=P[0],R=P[1];w=w.filter(function(e){return e.name===""+I+s.DEFAULT_SPLITER+R})}var N=w.map(function(e){var t=l.decodeMetricName(e.name),n=m.items.find(function(t){return t.config.actOn===e.name})||m.items.find(function(e){return"all"===e.config.actOn});return f&&f.map(function(r,o){var a=void 0;if(n){var s=g[n.name];s&&s.includes(r[n.name])||(a={color:n.config.values[r[n.name]]})}return i.createElement("p",{key:""+e.name+o,className:c.cellContent,style:Object.assign({},a)},r[e.agg+"("+t+")"])})}),B=Object.assign({width:d},p&&{height:p},{color:v,fontSize:Number(_),fontFamily:y,borderColor:A,borderStyle:x});return i.createElement("td",{style:B},N)}function o(e){return e.split(String.fromCharCode(0)).filter(function(e){return e.includes(s.DEFAULT_SPLITER)})[0]}var a=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/react/react.js"),s=n("./app/globalConstants.ts"),l=n("./app/containers/Widget/components/util.ts"),c=n("./app/containers/Widget/components/Pivot/Pivot.less");t.Cell=r,t.default=r},"./app/containers/Widget/components/Pivot/Chart.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function(){function e(e,t){for(var n=0;ns){var l=[],c={key:"",height:0,data:[]};return n.forEach(function(e,t){var r="col"===a?e.height*o.length:e.height;c.height+r>s&&(c.key=""+t+c.data.map(function(e){return e.key}).join(","),l.push(c),c={key:"",height:0,data:[]}),c.height+=r,c.data.push(e),t===n.length-1&&(c.key=""+t+c.data.map(function(e){return e.key}).join(","),l.push(c))}),l}return[{key:"chunk",height:t,data:n}]},e.verticalCutting=function(t,n){var r=e.props,o=r.metrics,a=r.dimetionAxis,i=r.drawingData.multiCoordinate,s=i?p.PIVOT_CANVAS_POLAR_SIZE_LIMIT:p.PIVOT_CANVAS_SIZE_LIMIT;if(t>s){var l={};return n.forEach(function(t){var n=e.initBlockLine(t),r=e.initBlock(n);t.data.forEach(function(i,c){var u="row"===a?i.width*o.length:i.width;if(r.width+u>s){if(l[c-1]){var d=l[c-1];d.data=d.data.concat(r.data)}else l[c-1]=Object.assign({},r,{key:""+(c-1)+r.data.map(function(e){return e.key}).join(",")});n=e.initBlockLine(t),r=e.initBlock(n)}if(r.width+=u,n.data.push(i),c===t.data.length-1)if(l[c]){var p=l[c];p.data=p.data.concat(r.data)}else l[c]=Object.assign({},r,{key:""+c+r.data.map(function(e){return e.key}).join(",")})})}),Object.values(l).map(function(e){return Object.assign({},e,{pieces:f.getChartPieces(e.data.reduce(function(e,t){return e+t.data.reduce(function(e,t){return e+("col"===a?t.records.length*o.length:t.records.length)},0)},0),e.data.length)})})}return[{key:"block",width:t,data:n,pieces:f.getChartPieces(n.reduce(function(e,t){return e+t.data.reduce(function(e,t){return e+("col"===a?t.records.length*o.length:t.records.length)},0)},0),n.length)}]},e.initBlock=function(e){return{key:"",width:0,data:[e],pieces:0}},e.initBlockLine=function(e){return Object.assign({},e,{key:""+h.uuid(8,16)+e.key,data:[]})},e}return i(t,e),s(t,[{key:"render",value:function(){var e,t=this.props,n=t.rows,o=t.cols,a=t.rowKeys,i=t.colKeys,s=t.rowTree,p=t.rowWidths,g=t.colTree,b=t.tree,v=t.metrics,_=t.metricAxisConfig,y=t.chartStyles,A=t.drawingData,x=t.dimetionAxis,w=t.color,j=t.label,E=t.size,S=t.xAxis,k=t.tip,C=t.renderType,T=t.legend,M=t.onCheckTableInteract,O=t.onDoInteract,L=A.elementSize,D=A.unitMetricWidth,P=A.unitMetricHeight,I=A.tableBodyCollapsed,R=null,N=[],B=[],F=0;if(x){var U=0;if(i.length&&a.length){var z=[];a.forEach(function(e,t){var n=e.join(String.fromCharCode(0)),r=[];i.forEach(function(o,s){var l=o.join(String.fromCharCode(0)),c=b[n][l];if("col"===x){var u=i[s+1]||[],d=r[r.length-1];if(d&&!d.ended||(d={key:""+n+l,width:0,records:[],ended:!1},r.push(d)),d.records.push({key:o[o.length-1],value:c}),1===o.length&&s===i.length-1||o[o.length-2]!==u[u.length-2]){var p=d.records.length*L;d.width=p,d.ended=!0,u.length||(N.push({key:n,height:P,data:r.slice()}),U+=1,r=[])}}else{var f=a[t+1]||[];z[s]||(z[s]=[]);var h=z[s],m=h[h.length-1];if(m&&!m.ended||(m={key:""+l+n,width:0,records:[],ended:!1},h.push(m)),m.records.push({key:e[e.length-1],value:c}),1===e.length&&t===a.length-1||e[e.length-2]!==f[f.length-2]){if(m.width=D,m.ended=!0,s===i.length-1){var g=m.records.length*L;N.push({key:n,height:g,data:z.reduce(function(e,t){return e.concat(t)},[])}),z=[]}t===a.length-1&&(U+=1)}}})})}else if(i.length){var H=[];i.forEach(function(e,t){var n=e.join(String.fromCharCode(0)),r=g[n].records;if("col"===x){var o=i[t+1]||[],a=H[H.length-1];if(a&&!a.ended||(a={key:n,width:0,records:[],ended:!1},H.push(a)),a.records.push({key:e[e.length-1],value:r}),1===e.length&&t===i.length-1||e[e.length-2]!==o[o.length-2]){var s=a.records.length*L;a.width=s,a.ended=!0,o.length||(N.push({key:n,height:P,data:H.slice()}),U+=1)}}else H.push({key:n,width:D,records:[{key:e[e.length-1],value:r}],ended:!0}),U+=1,t===i.length-1&&N.push({key:n,height:L,data:H.slice()})})}else if(a.length){var V=[];a.forEach(function(e,t){var n=e.join(String.fromCharCode(0)),r=s[n].records;if("row"===x){var o=a[t+1]||[],i=V[V.length-1];if(i&&!i.ended||(i={key:n,width:0,records:[],ended:!1},V.push(i)),i.records.push({key:e[e.length-1],value:r}),1===e.length&&t===a.length-1||e[e.length-2]!==o[o.length-2]){i.width=D,i.ended=!0;var l=i.records.length*L;N.push({key:n,height:l,data:V.slice()}),V=[],t===a.length-1&&(U+=1)}}else N.push({key:n,height:P,data:[{key:n,width:L,records:[{key:e[e.length-1],value:r}],ended:!1}]}),U+=1})}else{var Y=b[0],W="col"===x?L:D,G="row"===x?L:P,Q={width:W,records:[{key:"data",value:Y}],ended:!0};N.push({height:G,data:[Q]})}var q=i.length||1,K=a.length||1;U=U||1;var X=0;"col"===x?(F=q*L,X=U*P*v.length):(F=U*D*v.length,X=K*L),R=l.createElement(d.default,{width:F,height:X,cols:o,rows:n,dimetionAxisCount:"col"===x?q:K,metricAxisCount:U,metrics:v,data:this.gridCutting(F,X,N),chartStyles:y,drawingData:A,dimetionAxis:x,metricAxisConfig:_,color:w,label:j,size:E,xAxis:S,tip:k,renderType:C,legend:T,onCheckTableInteract:M,onDoInteract:O})}else{if(i.length&&a.length)a.forEach(function(e){var t=e.join(String.fromCharCode(0)),n=[];F=0,i.forEach(function(e){var r=e.join(String.fromCharCode(0)),o=b[t][r],a=g[r],i=a.width,s=a.height,c=f.getPivotCellWidth(i);F+=c,n.push(l.createElement(u.default,{key:""+t+r,colKey:r,rowKey:t,width:c,height:f.getPivotCellHeight(s),metrics:v,data:o,chartStyles:y,color:w,legend:T}))}),B.push(l.createElement("tr",{key:t},n))});else if(i.length){var J=[];F=0,i.forEach(function(e){var t=e.join(String.fromCharCode(0)),n=g[t],r=n.width,o=n.height,a=n.records,i=f.getPivotCellWidth(r);F+=i,J.push(l.createElement(u.default,{key:t,colKey:t,width:i,height:f.getPivotCellHeight(o),metrics:v,data:a,chartStyles:y,color:w,legend:T}))}),B.push(l.createElement("tr",{key:h.uuid(8,16)},J))}else if(a.length)a.forEach(function(e){var t=e.join(String.fromCharCode(0)),n=s[t],r=n.height,o=n.records,a=[];F=0;var i=f.getPivotCellWidth(p[p.length-1]);F+=i,a.push(l.createElement(u.default,{key:t,rowKey:t,width:i,height:f.getPivotCellHeight(r),metrics:v,data:o,chartStyles:y,color:w,legend:T})),a.length&&B.push(l.createElement("tr",{key:t},a))});else if(v.length){var Z=b[0],$=0;v.forEach(function(e){var t=Z[e.agg+"("+e.name+")"];$=Math.max($,f.getPivotContentTextWidth(t))});var ee=f.getPivotCellHeight();B.push(l.createElement("tr",{key:h.uuid(8,16)},l.createElement(u.default,{key:h.uuid(8,16),width:$,height:ee,metrics:v,data:Z,chartStyles:y,color:w,legend:T})))}R=l.createElement("table",{className:m.pivot,style:{width:F}},l.createElement("tbody",null,B))}var te=c((e={},r(e,m.columnBody,!0),r(e,m.bodyCollapsed,I),r(e,m.raw,!x),e));return l.createElement("div",{className:te},R)}}]),t}(l.Component);t.TableBody=g,t.default=g},"./app/containers/Widget/components/Pivot/Xaxis.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n=0?{variableFirst:t.variables[0],variableSecond:t.variables[1]}:{variable:t.variables[0]};n.props.form.setFieldsValue(Object.assign({id:t.id,type:t.type},r)),n.setState({variableNumber:n.DOUBLE_VARIABLES.indexOf(t.type)>=0?2:1,chosenType:t.type,tableVisible:n.WITH_TABLE.indexOf(t.type)>=0,hasRelatedComponent:t.hasRelatedComponent,tableSource:t.sub})}},n.formInit=function(e){n.setState({variableNumber:e.control.variables?e.control.variables.length:1})},n.addVariableConfig=function(){var e=n.state.tableSource;n.setState({tableSource:e.concat({id:y.uuid(8,16),text:"",value:"",variables:[],variableType:void 0,status:0})})},n.changeConfigValueStatus=function(e){return function(){var t=n.state.tableSource;t.find(function(t){return t.id===e}).status=0,n.setState({tableSource:t})}},n.updateConfigValue=function(e){return function(){n.variableConfigTable.validateFieldsAndScroll(function(t,r){if(!t){var o=n.state.tableSource,a=o.find(function(t){return t.id===e});a.text=r[e+"Text"],a.value=r[e+"Value"],a.variables=r[e+"Variables"],a.variableType=r[e+"VariableType"],a.status=1,n.setState({tableSource:o})}})}},n.deleteConfigValue=function(e){return function(){var t=n.state.tableSource;n.setState({tableSource:t.filter(function(t){return t.id!==e})})}},n.typeChange=function(e){n.setState({chosenType:e,variableNumber:n.DOUBLE_VARIABLES.indexOf(e)>=0?2:1,tableVisible:n.WITH_TABLE.indexOf(e)>=0})},n.hasRelatedComponentChange=function(e){n.setState({hasRelatedComponent:e.target.value})},n.saveConfig=function(){n.props.form.validateFieldsAndScroll(function(e,t){if(!e){var r=n.state,o=r.variableNumber,a=r.tableSource,i=t.id||y.uuid(8,16),s=t.type,l=1===o?[t.variable]:[t.variableFirst,t.variableSecond],c=n.WITH_TABLE.indexOf(s)>=0?"yes"===n.state.hasRelatedComponent?a:a.map(function(e){return delete e.variableType,e}):[];n.props.onSave({id:i,type:s,hasRelatedComponent:t.hasRelatedComponent,variables:l,sub:c}),n.props.onClose()}})},n.resetForm=function(){n.props.form.resetFields(),n.setState({variableNumber:1,tableVisible:!1,tableSource:[]})},n.state={variableNumber:1,chosenType:"",tableVisible:!1,hasRelatedComponent:"yes",tableSource:[]},n}return a(t,e),i(t,[{key:"componentWillMount",value:function(){this.formInit(this.props)}},{key:"componentDidMount",value:function(){this.setFormValue(this.props)}},{key:"componentWillReceiveProps",value:function(e){e.control!==this.props.control&&this.formInit(e)}},{key:"componentDidUpdate",value:function(e){e.control!==this.props.control&&this.setFormValue(this.props)}},{key:"render",value:function(){var e=this,t=this.props,n=t.form,r=t.queryInfo,o=t.onClose,a=this.state,i=a.variableNumber,u=a.chosenType,p=a.tableVisible,v=a.hasRelatedComponent,y=a.tableSource,S=n.getFieldDecorator,k=[{text:"文本输入框",value:"input"},{text:"数字输入框",value:"inputNumber"},{text:"单选下拉菜单",value:"select"},{text:"多选下拉菜单",value:"multiSelect"},{text:"日期选择",value:"date"},{text:"日期多选",value:"multiDate"},{text:"日期范围选择",value:"dateRange"},{text:"日期时间选择",value:"datetime"},{text:"日期时间范围选择",value:"datetimeRange"}].map(function(e){return s.createElement(b,{key:e.value,value:e.value},e.text)}),C=null;r&&(C=r.map(function(e){return s.createElement(b,{key:e,value:e},e)}));var T=void 0;return 1===i?(T=[s.createElement(m,{span:8,key:"variable"},s.createElement(g,null,S("variable",{})(s.createElement(d,{placeholder:"关联变量",allowClear:!0},C))))],"select"===u&&T.push(s.createElement(m,{span:8,key:"hasRelatedComponent"},s.createElement(g,null,S("hasRelatedComponent",{initialValue:v})(s.createElement(_,{onChange:this.hasRelatedComponentChange},w,j)))))):T=[s.createElement(m,{span:8,key:"first"},s.createElement(g,null,S("variableFirst",{})(s.createElement(d,{placeholder:"关联变量1",allowClear:!0},C)))),s.createElement(m,{span:8,key:"second"},s.createElement(g,null,S("variableSecond",{})(s.createElement(d,{placeholder:"关联变量2",allowClear:!0},C))))],s.createElement("div",{className:x.variableConfigForm},s.createElement(c,null,s.createElement(h,{gutter:8},s.createElement(m,{span:8},s.createElement(g,{className:A.hide},S("id",{})(E)),s.createElement(g,null,S("type",{rules:[{required:!0,message:"控件类型不能为空"}]})(s.createElement(d,{placeholder:"控件类型",onSelect:this.typeChange},k)))),T)),p?s.createElement(l.default,{dataSource:y,variableSource:r,onAddConfigValue:this.addVariableConfig,hasRelatedComponent:v,onChangeConfigValueStatus:this.changeConfigValueStatus,onUpdateConfigValue:this.updateConfigValue,onDeleteConfigValue:this.deleteConfigValue,ref:function(t){e.variableConfigTable=t}}):"",s.createElement("div",{className:x.footer},s.createElement(f,{onClick:o},"取消"),s.createElement(f,{type:"primary",onClick:this.saveConfig},"保存")))}}]),t}(s.Component);t.VariableConfigForm=S,t.default=c.create()(S)},"./app/containers/Widget/components/VariableConfigTable.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n=0),t&&o&&(t=t&&i.test(e.name)),t})}},{key:"render",value:function(){var e=this,t=this.props,n=t.className,o=t.widgetsSelected,a=this.state,i=a.screenWidth,s=a.pageSize,l=a.currentPage,p=a.showSelected,b=this.getWidgets(),A=(l-1)*s,x=Math.min(l*s,b.length),w=b.slice(A,x),j=w.map(function(t,n){var a,i=t.type,s=u((a={},r(a,_.widget,!0),r(a,_.selector,!0),r(a,_.selected,1===t.id),a)),l=o.findIndex(function(e){return e.id===t.id})>=0?c.createElement("div",{className:_.checkmark},y):"";return c.createElement(h,{md:8,sm:12,xs:24,key:t.id,onClick:e.onWidgetSelect(t)},c.createElement("div",{className:s},c.createElement("h3",{className:_.title},t.name),c.createElement("p",{className:_.content},t.desc),c.createElement("i",{className:_.pic+" iconfont "+d.iconMapping[i]}),l))});return c.createElement("div",{className:n},c.createElement(f,{gutter:20,className:""+_.searchRow},c.createElement(h,{span:17},c.createElement(m,{checked:p,onChange:this.onShowTypeChange},"已选")),c.createElement(h,{span:7},c.createElement(v,{placeholder:"Widget 名称",onSearch:this.onSearchWidgetItem}))),c.createElement(f,{gutter:20},j),c.createElement(f,null,c.createElement(g,{simple:i<768||768===i,className:_.paginationPosition,showSizeChanger:!0,onShowSizeChange:this.onShowSizeChange,onChange:this.onChange,total:b.length,defaultPageSize:24,pageSizeOptions:["24","48","72","96"],current:l})))}}]),t}(c.Component);t.WidgetSelector=A,t.default=A},"./app/containers/Widget/components/Workbench/ActOnSettingForm.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n","<",">=","<=","!="],["=",">","<",">=","<=","!="]],n=t[0].slice().map(function(e){return l.createElement(v,{key:e,value:e},e)}),r=t[1].slice().map(function(e){return l.createElement(v,{key:e,value:e},e)});return"number"===e||"date"===e?r:n},n.generateFilterValueInput=function(e){var t=n.props.type,r=l.createElement(p,{onChange:n.changeStringFilterValue(e)}),o=l.createElement(f,{className:x.inputNumber,onChange:n.changeNumberFilterValue(e)});return"number"===t?o:r},n.addParallelNode=function(e){return function(){var t=n.state.flattenTree,r=t[e],o={id:u.uuid(8,16),type:"node",parent:void 0};if(r.parent){var a=t[r.parent];o.parent=a.id,a.children.push(o),t[o.id]=o,n.setState({flattenTree:Object.assign({},t)})}else{var i={id:u.uuid(8,16),root:!0,type:"link",rel:"and",children:[]};o.parent=i.id,i.children.push(r),i.children.push(o),delete r.root,delete t[r.id],r.id=u.uuid(8,16),r.parent=i.id,t[r.id]=r,t[i.id]=i,t[o.id]=o,n.setState({flattenTree:Object.assign({},t)}),n.props.onAddTreeNode(i)}}},n.forkNode=function(e){return function(){var t=n.state.flattenTree,r=t[e],o=Object.assign({},r,{id:u.uuid(8,16),parent:r.id}),a={id:u.uuid(8,16),type:"node",parent:r.id};r.type="link",r.rel="and",r.children=[o,a],t[o.id]=o,t[a.id]=a,n.setState({flattenTree:Object.assign({},t)})}},n.deleteNode=function(e){return function(){var t=n.state.flattenTree,r=t[e];if(delete t[e],r.parent){var o=t[r.parent];if(o.children=o.children.filter(function(t){return t.id!==e}),1===o.children.length){var a=o.children[0];n.refreshTreeId(a);var i=o.id;o.id=a.id,o.type=a.type,o.rel=a.rel,o.filterKey=a.filterKey,o.filterOperator=a.filterOperator,o.filterValue=a.filterValue,o.children=a.children,delete t[i],t[a.id]=o}n.setState({flattenTree:Object.assign({},t)})}else n.setState({flattenTree:null}),n.props.onDeleteTreeNode()}},n.refreshTreeId=function(e){var t=n.state.flattenTree;delete t[e.id],e.id=u.uuid(8,16),t[e.id]=e,e.children&&e.children.forEach(function(t){t.parent=e.id,n.refreshTreeId(t)})},n.changeLinkRel=function(e){return function(t){e.rel=t.target.value}},n.changeFilterOperator=function(e){return function(t){e.filterOperator=t}},n.changeStringFilterValue=function(e){return function(t){e.filterValue=t.target.value}},n.changeNumberFilterValue=function(e){return function(t){e.filterValue=t}},n.changeDateFilterValue=function(e){return function(t){e.filterValue=t}},n.resetTree=function(){n.setState({flattenTree:null})},n.state={flattenTree:null},n}return i(t,e),s(t,[{key:"componentWillReceiveProps",value:function(e){var t=e.filterTree,n=this.state.flattenTree;Object.keys(t).length>0&&!n&&this.setState({flattenTree:this.initFlattenTree(t,{})})}},{key:"renderFilters",value:function(e){var t=this;if("link"===e.type){var n=e.children.map(function(e){return t.renderFilters(e)});return this.renderFilterList(e,n)}return"node"===e.type?this.renderFilterItem(e):l.createElement("div",{className:x.empty,onClick:this.props.onAddRoot},E)}},{key:"render",value:function(){var e=this.props.filterTree;return l.createElement("div",{className:x.conditionalFilterPanel},l.createElement(d,{className:x.conditionalFilterForm},this.renderFilters(e)))}}]),t}(l.PureComponent);t.ConditionalFilterPanel=S,t.default=d.create({widthRef:!0})(S)},"./app/containers/Widget/components/Workbench/ConfigSections/AxisSection.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n=0){var d=r.findIndex(function(e){return e.name===o.name});"category"===o.type&&d>=0&&o.from!==t||a(t,o,function(e){e?i(t,c,u,l,e):n.dragLeave()})}n.setState({entering:!1,dropIndex:-1,dropType:"outside"===u?void 0:void 0===u?"unmoved":u})},n.itemDragEnd=function(){n.props.onItemDragEnd(n.state.dropType),n.setState({dropType:void 0})},n.calcPhysicalDropIndex=function(e,t){var r=e-n.x,o=t-n.y,a=n.width-n.PADDING,i=Math.max(n.BOX_MIN_HEIGHT-n.PADDING,n.state.items.length*n.ITEM_HEIGHT+n.PADDING);if(r>n.PADDING&&o>n.PADDING&&r=0&&(c-=1);var u=void 0!==e?Math.min(c,e):c;if(s<0)(l<0||l!==u)&&n.setState({items:[].concat(o(r.slice(0,u)),[{name:"category"===a.type?a.name:m.decodeMetricName(a.name),type:"add"}],o(r.slice(u))),dropIndex:u,dropType:"outside"});else if(l!==u){var d=i.filter(function(e,t){return t!==l});d.splice(u,0,a),n.setState({items:d,dropIndex:u,dropType:"inside"})}},n.state={entering:!1,items:[],dropIndex:-1,dropType:void 0},n}return s(t,e),l(t,[{key:"componentWillMount",value:function(){this.getItems(this.props)}},{key:"componentWillReceiveProps",value:function(e){e.items!==this.props.items&&this.getItems(e)}},{key:"render",value:function(){var e,t,n=this,o=this.props,a=o.name,i=o.title,s=o.type,l=o.value,m=o.panelList,b=o.mode,y=o.dragged,A=o.dimetionsCount,x=o.metricsCount,w=o.onValueChange,j=o.onItemDragStart,E=o.onItemSort,S=o.onItemChangeAgg,k=o.onItemChangeColorConfig,C=o.onItemChangeFilterConfig,T=o.onItemChangeChart,M=o.onItemRemove,O=this.state,L=O.entering,D=O.items,P=!1,I=!1,R="";y&&(R=y.type,"all"!==s&&s!==R||(P=!0,I=L));var N=u((e={},r(e,v.dropContainer,!0),r(e,v.dragOver,P),e)),B=u((t={},r(t,v.mask,!0),r(t,v.onTop,P),r(t,v.enter,I),r(t,v.category,"category"===R),r(t,v.value,"value"===R),t)),F=void 0;if(["color","size"].includes(a)){var U=void 0;switch(a){case"color":U=c.createElement(f.default,{list:m,value:l,showAll:"pivot"===b,onValueChange:w});break;case"size":U=c.createElement(h.default,{list:m,value:l,hasTabs:"pivot"===b,onValueChange:w})}F=c.createElement(g,{content:U,trigger:"click",placement:"right"},c.createElement("span",{className:v.setting},_," 设置"))}var z=D.length?D.map(function(e){return c.createElement(d.default,{key:e.name,container:a,item:e,dimetionsCount:A,metricsCount:x,onDragStart:j,onDragEnd:n.itemDragEnd,onSort:E,onChangAgg:S,onChangeColorConfig:k,onChangeFilterConfig:C,onChangeChart:T,onRemove:M(e.name)})}):c.createElement(p.default,{title:i,type:s});return c.createElement("div",{className:v.dropbox},c.createElement("p",{className:v.title},i,F),c.createElement("div",{className:N,ref:function(e){return n.container=e}},z,c.createElement("div",{className:B,onDragEnter:this.dragEnter,onDragOver:this.dragOver,onDragLeave:this.dragLeave,onDrop:this.drop})))}}]),t}(c.PureComponent);t.Dropbox=y,t.default=y},"./app/containers/Widget/components/Workbench/DropboxContent.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n=0?a(o,t):"color"===t?s(o):"filters"===t?l(o):i(o,t)},n.getSpecificDropdownList=function(e){var t=n.props.container,r=n.dropdownList[e];return"color"===t?r=[{color:"配置颜色"}].concat(r):"filters"===t&&(r=[{filters:"配置筛选"}].concat(r)),r},n.state={dragging:!1},n}return i(t,e),l(t,[{key:"render",value:function(){var e,t,n=this.props,o=n.container,a=n.item,i=n.dimetionsCount,s=n.metricsCount,l=n.onChangeChart,m=n.onRemove,g=a.name,b=a.type,A=a.sort,x=a.agg,w=this.state.dragging,j="value"===b?p.decodeMetricName(g):g,E=void 0;"metrics"===o&&"add"!==a.type&&(E=c.createElement(d.default,{chart:a.chart,dimetionsCount:i,metricsCount:s,onChangeChart:l(a)}));var S=u((e={},r(e,_.dropItemContent,!0),r(e,_.category,"category"===b),r(e,_.value,"value"===b),r(e,_.add,"add"===b),r(e,_.dragging,w),e)),k=u((t={iconfont:!0},r(t,_.sort,!0),r(t,"icon-sortascending","asc"===A),r(t,"icon-sortdescending","desc"===A),t)),C=c.createElement("p",null,y,x?" ["+p.getAggregatorLocale(x)+"] "+j+" ":" "+j+" ",A&&c.createElement("i",{className:k})),T=void 0;if("add"===b)T=C;else{var M=this.getSpecificDropdownList(b),O="";"value"===b&&(O=_.valueDropDown),T=c.createElement(v,{overlay:c.createElement(h,{className:O,onClick:this.dropdownMenuClick},this.getDropdownList(M)),trigger:["click"]},C)}return c.createElement("div",{className:_.dropItem},c.createElement("div",{className:S,onDragStart:this.dragStart,onDragEnd:this.dragEnd,draggable:!0},E,T,c.createElement(f,{type:"close-square-o",className:_.remove,onClick:m})))}}]),t}(c.PureComponent);t.DropboxItem=A,t.default=A},"./app/containers/Widget/components/Workbench/FilterSettingForm.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n= '"+a+"'":"yesterday"===r?t+" >= '"+i+"' and "+t+" <= '"+a+"'":"yesterdayFromNow"===r?t+" >= '"+i+"'":"7"===r?t+" >= '"+l.default().subtract(7,"days").format(u.DEFAULT_DATETIME_FORMAT)+"'":"30"===r?t+" >= '"+l.default().subtract(30,"days").format(u.DEFAULT_DATETIME_FORMAT)+"'":"90"===r?t+" >= '"+l.default().subtract(90,"days").format(u.DEFAULT_DATETIME_FORMAT)+"'":"365"===r?t+" >= '"+l.default().subtract(365,"days").format(u.DEFAULT_DATETIME_FORMAT)+"'":"week"===r?t+" >= '"+l.default().startOf("week").format(u.DEFAULT_DATETIME_FORMAT)+"'":"month"===r?t+" >= '"+l.default().startOf("month").format(u.DEFAULT_DATETIME_FORMAT)+"'":"quarter"===r?t+" >= '"+l.default().startOf("quarter").format(u.DEFAULT_DATETIME_FORMAT)+"'":"year"===r?t+" >= '"+l.default().startOf("year").format(u.DEFAULT_DATETIME_FORMAT)+"'":t+" >= '"+o[0].format(u.DEFAULT_DATETIME_FORMAT)+"' and "+t+" <= '"+o[1].format(u.DEFAULT_DATETIME_FORMAT)+"'"},n.save=function(){var e=n.props,t=e.onSave,r=e.onCancel,o=n.state,a=o.name,i=o.mode,s=o.target,l=o.filterTree,c=o.selectedDate,d=o.datepickerValue;if("value"===i){var p=s.map(function(e){return"'"+e+"'"}).join(",");p?t({sql:a+" in ("+p+")",filterSource:s.slice()}):r()}else"conditional"===i?Object.keys(l).length>0?n.conditionalFilterForm.props.form.validateFieldsAndScroll(function(e){e||(t({sql:n.getSqlExpresstions(l),filterSource:Object.assign({},l)}),n.conditionalFilterForm.resetTree())}):r():t({sql:n.getDateSql(),filterSource:{selectedDate:c,datepickerValue:d.map(function(e){return e.format(u.DEFAULT_DATETIME_FORMAT)})}})},n.reset=function(){n.setState({mode:"value",name:"",type:"",list:[],target:[],filterTree:{},selectedDate:"today",datepickerValue:[l.default(),l.default()]})},n.state={mode:"value",name:"",type:"",list:[],target:[],filterTree:{},selectedDate:"today",datepickerValue:[l.default(),l.default()]},n}return a(t,e),i(t,[{key:"componentWillMount",value:function(){var e=this.props,t=e.item,n=e.config;this.initNameAndType(t),this.initFilterSource(t.visualType,n)}},{key:"componentWillReceiveProps",value:function(e){var t=e.item,n=e.config,r=e.list;t&&this.initNameAndType(t),n&&this.initFilterSource(t.visualType,n),r&&this.setState({list:r.map(function(e){return{key:""===e?p.uuid(8,16):e,title:e}})})}},{key:"render",value:function(){var e=this.props.onCancel,t=this.state,n=t.mode,r=t.name,o=t.type,a=t.list,i=t.target,l=t.filterTree,d=t.selectedDate,p=t.datepickerValue,h=[];"number"===o?h.push(x):"date"===o?h.push(w):(h.push(j),h.push(E));var b=this.dateRadioSource.map(function(e){return e.map(function(e){return s.createElement(m,{key:e.value,value:e.value,className:A.radio},e.name)}).concat(S)}),_=void 0;return _="value"===n?s.createElement("div",{className:A.valueBlock},s.createElement(f,{dataSource:a,titles:["值列表","所选值"],render:this.transferRender,targetKeys:i,onChange:this.transferChange})):"conditional"===n?s.createElement("div",{className:A.conditionalBlock},s.createElement(c.default,{name:r,type:o,filterTree:l,onAddRoot:this.initFilterTree,onAddTreeNode:this.addTreeNode,onDeleteTreeNode:this.deleteTreeNode,wrappedComponentRef:this.refHandles.conditionalFilterForm})):s.createElement("div",{className:A.dateBlock},s.createElement(g,{value:d,onChange:this.selectDate,className:A.dateFilterRadios},b),"other"===d&&s.createElement(y,{value:p,format:u.DEFAULT_DATETIME_FORMAT,onChange:this.datepickerChange,showTime:!0})),s.createElement("div",{className:A.filterSettingForm},s.createElement("div",{className:A.header},s.createElement(g,{onChange:this.radioChange,value:n},h)),_,s.createElement("div",{className:A.footer},s.createElement(v,{type:"primary",onClick:this.save},"保存"),s.createElement(v,{onClick:e},"取消")))}}]),t}(s.PureComponent);t.FilterSettingForm=k,t.default=k},"./app/containers/Widget/components/Workbench/OperatingPanel.tsx":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t=0&&(g.splice(b,1),t=t<=b?t:t-1)}"xAxis"===e&&(g.splice(0,1),t=0)}if("outside"===r){var v=f;"metrics"===e&&(v=Object.assign({},f,{chart:c.metrics.items.length?c.metrics.items[0].chart:S.getPivot()})),m.items=[].concat(o(g.slice(0,t)),[v],o(g.slice(t)))}else m.items=[].concat(o(a));h&&(h.items=h.items.filter(function(e){return e.name!==f.name})),n.setState({dragged:null,modalCachedData:null}),n.getVisualData(c,u,d)},n.toggleRowsAndCols=function(){var e=n.state,t=e.commonParams,r=e.specificParams,o=e.styleParams,a=t.cols,i=t.rows;n.state.showColsAndRows&&i.items.length&&(a.items=a.items.concat(i.items),i.items=[],n.getVisualData(t,r,o)),n.setState({showColsAndRows:!n.state.showColsAndRows})},n.switchRowsAndCols=function(){var e=n.state,t=e.commonParams,r=e.specificParams,o=e.styleParams,a=t.cols,i=t.rows,s=a.items.slice();a.items=i.items.slice(),i.items=s,s=null,n.getVisualData(t,r,o)},n.removeDropboxItem=function(e){return function(t){return function(){var r=n.state,o=r.commonParams,a=r.specificParams,i=r.styleParams,s=o[e]||a[e];s.items=s.items.filter(function(e){return e.name!==t}),n.getVisualData(o,a,i)}}},n.getDropboxItemSortDirection=function(e){return function(t,r){var a=n.state,i=a.commonParams,s=a.specificParams,l=a.styleParams,c=i[e]||s[e];t.sort=["asc","desc"].indexOf(r)>=0?r:void 0,c.items=[].concat(o(c.items)),n.getVisualData(i,s,l)}},n.getDropboxItemAggregator=function(e){return function(t,r){var a=n.state,i=a.commonParams,s=a.specificParams,l=a.styleParams,c=i[e]||s[e];t.agg=r,c.items=[].concat(o(c.items)),n.getVisualData(i,s,l)}},n.dropboxItemChangeColorConfig=function(e){var t=n.props,r=t.selectedView,a=t.onLoadDistinctValue,i=n.state,s=i.commonParams,l=i.specificParams,c=i.styleParams;a(r.id,e.name),n.setState({modalCachedData:e,modalDataFrom:"color",modalCallback:function(t){if(t){var r=l.color.items,a=r.findIndex(function(n){return n.config.actOn===t.actOn&&n.name!==e.name});a>=0&&(l.color.items=[].concat(o(r.slice(0,a)),o(r.slice(a+1)))),e.config=t,n.getVisualData(s,l,c),n.setState({modalCachedData:null})}},colorModalVisible:!0})},n.dropboxItemChangeFilterConfig=function(e){var t=n.props,r=t.selectedView,o=t.onLoadDistinctValue,a=n.state,i=a.commonParams,s=a.specificParams,l=a.styleParams;"category"===e.type&&o(r.id,e.name),n.setState({modalCachedData:e,modalDataFrom:"filters",modalCallback:function(t){t&&(e.config=t,n.getVisualData(i,s,l),n.setState({modalCachedData:null}))},filterModalVisible:!0})},n.getDropboxItemChart=function(e){return function(t){var r=n.state.commonParams;e.chart=t,r.metrics.items=[].concat(o(r.metrics.items));var a=n.getChartDataConfig(n.getPivotModeSelectedCharts(r.metrics.items)),i=a.specificParams,s=a.styleParams;n.getVisualData(r,i,s)}},n.getDiemtionsAndMetricsCount=function(){var e=n.state.commonParams,t=e.cols,r=e.rows,o=e.metrics;return[t.items.length+r.items.length,o.items.length]},n.getVisualData=function(e,t,r,o){var a=e.cols,i=e.rows,s=e.metrics,l=e.filters,c=t.color,u=t.label,d=t.size,p=t.xAxis,f=t.tip,h=n.props,m=h.selectedView,g=h.onLoadData,b=h.onSetWidgetProps,v=n.state,_=v.mode,y=v.chartModeSelectedChart,A=a.items.map(function(e){return e.name}).concat(i.items.map(function(e){return e.name})).filter(function(e){return"指标名称"!==e}),x=s.items.map(function(e){return{column:S.decodeMetricName(e.name),func:e.agg}});c&&(A=A.concat(c.items.map(function(e){return e.name}))),u&&(A=A.concat(u.items.filter(function(e){return"category"===e.type}).map(function(e){return e.name})),x=x.concat(u.items.filter(function(e){return"value"===e.type}).map(function(e){return{column:S.decodeMetricName(e.name),func:e.agg}}))),d&&(x=x.concat(d.items.map(function(e){return{column:S.decodeMetricName(e.name),func:e.agg}}))),p&&(x=x.concat(p.items.map(function(e){return{column:S.decodeMetricName(e.name),func:e.agg}}))),f&&(x=x.concat(f.items.map(function(e){return{column:S.decodeMetricName(e.name),func:e.agg}}))),A.sort(),x.sort();var w=[];Object.values(e).concat(Object.values(t)).reduce(function(e,t){return e.concat(t.items)},[]).forEach(function(e){e.sort&&w.push({column:"category"===e.type?e.name:e.agg+"("+S.decodeMetricName(e.name)+")",direction:e.sort})});var j={groups:A,aggregators:x,filters:l.items.map(function(e){return e.config.sql}),orders:w,cache:!1,expired:0},E=void 0,k=void 0;"pivot"===_?(E=n.getPivotModeSelectedCharts(s.items),k=A.length):(E=[y],k=a.items.length),S.checkChartEnable(k,s.items.length,E)||(E="pivot"===_?n.getPivotModeSelectedCharts([]):[S.getTable()]);var C=JSON.stringify(j);m&&C!==n.lastRequestParamString?(n.lastRequestParamString=C,g(m.id,j,function(t){b(t.length?Object.assign({cols:a.items.map(function(e){return e.name}),rows:i.items.map(function(e){return e.name}),metrics:s.items.map(function(e){return Object.assign({},e)}),filters:l.items},c&&{color:c},u&&{label:u},d&&{size:d},p&&{xAxis:p},f&&{tip:f},{chartStyles:r,selectedChart:"pivot"===_?y.id:E[0].id,data:t,dimetionAxis:n.getDimetionAxis(E),renderType:o||"rerender",orders:w,mode:_}):{cols:[],rows:[],metrics:[],filters:[],data:[],chartStyles:r,selectedChart:"pivot"===_?y.id:E[0].id,dimetionAxis:n.getDimetionAxis([S.getPivot()]),renderType:"rerender",orders:w,mode:_}),n.setState(Object.assign({commonParams:e},n.getChartDataConfig(E),{chartModeSelectedChart:"pivot"===_?y:E[0]}))})):(b(Object.assign({cols:a.items.map(function(e){return e.name}),rows:i.items.map(function(e){return e.name}),metrics:s.items.map(function(e){return Object.assign({},e)}),filters:l.items},c&&{color:c},u&&{label:u},d&&{size:d},p&&{xAxis:p},f&&{tip:f},{chartStyles:r,selectedChart:"pivot"===_?y.id:E[0].id,dimetionAxis:n.getDimetionAxis(E),renderType:o||"clear",orders:w,mode:_})),n.setState(Object.assign({commonParams:e},n.getChartDataConfig(E),{chartModeSelectedChart:"pivot"===_?y:E[0]})))},n.getDimetionAxis=function(e){var t=S.getPivot();if(e.filter(function(e){return e.id!==t.id}).length)return"col"},n.chartSelect=function(e){var t=n.state,r=t.mode,o=t.commonParams,a=o.cols,i=o.rows,s=o.metrics;if("pivot"===r){if(1!==s.items.length||s.items[0].chart.id!==e.id){s.items.forEach(function(t){t.chart=e}),e.id!==S.getPivot().id&&(a.items=a.items.filter(function(e){return"指标名称"!==e.name}),i.items=i.items.filter(function(e){return"指标名称"!==e.name}));var l=n.getChartDataConfig(n.getPivotModeSelectedCharts(s.items)),c=l.specificParams,u=l.styleParams;n.getVisualData(o,c,u)}}else n.setState({chartModeSelectedChart:e},function(){var t=n.getChartDataConfig([e]),r=t.specificParams,a=t.styleParams;n.getVisualData(o,r,a)})},n.viewSelect=function(e){var t=e.key,r=n.state,o=r.commonParams,a=r.specificParams;Object.values(o).concat(Object.values(a)).filter(function(e){return!!e.items.length}).length?z({title:"切换 View 会清空所有配置项,是否继续?",onOk:function(){n.resetWorkbench(),n.props.onViewSelect(n.props.views.find(function(e){return e.id===Number(t)}))}}):n.props.onViewSelect(n.props.views.find(function(e){return e.id===Number(t)}))},n.changeMode=function(e){var t=e.target.value,r=n.state,o=r.commonParams,a=r.specificParams;Object.values(o).concat(Object.values(a)).filter(function(e){return!!e.items.length}).length?z({title:"切换图表模式会清空所有配置项,是否继续?",onOk:function(){n.setState({mode:t,currentWidgetlibs:p.default[t]},function(){n.resetWorkbench()})}}):n.setState({mode:t,currentWidgetlibs:p.default[t]},function(){n.resetWorkbench()})},n.resetWorkbench=function(){var e=n.state,t=e.commonParams,r=e.specificParams;e.mode;Object.values(t).forEach(function(e){e.items=[],e.value&&(e.value={})}),Object.values(r).forEach(function(e){e.items=[],e.value&&(e.value={})}),n.setState({showColsAndRows:!1,chartModeSelectedChart:S.getTable()});var o=n.getChartDataConfig(n.getPivotModeSelectedCharts([]));n.getVisualData(t,o.specificParams,o.styleParams)},n.dropboxValueChange=function(e){return function(t,r){var o=n.state,a=o.mode,i=o.commonParams,s=o.specificParams,l=o.styleParams,c=s.color,u=s.size;switch(e){case"color":"all"===t&&"pivot"===a?Object.keys(c.value).forEach(function(e){c.value[e]=r}):c.value[t]=r;break;case"size":"all"===t?Object.keys(u.value).forEach(function(e){u.value[e]=r}):u.value[t]=r}n.getVisualData(i,s,l,"refresh")}},n.styleChange=function(e){return function(t,r){var o=n.state,a=o.commonParams,i=o.specificParams,s=o.styleParams;s[e][t]=r,n.getVisualData(a,i,s,"refresh")}},n.confirmColorModal=function(e){n.state.modalCallback(e),n.closeColorModal()},n.cancelColorModal=function(){n.state.modalCallback(!1),n.closeColorModal()},n.closeColorModal=function(){n.setState({colorModalVisible:!1,modalCallback:null})},n.confirmActOnModal=function(e){n.state.modalCallback(e),n.closeActOnModal()},n.cancelActOnModal=function(){n.state.modalCallback(!1),n.closeActOnModal()},n.closeActOnModal=function(){n.setState({actOnModalVisible:!1,actOnModalList:null})},n.confirmFilterModal=function(e){n.state.modalCallback(e),n.closeFilterModal()},n.cancelFilterModal=function(){n.state.modalCallback(!1),n.closeFilterModal()},n.closeFilterModal=function(){n.setState({filterModalVisible:!1})},n.afterColorModalClose=function(){n.colorSettingForm.reset()},n.afterActOnModalClose=function(){n.actOnSettingForm.reset()},n.afterFilterModalClose=function(){n.filterSettingForm.reset()},n.tabSelect=function(e){return function(){n.setState({selectedTab:e})}},n.showVariableConfigTable=function(e){return function(){n.setState({variableConfigModalVisible:!0,variableConfigControl:e?n.props.queryParams.find(function(t){return t.id===e}):{}})}},n.hideVariableConfigTable=function(){n.setState({variableConfigModalVisible:!1,variableConfigControl:{}})},n.resetVariableConfigForm=function(){n.variableConfigForm.resetForm()},n.saveControl=function(e){var t=n.props,r=t.queryParams,a=t.onSetQueryParams,i=n.state,s=(i.commonParams,i.specificParams,i.styleParams,r.findIndex(function(t){return t.id===e.id}));s>=0?(r.splice(s,1,e),a([].concat(o(r.slice(0,s)),[e],o(r.slice(s+1))))):a(r.concat(e))},n.deleteControl=function(e){return function(){var t=n.props,r=t.queryParams;(0,t.onSetQueryParams)(r.filter(function(t){return t.id!==e}))}},n.state={dragged:null,showColsAndRows:!1,selectedTab:"data",mode:"pivot",currentWidgetlibs:p.default.pivot,chartModeSelectedChart:S.getTable(),commonParams:{cols:{title:"列",type:"category",items:[]},rows:{title:"行",type:"category",items:[]},metrics:{title:"指标",type:"value",items:[]},filters:{title:"筛选",type:"all",items:[]}},specificParams:{},styleParams:{},modalCachedData:null,modalCallback:null,modalDataFrom:void 0,colorModalVisible:!1,actOnModalVisible:!1,actOnModalList:null,filterModalVisible:!1,variableConfigModalVisible:!1,variableConfigControl:{}},n}return s(t,e),c(t,[{key:"componentWillMount",value:function(){this.setState(Object.assign({},this.getChartDataConfig(this.getPivotModeSelectedCharts([]))))}},{key:"componentWillReceiveProps",value:function(e){var t=this,n=e.selectedView,r=e.currentWidgetConfig;if(r&&r!==this.props.currentWidgetConfig){var o=r.cols,a=r.rows,i=r.metrics,s=r.filters,l=r.color,c=r.label,u=r.size,d=r.xAxis,f=r.tip,h=r.chartStyles,m=r.mode,g=r.selectedChart,b=this.state.commonParams,v=p.default[m||"pivot"],_=JSON.parse(n.model);b.cols.items=o.map(function(e){return{name:e,from:"cols",type:"category",visualType:"指标名称"===e?"string":_[e].visualType}}),b.rows.items=a.map(function(e){return{name:e,from:"rows",type:"category",visualType:"指标名称"===e?"string":_[e].visualType}}),b.metrics.items=i.map(function(e){return Object.assign({},e,{type:"value",visualType:_[S.decodeMetricName(e.name)].visualType,chart:v.find(function(t){return t.id===e.chart.id})})}),b.filters.items=s.map(function(e){return Object.assign({},e,{visualType:_[e.name]})});var y=Object.assign({},l&&{color:l},c&&{label:c},u&&{size:u},d&&{xAxis:d},f&&{tip:f});this.setState(Object.assign({commonParams:b,specificParams:y,styleParams:h,showColsAndRows:!!a.length,mode:m||"pivot",currentWidgetlibs:v},g&&{chartModeSelectedChart:p.default.chart.find(function(e){return e.id===g})}),function(){t.getVisualData(b,y,h)})}}},{key:"render",value:function(){var e,t,n=this,o=this.props,a=o.views,i=o.selectedView,s=o.distinctColumnValues,c=o.columnValueLoading,p=o.queryParams,k=o.cache,M=o.expired,I=o.onCacheChange,z=o.onExpiredChange,V=this.state,Y=V.dragged,ne=V.showColsAndRows,re=V.selectedTab,oe=V.mode,ae=V.currentWidgetlibs,ie=V.chartModeSelectedChart,se=V.commonParams,le=V.specificParams,ce=V.styleParams,ue=V.modalCachedData,de=V.modalDataFrom,pe=V.colorModalVisible,fe=V.actOnModalVisible,he=V.actOnModalList,me=V.filterModalVisible,ge=V.variableConfigModalVisible,be=V.variableConfigControl,ve=se.metrics,_e=this.getDiemtionsAndMetricsCount(),ye=l(_e,2),Ae=ye[0],xe=ye[1],we=ce.spec,je=ce.xAxis,Ee=ce.yAxis,Se=ce.splitLine,ke=ce.pivot,Ce=ce.label,Te=ce.legend,Me=ce.toolbox,Oe=u.createElement(O,{onClick:this.viewSelect},(a||[]).map(function(e){return u.createElement(L,{key:e.id},e.name)})),Le=[],De=[];if(i){var Pe=JSON.parse(i.model),Ie=S.getPivot();Object.entries(Pe).forEach(function(e){var t=l(e,2),n=t[0],r=t[1];"category"===r.modelType?Le.push({name:n,type:"category",visualType:r.visualType}):De.push({name:n,type:"value",visualType:r.visualType})}),"pivot"===oe&&De.length&&ve.items.every(function(e){return e.chart.id===Ie.id})&&Le.push({name:"指标名称",type:"category",visualType:"string"})}var Re=Object.entries(se).concat(Object.entries(le)).map(function(e){var t=l(e,2),r=t[0],o=t[1];if("rows"!==r||ne){"cols"===r&&(o.title=ne?"列":"维度");var a=[];return"color"===r&&(a=ve.items),"size"===r&&(a=o.items),u.createElement(f.default,{key:r,name:r,title:o.title,type:o.type,value:o.value,items:o.items,mode:oe,dragged:Y,panelList:a,dimetionsCount:Ae,metricsCount:xe,onValueChange:n.dropboxValueChange(r),onItemDragStart:n.insideDragStart(r),onItemDragEnd:n.insideDragEnd,onItemRemove:n.removeDropboxItem(r),onItemSort:n.getDropboxItemSortDirection(r),onItemChangeAgg:n.getDropboxItemAggregator(r),onItemChangeColorConfig:n.dropboxItemChangeColorConfig,onItemChangeFilterConfig:n.dropboxItemChangeFilterConfig,onItemChangeChart:n.getDropboxItemChart,beforeDrop:n.beforeDrop,onDrop:n.drop})}}),Ne=d((e={},r(e,H.toggleRowsAndCols,!0),r(e,W.hide,"chart"===oe),e)),Be=d((t={},r(t,H.switchRowsAndCols,!0),r(t,W.hide,!ne),t)),Fe=this.tabKeys.map(function(e){var t=e.key,o=e.title,a=d(r({},H.selected,t===re));return u.createElement("li",{key:t,className:a,onClick:n.tabSelect(t)},o)}),Ue=[{title:"变量",dataIndex:"variables",key:"variables",render:function(e,t){return t.variables.join(",")}},{title:"操作",key:"action",width:100,className:""+W.textAlignCenter,render:function(e,t){return u.createElement("span",{className:"ant-table-action-column"},u.createElement(P,{size:"small",shape:"circle",icon:"edit",onClick:n.showVariableConfigTable(t.id)}),u.createElement(P,{size:"small",shape:"circle",icon:"delete",onClick:n.deleteControl(t.id)}))}}],ze=[];i&&(ze=(i.sql.match(/query@var\s+\$\w+\$/g)||[]).map(function(e){return e.substring(e.indexOf("$")+1,e.lastIndexOf("$"))}));var He=void 0;switch(re){case"data":He=u.createElement("div",{className:H.paramsPane+" "+H.dropPane},u.createElement("div",{className:Ne,onClick:this.toggleRowsAndCols},G,ne?" 使用维度":" 使用行列"),u.createElement("div",{className:Be,onClick:this.switchRowsAndCols},Q," 行列切换"),Re);break;case"style":He=u.createElement("div",{className:H.paramsPane},we&&u.createElement(x.default,{title:ie.title,config:we,onChange:this.styleChange("spec")}),Ce&&u.createElement(w.default,{title:"标签",config:Ce,onChange:this.styleChange("label"),name:ie.name}),Te&&u.createElement(j.default,{title:"图例",config:Te,onChange:this.styleChange("legend")}),Me&&u.createElement(E.default,{title:"工具",config:Me,onChange:this.styleChange("toolbox")}),je&&u.createElement(_.default,{title:"X轴",config:je,onChange:this.styleChange("xAxis")}),Ee&&u.createElement(_.default,{title:"Y轴",config:Ee,onChange:this.styleChange("yAxis")}),Se&&u.createElement(y.default,{title:"分隔线",config:Se,onChange:this.styleChange("splitLine")}),ke&&u.createElement(A.default,{title:"透视表",config:ke,onChange:this.styleChange("pivot")}));break;case"variable":He=ze.length?u.createElement("div",{className:H.paramsPane},u.createElement(C,{gutter:8,type:"flex",align:"middle",className:H.blockRow},u.createElement(T,{span:24,className:H.addVariable,onClick:this.showVariableConfigTable()},q," 点击添加")),u.createElement(D,{dataSource:p,columns:Ue,rowKey:"id",pagination:!1})):u.createElement("div",{className:H.paramsPane},u.createElement("div",{className:H.paneBlock},u.createElement(C,{gutter:8,type:"flex",align:"middle",className:H.blockRow},K)));break;case"cache":He=u.createElement("div",{className:H.paramsPane},u.createElement("div",{className:H.paneBlock},X,u.createElement("div",{className:H.blockBody},u.createElement(C,{gutter:8,type:"flex",align:"middle",className:H.blockRow},u.createElement(T,{span:24},u.createElement(N,{size:"small",value:k,onChange:I},J,Z))))),u.createElement("div",{className:H.paneBlock},$,u.createElement("div",{className:H.blockBody},u.createElement(C,{gutter:8,type:"flex",align:"middle",className:H.blockRow},u.createElement(T,{span:24},u.createElement(B,{value:M,disabled:!k,onChange:z}))))))}var Ve=void 0,Ye=void 0,We=void 0;if(ue){var Ge="filters"===de?se[de].items.find(function(e){return e.name===ue.name}):le[de].items.find(function(e){return e.name===ue.name});switch(de){case"color":Ve=Ge?Ge.config:{};break;case"filters":We=Ge?Ge.config:{};break;default:Ye=Ge?Ge.config:{}}}var Qe="pivot"===oe?this.getPivotModeSelectedCharts(ve.items):[ie];return u.createElement("div",{className:H.operatingPanel},u.createElement("div",{className:H.model},u.createElement("div",{className:H.viewSelect},u.createElement(F,{overlay:Oe,trigger:["click"],placement:"bottomLeft"},u.createElement("a",null,i?i.name:"选择一个View"))),u.createElement("div",{className:H.columnContainer},ee,u.createElement("ul",{className:H.columnList+" "+H.categories},Le.map(function(e){return u.createElement("li",{key:e.name,onDragStart:n.dragStart(e),onDragEnd:n.dragEnd,draggable:!0},u.createElement("i",{className:"iconfont "+n.getDragItemIconClass(e.visualType)}),u.createElement("p",null,e.name))}))),u.createElement("div",{className:H.columnContainer},te,u.createElement("ul",{className:H.columnList+" "+H.values},De.map(function(e){return u.createElement("li",{key:e.name,onDragStart:n.dragStart(Object.assign({},e,{name:S.encodeMetricName(e.name),agg:"sum"})),onDragEnd:n.dragEnd,draggable:!0},u.createElement("i",{className:"iconfont "+n.getDragItemIconClass(e.visualType)}),u.createElement("p",null,e.name))})))),u.createElement("div",{className:H.config},u.createElement("div",{className:H.mode},u.createElement(N,{size:"small",value:oe,onChange:this.changeMode},u.createElement(R,{className:d(r({},H.button,"pivot"!==oe)),value:"pivot"},"透视驱动"),u.createElement(R,{className:d(r({},H.button,"chart"!==oe)),value:"chart"},"图表驱动"))),u.createElement("div",{className:H.charts},ae.map(function(e){return u.createElement(v.default,{key:e.id,chartInfo:e,dimetionsCount:Ae,metricsCount:xe,selectedCharts:Qe,onSelect:n.chartSelect})})),u.createElement("div",{className:H.params},u.createElement("ul",{className:H.paramsTab},Fe),He)),u.createElement(U,{wrapClassName:"ant-modal-small",visible:pe,onCancel:this.cancelColorModal,afterClose:this.afterColorModalClose,footer:null},u.createElement(h.default,{mode:oe,list:s,loading:c,metrics:ve.items,config:Ve,onSave:this.confirmColorModal,onCancel:this.cancelColorModal,ref:function(e){return n.colorSettingForm=e}})),u.createElement(U,{title:"作用于",wrapClassName:"ant-modal-small",visible:fe,onCancel:this.cancelActOnModal,afterClose:this.afterActOnModalClose,footer:null},u.createElement(m.default,{list:he,config:Ye,onSave:this.confirmActOnModal,onCancel:this.cancelActOnModal,ref:function(e){return n.actOnSettingForm=e}})),u.createElement(U,{title:"筛选配置",visible:me,onCancel:this.cancelFilterModal,afterClose:this.afterFilterModalClose,footer:null},u.createElement(g.default,{item:ue,list:s,config:We,onSave:this.confirmFilterModal,onCancel:this.cancelFilterModal,ref:function(e){return n.filterSettingForm=e}})),u.createElement(U,{title:"QUERY变量配置",wrapClassName:"ant-modal-large",visible:ge,onCancel:this.hideVariableConfigTable,afterClose:this.resetVariableConfigForm,footer:!1,maskClosable:!1},u.createElement(b.default,{queryInfo:ze,control:be,onSave:this.saveControl,onClose:this.hideVariableConfigTable,wrappedComponentRef:this.refHandlers.variableConfigForm})))}}]),t}(u.Component);t.OperatingPanel=ne,t.default=ne},"./app/containers/Widget/components/Workbench/PivotChartSelector.tsx":function(e,t,n){"use strict";function r(e){var t=d.getPivot(),n=s.filter(function(n){return n!==t&&d.checkChartEnable(e.dimetionsCount,e.metricsCount,n)}).map(function(e){return a.createElement(u,{key:e.id,className:p.item},a.createElement("i",{className:"iconfont "+e.icon+" "+p.icon}))});return e.chart.id===t.id?null:a.createElement(l,{overlay:a.createElement(c,{className:p.chartSelectorList,onClick:o(e)},n),trigger:["click"]},a.createElement("i",{className:"iconfont "+e.chart.icon+" "+p.chart}))}function o(e){return function(t){var n=t.key,r=s.find(function(e){return""+e.id===n}),o=e.chart;r.id!==o.id&&e.onChangeChart(r)}}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/react/react.js"),i=n("./app/containers/Widget/config/index.ts"),s=i.default.pivot,l=n("./node_modules/antd/lib/dropdown/index.js"),c=n("./node_modules/antd/lib/menu/index.js"),u=c.Item,d=n("./app/containers/Widget/components/util.ts"),p=n("./app/containers/Widget/components/Workbench/Workbench.less");t.PivotChartSelector=r,t.default=r},"./app/containers/Widget/components/Workbench/SizePanel.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;ni)return 1;if("number"==typeof e&&"number"!=typeof t)return-1;if("number"==typeof t&&"number"!=typeof e)return 1;if("number"==typeof e&&"number"==typeof t)return 0;if(isNaN(i)&&!isNaN(a))return-1;if(isNaN(a)&&!isNaN(i))return 1;var s=String(e),l=String(t);if(s===l)return 0;if(!r.test(s)||!r.test(l))return s>l?1:-1;for(var c=s.match(n),u=l.match(n);c.length&&u.length;){var d=c.shift(),p=u.shift();if(d!==p)return r.test(d)&&r.test(p)?Number(d.replace(o,".0"))-Number(p.replace(o,".0")):d>p?1:-1}return c.length-u.length}function c(e){return e+2*N.PIVOT_CELL_PADDING+2*N.PIVOT_CELL_BORDER}function u(e){return(e||N.PIVOT_LINE_HEIGHT)+2*N.PIVOT_CELL_PADDING+N.PIVOT_CELL_BORDER}function d(e,t,n,r){var o=void 0,a=void 0;"col"===e?(o=Math.max(1,n[0]),a=t[0]):(o=Math.max(1,n[1]),a=t[1]);var i=a/o,s=r?N.PIVOT_CHART_METRIC_AXIS_MIN_SIZE:N.PIVOT_CHART_ELEMENT_MIN_WIDTH;return Math.max(Math.floor(i),s)}function p(e,t,n,r){return"row"===e&&n>r*t}function f(e,t,n){return Math.max(e,t*n*N.PIVOT_CHART_METRIC_AXIS_MIN_SIZE)/t/n}function h(e,t,n){return Math.max(e,t*n*N.PIVOT_CHART_METRIC_AXIS_MIN_SIZE)/t/n}function m(e,t,n){var r=Array.isArray(n)?n:[n],o=!0,a=!1,i=void 0;try{for(var s,l=r[Symbol.iterator]();!(o=(s=l.next()).done);o=!0){var c=s.value,u=c.requireDimetions,d=c.requireMetrics;if(Array.isArray(u)){if(eu[1])return!1}else if(e!==u)return!1;if(Array.isArray(d)){if(td[1])return!1}else if(t!==d)return!1}}catch(e){a=!0,i=e}finally{try{!o&&l.return&&l.return()}finally{if(a)throw i}}return!0}function g(e,t){var n=Math.floor(e/t),r=Math.pow(10,(""+n).length-1);return(Math.floor(n/r)+1)*r}function b(e,t){if(1===t)return t;var n=e/t;return Math.abs(n-N.PIVOT_CHART_POINT_LIMIT)/N.PIVOT_CHART_POINT_LIMIT<.2?t:n>N.PIVOT_CHART_POINT_LIMIT?t:b(e,Math.round(t/2))}function v(e){function t(e){return e>=10?Math.floor(e):e.toFixed(1)}return e>=Math.pow(10,9)&&e=Math.pow(10,6)&&e=Math.pow(10,3)&&eN.PIVOT_CANVAS_AXIS_SIZE_LIMIT){var a=[];return o.forEach(function(r){var o={key:""+z.uuid(8,16)+r.key,data:[]},i={key:"",length:0,data:[o]};r.data.forEach(function(s,l){var c="x"===e&&"row"===t||"y"===e&&"col"===t?s.width*n.length:s.width;i.length+c>N.PIVOT_CANVAS_AXIS_SIZE_LIMIT&&(i.key=""+l+i.data.map(function(e){return e.key}).join(","),a.push(i),o={key:""+z.uuid(8,16)+r.key,data:[]},i={key:"",length:0,data:[o]}),i.length+=c,o.data.push(s),l===r.data.length-1&&(i.key=""+l+i.data.map(function(e){return e.key}).join(","),a.push(i))})}),a}return[{key:"block",data:o,length:r}]}function k(e){return function(n){for(var r=n,o=e>N.PIVOT_XAXIS_ROTATE_LIMIT?e:N.PIVOT_XAXIS_SIZE-N.PIVOT_XAXIS_TICK_SIZE;t.getTextWidth(n)>o;)n=n.substring(0,n.length-1);return n===r?n:n.substring(0,n.length-1)+"…"}}function C(e,t,n,r,o){var a=I(e,2),i=a[0],s=a[1],l=o.contentSize,c=o.viewSize,u=I(l,2),d=u[0],p=u[1],f=I(c,2),h=f[0],m=f[1];return[i+d+10>h?i-10-d:i+10,Math.min(s,m-p)]}function T(e,t,n,o,a,s,l,c,u){var d=t.concat(n),p=[].concat(r(o));return a&&(d=d.concat(a.items.map(function(e){return e.name}))),s&&(d=d.concat(s.items.filter(function(e){return"category"===e.type}).map(function(e){return e.name})),p=p.concat(s.items.filter(function(e){return"value"===e.type}))),l&&(p=p.concat(l.items)),c&&(p=p.concat(c.items)),u&&(p=p.concat(u.items)),d=d.reduce(function(e,t){return e.includes(t)||e.push(t),e},[]),p=p.reduce(function(e,t){var n=i(t.name);return e.find(function(e){return e.name.includes(n)&&e.agg===t.agg})||e.push(t),e},[]),function(t){var n=L(t,e);return p.map(function(e){var t=i(e.name),r=n?Array.isArray(n)?n.reduce(function(n,r){return n+r[e.agg+"("+t+")"]},0):n[e.agg+"("+t+")"]:0;return t+": "+r}).concat(d.map(function(e){return e+": "+(n?Array.isArray(n)?n[0][e]:n[e]:"")})).join("
      ")}}function M(e,t,n){var o=n.cols,a=n.metrics,s=n.color,l=n.size,c=n.scatterXAxis,u=n.tip,d=o,p=[].concat(r(a));return s&&(d=d.concat(s.items.map(function(e){return e.name}))),l&&(p=p.concat(l.items)),c&&(p=p.concat(c.items)),u&&(p=p.concat(u.items)),d=d.reduce(function(e,t){return e.includes(t)||e.push(t),e},[]),p=p.reduce(function(e,t){var n=i(t.name);return e.find(function(e){return e.name.includes(n)&&e.agg===t.agg})||e.push(t),e},[]),function(n){var r=n.seriesIndex,o=n.dataIndex,a="funnel"===e?t[o]:t[r][o];return d.map(function(e){return e+": "+(a?Array.isArray(a)?a[0][e]:a[e]:"")}).concat(p.map(function(e){var t=i(e.name),n=a?Array.isArray(a)?a.reduce(function(n,r){return n+r[e.agg+"("+t+")"]},0):a[e.agg+"("+t+")"]:0;return t+": "+n})).join("
      ")}}function O(e,t){return function(n){var r=L(n,e)||{};return"category"===t.type?Array.isArray(r)?r[0][t.name]:r[t.name]||"":Array.isArray(r)?r.reduce(function(e,n){return e+n[t.agg+"("+i(t.name)+")"]},0):r[t.agg+"("+i(t.name)+")"]||0}}function L(e,t){var n=e.seriesIndex,r=e.dataIndex,o=t[n],a=o.type,i=o.grouped,s=o.records;return"cartesian"===a?i?s[r]:s[r].value:"polar"===a?s[r]:s?s[0]:{}}function D(e,t){return Math.max(e/10,t/100)}function P(e){return e>=N.PIVOT_DEFAULT_SCATTER_SIZE_TIMES?e-N.PIVOT_DEFAULT_SCATTER_SIZE_TIMES+1:1/Math.pow(2,N.PIVOT_DEFAULT_SCATTER_SIZE_TIMES-e)}var I=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),R=this;Object.defineProperty(t,"__esModule",{value:!0});var N=n("./app/globalConstants.ts"),B=n("./app/containers/Widget/config/index.ts"),F=B.default.pivot,U=B.default.chart,z=n("./app/utils/util.ts");t.getAggregatorLocale=o,t.encodeMetricName=a,t.decodeMetricName=i,t.spanSize=s,t.naturalSort=l,t.getTextWidth=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:N.DEFAULT_FONT_WEIGHT,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:N.DEFAULT_FONT_SIZE,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:N.DEFAULT_FONT_FAMILY,o=R.canvas||(R.canvas=document.createElement("canvas")),a=o.getContext("2d");a.font=t+" "+n+" "+r;var i=a.measureText(e);return Math.ceil(i.width)},t.getPivotContentTextWidth=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:N.DEFAULT_FONT_WEIGHT,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:N.DEFAULT_FONT_SIZE,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:N.DEFAULT_FONT_FAMILY;return Math.min(t.getTextWidth(e,n,r,o),N.PIVOT_MAX_CONTENT_WIDTH)},t.getPivotCellWidth=c,t.getPivotCellHeight=u,t.getTableBodyWidth=function(e,t,n){var r=n.length&&N.PIVOT_TITLE_SIZE,o="row"===e?n.slice(0,n.length-1).reduce(function(e,t){return e+c(t)},0):n.reduce(function(e,t){return e+c(t)},0);return t-2*N.PIVOT_BORDER-o-N.PIVOT_YAXIS_SIZE-r},t.getTableBodyHeight=function(e,t,n){var r=n&&N.PIVOT_TITLE_SIZE,o="col"===e?Math.max(n-1,0):n;return t-2*N.PIVOT_BORDER-o*u()-N.PIVOT_XAXIS_SIZE-r},t.getChartElementSize=d,t.shouldTableBodyCollapsed=p,t.getChartUnitMetricWidth=f,t.getChartUnitMetricHeight=h,t.checkChartEnable=m,t.getAxisInterval=g,t.getChartPieces=b,t.metricAxisLabelFormatter=v,t.getPivot=_,t.getBar=y,t.getScatter=A,t.getTable=x,t.getStyleConfig=w,t.getChartViewMetrics=j,t.getAxisData=E,t.axisDataCutting=S,t.getXaxisLabel=k,t.getTooltipPosition=C,t.getPivotTooltipLabel=T,t.getChartTooltipLabel=M,t.getChartLabel=O,t.getTriggeringRecord=L,t.getSizeRate=D,t.getSizeValue=P},"./app/containers/Widget/config/chart/bar.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/globalConstants.ts"),o={id:3,name:"bar",title:"柱状图",icon:"icon-chart-bar",coordinate:"cartesian",requireDimetions:[0,1],requireMetrics:[1,9999],dimetionAxis:"col",data:{color:{title:"颜色",type:"category"},tip:{title:"提示信息",type:"value"}},style:{spec:{},label:{showLabel:!1,labelPosition:r.CHART_LABEL_POSITIONS[0].value,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR},xAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR},yAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR,showTitleAndUnit:!0,titleFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,titleFontSize:"12",titleColor:r.PIVOT_DEFAULT_FONT_COLOR},splitLine:{showHorizontalLine:!0,horizontalLineStyle:"dashed",horizontalLineSize:"1",horizontalLineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showVerticalLine:!1,verticalLineStyle:"dashed",verticalLineSize:"1",verticalLineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR},legend:{showLegend:!0,legendPosition:"right",selectAll:!0,fontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:r.PIVOT_DEFAULT_FONT_COLOR}}};t.default=o},"./app/containers/Widget/config/chart/funnel.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/globalConstants.ts"),o={id:6,name:"funnel",title:"漏斗图",icon:"icon-iconloudoutu",coordinate:"cartesian",requireDimetions:[0,9999],requireMetrics:1,dimetionAxis:"col",data:{color:{title:"颜色",type:"category"}},style:{label:{showLabel:!1,funnelLabelPosition:r.CHART_FUNNEL_LABEL_POSITIONS[0].value,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR},legend:{showLegend:!0,legendPosition:"right",selectAll:!0,fontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:r.PIVOT_DEFAULT_FONT_COLOR},spec:{sortMode:r.CHART_SORT_MODES[0].value,alignmentMode:r.CHART_ALIGNMENT_MODES[0].value,gapNumber:0}}};t.default=o},"./app/containers/Widget/config/chart/index.tsx":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/containers/Widget/config/chart/table.ts"),o=n("./app/containers/Widget/config/chart/line.ts"),a=n("./app/containers/Widget/config/chart/bar.ts"),i=n("./app/containers/Widget/config/chart/scatter.ts"),s=n("./app/containers/Widget/config/chart/pie.ts"),l=n("./app/containers/Widget/config/chart/funnel.ts"),c=[r.default,o.default,a.default,i.default,s.default,l.default];t.default=c},"./app/containers/Widget/config/chart/line.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/globalConstants.ts"),o={id:2,name:"line",title:"折线图",icon:"icon-chart-line",coordinate:"cartesian",requireDimetions:1,requireMetrics:[1,9999],dimetionAxis:"col",data:{color:{title:"颜色",type:"category"},tip:{title:"提示信息",type:"value"}},style:{spec:{smooth:!1,step:!1},label:{showLabel:!1,labelPosition:r.CHART_LABEL_POSITIONS[0].value,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR},xAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR},yAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR,showTitleAndUnit:!0,titleFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,titleFontSize:"12",titleColor:r.PIVOT_DEFAULT_FONT_COLOR},splitLine:{showHorizontalLine:!0,horizontalLineStyle:"dashed",horizontalLineSize:"1",horizontalLineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showVerticalLine:!1,verticalLineStyle:"dashed",verticalLineSize:"1",verticalLineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR},legend:{showLegend:!0,legendPosition:"right",selectAll:!0,fontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:r.PIVOT_DEFAULT_FONT_COLOR}}};t.default=o},"./app/containers/Widget/config/chart/pie.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/globalConstants.ts"),o={id:5,name:"pie",title:"饼图",icon:"icon-chartpie",coordinate:"cartesian",requireDimetions:[0,9999],requireMetrics:1,dimetionAxis:"col",data:{color:{title:"颜色",type:"category"}},style:{label:{showLabel:!1,pieLabelPosition:r.CHART_PIE_LABEL_POSITIONS[0].value,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR},legend:{showLegend:!0,legendPosition:"right",selectAll:!0,fontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:r.PIVOT_DEFAULT_FONT_COLOR},spec:{roseType:!1,circle:!1}}};t.default=o},"./app/containers/Widget/config/chart/scatter.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/globalConstants.ts"),o={id:4,name:"scatter",title:"散点图",icon:"icon-scatter-chart",coordinate:"cartesian",requireDimetions:[0,9999],requireMetrics:2,dimetionAxis:"col",data:{size:{title:"尺寸",type:"value"},color:{title:"颜色",type:"category"},tip:{title:"提示信息",type:"value"}},style:{spec:{},label:{showLabel:!1,labelPosition:r.CHART_LABEL_POSITIONS[0].value,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR},xAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR,showTitleAndUnit:!0,titleFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,titleFontSize:"12",titleColor:r.PIVOT_DEFAULT_FONT_COLOR},yAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR,showTitleAndUnit:!0,titleFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,titleFontSize:"12",titleColor:r.PIVOT_DEFAULT_FONT_COLOR},splitLine:{showHorizontalLine:!0,horizontalLineStyle:"dashed",horizontalLineSize:"1",horizontalLineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showVerticalLine:!1,verticalLineStyle:"dashed",verticalLineSize:"1",verticalLineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR},legend:{showLegend:!0,legendPosition:"right",selectAll:!0,fontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:r.PIVOT_DEFAULT_FONT_COLOR}}};t.default=o},"./app/containers/Widget/config/chart/table.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/globalConstants.ts"),o={id:1,name:"table",title:"表格",icon:"icon-table",coordinate:"other",requireDimetions:[0,9999],requireMetrics:[0,9999],data:{},style:{table:{fontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:r.PIVOT_DEFAULT_FONT_COLOR,lineStyle:"solid",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,headerBackgroundColor:r.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR}}};t.default=o},"./app/containers/Widget/config/index.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/containers/Widget/config/pivot/index.ts"),o=n("./app/containers/Widget/config/chart/index.tsx");t.default={pivot:r.default,chart:o.default}},"./app/containers/Widget/config/pivot/bar.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/globalConstants.ts"),o={id:3,name:"bar",title:"柱状图",icon:"icon-chart-bar",coordinate:"cartesian",requireDimetions:[0,9999],requireMetrics:[1,9999],dimetionAxis:"col",data:{color:{title:"颜色",type:"category"},label:{title:"标签",type:"all"},tip:{title:"提示信息",type:"value"}},style:{xAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR},yAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR,showTitleAndUnit:!0,titleFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,titleFontSize:"12",titleColor:r.PIVOT_DEFAULT_FONT_COLOR},splitLine:{showHorizontalLine:!0,horizontalLineStyle:"dashed",horizontalLineSize:"1",horizontalLineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showVerticalLine:!1,verticalLineStyle:"dashed",verticalLineSize:"1",verticalLineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR},pivot:{fontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:r.PIVOT_DEFAULT_FONT_COLOR,lineStyle:"solid",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,headerBackgroundColor:r.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR}}};t.default=o},"./app/containers/Widget/config/pivot/index.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/containers/Widget/config/pivot/pivot.ts"),o=n("./app/containers/Widget/config/pivot/line.ts"),a=n("./app/containers/Widget/config/pivot/bar.ts"),i=n("./app/containers/Widget/config/pivot/pie.ts"),s=n("./app/containers/Widget/config/pivot/scatter.ts"),l=[r.default,o.default,a.default,s.default,i.default];t.default=l},"./app/containers/Widget/config/pivot/line.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/globalConstants.ts"),o={id:2,name:"line",title:"折线图",icon:"icon-chart-line",coordinate:"cartesian",requireDimetions:[1,9999],requireMetrics:[1,9999],dimetionAxis:"col",data:{color:{title:"颜色",type:"category"},label:{title:"标签",type:"all"},tip:{title:"提示信息",type:"value"}},style:{spec:{smooth:!1,step:!1},xAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR},yAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR,showTitleAndUnit:!0,titleFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,titleFontSize:"12",titleColor:r.PIVOT_DEFAULT_FONT_COLOR},splitLine:{showHorizontalLine:!0,horizontalLineStyle:"dashed",horizontalLineSize:"1",horizontalLineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showVerticalLine:!1,verticalLineStyle:"dashed",verticalLineSize:"1",verticalLineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR},pivot:{fontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:r.PIVOT_DEFAULT_FONT_COLOR,lineStyle:"solid",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,headerBackgroundColor:r.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR}}};t.default=o},"./app/containers/Widget/config/pivot/pie.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/globalConstants.ts"),o={id:5,name:"pie",title:"饼图",icon:"icon-chartpie",coordinate:"polar",requireDimetions:[0,9999],requireMetrics:[1,9999],data:{color:{title:"颜色",type:"category"},label:{title:"标签",type:"all"},tip:{title:"提示信息",type:"value"}},style:{spec:{circle:!1},xAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR},splitLine:{showHorizontalLine:!0,horizontalLineStyle:"dashed",horizontalLineSize:"1",horizontalLineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showVerticalLine:!1,verticalLineStyle:"dashed",verticalLineSize:"1",verticalLineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR},pivot:{fontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:r.PIVOT_DEFAULT_FONT_COLOR,lineStyle:"solid",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,headerBackgroundColor:r.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR}}};t.default=o},"./app/containers/Widget/config/pivot/pivot.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/globalConstants.ts"),o={id:1,name:"pivot",title:"透视表",icon:"icon-table",coordinate:"cartesian",requireDimetions:[0,9999],requireMetrics:[0,9999],data:{color:{title:"颜色",type:"category"}},style:{pivot:{fontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:r.PIVOT_DEFAULT_FONT_COLOR,lineStyle:"solid",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,headerBackgroundColor:r.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR}}};t.default=o},"./app/containers/Widget/config/pivot/scatter.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/globalConstants.ts"),o={id:4,name:"scatter",title:"散点图",icon:"icon-scatter-chart",coordinate:"cartesian",requireDimetions:[0,9999],requireMetrics:[1,9999],data:{xAxis:{title:"x数据轴",type:"value"},color:{title:"颜色",type:"category"},size:{title:"尺寸",type:"value"},label:{title:"标签",type:"all"},tip:{title:"提示信息",type:"value"}},style:{xAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR},yAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:r.PIVOT_DEFAULT_FONT_COLOR,showTitleAndUnit:!0,titleFontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,titleFontSize:"12",titleColor:r.PIVOT_DEFAULT_FONT_COLOR},splitLine:{showHorizontalLine:!0,horizontalLineStyle:"dashed",horizontalLineSize:"1",horizontalLineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,showVerticalLine:!1,verticalLineStyle:"dashed",verticalLineSize:"1",verticalLineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR},pivot:{fontFamily:r.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:r.PIVOT_DEFAULT_FONT_COLOR,lineStyle:"solid",lineColor:r.PIVOT_DEFAULT_AXIS_LINE_COLOR,headerBackgroundColor:r.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR}}};t.default=o},"./app/containers/Widget/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LOAD_WIDGETS="davinci/Widget/LOAD_WIDGETS",t.LOAD_WIDGETS_SUCCESS="davinci/Widget/LOAD_WIDGETS_SUCCESS",t.LOAD_WIDGETS_FAILURE="davinci/Widget/LOAD_WIDGETS_FAILURE",t.ADD_WIDGET="davinci/Widget/ADD_WIDGET",t.ADD_WIDGET_SUCCESS="davinci/Widget/ADD_WIDGET_SUCCESS",t.ADD_WIDGET_FAILURE="davinci/Widget/ADD_WIDGET_FAILURE",t.LOAD_WIDGET_DETAIL="davinci/Widget/LOAD_WIDGET_DETAIL",t.LOAD_WIDGET_DETAIL_SUCCESS="davinci/Widget/LOAD_WIDGET_DETAIL_SUCCESS",t.LOAD_WIDGET_DETAIL_FAILURE="davinci/Widget/LOAD_WIDGET_DETAIL_FAILURE",t.EDIT_WIDGET="davinci/Widget/EDIT_WIDGET",t.EDIT_WIDGET_SUCCESS="davinci/Widget/EDIT_WIDGET_SUCCESS",t.EDIT_WIDGET_FAILURE="davinci/Widget/EDIT_WIDGET_FAILURE",t.DELETE_WIDGET="davinci/Widget/DELETE_WIDGET",t.DELETE_WIDGET_SUCCESS="davinci/Widget/DELETE_WIDGET_SUCCESS",t.DELETE_WIDGET_FAILURE="davinci/Widget/DELETE_WIDGET_FAILURE",t.CLEAR_CURRENT_WIDGET="davinci/Widget/CLEAR_CURRENT_WIDGET"},"./app/containers/Widget/index.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return{onLoadWidgets:function(t){return e(D.loadWidgets(t))},onLoadBizlogics:function(t,n){return e(P.loadBizlogics(t,n))},onDeleteWidget:function(t){return function(){return e(D.deleteWidget(t))}},onAddWidget:function(t,n){return e(D.addWidget(t,n))},onCheckUniqueName:function(t,n,r,o){return e(B.checkNameUniqueAction(t,n,r,o))}}}var s=function(){function e(e,t){for(var n=0;n0?[l.createElement("span",{key:t,className:H.highlight},n[0]),e]:e}))}):null}).filter(function(e){return!!e})})},n.handleTableChange=function(e,t,r){n.setState({tableSortedInfo:r})},n.state={workbenchType:"",currentWidget:null,workbenchVisible:!1,copyWidgetVisible:!1,copyQueryInfo:null,filteredWidgets:null,filteredWidgetsName:null,filteredWidgetsType:void 0,filteredWidgetsTypeId:"",pageSize:24,currentPage:1,screenWidth:0,tableWidget:[],nameFilterValue:"",nameFilterDropdownVisible:!1,tableSortedInfo:{}},n}return a(t,e),s(t,[{key:"componentWillMount",value:function(){var e=this.props,t=e.onLoadWidgets,n=e.onLoadBizlogics,r=e.params;t(r.pid),n(r.pid),this.setState({screenWidth:document.documentElement.clientWidth})}},{key:"componentWillReceiveProps",value:function(e){var t=this;window.onresize=function(){return t.setState({screenWidth:document.documentElement.clientWidth})},e.widgets&&this.setState({tableWidget:e.widgets.map(function(e){return e.key=e.id,e})})}},{key:"render",value:function(){var e=this,t=this.props,n=t.params,r=(t.widgets,t.onDeleteWidget),o=t.onCheckUniqueName,a=t.loading,i=t.currentProject,s=this.state,c=s.workbenchType,u=s.currentWidget,d=s.copyWidgetVisible,p=(s.filteredWidgets,s.currentPage,s.pageSize,s.filteredWidgetsTypeId,s.filteredWidgetsType,s.screenWidth),f=s.tableWidget,h=s.nameFilterValue,m=s.nameFilterDropdownVisible,g=s.tableSortedInfo,b=U.default(i,"widget",!1)(k),v=U.default(i,"widget",!0)(k),_=l.createElement(C,{title:"删除"},l.createElement(v,{icon:"delete",shape:"circle"})),T=[{title:"名称",dataIndex:"name",key:"name",filterDropdown:l.createElement(w.default,{placeholder:"name",value:h,onChange:this.onSearchInputChange,onSearch:this.onSearch}),filterDropdownVisible:m,onFilterDropdownVisibleChange:function(t){return e.setState({nameFilterDropdownVisible:t})},sorter:function(e,t){return e.name>t.name?-1:1},sortOrder:"name"===g.columnKey&&g.order},{title:"描述",dataIndex:"description",key:"description"},{title:"操作",key:"action",width:135,className:""+(z.initializePermission(i,"widgetPermission")?H.textAlignCenter:H.hide),render:function(t,n){return l.createElement("span",{className:"ant-table-action-column"},l.createElement(C,{title:"修改"},l.createElement(b,{icon:"edit",shape:"circle",type:"ghost",onClick:e.toWorkbench(n.id)})),l.createElement(C,{title:"复制"},l.createElement(v,{icon:"copy",shape:"circle",onClick:e.onCopy("copy",n)})),l.createElement(O,{title:"确定删除?",placement:"bottom",onConfirm:r(n.id)},_))}}],D={simple:p<768||768===p,defaultPageSize:20,showSizeChanger:!0};return l.createElement(A.default,null,V,l.createElement(A.default.Title,null,l.createElement(j,null,l.createElement(E,{xl:18,lg:18,md:16,sm:12,xs:24},l.createElement(L,{className:H.breadcrumb},Y)))),l.createElement(A.default.Body,null,l.createElement(x.default,null,l.createElement(x.default.Header,null,W,l.createElement(x.default.Tools,null,l.createElement(C,{placement:"bottom",title:"新增"},l.createElement(v,{size:"large",type:"primary",icon:"plus",onClick:this.toWorkbench("add")})))),l.createElement(x.default.Body,null,l.createElement(j,null,l.createElement(E,{span:24},l.createElement(S,{dataSource:f,columns:T,pagination:D,loading:a,onChange:this.handleTableChange,bordered:!0})))))),l.createElement(M,{title:"复制 Widget",okText:"保存",wrapClassName:"ant-modal-small",visible:d,onCancel:this.hideForm,afterClose:this.resetModal,footer:[l.createElement(k,{key:"cancel",size:"large",type:"ghost",onClick:this.hideForm},"取消"),l.createElement(k,{key:"submit",size:"large",type:"primary",onClick:this.onModalOk},"确认")]},l.createElement(y.default,{type:c,projectId:n.pid,widget:u,onCheckUniqueName:o,ref:function(t){e.copyWidgetForm=t}})))}}]),t}(l.Component);t.WidgetList=G;var Q=d.createStructuredSelector({widgets:I.makeSelectWidgets(),bizlogics:R.makeSelectBizlogics(),loginUser:N.makeSelectLoginUser(),loading:I.makeSelectLoading(),currentProject:F.makeSelectCurrentProject()});t.mapDispatchToProps=i;var q=u.connect(Q,i),K=h.default({key:"widget",reducer:g.default}),X=m.default({key:"widget",saga:b.default}),J=h.default({key:"bizlogic",reducer:v.default}),Z=m.default({key:"bizlogic",saga:_.default});t.default=f.compose(K,J,Z,X,q)(G)},"./app/containers/Widget/reducer.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l,t=arguments[1],n=t.type,r=t.payload,s=e.get("widgets");switch(n){case o.LOAD_WIDGETS:return e.set("loading",!0).set("widgets",null);case o.LOAD_WIDGETS_SUCCESS:return e.set("loading",!1).set("widgets",r.widgets);case o.LOAD_WIDGETS_FAILURE:return e.set("loading",!1);case o.ADD_WIDGET:return e.set("loading",!0);case o.ADD_WIDGET_SUCCESS:return s?(s.push(r.result),e.set("loading",!1).set("widgets",s.slice())):e.set("loading",!1).set("widgets",[r.result]);case o.ADD_WIDGET_FAILURE:return e.set("loading",!1);case o.DELETE_WIDGET:return e.set("loading",!0);case o.DELETE_WIDGET_SUCCESS:return e.set("widgets",s.filter(function(e){return e.id!==r.id})).set("loading",!1);case o.DELETE_WIDGET_FAILURE:return e.set("loading",!1);case o.LOAD_WIDGET_DETAIL:return e.set("loading",!0).set("currentWidget",null);case o.LOAD_WIDGET_DETAIL_SUCCESS:return e.set("loading",!1).set("currentWidget",r.detail);case o.LOAD_WIDGET_DETAIL_FAILURE:return e.set("loading",!1);case o.EDIT_WIDGET:return e.set("loading",!0);case o.EDIT_WIDGET_SUCCESS:case o.EDIT_WIDGET_FAILURE:return e.set("loading",!1);case i.LOAD_DATA:return e.set("dataLoading",!0);case i.LOAD_DATA_SUCCESS:case i.LOAD_DATA_FAILURE:return e.set("dataLoading",!1);case i.CLEAR_BIZDATAS:return e.set("bizdatas",!1);case a.LOAD_DASHBOARD_DETAIL_SUCCESS:return e.set("widgets",r.widgets);case i.LOAD_DISTINCT_VALUE:return e.set("columnValueLoading",!0).set("distinctColumnValues",null);case i.LOAD_DISTINCT_VALUE_SUCCESS:return e.set("columnValueLoading",!1).set("distinctColumnValues",r.data[r.fieldName].slice(0,100));case i.LOAD_DISTINCT_VALUE_FAILURE:return e.set("columnValueLoading",!1);case o.CLEAR_CURRENT_WIDGET:return e.set("currentWidget",null);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Widget/constants.ts"),a=n("./app/containers/Dashboard/constants.ts"),i=n("./app/containers/Bizlogic/constants.ts"),s=n("./node_modules/immutable/dist/immutable.js"),l=s.fromJS({widgets:null,currentWidget:null,loading:!1,dataLoading:!1,columnValueLoading:!1,distinctColumnValues:null});t.default=r},"./app/containers/Widget/render/chart/bar.ts":function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t1)&&(O={legend:s.getLegendOption(f,M)});var L={showLine:b,lineColor:v,lineSize:_,lineStyle:y},D={showLine:A,lineColor:x,lineSize:w,lineStyle:j};return Object.assign({xAxis:s.getDimetionAxisOption(h,L,S),yAxis:s.getMetricAxisOption(m,D,o.map(function(e){return i.decodeMetricName(e.name)}).join(" / ")),series:C,tooltip:{formatter:i.getChartTooltipLabel("bar",T,{cols:n,metrics:o,color:u,tip:d})}},O,{grid:s.getGridPositions(f,M)})}var a=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();Object.defineProperty(t,"__esModule",{value:!0});var i=n("./app/containers/Widget/components/util.ts"),s=n("./app/containers/Widget/render/chart/util.ts"),l=n("./app/assets/json/echartsThemes/default.project.json"),c=l.theme.color;t.default=o},"./app/containers/Widget/render/chart/funnel.ts":function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t1)&&(P={legend:s.getLegendOption(b,D)});var I={showLine:v,lineColor:_,lineSize:y,lineStyle:A},R={showLine:x,lineColor:w,lineSize:j,lineStyle:E};return Object.assign({xAxis:s.getDimetionAxisOption(f,I,T),yAxis:s.getMetricAxisOption(h,R,o.map(function(e){return i.decodeMetricName(e.name)}).join(" / ")),series:O,tooltip:{formatter:i.getChartTooltipLabel("line",L,{cols:n,metrics:o,color:u,tip:d})}},P,{grid:s.getGridPositions(b,D)})}var a=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();Object.defineProperty(t,"__esModule",{value:!0});var i=n("./app/containers/Widget/components/util.ts"),s=n("./app/containers/Widget/render/chart/util.ts"),l=n("./app/assets/json/echartsThemes/default.project.json"),c=l.theme.color;t.default=o},"./app/containers/Widget/render/chart/pie.ts":function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t{c} ({d}%)"},legend:s.getLegendOption(f,j),series:w}}var a=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();Object.defineProperty(t,"__esModule",{value:!0});var i=n("./app/containers/Widget/components/util.ts"),s=n("./app/containers/Widget/render/chart/util.ts");t.default=o},"./app/containers/Widget/render/chart/scatter.ts":function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t3&&void 0!==arguments[3]?arguments[3]:"y",o=e.showLine,a=e.lineStyle,i=e.lineSize,s=e.lineColor,l=e.showLabel,c=e.labelFontFamily,u=e.labelFontSize,d=e.labelColor,p=e.showTitleAndUnit,f=e.titleFontFamily,m=e.titleFontSize,g=e.titleColor,b=t.showLine,v=t.lineStyle,_=t.lineSize,y=t.lineColor;return{type:"value",axisLabel:{show:l,color:d,fontFamily:c,fontSize:u,formatter:h.metricAxisLabelFormatter},axisLine:{show:o,lineStyle:{color:s,width:i,type:a}},axisTick:{show:o,lineStyle:{color:s}},name:p?n:"",nameLocation:"y"===r?"middle":"center",nameGap:"y"===r?45:30,nameTextStyle:{color:g,fontFamily:f,fontSize:m},splitLine:{show:b,lineStyle:{color:y,width:_,type:v}}}}function s(e,t,n,r){var o=t.showLabel,a=t.labelPosition,i=t.labelFontFamily,s=t.labelFontSize,l=t.labelColor,c=t.pieLabelPosition,u=t.funnelLabelPosition,d=void 0;switch(e){case"pie":d=c;break;case"funnel":d=u;break;default:d=a}return Object.assign({normal:Object.assign({show:("pie"!==e||"center"!==c)&&o,position:d,color:l,fontFamily:i,fontSize:s},r)},n&&{emphasis:Object.assign({show:o,position:d,color:l,fontFamily:i,fontSize:s},r)})}function l(e,t){var n=e.showLegend,r=e.legendPosition,a=e.selectAll,i=e.fontFamily,s=e.fontSize,l=e.color,c=void 0,u=void 0;switch(r){case"top":c={orient:"horizontal"},u={top:8,left:8,right:8,height:32};break;case"bottom":c={orient:"horizontal"},u={bottom:8,left:8,right:8,height:32};break;case"left":c={orient:"vertical"},u={left:8,top:16,bottom:24,width:96};break;default:c={orient:"vertical"},u={right:8,top:16,bottom:24,width:96}}var d={selected:t.reduce(function(e,t){return Object.assign({},e,o({},t,a))},{})};return Object.assign({show:n,data:t,type:"scroll",textStyle:{fontFamily:i,fontSize:s,color:l}},c,u,d)}function c(e,t){var n=e.showLegend,o=e.legendPosition,a=e.fontSize;return m.CHART_LEGEND_POSITIONS.reduce(function(e,i){var s=i.value;return e[s]=u(s),n&&(e[s]+=o===s?["top","bottom"].includes(s)?32:32+Math.max.apply(Math,r(t.map(function(e){return h.getTextWidth(e,"",a+"px")}))):0),e},{})}function u(e){switch(e){case"top":return 24;case"left":return 64;case"right":return 24;case"bottom":return 50}}function d(e,t,n,r,a){var i={};return e.forEach(function(e){var r=t.map(function(t){return e[t]}).join(" "),o=e[n];i[r]||(i[r]={}),i[r][o]||(i[r][o]=[]),i[r][o].push(e)}),Object.keys(i).map(function(e){var t=i[e];i[e]=a.map(function(e){return t[e]?t[e][0]:r.reduce(function(e,t){return Object.assign({},e,o({},t.agg+"("+h.decodeMetricName(t.name)+")",0))},{})})}),i}function p(e,t){return t?Object.keys(e.reduce(function(e,n){return e[n[t]]||(e[n[t]]=!0),e},{})):[]}function f(e,t){return e?Math.ceil(t/e):t}Object.defineProperty(t,"__esModule",{value:!0});var h=n("./app/containers/Widget/components/util.ts"),m=n("./app/globalConstants.ts");t.getDimetionAxisOption=a,t.getMetricAxisOption=i,t.getLabelOption=s,t.getLegendOption=l,t.getGridPositions=c,t.makeGrouped=d,t.distinctXaxis=p,t.getSymbolSize=f},"./app/containers/Widget/render/pivot/bar.ts":function(e,t,n){"use strict";function r(e){return{chartOption:{type:"bar",barWidth:.8*e},stackOption:!0}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},"./app/containers/Widget/render/pivot/index.ts":function(e,t,n){"use strict";function r(e,t){switch(e){case"line":return o.default();case"bar":return a.default(t.elementSize);case"scatter":return i.default(t.sizeRate);case"pie":return s.default()}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Widget/render/pivot/line.ts"),a=n("./app/containers/Widget/render/pivot/bar.ts"),i=n("./app/containers/Widget/render/pivot/scatter.ts"),s=n("./app/containers/Widget/render/pivot/pie.ts");t.default=r},"./app/containers/Widget/render/pivot/line.ts":function(e,t,n){"use strict";function r(){return{chartOption:{type:"line"}}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},"./app/containers/Widget/render/pivot/pie.ts":function(e,t,n){"use strict";function r(){return{chartOption:{type:"pie"},calcPieCenterAndRadius:function(e,t,n,r,o,a,i,s,l,c,u,d,p,f,h,m){var g=void 0,b=void 0;if("col"===e){var v=100/l/u,_=100/a;if(g=[_*(m+s+1)-_/2+"%",v*(h+u*p+1)-v/2+"%"],t>n){b=["0%",100/u/l*Math.min(r/o[0],1)*.75+"%"]}else{b=["0%",100/a*Math.min(o[0]/r,1)*.75+"%"]}}else{var y=100/i,A=100/c/u;if(g=[A*(h+u*f+1)-A/2+"%",y*(i-m-p*d)-y/2+"%"],t>n){b=["0%",100/i*Math.min(o[1]/r,1)*.75+"%"]}else{b=["0%",100/u/c*Math.min(r/o[1],1)*.75+"%"]}}return{center:g,radius:b}}}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},"./app/containers/Widget/render/pivot/scatter.ts":function(e,t,n){"use strict";function r(e){return{chartOption:{type:"scatter"},getSymbolSize:function(t,n){return e?Math.ceil(n/e[t]):n}}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},"./app/containers/Widget/sagas.ts":function(e,t,n){"use strict";function r(e){var t,n;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=e.payload.projectId,r.prev=1,r.next=4,g.call(_.default,y.default.widget+"?projectId="+t);case 4:return n=r.sent,r.next=7,g.put(v.widgetsLoaded(n.payload));case 7:r.next=14;break;case 9:return r.prev=9,r.t0=r.catch(1),r.next=13,g.put(v.widgetsLoadedFail());case 13:A.errorHandler(r.t0);case 14:case"end":return r.stop()}},c,this,[[1,9]])}function o(e){var t,n=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,g.call(_.default,{method:"post",url:y.default.widget,data:n.widget});case 3:return t=e.sent,e.next=6,g.put(v.widgetAdded(t.payload));case 6:n.resolve(),e.next=14;break;case 9:return e.prev=9,e.t0=e.catch(0),e.next=13,g.put(v.addWidgetFail());case 13:A.errorHandler(e.t0);case 14:case"end":return e.stop()}},u,this,[[0,9]])}function a(e){var t=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,g.call(_.default,{method:"delete",url:y.default.widget+"/"+t.id});case 3:return e.next=5,g.put(v.widgetDeleted(t.id));case 5:e.next=12;break;case 7:return e.prev=7,e.t0=e.catch(0),e.next=11,g.put(v.deleteWidgetFail());case 11:A.errorHandler(e.t0);case 12:case"end":return e.stop()}},d,this,[[0,7]])}function i(e){var t,n;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=e.payload,r.prev=1,r.next=4,g.call(_.default,y.default.widget+"/"+t.id);case 4:return n=r.sent,r.next=7,g.put(v.widgetDetailLoaded(n.payload));case 7:r.next=14;break;case 9:return r.prev=9,r.t0=r.catch(1),r.next=13,g.put(v.loadWidgetDetailFail(r.t0));case 13:A.errorHandler(r.t0);case 14:case"end":return r.stop()}},p,this,[[1,9]])}function s(e){var t=e.payload;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,g.call(_.default,{method:"put",url:y.default.widget+"/"+t.widget.id,data:t.widget});case 3:return e.next=5,g.put(v.widgetEdited());case 5:t.resolve(),e.next=13;break;case 8:return e.prev=8,e.t0=e.catch(0),e.next=12,g.put(v.editWidgetFail());case 12:A.errorHandler(e.t0);case 13:case"end":return e.stop()}},f,this,[[0,8]])}function l(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,[m.takeLatest(b.LOAD_WIDGETS,r),m.takeEvery(b.ADD_WIDGET,o),m.takeEvery(b.DELETE_WIDGET,a),m.takeLatest(b.LOAD_WIDGET_DETAIL,i),m.takeEvery(b.EDIT_WIDGET,s)];case 2:case"end":return e.stop()}},h,this)}var c=regeneratorRuntime.mark(r),u=regeneratorRuntime.mark(o),d=regeneratorRuntime.mark(a),p=regeneratorRuntime.mark(i),f=regeneratorRuntime.mark(s),h=regeneratorRuntime.mark(l);Object.defineProperty(t,"__esModule",{value:!0});var m=n("./node_modules/redux-saga/es/index.js"),g=n("./node_modules/redux-saga/es/effects.js"),b=n("./app/containers/Widget/constants.ts"),v=n("./app/containers/Widget/actions.ts"),_=n("./app/utils/request.ts"),y=n("./app/utils/api.js"),A=n("./app/utils/util.ts");t.getWidgets=r,t.addWidget=o,t.deleteWidget=a,t.getWidgetDetail=i,t.editWidget=s,t.default=l},"./app/containers/Widget/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/reselect/es/index.js"),o=function(e){return e.get("widget")};t.selectWidget=o;var a=function(){return r.createSelector(o,function(e){return e.get("widgets")})};t.makeSelectWidgets=a;var i=function(){return r.createSelector(o,function(e){return e.get("currentWidget")})};t.makeSelectCurrentWidget=i;var s=function(){return r.createSelector(o,function(e){return e.get("loading")})};t.makeSelectLoading=s;var l=function(){return r.createSelector(o,function(e){return e.get("dataLoading")})};t.makeSelectDataLoading=l;var c=function(){return r.createSelector(o,function(e){return e.get("distinctColumnValues")})};t.makeSelectDistinctColumnValues=c;var u=function(){return r.createSelector(o,function(e){return e.get("columnValueLoading")})};t.makeSelectColumnValueLoading=u},"./app/globalConfig.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.envName={production:"production",dev:"dev"},t.env=t.envName.production,t.default={dev:{host:"/api/v3",shareHost:"/share.html"},production:{host:"/api/v3",shareHost:"/share.html"}}},"./app/globalConstants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/assets/json/echartsThemes/default.project.json");t.DEFAULT_ECHARTS_THEME=r.theme,t.DEFAULT_PRIMARY_COLOR="#1B98E0",t.DEFAULT_SECONDARY_COLOR="#223151",t.GRID_BREAKPOINTS={lg:1200,md:996,sm:768,xs:480,xxs:0},t.GRID_COLS={lg:12,md:12,sm:12,xs:2,xxs:2},t.GRID_ITEM_MARGIN=16,t.GRID_ROW_HEIGHT=30,t.TABLE_HEADER_HEIGHT=50,t.TABLE_PAGINATION_HEIGHT=61,t.COLUMN_WIDTH=150,t.DASHBOARD_ITEM_FILTER_HEIGHT=40,t.DEFAULT_TABLE_PAGE=1,t.DEFAULT_TABLE_PAGE_SIZE=20,t.PIVOT_CELL_PADDING=4,t.PIVOT_CELL_BORDER=1,t.PIVOT_LINE_HEIGHT=18,t.PIVOT_MAX_CONTENT_WIDTH=200,t.PIVOT_BORDER=1,t.PIVOT_CHART_ELEMENT_MIN_WIDTH=24,t.PIVOT_CHART_ELEMENT_MAX_WIDTH=72,t.PIVOT_CHART_METRIC_AXIS_MIN_SIZE=80,t.PIVOT_CHART_SPLIT_SIZE=40,t.PIVOT_CHART_POINT_LIMIT=100,t.PIVOT_XAXIS_SIZE=50,t.PIVOT_YAXIS_SIZE=64,t.PIVOT_TITLE_SIZE=27,t.PIVOT_XAXIS_ROTATE_LIMIT=30,t.PIVOT_XAXIS_TICK_SIZE=12,t.PIVOT_LEGEND_ITEM_PADDING=32,t.PIVOT_LEGEND_PADDING=16,t.PIVOT_DEFAULT_SCATTER_SIZE=10,t.PIVOT_DEFAULT_SCATTER_SIZE_TIMES=4,t.PIVOT_CANVAS_SIZE_LIMIT=3e3,t.PIVOT_CANVAS_AXIS_SIZE_LIMIT=8e3,t.PIVOT_CANVAS_POLAR_SIZE_LIMIT=8e3,t.PIVOT_DEFAULT_AXIS_LINE_COLOR="#D9D9D9",t.PIVOT_DEFAULT_FONT_COLOR="#666",t.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR="#f7f7f7",t.PIVOT_CHART_FONT_FAMILIES=[{name:"苹方",value:"PingFang SC"},{name:"微软雅黑",value:"Microsoft YaHei"},{name:"宋体",value:"SimSun"},{name:"黑体",value:"SimHei"},{name:"Helvetica Neue",value:'"Helvetica Neue"'},{name:"Helvetica",value:"Helvetica"},{name:"Arial",value:"Arial"},{name:"sans-serif",value:"sans-serif"}],t.PIVOT_CHART_LINE_STYLES=[{name:"实线",value:"solid"},{name:"虚线",value:"dashed"},{name:"点",value:"dotted"}],t.PIVOT_CHART_FONT_SIZES=[10,12,13,14,15,16,18,20,24,28,32,36,40,48,56,64],t.CHART_LABEL_POSITIONS=[{name:"上",value:"top"},{name:"左",value:"left"},{name:"右",value:"right"},{name:"下",value:"bottom"},{name:"内",value:"inside"},{name:"内左",value:"insideLeft"},{name:"内右",value:"insideRight"},{name:"内上",value:"insideTop"},{name:"内下",value:"insideBottom"},{name:"内左上",value:"insideTopLeft"},{name:"内左下",value:"insideBottomLeft"},{name:"内右上",value:"insideTopRight"},{name:"内右下",value:"insideBottomRight"}],t.CHART_PIE_LABEL_POSITIONS=[{name:"外侧",value:"outside"},{name:"内部",value:"inside"},{name:"中心",value:"center"}],t.CHART_FUNNEL_LABEL_POSITIONS=[{name:"左侧",value:"left"},{name:"右侧",value:"right"},{name:"内部",value:"inside"}],t.CHART_SORT_MODES=[{name:"降序",value:"descending"},{name:"升序",value:"ascending"},{name:"无",value:"none"}],t.CHART_ALIGNMENT_MODES=[{name:"居中",value:"center"},{name:"居左",value:"left"},{name:"居右",value:"right"}],t.CHART_LEGEND_POSITIONS=[{name:"右",value:"right"},{name:"上",value:"top"},{name:"下",value:"bottom"},{name:"左",value:"left"}],t.SQL_STRING_TYPES=["CHAR","VARCHAR","TINYTEXT","TEXT","MEDIUMTEXT","LONGTEXT","JSON","LINESTRING","MULTILINESTRING","TINYBLOB","MEDIUMBLOB","BLOB","LONGBLOB","BINARY","VARBINARY","ENUM","SET"],t.SQL_NUMBER_TYPES=["TINYINT","SMALLINT","MEDIUMINT","INT","INTEGER","BIGINT","FLOAT","DOUBLE","DOUBLE PRECISION","REAL","DECIMAL","BIT","SERIAL","BOOL","BOOLEAN","DEC","FIXED","NUMERIC"],t.SQL_DATE_TYPES=["DATE","DATETIME","TIMESTAMP","TIME","YEAR"],t.DEFAULT_SPLITER="@davinci@",t.KEY_COLUMN="davinciUniqueId",t.ECHARTS_RENDERER="echarts",t.DEFAULT_FONT_WEIGHT="normal",t.DEFAULT_FONT_SIZE="12px",t.DEFAULT_FONT_FAMILY='"Helvetica Neue For Number", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif',t.DEFAULT_DATE_FORMAT="YYYY-MM-DD",t.DEFAULT_DATETIME_FORMAT="YYYY-MM-DD HH:mm:ss"},"./app/i18n.js":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"appLocales",function(){return h}),n.d(t,"formatTranslationMessages",function(){return m}),n.d(t,"translationMessages",function(){return g});var o=n("./node_modules/react-intl/lib/index.es.js"),a=n("./node_modules/react-intl/locale-data/en.js"),i=n.n(a),s=n("./node_modules/react-intl/locale-data/de.js"),l=n.n(s),c=n("./app/containers/App/constants.ts"),u=(n.n(c),n("./app/translations/en.json")),d=n.n(u),p=n("./app/translations/de.json"),f=n.n(p);Object(o.addLocaleData)(i.a),Object(o.addLocaleData)(l.a);var h=["en","de"],m=function e(t,n){var o=t!==c.DEFAULT_LOCALE?e(c.DEFAULT_LOCALE,d.a):{};return Object.keys(n).reduce(function(e,a){var i=n[a]||t===c.DEFAULT_LOCALE?n[a]:o[a];return Object.assign(e,r({},a,i))},{})},g={en:m("en",d.a),de:m("de",f.a)}},"./app/reducers.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p,t=arguments[1];switch(t.type){case s.LOCATION_CHANGE:return e.merge({locationBeforeTransitions:t.payload});default:return e}}function o(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return i.combineReducers(Object.assign({route:r,language:l.default,report:c.default,bizlogic:u.default,widget:d.default},e))}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/immutable/dist/immutable.js"),i=n("./node_modules/redux-immutable/dist/index.js"),s=n("./node_modules/react-router-redux/lib/index.js"),l=n("./app/containers/LanguageProvider/reducer.ts"),c=n("./app/containers/Report/reducer.ts"),u=n("./app/containers/Bizlogic/reducer.ts"),d=n("./app/containers/Widget/reducer.ts"),p=a.fromJS({locationBeforeTransitions:null});t.default=o},"./app/routes.ts":function(e,t,n){"use strict";function r(e){return[{component:g.default,childRoutes:[{path:"/login",component:b.default},{path:"/register",name:"register",component:f.default},{path:"/joinOrganization",name:"joinOrganization",component:m.default}]},{path:"/activate",name:"activate",component:h.default},{component:v.default,childRoutes:[{path:"/projects",name:"projects",component:w.default},{path:"/project/:pid",name:"project",component:o.default,indexRoute:{onEnter:function(e,t){t("/project/"+e.params.pid+"/vizs")}},childRoutes:[{path:"/project/:pid/vizs",name:"vizs",components:u.default},{path:"/project/:pid/widgets",name:"widgets",component:l.default},{path:"/project/:pid/bizlogics",name:"bizlogics",component:i.default},{path:"/project/:pid/sources",name:"sources",component:a.default},{path:"/project/:pid/schedule",name:"schedule",component:_.default}]},{path:"/account",name:"account",indexRoute:{onEnter:function(e,t){t("/account/profile")}},component:x.default,childRoutes:[{path:"/account/profile",name:"profile",component:j.default},{path:"/account/profile/:uid",name:"userProfile",component:M.default},{path:"/account/resetPassword",name:"resetPassword",component:E.default},{path:"/account/organizations",name:"organizations",component:S.default},{path:"/account/organization/:organizationId",name:"organization",component:k.default},{path:"/account/teams",name:"teams",component:C.default},{path:"/account/team/:teamId",name:"team",component:T.default}]},{path:"/project/:pid/bizlogic",name:"bizlogic",component:s.default},{path:"/project/:pid/bizlogic/:bid",name:"bizlogic",component:s.default},{path:"/project/:pid/portal/:portalId/portalName/:portalName",name:"dashboard",component:d.default,childRoutes:[{path:"/project/:pid/portal/:portalId/portalName/:portalName/dashboard/:dashboardId",name:"grid",component:p.default}]},{path:"/project/:pid/display/:displayId",name:"display",component:y.default},{path:"/project/:pid/display/preview/:displayId",name:"displayPreview",component:A.default},{path:"/project/:pid/widget/:wid",name:"workbench",component:c.default}]},{path:"/noAuthorization",name:"noAuthorization",component:O.default},{path:"*",name:"notfound",getComponent:function(e,t){Promise.resolve().then(function(){return n("./app/containers/NotFoundPage/index.js")}).then(D(t)).catch(L)}}]}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Report/index.tsx"),a=n("./app/containers/Source/index.tsx"),i=n("./app/containers/Bizlogic/index.tsx"),s=n("./app/containers/Bizlogic/Bizlogic.tsx"),l=n("./app/containers/Widget/index.tsx"),c=n("./app/containers/Widget/components/Workbench/index.tsx"),u=n("./app/containers/Viz/index.tsx"),d=n("./app/containers/Dashboard/index.tsx"),p=n("./app/containers/Dashboard/Grid.tsx"),f=n("./app/containers/Register/index.tsx"),h=n("./app/containers/Register/Activate.tsx"),m=n("./app/containers/Register/JoinOrganization.tsx"),g=n("./app/containers/Background/index.tsx"),b=n("./app/containers/Login/index.tsx"),v=n("./app/containers/Main/index.tsx"),_=n("./app/containers/Schedule/index.tsx"),y=n("./app/containers/Display/Editor.tsx"),A=n("./app/containers/Display/Preview.tsx"),x=n("./app/containers/Account/index.tsx"),w=n("./app/containers/Projects/index.tsx"),j=n("./app/containers/Profile/index.tsx"),E=n("./app/containers/ResetPassword/index.tsx"),S=n("./app/containers/Organizations/index.tsx"),k=n("./app/containers/Organizations/Organization.tsx"),C=n("./app/containers/Teams/index.tsx"),T=n("./app/containers/Teams/Team.tsx"),M=n("./app/containers/Profile/UserProfile.tsx"),O=n("./app/containers/NoAuthorization/index.js"),L=function(e){console.error("Dynamic page loading failed",e)},D=function(e){return function(t){e(null,t.default)}};t.default=r},"./app/sagas.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=[]},"./app/store.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1],n=[u,i.routerMiddleware(t)],r=o.compose,s=o.createStore(l.default(),a.fromJS(e),r(o.applyMiddleware.apply(o,n)));return s.runSaga=u.run,c.default.map(s.runSaga),s.injectedReducers={},s.injectedSagas={},s}"function"==typeof Symbol&&Symbol.iterator;Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/redux/es/index.js"),a=n("./node_modules/immutable/dist/immutable.js"),i=n("./node_modules/react-router-redux/lib/index.js"),s=n("./node_modules/redux-saga/es/index.js"),l=n("./app/reducers.ts"),c=n("./app/sagas.ts"),u=s.default();t.default=r},"./app/translations/de.json":function(e,t){e.exports={}},"./app/translations/en.json":function(e,t){e.exports={}},"./app/utils/api.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/globalConfig.ts"),o=n.n(r),a=o.a[r.env].host;t.default={login:a+"/login",group:a+"/groups",user:a+"/users",changepwd:a+"/changepwd",source:a+"/sources",bizlogic:a+"/views",widget:a+"/widgets",display:a+"/displays",share:a+"/share",checkName:a+"/check",projectsCheckName:a+"/check/",uploads:a+"/uploads",schedule:a+"/cronjobs",signup:a+"/users",organizations:a+"/organizations",checkNameUnique:a+"/check",projects:a+"/projects",teams:a+"/teams",portal:a+"/dashboardPortals",star:a+"/star"}},"./app/utils/asyncAdapter.js":function(e,t,n){"use strict";function r(e){return e&&l.apiConfig[e]?l.apiConfig[e].env:s.env}function o(e,t){switch(r(t)){case"production":return e.payload||[];default:return e}}function a(e,t){switch(r(t)){case"production":return e.payload;default:return e}}function i(e,t){switch(r(t)){case"production":return{payload:[e]};default:return e}}Object.defineProperty(t,"__esModule",{value:!0}),t.readListAdapter=o,t.readObjectAdapter=a,t.writeAdapter=i;var s=n("./app/globalConfig.ts"),l=(n.n(s),n("./app/utils/api.js"))},"./app/utils/checkLogin.ts":function(e,t,n){"use strict";function r(){if(localStorage.getItem("TOKEN")){var e=localStorage.getItem("TOKEN_EXPIRE"),t=(new Date).getTime();return Number(e)>t||(localStorage.removeItem("TOKEN"),localStorage.removeItem("TOKEN_EXPIRE"),!1)}return!1}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},"./app/utils/checkStore.ts":function(e,t,n){"use strict";function r(e){s(o(e,{dispatch:a,subscribe:a,getState:a,replaceReducer:a,runSaga:a,injectedReducers:i,injectedSagas:i}),"(app/utils...) injectors: Expected a valid redux store")}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/lodash/conformsTo.js"),a=n("./node_modules/lodash/isFunction.js"),i=n("./node_modules/lodash/isObject.js"),s=n("./node_modules/invariant/browser.js");t.default=r},"./app/utils/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RESTART_ON_REMOUNT="@@saga-injector/restart-on-remount",t.DAEMON="@@saga-injector/daemon",t.ONCE_TILL_UNMOUNT="@@saga-injector/once-till-unmount"},"./app/utils/injectReducer.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n2?n-2:0),o=2;o1&&void 0!==arguments[1]?arguments[1]:[];return function(n,r){for(var a=arguments.length,s=Array(a>2?a-2:0),l=2;l0?Object.keys(e[0]):[],types:[],pageSize:e.limit,pageIndex:Math.floor(e.offset/e.limit)+1,total:e.totalCount}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},"./app/utils/sagaInjectors.ts":function(e,t,n){"use strict";function r(e,t){return function(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments[2];t||d.default(e);var a=Object.assign({},r,{mode:r.mode||p.RESTART_ON_REMOUNT}),i=a.saga,s=a.mode;h(n),m(a);var l=Reflect.has(e.injectedSagas,n);(!l||l&&s!==p.DAEMON&&s!==p.ONCE_TILL_UNMOUNT)&&(e.injectedSagas[n]=Object.assign({},a,{task:e.runSaga(i,o)}))}}function o(e,t){return function(n){if(t||d.default(e),h(n),Reflect.has(e.injectedSagas,n)){var r=e.injectedSagas[n];r.mode!==p.DAEMON&&(r.task.cancel(),e.injectedSagas[n]="done")}}}function a(e){return d.default(e),{injectSaga:r(e,!0),ejectSaga:o(e,!0)}}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/lodash/isEmpty.js"),s=n("./node_modules/lodash/isFunction.js"),l=n("./node_modules/lodash/isString.js"),c=n("./node_modules/invariant/browser.js"),u=n("./node_modules/lodash/conformsTo.js"),d=n("./app/utils/checkStore.ts"),p=n("./app/utils/constants.ts"),f=[p.RESTART_ON_REMOUNT,p.DAEMON,p.ONCE_TILL_UNMOUNT],h=function(e){return c(l(e)&&!i(e),"(app/utils...) injectSaga: Expected `key` to be a non empty string")},m=function(e){c(u(e,{saga:s,mode:function(e){return l(e)&&f.includes(e)}}),"(app/utils...) injectSaga: Expected a valid saga descriptor")};t.injectSagaFactory=r,t.ejectSagaFactory=o,t.default=a},"./app/utils/util.ts":function(e,t,n){"use strict";function r(e,t){var n=Math.max((""+e).indexOf(".")>=0?(""+e).substr((""+e).indexOf(".")+1).length:0,(""+t).indexOf(".")>=0?(""+t).substr((""+t).indexOf(".")+1).length:0);if(n){var r=Math.pow(10,n);return(Math.round(e*r)+Math.round(t*r))/r}return e+t}function o(e){if(e.response)switch(e.response.status){case 403:l.error("未登录或会话过期,请重新登录",1),s.removeToken(),localStorage.removeItem("TOKEN");var t=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search+"#login";location.replace(t);case 401:l.error("您没有权限访问此数据",2);break;default:l.error(e.response.data.header.msg,3)}else l.error(e,3)}function a(e,t){var n=new FileReader;n.addEventListener("load",function(){return t(n.result)}),n.readAsDataURL(e)}function i(e){var t=[];return e.length&&e.forEach(function(e){var n=[];e.columns&&e.columns.length&&e.columns.forEach(function(e){n.push({title:e.name,key:e.name})}),t.push({title:e.tableName,key:e.tableName,children:n})}),t}Object.defineProperty(t,"__esModule",{value:!0});var s=n("./app/utils/request.ts"),l=n("./node_modules/antd/lib/message/index.js");t.uuid=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:62,n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),r=[],o=void 0;if(e)for(o=0;o, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}},{key:"componentDidMount",value:function(){void 0!==window.SVGElement&&d.findDOMNode(this)instanceof SVGElement&&this.setState({isElementSVG:!0})}},{key:"componentWillReceiveProps",value:function(e){!e.position||this.props.position&&e.position.x===this.props.position.x&&e.position.y===this.props.position.y||this.setState({x:e.position.x,y:e.position.y})}},{key:"componentWillUnmount",value:function(){this.setState({dragging:!1})}},{key:"render",value:function(){var e,t={},n=null,o=Boolean(this.props.position),a=!o||this.state.dragging,i=this.props.position||this.props.defaultPosition,l={x:h.canDragX(this)&&a?this.state.x:i.x,y:h.canDragY(this)&&a?this.state.y:i.y};this.state.isElementSVG?n=f.createSVGTransform(l):t=f.createCSSTransform(l);var c=this.props,d=c.defaultClassName,g=c.defaultClassNameDragging,b=c.defaultClassNameDragged,v=u.Children.only(this.props.children),_=p(v.props.className||"",d,(e={},r(e,g,this.state.dragging),r(e,b,this.state.dragged),e));return u.createElement(m.default,s({},this.props,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),u.cloneElement(v,{className:_,style:Object.assign({},v.props.style,t),transform:n}))}}]),t}(u.Component);b.displayName="Draggable",b.defaultProps=Object.assign({},m.default.defaultProps,{axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},position:null}),t.default=b},"./libs/react-draggable/lib/DraggableCore.tsx":function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function(){function e(e,t){for(var n=0;n not mounted on DragStart!");var r=n.ownerDocument;if(!(e.props.disabled||!(t.target instanceof Node)||e.props.handle&&!u.matchesSelectorAndParentsTo(t.target,e.props.handle,n)||e.props.cancel&&u.matchesSelectorAndParentsTo(t.target,e.props.cancel,n))){var o=u.getTouchIdentifier(t);e.setState({touchIdentifier:o});var a=d.getControlPosition(t,o,e);if(null!=a){var i=a.x,s=a.y,l=d.createCoreData(e,i,s);p.default("DraggableCore: handleDragStart: %j",l),p.default("calling",e.props.onStart);!1!==e.props.onStart(t,l)&&(e.props.enableUserSelectHack&&u.addUserSelectStyles(r),e.setState({dragging:!0,lastX:i,lastY:s}),u.addEvent(r,h.move,e.handleDrag),u.addEvent(r,h.stop,e.handleDragStop))}}},e.handleDrag=function(t){"touchmove"===t.type&&t.preventDefault();var n=d.getControlPosition(t,e.state.touchIdentifier,e);if(null!=n){var r=n.x,o=n.y;if(Array.isArray(e.props.grid)){var a=d.snapToGrid(e.props.grid,r-e.state.lastX,o-e.state.lastY),s=i(a,2),l=s[0],c=s[1];if(!l&&!c)return;r=e.state.lastX+l,o=e.state.lastY+c}var u=d.createCoreData(e,r,o);p.default("DraggableCore: handleDrag: %j",u);if(!1!==e.props.onDrag(t,u))e.setState({lastX:r,lastY:o});else try{e.handleDragStop(new MouseEvent("mouseup"))}catch(t){var f=document.createEvent("MouseEvents");f.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),e.handleDragStop(f)}}},e.handleDragStop=function(t){if(e.state.dragging){var n=d.getControlPosition(t,e.state.touchIdentifier,e);if(null!=n){var r=n.x,o=n.y,a=d.createCoreData(e,r,o),i=c.findDOMNode(e);i&&e.props.enableUserSelectHack&&u.removeUserSelectStyles(i.ownerDocument),p.default("DraggableCore: handleDragStop: %j",a),e.setState({dragging:!1,lastX:NaN,lastY:NaN}),e.props.onStop(t,a),i&&(p.default("DraggableCore: Removing handlers"),u.removeEvent(i.ownerDocument,h.move,e.handleDrag),u.removeEvent(i.ownerDocument,h.stop,e.handleDragStop))}}},e.onMouseDown=function(t){return h=f.mouse,e.handleDragStart(t)},e.onMouseUp=function(t){return h=f.mouse,e.handleDragStop(t)},e.onTouchStart=function(t){return h=f.touch,e.handleDragStart(t)},e.onTouchEnd=function(t){return h=f.touch,e.handleDragStop(t)},e}return a(t,e),s(t,[{key:"componentWillUnmount",value:function(){var e=c.findDOMNode(this);if(e){var t=e.ownerDocument;u.removeEvent(t,f.mouse.move,this.handleDrag),u.removeEvent(t,f.touch.move,this.handleDrag),u.removeEvent(t,f.mouse.stop,this.handleDragStop),u.removeEvent(t,f.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&u.removeUserSelectStyles(t)}}},{key:"render",value:function(){return l.cloneElement(l.Children.only(this.props.children),{style:u.styleHacks(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}]),t}(l.Component);m.displayName="DraggableCore",m.defaultProps={allowAnyClick:!1,cancel:null,disabled:!1,enableUserSelectHack:!0,offsetParent:null,handle:null,grid:null,scale:1,transform:null,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){}},t.default=m},"./libs/react-draggable/lib/utils/domFns.ts":function(e,t,n){"use strict";function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){return j||(j=x.findInArray(["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"],function(t){return x.isFunction(e[t])})),!!x.isFunction(e[j])&&e[j](t)}function a(e,t,n){var r=e;do{if(o(r,t))return!0;if(r===n)return!1;r=r.parentNode}while(r);return!1}function i(e,t,n){e&&(e.attachEvent?e.attachEvent("on"+t,n):e.addEventListener?e.addEventListener(t,n,!0):e["on"+t]=n)}function s(e,t,n){e&&(e.detachEvent?e.detachEvent("on"+t,n):e.removeEventListener?e.removeEventListener(t,n,!0):e["on"+t]=null)}function l(e){var t=e.clientHeight,n=e.ownerDocument.defaultView.getComputedStyle(e);return t+=x.int(n.borderTopWidth),t+=x.int(n.borderBottomWidth)}function c(e){var t=e.clientWidth,n=e.ownerDocument.defaultView.getComputedStyle(e);return t+=x.int(n.borderLeftWidth),t+=x.int(n.borderRightWidth)}function u(e){var t=e.clientHeight,n=e.ownerDocument.defaultView.getComputedStyle(e);return t-=x.int(n.paddingTop),t-=x.int(n.paddingBottom)}function d(e){var t=e.clientWidth,n=e.ownerDocument.defaultView.getComputedStyle(e);return t-=x.int(n.paddingLeft),t-=x.int(n.paddingRight)}function p(e,t){var n=t===t.ownerDocument.body,r=n?{left:0,top:0}:t.getBoundingClientRect();return{x:e.clientX+t.scrollLeft-r.left,y:e.clientY+t.scrollTop-r.top}}function f(e){var t=e.x,n=e.y;return r({},w.browserPrefixToKey("transform",w.default),"translate("+t+"px,"+n+"px)")}function h(e){return"translate("+e.x+","+e.y+")"}function m(e,t){return e.targetTouches&&x.findInArray(e.targetTouches,function(e){return t===e.identifier})||e.changedTouches&&x.findInArray(e.changedTouches,function(e){return t===e.identifier})}function g(e){return e.targetTouches&&e.targetTouches[0]?e.targetTouches[0].identifier:e.changedTouches&&e.changedTouches[0]?e.changedTouches[0].identifier:void 0}function b(e){if(e){var t=e.getElementById("react-draggable-style-el");t||(t=e.createElement("style"),t.setAttribute("type","text/css"),t.id="react-draggable-style-el",t.innerHTML=".react-draggable-transparent-selection *::-moz-selection {background: transparent;}\n",t.innerHTML+=".react-draggable-transparent-selection *::selection {background: transparent;}\n",e.getElementsByTagName("head")[0].appendChild(t)),e.body&&y(e.body,"react-draggable-transparent-selection")}}function v(e){try{e&&e.body&&A(e.body,"react-draggable-transparent-selection"),window.getSelection().removeAllRanges()}catch(e){}}function _(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object.assign({touchAction:"none"},e)}function y(e,t){e.classList?e.classList.add(t):e.className.match(new RegExp("(?:^|\\s)"+t+"(?!\\S)"))||(e.className+=" "+t)}function A(e,t){e.classList?e.classList.remove(t):e.className=e.className.replace(new RegExp("(?:^|\\s)"+t+"(?!\\S)","g"),"")}Object.defineProperty(t,"__esModule",{value:!0});var x=n("./libs/react-draggable/lib/utils/shims.ts"),w=n("./libs/react-draggable/lib/utils/getPrefix.ts"),j="";t.matchesSelector=o,t.matchesSelectorAndParentsTo=a,t.addEvent=i,t.removeEvent=s,t.outerHeight=l,t.outerWidth=c,t.innerHeight=u,t.innerWidth=d,t.offsetXYFromParent=p,t.createCSSTransform=f,t.createSVGTransform=h,t.getTouch=m,t.getTouchIdentifier=g,t.addUserSelectStyles=b,t.removeUserSelectStyles=v,t.styleHacks=_,t.addClassName=y,t.removeClassName=A},"./libs/react-draggable/lib/utils/getPrefix.ts":function(e,t,n){"use strict";function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"transform";if("undefined"==typeof window||void 0===window.document)return"";var t=window.document.documentElement.style;if(e in t)return"";for(var n=0;n: Unmounted during event!");return t}var p=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();Object.defineProperty(t,"__esModule",{value:!0});var f=n("./libs/react-draggable/lib/utils/shims.ts"),h=n("./node_modules/react-dom/index.js"),m=n("./libs/react-draggable/lib/utils/domFns.ts");t.getBoundPosition=r,t.snapToGrid=o,t.canDragX=a,t.canDragY=i,t.getControlPosition=s,t.createCoreData=l,t.createDraggableData=c},"./libs/react-draggable/lib/utils/shims.ts":function(e,t,n){"use strict";function r(e,t){for(var n=0,r=e.length;ne.w||n>e.maxW?new Error("minWidth larger than item width/maxWidth"):void 0},maxW:function(e,t){var n=e[t];return"number"!=typeof n?new Error("maxWidth not Number"):ne.h||n>e.maxH?new Error("minHeight larger than item height/maxHeight"):void 0},maxH:function(e,t){var n=e[t];return"number"!=typeof n?new Error("maxHeight not Number"):n0){var g=1/0,v=1/0;m.forEach(function(e){e.x>f.x&&(g=Math.min(g,e.x)),e.y>f.y&&(v=Math.min(v,e.y))}),Number.isFinite(g)&&(f.w=g-f.x),Number.isFinite(v)&&(f.h=v-f.y)}}h||(f.w=t,f.h=n);var _={w:f.w,h:f.h,x:f.x,y:f.y,static:!0,i:e};this.props.onResize(s,c,f,_,o,a),this.setState({layout:(0,b.compact)(s,this.compactType(),d),activeDrag:_})}},t.prototype.onResizeStop=function(e,t,n,r){var o=r.e,a=r.node,i=this.state,s=i.layout,l=i.oldResizeItem,c=this.props.cols,u=(0,b.getLayoutItem)(s,e);this.props.onResizeStop(s,l,u,null,o,a);var d=(0,b.compact)(s,this.compactType(),c),p=this.state.oldLayout;this.setState({activeDrag:null,layout:d,oldResizeItem:null,oldLayout:null}),this.onLayoutMaybeChanged(d,p)},t.prototype.placeholder=function(){var e=this.state.activeDrag;if(!e)return null;var t=this.props,n=t.width,r=t.cols,o=t.margin,a=t.containerPadding,i=t.rowHeight,s=t.maxRows,l=t.useCSSTransforms;return u.default.createElement(_.default,{w:e.w,h:e.h,x:e.x,y:e.y,i:e.i,className:"react-grid-placeholder",containerWidth:n,cols:r,margin:o,containerPadding:a||o,maxRows:s,rowHeight:i,isDraggable:!1,isResizable:!1,useCSSTransforms:l},u.default.createElement("div",null))},t.prototype.processGridItem=function(e){if(e&&e.key){var t=(0,b.getLayoutItem)(this.state.layout,String(e.key));if(!t)return null;var n=this.props,r=n.width,o=n.cols,a=n.margin,i=n.containerPadding,s=n.rowHeight,l=n.maxRows,c=n.isDraggable,d=n.isResizable,p=n.useCSSTransforms,f=n.draggableCancel,h=n.draggableHandle,m=this.state.mounted,g=Boolean(!t.static&&c&&(t.isDraggable||null==t.isDraggable)),v=Boolean(!t.static&&d&&(t.isResizable||null==t.isResizable));return u.default.createElement(_.default,{containerWidth:r,cols:o,margin:a,containerPadding:i||a,maxRows:l,rowHeight:s,cancel:f,handle:h,onDragStop:this.onDragStop,onDragStart:this.onDragStart,onDrag:this.onDrag,onResizeStart:this.onResizeStart,onResize:this.onResize,onResizeStop:this.onResizeStop,isDraggable:g,isResizable:v,useCSSTransforms:p&&m,usePercentages:!m,w:t.w,h:t.h,x:t.x,y:t.y,i:t.i,minH:t.minH,minW:t.minW,maxH:t.maxH,maxW:t.maxW,static:t.static},e)}},t.prototype.render=function(){var e=this,t=this.props,n=t.className,r=t.style,o=(0,g.default)("react-grid-layout",n),a=l({height:this.containerHeight()},r);return u.default.createElement("div",{className:o,style:a},u.default.Children.map(this.props.children,function(t){return e.processGridItem(t)}),this.placeholder())},t}(u.default.Component);y.displayName="ReactGridLayout",y.propTypes={className:p.default.string,style:p.default.object,width:p.default.number,autoSize:p.default.bool,cols:p.default.number,draggableCancel:p.default.string,draggableHandle:p.default.string,verticalCompact:function(e){e.verticalCompact,1},compactType:p.default.oneOf(["vertical","horizontal"]),layout:function(e){var t=e.layout;void 0!==t&&(0,b.validateLayout)(t,"layout")},margin:p.default.arrayOf(p.default.number),containerPadding:p.default.arrayOf(p.default.number),rowHeight:p.default.number,maxRows:p.default.number,isDraggable:p.default.bool,isResizable:p.default.bool,preventCollision:p.default.bool,useCSSTransforms:p.default.bool,onLayoutChange:p.default.func,onDragStart:p.default.func,onDrag:p.default.func,onDragStop:p.default.func,onResizeStart:p.default.func,onResize:p.default.func,onResizeStop:p.default.func,children:function(e,t){var n=e[t],r={};u.default.Children.forEach(n,function(e){if(r[e.key])throw new Error('Duplicate child key "'+e.key+'" found! This will cause problems in ReactGridLayout.');r[e.key]=!0})}},y.defaultProps={autoSize:!0,cols:12,className:"",style:{},draggableHandle:"",draggableCancel:"",containerPadding:null,rowHeight:150,maxRows:1/0,layout:[],margin:[10,10],isDraggable:!0,isResizable:!0,useCSSTransforms:!0,verticalCompact:!0,compactType:"vertical",preventCollision:!1,onLayoutChange:b.noop,onDragStart:b.noop,onDrag:b.noop,onDragStop:b.noop,onResizeStart:b.noop,onResize:b.noop,onResizeStop:b.noop};var A=function(){this.state={activeDrag:null,layout:(0,b.synchronizeLayoutWithChildren)(this.props.layout,this.props.children,this.props.cols,this.compactType()),mounted:!1,oldDragItem:null,oldLayout:null,oldResizeItem:null}};t.default=y},"./libs/react-grid-layout/lib/ResponsiveReactGridLayout.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":l(t))&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":l(t)));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.__esModule=!0;var c=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":c(t))&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":c(t)));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e){var t,n;return n=t=function(t){function n(){var e,r,o;a(this,n);for(var s=arguments.length,l=Array(s),c=0;ce[s]&&(r=s)}return r}function o(e,t){if(!t[e])throw new Error("ResponsiveReactGridLayout: `cols` entry for breakpoint "+e+" is missing!");return t[e]}function a(e,t,n,r,o,a){if(e[n])return(0,s.cloneLayout)(e[n]);for(var l=e[r],c=i(t),u=c.slice(c.indexOf(n)),d=0,p=u.length;dt&&(t=n);return t}function a(e){for(var t=Array(e.length),n=0,r=e.length;n=t.x+t.w)&&(!(e.y+e.h<=t.y)&&!(e.y>=t.y+t.h))))}function c(e,t,n){for(var r=g(e),o=x(e,t),a=Array(e.length),s=0,l=o.length;st.y+t.h)break;l(t,s)&&u(e,s,n+t[o],r)}}t[r]=n}function d(e,t,n,r,a){var i="vertical"===n,s="horizontal"===n;if(i)for(t.y=Math.min(o(e),t.y);t.y>0&&!h(e,t);)t.y--;else if(s)for(t.y=Math.min(o(e),t.y);t.x>0&&!h(e,t);)t.x--;for(var l=void 0;l=h(e,t);)s?u(a,t,l.x+l.w,"x"):u(a,t,l.y+l.h,"y"),s&&t.x+t.w>r&&(t.x=r-t.w,t.y++);return t}function p(e,t){for(var n=g(e),r=0,o=e.length;rt.cols&&(a.x=t.cols-a.w),a.x<0&&(a.x=0,a.w=t.cols),a.static)for(;h(n,a);)a.y++;else n.push(a)}return e}function f(e,t){for(var n=0,r=e.length;n=r:"horizontal"===i&&"number"==typeof n&&l>=n)&&(u=u.reverse());var d=m(u,t);if(a&&d.length)return C("Collision prevented on "+t.i+", reverting."),t.x=l,t.y=c,t.moved=!1,e;for(var p=0,f=d.length;pt.y||e.y===t.y&&e.x>t.x?1:e.y===t.y&&e.x===t.x?0:-1})}function j(e){return[].concat(e).sort(function(e,t){return e.x>t.x||e.x===t.x&&e.y>t.y?1:-1})}function E(e,t,n,r){e=e||[];var a=[];return D.default.Children.forEach(t,function(t,n){var r=f(e,String(t.key));if(r)a[n]=i(r);else{!P&&t.props._grid&&console.warn("`_grid` properties on children have been deprecated as of React 15.2. Please use `data-grid` or add your properties directly to the `layout`.");var s=t.props["data-grid"]||t.props._grid;s?(P||S([s],"ReactGridLayout.children"),a[n]=i(T({},s,{i:t.key}))):a[n]=i({w:1,h:1,x:0,y:o(a),i:String(t.key)})}}),a=p(a,{cols:n}),a=c(a,r,n)}function S(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Layout",n=["x","y","w","h"];if(!Array.isArray(e))throw new Error(t+" must be an array!");for(var r=0,o=e.length;r0&&void 0!==arguments[0]?arguments[0]:{},t=(0,w.default)((0,a.default)({fieldNameProp:"id"},e,{fieldMetaProp:P.FIELD_META_PROP}));return function(n){return t((0,T.default)({propTypes:{form:_.default.object.isRequired},childContextTypes:{form:_.default.object.isRequired},getChildContext:function(){return{form:this.props.form}},componentWillMount:function(){this.__getFieldProps=this.props.form.getFieldProps},deprecatedGetFieldProps:function(e,t){return(0,O.default)(!1,"`getFieldProps` is not recommended, please use `getFieldDecorator` instead, see: https://u.ant.design/get-field-decorator"),this.__getFieldProps(e,t)},render:function(){this.props.form.getFieldProps=this.deprecatedGetFieldProps;var t={};return e.withRef?t.ref="formWrappedComponent":this.props.wrappedComponentRef&&(t.ref=this.props.wrappedComponentRef),b.default.createElement(n,(0,a.default)({},this.props,t))}}))}},e.exports=t.default},"./node_modules/antd/lib/Form/FormItem.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/extends.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/react-dom/index.js"),_=n("./node_modules/prop-types/index.js"),y=r(_),A=n("./node_modules/classnames/index.js"),x=r(A),w=n("./node_modules/rc-util/lib/PureRenderMixin.js"),j=r(w),E=n("./node_modules/antd/lib/grid/row.js"),S=r(E),k=n("./node_modules/antd/lib/grid/col.js"),C=r(k),T=n("./node_modules/antd/lib/Form/constants.js"),M=n("./node_modules/antd/lib/_util/warning.js"),O=r(M),L=function(e){function t(){(0,c.default)(this,t);var e=(0,f.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.onLabelClick=function(){var t=e.props.id||e.getId();if(t){if(1!==document.querySelectorAll('[id="'+t+'"]').length){var n=(0,v.findDOMNode)(e).querySelector('[id="'+t+'"]');n&&n.focus&&n.focus()}}},e}return(0,m.default)(t,e),(0,d.default)(t,[{key:"componentDidMount",value:function(){(0,O.default)(this.getControls(this.props.children,!0).length<=1,"`Form.Item` cannot generate `validateStatus` and `help` automatically, while there are more than one `getFieldDecorator` in it.")}},{key:"shouldComponentUpdate",value:function(){for(var e=arguments.length,t=Array(e),n=0;n0));a++){var i=o[a];(!i.type||i.type!==t&&"FormItem"!==i.type.displayName)&&i.props&&(T.FIELD_META_PROP in i.props?r.push(i):i.props.children&&(r=r.concat(this.getControls(i.props.children,n))))}return r}},{key:"getOnlyControl",value:function(){var e=this.getControls(this.props.children,!1)[0];return void 0!==e?e:null}},{key:"getChildProp",value:function(e){var t=this.getOnlyControl();return t&&t.props&&t.props[e]}},{key:"getId",value:function(){return this.getChildProp("id")}},{key:"getMeta",value:function(){return this.getChildProp(T.FIELD_META_PROP)}},{key:"renderHelp",value:function(){var e=this.props.prefixCls,t=this.getHelpMsg();return t?b.default.createElement("div",{className:e+"-explain",key:"help"},t):null}},{key:"renderExtra",value:function(){var e=this.props,t=e.prefixCls,n=e.extra;return n?b.default.createElement("div",{className:t+"-extra"},n):null}},{key:"getValidateStatus",value:function(){var e=this.context.form,t=e.isFieldValidating,n=e.getFieldError,r=e.getFieldValue,o=this.getId();if(!o)return"";if(t(o))return"validating";if(n(o))return"error";var a=r(o);return void 0!==a&&null!==a&&""!==a?"success":""}},{key:"renderValidateWrapper",value:function(e,t,n){var r="",o=this.context.form,a=this.props,i=void 0===a.validateStatus&&o?this.getValidateStatus():a.validateStatus;return i&&(r=(0,x.default)({"has-feedback":a.hasFeedback||"validating"===i,"has-success":"success"===i,"has-warning":"warning"===i,"has-error":"error"===i,"is-validating":"validating"===i})),b.default.createElement("div",{className:this.props.prefixCls+"-item-control "+r},e,t,n)}},{key:"renderWrapper",value:function(e){var t=this.props,n=t.prefixCls,r=t.wrapperCol,o=(0,x.default)(n+"-item-control-wrapper",r&&r.className);return b.default.createElement(C.default,(0,s.default)({},r,{className:o,key:"wrapper"}),e)}},{key:"isRequired",value:function(){var e=this.props.required;if(void 0!==e)return e;if(this.context.form){return((this.getMeta()||{}).validate||[]).filter(function(e){return!!e.rules}).some(function(e){return e.rules.some(function(e){return e.required})})}return!1}},{key:"renderLabel",value:function(){var e=this.props,t=e.prefixCls,n=e.label,r=e.labelCol,o=e.colon,i=e.id,l=this.context,c=this.isRequired(),u=(0,x.default)(t+"-item-label",r&&r.className),d=(0,x.default)((0,a.default)({},t+"-item-required",c)),p=n;return o&&!l.vertical&&"string"==typeof n&&""!==n.trim()&&(p=n.replace(/[:|:]\s*$/,"")),n?b.default.createElement(C.default,(0,s.default)({},r,{className:u,key:"label"}),b.default.createElement("label",{htmlFor:i||this.getId(),className:d,title:"string"==typeof n?n:"",onClick:this.onLabelClick},p)):null}},{key:"renderChildren",value:function(){var e=this.props,t=b.default.Children.map(e.children,function(e){return e&&"function"==typeof e.type&&!e.props.size?b.default.cloneElement(e,{size:"large"}):e});return[this.renderLabel(),this.renderWrapper(this.renderValidateWrapper(t,this.renderHelp(),this.renderExtra()))]}},{key:"renderFormItem",value:function(e){var t,n=this.props,r=n.prefixCls,o=n.style,i=(t={},(0,a.default)(t,r+"-item",!0),(0,a.default)(t,r+"-item-with-help",!!this.getHelpMsg()),(0,a.default)(t,r+"-item-no-colon",!n.colon),(0,a.default)(t,""+n.className,!!n.className),t);return b.default.createElement(S.default,{className:(0,x.default)(i),style:o},e)}},{key:"render",value:function(){var e=this.renderChildren();return this.renderFormItem(e)}}]),t}(b.default.Component);t.default=L,L.defaultProps={hasFeedback:!1,prefixCls:"ant-form",colon:!0},L.propTypes={prefixCls:y.default.string,label:y.default.oneOfType([y.default.string,y.default.node]),labelCol:y.default.object,help:y.default.oneOfType([y.default.node,y.default.bool]),validateStatus:y.default.oneOf(["","success","warning","error","validating"]),hasFeedback:y.default.bool,wrapperCol:y.default.object,className:y.default.string,id:y.default.string,children:y.default.node,colon:y.default.bool},L.contextTypes={form:y.default.object,vertical:y.default.bool},e.exports=t.default},"./node_modules/antd/lib/Form/constants.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.FIELD_META_PROP="data-__meta"},"./node_modules/antd/lib/Form/index.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/antd/lib/Form/Form.js"),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=o.default,e.exports=t.default},"./node_modules/antd/lib/_util/getLocale.js":function(e,t,n){"use strict";function r(e,t,n,r){var o={};if(t&&t.antLocale&&t.antLocale[n])o=t.antLocale[n];else{var a=r();o=a.default||a}var s=(0,i.default)({},o,e.locale);return s.lang=(0,i.default)({},o.lang,e.locale.lang),s}function o(e){var t=e.antLocale&&e.antLocale.locale;return e.antLocale&&e.antLocale.exist&&!t?"zh-cn":t}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/extends.js"),i=function(e){return e&&e.__esModule?e:{default:e}}(a);t.getComponentLocale=r,t.getLocaleCode=o},"./node_modules/antd/lib/_util/getRequestAnimationFrame.js":function(e,t,n){"use strict";function r(){var e=0;return function(t){var n=(new Date).getTime(),r=Math.max(0,16-(n-e)),o=window.setTimeout(function(){t(n+r)},r);return e=n+r,o}}function o(){if("undefined"==typeof window)return function(){};if(window.requestAnimationFrame)return window.requestAnimationFrame.bind(window);var e=i.filter(function(e){return e+"RequestAnimationFrame"in window})[0];return e?window[e+"RequestAnimationFrame"]:r()}function a(e){if("undefined"==typeof window)return null;if(window.cancelAnimationFrame)return window.cancelAnimationFrame(e);var t=i.filter(function(e){return e+"CancelAnimationFrame"in window||e+"CancelRequestAnimationFrame"in window})[0];return t?(window[t+"CancelAnimationFrame"]||window[t+"CancelRequestAnimationFrame"]).call(this,e):clearTimeout(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o,t.cancelRequestAnimationFrame=a;var i=["moz","ms","webkit"]},"./node_modules/antd/lib/_util/isCssAnimationSupported.js":function(e,t,n){"use strict";function r(){if(void 0!==o)return o;var e="Webkit Moz O ms Khtml".split(" "),t=document.createElement("div");if(void 0!==t.style.animationName&&(o=!0),void 0!==o)for(var n=0;n0){var f=[];e=s.map(function(e){e.path=e.path||"";var t=e.path.replace(/^\//,"");return Object.keys(c).forEach(function(e){t=t.replace(":"+e,c[e])}),t&&f.push(t),m.default.createElement(A.default,{separator:n,key:e.breadcrumbName||t},p(e,c,s,f))})}else u&&(e=m.default.Children.map(u,function(e,t){return e?((0,_.default)(e.type&&e.type.__ANT_BREADCRUMB_ITEM,"Breadcrumb only accepts Breadcrumb.Item as it's children"),(0,h.cloneElement)(e,{separator:n,key:t})):e}));return m.default.createElement("div",{className:(0,w.default)(i,r),style:o},e)}}]),t}(m.default.Component);t.default=j,j.defaultProps={prefixCls:"ant-breadcrumb",separator:"/"},j.propTypes={prefixCls:b.default.string,separator:b.default.node,routes:b.default.array,params:b.default.object,linkRender:b.default.func,nameRender:b.default.func},e.exports=t.default},"./node_modules/antd/lib/breadcrumb/BreadcrumbItem.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/inherits.js"),f=r(p),h=n("./node_modules/react/react.js"),m=r(h),g=n("./node_modules/prop-types/index.js"),b=r(g),v=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o-1})}function i(e,t,n){return t.map(function(t,r){var a=t.label,i=a.indexOf(e)>-1?o(a,e,n):a;return 0===r?i:[" / ",i]})}function s(e,t,n){function r(e){return e.label.indexOf(n)>-1}return e.findIndex(r)-t.findIndex(r)}Object.defineProperty(t,"__esModule",{value:!0});var l=n("./node_modules/babel-runtime/helpers/extends.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/defineProperty.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/createClass.js"),m=r(h),g=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),b=r(g),v=n("./node_modules/babel-runtime/helpers/inherits.js"),_=r(v),y=n("./node_modules/react/react.js"),A=r(y),x=n("./node_modules/rc-cascader/lib/index.js"),w=r(x),j=n("./node_modules/array-tree-filter/index.js"),E=r(j),S=n("./node_modules/classnames/index.js"),k=r(S),C=n("./node_modules/omit.js/lib/index.js"),T=r(C),M=n("./node_modules/rc-util/lib/KeyCode.js"),O=r(M),L=n("./node_modules/antd/lib/input/index.js"),D=r(L),P=n("./node_modules/antd/lib/icon/index.js"),I=r(P),R=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o1&&void 0!==arguments[1]?arguments[1]:[];"value"in n.props||n.setState({value:e});var r=n.props.onChange;r&&r(e,t)},n.clearSelection=function(e){e.preventDefault(),e.stopPropagation(),n.state.inputValue?n.setState({inputValue:""}):(n.setValue([]),n.handlePopupVisibleChange(!1))},n.state={value:e.value||e.defaultValue||[],inputValue:"",inputFocused:!1,popupVisible:e.popupVisible,flattenOptions:e.showSearch&&n.flattenTree(e.options,e.changeOnSelect)},n}return(0,_.default)(t,e),(0,m.default)(t,[{key:"componentWillReceiveProps",value:function(e){"value"in e&&this.setState({value:e.value||[]}),"popupVisible"in e&&this.setState({popupVisible:e.popupVisible}),e.showSearch&&this.props.options!==e.options&&this.setState({flattenOptions:this.flattenTree(e.options,e.changeOnSelect)})}},{key:"getLabel",value:function(){var e=this.props,t=e.options,n=e.displayRender,r=void 0===n?N:n,o=this.state.value,a=Array.isArray(o[0])?o[0]:o,i=(0,E.default)(t,function(e,t){return e.value===a[t]});return r(i.map(function(e){return e.label}),i)}},{key:"flattenTree",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],o=[];return e.forEach(function(e){var a=r.concat(e);!t&&e.children&&e.children.length||o.push(a),e.children&&(o=o.concat(n.flattenTree(e.children,t,a)))}),o}},{key:"generateFilteredOptions",value:function(e){var t=this,n=this.props,r=n.showSearch,o=n.notFoundContent,l=r.filter,c=void 0===l?a:l,u=r.render,d=void 0===u?i:u,p=r.sort,f=void 0===p?s:p,h=this.state,m=h.flattenOptions,g=h.inputValue,b=m.filter(function(e){return c(t.state.inputValue,e)}).sort(function(e,t){return f(e,t,g)});return b.length>0?b.map(function(t){return{__IS_FILTERED_OPTION:!0,path:t,label:d(g,t,e),value:t.map(function(e){return e.value}),disabled:t.some(function(e){return e.disabled})}}):[{label:o,value:"ANT_CASCADER_NOT_FOUND",disabled:!0}]}},{key:"render",value:function(){var e,t,n,r=this.props,o=this.state,a=r.prefixCls,i=r.inputPrefixCls,s=r.children,l=r.placeholder,u=r.size,p=r.disabled,f=r.className,h=r.style,m=r.allowClear,g=r.showSearch,b=void 0!==g&&g,v=R(r,["prefixCls","inputPrefixCls","children","placeholder","size","disabled","className","style","allowClear","showSearch"]),_=o.value,y=(0,k.default)((e={},(0,d.default)(e,i+"-lg","large"===u),(0,d.default)(e,i+"-sm","small"===u),e)),x=m&&!p&&_.length>0||o.inputValue?A.default.createElement(I.default,{type:"cross-circle",className:a+"-picker-clear",onClick:this.clearSelection}):null,j=(0,k.default)((t={},(0,d.default)(t,a+"-picker-arrow",!0),(0,d.default)(t,a+"-picker-arrow-expand",o.popupVisible),t)),E=(0,k.default)(f,(n={},(0,d.default)(n,a+"-picker",!0),(0,d.default)(n,a+"-picker-with-value",o.inputValue),(0,d.default)(n,a+"-picker-disabled",p),n)),S=(0,T.default)(v,["onChange","options","popupPlacement","transitionName","displayRender","onPopupVisibleChange","changeOnSelect","expandTrigger","popupVisible","getPopupContainer","loadData","popupClassName","filterOption","renderFilteredOption","sortFilteredOption","notFoundContent"]),C=r.options;o.inputValue&&(C=this.generateFilteredOptions(a)),o.popupVisible?this.cachedOptions=C:C=this.cachedOptions;var M={};1===(C||[]).length&&"ANT_CASCADER_NOT_FOUND"===C[0].value&&(M.height="auto"),!1!==b.matchInputWidth&&o.inputValue&&this.refs.input&&(M.width=this.refs.input.refs.input.offsetWidth);var O=s||A.default.createElement("span",{style:h,className:E},A.default.createElement("span",{className:a+"-picker-label"},this.getLabel()),A.default.createElement(D.default,(0,c.default)({},S,{ref:"input",prefixCls:i,placeholder:_&&_.length>0?void 0:l,className:a+"-input "+y,value:o.inputValue,disabled:p,readOnly:!b,autoComplete:"off",onClick:b?this.handleInputClick:void 0,onBlur:b?this.handleInputBlur:void 0,onKeyDown:this.handleKeyDown,onChange:b?this.handleInputChange:void 0})),x,A.default.createElement(I.default,{type:"down",className:j}));return A.default.createElement(w.default,(0,c.default)({},r,{options:C,value:_,popupVisible:o.popupVisible,onPopupVisibleChange:this.handlePopupVisibleChange,onChange:this.handleChange,dropdownMenuColumnStyle:M}),O)}}]),t}(A.default.Component);t.default=B,B.defaultProps={prefixCls:"ant-cascader",inputPrefixCls:"ant-input",placeholder:"Please select",transitionName:"slide-up",popupPlacement:"bottomLeft",options:[],disabled:!1,allowClear:!0,notFoundContent:"Not Found"},e.exports=t.default},"./node_modules/antd/lib/checkbox/Checkbox.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/extends.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/prop-types/index.js"),_=r(v),y=n("./node_modules/classnames/index.js"),A=r(y),x=n("./node_modules/rc-checkbox/lib/index.js"),w=r(x),j=n("./node_modules/shallowequal/index.js"),E=r(j),S=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o0&&(i=this.getOptions().map(function(o){return m.default.createElement(w.default,{key:o.value,disabled:"disabled"in o?o.disabled:t.disabled,value:o.value,checked:-1!==n.value.indexOf(o.value),onChange:function(){return e.toggleOption(o)},className:r+"-item"},o.label)}));var s=(0,_.default)(r,o);return m.default.createElement("div",{className:s},i)}}]),t}(m.default.Component);t.default=j,j.defaultProps={options:[],prefixCls:"ant-checkbox-group"},j.propTypes={defaultValue:b.default.array,value:b.default.array,options:b.default.array.isRequired,onChange:b.default.func},j.childContextTypes={checkboxGroup:b.default.any},e.exports=t.default},"./node_modules/antd/lib/checkbox/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/antd/lib/checkbox/Checkbox.js"),a=r(o),i=n("./node_modules/antd/lib/checkbox/Group.js"),s=r(i);a.default.Group=s.default,t.default=a.default,e.exports=t.default},"./node_modules/antd/lib/col/index.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/antd/lib/grid/index.js");t.default=r.Col,e.exports=t.default},"./node_modules/antd/lib/collapse/Collapse.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.CollapsePanel=void 0;var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/defineProperty.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/rc-collapse/lib/index.js"),_=r(v),y=n("./node_modules/classnames/index.js"),A=r(y),x=n("./node_modules/antd/lib/_util/openAnimation.js"),w=r(x),j=(t.CollapsePanel=function(e){function t(){return(0,d.default)(this,t),(0,f.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return(0,m.default)(t,e),t}(b.default.Component),function(e){function t(){return(0,d.default)(this,t),(0,f.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return(0,m.default)(t,e),(0,c.default)(t,[{key:"render",value:function(){var e=this.props,t=e.prefixCls,n=e.className,r=void 0===n?"":n,o=e.bordered,i=(0,A.default)((0,s.default)({},t+"-borderless",!o),r);return b.default.createElement(_.default,(0,a.default)({},this.props,{className:i}))}}]),t}(b.default.Component));t.default=j,j.Panel=_.default.Panel,j.defaultProps={prefixCls:"ant-collapse",bordered:!0,openAnimation:(0,a.default)({},w.default,{appear:function(){}})}},"./node_modules/antd/lib/collapse/index.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/antd/lib/collapse/Collapse.js"),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=o.default,e.exports=t.default},"./node_modules/antd/lib/date-picker/Calendar.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/createClass.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/inherits.js"),d=r(u),p=n("./node_modules/react/react.js"),f=r(p),h=n("./node_modules/rc-calendar/lib/locale/zh_CN.js"),m=r(h),g=n("./node_modules/rc-calendar/lib/index.js"),b=r(g),v=n("./node_modules/warning/browser.js"),_=r(v),y=function(e){function t(){return(0,a.default)(this,t),(0,c.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return(0,d.default)(t,e),(0,s.default)(t,[{key:"render",value:function(){return(0,_.default)(!1,"DatePicker.Calendar is deprecated, use Calendar instead."),f.default.createElement(b.default,this.props)}}]),t}(f.default.Component);t.default=y,y.defaultProps={locale:m.default,prefixCls:"ant-calendar"},e.exports=t.default},"./node_modules/antd/lib/date-picker/RangePicker.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){var t=(0,A.default)(e,2),n=t[0],r=t[1];if(n||r){return[n,r&&r.isSame(n,"month")?r.clone().add(1,"month"):r]}}function a(e,t){return e&&e.format(t)||""}function i(e){if(e)return Array.isArray(e)?e:[e,e.clone().add(1,"month")]}function s(e){return!!Array.isArray(e)&&(0===e.length||e.every(function(e){return!e}))}Object.defineProperty(t,"__esModule",{value:!0});var l=n("./node_modules/babel-runtime/helpers/extends.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/defineProperty.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/createClass.js"),m=r(h),g=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),b=r(g),v=n("./node_modules/babel-runtime/helpers/inherits.js"),_=r(v),y=n("./node_modules/babel-runtime/helpers/slicedToArray.js"),A=r(y),x=n("./node_modules/react/react.js"),w=r(x),j=n("./node_modules/moment/src/moment.js"),E=r(j),S=n("./node_modules/prop-types/index.js"),k=r(S),C=n("./node_modules/rc-calendar/lib/RangeCalendar.js"),T=r(C),M=n("./node_modules/rc-calendar/lib/Picker.js"),O=r(M),L=n("./node_modules/classnames/index.js"),D=r(L),P=n("./node_modules/antd/lib/icon/index.js"),I=r(P),R=n("./node_modules/antd/lib/_util/getLocale.js"),N=n("./node_modules/antd/lib/_util/warning.js"),B=r(N),F=function(e){function t(e){(0,f.default)(this,t);var n=(0,b.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.clearSelection=function(e){e.preventDefault(),e.stopPropagation(),n.setState({value:[]}),n.handleChange([])},n.clearHoverValue=function(){return n.setState({hoverValue:[]})},n.handleChange=function(e){var t=n.props;"value"in t||n.setState(function(t){var n=t.showDate;return{value:e,showDate:o(e)||n}}),t.onChange(e,[a(e[0],t.format),a(e[1],t.format)])},n.handleOpenChange=function(e){"open"in n.props||n.setState({open:e});var t=n.props.onOpenChange;t&&t(e)},n.handleShowDateChange=function(e){return n.setState({showDate:e})},n.handleHoverChange=function(e){return n.setState({hoverValue:e})},n.renderFooter=function(){var e=n.props,t=e.prefixCls,r=e.ranges,o=e.renderExtraFooter;if(!r&&!o)return null;var a=o?w.default.createElement("div",{className:t+"-footer-extra",key:"extra"},o.apply(void 0,arguments)):null,i=Object.keys(r||{}).map(function(e){var t=r[e];return w.default.createElement("a",{key:e,onClick:function(){return n.setValue(t,!0)},onMouseEnter:function(){return n.setState({hoverValue:t})},onMouseLeave:n.clearHoverValue},e)});return[w.default.createElement("div",{className:t+"-footer-extra "+t+"-range-quick-selector",key:"range"},i),a]};var r=e.value||e.defaultValue||[];if(r[0]&&!E.default.isMoment(r[0])||r[1]&&!E.default.isMoment(r[1]))throw new Error("The value/defaultValue of RangePicker must be a moment object array after `antd@2.0`, see: https://u.ant.design/date-picker-value");var l=!r||s(r)?e.defaultPickerValue:r;return n.state={value:r,showDate:i(l||(0,E.default)()),open:e.open,hoverValue:[]},n}return(0,_.default)(t,e),(0,m.default)(t,[{key:"componentWillReceiveProps",value:function(e){if("value"in e){var t=this.state,n=e.value||[];this.setState({value:n,showDate:o(n)||t.showDate})}"open"in e&&this.setState({open:e.open})}},{key:"setValue",value:function(e,t){this.handleChange(e),!t&&this.props.showTime||"open"in this.props||this.setState({open:!1})}},{key:"render",value:function(){var e,t=this,n=this.state,r=this.props,o=this.context,a=n.value,i=n.showDate,s=n.hoverValue,l=n.open,u=(0,R.getLocaleCode)(o);a&&u&&(a[0]&&a[0].locale(u),a[1]&&a[1].locale(u));var p=r.prefixCls,f=r.popupStyle,h=r.style,m=r.disabledDate,g=r.disabledTime,b=r.showTime,v=r.showToday,_=r.ranges,y=r.onOk,A=r.locale,x=r.format;(0,B.default)(!("onOK"in r),"It should be `RangePicker[onOk]`, instead of `onOK`!");var j=(0,D.default)((e={},(0,d.default)(e,p+"-time",b),(0,d.default)(e,p+"-range-with-ranges",_),e)),E={onChange:this.handleChange},S={onOk:this.handleChange};r.timePicker?E.onChange=function(e){return t.handleChange(e)}:S={};var k="placeholder"in r?r.placeholder[0]:A.lang.rangePlaceholder[0],C="placeholder"in r?r.placeholder[1]:A.lang.rangePlaceholder[1],M=w.default.createElement(T.default,(0,c.default)({},S,{format:x,prefixCls:p,className:j,renderFooter:this.renderFooter,timePicker:r.timePicker,disabledDate:m,disabledTime:g,dateInputPlaceholder:[k,C],locale:A.lang,onOk:y,value:i,onValueChange:this.handleShowDateChange,hoverValue:s,onHoverChange:this.handleHoverChange,showToday:v})),L={};r.showTime&&(L.width=h&&h.width||300);var P=!r.disabled&&r.allowClear&&a&&(a[0]||a[1])?w.default.createElement(I.default,{type:"cross-circle",className:p+"-picker-clear",onClick:this.clearSelection}):null,N=function(e){var t=e.value,n=t[0],o=t[1];return w.default.createElement("span",{className:r.pickerInputClass},w.default.createElement("input",{disabled:r.disabled,readOnly:!0,value:n&&n.format(r.format)||"",placeholder:k,className:p+"-range-picker-input"}),w.default.createElement("span",{className:p+"-range-picker-separator"}," ~ "),w.default.createElement("input",{disabled:r.disabled,readOnly:!0,value:o&&o.format(r.format)||"",placeholder:C,className:p+"-range-picker-input"}),P,w.default.createElement("span",{className:p+"-picker-icon"}))};return w.default.createElement("span",{className:(0,D.default)(r.className,r.pickerClass),style:(0,c.default)({},h,L)},w.default.createElement(O.default,(0,c.default)({},r,E,{calendar:M,value:a,open:l,onOpenChange:this.handleOpenChange,prefixCls:p+"-picker-container",style:f}),N))}}]),t}(w.default.Component);t.default=F,F.contextTypes={antLocale:k.default.object},F.defaultProps={prefixCls:"ant-calendar",allowClear:!0,showToday:!1},e.exports=t.default},"./node_modules/antd/lib/date-picker/createPicker.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){return t=function(t){function n(e){(0,u.default)(this,n);var t=(0,h.default)(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,e));t.renderFooter=function(){var e=t.props,n=e.prefixCls,r=e.renderExtraFooter;return r?v.default.createElement("div",{className:n+"-footer-extra"},r.apply(void 0,arguments)):null},t.clearSelection=function(e){e.preventDefault(),e.stopPropagation(),t.handleChange(null)},t.handleChange=function(e){var n=t.props;"value"in n||t.setState({value:e,showDate:e}),n.onChange(e,e&&e.format(n.format)||"")},t.handleCalendarChange=function(e){t.setState({showDate:e})};var r=e.value||e.defaultValue;if(r&&!x.default.isMoment(r))throw new Error("The value/defaultValue of DatePicker or MonthPicker must be a moment object after `antd@2.0`, see: https://u.ant.design/date-picker-value");return t.state={value:r,showDate:r},t}return(0,g.default)(n,t),(0,p.default)(n,[{key:"componentWillReceiveProps",value:function(e){"value"in e&&this.setState({value:e.value,showDate:e.value})}},{key:"render",value:function(){var t,n=this.state,r=n.value,o=n.showDate,a=(0,M.default)(this.props,["onChange"]),s=a.prefixCls,c=a.locale,u="placeholder"in a?a.placeholder:c.lang.placeholder,d=a.showTime?a.disabledTime:null,p=(0,C.default)((t={},(0,l.default)(t,s+"-time",a.showTime),(0,l.default)(t,s+"-month",j.default===e),t)),f={},h={};a.showTime?h={onSelect:this.handleChange}:f={onChange:this.handleChange},(0,I.default)(!("onOK"in a),"It should be `DatePicker[onOk]` or `MonthPicker[onOk]`, instead of `onOK`!");var m=v.default.createElement(e,(0,i.default)({},h,{disabledDate:a.disabledDate,disabledTime:d,locale:c.lang,timePicker:a.timePicker,defaultValue:a.defaultPickerValue||(0,x.default)(),dateInputPlaceholder:u,prefixCls:s,className:p,onOk:a.onOk,format:a.format,showToday:a.showToday,monthCellContentRender:a.monthCellContentRender,renderFooter:this.renderFooter,onChange:this.handleCalendarChange,value:o})),g={};a.showTime&&(g.width=a.style&&a.style.width||154);var b=!a.disabled&&a.allowClear&&r?v.default.createElement(L.default,{type:"cross-circle",className:s+"-picker-clear",onClick:this.clearSelection}):null,_=function(e){var t=e.value;return v.default.createElement("div",null,v.default.createElement("input",{disabled:a.disabled,readOnly:!0,value:t&&t.format(a.format)||"",placeholder:u,className:a.pickerInputClass}),b,v.default.createElement("span",{className:s+"-picker-icon"}))},y=r,A=(0,D.getLocaleCode)(this.context);y&&A&&y.locale(A);var w=(0,i.default)({},a.style,g);return v.default.createElement("span",{className:(0,C.default)(a.className,a.pickerClass),style:w},v.default.createElement(S.default,(0,i.default)({},a,f,{calendar:m,value:r,prefixCls:s+"-picker-container",style:a.popupStyle}),_))}}]),n}(v.default.Component),t.contextTypes={antLocale:y.default.object},t.defaultProps={prefixCls:"ant-calendar",allowClear:!0,showToday:!0},t;var t}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/extends.js"),i=r(a),s=n("./node_modules/babel-runtime/helpers/defineProperty.js"),l=r(s),c=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),u=r(c),d=n("./node_modules/babel-runtime/helpers/createClass.js"),p=r(d),f=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),h=r(f),m=n("./node_modules/babel-runtime/helpers/inherits.js"),g=r(m);t.default=o;var b=n("./node_modules/react/react.js"),v=r(b),_=n("./node_modules/prop-types/index.js"),y=r(_),A=n("./node_modules/moment/src/moment.js"),x=r(A),w=n("./node_modules/rc-calendar/lib/MonthCalendar.js"),j=r(w),E=n("./node_modules/rc-calendar/lib/Picker.js"),S=r(E),k=n("./node_modules/classnames/index.js"),C=r(k),T=n("./node_modules/omit.js/lib/index.js"),M=r(T),O=n("./node_modules/antd/lib/icon/index.js"),L=r(O),D=n("./node_modules/antd/lib/_util/getLocale.js"),P=n("./node_modules/antd/lib/_util/warning.js"),I=r(P);e.exports=t.default},"./node_modules/antd/lib/date-picker/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/rc-calendar/lib/index.js"),s=r(i),l=n("./node_modules/rc-calendar/lib/MonthCalendar.js"),c=r(l),u=n("./node_modules/antd/lib/date-picker/createPicker.js"),d=r(u),p=n("./node_modules/antd/lib/date-picker/wrapPicker.js"),f=r(p),h=n("./node_modules/antd/lib/date-picker/RangePicker.js"),m=r(h),g=n("./node_modules/antd/lib/date-picker/Calendar.js"),b=r(g),v=(0,f.default)((0,d.default)(s.default)),_=(0,f.default)((0,d.default)(c.default),"YYYY-MM");(0,a.default)(v,{RangePicker:(0,f.default)(m.default),Calendar:b.default,MonthPicker:_}),t.default=v,e.exports=t.default},"./node_modules/antd/lib/date-picker/locale/zh_CN.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/rc-calendar/lib/locale/zh_CN.js"),s=r(i),l=n("./node_modules/antd/lib/time-picker/locale/zh_CN.js"),c=r(l),u=n("./node_modules/moment/src/moment.js"),d=r(u);n("./node_modules/moment/locale/zh-cn.js"),d.default.locale("zh-cn");var p={lang:(0,a.default)({placeholder:"请选择日期",rangePlaceholder:["开始日期","结束日期"]},s.default),timePickerLocale:(0,a.default)({},c.default)};p.lang.ok="确 定",t.default=p,e.exports=t.default},"./node_modules/antd/lib/date-picker/wrapPicker.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){var t=e.showHour,n=e.showMinute,r=e.showSecond,o=e.use12Hours,a=0;return t&&(a+=1),n&&(a+=1),r&&(a+=1),o&&(a+=1),a}function a(e,t){return r=function(t){function r(){(0,d.default)(this,r);var e=(0,m.default)(this,(r.__proto__||Object.getPrototypeOf(r)).apply(this,arguments));return e.handleOpenChange=function(t){var n=e.props,r=n.onOpenChange,o=n.toggleOpen;r(t),o&&((0,C.default)(!1,"`toggleOpen` is deprecated and will be removed in the future, please use `onOpenChange` instead, see: https://u.ant.design/date-picker-on-open-change"),o({open:t}))},e}return(0,b.default)(r,t),(0,f.default)(r,[{key:"render",value:function(){var t,r=this.props,a=r.prefixCls,i=r.inputPrefixCls,l=(0,E.default)((0,c.default)({},a+"-picker",!0)),u=(0,E.default)(a+"-picker-input",i,(t={},(0,c.default)(t,i+"-lg","large"===r.size),(0,c.default)(t,i+"-sm","small"===r.size),(0,c.default)(t,i+"-disabled",r.disabled),t)),d=(0,T.getComponentLocale)(r,this.context,"DatePicker",function(){return n("./node_modules/antd/lib/date-picker/locale/zh_CN.js")}),p=r.showTime&&r.showTime.format||"HH:mm:ss",f=(0,s.default)({},(0,S.generateShowHourMinuteSecond)(p),{format:p,use12Hours:r.showTime&&r.showTime.use12Hours}),h=o(f),m=a+"-time-picker-column-"+h,g=r.showTime?_.default.createElement(w.default,(0,s.default)({},f,r.showTime,{prefixCls:a+"-time-picker",className:m,placeholder:d.timePickerLocale.placeholder,transitionName:"slide-up"})):null;return _.default.createElement(e,(0,s.default)({},r,{pickerClass:l,pickerInputClass:u,locale:d,timePicker:g,onOpenChange:this.handleOpenChange}))}}]),r}(_.default.Component),r.contextTypes={antLocale:A.default.object},r.defaultProps={format:t||"YYYY-MM-DD",transitionName:"slide-up",popupStyle:{},onChange:function(){},onOk:function(){},onOpenChange:function(){},locale:{},prefixCls:"ant-calendar",inputPrefixCls:"ant-input"},r;var r}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/babel-runtime/helpers/extends.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/defineProperty.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/createClass.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),m=r(h),g=n("./node_modules/babel-runtime/helpers/inherits.js"),b=r(g);t.default=a;var v=n("./node_modules/react/react.js"),_=r(v),y=n("./node_modules/prop-types/index.js"),A=r(y),x=n("./node_modules/rc-time-picker/lib/Panel.js"),w=r(x),j=n("./node_modules/classnames/index.js"),E=r(j),S=n("./node_modules/antd/lib/time-picker/index.js"),k=n("./node_modules/antd/lib/_util/warning.js"),C=r(k),T=n("./node_modules/antd/lib/_util/getLocale.js");e.exports=t.default},"./node_modules/antd/lib/dropdown/dropdown-button.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/inherits.js"),f=r(p),h=n("./node_modules/react/react.js"),m=r(h),g=n("./node_modules/antd/lib/button/index.js"),b=r(g),v=n("./node_modules/antd/lib/icon/index.js"),_=r(v),y=n("./node_modules/antd/lib/dropdown/dropdown.js"),A=r(y),x=n("./node_modules/classnames/index.js"),w=r(x),j=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o=0?"slide-down":"slide-up"}},{key:"componentDidMount",value:function(){var e=this.props.overlay,t=e.props;(0,A.default)(!t.mode||"vertical"===t.mode,'mode="'+t.mode+"\" is not supported for Dropdown's Menu.")}},{key:"render",value:function(){var e=this.props,t=e.children,n=e.prefixCls,r=e.overlay,o=e.trigger,i=e.disabled,s=(0,h.cloneElement)(t,{className:(0,_.default)(t.props.className,n+"-trigger"),disabled:i}),l=r&&r.props,c=!!(l&&"selectable"in l)&&l.selectable,u=(0,h.cloneElement)(r,{mode:"vertical",selectable:c});return m.default.createElement(b.default,(0,a.default)({},this.props,{transitionName:this.getTransitionName(),trigger:i?[]:o,overlay:u}),s)}}]),t}(m.default.Component);t.default=x,x.defaultProps={prefixCls:"ant-dropdown",mouseEnterDelay:.15,mouseLeaveDelay:.1,placement:"bottomLeft"},e.exports=t.default},"./node_modules/antd/lib/dropdown/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/antd/lib/dropdown/dropdown.js"),a=r(o),i=n("./node_modules/antd/lib/dropdown/dropdown-button.js"),s=r(i);a.default.Button=s.default,t.default=a.default,e.exports=t.default},"./node_modules/antd/lib/form/Form.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/defineProperty.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/prop-types/index.js"),_=r(v),y=n("./node_modules/classnames/index.js"),A=r(y),x=n("./node_modules/rc-form/lib/createDOMForm.js"),w=r(x),j=n("./node_modules/rc-util/lib/PureRenderMixin.js"),E=r(j),S=n("./node_modules/omit.js/lib/index.js"),k=r(S),C=n("./node_modules/create-react-class/index.js"),T=r(C),M=n("./node_modules/antd/lib/_util/warning.js"),O=r(M),L=n("./node_modules/antd/lib/form/FormItem.js"),D=r(L),P=n("./node_modules/antd/lib/form/constants.js"),I=function(e){function t(e){(0,c.default)(this,t);var n=(0,f.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return(0,O.default)(!e.form,"It is unnecessary to pass `form` to `Form` after antd@1.7.0."),n}return(0,m.default)(t,e),(0,d.default)(t,[{key:"shouldComponentUpdate",value:function(){for(var e=arguments.length,t=Array(e),n=0;n0&&void 0!==arguments[0]?arguments[0]:{},t=(0,w.default)((0,a.default)({fieldNameProp:"id"},e,{fieldMetaProp:P.FIELD_META_PROP}));return function(n){return t((0,T.default)({propTypes:{form:_.default.object.isRequired},childContextTypes:{form:_.default.object.isRequired},getChildContext:function(){return{form:this.props.form}},componentWillMount:function(){this.__getFieldProps=this.props.form.getFieldProps},deprecatedGetFieldProps:function(e,t){return(0,O.default)(!1,"`getFieldProps` is not recommended, please use `getFieldDecorator` instead, see: https://u.ant.design/get-field-decorator"),this.__getFieldProps(e,t)},render:function(){this.props.form.getFieldProps=this.deprecatedGetFieldProps;var t={};return e.withRef?t.ref="formWrappedComponent":this.props.wrappedComponentRef&&(t.ref=this.props.wrappedComponentRef),b.default.createElement(n,(0,a.default)({},this.props,t))}}))}},e.exports=t.default},"./node_modules/antd/lib/form/FormItem.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/extends.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/react-dom/index.js"),_=n("./node_modules/prop-types/index.js"),y=r(_),A=n("./node_modules/classnames/index.js"),x=r(A),w=n("./node_modules/rc-util/lib/PureRenderMixin.js"),j=r(w),E=n("./node_modules/antd/lib/grid/row.js"),S=r(E),k=n("./node_modules/antd/lib/grid/col.js"),C=r(k),T=n("./node_modules/antd/lib/form/constants.js"),M=n("./node_modules/antd/lib/_util/warning.js"),O=r(M),L=function(e){function t(){(0,c.default)(this,t);var e=(0,f.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.onLabelClick=function(){var t=e.props.id||e.getId();if(t){if(1!==document.querySelectorAll('[id="'+t+'"]').length){var n=(0,v.findDOMNode)(e).querySelector('[id="'+t+'"]');n&&n.focus&&n.focus()}}},e}return(0,m.default)(t,e),(0,d.default)(t,[{key:"componentDidMount",value:function(){(0,O.default)(this.getControls(this.props.children,!0).length<=1,"`Form.Item` cannot generate `validateStatus` and `help` automatically, while there are more than one `getFieldDecorator` in it.")}},{key:"shouldComponentUpdate",value:function(){for(var e=arguments.length,t=Array(e),n=0;n0));a++){var i=o[a];(!i.type||i.type!==t&&"FormItem"!==i.type.displayName)&&i.props&&(T.FIELD_META_PROP in i.props?r.push(i):i.props.children&&(r=r.concat(this.getControls(i.props.children,n))))}return r}},{key:"getOnlyControl",value:function(){var e=this.getControls(this.props.children,!1)[0];return void 0!==e?e:null}},{key:"getChildProp",value:function(e){var t=this.getOnlyControl();return t&&t.props&&t.props[e]}},{key:"getId",value:function(){return this.getChildProp("id")}},{key:"getMeta",value:function(){return this.getChildProp(T.FIELD_META_PROP)}},{key:"renderHelp",value:function(){var e=this.props.prefixCls,t=this.getHelpMsg();return t?b.default.createElement("div",{className:e+"-explain",key:"help"},t):null}},{key:"renderExtra",value:function(){var e=this.props,t=e.prefixCls,n=e.extra;return n?b.default.createElement("div",{className:t+"-extra"},n):null}},{key:"getValidateStatus",value:function(){var e=this.context.form,t=e.isFieldValidating,n=e.getFieldError,r=e.getFieldValue,o=this.getId();if(!o)return"";if(t(o))return"validating";if(n(o))return"error";var a=r(o);return void 0!==a&&null!==a&&""!==a?"success":""}},{key:"renderValidateWrapper",value:function(e,t,n){var r="",o=this.context.form,a=this.props,i=void 0===a.validateStatus&&o?this.getValidateStatus():a.validateStatus;return i&&(r=(0,x.default)({"has-feedback":a.hasFeedback||"validating"===i,"has-success":"success"===i,"has-warning":"warning"===i,"has-error":"error"===i,"is-validating":"validating"===i})),b.default.createElement("div",{className:this.props.prefixCls+"-item-control "+r},e,t,n)}},{key:"renderWrapper",value:function(e){var t=this.props,n=t.prefixCls,r=t.wrapperCol,o=(0,x.default)(n+"-item-control-wrapper",r&&r.className);return b.default.createElement(C.default,(0,s.default)({},r,{className:o,key:"wrapper"}),e)}},{key:"isRequired",value:function(){var e=this.props.required;if(void 0!==e)return e;if(this.context.form){return((this.getMeta()||{}).validate||[]).filter(function(e){return!!e.rules}).some(function(e){return e.rules.some(function(e){return e.required})})}return!1}},{key:"renderLabel",value:function(){var e=this.props,t=e.prefixCls,n=e.label,r=e.labelCol,o=e.colon,i=e.id,l=this.context,c=this.isRequired(),u=(0,x.default)(t+"-item-label",r&&r.className),d=(0,x.default)((0,a.default)({},t+"-item-required",c)),p=n;return o&&!l.vertical&&"string"==typeof n&&""!==n.trim()&&(p=n.replace(/[:|:]\s*$/,"")),n?b.default.createElement(C.default,(0,s.default)({},r,{className:u,key:"label"}),b.default.createElement("label",{htmlFor:i||this.getId(),className:d,title:"string"==typeof n?n:"",onClick:this.onLabelClick},p)):null}},{key:"renderChildren",value:function(){var e=this.props,t=b.default.Children.map(e.children,function(e){return e&&"function"==typeof e.type&&!e.props.size?b.default.cloneElement(e,{size:"large"}):e});return[this.renderLabel(),this.renderWrapper(this.renderValidateWrapper(t,this.renderHelp(),this.renderExtra()))]}},{key:"renderFormItem",value:function(e){var t,n=this.props,r=n.prefixCls,o=n.style,i=(t={},(0,a.default)(t,r+"-item",!0),(0,a.default)(t,r+"-item-with-help",!!this.getHelpMsg()),(0,a.default)(t,r+"-item-no-colon",!n.colon),(0,a.default)(t,""+n.className,!!n.className),t);return b.default.createElement(S.default,{className:(0,x.default)(i),style:o},e)}},{key:"render",value:function(){var e=this.renderChildren();return this.renderFormItem(e)}}]),t}(b.default.Component);t.default=L,L.defaultProps={hasFeedback:!1,prefixCls:"ant-form",colon:!0},L.propTypes={prefixCls:y.default.string,label:y.default.oneOfType([y.default.string,y.default.node]),labelCol:y.default.object,help:y.default.oneOfType([y.default.node,y.default.bool]),validateStatus:y.default.oneOf(["","success","warning","error","validating"]),hasFeedback:y.default.bool,wrapperCol:y.default.object,className:y.default.string,id:y.default.string,children:y.default.node,colon:y.default.bool},L.contextTypes={form:y.default.object,vertical:y.default.bool},e.exports=t.default},"./node_modules/antd/lib/form/constants.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.FIELD_META_PROP="data-__meta"},"./node_modules/antd/lib/form/index.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/antd/lib/form/Form.js"),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=o.default,e.exports=t.default},"./node_modules/antd/lib/grid/col.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/extends.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/typeof.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/createClass.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),m=r(h),g=n("./node_modules/babel-runtime/helpers/inherits.js"),b=r(g),v=n("./node_modules/react/react.js"),_=r(v),y=n("./node_modules/prop-types/index.js"),A=r(y),x=n("./node_modules/classnames/index.js"),w=r(x),j=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o0?(0,a.default)({marginLeft:l/-2,marginRight:l/-2},c):c,v=g.Children.map(u,function(e){return e?e.props&&l>0?(0,g.cloneElement)(e,{style:(0,a.default)({paddingLeft:l/2,paddingRight:l/2},e.props.style)}):e:null});return b.default.createElement("div",(0,a.default)({},f,{className:h,style:m}),v)}}]),t}(b.default.Component);t.default=w,w.defaultProps={gutter:0},w.propTypes={type:A.default.string,align:A.default.string,justify:A.default.string,className:A.default.string,children:A.default.node,gutter:A.default.number,prefixCls:A.default.string},e.exports=t.default},"./node_modules/antd/lib/icon/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/defineProperty.js"),s=r(i),l=n("./node_modules/react/react.js"),c=r(l),u=n("./node_modules/classnames/index.js"),d=r(u),p=n("./node_modules/omit.js/lib/index.js"),f=r(p),h=function(e){var t=e.type,n=e.className,r=void 0===n?"":n,o=e.spin,i=(0,d.default)((0,s.default)({anticon:!0,"anticon-spin":!!o||"loading"===t},"anticon-"+t,!0),r);return c.default.createElement("i",(0,a.default)({},(0,f.default)(e,["type","spin"]),{className:i}))};t.default=h,e.exports=t.default},"./node_modules/antd/lib/input-number/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/defineProperty.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/classnames/index.js"),_=r(v),y=n("./node_modules/rc-input-number/lib/index.js"),A=r(y),x=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o1&&void 0!==arguments[1]&&arguments[1],n=e.getAttribute("id")||e.getAttribute("data-reactid")||e.getAttribute("name");if(t&&s[n])return s[n];var r=window.getComputedStyle(e),o=r.getPropertyValue("box-sizing")||r.getPropertyValue("-moz-box-sizing")||r.getPropertyValue("-webkit-box-sizing"),a=parseFloat(r.getPropertyValue("padding-bottom"))+parseFloat(r.getPropertyValue("padding-top")),l=parseFloat(r.getPropertyValue("border-bottom-width"))+parseFloat(r.getPropertyValue("border-top-width")),c=i.map(function(e){return e+":"+r.getPropertyValue(e)}).join(";"),u={sizingStyle:c,paddingSize:a,borderSize:l,boxSizing:o};return t&&n&&(s[n]=u),u}function o(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;l||(l=document.createElement("textarea"),document.body.appendChild(l)),e.getAttribute("wrap")?l.setAttribute("wrap",e.getAttribute("wrap")):l.removeAttribute("wrap");var i=r(e,t),s=i.paddingSize,c=i.borderSize,u=i.boxSizing,d=i.sizingStyle;l.setAttribute("style",d+";"+a),l.value=e.value||e.placeholder||"";var p=-1/0,f=1/0,h=l.scrollHeight,m=void 0;if("border-box"===u?h+=c:"content-box"===u&&(h-=s),null!==n||null!==o){l.value="";var g=l.scrollHeight-s;null!==n&&(p=g*n,"border-box"===u&&(p=p+s+c),h=Math.max(p,h)),null!==o&&(f=g*o,"border-box"===u&&(f=f+s+c),m=h>f?"":"hidden",h=Math.min(f,h))}return o||(m="hidden"),{height:h,minHeight:p,maxHeight:f,overflowY:m}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o;var a="\n min-height:0 !important;\n max-height:none !important;\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important\n",i=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"],s={},l=void 0;e.exports=t.default},"./node_modules/antd/lib/input/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/antd/lib/input/Input.js"),a=r(o),i=n("./node_modules/antd/lib/input/Group.js"),s=r(i),l=n("./node_modules/antd/lib/input/Search.js"),c=r(l),u=n("./node_modules/antd/lib/input/TextArea.js"),d=r(u);a.default.Group=s.default,a.default.Search=c.default,a.default.TextArea=d.default,t.default=a.default,e.exports=t.default},"./node_modules/antd/lib/locale-provider/injectLocale.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/inherits.js"),f=r(p),h=n("./node_modules/prop-types/index.js"),m=r(h);t.default=function(e,t){return function(n){var r=n;return o=function(n){function r(){return(0,s.default)(this,r),(0,d.default)(this,(r.__proto__||Object.getPrototypeOf(r)).apply(this,arguments))}return(0,f.default)(r,n),(0,c.default)(r,[{key:"getLocale",value:function(){var n=this.context.antLocale,r=n&&n[e],o=this.props.locale||{};return(0,a.default)({},t,r||{},o)}}]),r}(n),o.propTypes=r.propTypes,o.defaultProps=r.defaultProps,o.contextTypes=(0,a.default)({},r.context||{},{antLocale:m.default.object}),o;var o}},e.exports=t.default},"./node_modules/antd/lib/menu/MenuItem.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/createClass.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/inherits.js"),d=r(u),p=n("./node_modules/react/react.js"),f=r(p),h=n("./node_modules/rc-menu/lib/index.js"),m=n("./node_modules/prop-types/index.js"),g=r(m),b=n("./node_modules/antd/lib/tooltip/index.js"),v=r(b),_=function(e){function t(){return(0,a.default)(this,t),(0,c.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return(0,d.default)(t,e),(0,s.default)(t,[{key:"render",value:function(){var e=this.context.inlineCollapsed,t=this.props;return f.default.createElement(v.default,{title:e&&1===t.level?t.children:"",placement:"right",overlayClassName:t.rootPrefixCls+"-inline-collapsed-tooltip"},f.default.createElement(h.Item,t))}}]),t}(f.default.Component);_.contextTypes={inlineCollapsed:g.default.bool},_.isMenuItem=1,t.default=_,e.exports=t.default},"./node_modules/antd/lib/menu/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/extends.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/rc-menu/lib/index.js"),_=r(v),y=n("./node_modules/prop-types/index.js"),A=r(y),x=n("./node_modules/classnames/index.js"),w=r(x),j=n("./node_modules/antd/lib/_util/openAnimation.js"),E=r(j),S=n("./node_modules/antd/lib/_util/warning.js"),k=r(S),C=n("./node_modules/antd/lib/menu/MenuItem.js"),T=r(C),M=function(e){function t(e){(0,c.default)(this,t);var n=(0,f.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.inlineOpenKeys=[],n.handleClick=function(e){n.handleOpenChange([]);var t=n.props.onClick;t&&t(e)},n.handleOpenChange=function(e){n.setOpenKeys(e);var t=n.props.onOpenChange;t&&t(e)},(0,k.default)(!("onOpen"in e||"onClose"in e),"`onOpen` and `onClose` are removed, please use `onOpenChange` instead, see: https://u.ant.design/menu-on-open-change."),(0,k.default)(!("inlineCollapsed"in e&&"inline"!==e.mode),"`inlineCollapsed` should only be used when Menu's `mode` is inline.");var r=void 0;return"defaultOpenKeys"in e?r=e.defaultOpenKeys:"openKeys"in e&&(r=e.openKeys),n.state={openKeys:r||[]},n}return(0,m.default)(t,e),(0,d.default)(t,[{key:"getChildContext",value:function(){return{inlineCollapsed:this.getInlineCollapsed()}}},{key:"componentWillReceiveProps",value:function(e,t){if("inline"===this.props.mode&&"inline"!==e.mode&&(this.switchModeFromInline=!0),"openKeys"in e)return void this.setState({openKeys:e.openKeys});(e.inlineCollapsed&&!this.props.inlineCollapsed||t.siderCollapsed&&!this.context.siderCollapsed)&&(this.switchModeFromInline=!!this.state.openKeys.length,this.inlineOpenKeys=this.state.openKeys,this.setState({openKeys:[]})),(!e.inlineCollapsed&&this.props.inlineCollapsed||!t.siderCollapsed&&this.context.siderCollapsed)&&(this.setState({openKeys:this.inlineOpenKeys}),this.inlineOpenKeys=[])}},{key:"setOpenKeys",value:function(e){"openKeys"in this.props||this.setState({openKeys:e})}},{key:"getRealMenuMode",value:function(){var e=this.getInlineCollapsed();if(this.switchModeFromInline&&e&&this.leaveAnimationExecutedWhenInlineCollapsed)return this.leaveAnimationExecutedWhenInlineCollapsed=!1,"inline";var t=this.props.mode;return e?"vertical":t}},{key:"getInlineCollapsed",value:function(){var e=this.props.inlineCollapsed;return void 0!==this.context.siderCollapsed?this.context.siderCollapsed:e}},{key:"getMenuOpenAnimation",value:function(e){var t=this,n=this.props,r=n.openAnimation,o=n.openTransitionName,a=r||o;if(void 0===r&&void 0===o)switch(e){case"horizontal":a="slide-up";break;case"vertical":this.switchModeFromInline?(a="",this.switchModeFromInline=!1):a="zoom-big";break;case"inline":a=(0,s.default)({},E.default,{leave:function(e,n){return E.default.leave(e,function(){t.switchModeFromInline=!1,t.leaveAnimationExecutedWhenInlineCollapsed=!0,t.setState({}),n()})}})}return a}},{key:"render",value:function(){var e=this.props,t=e.prefixCls,n=e.className,r=e.theme,o=this.getRealMenuMode(),i=this.getMenuOpenAnimation(o),l=(0,w.default)(n,t+"-"+r,(0,a.default)({},t+"-inline-collapsed",this.getInlineCollapsed())),c={openKeys:this.state.openKeys,onOpenChange:this.handleOpenChange,className:l,mode:o};return"inline"!==o?(c.onClick=this.handleClick,c.openTransitionName=i):c.openAnimation=i,b.default.createElement(_.default,(0,s.default)({},this.props,c))}}]),t}(b.default.Component);t.default=M,M.Divider=v.Divider,M.Item=T.default,M.SubMenu=v.SubMenu,M.ItemGroup=v.ItemGroup,M.defaultProps={prefixCls:"ant-menu",className:"",theme:"light"},M.childContextTypes={inlineCollapsed:A.default.bool},M.contextTypes={siderCollapsed:A.default.bool},e.exports=t.default},"./node_modules/antd/lib/message/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(){return h=h||c.default.newInstance({prefixCls:g,transitionName:"move-up",style:{top:f},getContainer:b})}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p,n=arguments[2],r=arguments[3],a={info:"info-circle",success:"check-circle",error:"cross-circle",warning:"exclamation-circle",loading:"loading"}[n],i=o();return i.notice({key:m,duration:t,style:{},content:s.default.createElement("div",{className:g+"-custom-content "+g+"-"+n},s.default.createElement(d.default,{type:a}),s.default.createElement("span",null,e)),onClose:r}),function(){var e=m++;return function(){i.removeNotice(e)}}()}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/react/react.js"),s=r(i),l=n("./node_modules/rc-notification/lib/index.js"),c=r(l),u=n("./node_modules/antd/lib/icon/index.js"),d=r(u),p=3,f=void 0,h=void 0,m=1,g="ant-message",b=void 0;t.default={info:function(e,t,n){return a(e,t,"info",n)},success:function(e,t,n){return a(e,t,"success",n)},error:function(e,t,n){return a(e,t,"error",n)},warn:function(e,t,n){return a(e,t,"warning",n)},warning:function(e,t,n){return a(e,t,"warning",n)},loading:function(e,t,n){return a(e,t,"loading",n)},config:function(e){void 0!==e.top&&(f=e.top,h=null),void 0!==e.duration&&(p=e.duration),void 0!==e.prefixCls&&(g=e.prefixCls),void 0!==e.getContainer&&(b=e.getContainer)},destroy:function(){h&&(h.destroy(),h=null)}},e.exports=t.default},"./node_modules/antd/lib/modal/ActionButton.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/createClass.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/inherits.js"),d=r(u),p=n("./node_modules/react/react.js"),f=r(p),h=n("./node_modules/react-dom/index.js"),m=r(h),g=n("./node_modules/antd/lib/button/index.js"),b=r(g),v=function(e){function t(e){(0,a.default)(this,t);var n=(0,c.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.onClick=function(){var e=n.props,t=e.actionFn,r=e.closeModal;if(t){var o=void 0;t.length?o=t(r):(o=t())||r(),o&&o.then&&(n.setState({loading:!0}),o.then(function(){r.apply(void 0,arguments)},function(){n.setState({loading:!1})}))}else r()},n.state={loading:!1},n}return(0,d.default)(t,e),(0,s.default)(t,[{key:"componentDidMount",value:function(){if(this.props.autoFocus){var e=m.default.findDOMNode(this);this.timeoutId=setTimeout(function(){return e.focus()})}}},{key:"componentWillUnmount",value:function(){clearTimeout(this.timeoutId)}},{key:"render",value:function(){var e=this.props,t=e.type,n=e.children,r=this.state.loading;return f.default.createElement(b.default,{type:t,size:"large",onClick:this.onClick,loading:r},n)}}]),t}(f.default.Component);t.default=v,e.exports=t.default},"./node_modules/antd/lib/modal/Modal.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/inherits.js"),f=r(p),h=n("./node_modules/react/react.js"),m=r(h),g=n("./node_modules/rc-dialog/lib/DialogWrap.js"),b=r(g),v=n("./node_modules/prop-types/index.js"),_=r(v),y=n("./node_modules/rc-util/lib/Dom/addEventListener.js"),A=r(y),x=n("./node_modules/antd/lib/button/index.js"),w=r(x),j=void 0,E=void 0,S=function(e){function t(){(0,s.default)(this,t);var e=(0,d.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.handleCancel=function(t){var n=e.props.onCancel;n&&n(t)},e.handleOk=function(t){var n=e.props.onOk;n&&n(t)},e}return(0,f.default)(t,e),(0,c.default)(t,[{key:"componentDidMount",value:function(){E||((0,A.default)(document.documentElement,"click",function(e){j={x:e.pageX,y:e.pageY},setTimeout(function(){return j=null},100)}),E=!0)}},{key:"render",value:function(){var e=this.props,t=e.okText,n=e.okType,r=e.cancelText,o=e.confirmLoading,i=e.footer,s=e.visible;this.context.antLocale&&this.context.antLocale.Modal&&(t=t||this.context.antLocale.Modal.okText,r=r||this.context.antLocale.Modal.cancelText);var l=[m.default.createElement(w.default,{key:"cancel",size:"large",onClick:this.handleCancel},r||"取消"),m.default.createElement(w.default,{key:"confirm",type:n,size:"large",loading:o,onClick:this.handleOk},t||"确定")];return m.default.createElement(b.default,(0,a.default)({},this.props,{footer:void 0===i?l:i,visible:s,mousePosition:j,onClose:this.handleCancel}))}}]),t}(m.default.Component);t.default=S,S.defaultProps={prefixCls:"ant-modal",width:520,transitionName:"zoom",maskTransitionName:"fade",confirmLoading:!1,visible:!1,okType:"primary"},S.propTypes={prefixCls:_.default.string,onOk:_.default.func,onCancel:_.default.func,okText:_.default.node,cancelText:_.default.node,width:_.default.oneOfType([_.default.number,_.default.string]),confirmLoading:_.default.bool,visible:_.default.bool,align:_.default.object,footer:_.default.node,title:_.default.node,closable:_.default.bool},S.contextTypes={antLocale:_.default.object},e.exports=t.default},"./node_modules/antd/lib/modal/confirm.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){function t(){p.default.unmountComponentAtNode(o)&&o.parentNode&&o.parentNode.removeChild(o);for(var e=arguments.length,t=Array(e),r=0;r=100&&!("status"in t)?"success":l||"normal",w=void 0,k=void 0,C=c||function(e){return e+"%"};if(h){var T=void 0,M="circle"===d||"dashboard"===d?"":"-circle";T="exception"===y?c?C(i):_.default.createElement(A.default,{type:"cross"+M}):"success"===y?c?C(i):_.default.createElement(A.default,{type:"check"+M}):C(i),w=_.default.createElement("span",{className:n+"-text"},T)}if("line"===d){var O={width:i+"%",height:p||10};k=_.default.createElement("div",null,_.default.createElement("div",{className:n+"-outer"},_.default.createElement("div",{className:n+"-inner"},_.default.createElement("div",{className:n+"-bg",style:O}))),w)}else if("circle"===d||"dashboard"===d){var L=f||132,D={width:L,height:L,fontSize:.16*L+6},P=p||6,I=b||"dashboard"===d&&"bottom"||"top",R=g||"dashboard"===d&&75;k=_.default.createElement("div",{className:n+"-inner",style:D},_.default.createElement(x.Circle,{percent:i,strokeWidth:P,trailWidth:P,strokeColor:S[y],trailColor:u,prefixCls:n,gapDegree:R,gapPosition:I}),w)}var N=(0,j.default)(n,(e={},(0,s.default)(e,n+"-"+("dashboard"===d&&"circle"||d),!0),(0,s.default)(e,n+"-status-"+y,!0),(0,s.default)(e,n+"-show-info",h),e),r);return _.default.createElement("div",(0,a.default)({},v,{className:N}),k)}}]),t}(_.default.Component);t.default=k,k.defaultProps={type:"line",percent:0,showInfo:!0,trailColor:"#f3f3f3",prefixCls:"ant-progress"},k.propTypes={status:b.default.oneOf(["normal","exception","active","success"]),type:b.default.oneOf(["line","circle","dashboard"]),showInfo:b.default.bool,percent:b.default.number,width:b.default.number,strokeWidth:b.default.number,trailColor:b.default.string,format:b.default.func,gapDegree:b.default.number},e.exports=t.default},"./node_modules/antd/lib/radio/group.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){var t=null,n=!1;return g.default.Children.forEach(e,function(e){e&&e.props&&e.props.checked&&(t=e.props.value,n=!0)}),n?{value:t}:void 0}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/defineProperty.js"),i=r(a),s=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),l=r(s),c=n("./node_modules/babel-runtime/helpers/createClass.js"),u=r(c),d=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),p=r(d),f=n("./node_modules/babel-runtime/helpers/inherits.js"),h=r(f),m=n("./node_modules/react/react.js"),g=r(m),b=n("./node_modules/prop-types/index.js"),v=r(b),_=n("./node_modules/classnames/index.js"),y=r(_),A=n("./node_modules/shallowequal/index.js"),x=r(A),w=n("./node_modules/antd/lib/radio/radio.js"),j=r(w),E=function(e){function t(e){(0,l.default)(this,t);var n=(0,p.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.onRadioChange=function(e){var t=n.state.value,r=e.target.value;"value"in n.props||n.setState({value:r});var o=n.props.onChange;o&&r!==t&&o(e)};var r=void 0;if("value"in e)r=e.value;else if("defaultValue"in e)r=e.defaultValue;else{var a=o(e.children);r=a&&a.value}return n.state={value:r},n}return(0,h.default)(t,e),(0,u.default)(t,[{key:"getChildContext",value:function(){return{radioGroup:{onChange:this.onRadioChange,value:this.state.value,disabled:this.props.disabled,name:this.props.name}}}},{key:"componentWillReceiveProps",value:function(e){if("value"in e)this.setState({value:e.value});else{var t=o(e.children);t&&this.setState({value:t.value})}}},{key:"shouldComponentUpdate",value:function(e,t){return!(0,x.default)(this.props,e)||!(0,x.default)(this.state,t)}},{key:"render",value:function(){var e=this,t=this.props,n=t.prefixCls,r=void 0===n?"ant-radio-group":n,o=t.className,a=void 0===o?"":o,s=t.options,l=(0,y.default)(r,(0,i.default)({},r+"-"+t.size,t.size),a),c=t.children;return s&&s.length>0&&(c=s.map(function(t,n){return"string"==typeof t?g.default.createElement(j.default,{key:n,disabled:e.props.disabled,value:t,onChange:e.onRadioChange,checked:e.state.value===t},t):g.default.createElement(j.default,{key:n,disabled:t.disabled||e.props.disabled,value:t.value,onChange:e.onRadioChange,checked:e.state.value===t.value},t.label)})),g.default.createElement("div",{className:l,style:t.style,onMouseEnter:t.onMouseEnter,onMouseLeave:t.onMouseLeave,id:t.id},c)}}]),t}(g.default.Component);t.default=E,E.defaultProps={disabled:!1},E.childContextTypes={radioGroup:v.default.any},e.exports=t.default},"./node_modules/antd/lib/radio/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.Group=t.Button=void 0;var o=n("./node_modules/antd/lib/radio/radio.js"),a=r(o),i=n("./node_modules/antd/lib/radio/group.js"),s=r(i),l=n("./node_modules/antd/lib/radio/radioButton.js"),c=r(l);a.default.Button=c.default,a.default.Group=s.default,t.Button=c.default,t.Group=s.default,t.default=a.default},"./node_modules/antd/lib/radio/radio.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/extends.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/prop-types/index.js"),_=r(v),y=n("./node_modules/rc-checkbox/lib/index.js"),A=r(y),x=n("./node_modules/classnames/index.js"),w=r(x),j=n("./node_modules/shallowequal/index.js"),E=r(j),S=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o=0:t.getState().selectedRowKeys.indexOf(r)>=0||n.indexOf(r)>=0}},{key:"render",value:function(){var e=this.props,t=e.type,n=e.rowIndex,r=e.disabled,o=e.onChange,a=this.state.checked;return"radio"===t?f.default.createElement(b.default,{disabled:r,onChange:o,value:n,checked:a}):f.default.createElement(m.default,{checked:a,disabled:r,onChange:o})}}]),t}(f.default.Component);t.default=v,e.exports=t.default},"./node_modules/antd/lib/table/SelectionCheckboxAll.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/inherits.js"),f=r(p),h=n("./node_modules/react/react.js"),m=r(h),g=n("./node_modules/antd/lib/checkbox/index.js"),b=r(g),v=n("./node_modules/antd/lib/dropdown/index.js"),_=r(v),y=n("./node_modules/antd/lib/menu/index.js"),A=r(y),x=n("./node_modules/antd/lib/icon/index.js"),w=r(x),j=n("./node_modules/classnames/index.js"),E=r(j),S=function(e){function t(e){(0,s.default)(this,t);var n=(0,d.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.handleSelectAllChagne=function(e){var t=e.target.checked;n.props.onSelect(t?"all":"removeAll",0,null)},n.defaultSelections=e.hideDefaultSelections?[]:[{key:"all",text:e.locale.selectAll,onSelect:function(){}},{key:"invert",text:e.locale.selectInvert,onSelect:function(){}}],n.state={checked:n.getCheckState(e),indeterminate:n.getIndeterminateState(e)},n}return(0,f.default)(t,e),(0,c.default)(t,[{key:"componentDidMount",value:function(){this.subscribe()}},{key:"componentWillReceiveProps",value:function(e){this.setCheckState(e)}},{key:"componentWillUnmount",value:function(){this.unsubscribe&&this.unsubscribe()}},{key:"subscribe",value:function(){var e=this,t=this.props.store;this.unsubscribe=t.subscribe(function(){e.setCheckState(e.props)})}},{key:"checkSelection",value:function(e,t,n){var r=this.props,o=r.store,a=r.getCheckboxPropsByItem,i=r.getRecordKey;return("every"===t||"some"===t)&&(n?e[t](function(e,t){return a(e,t).defaultChecked}):e[t](function(e,t){return o.getState().selectedRowKeys.indexOf(i(e,t))>=0}))}},{key:"setCheckState",value:function(e){var t=this.getCheckState(e),n=this.getIndeterminateState(e);t!==this.state.checked&&this.setState({checked:t}),n!==this.state.indeterminate&&this.setState({indeterminate:n})}},{key:"getCheckState",value:function(e){var t=e.store,n=e.data;return!!n.length&&(t.getState().selectionDirty?this.checkSelection(n,"every",!1):this.checkSelection(n,"every",!1)||this.checkSelection(n,"every",!0))}},{key:"getIndeterminateState",value:function(e){var t=e.store,n=e.data;return!!n.length&&(t.getState().selectionDirty?this.checkSelection(n,"some",!1)&&!this.checkSelection(n,"every",!1):this.checkSelection(n,"some",!1)&&!this.checkSelection(n,"every",!1)||this.checkSelection(n,"some",!0)&&!this.checkSelection(n,"every",!0))}},{key:"renderMenus",value:function(e){var t=this;return e.map(function(e,n){return m.default.createElement(A.default.Item,{key:e.key||n},m.default.createElement("div",{onClick:function(){t.props.onSelect(e.key,n,e.onSelect)}},e.text))})}},{key:"render",value:function(){var e=this.props,t=e.disabled,n=e.prefixCls,r=e.selections,o=e.getPopupContainer,i=this.state,s=i.checked,l=i.indeterminate,c=n+"-selection",u=null;if(r){var d=Array.isArray(r)?this.defaultSelections.concat(r):this.defaultSelections,p=m.default.createElement(A.default,{className:c+"-menu",selectedKeys:[]},this.renderMenus(d));u=d.length>0?m.default.createElement(_.default,{overlay:p,getPopupContainer:o},m.default.createElement("div",{className:c+"-down"},m.default.createElement(w.default,{type:"down"}))):null}return m.default.createElement("div",{className:c},m.default.createElement(b.default,{className:(0,E.default)((0,a.default)({},c+"-select-all-custom",u)),checked:s,indeterminate:l,disabled:t,onChange:this.handleSelectAllChagne}),u)}}]),t}(m.default.Component);t.default=S,e.exports=t.default},"./node_modules/antd/lib/table/Table.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(){}function a(e){e.stopPropagation(),e.nativeEvent.stopImmediatePropagation&&e.nativeEvent.stopImmediatePropagation()}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/babel-runtime/helpers/typeof.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/defineProperty.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/extends.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/createClass.js"),m=r(h),g=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),b=r(g),v=n("./node_modules/babel-runtime/helpers/inherits.js"),_=r(v),y=n("./node_modules/react/react.js"),A=r(y),x=n("./node_modules/react-dom/index.js"),w=n("./node_modules/rc-table/lib/index.js"),j=r(w),E=n("./node_modules/prop-types/index.js"),S=r(E),k=n("./node_modules/classnames/index.js"),C=r(k),T=n("./node_modules/antd/lib/pagination/index.js"),M=r(T),O=n("./node_modules/antd/lib/icon/index.js"),L=r(O),D=n("./node_modules/antd/lib/spin/index.js"),P=r(D),I=n("./node_modules/antd/lib/_util/warning.js"),R=r(I),N=n("./node_modules/antd/lib/table/filterDropdown.js"),B=r(N),F=n("./node_modules/antd/lib/table/createStore.js"),U=r(F),z=n("./node_modules/antd/lib/table/SelectionBox.js"),H=r(z),V=n("./node_modules/antd/lib/table/SelectionCheckboxAll.js"),Y=r(V),W=n("./node_modules/antd/lib/table/Column.js"),G=r(W),Q=n("./node_modules/antd/lib/table/ColumnGroup.js"),q=r(Q),K=n("./node_modules/antd/lib/table/util.js"),X=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o0&&(l.filters=u),"object"===(0,s.default)(r.pagination)&&"current"in r.pagination&&(l.pagination=(0,d.default)({},o,{current:n.state.pagination.current})),n.setState(l,function(){n.store.setState({selectionDirty:!1});var e=n.props.onChange;e&&e.apply(null,n.prepareParamsArguments((0,d.default)({},n.state,{selectionDirty:!1,filters:a,pagination:o})))})},n.handleSelect=function(e,t,r){var o=r.target.checked,a=n.store.getState().selectionDirty?[]:n.getDefaultSelection(),i=n.store.getState().selectedRowKeys.concat(a),s=n.getRecordKey(e,t);o?i.push(n.getRecordKey(e,t)):i=i.filter(function(e){return s!==e}),n.store.setState({selectionDirty:!0}),n.setSelectedRowKeys(i,{selectWay:"onSelect",record:e,checked:o})},n.handleRadioSelect=function(e,t,r){var o=r.target.checked,a=n.store.getState().selectionDirty?[]:n.getDefaultSelection(),i=n.store.getState().selectedRowKeys.concat(a);i=[n.getRecordKey(e,t)],n.store.setState({selectionDirty:!0}),n.setSelectedRowKeys(i,{selectWay:"onSelect",record:e,checked:o})},n.handleSelectRow=function(e,t,r){var o=n.getFlatCurrentPageData(),a=n.store.getState().selectionDirty?[]:n.getDefaultSelection(),i=n.store.getState().selectedRowKeys.concat(a),s=o.filter(function(e,t){return!n.getCheckboxPropsByItem(e,t).disabled}).map(function(e,t){return n.getRecordKey(e,t)}),l=[],c="",u=void 0;switch(e){case"all":s.forEach(function(e){i.indexOf(e)<0&&(i.push(e),l.push(e))}),c="onSelectAll",u=!0;break;case"removeAll":s.forEach(function(e){i.indexOf(e)>=0&&(i.splice(i.indexOf(e),1),l.push(e))}),c="onSelectAll",u=!1;break;case"invert":s.forEach(function(e){i.indexOf(e)<0?i.push(e):i.splice(i.indexOf(e),1),l.push(e),c="onSelectInvert"})}n.store.setState({selectionDirty:!0});var d=n.props.rowSelection,p=2;if(d&&d.hideDefaultSelections&&(p=0),t>=p&&"function"==typeof r)return r(s);n.setSelectedRowKeys(i,{selectWay:c,checked:u,changeRowKeys:l})},n.handlePageChange=function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),o=1;o0){var n=this.getSortStateFromColumns(this.columns);n.sortColumn===this.state.sortColumn&&n.sortOrder===this.state.sortOrder||this.setState(n)}if(this.getFilteredValueColumns(this.columns).length>0){var r=this.getFiltersFromColumns(this.columns),o=(0,d.default)({},this.state.filters);Object.keys(r).forEach(function(e){o[e]=r[e]}),this.isFiltersChanged(o)&&this.setState({filters:o})}}},{key:"setSelectedRowKeys",value:function(e,t){var n=this,r=t.selectWay,o=t.record,a=t.checked,i=t.changeRowKeys,s=this.props.rowSelection,l=void 0===s?{}:s;!l||"selectedRowKeys"in l||this.store.setState({selectedRowKeys:e});var c=this.getFlatData();if(l.onChange||l[r]){var u=c.filter(function(t,r){return e.indexOf(n.getRecordKey(t,r))>=0});if(l.onChange&&l.onChange(e,u),"onSelect"===r&&l.onSelect)l.onSelect(o,a,u);else if("onSelectAll"===r&&l.onSelectAll){var d=c.filter(function(e,t){return i.indexOf(n.getRecordKey(e,t))>=0});l.onSelectAll(a,u,d)}else"onSelectInvert"===r&&l.onSelectInvert&&l.onSelectInvert(e)}}},{key:"hasPagination",value:function(e){return!1!==(e||this.props).pagination}},{key:"isFiltersChanged",value:function(e){var t=this,n=!1;return Object.keys(e).length!==Object.keys(this.state.filters).length?n=!0:Object.keys(e).forEach(function(r){e[r]!==t.state.filters[r]&&(n=!0)}),n}},{key:"getSortOrderColumns",value:function(e){return(0,K.flatFilter)(e||this.columns||[],function(e){return"sortOrder"in e})}},{key:"getFilteredValueColumns",value:function(e){return(0,K.flatFilter)(e||this.columns||[],function(e){return void 0!==e.filteredValue})}},{key:"getFiltersFromColumns",value:function(e){var t=this,n={};return this.getFilteredValueColumns(e).forEach(function(e){n[t.getColumnKey(e)]=e.filteredValue}),n}},{key:"getSortStateFromColumns",value:function(e){var t=this.getSortOrderColumns(e).filter(function(e){return e.sortOrder})[0];return t?{sortColumn:t,sortOrder:t.sortOrder}:{sortColumn:null,sortOrder:null}}},{key:"getSorterFn",value:function(){var e=this.state,t=e.sortOrder,n=e.sortColumn;if(t&&n&&"function"==typeof n.sorter)return function(e,r){var o=n.sorter(e,r);return 0!==o?"descend"===t?-o:o:0}}},{key:"toggleSortOrder",value:function(e,t){var n=this.state,r=n.sortColumn,o=n.sortOrder;this.isSortColumn(t)?o===e?(o="",r=null):o=e:(o=e,r=t);var a={sortOrder:o,sortColumn:r};0===this.getSortOrderColumns().length&&this.setState(a);var i=this.props.onChange;i&&i.apply(null,this.prepareParamsArguments((0,d.default)({},this.state,a)))}},{key:"renderRowSelection",value:function(){var e=this,t=this.props,n=t.prefixCls,r=t.rowSelection,o=this.columns.concat();if(r){var a=this.getFlatCurrentPageData().filter(function(t,n){return!r.getCheckboxProps||!e.getCheckboxPropsByItem(t,n).disabled}),i=(0,C.default)(n+"-selection-column",(0,c.default)({},n+"-selection-column-custom",r.selections)),s={key:"selection-column",render:this.renderSelectionBox(r.type),className:i};if("radio"!==r.type){var l=a.every(function(t,n){return e.getCheckboxPropsByItem(t,n).disabled});s.title=A.default.createElement(Y.default,{store:this.store,locale:this.getLocale(),data:a,getCheckboxPropsByItem:this.getCheckboxPropsByItem,getRecordKey:this.getRecordKey,disabled:l,prefixCls:n,onSelect:this.handleSelectRow,selections:r.selections,hideDefaultSelections:r.hideDefaultSelections,getPopupContainer:this.getPopupContainer})}o.some(function(e){return"left"===e.fixed||!0===e.fixed})&&(s.fixed="left"),o[0]&&"selection-column"===o[0].key?o[0]=s:o.unshift(s)}return o}},{key:"getColumnKey",value:function(e,t){return e.key||e.dataIndex||t}},{key:"getMaxCurrent",value:function(e){var t=this.state.pagination,n=t.current,r=t.pageSize;return(n-1)*r>=e?Math.floor((e-1)/r)+1:n}},{key:"isSortColumn",value:function(e){var t=this.state.sortColumn;return!(!e||!t)&&this.getColumnKey(t)===this.getColumnKey(e)}},{key:"renderColumnsDropdown",value:function(e){var t=this,n=this.props,r=n.prefixCls,o=n.dropdownPrefixCls,a=this.state.sortOrder,i=this.getLocale();return(0,K.treeMap)(e,function(e,n){var s=(0,d.default)({},e),l=t.getColumnKey(s,n),c=void 0,u=void 0;if(s.filters&&s.filters.length>0||s.filterDropdown){var p=t.state.filters[l]||[];c=A.default.createElement(B.default,{locale:i,column:s,selectedKeys:p,confirmFilter:t.handleFilter,prefixCls:r+"-filter",dropdownPrefixCls:o||"ant-dropdown",getPopupContainer:t.getPopupContainer})}if(s.sorter){var f=t.isSortColumn(s);f&&(s.className=s.className||"",a&&(s.className+=" "+r+"-column-sort"));var h=f&&"ascend"===a,m=f&&"descend"===a;u=A.default.createElement("div",{className:r+"-column-sorter"},A.default.createElement("span",{className:r+"-column-sorter-up "+(h?"on":"off"),title:"↑",onClick:function(){return t.toggleSortOrder("ascend",s)}},A.default.createElement(L.default,{type:"caret-up"})),A.default.createElement("span",{className:r+"-column-sorter-down "+(m?"on":"off"),title:"↓",onClick:function(){return t.toggleSortOrder("descend",s)}},A.default.createElement(L.default,{type:"caret-down"})))}return s.title=A.default.createElement("span",null,s.title,u,c),s})}},{key:"renderPagination",value:function(){if(!this.hasPagination())return null;var e="default",t=this.state.pagination;t.size?e=t.size:"middle"!==this.props.size&&"small"!==this.props.size||(e="small");var n=t.total||this.getLocalData().length;return n>0?A.default.createElement(M.default,(0,d.default)({key:"pagination"},t,{className:(0,C.default)(t.className,this.props.prefixCls+"-pagination"),onChange:this.handlePageChange,total:n,size:e,current:this.getMaxCurrent(n),onShowSizeChange:this.handleShowSizeChange})):null}},{key:"prepareParamsArguments",value:function(e){var t=(0,d.default)({},e.pagination);delete t.onChange,delete t.onShowSizeChange;var n=e.filters,r={};return e.sortColumn&&e.sortOrder&&(r.column=e.sortColumn,r.order=e.sortOrder,r.field=e.sortColumn.dataIndex,r.columnKey=this.getColumnKey(e.sortColumn)),[t,n,r]}},{key:"findColumn",value:function(e){var t=this,n=void 0;return(0,K.treeMap)(this.columns,function(r){t.getColumnKey(r)===e&&(n=r)}),n}},{key:"getCurrentPageData",value:function(){var e=this.getLocalData(),t=void 0,n=void 0,r=this.state;return this.hasPagination()?(n=r.pagination.pageSize,t=this.getMaxCurrent(r.pagination.total||e.length)):(n=Number.MAX_VALUE,t=1),(e.length>n||n===Number.MAX_VALUE)&&(e=e.filter(function(e,r){return r>=(t-1)*n&&r=0?delete t[e.key]:t[e.key]=e.keyPath,n.setState({keyPathOfSelectedItem:t})}},n.renderFilterIcon=function(){var e=n.props,t=e.column,r=e.locale,o=e.prefixCls,i=t.filterIcon,s=n.props.selectedKeys.length>0?o+"-selected":"";return i?m.default.cloneElement(i,{title:r.filterTitle,className:(0,w.default)(i.className,(0,a.default)({},o+"-icon",!0))}):m.default.createElement(k.default,{title:r.filterTitle,type:"filter",className:s})};var r="filterDropdownVisible"in e.column&&e.column.filterDropdownVisible;return n.state={selectedKeys:e.selectedKeys,keyPathOfSelectedItem:{},visible:r},n}return(0,f.default)(t,e),(0,c.default)(t,[{key:"componentDidMount",value:function(){var e=this.props.column;this.setNeverShown(e)}},{key:"componentWillReceiveProps",value:function(e){var t=e.column;this.setNeverShown(t);var n={};"selectedKeys"in e&&(n.selectedKeys=e.selectedKeys),"filterDropdownVisible"in t&&(n.visible=t.filterDropdownVisible),Object.keys(n).length>0&&this.setState(n)}},{key:"setVisible",value:function(e){var t=this.props.column;"filterDropdownVisible"in t||this.setState({visible:e}),t.onFilterDropdownVisibleChange&&t.onFilterDropdownVisibleChange(e)}},{key:"confirmFilter",value:function(){this.state.selectedKeys!==this.props.selectedKeys&&this.props.confirmFilter(this.props.column,this.state.selectedKeys)}},{key:"renderMenuItem",value:function(e){var t=this.props.column,n=!("filterMultiple"in t)||t.filterMultiple,r=n?m.default.createElement(T.default,{checked:this.state.selectedKeys.indexOf(e.value.toString())>=0}):m.default.createElement(O.default,{checked:this.state.selectedKeys.indexOf(e.value.toString())>=0});return m.default.createElement(v.Item,{key:e.value},r,m.default.createElement("span",null,e.text))}},{key:"hasSubMenu",value:function(){var e=this.props.column.filters;return(void 0===e?[]:e).some(function(e){return!!(e.children&&e.children.length>0)})}},{key:"renderMenus",value:function(e){var t=this;return e.map(function(e){if(e.children&&e.children.length>0){var n=t.state.keyPathOfSelectedItem,r=Object.keys(n).some(function(t){return n[t].indexOf(e.value)>=0}),o=r?t.props.dropdownPrefixCls+"-submenu-contain-selected":"";return m.default.createElement(v.SubMenu,{title:e.text,className:o,key:e.value.toString()},t.renderMenus(e.children))}return t.renderMenuItem(e)})}},{key:"render",value:function(){var e=this.props,t=e.column,n=e.locale,r=e.prefixCls,o=e.dropdownPrefixCls,i=e.getPopupContainer,s=!("filterMultiple"in t)||t.filterMultiple,l=(0,w.default)((0,a.default)({},o+"-menu-without-submenu",!this.hasSubMenu())),c=t.filterDropdown?m.default.createElement(D.default,null,t.filterDropdown):m.default.createElement(D.default,{className:r+"-dropdown"},m.default.createElement(_.default,{multiple:s,onClick:this.handleMenuItemClick,prefixCls:o+"-menu",className:l,onSelect:this.setSelectedKeys,onDeselect:this.setSelectedKeys,selectedKeys:this.state.selectedKeys},this.renderMenus(t.filters)),m.default.createElement("div",{className:r+"-dropdown-btns"},m.default.createElement("a",{className:r+"-dropdown-link confirm",onClick:this.handleConfirm},n.filterConfirm),m.default.createElement("a",{className:r+"-dropdown-link clear",onClick:this.handleClearFilters},n.filterReset)));return m.default.createElement(E.default,{trigger:["click"],overlay:c,visible:!this.neverShown&&this.state.visible,onVisibleChange:this.onVisibleChange,getPopupContainer:i},this.renderFilterIcon())}}]),t}(m.default.Component);t.default=P,P.defaultProps={handleFilter:function(){},column:{}},e.exports=t.default},"./node_modules/antd/lib/table/index.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/antd/lib/table/Table.js"),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=o.default,e.exports=t.default},"./node_modules/antd/lib/table/util.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"children",n=[];return function e(r){r.forEach(function(r){if(r[t]){var o=(0,d.default)({},r);delete o[t],n.push(o),r[t].length>0&&e(r[t])}else n.push(r)})}(e),n}function a(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"children";return e.map(function(e,r){var o={};return e[n]&&(o[n]=a(e[n],t,n)),(0,d.default)({},t(e,r),o)})}function i(e,t){return e.reduce(function(e,n){if(t(n)&&e.push(n),n.children){var r=i(n.children,t);e.push.apply(e,(0,c.default)(r))}return e},[])}function s(e){var t=[];return f.default.Children.forEach(e,function(e){if(f.default.isValidElement(e)){var n=(0,d.default)({},e.props);e.key&&(n.key=e.key),e.type&&e.type.__ANT_TABLE_COLUMN_GROUP&&(n.children=s(n.children)),t.push(n)}}),t}Object.defineProperty(t,"__esModule",{value:!0});var l=n("./node_modules/babel-runtime/helpers/toConsumableArray.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/extends.js"),d=r(u);t.flatArray=o,t.treeMap=a,t.flatFilter=i,t.normalizeColumns=s;var p=n("./node_modules/react/react.js"),f=r(p)},"./node_modules/antd/lib/tabs/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/defineProperty.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/typeof.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/createClass.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),m=r(h),g=n("./node_modules/babel-runtime/helpers/inherits.js"),b=r(g),v=n("./node_modules/react/react.js"),_=r(v),y=n("./node_modules/react-dom/index.js"),A=n("./node_modules/rc-tabs/lib/index.js"),x=r(A),w=n("./node_modules/rc-tabs/lib/ScrollableInkTabBar.js"),j=r(w),E=n("./node_modules/rc-tabs/lib/TabContent.js"),S=r(E),k=n("./node_modules/classnames/index.js"),C=r(k),T=n("./node_modules/antd/lib/icon/index.js"),M=r(T),O=n("./node_modules/antd/lib/_util/warning.js"),L=r(O),D=n("./node_modules/antd/lib/_util/isFlexSupported.js"),P=r(D),I=function(e){function t(){(0,d.default)(this,t);var e=(0,m.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.createNewTab=function(t){var n=e.props.onEdit;n&&n(t,"add")},e.removeTab=function(t,n){if(n.stopPropagation(),t){var r=e.props.onEdit;r&&r(t,"remove")}},e.handleChange=function(t){var n=e.props.onChange;n&&n(t)},e}return(0,b.default)(t,e),(0,f.default)(t,[{key:"componentDidMount",value:function(){var e=(0,y.findDOMNode)(this);e&&!(0,P.default)()&&-1===e.className.indexOf(" no-flex")&&(e.className+=" no-flex")}},{key:"render",value:function(){var e,t=this,n=this.props,r=n.prefixCls,o=n.className,i=void 0===o?"":o,l=n.size,u=n.type,d=void 0===u?"line":u,p=n.tabPosition,f=n.children,h=n.tabBarExtraContent,m=n.tabBarStyle,g=n.hideAdd,b=n.onTabClick,y=n.onPrevClick,A=n.onNextClick,w=n.animated,E=void 0===w||w,k="object"===(void 0===E?"undefined":(0,c.default)(E))?{inkBarAnimated:E.inkBar,tabPaneAnimated:E.tabPane}:{inkBarAnimated:E,tabPaneAnimated:E},T=k.inkBarAnimated,O=k.tabPaneAnimated;"line"!==d&&(O="animated"in this.props&&O),(0,L.default)(!(d.indexOf("card")>=0&&"small"===l),"Tabs[type=card|editable-card] doesn't have small size, it's by designed.");var D=(0,C.default)(i,(e={},(0,s.default)(e,r+"-mini","small"===l||"mini"===l),(0,s.default)(e,r+"-vertical","left"===p||"right"===p),(0,s.default)(e,r+"-card",d.indexOf("card")>=0),(0,s.default)(e,r+"-"+d,!0),(0,s.default)(e,r+"-no-animation",!O),e)),P=void 0;"editable-card"===d&&(P=[],_.default.Children.forEach(f,function(e,n){var o=e.props.closable;o=void 0===o||o;var a=o?_.default.createElement(M.default,{type:"close",onClick:function(n){return t.removeTab(e.key,n)}}):null;P.push((0,v.cloneElement)(e,{tab:_.default.createElement("div",{className:o?void 0:r+"-tab-unclosable"},e.props.tab,a),key:e.key||n}))}),g||(h=_.default.createElement("span",null,_.default.createElement(M.default,{type:"plus",className:r+"-new-tab",onClick:this.createNewTab}),h))),h=h?_.default.createElement("div",{className:r+"-extra-content"},h):null;var I=function(){return _.default.createElement(j.default,{inkBarAnimated:T,extraContent:h,onTabClick:b,onPrevClick:y,onNextClick:A,style:m})};return _.default.createElement(x.default,(0,a.default)({},this.props,{className:D,tabBarPosition:p,renderTabBar:I,renderTabContent:function(){return _.default.createElement(S.default,{animated:O,animatedWithMargin:!0})},onChange:this.handleChange}),P||f)}}]),t}(_.default.Component);t.default=I,I.TabPane=A.TabPane,I.defaultProps={prefixCls:"ant-tabs",hideAdd:!1},e.exports=t.default},"./node_modules/antd/lib/tag/CheckableTag.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/defineProperty.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/classnames/index.js"),_=r(v),y=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o-1||e.indexOf("h")>-1||e.indexOf("k")>-1,showMinute:e.indexOf("m")>-1,showSecond:e.indexOf("s")>-1}}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/defineProperty.js"),i=r(a),s=n("./node_modules/babel-runtime/helpers/extends.js"),l=r(s),c=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),u=r(c),d=n("./node_modules/babel-runtime/helpers/createClass.js"),p=r(d),f=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),h=r(f),m=n("./node_modules/babel-runtime/helpers/inherits.js"),g=r(m);t.generateShowHourMinuteSecond=o;var b=n("./node_modules/react/react.js"),v=r(b),_=n("./node_modules/moment/src/moment.js"),y=r(_),A=n("./node_modules/rc-time-picker/lib/TimePicker.js"),x=r(A),w=n("./node_modules/classnames/index.js"),j=r(w),E=n("./node_modules/antd/lib/locale-provider/injectLocale.js"),S=r(E),k=n("./node_modules/antd/lib/time-picker/locale/zh_CN.js"),C=r(k),T=function(e){function t(e){(0,u.default)(this,t);var n=(0,h.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.handleChange=function(e){"value"in n.props||n.setState({value:e});var t=n.props,r=t.onChange,o=t.format,a=void 0===o?"HH:mm:ss":o;r&&r(e,e&&e.format(a)||"")},n.handleOpenClose=function(e){var t=e.open,r=n.props.onOpenChange;r&&r(t)},n.saveTimePicker=function(e){n.timePickerRef=e};var r=e.value||e.defaultValue;if(r&&!y.default.isMoment(r))throw new Error("The value/defaultValue of TimePicker must be a moment object after `antd@2.0`, see: https://u.ant.design/time-picker-value");return n.state={value:r},n}return(0,g.default)(t,e),(0,p.default)(t,[{key:"componentWillReceiveProps",value:function(e){"value"in e&&this.setState({value:e.value})}},{key:"focus",value:function(){this.timePickerRef.focus()}},{key:"getDefaultFormat",value:function(){var e=this.props,t=e.format,n=e.use12Hours;return t||(n?"h:mm:ss a":"HH:mm:ss")}},{key:"render",value:function(){var e=(0,l.default)({},this.props);delete e.defaultValue;var t=this.getDefaultFormat(),n=(0,j.default)(e.className,(0,i.default)({},e.prefixCls+"-"+e.size,!!e.size)),r=function(t){return e.addon?v.default.createElement("div",{className:e.prefixCls+"-panel-addon"},e.addon(t)):null};return v.default.createElement(x.default,(0,l.default)({},o(t),e,{ref:this.saveTimePicker,format:t,className:n,value:this.state.value,placeholder:void 0===e.placeholder?this.getLocale().placeholder:e.placeholder,onChange:this.handleChange,onOpen:this.handleOpenClose,onClose:this.handleOpenClose,addon:r}))}}]),t}(v.default.Component);T.defaultProps={prefixCls:"ant-time-picker",align:{offset:[0,-2]},disabled:!1,disabledHours:void 0,disabledMinutes:void 0,disabledSeconds:void 0,hideDisabledOptions:!1,placement:"bottomLeft",transitionName:"slide-up"};var M=(0,S.default)("TimePicker",C.default);t.default=M(T)},"./node_modules/antd/lib/time-picker/locale/zh_CN.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={placeholder:"请选择时间"};t.default=r,e.exports=t.default},"./node_modules/antd/lib/tooltip/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/inherits.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/extends.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/rc-tooltip/lib/index.js"),_=r(v),y=n("./node_modules/classnames/index.js"),A=r(y),x=n("./node_modules/antd/lib/tooltip/placements.js"),w=r(x),j=function(e,t){var n={},r=(0,m.default)({},e);return t.forEach(function(t){e&&t in e&&(n[t]=e[t],delete r[t])}),{picked:n,omited:r}},E=function(e){function t(e){(0,s.default)(this,t);var n=(0,d.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.onVisibleChange=function(e){var t=n.props.onVisibleChange;"visible"in n.props||n.setState({visible:!n.isNoTitle()&&e}),t&&!n.isNoTitle()&&t(e)},n.onPopupAlign=function(e,t){var r=n.getPlacements(),o=Object.keys(r).filter(function(e){return r[e].points[0]===t.points[0]&&r[e].points[1]===t.points[1]})[0];if(o){var a=e.getBoundingClientRect(),i={top:"50%",left:"50%"};o.indexOf("top")>=0||o.indexOf("Bottom")>=0?i.top=a.height-t.offset[1]+"px":(o.indexOf("Top")>=0||o.indexOf("bottom")>=0)&&(i.top=-t.offset[1]+"px"),o.indexOf("left")>=0||o.indexOf("Right")>=0?i.left=a.width-t.offset[0]+"px":(o.indexOf("right")>=0||o.indexOf("Left")>=0)&&(i.left=-t.offset[0]+"px"),e.style.transformOrigin=i.left+" "+i.top}},n.state={visible:!!e.visible||!!e.defaultVisible},n}return(0,f.default)(t,e),(0,c.default)(t,[{key:"componentWillReceiveProps",value:function(e){"visible"in e&&this.setState({visible:e.visible})}},{key:"getPopupDomNode",value:function(){return this.refs.tooltip.getPopupDomNode()}},{key:"getPlacements",value:function(){var e=this.props,t=e.builtinPlacements,n=e.arrowPointAtCenter,r=e.autoAdjustOverflow;return t||(0,w.default)({arrowPointAtCenter:n,verticalArrowShift:8,autoAdjustOverflow:r})}},{key:"isHoverTrigger",value:function(){var e=this.props.trigger;return!e||"hover"===e||!!Array.isArray(e)&&e.indexOf("hover")>=0}},{key:"getDisabledCompatibleChildren",value:function(e){if((e.type.__ANT_BUTTON||"button"===e.type)&&e.props.disabled&&this.isHoverTrigger()){var t=j(e.props.style,["position","left","right","top","bottom","float","display","zIndex"]),n=t.picked,r=t.omited,o=(0,m.default)({display:"inline-block"},n,{cursor:"not-allowed"}),a=(0,m.default)({},r,{pointerEvents:"none"}),i=(0,g.cloneElement)(e,{style:a,className:null});return b.default.createElement("span",{style:o,className:e.props.className},i)}return e}},{key:"isNoTitle",value:function(){var e=this.props,t=e.title,n=e.overlay;return!t&&!n}},{key:"render",value:function(){var e=this.props,t=this.state,n=e.prefixCls,r=e.title,o=e.overlay,i=e.openClassName,s=e.getPopupContainer,l=e.getTooltipContainer,c=e.children,u=t.visible;"visible"in e||!this.isNoTitle()||(u=!1);var d=this.getDisabledCompatibleChildren(b.default.isValidElement(c)?c:b.default.createElement("span",null,c)),p=d.props,f=(0,A.default)(p.className,(0,a.default)({},i||n+"-open",!0));return b.default.createElement(_.default,(0,m.default)({},this.props,{getTooltipContainer:s||l,ref:"tooltip",builtinPlacements:this.getPlacements(),overlay:o||r||"",visible:u,onVisibleChange:this.onVisibleChange,onPopupAlign:this.onPopupAlign}),u?(0,g.cloneElement)(d,{className:f}):d)}}]),t}(b.default.Component);t.default=E,E.defaultProps={prefixCls:"ant-tooltip",placement:"top",transitionName:"zoom-big-fast",mouseEnterDelay:.1,mouseLeaveDelay:.1,arrowPointAtCenter:!1,autoAdjustOverflow:!0},e.exports=t.default},"./node_modules/antd/lib/tooltip/placements.js":function(e,t,n){"use strict";function r(e){return"boolean"==typeof e?e?l:c:(0,i.default)({},c,e)}function o(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.arrowWidth,n=void 0===t?5:t,o=e.horizontalArrowShift,a=void 0===o?16:o,l=e.verticalArrowShift,c=void 0===l?12:l,d=e.autoAdjustOverflow,p=void 0===d||d,f={left:{points:["cr","cl"],offset:[-4,0]},right:{points:["cl","cr"],offset:[4,0]},top:{points:["bc","tc"],offset:[0,-4]},bottom:{points:["tc","bc"],offset:[0,4]},topLeft:{points:["bl","tc"],offset:[-(a+n),-4]},leftTop:{points:["tr","cl"],offset:[-4,-(c+n)]},topRight:{points:["br","tc"],offset:[a+n,-4]},rightTop:{points:["tl","cr"],offset:[4,-(c+n)]},bottomRight:{points:["tr","bc"],offset:[a+n,4]},rightBottom:{points:["bl","cr"],offset:[4,c+n]},bottomLeft:{points:["tl","bc"],offset:[-(a+n),4]},leftBottom:{points:["br","cl"],offset:[-4,c+n]}};return Object.keys(f).forEach(function(t){f[t]=e.arrowPointAtCenter?(0,i.default)({},f[t],{overflow:r(p),targetOffset:u}):(0,i.default)({},s.placements[t],{overflow:r(p)})}),f}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/extends.js"),i=function(e){return e&&e.__esModule?e:{default:e}}(a);t.getOverflowOptions=r,t.default=o;var s=n("./node_modules/rc-tooltip/lib/placements.js"),l={adjustX:1,adjustY:1},c={adjustX:0,adjustY:0},u=[0,0]},"./node_modules/antd/lib/transfer/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(){}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/toConsumableArray.js"),i=r(a),s=n("./node_modules/babel-runtime/helpers/defineProperty.js"),l=r(s),c=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),u=r(c),d=n("./node_modules/babel-runtime/helpers/createClass.js"),p=r(d),f=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),h=r(f),m=n("./node_modules/babel-runtime/helpers/inherits.js"),g=r(m),b=n("./node_modules/react/react.js"),v=r(b),_=n("./node_modules/prop-types/index.js"),y=r(_),A=n("./node_modules/classnames/index.js"),x=r(A),w=n("./node_modules/antd/lib/transfer/list.js"),j=r(w),E=n("./node_modules/antd/lib/transfer/operation.js"),S=r(E),k=n("./node_modules/antd/lib/transfer/search.js"),C=r(k),T=n("./node_modules/antd/lib/locale-provider/injectLocale.js"),M=r(T),O=function(e){function t(e){(0,u.default)(this,t);var n=(0,h.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.moveTo=function(e){var t=n.props,r=t.targetKeys,o=void 0===r?[]:r,a=t.dataSource,i=void 0===a?[]:a,s=t.onChange,c=n.state,u=c.sourceSelectedKeys,d=c.targetSelectedKeys,p="right"===e?u:d,f=p.filter(function(e){return!i.some(function(t){return!(e!==t.key||!t.disabled)})}),h="right"===e?f.concat(o):o.filter(function(e){return-1===f.indexOf(e)}),m="right"===e?"left":"right";n.setState((0,l.default)({},n.getSelectedKeysName(m),[])),n.handleSelectChange(m,[]),s&&s(h,e,f)},n.moveToLeft=function(){return n.moveTo("left")},n.moveToRight=function(){return n.moveTo("right")},n.handleSelectAll=function(e,t,r){var o=n.state[n.getSelectedKeysName(e)]||[],a=t.map(function(e){return e.key}),s=o.filter(function(e){return-1===a.indexOf(e)}),c=[].concat((0,i.default)(o));a.forEach(function(e){-1===c.indexOf(e)&&c.push(e)});var u=r?s:c;n.handleSelectChange(e,u),n.props.selectedKeys||n.setState((0,l.default)({},n.getSelectedKeysName(e),u))},n.handleLeftSelectAll=function(e,t){return n.handleSelectAll("left",e,t)},n.handleRightSelectAll=function(e,t){return n.handleSelectAll("right",e,t)},n.handleFilter=function(e,t){n.setState((0,l.default)({},e+"Filter",t.target.value)),n.props.onSearchChange&&n.props.onSearchChange(e,t)},n.handleLeftFilter=function(e){return n.handleFilter("left",e)},n.handleRightFilter=function(e){return n.handleFilter("right",e)},n.handleClear=function(e){n.setState((0,l.default)({},e+"Filter",""))},n.handleLeftClear=function(){return n.handleClear("left")},n.handleRightClear=function(){return n.handleClear("right")},n.handleSelect=function(e,t,r){var o=n.state,a=o.sourceSelectedKeys,s=o.targetSelectedKeys,c=[].concat("left"===e?(0,i.default)(a):(0,i.default)(s)),u=c.indexOf(t.key);u>-1&&c.splice(u,1),r&&c.push(t.key),n.handleSelectChange(e,c),n.props.selectedKeys||n.setState((0,l.default)({},n.getSelectedKeysName(e),c))},n.handleLeftSelect=function(e,t){return n.handleSelect("left",e,t)},n.handleRightSelect=function(e,t){return n.handleSelect("right",e,t)},n.handleScroll=function(e,t){var r=n.props.onScroll;r&&r(e,t)},n.handleLeftScroll=function(e){return n.handleScroll("left",e)},n.handleRightScroll=function(e){return n.handleScroll("right",e)};var r=e.selectedKeys,o=void 0===r?[]:r,a=e.targetKeys,s=void 0===a?[]:a;return n.state={leftFilter:"",rightFilter:"",sourceSelectedKeys:o.filter(function(e){return-1===s.indexOf(e)}),targetSelectedKeys:o.filter(function(e){return s.indexOf(e)>-1})},n}return(0,g.default)(t,e),(0,p.default)(t,[{key:"componentWillReceiveProps",value:function(e){var t=this.state,n=t.sourceSelectedKeys,r=t.targetSelectedKeys;if((e.targetKeys!==this.props.targetKeys||e.dataSource!==this.props.dataSource)&&(this.splitedDataSource=null,!e.selectedKeys)){var o=e.dataSource,a=e.targetKeys,i=void 0===a?[]:a,s=[],l=[];o.forEach(function(e){var t=e.key;n.includes(t)&&!i.includes(t)&&s.push(t),r.includes(t)&&i.includes(t)&&l.push(t)}),this.setState({sourceSelectedKeys:s,targetSelectedKeys:l})}if(e.selectedKeys){var c=e.targetKeys||[];this.setState({sourceSelectedKeys:e.selectedKeys.filter(function(e){return!c.includes(e)}),targetSelectedKeys:e.selectedKeys.filter(function(e){return c.includes(e)})})}}},{key:"splitDataSource",value:function(e){if(this.splitedDataSource)return this.splitedDataSource;var t=e.dataSource,n=e.rowKey,r=e.targetKeys,o=void 0===r?[]:r,a=[],i=new Array(o.length);return t.forEach(function(e){n&&(e.key=n(e));var t=o.indexOf(e.key);-1!==t?i[t]=e:a.push(e)}),this.splitedDataSource={leftDataSource:a,rightDataSource:i},this.splitedDataSource}},{key:"handleSelectChange",value:function(e,t){var n=this.state,r=n.sourceSelectedKeys,o=n.targetSelectedKeys,a=this.props.onSelectChange;a&&("left"===e?a(t,o):a(r,t))}},{key:"getTitles",value:function(){var e=this.props;return e.titles?e.titles:this.getLocale().titles}},{key:"getSelectedKeysName",value:function(e){return"left"===e?"sourceSelectedKeys":"targetSelectedKeys"}},{key:"render",value:function(){var e=this.getLocale(),t=this.props,n=t.prefixCls,r=void 0===n?"ant-transfer":n,o=t.className,a=t.operations,i=void 0===a?[]:a,s=t.showSearch,l=t.notFoundContent,c=void 0===l?e.notFoundContent:l,u=t.searchPlaceholder,d=void 0===u?e.searchPlaceholder:u,p=t.body,f=t.footer,h=t.listStyle,m=t.filterOption,g=t.render,b=t.lazy,_=this.state,y=_.leftFilter,A=_.rightFilter,w=_.sourceSelectedKeys,E=_.targetSelectedKeys,k=this.splitDataSource(this.props),C=k.leftDataSource,T=k.rightDataSource,M=E.length>0,O=w.length>0,L=(0,x.default)(o,r),D=this.getTitles();return v.default.createElement("div",{className:L},v.default.createElement(j.default,{prefixCls:r+"-list",titleText:D[0],dataSource:C,filter:y,filterOption:m,style:h,checkedKeys:w,handleFilter:this.handleLeftFilter,handleClear:this.handleLeftClear,handleSelect:this.handleLeftSelect,handleSelectAll:this.handleLeftSelectAll,render:g,showSearch:s,searchPlaceholder:d,notFoundContent:c,itemUnit:e.itemUnit,itemsUnit:e.itemsUnit,body:p,footer:f,lazy:b,onScroll:this.handleLeftScroll}),v.default.createElement(S.default,{className:r+"-operation",rightActive:O,rightArrowText:i[0],moveToRight:this.moveToRight,leftActive:M,leftArrowText:i[1],moveToLeft:this.moveToLeft}),v.default.createElement(j.default,{prefixCls:r+"-list",titleText:D[1],dataSource:T,filter:A,filterOption:m,style:h,checkedKeys:E,handleFilter:this.handleRightFilter,handleClear:this.handleRightClear,handleSelect:this.handleRightSelect,handleSelectAll:this.handleRightSelectAll,render:g,showSearch:s,searchPlaceholder:d,notFoundContent:c,itemUnit:e.itemUnit,itemsUnit:e.itemsUnit,body:p,footer:f,lazy:b,onScroll:this.handleRightScroll}))}}]),t}(v.default.Component);O.List=j.default,O.Operation=S.default,O.Search=C.default,O.defaultProps={dataSource:[],render:o,showSearch:!1},O.propTypes={prefixCls:y.default.string,dataSource:y.default.array,render:y.default.func,targetKeys:y.default.array,onChange:y.default.func,height:y.default.number,listStyle:y.default.object,className:y.default.string,titles:y.default.array,operations:y.default.array,showSearch:y.default.bool,filterOption:y.default.func,searchPlaceholder:y.default.string,notFoundContent:y.default.node,body:y.default.func,footer:y.default.func,rowKey:y.default.func,lazy:y.default.oneOfType([y.default.object,y.default.bool])};var L=(0,M.default)("Transfer",{titles:["",""],searchPlaceholder:"Search",notFoundContent:"Not Found"});t.default=L(O),e.exports=t.default},"./node_modules/antd/lib/transfer/item.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/defineProperty.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/classnames/index.js"),_=r(v),y=n("./node_modules/rc-util/lib/PureRenderMixin.js"),A=r(y),x=n("./node_modules/react-lazy-load/lib/LazyLoad.js"),w=r(x),j=n("./node_modules/antd/lib/checkbox/index.js"),E=r(j),S=function(e){function t(){return(0,c.default)(this,t),(0,f.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return(0,m.default)(t,e),(0,d.default)(t,[{key:"shouldComponentUpdate",value:function(){for(var e=arguments.length,t=Array(e),n=0;n=0},n.renderItem=function(e){var t=n.props.render,r=void 0===t?o:t,i=r(e),s=a(i);return{renderedText:s?i.value:i,renderedEl:s?i.label:i}},n.state={mounted:!1},n}return(0,b.default)(t,e),(0,f.default)(t,[{key:"componentDidMount",value:function(){var e=this;this.timer=setTimeout(function(){e.setState({mounted:!0})},0)}},{key:"componentWillUnmount",value:function(){clearTimeout(this.timer),clearTimeout(this.triggerScrollTimer)}},{key:"shouldComponentUpdate",value:function(){for(var e=arguments.length,t=Array(e),n=0;n=0})?"all":"part"}},{key:"render",value:function(){var e=this,t=this.props,n=t.prefixCls,r=t.dataSource,a=t.titleText,i=t.checkedKeys,l=t.lazy,u=t.body,d=void 0===u?o:u,p=t.footer,f=void 0===p?o:p,h=t.showSearch,m=t.style,g=t.filter,b=t.searchPlaceholder,v=t.notFoundContent,y=t.itemUnit,A=t.itemsUnit,w=t.onScroll,E=f((0,c.default)({},this.props)),S=d((0,c.default)({},this.props)),k=(0,x.default)(n,(0,s.default)({},n+"-with-footer",!!E)),T=[],O=[],D=r.map(function(t){var r=e.renderItem(t),o=r.renderedText,a=r.renderedEl;if(g&&g.trim()&&!e.matchFilter(o,t))return null;O.push(t),t.disabled||T.push(t);var s=i.indexOf(t.key)>=0;return _.default.createElement(L.default,{key:t.key,item:t,lazy:l,renderedText:o,renderedEl:a,checked:s,prefixCls:n,onClick:e.handleSelect})}),P=r.length>1?A:y,I=h?_.default.createElement("div",{className:n+"-body-search-wrapper"},_.default.createElement(M.default,{prefixCls:n+"-search",onChange:this.handleFilter,handleClear:this.handleClear,placeholder:b,value:g})):null,R=S||_.default.createElement("div",{className:h?n+"-body "+n+"-body-with-search":n+"-body"},I,_.default.createElement(j.default,{component:"ul",componentProps:{onScroll:w},className:n+"-content",transitionName:this.state.mounted?n+"-content-item-highlight":"",transitionLeave:!1},D),_.default.createElement("div",{className:n+"-body-not-found"},v)),N=E?_.default.createElement("div",{className:n+"-footer"},E):null,B=this.getCheckStatus(T),F="all"===B,U=_.default.createElement(C.default,{ref:"checkbox",checked:F,indeterminate:"part"===B,onChange:function(){return e.props.handleSelectAll(T,F)}});return _.default.createElement("div",{className:k,style:m},_.default.createElement("div",{className:n+"-header"},U,_.default.createElement("span",{className:n+"-header-selected"},_.default.createElement("span",null,(i.length>0?i.length+"/":"")+O.length," ",P),_.default.createElement("span",{className:n+"-header-title"},a))),R,N)}}]),t}(_.default.Component);t.default=I,I.defaultProps={dataSource:[],titleText:"",showSearch:!1,render:o,lazy:{}},e.exports=t.default},"./node_modules/antd/lib/transfer/operation.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(){}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),i=r(a),s=n("./node_modules/babel-runtime/helpers/createClass.js"),l=r(s),c=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),u=r(c),d=n("./node_modules/babel-runtime/helpers/inherits.js"),p=r(d),f=n("./node_modules/react/react.js"),h=r(f),m=n("./node_modules/antd/lib/button/index.js"),g=r(m),b=n("./node_modules/antd/lib/icon/index.js"),v=r(b),_=function(e){function t(){return(0,i.default)(this,t),(0,u.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return(0,p.default)(t,e),(0,l.default)(t,[{key:"render",value:function(){var e=this.props,t=e.moveToLeft,n=e.moveToRight,r=e.leftArrowText,o=e.rightArrowText,a=e.leftActive,i=e.rightActive,s=e.className,l=h.default.createElement(g.default,{type:"primary",size:"small",disabled:!a,onClick:t},h.default.createElement("span",null,h.default.createElement(v.default,{type:"left"}),r)),c=h.default.createElement(g.default,{type:"primary",size:"small",disabled:!i,onClick:n},h.default.createElement("span",null,o,h.default.createElement(v.default,{type:"right"})));return h.default.createElement("div",{className:s},l,c)}}]),t}(h.default.Component);t.default=_,_.defaultProps={leftArrowText:"",rightArrowText:"",moveToLeft:o,moveToRight:o},e.exports=t.default},"./node_modules/antd/lib/transfer/search.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/createClass.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/inherits.js"),d=r(u),p=n("./node_modules/react/react.js"),f=r(p),h=n("./node_modules/antd/lib/icon/index.js"),m=r(h),g=n("./node_modules/antd/lib/input/index.js"),b=r(g),v=function(e){function t(){(0,a.default)(this,t);var e=(0,c.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.handleChange=function(t){var n=e.props.onChange;n&&n(t)},e.handleClear=function(t){t.preventDefault();var n=e.props.handleClear;n&&n(t)},e}return(0,d.default)(t,e),(0,s.default)(t,[{key:"render",value:function(){var e=this.props,t=e.placeholder,n=e.value,r=e.prefixCls,o=n&&n.length>0?f.default.createElement("a",{href:"#",className:r+"-action",onClick:this.handleClear},f.default.createElement(m.default,{type:"cross-circle"})):f.default.createElement("span",{className:r+"-action"},f.default.createElement(m.default,{type:"search"}));return f.default.createElement("div",null,f.default.createElement(b.default,{placeholder:t,className:r,value:n,ref:"input",onChange:this.handleChange}),o)}}]),t}(f.default.Component);t.default=v,v.defaultProps={placeholder:""},e.exports=t.default},"./node_modules/antd/lib/tree-select/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/extends.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/defineProperty.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/rc-tree-select/lib/index.js"),_=r(v),y=n("./node_modules/classnames/index.js"),A=r(y),x=n("./node_modules/antd/lib/locale-provider/injectLocale.js"),w=r(x),j=n("./node_modules/antd/lib/_util/warning.js"),E=r(j),S=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);o0?(t=e.map(function(e){var t=(0,C.fileToObject)(e);return t.status="uploading",t}),r=r.concat(t)):(t=(0,C.fileToObject)(e),t.status="uploading",r.push(t)),n.onChange({file:t,fileList:r}),window.FormData||n.autoUpdateProgress(0,t)},n.onSuccess=function(e,t){n.clearProgressTimer();try{"string"==typeof e&&(e=JSON.parse(e))}catch(e){}var r=n.state.fileList,o=(0,C.getFileItem)(t,r);o&&(o.status="done",o.response=e,n.onChange({file:(0,s.default)({},o),fileList:r}))},n.onProgress=function(e,t){var r=n.state.fileList,o=(0,C.getFileItem)(t,r);o&&(o.percent=e.percent,n.onChange({event:e,file:(0,s.default)({},o),fileList:n.state.fileList}))},n.onError=function(e,t,r){n.clearProgressTimer();var o=n.state.fileList,a=(0,C.getFileItem)(r,o);a&&(a.error=e,a.response=t,a.status="error",n.onChange({file:(0,s.default)({},a),fileList:o}))},n.handleManualRemove=function(e){n.refs.upload.abort(e),e.status="removed",n.handleRemove(e)},n.onChange=function(e){"fileList"in n.props||n.setState({fileList:e.fileList});var t=n.props.onChange;t&&t(e)},n.onFileDrop=function(e){n.setState({dragState:e.type})},n.beforeUpload=function(e,t){if(!n.props.beforeUpload)return!0;var r=n.props.beforeUpload(e,t);return!1===r?(n.onChange({file:e,fileList:(0,E.default)(t.concat(n.state.fileList),function(e){return e.uid})}),!1):!r||!r.then||r},n.state={fileList:e.fileList||e.defaultFileList||[],dragState:"drop"},n}return(0,m.default)(t,e),(0,d.default)(t,[{key:"componentWillUnmount",value:function(){this.clearProgressTimer()}},{key:"getLocale",value:function(){var e={};return this.context.antLocale&&this.context.antLocale.Upload&&(e=this.context.antLocale.Upload),(0,s.default)({},T,e,this.props.locale)}},{key:"autoUpdateProgress",value:function(e,t){var n=this,r=(0,C.genPercentAdd)(),o=0;this.clearProgressTimer(),this.progressTimer=setInterval(function(){o=r(o),n.onProgress({percent:o},t)},200)}},{key:"handleRemove",value:function(e){var t=this,n=this.props.onRemove;Promise.resolve("function"==typeof n?n(e):n).then(function(n){if(!1!==n){var r=(0,C.removeFileItem)(e,t.state.fileList);r&&t.onChange({file:e,fileList:r})}})}},{key:"componentWillReceiveProps",value:function(e){"fileList"in e&&this.setState({fileList:e.fileList||[]})}},{key:"clearProgressTimer",value:function(){clearInterval(this.progressTimer)}},{key:"render",value:function(){var e,t=this.props,n=t.prefixCls,r=void 0===n?"":n,o=t.showUploadList,i=t.listType,l=t.onPreview,c=t.type,u=t.disabled,d=t.children,p=t.className,f=(0,s.default)({onStart:this.onStart,onError:this.onError,onProgress:this.onProgress,onSuccess:this.onSuccess},this.props,{beforeUpload:this.beforeUpload});delete f.className;var h=o.showRemoveIcon,m=o.showPreviewIcon,g=o?b.default.createElement(k.default,{listType:i,items:this.state.fileList,onPreview:l,onRemove:this.handleManualRemove,showRemoveIcon:h,showPreviewIcon:m,locale:this.getLocale()}):null;if("drag"===c){var v,y=(0,w.default)(r,(v={},(0,a.default)(v,r+"-drag",!0),(0,a.default)(v,r+"-drag-uploading",this.state.fileList.some(function(e){return"uploading"===e.status})),(0,a.default)(v,r+"-drag-hover","dragover"===this.state.dragState),(0,a.default)(v,r+"-disabled",u),v));return b.default.createElement("span",{className:p},b.default.createElement("div",{className:y,onDrop:this.onFileDrop,onDragOver:this.onFileDrop,onDragLeave:this.onFileDrop},b.default.createElement(_.default,(0,s.default)({},f,{ref:"upload",className:r+"-btn"}),b.default.createElement("div",{className:r+"-drag-container"},d))),g)}var A=(0,w.default)(r,(e={},(0,a.default)(e,r+"-select",!0),(0,a.default)(e,r+"-select-"+i,!0),(0,a.default)(e,r+"-disabled",u),e)),x=b.default.createElement("div",{className:A,style:{display:d?"":"none"}},b.default.createElement(_.default,(0,s.default)({},f,{ref:"upload"})));return"picture-card"===i?b.default.createElement("span",{className:p},g,x):b.default.createElement("span",{className:p},x,g)}}]),t}(b.default.Component);t.default=M,M.defaultProps={prefixCls:"ant-upload",type:"select",multiple:!1,action:"",data:{},accept:"",beforeUpload:C.T,showUploadList:!0,listType:"text",className:"",disabled:!1,supportServerRender:!0},M.contextTypes={antLocale:A.default.object},e.exports=t.default},"./node_modules/antd/lib/upload/UploadList.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=r(o),i=n("./node_modules/babel-runtime/helpers/extends.js"),s=r(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=r(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),d=r(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=r(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=r(h),g=n("./node_modules/react/react.js"),b=r(g),v=n("./node_modules/rc-animate/lib/Animate.js"),_=r(v),y=n("./node_modules/antd/lib/icon/index.js"),A=r(y),x=n("./node_modules/antd/lib/tooltip/index.js"),w=r(x),j=n("./node_modules/antd/lib/progress/index.js"),E=r(j),S=n("./node_modules/classnames/index.js"),k=r(S),C=function(e,t){var n=new FileReader;n.onloadend=function(){return t(n.result)},n.readAsDataURL(e)},T=function(e){function t(){(0,c.default)(this,t);var e=(0,f.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.handleClose=function(t){var n=e.props.onRemove;n&&n(t)},e.handlePreview=function(t,n){var r=e.props.onPreview;if(r)return n.preventDefault(),r(t)},e}return(0,m.default)(t,e),(0,d.default)(t,[{key:"componentDidUpdate",value:function(){var e=this;"picture"!==this.props.listType&&"picture-card"!==this.props.listType||(this.props.items||[]).forEach(function(t){"undefined"!=typeof document&&"undefined"!=typeof window&&window.FileReader&&window.File&&t.originFileObj instanceof File&&void 0===t.thumbUrl&&(t.thumbUrl="",C(t.originFileObj,function(n){t.thumbUrl=n,e.forceUpdate()}))})}},{key:"render",value:function(){var e,t=this,n=this.props,r=n.prefixCls,o=n.items,i=void 0===o?[]:o,l=n.listType,c=n.showPreviewIcon,u=n.showRemoveIcon,d=n.locale,p=i.map(function(e){var n,o=void 0,i=b.default.createElement(A.default,{type:"uploading"===e.status?"loading":"paper-clip"});if("picture"!==l&&"picture-card"!==l||(i="uploading"===e.status||!e.thumbUrl&&!e.url?"picture-card"===l?b.default.createElement("div",{className:r+"-list-item-uploading-text"},d.uploading):b.default.createElement(A.default,{className:r+"-list-item-thumbnail",type:"picture"}):b.default.createElement("a",{className:r+"-list-item-thumbnail",onClick:function(n){return t.handlePreview(e,n)},href:e.url||e.thumbUrl,target:"_blank",rel:"noopener noreferrer"},b.default.createElement("img",{src:e.thumbUrl||e.url,alt:e.name}))),"uploading"===e.status){var p="percent"in e?b.default.createElement(E.default,(0,s.default)({type:"line"},t.props.progressAttr,{percent:e.percent})):null;o=b.default.createElement("div",{className:r+"-list-item-progress",key:"progress"},p)}var f=(0,k.default)((n={},(0,a.default)(n,r+"-list-item",!0),(0,a.default)(n,r+"-list-item-"+e.status,!0),n)),h=e.url?b.default.createElement("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:r+"-list-item-name",onClick:function(n){return t.handlePreview(e,n)},title:e.name},e.name):b.default.createElement("span",{className:r+"-list-item-name",onClick:function(n){return t.handlePreview(e,n)},title:e.name},e.name),m=e.url||e.thumbUrl?void 0:{pointerEvents:"none",opacity:.5},g=c?b.default.createElement("a",{href:e.url||e.thumbUrl,target:"_blank",rel:"noopener noreferrer",style:m,onClick:function(n){return t.handlePreview(e,n)},title:d.previewFile},b.default.createElement(A.default,{type:"eye-o"})):null,v=u?b.default.createElement(A.default,{type:"delete",title:d.removeFile,onClick:function(){return t.handleClose(e)}}):null,y=u?b.default.createElement(A.default,{type:"cross",title:d.removeFile,onClick:function(){return t.handleClose(e)}}):null,x="picture-card"===l&&"uploading"!==e.status?b.default.createElement("span",{className:r+"-list-item-actions"},g,v):y,j=void 0;j=e.response&&"string"==typeof e.response?e.response:e.error&&e.error.statusText||d.uploadError;var S="error"===e.status?b.default.createElement(w.default,{title:j},i,h):b.default.createElement("span",null,i,h);return b.default.createElement("div",{className:f,key:e.uid},b.default.createElement("div",{className:r+"-list-item-info"},S),x,b.default.createElement(_.default,{transitionName:"fade",component:""},o))}),f=(0,k.default)((e={},(0,a.default)(e,r+"-list",!0),(0,a.default)(e,r+"-list-"+l,!0),e)),h="picture-card"===l?"animate-inline":"animate";return b.default.createElement(_.default,{transitionName:r+"-"+h,component:"div",className:f},p)}}]),t}(b.default.Component);t.default=T,T.defaultProps={listType:"text",progressAttr:{strokeWidth:2,showInfo:!1},prefixCls:"ant-upload",showRemoveIcon:!0,showPreviewIcon:!0},e.exports=t.default},"./node_modules/antd/lib/upload/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/antd/lib/upload/Upload.js"),a=r(o),i=n("./node_modules/antd/lib/upload/Dragger.js"),s=r(i);a.default.Dragger=s.default,t.default=a.default,e.exports=t.default},"./node_modules/antd/lib/upload/utils.js":function(e,t,n){"use strict";function r(){return!0}function o(e){return{lastModified:e.lastModified,lastModifiedDate:e.lastModifiedDate,name:e.filename||e.name,size:e.size,type:e.type,uid:e.uid,response:e.response,error:e.error,percent:0,originFileObj:e,status:null}}function a(){var e=.1;return function(t){var n=t;return n>=.98?n:(n+=e,e-=.01,e<.001&&(e=.001),100*n)}}function i(e,t){var n=void 0!==e.uid?"uid":"name";return t.filter(function(t){return t[n]===e[n]})[0]}function s(e,t){var n=void 0!==e.uid?"uid":"name",r=t.filter(function(t){return t[n]!==e[n]});return r.length===t.length?null:r}Object.defineProperty(t,"__esModule",{value:!0}),t.T=r,t.fileToObject=o,t.genPercentAdd=a,t.getFileItem=i,t.removeFileItem=s},"./node_modules/array-tree-filter/index.js":function(e,t){function n(e,t,n){n=n||{},n.childrenKeyName=n.childrenKeyName||"children";var r,o=e||[],a=[],i=0;do{var r=o.filter(function(e){return t(e,i)})[0];if(!r)break;a.push(r),o=r[n.childrenKeyName]||[],i+=1}while(o.length>0);return a}e.exports=n},"./node_modules/async-validator/lib/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){this.rules=null,this._messages=p.messages,this.define(e)}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/extends.js"),i=r(a),s=n("./node_modules/babel-runtime/helpers/typeof.js"),l=r(s),c=n("./node_modules/async-validator/lib/util.js"),u=n("./node_modules/async-validator/lib/validator/index.js"),d=r(u),p=n("./node_modules/async-validator/lib/messages.js");o.prototype={messages:function(e){return e&&(this._messages=(0,c.deepMerge)((0,p.newMessages)(),e)),this._messages},define:function(e){if(!e)throw new Error("Cannot configure a schema with no rules");if("object"!==(void 0===e?"undefined":(0,l.default)(e))||Array.isArray(e))throw new Error("Rules must be an object");this.rules={};var t=void 0,n=void 0;for(t in e)e.hasOwnProperty(t)&&(n=e[t],this.rules[t]=Array.isArray(n)?n:[n])},validate:function(e){function t(e){var t=void 0,n=void 0,r=[],o={};for(t=0;t1&&void 0!==arguments[1]?arguments[1]:{},a=arguments[2],s=e,u=r,d=a;if("function"==typeof u&&(d=u,u={}),!this.rules||0===Object.keys(this.rules).length)return void(d&&d());if(u.messages){var f=this.messages();f===p.messages&&(f=(0,p.newMessages)()),(0,c.deepMerge)(f,u.messages),u.messages=f}else u.messages=this.messages();var h=void 0,m=void 0,g={};(u.keys||Object.keys(this.rules)).forEach(function(t){h=n.rules[t],m=s[t],h.forEach(function(r){var o=r;"function"==typeof o.transform&&(s===e&&(s=(0,i.default)({},s)),m=s[t]=o.transform(m)),o="function"==typeof o?{validator:o}:(0,i.default)({},o),o.validator=n.getValidationMethod(o),o.field=t,o.fullField=o.fullField||t,o.type=n.getType(o),o.validator&&(g[t]=g[t]||[],g[t].push({rule:o,value:m,source:s,field:t}))})});var b={};(0,c.asyncMap)(g,u,function(e,t){function n(e,t){return(0,i.default)({},t,{fullField:a.fullField+"."+e})}function r(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],l=r;if(Array.isArray(l)||(l=[l]),l.length&&(0,c.warning)("async-validator:",l),l.length&&a.message&&(l=[].concat(a.message)),l=l.map((0,c.complementError)(a)),u.first&&l.length)return b[a.field]=1,t(l);if(s){if(a.required&&!e.value)return l=a.message?[].concat(a.message).map((0,c.complementError)(a)):u.error?[u.error(a,(0,c.format)(u.messages.required,a.field))]:[],t(l);var d={};if(a.defaultField)for(var p in e.value)e.value.hasOwnProperty(p)&&(d[p]=a.defaultField);d=(0,i.default)({},d,e.rule.fields);for(var f in d)if(d.hasOwnProperty(f)){var h=Array.isArray(d[f])?d[f]:[d[f]];d[f]=h.map(n.bind(null,f))}var m=new o(d);m.messages(u.messages),e.rule.options&&(e.rule.options.messages=u.messages,e.rule.options.error=u.error),m.validate(e.value,e.rule.options||u,function(e){t(e&&e.length?l.concat(e):e)})}else t(l)}var a=e.rule,s=!("object"!==a.type&&"array"!==a.type||"object"!==(0,l.default)(a.fields)&&"object"!==(0,l.default)(a.defaultField));s=s&&(a.required||!a.required&&e.value),a.field=e.field;var d=a.validator(a,e.value,r,e.source,u);d&&d.then&&d.then(function(){return r()},function(e){return r(e)})},function(e){t(e)})},getType:function(e){if(void 0===e.type&&e.pattern instanceof RegExp&&(e.type="pattern"),"function"!=typeof e.validator&&e.type&&!d.default.hasOwnProperty(e.type))throw new Error((0,c.format)("Unknown rule type %s",e.type));return e.type||"string"},getValidationMethod:function(e){if("function"==typeof e.validator)return e.validator;var t=Object.keys(e),n=t.indexOf("message");return-1!==n&&t.splice(n,1),1===t.length&&"required"===t[0]?d.default.required:d.default[this.getType(e)]||!1}},o.register=function(e,t){if("function"!=typeof t)throw new Error("Cannot register a validator by type, validator is not a function");d.default[e]=t},o.messages=p.messages,t.default=o,e.exports=t.default},"./node_modules/async-validator/lib/messages.js":function(e,t,n){"use strict";function r(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}Object.defineProperty(t,"__esModule",{value:!0}),t.newMessages=r;t.messages=r()},"./node_modules/async-validator/lib/rule/enum.js":function(e,t,n){"use strict";function r(e,t,n,r,o){e[i]=Array.isArray(e[i])?e[i]:[],-1===e[i].indexOf(t)&&r.push(a.format(o.messages[i],e.fullField,e[i].join(", ")))}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/async-validator/lib/util.js"),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(o),i="enum";t.default=r,e.exports=t.default},"./node_modules/async-validator/lib/rule/index.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/async-validator/lib/rule/required.js"),a=r(o),i=n("./node_modules/async-validator/lib/rule/whitespace.js"),s=r(i),l=n("./node_modules/async-validator/lib/rule/type.js"),c=r(l),u=n("./node_modules/async-validator/lib/rule/range.js"),d=r(u),p=n("./node_modules/async-validator/lib/rule/enum.js"),f=r(p),h=n("./node_modules/async-validator/lib/rule/pattern.js"),m=r(h);t.default={required:a.default,whitespace:s.default,type:c.default,range:d.default,enum:f.default,pattern:m.default},e.exports=t.default},"./node_modules/async-validator/lib/rule/pattern.js":function(e,t,n){"use strict";function r(e,t,n,r,o){if(e.pattern)if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||r.push(a.format(o.messages.pattern.mismatch,e.fullField,t,e.pattern));else if("string"==typeof e.pattern){var i=new RegExp(e.pattern);i.test(t)||r.push(a.format(o.messages.pattern.mismatch,e.fullField,t,e.pattern))}}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/async-validator/lib/util.js"),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(o);t.default=r,e.exports=t.default},"./node_modules/async-validator/lib/rule/range.js":function(e,t,n){"use strict";function r(e,t,n,r,o){var i="number"==typeof e.len,s="number"==typeof e.min,l="number"==typeof e.max,c=t,u=null,d="number"==typeof t,p="string"==typeof t,f=Array.isArray(t);if(d?u="number":p?u="string":f&&(u="array"),!u)return!1;(p||f)&&(c=t.length),i?c!==e.len&&r.push(a.format(o.messages[u].len,e.fullField,e.len)):s&&!l&&ce.max?r.push(a.format(o.messages[u].max,e.fullField,e.max)):s&&l&&(ce.max)&&r.push(a.format(o.messages[u].range,e.fullField,e.min,e.max))}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/async-validator/lib/util.js"),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(o);t.default=r,e.exports=t.default},"./node_modules/async-validator/lib/rule/required.js":function(e,t,n){"use strict";function r(e,t,n,r,o,i){!e.required||n.hasOwnProperty(e.field)&&!a.isEmptyValue(t,i||e.type)||r.push(a.format(o.messages.required,e.fullField))}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/async-validator/lib/util.js"),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(o);t.default=r,e.exports=t.default},"./node_modules/async-validator/lib/rule/type.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t,n,r,o){if(e.required&&void 0===t)return void(0,u.default)(e,t,n,r,o);var a=["integer","float","array","regexp","object","method","email","number","date","url","hex"],s=e.type;a.indexOf(s)>-1?p[s](t)||r.push(l.format(o.messages.types[s],e.fullField,e.type)):s&&(void 0===t?"undefined":(0,i.default)(t))!==e.type&&r.push(l.format(o.messages.types[s],e.fullField,e.type))}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/typeof.js"),i=r(a),s=n("./node_modules/async-validator/lib/util.js"),l=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(s),c=n("./node_modules/async-validator/lib/rule/required.js"),u=r(c),d={email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,url:new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$","i"),hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},p={integer:function(e){return p.number(e)&&parseInt(e,10)===e},float:function(e){return p.number(e)&&!p.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch(e){return!1}},date:function(e){return"function"==typeof e.getTime&&"function"==typeof e.getMonth&&"function"==typeof e.getYear},number:function(e){return!isNaN(e)&&"number"==typeof e},object:function(e){return"object"===(void 0===e?"undefined":(0,i.default)(e))&&!p.array(e)},method:function(e){return"function"==typeof e},email:function(e){return"string"==typeof e&&!!e.match(d.email)&&e.length<255},url:function(e){return"string"==typeof e&&!!e.match(d.url)},hex:function(e){return"string"==typeof e&&!!e.match(d.hex)}};t.default=o,e.exports=t.default},"./node_modules/async-validator/lib/rule/whitespace.js":function(e,t,n){"use strict";function r(e,t,n,r,o){(/^\s+$/.test(t)||""===t)&&r.push(a.format(o.messages.whitespace,e.fullField))}Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/async-validator/lib/util.js"),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(o);t.default=r,e.exports=t.default},"./node_modules/async-validator/lib/util.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(){for(var e=arguments.length,t=Array(e),n=0;n=a)return e;switch(e){case"%s":return String(t[r++]);case"%d":return Number(t[r++]);case"%j":try{return JSON.stringify(t[r++])}catch(e){return"[Circular]"}break;default:return e}}),s=t[r];r=200&&e<300}};s.headers={common:{Accept:"application/json, text/plain, */*"}},o.forEach(["delete","get","head"],function(e){s.headers[e]={}}),o.forEach(["post","put","patch"],function(e){s.headers[e]=o.merge(i)}),e.exports=s}).call(t,n("./node_modules/process/browser.js"))},"./node_modules/axios/lib/helpers/bind.js":function(e,t,n){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),r=0;r>8-s%1*8)){if((n=o.charCodeAt(s+=.75))>255)throw new r;t=t<<8|n}return i}var a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";r.prototype=new Error,r.prototype.code=5,r.prototype.name="InvalidCharacterError",e.exports=o},"./node_modules/axios/lib/helpers/buildURL.js":function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var o=n("./node_modules/axios/lib/utils.js");e.exports=function(e,t,n){if(!t)return e;var a;if(n)a=n(t);else if(o.isURLSearchParams(t))a=t.toString();else{var i=[];o.forEach(t,function(e,t){null!==e&&void 0!==e&&(o.isArray(e)&&(t+="[]"),o.isArray(e)||(e=[e]),o.forEach(e,function(e){o.isDate(e)?e=e.toISOString():o.isObject(e)&&(e=JSON.stringify(e)),i.push(r(t)+"="+r(e))}))}),a=i.join("&")}return a&&(e+=(-1===e.indexOf("?")?"?":"&")+a),e}},"./node_modules/axios/lib/helpers/combineURLs.js":function(e,t,n){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},"./node_modules/axios/lib/helpers/cookies.js":function(e,t,n){"use strict";var r=n("./node_modules/axios/lib/utils.js");e.exports=r.isStandardBrowserEnv()?function(){return{write:function(e,t,n,o,a,i){var s=[];s.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),r.isString(o)&&s.push("path="+o),r.isString(a)&&s.push("domain="+a),!0===i&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},"./node_modules/axios/lib/helpers/isAbsoluteURL.js":function(e,t,n){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},"./node_modules/axios/lib/helpers/isURLSameOrigin.js":function(e,t,n){"use strict";var r=n("./node_modules/axios/lib/utils.js");e.exports=r.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(o.setAttribute("href",t),t=o.href),o.setAttribute("href",t),{href:o.href,protocol:o.protocol?o.protocol.replace(/:$/,""):"",host:o.host,search:o.search?o.search.replace(/^\?/,""):"",hash:o.hash?o.hash.replace(/^#/,""):"",hostname:o.hostname,port:o.port,pathname:"/"===o.pathname.charAt(0)?o.pathname:"/"+o.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),o=document.createElement("a");return t=e(window.location.href),function(n){var o=r.isString(n)?e(n):n;return o.protocol===t.protocol&&o.host===t.host}}():function(){return function(){return!0}}()},"./node_modules/axios/lib/helpers/normalizeHeaderName.js":function(e,t,n){"use strict";var r=n("./node_modules/axios/lib/utils.js");e.exports=function(e,t){r.forEach(e,function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])})}},"./node_modules/axios/lib/helpers/parseHeaders.js":function(e,t,n){"use strict";var r=n("./node_modules/axios/lib/utils.js"),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,a,i={};return e?(r.forEach(e.split("\n"),function(e){if(a=e.indexOf(":"),t=r.trim(e.substr(0,a)).toLowerCase(),n=r.trim(e.substr(a+1)),t){if(i[t]&&o.indexOf(t)>=0)return;i[t]="set-cookie"===t?(i[t]?i[t]:[]).concat([n]):i[t]?i[t]+", "+n:n}}),i):i}},"./node_modules/axios/lib/helpers/spread.js":function(e,t,n){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},"./node_modules/axios/lib/utils.js":function(e,t,n){"use strict";function r(e){return"[object Array]"===j.call(e)}function o(e){return"[object ArrayBuffer]"===j.call(e)}function a(e){return"undefined"!=typeof FormData&&e instanceof FormData}function i(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function s(e){return"string"==typeof e}function l(e){return"number"==typeof e}function c(e){return void 0===e}function u(e){return null!==e&&"object"==typeof e}function d(e){return"[object Date]"===j.call(e)}function p(e){return"[object File]"===j.call(e)}function f(e){return"[object Blob]"===j.call(e)}function h(e){return"[object Function]"===j.call(e)}function m(e){return u(e)&&h(e.pipe)}function g(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams}function b(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function v(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)}function _(e,t){if(null!==e&&void 0!==e)if("object"!=typeof e&&(e=[e]),r(e))for(var n=0,o=e.length;n=0;--r){var o=this.tryEntries[r],a=o.completion;if("root"===o.tryLoc)return t("end");if(o.tryLoc<=this.prev){var i=v.call(o,"catchLoc"),s=v.call(o,"finallyLoc");if(i&&s){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&v.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),p(n),T}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;p(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:h(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=g),T}}}("object"==typeof t?t:"object"==typeof window?window:"object"==typeof self?self:this)}).call(t,n("./node_modules/webpack/buildin/global.js"))},"./node_modules/babel-runtime/core-js/array/from.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/array/from.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/get-iterator.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/get-iterator.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/is-iterable.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/is-iterable.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/assign.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/object/assign.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/create.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/object/create.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/define-property.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/object/define-property.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/object/get-own-property-descriptor.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/get-prototype-of.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/object/get-prototype-of.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/set-prototype-of.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/object/set-prototype-of.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/symbol.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/symbol/index.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/symbol/iterator.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/symbol/iterator.js"),__esModule:!0}},"./node_modules/babel-runtime/helpers/classCallCheck.js":function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},"./node_modules/babel-runtime/helpers/createClass.js":function(e,t,n){"use strict";t.__esModule=!0;var r=n("./node_modules/babel-runtime/core-js/object/define-property.js"),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=function(){function e(e,t){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}},"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js":function(e,t,n){"use strict";t.__esModule=!0;var r=n("./node_modules/babel-runtime/helpers/typeof.js"),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":(0,o.default)(t))&&"function"!=typeof t?e:t}},"./node_modules/babel-runtime/helpers/slicedToArray.js":function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=n("./node_modules/babel-runtime/core-js/is-iterable.js"),a=r(o),i=n("./node_modules/babel-runtime/core-js/get-iterator.js"),s=r(i);t.default=function(){function e(e,t){var n=[],r=!0,o=!1,a=void 0;try{for(var i,l=(0,s.default)(e);!(r=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){o=!0,a=e}finally{try{!r&&l.return&&l.return()}finally{if(o)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if((0,a.default)(Object(t)))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},"./node_modules/babel-runtime/helpers/toConsumableArray.js":function(e,t,n){"use strict";t.__esModule=!0;var r=n("./node_modules/babel-runtime/core-js/array/from.js"),o=function(e){return e&&e.__esModule?e:{default:e}}(r);t.default=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t]/g)||[]).length<=0)return!0;return e(n).length>0}catch(e){return!1}},_process_options:function(t){this._o=e.extend({},this._o,t);var o=this.o=e.extend({},this._o),a=o.language;g[a]||(a=a.split("-")[0],g[a]||(a=h.language)),o.language=a,o.startView=this._resolveViewName(o.startView),o.minViewMode=this._resolveViewName(o.minViewMode),o.maxViewMode=this._resolveViewName(o.maxViewMode),o.startView=Math.max(this.o.minViewMode,Math.min(this.o.maxViewMode,o.startView)),!0!==o.multidate&&(o.multidate=Number(o.multidate)||!1,!1!==o.multidate&&(o.multidate=Math.max(0,o.multidate))),o.multidateSeparator=String(o.multidateSeparator),o.weekStart%=7,o.weekEnd=(o.weekStart+6)%7;var i=b.parseFormat(o.format);o.startDate!==-1/0&&(o.startDate?o.startDate instanceof Date?o.startDate=this._local_to_utc(this._zero_time(o.startDate)):o.startDate=b.parseDate(o.startDate,i,o.language,o.assumeNearbyYear):o.startDate=-1/0),o.endDate!==1/0&&(o.endDate?o.endDate instanceof Date?o.endDate=this._local_to_utc(this._zero_time(o.endDate)):o.endDate=b.parseDate(o.endDate,i,o.language,o.assumeNearbyYear):o.endDate=1/0),o.daysOfWeekDisabled=this._resolveDaysOfWeek(o.daysOfWeekDisabled||[]),o.daysOfWeekHighlighted=this._resolveDaysOfWeek(o.daysOfWeekHighlighted||[]),o.datesDisabled=o.datesDisabled||[],e.isArray(o.datesDisabled)||(o.datesDisabled=o.datesDisabled.split(",")),o.datesDisabled=e.map(o.datesDisabled,function(e){return b.parseDate(e,i,o.language,o.assumeNearbyYear)});var s=String(o.orientation).toLowerCase().split(/\s+/g),l=o.orientation.toLowerCase();if(s=e.grep(s,function(e){return/^auto|left|right|top|bottom$/.test(e)}),o.orientation={x:"auto",y:"auto"},l&&"auto"!==l)if(1===s.length)switch(s[0]){case"top":case"bottom":o.orientation.y=s[0];break;case"left":case"right":o.orientation.x=s[0]}else l=e.grep(s,function(e){return/^left|right$/.test(e)}),o.orientation.x=l[0]||"auto",l=e.grep(s,function(e){return/^top|bottom$/.test(e)}),o.orientation.y=l[0]||"auto";else;if(o.defaultViewDate instanceof Date||"string"==typeof o.defaultViewDate)o.defaultViewDate=b.parseDate(o.defaultViewDate,i,o.language,o.assumeNearbyYear);else if(o.defaultViewDate){var c=o.defaultViewDate.year||(new Date).getFullYear(),u=o.defaultViewDate.month||0,d=o.defaultViewDate.day||1;o.defaultViewDate=n(c,u,d)}else o.defaultViewDate=r()},_events:[],_secondaryEvents:[],_applyEvents:function(e){for(var n,r,o,a=0;ao?(this.picker.addClass("datepicker-orient-right"),p+=d-t):this.o.rtl?this.picker.addClass("datepicker-orient-right"):this.picker.addClass("datepicker-orient-left");var h,m=this.o.orientation.y;if("auto"===m&&(h=-a+f-n,m=h<0?"bottom":"top"),this.picker.addClass("datepicker-orient-"+m),"top"===m?f-=n+parseInt(this.picker.css("padding-top")):f+=u,this.o.rtl){var g=o-(p+d);this.picker.css({top:f,right:g,zIndex:l})}else this.picker.css({top:f,left:p,zIndex:l});return this},_allow_update:!0,update:function(){if(!this._allow_update)return this;var t=this.dates.copy(),n=[],r=!1;return arguments.length?(e.each(arguments,e.proxy(function(e,t){t instanceof Date&&(t=this._local_to_utc(t)),n.push(t)},this)),r=!0):(n=this.isInput?this.element.val():this.element.data("date")||this.inputField.val(),n=n&&this.o.multidate?n.split(this.o.multidateSeparator):[n],delete this.element.data().date),n=e.map(n,e.proxy(function(e){return b.parseDate(e,this.o.format,this.o.language,this.o.assumeNearbyYear)},this)),n=e.grep(n,e.proxy(function(e){return!this.dateWithinRange(e)||!e},this),!0),this.dates.replace(n),this.o.updateViewDate&&(this.dates.length?this.viewDate=new Date(this.dates.get(-1)):this.viewDatethis.o.endDate?this.viewDate=new Date(this.o.endDate):this.viewDate=this.o.defaultViewDate),r?(this.setValue(),this.element.change()):this.dates.length&&String(t)!==String(this.dates)&&r&&(this._trigger("changeDate"),this.element.change()),!this.dates.length&&t.length&&(this._trigger("clearDate"),this.element.change()),this.fill(),this},fillDow:function(){if(this.o.showWeekDays){var t=this.o.weekStart,n="
    ";for(this.o.calendarWeeks&&(n+='');t";n+="",this.picker.find(".datepicker-days thead").append(n)}},fillMonths:function(){for(var e,t=this._utc_to_local(this.viewDate),n="",r=0;r<12;r++)e=t&&t.getMonth()===r?" focused":"",n+=''+g[this.o.language].monthsShort[r]+"";this.picker.find(".datepicker-months td").html(n)},setRange:function(t){t&&t.length?this.range=e.map(t,function(e){return e.valueOf()}):delete this.range,this.fill()},getClassNames:function(t){var n=[],a=this.viewDate.getUTCFullYear(),i=this.viewDate.getUTCMonth(),s=r();return t.getUTCFullYear()a||t.getUTCFullYear()===a&&t.getUTCMonth()>i)&&n.push("new"),this.focusDate&&t.valueOf()===this.focusDate.valueOf()&&n.push("focused"),this.o.todayHighlight&&o(t,s)&&n.push("today"),-1!==this.dates.contains(t)&&n.push("active"),this.dateWithinRange(t)||n.push("disabled"),this.dateIsDisabled(t)&&n.push("disabled","disabled-date"),-1!==e.inArray(t.getUTCDay(),this.o.daysOfWeekHighlighted)&&n.push("highlighted"),this.range&&(t>this.range[0]&&ts)&&c.push("disabled"),y===b&&c.push("focused"),l!==e.noop&&(d=l(new Date(y,0,1)),d===t?d={}:"boolean"==typeof d?d={enabled:d}:"string"==typeof d&&(d={classes:d}),!1===d.enabled&&c.push("disabled"),d.classes&&(c=c.concat(d.classes.split(/\s+/))),d.tooltip&&(u=d.tooltip)),p+='"+y+"";h.find(".datepicker-switch").text(m+"-"+g),h.find("td").html(p)},fill:function(){var r,o,a=new Date(this.viewDate),i=a.getUTCFullYear(),s=a.getUTCMonth(),l=this.o.startDate!==-1/0?this.o.startDate.getUTCFullYear():-1/0,c=this.o.startDate!==-1/0?this.o.startDate.getUTCMonth():-1/0,u=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,d=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,p=g[this.o.language].today||g.en.today||"",f=g[this.o.language].clear||g.en.clear||"",h=g[this.o.language].titleFormat||g.en.titleFormat;if(!isNaN(i)&&!isNaN(s)){this.picker.find(".datepicker-days .datepicker-switch").text(b.formatDate(a,h,this.o.language)),this.picker.find("tfoot .today").text(p).css("display",!0===this.o.todayBtn||"linked"===this.o.todayBtn?"table-cell":"none"),this.picker.find("tfoot .clear").text(f).css("display",!0===this.o.clearBtn?"table-cell":"none"),this.picker.find("thead .datepicker-title").text(this.o.title).css("display","string"==typeof this.o.title&&""!==this.o.title?"table-cell":"none"),this.updateNavArrows(),this.fillMonths();var m=n(i,s,0),v=m.getUTCDate();m.setUTCDate(v-(m.getUTCDay()-this.o.weekStart+7)%7);var y=new Date(m);m.getUTCFullYear()<100&&y.setUTCFullYear(m.getUTCFullYear()),y.setUTCDate(y.getUTCDate()+42),y=y.valueOf();for(var _,A,x=[];m.valueOf()"),this.o.calendarWeeks)){var w=new Date(+m+(this.o.weekStart-_-7)%7*864e5),j=new Date(Number(w)+(11-w.getUTCDay())%7*864e5),E=new Date(Number(E=n(j.getUTCFullYear(),0,1))+(11-E.getUTCDay())%7*864e5),S=(j-E)/864e5/7+1;x.push('")}A=this.getClassNames(m),A.push("day");var k=m.getUTCDate();this.o.beforeShowDay!==e.noop&&(o=this.o.beforeShowDay(this._utc_to_local(m)),o===t?o={}:"boolean"==typeof o?o={enabled:o}:"string"==typeof o&&(o={classes:o}),!1===o.enabled&&A.push("disabled"),o.classes&&(A=A.concat(o.classes.split(/\s+/))),o.tooltip&&(r=o.tooltip),o.content&&(k=o.content)),A=e.isFunction(e.uniqueSort)?e.uniqueSort(A):e.unique(A),x.push('"),r=null,_===this.o.weekEnd&&x.push(""),m.setUTCDate(m.getUTCDate()+1)}this.picker.find(".datepicker-days tbody").html(x.join(""));var C=g[this.o.language].monthsTitle||g.en.monthsTitle||"Months",T=this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode<2?C:i).end().find("tbody span").removeClass("active");if(e.each(this.dates,function(e,t){t.getUTCFullYear()===i&&T.eq(t.getUTCMonth()).addClass("active")}),(iu)&&T.addClass("disabled"),i===l&&T.slice(0,c).addClass("disabled"),i===u&&T.slice(d+1).addClass("disabled"),this.o.beforeShowMonth!==e.noop){var M=this;e.each(T,function(n,r){var o=new Date(i,n,1),a=M.o.beforeShowMonth(o);a===t?a={}:"boolean"==typeof a?a={enabled:a}:"string"==typeof a&&(a={classes:a}),!1!==a.enabled||e(r).hasClass("disabled")||e(r).addClass("disabled"),a.classes&&e(r).addClass(a.classes),a.tooltip&&e(r).prop("title",a.tooltip)})}this._fill_yearsView(".datepicker-years","year",10,i,l,u,this.o.beforeShowYear),this._fill_yearsView(".datepicker-decades","decade",100,i,l,u,this.o.beforeShowDecade),this._fill_yearsView(".datepicker-centuries","century",1e3,i,l,u,this.o.beforeShowCentury)}},updateNavArrows:function(){if(this._allow_update){var e,t,n=new Date(this.viewDate),r=n.getUTCFullYear(),o=n.getUTCMonth(),a=this.o.startDate!==-1/0?this.o.startDate.getUTCFullYear():-1/0,i=this.o.startDate!==-1/0?this.o.startDate.getUTCMonth():-1/0,s=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,l=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,c=1;switch(this.viewMode){case 4:c*=10;case 3:c*=10;case 2:c*=10;case 1:e=Math.floor(r/c)*cs;break;case 0:e=r<=a&&o=s&&o>l}this.picker.find(".prev").toggleClass("disabled",e),this.picker.find(".next").toggleClass("disabled",t)}},click:function(t){t.preventDefault(),t.stopPropagation();var o,a,i,s;o=e(t.target),o.hasClass("datepicker-switch")&&this.viewMode!==this.o.maxViewMode&&this.setViewMode(this.viewMode+1),o.hasClass("today")&&!o.hasClass("day")&&(this.setViewMode(0),this._setDate(r(),"linked"===this.o.todayBtn?null:"view")),o.hasClass("clear")&&this.clearDates(),o.hasClass("disabled")||(o.hasClass("month")||o.hasClass("year")||o.hasClass("decade")||o.hasClass("century"))&&(this.viewDate.setUTCDate(1),a=1,1===this.viewMode?(s=o.parent().find("span").index(o),i=this.viewDate.getUTCFullYear(),this.viewDate.setUTCMonth(s)):(s=0,i=Number(o.text()),this.viewDate.setUTCFullYear(i)),this._trigger(b.viewModes[this.viewMode-1].e,this.viewDate),this.viewMode===this.o.minViewMode?this._setDate(n(i,s,a)):(this.setViewMode(this.viewMode-1),this.fill())),this.picker.is(":visible")&&this._focused_from&&this._focused_from.focus(),delete this._focused_from},dayCellClick:function(t){var n=e(t.currentTarget),r=n.data("date"),o=new Date(r);this.o.updateViewDate&&(o.getUTCFullYear()!==this.viewDate.getUTCFullYear()&&this._trigger("changeYear",this.viewDate),o.getUTCMonth()!==this.viewDate.getUTCMonth()&&this._trigger("changeMonth",this.viewDate)),this._setDate(o)},navArrowsClick:function(t){var n=e(t.currentTarget),r=n.hasClass("prev")?-1:1;0!==this.viewMode&&(r*=12*b.viewModes[this.viewMode].navStep),this.viewDate=this.moveMonth(this.viewDate,r),this._trigger(b.viewModes[this.viewMode].e,this.viewDate),this.fill()},_toggle_multidate:function(e){var t=this.dates.contains(e);if(e||this.dates.clear(),-1!==t?(!0===this.o.multidate||this.o.multidate>1||this.o.toggleActive)&&this.dates.remove(t):!1===this.o.multidate?(this.dates.clear(),this.dates.push(e)):this.dates.push(e),"number"==typeof this.o.multidate)for(;this.dates.length>this.o.multidate;)this.dates.remove(0)},_setDate:function(e,t){t&&"date"!==t||this._toggle_multidate(e&&new Date(e)),(!t&&this.o.updateViewDate||"view"===t)&&(this.viewDate=e&&new Date(e)),this.fill(),this.setValue(),t&&"view"===t||this._trigger("changeDate"),this.inputField.trigger("change"),!this.o.autoclose||t&&"date"!==t||this.hide()},moveDay:function(e,t){var n=new Date(e);return n.setUTCDate(e.getUTCDate()+t),n},moveWeek:function(e,t){return this.moveDay(e,7*t)},moveMonth:function(e,t){if(!i(e))return this.o.defaultViewDate;if(!t)return e;var n,r,o=new Date(e.valueOf()),a=o.getUTCDate(),s=o.getUTCMonth(),l=Math.abs(t);if(t=t>0?1:-1,1===l)r=-1===t?function(){return o.getUTCMonth()===s}:function(){return o.getUTCMonth()!==n},n=s+t,o.setUTCMonth(n),n=(n+12)%12;else{for(var c=0;c0},dateWithinRange:function(e){return e>=this.o.startDate&&e<=this.o.endDate},keydown:function(e){if(!this.picker.is(":visible"))return void(40!==e.keyCode&&27!==e.keyCode||(this.show(),e.stopPropagation()));var t,n,r=!1,o=this.focusDate||this.viewDate;switch(e.keyCode){case 27:this.focusDate?(this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill()):this.hide(),e.preventDefault(),e.stopPropagation();break;case 37:case 38:case 39:case 40:if(!this.o.keyboardNavigation||7===this.o.daysOfWeekDisabled.length)break;t=37===e.keyCode||38===e.keyCode?-1:1,0===this.viewMode?e.ctrlKey?(n=this.moveAvailableDate(o,t,"moveYear"))&&this._trigger("changeYear",this.viewDate):e.shiftKey?(n=this.moveAvailableDate(o,t,"moveMonth"))&&this._trigger("changeMonth",this.viewDate):37===e.keyCode||39===e.keyCode?n=this.moveAvailableDate(o,t,"moveDay"):this.weekOfDateIsDisabled(o)||(n=this.moveAvailableDate(o,t,"moveWeek")):1===this.viewMode?(38!==e.keyCode&&40!==e.keyCode||(t*=4),n=this.moveAvailableDate(o,t,"moveMonth")):2===this.viewMode&&(38!==e.keyCode&&40!==e.keyCode||(t*=4),n=this.moveAvailableDate(o,t,"moveYear")),n&&(this.focusDate=this.viewDate=n,this.setValue(),this.fill(),e.preventDefault());break;case 13:if(!this.o.forceParse)break;o=this.focusDate||this.dates.get(-1)||this.viewDate,this.o.keyboardNavigation&&(this._toggle_multidate(o),r=!0),this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.setValue(),this.fill(),this.picker.is(":visible")&&(e.preventDefault(),e.stopPropagation(),this.o.autoclose&&this.hide());break;case 9:this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill(),this.hide()}r&&(this.dates.length?this._trigger("changeDate"):this._trigger("clearDate"),this.inputField.trigger("change"))},setViewMode:function(e){this.viewMode=e,this.picker.children("div").hide().filter(".datepicker-"+b.viewModes[this.viewMode].clsName).show(),this.updateNavArrows(),this._trigger("changeViewMode",new Date(this.viewDate))}};var d=function(t,n){e.data(t,"datepicker",this),this.element=e(t),this.inputs=e.map(n.inputs,function(e){return e.jquery?e[0]:e}),delete n.inputs,this.keepEmptyValues=n.keepEmptyValues,delete n.keepEmptyValues,f.call(e(this.inputs),n).on("changeDate",e.proxy(this.dateUpdated,this)),this.pickers=e.map(this.inputs,function(t){return e.data(t,"datepicker")}),this.updateDates()};d.prototype={updateDates:function(){this.dates=e.map(this.pickers,function(e){return e.getUTCDate()}),this.updateRanges()},updateRanges:function(){var t=e.map(this.dates,function(e){return e.valueOf()});e.each(this.pickers,function(e,n){n.setRange(t)})},clearDates:function(){e.each(this.pickers,function(e,t){t.clearDates()})},dateUpdated:function(n){if(!this.updating){this.updating=!0;var r=e.data(n.target,"datepicker");if(r!==t){var o=r.getUTCDate(),a=this.keepEmptyValues,i=e.inArray(n.target,this.inputs),s=i-1,l=i+1,c=this.inputs.length;if(-1!==i){if(e.each(this.pickers,function(e,t){t.getUTCDate()||t!==r&&a||t.setUTCDate(o)}),o=0&&othis.dates[l])for(;lthis.dates[l];)this.pickers[l++].setUTCDate(o);this.updateDates(),delete this.updating}}}},destroy:function(){e.map(this.pickers,function(e){e.destroy()}),e(this.inputs).off("changeDate",this.dateUpdated),delete this.element.data().datepicker},remove:a("destroy","Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead")};var p=e.fn.datepicker,f=function(n){var r=Array.apply(null,arguments);r.shift();var o;if(this.each(function(){var t=e(this),a=t.data("datepicker"),i="object"==typeof n&&n;if(!a){var c=s(this,"date"),p=e.extend({},h,c,i),f=l(p.language),m=e.extend({},h,f,c,i);t.hasClass("input-daterange")||m.inputs?(e.extend(m,{inputs:m.inputs||t.find("input").toArray()}),a=new d(this,m)):a=new u(this,m),t.data("datepicker",a)}"string"==typeof n&&"function"==typeof a[n]&&(o=a[n].apply(a,r))}),o===t||o instanceof u||o instanceof d)return this;if(this.length>1)throw new Error("Using only allowed for the collection of a single element ("+n+" function)");return o};e.fn.datepicker=f;var h=e.fn.datepicker.defaults={assumeNearbyYear:!1,autoclose:!1,beforeShowDay:e.noop,beforeShowMonth:e.noop,beforeShowYear:e.noop,beforeShowDecade:e.noop,beforeShowCentury:e.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],daysOfWeekHighlighted:[],datesDisabled:[],endDate:1/0,forceParse:!0,format:"mm/dd/yyyy",keepEmptyValues:!1,keyboardNavigation:!0,language:"en",minViewMode:0,maxViewMode:4,multidate:!1,multidateSeparator:",",orientation:"auto",rtl:!1,startDate:-1/0,startView:0,todayBtn:!1,todayHighlight:!1,updateViewDate:!0,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,showOnFocus:!0,zIndexOffset:10,container:"body",immediateUpdates:!1,title:"",templates:{leftArrow:"«",rightArrow:"»"},showWeekDays:!0},m=e.fn.datepicker.locale_opts=["format","rtl","weekStart"];e.fn.datepicker.Constructor=u;var g=e.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM yyyy"}},b={viewModes:[{names:["days","month"],clsName:"days",e:"changeMonth"},{names:["months","year"],clsName:"months",e:"changeYear",navStep:1},{names:["years","decade"],clsName:"years",e:"changeDecade",navStep:10},{names:["decades","century"],clsName:"decades",e:"changeCentury",navStep:100},{names:["centuries","millennium"],clsName:"centuries",e:"changeMillennium",navStep:1e3}],validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,parseFormat:function(e){if("function"==typeof e.toValue&&"function"==typeof e.toDisplay)return e;var t=e.replace(this.validParts,"\0").split("\0"),n=e.match(this.validParts);if(!t||!t.length||!n||0===n.length)throw new Error("Invalid date format.");return{separators:t,parts:n}},parseDate:function(n,o,a,i){function s(e,t){return!0===t&&(t=10),e<100&&(e+=2e3)>(new Date).getFullYear()+t&&(e-=100),e}function l(){var e=this.slice(0,c[f].length),t=c[f].slice(0,e.length);return e.toLowerCase()===t.toLowerCase()}if(!n)return t;if(n instanceof Date)return n;if("string"==typeof o&&(o=b.parseFormat(o)),o.toValue)return o.toValue(n,o,a);var c,d,p,f,h,m={d:"moveDay",m:"moveMonth",w:"moveWeek",y:"moveYear"},v={yesterday:"-1d",today:"+0d",tomorrow:"+1d"};if(n in v&&(n=v[n]),/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/i.test(n)){for(c=n.match(/([\-+]\d+)([dmwy])/gi),n=new Date,f=0;f",contTemplate:'',footTemplate:''};b.template='
     
    '+S+"'+k+"
    '+h.templates.leftArrow+''+h.templates.rightArrow+"
    '+b.headTemplate+""+b.footTemplate+'
    '+b.headTemplate+b.contTemplate+b.footTemplate+'
    '+b.headTemplate+b.contTemplate+b.footTemplate+'
    '+b.headTemplate+b.contTemplate+b.footTemplate+'
    '+b.headTemplate+b.contTemplate+b.footTemplate+"
    ",e.fn.datepicker.DPGlobal=b,e.fn.datepicker.noConflict=function(){return e.fn.datepicker=p,this},e.fn.datepicker.version="1.8.0",e.fn.datepicker.deprecated=function(e){var t=window.console;t&&t.warn&&t.warn("DEPRECATED: "+e)},e(document).on("focus.datepicker.data-api click.datepicker.data-api",'[data-provide="datepicker"]',function(t){var n=e(this);n.data("datepicker")||(t.preventDefault(),f.call(n,"show"))}),e(function(){f.call(e('[data-provide="datepicker-inline"]'))})})},"./node_modules/classnames/index.js":function(e,t,n){var r,o;/*! +!function(i){o=[n("./node_modules/jquery/dist/jquery.js")],r=i,void 0!==(a="function"==typeof r?r.apply(t,o):r)&&(e.exports=a)}(function(e,t){function n(){return new Date(Date.UTC.apply(Date,arguments))}function r(){var e=new Date;return n(e.getFullYear(),e.getMonth(),e.getDate())}function o(e,t){return e.getUTCFullYear()===t.getUTCFullYear()&&e.getUTCMonth()===t.getUTCMonth()&&e.getUTCDate()===t.getUTCDate()}function a(n,r){return function(){return r!==t&&e.fn.datepicker.deprecated(r),this[n].apply(this,arguments)}}function i(e){return e&&!isNaN(e.getTime())}function s(t,n){function r(e,t){return t.toLowerCase()}var o,a=e(t).data(),i={},s=new RegExp("^"+n.toLowerCase()+"([A-Z])");n=new RegExp("^"+n.toLowerCase());for(var l in a)n.test(l)&&(o=l.replace(s,r),i[o]=a[l]);return i}function l(t){var n={};if(g[t]||(t=t.split("-")[0],g[t])){var r=g[t];return e.each(m,function(e,t){t in r&&(n[t]=r[t])}),n}}var c=function(){var t={get:function(e){return this.slice(e)[0]},contains:function(e){for(var t=e&&e.valueOf(),n=0,r=this.length;n]/g)||[]).length<=0)return!0;return e(n).length>0}catch(e){return!1}},_process_options:function(t){this._o=e.extend({},this._o,t);var o=this.o=e.extend({},this._o),a=o.language;g[a]||(a=a.split("-")[0],g[a]||(a=h.language)),o.language=a,o.startView=this._resolveViewName(o.startView),o.minViewMode=this._resolveViewName(o.minViewMode),o.maxViewMode=this._resolveViewName(o.maxViewMode),o.startView=Math.max(this.o.minViewMode,Math.min(this.o.maxViewMode,o.startView)),!0!==o.multidate&&(o.multidate=Number(o.multidate)||!1,!1!==o.multidate&&(o.multidate=Math.max(0,o.multidate))),o.multidateSeparator=String(o.multidateSeparator),o.weekStart%=7,o.weekEnd=(o.weekStart+6)%7;var i=b.parseFormat(o.format);o.startDate!==-1/0&&(o.startDate?o.startDate instanceof Date?o.startDate=this._local_to_utc(this._zero_time(o.startDate)):o.startDate=b.parseDate(o.startDate,i,o.language,o.assumeNearbyYear):o.startDate=-1/0),o.endDate!==1/0&&(o.endDate?o.endDate instanceof Date?o.endDate=this._local_to_utc(this._zero_time(o.endDate)):o.endDate=b.parseDate(o.endDate,i,o.language,o.assumeNearbyYear):o.endDate=1/0),o.daysOfWeekDisabled=this._resolveDaysOfWeek(o.daysOfWeekDisabled||[]),o.daysOfWeekHighlighted=this._resolveDaysOfWeek(o.daysOfWeekHighlighted||[]),o.datesDisabled=o.datesDisabled||[],e.isArray(o.datesDisabled)||(o.datesDisabled=o.datesDisabled.split(",")),o.datesDisabled=e.map(o.datesDisabled,function(e){return b.parseDate(e,i,o.language,o.assumeNearbyYear)});var s=String(o.orientation).toLowerCase().split(/\s+/g),l=o.orientation.toLowerCase();if(s=e.grep(s,function(e){return/^auto|left|right|top|bottom$/.test(e)}),o.orientation={x:"auto",y:"auto"},l&&"auto"!==l)if(1===s.length)switch(s[0]){case"top":case"bottom":o.orientation.y=s[0];break;case"left":case"right":o.orientation.x=s[0]}else l=e.grep(s,function(e){return/^left|right$/.test(e)}),o.orientation.x=l[0]||"auto",l=e.grep(s,function(e){return/^top|bottom$/.test(e)}),o.orientation.y=l[0]||"auto";else;if(o.defaultViewDate instanceof Date||"string"==typeof o.defaultViewDate)o.defaultViewDate=b.parseDate(o.defaultViewDate,i,o.language,o.assumeNearbyYear);else if(o.defaultViewDate){var c=o.defaultViewDate.year||(new Date).getFullYear(),u=o.defaultViewDate.month||0,d=o.defaultViewDate.day||1;o.defaultViewDate=n(c,u,d)}else o.defaultViewDate=r()},_events:[],_secondaryEvents:[],_applyEvents:function(e){for(var n,r,o,a=0;ao?(this.picker.addClass("datepicker-orient-right"),p+=d-t):this.o.rtl?this.picker.addClass("datepicker-orient-right"):this.picker.addClass("datepicker-orient-left");var h,m=this.o.orientation.y;if("auto"===m&&(h=-a+f-n,m=h<0?"bottom":"top"),this.picker.addClass("datepicker-orient-"+m),"top"===m?f-=n+parseInt(this.picker.css("padding-top")):f+=u,this.o.rtl){var g=o-(p+d);this.picker.css({top:f,right:g,zIndex:l})}else this.picker.css({top:f,left:p,zIndex:l});return this},_allow_update:!0,update:function(){if(!this._allow_update)return this;var t=this.dates.copy(),n=[],r=!1;return arguments.length?(e.each(arguments,e.proxy(function(e,t){t instanceof Date&&(t=this._local_to_utc(t)),n.push(t)},this)),r=!0):(n=this.isInput?this.element.val():this.element.data("date")||this.inputField.val(),n=n&&this.o.multidate?n.split(this.o.multidateSeparator):[n],delete this.element.data().date),n=e.map(n,e.proxy(function(e){return b.parseDate(e,this.o.format,this.o.language,this.o.assumeNearbyYear)},this)),n=e.grep(n,e.proxy(function(e){return!this.dateWithinRange(e)||!e},this),!0),this.dates.replace(n),this.o.updateViewDate&&(this.dates.length?this.viewDate=new Date(this.dates.get(-1)):this.viewDatethis.o.endDate?this.viewDate=new Date(this.o.endDate):this.viewDate=this.o.defaultViewDate),r?(this.setValue(),this.element.change()):this.dates.length&&String(t)!==String(this.dates)&&r&&(this._trigger("changeDate"),this.element.change()),!this.dates.length&&t.length&&(this._trigger("clearDate"),this.element.change()),this.fill(),this},fillDow:function(){if(this.o.showWeekDays){var t=this.o.weekStart,n="";for(this.o.calendarWeeks&&(n+=' ');t";n+="",this.picker.find(".datepicker-days thead").append(n)}},fillMonths:function(){for(var e,t=this._utc_to_local(this.viewDate),n="",r=0;r<12;r++)e=t&&t.getMonth()===r?" focused":"",n+=''+g[this.o.language].monthsShort[r]+"";this.picker.find(".datepicker-months td").html(n)},setRange:function(t){t&&t.length?this.range=e.map(t,function(e){return e.valueOf()}):delete this.range,this.fill()},getClassNames:function(t){var n=[],a=this.viewDate.getUTCFullYear(),i=this.viewDate.getUTCMonth(),s=r();return t.getUTCFullYear()a||t.getUTCFullYear()===a&&t.getUTCMonth()>i)&&n.push("new"),this.focusDate&&t.valueOf()===this.focusDate.valueOf()&&n.push("focused"),this.o.todayHighlight&&o(t,s)&&n.push("today"),-1!==this.dates.contains(t)&&n.push("active"),this.dateWithinRange(t)||n.push("disabled"),this.dateIsDisabled(t)&&n.push("disabled","disabled-date"),-1!==e.inArray(t.getUTCDay(),this.o.daysOfWeekHighlighted)&&n.push("highlighted"),this.range&&(t>this.range[0]&&ts)&&c.push("disabled"),_===b&&c.push("focused"),l!==e.noop&&(d=l(new Date(_,0,1)),d===t?d={}:"boolean"==typeof d?d={enabled:d}:"string"==typeof d&&(d={classes:d}),!1===d.enabled&&c.push("disabled"),d.classes&&(c=c.concat(d.classes.split(/\s+/))),d.tooltip&&(u=d.tooltip)),p+='"+_+"";h.find(".datepicker-switch").text(m+"-"+g),h.find("td").html(p)},fill:function(){var r,o,a=new Date(this.viewDate),i=a.getUTCFullYear(),s=a.getUTCMonth(),l=this.o.startDate!==-1/0?this.o.startDate.getUTCFullYear():-1/0,c=this.o.startDate!==-1/0?this.o.startDate.getUTCMonth():-1/0,u=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,d=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,p=g[this.o.language].today||g.en.today||"",f=g[this.o.language].clear||g.en.clear||"",h=g[this.o.language].titleFormat||g.en.titleFormat;if(!isNaN(i)&&!isNaN(s)){this.picker.find(".datepicker-days .datepicker-switch").text(b.formatDate(a,h,this.o.language)),this.picker.find("tfoot .today").text(p).css("display",!0===this.o.todayBtn||"linked"===this.o.todayBtn?"table-cell":"none"),this.picker.find("tfoot .clear").text(f).css("display",!0===this.o.clearBtn?"table-cell":"none"),this.picker.find("thead .datepicker-title").text(this.o.title).css("display","string"==typeof this.o.title&&""!==this.o.title?"table-cell":"none"),this.updateNavArrows(),this.fillMonths();var m=n(i,s,0),v=m.getUTCDate();m.setUTCDate(v-(m.getUTCDay()-this.o.weekStart+7)%7);var _=new Date(m);m.getUTCFullYear()<100&&_.setUTCFullYear(m.getUTCFullYear()),_.setUTCDate(_.getUTCDate()+42),_=_.valueOf();for(var y,A,x=[];m.valueOf()<_;){if((y=m.getUTCDay())===this.o.weekStart&&(x.push(""),this.o.calendarWeeks)){var w=new Date(+m+(this.o.weekStart-y-7)%7*864e5),j=new Date(Number(w)+(11-w.getUTCDay())%7*864e5),E=new Date(Number(E=n(j.getUTCFullYear(),0,1))+(11-E.getUTCDay())%7*864e5),S=(j-E)/864e5/7+1;x.push(''+S+"")}A=this.getClassNames(m),A.push("day");var k=m.getUTCDate();this.o.beforeShowDay!==e.noop&&(o=this.o.beforeShowDay(this._utc_to_local(m)),o===t?o={}:"boolean"==typeof o?o={enabled:o}:"string"==typeof o&&(o={classes:o}),!1===o.enabled&&A.push("disabled"),o.classes&&(A=A.concat(o.classes.split(/\s+/))),o.tooltip&&(r=o.tooltip),o.content&&(k=o.content)),A=e.isFunction(e.uniqueSort)?e.uniqueSort(A):e.unique(A),x.push(''+k+""),r=null,y===this.o.weekEnd&&x.push(""),m.setUTCDate(m.getUTCDate()+1)}this.picker.find(".datepicker-days tbody").html(x.join(""));var C=g[this.o.language].monthsTitle||g.en.monthsTitle||"Months",T=this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode<2?C:i).end().find("tbody span").removeClass("active");if(e.each(this.dates,function(e,t){t.getUTCFullYear()===i&&T.eq(t.getUTCMonth()).addClass("active")}),(iu)&&T.addClass("disabled"),i===l&&T.slice(0,c).addClass("disabled"),i===u&&T.slice(d+1).addClass("disabled"),this.o.beforeShowMonth!==e.noop){var M=this;e.each(T,function(n,r){var o=new Date(i,n,1),a=M.o.beforeShowMonth(o);a===t?a={}:"boolean"==typeof a?a={enabled:a}:"string"==typeof a&&(a={classes:a}),!1!==a.enabled||e(r).hasClass("disabled")||e(r).addClass("disabled"),a.classes&&e(r).addClass(a.classes),a.tooltip&&e(r).prop("title",a.tooltip)})}this._fill_yearsView(".datepicker-years","year",10,i,l,u,this.o.beforeShowYear),this._fill_yearsView(".datepicker-decades","decade",100,i,l,u,this.o.beforeShowDecade),this._fill_yearsView(".datepicker-centuries","century",1e3,i,l,u,this.o.beforeShowCentury)}},updateNavArrows:function(){if(this._allow_update){var e,t,n=new Date(this.viewDate),r=n.getUTCFullYear(),o=n.getUTCMonth(),a=this.o.startDate!==-1/0?this.o.startDate.getUTCFullYear():-1/0,i=this.o.startDate!==-1/0?this.o.startDate.getUTCMonth():-1/0,s=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,l=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,c=1;switch(this.viewMode){case 4:c*=10;case 3:c*=10;case 2:c*=10;case 1:e=Math.floor(r/c)*cs;break;case 0:e=r<=a&&o=s&&o>l}this.picker.find(".prev").toggleClass("disabled",e),this.picker.find(".next").toggleClass("disabled",t)}},click:function(t){t.preventDefault(),t.stopPropagation();var o,a,i,s;o=e(t.target),o.hasClass("datepicker-switch")&&this.viewMode!==this.o.maxViewMode&&this.setViewMode(this.viewMode+1),o.hasClass("today")&&!o.hasClass("day")&&(this.setViewMode(0),this._setDate(r(),"linked"===this.o.todayBtn?null:"view")),o.hasClass("clear")&&this.clearDates(),o.hasClass("disabled")||(o.hasClass("month")||o.hasClass("year")||o.hasClass("decade")||o.hasClass("century"))&&(this.viewDate.setUTCDate(1),a=1,1===this.viewMode?(s=o.parent().find("span").index(o),i=this.viewDate.getUTCFullYear(),this.viewDate.setUTCMonth(s)):(s=0,i=Number(o.text()),this.viewDate.setUTCFullYear(i)),this._trigger(b.viewModes[this.viewMode-1].e,this.viewDate),this.viewMode===this.o.minViewMode?this._setDate(n(i,s,a)):(this.setViewMode(this.viewMode-1),this.fill())),this.picker.is(":visible")&&this._focused_from&&this._focused_from.focus(),delete this._focused_from},dayCellClick:function(t){var n=e(t.currentTarget),r=n.data("date"),o=new Date(r);this.o.updateViewDate&&(o.getUTCFullYear()!==this.viewDate.getUTCFullYear()&&this._trigger("changeYear",this.viewDate),o.getUTCMonth()!==this.viewDate.getUTCMonth()&&this._trigger("changeMonth",this.viewDate)),this._setDate(o)},navArrowsClick:function(t){var n=e(t.currentTarget),r=n.hasClass("prev")?-1:1;0!==this.viewMode&&(r*=12*b.viewModes[this.viewMode].navStep),this.viewDate=this.moveMonth(this.viewDate,r),this._trigger(b.viewModes[this.viewMode].e,this.viewDate),this.fill()},_toggle_multidate:function(e){var t=this.dates.contains(e);if(e||this.dates.clear(),-1!==t?(!0===this.o.multidate||this.o.multidate>1||this.o.toggleActive)&&this.dates.remove(t):!1===this.o.multidate?(this.dates.clear(),this.dates.push(e)):this.dates.push(e),"number"==typeof this.o.multidate)for(;this.dates.length>this.o.multidate;)this.dates.remove(0)},_setDate:function(e,t){t&&"date"!==t||this._toggle_multidate(e&&new Date(e)),(!t&&this.o.updateViewDate||"view"===t)&&(this.viewDate=e&&new Date(e)),this.fill(),this.setValue(),t&&"view"===t||this._trigger("changeDate"),this.inputField.trigger("change"),!this.o.autoclose||t&&"date"!==t||this.hide()},moveDay:function(e,t){var n=new Date(e);return n.setUTCDate(e.getUTCDate()+t),n},moveWeek:function(e,t){return this.moveDay(e,7*t)},moveMonth:function(e,t){if(!i(e))return this.o.defaultViewDate;if(!t)return e;var n,r,o=new Date(e.valueOf()),a=o.getUTCDate(),s=o.getUTCMonth(),l=Math.abs(t);if(t=t>0?1:-1,1===l)r=-1===t?function(){return o.getUTCMonth()===s}:function(){return o.getUTCMonth()!==n},n=s+t,o.setUTCMonth(n),n=(n+12)%12;else{for(var c=0;c0},dateWithinRange:function(e){return e>=this.o.startDate&&e<=this.o.endDate},keydown:function(e){if(!this.picker.is(":visible"))return void(40!==e.keyCode&&27!==e.keyCode||(this.show(),e.stopPropagation()));var t,n,r=!1,o=this.focusDate||this.viewDate;switch(e.keyCode){case 27:this.focusDate?(this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill()):this.hide(),e.preventDefault(),e.stopPropagation();break;case 37:case 38:case 39:case 40:if(!this.o.keyboardNavigation||7===this.o.daysOfWeekDisabled.length)break;t=37===e.keyCode||38===e.keyCode?-1:1,0===this.viewMode?e.ctrlKey?(n=this.moveAvailableDate(o,t,"moveYear"))&&this._trigger("changeYear",this.viewDate):e.shiftKey?(n=this.moveAvailableDate(o,t,"moveMonth"))&&this._trigger("changeMonth",this.viewDate):37===e.keyCode||39===e.keyCode?n=this.moveAvailableDate(o,t,"moveDay"):this.weekOfDateIsDisabled(o)||(n=this.moveAvailableDate(o,t,"moveWeek")):1===this.viewMode?(38!==e.keyCode&&40!==e.keyCode||(t*=4),n=this.moveAvailableDate(o,t,"moveMonth")):2===this.viewMode&&(38!==e.keyCode&&40!==e.keyCode||(t*=4),n=this.moveAvailableDate(o,t,"moveYear")),n&&(this.focusDate=this.viewDate=n,this.setValue(),this.fill(),e.preventDefault());break;case 13:if(!this.o.forceParse)break;o=this.focusDate||this.dates.get(-1)||this.viewDate,this.o.keyboardNavigation&&(this._toggle_multidate(o),r=!0),this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.setValue(),this.fill(),this.picker.is(":visible")&&(e.preventDefault(),e.stopPropagation(),this.o.autoclose&&this.hide());break;case 9:this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill(),this.hide()}r&&(this.dates.length?this._trigger("changeDate"):this._trigger("clearDate"),this.inputField.trigger("change"))},setViewMode:function(e){this.viewMode=e,this.picker.children("div").hide().filter(".datepicker-"+b.viewModes[this.viewMode].clsName).show(),this.updateNavArrows(),this._trigger("changeViewMode",new Date(this.viewDate))}};var d=function(t,n){e.data(t,"datepicker",this),this.element=e(t),this.inputs=e.map(n.inputs,function(e){return e.jquery?e[0]:e}),delete n.inputs,this.keepEmptyValues=n.keepEmptyValues,delete n.keepEmptyValues,f.call(e(this.inputs),n).on("changeDate",e.proxy(this.dateUpdated,this)),this.pickers=e.map(this.inputs,function(t){return e.data(t,"datepicker")}),this.updateDates()};d.prototype={updateDates:function(){this.dates=e.map(this.pickers,function(e){return e.getUTCDate()}),this.updateRanges()},updateRanges:function(){var t=e.map(this.dates,function(e){return e.valueOf()});e.each(this.pickers,function(e,n){n.setRange(t)})},clearDates:function(){e.each(this.pickers,function(e,t){t.clearDates()})},dateUpdated:function(n){if(!this.updating){this.updating=!0;var r=e.data(n.target,"datepicker");if(r!==t){var o=r.getUTCDate(),a=this.keepEmptyValues,i=e.inArray(n.target,this.inputs),s=i-1,l=i+1,c=this.inputs.length;if(-1!==i){if(e.each(this.pickers,function(e,t){t.getUTCDate()||t!==r&&a||t.setUTCDate(o)}),o=0&&othis.dates[l])for(;lthis.dates[l];)this.pickers[l++].setUTCDate(o);this.updateDates(),delete this.updating}}}},destroy:function(){e.map(this.pickers,function(e){e.destroy()}),e(this.inputs).off("changeDate",this.dateUpdated),delete this.element.data().datepicker},remove:a("destroy","Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead")};var p=e.fn.datepicker,f=function(n){var r=Array.apply(null,arguments);r.shift();var o;if(this.each(function(){var t=e(this),a=t.data("datepicker"),i="object"==typeof n&&n;if(!a){var c=s(this,"date"),p=e.extend({},h,c,i),f=l(p.language),m=e.extend({},h,f,c,i);t.hasClass("input-daterange")||m.inputs?(e.extend(m,{inputs:m.inputs||t.find("input").toArray()}),a=new d(this,m)):a=new u(this,m),t.data("datepicker",a)}"string"==typeof n&&"function"==typeof a[n]&&(o=a[n].apply(a,r))}),o===t||o instanceof u||o instanceof d)return this;if(this.length>1)throw new Error("Using only allowed for the collection of a single element ("+n+" function)");return o};e.fn.datepicker=f;var h=e.fn.datepicker.defaults={assumeNearbyYear:!1,autoclose:!1,beforeShowDay:e.noop,beforeShowMonth:e.noop,beforeShowYear:e.noop,beforeShowDecade:e.noop,beforeShowCentury:e.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],daysOfWeekHighlighted:[],datesDisabled:[],endDate:1/0,forceParse:!0,format:"mm/dd/yyyy",keepEmptyValues:!1,keyboardNavigation:!0,language:"en",minViewMode:0,maxViewMode:4,multidate:!1,multidateSeparator:",",orientation:"auto",rtl:!1,startDate:-1/0,startView:0,todayBtn:!1,todayHighlight:!1,updateViewDate:!0,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,showOnFocus:!0,zIndexOffset:10,container:"body",immediateUpdates:!1,title:"",templates:{leftArrow:"«",rightArrow:"»"},showWeekDays:!0},m=e.fn.datepicker.locale_opts=["format","rtl","weekStart"];e.fn.datepicker.Constructor=u;var g=e.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM yyyy"}},b={viewModes:[{names:["days","month"],clsName:"days",e:"changeMonth"},{names:["months","year"],clsName:"months",e:"changeYear",navStep:1},{names:["years","decade"],clsName:"years",e:"changeDecade",navStep:10},{names:["decades","century"],clsName:"decades",e:"changeCentury",navStep:100},{names:["centuries","millennium"],clsName:"centuries",e:"changeMillennium",navStep:1e3}],validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,parseFormat:function(e){if("function"==typeof e.toValue&&"function"==typeof e.toDisplay)return e;var t=e.replace(this.validParts,"\0").split("\0"),n=e.match(this.validParts);if(!t||!t.length||!n||0===n.length)throw new Error("Invalid date format.");return{separators:t,parts:n}},parseDate:function(n,o,a,i){function s(e,t){return!0===t&&(t=10),e<100&&(e+=2e3)>(new Date).getFullYear()+t&&(e-=100),e}function l(){var e=this.slice(0,c[f].length),t=c[f].slice(0,e.length);return e.toLowerCase()===t.toLowerCase()}if(!n)return t;if(n instanceof Date)return n;if("string"==typeof o&&(o=b.parseFormat(o)),o.toValue)return o.toValue(n,o,a);var c,d,p,f,h,m={d:"moveDay",m:"moveMonth",w:"moveWeek",y:"moveYear"},v={yesterday:"-1d",today:"+0d",tomorrow:"+1d"};if(n in v&&(n=v[n]),/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/i.test(n)){for(c=n.match(/([\-+]\d+)([dmwy])/gi),n=new Date,f=0;f'+h.templates.leftArrow+''+h.templates.rightArrow+"",contTemplate:'',footTemplate:''};b.template='
    '+b.headTemplate+""+b.footTemplate+'
    '+b.headTemplate+b.contTemplate+b.footTemplate+'
    '+b.headTemplate+b.contTemplate+b.footTemplate+'
    '+b.headTemplate+b.contTemplate+b.footTemplate+'
    '+b.headTemplate+b.contTemplate+b.footTemplate+"
    ",e.fn.datepicker.DPGlobal=b,e.fn.datepicker.noConflict=function(){return e.fn.datepicker=p,this},e.fn.datepicker.version="1.8.0",e.fn.datepicker.deprecated=function(e){var t=window.console;t&&t.warn&&t.warn("DEPRECATED: "+e)},e(document).on("focus.datepicker.data-api click.datepicker.data-api",'[data-provide="datepicker"]',function(t){var n=e(this);n.data("datepicker")||(t.preventDefault(),f.call(n,"show"))}),e(function(){f.call(e('[data-provide="datepicker-inline"]'))})})},"./node_modules/classnames/index.js":function(e,t,n){var r,o;/*! Copyright (c) 2016 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;t=0&&s[o.text.charAt(a)]||s[o.text.charAt(++a)];if(!c)return null;var u=">"==c.charAt(1)?1:-1;if(r&&r.strict&&u>0!=(a==t.ch))return null;var d=e.getTokenTypeAt(i(t.line,a+1)),p=n(e,i(t.line,a+(u>0?1:0)),u,d||null,r);return null==p?null:{from:i(t.line,a),to:p&&p.pos,match:p&&p.ch==c.charAt(0),forward:u>0}}function n(e,t,n,r,o){for(var a=o&&o.maxScanLineLength||1e4,l=o&&o.maxScanLines||1e3,c=[],u=o&&o.bracketRegex?o.bracketRegex:/[(){}[\]]/,d=n>0?Math.min(t.line+l,e.lastLine()+1):Math.max(e.firstLine()-1,t.line-l),p=t.line;p!=d;p+=n){var f=e.getLine(p);if(f){var h=n>0?0:f.length-1,m=n>0?f.length:-1;if(!(f.length>a))for(p==t.line&&(h=t.ch-(n<0?1:0));h!=m;h+=n){var g=f.charAt(h);if(u.test(g)&&(void 0===r||e.getTokenTypeAt(i(p,h+1))==r)){var b=s[g];if(">"==b.charAt(1)==n>0)c.push(g);else{if(!c.length)return{pos:i(p,h),ch:g};c.pop()}}}}}return p-n!=(n>0?e.lastLine():e.firstLine())&&null}function r(e,n,r){for(var o=e.state.matchBrackets.maxHighlightLineLength||1e3,s=[],l=e.listSelections(),c=0;c",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"};e.defineOption("matchBrackets",!1,function(t,n,r){r&&r!=e.Init&&(t.off("cursorActivity",o),t.state.matchBrackets&&t.state.matchBrackets.currentlyHighlighted&&(t.state.matchBrackets.currentlyHighlighted(),t.state.matchBrackets.currentlyHighlighted=null)),n&&(t.state.matchBrackets="object"==typeof n?n:{},t.on("cursorActivity",o))}),e.defineExtension("matchBrackets",function(){r(this,!0)}),e.defineExtension("findMatchingBracket",function(e,n,r){return(r||"boolean"==typeof n)&&(r?(r.strict=n,n=r):n=n?{strict:!0}:null),t(this,e,n)}),e.defineExtension("scanForBracket",function(e,t,r,o){return n(this,e,t,r,o)})})},"./node_modules/codemirror/addon/hint/show-hint.css":function(e,t,n){var r=n("./node_modules/css-loader/index.js!./node_modules/codemirror/addon/hint/show-hint.css");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./node_modules/codemirror/addon/hint/show-hint.js":function(e,t,n){!function(e){e(n("./node_modules/codemirror/lib/codemirror.js"))}(function(e){"use strict";function t(e,t){this.cm=e,this.options=t,this.widget=null,this.debounce=0,this.tick=0,this.startPos=this.cm.getCursor("start"),this.startLen=this.cm.getLine(this.startPos.line).length-this.cm.getSelection().length;var n=this;e.on("cursorActivity",this.activityFunc=function(){n.cursorActivity()})}function n(e,t,n){var r=e.options.hintOptions,o={};for(var a in h)o[a]=h[a];if(r)for(var a in r)void 0!==r[a]&&(o[a]=r[a]);if(n)for(var a in n)void 0!==n[a]&&(o[a]=n[a]);return o.hint.resolve&&(o.hint=o.hint.resolve(e,t)),o}function r(e){return"string"==typeof e?e:e.text}function o(e,t){function n(e,n){var o;o="string"!=typeof n?function(e){return n(e,t)}:r.hasOwnProperty(n)?r[n]:n,a[e]=o}var r={Up:function(){t.moveFocus(-1)},Down:function(){t.moveFocus(1)},PageUp:function(){t.moveFocus(1-t.menuSize(),!0)},PageDown:function(){t.moveFocus(t.menuSize()-1,!0)},Home:function(){t.setFocus(0)},End:function(){t.setFocus(t.length-1)},Enter:t.pick,Tab:t.pick,Esc:t.close},o=e.options.customKeys,a=o?{}:r;if(o)for(var i in o)o.hasOwnProperty(i)&&n(i,o[i]);var s=e.options.extraKeys;if(s)for(var i in s)s.hasOwnProperty(i)&&n(i,s[i]);return a}function a(e,t){for(;t&&t!=e;){if("LI"===t.nodeName.toUpperCase()&&t.parentNode==e)return t;t=t.parentNode}}function i(t,n){this.completion=t,this.data=n,this.picked=!1;var i=this,s=t.cm,l=this.hints=document.createElement("ul");l.className="CodeMirror-hints",this.selectedHint=n.selectedHint||0;for(var c=n.list,p=0;pl.clientHeight+1,E=s.getScrollInfo();if(w>0){var S=x.bottom-x.top;if(g.top-(g.bottom-x.top)-S>0)l.style.top=(v=g.top-S)+"px",y=!1;else if(S>A){l.style.height=A-5+"px",l.style.top=(v=g.bottom-x.top)+"px";var k=s.getCursor();n.from.ch!=k.ch&&(g=s.cursorCoords(k),l.style.left=(b=g.left)+"px",x=l.getBoundingClientRect())}}var C=x.right-_;if(C>0&&(x.right-x.left>_&&(l.style.width=_-5+"px",C-=x.right-x.left-_),l.style.left=(b=g.left-C)+"px"),j)for(var T=l.firstChild;T;T=T.nextSibling)T.style.paddingRight=s.display.nativeBarWidth+"px";if(s.addKeyMap(this.keyMap=o(t,{moveFocus:function(e,t){i.changeActive(i.selectedHint+e,t)},setFocus:function(e){i.changeActive(e)},menuSize:function(){return i.screenAmount()},length:c.length,close:function(){t.close()},pick:function(){i.pick()},data:n})),t.options.closeOnUnfocus){var M;s.on("blur",this.onBlur=function(){M=setTimeout(function(){t.close()},100)}),s.on("focus",this.onFocus=function(){clearTimeout(M)})}return s.on("scroll",this.onScroll=function(){var e=s.getScrollInfo(),n=s.getWrapperElement().getBoundingClientRect(),r=v+E.top-e.top,o=r-(window.pageYOffset||(document.documentElement||document.body).scrollTop);if(y||(o+=l.offsetHeight),o<=n.top||o>=n.bottom)return t.close();l.style.top=r+"px",l.style.left=b+E.left-e.left+"px"}),e.on(l,"dblclick",function(e){var t=a(l,e.target||e.srcElement);t&&null!=t.hintId&&(i.changeActive(t.hintId),i.pick())}),e.on(l,"click",function(e){var n=a(l,e.target||e.srcElement);n&&null!=n.hintId&&(i.changeActive(n.hintId),t.options.completeOnSingleClick&&i.pick())}),e.on(l,"mousedown",function(){setTimeout(function(){s.focus()},20)}),e.signal(n,"select",c[this.selectedHint],l.childNodes[this.selectedHint]),!0}function s(e,t){if(!e.somethingSelected())return t;for(var n=[],r=0;r0?t(e):r(o+1)})}var a=s(e,o);r(0)};return a.async=!0,a.supportsSelection=!0,a}return(r=t.getHelper(t.getCursor(),"hintWords"))?function(t){return e.hint.fromList(t,{words:r})}:e.hint.anyword?function(t,n){return e.hint.anyword(t,n)}:function(){}}var u="CodeMirror-hint",d="CodeMirror-hint-active";e.showHint=function(e,t,n){if(!t)return e.showHint(n);n&&n.async&&(t.async=!0);var r={hint:t};if(n)for(var o in n)r[o]=n[o];return e.showHint(r)},e.defineExtension("showHint",function(r){r=n(this,this.getCursor("start"),r);var o=this.listSelections();if(!(o.length>1)){if(this.somethingSelected()){if(!r.hint.supportsSelection)return;for(var a=0;a=this.data.list.length?t=n?this.data.list.length-1:0:t<0&&(t=n?0:this.data.list.length-1),this.selectedHint!=t){var r=this.hints.childNodes[this.selectedHint];r.className=r.className.replace(" "+d,""),r=this.hints.childNodes[this.selectedHint=t],r.className+=" "+d,r.offsetTopthis.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=r.offsetTop+r.offsetHeight-this.hints.clientHeight+3),e.signal(this.data,"select",this.data.list[this.selectedHint],r)}},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}},e.registerHelper("hint","auto",{resolve:c}),e.registerHelper("hint","fromList",function(t,n){var r,o=t.getCursor(),a=t.getTokenAt(o),i=e.Pos(o.line,a.start),s=o;a.start,]/,closeOnUnfocus:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null};e.defineOption("hintOptions",null)})},"./node_modules/codemirror/addon/hint/sql-hint.js":function(e,t,n){!function(e){e(n("./node_modules/codemirror/lib/codemirror.js"),n("./node_modules/codemirror/mode/sql/sql.js"))}(function(e){"use strict";function t(e){return"[object Array]"==Object.prototype.toString.call(e)}function n(t){var n=t.doc.modeOption;return"sql"===n&&(n="text/x-sql"),e.resolveMode(n).keywords}function r(t){var n=t.doc.modeOption;return"sql"===n&&(n="text/x-sql"),e.resolveMode(n).identifierQuote||"`"}function o(e){return"string"==typeof e?e:e.text}function a(e,n){return t(n)&&(n={columns:n}),n.text||(n.text=e),n}function i(e){var n={};if(t(e))for(var r=e.length-1;r>=0;r--){var i=e[r];n[o(i).toUpperCase()]=a(o(i),i)}else if(e)for(var s in e)n[s.toUpperCase()]=a(s,e[s]);return n}function s(e){return g[e.toUpperCase()]}function l(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}function c(e,t){var n=e.length,r=o(t).substr(0,n);return e.toUpperCase()===r.toUpperCase()}function u(e,n,r,o){if(t(r))for(var a=0;a0)&&x(p,l[f])<=0){c={start:d,end:l[f]};break}d=l[f]}if(c.start)for(var m=n.getRange(c.start,c.end,!1),f=0;fp.ch&&(_.end=p.ch,_.string=_.string.slice(0,p.ch-_.start)),_.string.match(/^[.`"\w@]\w*$/)?(d=_.string,l=_.start,c=_.end):(l=c=p.ch,d=""),"."==d.charAt(0)||d.charAt(0)==y?l=f(p,_,h,e):(u(h,d,b,function(e){return{text:e,className:"CodeMirror-hint-table CodeMirror-hint-default-table"}}),u(h,d,g,function(e){return"object"==typeof e?e.className="CodeMirror-hint-table":e={text:e,className:"CodeMirror-hint-table"},e}),a||u(h,d,v,function(e){return{text:e.toUpperCase(),className:"CodeMirror-hint-keyword"}})),{list:h,from:A(p.line,l),to:A(p.line,c)}})})},"./node_modules/codemirror/lib/codemirror.css":function(e,t,n){var r=n("./node_modules/css-loader/index.js!./node_modules/codemirror/lib/codemirror.css");"string"==typeof r&&(r=[[e.i,r,""]]);var o={};o.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(r,o);r.locals&&(e.exports=r.locals)},"./node_modules/codemirror/lib/codemirror.js":function(e,t,n){!function(t,n){e.exports=n()}(0,function(){"use strict";function e(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}function t(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function n(e,n){return t(e).appendChild(n)}function r(e,t,n,r){var o=document.createElement(e);if(n&&(o.className=n),r&&(o.style.cssText=r),"string"==typeof t)o.appendChild(document.createTextNode(t));else if(t)for(var a=0;a=t)return i+(t-a);i+=s-a,i+=n-i%n,a=s+1}}function p(e,t){for(var n=0;n=t)return r+Math.min(i,t-o);if(o+=a-r,o+=n-o%n,r=a+1,o>=t)return r}}function h(e){for(;Qi.length<=e;)Qi.push(m(Qi)+" ");return Qi[e]}function m(e){return e[e.length-1]}function g(e,t){for(var n=[],r=0;r"€"&&(e.toUpperCase()!=e.toLowerCase()||qi.test(e))}function A(e,t){return t?!!(t.source.indexOf("\\w")>-1&&_(e))||t.test(e):_(e)}function x(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}function w(e){return e.charCodeAt(0)>=768&&Ki.test(e)}function j(e,t,n){for(;(n<0?t>0:tn?-1:1;;){if(t==n)return t;var o=(t+n)/2,a=r<0?Math.ceil(o):Math.floor(o);if(a==t)return e(a)?t:n;e(a)?n=a:t=a+r}}function S(e,t,n){var a=this;this.input=n,a.scrollbarFiller=r("div",null,"CodeMirror-scrollbar-filler"),a.scrollbarFiller.setAttribute("cm-not-content","true"),a.gutterFiller=r("div",null,"CodeMirror-gutter-filler"),a.gutterFiller.setAttribute("cm-not-content","true"),a.lineDiv=o("div",null,"CodeMirror-code"),a.selectionDiv=r("div",null,null,"position: relative; z-index: 1"),a.cursorDiv=r("div",null,"CodeMirror-cursors"),a.measure=r("div",null,"CodeMirror-measure"),a.lineMeasure=r("div",null,"CodeMirror-measure"),a.lineSpace=o("div",[a.measure,a.lineMeasure,a.selectionDiv,a.cursorDiv,a.lineDiv],null,"position: relative; outline: none");var i=o("div",[a.lineSpace],"CodeMirror-lines");a.mover=r("div",[i],null,"position: relative"),a.sizer=r("div",[a.mover],"CodeMirror-sizer"),a.sizerWidth=null,a.heightForcer=r("div",null,null,"position: absolute; height: "+Hi+"px; width: 1px;"),a.gutters=r("div",null,"CodeMirror-gutters"),a.lineGutter=null,a.scroller=r("div",[a.sizer,a.heightForcer,a.gutters],"CodeMirror-scroll"),a.scroller.setAttribute("tabIndex","-1"),a.wrapper=r("div",[a.scrollbarFiller,a.gutterFiller,a.scroller],"CodeMirror"),vi&&yi<8&&(a.gutters.style.zIndex=-1,a.scroller.style.paddingRight=0),_i||hi&&Ti||(a.scroller.draggable=!0),e&&(e.appendChild?e.appendChild(a.wrapper):e(a.wrapper)),a.viewFrom=a.viewTo=t.first,a.reportedViewFrom=a.reportedViewTo=t.first,a.view=[],a.renderedView=null,a.externalMeasured=null,a.viewOffset=0,a.lastWrapHeight=a.lastWrapWidth=0,a.updateLineNumbers=null,a.nativeBarWidth=a.barHeight=a.barWidth=0,a.scrollbarsClipped=!1,a.lineNumWidth=a.lineNumInnerWidth=a.lineNumChars=null,a.alignWidgets=!1,a.cachedCharWidth=a.cachedTextHeight=a.cachedPaddingH=null,a.maxLine=null,a.maxLineLength=0,a.maxLineChanged=!1,a.wheelDX=a.wheelDY=a.wheelStartX=a.wheelStartY=null,a.shift=!1,a.selForContextMenu=null,a.activeTouch=null,n.init(a)}function k(e,t){if((t-=e.first)<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var n=e;!n.lines;)for(var r=0;;++r){var o=n.children[r],a=o.chunkSize();if(t=e.first&&tn?I(n,k(e,n).text.length):V(t,k(e,t.line).text.length)}function V(e,t){var n=e.ch;return null==n||n>t?I(e.line,t):n<0?I(e.line,0):e}function Y(e,t){for(var n=[],r=0;r=t:a.to>t);(r||(r=[])).push(new Q(i,a.from,l?null:a.to))}}return r}function Z(e,t,n){var r;if(e)for(var o=0;o=t:a.to>t);if(s||a.from==t&&"bookmark"==i.type&&(!n||a.marker.insertLeft)){var l=null==a.from||(i.inclusiveLeft?a.from<=t:a.from0&&s)for(var A=0;A0)){var u=[l,1],d=R(c.from,s.from),f=R(c.to,s.to);(d<0||!i.inclusiveLeft&&!d)&&u.push({from:c.from,to:s.from}),(f>0||!i.inclusiveRight&&!f)&&u.push({from:s.to,to:c.to}),o.splice.apply(o,u),l+=u.length-3}}return o}function ne(e){var t=e.markedSpans;if(t){for(var n=0;n=0&&d<=0||u<=0&&d>=0)&&(u<=0&&(l.marker.inclusiveRight&&o.inclusiveLeft?R(c.to,n)>=0:R(c.to,n)>0)||u>=0&&(l.marker.inclusiveRight&&o.inclusiveLeft?R(c.from,r)<=0:R(c.from,r)<0)))return!0}}}function de(e){for(var t;t=le(e);)e=t.find(-1,!0).line;return e}function pe(e){for(var t;t=ce(e);)e=t.find(1,!0).line;return e}function fe(e){for(var t,n;t=ce(e);)e=t.find(1,!0).line,(n||(n=[])).push(e);return n}function he(e,t){var n=k(e,t),r=de(n);return n==r?t:O(r)}function me(e,t){if(t>e.lastLine())return t;var n,r=k(e,t);if(!ge(e,r))return t;for(;n=ce(r);)r=n.find(1,!0).line;return O(r)+1}function ge(e,t){var n=Ji&&t.markedSpans;if(n)for(var r=void 0,o=0;ot.maxLineLength&&(t.maxLineLength=n,t.maxLine=e)})}function Ae(e,t,n,r){if(!e)return r(t,n,"ltr",0);for(var o=!1,a=0;at||t==n&&i.to==t)&&(r(Math.max(i.from,t),Math.min(i.to,n),1==i.level?"rtl":"ltr",a),o=!0)}o||r(t,n,"ltr")}function xe(e,t,n){var r;Zi=null;for(var o=0;ot)return o;a.to==t&&(a.from!=a.to&&"before"==n?r=o:Zi=o),a.from==t&&(a.from!=a.to&&"before"!=n?r=o:Zi=o)}return null!=r?r:Zi}function we(e,t){var n=e.order;return null==n&&(n=e.order=$i(e.text,t)),n}function je(e,t){return e._handlers&&e._handlers[t]||es}function Ee(e,t,n){if(e.removeEventListener)e.removeEventListener(t,n,!1);else if(e.detachEvent)e.detachEvent("on"+t,n);else{var r=e._handlers,o=r&&r[t];if(o){var a=p(o,n);a>-1&&(r[t]=o.slice(0,a).concat(o.slice(a+1)))}}}function Se(e,t){var n=je(e,t);if(n.length)for(var r=Array.prototype.slice.call(arguments,2),o=0;o0}function Me(e){e.prototype.on=function(e,t){ts(this,e,t)},e.prototype.off=function(e,t){Ee(this,e,t)}}function Oe(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function Le(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function De(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.returnValue}function Pe(e){Oe(e),Le(e)}function Ie(e){return e.target||e.srcElement}function Re(e){var t=e.which;return null==t&&(1&e.button?t=1:2&e.button?t=3:4&e.button&&(t=2)),Mi&&e.ctrlKey&&1==t&&(t=3),t}function Ne(e){if(null==Ui){var t=r("span","​");n(e,r("span",[t,document.createTextNode("x")])),0!=e.firstChild.offsetHeight&&(Ui=t.offsetWidth<=1&&t.offsetHeight>2&&!(vi&&yi<8))}var o=Ui?r("span","​"):r("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return o.setAttribute("cm-text",""),o}function Be(e){if(null!=zi)return zi;var r=n(e,document.createTextNode("AخA")),o=Pi(r,0,1).getBoundingClientRect(),a=Pi(r,1,2).getBoundingClientRect();return t(e),!(!o||o.left==o.right)&&(zi=a.right-o.right<3)}function Fe(e){if(null!=is)return is;var t=n(e,r("span","x")),o=t.getBoundingClientRect(),a=Pi(t,0,1).getBoundingClientRect();return is=Math.abs(o.left-a.left)>1}function Ue(e,t){arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),ss[e]=t}function ze(e,t){ls[e]=t}function He(e){if("string"==typeof e&&ls.hasOwnProperty(e))e=ls[e];else if(e&&"string"==typeof e.name&&ls.hasOwnProperty(e.name)){var t=ls[e.name];"string"==typeof t&&(t={name:t}),e=y(t,e),e.name=t.name}else{if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return He("application/xml");if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+json$/.test(e))return He("application/json")}return"string"==typeof e?{name:e}:e||{name:"null"}}function Ve(e,t){t=He(t);var n=ss[t.name];if(!n)return Ve(e,"text/plain");var r=n(e,t);if(cs.hasOwnProperty(t.name)){var o=cs[t.name];for(var a in o)o.hasOwnProperty(a)&&(r.hasOwnProperty(a)&&(r["_"+a]=r[a]),r[a]=o[a])}if(r.name=t.name,t.helperType&&(r.helperType=t.helperType),t.modeProps)for(var i in t.modeProps)r[i]=t.modeProps[i];return r}function Ye(e,t){u(t,cs.hasOwnProperty(e)?cs[e]:cs[e]={})}function We(e,t){if(!0===t)return t;if(e.copyState)return e.copyState(t);var n={};for(var r in t){var o=t[r];o instanceof Array&&(o=o.concat([])),n[r]=o}return n}function Ge(e,t){for(var n;e.innerMode&&(n=e.innerMode(t))&&n.mode!=e;)t=n.state,e=n.mode;return n||{mode:e,state:t}}function Qe(e,t,n){return!e.startState||e.startState(t,n)}function qe(e,t,n,r){var o=[e.state.modeGen],a={};nt(e,t.text,e.doc.mode,n,function(e,t){return o.push(e,t)},a,r);for(var i=n.state,s=0;se&&o.splice(l,1,e,o[l+1],r),l+=2,c=Math.min(e,r)}if(t)if(s.opaque)o.splice(n,l-n,e,"overlay "+t),l=n+2;else for(;ne.options.maxHighlightLength&&We(e.doc.mode,r.state),a=qe(e,t,r);o&&(r.state=o),t.stateAfter=r.save(!o),t.styles=a.styles,a.classes?t.styleClasses=a.classes:t.styleClasses&&(t.styleClasses=null),n===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function Xe(e,t,n){var r=e.doc,o=e.display;if(!r.mode.startState)return new ps(r,!0,t);var a=rt(e,t,n),i=a>r.first&&k(r,a-1).stateAfter,s=i?ps.fromSaved(r,i,a):new ps(r,Qe(r.mode),a);return r.iter(a,t,function(n){Je(e,n.text,s);var r=s.line;n.stateAfter=r==t-1||r%5==0||r>=o.viewFrom&&rt.start)return a}throw new Error("Mode "+e.name+" failed to advance stream.")}function et(e,t,n,r){var o,a=e.doc,i=a.mode;t=H(a,t);var s,l=k(a,t.line),c=Xe(e,t.line,n),u=new us(l.text,e.options.tabSize,c);for(r&&(s=[]);(r||u.pose.options.maxHighlightLength?(s=!1,i&&Je(e,t,r,d.pos),d.pos=t.length,l=null):l=tt($e(n,d,r.state,p),a),p){var f=p[0].name;f&&(l="m-"+(l?f+" "+l:f))}if(!s||u!=l){for(;ci;--s){if(s<=a.first)return a.first;var l=k(a,s-1),c=l.stateAfter;if(c&&(!n||s+(c instanceof ds?c.lookAhead:0)<=a.modeFrontier))return s;var u=d(l.text,null,e.options.tabSize);(null==o||r>u)&&(o=s-1,r=u)}return o}function ot(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontiern;r--){var o=k(e,r).stateAfter;if(o&&(!(o instanceof ds)||r+o.lookAhead1&&!/ /.test(e))return e;for(var n=t,r="",o=0;oc&&d.from<=c));p++);if(d.to>=u)return e(n,r,o,a,i,s,l);e(n,r.slice(0,d.to-c),o,a,null,s,l),a=null,r=r.slice(d.to-c),c=d.to}}}function ft(e,t,n,r){var o=!r&&n.widgetNode;o&&e.map.push(e.pos,e.pos+t,o),!r&&e.cm.display.input.needsContentAttribute&&(o||(o=e.content.appendChild(document.createElement("span"))),o.setAttribute("cm-marker",n.id)),o&&(e.cm.display.input.setUneditable(o),e.content.appendChild(o)),e.pos+=t,e.trailingSpace=!1}function ht(e,t,n){var r=e.markedSpans,o=e.text,a=0;if(r)for(var i,s,l,c,u,d,p,f=o.length,h=0,m=1,g="",b=0;;){if(b==h){l=c=u=d=s="",p=null,b=1/0;for(var v=[],y=void 0,_=0;_h||x.collapsed&&A.to==h&&A.from==h)?(null!=A.to&&A.to!=h&&b>A.to&&(b=A.to,c=""),x.className&&(l+=" "+x.className),x.css&&(s=(s?s+";":"")+x.css),x.startStyle&&A.from==h&&(u+=" "+x.startStyle),x.endStyle&&A.to==b&&(y||(y=[])).push(x.endStyle,A.to),x.title&&!d&&(d=x.title),x.collapsed&&(!p||ie(p.marker,x)<0)&&(p=A)):A.from>h&&b>A.from&&(b=A.from)}if(y)for(var w=0;w=f)break;for(var E=Math.min(f,b);;){if(g){var S=h+g.length;if(!p){var k=S>E?g.slice(0,E-h):g;t.addToken(t,k,i?i+l:l,u,h+k.length==b?c:"",d,s)}if(S>=E){g=g.slice(E-h),h=E;break}h=S,u=""}g=o.slice(a,a=n[m++]),i=st(n[m++],t.cm.options)}}else for(var C=1;C2&&a.push((l.bottom+c.top)/2-n.top)}}a.push(n.bottom-n.top)}}function Vt(e,t,n){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};for(var r=0;rn)return{map:e.measure.maps[o],cache:e.measure.caches[o],before:!0}}function Yt(e,t){t=de(t);var r=O(t),o=e.display.externalMeasured=new mt(e.doc,t,r);o.lineN=r;var a=o.built=lt(e,o);return o.text=a.pre,n(e.display.lineMeasure,a.pre),o}function Wt(e,t,n,r){return qt(e,Qt(e,t),n,r)}function Gt(e,t){if(t>=e.display.viewFrom&&t=n.lineN&&tt)&&(a=l-s,o=a-1,t>=l&&(i="right")),null!=o){if(r=e[c+2],s==l&&n==(r.insertLeft?"left":"right")&&(i=n),"left"==n&&0==o)for(;c&&e[c-2]==e[c-3]&&e[c-1].insertLeft;)r=e[2+(c-=3)],i="left";if("right"==n&&o==l-s)for(;c=0&&(n=e[o]).left==n.right;o--);return n}function Jt(e,t,n,r){var o,a=Kt(t.map,n,r),i=a.node,s=a.start,l=a.end,c=a.collapse;if(3==i.nodeType){for(var u=0;u<4;u++){for(;s&&w(t.line.text.charAt(a.coverStart+s));)--s;for(;a.coverStart+l0&&(c=r="right");var d;o=e.options.lineWrapping&&(d=i.getClientRects()).length>1?d["right"==r?d.length-1:0]:i.getBoundingClientRect()}if(vi&&yi<9&&!s&&(!o||!o.left&&!o.right)){var p=i.parentNode.getClientRects()[0];o=p?{left:p.left,right:p.left+_n(e.display),top:p.top,bottom:p.bottom}:_s}for(var f=o.top-t.rect.top,h=o.bottom-t.rect.top,m=(f+h)/2,g=t.view.measure.heights,b=0;b=r.text.length?(c=r.text.length,u="before"):c<=0&&(c=0,u="after"),!l)return i("before"==u?c-1:c,"before"==u);var d=xe(l,c,u),p=Zi,f=s(c,d,"before"==u);return null!=p&&(f.other=s(c,p,"before"!=u)),f}function un(e,t){var n=0;t=H(e.doc,t),e.options.lineWrapping||(n=_n(e.display)*t.ch);var r=k(e.doc,t.line),o=ve(r)+Rt(e.display);return{left:n,right:n,top:o,bottom:o+r.height}}function dn(e,t,n,r,o){var a=I(e,t,n);return a.xRel=o,r&&(a.outside=!0),a}function pn(e,t,n){var r=e.doc;if((n+=e.display.viewOffset)<0)return dn(r.first,0,null,!0,-1);var o=L(r,n),a=r.first+r.size-1;if(o>a)return dn(r.first+r.size-1,k(r,a).text.length,null,!0,1);t<0&&(t=0);for(var i=k(r,o);;){var s=gn(e,i,o,t,n),l=ce(i),c=l&&l.find(0,!0);if(!l||!(s.ch>c.from.ch||s.ch==c.from.ch&&s.xRel>0))return s;o=O(i=c.to.line)}}function fn(e,t,n,r){r-=on(t);var o=t.text.length,a=E(function(t){return qt(e,n,t-1).bottom<=r},o,0);return o=E(function(t){return qt(e,n,t).top>r},a,o),{begin:a,end:o}}function hn(e,t,n,r){return n||(n=Qt(e,t)),fn(e,t,n,an(e,t,qt(e,n,r),"line").top)}function mn(e,t,n,r){return!(e.bottom<=n)&&(e.top>n||(r?e.left:e.right)>t)}function gn(e,t,n,r,o){o-=ve(t);var a=Qt(e,t),i=on(t),s=0,l=t.text.length,c=!0,u=we(t,e.doc.direction);if(u){var d=(e.options.lineWrapping?vn:bn)(e,t,n,a,u,r,o);c=1!=d.level,s=c?d.from:d.to-1,l=c?d.to:d.from-1}var p,f,h=null,m=null,g=E(function(t){var n=qt(e,a,t);return n.top+=i,n.bottom+=i,!!mn(n,r,o,!1)&&(n.top<=o&&n.left<=r&&(h=t,m=n),!0)},s,l),b=!1;if(m){var v=r-m.left=_.bottom}return g=j(t.text,g,1),dn(n,g,f,b,r-p)}function bn(e,t,n,r,o,a,i){var s=E(function(s){var l=o[s],c=1!=l.level;return mn(cn(e,I(n,c?l.to:l.from,c?"before":"after"),"line",t,r),a,i,!0)},0,o.length-1),l=o[s];if(s>0){var c=1!=l.level,u=cn(e,I(n,c?l.from:l.to,c?"after":"before"),"line",t,r);mn(u,a,i,!0)&&u.top>i&&(l=o[s-1])}return l}function vn(e,t,n,r,o,a,i){var s=fn(e,t,r,i),l=s.begin,c=s.end;/\s/.test(t.text.charAt(c-1))&&c--;for(var u=null,d=null,p=0;p=c||f.to<=l)){var h=1!=f.level,m=qt(e,r,h?Math.min(c,f.to)-1:Math.max(l,f.from)).right,g=mg)&&(u=f,d=g)}}return u||(u=o[o.length-1]),u.fromc&&(u={from:u.from,to:c,level:u.level}),u}function yn(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==ms){ms=r("pre");for(var o=0;o<49;++o)ms.appendChild(document.createTextNode("x")),ms.appendChild(r("br"));ms.appendChild(document.createTextNode("x"))}n(e.measure,ms);var a=ms.offsetHeight/50;return a>3&&(e.cachedTextHeight=a),t(e.measure),a||1}function _n(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t=r("span","xxxxxxxxxx"),o=r("pre",[t]);n(e.measure,o);var a=t.getBoundingClientRect(),i=(a.right-a.left)/10;return i>2&&(e.cachedCharWidth=i),i||10}function An(e){for(var t=e.display,n={},r={},o=t.gutters.clientLeft,a=t.gutters.firstChild,i=0;a;a=a.nextSibling,++i)n[e.options.gutters[i]]=a.offsetLeft+a.clientLeft+o,r[e.options.gutters[i]]=a.clientWidth;return{fixedPos:xn(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:n,gutterWidth:r,wrapperWidth:t.wrapper.clientWidth}}function xn(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function wn(e){var t=yn(e.display),n=e.options.lineWrapping,r=n&&Math.max(5,e.display.scroller.clientWidth/_n(e.display)-3);return function(o){if(ge(e.doc,o))return 0;var a=0;if(o.widgets)for(var i=0;i=e.display.viewTo)return null;if((t-=e.display.viewFrom)<0)return null;for(var n=e.display.view,r=0;r=e.display.viewTo||s.to().line0?t.blinker=setInterval(function(){return t.cursorDiv.style.visibility=(n=!n)?"":"hidden"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function Dn(e){e.state.focused||(e.display.input.focus(),In(e))}function Pn(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,Rn(e))},100)}function In(e,t){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1),"nocursor"!=e.options.readOnly&&(e.state.focused||(Se(e,"focus",e,t),e.state.focused=!0,s(e.display.wrapper,"CodeMirror-focused"),e.curOp||e.display.selForContextMenu==e.doc.sel||(e.display.input.reset(),_i&&setTimeout(function(){return e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),Ln(e))}function Rn(e,t){e.state.delayingBlurEvent||(e.state.focused&&(Se(e,"blur",e,t),e.state.focused=!1,Ni(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function Nn(e){for(var t=e.display,n=t.lineDiv.offsetTop,r=0;r.005||l<-.005)&&(M(o.line,a),Bn(o.line),o.rest))for(var c=0;c=i&&(a=L(t,ve(k(t,l))-e.wrapper.clientHeight),i=l)}return{from:a,to:Math.max(i,a+1)}}function Un(e){var t=e.display,n=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var r=xn(t)-t.scroller.scrollLeft+e.doc.scrollLeft,o=t.gutters.offsetWidth,a=r+"px",i=0;i(window.innerHeight||document.documentElement.clientHeight)&&(a=!1),null!=a&&!Si){var i=r("div","​",null,"position: absolute;\n top: "+(t.top-n.viewOffset-Rt(e.display))+"px;\n height: "+(t.bottom-t.top+Ft(e)+n.barHeight)+"px;\n left: "+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;");e.display.lineSpace.appendChild(i),i.scrollIntoView(a),e.display.lineSpace.removeChild(i)}}}function Vn(e,t,n,r){null==r&&(r=0);var o;e.options.lineWrapping||t!=n||(t=t.ch?I(t.line,"before"==t.sticky?t.ch-1:t.ch,"after"):t,n="before"==t.sticky?I(t.line,t.ch+1,"before"):t);for(var a=0;a<5;a++){var i=!1,s=cn(e,t),l=n&&n!=t?cn(e,n):s;o={left:Math.min(s.left,l.left),top:Math.min(s.top,l.top)-r,right:Math.max(s.left,l.left),bottom:Math.max(s.bottom,l.bottom)+r};var c=Wn(e,o),u=e.doc.scrollTop,d=e.doc.scrollLeft;if(null!=c.scrollTop&&(Zn(e,c.scrollTop),Math.abs(e.doc.scrollTop-u)>1&&(i=!0)),null!=c.scrollLeft&&(er(e,c.scrollLeft),Math.abs(e.doc.scrollLeft-d)>1&&(i=!0)),!i)break}return o}function Yn(e,t){var n=Wn(e,t);null!=n.scrollTop&&Zn(e,n.scrollTop),null!=n.scrollLeft&&er(e,n.scrollLeft)}function Wn(e,t){var n=e.display,r=yn(e.display);t.top<0&&(t.top=0);var o=e.curOp&&null!=e.curOp.scrollTop?e.curOp.scrollTop:n.scroller.scrollTop,a=zt(e),i={};t.bottom-t.top>a&&(t.bottom=t.top+a);var s=e.doc.height+Nt(n),l=t.tops-r;if(t.topo+a){var u=Math.min(t.top,(c?s:t.bottom)-a);u!=o&&(i.scrollTop=u)}var d=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:n.scroller.scrollLeft,p=Ut(e)-(e.options.fixedGutter?n.gutters.offsetWidth:0),f=t.right-t.left>p;return f&&(t.right=t.left+p),t.left<10?i.scrollLeft=0:t.leftp+d-3&&(i.scrollLeft=t.right+(f?0:10)-p),i}function Gn(e,t){null!=t&&(Xn(e),e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc.scrollTop:e.curOp.scrollTop)+t)}function Qn(e){Xn(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function qn(e,t,n){null==t&&null==n||Xn(e),null!=t&&(e.curOp.scrollLeft=t),null!=n&&(e.curOp.scrollTop=n)}function Kn(e,t){Xn(e),e.curOp.scrollToPos=t}function Xn(e){var t=e.curOp.scrollToPos;if(t){e.curOp.scrollToPos=null;Jn(e,un(e,t.from),un(e,t.to),t.margin)}}function Jn(e,t,n,r){var o=Wn(e,{left:Math.min(t.left,n.left),top:Math.min(t.top,n.top)-r,right:Math.max(t.right,n.right),bottom:Math.max(t.bottom,n.bottom)+r});qn(e,o.scrollLeft,o.scrollTop)}function Zn(e,t){Math.abs(e.doc.scrollTop-t)<2||(hi||Mr(e,{top:t}),$n(e,t,!0),hi&&Mr(e),wr(e,100))}function $n(e,t,n){t=Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t),(e.display.scroller.scrollTop!=t||n)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function er(e,t,n,r){t=Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth),(n?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!r||(e.doc.scrollLeft=t,Un(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function tr(e){var t=e.display,n=t.gutters.offsetWidth,r=Math.round(e.doc.height+Nt(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?n:0,docHeight:r,scrollHeight:r+Ft(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:n}}function nr(e,t){t||(t=tr(e));var n=e.display.barWidth,r=e.display.barHeight;rr(e,t);for(var o=0;o<4&&n!=e.display.barWidth||r!=e.display.barHeight;o++)n!=e.display.barWidth&&e.options.lineWrapping&&Nn(e),rr(e,tr(e)),n=e.display.barWidth,r=e.display.barHeight}function rr(e,t){var n=e.display,r=n.scrollbars.update(t);n.sizer.style.paddingRight=(n.barWidth=r.right)+"px",n.sizer.style.paddingBottom=(n.barHeight=r.bottom)+"px",n.heightForcer.style.borderBottom=r.bottom+"px solid transparent",r.right&&r.bottom?(n.scrollbarFiller.style.display="block",n.scrollbarFiller.style.height=r.bottom+"px",n.scrollbarFiller.style.width=r.right+"px"):n.scrollbarFiller.style.display="",r.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(n.gutterFiller.style.display="block",n.gutterFiller.style.height=r.bottom+"px",n.gutterFiller.style.width=t.gutterWidth+"px"):n.gutterFiller.style.display=""}function or(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&Ni(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new ws[e.options.scrollbarStyle](function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),ts(t,"mousedown",function(){e.state.focused&&setTimeout(function(){return e.display.input.focus()},0)}),t.setAttribute("cm-not-content","true")},function(t,n){"horizontal"==n?er(e,t):Zn(e,t)},e),e.display.scrollbars.addClass&&s(e.display.wrapper,e.display.scrollbars.addClass)}function ar(e){e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++js},bt(e.curOp)}function ir(e){yt(e.curOp,function(e){for(var t=0;t=n.viewTo)||n.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new Es(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function cr(e){e.updatedDisplay=e.mustUpdate&&Cr(e.cm,e.update)}function ur(e){var t=e.cm,n=t.display;e.updatedDisplay&&Nn(t),e.barMeasure=tr(t),n.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=Wt(t,n.maxLine,n.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(n.scroller.clientWidth,n.sizer.offsetLeft+e.adjustWidthTo+Ft(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+e.adjustWidthTo-Ut(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=n.input.prepareSelection())}function dr(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeftt)&&(o.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=o.viewTo)Ji&&he(e.doc,t)o.viewFrom?yr(e):(o.viewFrom+=r,o.viewTo+=r);else if(t<=o.viewFrom&&n>=o.viewTo)yr(e);else if(t<=o.viewFrom){var a=_r(e,n,n+r,1);a?(o.view=o.view.slice(a.index),o.viewFrom=a.lineN,o.viewTo+=r):yr(e)}else if(n>=o.viewTo){var i=_r(e,t,t,-1);i?(o.view=o.view.slice(0,i.index),o.viewTo=i.lineN):yr(e)}else{var s=_r(e,t,t,-1),l=_r(e,n,n+r,1);s&&l?(o.view=o.view.slice(0,s.index).concat(gt(e,s.lineN,l.lineN)).concat(o.view.slice(l.index)),o.viewTo+=r):yr(e)}var c=o.externalMeasured;c&&(n=o.lineN&&t=r.viewTo)){var a=r.view[Sn(e,t)];if(null!=a.node){var i=a.changes||(a.changes=[]);-1==p(i,n)&&i.push(n)}}}function yr(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function _r(e,t,n,r){var o,a=Sn(e,t),i=e.display.view;if(!Ji||n==e.doc.first+e.doc.size)return{index:a,lineN:n};for(var s=e.display.viewFrom,l=0;l0){if(a==i.length-1)return null;o=s+i[a].size-t,a++}else o=s-t;t+=o,n+=o}for(;he(e.doc,n)!=n;){if(a==(r<0?0:i.length-1))return null;n+=r*i[a-(r<0?1:0)].size,a+=r}return{index:a,lineN:n}}function Ar(e,t,n){var r=e.display;0==r.view.length||t>=r.viewTo||n<=r.viewFrom?(r.view=gt(e,t,n),r.viewFrom=t):(r.viewFrom>t?r.view=gt(e,t,r.viewFrom).concat(r.view):r.viewFromn&&(r.view=r.view.slice(0,Sn(e,n)))),r.viewTo=n}function xr(e){for(var t=e.display.view,n=0,r=0;r=e.display.viewTo)){var n=+new Date+e.options.workTime,r=Xe(e,t.highlightFrontier),o=[];t.iter(r.line,Math.min(t.first+t.size,e.display.viewTo+500),function(a){if(r.line>=e.display.viewFrom){var i=a.styles,s=a.text.length>e.options.maxHighlightLength?We(t.mode,r.state):null,l=qe(e,a,r,!0);s&&(r.state=s),a.styles=l.styles;var c=a.styleClasses,u=l.classes;u?a.styleClasses=u:c&&(a.styleClasses=null);for(var d=!i||i.length!=a.styles.length||c!=u&&(!c||!u||c.bgClass!=u.bgClass||c.textClass!=u.textClass),p=0;!d&&pn)return wr(e,e.options.workDelay),!0}),t.highlightFrontier=r.line,t.modeFrontier=Math.max(t.modeFrontier,r.line),o.length&&fr(e,function(){for(var t=0;t=r.viewFrom&&n.visible.to<=r.viewTo&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo)&&r.renderedView==r.view&&0==xr(e))return!1;zn(e)&&(yr(e),n.dims=An(e));var a=o.first+o.size,i=Math.max(n.visible.from-e.options.viewportMargin,o.first),s=Math.min(a,n.visible.to+e.options.viewportMargin);r.viewFroms&&r.viewTo-s<20&&(s=Math.min(a,r.viewTo)),Ji&&(i=he(e.doc,i),s=me(e.doc,s));var l=i!=r.viewFrom||s!=r.viewTo||r.lastWrapHeight!=n.wrapperHeight||r.lastWrapWidth!=n.wrapperWidth;Ar(e,i,s),r.viewOffset=ve(k(e.doc,r.viewFrom)),e.display.mover.style.top=r.viewOffset+"px";var c=xr(e);if(!l&&0==c&&!n.force&&r.renderedView==r.view&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo))return!1;var u=Sr(e);return c>4&&(r.lineDiv.style.display="none"),Or(e,r.updateLineNumbers,n.dims),c>4&&(r.lineDiv.style.display=""),r.renderedView=r.view,kr(u),t(r.cursorDiv),t(r.selectionDiv),r.gutters.style.height=r.sizer.style.minHeight=0,l&&(r.lastWrapHeight=n.wrapperHeight,r.lastWrapWidth=n.wrapperWidth,wr(e,400)),r.updateLineNumbers=null,!0}function Tr(e,t){for(var n=t.viewport,r=!0;(r&&e.options.lineWrapping&&t.oldDisplayWidth!=Ut(e)||(n&&null!=n.top&&(n={top:Math.min(e.doc.height+Nt(e.display)-zt(e),n.top)}),t.visible=Fn(e.display,e.doc,n),!(t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)))&&Cr(e,t);r=!1){Nn(e);var o=tr(e);kn(e),nr(e,o),Dr(e,o),t.force=!1}t.signal(e,"update",e),e.display.viewFrom==e.display.reportedViewFrom&&e.display.viewTo==e.display.reportedViewTo||(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function Mr(e,t){var n=new Es(e,t);if(Cr(e,n)){Nn(e),Tr(e,n);var r=tr(e);kn(e),nr(e,r),Dr(e,r),n.finish()}}function Or(e,n,r){function o(t){var n=t.nextSibling;return _i&&Mi&&e.display.currentWheelTarget==t?t.style.display="none":t.parentNode.removeChild(t),n}for(var a=e.display,i=e.options.lineNumbers,s=a.lineDiv,l=s.firstChild,c=a.view,u=a.viewFrom,d=0;d-1&&(h=!1),xt(e,f,u,r)),h&&(t(f.lineNumber),f.lineNumber.appendChild(document.createTextNode(P(e.options,u)))),l=f.node.nextSibling}else{var m=Mt(e,f,u,r);s.insertBefore(m,l)}u+=f.size}for(;l;)l=o(l)}function Lr(e){var t=e.display.gutters.offsetWidth;e.display.sizer.style.marginLeft=t+"px"}function Dr(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+Ft(e)+"px"}function Pr(e){var n=e.display.gutters,o=e.options.gutters;t(n);for(var a=0;a-1&&!e.lineNumbers&&(e.gutters=e.gutters.slice(0),e.gutters.splice(t,1))}function Rr(e){var t=e.wheelDeltaX,n=e.wheelDeltaY;return null==t&&e.detail&&e.axis==e.HORIZONTAL_AXIS&&(t=e.detail),null==n&&e.detail&&e.axis==e.VERTICAL_AXIS?n=e.detail:null==n&&(n=e.wheelDelta),{x:t,y:n}}function Nr(e){var t=Rr(e);return t.x*=ks,t.y*=ks,t}function Br(e,t){var n=Rr(t),r=n.x,o=n.y,a=e.display,i=a.scroller,s=i.scrollWidth>i.clientWidth,l=i.scrollHeight>i.clientHeight;if(r&&s||o&&l){if(o&&Mi&&_i)e:for(var c=t.target,u=a.view;c!=i;c=c.parentNode)for(var d=0;d=0){var i=U(a.from(),o.from()),s=F(a.to(),o.to()),l=a.empty()?o.from()==o.head:a.from()==a.head;r<=t&&--t,e.splice(--r,2,new Ts(l?s:i,l?i:s))}}return new Cs(e,t)}function Ur(e,t){return new Cs([new Ts(e,t||e)],0)}function zr(e){return e.text?I(e.from.line+e.text.length-1,m(e.text).length+(1==e.text.length?e.from.ch:0)):e.to}function Hr(e,t){if(R(e,t.from)<0)return e;if(R(e,t.to)<=0)return zr(t);var n=e.line+t.text.length-(t.to.line-t.from.line)-1,r=e.ch;return e.line==t.to.line&&(r+=zr(t).ch-t.to.ch),I(n,r)}function Vr(e,t){for(var n=[],r=0;r1&&e.remove(s.line+1,h-1),e.insert(s.line+1,v)}_t(e,"change",e,t)}function Xr(e,t,n){function r(e,o,a){if(e.linked)for(var i=0;i1&&!e.done[e.done.length-2].ranges?(e.done.pop(),m(e.done)):void 0}function oo(e,t,n,r){var o=e.history;o.undone.length=0;var a,i,s=+new Date;if((o.lastOp==r||o.lastOrigin==t.origin&&t.origin&&("+"==t.origin.charAt(0)&&o.lastModTime>s-(e.cm?e.cm.options.historyEventDelay:500)||"*"==t.origin.charAt(0)))&&(a=ro(o,o.lastOp==r)))i=m(a.changes),0==R(t.from,t.to)&&0==R(t.from,i.to)?i.to=zr(t):a.changes.push(to(e,t));else{var l=m(o.done);for(l&&l.ranges||so(e.sel,o.done),a={changes:[to(e,t)],generation:o.generation},o.done.push(a);o.done.length>o.undoDepth;)o.done.shift(),o.done[0].ranges||o.done.shift()}o.done.push(n),o.generation=++o.maxGeneration,o.lastModTime=o.lastSelTime=s,o.lastOp=o.lastSelOp=r,o.lastOrigin=o.lastSelOrigin=t.origin,i||Se(e,"historyAdded")}function ao(e,t,n,r){var o=t.charAt(0);return"*"==o||"+"==o&&n.ranges.length==r.ranges.length&&n.somethingSelected()==r.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}function io(e,t,n,r){var o=e.history,a=r&&r.origin;n==o.lastSelOp||a&&o.lastSelOrigin==a&&(o.lastModTime==o.lastSelTime&&o.lastOrigin==a||ao(e,a,m(o.done),t))?o.done[o.done.length-1]=t:so(t,o.done),o.lastSelTime=+new Date,o.lastSelOrigin=a,o.lastSelOp=n,r&&!1!==r.clearRedo&&no(o.undone)}function so(e,t){var n=m(t);n&&n.ranges&&n.equals(e)||t.push(e)}function lo(e,t,n,r){var o=t["spans_"+e.id],a=0;e.iter(Math.max(e.first,n),Math.min(e.first+e.size,r),function(n){n.markedSpans&&((o||(o=t["spans_"+e.id]={}))[a]=n.markedSpans),++a})}function co(e){if(!e)return null;for(var t,n=0;n-1&&(m(s)[d]=c[d],delete c[d])}}}return r}function ho(e,t,n,r){if(r){var o=e.anchor;if(n){var a=R(t,o)<0;a!=R(n,o)<0?(o=t,t=n):a!=R(t,n)<0&&(t=n)}return new Ts(o,t)}return new Ts(n||t,t)}function mo(e,t,n,r,o){null==o&&(o=e.cm&&(e.cm.display.shift||e.extend)),Ao(e,new Cs([ho(e.sel.primary(),t,n,o)],0),r)}function go(e,t,n){for(var r=[],o=e.cm&&(e.cm.display.shift||e.extend),a=0;a=t.ch:s.to>t.ch))){if(o&&(Se(l,"beforeCursorEnter"),l.explicitlyCleared)){if(a.markedSpans){--i;continue}break}if(!l.atomic)continue;if(n){var c=l.find(r<0?1:-1),u=void 0;if((r<0?l.inclusiveRight:l.inclusiveLeft)&&(c=Co(e,c,-r,c&&c.line==t.line?a:null)),c&&c.line==t.line&&(u=R(c,n))&&(r<0?u<0:u>0))return So(e,c,t,r,o)}var d=l.find(r<0?-1:1);return(r<0?l.inclusiveLeft:l.inclusiveRight)&&(d=Co(e,d,r,d.line==t.line?a:null)),d?So(e,d,t,r,o):null}}return t}function ko(e,t,n,r,o){var a=r||1,i=So(e,t,n,a,o)||!o&&So(e,t,n,a,!0)||So(e,t,n,-a,o)||!o&&So(e,t,n,-a,!0);return i||(e.cantEdit=!0,I(e.first,0))}function Co(e,t,n,r){return n<0&&0==t.ch?t.line>e.first?H(e,I(t.line-1)):null:n>0&&t.ch==(r||k(e,t.line)).text.length?t.line=0;--o)Lo(e,{from:r[o].from,to:r[o].to,text:o?[""]:t.text,origin:t.origin});else Lo(e,t)}}function Lo(e,t){if(1!=t.text.length||""!=t.text[0]||0!=R(t.from,t.to)){var n=Vr(e,t);oo(e,t,n,e.cm?e.cm.curOp.id:NaN),Io(e,t,n,$(e,t));var r=[];Xr(e,function(e,n){n||-1!=p(r,e.history)||(Uo(e.history,t),r.push(e.history)),Io(e,t,null,$(e,t))})}}function Do(e,t,n){var r=e.cm&&e.cm.state.suppressEdits;if(!r||n){for(var o,a=e.history,i=e.sel,s="undo"==t?a.done:a.undone,l="undo"==t?a.undone:a.done,c=0;c=0;--f){var h=function(n){var r=o.changes[n];if(r.origin=t,d&&!Mo(e,r,!1))return s.length=0,{};u.push(to(e,r));var a=n?Vr(e,r):m(s);Io(e,r,a,po(e,r)),!n&&e.cm&&e.cm.scrollIntoView({from:r.from,to:zr(r)});var i=[];Xr(e,function(e,t){t||-1!=p(i,e.history)||(Uo(e.history,r),i.push(e.history)),Io(e,r,null,po(e,r))})}(f);if(h)return h.v}}}}function Po(e,t){if(0!=t&&(e.first+=t,e.sel=new Cs(g(e.sel.ranges,function(e){return new Ts(I(e.anchor.line+t,e.anchor.ch),I(e.head.line+t,e.head.ch))}),e.sel.primIndex),e.cm)){br(e.cm,e.first,e.first-t,t);for(var n=e.cm.display,r=n.viewFrom;re.lastLine())){if(t.from.linea&&(t={from:t.from,to:I(a,k(e,a).text.length),text:[t.text[0]],origin:t.origin}),t.removed=C(e,t.from,t.to),n||(n=Vr(e,t)),e.cm?Ro(e.cm,t,r):Kr(e,t,r),xo(e,n,Yi)}}function Ro(e,t,n){var r=e.doc,o=e.display,a=t.from,i=t.to,s=!1,l=a.line;e.options.lineWrapping||(l=O(de(k(r,a.line))),r.iter(l,i.line+1,function(e){if(e==o.maxLine)return s=!0,!0})),r.sel.contains(t.from,t.to)>-1&&Ce(e),Kr(r,t,n,wn(e)),e.options.lineWrapping||(r.iter(l,a.line+t.text.length,function(e){var t=ye(e);t>o.maxLineLength&&(o.maxLine=e,o.maxLineLength=t,o.maxLineChanged=!0,s=!1)}),s&&(e.curOp.updateMaxLine=!0)),ot(r,a.line),wr(e,400);var c=t.text.length-(i.line-a.line)-1;t.full?br(e):a.line!=i.line||1!=t.text.length||qr(e.doc,t)?br(e,a.line,i.line+1,c):vr(e,a.line,"text");var u=Te(e,"changes"),d=Te(e,"change");if(d||u){var p={from:a,to:i,text:t.text,removed:t.removed,origin:t.origin};d&&_t(e,"change",e,p),u&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(p)}e.display.selForContextMenu=null}function No(e,t,n,r,o){if(r||(r=n),R(r,n)<0){var a;a=[r,n],n=a[0],r=a[1]}"string"==typeof t&&(t=e.splitLines(t)),Oo(e,{from:n,to:r,text:t,origin:o})}function Bo(e,t,n,r){n0||0==s&&!1!==i.clearWhenEmpty)return i;if(i.replacedWith&&(i.collapsed=!0,i.widgetNode=o("span",[i.replacedWith],"CodeMirror-widget"),r.handleMouseEvents||i.widgetNode.setAttribute("cm-ignore-events","true"),r.insertLeft&&(i.widgetNode.insertLeft=!0)),i.collapsed){if(ue(e,t.line,t,n,i)||t.line!=n.line&&ue(e,n.line,t,n,i))throw new Error("Inserting collapsed marker partially overlapping an existing one");G()}i.addToHistory&&oo(e,{from:t,to:n,origin:"markText"},e.sel,NaN);var l,c=t.line,d=e.cm;if(e.iter(c,n.line+1,function(e){d&&i.collapsed&&!d.options.lineWrapping&&de(e)==d.display.maxLine&&(l=!0),i.collapsed&&c!=t.line&&M(e,0),X(e,new Q(i,c==t.line?t.ch:null,c==n.line?n.ch:null)),++c}),i.collapsed&&e.iter(t.line,n.line+1,function(t){ge(e,t)&&M(t,0)}),i.clearOnEnter&&ts(i,"beforeCursorEnter",function(){return i.clear()}),i.readOnly&&(W(),(e.history.done.length||e.history.undone.length)&&e.clearHistory()),i.collapsed&&(i.id=++Os,i.atomic=!0),d){if(l&&(d.curOp.updateMaxLine=!0),i.collapsed)br(d,t.line,n.line+1);else if(i.className||i.title||i.startStyle||i.endStyle||i.css)for(var p=t.line;p<=n.line;p++)vr(d,p,"text");i.atomic&&jo(d.doc),_t(d,"markerAdded",d,i)}return i}function Qo(e,t,n,r,o){r=u(r),r.shared=!1;var a=[Go(e,t,n,r,o)],i=a[0],s=r.widgetNode;return Xr(e,function(e){s&&(r.widgetNode=s.cloneNode(!0)),a.push(Go(e,H(e,t),H(e,n),r,o));for(var l=0;l-1)return t.state.draggingText(e),void setTimeout(function(){return t.display.input.focus()},20);try{var l=e.dataTransfer.getData("Text");if(l){var c;if(t.state.draggingText&&!t.state.draggingText.copy&&(c=t.listSelections()),xo(t.doc,Ur(n,n)),c)for(var u=0;u=0;t--)No(e.doc,"",r[t].from,r[t].to,"+delete");Qn(e)})}function fa(e,t,n){var r=j(e.text,t+n,n);return r<0||r>e.text.length?null:r}function ha(e,t,n){var r=fa(e,t.ch,n);return null==r?null:new I(t.line,r,n<0?"after":"before")}function ma(e,t,n,r,o){if(e){var a=we(n,t.doc.direction);if(a){var i,s=o<0?m(a):a[0],l=o<0==(1==s.level),c=l?"after":"before";if(s.level>0||"rtl"==t.doc.direction){var u=Qt(t,n);i=o<0?n.text.length-1:0;var d=qt(t,u,i).top;i=E(function(e){return qt(t,u,e).top==d},o<0==(1==s.level)?s.from:s.to-1,i),"before"==c&&(i=fa(n,i,1))}else i=o<0?s.to:s.from;return new I(r,i,c)}}return new I(r,o<0?n.text.length:0,o<0?"before":"after")}function ga(e,t,n,r){var o=we(t,e.doc.direction);if(!o)return ha(t,n,r);n.ch>=t.text.length?(n.ch=t.text.length,n.sticky="before"):n.ch<=0&&(n.ch=0,n.sticky="after");var a=xe(o,n.ch,n.sticky),i=o[a];if("ltr"==e.doc.direction&&i.level%2==0&&(r>0?i.to>n.ch:i.from=i.from&&p>=u.begin)){var f=d?"before":"after";return new I(n.line,p,f)}}var h=function(e,t,r){for(var a=function(e,t){return t?new I(n.line,l(e,1),"before"):new I(n.line,e,"after")};e>=0&&e0==(1!=i.level),c=s?r.begin:l(r.end,-1);if(i.from<=c&&c0?u.end:l(u.begin,-1);return null==g||r>0&&g==t.text.length||!(m=h(r>0?0:o.length-1,r,c(g)))?null:m}function ba(e,t){var n=k(e.doc,t),r=de(n);return r!=n&&(t=O(r)),ma(!0,e,r,t,1)}function va(e,t){var n=k(e.doc,t),r=pe(n);return r!=n&&(t=O(r)),ma(!0,e,n,t,-1)}function ya(e,t){var n=ba(e,t.line),r=k(e.doc,n.line),o=we(r,e.doc.direction);if(!o||0==o[0].level){var a=Math.max(0,r.text.search(/\S/)),i=t.line==n.line&&t.ch<=a&&t.ch;return I(n.line,i?0:a,n.sticky)}return n}function _a(e,t,n){if("string"==typeof t&&!(t=Vs[t]))return!1;e.display.input.ensurePolled();var r=e.display.shift,o=!1;try{e.isReadOnly()&&(e.state.suppressEdits=!0),n&&(e.display.shift=!1),o=t(e)!=Vi}finally{e.display.shift=r,e.state.suppressEdits=!1}return o}function Aa(e,t,n){for(var r=0;r-1&&(R((o=s.ranges[o]).from(),t)<0||t.xRel>0)&&(R(o.to(),t)>0||t.xRel<0)?Ia(e,r,t,a):Na(e,r,t,a)}function Ia(e,t,n,r){var o=e.display,a=!1,i=hr(e,function(t){_i&&(o.scroller.draggable=!1),e.state.draggingText=!1,Ee(o.wrapper.ownerDocument,"mouseup",i),Ee(o.wrapper.ownerDocument,"mousemove",s),Ee(o.scroller,"dragstart",l),Ee(o.scroller,"drop",i),a||(Oe(t),r.addNew||mo(e.doc,n,null,null,r.extend),_i||vi&&9==yi?setTimeout(function(){o.wrapper.ownerDocument.body.focus(),o.input.focus()},20):o.input.focus())}),s=function(e){a=a||Math.abs(t.clientX-e.clientX)+Math.abs(t.clientY-e.clientY)>=10},l=function(){return a=!0};_i&&(o.scroller.draggable=!0),e.state.draggingText=i,i.copy=!r.moveOnDrag,o.scroller.dragDrop&&o.scroller.dragDrop(),ts(o.wrapper.ownerDocument,"mouseup",i),ts(o.wrapper.ownerDocument,"mousemove",s),ts(o.scroller,"dragstart",l),ts(o.scroller,"drop",i),Pn(e),setTimeout(function(){return o.input.focus()},20)}function Ra(e,t,n){if("char"==n)return new Ts(t,t);if("word"==n)return e.findWordAt(t);if("line"==n)return new Ts(I(t.line,0),H(e.doc,I(t.line+1,0)));var r=n(e,t);return new Ts(r.from,r.to)}function Na(e,t,n,r){function o(t){if(0!=R(b,t))if(b=t,"rectangle"==r.unit){for(var o=[],a=e.options.tabSize,i=d(k(c,n.line).text,n.ch,a),s=d(k(c,t.line).text,t.ch,a),l=Math.min(i,s),m=Math.max(i,s),g=Math.min(n.line,t.line),v=Math.min(e.lastLine(),Math.max(n.line,t.line));g<=v;g++){var y=k(c,g).text,_=f(y,l,a);l==m?o.push(new Ts(I(g,_),I(g,_))):y.length>_&&o.push(new Ts(I(g,_),I(g,f(y,m,a))))}o.length||o.push(new Ts(n,n)),Ao(c,Fr(h.ranges.slice(0,p).concat(o),p),{origin:"*mouse",scroll:!1}),e.scrollIntoView(t)}else{var A,x=u,w=Ra(e,t,r.unit),j=x.anchor;R(w.anchor,j)>0?(A=w.head,j=U(x.from(),w.anchor)):(A=w.anchor,j=F(x.to(),w.head));var E=h.ranges.slice(0);E[p]=Ba(e,new Ts(H(c,j),A)),Ao(c,Fr(E,p),Wi)}}function a(t){var n=++y,s=En(e,t,!0,"rectangle"==r.unit);if(s)if(0!=R(s,b)){e.curOp.focus=i(),o(s);var u=Fn(l,c);(s.line>=u.to||s.linev.bottom?20:0;d&&setTimeout(hr(e,function(){y==n&&(l.scroller.scrollTop+=d,a(t))}),50)}}function s(t){e.state.selectingText=!1,y=1/0,Oe(t),l.input.focus(),Ee(l.wrapper.ownerDocument,"mousemove",_),Ee(l.wrapper.ownerDocument,"mouseup",A),c.history.lastSelOrigin=null}var l=e.display,c=e.doc;Oe(t);var u,p,h=c.sel,m=h.ranges;if(r.addNew&&!r.extend?(p=c.sel.contains(n),u=p>-1?m[p]:new Ts(n,n)):(u=c.sel.primary(),p=c.sel.primIndex),"rectangle"==r.unit)r.addNew||(u=new Ts(n,n)),n=En(e,t,!0,!0),p=-1;else{var g=Ra(e,n,r.unit);u=r.extend?ho(u,g.anchor,g.head,r.extend):g}r.addNew?-1==p?(p=m.length,Ao(c,Fr(m.concat([u]),p),{scroll:!1,origin:"*mouse"})):m.length>1&&m[p].empty()&&"char"==r.unit&&!r.extend?(Ao(c,Fr(m.slice(0,p).concat(m.slice(p+1)),0),{scroll:!1,origin:"*mouse"}),h=c.sel):bo(c,p,u,Wi):(p=0,Ao(c,new Cs([u],0),Wi),h=c.sel);var b=n,v=l.wrapper.getBoundingClientRect(),y=0,_=hr(e,function(e){Re(e)?a(e):s(e)}),A=hr(e,s);e.state.selectingText=A,ts(l.wrapper.ownerDocument,"mousemove",_),ts(l.wrapper.ownerDocument,"mouseup",A)}function Ba(e,t){var n=t.anchor,r=t.head,o=k(e.doc,n.line);if(0==R(n,r)&&n.sticky==r.sticky)return t;var a=we(o);if(!a)return t;var i=xe(a,n.ch,n.sticky),s=a[i];if(s.from!=n.ch&&s.to!=n.ch)return t;var l=i+(s.from==n.ch==(1!=s.level)?0:1);if(0==l||l==a.length)return t;var c;if(r.line!=n.line)c=(r.line-n.line)*("ltr"==e.doc.direction?1:-1)>0;else{var u=xe(a,r.ch,r.sticky),d=u-i||(r.ch-n.ch)*(1==s.level?-1:1);c=u==l-1||u==l?d<0:d>0}var p=a[l+(c?-1:0)],f=c==(1==p.level),h=f?p.from:p.to,m=f?"after":"before";return n.ch==h&&n.sticky==m?t:new Ts(new I(n.line,h,m),r)}function Fa(e,t,n,r){var o,a;if(t.touches)o=t.touches[0].clientX,a=t.touches[0].clientY;else try{o=t.clientX,a=t.clientY}catch(t){return!1}if(o>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;r&&Oe(t);var i=e.display,s=i.lineDiv.getBoundingClientRect();if(a>s.bottom||!Te(e,n))return De(t);a-=s.top-i.viewOffset;for(var l=0;l=o){return Se(e,n,e,L(e.doc,a),e.options.gutters[l],t),De(t)}}}function Ua(e,t){return Fa(e,t,"gutterClick",!0)}function za(e,t){It(e.display,t)||Ha(e,t)||ke(e,t,"contextmenu")||e.display.input.onContextMenu(t)}function Ha(e,t){return!!Te(e,"gutterContextMenu")&&Fa(e,t,"gutterContextMenu",!1)}function Va(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),tn(e)}function Ya(e){Pr(e),br(e),Un(e)}function Wa(e,t,n){if(!t!=!(n&&n!=Ks)){var r=e.display.dragFunctions,o=t?ts:Ee;o(e.display.scroller,"dragstart",r.start),o(e.display.scroller,"dragenter",r.enter),o(e.display.scroller,"dragover",r.over),o(e.display.scroller,"dragleave",r.leave),o(e.display.scroller,"drop",r.drop)}}function Ga(e){e.options.lineWrapping?(s(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(Ni(e.display.wrapper,"CodeMirror-wrap"),_e(e)),jn(e),br(e),tn(e),setTimeout(function(){return nr(e)},100)}function Qa(e,t){var n=this;if(!(this instanceof Qa))return new Qa(e,t);this.options=t=t?u(t):{},u(Xs,t,!1),Ir(t);var r=t.value;"string"==typeof r&&(r=new Is(r,t.mode,null,t.lineSeparator,t.direction)),this.doc=r;var o=new Qa.inputStyles[t.inputStyle](this),a=this.display=new S(e,r,o);a.wrapper.CodeMirror=this,Pr(this),Va(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),or(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,selectingText:!1,draggingText:!1,highlight:new Fi,keySeq:null,specialChars:null},t.autofocus&&!Ti&&a.input.focus(),vi&&yi<11&&setTimeout(function(){return n.display.input.reset(!0)},20),qa(this),na(),ar(this),this.curOp.forceUpdate=!0,Jr(this,r),t.autofocus&&!Ti||this.hasFocus()?setTimeout(c(In,this),20):Rn(this);for(var i in Js)Js.hasOwnProperty(i)&&Js[i](n,t[i],Ks);zn(this),t.finishInit&&t.finishInit(this);for(var s=0;s400}var o=e.display;ts(o.scroller,"mousedown",hr(e,Oa)),vi&&yi<11?ts(o.scroller,"dblclick",hr(e,function(t){if(!ke(e,t)){var n=En(e,t);if(n&&!Ua(e,t)&&!It(e.display,t)){Oe(t);var r=e.findWordAt(n);mo(e.doc,r.anchor,r.head)}}})):ts(o.scroller,"dblclick",function(t){return ke(e,t)||Oe(t)}),Ri||ts(o.scroller,"contextmenu",function(t){return za(e,t)});var a,i={end:0};ts(o.scroller,"touchstart",function(t){if(!ke(e,t)&&!n(t)&&!Ua(e,t)){o.input.ensurePolled(),clearTimeout(a);var r=+new Date;o.activeTouch={start:r,moved:!1,prev:r-i.end<=300?i:null},1==t.touches.length&&(o.activeTouch.left=t.touches[0].pageX,o.activeTouch.top=t.touches[0].pageY)}}),ts(o.scroller,"touchmove",function(){o.activeTouch&&(o.activeTouch.moved=!0)}),ts(o.scroller,"touchend",function(n){var a=o.activeTouch;if(a&&!It(o,n)&&null!=a.left&&!a.moved&&new Date-a.start<300){var i,s=e.coordsChar(o.activeTouch,"page");i=!a.prev||r(a,a.prev)?new Ts(s,s):!a.prev.prev||r(a,a.prev.prev)?e.findWordAt(s):new Ts(I(s.line,0),H(e.doc,I(s.line+1,0))),e.setSelection(i.anchor,i.head),e.focus(),Oe(n)}t()}),ts(o.scroller,"touchcancel",t),ts(o.scroller,"scroll",function(){o.scroller.clientHeight&&(Zn(e,o.scroller.scrollTop),er(e,o.scroller.scrollLeft,!0),Se(e,"scroll",e))}),ts(o.scroller,"mousewheel",function(t){return Br(e,t)}),ts(o.scroller,"DOMMouseScroll",function(t){return Br(e,t)}),ts(o.wrapper,"scroll",function(){return o.wrapper.scrollTop=o.wrapper.scrollLeft=0}),o.dragFunctions={enter:function(t){ke(e,t)||Pe(t)},over:function(t){ke(e,t)||($o(e,t),Pe(t))},start:function(t){return Zo(e,t)},drop:hr(e,Jo),leave:function(t){ke(e,t)||ea(e)}};var s=o.input.getField();ts(s,"keyup",function(t){return Ca.call(e,t)}),ts(s,"keydown",hr(e,Sa)),ts(s,"keypress",hr(e,Ta)),ts(s,"focus",function(t){return In(e,t)}),ts(s,"blur",function(t){return Rn(e,t)})}function Ka(e,t,n,r){var o,a=e.doc;null==n&&(n="add"),"smart"==n&&(a.mode.indent?o=Xe(e,t).state:n="prev");var i=e.options.tabSize,s=k(a,t),l=d(s.text,null,i);s.stateAfter&&(s.stateAfter=null);var c,u=s.text.match(/^\s*/)[0];if(r||/\S/.test(s.text)){if("smart"==n&&((c=a.mode.indent(o,s.text.slice(u.length),s.text))==Vi||c>150)){if(!r)return;n="prev"}}else c=0,n="not";"prev"==n?c=t>a.first?d(k(a,t-1).text,null,i):0:"add"==n?c=l+e.options.indentUnit:"subtract"==n?c=l-e.options.indentUnit:"number"==typeof n&&(c=l+n),c=Math.max(0,c);var p="",f=0;if(e.options.indentWithTabs)for(var m=Math.floor(c/i);m;--m)f+=i,p+="\t";if(f1)if($s&&$s.text.join("\n")==t){if(r.ranges.length%$s.text.length==0){l=[];for(var c=0;c<$s.text.length;c++)l.push(a.splitLines($s.text[c]))}}else s.length==r.ranges.length&&e.options.pasteLinesPerSelection&&(l=g(s,function(e){return[e]}));for(var u,d=r.ranges.length-1;d>=0;d--){var p=r.ranges[d],f=p.from(),h=p.to();p.empty()&&(n&&n>0?f=I(f.line,f.ch-n):e.state.overwrite&&!i?h=I(h.line,Math.min(k(a,h.line).text.length,h.ch+m(s).length)):$s&&$s.lineWise&&$s.text.join("\n")==t&&(f=h=I(f.line,0))),u=e.curOp.updateInput;var b={from:f,to:h,text:l?l[d%l.length]:s,origin:o||(i?"paste":e.state.cutIncoming?"cut":"+input")};Oo(e.doc,b),_t(e,"inputRead",e,b)}t&&!i&&$a(e,t),Qn(e),e.curOp.updateInput=u,e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=!1}function Za(e,t){var n=e.clipboardData&&e.clipboardData.getData("Text");if(n)return e.preventDefault(),t.isReadOnly()||t.options.disableInput||fr(t,function(){return Ja(t,n,0,null,"paste")}),!0}function $a(e,t){if(e.options.electricChars&&e.options.smartIndent)for(var n=e.doc.sel,r=n.ranges.length-1;r>=0;r--){var o=n.ranges[r];if(!(o.head.ch>100||r&&n.ranges[r-1].head.line==o.head.line)){var a=e.getModeAt(o.head),i=!1;if(a.electricChars){for(var s=0;s-1){i=Ka(e,o.head.line,"smart");break}}else a.electricInput&&a.electricInput.test(k(e.doc,o.head.line).text.slice(0,o.head.ch))&&(i=Ka(e,o.head.line,"smart"));i&&_t(e,"electricInput",e,o.head.line)}}}function ei(e){for(var t=[],n=[],r=0;r=e.first+e.size)&&(t=new I(r,t.ch,t.sticky),c=k(e,r))}function i(r){var i;if(null==(i=o?ga(e.cm,c,t,n):ha(c,t,n))){if(r||!a())return!1;t=ma(o,e.cm,c,t.line,n)}else t=i;return!0}var s=t,l=n,c=k(e,t.line);if("char"==r)i();else if("column"==r)i(!0);else if("word"==r||"group"==r)for(var u=null,d="group"==r,p=e.cm&&e.cm.getHelper(t,"wordChars"),f=!0;!(n<0)||i(!f);f=!1){var h=c.text.charAt(t.ch)||"\n",m=A(h,p)?"w":d&&"\n"==h?"n":!d||/\s/.test(h)?null:"p";if(!d||f||m||(m="s"),u&&u!=m){n<0&&(n=1,i(),t.sticky="after");break}if(m&&(u=m),n>0&&!i(!f))break}var g=ko(e,t,s,l,!0);return N(s,g)&&(g.hitSide=!0),g}function oi(e,t,n,r){var o,a=e.doc,i=t.left;if("page"==r){var s=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),l=Math.max(s-.5*yn(e.display),3);o=(n>0?t.bottom:t.top)+n*l}else"line"==r&&(o=n>0?t.bottom+3:t.top-3);for(var c;c=pn(e,i,o),c.outside;){if(n<0?o<=0:o>=a.height){c.hitSide=!0;break}o+=5*n}return c}function ai(e,t){var n=Gt(e,t.line);if(!n||n.hidden)return null;var r=k(e.doc,t.line),o=Vt(n,r,t.line),a=we(r,e.doc.direction),i="left";if(a){i=xe(a,t.ch)%2?"right":"left"}var s=Kt(o.map,t.ch,i);return s.offset="right"==s.collapse?s.end:s.start,s}function ii(e){for(var t=e;t;t=t.parentNode)if(/CodeMirror-gutter-wrapper/.test(t.className))return!0;return!1}function si(e,t){return t&&(e.bad=!0),e}function li(e,t,n,r,o){function a(e){return function(t){return t.id==e}}function i(){u&&(c+=d,u=!1)}function s(e){e&&(i(),c+=e)}function l(t){if(1==t.nodeType){var n=t.getAttribute("cm-text");if(null!=n)return void s(n||t.textContent.replace(/\u200b/g,""));var c,p=t.getAttribute("cm-marker");if(p){var f=e.findMarks(I(r,0),I(o+1,0),a(+p));return void(f.length&&(c=f[0].find(0))&&s(C(e.doc,c.from,c.to).join(d)))}if("false"==t.getAttribute("contenteditable"))return;var h=/^(pre|div|p)$/i.test(t.nodeName);h&&i();for(var m=0;m=15&&(wi=!1,_i=!0);var Pi,Ii=Mi&&(Ai||wi&&(null==Di||Di<12.11)),Ri=hi||vi&&yi>=9,Ni=function(t,n){var r=t.className,o=e(n).exec(r);if(o){var a=r.slice(o.index+o[0].length);t.className=r.slice(0,o.index)+(a?o[1]+a:"")}};Pi=document.createRange?function(e,t,n,r){var o=document.createRange();return o.setEnd(r||e,n),o.setStart(e,t),o}:function(e,t,n){var r=document.body.createTextRange();try{r.moveToElementText(e.parentNode)}catch(e){return r}return r.collapse(!0),r.moveEnd("character",n),r.moveStart("character",t),r};var Bi=function(e){e.select()};ki?Bi=function(e){e.selectionStart=0,e.selectionEnd=e.value.length}:vi&&(Bi=function(e){try{e.select()}catch(e){}});var Fi=function(){this.id=null};Fi.prototype.set=function(e,t){clearTimeout(this.id),this.id=setTimeout(t,e)};var Ui,zi,Hi=30,Vi={toString:function(){return"CodeMirror.Pass"}},Yi={scroll:!1},Wi={origin:"*mouse"},Gi={origin:"+move"},Qi=[""],qi=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Ki=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/,Xi=!1,Ji=!1,Zi=null,$i=function(){function e(e){return e<=247?n.charAt(e):1424<=e&&e<=1524?"R":1536<=e&&e<=1785?r.charAt(e-1536):1774<=e&&e<=2220?"r":8192<=e&&e<=8203?"w":8204==e?"b":"L"}function t(e,t,n){this.level=e,this.from=t,this.to=n}var n="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",r="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111",o=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,a=/[stwN]/,i=/[LRr]/,s=/[Lb1n]/,l=/[1n]/;return function(n,r){var c="ltr"==r?"L":"R";if(0==n.length||"ltr"==r&&!o.test(n))return!1;for(var u=n.length,d=[],p=0;p=this.string.length},us.prototype.sol=function(){return this.pos==this.lineStart},us.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},us.prototype.next=function(){if(this.post},us.prototype.eatSpace=function(){for(var e=this,t=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++e.pos;return this.pos>t},us.prototype.skipToEnd=function(){this.pos=this.string.length},us.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},us.prototype.backUp=function(e){this.pos-=e},us.prototype.column=function(){return this.lastColumnPos0?null:(r&&!1!==t&&(this.pos+=r[0].length),r)}var o=function(e){return n?e.toLowerCase():e};if(o(this.string.substr(this.pos,e.length))==o(e))return!1!==t&&(this.pos+=e.length),!0},us.prototype.current=function(){return this.string.slice(this.start,this.pos)},us.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},us.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},us.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};var ds=function(e,t){this.state=e,this.lookAhead=t},ps=function(e,t,n,r){this.state=t,this.doc=e,this.line=n,this.maxLookAhead=r||0,this.baseTokens=null,this.baseTokenPos=1};ps.prototype.lookAhead=function(e){var t=this.doc.getLine(this.line+e);return null!=t&&e>this.maxLookAhead&&(this.maxLookAhead=e),t},ps.prototype.baseToken=function(e){var t=this;if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)t.baseTokenPos+=2;var n=this.baseTokens[this.baseTokenPos+1];return{type:n&&n.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-e}},ps.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},ps.fromSaved=function(e,t,n){return t instanceof ds?new ps(e,We(e.mode,t.state),n,t.lookAhead):new ps(e,We(e.mode,t),n)},ps.prototype.save=function(e){var t=!1!==e?We(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new ds(t,this.maxLookAhead):t};var fs=function(e,t,n){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=n},hs=function(e,t,n){this.text=e,re(this,t),this.height=n?n(this):1};hs.prototype.lineNo=function(){return O(this)},Me(hs);var ms,gs={},bs={},vs=null,ys=null,_s={left:0,right:0,top:0,bottom:0},As=function(e,t,n){this.cm=n;var o=this.vert=r("div",[r("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),a=this.horiz=r("div",[r("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");e(o),e(a),ts(o,"scroll",function(){o.clientHeight&&t(o.scrollTop,"vertical")}),ts(a,"scroll",function(){a.clientWidth&&t(a.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,vi&&yi<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};As.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,n=e.scrollHeight>e.clientHeight+1,r=e.nativeBarWidth;if(n){this.vert.style.display="block",this.vert.style.bottom=t?r+"px":"0";var o=e.viewHeight-(t?r:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+o)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=n?r+"px":"0",this.horiz.style.left=e.barLeft+"px";var a=e.viewWidth-e.barLeft-(n?r:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+a)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(0==r&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:n?r:0,bottom:t?r:0}},As.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},As.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},As.prototype.zeroWidthHack=function(){var e=Mi&&!Ei?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new Fi,this.disableVert=new Fi},As.prototype.enableZeroWidthBar=function(e,t,n){function r(){var o=e.getBoundingClientRect();("vert"==n?document.elementFromPoint(o.right-1,(o.top+o.bottom)/2):document.elementFromPoint((o.right+o.left)/2,o.bottom-1))!=e?e.style.pointerEvents="none":t.set(1e3,r)}e.style.pointerEvents="auto",t.set(1e3,r)},As.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var xs=function(){};xs.prototype.update=function(){return{bottom:0,right:0}},xs.prototype.setScrollLeft=function(){},xs.prototype.setScrollTop=function(){},xs.prototype.clear=function(){};var ws={native:As,null:xs},js=0,Es=function(e,t,n){var r=e.display;this.viewport=t,this.visible=Fn(r,e.doc,t),this.editorIsHidden=!r.wrapper.offsetWidth,this.wrapperHeight=r.wrapper.clientHeight,this.wrapperWidth=r.wrapper.clientWidth,this.oldDisplayWidth=Ut(e),this.force=n,this.dims=An(e),this.events=[]};Es.prototype.signal=function(e,t){Te(e,t)&&this.events.push(arguments)},Es.prototype.finish=function(){for(var e=this,t=0;t=0&&R(e,o.to())<=0)return r}return-1};var Ts=function(e,t){this.anchor=e,this.head=t};Ts.prototype.from=function(){return U(this.anchor,this.head)},Ts.prototype.to=function(){return F(this.anchor,this.head)},Ts.prototype.empty=function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch},Ho.prototype={chunkSize:function(){return this.lines.length},removeInner:function(e,t){for(var n=this,r=e,o=e+t;r1||!(this.children[0]instanceof Ho))){var l=[];this.collapse(l),this.children=[new Ho(l)],this.children[0].parent=this}},collapse:function(e){for(var t=this,n=0;n50){for(var s=a.lines.length%25+25,l=s;l10);e.parent.maybeSpill()}},iterN:function(e,t,n){for(var r=this,o=0;ot.display.maxLineLength&&(t.display.maxLine=u,t.display.maxLineLength=d,t.display.maxLineChanged=!0)}null!=o&&t&&this.collapsed&&br(t,o,a+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,t&&jo(t.doc)),t&&_t(t,"markerCleared",t,this,o,a),n&&ir(t),this.parent&&this.parent.clear()}},Ls.prototype.find=function(e,t){var n=this;null==e&&"bookmark"==this.type&&(e=1);for(var r,o,a=0;a=0;c--)Oo(r,o[c]);l?_o(this,l):this.cm&&Qn(this.cm)}),undo:gr(function(){Do(this,"undo")}),redo:gr(function(){Do(this,"redo")}),undoSelection:gr(function(){Do(this,"undo",!0)}),redoSelection:gr(function(){Do(this,"redo",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,n=0,r=0;r=e.ch)&&t.push(o.marker.parent||o.marker)}return t},findMarks:function(e,t,n){e=H(this,e),t=H(this,t);var r=[],o=e.line;return this.iter(e.line,t.line+1,function(a){var i=a.markedSpans;if(i)for(var s=0;s=l.to||null==l.from&&o!=e.line||null!=l.from&&o==t.line&&l.from>=t.ch||n&&!n(l.marker)||r.push(l.marker.parent||l.marker)}++o}),r},getAllMarks:function(){var e=[];return this.iter(function(t){var n=t.markedSpans;if(n)for(var r=0;re)return t=e,!0;e-=a,++n}),H(this,I(n,t))},indexFromPos:function(e){e=H(this,e);var t=e.ch;if(e.linet&&(t=e.from),null!=e.to&&e.to0)o=new I(o.line,o.ch+1),e.replaceRange(a.charAt(o.ch-1)+a.charAt(o.ch-2),I(o.line,o.ch-2),o,"+transpose");else if(o.line>e.doc.first){var i=k(e.doc,o.line-1).text;i&&(o=new I(o.line,1),e.replaceRange(a.charAt(0)+e.doc.lineSeparator()+i.charAt(i.length-1),I(o.line-1,i.length-1),o,"+transpose"))}n.push(new Ts(o,o))}e.setSelections(n)})},newlineAndIndent:function(e){return fr(e,function(){for(var t=e.listSelections(),n=t.length-1;n>=0;n--)e.replaceRange(e.doc.lineSeparator(),t[n].anchor,t[n].head,"+input");t=e.listSelections();for(var r=0;re&&0==R(t,this.pos)&&n==this.button};var Qs,qs,Ks={toString:function(){return"CodeMirror.Init"}},Xs={},Js={};Qa.defaults=Xs,Qa.optionHandlers=Js;var Zs=[];Qa.defineInitHook=function(e){return Zs.push(e)};var $s=null,el=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new Fi,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};el.prototype.init=function(e){function t(e){if(!ke(o,e)){if(o.somethingSelected())Xa({lineWise:!1,text:o.getSelections()}),"cut"==e.type&&o.replaceSelection("",null,"cut");else{if(!o.options.lineWiseCopyCut)return;var t=ei(o);Xa({lineWise:!0,text:t.text}),"cut"==e.type&&o.operation(function(){o.setSelections(t.ranges,0,Yi),o.replaceSelection("",null,"cut")})}if(e.clipboardData){e.clipboardData.clearData();var n=$s.text.join("\n");if(e.clipboardData.setData("Text",n),e.clipboardData.getData("Text")==n)return void e.preventDefault()}var i=ni(),s=i.firstChild;o.display.lineSpace.insertBefore(i,o.display.lineSpace.firstChild),s.value=$s.text.join("\n");var l=document.activeElement;Bi(s),setTimeout(function(){o.display.lineSpace.removeChild(i),l.focus(),l==a&&r.showPrimarySelection()},50)}}var n=this,r=this,o=r.cm,a=r.div=e.lineDiv;ti(a,o.options.spellcheck),ts(a,"paste",function(e){ke(o,e)||Za(e,o)||yi<=11&&setTimeout(hr(o,function(){return n.updateFromDOM()}),20)}),ts(a,"compositionstart",function(e){n.composing={data:e.data,done:!1}}),ts(a,"compositionupdate",function(e){n.composing||(n.composing={data:e.data,done:!1})}),ts(a,"compositionend",function(e){n.composing&&(e.data!=n.composing.data&&n.readFromDOMSoon(),n.composing.done=!0)}),ts(a,"touchstart",function(){return r.forceCompositionEnd()}),ts(a,"input",function(){n.composing||n.readFromDOMSoon()}),ts(a,"copy",t),ts(a,"cut",t)},el.prototype.prepareSelection=function(){var e=Cn(this.cm,!1);return e.focus=this.cm.state.focused,e},el.prototype.showSelection=function(e,t){e&&this.cm.display.view.length&&((e.focus||t)&&this.showPrimarySelection(),this.showMultipleSelections(e))},el.prototype.showPrimarySelection=function(){var e=window.getSelection(),t=this.cm,n=t.doc.sel.primary(),r=n.from(),o=n.to();if(t.display.viewTo==t.display.viewFrom||r.line>=t.display.viewTo||o.line=t.display.viewFrom&&ai(t,r)||{node:s[0].measure.map[2],offset:0},c=o.linee.firstLine()&&(r=I(r.line-1,k(e.doc,r.line-1).length)),o.ch==k(e.doc,o.line).text.length&&o.linet.viewTo-1)return!1;var a,i,s;r.line==t.viewFrom||0==(a=Sn(e,r.line))?(i=O(t.view[0].line),s=t.view[0].node):(i=O(t.view[a].line),s=t.view[a-1].node.nextSibling);var l,c,u=Sn(e,o.line);if(u==t.view.length-1?(l=t.viewTo-1,c=t.lineDiv.lastChild):(l=O(t.view[u+1].line)-1,c=t.view[u+1].node.previousSibling),!s)return!1;for(var d=e.doc.splitLines(li(e,s,c,i,l)),p=C(e.doc,I(i,0),I(l,k(e.doc,l).text.length));d.length>1&&p.length>1;)if(m(d)==m(p))d.pop(),p.pop(),l--;else{if(d[0]!=p[0])break;d.shift(),p.shift(),i++}for(var f=0,h=0,g=d[0],b=p[0],v=Math.min(g.length,b.length);fr.ch&&y.charCodeAt(y.length-h-1)==_.charCodeAt(_.length-h-1);)f--,h++;d[d.length-1]=y.slice(0,y.length-h).replace(/^\u200b+/,""),d[0]=d[0].slice(f).replace(/\u200b+$/,"");var x=I(i,f),w=I(l,p.length?m(p).length-h:0);return d.length>1||d[0]||R(x,w)?(No(e.doc,d,x,w,"+input"),!0):void 0},el.prototype.ensurePolled=function(){this.forceCompositionEnd()},el.prototype.reset=function(){this.forceCompositionEnd()},el.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},el.prototype.readFromDOMSoon=function(){var e=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout(function(){if(e.readDOMTimeout=null,e.composing){if(!e.composing.done)return;e.composing=null}e.updateFromDOM()},80))},el.prototype.updateFromDOM=function(){var e=this;!this.cm.isReadOnly()&&this.pollContent()||fr(this.cm,function(){return br(e.cm)})},el.prototype.setUneditable=function(e){e.contentEditable="false"},el.prototype.onKeyPress=function(e){0==e.charCode||this.composing||(e.preventDefault(),this.cm.isReadOnly()||hr(this.cm,Ja)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0))},el.prototype.readOnlyChanged=function(e){this.div.contentEditable=String("nocursor"!=e)},el.prototype.onContextMenu=function(){},el.prototype.resetPosition=function(){},el.prototype.needsContentAttribute=!0;var tl=function(e){this.cm=e,this.prevInput="",this.pollingFast=!1,this.polling=new Fi,this.hasSelection=!1,this.composing=null};tl.prototype.init=function(e){function t(e){if(!ke(o,e)){if(o.somethingSelected())Xa({lineWise:!1,text:o.getSelections()});else{if(!o.options.lineWiseCopyCut)return;var t=ei(o);Xa({lineWise:!0,text:t.text}),"cut"==e.type?o.setSelections(t.ranges,null,Yi):(r.prevInput="",a.value=t.text.join("\n"),Bi(a))}"cut"==e.type&&(o.state.cutIncoming=!0)}}var n=this,r=this,o=this.cm;this.createField(e);var a=this.textarea;e.wrapper.insertBefore(this.wrapper,e.wrapper.firstChild),ki&&(a.style.width="0px"),ts(a,"input",function(){vi&&yi>=9&&n.hasSelection&&(n.hasSelection=null),r.poll()}),ts(a,"paste",function(e){ke(o,e)||Za(e,o)||(o.state.pasteIncoming=!0,r.fastPoll())}),ts(a,"cut",t),ts(a,"copy",t),ts(e.scroller,"paste",function(t){It(e,t)||ke(o,t)||(o.state.pasteIncoming=!0,r.focus())}),ts(e.lineSpace,"selectstart",function(t){It(e,t)||Oe(t)}),ts(a,"compositionstart",function(){var e=o.getCursor("from");r.composing&&r.composing.range.clear(),r.composing={start:e,range:o.markText(e,o.getCursor("to"),{className:"CodeMirror-composing"})}}),ts(a,"compositionend",function(){r.composing&&(r.poll(),r.composing.range.clear(),r.composing=null)})},tl.prototype.createField=function(e){this.wrapper=ni(),this.textarea=this.wrapper.firstChild},tl.prototype.prepareSelection=function(){var e=this.cm,t=e.display,n=e.doc,r=Cn(e);if(e.options.moveInputWithCursor){var o=cn(e,n.sel.primary().head,"div"),a=t.wrapper.getBoundingClientRect(),i=t.lineDiv.getBoundingClientRect();r.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,o.top+i.top-a.top)),r.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,o.left+i.left-a.left))}return r},tl.prototype.showSelection=function(e){var t=this.cm,r=t.display;n(r.cursorDiv,e.cursors),n(r.selectionDiv,e.selection),null!=e.teTop&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},tl.prototype.reset=function(e){if(!this.contextMenuPending&&!this.composing){var t=this.cm;if(t.somethingSelected()){this.prevInput="";var n=t.getSelection();this.textarea.value=n,t.state.focused&&Bi(this.textarea),vi&&yi>=9&&(this.hasSelection=n)}else e||(this.prevInput=this.textarea.value="",vi&&yi>=9&&(this.hasSelection=null))}},tl.prototype.getField=function(){return this.textarea},tl.prototype.supportsTouch=function(){return!1},tl.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!Ti||i()!=this.textarea))try{this.textarea.focus()}catch(e){}},tl.prototype.blur=function(){this.textarea.blur()},tl.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},tl.prototype.receivedFocus=function(){this.slowPoll()},tl.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},tl.prototype.fastPoll=function(){function e(){n.poll()||t?(n.pollingFast=!1,n.slowPoll()):(t=!0,n.polling.set(60,e))}var t=!1,n=this;n.pollingFast=!0,n.polling.set(20,e)},tl.prototype.poll=function(){var e=this,t=this.cm,n=this.textarea,r=this.prevInput;if(this.contextMenuPending||!t.state.focused||os(n)&&!r&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var o=n.value;if(o==r&&!t.somethingSelected())return!1;if(vi&&yi>=9&&this.hasSelection===o||Mi&&/[\uf700-\uf7ff]/.test(o))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var a=o.charCodeAt(0);if(8203!=a||r||(r="​"),8666==a)return this.reset(),this.cm.execCommand("undo")}for(var i=0,s=Math.min(r.length,o.length);i1e3||o.indexOf("\n")>-1?n.value=e.prevInput="":e.prevInput=o,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},tl.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},tl.prototype.onKeyPress=function(){vi&&yi>=9&&(this.hasSelection=null),this.fastPoll()},tl.prototype.onContextMenu=function(e){function t(){if(null!=i.selectionStart){var e=o.somethingSelected(),t="​"+(e?i.value:"");i.value="⇚",i.value=t,r.prevInput=e?"":"​",i.selectionStart=1,i.selectionEnd=t.length,a.selForContextMenu=o.doc.sel}}function n(){if(r.contextMenuPending=!1,r.wrapper.style.cssText=u,i.style.cssText=c,vi&&yi<9&&a.scrollbars.setScrollTop(a.scroller.scrollTop=l),null!=i.selectionStart){(!vi||vi&&yi<9)&&t();var e=0,n=function(){a.selForContextMenu==o.doc.sel&&0==i.selectionStart&&i.selectionEnd>0&&"​"==r.prevInput?hr(o,To)(o):e++<10?a.detectingSelectAll=setTimeout(n,500):(a.selForContextMenu=null,a.input.reset())};a.detectingSelectAll=setTimeout(n,200)}}var r=this,o=r.cm,a=o.display,i=r.textarea,s=En(o,e),l=a.scroller.scrollTop;if(s&&!wi){o.options.resetSelectionOnContextMenu&&-1==o.doc.sel.contains(s)&&hr(o,Ao)(o.doc,Ur(s),Yi);var c=i.style.cssText,u=r.wrapper.style.cssText;r.wrapper.style.cssText="position: absolute";var d=r.wrapper.getBoundingClientRect();i.style.cssText="position: absolute; width: 30px; height: 30px;\n top: "+(e.clientY-d.top-5)+"px; left: "+(e.clientX-d.left-5)+"px;\n z-index: 1000; background: "+(vi?"rgba(255, 255, 255, .05)":"transparent")+";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);";var p;if(_i&&(p=window.scrollY),a.input.focus(),_i&&window.scrollTo(null,p),a.input.reset(),o.somethingSelected()||(i.value=r.prevInput=" "),r.contextMenuPending=!0,a.selForContextMenu=o.doc.sel,clearTimeout(a.detectingSelectAll),vi&&yi>=9&&t(),Ri){Pe(e);var f=function(){Ee(window,"mouseup",f),setTimeout(n,20)};ts(window,"mouseup",f)}else setTimeout(n,50)}},tl.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled="nocursor"==e},tl.prototype.setUneditable=function(){},tl.prototype.needsContentAttribute=!1,function(e){function t(t,r,o,a){e.defaults[t]=r,o&&(n[t]=a?function(e,t,n){n!=Ks&&o(e,t,n)}:o)}var n=e.optionHandlers;e.defineOption=t,e.Init=Ks,t("value","",function(e,t){return e.setValue(t)},!0),t("mode",null,function(e,t){e.doc.modeOption=t,Gr(e)},!0),t("indentUnit",2,Gr,!0),t("indentWithTabs",!1),t("smartIndent",!0),t("tabSize",4,function(e){Qr(e),tn(e),br(e)},!0),t("lineSeparator",null,function(e,t){if(e.doc.lineSep=t,t){var n=[],r=e.doc.first;e.doc.iter(function(e){for(var o=0;;){var a=e.text.indexOf(t,o);if(-1==a)break;o=a+t.length,n.push(I(r,a))}r++});for(var o=n.length-1;o>=0;o--)No(e.doc,t,n[o],I(n[o].line,n[o].ch+t.length))}}),t("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff]/g,function(e,t,n){e.state.specialChars=new RegExp(t.source+(t.test("\t")?"":"|\t"),"g"),n!=Ks&&e.refresh()}),t("specialCharPlaceholder",ct,function(e){return e.refresh()},!0),t("electricChars",!0),t("inputStyle",Ti?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),t("spellcheck",!1,function(e,t){return e.getInputField().spellcheck=t},!0),t("rtlMoveVisually",!Li),t("wholeLineUpdateBefore",!0),t("theme","default",function(e){Va(e),Ya(e)},!0),t("keyMap","default",function(e,t,n){var r=da(t),o=n!=Ks&&da(n);o&&o.detach&&o.detach(e,r),r.attach&&r.attach(e,o||null)}),t("extraKeys",null),t("configureMouse",null),t("lineWrapping",!1,Ga,!0),t("gutters",[],function(e){Ir(e.options),Ya(e)},!0),t("fixedGutter",!0,function(e,t){e.display.gutters.style.left=t?xn(e.display)+"px":"0",e.refresh()},!0),t("coverGutterNextToScrollbar",!1,function(e){return nr(e)},!0),t("scrollbarStyle","native",function(e){or(e),nr(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)},!0),t("lineNumbers",!1,function(e){Ir(e.options),Ya(e)},!0),t("firstLineNumber",1,Ya,!0),t("lineNumberFormatter",function(e){return e},Ya,!0),t("showCursorWhenSelecting",!1,kn,!0),t("resetSelectionOnContextMenu",!0),t("lineWiseCopyCut",!0),t("pasteLinesPerSelection",!0),t("readOnly",!1,function(e,t){"nocursor"==t&&(Rn(e),e.display.input.blur()),e.display.input.readOnlyChanged(t)}),t("disableInput",!1,function(e,t){t||e.display.input.reset()},!0),t("dragDrop",!0,Wa),t("allowDropFileTypes",null),t("cursorBlinkRate",530),t("cursorScrollMargin",0),t("cursorHeight",1,kn,!0),t("singleCursorHeightPerLine",!0,kn,!0),t("workTime",100),t("workDelay",100),t("flattenSpans",!0,Qr,!0),t("addModeClass",!1,Qr,!0),t("pollInterval",100),t("undoDepth",200,function(e,t){return e.doc.history.undoDepth=t}),t("historyEventDelay",1250),t("viewportMargin",10,function(e){return e.refresh()},!0),t("maxHighlightLength",1e4,Qr,!0),t("moveInputWithCursor",!0,function(e,t){t||e.display.input.resetPosition()}),t("tabindex",null,function(e,t){return e.display.input.getField().tabIndex=t||""}),t("autofocus",null),t("direction","ltr",function(e,t){return e.doc.setDirection(t)},!0)}(Qa),function(e){var t=e.optionHandlers,n=e.helpers={};e.prototype={constructor:e,focus:function(){window.focus(),this.display.input.focus()},setOption:function(e,n){var r=this.options,o=r[e];r[e]==n&&"mode"!=e||(r[e]=n,t.hasOwnProperty(e)&&hr(this,t[e])(this,n,o),Se(this,"optionChange",this,e))},getOption:function(e){return this.options[e]},getDoc:function(){return this.doc},addKeyMap:function(e,t){this.state.keyMaps[t?"push":"unshift"](da(e))},removeKeyMap:function(e){for(var t=this.state.keyMaps,n=0;nr&&(Ka(t,a.head.line,e,!0),r=a.head.line,o==t.doc.sel.primIndex&&Qn(t));else{var i=a.from(),s=a.to(),l=Math.max(r,i.line);r=Math.min(t.lastLine(),s.line-(s.ch?0:1))+1;for(var c=l;c0&&bo(t.doc,o,new Ts(i,u[o].to()),Yi)}}}),getTokenAt:function(e,t){return et(this,e,t)},getLineTokens:function(e,t){return et(this,I(e),t,!0)},getTokenTypeAt:function(e){e=H(this.doc,e);var t,n=Ke(this,k(this.doc,e.line)),r=0,o=(n.length-1)/2,a=e.ch;if(0==a)t=n[2];else for(;;){var i=r+o>>1;if((i?n[2*i-1]:0)>=a)o=i;else{if(!(n[2*i+1]a&&(e=a,o=!0),r=k(this.doc,e)}else r=e;return an(this,r,{top:0,left:0},t||"page",n||o).top+(o?this.doc.height-ve(r):0)},defaultTextHeight:function(){return yn(this.display)},defaultCharWidth:function(){return _n(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,n,r,o){var a=this.display;e=cn(this,H(this.doc,e));var i=e.bottom,s=e.left;if(t.style.position="absolute",t.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(t),a.sizer.appendChild(t),"over"==r)i=e.top;else if("above"==r||"near"==r){var l=Math.max(a.wrapper.clientHeight,this.doc.height),c=Math.max(a.sizer.clientWidth,a.lineSpace.clientWidth);("above"==r||e.bottom+t.offsetHeight>l)&&e.top>t.offsetHeight?i=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=l&&(i=e.bottom),s+t.offsetWidth>c&&(s=c-t.offsetWidth)}t.style.top=i+"px",t.style.left=t.style.right="","right"==o?(s=a.sizer.clientWidth-t.offsetWidth,t.style.right="0px"):("left"==o?s=0:"middle"==o&&(s=(a.sizer.clientWidth-t.offsetWidth)/2),t.style.left=s+"px"),n&&Yn(this,{left:s,top:i,right:s+t.offsetWidth,bottom:i+t.offsetHeight})},triggerOnKeyDown:mr(Sa),triggerOnKeyPress:mr(Ta),triggerOnKeyUp:Ca,triggerOnMouseDown:mr(Oa),execCommand:function(e){if(Vs.hasOwnProperty(e))return Vs[e].call(null,this)},triggerElectric:mr(function(e){$a(this,e)}),findPosH:function(e,t,n,r){var o=this,a=1;t<0&&(a=-1,t=-t);for(var i=H(this.doc,e),s=0;s0&&s(n.charAt(r-1));)--r;for(;o.5)&&jn(this),Se(this,"refresh",this)}),swapDoc:mr(function(e){var t=this.doc;return t.cm=null,Jr(this,e),tn(this),this.display.input.reset(),qn(this,e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,_t(this,"swapDoc",this,t),t}),getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},Me(e),e.registerHelper=function(t,r,o){n.hasOwnProperty(t)||(n[t]=e[t]={_global:[]}),n[t][r]=o},e.registerGlobalHelper=function(t,r,o,a){e.registerHelper(t,r,a),n[t]._global.push({pred:o,val:a})}}(Qa);var nl="iter insert remove copy getEditor constructor".split(" ");for(var rl in Is.prototype)Is.prototype.hasOwnProperty(rl)&&p(nl,rl)<0&&(Qa.prototype[rl]=function(e){return function(){return e.apply(this.doc,arguments)}}(Is.prototype[rl]));return Me(Is),Qa.inputStyles={textarea:tl,contenteditable:el},Qa.defineMode=function(e){Qa.defaults.mode||"null"==e||(Qa.defaults.mode=e),Ue.apply(this,arguments)},Qa.defineMIME=ze,Qa.defineMode("null",function(){return{token:function(e){return e.skipToEnd()}}}),Qa.defineMIME("text/plain","null"),Qa.defineExtension=function(e,t){Qa.prototype[e]=t},Qa.defineDocExtension=function(e,t){Is.prototype[e]=t},Qa.fromTextArea=di,function(e){e.off=Ee,e.on=ts,e.wheelEventPixels=Nr,e.Doc=Is,e.splitLines=rs,e.countColumn=d,e.findColumn=f,e.isWordChar=_,e.Pass=Vi,e.signal=Se,e.Line=hs,e.changeEnd=zr,e.scrollbarModel=ws,e.Pos=I,e.cmpPos=R,e.modes=ss,e.mimeModes=ls,e.resolveMode=He,e.getMode=Ve,e.modeExtensions=cs,e.extendMode=Ye,e.copyState=We,e.startState=Qe,e.innerMode=Ge,e.commands=Vs,e.keyMap=Hs,e.keyName=ua,e.isModifierKey=la,e.lookupKey=sa,e.normalizeKeyMap=ia,e.StringStream=us,e.SharedTextMarker=Ds,e.TextMarker=Ls,e.LineWidget=Ms,e.e_preventDefault=Oe,e.e_stopPropagation=Le,e.e_stop=Pe,e.addClass=s,e.contains=a,e.rmClass=Ni,e.keyNames=Bs}(Qa),Qa.version="5.37.0",Qa})},"./node_modules/codemirror/mode/sql/sql.js":function(e,t,n){!function(e){e(n("./node_modules/codemirror/lib/codemirror.js"))}(function(e){"use strict";e.defineMode("sql",function(t,n){function r(e,t){var n=e.next();if(h[n]){var r=h[n](e,t);if(!1!==r)return r}if(f.hexNumber&&("0"==n&&e.match(/^[xX][0-9a-fA-F]+/)||("x"==n||"X"==n)&&e.match(/^'[0-9a-fA-F]+'/)))return"number";if(f.binaryNumber&&(("b"==n||"B"==n)&&e.match(/^'[01]+'/)||"0"==n&&e.match(/^b[01]+/)))return"number";if(n.charCodeAt(0)>47&&n.charCodeAt(0)<58)return e.match(/^[0-9]*(\.[0-9]+)?([eE][-+]?[0-9]+)?/),f.decimallessFloat&&e.match(/^\.(?!\.)/),"number";if("?"==n&&(e.eatSpace()||e.eol()||e.eat(";")))return"variable-3";if("'"==n||'"'==n&&f.doubleQuote)return t.tokenize=o(n),t.tokenize(e,t);if((f.nCharCast&&("n"==n||"N"==n)||f.charsetCast&&"_"==n&&e.match(/[a-z][a-z0-9]*/i))&&("'"==e.peek()||'"'==e.peek()))return"keyword";if(f.commentSlashSlash&&"/"==n&&e.eat("/"))return e.skipToEnd(),"comment";if(f.commentHash&&"#"==n||"-"==n&&e.eat("-")&&(!f.commentSpaceRequired||e.eat(" ")))return e.skipToEnd(),"comment";if("/"==n&&e.eat("*"))return t.tokenize=a(1),t.tokenize(e,t);if("."!=n){if(p.test(n))return e.eatWhile(p),"operator";if(b.test(n))return e.eatWhile(b),"bracket";if(v.test(n))return e.eatWhile(v),"punctuation";if("{"==n&&(e.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/)||e.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/)))return"number";e.eatWhile(/^[_\w\d]/);var i=e.current().toLowerCase();return m.hasOwnProperty(i)&&(e.match(/^( )+'[^']*'/)||e.match(/^( )+"[^"]*"/))?"number":c.hasOwnProperty(i)?"atom":u.hasOwnProperty(i)?"builtin":d.hasOwnProperty(i)?"keyword":l.hasOwnProperty(i)?"string-2":null}return f.zerolessFloat&&e.match(/^(?:\d+(?:e[+-]?\d+)?)/i)?"number":e.match(/^\.+/)?null:f.ODBCdotTable&&e.match(/^[\w\d_]+/)?"variable-2":void 0}function o(e){return function(t,n){for(var o,a=!1;null!=(o=t.next());){if(o==e&&!a){n.tokenize=r;break}a=g&&!a&&"\\"==o}return"string"}}function a(e){return function(t,n){var o=t.match(/^.*?(\/\*|\*\/)/);return o?"/*"==o[1]?n.tokenize=a(e+1):n.tokenize=e>1?a(e-1):r:t.skipToEnd(),"comment"}}function i(e,t,n){t.context={prev:t.context,indent:e.indentation(),col:e.column(),type:n}}function s(e){e.indent=e.context.indent,e.context=e.context.prev}var l=n.client||{},c=n.atoms||{false:!0,true:!0,null:!0},u=n.builtin||{},d=n.keywords||{},p=n.operatorChars||/^[*+\-%<>!=&|~^]/,f=n.support||{},h=n.hooks||{},m=n.dateSQL||{date:!0,time:!0,timestamp:!0},g=!1!==n.backslashStringEscapes,b=n.brackets||/^[\{}\(\)\[\]]/,v=n.punctuation||/^[;.,:]/;return{startState:function(){return{tokenize:r,context:null}},token:function(e,t){if(e.sol()&&t.context&&null==t.context.align&&(t.context.align=!1),t.tokenize==r&&e.eatSpace())return null;var n=t.tokenize(e,t);if("comment"==n)return n;t.context&&null==t.context.align&&(t.context.align=!0);var o=e.current();return"("==o?i(e,t,")"):"["==o?i(e,t,"]"):t.context&&t.context.type==o&&s(t),n},indent:function(n,r){var o=n.context;if(!o)return e.Pass;var a=r.charAt(0)==o.type;return o.align?o.col+(a?0:1):o.indent+(a?0:t.indentUnit)},blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:f.commentSlashSlash?"//":f.commentHash?"#":"--",closeBrackets:"()[]{}''\"\"``"}}),function(){function t(e){for(var t;null!=(t=e.next());)if("`"==t&&!e.eat("`"))return"variable-2";return e.backUp(e.current().length-1),e.eatWhile(/\w/)?"variable-2":null}function n(e){for(var t;null!=(t=e.next());)if('"'==t&&!e.eat('"'))return"variable-2";return e.backUp(e.current().length-1),e.eatWhile(/\w/)?"variable-2":null}function r(e){return e.eat("@")&&(e.match(/^session\./),e.match(/^local\./),e.match(/^global\./)),e.eat("'")?(e.match(/^.*'/),"variable-2"):e.eat('"')?(e.match(/^.*"/),"variable-2"):e.eat("`")?(e.match(/^.*`/),"variable-2"):e.match(/^[0-9a-zA-Z$\.\_]+/)?"variable-2":null}function o(e){return e.eat("N")?"atom":e.match(/^[a-zA-Z.#!?]/)?"variable-2":null}function a(e){for(var t={},n=e.split(" "),r=0;r!=]/,dateSQL:a("date time timestamp"),support:a("ODBCdotTable doubleQuote binaryNumber hexNumber")}),e.defineMIME("text/x-mssql",{name:"sql",client:a("$partition binary_checksum checksum connectionproperty context_info current_request_id error_line error_message error_number error_procedure error_severity error_state formatmessage get_filestream_transaction_context getansinull host_id host_name isnull isnumeric min_active_rowversion newid newsequentialid rowcount_big xact_state object_id"),keywords:a(i+"begin trigger proc view index for add constraint key primary foreign collate clustered nonclustered declare exec go if use index holdlock nolock nowait paglock readcommitted readcommittedlock readpast readuncommitted repeatableread rowlock serializable snapshot tablock tablockx updlock with"),builtin:a("bigint numeric bit smallint decimal smallmoney int tinyint money float real char varchar text nchar nvarchar ntext binary varbinary image cursor timestamp hierarchyid uniqueidentifier sql_variant xml table "),atoms:a("is not null like and or in left right between inner outer join all any some cross unpivot pivot exists"),operatorChars:/^[*+\-%<>!=^\&|\/]/,brackets:/^[\{}\(\)]/,punctuation:/^[;.,:\/]/,backslashStringEscapes:!1,dateSQL:a("date datetimeoffset datetime2 smalldatetime datetime time"),hooks:{"@":r}}),e.defineMIME("text/x-mysql",{name:"sql",client:a("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),keywords:a(i+"accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group group_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"),builtin:a("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"),atoms:a("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^]/,dateSQL:a("date time timestamp"),support:a("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),hooks:{"@":r,"`":t,"\\":o}}),e.defineMIME("text/x-mariadb",{name:"sql",client:a("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),keywords:a(i+"accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group groupby_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"),builtin:a("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"),atoms:a("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^]/,dateSQL:a("date time timestamp"),support:a("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),hooks:{"@":r,"`":t,"\\":o}}),e.defineMIME("text/x-sqlite",{name:"sql",client:a("auth backup bail binary changes check clone databases dbinfo dump echo eqp exit explain fullschema headers help import imposter indexes iotrace limit lint load log mode nullvalue once open output print prompt quit read restore save scanstats schema separator session shell show stats system tables testcase timeout timer trace vfsinfo vfslist vfsname width"),keywords:a(i+"abort action add after all analyze attach autoincrement before begin cascade case cast check collate column commit conflict constraint cross current_date current_time current_timestamp database default deferrable deferred detach each else end escape except exclusive exists explain fail for foreign full glob if ignore immediate index indexed initially inner instead intersect isnull key left limit match natural no notnull null of offset outer plan pragma primary query raise recursive references regexp reindex release rename replace restrict right rollback row savepoint temp temporary then to transaction trigger unique using vacuum view virtual when with without"),builtin:a("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text clob bigint int int2 int8 integer float double char varchar date datetime year unsigned signed numeric real"),atoms:a("null current_date current_time current_timestamp"),operatorChars:/^[*+\-%<>!=&|\/~]/,dateSQL:a("date time timestamp datetime"),support:a("decimallessFloat zerolessFloat"),identifierQuote:'"',hooks:{"@":r,":":r,"?":r,$:r,'"':n,"`":t}}),e.defineMIME("text/x-cassandra",{name:"sql",client:{},keywords:a("add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime"),builtin:a("ascii bigint blob boolean counter decimal double float frozen inet int list map static text timestamp timeuuid tuple uuid varchar varint"),atoms:a("false true infinity NaN"),operatorChars:/^[<>=]/,dateSQL:{},support:a("commentSlashSlash decimallessFloat"),hooks:{}}),e.defineMIME("text/x-plsql",{name:"sql",client:a("appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap"),keywords:a("abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work"),builtin:a("abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least length lengthb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml"),operatorChars:/^[*+\-%<>!=~]/,dateSQL:a("date time timestamp"),support:a("doubleQuote nCharCast zerolessFloat binaryNumber hexNumber")}),e.defineMIME("text/x-hive",{name:"sql",keywords:a("select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external false fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger true unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with"),builtin:a("bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype"),atoms:a("false true null unknown"),operatorChars:/^[*+\-%<>!=]/,dateSQL:a("date timestamp"),support:a("ODBCdotTable doubleQuote binaryNumber hexNumber")}),e.defineMIME("text/x-pgsql",{name:"sql",client:a("source"),keywords:a(i+"a abort abs absent absolute access according action ada add admin after aggregate all allocate also always analyse analyze any are array array_agg array_max_cardinality asensitive assertion assignment asymmetric at atomic attribute attributes authorization avg backward base64 before begin begin_frame begin_partition bernoulli binary bit_length blob blocked bom both breadth c cache call called cardinality cascade cascaded case cast catalog catalog_name ceil ceiling chain characteristics characters character_length character_set_catalog character_set_name character_set_schema char_length check checkpoint class class_origin clob close cluster coalesce cobol collate collation collation_catalog collation_name collation_schema collect column columns column_name command_function command_function_code comment comments commit committed concurrently condition condition_number configuration conflict connect connection connection_name constraint constraints constraint_catalog constraint_name constraint_schema constructor contains content continue control conversion convert copy corr corresponding cost covar_pop covar_samp cross csv cube cume_dist current current_catalog current_date current_default_transform_group current_path current_role current_row current_schema current_time current_timestamp current_transform_group_for_type current_user cursor cursor_name cycle data database datalink datetime_interval_code datetime_interval_precision day db deallocate dec declare default defaults deferrable deferred defined definer degree delimiter delimiters dense_rank depth deref derived describe descriptor deterministic diagnostics dictionary disable discard disconnect dispatch dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue do document domain dynamic dynamic_function dynamic_function_code each element else empty enable encoding encrypted end end-exec end_frame end_partition enforced enum equals escape event every except exception exclude excluding exclusive exec execute exists exp explain expression extension external extract false family fetch file filter final first first_value flag float floor following for force foreign fortran forward found frame_row free freeze fs full function functions fusion g general generated get global go goto grant granted greatest grouping groups handler header hex hierarchy hold hour id identity if ignore ilike immediate immediately immutable implementation implicit import including increment indent index indexes indicator inherit inherits initially inline inner inout input insensitive instance instantiable instead integrity intersect intersection invoker isnull isolation k key key_member key_type label lag language large last last_value lateral lc_collate lc_ctype lead leading leakproof least left length level library like_regex link listen ln load local localtime localtimestamp location locator lock locked logged lower m map mapping match matched materialized max maxvalue max_cardinality member merge message_length message_octet_length message_text method min minute minvalue mod mode modifies module month more move multiset mumps name names namespace national natural nchar nclob nesting new next nfc nfd nfkc nfkd nil no none normalize normalized nothing notify notnull nowait nth_value ntile null nullable nullif nulls number object occurrences_regex octets octet_length of off offset oids old only open operator option options ordering ordinality others out outer output over overlaps overlay overriding owned owner p pad parallel parameter parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partial partition pascal passing passthrough password percent percentile_cont percentile_disc percent_rank period permission placing plans pli policy portion position position_regex power precedes preceding prepare prepared preserve primary prior privileges procedural procedure program public quote range rank read reads reassign recheck recovery recursive ref references referencing refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex relative release rename repeatable replace replica requiring reset respect restart restore restrict restricted result return returned_cardinality returned_length returned_octet_length returned_sqlstate returning returns revoke right role rollback rollup routine routine_catalog routine_name routine_schema row rows row_count row_number rule savepoint scale schema schema_name scope scope_catalog scope_name scope_schema scroll search second section security selective self sensitive sequence sequences serializable server server_name session session_user setof sets share show similar simple size skip snapshot some source space specific specifictype specific_name sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt stable standalone start state statement static statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset substring substring_regex succeeds sum symmetric sysid system system_time system_user t tables tablesample tablespace table_name temp template temporary then ties timezone_hour timezone_minute to token top_level_count trailing transaction transactions_committed transactions_rolled_back transaction_active transform transforms translate translate_regex translation treat trigger trigger_catalog trigger_name trigger_schema trim trim_array true truncate trusted type types uescape unbounded uncommitted under unencrypted unique unknown unlink unlisten unlogged unnamed unnest until untyped upper uri usage user user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema using vacuum valid validate validator value value_of varbinary variadic var_pop var_samp verbose version versioning view views volatile when whenever whitespace width_bucket window within work wrapper write xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate year yes loop repeat attach path depends detach zone"),builtin:a("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"),atoms:a("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^\/#@?~]/,dateSQL:a("date time timestamp"),support:a("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast")}),e.defineMIME("text/x-gql",{name:"sql",keywords:a("ancestor and asc by contains desc descendant distinct from group has in is limit offset on order select superset where"),atoms:a("false true"),builtin:a("blob datetime first key __key__ string integer double boolean null"),operatorChars:/^[*+\-%<>!=]/}),e.defineMIME("text/x-gpsql",{name:"sql",client:a("source"),keywords:a("abort absolute access action active add admin after aggregate all also alter always analyse analyze and any array as asc assertion assignment asymmetric at authorization backward before begin between bigint binary bit boolean both by cache called cascade cascaded case cast chain char character characteristics check checkpoint class close cluster coalesce codegen collate column comment commit committed concurrency concurrently configuration connection constraint constraints contains content continue conversion copy cost cpu_rate_limit create createdb createexttable createrole createuser cross csv cube current current_catalog current_date current_role current_schema current_time current_timestamp current_user cursor cycle data database day deallocate dec decimal declare decode default defaults deferrable deferred definer delete delimiter delimiters deny desc dictionary disable discard distinct distributed do document domain double drop dxl each else enable encoding encrypted end enum errors escape every except exchange exclude excluding exclusive execute exists explain extension external extract false family fetch fields filespace fill filter first float following for force foreign format forward freeze from full function global grant granted greatest group group_id grouping handler hash having header hold host hour identity if ignore ilike immediate immutable implicit in including inclusive increment index indexes inherit inherits initially inline inner inout input insensitive insert instead int integer intersect interval into invoker is isnull isolation join key language large last leading least left level like limit list listen load local localtime localtimestamp location lock log login mapping master match maxvalue median merge minute minvalue missing mode modifies modify month move name names national natural nchar new newline next no nocreatedb nocreateexttable nocreaterole nocreateuser noinherit nologin none noovercommit nosuperuser not nothing notify notnull nowait null nullif nulls numeric object of off offset oids old on only operator option options or order ordered others out outer over overcommit overlaps overlay owned owner parser partial partition partitions passing password percent percentile_cont percentile_disc placing plans position preceding precision prepare prepared preserve primary prior privileges procedural procedure protocol queue quote randomly range read readable reads real reassign recheck recursive ref references reindex reject relative release rename repeatable replace replica reset resource restart restrict returning returns revoke right role rollback rollup rootpartition row rows rule savepoint scatter schema scroll search second security segment select sequence serializable session session_user set setof sets share show similar simple smallint some split sql stable standalone start statement statistics stdin stdout storage strict strip subpartition subpartitions substring superuser symmetric sysid system table tablespace temp template temporary text then threshold ties time timestamp to trailing transaction treat trigger trim true truncate trusted type unbounded uncommitted unencrypted union unique unknown unlisten until update user using vacuum valid validation validator value values varchar variadic varying verbose version view volatile web when where whitespace window with within without work writable write xml xmlattributes xmlconcat xmlelement xmlexists xmlforest xmlparse xmlpi xmlroot xmlserialize year yes zone"),builtin:a("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"),atoms:a("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^\/#@?~]/,dateSQL:a("date time timestamp"),support:a("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast")}),e.defineMIME("text/x-sparksql",{name:"sql",keywords:a("add after all alter analyze and anti archive array as asc at between bucket buckets by cache cascade case cast change clear cluster clustered codegen collection column columns comment commit compact compactions compute concatenate cost create cross cube current current_date current_timestamp database databases datata dbproperties defined delete delimited desc describe dfs directories distinct distribute drop else end escaped except exchange exists explain export extended external false fields fileformat first following for format formatted from full function functions global grant group grouping having if ignore import in index indexes inner inpath inputformat insert intersect interval into is items join keys last lateral lazy left like limit lines list load local location lock locks logical macro map minus msck natural no not null nulls of on option options or order out outer outputformat over overwrite partition partitioned partitions percent preceding principals purge range recordreader recordwriter recover reduce refresh regexp rename repair replace reset restrict revoke right rlike role roles rollback rollup row rows schema schemas select semi separated serde serdeproperties set sets show skewed sort sorted start statistics stored stratify struct table tables tablesample tblproperties temp temporary terminated then to touch transaction transactions transform true truncate unarchive unbounded uncache union unlock unset use using values view when where window with"),builtin:a("tinyint smallint int bigint boolean float double string binary timestamp decimal array map struct uniontype delimited serde sequencefile textfile rcfile inputformat outputformat"),atoms:a("false true null"),operatorChars:/^[*+\-%<>!=~&|^]/,dateSQL:a("date time timestamp"),support:a("ODBCdotTable doubleQuote zerolessFloat")}),e.defineMIME("text/x-esper",{name:"sql",client:a("source"),keywords:a("alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit after all and as at asc avedev avg between by case cast coalesce count create current_timestamp day days delete define desc distinct else end escape events every exists false first from full group having hour hours in inner insert instanceof into irstream is istream join last lastweekday left limit like max match_recognize matches median measures metadatasql min minute minutes msec millisecond milliseconds not null offset on or order outer output partition pattern prev prior regexp retain-union retain-intersection right rstream sec second seconds select set some snapshot sql stddev sum then true unidirectional until update variable weekday when where window"),builtin:{},atoms:a("false true null"),operatorChars:/^[*+\-%<>!=&|^\/#@?~]/,dateSQL:a("time"),support:a("decimallessFloat zerolessFloat binaryNumber hexNumber")})}()})},"./node_modules/component-classes/index.js":function(e,t,n){function r(e){if(!e||!e.nodeType)throw new Error("A DOM element reference is required");this.el=e,this.list=e.classList}try{var o=n("./node_modules/component-indexof/index.js")}catch(e){var o=n("./node_modules/component-indexof/index.js")}var a=/\s+/,i=Object.prototype.toString;e.exports=function(e){return new r(e)},r.prototype.add=function(e){if(this.list)return this.list.add(e),this;var t=this.array();return~o(t,e)||t.push(e),this.el.className=t.join(" "),this},r.prototype.remove=function(e){if("[object RegExp]"==i.call(e))return this.removeMatching(e);if(this.list)return this.list.remove(e),this;var t=this.array(),n=o(t,e);return~n&&t.splice(n,1),this.el.className=t.join(" "),this},r.prototype.removeMatching=function(e){for(var t=this.array(),n=0;nu;)if((s=l[u++])!=s)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}}},"./node_modules/core-js/library/modules/_classof.js":function(e,t,n){var r=n("./node_modules/core-js/library/modules/_cof.js"),o=n("./node_modules/core-js/library/modules/_wks.js")("toStringTag"),a="Arguments"==r(function(){return arguments}()),i=function(e,t){try{return e[t]}catch(e){}};e.exports=function(e){var t,n,s;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=i(t=Object(e),o))?n:a?r(t):"Object"==(s=r(t))&&"function"==typeof t.callee?"Arguments":s}},"./node_modules/core-js/library/modules/_cof.js":function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},"./node_modules/core-js/library/modules/_core.js":function(e,t){var n=e.exports={version:"2.5.5"};"number"==typeof __e&&(__e=n)},"./node_modules/core-js/library/modules/_create-property.js":function(e,t,n){"use strict";var r=n("./node_modules/core-js/library/modules/_object-dp.js"),o=n("./node_modules/core-js/library/modules/_property-desc.js");e.exports=function(e,t,n){t in e?r.f(e,t,o(0,n)):e[t]=n}},"./node_modules/core-js/library/modules/_ctx.js":function(e,t,n){var r=n("./node_modules/core-js/library/modules/_a-function.js");e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},"./node_modules/core-js/library/modules/_defined.js":function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},"./node_modules/core-js/library/modules/_descriptors.js":function(e,t,n){e.exports=!n("./node_modules/core-js/library/modules/_fails.js")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},"./node_modules/core-js/library/modules/_dom-create.js":function(e,t,n){var r=n("./node_modules/core-js/library/modules/_is-object.js"),o=n("./node_modules/core-js/library/modules/_global.js").document,a=r(o)&&r(o.createElement);e.exports=function(e){return a?o.createElement(e):{}}},"./node_modules/core-js/library/modules/_enum-bug-keys.js":function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},"./node_modules/core-js/library/modules/_enum-keys.js":function(e,t,n){var r=n("./node_modules/core-js/library/modules/_object-keys.js"),o=n("./node_modules/core-js/library/modules/_object-gops.js"),a=n("./node_modules/core-js/library/modules/_object-pie.js");e.exports=function(e){var t=r(e),n=o.f;if(n)for(var i,s=n(e),l=a.f,c=0;s.length>c;)l.call(e,i=s[c++])&&t.push(i);return t}},"./node_modules/core-js/library/modules/_export.js":function(e,t,n){var r=n("./node_modules/core-js/library/modules/_global.js"),o=n("./node_modules/core-js/library/modules/_core.js"),a=n("./node_modules/core-js/library/modules/_ctx.js"),i=n("./node_modules/core-js/library/modules/_hide.js"),s=n("./node_modules/core-js/library/modules/_has.js"),l=function(e,t,n){var c,u,d,p=e&l.F,f=e&l.G,h=e&l.S,m=e&l.P,g=e&l.B,b=e&l.W,v=f?o:o[t]||(o[t]={}),y=v.prototype,_=f?r:h?r[t]:(r[t]||{}).prototype;f&&(n=t);for(c in n)(u=!p&&_&&void 0!==_[c])&&s(v,c)||(d=u?_[c]:n[c],v[c]=f&&"function"!=typeof _[c]?n[c]:g&&u?a(d,r):b&&_[c]==d?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(d):m&&"function"==typeof d?a(Function.call,d):d,m&&((v.virtual||(v.virtual={}))[c]=d,e&l.R&&y&&!y[c]&&i(y,c,d)))};l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,e.exports=l},"./node_modules/core-js/library/modules/_fails.js":function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},"./node_modules/core-js/library/modules/_global.js":function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},"./node_modules/core-js/library/modules/_has.js":function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},"./node_modules/core-js/library/modules/_hide.js":function(e,t,n){var r=n("./node_modules/core-js/library/modules/_object-dp.js"),o=n("./node_modules/core-js/library/modules/_property-desc.js");e.exports=n("./node_modules/core-js/library/modules/_descriptors.js")?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},"./node_modules/core-js/library/modules/_html.js":function(e,t,n){var r=n("./node_modules/core-js/library/modules/_global.js").document;e.exports=r&&r.documentElement},"./node_modules/core-js/library/modules/_ie8-dom-define.js":function(e,t,n){e.exports=!n("./node_modules/core-js/library/modules/_descriptors.js")&&!n("./node_modules/core-js/library/modules/_fails.js")(function(){return 7!=Object.defineProperty(n("./node_modules/core-js/library/modules/_dom-create.js")("div"),"a",{get:function(){return 7}}).a})},"./node_modules/core-js/library/modules/_iobject.js":function(e,t,n){var r=n("./node_modules/core-js/library/modules/_cof.js");e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},"./node_modules/core-js/library/modules/_is-array-iter.js":function(e,t,n){var r=n("./node_modules/core-js/library/modules/_iterators.js"),o=n("./node_modules/core-js/library/modules/_wks.js")("iterator"),a=Array.prototype;e.exports=function(e){return void 0!==e&&(r.Array===e||a[o]===e)}},"./node_modules/core-js/library/modules/_is-array.js":function(e,t,n){var r=n("./node_modules/core-js/library/modules/_cof.js");e.exports=Array.isArray||function(e){return"Array"==r(e)}},"./node_modules/core-js/library/modules/_is-object.js":function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},"./node_modules/core-js/library/modules/_iter-call.js":function(e,t,n){var r=n("./node_modules/core-js/library/modules/_an-object.js");e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(t){var a=e.return;throw void 0!==a&&r(a.call(e)),t}}},"./node_modules/core-js/library/modules/_iter-create.js":function(e,t,n){"use strict";var r=n("./node_modules/core-js/library/modules/_object-create.js"),o=n("./node_modules/core-js/library/modules/_property-desc.js"),a=n("./node_modules/core-js/library/modules/_set-to-string-tag.js"),i={};n("./node_modules/core-js/library/modules/_hide.js")(i,n("./node_modules/core-js/library/modules/_wks.js")("iterator"),function(){return this}),e.exports=function(e,t,n){e.prototype=r(i,{next:o(1,n)}),a(e,t+" Iterator")}},"./node_modules/core-js/library/modules/_iter-define.js":function(e,t,n){"use strict";var r=n("./node_modules/core-js/library/modules/_library.js"),o=n("./node_modules/core-js/library/modules/_export.js"),a=n("./node_modules/core-js/library/modules/_redefine.js"),i=n("./node_modules/core-js/library/modules/_hide.js"),s=n("./node_modules/core-js/library/modules/_iterators.js"),l=n("./node_modules/core-js/library/modules/_iter-create.js"),c=n("./node_modules/core-js/library/modules/_set-to-string-tag.js"),u=n("./node_modules/core-js/library/modules/_object-gpo.js"),d=n("./node_modules/core-js/library/modules/_wks.js")("iterator"),p=!([].keys&&"next"in[].keys()),f=function(){return this};e.exports=function(e,t,n,h,m,g,b){l(n,t,h);var v,y,_,A=function(e){if(!p&&e in E)return E[e];switch(e){case"keys":case"values":return function(){return new n(this,e)}}return function(){return new n(this,e)}},x=t+" Iterator",w="values"==m,j=!1,E=e.prototype,S=E[d]||E["@@iterator"]||m&&E[m],k=S||A(m),C=m?w?A("entries"):k:void 0,T="Array"==t?E.entries||S:S;if(T&&(_=u(T.call(new e)))!==Object.prototype&&_.next&&(c(_,x,!0),r||"function"==typeof _[d]||i(_,d,f)),w&&S&&"values"!==S.name&&(j=!0,k=function(){return S.call(this)}),r&&!b||!p&&!j&&E[d]||i(E,d,k),s[t]=k,s[x]=f,m)if(v={values:w?k:A("values"),keys:g?k:A("keys"),entries:C},b)for(y in v)y in E||a(E,y,v[y]);else o(o.P+o.F*(p||j),t,v);return v}},"./node_modules/core-js/library/modules/_iter-detect.js":function(e,t,n){var r=n("./node_modules/core-js/library/modules/_wks.js")("iterator"),o=!1;try{var a=[7][r]();a.return=function(){o=!0},Array.from(a,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!o)return!1;var n=!1;try{var a=[7],i=a[r]();i.next=function(){return{done:n=!0}},a[r]=function(){return i},e(a)}catch(e){}return n}},"./node_modules/core-js/library/modules/_iter-step.js":function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},"./node_modules/core-js/library/modules/_iterators.js":function(e,t){e.exports={}},"./node_modules/core-js/library/modules/_library.js":function(e,t){e.exports=!0},"./node_modules/core-js/library/modules/_meta.js":function(e,t,n){var r=n("./node_modules/core-js/library/modules/_uid.js")("meta"),o=n("./node_modules/core-js/library/modules/_is-object.js"),a=n("./node_modules/core-js/library/modules/_has.js"),i=n("./node_modules/core-js/library/modules/_object-dp.js").f,s=0,l=Object.isExtensible||function(){return!0},c=!n("./node_modules/core-js/library/modules/_fails.js")(function(){return l(Object.preventExtensions({}))}),u=function(e){i(e,r,{value:{i:"O"+ ++s,w:{}}})},d=function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!a(e,r)){if(!l(e))return"F";if(!t)return"E";u(e)}return e[r].i},p=function(e,t){if(!a(e,r)){if(!l(e))return!0;if(!t)return!1;u(e)}return e[r].w},f=function(e){return c&&h.NEED&&l(e)&&!a(e,r)&&u(e),e},h=e.exports={KEY:r,NEED:!1,fastKey:d,getWeak:p,onFreeze:f}},"./node_modules/core-js/library/modules/_object-assign.js":function(e,t,n){"use strict";var r=n("./node_modules/core-js/library/modules/_object-keys.js"),o=n("./node_modules/core-js/library/modules/_object-gops.js"),a=n("./node_modules/core-js/library/modules/_object-pie.js"),i=n("./node_modules/core-js/library/modules/_to-object.js"),s=n("./node_modules/core-js/library/modules/_iobject.js"),l=Object.assign;e.exports=!l||n("./node_modules/core-js/library/modules/_fails.js")(function(){var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach(function(e){t[e]=e}),7!=l({},e)[n]||Object.keys(l({},t)).join("")!=r})?function(e,t){for(var n=i(e),l=arguments.length,c=1,u=o.f,d=a.f;l>c;)for(var p,f=s(arguments[c++]),h=u?r(f).concat(u(f)):r(f),m=h.length,g=0;m>g;)d.call(f,p=h[g++])&&(n[p]=f[p]);return n}:l},"./node_modules/core-js/library/modules/_object-create.js":function(e,t,n){var r=n("./node_modules/core-js/library/modules/_an-object.js"),o=n("./node_modules/core-js/library/modules/_object-dps.js"),a=n("./node_modules/core-js/library/modules/_enum-bug-keys.js"),i=n("./node_modules/core-js/library/modules/_shared-key.js")("IE_PROTO"),s=function(){},l=function(){var e,t=n("./node_modules/core-js/library/modules/_dom-create.js")("iframe"),r=a.length;for(t.style.display="none",n("./node_modules/core-js/library/modules/_html.js").appendChild(t),t.src="javascript:",e=t.contentWindow.document,e.open(),e.write(" \ No newline at end of file +Davinci
    \ No newline at end of file diff --git a/davinci-ui/share.38c89c5d4f3c659f4986.js b/davinci-ui/share.d06c3c2cc7f19c0f0c62.js similarity index 51% rename from davinci-ui/share.38c89c5d4f3c659f4986.js rename to davinci-ui/share.d06c3c2cc7f19c0f0c62.js index dc8a6c2f3..579fe3c0f 100644 --- a/davinci-ui/share.38c89c5d4f3c659f4986.js +++ b/davinci-ui/share.d06c3c2cc7f19c0f0c62.js @@ -1,31 +1,26 @@ -!function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/",t(t.s=3)}({"./app/assets/fonts/iconfont.css":function(e,t,n){var o=n("./node_modules/css-loader/index.js!./node_modules/postcss-loader/index.js!./app/assets/fonts/iconfont.css");"string"==typeof o&&(o=[[e.i,o,""]]);var r={};r.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(o,r);o.locals&&(e.exports=o.locals)},"./app/assets/fonts/iconfont.eot?t=1534415414863":function(e,t,n){e.exports=n.p+"65e1147825d932152347091396c437bd.eot"},"./app/assets/fonts/iconfont.svg?t=1534415414863":function(e,t,n){e.exports=n.p+"d5451b22234691c54bc84522f691f651.svg"},"./app/assets/fonts/iconfont.ttf?t=1534415414863":function(e,t,n){e.exports=n.p+"399a92a93efc679ce6169a00e20be760.ttf"},"./app/assets/images/grid.png":function(e,t,n){e.exports=n.p+"723c56b4425401d1ec750b9f681acca5.png"},"./app/assets/images/logo_light.svg":function(e,t,n){e.exports=n.p+"e92352b7d5694fd944eaa9e69ada160a.svg"},"./app/assets/json/echartsThemes/default.project.json":function(e,t){e.exports={version:1,themeName:"walden",theme:{seriesCnt:"8",backgroundColor:"rgba(252,252,252,0)",titleColor:"#666666",subtitleColor:"#999999",textColorShow:!1,textColor:"#333",markTextColor:"#ffffff",color:["#509af2","#3acf7a","#ffa223","#d465fb","#38caf7","#b3dd07","#ffd835","#e5b4fa"],borderColor:"#ccc",borderWidth:0,visualMapColor:["#2a99c9","#afe8ff"],legendTextColor:"#999999",kColor:"#e6a0d2",kColor0:"transparent",kBorderColor:"#e6a0d2",kBorderColor0:"#3fb1e3",kBorderWidth:"2",lineWidth:"3",symbolSize:"8",symbolBorderWidth:"2",lineSmooth:!1,graphLineWidth:"1",graphLineColor:"#cccccc",mapLabelColor:"#ffffff",mapLabelColorE:"rgb(63,177,227)",mapBorderColor:"#aaaaaa",mapBorderColorE:"#3fb1e3",mapBorderWidth:.5,mapBorderWidthE:1,mapAreaColor:"#eeeeee",mapAreaColorE:"rgba(63,177,227,0.25)",axes:[{type:"all",name:"通用坐标轴",axisLineShow:!0,axisLineColor:"#cccccc",axisTickShow:!1,axisTickColor:"#333",axisLabelShow:!0,axisLabelColor:"#999999",splitLineShow:!0,splitLineColor:["#eeeeee"],splitAreaShow:!1,splitAreaColor:["rgba(250,250,250,0.05)","rgba(200,200,200,0.02)"]},{type:"category",name:"类目坐标轴",axisLineShow:!0,axisLineColor:"#333",axisTickShow:!0,axisTickColor:"#333",axisLabelShow:!0,axisLabelColor:"#333",splitLineShow:!1,splitLineColor:["#ccc"],splitAreaShow:!1,splitAreaColor:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]},{type:"value",name:"数值坐标轴",axisLineShow:!0,axisLineColor:"#333",axisTickShow:!0,axisTickColor:"#333",axisLabelShow:!0,axisLabelColor:"#333",splitLineShow:!0,splitLineColor:["#ccc"],splitAreaShow:!1,splitAreaColor:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]},{type:"log",name:"对数坐标轴",axisLineShow:!0,axisLineColor:"#333",axisTickShow:!0,axisTickColor:"#333",axisLabelShow:!0,axisLabelColor:"#333",splitLineShow:!0,splitLineColor:["#ccc"],splitAreaShow:!1,splitAreaColor:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]},{type:"time",name:"时间坐标轴",axisLineShow:!0,axisLineColor:"#333",axisTickShow:!0,axisTickColor:"#333",axisLabelShow:!0,axisLabelColor:"#333",splitLineShow:!0,splitLineColor:["#ccc"],splitAreaShow:!1,splitAreaColor:["rgba(250,250,250,0.3)","rgba(200,200,200,0.3)"]}],axisSeperateSetting:!1,toolboxColor:"#999999",toolboxEmpasisColor:"#666666",tooltipAxisColor:"#cccccc",tooltipAxisWidth:1,timelineLineColor:"#626c91",timelineLineWidth:1,timelineItemColor:"#626c91",timelineItemColorE:"#626c91",timelineCheckColor:"#3fb1e3",timelineCheckBorderColor:"rgba(63,177,227,0.15)",timelineItemBorderWidth:1,timelineControlColor:"#626c91",timelineControlBorderColor:"#626c91",timelineControlBorderWidth:.5,timelineLabelColor:"#626c91",datazoomBackgroundColor:"rgba(255,255,255,0)",datazoomDataColor:"rgba(222,222,222,1)",datazoomFillColor:"rgba(114,230,212,0.25)",datazoomHandleColor:"#cccccc",datazoomHandleWidth:"100",datazoomLabelColor:"#999999"}}},"./app/assets/json/geo.json":function(e,t){e.exports={"上海":{lon:121.48,lat:31.22},"嘉定":{lon:121.24,lat:31.4},"宝山":{lon:121.48,lat:31.41},"川沙":{lon:121.7,lat:31.19},"南汇":{lon:121.76,lat:31.05},"奉贤":{lon:121.46,lat:30.92},"松江":{lon:121.24,lat:31},"金山":{lon:121.16,lat:30.89},"青浦":{lon:121.1,lat:31.15},"崇明":{lon:121.4,lat:31.73},"昆明":{lon:102.73,lat:25.04},"富民":{lon:102.48,lat:25.21},"晋宁":{lon:102.58,lat:24.68},"呈贡":{lon:102.79,lat:24.9},"安宁":{lon:102.44,lat:24.95},"昭通":{lon:103.7,lat:29.32},"永善":{lon:103.63,lat:28.22},"大关":{lon:103.91,lat:27.74},"彝良":{lon:104.06,lat:27.61},"鲁甸":{lon:103.54,lat:27.21},"绥江":{lon:103.97,lat:28.58},"盐津":{lon:104.28,lat:28.08},"威信":{lon:105.05,lat:27.85},"镇雄":{lon:104.86,lat:27.42},"巧家":{lon:102.92,lat:26.9},"永富":{lon:104.38,lat:28.62},"曲靖":{lon:103.79,lat:25.51},"宣威":{lon:104.09,lat:26.24},"富源":{lon:104.24,lat:25.67},"师宗":{lon:103.97,lat:24.85},"嵩明":{lon:103.03,lat:25.35},"会泽":{lon:103.27,lat:26.41},"沽益":{lon:103.82,lat:25.62},"罗平":{lon:104.3,lat:24.88},"陆良":{lon:104.64,lat:25.04},"宜良":{lon:103.12,lat:24.9},"马龙":{lon:103.61,lat:25.41},"路南":{lon:103.24,lat:24.77},"寻甸":{lon:103.25,lat:25.56},"玉溪":{lon:102.52,lat:24.35},"华宁":{lon:102.93,lat:24.26},"通海":{lon:102.75,lat:24.09},"澄江":{lon:102.91,lat:24.68},"江川":{lon:102.73,lat:24.27},"易门":{lon:102.15,lat:24.67},"元江":{lon:102,lat:23.59},"新平":{lon:101.98,lat:24.06},"峨山":{lon:102.38,lat:24.16},"思茅":{lon:101,lat:22.79},"普洱":{lon:101.03,lat:23.07},"镇沅":{lon:100.88,lat:23.9},"景东":{lon:100.82,lat:24.42},"景谷":{lon:100.71,lat:23.5},"黑江":{lon:101.71,lat:23.4},"澜沦":{lon:99.97,lat:22.55},"西盟":{lon:99.47,lat:22.73},"江城":{lon:101.88,lat:22.58},"孟连":{lon:99.55,lat:22.32},"临沦":{lon:100.09,lat:23.88},"云县":{lon:100.12,lat:24.44},"镇康":{lon:99.02,lat:23.92},"永德":{lon:99.25,lat:24.03},"凤庆":{lon:99.92,lat:24.58},"双江":{lon:99.85,lat:23.45},"沧源":{lon:99.24,lat:23.15},"耿马":{lon:99.41,lat:23.56},"保由":{lon:99.18,lat:25.12},"施甸":{lon:99.15,lat:24.69},"腾冲":{lon:98.51,lat:25.01},"昌宁":{lon:99.61,lat:24.82},"龙陵":{lon:98.7,lat:24.58},"丽江":{lon:100.25,lat:26.86},"华坪":{lon:101.24,lat:26.63},"永胜":{lon:100.76,lat:26.71},"宁蒗":{lon:100.82,lat:27.29},"文山":{lon:104.24,lat:23.37},"广南":{lon:105.09,lat:24.05},"西畴":{lon:104.68,lat:23.42},"麻栗坡":{lon:104.71,lat:23.12},"马关":{lon:104.4,lat:23.01},"丘北":{lon:104.19,lat:24.03},"砚山":{lon:104.35,lat:23.62},"富宁":{lon:105.6,lat:23.62},"个旧":{lon:102.43,lat:23.35},"弥勒":{lon:103.43,lat:24.41},"蒙自":{lon:103.41,lat:23.36},"元阳":{lon:102.81,lat:23.17},"红河":{lon:102.42,lat:23.35},"石屏":{lon:102.48,lat:23.73},"泸西":{lon:103.76,lat:24.52},"金平":{lon:103.24,lat:22.77},"开远":{lon:103.23,lat:23.7},"绿春":{lon:102.42,lat:23.01},"建水":{lon:102.79,lat:23.64},"河口":{lon:103.98,lat:22.52},"屏边":{lon:103.67,lat:22.68},"景淇":{lon:100.79,lat:22},"勐海":{lon:100.5,lat:21.95},"勐腊":{lon:101.56,lat:21.48},"楚雄":{lon:101.54,lat:25.01},"元谋":{lon:101.85,lat:25.7},"武定":{lon:102.36,lat:25.55},"禄丰":{lon:102.08,lat:25.15},"南华":{lon:101.26,lat:25.21},"大姚":{lon:101.34,lat:25.73},"永仁":{lon:101.7,lat:26.07},"禄劝":{lon:102.45,lat:25.58},"牟定":{lon:101.58,lat:25.32},"双柏":{lon:101.67,lat:24.68},"姚安":{lon:101.24,lat:25.4},"下关":{lon:100.24,lat:25.45},"剑川":{lon:99.88,lat:26.53},"洱源":{lon:99.94,lat:26.1},"宾川":{lon:100.55,lat:25.82},"弥渡":{lon:100.52,lat:25.34},"永平":{lon:99.52,lat:25.45},"鹤庆":{lon:100.18,lat:26.55},"大理":{lon:100.19,lat:25.69},"漾濞":{lon:99.98,lat:25.68},"云龙":{lon:99.39,lat:25.9},"祥云":{lon:100.56,lat:25.48},"巍山":{lon:100.33,lat:25.23},"南涧":{lon:100.51,lat:25.04},"潞西":{lon:98.6,lat:24.41},"陇川":{lon:97.96,lat:24.33},"盈江":{lon:97.93,lat:24.69},"畹町":{lon:98.08,lat:24.08},"瑞丽":{lon:97.83,lat:24},"梁河":{lon:98.3,lat:24.78},"泸水":{lon:98.82,lat:25.97},"碧江":{lon:98.95,lat:26.55},"福贡":{lon:98.92,lat:26.89},"兰坪":{lon:99.29,lat:26.49},"贡山":{lon:98.65,lat:27.73},"中甸":{lon:99.72,lat:27.78},"德钦":{lon:98.93,lat:28.49},"维西":{lon:99.27,lat:27.15},"钓鱼岛":{lon:123.33,lat:25},"黄岩岛":{lon:117.51,lat:15.07},"呼和浩特":{lon:111.65,lat:40.82},"上默特左旗":{lon:111.13,lat:40.72},"托克托":{lon:111.15,lat:40.28},"包头":{lon:110,lat:40.58},"上默特右旗":{lon:110.52,lat:40.55},"固阳":{lon:110.03,lat:41.03},"乌海":{lon:106.82,lat:39.67},"集宁":{lon:113.08,lat:41.03},"兴和":{lon:113.97,lat:40.88},"清水河":{lon:111.65,lat:39.92},"武川":{lon:111.42,lat:41.12},"卓资":{lon:112.52,lat:40.93},"商都":{lon:113.53,lat:41.58},"丰镇":{lon:113.15,lat:40.45},"凉城":{lon:112.48,lat:40.52},"和林格尔":{lon:111.8,lat:40.4},"化德":{lon:114,lat:41.9},"四子王旗":{lon:111.68,lat:41.37},"二连浩特":{lon:111.96,lat:43.65},"阿巴哈纳尔旗":{lon:116.08,lat:43.95},"多伦":{lon:116.48,lat:42.18},"阿巴嘎旗":{lon:114.97,lat:44.03},"西乌珠穆沁旗":{lon:117.58,lat:44.6},"东乌珠穆沁旗":{lon:116.97,lat:45.53},"苏尼特左旗":{lon:113.7,lat:43.85},"苏尼特右旗":{lon:112.95,lat:42.47},"太仆寺旗":{lon:115.3,lat:41.9},"正镶白旗":{lon:115,lat:42.32},"正蓝旗":{lon:116.02,lat:42.25},"镶黄旗":{lon:113.83,lat:42.25},"海拉尔":{lon:119.73,lat:29.22},"满洲里":{lon:117.47,lat:49.58},"陈巴尔虎旗":{lon:119.45,lat:49.33},"额尔古纳右旗":{lon:120.08,lat:50.45},"额尔古纳左旗":{lon:121.52,lat:50.8},"喜桂图旗":{lon:120.73,lat:49.3},"阿荣旗":{lon:123.5,lat:48.13},"布特哈旗":{lon:122.78,lat:47.98},"新巴尔虎左旗":{lon:116.82,lat:48.67},"新巴尔虎右旗":{lon:118.23,lat:48.22},"鄂伦春自治旗":{lon:123.7,lat:50.58},"通辽":{lon:122.28,lat:43.63},"开鲁":{lon:121.32,lat:43.62},"库伦旗":{lon:121.75,lat:42.72},"奈曼旗":{lon:120.65,lat:42.85},"扎鲁特旗":{lon:120.87,lat:44.55},"赤峰":{lon:118.87,lat:42.28},"宁城":{lon:119.32,lat:41.62},"林西":{lon:118.02,lat:43.62},"喀喇沁旗":{lon:118.67,lat:41.95},"敖汉旗":{lon:119.87,lat:42.3},"翁牛特旗":{lon:119,lat:42.97},"巴林右旗":{lon:118.65,lat:43.52},"巴林左旗":{lon:119.35,lat:43.98},"阿鲁科尔沁旗":{lon:120.05,lat:43.97},"克什克腾旗":{lon:117.48,lat:43.28},"伊克昭盟":{lon:110,lat:39.83},"东胜县":{lon:110,lat:39.83},"准格尔旗":{lon:111.13,lat:39.68},"乌审旗":{lon:109.03,lat:38.38},"伊金霍洛旗":{lon:109.77,lat:39.25},"鄂托克旗":{lon:107.97,lat:39.12},"鄂托克前旗":{lon:107.43,lat:38.18},"杭锦旗":{lon:108.7,lat:39.83},"达拉特旗":{lon:110.02,lat:40.42},"临河":{lon:107.37,lat:40.78},"五原":{lon:108.28,lat:41.12},"磴口":{lon:106.98,lat:40.33},"杭锦后旗":{lon:107.12,lat:40.88},"乌拉特中旗":{lon:108.52,lat:41.55},"乌拉特前旗":{lon:108.65,lat:40.75},"乌拉特后旗":{lon:108.52,lat:40.88},"阿拉善左旗":{lon:105.68,lat:38.85},"阿拉善右旗":{lon:101.68,lat:39.2},"额济纳旗":{lon:100.88,lat:41.9},"乌兰浩特":{lon:122.08,lat:46.07},"突泉":{lon:121.5,lat:45.4},"北京":{lon:116.46,lat:39.92},"平谷":{lon:117.1,lat:40.13},"密云":{lon:116.85,lat:40.37},"顺义":{lon:116.65,lat:40.13},"通县":{lon:116.67,lat:39.92},"怀柔":{lon:116.62,lat:40.32},"大兴":{lon:116.33,lat:39.73},"房山":{lon:115.98,lat:39.72},"长春":{lon:125.35,lat:43.88},"吉林":{lon:126.57,lat:43.87},"农安":{lon:125.15,lat:44.45},"德惠":{lon:125.68,lat:44.52},"榆树":{lon:126.55,lat:44.83},"九台":{lon:126.83,lat:44.15},"双阳":{lon:125.68,lat:43.53},"永吉":{lon:126.57,lat:43.87},"舒兰":{lon:126.97,lat:44.4},"蛟河":{lon:127.33,lat:43.75},"桦甸":{lon:126.72,lat:42.97},"磐石":{lon:126.03,lat:42.93},"延吉":{lon:129.52,lat:42.93},"汪清":{lon:129.75,lat:43.32},"珲春":{lon:130.35,lat:42.85},"图们":{lon:129.83,lat:42.98},"和龙":{lon:129,lat:42.52},"安图":{lon:128.3,lat:42.58},"敦化":{lon:128.18,lat:43.35},"通化":{lon:125.92,lat:41.49},"柳河":{lon:125.7,lat:40.88},"海龙":{lon:125.65,lat:42.53},"辉南":{lon:126.03,lat:42.68},"靖宇":{lon:126.8,lat:42.38},"浑江":{lon:126.4,lat:41.97},"抚松":{lon:127.27,lat:42.33},"集安":{lon:126.17,lat:41.15},"长白":{lon:128.17,lat:41.43},"四平":{lon:124.37,lat:43.17},"梨树":{lon:124.33,lat:43.32},"怀德":{lon:124.82,lat:43.5},"伊通":{lon:125.32,lat:43.33},"辽源":{lon:125.15,lat:42.97},"东丰":{lon:125.5,lat:42.68},"双辽":{lon:123.5,lat:43.52},"白城":{lon:122.82,lat:45.63},"大安":{lon:124.18,lat:45.5},"扶余":{lon:124.82,lat:45.2},"乾安":{lon:124.02,lat:45},"长岭":{lon:123.97,lat:44.3},"通榆":{lon:123.13,lat:44.82},"洮安":{lon:122.75,lat:45.35},"成都":{lon:104.06,lat:30.67},"金堂":{lon:104.32,lat:30.88},"双流":{lon:104.94,lat:30.57},"蒲江":{lon:103.29,lat:30.2},"郫县":{lon:103.86,lat:30.8},"新都":{lon:104.13,lat:30.82},"来易":{lon:102.15,lat:26.9},"盐边":{lon:101.56,lat:26.9},"温江":{lon:103.81,lat:30.97},"灌县":{lon:103.61,lat:31.04},"彭县":{lon:103.94,lat:30.99},"什邡":{lon:104.16,lat:31.13},"广汉":{lon:104.25,lat:30.99},"新津":{lon:103.78,lat:30.42},"邛崃":{lon:103.47,lat:30.42},"大邑":{lon:103.53,lat:30.58},"崇庆":{lon:103.69,lat:30.63},"绵阳":{lon:104.73,lat:31.48},"江油":{lon:104.7,lat:31.8},"青川":{lon:105.21,lat:32.59},"平武":{lon:104.52,lat:32.42},"光元":{lon:105.86,lat:32.44},"旺苍":{lon:106.33,lat:32.25},"剑阁":{lon:105.45,lat:32.03},"梓潼":{lon:105.16,lat:31.64},"三台":{lon:105.06,lat:31.1},"盐亭":{lon:105.35,lat:31.23},"射洪":{lon:105.31,lat:30.9},"遂宁":{lon:105.58,lat:30.52},"蓬溪":{lon:105.74,lat:30.78},"中江":{lon:104.68,lat:31.06},"德阳":{lon:104.37,lat:31.13},"绵竹":{lon:104.19,lat:31.32},"安县":{lon:104.41,lat:31.64},"北川":{lon:104.44,lat:31.89},"内江":{lon:105.04,lat:29.59},"乐至":{lon:105.02,lat:30.3},"安岳":{lon:105.3,lat:30.12},"威远":{lon:104.7,lat:29.57},"资中":{lon:104.85,lat:29.81},"资阳":{lon:104.6,lat:30.19},"简阳":{lon:104.53,lat:30.38},"隆昌":{lon:105.25,lat:29.64},"宜宾":{lon:104.56,lat:29.77},"富顺":{lon:104.97,lat:29.24},"南溪":{lon:104.96,lat:28.87},"江安":{lon:105.06,lat:28.71},"纳溪":{lon:105.38,lat:28.77},"泸县":{lon:105.46,lat:28.96},"合江":{lon:105.78,lat:28.79},"泸州":{lon:105.39,lat:28.91},"古蔺":{lon:105.79,lat:28.03},"叙水":{lon:105.44,lat:28.19},"长宁":{lon:104.91,lat:28.6},"兴文":{lon:105.06,lat:28.36},"琪县":{lon:104.81,lat:28.38},"高县":{lon:104.52,lat:28.4},"筠连":{lon:104.53,lat:28.16},"屏由":{lon:104.15,lat:28.68},"乐由":{lon:103.73,lat:29.59},"夹江":{lon:103.59,lat:29.75},"洪雅":{lon:103.38,lat:29.95},"丹棱":{lon:103.53,lat:30.04},"青神":{lon:103.81,lat:29.86},"眉由":{lon:103.81,lat:30.05},"彭由":{lon:103.83,lat:30.22},"井研":{lon:104.06,lat:29.67},"仁寿":{lon:104.09,lat:30},"犍为":{lon:103.93,lat:29.21},"沐川":{lon:103.98,lat:28.96},"娥眉":{lon:103.5,lat:29.62},"马边":{lon:103.53,lat:28.87},"峨边":{lon:103.25,lat:29.23},"金口":{lon:103.13,lat:29.24},"涪陵":{lon:107.36,lat:29.7},"垫江":{lon:107.34,lat:30.36},"丰都":{lon:107.7,lat:29.89},"石柱":{lon:108.13,lat:29.98},"秀山":{lon:108.97,lat:28.47},"西阳":{lon:108.75,lat:28.85},"黔江":{lon:108.81,lat:29.53},"彭水":{lon:108.19,lat:29.29},"武隆":{lon:108.72,lat:29.29},"南川":{lon:107.13,lat:29.15},"万县":{lon:108.35,lat:30.83},"开县":{lon:108.39,lat:31.23},"城口":{lon:108.67,lat:31.98},"巫溪":{lon:109.6,lat:31.42},"巫山":{lon:109.86,lat:31.1},"奉节":{lon:109.52,lat:31.06},"云阳":{lon:108.89,lat:30.99},"忠县":{lon:108.03,lat:30.33},"梁平":{lon:107.78,lat:30.66},"南允":{lon:106.06,lat:30.8},"苍溪":{lon:105.96,lat:31.75},"阆中":{lon:105.97,lat:31.75},"仪陇":{lon:106.38,lat:31.52},"南部":{lon:106.03,lat:31.34},"西允":{lon:105.84,lat:31.01},"营山":{lon:106.57,lat:31.07},"蓬安":{lon:106.44,lat:31.04},"广安":{lon:106.61,lat:30.48},"岳池":{lon:106.43,lat:30.55},"武胜":{lon:106.3,lat:30.38},"华云":{lon:106.74,lat:30.41},"达县":{lon:107.49,lat:31.23},"万源":{lon:108.06,lat:32.07},"宜汉":{lon:107.71,lat:31.39},"开江":{lon:107.87,lat:31.1},"邻水":{lon:106.91,lat:30.36},"大竹":{lon:107.21,lat:30.75},"渠县":{lon:106.94,lat:30.85},"南江":{lon:106.83,lat:32.36},"巴中":{lon:106.73,lat:31.86},"平昌":{lon:107.11,lat:31.59},"通江":{lon:108.24,lat:31.95},"百沙":{lon:108.18,lat:32},"雅安":{lon:102.97,lat:29.97},"芦山":{lon:102.91,lat:30.17},"名山":{lon:103.06,lat:30.09},"荣经":{lon:102.81,lat:29.79},"汉源":{lon:102.66,lat:29.4},"石棉":{lon:102.38,lat:29.21},"天全":{lon:102.78,lat:30.09},"宝兴":{lon:102.84,lat:30.36},"马尔康":{lon:102.22,lat:31.92},"红原":{lon:102.55,lat:31.79},"阿坝":{lon:101.72,lat:31.93},"若尔盖":{lon:102.94,lat:33.62},"黑水":{lon:102.95,lat:32.06},"松潘":{lon:103.61,lat:32.64},"南坪":{lon:104.19,lat:33.23},"汶川":{lon:103.61,lat:31.46},"理县":{lon:103.16,lat:31.42},"小金":{lon:102.34,lat:30.97},"金川":{lon:102.03,lat:31.48},"壤塘":{lon:100.97,lat:32.3},"茂汶":{lon:103.89,lat:31.67},"康定":{lon:101.95,lat:30.04},"炉霍":{lon:100.65,lat:31.38},"甘孜":{lon:99.96,lat:31.64},"新龙":{lon:100.28,lat:30.96},"白玉":{lon:98.83,lat:32.23},"德格":{lon:98.57,lat:31.81},"石渠":{lon:98.06,lat:33.01},"色达":{lon:100.35,lat:32.3},"泸定":{lon:102.25,lat:29.92},"丹巴":{lon:101.87,lat:30.85},"九龙":{lon:101.53,lat:29.01},"雅江":{lon:101,lat:30.03},"道孚":{lon:101.14,lat:30.99},"理塘":{lon:100.28,lat:30.03},"乡城":{lon:99.78,lat:28.93},"稻城":{lon:100.31,lat:29.04},"巴塘":{lon:99,lat:30},"得荣":{lon:99.25,lat:28.71},"西昌":{lon:102.29,lat:27.92},"昭觉":{lon:102.83,lat:28.03},"甘洛":{lon:102.74,lat:28.96},"雷波":{lon:103.62,lat:28.21},"宁南":{lon:102.76,lat:27.07},"会东":{lon:102.55,lat:26.74},"会理":{lon:102.21,lat:26.67},"德昌":{lon:102.15,lat:27.4},"美姑":{lon:103.14,lat:28.33},"金阳":{lon:103.22,lat:27.73},"布拖":{lon:102.8,lat:27.7},"普格":{lon:102.52,lat:27.38},"喜德":{lon:102.42,lat:28.33},"越西":{lon:102.49,lat:28.66},"盐源":{lon:101.51,lat:27.42},"冕宁":{lon:102.15,lat:28.58},"木里":{lon:101.25,lat:27.9},"天津":{lon:117.2,lat:39.13},"宁河":{lon:117.83,lat:39.33},"静海":{lon:116.92,lat:38.93},"蓟县":{lon:117.4,lat:40.05},"宝坻":{lon:117.3,lat:39.75},"武清":{lon:117.05,lat:39.4},"银川":{lon:106.27,lat:38.47},"永宁":{lon:106.24,lat:38.28},"贺兰":{lon:106.35,lat:38.55},"石嘴山":{lon:106.39,lat:39.04},"平罗":{lon:106.54,lat:38.91},"陶乐":{lon:106.69,lat:38.82},"吴忠":{lon:106.21,lat:37.99},"同心":{lon:105.94,lat:36.97},"灵武":{lon:106.34,lat:38.1},"中宁":{lon:105.66,lat:37.48},"盐池":{lon:107.41,lat:37.78},"中卫":{lon:105.18,lat:37.51},"青铜峡":{lon:106.07,lat:38.02},"固原":{lon:106.28,lat:36.01},"西吉":{lon:105.7,lat:35.97},"泾源":{lon:106.33,lat:35.5},"海原":{lon:105.64,lat:36.56},"隆德":{lon:106.11,lat:35.63},"合肥":{lon:117.27,lat:31.86},"长丰":{lon:117.16,lat:32.47},"淮南":{lon:116.98,lat:32.62},"凤台":{lon:116.71,lat:32.68},"淮北":{lon:116.77,lat:33.97},"濉溪":{lon:116.76,lat:33.92},"芜湖":{lon:118.38,lat:31.33},"铜陵":{lon:117.82,lat:30.93},"蚌埠":{lon:117.34,lat:32.93},"马鞍山":{lon:118.48,lat:31.56},"安庆":{lon:117.03,lat:30.52},"宿州":{lon:116.97,lat:33.63},"宿县":{lon:116.97,lat:33.63},"砀山":{lon:116.34,lat:34.42},"萧县":{lon:116.93,lat:34.19},"吴壁":{lon:117.55,lat:33.55},"泗县":{lon:117.89,lat:33.49},"五河":{lon:117.87,lat:33.14},"固镇":{lon:117.32,lat:33.33},"怀远":{lon:117.19,lat:32.95},"滁州":{lon:118.31,lat:32.33},"嘉山":{lon:117.98,lat:32.78},"天长":{lon:119,lat:32.68},"来安":{lon:118.44,lat:32.44},"全椒":{lon:118.27,lat:32.1},"定远":{lon:117.68,lat:32.52},"凤阳":{lon:117.4,lat:32.86},"巢湖":{lon:117.87,lat:31.62},"巢县":{lon:117.87,lat:31.62},"肥东":{lon:117.47,lat:31.89},"含山":{lon:118.11,lat:31.7},"和县":{lon:118.37,lat:31.7},"无为":{lon:117.75,lat:31.3},"卢江":{lon:117.29,lat:31.23},"宣城":{lon:118.73,lat:31.95},"当涂":{lon:118.49,lat:31.55},"郎溪":{lon:119.17,lat:31.14},"广德":{lon:119.41,lat:30.89},"泾县":{lon:118.41,lat:30.68},"南陵":{lon:118.32,lat:30.91},"繁昌":{lon:118.21,lat:31.07},"宁国":{lon:118.95,lat:30.62},"青阳":{lon:117.84,lat:30.64},"屯溪":{lon:118.31,lat:29.72},"休宁":{lon:118.19,lat:29.81},"旌得":{lon:118.53,lat:30.28},"绩溪":{lon:118.57,lat:30.07},"歙县":{lon:118.44,lat:29.88},"祁门":{lon:117.7,lat:29.86},"黟县":{lon:117.92,lat:29.93},"太平":{lon:118.13,lat:30.28},"石台":{lon:117.48,lat:30.19},"桐城":{lon:116.94,lat:31.04},"纵阳":{lon:117.21,lat:30.69},"怀宁":{lon:116.63,lat:30.41},"望江":{lon:116.69,lat:30.12},"宿松":{lon:116.13,lat:30.15},"太湖":{lon:116.27,lat:30.42},"岳西":{lon:116.36,lat:30.84},"潜山":{lon:116.53,lat:30.62},"东至":{lon:116.99,lat:30.08},"贵池":{lon:117.48,lat:30.66},"六安":{lon:116.49,lat:31.73},"霍丘":{lon:116.27,lat:32.32},"寿县":{lon:116.78,lat:32.57},"肥西":{lon:117.15,lat:31.7},"舒城":{lon:116.94,lat:31.45},"霍山":{lon:116.32,lat:31.38},"金寨":{lon:115.87,lat:31.67},"阜阳":{lon:115.81,lat:32.89},"毫县":{lon:116.76,lat:33.86},"涡阳":{lon:116.21,lat:33.49},"蒙城":{lon:116.55,lat:33.25},"利辛":{lon:116.19,lat:33.12},"颖上":{lon:116.26,lat:32.62},"阜南":{lon:115.6,lat:32.63},"临泉":{lon:115.24,lat:33.06},"界首":{lon:115.34,lat:33.24},"太和":{lon:115.61,lat:33.16},"济南":{lon:117,lat:36.65},"历城":{lon:117.07,lat:36.69},"长清":{lon:116.73,lat:36.55},"章丘":{lon:117.53,lat:36.72},"青岛":{lon:120.33,lat:36.07},"崂山":{lon:120.42,lat:36.15},"胶南":{lon:119.97,lat:35.88},"即墨":{lon:120.45,lat:36.38},"胶县":{lon:120,lat:36.28},"淄博":{lon:118.05,lat:36.78},"枣庄":{lon:117.57,lat:34.86},"滕县":{lon:117.17,lat:35.09},"东营":{lon:118.49,lat:37.46},"垦利":{lon:118.54,lat:37.59},"利津":{lon:118.25,lat:37.49},"德州":{lon:116.29,lat:37.45},"宁津":{lon:116.8,lat:37.64},"乐陵":{lon:117.22,lat:37.74},"商河":{lon:117.15,lat:37.31},"济阳":{lon:117.2,lat:36.97},"禹城":{lon:116.66,lat:36.95},"夏津":{lon:116,lat:36.95},"陵县":{lon:116.58,lat:37.34},"庆云":{lon:117.37,lat:37.37},"临邑":{lon:116.86,lat:37.2},"齐河":{lon:116.76,lat:36.79},"平原":{lon:116.44,lat:37.16},"武城":{lon:116.08,lat:37.2},"滨州":{lon:118.03,lat:37.36},"滨县":{lon:117.97,lat:37.47},"广饶":{lon:118.41,lat:37.04},"桓台":{lon:118.12,lat:36.95},"邹平":{lon:117.75,lat:36.89},"阳信":{lon:117.58,lat:37.65},"沾化":{lon:118.14,lat:37.7},"博兴":{lon:118.12,lat:37.12},"高青":{lon:117.66,lat:37.18},"惠民":{lon:117.51,lat:17.49},"无棣":{lon:117.58,lat:37.73},"潍坊":{lon:119.1,lat:36.62},"潍县":{lon:119.22,lat:36.77},"平度":{lon:119.97,lat:36.77},"诸城":{lon:119.42,lat:35.99},"安丘":{lon:119.2,lat:36.42},"临朐":{lon:118.53,lat:36.5},"寿光":{lon:118.73,lat:36.86},"昌邑":{lon:119.41,lat:36.86},"高密":{lon:119.75,lat:36.38},"五莲":{lon:119.2,lat:35.74},"昌乐":{lon:118.83,lat:36.69},"高都":{lon:118.47,lat:36.69},"烟台":{lon:121.39,lat:37.52},"牟平":{lon:121.59,lat:37.38},"文登":{lon:122.05,lat:37.2},"海阳":{lon:121.17,lat:36.76},"莱阳":{lon:120.71,lat:36.97},"栖霞":{lon:120.83,lat:37.28},"掖县":{lon:119.93,lat:37.18},"长岛":{lon:120.73,lat:37.91},"威海":{lon:122.1,lat:37.5},"福山":{lon:121.27,lat:37.49},"荣成":{lon:122.41,lat:37.16},"乳山":{lon:121.52,lat:36.89},"莱西":{lon:120.53,lat:36.86},"招远":{lon:120.38,lat:37.35},"黄县":{lon:120.51,lat:37.64},"蓬莱":{lon:120.75,lat:37.8},"临沂":{lon:118.35,lat:35.05},"沂水":{lon:118.64,lat:35.78},"日照":{lon:119.46,lat:35.42},"临沭":{lon:118.73,lat:34.89},"仓山":{lon:118.03,lat:34.84},"平邑":{lon:117.63,lat:35.49},"沂源":{lon:118.17,lat:36.18},"沂南":{lon:118.47,lat:35.54},"营县":{lon:118.83,lat:35.57},"莒南":{lon:118.83,lat:35.17},"郯城":{lon:118.35,lat:34.61},"费县":{lon:117.97,lat:35.26},"蒙阴":{lon:117.95,lat:35.7},"泰安":{lon:117.13,lat:36.18},"莱芜":{lon:117.67,lat:36.19},"肥城":{lon:116.76,lat:36.24},"平阴":{lon:116.46,lat:36.29},"新汶":{lon:117.67,lat:35.86},"新泰":{lon:117.76,lat:35.91},"宁阳":{lon:116.8,lat:35.76},"东平":{lon:116.3,lat:35.91},"济宁":{lon:116.59,lat:35.38},"兖州":{lon:116.83,lat:35.54},"泗水":{lon:117.27,lat:35.65},"鱼台":{lon:116.65,lat:35},"嘉祥":{lon:116.34,lat:35.41},"汶上":{lon:116.49,lat:35.71},"曲阜":{lon:116.98,lat:35.59},"邹县":{lon:116.97,lat:35.39},"微山":{lon:117.12,lat:34.8},"金乡":{lon:116.32,lat:35.07},"荷泽":{lon:115.43,lat:35.24},"郓城":{lon:115.94,lat:35.59},"巨野":{lon:116.08,lat:35.38},"单县":{lon:116.07,lat:34.82},"曹县":{lon:115.53,lat:34.83},"鄄城":{lon:115.5,lat:35.57},"梁山":{lon:116.1,lat:35.8},"成武":{lon:115.88,lat:34.97},"定陶":{lon:115.57,lat:35.07},"东明":{lon:115.08,lat:35.31},"聊城":{lon:115.97,lat:36.45},"高唐":{lon:116.23,lat:36.86},"东阿":{lon:116.23,lat:36.32},"莘县":{lon:115.67,lat:36.24},"临清":{lon:115.72,lat:36.68},"茌平":{lon:116.27,lat:36.58},"阳谷":{lon:115.78,lat:36.11},"冠县":{lon:115.45,lat:35.47},"太原":{lon:112.53,lat:37.87},"阳曲":{lon:112.65,lat:38.05},"娄烦":{lon:111.78,lat:38.05},"清徐":{lon:112.33,lat:37.62},"大同":{lon:113.3,lat:40.12},"阳泉":{lon:113.57,lat:37.85},"长治":{lon:113.08,lat:36.18},"天镇":{lon:114.08,lat:40.42},"灵丘":{lon:114.2,lat:39.47},"怀仁":{lon:113.1,lat:39.82},"山阴":{lon:112.82,lat:39.52},"平鲁":{lon:112.12,lat:39.53},"右玉":{lon:112.33,lat:40.18},"阳高":{lon:113.72,lat:40.38},"广灵":{lon:113.27,lat:39.75},"浑源":{lon:113.68,lat:39.7},"应县":{lon:113.18,lat:39.58},"朔县":{lon:112.42,lat:39.32},"左云":{lon:112.67,lat:40.02},"忻县":{lon:112.7,lat:38.38},"代县":{lon:112.97,lat:39.07},"五台":{lon:113.32,lat:38.72},"静乐":{lon:111.9,lat:38.37},"保德":{lon:111.09,lat:38.01},"河曲":{lon:111.17,lat:39.38},"神池":{lon:112.17,lat:39.1},"原平":{lon:112.7,lat:38.73},"繁峙":{lon:113.28,lat:39.2},"定襄":{lon:112.95,lat:38.5},"岢岚":{lon:111.58,lat:38.7},"五寨":{lon:111.82,lat:38.93},"偏关":{lon:111.47,lat:39.45},"宁武":{lon:112.28,lat:39},"榆次":{lon:112.72,lat:37.68},"孟县":{lon:113.37,lat:38.01},"昔阳":{lon:113.68,lat:37.62},"左权":{lon:113.35,lat:37.07},"太谷":{lon:112.53,lat:37.42},"平遥":{lon:112.18,lat:37.2},"灵石":{lon:111.77,lat:36.83},"寿阳":{lon:113.17,lat:37.88},"平定":{lon:113.62,lat:37.79},"和顺":{lon:113.55,lat:37.33},"榆社":{lon:112.97,lat:37.08},"祁县":{lon:112.33,lat:37.36},"介休":{lon:111.88,lat:37.03},"离石":{lon:111.13,lat:37.53},"兴县":{lon:111.22,lat:38.47},"方由":{lon:111.24,lat:37.86},"岚县":{lon:111.62,lat:38.28},"交城":{lon:112.14,lat:37.55},"文水":{lon:112.02,lat:37.42},"汾阳":{lon:111.75,lat:37.27},"孝义":{lon:111.8,lat:37.12},"交口":{lon:111.2,lat:36.97},"石楼":{lon:110.83,lat:37},"中阳":{lon:111.17,lat:37.37},"临县":{lon:110.95,lat:37.95},"柳林":{lon:110.85,lat:37.45},"襄垣":{lon:113.02,lat:36.55},"黎城":{lon:113.4,lat:36.56},"壶关":{lon:113.23,lat:35.11},"高平":{lon:112.88,lat:35.48},"阳城":{lon:112.38,lat:35.84},"长子":{lon:112.87,lat:36.13},"沁源":{lon:112.32,lat:36.5},"潞城":{lon:113.22,lat:36.33},"武乡":{lon:112.83,lat:36.83},"平顺":{lon:113.43,lat:36.19},"陵川":{lon:113.27,lat:35.78},"晋城":{lon:112.83,lat:35.52},"沁水":{lon:112.15,lat:35.67},"屯留":{lon:112.87,lat:36.32},"沁县":{lon:112.68,lat:36.75},"临汾":{lon:111.5,lat:36.08},"汾西":{lon:111.53,lat:36.63},"安泽":{lon:112.2,lat:36.15},"古县":{lon:111.9,lat:36.29},"翼城":{lon:111.68,lat:35.73},"曲沃":{lon:111.33,lat:35.63},"吉县":{lon:110.65,lat:36.12},"大宁":{lon:110.72,lat:36.47},"侯马":{lon:111.45,lat:35.03},"永和":{lon:110.64,lat:36.62},"洪洞":{lon:111.68,lat:36.25},"霍县":{lon:111.72,lat:36.57},"浮山":{lon:111.83,lat:35.97},"襄汾":{lon:111.43,lat:35.86},"乡宁":{lon:110.8,lat:35.97},"蒲县":{lon:111.07,lat:36.42},"运城":{lon:110.97,lat:35.03},"闻喜":{lon:111.2,lat:35.37},"垣曲":{lon:111.63,lat:35.3},"芮城":{lon:110.68,lat:34.71},"临猗":{lon:110.78,lat:35.15},"新绛":{lon:111.22,lat:35.62},"河津":{lon:110.7,lat:35.58},"夏县":{lon:111.22,lat:35.12},"绛县":{lon:111.58,lat:35.48},"平陆":{lon:111.2,lat:34.12},"永济":{lon:110.42,lat:34.88},"万荣":{lon:110.83,lat:35.42},"稷山":{lon:110.97,lat:35.6},"广州":{lon:113.23,lat:23.16},"花县":{lon:113.19,lat:23.4},"新十":{lon:114.2,lat:24.09},"增城":{lon:113.81,lat:23.13},"从化":{lon:113.55,lat:23.57},"龙门":{lon:114.25,lat:23.75},"番禺":{lon:113.36,lat:22.95},"汕头":{lon:116.69,lat:23.39},"洪江":{lon:110.38,lat:21.2},"茂名":{lon:110.88,lat:21.68},"佛山":{lon:113.11,lat:23.05},"江门":{lon:113.06,lat:22.61},"深圳":{lon:114.07,lat:22.62},"宝安":{lon:113.85,lat:22.58},"珠海":{lon:113.52,lat:22.3},"韶关":{lon:113.62,lat:24.84},"曲江":{lon:113.58,lat:24.68},"乐昌":{lon:113.35,lat:25.14},"仁化":{lon:113.73,lat:25.11},"南雄":{lon:114.33,lat:25.14},"始兴":{lon:114.08,lat:24.78},"翁源":{lon:114.13,lat:24.36},"佛岗":{lon:113.52,lat:23.86},"英德":{lon:113.38,lat:24.17},"清远":{lon:113.01,lat:23.7},"阳山":{lon:112.65,lat:24.48},"连县":{lon:112.4,lat:24.77},"连山":{lon:112.07,lat:24.59},"连南":{lon:112.28,lat:24.77},"惠州":{lon:114.4,lat:23.09},"惠阳":{lon:114.4,lat:23.09},"博罗":{lon:114.28,lat:23.18},"河源":{lon:114.68,lat:23.73},"连平":{lon:114.48,lat:24.39},"和平":{lon:114.89,lat:24.45},"龙川":{lon:115.25,lat:24.09},"紫金":{lon:115.18,lat:23.64},"惠东":{lon:114.7,lat:22.97},"东莞":{lon:113.75,lat:23.04},"梅州":{lon:116.1,lat:24.55},"梅县":{lon:116.1,lat:24.55},"平远":{lon:117.9,lat:24.59},"蕉岭":{lon:116.18,lat:24.66},"大埔":{lon:116.7,lat:24.34},"丰顺":{lon:116.18,lat:23.78},"五华":{lon:115.75,lat:23.93},"兴宁":{lon:115.75,lat:24.15},"潮州":{lon:116.63,lat:23.68},"澄海":{lon:116.8,lat:23.48},"潮安":{lon:116.63,lat:23.68},"饶平":{lon:117.01,lat:23.7},"南澳":{lon:117.03,lat:23.44},"潮阳":{lon:116.61,lat:23.27},"惠来":{lon:116.29,lat:23.07},"陆丰":{lon:117.64,lat:22.95},"海丰":{lon:117.33,lat:22.98},"普宁":{lon:116.17,lat:23.29},"揭西":{lon:115.82,lat:23.45},"揭阳":{lon:116.35,lat:23.55},"南海":{lon:113.11,lat:23.05},"三水":{lon:112.89,lat:23.18},"顺德":{lon:113.24,lat:22.84},"中山":{lon:113.38,lat:22.52},"斗门":{lon:113.25,lat:22.2},"新会":{lon:113.02,lat:22.52},"鹤山":{lon:112.94,lat:22.76},"开平":{lon:112.68,lat:22.36},"台山":{lon:112.78,lat:22.27},"恩平":{lon:112.29,lat:22.21},"高明":{lon:112.76,lat:21.71},"廉江":{lon:110.27,lat:21.63},"化州":{lon:110.59,lat:21.64},"高州":{lon:110.83,lat:21.95},"信宜":{lon:110.9,lat:22.36},"阳春":{lon:111.78,lat:22.16},"阳江":{lon:111.95,lat:21.85},"电白":{lon:110.99,lat:21.52},"吴川":{lon:110.78,lat:21.43},"徐闻":{lon:110.17,lat:20.34},"海康":{lon:110.07,lat:20.91},"遂溪":{lon:110.24,lat:21.39},"肇庆":{lon:112.44,lat:23.05},"高要":{lon:112.44,lat:23.05},"怀集":{lon:112.18,lat:23.93},"广宁":{lon:112.43,lat:23.14},"四会":{lon:112.68,lat:23.36},"新兴":{lon:112.2,lat:22.68},"云浮":{lon:112.02,lat:22.93},"罗定":{lon:111.56,lat:22.77},"郁南":{lon:111.51,lat:23.23},"德庆":{lon:111.75,lat:23.15},"封开":{lon:111.48,lat:23.45},"南宁":{lon:108.33,lat:22.84},"柳州":{lon:109.4,lat:24.33},"桂林":{lon:110.28,lat:25.29},"梧州":{lon:111.34,lat:23.51},"凭祥":{lon:106.75,lat:22.11},"邕宁":{lon:108.49,lat:22.74},"武鸣":{lon:108.27,lat:23.17},"马山":{lon:108.2,lat:23.73},"上林":{lon:108.59,lat:23.44},"宾阳":{lon:108.8,lat:23.22},"横县":{lon:109.2,lat:22.69},"扶绥":{lon:107.92,lat:22.65},"崇左":{lon:107.37,lat:22.42},"宁明":{lon:107.08,lat:22.12},"龙州":{lon:106.84,lat:22.36},"大新":{lon:107.21,lat:22.85},"天等":{lon:107.12,lat:23.08},"隆安":{lon:107.68,lat:23.18},"河池":{lon:108.06,lat:24.7},"环江":{lon:108.26,lat:24.83},"罗城":{lon:108.9,lat:24.79},"宜山":{lon:108.64,lat:24.47},"东兰":{lon:107.36,lat:24.53},"凤山":{lon:107.05,lat:24.55},"天峨":{lon:107.16,lat:25.01},"南丹":{lon:107.54,lat:24.98},"都安":{lon:108.09,lat:23.94},"巴马":{lon:107.25,lat:24.15},"合山":{lon:108.89,lat:23.82},"柳城":{lon:109.24,lat:24.67},"融安":{lon:109.37,lat:24.24},"鹿寨":{lon:109.74,lat:24.49},"象州":{lon:109.7,lat:23.98},"武宜":{lon:109.66,lat:23.6},"柳江":{lon:109.34,lat:24.27},"来宾":{lon:109.24,lat:23.76},"忻城":{lon:108.66,lat:24.07},"融水":{lon:109.24,lat:25.07},"三江":{lon:109.58,lat:25.8},"金秀":{lon:110.18,lat:24.14},"临桂":{lon:110.22,lat:25.22},"灵川":{lon:110.33,lat:25.42},"兴安":{lon:110.66,lat:25.6},"资源":{lon:110.66,lat:26.03},"全州":{lon:111.06,lat:25.96},"灌阳":{lon:111.14,lat:25.49},"恭城":{lon:110.81,lat:24.85},"平乐":{lon:110.66,lat:24.64},"荔浦":{lon:110.38,lat:24.51},"永福":{lon:109.98,lat:24.99},"龙胜":{lon:110.02,lat:25.78},"苍悟":{lon:111.22,lat:23.51},"钟山":{lon:111.3,lat:24.53},"富川":{lon:110.26,lat:24.83},"贺县":{lon:111.54,lat:24.44},"岑溪":{lon:111,lat:22.95},"藤县":{lon:110.9,lat:23.36},"蒙山":{lon:110.54,lat:24.22},"昭平":{lon:110.8,lat:24.18},"玉林":{lon:110.14,lat:22.64},"桂平":{lon:110.07,lat:23.38},"平南":{lon:110.4,lat:23.55},"容县":{lon:110.53,lat:22.87},"北流":{lon:110.33,lat:22.71},"陆川":{lon:110.25,lat:22.33},"博白":{lon:109.98,lat:22.27},"贵县":{lon:109.6,lat:23.11},"北海":{lon:109.12,lat:21.49},"钦州":{lon:108.61,lat:21.96},"灵山":{lon:109.29,lat:22.44},"浦北":{lon:109.56,lat:22.27},"合浦":{lon:109.2,lat:21.33},"上思":{lon:107.98,lat:22.16},"防城":{lon:108.35,lat:21.78},"百色":{lon:106.62,lat:23.91},"凌云":{lon:106.55,lat:24.35},"乐业":{lon:106.56,lat:24.78},"田阳":{lon:106.9,lat:23.75},"田东":{lon:107.12,lat:23.62},"平果":{lon:107.59,lat:23.33},"德保":{lon:106.6,lat:23.34},"靖西":{lon:106.41,lat:23.15},"那坡":{lon:105.85,lat:23.42},"西林":{lon:105.08,lat:24.51},"田林":{lon:106.24,lat:24.31},"隆林":{lon:105.34,lat:24.8},"乌鲁木齐":{lon:87.68,lat:43.77},"克拉玛依":{lon:84.77,lat:45.59},"石河子":{lon:85.94,lat:44.27},"吐鲁番":{lon:89.19,lat:42.91},"托克逊":{lon:88.63,lat:42.77},"鄯善":{lon:90.25,lat:42.82},"哈密":{lon:93.44,lat:42.78},"伊吾":{lon:94.65,lat:43.28},"巴里坤":{lon:93,lat:43.6},"库尔勒":{lon:86.06,lat:41.68},"和静":{lon:86.35,lat:42.31},"和硕":{lon:86.84,lat:42.23},"博湖":{lon:86.53,lat:41.95},"尉梨":{lon:86.24,lat:41.36},"轮台":{lon:84.25,lat:41.77},"焉耆":{lon:86.55,lat:42.05},"和田":{lon:79.94,lat:37.12},"民丰":{lon:82.63,lat:37.07},"策勒":{lon:80.78,lat:37.04},"于田":{lon:81.63,lat:36.86},"洛浦":{lon:80.17,lat:37.12},"皮山":{lon:78.29,lat:37.06},"墨玉":{lon:79.74,lat:37.31},"阿克苏":{lon:80.29,lat:41.15},"温宿":{lon:80.24,lat:41.29},"拜城":{lon:81.84,lat:41.82},"库车":{lon:82.97,lat:41.68},"新和":{lon:82.63,lat:41.55},"沙雅":{lon:82.9,lat:41.25},"阿瓦提":{lon:80.34,lat:40.64},"柯平":{lon:79.06,lat:40.55},"乌什":{lon:79.25,lat:41.22},"咯什":{lon:75.94,lat:39.52},"巴楚":{lon:78.59,lat:39.78},"枷师":{lon:76.78,lat:39.46},"乐普湖":{lon:76.67,lat:39.23},"麦盖提":{lon:77.62,lat:38.95},"莎车":{lon:77.25,lat:38.45},"泽普":{lon:77.26,lat:38.2},"叶城":{lon:77.42,lat:37.89},"疏勒":{lon:76.05,lat:39.41},"英吉沙":{lon:76.17,lat:38.91},"疏附":{lon:75.83,lat:39.42},"塔什库尔干":{lon:75.22,lat:37.76},"阿图什":{lon:76.12,lat:39.73},"阿合奇":{lon:78.42,lat:41.91},"阿克陶":{lon:75.94,lat:39.14},"乌恰":{lon:75.18,lat:39.7},"昌吉":{lon:87.31,lat:44.05},"阜康":{lon:87.94,lat:44.14},"奇台":{lon:89.52,lat:44.02},"吉木萨尔":{lon:89.14,lat:44},"米泉":{lon:87.68,lat:43.97},"玛纳斯":{lon:86.22,lat:44.28},"呼图壁":{lon:86.92,lat:44.18},"木垒":{lon:90.34,lat:43.8},"博乐":{lon:82.1,lat:44.93},"精河":{lon:82.92,lat:44.67},"温泉":{lon:81.08,lat:44.95},"伊宁":{lon:81.33,lat:43.91},"尼勒克":{lon:82.53,lat:43.82},"新源":{lon:83.27,lat:43.41},"巩留":{lon:82.23,lat:43.35},"奎屯":{lon:84.89,lat:44.45},"特克斯":{lon:81.81,lat:43.23},"昭苏":{lon:81.08,lat:43.15},"霍城":{lon:80.87,lat:44.07},"察布察尔":{lon:81.12,lat:43.82},"塔城":{lon:82.96,lat:46.74},"额敏":{lon:83.62,lat:46.52},"乌苏":{lon:84.62,lat:44.45},"托里":{lon:83.59,lat:45.92},"裕民":{lon:82.94,lat:46.21},"沙湾":{lon:85.56,lat:44.29},"和布克赛尔":{lon:85.13,lat:46.78},"阿勒泰":{lon:88.14,lat:47.86},"青河":{lon:90.37,lat:46.71},"富蕴":{lon:89.44,lat:47.05},"福海":{lon:87.51,lat:47.15},"吉木乃":{lon:85.84,lat:47.42},"布尔津":{lon:86.92,lat:47.7},"哈巴河":{lon:86.41,lat:48.05},"南京":{lon:118.78,lat:32.04},"江宁":{lon:118.83,lat:31.95},"六合":{lon:118.83,lat:32.36},"江浦":{lon:118.62,lat:32.07},"徐州":{lon:117.2,lat:34.26},"连云港":{lon:119.16,lat:34.59},"南通":{lon:120.86,lat:32.01},"苏州":{lon:120.62,lat:31.32},"无锡":{lon:120.29,lat:31.59},"常州":{lon:119.95,lat:31.79},"丰县":{lon:116.57,lat:34.79},"沛县":{lon:116.93,lat:34.73},"赣榆":{lon:119.11,lat:34.83},"东海":{lon:118.75,lat:34.54},"新沂":{lon:118.33,lat:34.38},"邳县":{lon:117.97,lat:34.3},"睢宁":{lon:117.94,lat:33.89},"铜山":{lon:117.2,lat:34.26},"清江":{lon:119.02,lat:33.59},"灌云":{lon:119.23,lat:34.3},"灌南":{lon:119.36,lat:34.09},"沭阳":{lon:118.79,lat:34.12},"宿迁":{lon:118.3,lat:33.96},"泗阳":{lon:118.68,lat:33.73},"盱眙":{lon:118.05,lat:33},"涟水":{lon:119.26,lat:33.77},"淮阴":{lon:119.02,lat:33.62},"淮安":{lon:119.15,lat:33.5},"洪泽":{lon:118.85,lat:33.28},"泗洪":{lon:118.23,lat:33.46},"金湖":{lon:119.02,lat:33.01},"盐城":{lon:120.13,lat:33.38},"滨海":{lon:119.84,lat:34.01},"阜宁":{lon:119.79,lat:33.78},"射阳":{lon:120.26,lat:33.77},"建湖":{lon:119.77,lat:33.46},"响水":{lon:119.56,lat:34.2},"大丰":{lon:120.45,lat:33.19},"东台":{lon:120.31,lat:32.84},"海安":{lon:120.45,lat:32.57},"如皋":{lon:120.56,lat:32.39},"如东":{lon:121.18,lat:32.33},"启东":{lon:121.66,lat:31.8},"海门":{lon:121.15,lat:31.89},"扬州":{lon:119.42,lat:32.39},"宝应":{lon:119.32,lat:33.23},"兴化":{lon:119.82,lat:32.93},"高邮":{lon:119.45,lat:32.78},"泰兴":{lon:120.02,lat:32.16},"泰县":{lon:120.15,lat:32.51},"泰州":{lon:119.9,lat:32.49},"靖江":{lon:120.26,lat:32.03},"江都":{lon:119.55,lat:32.43},"邗江":{lon:119.42,lat:32.39},"仪征":{lon:119.16,lat:32.27},"镇江":{lon:119.44,lat:32.2},"丹徒":{lon:119.44,lat:32.2},"扬中":{lon:119.81,lat:32.24},"丹阳":{lon:119.55,lat:32},"武进":{lon:119.95,lat:31.78},"宜兴":{lon:119.82,lat:31.36},"金坛":{lon:119.56,lat:31.74},"溧阳":{lon:119.48,lat:31.43},"句容":{lon:119.16,lat:31.95},"溧水":{lon:119.02,lat:31.65},"高淳":{lon:118.87,lat:31.32},"江阴":{lon:120.26,lat:31.91},"沙洲":{lon:120.55,lat:31.86},"常熟":{lon:120.74,lat:31.64},"太仓":{lon:121.1,lat:31.45},"昆山":{lon:120.95,lat:31.39},"吴县":{lon:120.62,lat:31.32},"吴江":{lon:120.63,lat:31.16},"南昌":{lon:115.89,lat:28.68},"新建":{lon:115.8,lat:28.69},"景德镇":{lon:117.22,lat:29.3},"萍乡":{lon:113.85,lat:27.6},"九江":{lon:115.97,lat:29.71},"彭泽":{lon:116.56,lat:29.9},"湖口":{lon:116.23,lat:29.75},"都昌":{lon:116.19,lat:29.29},"星子":{lon:116.03,lat:29.47},"永修":{lon:115.82,lat:29.04},"德安":{lon:115.75,lat:29.33},"瑞昌":{lon:115.65,lat:29.68},"武宁":{lon:115.09,lat:29.26},"修永":{lon:114.55,lat:29.04},"上饶":{lon:117.97,lat:28.47},"婺源":{lon:117.83,lat:29.25},"德兴":{lon:117.58,lat:28.96},"玉山":{lon:118.25,lat:28.68},"广丰":{lon:118.2,lat:28.45},"铅山":{lon:117.71,lat:28.32},"横峰":{lon:117.62,lat:28.42},"鹰潭":{lon:117.02,lat:28.23},"贵溪":{lon:117.2,lat:28.3},"余江":{lon:116.82,lat:28.22},"万年":{lon:117.08,lat:28.7},"乐平":{lon:117.12,lat:28.97},"波阳":{lon:116.68,lat:29},"于干":{lon:116.69,lat:28.7},"弋阳":{lon:117.43,lat:28.42},"宜春":{lon:114.38,lat:27.81},"万载":{lon:114.44,lat:28.11},"铜鼓":{lon:114.37,lat:28.53},"宜丰":{lon:114.78,lat:28.4},"上高":{lon:114.91,lat:28.25},"安义":{lon:115.55,lat:28.86},"奉新":{lon:115.38,lat:28.71},"高安":{lon:115.38,lat:28.42},"丰城":{lon:115.7,lat:28.19},"清江2":{lon:115.54,lat:28.07},"新余":{lon:114.92,lat:27.81},"分宜":{lon:114.68,lat:27.82},"靖安":{lon:115.37,lat:28.88},"抚州":{lon:116.34,lat:28},"临川":{lon:116.29,lat:27.95},"金溪":{lon:116.77,lat:27.92},"资溪":{lon:117.06,lat:27.7},"黎川":{lon:116.91,lat:27.3},"南丰":{lon:116.52,lat:27.22},"南城":{lon:116.62,lat:27.56},"宜黄":{lon:116.2,lat:27.55},"崇仁":{lon:116.05,lat:27.75},"乐安":{lon:115.82,lat:27.44},"东乡":{lon:116.61,lat:28.23},"进贤":{lon:116.26,lat:28.37},"吉安":{lon:114.97,lat:27.12},"新干":{lon:115.4,lat:27.77},"峡江":{lon:115.15,lat:27.56},"吉水":{lon:115.14,lat:27.22},"永丰":{lon:115.42,lat:27.33},"泰和":{lon:114.88,lat:26.81},"万安":{lon:114.77,lat:26.47},"遂川":{lon:114.5,lat:26.33},"宁冈":{lon:113.97,lat:26.71},"永新":{lon:114.23,lat:26.96},"莲花":{lon:113.94,lat:27.14},"安福":{lon:114.62,lat:27.39},"井冈山":{lon:114.17,lat:26.57},"赣州":{lon:114.92,lat:25.85},"广昌":{lon:116.32,lat:26.84},"石城":{lon:116.32,lat:26.34},"宁都":{lon:116,lat:26.46},"兴国":{lon:115.33,lat:26.32},"于都":{lon:115.39,lat:25.96},"瑞金":{lon:116.02,lat:25.89},"会昌":{lon:115.79,lat:25.58},"安远":{lon:115.41,lat:25.15},"寻乌":{lon:115.64,lat:24.96},"定南":{lon:115.02,lat:24.7},"龙南":{lon:114.79,lat:24.91},"全南":{lon:114.53,lat:24.76},"信丰":{lon:114.94,lat:25.39},"赣县":{lon:114.02,lat:25.85},"南康":{lon:114.75,lat:25.66},"上犹":{lon:114.55,lat:25.8},"崇义":{lon:114.31,lat:25.69},"大余":{lon:114.36,lat:25.39},"石家庄":{lon:114.48,lat:38.03},"唐山":{lon:118.02,lat:39.63},"行唐":{lon:114.54,lat:38.42},"灵寿":{lon:114.38,lat:38.31},"束鹿":{lon:115.18,lat:37.94},"晋县":{lon:115.03,lat:38.03},"藁城":{lon:114.84,lat:38.03},"高邑":{lon:114.58,lat:37.62},"赵县":{lon:114.78,lat:37.76},"井陉":{lon:114.13,lat:38.03},"获鹿":{lon:114.03,lat:38.08},"新乐":{lon:114.67,lat:38.33},"正定":{lon:114.56,lat:38.13},"深泽":{lon:115.2,lat:38.2},"无极":{lon:114.96,lat:38.16},"赞皇":{lon:114.35,lat:37.65},"元氏":{lon:114.5,lat:37.74},"栾城":{lon:114.64,lat:38.87},"平山":{lon:114.24,lat:38.2},"邯郸":{lon:114.47,lat:36.6},"永年":{lon:114.5,lat:36.77},"曲周":{lon:114.92,lat:36.78},"馆陶":{lon:115.4,lat:36.47},"魏县":{lon:114.94,lat:36.37},"成安":{lon:114.68,lat:36.43},"大名":{lon:115.14,lat:36.28},"涉县":{lon:113.67,lat:36.57},"鸡泽":{lon:113.85,lat:36.95},"丘县":{lon:115.18,lat:36.84},"广平":{lon:114.94,lat:36.49},"肥乡":{lon:114.8,lat:36.56},"临漳":{lon:114.62,lat:36.35},"磁县":{lon:114.37,lat:36.37},"武安":{lon:114.2,lat:36.7},"邢台":{lon:114.48,lat:37.05},"柏乡":{lon:114.68,lat:37.49},"宁普":{lon:114.9,lat:37.62},"隆尧":{lon:114.75,lat:37.35},"临西":{lon:115.5,lat:36.87},"南官":{lon:115.37,lat:37.37},"巨鹿":{lon:115.03,lat:37.22},"任县":{lon:114.68,lat:37.11},"沙河":{lon:114.52,lat:36.94},"临城":{lon:114.5,lat:37.43},"内丘":{lon:114.5,lat:37.28},"新河":{lon:115.22,lat:37.53},"清河":{lon:115.67,lat:37.07},"威县":{lon:115.08,lat:36.97},"广宗":{lon:115.14,lat:37.06},"平乡":{lon:115.02,lat:37.06},"南和":{lon:114.71,lat:37},"保定":{lon:115.48,lat:38.85},"涞水":{lon:115.71,lat:39.39},"涿县":{lon:115.98,lat:39.48},"定兴":{lon:115.78,lat:39.28},"容城":{lon:115.86,lat:39.06},"安新":{lon:115.92,lat:38.92},"蠡县":{lon:115.58,lat:38.49},"博野":{lon:115.46,lat:38.46},"定县":{lon:114.02,lat:38.52},"阜平":{lon:114.18,lat:38.85},"唐县":{lon:114.97,lat:38.75},"涞源":{lon:114.67,lat:39.37},"易县":{lon:115.49,lat:39.35},"新城":{lon:115.84,lat:39.34},"雄县":{lon:116.1,lat:38.98},"徐水":{lon:115.65,lat:39.02},"高阳":{lon:115.78,lat:38.68},"安国":{lon:115.3,lat:38.41},"清苑":{lon:115.47,lat:38.76},"望都":{lon:115.14,lat:38.71},"曲阳":{lon:114.68,lat:38.62},"完县":{lon:115.12,lat:38.84},"满城":{lon:115.45,lat:38.95},"张家口":{lon:114.87,lat:40.82},"康保":{lon:114.6,lat:41.87},"赤城":{lon:115.82,lat:40.92},"怀来":{lon:115.54,lat:40.4},"蔚县":{lon:114.53,lat:39.83},"宣化":{lon:115.03,lat:40.63},"张北":{lon:114.7,lat:41.15},"沽源":{lon:115.68,lat:41.68},"崇礼":{lon:115.25,lat:40.98},"涿鹿":{lon:115.2,lat:40.37},"阳原":{lon:114.15,lat:40.12},"怀安":{lon:114.38,lat:40.67},"尚义":{lon:113.95,lat:41.05},"万全":{lon:114.73,lat:40.84},"承德":{lon:117.93,lat:40.97},"围场":{lon:117.72,lat:41.95},"平泉":{lon:118.68,lat:41.02},"宽城":{lon:118.47,lat:40.62},"兴隆":{lon:117.48,lat:40.42},"滦平":{lon:117.53,lat:40.95},"隆化":{lon:117.7,lat:41.32},"青龙":{lon:118.93,lat:40.43},"丰宁":{lon:116.63,lat:41.2},"秦皇岛":{lon:119.57,lat:39.95},"迁西":{lon:118.3,lat:40.15},"迁安":{lon:118.69,lat:40.02},"昌黎":{lon:119.15,lat:39.72},"卢龙":{lon:118.85,lat:39.89},"滦南":{lon:118.67,lat:39.49},"玉田":{lon:117.9,lat:39.9},"唐海":{lon:118.54,lat:39.31},"遵化":{lon:117.97,lat:40.2},"抚宁":{lon:119.22,lat:39.88},"乐亭":{lon:118.9,lat:39.43},"滦县":{lon:118.73,lat:39.74},"丰南":{lon:118.1,lat:39.58},"丰润":{lon:118.13,lat:39.82},"廊坊":{lon:116.7,lat:39.53},"安次":{lon:116.69,lat:39.52},"三河":{lon:117.06,lat:39.97},"香河":{lon:117,lat:39.76},"霸县":{lon:116.38,lat:39.12},"固安":{lon:116.29,lat:39.44},"大城":{lon:116.63,lat:38.7},"文安":{lon:116.45,lat:38.87},"永清":{lon:116.48,lat:39.32},"大厂":{lon:116.98,lat:39.98},"沧州":{lon:116.83,lat:38.33},"黄骅":{lon:117.33,lat:38.4},"盐山":{lon:117.22,lat:38.07},"吴桥":{lon:116.37,lat:37.65},"东光":{lon:116.52,lat:37.89},"肃宁":{lon:115.82,lat:38.43},"河间":{lon:116.07,lat:38.45},"泊头":{lon:116.56,lat:38.08},"交河":{lon:116.27,lat:38.02},"青县":{lon:116.8,lat:38.58},"海兴":{lon:117.85,lat:38.17},"南皮":{lon:116.7,lat:38.05},"任丘":{lon:116.08,lat:38.72},"献县":{lon:116.12,lat:38.2},"孟村":{lon:117.1,lat:38.06},"衡水":{lon:115.72,lat:37.72},"饶阳":{lon:115.74,lat:38.24},"阜城":{lon:116.14,lat:37.87},"景县":{lon:116.26,lat:37.69},"枣强":{lon:115.72,lat:37.52},"深县":{lon:115.56,lat:38.02},"安平":{lon:115.5,lat:38.22},"武强":{lon:115.96,lat:38.03},"武邑":{lon:115.9,lat:37.81},"故城":{lon:115.96,lat:37.36},"冀县":{lon:115.56,lat:37.59},"郑州":{lon:113.65,lat:34.76},"荥阳":{lon:113.35,lat:34.79},"开封":{lon:114.35,lat:34.79},"平顶山":{lon:113.29,lat:33.75},"洛阳":{lon:112.44,lat:34.7},"焦作":{lon:113.21,lat:35.24},"鹤壁":{lon:114.17,lat:35.9},"杞县":{lon:114.77,lat:34.56},"尉氏":{lon:114.17,lat:34.41},"新郑":{lon:113.71,lat:34.4},"登封":{lon:113.02,lat:34.46},"通许":{lon:114.46,lat:34.48},"中牟":{lon:114,lat:34.73},"密县":{lon:113.35,lat:34.51},"巩县":{lon:112.96,lat:34.76},"兰考":{lon:114.81,lat:34.69},"新乡":{lon:113.85,lat:35.31},"汲县":{lon:114.05,lat:35.44},"封丘":{lon:114.04,lat:35.03},"获嘉":{lon:113.63,lat:35.27},"温贺":{lon:113.06,lat:34.94},"济源":{lon:112.57,lat:35.08},"博爱":{lon:113.05,lat:35.16},"辉县":{lon:113.77,lat:35.46},"延津":{lon:114.19,lat:35.14},"原阳":{lon:113.96,lat:35.05},"武陟":{lon:113.38,lat:35.1},"孟县2":{lon:112.77,lat:34.92},"沁阳":{lon:112.92,lat:35.08},"修武":{lon:113.42,lat:35.24},"安阳":{lon:114.35,lat:36.1},"南乐":{lon:115.21,lat:36.08},"范县":{lon:115.46,lat:35.9},"台前":{lon:115.83,lat:36},"滑县":{lon:114.52,lat:35.57},"浚县":{lon:114.54,lat:35.67},"淇县":{lon:114.17,lat:35.6},"内黄":{lon:114.88,lat:35.95},"清丰":{lon:115.1,lat:35.89},"濮阳":{lon:114.98,lat:35.71},"长垣":{lon:114.67,lat:35.19},"汤阴":{lon:114.35,lat:35.92},"林县":{lon:113.81,lat:36.06},"商丘":{lon:115.65,lat:34.44},"夏邑":{lon:116.13,lat:34.22},"柘城":{lon:115.29,lat:34.08},"睢县":{lon:115.04,lat:34.46},"虞城":{lon:115.87,lat:34.4},"永城":{lon:116.37,lat:33.94},"宁陵":{lon:115.31,lat:34.44},"民权":{lon:115.13,lat:34.65},"周口":{lon:114.63,lat:33.63},"商水":{lon:114.59,lat:33.54},"扶沟":{lon:114.38,lat:34.05},"鹿邑":{lon:115.48,lat:33.86},"淮阳":{lon:114.88,lat:33.74},"沈丘":{lon:115.06,lat:33.41},"西华":{lon:114.5,lat:33.79},"太康":{lon:114.85,lat:34.06},"郸城":{lon:115.17,lat:33.63},"项城":{lon:114.9,lat:33.44},"许昌":{lon:113.81,lat:34.02},"鄢县":{lon:114.17,lat:34.11},"郾城":{lon:113.98,lat:33.6},"襄城":{lon:113.46,lat:33.86},"鲁山":{lon:112.88,lat:33.74},"郏县":{lon:113.19,lat:33.98},"漯河":{lon:114.02,lat:33.56},"长葛":{lon:113.77,lat:34.22},"临颖":{lon:113.94,lat:33.81},"舞阳":{lon:113.58,lat:33.44},"叶县":{lon:113.35,lat:33.62},"宝丰":{lon:113.04,lat:33.86},"禹县":{lon:113.47,lat:34.16},"驻马店":{lon:114.02,lat:32.98},"确山":{lon:114.02,lat:32.83},"西平":{lon:114,lat:33.38},"汝南":{lon:114.35,lat:33},"新蔡":{lon:114.97,lat:32.75},"泌阳":{lon:113.31,lat:32.72},"遂平":{lon:113.98,lat:33.15},"上蔡":{lon:114.26,lat:33.25},"平舆":{lon:114.62,lat:32.97},"正阳":{lon:114.38,lat:32.62},"信阳":{lon:114.08,lat:32.13},"息县":{lon:114.72,lat:32.35},"固始":{lon:115.68,lat:32.17},"潢川":{lon:115.04,lat:32.13},"新县":{lon:114.83,lat:31.62},"罗山":{lon:114.53,lat:32.21},"淮滨":{lon:115.41,lat:32.44},"商城":{lon:115.42,lat:31.81},"光山":{lon:114.91,lat:32.02},"南阳":{lon:112.53,lat:33.01},"方城":{lon:112.98,lat:33.25},"唐河":{lon:112.83,lat:32.7},"新野":{lon:112.36,lat:32.51},"邓县":{lon:112.08,lat:32.68},"淅川":{lon:111.47,lat:33.14},"南召":{lon:112.4,lat:33.49},"社旗":{lon:112.92,lat:33.05},"桐柏":{lon:113.4,lat:32.37},"镇平":{lon:112.23,lat:33.03},"内乡":{lon:111.83,lat:33.05},"西峡":{lon:111.5,lat:33.31},"三门峡":{lon:111.19,lat:34.76},"孟津":{lon:112.42,lat:34.84},"临汝":{lon:112.83,lat:34.17},"汝阳":{lon:112.46,lat:34.16},"嵩县":{lon:112.07,lat:34.14},"栾川":{lon:111.6,lat:33.81},"灵宝":{lon:110.85,lat:34.52},"渑池":{lon:111.75,lat:34.76},"义马":{lon:111.92,lat:34.73},"偃师":{lon:112.77,lat:34.73},"伊川":{lon:112.42,lat:34.43},"宜阳":{lon:112.15,lat:34.51},"洛宁":{lon:111.65,lat:34.39},"卢氏":{lon:111.03,lat:34.06},"陕县":{lon:111.19,lat:34.76},"新安":{lon:112.14,lat:34.75},"杭州":{lon:120.19,lat:30.26},"余杭":{lon:120.3,lat:30.43},"富阳":{lon:119.95,lat:30.07},"建德":{lon:119.27,lat:29.49},"临安":{lon:119.72,lat:30.23},"萧山":{lon:120.25,lat:30.16},"桐庐":{lon:119.64,lat:29.8},"淳安":{lon:119.05,lat:29.61},"宁波":{lon:121.56,lat:29.86},"镇海":{lon:121.72,lat:29.96},"温州":{lon:120.65,lat:28.01},"瓯海":{lon:120.65,lat:28.01},"永喜":{lon:120.68,lat:28.16},"洞头":{lon:121.12,lat:27.84},"平阳":{lon:120.55,lat:27.68},"泰顺":{lon:119.7,lat:27.57},"乐清":{lon:120.94,lat:28.14},"瑞安":{lon:120.62,lat:27.8},"文成":{lon:120.08,lat:27.08},"苍南":{lon:120.36,lat:27.53},"湖州":{lon:120.1,lat:30.86},"平湖":{lon:121.02,lat:30.7},"桐乡":{lon:120.54,lat:30.64},"安吉":{lon:119.68,lat:30.68},"嘉善":{lon:120.92,lat:30.84},"嘉兴":{lon:120.76,lat:30.77},"海盐":{lon:120.92,lat:30.53},"海宁":{lon:120.69,lat:30.53},"德清":{lon:120.08,lat:30.54},"长兴":{lon:119.91,lat:30.01},"定海":{lon:122.11,lat:30.03},"岱山":{lon:122.2,lat:30.26},"嵊四":{lon:122.45,lat:30.72},"普陀":{lon:122.3,lat:29.97},"鄞县":{lon:121.56,lat:29.86},"象山":{lon:121.8,lat:29.48},"奉化":{lon:121.41,lat:29.66},"慈溪":{lon:121.23,lat:30.18},"宁海":{lon:121.42,lat:29.3},"余姚":{lon:121.16,lat:30.04},"绍兴":{lon:120.58,lat:30.01},"新昌":{lon:120.89,lat:29.49},"诸暨":{lon:120.23,lat:29.71},"上虞":{lon:120.87,lat:30.03},"嵊县":{lon:120.81,lat:29.6},"椒江":{lon:121.44,lat:28.67},"临海":{lon:121.13,lat:28.8},"三门":{lon:121.38,lat:29.11},"温岭":{lon:121.36,lat:28.36},"仙居":{lon:120.73,lat:28.85},"天台":{lon:121.03,lat:29.15},"黄岩":{lon:121.27,lat:28.64},"玉环":{lon:121.23,lat:28.14},"丽水":{lon:119.92,lat:28.45},"青田":{lon:120.28,lat:28.45},"庆无":{lon:119.06,lat:27.61},"遂昌":{lon:119.25,lat:28.59},"缙云":{lon:120.6,lat:28.66},"云和":{lon:119.56,lat:28.12},"龙泉":{lon:119.13,lat:28.08},"松阳":{lon:119.48,lat:28.46},"金华":{lon:119.64,lat:29.12},"浦江":{lon:119.88,lat:29.46},"东阳":{lon:120.23,lat:29.27},"武义":{lon:119.81,lat:28.9},"江山":{lon:118.61,lat:28.74},"开化":{lon:118.39,lat:29.15},"衢州":{lon:118.88,lat:28.97},"兰溪":{lon:119.48,lat:29.19},"义乌":{lon:120.06,lat:29.32},"永康":{lon:120.02,lat:28.92},"常山":{lon:118.5,lat:28.9},"海口":{lon:110.35,lat:20.02},"琼山":{lon:110.33,lat:19.98},"文昌":{lon:110.72,lat:19.61},"定安":{lon:110.31,lat:19.68},"琼海":{lon:110.46,lat:19.25},"万宁":{lon:110.39,lat:18.8},"屯昌":{lon:110.1,lat:19.36},"澄迈":{lon:110,lat:19.75},"儋县":{lon:109.57,lat:19.52},"临高":{lon:109.69,lat:19.91},"保亭":{lon:109.7,lat:18.64},"白沙":{lon:109.44,lat:19.23},"琼中":{lon:109.83,lat:19.05},"陵水":{lon:110.02,lat:18.48},"崖县":{lon:109.5,lat:18.25},"乐东":{lon:109.17,lat:18.73},"东方":{lon:108.64,lat:19.09},"昌江":{lon:109.03,lat:19.25},"香港":{lon:114.1,lat:22.2},"澳门":{lon:113.33,lat:22.13},"台北":{lon:121.5,lat:25.05},"高雄":{lon:120.37,lat:22.64},"基隆":{lon:121.73,lat:25.14},"台中":{lon:120.67,lat:24.15},"台南":{lon:120.19,lat:22.98},"宜兰":{lon:121.75,lat:24.75},"桃园":{lon:121.3,lat:25},"新竹":{lon:120.96,lat:24.81},"武汉":{lon:114.31,lat:30.52},"武昌":{lon:114.33,lat:30.35},"汉阳":{lon:114.02,lat:30.57},"黄石":{lon:115.09,lat:30.2},"十堰":{lon:110.79,lat:32.65},"沙市":{lon:112.24,lat:30.32},"宜昌":{lon:111.3,lat:30.7},"襄樊":{lon:112.14,lat:30.02},"孝感":{lon:113.91,lat:31.92},"黄陂":{lon:114.36,lat:30.88},"汉川":{lon:113.59,lat:30.63},"云梦":{lon:113.73,lat:31.02},"应山":{lon:113.81,lat:31.62},"大悟":{lon:114.09,lat:31.56},"应城":{lon:113.6,lat:30.94},"安陆":{lon:113.69,lat:31.25},"鄂城":{lon:114.87,lat:30.38},"黄冈":{lon:114.87,lat:30.44},"新洲":{lon:114.8,lat:31.84},"红安":{lon:114.61,lat:31.29},"麻城":{lon:115,lat:31.17},"罗川":{lon:115.37,lat:30.79},"浠水":{lon:115.22,lat:30.46},"蕲春":{lon:115.3,lat:30.24},"黄梅":{lon:115.93,lat:30.09},"广济":{lon:115.56,lat:29.85},"英山":{lon:115.57,lat:30.75},"咸宁":{lon:114.28,lat:29.87},"阳新":{lon:115.22,lat:29.83},"通山":{lon:114.52,lat:29.6},"通城":{lon:113.8,lat:29.23},"嘉鱼":{lon:113.91,lat:29.97},"崇阳":{lon:114.04,lat:29.54},"蒲圻":{lon:113.85,lat:29.71},"荆门":{lon:112.19,lat:31.02},"江陵":{lon:112.18,lat:30.35},"钟祥":{lon:112.58,lat:31.17},"京山":{lon:113.11,lat:31.03},"监利":{lon:112.9,lat:29.83},"石首":{lon:112.41,lat:29.73},"长沙":{lon:113,lat:28.21},"望城":{lon:112.8,lat:28.37},"株洲":{lon:113.16,lat:27.83},"湘潭":{lon:112.91,lat:27.87},"邵阳":{lon:111.5,lat:27.22},"岳阳":{lon:113.09,lat:29.37},"临湘":{lon:113.42,lat:29.48},"平江":{lon:113.56,lat:29.71},"泪罗":{lon:113.05,lat:28.8},"湘阴":{lon:112.87,lat:28.68},"华容":{lon:112.55,lat:29.52},"浏阳":{lon:113.63,lat:28.16},"醴陵":{lon:113.5,lat:27.67},"攸县":{lon:113.32,lat:27.01},"茶陵":{lon:113.54,lat:26.79},"酃县":{lon:113.77,lat:26.49},"湘乡":{lon:112.5,lat:27.75},"郴州":{lon:113,lat:25.79},"郴县":{lon:113,lat:25.79},"安仁":{lon:113.27,lat:26.71},"永兴":{lon:113.11,lat:26.13},"资兴":{lon:113.39,lat:25.95},"桂东":{lon:113.91,lat:25.08},"汝城":{lon:113.68,lat:25.54},"宜章":{lon:113.96,lat:25.41},"临武":{lon:112.55,lat:25.27},"嘉禾":{lon:112.35,lat:25.56},"桂阳":{lon:112.72,lat:25.73},"来阳":{lon:112.84,lat:26.41},"衡南":{lon:112.61,lat:26.89},"衡山":{lon:112.86,lat:27.25},"衡东":{lon:112.95,lat:27.1},"常宁":{lon:112.39,lat:26.38},"祁阳":{lon:111.85,lat:26.59},"祁东":{lon:112.14,lat:26.8},"衡阳":{lon:112.61,lat:26.89},"永州":{lon:111.63,lat:26.22},"零陵":{lon:111.63,lat:26.22},"新田":{lon:112.21,lat:25.91},"宁远":{lon:111.95,lat:25.6},"蓝山":{lon:112.16,lat:25.37},"双牌":{lon:111.64,lat:25.96},"江永":{lon:111.33,lat:25.41},"道县":{lon:111.57,lat:25.52},"东安":{lon:111.28,lat:26.41},"江华":{lon:111.79,lat:24.97},"新宁":{lon:110.84,lat:26.44},"武冈":{lon:110.61,lat:26.73},"隆回":{lon:111.04,lat:27.13},"绥宁":{lon:110.14,lat:25.59},"洞口":{lon:110.57,lat:27.06},"城步":{lon:110.3,lat:26.37},"娄底":{lon:111.96,lat:27.71},"涟源":{lon:111.66,lat:27.68},"新邵":{lon:111.46,lat:27.33},"双峰":{lon:112.18,lat:27.44},"冷水江":{lon:111.41,lat:27.68},"邵东":{lon:111.73,lat:27.25},"新化":{lon:111.29,lat:27.73},"怀化":{lon:109.95,lat:27.52},"黔阳":{lon:110.14,lat:27.33},"辰溪":{lon:110.18,lat:28.02},"沅陵":{lon:110.39,lat:28.46},"溆浦":{lon:110.57,lat:27.92},"会同":{lon:109.71,lat:26.86},"靖县":{lon:109.68,lat:26.57},"洪江2":{lon:109.96,lat:27.1},"芷江":{lon:109.78,lat:27.44},"麻阳":{lon:109.79,lat:27.87},"通道":{lon:109.77,lat:26.16},"新晃":{lon:109.16,lat:27.37},"吉首":{lon:109.71,lat:28.3},"永顺":{lon:109.84,lat:29},"桑植":{lon:110.16,lat:29.38},"大庸":{lon:110.48,lat:29.13},"古丈":{lon:109.91,lat:28.62},"泸溪":{lon:110.73,lat:28.29},"凤凰":{lon:109.43,lat:27.92},"花垣":{lon:109.46,lat:28.59},"保靖":{lon:109.64,lat:28.7},"龙山":{lon:109.42,lat:29.64},"常德":{lon:111.69,lat:29.05},"临澧":{lon:111.64,lat:29.44},"澧县":{lon:111.75,lat:29.65},"安乡":{lon:112.16,lat:29.41},"津市":{lon:111.87,lat:29.64},"汉寿":{lon:111.97,lat:28.9},"桃源":{lon:111.47,lat:28.9},"慈利":{lon:111.09,lat:29.41},"石门":{lon:111.35,lat:29.59},"益阳":{lon:112.33,lat:28.6},"南县":{lon:112.39,lat:29.37},"沅江":{lon:112.36,lat:28.83},"宁乡":{lon:112.55,lat:28.27},"安化":{lon:111.2,lat:28.38},"桃江":{lon:112.11,lat:28.51},"兰州":{lon:103.73,lat:36.03},"永登":{lon:103.25,lat:36.73},"榆中":{lon:104.09,lat:35.87},"永昌":{lon:101.94,lat:38.23},"皋兰":{lon:103.97,lat:36.32},"定西":{lon:104.57,lat:35.57},"会宁":{lon:105.08,lat:35.72},"陇西":{lon:104.61,lat:34.98},"临洮":{lon:103.88,lat:35.39},"靖远":{lon:104.71,lat:36.54},"通渭":{lon:105.27,lat:35.24},"渭源":{lon:104.19,lat:35.17},"平凉":{lon:106.68,lat:35.51},"灵台":{lon:107.61,lat:35.1},"华亭":{lon:106.65,lat:35.21},"静宁":{lon:105.73,lat:35.51},"泾川":{lon:107.38,lat:35.31},"崇信":{lon:107.05,lat:35.27},"庄浪":{lon:106.06,lat:35.2},"庆阳":{lon:107.88,lat:36.03},"华池":{lon:108,lat:36.44},"庄宁":{lon:108.43,lat:35.5},"镇源":{lon:107.22,lat:35.7},"环县":{lon:107.33,lat:36.57},"合水":{lon:108.02,lat:35.81},"宁县":{lon:107.94,lat:35.17},"天水":{lon:105.69,lat:34.6},"徽县":{lon:106.11,lat:33.78},"礼县":{lon:105.15,lat:34.22},"武山":{lon:104.88,lat:34.69},"秦安":{lon:105.69,lat:34.89},"清水":{lon:106.12,lat:34.73},"两当":{lon:106.28,lat:33.9},"西和":{lon:105.28,lat:34.02},"甘谷":{lon:105.35,lat:34.7},"漳县":{lon:104.48,lat:34.87},"张家川":{lon:106.23,lat:35},"武都":{lon:104.94,lat:33.43},"宕昌":{lon:104.38,lat:34.06},"康县":{lon:105.58,lat:33.33},"成县":{lon:105.7,lat:33.75},"文县":{lon:104.7,lat:32.95},"临潭":{lon:103.35,lat:34.69},"舟曲":{lon:104.38,lat:33.81},"玛曲":{lon:102.04,lat:33.97},"下河":{lon:102.46,lat:35.21},"卓尼":{lon:103.54,lat:34.61},"迭部":{lon:103.23,lat:34.08},"碌曲":{lon:102.5,lat:34.6},"临夏":{lon:103.22,lat:35.62},"永靖":{lon:103.34,lat:35.97},"和政":{lon:103.31,lat:35.43},"康乐":{lon:103.68,lat:35.39},"广河":{lon:103.54,lat:35.46},"东乡2":{lon:103.39,lat:35.68},"岷县":{lon:104.04,lat:34.41},"积石山":{lon:102.85,lat:35.74},"武威":{lon:102.61,lat:37.94},"民勤":{lon:103.08,lat:38.62},"古浪":{lon:102.86,lat:37.43},"景泰":{lon:104.05,lat:37.14},"天祝":{lon:102.84,lat:37.24},"张掖":{lon:100.46,lat:38.93},"民乐":{lon:100.85,lat:38.43},"临泽":{lon:100.17,lat:39.14},"山丹":{lon:101.19,lat:38.79},"高台":{lon:99.84,lat:39.14},"肃南":{lon:99.57,lat:38.86},"玉门":{lon:97.58,lat:39.81},"酒泉":{lon:98.5,lat:39.71},"敦煌":{lon:94.71,lat:40.13},"金塔":{lon:98.92,lat:39.97},"安西":{lon:95.77,lat:40.51},"阿克塞":{lon:94.25,lat:38.46},"肃北":{lon:94.89,lat:39.49},"福州":{lon:119.3,lat:26.08},"闽侯":{lon:119.14,lat:26.16},"厦门":{lon:118.1,lat:24.46},"同安":{lon:118.15,lat:24.74},"南平":{lon:118.16,lat:26.65},"建瓯":{lon:118.32,lat:27.05},"浦城":{lon:118.55,lat:27.92},"邵武":{lon:117.48,lat:27.34},"顺昌":{lon:117.8,lat:26.8},"崇安":{lon:118.02,lat:27.76},"光泽":{lon:117.34,lat:27.54},"松溪":{lon:118.77,lat:27.53},"政和":{lon:118.85,lat:27.38},"宁德":{lon:119.52,lat:26.65},"福安":{lon:119.65,lat:27.09},"连江":{lon:119.53,lat:26.2},"福鼎":{lon:120.2,lat:27.34},"霞浦":{lon:120,lat:26.89},"吉田":{lon:118.74,lat:26.59},"罗源":{lon:119.55,lat:26.49},"寿宁":{lon:119.5,lat:27.47},"周宁":{lon:119.36,lat:27.12},"屏南":{lon:118.98,lat:26.92},"柘荣":{lon:119.89,lat:27.25},"莆田":{lon:119,lat:25.44},"仙游":{lon:118.7,lat:25.37},"福清":{lon:119.39,lat:25.73},"长乐":{lon:119.52,lat:25.96},"永泰":{lon:118.95,lat:25.88},"平潭":{lon:119.78,lat:25.51},"闽清":{lon:118.86,lat:26.21},"泉州":{lon:118.58,lat:24.93},"晋江":{lon:118.57,lat:24.82},"南安":{lon:118.39,lat:24.96},"惠安":{lon:118.78,lat:25.04},"安溪":{lon:118.18,lat:25.07},"永春":{lon:118.3,lat:25.34},"德化":{lon:118.24,lat:25.5},"金门":{lon:118.34,lat:24.43},"漳州":{lon:117.35,lat:24.52},"龙海":{lon:117.79,lat:24.44},"漳浦":{lon:117.61,lat:24.12},"诏安":{lon:117.16,lat:23.73},"平和":{lon:117.3,lat:24.38},"云霄":{lon:117.34,lat:23.99},"南靖":{lon:117.35,lat:24.51},"长泰":{lon:117.75,lat:24.62},"东山":{lon:117.4,lat:23.72},"华安":{lon:117.53,lat:25},"龙岩":{lon:117.01,lat:25.12},"上杭":{lon:116.41,lat:25.43},"永定":{lon:116.81,lat:24.76},"长汀":{lon:116.37,lat:25.85},"武平":{lon:116.1,lat:25.11},"连城":{lon:116.75,lat:25.72},"漳平":{lon:117.4,lat:25.3},"三明":{lon:117.61,lat:26.23},"龙溪":{lon:118.17,lat:26.18},"宁化":{lon:116.64,lat:26.26},"大田":{lon:117.83,lat:25.69},"永安":{lon:117.37,lat:25.97},"沙县":{lon:117.77,lat:26.41},"将乐":{lon:117.45,lat:26.73},"清流":{lon:116.81,lat:26.12},"建宁":{lon:116.82,lat:26.85},"泰宁":{lon:117.15,lat:26.92},"明溪":{lon:117.18,lat:26.36},"拉萨":{lon:91.11,lat:29.97},"林周":{lon:91.24,lat:30.2},"当雄":{lon:91.05,lat:30.51},"墨竹工卡":{lon:91.77,lat:29.77},"尼木":{lon:90.14,lat:29.44},"米林":{lon:94.13,lat:29.18},"墨脱":{lon:95.26,lat:29.22},"达孜":{lon:91.39,lat:29.63},"曲水":{lon:90.7,lat:29.39},"堆龙德庆":{lon:90.96,lat:29.67},"林芝":{lon:94.25,lat:29.59},"工布江达":{lon:93.25,lat:29.92},"那曲":{lon:92.1,lat:31.47},"巴青":{lon:94.1,lat:31.96},"比如":{lon:93.68,lat:31.53},"班戈":{lon:90.05,lat:31.35},"嘉黎":{lon:93.46,lat:30.63},"聂荣":{lon:92.3,lat:31.08},"索县":{lon:93.71,lat:31.92},"安多":{lon:91.68,lat:32.29},"申扎":{lon:88.7,lat:30.94},"吕都":{lon:97.14,lat:31.18},"贡觉":{lon:98.29,lat:30.86},"左贡":{lon:97.9,lat:29.68},"察隅":{lon:97.49,lat:28.62},"洛隆":{lon:95.76,lat:30.81},"丁青":{lon:95.63,lat:31.42},"波密":{lon:95.75,lat:29.92},"江达":{lon:89.19,lat:31.53},"察雅":{lon:97.56,lat:30.69},"芒康":{lon:98.68,lat:29.64},"八宿":{lon:96.95,lat:30.04},"边坝":{lon:94.69,lat:30.94},"类乌齐":{lon:96.57,lat:31.2},"乃东":{lon:91.76,lat:29.18},"加查":{lon:92.6,lat:29.09},"曲松":{lon:92.11,lat:29.08},"错那":{lon:91.91,lat:27.98},"穷结":{lon:91.65,lat:29.04},"贡嘎":{lon:90.96,lat:29.25},"浪卡子":{lon:90.33,lat:29.96},"桑日":{lon:92,lat:29.26},"朗县":{lon:93.11,lat:29.06},"隆子":{lon:92.42,lat:28.46},"措美":{lon:91.4,lat:28.49},"洛扎":{lon:90.83,lat:28.42},"扎囊":{lon:91.26,lat:29.22},"日喀则":{lon:88.82,lat:29.28},"定结":{lon:87.77,lat:28.38},"拉孜":{lon:87.62,lat:29.1},"聂拉木":{lon:85.94,lat:28.19},"谢通门":{lon:88.25,lat:29.43},"仲巴":{lon:84.15,lat:29.66},"康马":{lon:89.67,lat:28.57},"亚东":{lon:88.93,lat:27.55},"岗巴":{lon:88.5,lat:28.29},"南木林":{lon:89.02,lat:29.71},"萨迦":{lon:88,lat:28.87},"定日":{lon:87.11,lat:28.57},"吉隆":{lon:85.29,lat:28.94},"昂仁":{lon:87.22,lat:29.3},"江孜":{lon:89.63,lat:28.94},"仁布":{lon:89.77,lat:29.21},"白朗":{lon:89.16,lat:29.11},"萨嘎":{lon:85.3,lat:29.38},"噶尔":{lon:80,lat:32.08},"革吉":{lon:81.13,lat:32.45},"扎达":{lon:79.76,lat:31.47},"措勤":{lon:85.16,lat:31.06},"日上":{lon:79.61,lat:33.44},"改则":{lon:84.1,lat:32.33},"普兰":{lon:81.18,lat:30.37},"贵阳":{lon:106.71,lat:26.57},"六盘水":{lon:104.82,lat:26.58},"水城":{lon:104.82,lat:26.58},"盘县":{lon:104.64,lat:25.81},"六枝":{lon:105.47,lat:26.21},"遵义":{lon:106.9,lat:27.7},"绥阳":{lon:107.19,lat:27.95},"道真":{lon:107.6,lat:28.89},"凤冈":{lon:107.72,lat:27.97},"余庆":{lon:107.88,lat:27.22},"赤水":{lon:105.69,lat:28.57},"桐梓":{lon:106.8,lat:28.16},"正安":{lon:107.43,lat:28.56},"务川":{lon:107.87,lat:28.54},"湄潭":{lon:107.5,lat:27.76},"仁怀":{lon:106.41,lat:27.81},"习水":{lon:106.2,lat:28.33},"铜仁":{lon:109.21,lat:27.73},"玉屏":{lon:108.91,lat:27.24},"思南":{lon:108.23,lat:27.94},"德江":{lon:108.13,lat:28.27},"万山":{lon:109.2,lat:27.52},"江口":{lon:108.82,lat:27.68},"师阡":{lon:108.24,lat:27.52},"印江":{lon:108.41,lat:28.02},"沿河":{lon:108.48,lat:28.57},"松桃":{lon:109.18,lat:28.17},"毕节":{lon:105.29,lat:27.32},"黔西":{lon:106.04,lat:27.03},"织金":{lon:105.76,lat:26.66},"赫章":{lon:104.71,lat:27.13},"大方":{lon:105.61,lat:27.16},"金沙":{lon:106.22,lat:27.46},"钠雍":{lon:105.38,lat:26.77},"威宁":{lon:104.28,lat:26.87},"安顺":{lon:105.92,lat:26.25},"息烽":{lon:106.73,lat:27.1},"清镇":{lon:106.46,lat:26.56},"普定":{lon:105.75,lat:26.32},"开阳":{lon:106.95,lat:27.06},"修文":{lon:106.59,lat:26.84},"平坝":{lon:106.26,lat:26.42},"镇宁":{lon:105.75,lat:26.08},"紫云":{lon:106.06,lat:25.75},"关岭":{lon:105.62,lat:25.94},"兴义":{lon:104.91,lat:25.1},"普安":{lon:104.96,lat:25.79},"贞丰":{lon:105.63,lat:25.39},"望谟":{lon:106.09,lat:25.17},"册亭":{lon:105.79,lat:25},"安龙":{lon:105.49,lat:25.11},"兴仁":{lon:105.18,lat:25.44},"晴龙":{lon:105.21,lat:25.83},"凯里":{lon:107.97,lat:26.59},"施秉":{lon:108.11,lat:27.03},"镇远":{lon:108.41,lat:27.06},"天柱":{lon:109.2,lat:26.89},"剑河":{lon:108.58,lat:26.64},"黎平":{lon:109.14,lat:26.24},"从江":{lon:108.9,lat:25.76},"麻江":{lon:107.58,lat:26.49},"黄平":{lon:107.89,lat:26.89},"三穗":{lon:108.68,lat:26.98},"岑巩":{lon:108.72,lat:27.21},"锦屏":{lon:109.18,lat:26.7},"台江":{lon:108.32,lat:26.68},"榕江":{lon:108.5,lat:25.94},"雷山":{lon:108.07,lat:26.38},"丹寨":{lon:107.79,lat:26.21},"都匀":{lon:107.53,lat:26.72},"贵定":{lon:107.22,lat:26.58},"瓮安":{lon:107.48,lat:27.08},"平塘":{lon:107.55,lat:25.83},"长顺":{lon:106.45,lat:26.03},"惠水":{lon:106.66,lat:26.14},"荔波":{lon:107.88,lat:25.42},"福泉":{lon:107.51,lat:26.7},"独山":{lon:107.54,lat:25.84},"罗甸":{lon:106.74,lat:25.43},"龙里":{lon:106.98,lat:26.46},"三都":{lon:107.86,lat:26},"沈阳":{lon:123.38,lat:41.8},"新民":{lon:122.83,lat:42},"辽中":{lon:122.7,lat:41.52},"大连":{lon:121.62,lat:38.92},"金县":{lon:121.7,lat:39.13},"复县":{lon:121.97,lat:39.63},"新金":{lon:121.95,lat:39.55},"庄河":{lon:22.97,lat:39.7},"长海":{lon:122.58,lat:39.28},"鞍山":{lon:122.85,lat:41.12},"海城":{lon:122.75,lat:40.85},"台安":{lon:122.4,lat:41.4},"抚顺":{lon:123.97,lat:41.97},"新宾":{lon:125.02,lat:41.72},"清原":{lon:124.9,lat:42.13},"本溪":{lon:123.73,lat:41.3},"垣仁":{lon:125.33,lat:41.28},"锦州":{lon:121.15,lat:41.13},"锦县":{lon:121.35,lat:41.17},"义县":{lon:121.22,lat:41.55},"黑山":{lon:122.12,lat:41.7},"北镇":{lon:121.8,lat:41.6},"锦西":{lon:120.83,lat:40.77},"兴城":{lon:120.68,lat:40.63},"绥中":{lon:120.32,lat:40.35},"丹东":{lon:124.37,lat:40.13},"东沟":{lon:124.13,lat:39.97},"岫岩":{lon:123.25,lat:40.3},"凤城":{lon:124.05,lat:40.47},"宽甸":{lon:124.77,lat:40.75},"阜新":{lon:121.65,lat:42},"彰武":{lon:122.52,lat:42.42},"营口":{lon:122.18,lat:40.65},"盖县":{lon:122.37,lat:40.42},"盘山":{lon:122.03,lat:41.02},"大洼":{lon:122.06,lat:41},"辽阳":{lon:123.17,lat:41.28},"灯塔":{lon:123.34,lat:41.43},"铁岭":{lon:123.85,lat:42.32},"开原":{lon:124.03,lat:42.53},"昌图":{lon:124.13,lat:42.8},"铁法":{lon:123.5,lat:42.48},"康平":{lon:123.33,lat:42.75},"法库":{lon:123.37,lat:42.52},"西丰":{lon:124.7,lat:42.77},"朝阳":{lon:120.42,lat:41.58},"建昌":{lon:119.78,lat:40.82},"北票":{lon:120.75,lat:41.82},"凌源":{lon:119.37,lat:41.27},"建平":{lon:119.63,lat:41.38},"重庆":{lon:106.54,lat:29.59},"綦江":{lon:106.56,lat:29.41},"长寿":{lon:106.64,lat:29.01},"南桐":{lon:107.04,lat:29.86},"合川":{lon:106.28,lat:29.26},"潼南":{lon:106.22,lat:30.03},"铜梁":{lon:105.8,lat:30.16},"壁山":{lon:106.03,lat:29.86},"荣昌":{lon:106.21,lat:29.62},"大足":{lon:105.59,lat:29.4},"永川":{lon:105.71,lat:29.75},"万盛":{lon:105.91,lat:29.38},"西安":{lon:108.95,lat:34.27},"长安":{lon:108.97,lat:34.18},"铜川":{lon:109.11,lat:35.09},"耀县":{lon:108.98,lat:34.91},"宝鸡":{lon:107.15,lat:34.38},"凤翔":{lon:107.39,lat:34.53},"千阳":{lon:107.13,lat:34.65},"陇县":{lon:106.86,lat:34.91},"麟游":{lon:107.8,lat:34.69},"岐山":{lon:107.63,lat:34.46},"浮风":{lon:107.87,lat:34.38},"武功":{lon:108.22,lat:34.28},"眉县":{lon:107.76,lat:34.29},"太白":{lon:107.3,lat:34.09},"凤县":{lon:106.51,lat:33.93},"榆林":{lon:109.77,lat:38.3},"神木":{lon:110.51,lat:38.83},"府谷":{lon:111.07,lat:39.05},"佳县":{lon:110.48,lat:38.04},"米脂":{lon:110.23,lat:37.78},"吴堡":{lon:110.73,lat:37.49},"绥德":{lon:110.24,lat:37.49},"清涧":{lon:110.15,lat:37.11},"子洲":{lon:110.05,lat:37.45},"横山":{lon:109.32,lat:37.97},"靖边":{lon:108.79,lat:37.61},"定边":{lon:107.59,lat:37.6},"延安":{lon:109.47,lat:36.6},"安寨":{lon:109.34,lat:36.88},"子长":{lon:109.65,lat:37.16},"延川":{lon:110.18,lat:36.87},"延长":{lon:110.02,lat:36.59},"宜川":{lon:110.15,lat:36.04},"黄龙":{lon:109.86,lat:35.6},"洛川":{lon:109.42,lat:35.76},"宜君":{lon:109.11,lat:35.43},"黄陵":{lon:109.27,lat:35.6},"富县":{lon:109.37,lat:36},"甘泉":{lon:109.37,lat:36.29},"志丹":{lon:108.78,lat:36.84},"吴旗":{lon:108.22,lat:36.93},"咸阳":{lon:108.72,lat:34.36},"礼泉":{lon:108.43,lat:34.5},"永寿":{lon:108.14,lat:34.71},"彬县":{lon:108.09,lat:35.04},"长武":{lon:107.8,lat:35.22},"旬邑":{lon:108.33,lat:35.13},"淳化":{lon:108.57,lat:34.81},"泾阳":{lon:108.84,lat:34.53},"三原":{lon:108.94,lat:34.62},"高陵":{lon:109.1,lat:34.55},"户县":{lon:108.61,lat:34.12},"周至":{lon:108.22,lat:34.18},"兴平":{lon:108.49,lat:34.32},"乾县":{lon:108.25,lat:34.54},"渭南":{lon:109.5,lat:34.52},"蒲城":{lon:109.59,lat:34.97},"白水":{lon:109.6,lat:35.18},"成城":{lon:109.93,lat:35.2},"韩城":{lon:110.45,lat:35.47},"合阳":{lon:110.15,lat:35.24},"人荔":{lon:109.96,lat:34.82},"潼关":{lon:110.25,lat:34.56},"华阴":{lon:110.09,lat:34.58},"华县":{lon:109.77,lat:34.53},"蓝田":{lon:109.32,lat:34.17},"临潼":{lon:109.22,lat:34.38},"富平":{lon:109.17,lat:34.76},"商县":{lon:109.96,lat:33.88},"洛南":{lon:110.15,lat:34.11},"丹凤":{lon:110.35,lat:33.71},"商南":{lon:110.88,lat:33.54},"山阳":{lon:109.91,lat:33.55},"镇安":{lon:109.16,lat:33.45},"柞水":{lon:109.14,lat:33.69},"安康":{lon:109.02,lat:32.7},"旬阳":{lon:109.35,lat:32.83},"白河":{lon:110.06,lat:32.83},"平利":{lon:109.37,lat:32.41},"镇坪":{lon:109.51,lat:31.91},"岚皋":{lon:108.89,lat:32.3},"紫阳":{lon:108.55,lat:32.56},"汉阴":{lon:108.53,lat:32.9},"石泉":{lon:108.26,lat:33.05},"宁陕":{lon:108.33,lat:33.34},"汉中":{lon:108.04,lat:33.07},"留坝":{lon:106.95,lat:33.65},"城固":{lon:107.32,lat:33.16},"洋县":{lon:107.56,lat:33.23},"佛坪":{lon:108,lat:33.55},"西乡":{lon:107.77,lat:33},"镇巴":{lon:107.91,lat:32.56},"南郑":{lon:106.93,lat:33},"宁强":{lon:106.25,lat:32.82},"勉县":{lon:106.68,lat:33.16},"略阳":{lon:106.16,lat:33.34},"西宁":{lon:101.74,lat:36.56},"大通":{lon:101.67,lat:36.92},"平安":{lon:102.09,lat:36.47},"湟中":{lon:101.57,lat:36.49},"乐都":{lon:102.38,lat:36.49},"民和":{lon:102.8,lat:36.3},"湟源":{lon:101.28,lat:36.72},"互助":{lon:101.95,lat:36.84},"化隆":{lon:102.3,lat:36.11},"循化":{lon:102.46,lat:35.84},"门源":{lon:101.62,lat:37.37},"海晏":{lon:100.99,lat:36.89},"刚察":{lon:100.17,lat:37.32},"祁连":{lon:100.22,lat:38.2},"同仁":{lon:102,lat:35.54},"尖扎":{lon:102,lat:35.92},"泽库":{lon:101.5,lat:35.03},"河南":{lon:101.62,lat:34.75},"共和":{lon:100.61,lat:36.27},"贵德":{lon:101.47,lat:36.02},"贵南":{lon:100.75,lat:35.57},"同德":{lon:100.63,lat:35.24},"兴海":{lon:99.99,lat:35.6},"玛沁":{lon:100.26,lat:34.49},"甘德":{lon:99.89,lat:33.95},"久治":{lon:101.47,lat:33.46},"班玛":{lon:100.73,lat:32.92},"达日":{lon:99.68,lat:33.74},"玛多":{lon:98.26,lat:34.92},"玉树":{lon:96.97,lat:33.03},"称多":{lon:97.12,lat:33.35},"囊谦":{lon:96.47,lat:32.23},"杂多":{lon:95.3,lat:32.92},"治多":{lon:95.6,lat:33.86},"曲麻菜":{lon:95.5,lat:34.52},"格尔木":{lon:94.9,lat:36.41},"乌兰":{lon:98.46,lat:36.9},"都兰":{lon:98.13,lat:36.3},"天峻":{lon:99.03,lat:37.28},"哈尔滨":{lon:126.63,lat:45.75},"齐齐哈尔":{lon:123.97,lat:47.33},"鹤岗":{lon:130.3,lat:47.33},"双鸭山":{lon:131.17,lat:46.65},"鸡四":{lon:130.97,lat:45.3},"大庆":{lon:125.03,lat:46.58},"伊春":{lon:128.92,lat:47.73},"嘉荫":{lon:130,lat:48.93},"铁力":{lon:128.08,lat:47.98},"绥化":{lon:127,lat:46.63},"绥棱":{lon:127.12,lat:47.22},"海伦":{lon:126.97,lat:47.47},"庆安":{lon:127.5,lat:46.87},"兰西":{lon:126.3,lat:46.28},"肇东":{lon:125.98,lat:46.07},"肇州":{lon:125.25,lat:45.72},"肇源":{lon:125.07,lat:45.53},"安达":{lon:125.33,lat:46.42},"明水":{lon:125.88,lat:47.18},"青岗":{lon:126.13,lat:46.68},"望奎":{lon:126.5,lat:46.83},"黑河":{lon:127.53,lat:50.22},"爱辉":{lon:127.53,lat:50.22},"德都":{lon:126.17,lat:48.5},"通北":{lon:126.8,lat:49.76},"北安":{lon:126.5,lat:48.22},"孙吴":{lon:127.5,lat:49.22},"逊克":{lon:128.42,lat:49.57},"嫩江":{lon:125.2,lat:49.17},"佳木斯":{lon:130.35,lat:46.83},"桦川":{lon:130.68,lat:47.02},"萝北":{lon:130.83,lat:47.58},"绥滨":{lon:131.83,lat:47.3},"富锦":{lon:132.02,lat:47.23},"同江":{lon:132.5,lat:47.67},"抚远":{lon:134.15,lat:48.33},"饶河":{lon:134,lat:46.78},"七台河":{lon:130.83,lat:45.82},"宝清":{lon:132.17,lat:46.33},"集贤":{lon:131.13,lat:46.7},"勃利":{lon:130.53,lat:45.75},"桦南":{lon:130.53,lat:46.25},"依兰":{lon:129.55,lat:46.33},"汤源":{lon:129.92,lat:46.73},"牡丹江":{lon:129.58,lat:44.6},"林口":{lon:130.23,lat:45.3},"鸡东":{lon:131.04,lat:45.27},"密山":{lon:131.85,lat:45.53},"虎林":{lon:133.97,lat:45.75},"绥芬河":{lon:131.17,lat:44.38},"东宁":{lon:131.12,lat:44.07},"穆棱":{lon:130.5,lat:44.9},"宁安":{lon:129.47,lat:44.35},"海林":{lon:129.35,lat:44.57},"阿城":{lon:126.95,lat:45.52},"呼兰":{lon:126.58,lat:46},"巴彦":{lon:127.38,lat:46.08},"宾县":{lon:127.48,lat:45.75},"木兰":{lon:128.03,lat:45.95},"通河":{lon:128.7,lat:45.98},"方正":{lon:128.8,lat:45.83},"延寿":{lon:128.35,lat:45.47},"尚志":{lon:127.95,lat:45.22},"五常":{lon:127.17,lat:44.93},"双城":{lon:126.32,lat:45.53},"富裕":{lon:124.4,lat:47.8},"讷河":{lon:124.85,lat:48.48},"克山":{lon:125.87,lat:48.03},"克东":{lon:126.22,lat:48.03},"拜泉":{lon:126.07,lat:47.62},"依安":{lon:125.3,lat:47.92},"林甸":{lon:124.87,lat:47.18},"泰来":{lon:123.45,lat:46.4},"龙江":{lon:123.18,lat:47.35},"甘南":{lon:123.48,lat:47.9},"杜尔伯特":{lon:124.44,lat:46.86},"加格达奇":{lon:124.07,lat:50.42},"呼玛":{lon:126.6,lat:51.72},"塔河":{lon:124.7,lat:52.32},"漠河":{lon:122.37,lat:53.48}}},"./app/assets/json/widgetlib/index.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/globalConstants.ts"),r=[{id:1,name:"pivot",title:"透视表",icon:"icon-table",coordinate:"cartesian",requireDimetions:0,requireMetrics:0,data:{color:{title:"颜色",type:"category"}},style:{pivot:{fontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:o.PIVOT_DEFAULT_FONT_COLOR,lineStyle:"solid",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,headerBackgroundColor:o.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR}}},{id:2,name:"line",title:"折线图",icon:"icon-chart-line",coordinate:"cartesian",requireDimetions:1,requireMetrics:1,dimetionAxis:"col",data:{color:{title:"颜色",type:"category"},label:{title:"标签",type:"all"},tip:{title:"提示信息",type:"value"}},style:{spec:{smooth:!1,step:!1},xAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR},yAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR,showTitleAndUnit:!0,titleFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,titleFontSize:"12",titleColor:o.PIVOT_DEFAULT_FONT_COLOR},splitLine:{showHorizontalLine:!0,horizontalLineStyle:"dashed",horizontalLineSize:"1",horizontalLineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showVerticalLine:!1,verticalLineStyle:"dashed",verticalLineSize:"1",verticalLineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR},pivot:{fontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:o.PIVOT_DEFAULT_FONT_COLOR,lineStyle:"solid",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,headerBackgroundColor:o.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR}}},{id:3,name:"bar",title:"柱状图",icon:"icon-chart-bar",coordinate:"cartesian",requireDimetions:0,requireMetrics:1,dimetionAxis:"col",data:{color:{title:"颜色",type:"category"},label:{title:"标签",type:"all"},tip:{title:"提示信息",type:"value"}},style:{xAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR},yAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR,showTitleAndUnit:!0,titleFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,titleFontSize:"12",titleColor:o.PIVOT_DEFAULT_FONT_COLOR},splitLine:{showHorizontalLine:!0,horizontalLineStyle:"dashed",horizontalLineSize:"1",horizontalLineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showVerticalLine:!1,verticalLineStyle:"dashed",verticalLineSize:"1",verticalLineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR},pivot:{fontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:o.PIVOT_DEFAULT_FONT_COLOR,lineStyle:"solid",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,headerBackgroundColor:o.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR}}},{id:4,name:"scatter",title:"散点图",icon:"icon-scatter-chart",coordinate:"cartesian",requireDimetions:0,requireMetrics:1,data:{xAxis:{title:"x数据轴",type:"value"},color:{title:"颜色",type:"category"},size:{title:"尺寸",type:"value"},label:{title:"标签",type:"all"},tip:{title:"提示信息",type:"value"}},style:{xAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR},yAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR,showTitleAndUnit:!0,titleFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,titleFontSize:"12",titleColor:o.PIVOT_DEFAULT_FONT_COLOR},splitLine:{showHorizontalLine:!0,horizontalLineStyle:"dashed",horizontalLineSize:"1",horizontalLineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showVerticalLine:!1,verticalLineStyle:"dashed",verticalLineSize:"1",verticalLineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR},pivot:{fontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:o.PIVOT_DEFAULT_FONT_COLOR,lineStyle:"solid",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,headerBackgroundColor:o.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR}}},{id:5,name:"pie",title:"饼图",icon:"icon-chartpie",coordinate:"polar",requireDimetions:0,requireMetrics:1,data:{color:{title:"颜色",type:"category"},label:{title:"标签",type:"all"},tip:{title:"提示信息",type:"value"}},style:{spec:{circle:!1},xAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR},splitLine:{showHorizontalLine:!0,horizontalLineStyle:"dashed",horizontalLineSize:"1",horizontalLineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showVerticalLine:!1,verticalLineStyle:"dashed",verticalLineSize:"1",verticalLineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR},pivot:{fontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:o.PIVOT_DEFAULT_FONT_COLOR,lineStyle:"solid",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,headerBackgroundColor:o.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR}}}];t.default=r},"./app/assets/less/style.less":function(e,t,n){var o=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/assets/less/style.less");"string"==typeof o&&(o=[[e.i,o,""]]);var r={};r.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(o,r);o.locals&&(e.exports=o.locals)},"./app/assets/less/util.less":function(e,t,n){var o=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/assets/less/util.less");"string"==typeof o&&(o=[[e.i,o,""]]);var r={};r.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(o,r);o.locals&&(e.exports=o.locals)},"./app/assets/override/antd.css":function(e,t,n){var o=n("./node_modules/css-loader/index.js!./node_modules/postcss-loader/index.js!./app/assets/override/antd.css");"string"==typeof o&&(o=[[e.i,o,""]]);var r={};r.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(o,r);o.locals&&(e.exports=o.locals)},"./app/assets/override/datepicker.css":function(e,t,n){var o=n("./node_modules/css-loader/index.js!./node_modules/postcss-loader/index.js!./app/assets/override/datepicker.css");"string"==typeof o&&(o=[[e.i,o,""]]);var r={};r.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(o,r);o.locals&&(e.exports=o.locals)},"./app/assets/override/react-grid.css":function(e,t,n){var o=n("./node_modules/css-loader/index.js!./node_modules/postcss-loader/index.js!./app/assets/override/react-grid.css");"string"==typeof o&&(o=[[e.i,o,""]]);var r={};r.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(o,r);o.locals&&(e.exports=o.locals)},"./app/components/Container/Body.tsx":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{};return j({touchAction:"none"},e)}function y(e,t){e.classList?e.classList.add(t):e.className.match(new RegExp("(?:^|\\s)"+t+"(?!\\S)"))||(e.className+=" "+t)}function x(e,t){e.classList?e.classList.remove(t):e.className=e.className.replace(new RegExp("(?:^|\\s)"+t+"(?!\\S)","g"),"")}Object.defineProperty(t,"__esModule",{value:!0});var j=Object.assign||function(e){for(var t=1;t1?t-1:0),o=1;o2?n-2:0),r=2;r: Unmounted during event!");return t}Object.defineProperty(t,"__esModule",{value:!0}),t.getBoundPosition=o,t.snapToGrid=r,t.canDragX=a,t.canDragY=i,t.getControlPosition=s,t.createCoreData=l,t.createDraggableData=d;var p=n(0),f=n(4),h=function(e){return e&&e.__esModule?e:{default:e}}(f),m=n(5)},function(e,t,n){"use strict";(function(e){function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":i(t))&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":i(t)));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var l=function(){function e(e,t){var n=[],o=!0,r=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(o=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);o=!0);}catch(e){r=!0,a=e}finally{try{!o&&s.return&&s.return()}finally{if(r)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),d=function(){function e(e,t){for(var n=0;n not mounted on DragStart!");var n=t.ownerDocument;if(!(o.props.disabled||!(e.target instanceof n.defaultView.Node)||o.props.handle&&!(0,g.matchesSelectorAndParentsTo)(e.target,o.props.handle,t)||o.props.cancel&&(0,g.matchesSelectorAndParentsTo)(e.target,o.props.cancel,t))){var r=(0,g.getTouchIdentifier)(e);o.setState({touchIdentifier:r});var a=(0,b.getControlPosition)(e,r,o);if(null!=a){var i=a.x,s=a.y,l=(0,b.createCoreData)(o,i,s);(0,y.default)("DraggableCore: handleDragStart: %j",l),(0,y.default)("calling",o.props.onStart);!1!==o.props.onStart(e,l)&&(o.props.enableUserSelectHack&&(0,g.addUserSelectStyles)(n),o.setState({dragging:!0,lastX:i,lastY:s}),(0,g.addEvent)(n,j.move,o.handleDrag),(0,g.addEvent)(n,j.stop,o.handleDragStop))}}},o.handleDrag=function(e){"touchmove"===e.type&&e.preventDefault();var t=(0,b.getControlPosition)(e,o.state.touchIdentifier,o);if(null!=t){var n=t.x,r=t.y;if(Array.isArray(o.props.grid)){var a=n-o.state.lastX,i=r-o.state.lastY,s=(0,b.snapToGrid)(o.props.grid,a,i),d=l(s,2);if(a=d[0],i=d[1],!a&&!i)return;n=o.state.lastX+a,r=o.state.lastY+i}var u=(0,b.createCoreData)(o,n,r);(0,y.default)("DraggableCore: handleDrag: %j",u);if(!1!==o.props.onDrag(e,u))o.setState({lastX:n,lastY:r});else try{o.handleDragStop(new MouseEvent("mouseup"))}catch(e){var c=document.createEvent("MouseEvents");c.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),o.handleDragStop(c)}}},o.handleDragStop=function(e){if(o.state.dragging){var t=(0,b.getControlPosition)(e,o.state.touchIdentifier,o);if(null!=t){var n=t.x,r=t.y,a=(0,b.createCoreData)(o,n,r),i=m.default.findDOMNode(o);i&&o.props.enableUserSelectHack&&(0,g.removeUserSelectStyles)(i.ownerDocument),(0,y.default)("DraggableCore: handleDragStop: %j",a),o.setState({dragging:!1,lastX:NaN,lastY:NaN}),o.props.onStop(e,a),i&&((0,y.default)("DraggableCore: Removing handlers"),(0,g.removeEvent)(i.ownerDocument,j.move,o.handleDrag),(0,g.removeEvent)(i.ownerDocument,j.stop,o.handleDragStop))}}},o.onMouseDown=function(e){return j=x.mouse,o.handleDragStart(e)},o.onMouseUp=function(e){return j=x.mouse,o.handleDragStop(e)},o.onTouchStart=function(e){return j=x.touch,o.handleDragStart(e)},o.onTouchEnd=function(e){return j=x.touch,o.handleDragStop(e)},i=n,a(o,i)}return s(t,e),d(t,[{key:"componentWillUnmount",value:function(){var e=m.default.findDOMNode(this);if(e){var t=e.ownerDocument;(0,g.removeEvent)(t,x.mouse.move,this.handleDrag),(0,g.removeEvent)(t,x.touch.move,this.handleDrag),(0,g.removeEvent)(t,x.mouse.stop,this.handleDragStop),(0,g.removeEvent)(t,x.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&(0,g.removeUserSelectStyles)(t)}}},{key:"render",value:function(){return c.default.cloneElement(c.default.Children.only(this.props.children),{style:(0,g.styleHacks)(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}]),t}(c.default.Component);w.displayName="DraggableCore",w.propTypes={allowAnyClick:f.default.bool,disabled:f.default.bool,enableUserSelectHack:f.default.bool,offsetParent:function(t,n){if(e.browser&&t[n]&&1!==t[n].nodeType)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:f.default.arrayOf(f.default.number),handle:f.default.string,cancel:f.default.string,onStart:f.default.func,onDrag:f.default.func,onStop:f.default.func,onMouseDown:f.default.func,className:_.dontSetMe,style:_.dontSetMe,transform:_.dontSetMe},w.defaultProps={allowAnyClick:!1,cancel:null,disabled:!1,enableUserSelectHack:!0,offsetParent:null,handle:null,grid:null,transform:null,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){}},t.default=w}).call(t,n(19))},function(e,t,n){"use strict";function o(){}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o},function(e,t,n){"use strict";var o=n(13).default;e.exports=o,e.exports.default=o,e.exports.DraggableCore=n(10).default},function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":i(t))&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":i(t)));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var d=Object.assign||function(e){for(var t=1;t, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}},{key:"componentDidMount",value:function(){void 0!==window.SVGElement&&b.default.findDOMNode(this)instanceof window.SVGElement&&this.setState({isElementSVG:!0})}},{key:"componentWillReceiveProps",value:function(e){!e.position||this.props.position&&e.position.x===this.props.position.x&&e.position.y===this.props.position.y||this.setState({x:e.position.x,y:e.position.y})}},{key:"componentWillUnmount",value:function(){this.setState({dragging:!1})}},{key:"render",value:function(){var e,t={},n=null,o=Boolean(this.props.position),a=!o||this.state.dragging,i=this.props.position||this.props.defaultPosition,s={x:(0,x.canDragX)(this)&&a?this.state.x:i.x,y:(0,x.canDragY)(this)&&a?this.state.y:i.y};this.state.isElementSVG?n=(0,y.createSVGTransform)(s):t=(0,y.createCSSTransform)(s);var l=this.props,u=l.defaultClassName,c=l.defaultClassNameDragging,p=l.defaultClassNameDragged,h=(0,v.default)(this.props.children.props.className||"",u,(e={},r(e,c,this.state.dragging),r(e,p,this.state.dragged),e));return f.default.createElement(k.default,d({},this.props,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),f.default.cloneElement(f.default.Children.only(this.props.children),{className:h,style:d({},this.props.children.props.style,t),transform:n}))}}]),t}(f.default.Component);T.displayName="Draggable",T.propTypes=d({},k.default.propTypes,{axis:m.default.oneOf(["both","x","y","none"]),bounds:m.default.oneOfType([m.default.shape({left:m.default.number,right:m.default.number,top:m.default.number,bottom:m.default.number}),m.default.string,m.default.oneOf([!1])]),defaultClassName:m.default.string,defaultClassNameDragging:m.default.string,defaultClassNameDragged:m.default.string,defaultPosition:m.default.shape({x:m.default.number,y:m.default.number}),position:m.default.shape({x:m.default.number,y:m.default.number}),scale:m.default.number,className:j.dontSetMe,style:j.dontSetMe,transform:j.dontSetMe}),T.defaultProps=d({},k.default.defaultProps,{axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},position:null,scale:1}),t.default=T},function(e,t,n){"use strict";var o=n(1),r=n(2),a=n(8),s=n(3),l=n(15);e.exports=function(e,t){function n(e){var t=e&&(M&&e[M]||e[S]);if("function"==typeof t)return t}function d(e,t){return e===t?0!==e||1/e==1/t:e!==e&&t!==t}function u(e){this.message=e,this.stack=""}function c(e){function n(n,l,d,c,p,f,h){if(c=c||T,f=f||d,h!==s)if(t)r(!1,"Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");else if("production"!==Object({DRAGGABLE_DEBUG:void 0}).NODE_ENV&&"undefined"!=typeof console){var m=c+":"+d;!o[m]&&i<3&&(a(!1,"You are manually calling a React.PropTypes validation function for the `%s` prop on `%s`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details.",f,c),o[m]=!0,i++)}return null==l[d]?n?new u(null===l[d]?"The "+p+" `"+f+"` is marked as required in `"+c+"`, but its value is `null`.":"The "+p+" `"+f+"` is marked as required in `"+c+"`, but its value is `undefined`."):null:e(l,d,c,p,f)}if("production"!==Object({DRAGGABLE_DEBUG:void 0}).NODE_ENV)var o={},i=0;var l=n.bind(null,!1);return l.isRequired=n.bind(null,!0),l}function p(e){function t(t,n,o,r,a,i){var s=t[n];if(x(s)!==e)return new u("Invalid "+r+" `"+a+"` of type `"+j(s)+"` supplied to `"+o+"`, expected `"+e+"`.");return null}return c(t)}function f(e){function t(t,n,o,r,a){if("function"!=typeof e)return new u("Property `"+a+"` of component `"+o+"` has invalid PropType notation inside arrayOf.");var i=t[n];if(!Array.isArray(i)){return new u("Invalid "+r+" `"+a+"` of type `"+x(i)+"` supplied to `"+o+"`, expected an array.")}for(var l=0;l0&&void 0!==arguments[0]?arguments[0]:"transform";if("undefined"==typeof window||void 0===window.document)return"";var t=window.document.documentElement.style;if(e in t)return"";for(var n=0;n1)for(var n=1;n0&&s.push({name:a,value:r.map(function(t){return e.getValidValue(t,i)}).join(",")});break;case c.FilterTypes.CascadeSelect:break;case c.FilterTypes.InputDate:r&&s.push({name:a,value:"'"+u.default(r).format("YYYY-MM-DD")+"'"});break;case c.FilterTypes.MultiDate:r&&s.push({name:a,value:r.split(",").map(function(e){return"'"+e+"'"}).join(",")});break;case c.FilterTypes.DateRange:if(r.length){var l;(l=s).push.apply(l,o(r.map(function(e){return{name:a,value:"'"+u.default(e).format("YYYY-MM-DD")+"'"}})))}break;case c.FilterTypes.Datetime:r&&s.push({name:a,value:"'"+u.default(r).format("YYYY-MM-DD HH:mm:ss")+"'"});break;case c.FilterTypes.DatetimeRange:if(r.length){var d;(d=s).push.apply(d,o(r.map(function(e){return{name:a,value:"'"+u.default(e).format("YYYY-MM-DD HH:mm:ss")+"'"}})))}break;default:var p=r.target.value.trim();p&&s.push({name:a,value:e.getValidValue(p,i)})}return s},e.getModelValue=function(t,n,o){var r=n.key,a=n.sqlType,i=[];switch(t){case c.FilterTypes.InputText:case c.FilterTypes.InputNumber:case c.FilterTypes.Select:void 0!==o&&i.push(r+" = "+e.getValidValue(o,a));break;case c.FilterTypes.NumberRange:""===o[0]||isNaN(o[0])||i.push(r+" >= "+e.getValidValue(o[0],a)),""===o[1]||isNaN(o[1])||i.push(r+" <= "+e.getValidValue(o[1],a));break;case c.FilterTypes.MultiSelect:o.length&&o.length>0&&i.push(r+" in ("+o.map(function(t){return e.getValidValue(t,a)}).join(",")+")");break;case c.FilterTypes.CascadeSelect:break;case c.FilterTypes.InputDate:o&&i.push(r+" = "+e.getValidValue(u.default(o).format("YYYY-MM-DD"),a));break;case c.FilterTypes.MultiDate:o&&i.push(r+" in ("+o.split(",").map(function(t){return e.getValidValue(t,a)}).join(",")+")");break;case c.FilterTypes.DateRange:o.length&&(i.push(r+" >= "+e.getValidValue(u.default(o[0]).format("YYYY-MM-DD"),a)),i.push(r+" <= "+e.getValidValue(u.default(o[1]).format("YYYY-MM-DD"),a)));break;case c.FilterTypes.Datetime:o&&i.push(r+" = "+e.getValidValue(u.default(o).format("YYYY-MM-DD HH:mm:ss"),a));break;case c.FilterTypes.DatetimeRange:o.length&&(i.push(r+" >= "+e.getValidValue(u.default(o[0]).format("YYYY-MM-DD HH:mm:ss"),a)),i.push(r+" <= "+e.getValidValue(u.default(o[1]).format("YYYY-MM-DD HH:mm:ss"),a)));break;default:var s=o.target.value.trim();s&&i.push(r+" = "+e.getValidValue(s,a))}return i},e.getValidValue=function(e,t){return p.SQL_NUMBER_TYPES.indexOf(t)>=0?e:"'"+e+"'"},e}return i(t,e),l(t,[{key:"render",value:function(){var e=this,t=this.props,n=t.filters,o=t.onGetOptions,r=t.filterOptions,a=t.form;return d.createElement(g,{className:b.filterPanel},d.createElement(h,{gutter:8},n.map(function(t){return d.createElement(m,{xl:3,lg:4,md:6,sm:12,key:t.key},d.createElement(f.default,{filter:t,onGetOptions:o,currentOptions:r[t.key]||{},formToAppend:a,onChange:e.change}))})))}}]),t}(d.Component);t.FilterPanel=_,t.default=g.create()(_)},"./app/components/Filters/filter.less":function(e,t,n){var o=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/components/Filters/filter.less");"string"==typeof o&&(o=[[e.i,o,""]]);var r={};r.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(o,r);o.locals&&(e.exports=o.locals)},"./app/components/Filters/filterTypes.ts":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var r,a,i;Object.defineProperty(t,"__esModule",{value:!0});var s,l=n("./app/components/Filters/operatorTypes.ts");!function(e){e.InputText="inputText",e.InputNumber="inputNumber",e.NumberRange="NumberRange",e.Select="select",e.MultiSelect="multiSelect",e.CascadeSelect="cascadeSelect",e.InputDate="inputDate",e.MultiDate="multiDate",e.DateRange="dateRange",e.Datetime="datetime",e.DatetimeRange="datetimeRange"}(s=t.FilterTypes||(t.FilterTypes={})),t.FilterTypeList=[s.InputText,s.InputNumber,s.NumberRange,s.Select,s.MultiSelect,s.InputDate,s.MultiDate,s.DateRange,s.Datetime,s.DatetimeRange],t.FilterTypesLocale=(r={},o(r,s.InputText,"文本输入框"),o(r,s.InputNumber,"数字输入框"),o(r,s.NumberRange,"数字范围输入框"),o(r,s.Select,"单选下拉菜单"),o(r,s.MultiSelect,"多选下拉菜单"),o(r,s.InputDate,"日期选择"),o(r,s.MultiDate,"日期多选"),o(r,s.DateRange,"日期范围选择"),o(r,s.Datetime,"日期时间选择"),o(r,s.DatetimeRange,"日期时间范围选择"),r),t.FilterTypesViewSetting=(a={},o(a,s.InputText,!1),o(a,s.InputNumber,!1),o(a,s.NumberRange,!1),o(a,s.Select,!0),o(a,s.MultiSelect,!0),o(a,s.InputDate,!1),o(a,s.MultiDate,!1),o(a,s.DateRange,!1),o(a,s.Datetime,!1),o(a,s.DatetimeRange,!1),a),t.FilterTypesOperatorSetting=(i={},o(i,s.InputText,[l.default.Equal,l.default.NotEqual]),o(i,s.InputNumber,[l.default.LessThan,l.default.LessThanOrEqual,l.default.GreaterThan,l.default.GreaterThanOrEqual]),i),t.default=s},"./app/components/Filters/operatorTypes.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o;!function(e){e.Equal="=",e.NotEqual="!=",e.Contain="like",e.In="in",e.LessThan="<",e.GreaterThan=">",e.LessThanOrEqual="<=",e.GreaterThanOrEqual=">="}(o=t.OperatorTypes||(t.OperatorTypes={})),t.default=o},"./app/components/Linkages/index.ts":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n={};return t.length<=0?n:(t.forEach(function(t){var o=t.trigger,r=t.linkager,a=t.relation,i=+o[0],d=r[0];if(e===i){var u=o[1].split(l.DEFAULT_SPLITER),c=s(u,3),p=c[0],f=c[1],h=c[2],m=r[1].split(l.DEFAULT_SPLITER),g=s(m,3),b=g[0],_=g[1],v=g[2];n[d]||(n[d]=[]),n[d].push({triggerKey:p,triggerSqlType:f,triggerType:h,linkagerKey:b,linkagerSqlType:_,linkagerType:v,relation:a})}}),n)}function a(e,t,n,r){return Object.keys(n).forEach(function(a){var i=n[+a],s=[],d=[];i.forEach(function(e){var n=e.triggerKey,o=e.triggerSqlType,r=(e.triggerType,e.linkagerKey),a=(e.linkagerSqlType,e.linkagerType),i=e.relation,u=l.SQL_NUMBER_TYPES.indexOf(o)>=0?t[0][n]:""+t[0][n];"parameter"===a?s.push(r+" "+i+" "+u):"variable"===a&&d.push({name:r,value:u})});var u=r[a];if(u){var c=u.filters,p=u.params;u.filters=s.length>0?Object.assign({},c,o({},e,s)):c,u.params=d.length>0?Object.assign({},p,o({},e,d)):p}else r[a]={filters:s.length>0?o({},e,s):{},params:d.length>0?o({},e,s):{}}}),r}function i(e,t,n){var o=[];return t.length<=0?o:(t.forEach(function(t){var r=t.trigger,a=t.linkager,i=+r[0],s=+a[0];e===i&&n[s]&&["filters","params"].forEach(function(t){n[s][t][e]&&(delete n[s][t][e],o.indexOf(s)<0&&o.push(s))})}),o)}var s=function(){function e(e,t){var n=[],o=!0,r=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(o=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);o=!0);}catch(e){r=!0,a=e}finally{try{!o&&s.return&&s.return()}finally{if(r)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();Object.defineProperty(t,"__esModule",{value:!0});var l=n("./app/globalConstants.ts");t.getMappingLinkage=r,t.processLinkage=a,t.removeLinkage=i},"./app/components/MultiDatePicker/MultiDatePicker.less":function(e,t,n){var o=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/components/MultiDatePicker/MultiDatePicker.less");"string"==typeof o&&(o=[[e.i,o,""]]);var r={};r.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(o,r);o.locals&&(e.exports=o.locals)},"./app/components/MultiDatePicker/index.js":function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"MultiDatePicker",function(){return v});var i=n("./node_modules/react/react.js"),s=n.n(i),l=n("./node_modules/prop-types/index.js"),d=(n.n(l),n("./node_modules/jquery/dist/jquery.js")),u=n.n(d),c=n("./node_modules/moment/src/moment.js"),p=n("./node_modules/bootstrap-datepicker/dist/js/bootstrap-datepicker.js"),f=(n.n(p),n("./node_modules/antd/lib/icon/index.js")),h=n.n(f),m=n("./app/components/MultiDatePicker/MultiDatePicker.less"),g=n.n(m),b=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:i,t=arguments[1],n=t.type,o=t.payload,a=e.get("bizlogics");switch(n){case r.LOAD_BIZLOGICS:return e.set("tableLoading",!0);case r.LOAD_BIZLOGICS_SUCCESS:return e.set("bizlogics",o.bizlogics).set("tableLoading",!1);case r.ADD_BIZLOGIC:return e.set("modalLoading",!0);case r.ADD_BIZLOGIC_SUCCESS:return e.set("bizlogics",[o.result]).set("modalLoading",!1);case r.ADD_BIZLOGIC_FAILURE:return e.set("modalLoading",!1);case r.DELETE_BIZLOGIC:return e;case r.DELETE_BIZLOGIC_SUCCESS:return e.set("bizlogics",a.filter(function(e){return e.id!==o.id}));case r.DELETE_BIZLOGIC_FAILURE:return e;case r.EDIT_BIZLOGIC:return e.set("modalLoading",!0);case r.EDIT_BIZLOGIC_SUCCESS:return a.splice(a.findIndex(function(e){return e.id===o.result.id}),1,o.result),e.set("bizlogics",a.slice()).set("modalLoading",!1);case r.EDIT_BIZLOGIC_FAILURE:return e.set("modalLoading",!1);case r.LOAD_SCHEMA:case r.LOAD_SCHEMA_SUCCESS:case r.LOAD_SCHEMA_FAILURE:return e;case r.EXECUTE_SQL:return e.set("executeLoading",!0);case r.EXECUTE_SQL_SUCCESS:var s=o.result;s.code,s.msg;return e.set("executeLoading",!1).set("sqlValidateMessage",void 0).set("sqlValidateCode",200);case r.EXECUTE_SQL_FAILURE:return e.set("executeLoading",!1).set("sqlValidateMessage",o.error.response.data.header.msg).set("sqlValidateCode",1);case r.LOAD_VIEW_TEAM:return e;case r.LOAD_VIEW_TEAM_SUCCESS:return e.set("viewTeam",o.result);case r.LOAD_VIEW_TEAM_FAILURE:default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/containers/Bizlogic/constants.ts"),a=n("./node_modules/immutable/dist/immutable.js"),i=a.fromJS({bizlogics:null,sqlValidateCode:!1,sqlValidateMessage:!1,tableLoading:!1,modalLoading:!1,schemaData:[],viewTeam:[]});t.default=o},"./app/containers/Dashboard/Dashboard.less":function(e,t,n){var o=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Dashboard/Dashboard.less");"string"==typeof o&&(o=[[e.i,o,""]]);var r={};r.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(o,r);o.locals&&(e.exports=o.locals)},"./app/containers/Dashboard/components/DashboardFilterPanel.tsx":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=function(){function e(e,t){for(var n=0;n=0})),e});n.setState({filters:a})},n.state={filters:[]},n}return i(t,e),s(t,[{key:"componentWillReceiveProps",value:function(e){var t=e.currentDashboard,n=e.currentItems;t===this.props.currentDashboard&&n===this.props.currentItems||this.adjustGlobalFilterTableSource(t,n)}},{key:"render",value:function(){var e=this.props,t=e.onGetOptions,n=e.filterOptions,r=e.onChange,a=this.state.filters,i=d(o({},p.hide,!a.length));return l.createElement(u,{className:i},l.createElement(c,{span:24},l.createElement(f.default,{filters:a,onGetOptions:t,filterOptions:n,onChange:r})))}}]),t}(l.Component);t.DashboardFilterPanel=h,t.default=h},"./app/containers/Dashboard/components/DashboardItem.tsx":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e){return u.createElement("span",e,e.children)}var l=Object.assign||function(e){for(var t=1;t=0){var i=n.split("_");r=t.find(function(e){return e.id===i[1]}).sub.find(function(e){return e.id===i[2]})}else r=t.find(function(e){return e.id===n});if(r.type=r.variableType||r.type,"[object Array]"===Object.prototype.toString.call(o))switch(r.type){case"dateRange":o=o.map(function(e){return e.format("YYYY-MM-DD")}),e=e.concat({name:r.variables[0],value:"'"+o[0]+"'"}).concat({name:r.variables[1],value:"'"+o[1]+"'"});break;case"datetimeRange":o=o.map(function(e){return e.format("YYYY-MM-DD HH:mm:ss")}),e=e.concat({name:r.variables[0],value:"'"+o[0]+"'"}).concat({name:r.variables[1],value:"'"+o[1]+"'"});break;case"multiSelect":o.forEach(function(t){e=e.concat({name:r.variables[0],value:""+t})})}else if(o)if(r.variables[0])switch(r.type){case"date":o=o.format("YYYY-MM-DD"),e=e.concat({name:r.variables[0],value:"'"+o+"'"});break;case"datetime":o=o.format("YYYY-MM-DD HH:mm:ss"),e=e.concat({name:r.variables[0],value:"'"+o+"'"});break;case"multiDate":e=e.concat({name:r.variables[0],value:o.split(",").map(function(e){return"'"+e+"'"}).join(",")});break;case"select":e=e.concat({name:r.variables[0],value:""+o});break;default:e=e.concat({name:r.variables[0],value:"'"+o+"'"})}else if("select"===r.type&&"no"===r.hasRelatedComponent){var s=r.sub.find(function(e){return e.value===o});s.variables[0]&&(e=e.concat({name:s.variables[0],value:"'"+o+"'"}))}return e},[])}),r()},n.state={parentSelValues:null},n}return i(t,e),s(t,[{key:"componentWillMount",value:function(){this.getStateValues(this.props.controls)}},{key:"componentWillReceiveProps",value:function(e){e.controls.map(function(e){return e.id}).join(",")!==this.props.controls.map(function(e){return e.id}).join(",")&&this.getStateValues(e.controls)}},{key:"render",value:function(){var e=this,t=this.props.controls,n=t.map(function(t){return e.generateFormComponent(t)});return l.createElement(u,{className:x.controlForm},l.createElement(g,{gutter:10},n),l.createElement(g,{className:x.buttonRow},l.createElement(b,{span:24},l.createElement(m,{type:"primary",onClick:this.onControlSearch},"查询"))))}}]),t}(l.PureComponent);t.DashboardItemControlForm=w,t.default=u.create()(w)},"./app/containers/Dashboard/components/DashboardItemControlPanel.tsx":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e){var t,n,r=s((t={},o(t,l.controlPanel,!0),o(t,l.show,e.show),t)),d=s((n={},o(n,l.form,!0),o(n,l.show,e.show),n));return i.createElement("div",{className:r,onClick:e.onClose},i.createElement("div",{className:d,onClick:a},e.children))}function a(e){e.stopPropagation()}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/react/react.js"),s=n("./node_modules/classnames/index.js"),l=n("./app/containers/Dashboard/Dashboard.less");t.DashboardItemControlPanel=r,t.default=r},"./app/containers/Dashboard/components/fullScreenPanel/FullScreenPanel.tsx":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=Object.assign||function(e){for(var t=1;t0){var R=w;O=R.widget.name,C=R.renderType,L=k[R.itemId];var N=JSON.parse(w.widget.config);E="echarts"!==C?d.createElement(h.default,s({},N,{renderType:"rerender",data:L&&L.datasource?L.datasource:[]})):d.createElement("div",{style:{width:"100%",height:"100%"},id:"fsChartsWrapper"})}var z=void 0;if(w&&w.widget&&w.widget.query_params){var Y=w.widget.query_params;z=!!JSON.parse(Y).length}var F=w&&w.widget&&w.widget.query_params?JSON.parse(w.widget.query_params).filter(function(e){return e.type}):[],H=p((r={},o(r,m.modalPanel,!0),o(r,m.displayNone,!y),r)),V=p((a={},o(a,m.controlPanel,!0),o(a,m.displayNone,!y),o(a,m.showModalPanel,y),o(a,m.hideModalPanel,!y),a));return d.createElement("div",{className:T},d.createElement("div",{className:m.container},d.createElement("nav",{className:m.header},d.createElement("div",{className:m.logo},d.createElement(u,{type:this.state.isShowMenu?"menu-fold":"menu-unfold",onClick:this.isShowSideMenu,style:{marginRight:"32px"}}),d.createElement("span",null,O)),d.createElement("ul",{className:m.tools},z?d.createElement("li",{onClick:this.toggleControlPanel},d.createElement(u,{type:y?"up-square-o":"down-square-o"}),g):"",b,d.createElement("li",{onClick:this.hide},_,v))),d.createElement("div",{className:m.body},d.createElement("div",{className:A},D),d.createElement("div",{className:H}),d.createElement("div",{className:V},d.createElement("div",{className:m.formPanel},d.createElement(f.default,{controls:F,onSearch:this.onControlSearch,onHide:this.toggleControlPanel}))),d.createElement("div",{className:P},E))))}}]),t}(d.PureComponent);t.default=y},"./app/containers/Dashboard/components/fullScreenPanel/fullScreenPanel.less":function(e,t,n){var o=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Dashboard/components/fullScreenPanel/fullScreenPanel.less");"string"==typeof o&&(o=[[e.i,o,""]]);var r={};r.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(o,r);o.locals&&(e.exports=o.locals)},"./app/containers/Dashboard/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LOAD_DASHBOARDS="davinci/Dashboard/LOAD_DASHBOARDS",t.LOAD_DASHBOARDS_SUCCESS="davinci/Dashboard/LOAD_DASHBOARDS_SUCCESS",t.LOAD_DASHBOARDS_FAILURE="davinci/Dashboard/LOAD_DASHBOARDS_FAILURE",t.ADD_DASHBOARD="davinci/Dashboard/ADD_DASHBOARD",t.ADD_DASHBOARD_SUCCESS="davinci/Dashboard/ADD_DASHBOARD_SUCCESS",t.ADD_DASHBOARD_FAILURE="davinci/Dashboard/ADD_DASHBOARD_FAILURE",t.EDIT_DASHBOARD="davinci/Dashboard/EDIT_DASHBOARD",t.EDIT_DASHBOARD_SUCCESS="davinci/Dashboard/EDIT_DASHBOARD_SUCCESS",t.EDIT_DASHBOARD_FAILURE="davinci/Dashboard/EDIT_DASHBOARD_FAILURE",t.EDIT_CURRENT_DASHBOARD="davinci/Dashboard/EDIT_CURRENT_DASHBOARD",t.EDIT_CURRENT_DASHBOARD_SUCCESS="davinci/Dashboard/EDIT_CURRENT_DASHBOARD_SUCCESS",t.EDIT_CURRENT_DASHBOARD_FAILURE="davinci/Dashboard/EDIT_CURRENT_DASHBOARD_FAILURE",t.DELETE_DASHBOARD="davinci/Dashboard/DELETE_DASHBOARD",t.DELETE_DASHBOARD_SUCCESS="davinci/Dashboard/DELETE_DASHBOARD_SUCCESS",t.DELETE_DASHBOARD_FAILURE="davinci/Dashboard/DELETE_DASHBOARD_FAILURE",t.LOAD_DASHBOARD_DETAIL="davinci/Dashboard/LOAD_DASHBOARD_DETAIL",t.LOAD_DASHBOARD_DETAIL_SUCCESS="davinci/Dashboard/LOAD_DASHBOARD_DETAIL_SUCCESS",t.LOAD_DASHBOARD_DETAIL_FAILURE="davinci/Dashboard/LOAD_DASHBOARD_DETAIL_FAILURE",t.ADD_DASHBOARD_ITEM="davinci/Dashboard/ADD_DASHBOARD_ITEM",t.ADD_DASHBOARD_ITEM_SUCCESS="davinci/Dashboard/ADD_DASHBOARD_ITEM_SUCCESS",t.ADD_DASHBOARD_ITEM_FAILURE="davinci/Dashboard/ADD_DASHBOARD_ITEM_FAILURE",t.EDIT_DASHBOARD_ITEM="davinci/Dashboard/EDIT_DASHBOARD_ITEM",t.EDIT_DASHBOARD_ITEM_SUCCESS="davinci/Dashboard/EDIT_DASHBOARD_ITEM_SUCCESS",t.EDIT_DASHBOARD_ITEM_FAILURE="davinci/Dashboard/EDIT_DASHBOARD_ITEM_FAILURE",t.EDIT_DASHBOARD_ITEMS="davinci/Dashboard/EDIT_DASHBOARD_ITEMS",t.EDIT_DASHBOARD_ITEMS_SUCCESS="davinci/Dashboard/EDIT_DASHBOARD_ITEMS_SUCCESS",t.EDIT_DASHBOARD_ITEMS_FAILURE="davinci/Dashboard/EDIT_DASHBOARD_ITEMS_FAILURE",t.DELETE_DASHBOARD_ITEM="davinci/Dashboard/DELETE_DASHBOARD_ITEM",t.DELETE_DASHBOARD_ITEM_SUCCESS="davinci/Dashboard/DELETE_DASHBOARD_ITEM_SUCCESS",t.DELETE_DASHBOARD_ITEM_FAILURE="davinci/Dashboard/DELETE_DASHBOARD_ITEM_FAILURE",t.CLEAR_CURRENT_DASHBOARD="davinci/Dashboard/CLEAR_CURRENT_DASHBOARD",t.LOAD_DASHBOARD_SHARE_LINK="davinci/Dashboard/LOAD_DASHBOARD_SHARE_LINK",t.LOAD_DASHBOARD_SHARE_LINK_SUCCESS="davinci/Dashboard/LOAD_DASHBOARD_SHARE_LINK_SUCCESS",t.LOAD_DASHBOARD_SHARE_LINK_FAILURE="davinci/Dashboard/LOAD_DASHBOARD_SHARE_LINK_FAILURE",t.LOAD_DASHBOARD_SECRET_LINK_SUCCESS="davinci/Dashboard/LOAD_DASHBOARD_SECRET_LINK_SUCCESS",t.LOAD_WIDGET_SHARE_LINK="davinci/Dashboard/LOAD_WIDGET_SHARE_LINK",t.LOAD_WIDGET_SHARE_LINK_SUCCESS="davinci/Dashboard/LOAD_WIDGET_SHARE_LINK_SUCCESS",t.LOAD_WIDGET_SHARE_LINK_FAILURE="davinci/Dashboard/LOAD_WIDGET_SHARE_LINK_FAILURE",t.LOAD_WIDGET_SECRET_LINK_SUCCESS="davinci/Dashboard/LOAD_WIDGET_SECRET_LINK_SUCCESS",t.LOAD_WIDGET_CSV="davinci/Dashboard/LOAD_WIDGET_CSV",t.LOAD_WIDGET_CSV_SUCCESS="davinci/Dashboard/LOAD_WIDGET_CSV_SUCCESS",t.LOAD_WIDGET_CSV_FAILURE="davinci/Dashboard/LOAD_WIDGET_CSV_FAILURE",t.RENDER_DASHBOARDITEM="davinci/Dashboard/RENDER_DASHBOARDITEM",t.RESIZE_DASHBOARDITEM="davinci/Dashboard/RESIZE_DASHBOARDITEM",t.RESIZE_ALL_DASHBOARDITEM="davinci/Dashboard/RESIZE_ALL_DASHBOARDITEM"},"./app/containers/Display/Display.less":function(e,t,n){var o=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Display/Display.less");"string"==typeof o&&(o=[[e.i,o,""]]);var r={};r.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(o,r);o.locals&&(e.exports=o.locals)},"./app/containers/Display/components/LayerItem.tsx":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=Object.assign||function(e){for(var t=1;t-1?"bold":"normal",p.fontStyle=_.indexOf("italic")>-1?"italic":"normal",p.textDecoration=_.indexOf("underline")>-1?"underline":"none"),d.createElement("div",{className:c,style:p,onClick:n.onClickLayer},d.createElement("p",{style:T},r.contentText))};var i=n.props.layer,l=JSON.parse(i.params),c=l.width,h=l.height;return n.state={layerParams:l,mousePos:[-1,-1],width:c,height:h,pivotProps:null},n}return i(t,e),l(t,[{key:"componentWillMount",value:function(){var e=this.props.widget;e&&this.setState({pivotProps:JSON.parse(e.config)})}},{key:"componentDidMount",value:function(){var e=this.props,t=e.itemId,n=e.layer,o=e.widget,r=e.onGetChartData;n.type===p.GraphTypes.Chart&&(r("clear",t,o.id),this.setFrequent(this.props))}},{key:"componentWillReceiveProps",value:function(e){if(this.props.layer.params!==e.layer.params){var t=JSON.parse(e.layer.params),n=t.width,o=t.height;this.setState({layerParams:t,width:n,height:o})}this.props.widget!==e.widget&&this.setState({pivotProps:JSON.parse(e.widget.config)})}},{key:"componentWillUpdate",value:function(e){var t=(e.itemId,e.widget,e.polling);e.onGetChartData,e.rendered;e.layer.type===p.GraphTypes.Chart&&t!==this.props.polling&&this.setFrequent(e)}},{key:"componentWillUnmount",value:function(){clearInterval(this.frequent)}},{key:"render",value:function(){var e=this.props,t=e.pure,n=e.scale,o=e.slideParams,r=e.layer,a=(e.selected,this.state),i=a.layerParams,s=a.width,l=a.height,u={x:i.positionX,y:i.positionY},p=this.renderLayer(r);if(t)return p;var f=o.gridDistance,g=[o.width-u.x,o.height-u.y];return d.createElement(c.default,{grid:[f,f],bounds:"parent",scale:Math.min(n[0],n[1]),onStart:this.dragOnStart,onStop:this.dragOnStop,onDrag:this.drag,handle:"."+m.layer,position:u},d.createElement(h,{width:s,height:l,onResize:this.onResize,onResizeStop:this.onResizeStop,draggableOpts:{grid:[f,f]},minConstraints:[50,50],maxConstraints:g,handleSize:[20,20]},p))}}]),t}(d.PureComponent);t.LayerItem=g,t.default=g},"./app/containers/LanguageProvider/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CHANGE_LOCALE="app/LanguageToggle/CHANGE_LOCALE"},"./app/containers/LanguageProvider/index.tsx":function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:s,t=arguments[1];switch(t.type){case a.CHANGE_LOCALE:return e.set("locale",t.locale);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/immutable/dist/immutable.js"),a=n("./app/containers/LanguageProvider/constants.ts"),i=n("./app/containers/App/constants.ts"),s=r.fromJS({locale:i.DEFAULT_LOCALE});t.default=o},"./app/containers/LanguageProvider/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/reselect/es/index.js"),r=function(e){return e.get("language")};t.selectLanguage=r;var a=function(){return o.createSelector(r,function(e){return e.get("locale")})};t.makeSelectLocale=a},"./app/containers/Login/Login.less":function(e,t,n){var o=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Login/Login.less");"string"==typeof o&&(o=[[e.i,o,""]]);var r={};r.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(o,r);o.locals&&(e.exports=o.locals)},"./app/containers/Login/LoginForm.tsx":function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:i,t=arguments[1];t.payload;switch(t.type){case r.LOAD_SIDEBAR:return e.set("sidebar",t.sidebar);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/containers/Report/constants.ts"),a=n("./node_modules/immutable/dist/immutable.js"),i=a.fromJS({sidebar:!1,currentProject:!1});t.default=o},"./app/containers/Widget/charts/area.ts":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t,n){var r=t.groups,s=n.xAxis,l=n.metrics,d=n.groups,u=n.xAxisInterval,c=n.xAxisRotate,p=n.dataZoomThreshold,f=n.smooth,h=n.step,m=n.stack,g=n.symbol,b=n.hasLegend,_=n.legendSelected,v=n.legendPosition,y=n.toolbox,x=n.splitLineX,j=n.splitLineY,w=n.splitLineStyle,k=n.splitLineWidth,M=n.top,S=n.bottom,T=n.left,E=n.right,D=n.suffixYAxis,O=void 0,C=void 0,L=void 0,A=void 0,P=void 0,I=void 0,R=void 0,N=void 0,z=void 0,Y=void 0,F=void 0,H=void 0;H=D&&D.length?{axisLabel:{formatter:"{value} "+D}}:null,R=g&&g.length?{symbol:"emptyCircle"}:{symbol:"none"},A=f&&f.length?{smooth:!0}:null,P=h&&h.length?{step:!0}:null,I=m&&m.length?{stack:"stack"}:null;var V=[];r&&d&&d.length&&(V=i(e,s),O=a(e,[].concat(d).filter(function(e){return!!e}),s,l,V));var q=[];l&&(l.forEach(function(t){if(r&&d&&d.length)Object.keys(O).forEach(function(e){var n=Object.assign({name:e+" "+t,type:"line",areaStyle:{normal:{}},sampling:"average",data:O[e].map(function(e){return e[t]})},R,A,P,I);q.push(n)});else{var n=Object.assign({name:t,type:"line",areaStyle:{normal:{}},sampling:"average",symbol:R,data:e.map(function(e){return e[t]})},R,A,P);q.push(n)}}),C={series:q}),L=s&&{xAxis:{data:r&&d&&d.length?V:e.map(function(e){return e[s]}),axisLabel:{interval:u,rotate:c},splitLine:{show:x&&x.length,lineStyle:{width:k,type:w}}}};var W=0,B=0;if(b&&b.length){var U=void 0,G=void 0;switch(v){case"right":U={orient:"vertical"},G={right:8,top:40,bottom:16},B=108;break;case"bottom":U={orient:"horizontal"},G={bottom:16,left:8,right:8},W=72;break;default:U={orient:"horizontal"},G={top:3,left:8,right:120}}var K="unselectAll"===_?{selected:q.reduce(function(e,t){return Object.assign({},e,o({},t.name,!1))},{})}:null;N={legend:Object.assign({data:q.map(function(e){return e.name}),type:"scroll"},U,G,K)}}return z=y&&y.length?{toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,Y={grid:{top:M,left:T,right:Math.max(E,B),bottom:Math.max(S,W)}},F=p>0&&p")}}})},[])}}L=k&&k.length?{axisLabel:{formatter:"{value} "+k}}:null,T={yAxis:Object.assign({type:"value",splitArea:{show:!1},splitLine:{show:b&&b.length,lineStyle:{width:v,type:_}}},L)};var z=0,Y=0;if(p&&p.length){var F=void 0,H=void 0;switch(h){case"right":F={orient:"vertical"},H={right:8,top:40,bottom:16},Y=108;break;case"bottom":F={orient:"horizontal"},H={bottom:16,left:8,right:8},z=72;break;default:F={orient:"horizontal"},H={top:3,left:8,right:120}}var V="unselectAll"===f?{selected:l.reduce(function(e,t){return Object.assign({},e,o({},t,!1))},{})}:null;E={legend:Object.assign({data:l,type:"scroll"},F,H,V)}}return D=m&&m.length?{toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,O={grid:{top:y,left:j,right:Math.max(w,Y),bottom:Math.max(x,z)}},C=c>0&&c")}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/echarts/extension-src/dataTool/prepareBoxplotData.js");t.default=r},"./app/containers/Widget/charts/confidenceBand.ts":function(e,t,n){"use strict";function o(e,t,n,o){var r=n.xAxis,a=n.metrics,i=n.lower,s=n.upper,l=n.label,d=n.xAxisInterval,u=n.xAxisRotate,c=n.dataZoomThreshold,p=n.smooth,f=n.step,h=n.symbol,m=n.toolbox,g=n.splitLineX,b=n.splitLineY,_=n.splitLineStyle,v=n.splitLineWidth,y=n.top,x=n.bottom,j=n.left,w=n.right,k=n.suffixYAxis,M=void 0,S=void 0,T=void 0,E=void 0,D=void 0,O=void 0,C=void 0,L=void 0,A=void 0,P=void 0,I=-e.reduce(function(e,t){return Math.floor(Math.min(e,+t[i]))},1/0);P={axisLabel:{formatter:function(e){return e-I+" "+(k||"")}}},D=h&&h.length?{symbol:"emptyCircle"}:{symbol:"none"},T=p&&p.length?{smooth:!0}:null,E=f&&f.length?{step:!0}:null,L=l&&l.length?{label:{normal:{show:!0,position:"top"}}}:null;var R=[];if(a){var N=Object.assign({name:a,type:"line",sampling:"average",symbol:D,data:e.map(function(e,t){return t===o?{value:+e[a]+I,lineStyle:{normal:{opacity:1}},itemStyle:{normal:{opacity:1}}}:+e[a]+I}),lineStyle:{normal:{opacity:void 0===o?1:.25}},itemStyle:{normal:{opacity:void 0===o?1:.25}}},D,T,E,L);R.push(N)}var z={type:"line",lineStyle:{normal:{opacity:0}},stack:"confidence-band",symbol:"none"},Y=[{name:"L",data:e.map(function(e){return+e[i]+I})},{name:"U",data:e.map(function(e){return+e[s]-e[i]}),areaStyle:{normal:{color:"#ccc"}}}];return Y.forEach(function(e){Object.assign(e,z)}),R.push.apply(R,Y),M={series:R},S=r&&{xAxis:{data:e.map(function(e){return e[r]}),axisLabel:{interval:d,rotate:u},splitLine:{show:g&&g.length,lineStyle:{width:v,type:_}}}},O=m&&m.length?{toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,C={grid:{top:y,left:j,right:w,bottom:x}},A=c>0&&c"+e[0].value}}},M,S,O,C,A)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o},"./app/containers/Widget/charts/doubleYAxis.ts":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&(J=O.map(function(t){return Object.assign({name:t,type:L,data:e.map(function(e){return e[t]})},F,Y("left"))})),C&&C.length>0&&(Q=C.map(function(t){return Object.assign({name:t,type:A,yAxisIndex:1,data:e.map(function(e){return e[t]})},F,Y("right"))}));R={series:[].concat(r(J),r(Q)).map(function(e){return"line"===e.type?Object.assign({},e,X,K,Z):Object.assign({},e)})}}s&&(N={xAxis:[{data:e.map(function(e){return e[s]}),type:"category",axisLabel:{interval:h,rotate:m},splitLine:{show:j&&j.length,lineStyle:{width:M,type:k}}}]});var re=0,ae=0;if(_&&_.length){var ie=void 0,se=void 0;switch(y){case"right":ie={orient:"vertical"},se={right:8,top:40,bottom:16},ae=180;break;case"bottom":ie={orient:"horizontal"},se={bottom:16,left:8,right:8},re=72;break;default:ie={orient:"horizontal"},se={top:3,left:8,right:120}}var le="unselectAll"===v?{selected:R.series.reduce(function(e,t){return Object.assign({},e,o({},t.name,!1))},{})}:null;H={legend:Object.assign({data:R.series.map(function(e){return e.name}),type:"scroll"},ie,se,le)}}return V=x&&x.length?{toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,q={grid:{top:S,left:E,right:Math.max(D,ae),bottom:Math.max(T,re)}},W=b>0&&b3&&(E.axisLine.lineStyle.color=y),v.push(E),m={series:v},g=o&&o.length?{tooltip:{formatter:"{a}
    {b} : "+w+"{c}"+k}}:null,b=i&&i.length?{toolbox:{feature:{restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,Object.assign({},m,g,b)}Object.defineProperty(t,"__esModule",{value:!0});var r="#c23531",a=["#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"];t.default=o},"./app/containers/Widget/charts/graph.ts":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t,n,r){var i=n.metrics,s=n.target,l=n.source,d=n.tooltip,u=n.legend,c=n.toolbox,p=n.top,f=n.bottom,h=n.left,m=n.right,g=n.category;g&&g.length||(g=l);var b=void 0,_=void 0,v=void 0,y=void 0,x=void 0,j=void 0,w=void 0,k=[],M=[],S=[],T=[],E=[],D=e.map(function(e){return e[g]});T=D.filter(function(e,t){return D.indexOf(e)===t}).concat(["其他"]),E=T.map(function(t){var n=e.filter(function(e){return e[g]===t});return{key:t,value:n}}),s&&s.length&&l&&l.length&&i&&i.length&&(S=e.map(function(e){return Array.prototype.push.apply(M,[e[l],e[s]]),{value:e[i],source:e[l],target:e[s]}}),E&&E.length&&(E=E.map(function(e){return o({},e.key,e.value.reduce(function(e,t){return e+Number(t[i])},0))}))),M&&M.length&&(M=M.filter(function(e,t){return M.indexOf(e)===t}).map(function(e){return{name:e,category:e}}));var O=E.reduce(function(e,t){return Object.assign({},e,t)},{}),C=Object.keys(O),L=Object.values(O),A=a(Object.values(O));T&&T.length&&M&&M.length&&(M=M.map(function(e,t){var n=void 0,o=void 0,r=void 0;return T.find(function(t){return t===e.category})?(r=C.indexOf(e.category),n=A[r],o=L[r],Object.assign({},e,{symbolSize:n,realValue:o})):Object.assign({},e,{category:"其他",symbolSize:1,realValue:0})})),_={label:{normal:{show:!0,position:"right"}}},j={grid:{top:p,left:h,right:m,bottom:f}},w={animationDurationUpdate:1e3,animationEasingUpdate:"quinticInOut"};var P=Object.assign({type:"graph",layout:"circular",symbolSize:30,roam:!0,focusNodeAdjacency:!0,edgeSymbol:["circle","arrow"],edgeSymbolSize:[4,10],edgeLabel:{normal:{}},circular:{rotateLabel:!0},data:M,links:S,categories:T.map(function(e){return{name:e}}),lineStyle:{normal:{color:"source",opacity:.9,curveness:.3}}},_);return k.push(P),b={series:k},v=d&&d.length?{tooltip:{formatter:function(e){var t=e.data;switch(e.dataType){case"edge":return t.source+" => "+t.target+" : "+t.value;case"node":return t.name+" : "+t.realValue;default:return""}}}}:null,y=u&&u.length?{legend:{data:T,orient:"vertical",left:"left",type:"scroll"}}:null,x=c&&c.length?{toolbox:{feature:{dataView:{readOnly:!1},restore:{},saveAsImage:{}}}}:null,Object.assign({},b,v,y,x,j,w)}function a(e){if(!(e&&Array.isArray(e)&&e.length))return!1;var t=e.reduce(function(e,t){return t>e?t:e},0);return e.map(function(e){var n=60*Number(e)/t;return n<1?1:n})}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},"./app/containers/Widget/charts/index.ts":function(e,t,n){"use strict";function o(e,t){switch(e){case"line":return r.default();case"bar":return a.default(t.elementSize);case"scatter":return i.default(t.sizeRate);case"pie":return s.default();case"radar":return l.default()}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/containers/Widget/charts/line.ts"),a=n("./app/containers/Widget/charts/bar.ts"),i=n("./app/containers/Widget/charts/scatter.ts"),s=n("./app/containers/Widget/charts/pie.ts"),l=n("./app/containers/Widget/charts/radar.ts");t.default=o},"./app/containers/Widget/charts/line.ts":function(e,t,n){"use strict";function o(){return{chartOption:{type:"line"}}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o},"./app/containers/Widget/charts/map.ts":function(e,t,n){"use strict";function o(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t"+Object.keys(t.children).map(function(e){return e+":"+t.children[e]+"
    "}).join("")}return n}}},_=f&&f.length?{toolbox:{feature:{dataView:{readOnly:!1},restore:{},saveAsImage:{}}}}:null,Object.assign({geo:{map:"china",label:{emphasis:{show:!1}},itemStyle:{normal:{areaColor:"#0000003F",borderColor:"#FFFFFF",borderWidth:1},emphasis:{areaColor:"#00000059"}},roam:!(!p||!p.length)}},h,g,b,_)})}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./app/utils/util.ts"),i=n("./app/globalConstants.ts"),s=void 0;t.default=r},"./app/containers/Widget/charts/mapFile/china.js":function(e,t,n){var o,r,a,i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function(s,l){"object"===i(t)&&"string"!=typeof t.nodeName?l(t,n("./node_modules/echarts/lib/echarts.js")):(r=[t,n("./node_modules/echarts/lib/echarts.js")],o=l,void 0!==(a="function"==typeof o?o.apply(t,r):o)&&(e.exports=a))}(0,function(e,t){var n=function(e){"undefined"!=typeof console&&console&&console.error&&console.error(e)};return t?t.registerMap?void t.registerMap("china",{type:"FeatureCollection",features:[{id:"710000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@°Ü¯Û"],["@@ƛĴÕƊÉɼģºðʀ\\ƎsÆNŌÔĚäœnÜƤɊĂǀĆĴžĤNJŨxĚĮǂƺòƌ‚–âÔ®ĮXŦţƸZûЋƕƑGđ¨ĭMó·ęcëƝɉlÝƯֹÅŃ^Ó·śŃNjƏďíåɛGɉ™¿@ăƑŽ¥ĘWǬÏĶŁâ"],["@@\\p|WoYG¿¥I†j@¢"],["@@…¡‰@ˆV^RqˆBbAŒnTXeRz¤Lž«³I"],["@@ÆEE—„kWqë @œ"],["@@fced"]],encodeOffsets:[[[122886,24033]],[[123335,22980]],[[122375,24193]],[[122518,24117]],[[124427,22618]],[[124862,26043]]]},properties:{cp:[121.509062,25.044332],name:"台湾",childNum:6}},{id:"130000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@o~†Z]‚ªr‰ºc_ħ²G¼s`jΟnüsœłNX_“M`ǽÓnUK…Ĝēs¤­©yrý§uģŒc†JŠ›e"],["@@U`Ts¿m‚"],["@@oºƋÄd–eVŽDJj£€J|Ådz•Ft~žKŨ¸IÆv|”‡¢r}膎onb˜}`RÎÄn°ÒdÞ²„^®’lnÐèĄlðӜ×]ªÆ}LiĂ±Ö`^°Ç¶p®đDcœŋ`–ZÔ’¶êqvFƚ†N®ĆTH®¦O’¾ŠIbÐã´BĐɢŴÆíȦp–ĐÞXR€·nndOž¤’OÀĈƒ­Qg˜µFo|gȒęSWb©osx|hYh•gŃfmÖĩnº€T̒Sp›¢dYĤ¶UĈjl’ǐpäìë|³kÛfw²Xjz~ÂqbTŠÑ„ěŨ@|oM‡’zv¢ZrÃVw¬ŧĖ¸fŒ°ÐT€ªqŽs{Sž¯r æÝlNd®²Ğ džiGʂJ™¼lr}~K¨ŸƐÌWö€™ÆŠzRš¤lêmĞL΄’@¡|q]SvK€ÑcwpÏρ†ĿćènĪWlĄkT}ˆJ”¤~ƒÈT„d„™pddʾĬŠ”ŽBVt„EÀ¢ôPĎƗè@~‚k–ü\\rÊĔÖæW_§¼F˜†´©òDòj’ˆYÈrbĞāøŀG{ƀ|¦ðrb|ÀH`pʞkv‚GpuARhÞÆǶgʊTǼƹS£¨¡ù³ŘÍ]¿Ây™ôEP xX¶¹܇O¡“gÚ¡IwÃ鑦ÅB‡Ï|Ç°…N«úmH¯‹âŸDùŽyŜžŲIÄuШDž•¸dɂ‡‚FŸƒ•›Oh‡đ©OŸ›iÃ`ww^ƒÌkŸ‘ÑH«ƇǤŗĺtFu…{Z}Ö@U‡´…ʚLg®¯Oı°ÃwŸ ^˜—€VbÉs‡ˆmA…ê]]w„§›RRl£‡ȭµu¯b{ÍDěïÿȧŽuT£ġƒěŗƃĝ“Q¨fV†Ƌ•ƅn­a@‘³@šď„yýIĹÊKšŭfċŰóŒxV@tˆƯŒJ”]eƒR¾fe|rHA˜|h~Ėƍl§ÏŠlTíb ØoˆÅbbx³^zÃĶš¶Sj®A”yÂhðk`š«P€”ˈµEF†Û¬Y¨Ļrõqi¼‰Wi°§’б´°^[ˆÀ|ĠO@ÆxO\\tŽa\\tĕtû{ġŒȧXýĪÓjùÎRb›š^ΛfK[ݏděYfíÙTyŽuUSyŌŏů@Oi½’éŅ­aVcř§ax¹XŻác‡žWU£ôãºQ¨÷Ñws¥qEH‰Ù|‰›šYQoŕÇyáĂ£MðoťÊ‰P¡mšWO¡€v†{ôvîēÜISpÌhp¨ ‘j†deŔQÖj˜X³à™Ĉ[n`Yp@Už–cM`’RKhŒEbœ”pŞlNut®Etq‚nsÁŠgA‹iú‹oH‡qCX‡”hfgu“~ϋWP½¢G^}¯ÅīGCŸÑ^ãziMáļMTÃƘrMc|O_ž¯Ŏ´|‡morDkO\\mĆJfl@cĢ¬¢aĦtRıҙ¾ùƀ^juųœK­ƒUFy™—Ɲ…›īÛ÷ąV×qƥV¿aȉd³B›qPBm›aËđŻģm“Å®VŠ¹d^K‡KoŸnYg“¯Xhqa”Ldu¥•ÍpDž¡KąÅƒkĝęěhq‡}HyÓ]¹ǧ£…Í÷¿qᵧš™g‘¤o^á¾ZE‡¤i`ij{n•ƒOl»ŸWÝĔįhg›F[¿¡—ßkOüš_‰€ū‹i„DZàUtėGylƒ}ŒÓM}€jpEC~¡FtoQi‘šHkk{Ãmï‚"]],encodeOffsets:[[[119712,40641]],[[121616,39981]],[[116462,37237]]]},properties:{cp:[114.502461,38.045474],name:"河北",childNum:3}},{id:"140000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@Þĩ҃S‰ra}Á€yWix±Üe´lè“ßÓǏok‘ćiµVZģ¡coœ‘TS˹ĪmnÕńe–hZg{gtwªpXaĚThȑp{¶Eh—®RćƑP¿£‘Pmc¸mQÝW•ďȥoÅîɡųAďä³aωJ‘½¥PG­ąSM­™…EÅruµé€‘Yӎ•Ō_d›ĒCo­Èµ]¯_²ÕjāŽK~©ÅØ^ԛkïçămϑk]­±ƒcݯÑÃmQÍ~_a—pm…~ç¡q“ˆu{JÅŧ·Ls}–EyÁÆcI{¤IiCfUc•ƌÃp§]웫vD@¡SÀ‘µM‚ÅwuŽYY‡¡DbÑc¡hƒ×]nkoQdaMç~eD•ÛtT‰©±@¥ù@É¡‰ZcW|WqOJmĩl«ħşvOÓ«IqăV—¥ŸD[mI~Ó¢cehiÍ]Ɠ~ĥqXŠ·eƷœn±“}v•[ěďŽŕ]_‘œ•`‰¹ƒ§ÕōI™o©b­s^}Ét±ū«³p£ÿ·Wµ|¡¥ăFÏs׌¥ŅxŸÊdÒ{ºvĴÎêÌɊ²¶€ü¨|ÞƸµȲ‘LLúÉƎ¤ϊęĔV`„_bª‹S^|ŸdŠzY|dz¥p†ZbÆ£¶ÒK}tĦÔņƠ‚PYzn€ÍvX¶Ěn ĠÔ„zý¦ª˜÷žÑĸَUȌ¸‚dòÜJð´’ìúNM¬ŒXZ´‘¤ŊǸ_tldIš{¦ƀðĠȤ¥NehXnYG‚‡R° ƬDj¬¸|CĞ„Kq‚ºfƐiĺ©ª~ĆOQª ¤@ìǦɌ²æBŒÊ”TœŸ˜ʂōĖ’šĴŞ–ȀœÆÿȄlŤĒö„t”νî¼ĨXhŒ‘˜|ªM¤Ðz"],encodeOffsets:[[116874,41716]]},properties:{cp:[112.549248,37.857014],name:"山西",childNum:1}},{id:"150000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@Č^â£Ăh–šĖMÈÄw‚\\fŦ°W ¢¾luŸD„wŠ\\̀ʉÌÛM…Ā[bӞEn}¶Vc…ê“sƒ–›¯PqƒFB…‰|S•³C|kñ•H‹d‘iÄ¥sˆʼnő…PóÑÑE^‘ÅPpy_YtS™hQ·aHwsOnʼnÚs©iqj›‰€USiº]ïWš‰«gW¡A–R붛ijʕ…Œů`çõh]y»ǃŸǛҤxÒm~zf}pf|ÜroÈzrKÈĵSƧ„ż؜Ġu¦ö"],["@@sKCš…GS|úþX”gp›{ÁX¿Ÿć{ƱȏñZáĔyoÁhA™}ŅĆfdʼn„_¹„Y°ėǩÑ¡H¯¶oMQqð¡Ë™|‘Ñ`ƭŁX½·óۓxğįÅcQ‡ˆ“ƒs«tȋDžF“Ÿù^i‘t«Č¯[›hAi©á¥ÇĚ×l|¹y¯YȵƓ‹ñǙµï‚ċ™Ļ|Dœ™üȭ¶¡˜›oŽäÕG\\ďT¿Òõr¯œŸLguÏYęRƩšɷŌO\\İТæ^Ŋ IJȶȆbÜGŽĝ¬¿ĚVĎgª^íu½jÿĕęjık@Ľƒ]ėl¥Ë‡ĭûÁ„ƒėéV©±ćn©­ȇžÍq¯½•YÃÔʼn“ÉNѝÅÝy¹NqáʅDǡËñ­ƁYÅy̱os§ȋµʽǘǏƬɱà‘ưN¢ƔÊuľýľώȪƺɂļžxœZĈ}ÌʼnŪ˜ĺœŽĭFЛĽ̅ȣͽÒŵìƩÇϋÿȮǡŏçƑůĕ~Ǎ›¼ȳÐUf†dIxÿ\\G ˆzâɏÙOº·pqy£†@ŒŠqþ@Ǟ˽IBäƣzsÂZ†ÁàĻdñ°ŕzéØűzșCìDȐĴĺf®ŽÀľưø@ɜÖÞKĊŇƄ§‚͑těï͡VAġÑÑ»d³öǍÝXĉĕÖ{þĉu¸ËʅğU̎éhɹƆ̗̮ȘNJ֥ड़ࡰţાíϲäʮW¬®ҌeרūȠkɬɻ̼ãüfƠSצɩςåȈHϚÎKdzͲOðÏȆƘ¼CϚǚ࢚˼ФԂ¤ƌžĞ̪Qʤ´¼mȠJˀŸƲÀɠmǐnǔĎȆÞǠN~€ʢĜ‚¶ƌĆĘźʆȬ˪ĚĒ¸ĞGȖƴƀj`ĢçĶāàŃºēĢƒĖćšYŒÀŎüôQÐÂŎŞdžŞêƖš˜oˆDĤÕºÑǘÛˤ³̀gńƘĔÀ^žªƂ`ªt¾äƚêĦĀ¼Ð€Ĕǎ¨Ȕ»͠^ˮÊȦƤøxRrŜH¤¸ÂxDĝŒ|ø˂˜ƮÐ¬ɚwɲFjĔ²Äw°dždÀɞ_ĸdîàŎjʜêTЪŌ‡ŜWÈ|tqĢUB~´°ÎFC•ŽU¼pĀēƄN¦¾O¶ŠłKĊOj“Ě”j´ĜYp˜{¦„ˆSĚÍ\\Tš×ªV–÷Ší¨ÅDK°ßtŇĔKš¨ǵÂcḷ̌ĚǣȄĽF‡lġUĵœŇ‹ȣFʉɁƒMğįʏƶɷØŭOǽ«ƽū¹Ʊő̝Ȩ§ȞʘĖiɜɶʦ}¨֪ࠜ̀ƇǬ¹ǨE˦ĥªÔêFŽxúQ„Er´W„rh¤Ɛ \\talĈDJ˜Ü|[Pll̚¸ƎGú´Pž¬W¦†^¦–H]prR“n|or¾wLVnÇIujkmon£cX^Bh`¥V”„¦U¤¸}€xRj–[^xN[~ªŠxQ„‚[`ªHÆÂExx^wšN¶Ê˜|¨ì†˜€MrœdYp‚oRzNy˜ÀDs~€bcfÌ`L–¾n‹|¾T‚°c¨È¢a‚r¤–`[|òDŞĔöxElÖdH„ÀI`„Ď\\Àì~ƎR¼tf•¦^¢ķ¶e”ÐÚMŒptgj–„ɡČÅyġLû™ŇV®ŠÄÈƀ†Ď°P|ªVV†ªj–¬ĚÒêp¬–E|ŬÂc|ÀtƐK fˆ{ĘFĒœƌXƲąo½Ę‘\\¥–o}›Ûu£ç­kX‘{uĩ«āíÓUŅßŢq€Ť¥lyň[€oi{¦‹L‡ń‡ðFȪȖ”ĒL„¿Ì‹ˆfŒ£K£ʺ™oqNŸƒwğc`ue—tOj×°KJ±qƒÆġm‰Ěŗos¬…qehqsuœƒH{¸kH¡Š…ÊRǪÇƌbȆ¢´ä܍¢NìÉʖ¦â©Ż؛Ç@Vu»A—ylßí¹ĵê…ÝlISò³C¹Ìâ„²i¶’Ìoú^H“²CǜңDŽ z¼g^èöŰ_‹‚–†IJĕꄜ}gÁnUI«m‰…„‹]j‡vV¼euhwqA„aW˜ƒ_µj…»çjioQR¹ēÃßt@r³[ÛlćË^ÍÉáG“›OUۗOB±•XŸkŇ¹£k|e]ol™ŸkVͼÕqtaÏõjgÁ£§U^Œ”RLˆËnX°Ç’Bz†^~wfvˆypV ¯„ƫĉ˭ȫƗŷɿÿĿƑ˃ĝÿÃǃßËőó©ǐȍŒĖM×ÍEyx‹þp]Évïè‘vƀnÂĴÖ@‚‰†V~Ĉ™Š³MEˆĸÅĖt—ējyÄDXÄxGQuv_›i¦aBçw‘˛wD™©{ŸtāmQ€{EJ§KPśƘƿ¥@‰sCT•É}ɃwˆƇy±ŸgÑ“}T[÷kÐ禫…SÒ¥¸ëBX½‰HáŵÀğtSÝÂa[ƣ°¯¦P]£ġ“–“Òk®G²„èQ°óMq}EŠóƐÇ\\ƒ‡@áügQ͋u¥Fƒ“T՛¿Jû‡]|mvāÎYua^WoÀa·­ząÒot׶CLƗi¯¤mƎHNJ¤îìɾŊìTdåwsRÖgĒųúÍġäÕ}Q¶—ˆ¿A•†‹[¡Œ{d×uQAƒ›M•xV‹vMOmăl«ct[wº_šÇʊŽŸjb£ĦS_é“QZ“_lwgOiýe`YYLq§IÁˆdz£ÙË[ÕªuƏ³ÍT—s·bÁĽäė[›b[ˆŗfãcn¥îC¿÷µ[ŏÀQ­ōšĉm¿Á^£mJVm‡—L[{Ï_£›F¥Ö{ŹA}…×Wu©ÅaųijƳhB{·TQqÙIķˑZđ©Yc|M¡…L•eVUóK_QWk’_ĥ‘¿ãZ•»X\\ĴuUƒè‡lG®ěłTĠğDєOrÍd‚ÆÍz]‹±…ŭ©ŸÅ’]ŒÅÐ}UË¥©Tċ™ïxgckfWgi\\ÏĒ¥HkµE˜ë{»ÏetcG±ahUiñiWsɁˆ·c–C‚Õk]wȑ|ća}w…VaĚ᠞ŒG°ùnM¬¯†{ȈÐÆA’¥ÄêJxÙ¢”hP¢Ûˆº€µwWOŸóFŽšÁz^ÀŗÎú´§¢T¤ǻƺSė‰ǵhÝÅQgvBHouʝl_o¿Ga{ïq{¥|ſĿHĂ÷aĝÇq‡Z‘ñiñC³ª—…»E`¨åXēÕqÉû[l•}ç@čƘóO¿¡ƒFUsA‰“ʽīccšocƒ‚ƒÇS}„“£‡IS~ălkĩXçmĈ…ŀЂoÐdxÒuL^T{r@¢‘žÍƒĝKén£kQ™‰yšÅõËXŷƏL§~}kqš»IHėDžjĝŸ»ÑÞoŸå°qTt|r©ÏS‹¯·eŨĕx«È[eMˆ¿yuˆ‘pN~¹ÏyN£{©’—g‹ħWí»Í¾s“əšDž_ÃĀɗ±ą™ijĉʍŌŷ—S›É“A‹±åǥɋ@럣R©ąP©}ĹªƏj¹erƒLDĝ·{i«ƫC£µ"]],encodeOffsets:[[[127444,52594]],[[113793,40312]]]},properties:{cp:[111.670801,40.818311],name:"内蒙古",childNum:2}},{id:"210000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@L–Ž@@s™a"],["@@MnNm"],["@@d‚c"],["@@eÀ‚C@b‚“‰"],["@@f‡…Xwkbr–Ä`qg"],["@@^jtW‘Q"],["@@~ Y]c"],["@@G`ĔN^_¿Z‚ÃM"],["@@iX¶B‹Y"],["@@„YƒZ"],["@@L_{Epf"],["@@^WqCT\\"],["@@\\[“‹§t|”¤_"],["@@m`n_"],["@@Ïxnj{q_×^Giip"],["@@@œé^B†‡ntˆaÊU—˜Ÿ]x ¯ÄPIJ­°h€ʙK³†VˆÕ@Y~†|EvĹsDŽ¦­L^p²ŸÒG ’Ël]„xxÄ_˜fT¤Ď¤cŽœP„–C¨¸TVjbgH²sdÎdHt`Bˆ—²¬GJję¶[ÐhjeXdlwhšðSȦªVÊπ‹Æ‘Z˜ÆŶ®²†^ŒÎyÅÎcPqń“ĚDMħĜŁH­ˆk„çvV[ij¼W–‚YÀäĦ’‘`XlžR`žôLUVžfK–¢†{NZdĒª’YĸÌÚJRr¸SA|ƴgŴĴÆbvªØX~†źBŽ|¦ÕœEž¤Ð`\\|Kˆ˜UnnI]¤ÀÂĊnŎ™R®Ő¿¶\\ÀøíDm¦ÎbŨab‰œaĘ\\ľã‚¸a˜tÎSƐ´©v\\ÖÚÌǴ¤Â‡¨JKr€Z_Z€fjþhPkx€`Y”’RIŒjJcVf~sCN¤ ˆE‚œhæm‰–sHy¨SðÑÌ\\\\ŸĐRZk°IS§fqŒßýáЍÙÉÖ[^¯ǤŲ„ê´\\¦¬ĆPM¯£Ÿˆ»uïpùzEx€žanµyoluqe¦W^£ÊL}ñrkqWňûP™‰UP¡ôJŠoo·ŒU}£Œ„[·¨@XŒĸŸ“‹‹DXm­Ûݏº‡›GU‹CÁª½{íĂ^cj‡k“¶Ã[q¤“LÉö³cux«zZfƒ²BWÇ®Yß½ve±ÃC•ý£W{Ú^’q^sÑ·¨‹ÍOt“¹·C¥‡GD›rí@wÕKţ݋˜Ÿ«V·i}xËÍ÷‘i©ĝ‡ɝǡ]ƒˆ{c™±OW‹³Ya±Ÿ‰_穂Hžĕoƫ€Ňqƒr³‰Lys[„ñ³¯OS–ďOMisZ†±ÅFC¥Pq{‚Ã[Pg}\\—¿ghćO…•k^ģÁFıĉĥM­oEqqZûěʼn³F‘¦oĵ—hŸÕP{¯~TÍlª‰N‰ßY“Ð{Ps{ÃVU™™eĎwk±ʼnVÓ½ŽJãÇÇ»Jm°dhcÀff‘dF~ˆ€ĀeĖ€d`sx² šƒ®EżĀdQ‹Âd^~ăÔHˆ¦\\›LKpĄVez¤NP ǹӗR™ÆąJSh­a[¦´Âghwm€BÐ¨źhI|žVVŽ—Ž|p] Â¼èNä¶ÜBÖ¼“L`‚¼bØæŒKV”ŸpoœúNZÞÒKxpw|ÊEMnzEQšŽIZ”ŽZ‡NBˆčÚFÜçmĩ‚WĪñt‘ÞĵÇñZ«uD‚±|Əlij¥ãn·±PmÍa‰–da‡ CL‡Ǒkùó¡³Ï«QaċϑOÃ¥ÕđQȥċƭy‹³ÃA"]],encodeOffsets:[[[123686,41445]],[[126019,40435]],[[124393,40128]],[[126117,39963]],[[125322,40140]],[[126686,40700]],[[126041,40374]],[[125584,40168]],[[125453,40165]],[[125362,40214]],[[125280,40291]],[[125774,39997]],[[125976,40496]],[[125822,39993]],[[125509,40217]],[[122731,40949]]]},properties:{cp:[123.429096,41.796767],name:"辽宁",childNum:16}},{id:"220000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@‘p䔳PClƒFbbÍzš€wBG’ĭ€Z„Åi“»ƒlY­ċ²SgŽkÇ£—^S‰“qd¯•‹R…©éŽ£¯S†\\cZ¹iűƏCuƍÓX‡oR}“M^o•£…R}oªU­F…uuXHlEŕ‡€Ï©¤ÛmTŽþ¤D–²ÄufàÀ­XXȱAe„yYw¬dvõ´KÊ£”\\rµÄl”iˆdā]|DÂVŒœH¹ˆÞ®ÜWnŒC”Œķ W‹§@\\¸‹ƒ~¤‹Vp¸‰póIO¢ŠVOšŇürXql~òÉK]¤¥Xrfkvzpm¶bwyFoúvð‡¼¤ N°ąO¥«³[ƒéǡű_°Õ\\ÚÊĝŽþâőàerR¨­JYlďQ[ ÏYëЧTGz•tnŠß¡gFkMŸāGÁ¤ia É‰™È¹`\\xs€¬dĆkNnuNUŠ–užP@‚vRY¾•–\\¢…ŒGªóĄ~RãÖÎĢù‚đŴÕhQŽxtcæëSɽʼníëlj£ƍG£nj°KƘµDsØÑpyƸ®¿bXp‚]vbÍZuĂ{nˆ^IüœÀSք”¦EŒvRÎûh@℈[‚Əȉô~FNr¯ôçR±ƒ­HÑl•’Ģ–^¤¢‚OðŸŒævxsŒ]ÞÁTĠs¶¿âƊGW¾ìA¦·TѬ†è¥€ÏÐJ¨¼ÒÖ¼ƒƦɄxÊ~S–tD@ŠĂ¼Ŵ¡jlºWžvЉˆzƦZЎ²CH— „Axiukd‹ŒGgetqmcžÛ£Ozy¥cE}|…¾cZ…k‚‰¿uŐã[oxGikfeäT@…šSUwpiÚFM©’£è^ڟ‚`@v¶eň†f h˜eP¶žt“äOlÔUgƒÞzŸU`lœ}ÔÆUvØ_Ō¬Öi^ĉi§²ÃŠB~¡Ĉ™ÚEgc|DC_Ȧm²rBx¼MÔ¦ŮdĨÃâYx‘ƘDVÇĺĿg¿cwÅ\\¹˜¥Yĭlœ¤žOv†šLjM_a W`zļMž·\\swqÝSA‡š—q‰Śij¯Š‘°kŠRē°wx^Đkǂғ„œž“œŽ„‹\\]˜nrĂ}²ĊŲÒøãh·M{yMzysěnĒġV·°“G³¼XÀ““™¤¹i´o¤ŃšŸÈ`̃DzÄUĞd\\i֚ŒˆmÈBĤÜɲDEh LG¾ƀľ{WaŒYÍȏĢĘÔRîĐj‹}Ǟ“ccj‡oUb½š{“h§Ǿ{K‹ƖµÎ÷žGĀÖŠåưÎs­l›•yiē«‹`姝H¥Ae^§„GK}iã\\c]v©ģZ“mÃ|“[M}ģTɟĵ‘Â`À–çm‰‘FK¥ÚíÁbXš³ÌQґHof{‰]e€pt·GŋĜYünĎųVY^’˜ydõkÅZW„«WUa~U·Sb•wGçǑ‚“iW^q‹F‚“›uNĝ—·Ew„‹UtW·Ýďæ©PuqEzwAV•—XR‰ãQ`­©GŒM‡ehc›c”ďϝd‡©ÑW_ϗYƅŒ»…é\\ƒɹ~ǙG³mØ©BšuT§Ĥ½¢Ã_ý‘L¡‘ýŸqT^rme™\\Pp•ZZbƒyŸ’uybQ—efµ]UhĿDCmûvašÙNSkCwn‰cćfv~…Y‹„ÇG"],encodeOffsets:[[130196,42528]]},properties:{cp:[125.3245,43.886841],name:"吉林",childNum:1}},{id:"230000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@ƨƒĶTLÇyqpÇÛqe{~oyen}s‰`q‡iXG”ù]Ëp½“©lɇÁp]Þñ´FÔ^f‘äîºkà˜z¼BUvÈ@"],["@@UƒµNÿ¥īè灋•HÍøƕ¶LŒǽ|g¨|”™Ža¾pViˆdd”~ÈiŒíďÓQġėǐZ΋ŽXb½|ſÃH½ŸKFgɱCģÛÇA‡n™‹jÕc[VĝDZÃ˄Ç_™ £ń³pŽj£º”š¿”»WH´¯”U¸đĢmžtĜyzzNN|g¸÷äűѱĉā~mq^—Œ[ƒ”››”ƒǁÑďlw]¯xQĔ‰¯l‰’€°řĴrŠ™˜BˆÞTxr[tŽ¸ĻN_yŸX`biN™Ku…P›£k‚ZĮ—¦[ºxÆÀdhŽĹŀUÈƗCw’áZħÄŭcÓ¥»NAw±qȥnD`{ChdÙFćš}¢‰A±Äj¨]ĊÕjŋ«×`VuÓś~_kŷVÝyh„“VkÄãPs”Oµ—fŸge‚Ň…µf@u_Ù ÙcŸªNªÙEojVx™T@†ãSefjlwH\\pŏäÀvŠŽlY†½d{†F~¦dyz¤PÜndsrhf‹HcŒvlwjFœ£G˜±DύƥY‡yϊu¹XikĿ¦ÏqƗǀOŜ¨LI|FRĂn sª|Cš˜zxAè¥bœfudTrFWÁ¹Am|˜ĔĕsķÆF‡´Nš‰}ć…UŠÕ@Áijſmužç’uð^ÊýowŒFzØÎĕNőžǏȎôªÌŒDŽàĀÄ˄ĞŀƒʀĀƘŸˮȬƬĊ°ƒUŸzou‡xe]}Ž…AyȑW¯ÌmK‡“Q]‹Īºif¸ÄX|sZt|½ÚUΠlkš^p{f¤lˆºlÆW –€A²˜PVܜPH”Êâ]ÎĈÌÜk´\\@qàsĔÄQºpRij¼èi†`¶—„bXƒrBgxfv»ŽuUiˆŒ^v~”J¬mVp´£Œ´VWrnP½ì¢BX‚¬h™ŠðX¹^TjVœŠriªj™tŊÄm€tPGx¸bgRšŽsT`ZozÆO]’ÒFô҆Oƒ‡ŊŒvŞ”p’cGŒêŠsx´DR–Œ{A†„EOr°Œ•žx|íœbˆ³Wm~DVjºéNN†Ëܲɶ­GƒxŷCStŸ}]ûō•SmtuÇÃĕN•™āg»šíT«u}ç½BĵÞʣ¥ëÊ¡Mێ³ãȅ¡ƋaǩÈÉQ‰†G¢·lG|›„tvgrrf«†ptęŘnŠÅĢr„I²¯LiØsPf˜_vĠd„xM prʹšL¤‹¤‡eˌƒÀđK“žïÙVY§]I‡óáĥ]ķ†Kˆ¥Œj|pŇ\\kzţ¦šnņäÔVĂîĪ¬|vW’®l¤èØr‚˜•xm¶ă~lÄƯĄ̈́öȄEÔ¤ØQĄ–Ą»ƢjȦOǺ¨ìSŖÆƬy”Qœv`–cwƒZSÌ®ü±DŽ]ŀç¬B¬©ńzƺŷɄeeOĨS’Œfm Ċ‚ƀP̎ēz©Ċ‚ÄÕÊmgŸÇsJ¥ƔˆŊśæ’΁Ñqv¿íUOµª‰ÂnĦÁ_½ä@ê텣P}Ġ[@gġ}g“ɊדûÏWXá¢užƻÌsNͽƎÁ§č՛AēeL³àydl›¦ĘVçŁpśdžĽĺſʃQíÜçÛġԏsĕ¬—Ǹ¯YßċġHµ ¡eå`ļƒrĉŘóƢFì“ĎWøxÊk†”ƈdƬv|–I|·©NqńRŀƒ¤é”eŊœŀ›ˆàŀU²ŕƀB‚Q£Ď}L¹Îk@©ĈuǰųǨ”Ú§ƈnTËÇéƟÊcfčŤ^Xm‡—HĊĕË«W·ċëx³ǔķÐċJā‚wİ_ĸ˜Ȁ^ôWr­°oú¬Ħ…ŨK~”ȰCĐ´Ƕ£’fNÎèâw¢XnŮeÂÆĶŽ¾¾xäLĴĘlļO¤ÒĨA¢Êɚ¨®‚ØCÔ ŬGƠ”ƦYĜ‡ĘÜƬDJ—g_ͥœ@čŅĻA“¶¯@wÎqC½Ĉ»NŸăëK™ďÍQ“Ùƫ[«Ãí•gßÔÇOÝáW‘ñuZ“¯ĥ€Ÿŕā¡ÑķJu¤E Ÿå¯°WKɱ_d_}}vyŸõu¬ï¹ÓU±½@gÏ¿rýD‰†g…Cd‰µ—°MFYxw¿CG£‹Rƛ½Õ{]L§{qqąš¿BÇƻğëšܭNJË|c²}Fµ}›ÙRsÓpg±ŠQNqǫŋRwŕnéÑÉKŸ†«SeYR…ŋ‹@{¤SJ}šD Ûǖ֍Ÿ]gr¡µŷjqWÛham³~S«“„›Þ]"]],encodeOffsets:[[[127123,51780]],[[134456,44547]]]},properties:{cp:[126.642464,45.756967],name:"黑龙江",childNum:2}},{id:"320000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@cþÅPiŠ`ZŸRu¥É\\]~°ŽY`µ†Óƒ^phÁbnÀşúŽòa–ĬºTÖŒb‚˜e¦¦€{¸ZâćNpŒ©žHr|^ˆmjhŠSEb\\afv`sz^lkŽlj‹Ätg‹¤D˜­¾Xš¿À’|ДiZ„ȀåB·î}GL¢õcßjaŸyBFµÏC^ĭ•cÙt¿sğH]j{s©HM¢ƒQnDÀ©DaÜތ·jgàiDbPufjDk`dPOîƒhw¡ĥ‡¥šG˜ŸP²ĐobºrY†„î¶aHŢ´ ]´‚rılw³r_{£DB_Ûdåuk|ˆŨ¯F Cºyr{XFy™e³Þċ‡¿Â™kĭB¿„MvÛpm`rÚã”@Ę¹hågËÖƿxnlč¶Åì½Ot¾dJlŠVJʜǀœŞqvnOŠ^ŸJ”Z‘ż·Q}ê͎ÅmµÒ]Žƍ¦Dq}¬R^èĂ´ŀĻĊIԒtžIJyQŐĠMNtœR®òLh‰›Ěs©»œ}OӌGZz¶A\\jĨFˆäOĤ˜HYš†JvÞHNiÜaϚɖnFQlšNM¤ˆB´ĄNöɂtp–Ŭdf先‹qm¿QûŠùއÚb¤uŃJŴu»¹Ą•lȖħŴw̌ŵ²ǹǠ͛hĭłƕrçü±Y™xci‡tğ®jű¢KOķ•Coy`å®VTa­_Ā]ŐÝɞï²ʯÊ^]afYǸÃĆēĪȣJđ͍ôƋĝÄ͎ī‰çÛɈǥ£­ÛmY`ó£Z«§°Ó³QafusNıDž_k}¢m[ÝóDµ—¡RLčiXy‡ÅNïă¡¸iĔϑNÌŕoēdōîåŤûHcs}~Ûwbù¹£¦ÓCt‹OPrƒE^ÒoŠg™ĉIµžÛÅʹK…¤½phMŠü`o怆ŀ"],encodeOffsets:[[121740,32276]]},properties:{cp:[118.767413,32.041544],name:"江苏",childNum:1}},{id:"330000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@E^dQ]K"],["@@jX^j‡"],["@@sfŠbU‡"],["@@qP\\xz[ck"],["@@‘Rƒ¢‚FX}°[s_"],["@@Cbœ\\—}"],["@@e|v\\la{u"],["@@v~u}"],["@@QxÂF¯}"],["@@¹nŒvÞs¯o"],["@@rSkUEj"],["@@bi­ZŒP"],["@@p[}INf"],["@@À¿€"],["@@¹dnbŒ…"],["@@rSŸBnR"],["@@g~h}"],["@@FlEk"],["@@OdPc"],["@@v[u\\"],["@@FjâL~wyoo~›sµL–\\"],["@@¬e¹aNˆ"],["@@\\nÔ¡q]L³ë\\ÿ®ŒQ֎"],["@@ÊA­©[¬"],["@@KxŒv­"],["@@@hlIk]"],["@@pW{o||j"],["@@Md|_mC"],["@@¢…X£ÏylD¼XˆtH"],["@@hlÜ[LykAvyfw^Ež›¤"],["@@fp¤Mus“R"],["@@®_ma~•LÁ¬šZ"],["@@iM„xZ"],["@@ZcYd"],["@@Z~dOSo|A¿qZv"],["@@@`”EN¡v"],["@@|–TY{"],["@@@n@m"],["@@XWkCT\\"],["@@ºwšZRkĕWO¢"],["@@™X®±Grƪ\\ÔáXq{‹"],["@@ůTG°ĄLHm°UC‹"],["@@¤Ž€aÜx~}dtüGæţŎíĔcŖpMËВjē¢·ðĄÆMzˆjWKĎ¢Q¶˜À_꒔_Bı€i«pZ€gf€¤Nrq]§ĂN®«H±‡yƳí¾×ŸīàLłčŴǝĂíÀBŖÕªˆŠÁŖHŗʼnåqûõi¨hÜ·ƒñt»¹ýv_[«¸m‰YL¯‰Qª…mĉÅdMˆ•gÇjcº«•ęœ¬­K­´ƒB«Âącoċ\\xKd¡gěŧ«®á’[~ıxu·Å”KsËɏc¢Ù\\ĭƛëbf¹­ģSƒĜkáƉÔ­ĈZB{ŠaM‘µ‰fzʼnfåÂŧįƋǝÊĕġć£g³ne­ą»@­¦S®‚\\ßðCšh™iqªĭiAu‡A­µ”_W¥ƣO\\lċĢttC¨£t`ˆ™PZäuXßBs‡Ļyek€OđġĵHuXBšµ]׌‡­­\\›°®¬F¢¾pµ¼kŘó¬Wät’¸|@ž•L¨¸µr“ºù³Ù~§WI‹ŸZWŽ®’±Ð¨ÒÉx€`‰²pĜ•rOògtÁZ}þÙ]„’¡ŒŸFK‚wsPlU[}¦Rvn`hq¬\\”nQ´ĘRWb”‚_ rtČFI֊kŠŠĦPJ¶ÖÀÖJĈĄTĚòžC ²@Pú…Øzœ©PœCÈڜĒ±„hŖ‡l¬â~nm¨f©–iļ«m‡nt–u†ÖZÜÄj“ŠLŽ®E̜Fª²iÊxبžIÈhhst"],["@@o\\V’zRZ}y"],["@@†@°¡mۛGĕ¨§Ianá[ýƤjfæ‡ØL–•äGr™"]],encodeOffsets:[[[125592,31553]],[[125785,31436]],[[125729,31431]],[[125513,31380]],[[125223,30438]],[[125115,30114]],[[124815,29155]],[[124419,28746]],[[124095,28635]],[[124005,28609]],[[125e3,30713]],[[125111,30698]],[[125078,30682]],[[125150,30684]],[[124014,28103]],[[125008,31331]],[[125411,31468]],[[125329,31479]],[[125626,30916]],[[125417,30956]],[[125254,30976]],[[125199,30997]],[[125095,31058]],[[125083,30915]],[[124885,31015]],[[125218,30798]],[[124867,30838]],[[124755,30788]],[[124802,30809]],[[125267,30657]],[[125218,30578]],[[125200,30562]],[[124968,30474]],[[125167,30396]],[[124955,29879]],[[124714,29781]],[[124762,29462]],[[124325,28754]],[[123990,28459]],[[125366,31477]],[[125115,30363]],[[125369,31139]],[[122495,31878]],[[125329,30690]],[[125192,30787]]]},properties:{cp:[120.153576,30.287459],name:"浙江",childNum:45}},{id:"340000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@^iuLX^"],["@@‚e©Ehl"],["@@°ZÆëϵmkǀwÌÕæhºgBĝâqÙĊz›ÖgņtÀÁÊÆá’hEz|WzqD¹€Ÿ°E‡ŧl{ævÜcA`¤C`|´qžxIJkq^³³ŸGšµbƒíZ…¹qpa±ď OH—¦™Ħˆx¢„gPícOl_iCveaOjCh߸i݋bÛªCC¿€m„RV§¢A|t^iĠGÀtÚs–d]ĮÐDE¶zAb àiödK¡~H¸íæAžǿYƒ“j{ď¿‘™À½W—®£ChŒÃsiŒkkly]_teu[bFa‰Tig‡n{]Gqªo‹ĈMYá|·¥f¥—őaSÕė™NµñĞ«ImŒ_m¿Âa]uĜp …Z_§{Cƒäg¤°r[_Yj‰ÆOdý“[ŽI[á·¥“Q_n‡ùgL¾mv™ˊBÜƶĊJhšp“c¹˜O]iŠ]œ¥ jtsggJǧw×jÉ©±›EFˍ­‰Ki”ÛÃÕYv…s•ˆm¬njĻª•§emná}k«ŕˆƒgđ²Ù›DǤ›í¡ªOy›†×Où±@DŸñSęćăÕIÕ¿IµĥO‰‰jNÕËT¡¿tNæŇàåyķrĕq§ÄĩsWÆߎF¶žX®¿‰mŒ™w…RIޓfßoG‘³¾©uyH‘į{Ɓħ¯AFnuP…ÍÔzšŒV—dàôº^Ðæd´€‡oG¤{S‰¬ćxã}›ŧ×Kǥĩ«žÕOEзÖdÖsƘѨ[’Û^Xr¢¼˜§xvěƵ`K”§ tÒ´Cvlo¸fzŨð¾NY´ı~ÉĔē…ßúLÃϖ_ÈÏ|]ÂÏFl”g`bšežž€n¾¢pU‚h~ƴĖ¶_‚r sĄ~cž”ƈ]|r c~`¼{À{ȒiJjz`îÀT¥Û³…]’u}›f…ïQl{skl“oNdŸjŸäËzDvčoQŠďHI¦rb“tHĔ~BmlRš—V_„ħTLnñH±’DžœL‘¼L˜ªl§Ťa¸ŒĚlK²€\\RòvDcÎJbt[¤€D@®hh~kt°ǾzÖ@¾ªdb„YhüóZ ň¶vHrľ\\ʗJuxAT|dmÀO„‹[ÃԋG·ĚąĐlŪÚpSJ¨ĸˆLvÞcPæķŨŽ®mАˆálŸwKhïgA¢ųƩޖ¤OȜm’°ŒK´"]],encodeOffsets:[[[121722,32278]],[[119475,30423]],[[119168,35472]]]},properties:{cp:[117.283042,31.86119],name:"安徽",childNum:3}},{id:"350000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@“zht´‡]"],["@@aj^~ĆG—©O"],["@@ed¨„C}}i"],["@@@vˆPGsQ"],["@@‰sBz‚ddW]Q"],["@@SŽ¨Q“{"],["@@NŽVucW"],["@@qptBAq"],["@@‰’¸[mu"],["@@Q\\pD]_"],["@@jSwUadpF"],["@@eXª~ƒ•"],["@@AjvFso"],["@@fT–›_Çí\\Ÿ™—v|ba¦jZÆy€°"],["@@IjJi"],["@@wJI€ˆxš«¼AoNe{M­"],["@@K‰±¡Óˆ”ČäeZ"],["@@k¡¹Eh~c®wBk‹UplÀ¡I•~Māe£bN¨gZý¡a±Öcp©PhžI”Ÿ¢Qq…ÇGj‹|¥U™ g[Ky¬ŏ–v@OpˆtÉEŸF„\\@ åA¬ˆV{Xģ‰ĐBy…cpě…¼³Ăp·¤ƒ¥o“hqqÚ¡ŅLsƒ^ᗞ§qlŸÀhH¨MCe»åÇGD¥zPO£čÙkJA¼ß–ėu›ĕeûҍiÁŧSW¥˜QŠûŗ½ùěcݧSùĩąSWó«íęACµ›eR—åǃRCÒÇZÍ¢‹ź±^dlsŒtjD¸•‚ZpužÔâÒH¾oLUêÃÔjjēò´ĄW‚ƛ…^Ñ¥‹ĦŸ@Çò–ŠmŒƒOw¡õyJ†yD}¢ďÑÈġfŠZd–a©º²z£šN–ƒjD°Ötj¶¬ZSÎ~¾c°¶Ðm˜x‚O¸¢Pl´žSL|¥žA†ȪĖM’ņIJg®áIJČĒü` ŽQF‡¬h|ÓJ@zµ |ê³È ¸UÖŬŬÀEttĸr‚]€˜ðŽM¤ĶIJHtÏ A’†žĬkvsq‡^aÎbvŒd–™fÊòSD€´Z^’xPsÞrv‹ƞŀ˜jJd×ŘÉ ®A–ΦĤd€xĆqAŒ†ZR”ÀMźŒnĊ»ŒİÐZ— YX–æJŠyĊ²ˆ·¶q§·–K@·{s‘Xãô«lŗ¶»o½E¡­«¢±¨Yˆ®Ø‹¶^A™vWĶGĒĢžPlzfˆļŽtàAvWYãšO_‡¤sD§ssČġ[kƤPX¦Ž`¶“ž®ˆBBvĪjv©šjx[L¥àï[F…¼ÍË»ğV`«•Ip™}ccÅĥZE‹ãoP…´B@ŠD—¸m±“z«Ƴ—¿å³BRضˆœWlâþäą`“]Z£Tc— ĹGµ¶H™m@_©—kŒ‰¾xĨ‡ôȉðX«½đCIbćqK³Á‹Äš¬OAwã»aLʼn‡ËĥW[“ÂGI—ÂNxij¤D¢ŽîĎÎB§°_JœGsƒ¥E@…¤uć…P‘å†cuMuw¢BI¿‡]zG¹guĮck\\_"]],encodeOffsets:[[[123250,27563]],[[122541,27268]],[[123020,27189]],[[122916,27125]],[[122887,26845]],[[122808,26762]],[[122568,25912]],[[122778,26197]],[[122515,26757]],[[122816,26587]],[[123388,27005]],[[122450,26243]],[[122578,25962]],[[121255,25103]],[[120987,24903]],[[122339,25802]],[[121042,25093]],[[122439,26024]]]},properties:{cp:[119.306239,26.075302],name:"福建",childNum:18}},{id:"360000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@ĢĨƐgļˆ¼ÂMD~ņªe^\\^§„ý©j׍cZ†Ø¨zdÒa¶ˆlҍJŒìõ`oz÷@¤u޸´†ôęöY¼‰HČƶajlÞƩ¥éZ[”|h}^U Œ ¥p„ĄžƦO lt¸Æ €Q\\€ŠaÆ|CnÂOjt­ĚĤd’ÈŒF`’¶„@Ð딠¦ōҞ¨Sêv†HĢûXD®…QgėWiØPÞìºr¤dž€NĠ¢l–•ĄtZoœCƞÔºCxrpĠV®Ê{f_Y`_ƒeq’’®Aot`@o‚DXfkp¨|Šs¬\\D‘ÄSfè©Hn¬…^DhÆyøJh“ØxĢĀLʈ„ƠPżċĄwȠ̦G®ǒĤäTŠÆ~ĦwŠ«|TF¡Šn€c³Ïå¹]ĉđxe{ÎӐ†vOEm°BƂĨİ|G’vz½ª´€H’àp”eJ݆Qšxn‹ÀŠW­žEµàXÅĪt¨ÃĖrÄwÀFÎ|ňÓMå¼ibµ¯»åDT±m[“r«_gŽmQu~¥V\\OkxtL E¢‹ƒ‘Ú^~ýê‹Pó–qo슱_Êw§ÑªåƗā¼‹mĉŹ‹¿NQ“…YB‹ąrwģcÍ¥B•Ÿ­ŗÊcØiI—žƝĿuŒqtāwO]‘³YCñTeɕš‹caub͈]trlu€ī…B‘ПGsĵıN£ï—^ķqss¿FūūV՟·´Ç{éĈý‰ÿ›OEˆR_ŸđûIċâJh­ŅıN‘ȩĕB…¦K{Tk³¡OP·wn—µÏd¯}½TÍ«YiµÕsC¯„iM•¤™­•¦¯P|ÿUHv“he¥oFTu‰õ\\ŽOSs‹MòđƇiaºćXŸĊĵà·çhƃ÷ǜ{‘ígu^›đg’m[×zkKN‘¶Õ»lčÓ{XSƉv©_ÈëJbVk„ĔVÀ¤P¾ºÈMÖxlò~ªÚàGĂ¢B„±’ÌŒK˜y’áV‡¼Ã~­…`g›ŸsÙfI›Ƌlę¹e|–~udjˆuTlXµf`¿JdŠ[\\˜„L‚‘²"],encodeOffsets:[[116689,26234]]},properties:{cp:[115.892151,28.676493],name:"江西",childNum:1}},{id:"370000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@Xjd]{K"],["@@itbFHy"],["@@HlGk"],["@@T‚ŒGŸy"],["@@K¬˜•‹U"],["@@WdXc"],["@@PtOs"],["@@•LnXhc"],["@@ppVƒu]Or"],["@@cdzAUa"],["@@udRhnCI‡"],["@@ˆoIƒpR„"],["@@Ľč{fzƤî’Kš–ÎMĮ]†—ZFˆ½Y]â£ph’™š¶¨râøÀ†ÎǨ¤^ºÄ”Gzˆ~grĚĜlĞƄLĆdž¢Îo¦–cv“Kb€gr°Wh”mZp ˆL]LºcU‰Æ­n”żĤÌĒœbAnrOAœ´žȊcÀbƦUØrĆUÜøœĬƞ†š˜Ez„VL®öØBkŖÝĐĖ¹ŧ̄±ÀbÎɜnb²ĦhņBĖ›žįĦåXćì@L¯´ywƕCéõė ƿ¸‘lµ¾Z|†ZWyFYŸ¨Mf~C¿`€à_RÇzwƌfQnny´INoƬˆèôº|sT„JUš›‚L„îVj„ǎ¾Ē؍‚Dz²XPn±ŴPè¸ŔLƔÜƺ_T‘üÃĤBBċȉöA´fa„˜M¨{«M`‡¶d¡ô‰Ö°šmȰBÔjjŒ´PM|”c^d¤u•ƒ¤Û´Œä«ƢfPk¶Môlˆ]Lb„}su^ke{lC‘…M•rDŠÇ­]NÑFsmoõľH‰yGă{{çrnÓE‰‹ƕZGª¹Fj¢ïW…uøCǷ돡ąuhÛ¡^Kx•C`C\\bÅxì²ĝÝ¿_N‰īCȽĿåB¥¢·IŖÕy\\‡¹kx‡Ã£Č×GDyÕ¤ÁçFQ¡„KtŵƋ]CgÏAùSed‡cÚź—ŠuYfƒyMmhUWpSyGwMPqŀ—›Á¼zK›¶†G•­Y§Ëƒ@–´śÇµƕBmœ@Io‚g——Z¯u‹TMx}C‘‰VK‚ï{éƵP—™_K«™pÛÙqċtkkù]gŽ‹Tğwo•ɁsMõ³ă‡AN£™MRkmEʕč™ÛbMjÝGu…IZ™—GPģ‡ãħE[iµBEuŸDPԛ~ª¼ętŠœ]ŒûG§€¡QMsğNPŏįzs£Ug{đJĿļā³]ç«Qr~¥CƎÑ^n¶ÆéÎR~Ż¸Y’I“] P‰umŝrƿ›‰›Iā‹[x‰edz‹L‘¯v¯s¬ÁY…~}…ťuŁŒg›ƋpÝĄ_ņī¶ÏSR´ÁP~ž¿Cyžċßdwk´Ss•X|t‰`Ä Èð€AªìÎT°¦Dd–€a^lĎDĶÚY°Ž`ĪŴǒˆ”àŠv\\ebŒZH„ŖR¬ŢƱùęO•ÑM­³FۃWp[ƒ"]],encodeOffsets:[[[123806,39303]],[[123821,39266]],[[123742,39256]],[[123702,39203]],[[123649,39066]],[[123847,38933]],[[123580,38839]],[[123894,37288]],[[123043,36624]],[[123344,38676]],[[123522,38857]],[[123628,38858]],[[118260,36742]]]},properties:{cp:[117.000923,36.675807],name:"山东",childNum:13}},{id:"410000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@•ýL™ùµP³swIÓxcŢĞð†´E®žÚPt†ĴXØx¶˜@«ŕŕQGƒ‹Yfa[şu“ßǩ™đš_X³ijÕčC]kbc•¥CS¯ëÍB©÷‹–³­Siˆ_}m˜YTtž³xlàcȂzÀD}ÂOQ³ÐTĨ¯†ƗòËŖ[hœł‹Ŧv~††}ÂZž«¤lPǕ£ªÝŴÅR§ØnhcŒtâk‡nύ­ľŹUÓÝdKuķ‡I§oTũÙďkęĆH¸ÓŒ\\ăŒ¿PcnS{wBIvɘĽ[GqµuŸŇôYgûƒZcaŽ©@½Õǽys¯}lgg@­C\\£as€IdÍuCQñ[L±ęk·‹ţb¨©kK—’»›KC²‘òGKmĨS`ƒ˜UQ™nk}AGē”sqaJ¥ĐGR‰ĎpCuÌy ã iMc”plk|tRk†ðœev~^‘´†¦ÜŽSí¿_iyjI|ȑ|¿_»d}qŸ^{“Ƈdă}Ÿtqµ`Ƴĕg}V¡om½fa™Ço³TTj¥„tĠ—Ry”K{ùÓjuµ{t}uËR‘iŸvGŠçJFjµŠÍyqΘàQÂFewixGw½Yŷpµú³XU›½ġy™łå‰kÚwZXˆ·l„¢Á¢K”zO„Λ΀jc¼htoDHr…|­J“½}JZ_¯iPq{tę½ĕ¦Zpĵø«kQ…Ťƒ]MÛfaQpě±ǽ¾]u­Fu‹÷nƒ™čįADp}AjmcEǒaª³o³ÆÍSƇĈÙDIzˑ赟^ˆKLœ—i—Þñ€[œƒaA²zz‰Ì÷Dœ|[šíijgf‚ÕÞd®|`ƒĆ~„oĠƑô³Ŋ‘D×°¯CsŠøÀ«ì‰UMhTº¨¸ǡîS–Ô„DruÂÇZ•ÖEŽ’vPZ„žW”~؋ÐtĄE¢¦Ðy¸bŠô´oŬ¬Ž²Ês~€€]®tªašpŎJ¨Öº„_ŠŔ–`’Ŗ^Ѝ\\Ĝu–”~m²Ƹ›¸fW‰ĦrƔ}Î^gjdfÔ¡J}\\n C˜¦þWxªJRÔŠu¬ĨĨmF†dM{\\d\\ŠYÊ¢ú@@¦ª²SŠÜsC–}fNècbpRmlØ^g„d¢aÒ¢CZˆZxvÆ¶N¿’¢T@€uCœ¬^ĊðÄn|žlGl’™Rjsp¢ED}€Fio~ÔNŽ‹„~zkĘHVsDzßjƒŬŒŠŢ`Pûàl¢˜\\ÀœEhŽİgÞē X¼Pk–„|m"],encodeOffsets:[[118256,37017]]},properties:{cp:[113.665412,34.757975],name:"河南",childNum:1}},{id:"420000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@AB‚"],["@@lskt"],["@@¾«}{ra®pîÃ\\™›{øCŠËyyB±„b\\›ò˜Ý˜jK›‡L ]ĎĽÌ’JyÚCƈćÎT´Å´pb©È‘dFin~BCo°BĎĚømvŒ®E^vǾ½Ĝ²Ro‚bÜeNŽ„^ĺ£R†¬lĶ÷YoĖ¥Ě¾|sOr°jY`~I”¾®I†{GqpCgyl{‡£œÍƒÍyPL“¡ƒ¡¸kW‡xYlÙ抚ŁĢzœ¾žV´W¶ùŸo¾ZHxjwfx„GNÁ•³Xéæl¶‰EièIH‰ u’jÌQ~v|sv¶Ôi|ú¢Fh˜Qsğ¦ƒSiŠBg™ÐE^ÁÐ{–čnOÂȞUÎóĔ†ÊēIJ}Z³½Mŧïeyp·uk³DsѨŸL“¶_œÅuèw»—€¡WqÜ]\\‘Ò§tƗcÕ¸ÕFÏǝĉăxŻČƟO‡ƒKÉġÿ×wg”÷IÅzCg†]m«ªGeçÃTC’«[‰t§{loWeC@ps_Bp‘­r‘„f_``Z|ei¡—oċMqow€¹DƝӛDYpûs•–‹Ykıǃ}s¥ç³[§ŸcYŠ§HK„«Qy‰]¢“wwö€¸ïx¼ņ¾Xv®ÇÀµRĠЋžHMž±cÏd„ƒǍũȅȷ±DSyúĝ£ŤĀàtÖÿï[îb\\}pĭÉI±Ñy…¿³x¯N‰o‰|¹H™ÏÛm‹júË~Tš•u˜ęjCöAwě¬R’đl¯ Ñb­‰ŇT†Ŀ_[Œ‘IčĄʿnM¦ğ\\É[T·™k¹œ©oĕ@A¾w•ya¥Y\\¥Âaz¯ãÁ¡k¥ne£Ûw†E©Êō¶˓uoj_Uƒ¡cF¹­[Wv“P©w—huÕyBF“ƒ`R‹qJUw\\i¡{jŸŸEPïÿ½fć…QÑÀQ{ž‚°‡fLԁ~wXg—ītêݾ–ĺ‘Hdˆ³fJd]‹HJ²…E€ƒoU¥†HhwQsƐ»Xmg±çve›]Dm͂PˆoCc¾‹_h”–høYrŊU¶eD°Č_N~øĹĚ·`z’]Äþp¼…äÌQŒv\\rCŒé¾TnkžŐڀÜa‡“¼ÝƆĢ¶Ûo…d…ĔňТJq’Pb ¾|JŒ¾fXŠƐîĨ_Z¯À}úƲ‹N_ĒĊ^„‘ĈaŐyp»CÇĕKŠšñL³ŠġMŒ²wrIÒŭxjb[œžn«øœ˜—æˆàƒ ^²­h¯Ú€ŐªÞ¸€Y²ĒVø}Ā^İ™´‚LŠÚm„¥ÀJÞ{JVŒųÞŃx×sxxƈē ģMř–ÚðòIf–Ċ“Œ\\Ʈ±ŒdʧĘD†vČ_Àæ~DŒċ´A®µ†¨ØLV¦êHÒ¤"]],encodeOffsets:[[[113712,34e3]],[[115612,30507]],[[113649,34054]]]},properties:{cp:[114.298572,30.584355],name:"湖北",childNum:3}},{id:"430000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@—n„FTs"],["@@ßÅÆችÔXr—†CO™“…ËR‘ïÿĩ­TooQyšÓ[‹ŅBE¬–ÎÓXa„į§Ã¸G °ITxp‰úxÚij¥Ïš–Ģ¾ŠedžÄ©ĸG…œàGh‚€M¤–Â_U}Ċ}¢pczfŠþg¤€”ÇòAV‘‹M"],["@@©K—ƒA·³CQ±Á«³BUŠƑ¹AŠtćOw™D]ŒJiØSm¯b£‘ylƒ›X…HËѱH•«–‘C^õľA–Å§¤É¥„ïyuǙuA¢^{ÌC´­¦ŷJ£^[†“ª¿‡ĕ~•Ƈ…•N… skóā‡¹¿€ï]ă~÷O§­@—Vm¡‹Qđ¦¢Ĥ{ºjԏŽŒª¥nf´•~ÕoŸž×Ûą‹MąıuZœmZcÒ IJĪ²SÊDŽŶ¨ƚƒ’CÖŎªQؼrŭŽ­«}NÏürʬŒmjr€@ĘrTW ­SsdHzƓ^ÇÂyUi¯DÅYlŹu{hTœ}mĉ–¹¥ě‰Dÿë©ıÓ[Oº£ž“¥ót€ł¹MՄžƪƒ`Pš…Di–ÛUŠ¾Å‌ìˆU’ñB“È£ýhe‰dy¡oċ€`pfmjP~‚kZa…ZsÐd°wj§ƒ@€Ĵ®w~^‚kÀÅKvNmX\\¨a“”сqvíó¿F„¤¡@ũÑVw}S@j}¾«pĂr–ªg àÀ²NJ¶¶Dô…K‚|^ª†Ž°LX¾ŴäPĪ±œ£EXd›”^¶›IJÞܓ~‘u¸ǔ˜Ž›MRhsR…e†`ÄofIÔ\\Ø  i”ćymnú¨cj ¢»–GČìƊÿШXeĈĀ¾Oð Fi ¢|[jVxrIQŒ„_E”zAN¦zLU`œcªx”OTu RLÄ¢dV„i`p˔vŎµªÉžF~ƒØ€d¢ºgİàw¸Áb[¦Zb¦–z½xBĖ@ªpº›šlS¸Ö\\Ĕ[N¥ˀmĎă’J\\‹ŀ`€…ňSڊĖÁĐiO“Ĝ«BxDõĚiv—ž–S™Ì}iùŒžÜnšÐºGŠ{Šp°M´w†ÀÒzJ²ò¨ oTçüöoÛÿñŽőФ‚ùTz²CȆȸǎŪƒƑÐc°dPÎŸğ˶[Ƚu¯½WM¡­Éž“’B·rížnZŸÒ `‡¨GA¾\\pē˜XhÆRC­üWGġu…T靧Ŏѝ©ò³I±³}_‘‹EÃħg®ęisÁPDmÅ{‰b[Rşs·€kPŸŽƥƒóRo”O‹ŸVŸ~]{g\\“êYƪ¦kÝbiċƵŠGZ»Ěõ…ó·³vŝž£ø@pyö_‹ëŽIkѵ‡bcѧy…×dY؎ªiþž¨ƒ[]f]Ņ©C}ÁN‡»hĻħƏ’ĩ"]],encodeOffsets:[[[115640,30489]],[[112543,27312]],[[116690,26230]]]},properties:{cp:[112.982279,28.19409],name:"湖南",childNum:3}},{id:"440000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@QdˆAua"],["@@ƒlxDLo"],["@@sbhNLo"],["@@Ă āŸ"],["@@WltO[["],["@@Krœ]S"],["@@e„„I]y"],["@@I|„Mym"],["@@ƒÛ³LSŒž¼Y"],["@@nvºB–ëui©`¾"],["@@zdšÛ›Jw®"],["@@†°…¯"],["@@a yAª¸ËJIx،@€ĀHAmßV¡o•fu•o"],["@@šs‰ŗÃÔėAƁ›ZšÄ ~°ČP‚‹äh"],["@@‹¶Ý’Ì‚vmĞh­ı‡Q"],["@@HœŠdSjĒ¢D}war…“u«ZqadYM"],["@@elŒ\\LqqU"],["@@~rMo\\"],["@@f„^ƒC"],["@@øPªoj÷ÍÝħXČx”°Q¨ıXNv"],["@@gÇƳˆŽˆ”oˆŠˆ[~tly"],["@@E–ÆC¿‘"],["@@OŽP"],["@@w‹†đóg‰™ĝ—[³‹¡VÙæÅöM̳¹pÁaËýý©D©Ü“JŹƕģGą¤{Ùū…ǘO²«BƱéA—Ò‰ĥ‡¡«BhlmtÃPµyU¯uc“d·w_bŝcīímGOŽ|KP’ȏ‡ŹãŝIŕŭŕ@Óoo¿ē‹±ß}Ž…ŭ‚ŸIJWÈCőâUâǙI›ğʼn©I›ijEׅÁ”³Aó›wXJþ±ÌŒÜӔĨ£L]ĈÙƺZǾĆĖMĸĤfŒÎĵl•ŨnȈ‘ĐtF”Š–FĤ–‚êk¶œ^k°f¶gŠŽœ}®Fa˜f`vXŲxl˜„¦–ÔÁ²¬ÐŸ¦pqÊ̲ˆi€XŸØRDÎ}†Ä@ZĠ’s„x®AR~®ETtĄZ†–ƈfŠŠHâÒÐA†µ\\S¸„^wĖkRzŠalŽŜ|E¨ÈNĀňZTŒ’pBh£\\ŒĎƀuXĖtKL–¶G|Ž»ĺEļĞ~ÜĢÛĊrˆO˜Ùîvd]nˆ¬VœÊĜ°R֟pM††–‚ƂªFbwžEÀˆ˜©Œž\\…¤]ŸI®¥D³|ˎ]CöAŤ¦…æ’´¥¸Lv¼€•¢ĽBaô–F~—š®²GÌҐEY„„œzk¤’°ahlV՞I^‹šCxĈPŽsB‰ƒºV‰¸@¾ªR²ĨN]´_eavSi‡vc•}p}Đ¼ƌkJœÚe thœ†_¸ ºx±ò_xN›Ë‹²‘@ƒă¡ßH©Ùñ}wkNÕ¹ÇO½¿£ĕ]ly_WìIžÇª`ŠuTÅxYĒÖ¼k֞’µ‚MžjJÚwn\\h‘œĒv]îh|’È›Ƅøègž¸Ķß ĉĈWb¹ƀdéʌNTtP[ŠöSvrCZžžaGuœbo´ŖÒÇА~¡zCI…özx¢„Pn‹•‰Èñ @ŒĥÒ¦†]ƞŠV}³ăĔñiiÄÓVépKG½Ä‘ÓávYo–C·sit‹iaÀy„ŧΡÈYDÑům}‰ý|m[węõĉZÅxUO}÷N¹³ĉo_qtă“qwµŁYلǝŕ¹tïÛUïmRCº…ˆĭ|µ›ÕÊK™½R‘ē ó]‘–GªęAx–»HO£|ām‡¡diď×YïYWªʼnOeÚtĐ«zđ¹T…ā‡úE™á²\\‹ķÍ}jYàÙÆſ¿Çdğ·ùTßÇţʄ¡XgWÀLJğ·¿ÃˆOj YÇ÷Qě‹i"]],encodeOffsets:[[[117381,22988]],[[116552,22934]],[[116790,22617]],[[116973,22545]],[[116444,22536]],[[116931,22515]],[[116496,22490]],[[116453,22449]],[[113301,21439]],[[118726,21604]],[[118709,21486]],[[113210,20816]],[[115482,22082]],[[113171,21585]],[[113199,21590]],[[115232,22102]],[[115739,22373]],[[115134,22184]],[[113056,21175]],[[119573,21271]],[[119957,24020]],[[115859,22356]],[[116561,22649]],[[116285,22746]]]},properties:{cp:[113.280637,23.125178],name:"广东",childNum:24}},{id:"450000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@H– TQ§•A"],["@@ĨʪƒLƒƊDÎĹĐCǦė¸zÚGn£¾›rªŀÜt¬@֛ڈSx~øOŒ˜ŶÐÂæȠ\\„ÈÜObĖw^oބLf¬°bI lTØB̈F£Ć¹gñĤaY“t¿¤VSñœK¸¤nM†¼‚JE±„½¸šŠño‹ÜCƆæĪ^ŠĚQÖ¦^‡ˆˆf´Q†üÜʝz¯šlzUĺš@쇀p¶n]sxtx¶@„~ÒĂJb©gk‚{°‚~c°`ԙ¬rV\\“la¼¤ôá`¯¹LC†ÆbŒxEræO‚v[H­˜„[~|aB£ÖsºdAĐzNÂðsŽÞƔ…Ĥªbƒ–ab`ho¡³F«èVloŽ¤™ÔRzpp®SŽĪº¨ÖƒºN…ij„d`’a”¦¤F³ºDÎńĀìŠCžĜº¦Ċ•~nS›|gźvZkCÆj°zVÈÁƔ]LÊFZg…čP­kini«‹qǀcz͔Y®¬Ů»qR×ō©DՄ‘§ƙǃŵTÉĩ±ŸıdÑnYY›IJvNĆƌØÜ Öp–}e³¦m‹©iÓ|¹Ÿħņ›|ª¦QF¢Â¬ʖovg¿em‡^ucà÷gՎuŒíÙćĝ}FĻ¼Ĺ{µHK•sLSđƃr‹č¤[Ag‘oS‹ŇYMÿ§Ç{Fśbky‰lQxĕƒ]T·¶[B…ÑÏGáşşƇe€…•ăYSs­FQ}­Bƒw‘tYğÃ@~…C̀Q ×W‡j˱rÉ¥oÏ ±«ÓÂ¥•ƒ€k—ŽwWűŒmcih³K›~‰µh¯e]lµ›él•Eģ‰•E“ďs‡’mǖŧē`ãògK_ÛsUʝ“ćğ¶hŒöŒO¤Ǜn³Žc‘`¡y‹¦C‘ez€YŠwa™–‘[ďĵűMę§]X˜Î_‚훘Û]é’ÛUćİÕBƣ±…dƒy¹T^džûÅÑŦ·‡PĻþÙ`K€¦˜…¢ÍeœĥR¿Œ³£[~Œäu¼dl‰t‚†W¸oRM¢ď\\zœ}Æzdvň–{ÎXF¶°Â_„ÒÂÏL©Ö•TmuŸ¼ãl‰›īkiqéfA„·Êµ\\őDc¥ÝF“y›Ôć˜c€űH_hL܋êĺШc}rn`½„Ì@¸¶ªVLŒŠhŒ‹\\•Ţĺk~ŽĠið°|gŒtTĭĸ^x‘vK˜VGréAé‘bUu›MJ‰VÃO¡…qĂXËS‰ģãlýàŸ_ju‡YÛÒB†œG^˜é֊¶§ŽƒEG”ÅzěƒƯ¤Ek‡N[kdåucé¬dnYpAyČ{`]þ¯T’bÜÈk‚¡Ġ•vŒàh„ÂƄ¢J"]],encodeOffsets:[[[111707,21520]],[[107619,25527]]]},properties:{cp:[108.320004,22.82402],name:"广西",childNum:2}},{id:"460000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@š¦Ŝil¢”XƦ‘ƞò–ïè§ŞCêɕrŧůÇąĻõ™·ĉ³œ̅kÇm@ċȧƒŧĥ‰Ľʉ­ƅſ“ȓÒ˦ŝE}ºƑ[ÍĜȋ gÎfǐÏĤ¨êƺ\\Ɔ¸ĠĎvʄȀœÐ¾jNðĀÒRŒšZdž™zÐŘΰH¨Ƣb²_Ġ "],encodeOffsets:[[112750,20508]]},properties:{cp:[110.33119,20.031971],name:"海南",childNum:1}},{id:"510000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@LqKr"],["@@Š[ĻéV£ž_ţġñpG •réÏ·~ąSfy×͂·ºſƽiÍıƣıĻmHH}siaX@iÇ°ÁÃ×t«ƒ­Tƒ¤J–JJŒyJ•ÈŠ`Ohߦ¡uËhIyCjmÿw…ZG……Ti‹SˆsO‰žB²ŸfNmsPaˆ{M{ŠõE‘^Hj}gYpaeuž¯‘oáwHjÁ½M¡pM“–uå‡mni{fk”\\oƒÎqCw†EZ¼K›ĝŠƒAy{m÷L‡wO×SimRI¯rK™õBS«sFe‡]fµ¢óY_ÆPRcue°Cbo׌bd£ŌIHgtrnyPt¦foaXďx›lBowz‹_{ÊéWiêE„GhܸºuFĈIxf®Ž•Y½ĀǙ]¤EyŸF²ċ’w¸¿@g¢§RGv»–áŸW`ÃĵJwi]t¥wO­½a[׈]`Ãi­üL€¦LabbTÀå’c}Íh™Æhˆ‹®BH€î|Ék­¤S†y£„ia©taį·Ɖ`ō¥Uh“O…ƒĝLk}©Fos‰´›Jm„µlŁu—…ø–nÑJWΪ–YÀïAetTžŅ‚ӍG™Ë«bo‰{ıwodƟ½ƒžOġܑµxàNÖ¾P²§HKv¾–]|•B‡ÆåoZ`¡Ø`ÀmºĠ~ÌЧnDž¿¤]wğ@sƒ‰rğu‰~‘Io”[é±¹ ¿žſđӉ@q‹gˆ¹zƱřaí°KtǤV»Ã[ĩǭƑ^ÇÓ@ỗs›Zϕ‹œÅĭ€Ƌ•ěpwDóÖሯneQˌq·•GCœýS]xŸ·ý‹q³•O՜Œ¶Qzßti{ř‰áÍÇWŝŭñzÇW‹pç¿JŒ™‚Xœĩè½cŒF–ÂLiVjx}\\N†ŇĖ¥Ge–“JA¼ÄHfÈu~¸Æ«dE³ÉMA|b˜Ò…˜ćhG¬CM‚õŠ„ƤąAvƒüV€éŀ‰_V̳ĐwQj´·ZeÈÁ¨X´Æ¡Qu·»Ÿ“˜ÕZ³ġqDo‰y`L¬gdp°şŠp¦ėìÅĮZŽ°Iä”h‚‘ˆzŠĵœf²å ›ĚрKp‹IN|‹„Ñz]ń……·FU×é»R³™MƒÉ»GM«€ki€™ér™}Ã`¹ăÞmȝnÁîRǀ³ĜoİzŔwǶVÚ£À]ɜ»ĆlƂ²Ġ…þTº·àUȞÏʦ¶†I’«dĽĢdĬ¿–»Ĕ׊h\\c¬†ä²GêëĤł¥ÀǿżÃÆMº}BÕĢyFVvw–ˆxBèĻĒ©Ĉ“tCĢɽŠȣ¦āæ·HĽî“ôNԓ~^¤Ɗœu„œ^s¼{TA¼ø°¢İªDè¾Ň¶ÝJ‘®Z´ğ~Sn|ªWÚ©òzPOȸ‚bð¢|‹øĞŠŒœŒQìÛÐ@Ğ™ǎRS¤Á§d…i“´ezÝúØã]Hq„kIŸþËQǦÃsǤ[E¬ÉŪÍxXƒ·ÖƁİlƞ¹ª¹|XÊwn‘ÆƄmÀêErĒtD®ċæcQƒ”E®³^ĭ¥©l}äQto˜ŖÜqƎkµ–„ªÔĻĴ¡@Ċ°B²Èw^^RsºTĀ£ŚæœQP‘JvÄz„^Đ¹Æ¯fLà´GC²‘dt˜­ĀRt¼¤ĦOðğfÔðDŨŁĞƘïžPȆ®âbMüÀXZ ¸£@Ś›»»QÉ­™]d“sÖ×_͖_ÌêŮPrĔĐÕGĂeZÜîĘqBhtO ¤tE[h|Y‹Ô‚ZśÎs´xº±UŒ’ñˆt|O’ĩĠºNbgþŠJy^dÂY Į„]Řz¦gC‚³€R`ĀŠz’¢AjŒ¸CL„¤RÆ»@­Ŏk\\Ç´£YW}z@Z}‰Ã¶“oû¶]´^N‡Ò}èN‚ª–P˜Íy¹`S°´†ATe€VamdUĐwʄvĮÕ\\ƒu‹Æŗ¨Yp¹àZÂm™Wh{á„}WØǍ•Éüw™ga§áCNęÎ[ĀÕĪgÖɪX˜øx¬½Ů¦¦[€—„NΆL€ÜUÖ´òrÙŠxR^–†J˜k„ijnDX{Uƒ~ET{ļº¦PZc”jF²Ė@Žp˜g€ˆ¨“B{ƒu¨ŦyhoÚD®¯¢˜ WòàFΤ¨GDäz¦kŮPœġq˚¥À]€Ÿ˜eŽâÚ´ªKxī„Pˆ—Ö|æ[xäJÞĥ‚s’NÖ½ž€I†¬nĨY´®Ð—ƐŠ€mD™ŝuäđđEb…e’e_™v¡}ìęNJē}q”É埁T¯µRs¡M@}ůa†a­¯wvƉåZwž\\Z{åû^›"]],encodeOffsets:[[[108815,30935]],[[110617,31811]]]},properties:{cp:[104.065735,30.659462],name:"四川",childNum:2}},{id:"520000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@†G\\†lY£‘in"],["@@q‚|ˆ‚mc¯tχVSÎ"],["@@hÑ£Is‡NgßH†›HªķÃh_¹ƒ¡ĝħń¦uيùŽgS¯JHŸ|sÝÅtÁïyMDč»eÕtA¤{b\\}—ƒG®u\\åPFq‹wÅaD…žK°ºâ_£ùbµ”mÁ‹ÛœĹM[q|hlaªāI}тƒµ@swtwm^oµˆD鼊yV™ky°ÉžûÛR…³‚‡eˆ‡¥]RՋěħ[ƅåÛDpŒ”J„iV™™‰ÂF²I…»mN·£›LbÒYb—WsÀbŽ™pki™TZĄă¶HŒq`……ĥ_JŸ¯ae«ƒKpÝx]aĕÛPƒÇȟ[ÁåŵÏő—÷Pw}‡TœÙ@Õs«ĿÛq©½œm¤ÙH·yǥĘĉBµĨÕnđ]K„©„œá‹ŸG纍§Õßg‡ǗĦTèƤƺ{¶ÉHÎd¾ŚÊ·OÐjXWrãLyzÉAL¾ę¢bĶėy_qMĔąro¼hĊžw¶øV¤w”²Ĉ]ʚKx|`ź¦ÂÈdr„cȁbe¸›`I¼čTF´¼Óýȃr¹ÍJ©k_șl³´_pН`oÒhŽ¶pa‚^ÓĔ}D»^Xyœ`d˜[Kv…JPhèhCrĂĚÂ^Êƌ wˆZL­Ġ£šÁbrzOIl’MM”ĪŐžËr×ÎeŦŽtw|Œ¢mKjSǘňĂStÎŦEtqFT†¾†E쬬ôxÌO¢Ÿ KŠ³ŀºäY†„”PVgŎ¦Ŋm޼VZwVlŒ„z¤…ž£Tl®ctĽÚó{G­A‡ŒÇgeš~Αd¿æaSba¥KKûj®_ć^\\ؾbP®¦x^sxjĶI_Ä X‚⼕Hu¨Qh¡À@Ëô}Ž±žGNìĎlT¸ˆ…`V~R°tbÕĊ`¸úÛtπFDu€[ƒMfqGH·¥yA‰ztMFe|R‚_Gk†ChZeÚ°to˜v`x‹b„ŒDnÐ{E}šZ˜è€x—†NEފREn˜[Pv@{~rĆAB§‚EO¿|UZ~ì„Uf¨J²ĂÝƀ‚sª–B`„s¶œfvö¦ŠÕ~dÔq¨¸º»uù[[§´sb¤¢zþFœ¢Æ…Àhˆ™ÂˆW\\ıŽËI݊o±ĭŠ£þˆÊs}¡R]ŒěƒD‚g´VG¢‚j±®è†ºÃmpU[Á›‘Œëº°r›ÜbNu¸}Žº¼‡`ni”ºÔXĄ¤¼Ôdaµ€Á_À…†ftQQgœR—‘·Ǔ’v”}Ýלĵ]µœ“Wc¤F²›OĩųãW½¯K‚©…]€{†LóµCIµ±Mß¿hŸ•©āq¬o‚½ž~@i~TUxŪÒ¢@ƒ£ÀEîôruń‚”“‚b[§nWuMÆLl¿]x}ij­€½"]],encodeOffsets:[[[112158,27383]],[[112105,27474]],[[112095,27476]]]},properties:{cp:[106.713478,26.578343],name:"贵州",childNum:3}},{id:"530000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@[„ùx½}ÑRH‘YīĺûsÍn‘iEoã½Ya²ė{c¬ĝg•ĂsA•ØÅwď‚õzFjw}—«Dx¿}UũlŸê™@•HÅ­F‰¨ÇoJ´Ónũuą¡Ã¢pÒŌ“Ø TF²‚xa²ËX€‚cʋlHîAßËŁkŻƑŷÉ©h™W­æßU‡“Ës¡¦}•teèƶStǀÇ}Fd£j‹ĈZĆÆ‹¤T‚č\\Dƒ}O÷š£Uˆ§~ŃG™‚åŃDĝ¸œTsd¶¶Bªš¤u¢ŌĎo~t¾ÍŶÒtD¦Ú„iôö‰€z›ØX²ghįh½Û±¯€ÿm·zR¦Ɵ`ªŊÃh¢rOԍ´£Ym¼èêf¯ŪĽn„†cÚbŒw\\zlvWžªâˆ ¦g–mĿBş£¢ƹřbĥkǫßeeZkÙIKueT»sVesb‘aĕ  ¶®dNœĄÄpªyŽ¼—„³BE˜®l‡ŽGœŭCœǶwêżĔÂe„pÍÀQƞpC„–¼ŲÈ­AÎô¶R„ä’Q^Øu¬°š_Èôc´¹ò¨P΢hlϦ´Ħ“Æ´sâDŽŲPnÊD^¯°’Upv†}®BP̪–jǬx–Söwlfòªv€qĸ|`H€­viļ€ndĜ­Ćhň•‚em·FyށqóžSį¯‘³X_ĞçêtryvL¤§z„¦c¦¥jnŞk˜ˆlD¤øz½ĜàžĂŧMÅ|áƆàÊcðÂF܎‚áŢ¥\\\\º™İøÒÐJĴ‡„îD¦zK²ǏÎEh~’CD­hMn^ÌöÄ©ČZÀžaü„fɭyœpį´ěFűk]Ôě¢qlÅĆÙa¶~Äqššê€ljN¬¼H„ÊšNQ´ê¼VظE††^ŃÒyŒƒM{ŒJLoÒœęæŸe±Ķ›y‰’‡gã“¯JYÆĭĘëo¥Š‰o¯hcK«z_pŠrC´ĢÖY”—¼ v¸¢RŽÅW³Â§fǸYi³xR´ďUˊ`êĿU„û€uĆBƒƣö‰N€DH«Ĉg†——Ñ‚aB{ÊNF´¬c·Åv}eÇÃGB»”If•¦HňĕM…~[iwjUÁKE•Ž‹¾dĪçW›šI‹èÀŒoÈXòyŞŮÈXâÎŚŠj|àsRy‹µÖ›–Pr´þŒ ¸^wþTDŔ–Hr¸‹žRÌmf‡żÕâCôox–ĜƌÆĮŒ›Ð–œY˜tâŦÔ@]ÈǮƒ\\Ī¼Ä£UsȯLbîƲŚºyh‡rŒŠ@ĒԝƀŸÀ²º\\êp“’JŠ}ĠvŠqt„Ġ@^xÀ£È†¨mËÏğ}n¹_¿¢×Y_æpˆÅ–A^{½•Lu¨GO±Õ½ßM¶w’ÁĢۂP‚›Ƣ¼pcIJxŠ|ap̬HšÐŒŊSfsðBZ¿©“XÏÒK•k†÷Eû¿‰S…rEFsÕūk”óVǥʼniTL‚¡n{‹uxţÏh™ôŝ¬ğōN“‘NJkyPaq™Âğ¤K®‡YŸxÉƋÁ]āęDqçgOg†ILu—\\_gz—]W¼ž~CÔē]bµogpў_oď`´³Țkl`IªºÎȄqÔþž»E³ĎSJ»œ_f·‚adÇqƒÇc¥Á_Źw{™L^ɱćx“U£µ÷xgĉp»ĆqNē`rĘzaĵĚ¡K½ÊBzyäKXqiWPÏɸ½řÍcÊG|µƕƣG˛÷Ÿk°_^ý|_zċBZocmø¯hhcæ\\lˆMFlư£Ĝ„ÆyH“„F¨‰µêÕ]—›HA…àӄ^it `þßäkŠĤÎT~Wlÿ¨„ÔPzUC–NVv [jâôDôď[}ž‰z¿–msSh‹¯{jïğl}šĹ[–őŒ‰gK‹©U·µË@¾ƒm_~q¡f¹…ÅË^»‘f³ø}Q•„¡Ö˳gͱ^ǁ…\\ëÃA_—¿bW›Ï[¶ƛ鏝£F{īZgm@|kHǭƁć¦UĔťƒ×ë}ǝƒeďºȡȘÏíBə£āĘPªij¶“ʼnÿ‡y©n‰ď£G¹¡I›Š±LÉĺÑdĉ܇W¥˜‰}g˜Á†{aqÃ¥aŠıęÏZ—ï`"],encodeOffsets:[[104636,22969]]},properties:{cp:[102.712251,25.040609],name:"云南",childNum:1}},{id:"540000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@hžľxŽŖ‰xƒÒVŽ†ºÅâAĪÝȆµę¯Ňa±r_w~uSÕň‘qOj]ɄQ…£Z……UDûoY’»©M[‹L¼qãË{V͕çWViŽ]ë©Ä÷àyƛh›ÚU°ŒŒa”d„cQƒ~Mx¥™cc¡ÙaSyF—ցk­ŒuRýq¿Ôµ•QĽ³aG{¿FµëªéĜÿª@¬·–K‰·àariĕĀ«V»Ŷ™Ĵū˜gèLǴŇƶaf‹tŒèBŚ£^Šâ†ǐÝ®–šM¦ÁǞÿ¬LhŸŽJ¾óƾƺcxw‹f]Y…´ƒ¦|œQLn°aœdĊ…œ\\¨o’œǀÍŎœ´ĩĀd`tÊQŞŕ|‚¨C^©œĈ¦„¦ÎJĊ{ŽëĎjª²rЉšl`¼Ą[t|¦St辉PŒÜK¸€d˜Ƅı]s¤—î_v¹ÎVòŦj˜£Əsc—¬_Ğ´|Ł˜¦AvŽ¦w`ăaÝaa­¢e¤ı²©ªSªšÈMĄwžÉØŔì@T‘¤—Ę™\\õª@”þo´­xA s”ÂtŎKzó´ÇĊµ¢rž^nĊ­Æ¬×üGž¢‚³ {âĊ]š™G‚~bÀgVjzlhǶf€žOšfdŠ‰ªB]pj„•TO–tĊ‚n¤}®¦ƒČ¥d¢¼»ddš”Y¼Žt—¢eȤJ¤}Ǿ¡°§¤AГlc@ĝ”sªćļđAç‡wx•UuzEÖġ~AN¹ÄÅȀŻ¦¿ģŁéì±H…ãd«g[؉¼ēÀ•cīľġ¬cJ‘µ…ÐʥVȝ¸ßS¹†ý±ğkƁ¼ą^ɛ¤Ûÿ‰b[}¬ōõÃ]ËNm®g@•Bg}ÍF±ǐyL¥íCˆƒIij€Ï÷њį[¹¦[⚍EÛïÁÉdƅß{âNÆāŨߝ¾ě÷yC£‡k­´ÓH@¹†TZ¥¢įƒ·ÌAЧ®—Zc…v½ŸZ­¹|ŕWZqgW“|ieZÅYVӁqdq•bc²R@†c‡¥Rã»Ge†ŸeƃīQ•}J[ғK…¬Ə|o’ėjġĠÑN¡ð¯EBčnwôɍėªƒ²•CλŹġǝʅįĭạ̃ūȹ]ΓͧgšsgȽóϧµǛ†ęgſ¶ҍć`ĘąŌJޚä¤rÅň¥ÖÁUětęuůÞiĊÄÀ\\Æs¦ÓRb|Â^řÌkÄŷ¶½÷‡f±iMݑ›‰@ĥ°G¬ÃM¥n£Øą‚ğ¯ß”§aëbéüÑOčœk£{\\‘eµª×M‘šÉfm«Ƒ{Å׃Gŏǩãy³©WÑăû‚··‘Q—òı}¯ã‰I•éÕÂZ¨īès¶ZÈsŽæĔTŘvŽgÌsN@îá¾ó@‰˜ÙwU±ÉT廣TđŸWxq¹Zo‘b‹s[׌¯cĩv‡Œėŧ³BM|¹k‰ªħ—¥TzNYnݍßpęrñĠĉRS~½ŠěVVŠµ‚õ‡«ŒM££µB•ĉ¥áºae~³AuĐh`Ü³ç@BۘïĿa©|z²Ý¼D”£àč²‹ŸƒIƒû›I ā€óK¥}rÝ_Á´éMaň¨€~ªSĈ½Ž½KÙóĿeƃÆBŽ·¬ën×W|Uº}LJrƳ˜lŒµ`bÔ`QˆˆÐÓ@s¬ñIŒÍ@ûws¡åQÑßÁ`ŋĴ{Ī“T•ÚÅTSij‚‹Yo|Ç[ǾµMW¢ĭiÕØ¿@˜šMh…pÕ]j†éò¿OƇĆƇp€êĉâlØw–ěsˆǩ‚ĵ¸c…bU¹ř¨WavquSMzeo_^gsÏ·¥Ó@~¯¿RiīB™Š\\”qTGªÇĜçPoŠÿfñòą¦óQīÈáP•œābß{ƒZŗĸIæńhnszÁCËìñšÏ·ąĚÝUm®ó­L·ăU›Èíoù´Êj°ŁŤ_uµ^‘°Œìǖ@tĶĒ¡Æ‡M³Ģ«˜İĨÅ®ğ†RŽāð“ggheÆ¢z‚Ê©Ô\\°ÝĎz~ź¤Pn–MĪÖB£Ÿk™n鄧żćŠ˜ĆK„Ē°¼L¶è‰âz¨u¦¥LDĘz¬ýÎmĘd¾ß”Fz“hg²™Fy¦ĝ¤ċņbΛ@y‚Ąæm°NĮZRÖíŽJ²öLĸÒ¨Y®ƌÐV‰à˜tt_ڀÂyĠzž]Ţh€zĎ{†ĢX”ˆc|šÐqŽšfO¢¤ög‚ÌHNŽ„PKŖœŽ˜Uú´xx[xˆvĐCûĀŠìÖT¬¸^}Ìsòd´_Ž‡KgžLĴ…ÀBon|H@–Êx˜—¦BpŰˆŌ¿fµƌA¾zLjRxŠ¶F”œkĄźRzŀˆ~¶[”´Hnª–VƞuĒ­È¨ƎcƽÌm¸ÁÈM¦x͊ëÀxdžB’šú^´W†£–d„kɾĬpœw‚˂ØɦļĬIŚœÊ•n›Ŕa¸™~J°î”lɌxĤÊÈðhÌ®‚g˜T´øŽàCˆŽÀ^ªerrƘdž¢İP|Ė ŸWœªĦ^¶´ÂL„aT±üWƜ˜ǀRšŶUńšĖ[QhlLüA†‹Ü\\†qR›Ą©"],encodeOffsets:[[90849,37210]]},properties:{cp:[91.132212,29.660361],name:"西藏",childNum:1}},{id:"610000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@˜p¢—ȮµšûG™Ħ}Ħšðǚ¶òƄ€jɂz°{ºØkÈęâ¦jª‚Bg‚\\œċ°s¬Ž’]jžú ‚E”Ȍdž¬s„t‡”RˆÆdĠݎwܔ¸ôW¾ƮłÒ_{’Ìšû¼„jº¹¢GǪÒ¯ĘƒZ`ºŊƒecņąš~BÂgzpâēòYǠȰÌTΨÂWœ|fcŸă§uF—Œ@NŸ¢XLƒŠRMº[ğȣſï|¥J™kc`sʼnǷ’Y¹‹W@µ÷K…ãï³ÛIcñ·VȋڍÒķø©—þ¥ƒy‚ÓŸğęmWµÎumZyOŅƟĥÓ~sÑL¤µaŅY¦ocyZ{‰y c]{ŒTa©ƒ`U_Ěē£ωÊƍKù’K¶ȱÝƷ§{û»ÅÁȹÍéuij|¹cÑd‘ŠìUYƒŽO‘uF–ÕÈYvÁCqӃT•Ǣí§·S¹NgŠV¬ë÷Át‡°Dد’C´ʼnƒópģ}„ċcE˅FŸŸéGU¥×K…§­¶³B‹Č}C¿åċ`wġB·¤őcƭ²ő[Å^axwQO…ÿEËߌ•ĤNĔŸwƇˆÄŠńwĪ­Šo[„_KÓª³“ÙnK‰Çƒěœÿ]ď€ă_d©·©Ýŏ°Ù®g]±„Ÿ‡ß˜å›—¬÷m\\›iaǑkěX{¢|ZKlçhLt€Ňîŵ€œè[€É@ƉĄEœ‡tƇÏ˜³­ħZ«mJ…›×¾‘MtÝĦ£IwÄå\\Õ{‡˜ƒOwĬ©LÙ³ÙgBƕŀr̛ĢŭO¥lãyC§HÍ£ßEñŸX¡—­°ÙCgpťz‘ˆb`wI„vA|§”‡—hoĕ@E±“iYd¥OĻ¹S|}F@¾oAO²{tfžÜ—¢Fǂ҈W²°BĤh^Wx{@„¬‚­F¸¡„ķn£P|ŸªĴ@^ĠĈæb–Ôc¶l˜Yi…–^Mi˜cĎ°Â[ä€vï¶gv@À“Ĭ·lJ¸sn|¼u~a]’ÆÈtŌºJp’ƒþ£KKf~Š¦UbyäIšĺãn‡Ô¿^­žŵMT–hĠܤko¼Ŏìąǜh`[tŒRd²IJ_œXPrɲ‰l‘‚XžiL§àƒ–¹ŽH˜°Ȧqº®QC—bA†„ŌJ¸ĕÚ³ĺ§ `d¨YjžiZvRĺ±öVKkjGȊĐePОZmļKÀ€‚[ŠŽ`ösìh†ïÎoĬdtKÞ{¬èÒÒBŒÔpIJÇĬJŊ¦±J«ˆY§‹@·pH€µàåVKe›pW†ftsAÅqC·¬ko«pHÆuK@oŸHĆۄķhx“e‘n›S³àǍrqƶRbzy€¸ËАl›¼EºpĤ¼Œx¼½~Ğ’”à@†ÚüdK^ˆmÌSj"],encodeOffsets:[[110234,38774]]},properties:{cp:[108.948024,34.263161],name:"陕西",childNum:1}},{id:"620000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@VuUv"],["@@ũ‹EĠtt~nkh`Q‰¦ÅÄÜdw˜Ab×ĠąJˆ¤DüègĺqBqœj°lI¡ĨÒ¤úSHbš‡ŠjΑBŠ°aZˆ¢KJŽ’O[|A£žDx}Nì•HUnrk„ kp€¼Y kMJn[aG‚áÚÏ[½rc†}aQxOgsPMnUs‡nc‹Z…ž–sKúvA›t„Þġ’£®ĀYKdnFwš¢JE°”Latf`¼h¬we|€Æ‡šbj}GA€·~WŽ”—`†¢MC¤tL©IJ°qdf”O‚“bÞĬ¹ttu`^ZúE`Œ[@„Æsîz®¡’C„ƳƜG²“R‘¢R’m”fŽwĸg܃‚ą G@pzJM½mŠhVy¸uÈÔO±¨{LfæU¶ßGĂq\\ª¬‡²I‚¥IʼnÈīoı‹ÓÑAçÑ|«LÝcspīðÍg…të_õ‰\\ĉñLYnĝg’ŸRǡÁiHLlõUĹ²uQjYi§Z_c¨Ÿ´ĹĖÙ·ŋI…ƒaBD˜­R¹ȥr—¯G•ºß„K¨jWk’ɱŠOq›Wij\\a­‹Q\\sg_ĆǛōëp»£lğۀgS•ŶN®À]ˆÓäm™ĹãJaz¥V}‰Le¤L„ýo‘¹IsŋÅÇ^‘Žbz…³tmEÁ´aŠ¹cčecÇN•ĊãÁ\\č¯—dNj•]j†—ZµkÓda•ćå]ğij@ ©O{¤ĸm¢ƒE·®ƒ«|@Xwg]Aģ±¯‡XǁÑdzªc›wQÚŝñsÕ³ÛV_ýƒ˜¥\\ů¥©¾÷w—Ž©WÕÊĩhÿÖÁRo¸V¬âDb¨šhûx–Ê×nj~Zâƒg|šXÁnßYoº§ZÅŘvŒ[„ĭÖʃuďxcVbnUSf…B¯³_Tzº—ΕO©çMÑ~Mˆ³]µ^püµ”ŠÄY~y@X~¤Z³€[Èōl@®Å¼£QKƒ·Di‹¡By‘ÿ‰Q_´D¥hŗyƒ^ŸĭÁZ]cIzý‰ah¹MĪğP‘s{ò‡‹‘²Vw¹t³Ŝˁ[ŽÑ}X\\gsFŸ£sPAgěp×ëfYHāďÖqēŭOÏë“dLü•\\iŒ”t^c®šRʺ¶—¢H°mˆ‘rYŸ£BŸ¹čIoľu¶uI]vģSQ{ƒUŻ”Å}QÂ|̋°ƅ¤ĩŪU ęĄžÌZҞ\\v˜²PĔ»ƢNHƒĂyAmƂwVmž`”]ȏb•”H`‰Ì¢²ILvĜ—H®¤Dlt_„¢JJÄämèÔDëþgºƫ™”aʎÌrêYi~ ÎݤNpÀA¾Ĕ¼b…ð÷’Žˆ‡®‚”üs”zMzÖĖQdȨý†v§Tè|ªH’þa¸|šÐ ƒwKĢx¦ivr^ÿ ¸l öæfƟĴ·PJv}n\\h¹¶v†·À|\\ƁĚN´Ĝ€çèÁz]ġ¤²¨QÒŨTIl‡ªťØ}¼˗ƦvÄùØE‹’«Fï˛Iq”ōŒTvāÜŏ‚íÛߜÛV—j³âwGăÂíNOŠˆŠPìyV³ʼnĖýZso§HіiYw[߆\\X¦¥c]ÔƩÜ·«j‡ÐqvÁ¦m^ċ±R™¦΋ƈťĚgÀ»IïĨʗƮŽ°Ɲ˜ĻþÍAƉſ±tÍEÕÞāNU͗¡\\ſčåÒʻĘm ƭÌŹöʥ’ëQ¤µ­ÇcƕªoIýˆ‰Iɐ_mkl³ă‰Ɠ¦j—¡Yz•Ňi–}Msßõ–īʋ —}ƒÁVmŸ_[n}eı­Uĥ¼‘ª•I{ΧDӜƻėoj‘qYhĹT©oūĶ£]ďxĩ‹ǑMĝ‰q`B´ƃ˺Ч—ç~™²ņj@”¥@đ´ί}ĥtPńǾV¬ufӃÉC‹tÓ̻‰…¹£G³€]ƖƾŎĪŪĘ̖¨ʈĢƂlɘ۪üºňUðǜȢƢż̌ȦǼ‚ĤŊɲĖ­Kq´ï¦—ºĒDzņɾªǀÞĈĂD†½ĄĎÌŗĞrôñnŽœN¼â¾ʄľԆ|DŽŽ֦ज़ȗlj̘̭ɺƅêgV̍ʆĠ·ÌĊv|ýĖÕWĊǎÞ´õ¼cÒÒBĢ͢UĜð͒s¨ňƃLĉÕÝ@ɛƯ÷¿Ľ­ĹeȏijëCȚDŲyê×Ŗyò¯ļcÂßY…tÁƤyAã˾J@ǝrý‹‰@¤…rz¸oP¹ɐÚyᐇHŸĀ[Jw…cVeȴϜ»ÈŽĖ}ƒŰŐèȭǢόĀƪÈŶë;Ñ̆ȤМľĮEŔ—ĹŊũ~ËUă{ŸĻƹɁύȩþĽvĽƓÉ@ē„ĽɲßǐƫʾǗĒpäWÐxnsÀ^ƆwW©¦cÅ¡Ji§vúF¶Ž¨c~c¼īŒeXǚ‹\\đ¾JŽwÀďksãA‹fÕ¦L}wa‚o”Z’‹D½†Ml«]eÒÅaɲáo½FõÛ]ĻÒ¡wYR£¢rvÓ®y®LF‹LzĈ„ôe]gx}•|KK}xklL]c¦£fRtív¦†PĤoH{tK"]],encodeOffsets:[[[108619,36299]],[[108589,36341]]]},properties:{cp:[103.823557,36.058039],name:"甘肃",childNum:2}},{id:"630000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@InJm"],["@@CƒÆ½OŃĦsΰ~Ē³¦@@“Ņiš±è}ؘƄ˹A³r_ĞŠǒNĪŒĐw¤^ŬĵªpĺSZg’rpiƼĘԛ¨C|͖J’©Ħ»®VIJ~f\\m `Un„˜~ʌŸ•ĬàöNt•~ňjy–¢Zi˜Ɣ¥ĄŠk´nl`JʇŠJþ©pdƖ®È£¶ìRʦ‘źõƮËnŸʼėæÑƀĎ[‚˜¢VÎĂMÖÝÎF²sƊƀÎBļýƞ—¯ʘƭðħ¼Jh¿ŦęΌƇš¥²Q]Č¥nuÂÏriˆ¸¬ƪÛ^Ó¦d€¥[Wà…x\\ZŽjҕ¨GtpþYŊĕ´€zUO뇉P‰îMĄÁxH´á˜iÜUà›îÜՁĂÛSuŎ‹r“œJð̬EŒ‘FÁú×uÃÎkr“Ē{V}İ«O_ÌËĬ©ŽÓŧSRѱ§Ģ£^ÂyèçěM³Ƃę{[¸¿u…ºµ[gt£¸OƤĿéYŸõ·kĀŸq]juw¥Dĩƍ€õÇPéĽG‘ž©ã‡¤G…uȧþRcÕĕNy“yût“ˆ­‡ø‘†ï»a½ē¿BMoį£ŸÍj}éZËqbʍš“Ƭh¹ìÿÓAçãnIáI`ƒks£CG­ě˜Uy×Cy•…’Ÿ@¶ʡÊBnāzG„ơMē¼±O÷õJËĚăVŸĪũƆ£Œ¯{ËL½Ìzż“„VR|ĠTbuvJvµhĻĖH”Aëáa…­OÇðñęNw‡…œľ·L›mI±íĠĩPÉ×®ÿs—’cB³±JKßĊ«`…ađ»·QAmO’‘Vţéÿ¤¹SQt]]Çx€±¯A@ĉij¢Óļ©•ƒl¶ÅÛr—ŕspãRk~¦ª]Į­´“FR„åd­ČsCqđéFn¿Åƃm’Éx{W©ºƝºįkÕƂƑ¸wWūЩÈFž£\\tÈ¥ÄRÈýÌJ ƒlGr^×äùyÞ³fj”c†€¨£ÂZ|ǓMĝšÏ@ëÜőR‹›ĝ‰Œ÷¡{aïȷPu°ËXÙ{©TmĠ}Y³’­ÞIňµç½©C¡į÷¯B»|St»›]vƒųƒs»”}MÓ ÿʪƟǭA¡fs˜»PY¼c¡»¦c„ċ­¥£~msĉP•–Siƒ^o©A‰Šec‚™PeǵŽkg‚yUi¿h}aH™šĉ^|ᴟ¡HØûÅ«ĉ®]m€¡qĉ¶³ÈyôōLÁst“BŸ®wn±ă¥HSòėš£˜S’ë@לÊăxÇN©™©T±ª£IJ¡fb®ÞbŽb_Ą¥xu¥B—ž{łĝ³«`d˜Ɛt—¤ťiñžÍUuºí`£˜^tƃIJc—·ÛLO‹½Šsç¥Ts{ă\\_»™kϊ±q©čiìĉ|ÍIƒ¥ć¥›€]ª§D{ŝŖÉR_sÿc³Īō›ƿΑ›§p›[ĉ†›c¯bKm›R¥{³„Z†e^ŽŒwx¹dƽŽôIg §Mĕ ƹĴ¿—ǣÜ̓]‹Ý–]snåA{‹eŒƭ`ǻŊĿ\\ijŬű”YÂÿ¬jĖqŽßbŠ¸•L«¸©@ěĀ©ê¶ìÀEH|´bRľž–Ó¶rÀQþ‹vl®Õ‚E˜TzÜdb ˜hw¤{LR„ƒd“c‹b¯‹ÙVgœ‚ƜßzÃô쮍^jUèXΖ|UäÌ»rKŽ\\ŒªN‘¼pZCü†VY††¤ɃRi^rPҒTÖ}|br°qňbĚ°ªiƶGQ¾²„x¦PœmlŜ‘[Ĥ¡ΞsĦŸÔÏâ\\ªÚŒU\\f…¢N²§x|¤§„xĔsZPòʛ²SÐqF`ª„VƒÞŜĶƨVZŒÌL`ˆ¢dŐIqr\\oäõ–F礻Ŷ×h¹]Clـ\\¦ďÌį¬řtTӺƙgQÇÓHţĒ”´ÃbEÄlbʔC”|CˆŮˆk„Ʈ[ʼ¬ňœ´KŮÈΰÌĪ¶ƶlð”ļA†TUvdTŠG†º̼ŠÔ€ŒsÊDԄveOg"]],encodeOffsets:[[[105308,37219]],[[95370,40081]]]},properties:{cp:[101.778916,36.623178],name:"青海",childNum:2}},{id:"640000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@KëÀęĞ«OęȿȕŸı]ʼn¡åįÕÔ«Ǵõƪ™ĚQÐZhv K°›öqÀѐS[ÃÖHƖčË‡nL]ûc…Ùß@‚“ĝ‘¾}w»»‹oģF¹œ»kÌÏ·{zPƒ§B­¢íyÅt@ƒ@áš]Yv_ssģ¼i߁”ĻL¾ġsKD£¡N_…“˜X¸}B~Haiˆ™Åf{«x»ge_bs“KF¯¡Ix™mELcÿZ¤­Ģ‘ƒÝœsuBLù•t†ŒYdˆmVtNmtOPhRw~bd…¾qÐ\\âÙH\\bImlNZŸ»loƒŸqlVm–Gā§~QCw¤™{A\\‘PKŸNY‡¯bF‡kC¥’sk‹Šs_Ã\\ă«¢ħkJi¯r›rAhĹûç£CU‡ĕĊ_ԗBixÅُĄnªÑaM~ħpOu¥sîeQ¥¤^dkKwlL~{L~–hw^‚ófćƒKyEŒ­K­zuÔ¡qQ¤xZÑ¢^ļöܾEpž±âbÊÑÆ^fk¬…NC¾‘Œ“YpxbK~¥Že֎ŒäBlt¿Đx½I[ĒǙŒWž‹f»Ĭ}d§dµùEuj¨‚IÆ¢¥dXªƅx¿]mtÏwßRĶŒX¢͎vÆzƂZò®ǢÌʆCrâºMÞzžÆMҔÊÓŊZľ–r°Î®Ȉmª²ĈUªĚøºˆĮ¦ÌĘk„^FłĬhĚiĀĖ¾iİbjÕ"],["@@mfwěwMrŢªv@G‰"]],encodeOffsets:[[[109366,40242]],[[108600,36303]]]},properties:{cp:[106.278179,38.46637],name:"宁夏",childNum:2}},{id:"650000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@QØĔ²X¨”~ǘBºjʐßØvK”ƔX¨vĊOžÃƒ·¢i@~c—‡ĝe_«”Eš“}QxgɪëÏÃ@sÅyXoŖ{ô«ŸuX…ê•Îf`œC‚¹ÂÿÐGĮÕĞXŪōŸMźÈƺQèĽôe|¿ƸJR¤ĘEjcUóº¯Ĩ_ŘÁMª÷Ð¥Oéȇ¿ÖğǤǷÂF҇zÉx[]­Ĥĝ‰œ¦EP}ûƥé¿İƷTėƫœŕƅ™ƱB»Đ±’ēO…¦E–•}‘`cȺrĦáŖuҞª«IJ‡πdƺÏØZƴwʄ¤ĖGЙǂZĶƒèH¶}ÚZצʥĪï|ÇĦMŔ»İĝLj‹ì¥Βœba­¯¥ǕǚkĆŵĦɑĺƯxūД̵nơʃĽá½M»›òmqóŘĝč˾ăC…ćāƿÝɽ©DZŅ¹đ¥˜³ðLrÁ®ɱĕģʼnǻ̋ȥơŻǛȡVï¹Ň۩ûkɗġƁ§ʇė̕ĩũƽō^ƕŠUv£ƁQï“Ƶkŏ½ΉÃŭdzLқʻ«ƭ\\lƒ‡ŭD‡“{ʓDkaFÃÄa“³ŤđÔGRÈƚhSӹŚsİ«ĐË[¥ÚDkº^Øg¼ŵ¸£EÍö•€ůʼnT¡c_‡ËKY‹ƧUśĵ„݃U_©rETÏʜ±OñtYwē¨ƒ{£¨uM³x½şL©Ùá[ÓÐĥ Νtģ¢\\‚ś’nkO›w¥±ƒT»ƷFɯàĩÞáB¹Æ…ÑUw„੍žĽw[“mG½Èå~‡Æ÷QyŠěCFmĭZī—ŵVÁ™ƿQƛ—ûXS²‰b½KϽĉS›©ŷXĕŸ{ŽĕK·¥Ɨcqq©f¿]‡ßDõU³h—­gËÇïģÉɋw“k¯í}I·šœbmœÉ–ř›īJɥĻˁ×xo›ɹī‡l•c…¤³Xù]‘™DžA¿w͉ì¥wÇN·ÂËnƾƍdǧđ®Ɲv•Um©³G\\“}µĿ‡QyŹl㓛µEw‰LJQ½yƋBe¶ŋÀů‡ož¥A—˜Éw@•{Gpm¿Aij†ŽKLhˆ³`ñcËtW‚±»ÕS‰ëüÿďD‡u\\wwwù³—V›LŕƒOMËGh£õP¡™er™Ïd{“‡ġWÁ…č|yšg^ğyÁzÙs`—s|ÉåªÇ}m¢Ń¨`x¥’ù^•}ƒÌ¥H«‰Yªƅ”Aйn~ź¯šf¤áÀz„gŠÇDIԝ´AňĀ҄¶ûEYospõD[{ù°]u›Jq•U•|Soċxţ[õÔĥkŋÞŭZ˺óYËüċrw €ÞkrťË¿XGÉbřaDü·Ē÷Aê[Ää€I®BÕИÞ_¢āĠpŠÛÄȉĖġDKwbm‡ÄNô‡ŠfœƫVÉvi†dz—H‘‹QµâFšù­Âœ³¦{YGžƒd¢ĚÜO „€{Ö¦ÞÍÀPŒ^b–ƾŠlŽ[„vt×ĈÍE˨¡Đ~´î¸ùÎh€uè`¸ŸHÕŔVºwĠââWò‡@{œÙNÝ´ə²ȕn{¿¥{l—÷eé^e’ďˆXj©î\\ªÑò˜Üìc\\üqˆÕ[Č¡xoÂċªbØ­Œø|€¶ȴZdÆšońéŒGš\\”¼C°ÌƁn´nxšÊOĨ’Ūƴĸ¢¸òTxÊǪMīИÖŲÃɎOvˆʦƢ~FŽ‡Rěò—¿ġ~åŊœú‰Nšžš¸qŽ’Ę[Ĕ¶ÂćnÒPĒÜvúĀÊbÖ{Äî¸~Ŕünp¤ÂH¾œĄYÒ©ÊfºmԈĘcDoĬMŬ’˜S¤„s²‚”ʘچžȂVŦ –ŽèW°ªB|IJXŔþÈJĦÆæFĚêŠYĂªĂ]øªŖNÞüA€’fɨJ€˜¯ÎrDDšĤ€`€mz\\„§~D¬{vJÂ˜«lµĂb–¤p€ŌŰNĄ¨ĊXW|ų ¿¾ɄĦƐMT”‡òP˜÷fØĶK¢ȝ˔Sô¹òEð­”`Ɩ½ǒÂň×äı–§ĤƝ§C~¡‚hlå‚ǺŦŞkâ’~}ŽFøàIJaĞ‚fƠ¥Ž„Ŕdž˜®U¸ˆźXœv¢aƆúŪtŠųƠjd•ƺŠƺÅìnrh\\ĺ¯äɝĦ]èpĄ¦´LƞĬŠ´ƤǬ˼Ēɸ¤rºǼ²¨zÌPðŀbþ¹ļD¢¹œ\\ĜÑŚŸ¶ZƄ³àjĨoâŠȴLʉȮŒĐ­ĚăŽÀêZǚŐ¤qȂ\\L¢ŌİfÆs|zºeªÙæ§΢{Ā´ƐÚ¬¨Ĵà²łhʺKÞºÖTŠiƢ¾ªì°`öøu®Ê¾ãØ"],encodeOffsets:[[88824,50096]]},properties:{cp:[87.617733,43.792818],name:"新疆",childNum:1}},{id:"110000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@ĽOÁ›ûtŷmiÍt_H»Ĩ±d`Š¹­{bw…Yr“³S]§§o¹€qGtm_Sŧ€“oa›‹FLg‘QN_•dV€@Zom_ć\\ߚc±x¯oœRcfe…£’o§ËgToÛJíĔóu…|wP¤™XnO¢ÉˆŦ¯rNÄā¤zâŖÈRpŢZŠœÚ{GŠrFt¦Òx§ø¹RóäV¤XdˆżâºWbwŚ¨Ud®bêņ¾‘jnŎGŃŶŠnzÚSeîĜZczî¾i]͜™QaúÍÔiþĩȨWĢ‹ü|Ėu[qb[swP@ÅğP¿{\\‡¥A¨Ï‘Ѩj¯ŠX\\¯œMK‘pA³[H…īu}}"],encodeOffsets:[[120023,41045]]},properties:{cp:[116.405285,39.904989],name:"北京",childNum:1}},{id:"120000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@ŬgX§Ü«E…¶Ḟ“¬O_™ïlÁg“z±AXe™µÄĵ{¶]gitgšIj·›¥îakS€‰¨ÐƎk}ĕ{gB—qGf{¿a†U^fI“ư‹³õ{YƒıëNĿžk©ïËZŏ‘R§òoY×Ógc…ĥs¡bġ«@dekąI[nlPqCnp{ˆō³°`{PNdƗqSÄĻNNâyj]äžÒD ĬH°Æ]~¡HO¾ŒX}ÐxŒgp“gWˆrDGˆŒpù‚Š^L‚ˆrzWxˆZ^¨´T\\|~@I‰zƒ–bĤ‹œjeĊªz£®Ĕvě€L†mV¾Ô_ȔNW~zbĬvG†²ZmDM~”~"],encodeOffsets:[[120237,41215]]},properties:{cp:[117.190182,39.125596],name:"天津",childNum:1}},{id:"310000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@ɧư¬EpƸÁxc‡"],["@@©„ªƒ"],["@@”MA‹‘š"],["@@Qp݁E§ÉC¾"],["@@bŝՕÕEȣÚƥêImɇǦèÜĠŒÚžÃƌÃ͎ó"],["@@ǜûȬɋŠŭ™×^‰sYŒɍDŋ‘ŽąñCG²«ªč@h–_p¯A{‡oloY€¬j@IJ`•gQڛhr|ǀ^MIJvtbe´R¯Ô¬¨YŽô¤r]ì†Ƭį"]],encodeOffsets:[[[124702,32062]],[[124547,32200]],[[124808,31991]],[[124726,32110]],[[124903,32376]],[[124438,32149]]]},properties:{cp:[121.472644,31.231706],name:"上海",childNum:6}},{id:"500000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@vjG~nGŘŬĶȂƀƾ¹¸ØÎezĆT¸}êЖqHŸðqĖ䒊¥^CƒIj–²p…\\_ æüY|[YxƊæuž°xb®…Űb@~¢NQt°¶‚S栓Ê~rljĔëĚ¢~šuf`‘‚†fa‚ĔJåĊ„nÖ]„jƎćÊ@Š£¾a®£Ű{ŶĕF‹ègLk{Y|¡ĜWƔtƬJÑxq‹±ĢN´‰òK‰™–LÈüD|s`ŋ’ć]ƒÃ‰`đŒMûƱ½~Y°ħ`ƏíW‰½eI‹½{aŸ‘OIrÏ¡ĕŇa†p†µÜƅġ‘œ^ÖÛbÙŽŏml½S‹êqDu[R‹ãË»†ÿw`»y‘¸_ĺę}÷`M¯ċfCVµqʼn÷Z•gg“Œ`d½pDO‡ÎCnœ^uf²ènh¼WtƏxRGg¦…pV„†FI±ŽG^ŒIc´ec‡’G•ĹÞ½sëĬ„h˜xW‚}Kӈe­Xsbk”F¦›L‘ØgTkïƵNï¶}Gy“w\\oñ¡nmĈzjŸ•@™Óc£»Wă¹Ój“_m»ˆ¹·~MvÛaqœ»­‰êœ’\\ÂoVnŽÓØ͙²«‹bq¿efE „€‹Ĝ^Qž~ Évý‡ş¤²Į‰pEİ}zcĺƒL‹½‡š¿gņ›¡ýE¡ya£³t\\¨\\vú»¼§·Ñr_oÒý¥u‚•_n»_ƒ•At©Þűā§IVeëƒY}{VPÀFA¨ąB}q@|Ou—\\Fm‰QF݅Mw˜å}]•€|FmϋCaƒwŒu_p—¯sfÙgY…DHl`{QEfNysBŠ¦zG¸rHe‚„N\\CvEsÐùÜ_·ÖĉsaQ¯€}_U‡†xÃđŠq›NH¬•Äd^ÝŰR¬ã°wećJEž·vÝ·Hgƒ‚éFXjÉê`|yŒpxkAwœWĐpb¥eOsmzwqChóUQl¥F^laf‹anòsr›EvfQdÁUVf—ÎvÜ^efˆtET¬ôA\\œ¢sJŽnQTjP؈xøK|nBz‰„œĞ»LY‚…FDxӄvr“[ehľš•vN”¢o¾NiÂxGp⬐z›bfZo~hGi’]öF|‰|Nb‡tOMn eA±ŠtPT‡LjpYQ|†SH††YĀxinzDJ€Ìg¢và¥Pg‰_–ÇzII‹€II•„£®S¬„Øs쐣ŒN"],["@@ifjN@s"]],encodeOffsets:[[[109628,30765]],[[111725,31320]]]},properties:{cp:[106.504962,29.533155],name:"重庆",childNum:2}},{id:"810000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@AlBk"],["@@mŽn"],["@@EpFo"],["@@ea¢pl¸Eõ¹‡hj[ƒ]ÔCΖ@lj˜¡uBXŸ…•´‹AI¹…[‹yDUˆ]W`çwZkmc–…M›žp€Åv›}I‹oJlcaƒfёKŽ°ä¬XJmРđhI®æÔtSHn€Eˆ„ÒrÈc"],["@@rMUw‡AS®€e"]],encodeOffsets:[[[117111,23002]],[[117072,22876]],[[117045,22887]],[[116975,23082]],[[116882,22747]]]},properties:{cp:[114.173355,22.320048],name:"香港",childNum:5}},{id:"820000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@kÊd°å§s"],encodeOffsets:[[116279,22639]]},properties:{cp:[113.54909,22.198951],name:"澳门",childNum:1}}],UTF8Encoding:!0}):void n("ECharts Map is not loaded"):void n("ECharts is not Loaded")})},"./app/containers/Widget/charts/markBoxplot.ts":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t,n,r){var s=n.xAxis,l=n.xAxisInterval,d=n.xAxisRotate,u=n.dataZoomThreshold,c=n.hasLegend,p=n.legendSelected,f=n.legendPosition,h=n.toolbox,m=n.splitLineX,g=n.splitLineY,b=n.splitLineStyle,_=n.splitLineWidth,v=n.top,y=n.bottom,x=n.left,j=n.right,w=n.suffixYAxis,k=n.markMetrics,M=n.metrics,S=void 0,T=void 0,E=void 0,D=void 0,O=void 0,C=void 0,L=void 0,A=void 0,P=void 0,I=void 0;if(s&&M&&M.length){var R=e.map(function(e){return e[s]});I=R.filter(function(e,t){return R.indexOf(e)===t}),T={xAxis:{type:"category",data:I,boundaryGap:!0,nameGap:30,splitArea:{show:!0},axisLabel:{interval:l,rotate:d,formatter:"{value}"},splitLine:{show:m&&m.length,lineStyle:{width:_,type:b}}}}}if(P=[],M&&M.length){M=[M];var N=I.map(function(t){return e.filter(function(e){return e[s]===t})}),z=N.map(function(e){return M.map(function(t){return e.map(function(e){return e[t]})})});P=M.map(function(e,t){var n=[];return z.forEach(function(e,o){n.push(e[t])}),n}).map(function(e){return i.default(e)}),S={series:P.reduce(function(e,t,n){return e.concat({name:M[n],type:"boxplot",data:t.boxData,tooltip:{formatter:a}},{name:M[n],type:"pictorialBar",symbolPosition:"end",symbolSize:8,barGap:"30%",data:t.outliers,tooltip:{formatter:function(e){return[e.name+" ","异常值: "+e.data[1]].join("
    ")}}})},[])}}if(k&&k.length){var Y=e.map(function(e){var t;return t={},o(t,s,e[s]),o(t,k,e[k]),t}),F=Y.reduce(function(e,t){return Object.assign({},e,o({},t[s],t[k]))},{}),H=Object.values(F);S.series.push({name:k,type:"scatter",data:H,itemStyle:{normal:{color:"rgb(251, 118, 123)"}}})}A=w&&w.length?{axisLabel:{formatter:"{value} "+w}}:null,E={yAxis:Object.assign({type:"value",splitArea:{show:!1},splitLine:{show:g&&g.length,lineStyle:{width:_,type:b}}},A)};var V=0,q=0;if(c&&c.length){var W=void 0,B=void 0;switch(f){case"right":W={orient:"vertical"},B={right:8,top:40,bottom:16},q=108;break;case"bottom":W={orient:"horizontal"},B={bottom:16,left:8,right:8},V=72;break;default:W={orient:"horizontal"},B={top:3,left:8,right:120}}var U="unselectAll"===p?{selected:M.reduce(function(e,t){return Object.assign({},e,o({},t,!1))},{})}:null;D={legend:Object.assign({data:M,type:"scroll"},W,B,U)}}return O=h&&h.length?{toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,C={grid:{top:v,left:x,right:Math.max(j,q),bottom:Math.max(y,V)}},L=u>0&&u")}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/echarts/extension-src/dataTool/prepareBoxplotData.js");t.default=r},"./app/containers/Widget/charts/parallel.ts":function(e,t,n){"use strict";function o(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);tn){b=["0%",100/u/l*Math.min(o/r[0],1)*.75+"%"]}else{b=["0%",100/a*Math.min(r[0]/o,1)*.75+"%"]}}else{var y=100/i,x=100/d/u;if(g=[x*(h+u*f+1)-x/2+"%",y*(i-m-p*c)-y/2+"%"],t>n){b=["0%",100/i*Math.min(r[1]/o,1)*.75+"%"]}else{b=["0%",100/u/d*Math.min(o/r[1],1)*.75+"%"]}}return{center:g,radius:b}}}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o},"./app/containers/Widget/charts/radar.ts":function(e,t,n){"use strict";function o(){return{chartOption:{type:"radar"}}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o},"./app/containers/Widget/charts/sankey.ts":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0){var o=e-parseFloat(O[t-1]);return o>=0?(r.push(o),a.push("-"),n.push(parseFloat(O[t-1]))):(r.push("-"),a.push(Math.abs(o)),n.push(parseFloat(O[t-1])-Math.abs(o))),o}return r.push(e),a.push("-"),n.push(0),e});var i=r.reduce(function(e,t){return"number"==typeof t?e+t:e+0},0),s=a.reduce(function(e,t){return"number"==typeof t?e+t:e+0},0),l=i-s;b&&b.length&&(E.push("累计"),n.push("-"),l>0?(r.push(l),a.push("-")):(a.push(Math.abs(l)),r.push("-")));var d={name:t,type:"bar",sampling:"average",data:n,itemStyle:{normal:{barBorderColor:"rgba(0,0,0,0)",color:"rgba(0,0,0,0)",opacity:void 0===o?1:.25},emphasis:{barBorderColor:"rgba(0,0,0,0)",color:"rgba(0,0,0,0)"}},stack:"stack"},u={name:"升",type:"bar",sampling:"average",data:r,itemStyle:{normal:{opacity:void 0===o?1:.25}},stack:"stack",label:{normal:{show:!(!f||!f.length),position:"top"}}},c={name:"降",type:"bar",sampling:"average",data:a,itemStyle:{normal:{opacity:void 0===o?1:.25}},stack:"stack",label:{normal:{show:!(!f||!f.length),position:"bottom"}}};D.push(d),D.push(u),D.push(c)}),y={series:D}}T=_&&_.length?{axisLabel:{formatter:"{value} "+_}}:null,a&&a.length?(r&&(x={yAxis:{data:e.map(function(e){return e[r]}),axisLabel:{show:!1},axisLine:{show:!1},axisTick:{show:!1}}}),j={xAxis:{type:"value",position:"top",splitLine:{lineStyle:{type:"dashed"}},axisLabel:{interval:i,rotate:s}}}):(r&&(x={xAxis:{data:E,axisLabel:{interval:i,rotate:s}}}),j={yAxis:Object.assign({type:"value"},T)});var A=0,P=0;if(d&&d.length){var I=void 0,R=void 0;switch(u){case"right":I={orient:"vertical"},R={right:8,top:40,bottom:16},P=108;break;case"bottom":I={orient:"horizontal"},R={bottom:16,left:8,right:8},A=72;break;default:I={orient:"horizontal"},R={top:3,left:8,right:120}}w={legend:Object.assign({data:D.map(function(e){return e.name}),type:"scroll"},I,R)}}return k=c&&c.length?{toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,M={grid:{top:p,left:m,right:Math.max(g,P),bottom:Math.max(h,A)}},S=l>0&&l"))}}},y,x,j,w,k,M,S)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o},"./app/containers/Widget/charts/wordCloud.ts":function(e,t,n){"use strict";function o(e,t,n){var o=n.title,r=n.gridSize,a=n.sizeRangeX,i=n.sizeRangeY,s=void 0,l=void 0,d=void 0,u=void 0,c=[];l=r&&{gridSize:r},d=(a||i)&&{sizeRange:[a||0,i||0]};var p=e.reduce(function(e,t){var n=t[o];return e[n]?e[n].value+=1:e[n]={name:n,value:1},e},{}),f=Object.assign({type:"wordCloud",textStyle:{normal:{color:"#509af2"},emphasis:{shadowBlur:10,shadowColor:"#509af2"}},data:Object.keys(p).map(function(e){return p[e]}),rotationStep:45,rotationRange:[-90,90]},l,d);return c.push(f),s={series:c},u={grid:{top:0,left:0,right:0,bottom:0}},Object.assign({},s,u)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o},"./app/containers/Widget/components/Pivot/Cell.tsx":function(e,t,n){"use strict";function o(e){var t=e.colKey,n=void 0===t?"":t,o=e.rowKey,u=void 0===o?"":o,c=e.width,p=e.height,f=e.data,h=e.chartStyles,m=e.color,g=e.legend,b=h.pivot,_=b.color,v=b.fontSize,y=b.fontFamily,x=b.lineColor,j=b.lineStyle,w=e.metrics;if(n.includes(s.DEFAULT_SPLITER)&&u.includes(s.DEFAULT_SPLITER)){var k=r(n);if(k===r(u)){var M=k.split(s.DEFAULT_SPLITER),S=a(M,2),T=S[0],E=S[1];w=w.filter(function(e){return e.name===""+T+s.DEFAULT_SPLITER+E})}else w=[]}else if(n.includes(s.DEFAULT_SPLITER)){var D=r(n).split(s.DEFAULT_SPLITER),O=a(D,2),C=O[0],L=O[1];w=w.filter(function(e){return e.name===""+C+s.DEFAULT_SPLITER+L})}else if(u.includes(s.DEFAULT_SPLITER)){var A=r(u).split(s.DEFAULT_SPLITER),P=a(A,2),I=P[0],R=P[1];w=w.filter(function(e){return e.name===""+I+s.DEFAULT_SPLITER+R})}var N=w.map(function(e){var t=l.decodeMetricName(e.name),n=m.items.find(function(t){return t.config.actOn===e.name})||m.items.find(function(e){return"all"===e.config.actOn});return f&&f.map(function(o,r){var a=void 0;if(n){var s=g[n.name];s&&s.includes(o[n.name])||(a={color:n.config.values[o[n.name]]})}return i.createElement("p",{key:""+e.name+r,className:d.cellContent,style:Object.assign({},a)},o[e.agg+"("+t+")"])})}),z=Object.assign({width:c},p&&{height:p},{color:_,fontSize:Number(v),fontFamily:y,borderColor:x,borderStyle:j});return i.createElement("td",{style:z},N)}function r(e){return e.split(String.fromCharCode(0)).filter(function(e){return e.includes(s.DEFAULT_SPLITER)})[0]}var a=function(){function e(e,t){var n=[],o=!0,r=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(o=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);o=!0);}catch(e){r=!0,a=e}finally{try{!o&&s.return&&s.return()}finally{if(r)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/react/react.js"),s=n("./app/globalConstants.ts"),l=n("./app/containers/Widget/components/util.ts"),d=n("./app/containers/Widget/components/Pivot/Pivot.less");t.Cell=o,t.default=o},"./app/containers/Widget/components/Pivot/Chart.tsx":function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){var n=[],o=!0,r=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(o=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);o=!0);}catch(e){r=!0,a=e}finally{try{!o&&s.return&&s.return()}finally{if(r)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function(){function e(e,t){for(var n=0;ns){var l=[],d={key:"",height:0,data:[]};return n.forEach(function(e,t){var o="col"===a?e.height*r.length:e.height;d.height+o>s&&(d.key=""+t+d.data.map(function(e){return e.key}).join(","),l.push(d),d={key:"",height:0,data:[]}),d.height+=o,d.data.push(e),t===n.length-1&&(d.key=""+t+d.data.map(function(e){return e.key}).join(","),l.push(d))}),l}return[{key:"chunk",height:t,data:n}]},e.verticalCutting=function(t,n){var o=e.props,r=o.metrics,a=o.dimetionAxis,i=o.drawingData.multiCoordinate,s=i?p.PIVOT_CANVAS_POLAR_SIZE_LIMIT:p.PIVOT_CANVAS_SIZE_LIMIT;if(t>s){var l={};return n.forEach(function(t){var n=e.initBlockLine(t),o=e.initBlock(n);t.data.forEach(function(i,d){var u="row"===a?i.width*r.length:i.width;if(o.width+u>s){if(l[d-1]){var c=l[d-1];c.data=c.data.concat(o.data)}else l[d-1]=Object.assign({},o,{key:""+(d-1)+o.data.map(function(e){return e.key}).join(",")});n=e.initBlockLine(t),o=e.initBlock(n)}if(o.width+=u,n.data.push(i),d===t.data.length-1)if(l[d]){var p=l[d];p.data=p.data.concat(o.data)}else l[d]=Object.assign({},o,{key:""+d+o.data.map(function(e){return e.key}).join(",")})})}),Object.values(l).map(function(e){return Object.assign({},e,{pieces:f.getChartPieces(e.data.reduce(function(e,t){return e+t.data.reduce(function(e,t){return e+("col"===a?t.records.length*r.length:t.records.length)},0)},0),e.data.length)})})}return[{key:"block",width:t,data:n,pieces:f.getChartPieces(n.reduce(function(e,t){return e+t.data.reduce(function(e,t){return e+("col"===a?t.records.length*r.length:t.records.length)},0)},0),n.length)}]},e.initBlock=function(e){return{key:"",width:0,data:[e],pieces:0}},e.initBlockLine=function(e){return Object.assign({},e,{key:""+h.uuid(8,16)+e.key,data:[]})},e}return i(t,e),s(t,[{key:"render",value:function(){var e,t=this.props,n=t.rows,r=t.cols,a=t.rowKeys,i=t.colKeys,s=t.rowTree,p=t.rowWidths,g=t.colTree,b=t.tree,_=t.metrics,v=t.metricAxisConfig,y=t.chartStyles,x=t.drawingData,j=t.dimetionAxis,w=t.color,k=t.label,M=t.size,S=t.xAxis,T=t.tip,E=t.renderType,D=t.legend,O=t.onCheckTableInteract,C=t.onDoInteract,L=x.elementSize,A=x.unitMetricWidth,P=x.unitMetricHeight,I=x.tableBodyCollapsed,R=null,N=[],z=[],Y=0;if(j){var F=0;if(i.length&&a.length){var H=[];a.forEach(function(e,t){var n=e.join(String.fromCharCode(0)),o=[];i.forEach(function(r,s){var l=r.join(String.fromCharCode(0)),d=b[n][l];if("col"===j){var u=i[s+1]||[],c=o[o.length-1];if(c&&!c.ended||(c={key:""+n+l,width:0,records:[],ended:!1},o.push(c)),c.records.push({key:r[r.length-1],value:d}),1===r.length&&s===i.length-1||r[r.length-2]!==u[u.length-2]){var p=c.records.length*L;c.width=p,c.ended=!0,u.length||(N.push({key:n,height:P,data:o.slice()}),F+=1,o=[])}}else{var f=a[t+1]||[];H[s]||(H[s]=[]);var h=H[s],m=h[h.length-1];if(m&&!m.ended||(m={key:""+l+n,width:0,records:[],ended:!1},h.push(m)),m.records.push({key:e[e.length-1],value:d}),1===e.length&&t===a.length-1||e[e.length-2]!==f[f.length-2]){if(m.width=A,m.ended=!0,s===i.length-1){var g=m.records.length*L;N.push({key:n,height:g,data:H.reduce(function(e,t){return e.concat(t)},[])}),H=[]}t===a.length-1&&(F+=1)}}})})}else if(i.length){var V=[];i.forEach(function(e,t){var n=e.join(String.fromCharCode(0)),o=g[n].records;if("col"===j){var r=i[t+1]||[],a=V[V.length-1];if(a&&!a.ended||(a={key:n,width:0,records:[],ended:!1},V.push(a)),a.records.push({key:e[e.length-1],value:o}),1===e.length&&t===i.length-1||e[e.length-2]!==r[r.length-2]){var s=a.records.length*L;a.width=s,a.ended=!0,r.length||(N.push({key:n,height:P,data:V.slice()}),F+=1)}}else V.push({key:n,width:A,records:[{key:e[e.length-1],value:o}],ended:!0}),F+=1,t===i.length-1&&N.push({key:n,height:L,data:V.slice()})})}else if(a.length){var q=[];a.forEach(function(e,t){var n=e.join(String.fromCharCode(0)),o=s[n].records;if("row"===j){var r=a[t+1]||[],i=q[q.length-1];if(i&&!i.ended||(i={key:n,width:0,records:[],ended:!1},q.push(i)),i.records.push({key:e[e.length-1],value:o}),1===e.length&&t===a.length-1||e[e.length-2]!==r[r.length-2]){i.width=A,i.ended=!0;var l=i.records.length*L;N.push({key:n,height:l,data:q.slice()}),q=[],t===a.length-1&&(F+=1)}}else N.push({key:n,height:P,data:[{key:n,width:L,records:[{key:e[e.length-1],value:o}],ended:!1}]}),F+=1})}else{var W=b[0],B="col"===j?L:A,U="row"===j?L:P,G={width:B,records:[{key:"data",value:W}],ended:!0};N.push({height:U,data:[G]})}var K=i.length||1,Z=a.length||1;F=F||1;var X=0;"col"===j?(Y=K*L,X=F*P*_.length):(Y=F*A*_.length,X=Z*L),R=l.createElement(c.default,{width:Y,height:X,cols:r,rows:n,dimetionAxisCount:"col"===j?K:Z,metricAxisCount:F,metrics:_,data:this.gridCutting(Y,X,N),chartStyles:y,drawingData:x,dimetionAxis:j,metricAxisConfig:v,color:w,label:k,size:M,xAxis:S,tip:T,renderType:E,legend:D,onCheckTableInteract:O,onDoInteract:C})}else{if(i.length&&a.length)a.forEach(function(e){var t=e.join(String.fromCharCode(0)),n=[];Y=0,i.forEach(function(e){var o=e.join(String.fromCharCode(0)),r=b[t][o],a=g[o],i=a.width,s=a.height,d=f.getPivotCellWidth(i);Y+=d,n.push(l.createElement(u.default,{key:""+t+o,colKey:o,rowKey:t,width:d,height:f.getPivotCellHeight(s),metrics:_,data:r,chartStyles:y,color:w,legend:D}))}),z.push(l.createElement("tr",{key:t},n))});else if(i.length){var J=[];Y=0,i.forEach(function(e){var t=e.join(String.fromCharCode(0)),n=g[t],o=n.width,r=n.height,a=n.records,i=f.getPivotCellWidth(o);Y+=i,J.push(l.createElement(u.default,{key:t,colKey:t,width:i,height:f.getPivotCellHeight(r),metrics:_,data:a,chartStyles:y,color:w,legend:D}))}),z.push(l.createElement("tr",{key:h.uuid(8,16)},J))}else if(a.length)a.forEach(function(e){var t=e.join(String.fromCharCode(0)),n=s[t],o=n.height,r=n.records,a=[];Y=0;var i=f.getPivotCellWidth(p[p.length-1]);Y+=i,a.push(l.createElement(u.default,{key:t,rowKey:t,width:i,height:f.getPivotCellHeight(o),metrics:_,data:r,chartStyles:y,color:w,legend:D})),a.length&&z.push(l.createElement("tr",{key:t},a))});else if(_.length){var Q=b[0],$=0;_.forEach(function(e){var t=Q[e.agg+"("+e.name+")"];$=Math.max($,f.getPivotContentTextWidth(t))});var ee=f.getPivotCellHeight();z.push(l.createElement("tr",{key:h.uuid(8,16)},l.createElement(u.default,{key:h.uuid(8,16),width:$,height:ee,metrics:_,data:Q,chartStyles:y,color:w,legend:D})))}R=l.createElement("table",{className:m.pivot,style:{width:Y}},l.createElement("tbody",null,z))}var te=d((e={},o(e,m.columnBody,!0),o(e,m.bodyCollapsed,I),o(e,m.raw,!j),e));return l.createElement("div",{className:te},R)}}]),t}(l.Component);t.TableBody=g,t.default=g},"./app/containers/Widget/components/Pivot/Xaxis.tsx":function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;ni)return 1;if("number"==typeof e&&"number"!=typeof t)return-1;if("number"==typeof t&&"number"!=typeof e)return 1;if("number"==typeof e&&"number"==typeof t)return 0;if(isNaN(i)&&!isNaN(a))return-1;if(isNaN(a)&&!isNaN(i))return 1;var s=String(e),l=String(t);if(s===l)return 0;if(!o.test(s)||!o.test(l))return s>l?1:-1;for(var d=s.match(n),u=l.match(n);d.length&&u.length;){var c=d.shift(),p=u.shift();if(c!==p)return o.test(c)&&o.test(p)?Number(c.replace(r,".0"))-Number(p.replace(r,".0")):c>p?1:-1}return d.length-u.length}function d(e){return e+2*I.PIVOT_CELL_PADDING+2*I.PIVOT_CELL_BORDER}function u(e){return(e||I.PIVOT_LINE_HEIGHT)+2*I.PIVOT_CELL_PADDING+I.PIVOT_CELL_BORDER}function c(e,t,n,o){var r=void 0,a=void 0;"col"===e?(r=Math.max(1,n[0]),a=t[0]):(r=Math.max(1,n[1]),a=t[1]);var i=a/r,s=o?I.PIVOT_CHART_METRIC_AXIS_MIN_SIZE:I.PIVOT_CHART_ELEMENT_MIN_WIDTH;return Math.max(Math.floor(i),s)}function p(e,t,n,o){return"row"===e&&n>o*t}function f(e,t,n){return Math.max(e,t*n*I.PIVOT_CHART_METRIC_AXIS_MIN_SIZE)/t/n}function h(e,t,n){return Math.max(e,t*n*I.PIVOT_CHART_METRIC_AXIS_MIN_SIZE)/t/n}function m(e,t,n){var o=Array.isArray(n)?n:[n],r=!0,a=!1,i=void 0;try{for(var s,l=o[Symbol.iterator]();!(r=(s=l.next()).done);r=!0){var d=s.value,u=d.requireDimetions,c=d.requireMetrics;if(eI.PIVOT_CHART_POINT_LIMIT?t:b(e,Math.round(t/2))}function _(e){function t(e){return e>=10?Math.floor(e):e.toFixed(1)}return e>=Math.pow(10,9)&&e=Math.pow(10,6)&&e=Math.pow(10,3)&&eI.PIVOT_CANVAS_AXIS_SIZE_LIMIT){var a=[];return r.forEach(function(o){var r={key:""+N.uuid(8,16)+o.key,data:[]},i={key:"",length:0,data:[r]};o.data.forEach(function(s,l){var d="x"===e&&"row"===t||"y"===e&&"col"===t?s.width*n.length:s.width;i.length+d>I.PIVOT_CANVAS_AXIS_SIZE_LIMIT&&(i.key=""+l+i.data.map(function(e){return e.key}).join(","),a.push(i),r={key:""+N.uuid(8,16)+o.key,data:[]},i={key:"",length:0,data:[r]}),i.length+=d,r.data.push(s),l===o.data.length-1&&(i.key=""+l+i.data.map(function(e){return e.key}).join(","),a.push(i))})}),a}return[{key:"block",data:r,length:o}]}function S(e){return function(n){for(var o=n,r=e>I.PIVOT_XAXIS_ROTATE_LIMIT?e:I.PIVOT_XAXIS_SIZE-I.PIVOT_XAXIS_TICK_SIZE;t.getTextWidth(n)>r;)n=n.substring(0,n.length-1);return n===o?n:n.substring(0,n.length-1)+"…"}}function T(e,t,n,o,r){var a=A(e,2),i=a[0],s=a[1],l=r.contentSize,d=r.viewSize,u=A(l,2),c=u[0],p=u[1],f=A(d,2),h=f[0],m=f[1];return[i+c+10>h?i-10-c:i+10,Math.min(s,m-p)]}function E(e,t,n,r,a,s,l,d,u){var c=t.concat(n),p=[].concat(o(r));return a&&(c=c.concat(a.items.map(function(e){return e.name}))),s&&(c=c.concat(s.items.filter(function(e){return"category"===e.type}).map(function(e){return e.name})),p=p.concat(s.items.filter(function(e){return"value"===e.type}))),l&&(p=p.concat(l.items)),d&&(p=p.concat(d.items)),u&&(p=p.concat(u.items)),c=c.reduce(function(e,t){return e.includes(t)||e.push(t),e},[]),p=p.reduce(function(e,t){var n=i(t.name);return e.find(function(e){return e.name.includes(n)&&e.agg===t.agg})||e.push(t),e},[]),function(t){var n=O(t,e);return p.map(function(e){var t=i(e.name),o=n?Array.isArray(n)?n.reduce(function(n,o){return n+o[e.agg+"("+t+")"]},0):n[e.agg+"("+t+")"]:0;return t+": "+o}).concat(c.map(function(e){return e+": "+(n?Array.isArray(n)?n[0][e]:n[e]:"")})).join("
    ")}}function D(e,t){return function(n){var o=O(n,e)||{};return"category"===t.type?Array.isArray(o)?o[0][t.name]:o[t.name]||"":Array.isArray(o)?o.reduce(function(e,n){return e+n[t.agg+"("+i(t.name)+")"]},0):o[t.agg+"("+i(t.name)+")"]||0}}function O(e,t){var n=e.seriesIndex,o=e.dataIndex,r=t[n],a=r.type,i=r.grouped,s=r.records;return"cartesian"===a?i?s[o]:s[o].value:"polar"===a?s[o]:s?s[0]:{}}function C(e,t){return Math.max(e/10,t/100)}function L(e){return e>=I.PIVOT_DEFAULT_SCATTER_SIZE_TIMES?e-I.PIVOT_DEFAULT_SCATTER_SIZE_TIMES+1:1/Math.pow(2,I.PIVOT_DEFAULT_SCATTER_SIZE_TIMES-e)}var A=function(){function e(e,t){var n=[],o=!0,r=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(o=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);o=!0);}catch(e){r=!0,a=e}finally{try{!o&&s.return&&s.return()}finally{if(r)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),P=this;Object.defineProperty(t,"__esModule",{value:!0});var I=n("./app/globalConstants.ts"),R=n("./app/assets/json/widgetlib/index.ts"),N=n("./app/utils/util.ts");t.getAggregatorLocale=r,t.encodeMetricName=a,t.decodeMetricName=i,t.spanSize=s,t.naturalSort=l,t.getTextWidth=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:I.DEFAULT_FONT_WEIGHT,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:I.DEFAULT_FONT_SIZE,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:I.DEFAULT_FONT_FAMILY,r=P.canvas||(P.canvas=document.createElement("canvas")),a=r.getContext("2d");a.font=t+" "+n+" "+o;var i=a.measureText(e);return Math.ceil(i.width)},t.getPivotContentTextWidth=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:I.DEFAULT_FONT_WEIGHT,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:I.DEFAULT_FONT_SIZE,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:I.DEFAULT_FONT_FAMILY;return Math.min(t.getTextWidth(e,n,o,r),I.PIVOT_MAX_CONTENT_WIDTH)},t.getPivotCellWidth=d,t.getPivotCellHeight=u,t.getTableBodyWidth=function(e,t,n){var o=n.length&&I.PIVOT_TITLE_SIZE,r="row"===e?n.slice(0,n.length-1).reduce(function(e,t){return e+d(t)},0):n.reduce(function(e,t){return e+d(t)},0);return t-2*I.PIVOT_BORDER-r-I.PIVOT_YAXIS_SIZE-o},t.getTableBodyHeight=function(e,t,n){var o=n&&I.PIVOT_TITLE_SIZE,r="col"===e?Math.max(n-1,0):n;return t-2*I.PIVOT_BORDER-r*u()-I.PIVOT_XAXIS_SIZE-o},t.getChartElementSize=c,t.shouldTableBodyCollapsed=p,t.getChartUnitMetricWidth=f,t.getChartUnitMetricHeight=h,t.checkChartEnable=m,t.getAxisInterval=g,t.getChartPieces=b,t.metricAxisLabelFormatter=_,t.getPivot=v,t.getBar=y,t.getScatter=x,t.getStyleConfig=j,t.getChartViewMetrics=w,t.getAxisData=k,t.axisDataCutting=M,t.getXaxisLabel=S,t.getTooltipPosition=T,t.getTooltipLabel=E,t.getChartLabel=D,t.getTriggeringRecord=O,t.getSizeRate=C,t.getSizeValue=L},"./app/containers/Widget/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LOAD_WIDGETS="davinci/Widget/LOAD_WIDGETS",t.LOAD_WIDGETS_SUCCESS="davinci/Widget/LOAD_WIDGETS_SUCCESS",t.LOAD_WIDGETS_FAILURE="davinci/Widget/LOAD_WIDGETS_FAILURE",t.ADD_WIDGET="davinci/Widget/ADD_WIDGET",t.ADD_WIDGET_SUCCESS="davinci/Widget/ADD_WIDGET_SUCCESS",t.ADD_WIDGET_FAILURE="davinci/Widget/ADD_WIDGET_FAILURE",t.LOAD_WIDGET_DETAIL="davinci/Widget/LOAD_WIDGET_DETAIL",t.LOAD_WIDGET_DETAIL_SUCCESS="davinci/Widget/LOAD_WIDGET_DETAIL_SUCCESS",t.LOAD_WIDGET_DETAIL_FAILURE="davinci/Widget/LOAD_WIDGET_DETAIL_FAILURE",t.EDIT_WIDGET="davinci/Widget/EDIT_WIDGET",t.EDIT_WIDGET_SUCCESS="davinci/Widget/EDIT_WIDGET_SUCCESS",t.EDIT_WIDGET_FAILURE="davinci/Widget/EDIT_WIDGET_FAILURE",t.DELETE_WIDGET="davinci/Widget/DELETE_WIDGET",t.DELETE_WIDGET_SUCCESS="davinci/Widget/DELETE_WIDGET_SUCCESS",t.DELETE_WIDGET_FAILURE="davinci/Widget/DELETE_WIDGET_FAILURE",t.CLEAR_CURRENT_WIDGET="davinci/Widget/CLEAR_CURRENT_WIDGET"},"./app/containers/Widget/reducer.ts":function(e,t,n){"use strict";function o(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l,t=arguments[1],n=t.type,o=t.payload,s=e.get("widgets");switch(n){case r.LOAD_WIDGETS:return e.set("loading",!0).set("widgets",null);case r.LOAD_WIDGETS_SUCCESS:return e.set("loading",!1).set("widgets",o.widgets);case r.LOAD_WIDGETS_FAILURE:return e.set("loading",!1);case r.ADD_WIDGET:return e.set("loading",!0);case r.ADD_WIDGET_SUCCESS:return s?(s.push(o.result),e.set("loading",!1).set("widgets",s.slice())):e.set("loading",!1).set("widgets",[o.result]);case r.ADD_WIDGET_FAILURE:return e.set("loading",!1);case r.DELETE_WIDGET:return e.set("loading",!0);case r.DELETE_WIDGET_SUCCESS:return e.set("widgets",s.filter(function(e){return e.id!==o.id})).set("loading",!1);case r.DELETE_WIDGET_FAILURE:return e.set("loading",!1);case r.LOAD_WIDGET_DETAIL:return e.set("loading",!0).set("currentWidget",null);case r.LOAD_WIDGET_DETAIL_SUCCESS:return e.set("loading",!1).set("currentWidget",o.detail);case r.LOAD_WIDGET_DETAIL_FAILURE:return e.set("loading",!1);case r.EDIT_WIDGET:return e.set("loading",!0);case r.EDIT_WIDGET_SUCCESS:case r.EDIT_WIDGET_FAILURE:return e.set("loading",!1);case i.LOAD_DATA:return e.set("dataLoading",!0);case i.LOAD_DATA_SUCCESS:case i.LOAD_DATA_FAILURE:return e.set("dataLoading",!1);case i.CLEAR_BIZDATAS:return e.set("bizdatas",!1);case a.LOAD_DASHBOARD_DETAIL_SUCCESS:return e.set("widgets",o.widgets);case i.LOAD_DISTINCT_VALUE:return e.set("columnValueLoading",!0).set("distinctColumnValues",null);case i.LOAD_DISTINCT_VALUE_SUCCESS:return e.set("columnValueLoading",!1).set("distinctColumnValues",o.data[o.fieldName].slice(0,100));case i.LOAD_DISTINCT_VALUE_FAILURE:return e.set("columnValueLoading",!1);case r.CLEAR_CURRENT_WIDGET:return e.set("currentWidget",null);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/containers/Widget/constants.ts"),a=n("./app/containers/Dashboard/constants.ts"),i=n("./app/containers/Bizlogic/constants.ts"),s=n("./node_modules/immutable/dist/immutable.js"),l=s.fromJS({widgets:null,currentWidget:null,loading:!1,dataLoading:!1,columnValueLoading:!1,distinctColumnValues:null});t.default=o},"./app/globalConfig.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.envName={production:"production",dev:"dev"},t.env=t.envName.production,t.default={dev:{host:"/api/v3",shareHost:"/share.html"},production:{host:"/api/v3",shareHost:"/share.html"}}},"./app/globalConstants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/assets/json/echartsThemes/default.project.json");t.DEFAULT_ECHARTS_THEME=o.theme,t.DEFAULT_PRIMARY_COLOR="#1B98E0",t.DEFAULT_SECONDARY_COLOR="#223151",t.GRID_BREAKPOINTS={lg:1200,md:996,sm:768,xs:480,xxs:0},t.GRID_COLS={lg:12,md:12,sm:12,xs:2,xxs:2},t.GRID_ITEM_MARGIN=16,t.GRID_ROW_HEIGHT=30,t.TABLE_HEADER_HEIGHT=50,t.TABLE_PAGINATION_HEIGHT=61,t.COLUMN_WIDTH=150,t.DASHBOARD_ITEM_FILTER_HEIGHT=40,t.DEFAULT_TABLE_PAGE=1,t.DEFAULT_TABLE_PAGE_SIZE=20,t.PIVOT_CELL_PADDING=4,t.PIVOT_CELL_BORDER=1,t.PIVOT_LINE_HEIGHT=18,t.PIVOT_MAX_CONTENT_WIDTH=200,t.PIVOT_BORDER=1,t.PIVOT_CHART_ELEMENT_MIN_WIDTH=24,t.PIVOT_CHART_ELEMENT_MAX_WIDTH=72,t.PIVOT_CHART_METRIC_AXIS_MIN_SIZE=80,t.PIVOT_CHART_SPLIT_SIZE=40,t.PIVOT_CHART_POINT_LIMIT=100,t.PIVOT_XAXIS_SIZE=50,t.PIVOT_YAXIS_SIZE=64,t.PIVOT_TITLE_SIZE=27,t.PIVOT_XAXIS_ROTATE_LIMIT=30,t.PIVOT_XAXIS_TICK_SIZE=12,t.PIVOT_LEGEND_ITEM_PADDING=32,t.PIVOT_LEGEND_PADDING=16,t.PIVOT_DEFAULT_SCATTER_SIZE=10,t.PIVOT_DEFAULT_SCATTER_SIZE_TIMES=4,t.PIVOT_CANVAS_SIZE_LIMIT=3e3,t.PIVOT_CANVAS_AXIS_SIZE_LIMIT=8e3,t.PIVOT_CANVAS_POLAR_SIZE_LIMIT=8e3,t.PIVOT_DEFAULT_AXIS_LINE_COLOR="#D9D9D9",t.PIVOT_DEFAULT_FONT_COLOR="#666",t.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR="#f7f7f7",t.PIVOT_CHART_FONT_FAMILIES=[{name:"苹方",value:"PingFang SC"},{name:"微软雅黑",value:"Microsoft YaHei"},{name:"宋体",value:"SimSun"},{name:"黑体",value:"SimHei"},{name:"Helvetica Neue",value:'"Helvetica Neue"'},{name:"Helvetica",value:"Helvetica"},{name:"Arial",value:"Arial"},{name:"sans-serif",value:"sans-serif"}],t.PIVOT_CHART_LINE_STYLES=[{name:"实线",value:"solid"},{name:"虚线",value:"dashed"},{name:"点",value:"dotted"}],t.PIVOT_CHART_FONT_SIZES=[10,12,13,14,15,16,18,20,24,28,32,36,40,48,56,64],t.SQL_STRING_TYPES=["CHAR","VARCHAR","TINYTEXT","TEXT","MEDIUMTEXT","LONGTEXT","JSON","LINESTRING","MULTILINESTRING","TINYBLOB","MEDIUMBLOB","BLOB","LONGBLOB","BINARY","VARBINARY","ENUM","SET"],t.SQL_NUMBER_TYPES=["TINYINT","SMALLINT","MEDIUMINT","INT","INTEGER","BIGINT","FLOAT","DOUBLE","DOUBLE PRECISION","REAL","DECIMAL","BIT","SERIAL","BOOL","BOOLEAN","DEC","FIXED","NUMERIC"],t.SQL_DATE_TYPES=["DATE","DATETIME","TIMESTAMP","TIME","YEAR"],t.DEFAULT_SPLITER="@davinci@",t.KEY_COLUMN="davinciUniqueId",t.ECHARTS_RENDERER="echarts",t.DEFAULT_FONT_WEIGHT="normal",t.DEFAULT_FONT_SIZE="12px",t.DEFAULT_FONT_FAMILY='"Helvetica Neue For Number", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif',t.DEFAULT_DATE_FORMAT="YYYY-MM-DD",t.DEFAULT_DATETIME_FORMAT="YYYY-MM-DD HH:mm:ss"},"./app/i18n.js":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"appLocales",function(){return h}),n.d(t,"formatTranslationMessages",function(){return m}),n.d(t,"translationMessages",function(){return g});var r=n("./node_modules/react-intl/lib/index.es.js"),a=n("./node_modules/react-intl/locale-data/en.js"),i=n.n(a),s=n("./node_modules/react-intl/locale-data/de.js"),l=n.n(s),d=n("./app/containers/App/constants.ts"),u=(n.n(d),n("./app/translations/en.json")),c=n.n(u),p=n("./app/translations/de.json"),f=n.n(p);Object(r.addLocaleData)(i.a),Object(r.addLocaleData)(l.a);var h=["en","de"],m=function e(t,n){var r=t!==d.DEFAULT_LOCALE?e(d.DEFAULT_LOCALE,c.a):{};return Object.keys(n).reduce(function(e,a){var i=n[a]||t===d.DEFAULT_LOCALE?n[a]:r[a];return Object.assign(e,o({},a,i))},{})},g={en:m("en",c.a),de:m("de",f.a)}},"./app/reducers.ts":function(e,t,n){"use strict";function o(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p,t=arguments[1];switch(t.type){case s.LOCATION_CHANGE:return e.merge({locationBeforeTransitions:t.payload});default:return e}}function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return i.combineReducers(Object.assign({route:o,language:l.default,report:d.default,bizlogic:u.default,widget:c.default},e))}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/immutable/dist/immutable.js"),i=n("./node_modules/redux-immutable/dist/index.js"),s=n("./node_modules/react-router-redux/lib/index.js"),l=n("./app/containers/LanguageProvider/reducer.ts"),d=n("./app/containers/Report/reducer.ts"),u=n("./app/containers/Bizlogic/reducer.ts"),c=n("./app/containers/Widget/reducer.ts"),p=a.fromJS({locationBeforeTransitions:null});t.default=r},"./app/translations/de.json":function(e,t){e.exports={}},"./app/translations/en.json":function(e,t){e.exports={}},"./app/utils/api.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/globalConfig.ts"),r=n.n(o),a=r.a[o.env].host;t.default={login:a+"/login",group:a+"/groups",user:a+"/users",changepwd:a+"/changepwd",source:a+"/sources",bizlogic:a+"/views",widget:a+"/widgets",display:a+"/displays",share:a+"/share",checkName:a+"/check",projectsCheckName:a+"/check/",uploads:a+"/uploads",schedule:a+"/cronjobs",signup:a+"/users",organizations:a+"/organizations",checkNameUnique:a+"/check",projects:a+"/projects",teams:a+"/teams",portal:a+"/dashboardPortals",star:a+"/star"}},"./app/utils/asyncAdapter.js":function(e,t,n){"use strict";function o(e){return e&&l.apiConfig[e]?l.apiConfig[e].env:s.env}function r(e,t){switch(o(t)){case"production":return e.payload||[];default:return e}}function a(e,t){switch(o(t)){case"production":return e.payload;default:return e}}function i(e,t){switch(o(t)){case"production":return{payload:[e]};default:return e}}Object.defineProperty(t,"__esModule",{value:!0}),t.readListAdapter=r,t.readObjectAdapter=a,t.writeAdapter=i;var s=n("./app/globalConfig.ts"),l=(n.n(s),n("./app/utils/api.js"))},"./app/utils/checkStore.ts":function(e,t,n){"use strict";function o(e){s(r(e,{dispatch:a,subscribe:a,getState:a,replaceReducer:a,runSaga:a,injectedReducers:i,injectedSagas:i}),"(app/utils...) injectors: Expected a valid redux store")}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/lodash/conformsTo.js"),a=n("./node_modules/lodash/isFunction.js"),i=n("./node_modules/lodash/isObject.js"),s=n("./node_modules/invariant/browser.js");t.default=o},"./app/utils/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RESTART_ON_REMOUNT="@@saga-injector/restart-on-remount",t.DAEMON="@@saga-injector/daemon",t.ONCE_TILL_UNMOUNT="@@saga-injector/once-till-unmount"},"./app/utils/injectReducer.tsx":function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},r=arguments[2];t||c.default(e);var a=Object.assign({},o,{mode:o.mode||p.RESTART_ON_REMOUNT}),i=a.saga,s=a.mode;h(n),m(a);var l=Reflect.has(e.injectedSagas,n);(!l||l&&s!==p.DAEMON&&s!==p.ONCE_TILL_UNMOUNT)&&(e.injectedSagas[n]=Object.assign({},a,{task:e.runSaga(i,r)}))}}function r(e,t){return function(n){if(t||c.default(e),h(n),Reflect.has(e.injectedSagas,n)){var o=e.injectedSagas[n];o.mode!==p.DAEMON&&(o.task.cancel(),e.injectedSagas[n]="done")}}}function a(e){return c.default(e),{injectSaga:o(e,!0),ejectSaga:r(e,!0)}}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/lodash/isEmpty.js"),s=n("./node_modules/lodash/isFunction.js"),l=n("./node_modules/lodash/isString.js"),d=n("./node_modules/invariant/browser.js"),u=n("./node_modules/lodash/conformsTo.js"),c=n("./app/utils/checkStore.ts"),p=n("./app/utils/constants.ts"),f=[p.RESTART_ON_REMOUNT,p.DAEMON,p.ONCE_TILL_UNMOUNT],h=function(e){return d(l(e)&&!i(e),"(app/utils...) injectSaga: Expected `key` to be a non empty string")},m=function(e){d(u(e,{saga:s,mode:function(e){return l(e)&&f.includes(e)}}),"(app/utils...) injectSaga: Expected a valid saga descriptor")};t.injectSagaFactory=o,t.ejectSagaFactory=r,t.default=a},"./app/utils/util.ts":function(e,t,n){"use strict";function o(e,t){var n=Math.max((""+e).indexOf(".")>=0?(""+e).substr((""+e).indexOf(".")+1).length:0,(""+t).indexOf(".")>=0?(""+t).substr((""+t).indexOf(".")+1).length:0);if(n){var o=Math.pow(10,n);return(Math.round(e*o)+Math.round(t*o))/o}return e+t}function r(e){if(e.response)switch(e.response.status){case 403:l.error("未登录或会话过期,请重新登录",1),s.removeToken(),localStorage.removeItem("TOKEN");var t=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search+"#login";location.replace(t);case 401:l.error("您没有权限访问此数据",2);break;default:l.error(e.response.data.header.msg,3)}else l.error(e,3)}function a(e,t){var n=new FileReader;n.addEventListener("load",function(){return t(n.result)}),n.readAsDataURL(e)}function i(e){var t=[];return e.length&&e.forEach(function(e){var n=[];e.columns&&e.columns.length&&e.columns.forEach(function(e){n.push({title:e.name,key:e.name})}),t.push({title:e.tableName,key:e.tableName,children:n})}),t}Object.defineProperty(t,"__esModule",{value:!0});var s=n("./app/utils/request.ts"),l=n("./node_modules/antd/lib/message/index.js");t.uuid=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:62,n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),o=[],r=void 0;if(e)for(r=0;r=0?"slide-down":"slide-up"}},{key:"componentDidMount",value:function(){var e=this.props.overlay,t=e.props;(0,x.default)(!t.mode||"vertical"===t.mode,'mode="'+t.mode+"\" is not supported for Dropdown's Menu.")}},{key:"render",value:function(){var e=this.props,t=e.children,n=e.prefixCls,o=e.overlay,r=e.trigger,i=e.disabled,s=(0,h.cloneElement)(t,{className:(0,v.default)(t.props.className,n+"-trigger"),disabled:i}),l=o&&o.props,d=!!(l&&"selectable"in l)&&l.selectable,u=(0,h.cloneElement)(o,{mode:"vertical",selectable:d});return m.default.createElement(b.default,(0,a.default)({},this.props,{transitionName:this.getTransitionName(),trigger:i?[]:r,overlay:u}),s)}}]),t}(m.default.Component);t.default=j,j.defaultProps={prefixCls:"ant-dropdown",mouseEnterDelay:.15,mouseLeaveDelay:.1,placement:"bottomLeft"},e.exports=t.default},"./node_modules/antd/lib/dropdown/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/antd/lib/dropdown/dropdown.js"),a=o(r),i=n("./node_modules/antd/lib/dropdown/dropdown-button.js"),s=o(i);a.default.Button=s.default,t.default=a.default,e.exports=t.default},"./node_modules/antd/lib/form/Form.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/extends.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/defineProperty.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=o(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=o(h),g=n("./node_modules/react/react.js"),b=o(g),_=n("./node_modules/prop-types/index.js"),v=o(_),y=n("./node_modules/classnames/index.js"),x=o(y),j=n("./node_modules/rc-form/lib/createDOMForm.js"),w=o(j),k=n("./node_modules/rc-util/lib/PureRenderMixin.js"),M=o(k),S=n("./node_modules/omit.js/lib/index.js"),T=o(S),E=n("./node_modules/create-react-class/index.js"),D=o(E),O=n("./node_modules/antd/lib/_util/warning.js"),C=o(O),L=n("./node_modules/antd/lib/form/FormItem.js"),A=o(L),P=n("./node_modules/antd/lib/form/constants.js"),I=function(e){function t(e){(0,d.default)(this,t);var n=(0,f.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return(0,C.default)(!e.form,"It is unnecessary to pass `form` to `Form` after antd@1.7.0."),n}return(0,m.default)(t,e),(0,c.default)(t,[{key:"shouldComponentUpdate",value:function(){for(var e=arguments.length,t=Array(e),n=0;n0&&void 0!==arguments[0]?arguments[0]:{},t=(0,w.default)((0,a.default)({fieldNameProp:"id"},e,{fieldMetaProp:P.FIELD_META_PROP}));return function(n){return t((0,D.default)({propTypes:{form:v.default.object.isRequired},childContextTypes:{form:v.default.object.isRequired},getChildContext:function(){return{form:this.props.form}},componentWillMount:function(){this.__getFieldProps=this.props.form.getFieldProps},deprecatedGetFieldProps:function(e,t){return(0,C.default)(!1,"`getFieldProps` is not recommended, please use `getFieldDecorator` instead, see: https://u.ant.design/get-field-decorator"),this.__getFieldProps(e,t)},render:function(){this.props.form.getFieldProps=this.deprecatedGetFieldProps;var t={};return e.withRef?t.ref="formWrappedComponent":this.props.wrappedComponentRef&&(t.ref=this.props.wrappedComponentRef),b.default.createElement(n,(0,a.default)({},this.props,t))}}))}},e.exports=t.default},"./node_modules/antd/lib/form/FormItem.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/extends.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=o(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=o(h),g=n("./node_modules/react/react.js"),b=o(g),_=n("./node_modules/react-dom/index.js"),v=n("./node_modules/prop-types/index.js"),y=o(v),x=n("./node_modules/classnames/index.js"),j=o(x),w=n("./node_modules/rc-util/lib/PureRenderMixin.js"),k=o(w),M=n("./node_modules/antd/lib/grid/row.js"),S=o(M),T=n("./node_modules/antd/lib/grid/col.js"),E=o(T),D=n("./node_modules/antd/lib/form/constants.js"),O=n("./node_modules/antd/lib/_util/warning.js"),C=o(O),L=function(e){function t(){(0,d.default)(this,t);var e=(0,f.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.onLabelClick=function(){var t=e.props.id||e.getId();if(t){if(1!==document.querySelectorAll('[id="'+t+'"]').length){var n=(0,_.findDOMNode)(e).querySelector('[id="'+t+'"]');n&&n.focus&&n.focus()}}},e}return(0,m.default)(t,e),(0,c.default)(t,[{key:"componentDidMount",value:function(){(0,C.default)(this.getControls(this.props.children,!0).length<=1,"`Form.Item` cannot generate `validateStatus` and `help` automatically, while there are more than one `getFieldDecorator` in it.")}},{key:"shouldComponentUpdate",value:function(){for(var e=arguments.length,t=Array(e),n=0;n0));a++){var i=r[a];(!i.type||i.type!==t&&"FormItem"!==i.type.displayName)&&i.props&&(D.FIELD_META_PROP in i.props?o.push(i):i.props.children&&(o=o.concat(this.getControls(i.props.children,n))))}return o}},{key:"getOnlyControl",value:function(){var e=this.getControls(this.props.children,!1)[0];return void 0!==e?e:null}},{key:"getChildProp",value:function(e){var t=this.getOnlyControl();return t&&t.props&&t.props[e]}},{key:"getId",value:function(){return this.getChildProp("id")}},{key:"getMeta",value:function(){return this.getChildProp(D.FIELD_META_PROP)}},{key:"renderHelp",value:function(){var e=this.props.prefixCls,t=this.getHelpMsg();return t?b.default.createElement("div",{className:e+"-explain",key:"help"},t):null}},{key:"renderExtra",value:function(){var e=this.props,t=e.prefixCls,n=e.extra;return n?b.default.createElement("div",{className:t+"-extra"},n):null}},{key:"getValidateStatus",value:function(){var e=this.context.form,t=e.isFieldValidating,n=e.getFieldError,o=e.getFieldValue,r=this.getId();if(!r)return"";if(t(r))return"validating";if(n(r))return"error";var a=o(r);return void 0!==a&&null!==a&&""!==a?"success":""}},{key:"renderValidateWrapper",value:function(e,t,n){var o="",r=this.context.form,a=this.props,i=void 0===a.validateStatus&&r?this.getValidateStatus():a.validateStatus;return i&&(o=(0,j.default)({"has-feedback":a.hasFeedback||"validating"===i,"has-success":"success"===i,"has-warning":"warning"===i,"has-error":"error"===i,"is-validating":"validating"===i})),b.default.createElement("div",{className:this.props.prefixCls+"-item-control "+o},e,t,n)}},{key:"renderWrapper",value:function(e){var t=this.props,n=t.prefixCls,o=t.wrapperCol,r=(0,j.default)(n+"-item-control-wrapper",o&&o.className);return b.default.createElement(E.default,(0,s.default)({},o,{className:r,key:"wrapper"}),e)}},{key:"isRequired",value:function(){var e=this.props.required;if(void 0!==e)return e;if(this.context.form){return((this.getMeta()||{}).validate||[]).filter(function(e){return!!e.rules}).some(function(e){return e.rules.some(function(e){return e.required})})}return!1}},{key:"renderLabel",value:function(){var e=this.props,t=e.prefixCls,n=e.label,o=e.labelCol,r=e.colon,i=e.id,l=this.context,d=this.isRequired(),u=(0,j.default)(t+"-item-label",o&&o.className),c=(0,j.default)((0,a.default)({},t+"-item-required",d)),p=n;return r&&!l.vertical&&"string"==typeof n&&""!==n.trim()&&(p=n.replace(/[:|:]\s*$/,"")),n?b.default.createElement(E.default,(0,s.default)({},o,{className:u,key:"label"}),b.default.createElement("label",{htmlFor:i||this.getId(),className:c,title:"string"==typeof n?n:"",onClick:this.onLabelClick},p)):null}},{key:"renderChildren",value:function(){var e=this.props,t=b.default.Children.map(e.children,function(e){return e&&"function"==typeof e.type&&!e.props.size?b.default.cloneElement(e,{size:"large"}):e});return[this.renderLabel(),this.renderWrapper(this.renderValidateWrapper(t,this.renderHelp(),this.renderExtra()))]}},{key:"renderFormItem",value:function(e){var t,n=this.props,o=n.prefixCls,r=n.style,i=(t={},(0,a.default)(t,o+"-item",!0),(0,a.default)(t,o+"-item-with-help",!!this.getHelpMsg()),(0,a.default)(t,o+"-item-no-colon",!n.colon),(0,a.default)(t,""+n.className,!!n.className),t);return b.default.createElement(S.default,{className:(0,j.default)(i),style:r},e)}},{key:"render",value:function(){var e=this.renderChildren();return this.renderFormItem(e)}}]),t}(b.default.Component);t.default=L,L.defaultProps={hasFeedback:!1,prefixCls:"ant-form",colon:!0},L.propTypes={prefixCls:y.default.string,label:y.default.oneOfType([y.default.string,y.default.node]),labelCol:y.default.object,help:y.default.oneOfType([y.default.node,y.default.bool]),validateStatus:y.default.oneOf(["","success","warning","error","validating"]),hasFeedback:y.default.bool,wrapperCol:y.default.object,className:y.default.string,id:y.default.string,children:y.default.node,colon:y.default.bool},L.contextTypes={form:y.default.object,vertical:y.default.bool},e.exports=t.default},"./node_modules/antd/lib/form/constants.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.FIELD_META_PROP="data-__meta"},"./node_modules/antd/lib/form/index.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/antd/lib/form/Form.js"),r=function(e){return e&&e.__esModule?e:{default:e}}(o);t.default=r.default,e.exports=t.default},"./node_modules/antd/lib/grid/col.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/extends.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/typeof.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/createClass.js"),f=o(p),h=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),m=o(h),g=n("./node_modules/babel-runtime/helpers/inherits.js"),b=o(g),_=n("./node_modules/react/react.js"),v=o(_),y=n("./node_modules/prop-types/index.js"),x=o(y),j=n("./node_modules/classnames/index.js"),w=o(j),k=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,o=Object.getOwnPropertySymbols(e);r0?(0,a.default)({marginLeft:l/-2,marginRight:l/-2},d):d,_=g.Children.map(u,function(e){return e?e.props&&l>0?(0,g.cloneElement)(e,{style:(0,a.default)({paddingLeft:l/2,paddingRight:l/2},e.props.style)}):e:null});return b.default.createElement("div",(0,a.default)({},f,{className:h,style:m}),_)}}]),t}(b.default.Component);t.default=w,w.defaultProps={gutter:0},w.propTypes={type:x.default.string,align:x.default.string,justify:x.default.string,className:x.default.string,children:x.default.node,gutter:x.default.number,prefixCls:x.default.string},e.exports=t.default},"./node_modules/antd/lib/icon/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/extends.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/defineProperty.js"),s=o(i),l=n("./node_modules/react/react.js"),d=o(l),u=n("./node_modules/classnames/index.js"),c=o(u),p=n("./node_modules/omit.js/lib/index.js"),f=o(p),h=function(e){var t=e.type,n=e.className,o=void 0===n?"":n,r=e.spin,i=(0,c.default)((0,s.default)({anticon:!0,"anticon-spin":!!r||"loading"===t},"anticon-"+t,!0),o);return d.default.createElement("i",(0,a.default)({},(0,f.default)(e,["type","spin"]),{className:i}))};t.default=h,e.exports=t.default},"./node_modules/antd/lib/input-number/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/extends.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/defineProperty.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=o(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=o(h),g=n("./node_modules/react/react.js"),b=o(g),_=n("./node_modules/classnames/index.js"),v=o(_),y=n("./node_modules/rc-input-number/lib/index.js"),x=o(y),j=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,o=Object.getOwnPropertySymbols(e);r1&&void 0!==arguments[1]&&arguments[1],n=e.getAttribute("id")||e.getAttribute("data-reactid")||e.getAttribute("name");if(t&&s[n])return s[n];var o=window.getComputedStyle(e),r=o.getPropertyValue("box-sizing")||o.getPropertyValue("-moz-box-sizing")||o.getPropertyValue("-webkit-box-sizing"),a=parseFloat(o.getPropertyValue("padding-bottom"))+parseFloat(o.getPropertyValue("padding-top")),l=parseFloat(o.getPropertyValue("border-bottom-width"))+parseFloat(o.getPropertyValue("border-top-width")),d=i.map(function(e){return e+":"+o.getPropertyValue(e)}).join(";"),u={sizingStyle:d,paddingSize:a,borderSize:l,boxSizing:r};return t&&n&&(s[n]=u),u}function r(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;l||(l=document.createElement("textarea"),document.body.appendChild(l)),e.getAttribute("wrap")?l.setAttribute("wrap",e.getAttribute("wrap")):l.removeAttribute("wrap");var i=o(e,t),s=i.paddingSize,d=i.borderSize,u=i.boxSizing,c=i.sizingStyle;l.setAttribute("style",c+";"+a),l.value=e.value||e.placeholder||"";var p=-1/0,f=1/0,h=l.scrollHeight,m=void 0;if("border-box"===u?h+=d:"content-box"===u&&(h-=s),null!==n||null!==r){l.value="";var g=l.scrollHeight-s;null!==n&&(p=g*n,"border-box"===u&&(p=p+s+d),h=Math.max(p,h)),null!==r&&(f=g*r,"border-box"===u&&(f=f+s+d),m=h>f?"":"hidden",h=Math.min(f,h))}return r||(m="hidden"),{height:h,minHeight:p,maxHeight:f,overflowY:m}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r;var a="\n min-height:0 !important;\n max-height:none !important;\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important\n",i=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"],s={},l=void 0;e.exports=t.default},"./node_modules/antd/lib/input/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/antd/lib/input/Input.js"),a=o(r),i=n("./node_modules/antd/lib/input/Group.js"),s=o(i),l=n("./node_modules/antd/lib/input/Search.js"),d=o(l),u=n("./node_modules/antd/lib/input/TextArea.js"),c=o(u);a.default.Group=s.default,a.default.Search=d.default,a.default.TextArea=c.default,t.default=a.default,e.exports=t.default},"./node_modules/antd/lib/locale-provider/injectLocale.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/extends.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/inherits.js"),f=o(p),h=n("./node_modules/prop-types/index.js"),m=o(h);t.default=function(e,t){return function(n){var o=n;return r=function(n){function o(){return(0,s.default)(this,o),(0,c.default)(this,(o.__proto__||Object.getPrototypeOf(o)).apply(this,arguments))}return(0,f.default)(o,n),(0,d.default)(o,[{key:"getLocale",value:function(){var n=this.context.antLocale,o=n&&n[e],r=this.props.locale||{};return(0,a.default)({},t,o||{},r)}}]),o}(n),r.propTypes=o.propTypes,r.defaultProps=o.defaultProps,r.contextTypes=(0,a.default)({},o.context||{},{antLocale:m.default.object}),r;var r}},e.exports=t.default},"./node_modules/antd/lib/menu/MenuItem.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/createClass.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/inherits.js"),c=o(u),p=n("./node_modules/react/react.js"),f=o(p),h=n("./node_modules/rc-menu/lib/index.js"),m=n("./node_modules/prop-types/index.js"),g=o(m),b=n("./node_modules/antd/lib/tooltip/index.js"),_=o(b),v=function(e){function t(){return(0,a.default)(this,t),(0,d.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return(0,c.default)(t,e),(0,s.default)(t,[{key:"render",value:function(){var e=this.context.inlineCollapsed,t=this.props;return f.default.createElement(_.default,{title:e&&1===t.level?t.children:"",placement:"right",overlayClassName:t.rootPrefixCls+"-inline-collapsed-tooltip"},f.default.createElement(h.Item,t))}}]),t}(f.default.Component);v.contextTypes={inlineCollapsed:g.default.bool},v.isMenuItem=1,t.default=v,e.exports=t.default},"./node_modules/antd/lib/menu/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/extends.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=o(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=o(h),g=n("./node_modules/react/react.js"),b=o(g),_=n("./node_modules/rc-menu/lib/index.js"),v=o(_),y=n("./node_modules/prop-types/index.js"),x=o(y),j=n("./node_modules/classnames/index.js"),w=o(j),k=n("./node_modules/antd/lib/_util/openAnimation.js"),M=o(k),S=n("./node_modules/antd/lib/_util/warning.js"),T=o(S),E=n("./node_modules/antd/lib/menu/MenuItem.js"),D=o(E),O=function(e){function t(e){(0,d.default)(this,t);var n=(0,f.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.inlineOpenKeys=[],n.handleClick=function(e){n.handleOpenChange([]);var t=n.props.onClick;t&&t(e)},n.handleOpenChange=function(e){n.setOpenKeys(e);var t=n.props.onOpenChange;t&&t(e)},(0,T.default)(!("onOpen"in e||"onClose"in e),"`onOpen` and `onClose` are removed, please use `onOpenChange` instead, see: https://u.ant.design/menu-on-open-change."),(0,T.default)(!("inlineCollapsed"in e&&"inline"!==e.mode),"`inlineCollapsed` should only be used when Menu's `mode` is inline.");var o=void 0;return"defaultOpenKeys"in e?o=e.defaultOpenKeys:"openKeys"in e&&(o=e.openKeys),n.state={openKeys:o||[]},n}return(0,m.default)(t,e),(0,c.default)(t,[{key:"getChildContext",value:function(){return{inlineCollapsed:this.getInlineCollapsed()}}},{key:"componentWillReceiveProps",value:function(e,t){if("inline"===this.props.mode&&"inline"!==e.mode&&(this.switchModeFromInline=!0),"openKeys"in e)return void this.setState({openKeys:e.openKeys});(e.inlineCollapsed&&!this.props.inlineCollapsed||t.siderCollapsed&&!this.context.siderCollapsed)&&(this.switchModeFromInline=!!this.state.openKeys.length,this.inlineOpenKeys=this.state.openKeys,this.setState({openKeys:[]})),(!e.inlineCollapsed&&this.props.inlineCollapsed||!t.siderCollapsed&&this.context.siderCollapsed)&&(this.setState({openKeys:this.inlineOpenKeys}),this.inlineOpenKeys=[])}},{key:"setOpenKeys",value:function(e){"openKeys"in this.props||this.setState({openKeys:e})}},{key:"getRealMenuMode",value:function(){var e=this.getInlineCollapsed();if(this.switchModeFromInline&&e&&this.leaveAnimationExecutedWhenInlineCollapsed)return this.leaveAnimationExecutedWhenInlineCollapsed=!1,"inline";var t=this.props.mode;return e?"vertical":t}},{key:"getInlineCollapsed",value:function(){var e=this.props.inlineCollapsed;return void 0!==this.context.siderCollapsed?this.context.siderCollapsed:e}},{key:"getMenuOpenAnimation",value:function(e){var t=this,n=this.props,o=n.openAnimation,r=n.openTransitionName,a=o||r;if(void 0===o&&void 0===r)switch(e){case"horizontal":a="slide-up";break;case"vertical":this.switchModeFromInline?(a="",this.switchModeFromInline=!1):a="zoom-big";break;case"inline":a=(0,s.default)({},M.default,{leave:function(e,n){return M.default.leave(e,function(){t.switchModeFromInline=!1,t.leaveAnimationExecutedWhenInlineCollapsed=!0,t.setState({}),n()})}})}return a}},{key:"render",value:function(){var e=this.props,t=e.prefixCls,n=e.className,o=e.theme,r=this.getRealMenuMode(),i=this.getMenuOpenAnimation(r),l=(0,w.default)(n,t+"-"+o,(0,a.default)({},t+"-inline-collapsed",this.getInlineCollapsed())),d={openKeys:this.state.openKeys,onOpenChange:this.handleOpenChange,className:l,mode:r};return"inline"!==r?(d.onClick=this.handleClick,d.openTransitionName=i):d.openAnimation=i,b.default.createElement(v.default,(0,s.default)({},this.props,d))}}]),t}(b.default.Component);t.default=O,O.Divider=_.Divider,O.Item=D.default,O.SubMenu=_.SubMenu,O.ItemGroup=_.ItemGroup,O.defaultProps={prefixCls:"ant-menu",className:"",theme:"light"},O.childContextTypes={inlineCollapsed:x.default.bool},O.contextTypes={siderCollapsed:x.default.bool},e.exports=t.default},"./node_modules/antd/lib/message/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(){return h=h||d.default.newInstance({prefixCls:g,transitionName:"move-up",style:{top:f},getContainer:b})}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p,n=arguments[2],o=arguments[3],a={info:"info-circle",success:"check-circle",error:"cross-circle",warning:"exclamation-circle",loading:"loading"}[n],i=r();return i.notice({key:m,duration:t,style:{},content:s.default.createElement("div",{className:g+"-custom-content "+g+"-"+n},s.default.createElement(c.default,{type:a}),s.default.createElement("span",null,e)),onClose:o}),function(){var e=m++;return function(){i.removeNotice(e)}}()}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/react/react.js"),s=o(i),l=n("./node_modules/rc-notification/lib/index.js"),d=o(l),u=n("./node_modules/antd/lib/icon/index.js"),c=o(u),p=3,f=void 0,h=void 0,m=1,g="ant-message",b=void 0;t.default={info:function(e,t,n){return a(e,t,"info",n)},success:function(e,t,n){return a(e,t,"success",n)},error:function(e,t,n){return a(e,t,"error",n)},warn:function(e,t,n){return a(e,t,"warning",n)},warning:function(e,t,n){return a(e,t,"warning",n)},loading:function(e,t,n){return a(e,t,"loading",n)},config:function(e){void 0!==e.top&&(f=e.top,h=null),void 0!==e.duration&&(p=e.duration),void 0!==e.prefixCls&&(g=e.prefixCls),void 0!==e.getContainer&&(b=e.getContainer)},destroy:function(){h&&(h.destroy(),h=null)}},e.exports=t.default},"./node_modules/antd/lib/popconfirm/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/extends.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/inherits.js"),f=o(p),h=n("./node_modules/react/react.js"),m=o(h),g=n("./node_modules/antd/lib/tooltip/index.js"),b=o(g),_=n("./node_modules/antd/lib/icon/index.js"),v=o(_),y=n("./node_modules/antd/lib/button/index.js"),x=o(y),j=n("./node_modules/antd/lib/locale-provider/injectLocale.js"),w=o(j),k=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,o=Object.getOwnPropertySymbols(e);r0&&(d=s.map(function(t,n){return"string"==typeof t?g.default.createElement(k.default,{key:n,disabled:e.props.disabled,value:t,onChange:e.onRadioChange,checked:e.state.value===t},t):g.default.createElement(k.default,{key:n,disabled:t.disabled||e.props.disabled,value:t.value,onChange:e.onRadioChange,checked:e.state.value===t.value},t.label)})),g.default.createElement("div",{className:l,style:t.style,onMouseEnter:t.onMouseEnter,onMouseLeave:t.onMouseLeave,id:t.id},d)}}]),t}(g.default.Component);t.default=M,M.defaultProps={disabled:!1},M.childContextTypes={radioGroup:_.default.any},e.exports=t.default},"./node_modules/antd/lib/radio/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.Group=t.Button=void 0;var r=n("./node_modules/antd/lib/radio/radio.js"),a=o(r),i=n("./node_modules/antd/lib/radio/group.js"),s=o(i),l=n("./node_modules/antd/lib/radio/radioButton.js"),d=o(l);a.default.Button=d.default,a.default.Group=s.default,t.Button=d.default,t.Group=s.default,t.default=a.default},"./node_modules/antd/lib/radio/radio.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/extends.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=o(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=o(h),g=n("./node_modules/react/react.js"),b=o(g),_=n("./node_modules/prop-types/index.js"),v=o(_),y=n("./node_modules/rc-checkbox/lib/index.js"),x=o(y),j=n("./node_modules/classnames/index.js"),w=o(j),k=n("./node_modules/shallowequal/index.js"),M=o(k),S=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,o=Object.getOwnPropertySymbols(e);r-1||e.indexOf("h")>-1||e.indexOf("k")>-1,showMinute:e.indexOf("m")>-1,showSecond:e.indexOf("s")>-1}}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/defineProperty.js"),i=o(a),s=n("./node_modules/babel-runtime/helpers/extends.js"),l=o(s),d=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),u=o(d),c=n("./node_modules/babel-runtime/helpers/createClass.js"),p=o(c),f=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),h=o(f),m=n("./node_modules/babel-runtime/helpers/inherits.js"),g=o(m);t.generateShowHourMinuteSecond=r;var b=n("./node_modules/react/react.js"),_=o(b),v=n("./node_modules/moment/src/moment.js"),y=o(v),x=n("./node_modules/rc-time-picker/lib/TimePicker.js"),j=o(x),w=n("./node_modules/classnames/index.js"),k=o(w),M=n("./node_modules/antd/lib/locale-provider/injectLocale.js"),S=o(M),T=n("./node_modules/antd/lib/time-picker/locale/zh_CN.js"),E=o(T),D=function(e){function t(e){(0,u.default)(this,t);var n=(0,h.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.handleChange=function(e){"value"in n.props||n.setState({value:e});var t=n.props,o=t.onChange,r=t.format,a=void 0===r?"HH:mm:ss":r;o&&o(e,e&&e.format(a)||"")},n.handleOpenClose=function(e){var t=e.open,o=n.props.onOpenChange;o&&o(t)},n.saveTimePicker=function(e){n.timePickerRef=e};var o=e.value||e.defaultValue;if(o&&!y.default.isMoment(o))throw new Error("The value/defaultValue of TimePicker must be a moment object after `antd@2.0`, see: https://u.ant.design/time-picker-value");return n.state={value:o},n}return(0,g.default)(t,e),(0,p.default)(t,[{key:"componentWillReceiveProps",value:function(e){"value"in e&&this.setState({value:e.value})}},{key:"focus",value:function(){this.timePickerRef.focus()}},{key:"getDefaultFormat",value:function(){var e=this.props,t=e.format,n=e.use12Hours;return t||(n?"h:mm:ss a":"HH:mm:ss")}},{key:"render",value:function(){var e=(0,l.default)({},this.props);delete e.defaultValue;var t=this.getDefaultFormat(),n=(0,k.default)(e.className,(0,i.default)({},e.prefixCls+"-"+e.size,!!e.size)),o=function(t){return e.addon?_.default.createElement("div",{className:e.prefixCls+"-panel-addon"},e.addon(t)):null};return _.default.createElement(j.default,(0,l.default)({},r(t),e,{ref:this.saveTimePicker,format:t,className:n,value:this.state.value,placeholder:void 0===e.placeholder?this.getLocale().placeholder:e.placeholder,onChange:this.handleChange,onOpen:this.handleOpenClose,onClose:this.handleOpenClose,addon:o}))}}]),t}(_.default.Component);D.defaultProps={prefixCls:"ant-time-picker",align:{offset:[0,-2]},disabled:!1,disabledHours:void 0,disabledMinutes:void 0,disabledSeconds:void 0,hideDisabledOptions:!1,placement:"bottomLeft",transitionName:"slide-up"};var O=(0,S.default)("TimePicker",E.default);t.default=O(D)},"./node_modules/antd/lib/time-picker/locale/zh_CN.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o={placeholder:"请选择时间"};t.default=o,e.exports=t.default},"./node_modules/antd/lib/tooltip/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/inherits.js"),f=o(p),h=n("./node_modules/babel-runtime/helpers/extends.js"),m=o(h),g=n("./node_modules/react/react.js"),b=o(g),_=n("./node_modules/rc-tooltip/lib/index.js"),v=o(_),y=n("./node_modules/classnames/index.js"),x=o(y),j=n("./node_modules/antd/lib/tooltip/placements.js"),w=o(j),k=function(e,t){var n={},o=(0,m.default)({},e);return t.forEach(function(t){e&&t in e&&(n[t]=e[t],delete o[t])}),{picked:n,omited:o}},M=function(e){function t(e){(0,s.default)(this,t);var n=(0,c.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.onVisibleChange=function(e){var t=n.props.onVisibleChange;"visible"in n.props||n.setState({visible:!n.isNoTitle()&&e}),t&&!n.isNoTitle()&&t(e)},n.onPopupAlign=function(e,t){var o=n.getPlacements(),r=Object.keys(o).filter(function(e){return o[e].points[0]===t.points[0]&&o[e].points[1]===t.points[1]})[0];if(r){var a=e.getBoundingClientRect(),i={top:"50%",left:"50%"};r.indexOf("top")>=0||r.indexOf("Bottom")>=0?i.top=a.height-t.offset[1]+"px":(r.indexOf("Top")>=0||r.indexOf("bottom")>=0)&&(i.top=-t.offset[1]+"px"),r.indexOf("left")>=0||r.indexOf("Right")>=0?i.left=a.width-t.offset[0]+"px":(r.indexOf("right")>=0||r.indexOf("Left")>=0)&&(i.left=-t.offset[0]+"px"),e.style.transformOrigin=i.left+" "+i.top}},n.state={visible:!!e.visible||!!e.defaultVisible},n}return(0,f.default)(t,e),(0,d.default)(t,[{key:"componentWillReceiveProps",value:function(e){"visible"in e&&this.setState({visible:e.visible})}},{key:"getPopupDomNode",value:function(){return this.refs.tooltip.getPopupDomNode()}},{key:"getPlacements",value:function(){var e=this.props,t=e.builtinPlacements,n=e.arrowPointAtCenter,o=e.autoAdjustOverflow;return t||(0,w.default)({arrowPointAtCenter:n,verticalArrowShift:8,autoAdjustOverflow:o})}},{key:"isHoverTrigger",value:function(){var e=this.props.trigger;return!e||"hover"===e||!!Array.isArray(e)&&e.indexOf("hover")>=0}},{key:"getDisabledCompatibleChildren",value:function(e){if((e.type.__ANT_BUTTON||"button"===e.type)&&e.props.disabled&&this.isHoverTrigger()){var t=k(e.props.style,["position","left","right","top","bottom","float","display","zIndex"]),n=t.picked,o=t.omited,r=(0,m.default)({display:"inline-block"},n,{cursor:"not-allowed"}),a=(0,m.default)({},o,{pointerEvents:"none"}),i=(0,g.cloneElement)(e,{style:a,className:null});return b.default.createElement("span",{style:r,className:e.props.className},i)}return e}},{key:"isNoTitle",value:function(){var e=this.props,t=e.title,n=e.overlay;return!t&&!n}},{key:"render",value:function(){var e=this.props,t=this.state,n=e.prefixCls,o=e.title,r=e.overlay,i=e.openClassName,s=e.getPopupContainer,l=e.getTooltipContainer,d=e.children,u=t.visible;"visible"in e||!this.isNoTitle()||(u=!1);var c=this.getDisabledCompatibleChildren(b.default.isValidElement(d)?d:b.default.createElement("span",null,d)),p=c.props,f=(0,x.default)(p.className,(0,a.default)({},i||n+"-open",!0));return b.default.createElement(v.default,(0,m.default)({},this.props,{getTooltipContainer:s||l,ref:"tooltip",builtinPlacements:this.getPlacements(),overlay:r||o||"",visible:u,onVisibleChange:this.onVisibleChange,onPopupAlign:this.onPopupAlign}),u?(0,g.cloneElement)(c,{className:f}):c)}}]),t}(b.default.Component);t.default=M,M.defaultProps={prefixCls:"ant-tooltip",placement:"top",transitionName:"zoom-big-fast",mouseEnterDelay:.1,mouseLeaveDelay:.1,arrowPointAtCenter:!1,autoAdjustOverflow:!0},e.exports=t.default},"./node_modules/antd/lib/tooltip/placements.js":function(e,t,n){"use strict";function o(e){return"boolean"==typeof e?e?l:d:(0,i.default)({},d,e)}function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.arrowWidth,n=void 0===t?5:t,r=e.horizontalArrowShift,a=void 0===r?16:r,l=e.verticalArrowShift,d=void 0===l?12:l,c=e.autoAdjustOverflow,p=void 0===c||c,f={left:{points:["cr","cl"],offset:[-4,0]},right:{points:["cl","cr"],offset:[4,0]},top:{points:["bc","tc"],offset:[0,-4]},bottom:{points:["tc","bc"],offset:[0,4]},topLeft:{points:["bl","tc"],offset:[-(a+n),-4]},leftTop:{points:["tr","cl"],offset:[-4,-(d+n)]},topRight:{points:["br","tc"],offset:[a+n,-4]},rightTop:{points:["tl","cr"],offset:[4,-(d+n)]},bottomRight:{points:["tr","bc"],offset:[a+n,4]},rightBottom:{points:["bl","cr"],offset:[4,d+n]},bottomLeft:{points:["tl","bc"],offset:[-(a+n),4]},leftBottom:{points:["br","cl"],offset:[-4,d+n]}};return Object.keys(f).forEach(function(t){f[t]=e.arrowPointAtCenter?(0,i.default)({},f[t],{overflow:o(p),targetOffset:u}):(0,i.default)({},s.placements[t],{overflow:o(p)})}),f}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/extends.js"),i=function(e){return e&&e.__esModule?e:{default:e}}(a);t.getOverflowOptions=o,t.default=r;var s=n("./node_modules/rc-tooltip/lib/placements.js"),l={adjustX:1,adjustY:1},d={adjustX:0,adjustY:0},u=[0,0]},"./node_modules/async-validator/lib/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e){this.rules=null,this._messages=p.messages,this.define(e)}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/extends.js"),i=o(a),s=n("./node_modules/babel-runtime/helpers/typeof.js"),l=o(s),d=n("./node_modules/async-validator/lib/util.js"),u=n("./node_modules/async-validator/lib/validator/index.js"),c=o(u),p=n("./node_modules/async-validator/lib/messages.js");r.prototype={messages:function(e){return e&&(this._messages=(0,d.deepMerge)((0,p.newMessages)(),e)),this._messages},define:function(e){if(!e)throw new Error("Cannot configure a schema with no rules");if("object"!==(void 0===e?"undefined":(0,l.default)(e))||Array.isArray(e))throw new Error("Rules must be an object");this.rules={};var t=void 0,n=void 0;for(t in e)e.hasOwnProperty(t)&&(n=e[t],this.rules[t]=Array.isArray(n)?n:[n])},validate:function(e){function t(e){var t=void 0,n=void 0,o=[],r={};for(t=0;t1&&void 0!==arguments[1]?arguments[1]:{},a=arguments[2],s=e,u=o,c=a;if("function"==typeof u&&(c=u,u={}),!this.rules||0===Object.keys(this.rules).length)return void(c&&c());if(u.messages){var f=this.messages();f===p.messages&&(f=(0,p.newMessages)()),(0,d.deepMerge)(f,u.messages),u.messages=f}else u.messages=this.messages();var h=void 0,m=void 0,g={};(u.keys||Object.keys(this.rules)).forEach(function(t){h=n.rules[t],m=s[t],h.forEach(function(o){var r=o;"function"==typeof r.transform&&(s===e&&(s=(0,i.default)({},s)),m=s[t]=r.transform(m)),r="function"==typeof r?{validator:r}:(0,i.default)({},r),r.validator=n.getValidationMethod(r),r.field=t,r.fullField=r.fullField||t,r.type=n.getType(r),r.validator&&(g[t]=g[t]||[],g[t].push({rule:r,value:m,source:s,field:t}))})});var b={};(0,d.asyncMap)(g,u,function(e,t){function n(e,t){return(0,i.default)({},t,{fullField:a.fullField+"."+e})}function o(){var o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],l=o;if(Array.isArray(l)||(l=[l]),l.length&&(0,d.warning)("async-validator:",l),l.length&&a.message&&(l=[].concat(a.message)),l=l.map((0,d.complementError)(a)),u.first&&l.length)return b[a.field]=1,t(l);if(s){if(a.required&&!e.value)return l=a.message?[].concat(a.message).map((0,d.complementError)(a)):u.error?[u.error(a,(0,d.format)(u.messages.required,a.field))]:[],t(l);var c={};if(a.defaultField)for(var p in e.value)e.value.hasOwnProperty(p)&&(c[p]=a.defaultField);c=(0,i.default)({},c,e.rule.fields);for(var f in c)if(c.hasOwnProperty(f)){var h=Array.isArray(c[f])?c[f]:[c[f]];c[f]=h.map(n.bind(null,f))}var m=new r(c);m.messages(u.messages),e.rule.options&&(e.rule.options.messages=u.messages,e.rule.options.error=u.error),m.validate(e.value,e.rule.options||u,function(e){t(e&&e.length?l.concat(e):e)})}else t(l)}var a=e.rule,s=!("object"!==a.type&&"array"!==a.type||"object"!==(0,l.default)(a.fields)&&"object"!==(0,l.default)(a.defaultField));s=s&&(a.required||!a.required&&e.value),a.field=e.field;var c=a.validator(a,e.value,o,e.source,u);c&&c.then&&c.then(function(){return o()},function(e){return o(e)})},function(e){t(e)})},getType:function(e){if(void 0===e.type&&e.pattern instanceof RegExp&&(e.type="pattern"),"function"!=typeof e.validator&&e.type&&!c.default.hasOwnProperty(e.type))throw new Error((0,d.format)("Unknown rule type %s",e.type));return e.type||"string"},getValidationMethod:function(e){if("function"==typeof e.validator)return e.validator;var t=Object.keys(e),n=t.indexOf("message");return-1!==n&&t.splice(n,1),1===t.length&&"required"===t[0]?c.default.required:c.default[this.getType(e)]||!1}},r.register=function(e,t){if("function"!=typeof t)throw new Error("Cannot register a validator by type, validator is not a function");c.default[e]=t},r.messages=p.messages,t.default=r,e.exports=t.default},"./node_modules/async-validator/lib/messages.js":function(e,t,n){"use strict";function o(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}Object.defineProperty(t,"__esModule",{value:!0}),t.newMessages=o;t.messages=o()},"./node_modules/async-validator/lib/rule/enum.js":function(e,t,n){"use strict";function o(e,t,n,o,r){e[i]=Array.isArray(e[i])?e[i]:[],-1===e[i].indexOf(t)&&o.push(a.format(r.messages[i],e.fullField,e[i].join(", ")))}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/async-validator/lib/util.js"),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(r),i="enum";t.default=o,e.exports=t.default},"./node_modules/async-validator/lib/rule/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/async-validator/lib/rule/required.js"),a=o(r),i=n("./node_modules/async-validator/lib/rule/whitespace.js"),s=o(i),l=n("./node_modules/async-validator/lib/rule/type.js"),d=o(l),u=n("./node_modules/async-validator/lib/rule/range.js"),c=o(u),p=n("./node_modules/async-validator/lib/rule/enum.js"),f=o(p),h=n("./node_modules/async-validator/lib/rule/pattern.js"),m=o(h);t.default={required:a.default,whitespace:s.default,type:d.default,range:c.default,enum:f.default,pattern:m.default},e.exports=t.default},"./node_modules/async-validator/lib/rule/pattern.js":function(e,t,n){"use strict";function o(e,t,n,o,r){if(e.pattern)if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||o.push(a.format(r.messages.pattern.mismatch,e.fullField,t,e.pattern));else if("string"==typeof e.pattern){var i=new RegExp(e.pattern);i.test(t)||o.push(a.format(r.messages.pattern.mismatch,e.fullField,t,e.pattern))}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/async-validator/lib/util.js"),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(r);t.default=o,e.exports=t.default},"./node_modules/async-validator/lib/rule/range.js":function(e,t,n){"use strict";function o(e,t,n,o,r){var i="number"==typeof e.len,s="number"==typeof e.min,l="number"==typeof e.max,d=t,u=null,c="number"==typeof t,p="string"==typeof t,f=Array.isArray(t);if(c?u="number":p?u="string":f&&(u="array"),!u)return!1;(p||f)&&(d=t.length),i?d!==e.len&&o.push(a.format(r.messages[u].len,e.fullField,e.len)):s&&!l&&de.max?o.push(a.format(r.messages[u].max,e.fullField,e.max)):s&&l&&(de.max)&&o.push(a.format(r.messages[u].range,e.fullField,e.min,e.max))}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/async-validator/lib/util.js"),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(r);t.default=o,e.exports=t.default},"./node_modules/async-validator/lib/rule/required.js":function(e,t,n){"use strict";function o(e,t,n,o,r,i){!e.required||n.hasOwnProperty(e.field)&&!a.isEmptyValue(t,i||e.type)||o.push(a.format(r.messages.required,e.fullField))}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/async-validator/lib/util.js"),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(r);t.default=o,e.exports=t.default},"./node_modules/async-validator/lib/rule/type.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t,n,o,r){if(e.required&&void 0===t)return void(0,u.default)(e,t,n,o,r);var a=["integer","float","array","regexp","object","method","email","number","date","url","hex"],s=e.type;a.indexOf(s)>-1?p[s](t)||o.push(l.format(r.messages.types[s],e.fullField,e.type)):s&&(void 0===t?"undefined":(0,i.default)(t))!==e.type&&o.push(l.format(r.messages.types[s],e.fullField,e.type))}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/typeof.js"),i=o(a),s=n("./node_modules/async-validator/lib/util.js"),l=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(s),d=n("./node_modules/async-validator/lib/rule/required.js"),u=o(d),c={email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,url:new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$","i"),hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},p={integer:function(e){return p.number(e)&&parseInt(e,10)===e},float:function(e){return p.number(e)&&!p.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch(e){return!1}},date:function(e){return"function"==typeof e.getTime&&"function"==typeof e.getMonth&&"function"==typeof e.getYear},number:function(e){return!isNaN(e)&&"number"==typeof e},object:function(e){return"object"===(void 0===e?"undefined":(0,i.default)(e))&&!p.array(e)},method:function(e){return"function"==typeof e},email:function(e){return"string"==typeof e&&!!e.match(c.email)&&e.length<255},url:function(e){return"string"==typeof e&&!!e.match(c.url)},hex:function(e){return"string"==typeof e&&!!e.match(c.hex)}};t.default=r,e.exports=t.default},"./node_modules/async-validator/lib/rule/whitespace.js":function(e,t,n){"use strict";function o(e,t,n,o,r){(/^\s+$/.test(t)||""===t)&&o.push(a.format(r.messages.whitespace,e.fullField))}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/async-validator/lib/util.js"),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(r);t.default=o,e.exports=t.default},"./node_modules/async-validator/lib/util.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(){for(var e=arguments.length,t=Array(e),n=0;n=a)return e;switch(e){case"%s":return String(t[o++]);case"%d":return Number(t[o++]);case"%j":try{return JSON.stringify(t[o++])}catch(e){return"[Circular]"}break;default:return e}}),s=t[o];o=200&&e<300}};s.headers={common:{Accept:"application/json, text/plain, */*"}},r.forEach(["delete","get","head"],function(e){s.headers[e]={}}),r.forEach(["post","put","patch"],function(e){s.headers[e]=r.merge(i)}),e.exports=s}).call(t,n("./node_modules/process/browser.js"))},"./node_modules/axios/lib/helpers/bind.js":function(e,t,n){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),o=0;o>8-s%1*8)){if((n=r.charCodeAt(s+=.75))>255)throw new o;t=t<<8|n}return i}var a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";o.prototype=new Error,o.prototype.code=5,o.prototype.name="InvalidCharacterError",e.exports=r},"./node_modules/axios/lib/helpers/buildURL.js":function(e,t,n){"use strict";function o(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var r=n("./node_modules/axios/lib/utils.js");e.exports=function(e,t,n){if(!t)return e;var a;if(n)a=n(t);else if(r.isURLSearchParams(t))a=t.toString();else{var i=[];r.forEach(t,function(e,t){null!==e&&void 0!==e&&(r.isArray(e)&&(t+="[]"),r.isArray(e)||(e=[e]),r.forEach(e,function(e){r.isDate(e)?e=e.toISOString():r.isObject(e)&&(e=JSON.stringify(e)),i.push(o(t)+"="+o(e))}))}),a=i.join("&")}return a&&(e+=(-1===e.indexOf("?")?"?":"&")+a),e}},"./node_modules/axios/lib/helpers/combineURLs.js":function(e,t,n){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},"./node_modules/axios/lib/helpers/cookies.js":function(e,t,n){"use strict";var o=n("./node_modules/axios/lib/utils.js");e.exports=o.isStandardBrowserEnv()?function(){return{write:function(e,t,n,r,a,i){var s=[];s.push(e+"="+encodeURIComponent(t)),o.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),o.isString(r)&&s.push("path="+r),o.isString(a)&&s.push("domain="+a),!0===i&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},"./node_modules/axios/lib/helpers/isAbsoluteURL.js":function(e,t,n){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},"./node_modules/axios/lib/helpers/isURLSameOrigin.js":function(e,t,n){"use strict";var o=n("./node_modules/axios/lib/utils.js");e.exports=o.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(r.setAttribute("href",t),t=r.href),r.setAttribute("href",t),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:"/"===r.pathname.charAt(0)?r.pathname:"/"+r.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement("a");return t=e(window.location.href),function(n){var r=o.isString(n)?e(n):n;return r.protocol===t.protocol&&r.host===t.host}}():function(){return function(){return!0}}()},"./node_modules/axios/lib/helpers/normalizeHeaderName.js":function(e,t,n){"use strict";var o=n("./node_modules/axios/lib/utils.js");e.exports=function(e,t){o.forEach(e,function(n,o){o!==t&&o.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[o])})}},"./node_modules/axios/lib/helpers/parseHeaders.js":function(e,t,n){"use strict";var o=n("./node_modules/axios/lib/utils.js"),r=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,a,i={};return e?(o.forEach(e.split("\n"),function(e){if(a=e.indexOf(":"),t=o.trim(e.substr(0,a)).toLowerCase(),n=o.trim(e.substr(a+1)),t){if(i[t]&&r.indexOf(t)>=0)return;i[t]="set-cookie"===t?(i[t]?i[t]:[]).concat([n]):i[t]?i[t]+", "+n:n}}),i):i}},"./node_modules/axios/lib/helpers/spread.js":function(e,t,n){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},"./node_modules/axios/lib/utils.js":function(e,t,n){"use strict";function o(e){return"[object Array]"===k.call(e)}function r(e){return"[object ArrayBuffer]"===k.call(e)}function a(e){return"undefined"!=typeof FormData&&e instanceof FormData}function i(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function s(e){return"string"==typeof e}function l(e){return"number"==typeof e}function d(e){return void 0===e}function u(e){return null!==e&&"object"==typeof e}function c(e){return"[object Date]"===k.call(e)}function p(e){return"[object File]"===k.call(e)}function f(e){return"[object Blob]"===k.call(e)}function h(e){return"[object Function]"===k.call(e)}function m(e){return u(e)&&h(e.pipe)}function g(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams}function b(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function _(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)}function v(e,t){if(null!==e&&void 0!==e)if("object"!=typeof e&&(e=[e]),o(e))for(var n=0,r=e.length;n=0;--o){var r=this.tryEntries[o],a=r.completion;if("root"===r.tryLoc)return t("end");if(r.tryLoc<=this.prev){var i=_.call(r,"catchLoc"),s=_.call(r,"finallyLoc");if(i&&s){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&_.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),p(n),D}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;p(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:h(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=g),D}}}("object"==typeof t?t:"object"==typeof window?window:"object"==typeof self?self:this)}).call(t,n("./node_modules/webpack/buildin/global.js"))},"./node_modules/babel-runtime/core-js/array/from.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/array/from.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/get-iterator.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/get-iterator.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/is-iterable.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/is-iterable.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/assign.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/object/assign.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/create.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/object/create.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/define-property.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/object/define-property.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/set-prototype-of.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/object/set-prototype-of.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/symbol.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/symbol/index.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/symbol/iterator.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/symbol/iterator.js"),__esModule:!0}},"./node_modules/babel-runtime/helpers/classCallCheck.js":function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},"./node_modules/babel-runtime/helpers/createClass.js":function(e,t,n){"use strict";t.__esModule=!0;var o=n("./node_modules/babel-runtime/core-js/object/define-property.js"),r=function(e){return e&&e.__esModule?e:{default:e}}(o);t.default=function(){function e(e,t){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}},"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js":function(e,t,n){"use strict";t.__esModule=!0;var o=n("./node_modules/babel-runtime/helpers/typeof.js"),r=function(e){return e&&e.__esModule?e:{default:e}}(o);t.default=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":(0,r.default)(t))&&"function"!=typeof t?e:t}},"./node_modules/babel-runtime/helpers/slicedToArray.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n("./node_modules/babel-runtime/core-js/is-iterable.js"),a=o(r),i=n("./node_modules/babel-runtime/core-js/get-iterator.js"),s=o(i);t.default=function(){function e(e,t){var n=[],o=!0,r=!1,a=void 0;try{for(var i,l=(0,s.default)(e);!(o=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);o=!0);}catch(e){r=!0,a=e}finally{try{!o&&l.return&&l.return()}finally{if(r)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if((0,a.default)(Object(t)))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},"./node_modules/babel-runtime/helpers/toConsumableArray.js":function(e,t,n){"use strict";t.__esModule=!0;var o=n("./node_modules/babel-runtime/core-js/array/from.js"),r=function(e){return e&&e.__esModule?e:{default:e}}(o);t.default=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&s.push({name:a,value:r.map(function(t){return e.getValidValue(t,i)}).join(",")});break;case c.FilterTypes.CascadeSelect:break;case c.FilterTypes.InputDate:r&&s.push({name:a,value:"'"+u.default(r).format("YYYY-MM-DD")+"'"});break;case c.FilterTypes.MultiDate:r&&s.push({name:a,value:r.split(",").map(function(e){return"'"+e+"'"}).join(",")});break;case c.FilterTypes.DateRange:if(r.length){var l;(l=s).push.apply(l,o(r.map(function(e){return{name:a,value:"'"+u.default(e).format("YYYY-MM-DD")+"'"}})))}break;case c.FilterTypes.Datetime:r&&s.push({name:a,value:"'"+u.default(r).format("YYYY-MM-DD HH:mm:ss")+"'"});break;case c.FilterTypes.DatetimeRange:if(r.length){var d;(d=s).push.apply(d,o(r.map(function(e){return{name:a,value:"'"+u.default(e).format("YYYY-MM-DD HH:mm:ss")+"'"}})))}break;default:var p=r.target.value.trim();p&&s.push({name:a,value:e.getValidValue(p,i)})}return s},e.getModelValue=function(t,n,o,r){var a=n.key,i=n.sqlType,s=[];switch(t){case c.FilterTypes.InputText:case c.FilterTypes.InputNumber:case c.FilterTypes.Select:void 0!==r&&s.push(a+" "+o+" "+e.getValidValue(r,i));break;case c.FilterTypes.NumberRange:""===r[0]||isNaN(r[0])||s.push(a+" >= "+e.getValidValue(r[0],i)),""===r[1]||isNaN(r[1])||s.push(a+" <= "+e.getValidValue(r[1],i));break;case c.FilterTypes.MultiSelect:r.length&&r.length>0&&s.push(a+" "+o+" ("+r.map(function(t){return e.getValidValue(t,i)}).join(",")+")");break;case c.FilterTypes.CascadeSelect:break;case c.FilterTypes.InputDate:r&&s.push(a+" "+o+" "+e.getValidValue(u.default(r).format("YYYY-MM-DD"),i));break;case c.FilterTypes.MultiDate:r&&s.push(a+" "+o+" ("+r.split(",").map(function(t){return e.getValidValue(t,i)}).join(",")+")");break;case c.FilterTypes.DateRange:r.length&&(s.push(a+" >= "+e.getValidValue(u.default(r[0]).format("YYYY-MM-DD"),i)),s.push(a+" <= "+e.getValidValue(u.default(r[1]).format("YYYY-MM-DD"),i)));break;case c.FilterTypes.Datetime:r&&s.push(a+" "+o+" "+e.getValidValue(u.default(r).format("YYYY-MM-DD HH:mm:ss"),i));break;case c.FilterTypes.DatetimeRange:r.length&&(s.push(a+" >= "+e.getValidValue(u.default(r[0]).format("YYYY-MM-DD HH:mm:ss"),i)),s.push(a+" <= "+e.getValidValue(u.default(r[1]).format("YYYY-MM-DD HH:mm:ss"),i)));break;default:var l=r.target.value.trim();l&&s.push(a+" "+o+" "+e.getValidValue(l,i))}return s},e.getValidValue=function(e,t){return p.SQL_NUMBER_TYPES.indexOf(t)>=0?e:"'"+e+"'"},e}return i(t,e),l(t,[{key:"render",value:function(){var e=this,t=this.props,n=t.filters,o=t.onGetOptions,r=t.filterOptions,a=t.form;return d.createElement(g,{className:b.filterPanel},d.createElement(h,{gutter:8},n.map(function(t){return d.createElement(m,{xl:3,lg:4,md:6,sm:12,key:t.key},d.createElement(f.default,{filter:t,onGetOptions:o,currentOptions:r[t.key]||{},formToAppend:a,onChange:e.change}))})))}}]),t}(d.Component);t.FilterPanel=_,t.default=g.create()(_)},"./app/components/Filters/filter.less":function(e,t,n){var o=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/components/Filters/filter.less");"string"==typeof o&&(o=[[e.i,o,""]]);var r={};r.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(o,r);o.locals&&(e.exports=o.locals)},"./app/components/Filters/filterTypes.ts":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var r,a,i;Object.defineProperty(t,"__esModule",{value:!0});var s,l=n("./app/components/Filters/operatorTypes.ts");!function(e){e.InputText="inputText",e.InputNumber="inputNumber",e.NumberRange="NumberRange",e.Select="select",e.MultiSelect="multiSelect",e.CascadeSelect="cascadeSelect",e.InputDate="inputDate",e.MultiDate="multiDate",e.DateRange="dateRange",e.Datetime="datetime",e.DatetimeRange="datetimeRange"}(s=t.FilterTypes||(t.FilterTypes={})),t.FilterTypeList=[s.InputText,s.InputNumber,s.NumberRange,s.Select,s.MultiSelect,s.InputDate,s.MultiDate,s.DateRange,s.Datetime,s.DatetimeRange],t.FilterTypesLocale=(r={},o(r,s.InputText,"文本输入框"),o(r,s.InputNumber,"数字输入框"),o(r,s.NumberRange,"数字范围输入框"),o(r,s.Select,"单选下拉菜单"),o(r,s.MultiSelect,"多选下拉菜单"),o(r,s.CascadeSelect,"级联下拉菜单"),o(r,s.InputDate,"日期选择"),o(r,s.MultiDate,"日期多选"),o(r,s.DateRange,"日期范围选择"),o(r,s.Datetime,"日期时间选择"),o(r,s.DatetimeRange,"日期时间范围选择"),r),t.FilterTypesViewSetting=(a={},o(a,s.InputText,!1),o(a,s.InputNumber,!1),o(a,s.NumberRange,!1),o(a,s.Select,!0),o(a,s.MultiSelect,!0),o(a,s.CascadeSelect,!0),o(a,s.InputDate,!1),o(a,s.MultiDate,!1),o(a,s.DateRange,!1),o(a,s.Datetime,!1),o(a,s.DatetimeRange,!1),a),t.FilterTypesOperatorSetting=(i={},o(i,s.InputText,[l.default.Equal,l.default.NotEqual]),o(i,s.InputNumber,[l.default.LessThan,l.default.LessThanOrEqual,l.default.GreaterThan,l.default.GreaterThanOrEqual]),o(i,s.NumberRange,[]),o(i,s.Select,[l.default.Equal,l.default.NotEqual]),o(i,s.MultiSelect,[l.default.In,l.default.NotIn]),o(i,s.InputDate,[l.default.LessThan,l.default.LessThanOrEqual,l.default.GreaterThan,l.default.GreaterThanOrEqual]),o(i,s.MultiDate,[l.default.In,l.default.NotIn]),o(i,s.DateRange,[]),o(i,s.Datetime,[l.default.LessThan,l.default.LessThanOrEqual,l.default.GreaterThan,l.default.GreaterThanOrEqual]),o(i,s.DatetimeRange,[]),i),t.default=s},"./app/components/Filters/operatorTypes.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o;!function(e){e.Equal="=",e.NotEqual="!=",e.Contain="like",e.NotContain="not like",e.In="in",e.NotIn="not in",e.LessThan="<",e.GreaterThan=">",e.LessThanOrEqual="<=",e.GreaterThanOrEqual=">="}(o=t.OperatorTypes||(t.OperatorTypes={})),t.default=o},"./app/components/Linkages/index.ts":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n={};return t.length<=0?n:(t.forEach(function(t){var o=t.trigger,r=t.linkager,a=t.relation,i=+o[0],d=r[0];if(e===i){var u=o[1].split(l.DEFAULT_SPLITER),c=s(u,3),p=c[0],f=c[1],h=c[2],m=r[1].split(l.DEFAULT_SPLITER),g=s(m,3),b=g[0],_=g[1],v=g[2];n[d]||(n[d]=[]),n[d].push({triggerKey:p,triggerSqlType:f,triggerType:h,linkagerKey:b,linkagerSqlType:_,linkagerType:v,relation:a})}}),n)}function a(e,t,n,r){return Object.keys(n).forEach(function(a){var i=n[+a],s=[],d=[];i.forEach(function(e){var n=e.triggerKey,o=e.triggerSqlType,r=(e.triggerType,e.linkagerKey),a=(e.linkagerSqlType,e.linkagerType),i=e.relation,u=l.SQL_NUMBER_TYPES.indexOf(o)>=0?t[0][n]:"'"+t[0][n]+"'";"parameter"===a?s.push(r+" "+i+" "+u):"variable"===a&&d.push({name:r,value:u})});var u=r[a];if(u){var c=u.filters,p=u.params;u.filters=s.length>0?Object.assign({},c,o({},e,s)):c,u.params=d.length>0?Object.assign({},p,o({},e,d)):p}else r[a]={filters:s.length>0?o({},e,s):{},params:d.length>0?o({},e,s):{}}}),r}function i(e,t,n){var o=[];return t.length<=0?o:(t.forEach(function(t){var r=t.trigger,a=t.linkager,i=+r[0],s=+a[0];e===i&&n[s]&&["filters","params"].forEach(function(t){n[s][t][e]&&(delete n[s][t][e],o.indexOf(s)<0&&o.push(s))})}),o)}var s=function(){function e(e,t){var n=[],o=!0,r=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(o=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);o=!0);}catch(e){r=!0,a=e}finally{try{!o&&s.return&&s.return()}finally{if(r)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();Object.defineProperty(t,"__esModule",{value:!0});var l=n("./app/globalConstants.ts");t.getMappingLinkage=r,t.processLinkage=a,t.removeLinkage=i},"./app/components/MultiDatePicker/MultiDatePicker.less":function(e,t,n){var o=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/components/MultiDatePicker/MultiDatePicker.less");"string"==typeof o&&(o=[[e.i,o,""]]);var r={};r.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(o,r);o.locals&&(e.exports=o.locals)},"./app/components/MultiDatePicker/index.js":function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"MultiDatePicker",function(){return v});var i=n("./node_modules/react/react.js"),s=n.n(i),l=n("./node_modules/prop-types/index.js"),d=(n.n(l),n("./node_modules/jquery/dist/jquery.js")),u=n.n(d),c=n("./node_modules/moment/src/moment.js"),p=n("./node_modules/bootstrap-datepicker/dist/js/bootstrap-datepicker.js"),f=(n.n(p),n("./node_modules/antd/lib/icon/index.js")),h=n.n(f),m=n("./app/components/MultiDatePicker/MultiDatePicker.less"),g=n.n(m),b=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:i,t=arguments[1],n=t.type,o=t.payload,a=e.get("bizlogics");switch(n){case r.LOAD_BIZLOGICS:return e.set("tableLoading",!0);case r.LOAD_BIZLOGICS_SUCCESS:return e.set("bizlogics",o.bizlogics).set("tableLoading",!1);case r.ADD_BIZLOGIC:return e.set("modalLoading",!0);case r.ADD_BIZLOGIC_SUCCESS:return e.set("bizlogics",[o.result]).set("modalLoading",!1);case r.ADD_BIZLOGIC_FAILURE:return e.set("modalLoading",!1);case r.DELETE_BIZLOGIC:return e;case r.DELETE_BIZLOGIC_SUCCESS:return e.set("bizlogics",a.filter(function(e){return e.id!==o.id}));case r.DELETE_BIZLOGIC_FAILURE:return e;case r.EDIT_BIZLOGIC:return e.set("modalLoading",!0);case r.EDIT_BIZLOGIC_SUCCESS:return a.splice(a.findIndex(function(e){return e.id===o.result.id}),1,o.result),e.set("bizlogics",a.slice()).set("modalLoading",!1);case r.EDIT_BIZLOGIC_FAILURE:return e.set("modalLoading",!1);case r.LOAD_SCHEMA:case r.LOAD_SCHEMA_SUCCESS:case r.LOAD_SCHEMA_FAILURE:return e;case r.EXECUTE_SQL:return e.set("executeLoading",!0);case r.EXECUTE_SQL_SUCCESS:var s=o.result;s.code,s.msg;return e.set("executeLoading",!1).set("sqlValidateMessage",void 0).set("sqlValidateCode",200);case r.EXECUTE_SQL_FAILURE:return e.set("executeLoading",!1).set("sqlValidateMessage",o.error.response.data.header.msg).set("sqlValidateCode",1);case r.LOAD_VIEW_TEAM:return e;case r.LOAD_VIEW_TEAM_SUCCESS:return e.set("viewTeam",o.result);case r.LOAD_VIEW_TEAM_FAILURE:default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/containers/Bizlogic/constants.ts"),a=n("./node_modules/immutable/dist/immutable.js"),i=a.fromJS({bizlogics:null,sqlValidateCode:!1,sqlValidateMessage:!1,tableLoading:!1,modalLoading:!1,schemaData:[],viewTeam:[]});t.default=o},"./app/containers/Dashboard/Dashboard.less":function(e,t,n){var o=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Dashboard/Dashboard.less");"string"==typeof o&&(o=[[e.i,o,""]]);var r={};r.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(o,r);o.locals&&(e.exports=o.locals)},"./app/containers/Dashboard/components/DashboardFilterPanel.tsx":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=function(){function e(e,t){for(var n=0;n=0})),e});n.setState({filters:a})},n.state={filters:[]},n}return i(t,e),s(t,[{key:"componentWillReceiveProps",value:function(e){var t=e.currentDashboard,n=e.currentItems;t===this.props.currentDashboard&&n===this.props.currentItems||this.adjustGlobalFilterTableSource(t,n)}},{key:"render",value:function(){var e=this.props,t=e.onGetOptions,n=e.filterOptions,r=e.onChange,a=this.state.filters,i=d(o({},p.hide,!a.length));return l.createElement(u,{className:i},l.createElement(c,{span:24},l.createElement(f.default,{filters:a,onGetOptions:t,filterOptions:n,onChange:r})))}}]),t}(l.Component);t.DashboardFilterPanel=h,t.default=h},"./app/containers/Dashboard/components/DashboardItem.tsx":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e){return u.createElement("span",e,e.children)}var l=Object.assign||function(e){for(var t=1;t=0){var i=n.split("_");r=t.find(function(e){return e.id===i[1]}).sub.find(function(e){return e.id===i[2]})}else r=t.find(function(e){return e.id===n});if(r.type=r.variableType||r.type,"[object Array]"===Object.prototype.toString.call(o))switch(r.type){case"dateRange":o=o.map(function(e){return e.format("YYYY-MM-DD")}),e=e.concat({name:r.variables[0],value:"'"+o[0]+"'"}).concat({name:r.variables[1],value:"'"+o[1]+"'"});break;case"datetimeRange":o=o.map(function(e){return e.format("YYYY-MM-DD HH:mm:ss")}),e=e.concat({name:r.variables[0],value:"'"+o[0]+"'"}).concat({name:r.variables[1],value:"'"+o[1]+"'"});break;case"multiSelect":o.length&&(e=e.concat({name:r.variables[0],value:o.map(function(e){return""+e}).join(",")}))}else if(o)if(r.variables[0])switch(r.type){case"date":o=o.format("YYYY-MM-DD"),e=e.concat({name:r.variables[0],value:"'"+o+"'"});break;case"datetime":o=o.format("YYYY-MM-DD HH:mm:ss"),e=e.concat({name:r.variables[0],value:"'"+o+"'"});break;case"multiDate":e=e.concat({name:r.variables[0],value:o.split(",").map(function(e){return"'"+e+"'"}).join(",")});break;case"select":e=e.concat({name:r.variables[0],value:""+o});break;default:e=e.concat({name:r.variables[0],value:"'"+o+"'"})}else if("select"===r.type&&"no"===r.hasRelatedComponent){var s=r.sub.find(function(e){return e.value===o});s.variables[0]&&(e=e.concat({name:s.variables[0],value:"'"+o+"'"}))}return e},[])}),r()},n.state={parentSelValues:null},n}return i(t,e),s(t,[{key:"componentWillMount",value:function(){this.getStateValues(this.props.controls)}},{key:"componentWillReceiveProps",value:function(e){e.controls.map(function(e){return e.id}).join(",")!==this.props.controls.map(function(e){return e.id}).join(",")&&this.getStateValues(e.controls)}},{key:"render",value:function(){var e=this,t=this.props.controls,n=t.map(function(t){return e.generateFormComponent(t)});return l.createElement(u,{className:x.controlForm},l.createElement(g,{gutter:10},n),l.createElement(g,{className:x.buttonRow},l.createElement(b,{span:24},l.createElement(m,{type:"primary",onClick:this.onControlSearch},"查询"))))}}]),t}(l.PureComponent);t.DashboardItemControlForm=w,t.default=u.create()(w)},"./app/containers/Dashboard/components/DashboardItemControlPanel.tsx":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e){var t,n,r=s((t={},o(t,l.controlPanel,!0),o(t,l.show,e.show),t)),d=s((n={},o(n,l.form,!0),o(n,l.show,e.show),n));return i.createElement("div",{className:r,onClick:e.onClose},i.createElement("div",{className:d,onClick:a},e.children))}function a(e){e.stopPropagation()}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/react/react.js"),s=n("./node_modules/classnames/index.js"),l=n("./app/containers/Dashboard/Dashboard.less");t.DashboardItemControlPanel=r,t.default=r},"./app/containers/Dashboard/components/fullScreenPanel/FullScreenPanel.tsx":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=Object.assign||function(e){for(var t=1;t0){var R=w;O=R.widget.name,D=R.renderType,L=k[R.itemId];var N=JSON.parse(w.widget.config);E="echarts"!==D?d.createElement(h.default,s({},N,{renderType:"rerender",data:L&&L.datasource?L.datasource:[]})):d.createElement("div",{style:{width:"100%",height:"100%"},id:"fsChartsWrapper"})}var z=void 0;if(w&&w.widget&&w.widget.query_params){var Y=w.widget.query_params;z=!!JSON.parse(Y).length}var F=w&&w.widget&&w.widget.query_params?JSON.parse(w.widget.query_params).filter(function(e){return e.type}):[],H=p((r={},o(r,m.modalPanel,!0),o(r,m.displayNone,!y),r)),V=p((a={},o(a,m.controlPanel,!0),o(a,m.displayNone,!y),o(a,m.showModalPanel,y),o(a,m.hideModalPanel,!y),a));return d.createElement("div",{className:T},d.createElement("div",{className:m.container},d.createElement("nav",{className:m.header},d.createElement("div",{className:m.logo},d.createElement(u,{type:this.state.isShowMenu?"menu-fold":"menu-unfold",onClick:this.isShowSideMenu,style:{marginRight:"32px"}}),d.createElement("span",null,O)),d.createElement("ul",{className:m.tools},z?d.createElement("li",{onClick:this.toggleControlPanel},d.createElement(u,{type:y?"up-square-o":"down-square-o"}),g):"",b,d.createElement("li",{onClick:this.hide},_,v))),d.createElement("div",{className:m.body},d.createElement("div",{className:A},C),d.createElement("div",{className:H}),d.createElement("div",{className:V},d.createElement("div",{className:m.formPanel},d.createElement(f.default,{controls:F,onSearch:this.onControlSearch,onHide:this.toggleControlPanel}))),d.createElement("div",{className:P},E))))}}]),t}(d.PureComponent);t.default=y},"./app/containers/Dashboard/components/fullScreenPanel/fullScreenPanel.less":function(e,t,n){var o=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Dashboard/components/fullScreenPanel/fullScreenPanel.less");"string"==typeof o&&(o=[[e.i,o,""]]);var r={};r.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(o,r);o.locals&&(e.exports=o.locals)},"./app/containers/Dashboard/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LOAD_DASHBOARDS="davinci/Dashboard/LOAD_DASHBOARDS",t.LOAD_DASHBOARDS_SUCCESS="davinci/Dashboard/LOAD_DASHBOARDS_SUCCESS",t.LOAD_DASHBOARDS_FAILURE="davinci/Dashboard/LOAD_DASHBOARDS_FAILURE",t.ADD_DASHBOARD="davinci/Dashboard/ADD_DASHBOARD",t.ADD_DASHBOARD_SUCCESS="davinci/Dashboard/ADD_DASHBOARD_SUCCESS",t.ADD_DASHBOARD_FAILURE="davinci/Dashboard/ADD_DASHBOARD_FAILURE",t.EDIT_DASHBOARD="davinci/Dashboard/EDIT_DASHBOARD",t.EDIT_DASHBOARD_SUCCESS="davinci/Dashboard/EDIT_DASHBOARD_SUCCESS",t.EDIT_DASHBOARD_FAILURE="davinci/Dashboard/EDIT_DASHBOARD_FAILURE",t.EDIT_CURRENT_DASHBOARD="davinci/Dashboard/EDIT_CURRENT_DASHBOARD",t.EDIT_CURRENT_DASHBOARD_SUCCESS="davinci/Dashboard/EDIT_CURRENT_DASHBOARD_SUCCESS",t.EDIT_CURRENT_DASHBOARD_FAILURE="davinci/Dashboard/EDIT_CURRENT_DASHBOARD_FAILURE",t.DELETE_DASHBOARD="davinci/Dashboard/DELETE_DASHBOARD",t.DELETE_DASHBOARD_SUCCESS="davinci/Dashboard/DELETE_DASHBOARD_SUCCESS",t.DELETE_DASHBOARD_FAILURE="davinci/Dashboard/DELETE_DASHBOARD_FAILURE",t.LOAD_DASHBOARD_DETAIL="davinci/Dashboard/LOAD_DASHBOARD_DETAIL",t.LOAD_DASHBOARD_DETAIL_SUCCESS="davinci/Dashboard/LOAD_DASHBOARD_DETAIL_SUCCESS",t.LOAD_DASHBOARD_DETAIL_FAILURE="davinci/Dashboard/LOAD_DASHBOARD_DETAIL_FAILURE",t.ADD_DASHBOARD_ITEM="davinci/Dashboard/ADD_DASHBOARD_ITEM",t.ADD_DASHBOARD_ITEM_SUCCESS="davinci/Dashboard/ADD_DASHBOARD_ITEM_SUCCESS",t.ADD_DASHBOARD_ITEM_FAILURE="davinci/Dashboard/ADD_DASHBOARD_ITEM_FAILURE",t.EDIT_DASHBOARD_ITEM="davinci/Dashboard/EDIT_DASHBOARD_ITEM",t.EDIT_DASHBOARD_ITEM_SUCCESS="davinci/Dashboard/EDIT_DASHBOARD_ITEM_SUCCESS",t.EDIT_DASHBOARD_ITEM_FAILURE="davinci/Dashboard/EDIT_DASHBOARD_ITEM_FAILURE",t.EDIT_DASHBOARD_ITEMS="davinci/Dashboard/EDIT_DASHBOARD_ITEMS",t.EDIT_DASHBOARD_ITEMS_SUCCESS="davinci/Dashboard/EDIT_DASHBOARD_ITEMS_SUCCESS",t.EDIT_DASHBOARD_ITEMS_FAILURE="davinci/Dashboard/EDIT_DASHBOARD_ITEMS_FAILURE",t.DELETE_DASHBOARD_ITEM="davinci/Dashboard/DELETE_DASHBOARD_ITEM",t.DELETE_DASHBOARD_ITEM_SUCCESS="davinci/Dashboard/DELETE_DASHBOARD_ITEM_SUCCESS",t.DELETE_DASHBOARD_ITEM_FAILURE="davinci/Dashboard/DELETE_DASHBOARD_ITEM_FAILURE",t.CLEAR_CURRENT_DASHBOARD="davinci/Dashboard/CLEAR_CURRENT_DASHBOARD",t.LOAD_DASHBOARD_SHARE_LINK="davinci/Dashboard/LOAD_DASHBOARD_SHARE_LINK",t.LOAD_DASHBOARD_SHARE_LINK_SUCCESS="davinci/Dashboard/LOAD_DASHBOARD_SHARE_LINK_SUCCESS",t.LOAD_DASHBOARD_SHARE_LINK_FAILURE="davinci/Dashboard/LOAD_DASHBOARD_SHARE_LINK_FAILURE",t.LOAD_DASHBOARD_SECRET_LINK_SUCCESS="davinci/Dashboard/LOAD_DASHBOARD_SECRET_LINK_SUCCESS",t.LOAD_WIDGET_SHARE_LINK="davinci/Dashboard/LOAD_WIDGET_SHARE_LINK",t.LOAD_WIDGET_SHARE_LINK_SUCCESS="davinci/Dashboard/LOAD_WIDGET_SHARE_LINK_SUCCESS",t.LOAD_WIDGET_SHARE_LINK_FAILURE="davinci/Dashboard/LOAD_WIDGET_SHARE_LINK_FAILURE",t.LOAD_WIDGET_SECRET_LINK_SUCCESS="davinci/Dashboard/LOAD_WIDGET_SECRET_LINK_SUCCESS",t.LOAD_WIDGET_CSV="davinci/Dashboard/LOAD_WIDGET_CSV",t.LOAD_WIDGET_CSV_SUCCESS="davinci/Dashboard/LOAD_WIDGET_CSV_SUCCESS",t.LOAD_WIDGET_CSV_FAILURE="davinci/Dashboard/LOAD_WIDGET_CSV_FAILURE",t.RENDER_DASHBOARDITEM="davinci/Dashboard/RENDER_DASHBOARDITEM",t.RESIZE_DASHBOARDITEM="davinci/Dashboard/RESIZE_DASHBOARDITEM",t.RESIZE_ALL_DASHBOARDITEM="davinci/Dashboard/RESIZE_ALL_DASHBOARDITEM"},"./app/containers/Display/Display.less":function(e,t,n){var o=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Display/Display.less");"string"==typeof o&&(o=[[e.i,o,""]]);var r={};r.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(o,r);o.locals&&(e.exports=o.locals)},"./app/containers/Display/components/LayerItem.tsx":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=function(){function e(e,t){var n=[],o=!0,r=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(o=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);o=!0);}catch(e){r=!0,a=e}finally{try{!o&&s.return&&s.return()}finally{if(r)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),l=Object.assign||function(e){for(var t=1;t-1?"bold":"normal",c.fontStyle=b.indexOf("italic")>-1?"italic":"normal",c.textDecoration=b.indexOf("underline")>-1?"underline":"none"),u.createElement("div",{ref:function(e){return n.refLayer=e},className:d,style:c,onClick:n.onClickLayer},n.wrapLayerTooltip(u.createElement("p",{style:T},r.contentText)))},n.wrapLayerTooltip=function(e){var t=n.props,o=t.resizing,r=t.dragging;if(!o&&!r)return e;var a=n.state,i=a.layerParams,l=a.layerTooltipPosition,d=i.positionX,c=i.positionY,p=i.width,h=i.height,m=o?"宽度:"+p+"px,高度:"+h+"px":r?"x:"+d+"px,y:"+c+"px":"",g=o||r,b=s(l,2),_=b[0],v=b[1],y={top:_,left:v};return u.createElement(f,{title:m,overlayStyle:y,placement:"right",visible:g},e)};var i=n.props.layer,d=JSON.parse(i.params);return n.state={layerParams:d,layerTooltipPosition:[0,0],mousePos:[-1,-1],widgetProps:null},n}return i(t,e),d(t,[{key:"componentWillMount",value:function(){var e=this.props.widget;e&&this.setState({widgetProps:JSON.parse(e.config)})}},{key:"componentDidMount",value:function(){var e=this.props,t=e.itemId,n=e.layer,o=e.widget,r=e.onGetChartData;n.type===m.GraphTypes.Chart&&(r("clear",t,o.id),this.setFrequent(this.props))}},{key:"componentWillReceiveProps",value:function(e){if(this.props.layer.params!==e.layer.params){var t=JSON.parse(e.layer.params);this.setState({layerParams:t})}this.props.widget!==e.widget&&this.setState({widgetProps:JSON.parse(e.widget.config)})}},{key:"componentWillUpdate",value:function(e){var t=e.polling;e.layer.type===m.GraphTypes.Chart&&t!==this.props.polling&&this.setFrequent(e)}},{key:"componentDidUpdate",value:function(){var e=c.findDOMNode(this.refLayer).getBoundingClientRect(),t=e.top,n=e.height,o=e.right,r=s(this.state.layerTooltipPosition,2),a=r[0],i=r[1],l=t+n/2,d=o;a===l&&i===d||this.setState({layerTooltipPosition:[l,d]})}},{key:"componentWillUnmount",value:function(){clearInterval(this.frequent)}},{key:"render",value:function(){var e=this.props,t=e.pure,n=e.scale,o=e.slideParams,r=e.layer,a=this.state.layerParams,i=a.positionX,s=a.positionY,l=a.width,d=a.height,c={x:i,y:s},p=this.renderLayer(r);if(t)return p;var f=[o.width-c.x,o.height-c.y];return u.createElement(h.default,{grid:[1,1],bounds:"parent",scale:Math.min(n[0],n[1]),onStart:this.dragOnStart,onStop:this.dragOnStop,onDrag:this.onDrag,handle:"."+_.layer,position:c},u.createElement(b,{width:l,height:d,onResize:this.onResize,onResizeStop:this.onResizeStop,draggableOpts:{grid:[1,1]},minConstraints:[50,50],maxConstraints:f,handleSize:[20,20],scale:Math.min(n[0],n[1])},p))}}]),t}(u.PureComponent);t.LayerItem=v,t.default=v},"./app/containers/Display/components/util.ts":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(){var e=s.params,t={};return e.forEach(function(e){e.items.forEach(function(e){t[e.name]=e.default||null})}),t}var a;Object.defineProperty(t,"__esModule",{value:!0});var i,s=n("./app/assets/json/slideSettings/slide.json"),l=n("./app/assets/json/slideSettings/chart.json"),d=n("./app/assets/json/slideSettings/rectangle.json"),u=n("./app/assets/json/slideSettings/label.json");!function(e){e[e.Rectangle=20]="Rectangle",e[e.Label=21]="Label"}(i=t.SecondaryGraphTypes||(t.SecondaryGraphTypes={}));var c;!function(e){e[e.Slide=0]="Slide",e[e.Chart=1]="Chart",e[e.Secondary=2]="Secondary"}(c=t.GraphTypes||(t.GraphTypes={}));!function(e){e[e.Asc=0]="Asc",e[e.Desc=1]="Desc"}(t.OrderDirection||(t.OrderDirection={})),t.slideSettings=(a={},o(a,c.Slide,s),o(a,c.Chart,l),o(a,i.Rectangle,d),o(a,i.Label,u),a),t.getDefaultSlideParams=r},"./app/containers/LanguageProvider/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CHANGE_LOCALE="app/LanguageToggle/CHANGE_LOCALE"},"./app/containers/LanguageProvider/index.tsx":function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:s,t=arguments[1];switch(t.type){case a.CHANGE_LOCALE:return e.set("locale",t.locale);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/immutable/dist/immutable.js"),a=n("./app/containers/LanguageProvider/constants.ts"),i=n("./app/containers/App/constants.ts"),s=r.fromJS({locale:i.DEFAULT_LOCALE});t.default=o},"./app/containers/LanguageProvider/selectors.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/reselect/es/index.js"),r=function(e){return e.get("language")};t.selectLanguage=r;var a=function(){return o.createSelector(r,function(e){return e.get("locale")})};t.makeSelectLocale=a},"./app/containers/Login/Login.less":function(e,t,n){var o=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Login/Login.less");"string"==typeof o&&(o=[[e.i,o,""]]);var r={};r.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(o,r);o.locals&&(e.exports=o.locals)},"./app/containers/Login/LoginForm.tsx":function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:i,t=arguments[1];t.payload;switch(t.type){case r.LOAD_SIDEBAR:return e.set("sidebar",t.sidebar);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/containers/Report/constants.ts"),a=n("./node_modules/immutable/dist/immutable.js"),i=a.fromJS({sidebar:!1,currentProject:!1});t.default=o},"./app/containers/Widget/charts/area.ts":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t,n){var r=t.groups,s=n.xAxis,l=n.metrics,d=n.groups,u=n.xAxisInterval,c=n.xAxisRotate,p=n.dataZoomThreshold,f=n.smooth,h=n.step,m=n.stack,g=n.symbol,b=n.hasLegend,_=n.legendSelected,v=n.legendPosition,y=n.toolbox,x=n.splitLineX,j=n.splitLineY,w=n.splitLineStyle,k=n.splitLineWidth,M=n.top,S=n.bottom,T=n.left,E=n.right,C=n.suffixYAxis,O=void 0,D=void 0,L=void 0,A=void 0,P=void 0,I=void 0,R=void 0,N=void 0,z=void 0,Y=void 0,F=void 0,H=void 0;H=C&&C.length?{axisLabel:{formatter:"{value} "+C}}:null,R=g&&g.length?{symbol:"emptyCircle"}:{symbol:"none"},A=f&&f.length?{smooth:!0}:null,P=h&&h.length?{step:!0}:null,I=m&&m.length?{stack:"stack"}:null;var V=[];r&&d&&d.length&&(V=i(e,s),O=a(e,[].concat(d).filter(function(e){return!!e}),s,l,V));var q=[];l&&(l.forEach(function(t){if(r&&d&&d.length)Object.keys(O).forEach(function(e){var n=Object.assign({name:e+" "+t,type:"line",areaStyle:{normal:{}},sampling:"average",data:O[e].map(function(e){return e[t]})},R,A,P,I);q.push(n)});else{var n=Object.assign({name:t,type:"line",areaStyle:{normal:{}},sampling:"average",symbol:R,data:e.map(function(e){return e[t]})},R,A,P);q.push(n)}}),D={series:q}),L=s&&{xAxis:{data:r&&d&&d.length?V:e.map(function(e){return e[s]}),axisLabel:{interval:u,rotate:c},splitLine:{show:x&&x.length,lineStyle:{width:k,type:w}}}};var W=0,B=0;if(b&&b.length){var U=void 0,G=void 0;switch(v){case"right":U={orient:"vertical"},G={right:8,top:40,bottom:16},B=108;break;case"bottom":U={orient:"horizontal"},G={bottom:16,left:8,right:8},W=72;break;default:U={orient:"horizontal"},G={top:3,left:8,right:120}}var K="unselectAll"===_?{selected:q.reduce(function(e,t){return Object.assign({},e,o({},t.name,!1))},{})}:null;N={legend:Object.assign({data:q.map(function(e){return e.name}),type:"scroll"},U,G,K)}}return z=y&&y.length?{toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,Y={grid:{top:M,left:T,right:Math.max(E,B),bottom:Math.max(S,W)}},F=p>0&&p")}}})},[])}}L=k&&k.length?{axisLabel:{formatter:"{value} "+k}}:null,T={yAxis:Object.assign({type:"value",splitArea:{show:!1},splitLine:{show:b&&b.length,lineStyle:{width:v,type:_}}},L)};var z=0,Y=0;if(p&&p.length){var F=void 0,H=void 0;switch(h){case"right":F={orient:"vertical"},H={right:8,top:40,bottom:16},Y=108;break;case"bottom":F={orient:"horizontal"},H={bottom:16,left:8,right:8},z=72;break;default:F={orient:"horizontal"},H={top:3,left:8,right:120}}var V="unselectAll"===f?{selected:l.reduce(function(e,t){return Object.assign({},e,o({},t,!1))},{})}:null;E={legend:Object.assign({data:l,type:"scroll"},F,H,V)}}return C=m&&m.length?{toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,O={grid:{top:y,left:j,right:Math.max(w,Y),bottom:Math.max(x,z)}},D=c>0&&c")}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/echarts/extension-src/dataTool/prepareBoxplotData.js");t.default=r},"./app/containers/Widget/charts/confidenceBand.ts":function(e,t,n){"use strict";function o(e,t,n,o){var r=n.xAxis,a=n.metrics,i=n.lower,s=n.upper,l=n.label,d=n.xAxisInterval,u=n.xAxisRotate,c=n.dataZoomThreshold,p=n.smooth,f=n.step,h=n.symbol,m=n.toolbox,g=n.splitLineX,b=n.splitLineY,_=n.splitLineStyle,v=n.splitLineWidth,y=n.top,x=n.bottom,j=n.left,w=n.right,k=n.suffixYAxis,M=void 0,S=void 0,T=void 0,E=void 0,C=void 0,O=void 0,D=void 0,L=void 0,A=void 0,P=void 0,I=-e.reduce(function(e,t){return Math.floor(Math.min(e,+t[i]))},1/0);P={axisLabel:{formatter:function(e){return e-I+" "+(k||"")}}},C=h&&h.length?{symbol:"emptyCircle"}:{symbol:"none"},T=p&&p.length?{smooth:!0}:null,E=f&&f.length?{step:!0}:null,L=l&&l.length?{label:{normal:{show:!0,position:"top"}}}:null;var R=[];if(a){var N=Object.assign({name:a,type:"line",sampling:"average",symbol:C,data:e.map(function(e,t){return t===o?{value:+e[a]+I,lineStyle:{normal:{opacity:1}},itemStyle:{normal:{opacity:1}}}:+e[a]+I}),lineStyle:{normal:{opacity:void 0===o?1:.25}},itemStyle:{normal:{opacity:void 0===o?1:.25}}},C,T,E,L);R.push(N)}var z={type:"line",lineStyle:{normal:{opacity:0}},stack:"confidence-band",symbol:"none"},Y=[{name:"L",data:e.map(function(e){return+e[i]+I})},{name:"U",data:e.map(function(e){return+e[s]-e[i]}),areaStyle:{normal:{color:"#ccc"}}}];return Y.forEach(function(e){Object.assign(e,z)}),R.push.apply(R,Y),M={series:R},S=r&&{xAxis:{data:e.map(function(e){return e[r]}),axisLabel:{interval:d,rotate:u},splitLine:{show:g&&g.length,lineStyle:{width:v,type:_}}}},O=m&&m.length?{toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,D={grid:{top:y,left:j,right:w,bottom:x}},A=c>0&&c"+e[0].value}}},M,S,O,D,A)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o},"./app/containers/Widget/charts/doubleYAxis.ts":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&(X=O.map(function(t){return Object.assign({name:t,type:L,data:e.map(function(e){return e[t]})},F,Y("left"))})),D&&D.length>0&&(Q=D.map(function(t){return Object.assign({name:t,type:A,yAxisIndex:1,data:e.map(function(e){return e[t]})},F,Y("right"))}));R={series:[].concat(r(X),r(Q)).map(function(e){return"line"===e.type?Object.assign({},e,J,K,Z):Object.assign({},e)})}}s&&(N={xAxis:[{data:e.map(function(e){return e[s]}),type:"category",axisLabel:{interval:h,rotate:m},splitLine:{show:j&&j.length,lineStyle:{width:M,type:k}}}]});var re=0,ae=0;if(_&&_.length){var ie=void 0,se=void 0;switch(y){case"right":ie={orient:"vertical"},se={right:8,top:40,bottom:16},ae=180;break;case"bottom":ie={orient:"horizontal"},se={bottom:16,left:8,right:8},re=72;break;default:ie={orient:"horizontal"},se={top:3,left:8,right:120}}var le="unselectAll"===v?{selected:R.series.reduce(function(e,t){return Object.assign({},e,o({},t.name,!1))},{})}:null;H={legend:Object.assign({data:R.series.map(function(e){return e.name}),type:"scroll"},ie,se,le)}}return V=x&&x.length?{toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,q={grid:{top:S,left:E,right:Math.max(C,ae),bottom:Math.max(T,re)}},W=b>0&&b3&&(E.axisLine.lineStyle.color=y),v.push(E),m={series:v},g=o&&o.length?{tooltip:{formatter:"{a}
    {b} : "+w+"{c}"+k}}:null,b=i&&i.length?{toolbox:{feature:{restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,Object.assign({},m,g,b)}Object.defineProperty(t,"__esModule",{value:!0});var r="#c23531",a=["#2f4554","#61a0a8","#d48265","#91c7ae","#749f83","#ca8622","#bda29a","#6e7074","#546570","#c4ccd3"];t.default=o},"./app/containers/Widget/charts/graph.ts":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t,n,r){var i=n.metrics,s=n.target,l=n.source,d=n.tooltip,u=n.legend,c=n.toolbox,p=n.top,f=n.bottom,h=n.left,m=n.right,g=n.category;g&&g.length||(g=l);var b=void 0,_=void 0,v=void 0,y=void 0,x=void 0,j=void 0,w=void 0,k=[],M=[],S=[],T=[],E=[],C=e.map(function(e){return e[g]});T=C.filter(function(e,t){return C.indexOf(e)===t}).concat(["其他"]),E=T.map(function(t){var n=e.filter(function(e){return e[g]===t});return{key:t,value:n}}),s&&s.length&&l&&l.length&&i&&i.length&&(S=e.map(function(e){return Array.prototype.push.apply(M,[e[l],e[s]]),{value:e[i],source:e[l],target:e[s]}}),E&&E.length&&(E=E.map(function(e){return o({},e.key,e.value.reduce(function(e,t){return e+Number(t[i])},0))}))),M&&M.length&&(M=M.filter(function(e,t){return M.indexOf(e)===t}).map(function(e){return{name:e,category:e}}));var O=E.reduce(function(e,t){return Object.assign({},e,t)},{}),D=Object.keys(O),L=Object.values(O),A=a(Object.values(O));T&&T.length&&M&&M.length&&(M=M.map(function(e,t){var n=void 0,o=void 0,r=void 0;return T.find(function(t){return t===e.category})?(r=D.indexOf(e.category),n=A[r],o=L[r],Object.assign({},e,{symbolSize:n,realValue:o})):Object.assign({},e,{category:"其他",symbolSize:1,realValue:0})})),_={label:{normal:{show:!0,position:"right"}}},j={grid:{top:p,left:h,right:m,bottom:f}},w={animationDurationUpdate:1e3,animationEasingUpdate:"quinticInOut"};var P=Object.assign({type:"graph",layout:"circular",symbolSize:30,roam:!0,focusNodeAdjacency:!0,edgeSymbol:["circle","arrow"],edgeSymbolSize:[4,10],edgeLabel:{normal:{}},circular:{rotateLabel:!0},data:M,links:S,categories:T.map(function(e){return{name:e}}),lineStyle:{normal:{color:"source",opacity:.9,curveness:.3}}},_);return k.push(P),b={series:k},v=d&&d.length?{tooltip:{formatter:function(e){var t=e.data;switch(e.dataType){case"edge":return t.source+" => "+t.target+" : "+t.value;case"node":return t.name+" : "+t.realValue;default:return""}}}}:null,y=u&&u.length?{legend:{data:T,orient:"vertical",left:"left",type:"scroll"}}:null,x=c&&c.length?{toolbox:{feature:{dataView:{readOnly:!1},restore:{},saveAsImage:{}}}}:null,Object.assign({},b,v,y,x,j,w)}function a(e){if(!(e&&Array.isArray(e)&&e.length))return!1;var t=e.reduce(function(e,t){return t>e?t:e},0);return e.map(function(e){var n=60*Number(e)/t;return n<1?1:n})}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r},"./app/containers/Widget/charts/map.ts":function(e,t,n){"use strict";function o(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t"+Object.keys(t.children).map(function(e){return e+":"+t.children[e]+"
    "}).join("")}return n}}},_=f&&f.length?{toolbox:{feature:{dataView:{readOnly:!1},restore:{},saveAsImage:{}}}}:null,Object.assign({geo:{map:"china",label:{emphasis:{show:!1}},itemStyle:{normal:{areaColor:"#0000003F",borderColor:"#FFFFFF",borderWidth:1},emphasis:{areaColor:"#00000059"}},roam:!(!p||!p.length)}},h,g,b,_)})}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./app/utils/util.ts"),i=n("./app/globalConstants.ts"),s=void 0;t.default=r},"./app/containers/Widget/charts/mapFile/china.js":function(e,t,n){var o,r,a,i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};!function(s,l){"object"===i(t)&&"string"!=typeof t.nodeName?l(t,n("./node_modules/echarts/lib/echarts.js")):(r=[t,n("./node_modules/echarts/lib/echarts.js")],o=l,void 0!==(a="function"==typeof o?o.apply(t,r):o)&&(e.exports=a))}(0,function(e,t){var n=function(e){"undefined"!=typeof console&&console&&console.error&&console.error(e)};return t?t.registerMap?void t.registerMap("china",{type:"FeatureCollection",features:[{id:"710000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@°Ü¯Û"],["@@ƛĴÕƊÉɼģºðʀ\\ƎsÆNŌÔĚäœnÜƤɊĂǀĆĴžĤNJŨxĚĮǂƺòƌ‚–âÔ®ĮXŦţƸZûЋƕƑGđ¨ĭMó·ęcëƝɉlÝƯֹÅŃ^Ó·śŃNjƏďíåɛGɉ™¿@ăƑŽ¥ĘWǬÏĶŁâ"],["@@\\p|WoYG¿¥I†j@¢"],["@@…¡‰@ˆV^RqˆBbAŒnTXeRz¤Lž«³I"],["@@ÆEE—„kWqë @œ"],["@@fced"]],encodeOffsets:[[[122886,24033]],[[123335,22980]],[[122375,24193]],[[122518,24117]],[[124427,22618]],[[124862,26043]]]},properties:{cp:[121.509062,25.044332],name:"台湾",childNum:6}},{id:"130000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@o~†Z]‚ªr‰ºc_ħ²G¼s`jΟnüsœłNX_“M`ǽÓnUK…Ĝēs¤­©yrý§uģŒc†JŠ›e"],["@@U`Ts¿m‚"],["@@oºƋÄd–eVŽDJj£€J|Ådz•Ft~žKŨ¸IÆv|”‡¢r}膎onb˜}`RÎÄn°ÒdÞ²„^®’lnÐèĄlðӜ×]ªÆ}LiĂ±Ö`^°Ç¶p®đDcœŋ`–ZÔ’¶êqvFƚ†N®ĆTH®¦O’¾ŠIbÐã´BĐɢŴÆíȦp–ĐÞXR€·nndOž¤’OÀĈƒ­Qg˜µFo|gȒęSWb©osx|hYh•gŃfmÖĩnº€T̒Sp›¢dYĤ¶UĈjl’ǐpäìë|³kÛfw²Xjz~ÂqbTŠÑ„ěŨ@|oM‡’zv¢ZrÃVw¬ŧĖ¸fŒ°ÐT€ªqŽs{Sž¯r æÝlNd®²Ğ džiGʂJ™¼lr}~K¨ŸƐÌWö€™ÆŠzRš¤lêmĞL΄’@¡|q]SvK€ÑcwpÏρ†ĿćènĪWlĄkT}ˆJ”¤~ƒÈT„d„™pddʾĬŠ”ŽBVt„EÀ¢ôPĎƗè@~‚k–ü\\rÊĔÖæW_§¼F˜†´©òDòj’ˆYÈrbĞāøŀG{ƀ|¦ðrb|ÀH`pʞkv‚GpuARhÞÆǶgʊTǼƹS£¨¡ù³ŘÍ]¿Ây™ôEP xX¶¹܇O¡“gÚ¡IwÃ鑦ÅB‡Ï|Ç°…N«úmH¯‹âŸDùŽyŜžŲIÄuШDž•¸dɂ‡‚FŸƒ•›Oh‡đ©OŸ›iÃ`ww^ƒÌkŸ‘ÑH«ƇǤŗĺtFu…{Z}Ö@U‡´…ʚLg®¯Oı°ÃwŸ ^˜—€VbÉs‡ˆmA…ê]]w„§›RRl£‡ȭµu¯b{ÍDěïÿȧŽuT£ġƒěŗƃĝ“Q¨fV†Ƌ•ƅn­a@‘³@šď„yýIĹÊKšŭfċŰóŒxV@tˆƯŒJ”]eƒR¾fe|rHA˜|h~Ėƍl§ÏŠlTíb ØoˆÅbbx³^zÃĶš¶Sj®A”yÂhðk`š«P€”ˈµEF†Û¬Y¨Ļrõqi¼‰Wi°§’б´°^[ˆÀ|ĠO@ÆxO\\tŽa\\tĕtû{ġŒȧXýĪÓjùÎRb›š^ΛfK[ݏděYfíÙTyŽuUSyŌŏů@Oi½’éŅ­aVcř§ax¹XŻác‡žWU£ôãºQ¨÷Ñws¥qEH‰Ù|‰›šYQoŕÇyáĂ£MðoťÊ‰P¡mšWO¡€v†{ôvîēÜISpÌhp¨ ‘j†deŔQÖj˜X³à™Ĉ[n`Yp@Už–cM`’RKhŒEbœ”pŞlNut®Etq‚nsÁŠgA‹iú‹oH‡qCX‡”hfgu“~ϋWP½¢G^}¯ÅīGCŸÑ^ãziMáļMTÃƘrMc|O_ž¯Ŏ´|‡morDkO\\mĆJfl@cĢ¬¢aĦtRıҙ¾ùƀ^juųœK­ƒUFy™—Ɲ…›īÛ÷ąV×qƥV¿aȉd³B›qPBm›aËđŻģm“Å®VŠ¹d^K‡KoŸnYg“¯Xhqa”Ldu¥•ÍpDž¡KąÅƒkĝęěhq‡}HyÓ]¹ǧ£…Í÷¿qᵧš™g‘¤o^á¾ZE‡¤i`ij{n•ƒOl»ŸWÝĔįhg›F[¿¡—ßkOüš_‰€ū‹i„DZàUtėGylƒ}ŒÓM}€jpEC~¡FtoQi‘šHkk{Ãmï‚"]],encodeOffsets:[[[119712,40641]],[[121616,39981]],[[116462,37237]]]},properties:{cp:[114.502461,38.045474],name:"河北",childNum:3}},{id:"140000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@Þĩ҃S‰ra}Á€yWix±Üe´lè“ßÓǏok‘ćiµVZģ¡coœ‘TS˹ĪmnÕńe–hZg{gtwªpXaĚThȑp{¶Eh—®RćƑP¿£‘Pmc¸mQÝW•ďȥoÅîɡųAďä³aωJ‘½¥PG­ąSM­™…EÅruµé€‘Yӎ•Ō_d›ĒCo­Èµ]¯_²ÕjāŽK~©ÅØ^ԛkïçămϑk]­±ƒcݯÑÃmQÍ~_a—pm…~ç¡q“ˆu{JÅŧ·Ls}–EyÁÆcI{¤IiCfUc•ƌÃp§]웫vD@¡SÀ‘µM‚ÅwuŽYY‡¡DbÑc¡hƒ×]nkoQdaMç~eD•ÛtT‰©±@¥ù@É¡‰ZcW|WqOJmĩl«ħşvOÓ«IqăV—¥ŸD[mI~Ó¢cehiÍ]Ɠ~ĥqXŠ·eƷœn±“}v•[ěďŽŕ]_‘œ•`‰¹ƒ§ÕōI™o©b­s^}Ét±ū«³p£ÿ·Wµ|¡¥ăFÏs׌¥ŅxŸÊdÒ{ºvĴÎêÌɊ²¶€ü¨|ÞƸµȲ‘LLúÉƎ¤ϊęĔV`„_bª‹S^|ŸdŠzY|dz¥p†ZbÆ£¶ÒK}tĦÔņƠ‚PYzn€ÍvX¶Ěn ĠÔ„zý¦ª˜÷žÑĸَUȌ¸‚dòÜJð´’ìúNM¬ŒXZ´‘¤ŊǸ_tldIš{¦ƀðĠȤ¥NehXnYG‚‡R° ƬDj¬¸|CĞ„Kq‚ºfƐiĺ©ª~ĆOQª ¤@ìǦɌ²æBŒÊ”TœŸ˜ʂōĖ’šĴŞ–ȀœÆÿȄlŤĒö„t”νî¼ĨXhŒ‘˜|ªM¤Ðz"],encodeOffsets:[[116874,41716]]},properties:{cp:[112.549248,37.857014],name:"山西",childNum:1}},{id:"150000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@Č^â£Ăh–šĖMÈÄw‚\\fŦ°W ¢¾luŸD„wŠ\\̀ʉÌÛM…Ā[bӞEn}¶Vc…ê“sƒ–›¯PqƒFB…‰|S•³C|kñ•H‹d‘iÄ¥sˆʼnő…PóÑÑE^‘ÅPpy_YtS™hQ·aHwsOnʼnÚs©iqj›‰€USiº]ïWš‰«gW¡A–R붛ijʕ…Œů`çõh]y»ǃŸǛҤxÒm~zf}pf|ÜroÈzrKÈĵSƧ„ż؜Ġu¦ö"],["@@sKCš…GS|úþX”gp›{ÁX¿Ÿć{ƱȏñZáĔyoÁhA™}ŅĆfdʼn„_¹„Y°ėǩÑ¡H¯¶oMQqð¡Ë™|‘Ñ`ƭŁX½·óۓxğįÅcQ‡ˆ“ƒs«tȋDžF“Ÿù^i‘t«Č¯[›hAi©á¥ÇĚ×l|¹y¯YȵƓ‹ñǙµï‚ċ™Ļ|Dœ™üȭ¶¡˜›oŽäÕG\\ďT¿Òõr¯œŸLguÏYęRƩšɷŌO\\İТæ^Ŋ IJȶȆbÜGŽĝ¬¿ĚVĎgª^íu½jÿĕęjık@Ľƒ]ėl¥Ë‡ĭûÁ„ƒėéV©±ćn©­ȇžÍq¯½•YÃÔʼn“ÉNѝÅÝy¹NqáʅDǡËñ­ƁYÅy̱os§ȋµʽǘǏƬɱà‘ưN¢ƔÊuľýľώȪƺɂļžxœZĈ}ÌʼnŪ˜ĺœŽĭFЛĽ̅ȣͽÒŵìƩÇϋÿȮǡŏçƑůĕ~Ǎ›¼ȳÐUf†dIxÿ\\G ˆzâɏÙOº·pqy£†@ŒŠqþ@Ǟ˽IBäƣzsÂZ†ÁàĻdñ°ŕzéØűzșCìDȐĴĺf®ŽÀľưø@ɜÖÞKĊŇƄ§‚͑těï͡VAġÑÑ»d³öǍÝXĉĕÖ{þĉu¸ËʅğU̎éhɹƆ̗̮ȘNJ֥ड़ࡰţાíϲäʮW¬®ҌeרūȠkɬɻ̼ãüfƠSצɩςåȈHϚÎKdzͲOðÏȆƘ¼CϚǚ࢚˼ФԂ¤ƌžĞ̪Qʤ´¼mȠJˀŸƲÀɠmǐnǔĎȆÞǠN~€ʢĜ‚¶ƌĆĘźʆȬ˪ĚĒ¸ĞGȖƴƀj`ĢçĶāàŃºēĢƒĖćšYŒÀŎüôQÐÂŎŞdžŞêƖš˜oˆDĤÕºÑǘÛˤ³̀gńƘĔÀ^žªƂ`ªt¾äƚêĦĀ¼Ð€Ĕǎ¨Ȕ»͠^ˮÊȦƤøxRrŜH¤¸ÂxDĝŒ|ø˂˜ƮÐ¬ɚwɲFjĔ²Äw°dždÀɞ_ĸdîàŎjʜêTЪŌ‡ŜWÈ|tqĢUB~´°ÎFC•ŽU¼pĀēƄN¦¾O¶ŠłKĊOj“Ě”j´ĜYp˜{¦„ˆSĚÍ\\Tš×ªV–÷Ší¨ÅDK°ßtŇĔKš¨ǵÂcḷ̌ĚǣȄĽF‡lġUĵœŇ‹ȣFʉɁƒMğįʏƶɷØŭOǽ«ƽū¹Ʊő̝Ȩ§ȞʘĖiɜɶʦ}¨֪ࠜ̀ƇǬ¹ǨE˦ĥªÔêFŽxúQ„Er´W„rh¤Ɛ \\talĈDJ˜Ü|[Pll̚¸ƎGú´Pž¬W¦†^¦–H]prR“n|or¾wLVnÇIujkmon£cX^Bh`¥V”„¦U¤¸}€xRj–[^xN[~ªŠxQ„‚[`ªHÆÂExx^wšN¶Ê˜|¨ì†˜€MrœdYp‚oRzNy˜ÀDs~€bcfÌ`L–¾n‹|¾T‚°c¨È¢a‚r¤–`[|òDŞĔöxElÖdH„ÀI`„Ď\\Àì~ƎR¼tf•¦^¢ķ¶e”ÐÚMŒptgj–„ɡČÅyġLû™ŇV®ŠÄÈƀ†Ď°P|ªVV†ªj–¬ĚÒêp¬–E|ŬÂc|ÀtƐK fˆ{ĘFĒœƌXƲąo½Ę‘\\¥–o}›Ûu£ç­kX‘{uĩ«āíÓUŅßŢq€Ť¥lyň[€oi{¦‹L‡ń‡ðFȪȖ”ĒL„¿Ì‹ˆfŒ£K£ʺ™oqNŸƒwğc`ue—tOj×°KJ±qƒÆġm‰Ěŗos¬…qehqsuœƒH{¸kH¡Š…ÊRǪÇƌbȆ¢´ä܍¢NìÉʖ¦â©Ż؛Ç@Vu»A—ylßí¹ĵê…ÝlISò³C¹Ìâ„²i¶’Ìoú^H“²CǜңDŽ z¼g^èöŰ_‹‚–†IJĕꄜ}gÁnUI«m‰…„‹]j‡vV¼euhwqA„aW˜ƒ_µj…»çjioQR¹ēÃßt@r³[ÛlćË^ÍÉáG“›OUۗOB±•XŸkŇ¹£k|e]ol™ŸkVͼÕqtaÏõjgÁ£§U^Œ”RLˆËnX°Ç’Bz†^~wfvˆypV ¯„ƫĉ˭ȫƗŷɿÿĿƑ˃ĝÿÃǃßËőó©ǐȍŒĖM×ÍEyx‹þp]Évïè‘vƀnÂĴÖ@‚‰†V~Ĉ™Š³MEˆĸÅĖt—ējyÄDXÄxGQuv_›i¦aBçw‘˛wD™©{ŸtāmQ€{EJ§KPśƘƿ¥@‰sCT•É}ɃwˆƇy±ŸgÑ“}T[÷kÐ禫…SÒ¥¸ëBX½‰HáŵÀğtSÝÂa[ƣ°¯¦P]£ġ“–“Òk®G²„èQ°óMq}EŠóƐÇ\\ƒ‡@áügQ͋u¥Fƒ“T՛¿Jû‡]|mvāÎYua^WoÀa·­ząÒot׶CLƗi¯¤mƎHNJ¤îìɾŊìTdåwsRÖgĒųúÍġäÕ}Q¶—ˆ¿A•†‹[¡Œ{d×uQAƒ›M•xV‹vMOmăl«ct[wº_šÇʊŽŸjb£ĦS_é“QZ“_lwgOiýe`YYLq§IÁˆdz£ÙË[ÕªuƏ³ÍT—s·bÁĽäė[›b[ˆŗfãcn¥îC¿÷µ[ŏÀQ­ōšĉm¿Á^£mJVm‡—L[{Ï_£›F¥Ö{ŹA}…×Wu©ÅaųijƳhB{·TQqÙIķˑZđ©Yc|M¡…L•eVUóK_QWk’_ĥ‘¿ãZ•»X\\ĴuUƒè‡lG®ěłTĠğDєOrÍd‚ÆÍz]‹±…ŭ©ŸÅ’]ŒÅÐ}UË¥©Tċ™ïxgckfWgi\\ÏĒ¥HkµE˜ë{»ÏetcG±ahUiñiWsɁˆ·c–C‚Õk]wȑ|ća}w…VaĚ᠞ŒG°ùnM¬¯†{ȈÐÆA’¥ÄêJxÙ¢”hP¢Ûˆº€µwWOŸóFŽšÁz^ÀŗÎú´§¢T¤ǻƺSė‰ǵhÝÅQgvBHouʝl_o¿Ga{ïq{¥|ſĿHĂ÷aĝÇq‡Z‘ñiñC³ª—…»E`¨åXēÕqÉû[l•}ç@čƘóO¿¡ƒFUsA‰“ʽīccšocƒ‚ƒÇS}„“£‡IS~ălkĩXçmĈ…ŀЂoÐdxÒuL^T{r@¢‘žÍƒĝKén£kQ™‰yšÅõËXŷƏL§~}kqš»IHėDžjĝŸ»ÑÞoŸå°qTt|r©ÏS‹¯·eŨĕx«È[eMˆ¿yuˆ‘pN~¹ÏyN£{©’—g‹ħWí»Í¾s“əšDž_ÃĀɗ±ą™ijĉʍŌŷ—S›É“A‹±åǥɋ@럣R©ąP©}ĹªƏj¹erƒLDĝ·{i«ƫC£µ"]],encodeOffsets:[[[127444,52594]],[[113793,40312]]]},properties:{cp:[111.670801,40.818311],name:"内蒙古",childNum:2}},{id:"210000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@L–Ž@@s™a"],["@@MnNm"],["@@d‚c"],["@@eÀ‚C@b‚“‰"],["@@f‡…Xwkbr–Ä`qg"],["@@^jtW‘Q"],["@@~ Y]c"],["@@G`ĔN^_¿Z‚ÃM"],["@@iX¶B‹Y"],["@@„YƒZ"],["@@L_{Epf"],["@@^WqCT\\"],["@@\\[“‹§t|”¤_"],["@@m`n_"],["@@Ïxnj{q_×^Giip"],["@@@œé^B†‡ntˆaÊU—˜Ÿ]x ¯ÄPIJ­°h€ʙK³†VˆÕ@Y~†|EvĹsDŽ¦­L^p²ŸÒG ’Ël]„xxÄ_˜fT¤Ď¤cŽœP„–C¨¸TVjbgH²sdÎdHt`Bˆ—²¬GJję¶[ÐhjeXdlwhšðSȦªVÊπ‹Æ‘Z˜ÆŶ®²†^ŒÎyÅÎcPqń“ĚDMħĜŁH­ˆk„çvV[ij¼W–‚YÀäĦ’‘`XlžR`žôLUVžfK–¢†{NZdĒª’YĸÌÚJRr¸SA|ƴgŴĴÆbvªØX~†źBŽ|¦ÕœEž¤Ð`\\|Kˆ˜UnnI]¤ÀÂĊnŎ™R®Ő¿¶\\ÀøíDm¦ÎbŨab‰œaĘ\\ľã‚¸a˜tÎSƐ´©v\\ÖÚÌǴ¤Â‡¨JKr€Z_Z€fjþhPkx€`Y”’RIŒjJcVf~sCN¤ ˆE‚œhæm‰–sHy¨SðÑÌ\\\\ŸĐRZk°IS§fqŒßýáЍÙÉÖ[^¯ǤŲ„ê´\\¦¬ĆPM¯£Ÿˆ»uïpùzEx€žanµyoluqe¦W^£ÊL}ñrkqWňûP™‰UP¡ôJŠoo·ŒU}£Œ„[·¨@XŒĸŸ“‹‹DXm­Ûݏº‡›GU‹CÁª½{íĂ^cj‡k“¶Ã[q¤“LÉö³cux«zZfƒ²BWÇ®Yß½ve±ÃC•ý£W{Ú^’q^sÑ·¨‹ÍOt“¹·C¥‡GD›rí@wÕKţ݋˜Ÿ«V·i}xËÍ÷‘i©ĝ‡ɝǡ]ƒˆ{c™±OW‹³Ya±Ÿ‰_穂Hžĕoƫ€Ňqƒr³‰Lys[„ñ³¯OS–ďOMisZ†±ÅFC¥Pq{‚Ã[Pg}\\—¿ghćO…•k^ģÁFıĉĥM­oEqqZûěʼn³F‘¦oĵ—hŸÕP{¯~TÍlª‰N‰ßY“Ð{Ps{ÃVU™™eĎwk±ʼnVÓ½ŽJãÇÇ»Jm°dhcÀff‘dF~ˆ€ĀeĖ€d`sx² šƒ®EżĀdQ‹Âd^~ăÔHˆ¦\\›LKpĄVez¤NP ǹӗR™ÆąJSh­a[¦´Âghwm€BÐ¨źhI|žVVŽ—Ž|p] Â¼èNä¶ÜBÖ¼“L`‚¼bØæŒKV”ŸpoœúNZÞÒKxpw|ÊEMnzEQšŽIZ”ŽZ‡NBˆčÚFÜçmĩ‚WĪñt‘ÞĵÇñZ«uD‚±|Əlij¥ãn·±PmÍa‰–da‡ CL‡Ǒkùó¡³Ï«QaċϑOÃ¥ÕđQȥċƭy‹³ÃA"]],encodeOffsets:[[[123686,41445]],[[126019,40435]],[[124393,40128]],[[126117,39963]],[[125322,40140]],[[126686,40700]],[[126041,40374]],[[125584,40168]],[[125453,40165]],[[125362,40214]],[[125280,40291]],[[125774,39997]],[[125976,40496]],[[125822,39993]],[[125509,40217]],[[122731,40949]]]},properties:{cp:[123.429096,41.796767],name:"辽宁",childNum:16}},{id:"220000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@‘p䔳PClƒFbbÍzš€wBG’ĭ€Z„Åi“»ƒlY­ċ²SgŽkÇ£—^S‰“qd¯•‹R…©éŽ£¯S†\\cZ¹iűƏCuƍÓX‡oR}“M^o•£…R}oªU­F…uuXHlEŕ‡€Ï©¤ÛmTŽþ¤D–²ÄufàÀ­XXȱAe„yYw¬dvõ´KÊ£”\\rµÄl”iˆdā]|DÂVŒœH¹ˆÞ®ÜWnŒC”Œķ W‹§@\\¸‹ƒ~¤‹Vp¸‰póIO¢ŠVOšŇürXql~òÉK]¤¥Xrfkvzpm¶bwyFoúvð‡¼¤ N°ąO¥«³[ƒéǡű_°Õ\\ÚÊĝŽþâőàerR¨­JYlďQ[ ÏYëЧTGz•tnŠß¡gFkMŸāGÁ¤ia É‰™È¹`\\xs€¬dĆkNnuNUŠ–užP@‚vRY¾•–\\¢…ŒGªóĄ~RãÖÎĢù‚đŴÕhQŽxtcæëSɽʼníëlj£ƍG£nj°KƘµDsØÑpyƸ®¿bXp‚]vbÍZuĂ{nˆ^IüœÀSք”¦EŒvRÎûh@℈[‚Əȉô~FNr¯ôçR±ƒ­HÑl•’Ģ–^¤¢‚OðŸŒævxsŒ]ÞÁTĠs¶¿âƊGW¾ìA¦·TѬ†è¥€ÏÐJ¨¼ÒÖ¼ƒƦɄxÊ~S–tD@ŠĂ¼Ŵ¡jlºWžvЉˆzƦZЎ²CH— „Axiukd‹ŒGgetqmcžÛ£Ozy¥cE}|…¾cZ…k‚‰¿uŐã[oxGikfeäT@…šSUwpiÚFM©’£è^ڟ‚`@v¶eň†f h˜eP¶žt“äOlÔUgƒÞzŸU`lœ}ÔÆUvØ_Ō¬Öi^ĉi§²ÃŠB~¡Ĉ™ÚEgc|DC_Ȧm²rBx¼MÔ¦ŮdĨÃâYx‘ƘDVÇĺĿg¿cwÅ\\¹˜¥Yĭlœ¤žOv†šLjM_a W`zļMž·\\swqÝSA‡š—q‰Śij¯Š‘°kŠRē°wx^Đkǂғ„œž“œŽ„‹\\]˜nrĂ}²ĊŲÒøãh·M{yMzysěnĒġV·°“G³¼XÀ““™¤¹i´o¤ŃšŸÈ`̃DzÄUĞd\\i֚ŒˆmÈBĤÜɲDEh LG¾ƀľ{WaŒYÍȏĢĘÔRîĐj‹}Ǟ“ccj‡oUb½š{“h§Ǿ{K‹ƖµÎ÷žGĀÖŠåưÎs­l›•yiē«‹`姝H¥Ae^§„GK}iã\\c]v©ģZ“mÃ|“[M}ģTɟĵ‘Â`À–çm‰‘FK¥ÚíÁbXš³ÌQґHof{‰]e€pt·GŋĜYünĎųVY^’˜ydõkÅZW„«WUa~U·Sb•wGçǑ‚“iW^q‹F‚“›uNĝ—·Ew„‹UtW·Ýďæ©PuqEzwAV•—XR‰ãQ`­©GŒM‡ehc›c”ďϝd‡©ÑW_ϗYƅŒ»…é\\ƒɹ~ǙG³mØ©BšuT§Ĥ½¢Ã_ý‘L¡‘ýŸqT^rme™\\Pp•ZZbƒyŸ’uybQ—efµ]UhĿDCmûvašÙNSkCwn‰cćfv~…Y‹„ÇG"],encodeOffsets:[[130196,42528]]},properties:{cp:[125.3245,43.886841],name:"吉林",childNum:1}},{id:"230000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@ƨƒĶTLÇyqpÇÛqe{~oyen}s‰`q‡iXG”ù]Ëp½“©lɇÁp]Þñ´FÔ^f‘äîºkà˜z¼BUvÈ@"],["@@UƒµNÿ¥īè灋•HÍøƕ¶LŒǽ|g¨|”™Ža¾pViˆdd”~ÈiŒíďÓQġėǐZ΋ŽXb½|ſÃH½ŸKFgɱCģÛÇA‡n™‹jÕc[VĝDZÃ˄Ç_™ £ń³pŽj£º”š¿”»WH´¯”U¸đĢmžtĜyzzNN|g¸÷äűѱĉā~mq^—Œ[ƒ”››”ƒǁÑďlw]¯xQĔ‰¯l‰’€°řĴrŠ™˜BˆÞTxr[tŽ¸ĻN_yŸX`biN™Ku…P›£k‚ZĮ—¦[ºxÆÀdhŽĹŀUÈƗCw’áZħÄŭcÓ¥»NAw±qȥnD`{ChdÙFćš}¢‰A±Äj¨]ĊÕjŋ«×`VuÓś~_kŷVÝyh„“VkÄãPs”Oµ—fŸge‚Ň…µf@u_Ù ÙcŸªNªÙEojVx™T@†ãSefjlwH\\pŏäÀvŠŽlY†½d{†F~¦dyz¤PÜndsrhf‹HcŒvlwjFœ£G˜±DύƥY‡yϊu¹XikĿ¦ÏqƗǀOŜ¨LI|FRĂn sª|Cš˜zxAè¥bœfudTrFWÁ¹Am|˜ĔĕsķÆF‡´Nš‰}ć…UŠÕ@Áijſmužç’uð^ÊýowŒFzØÎĕNőžǏȎôªÌŒDŽàĀÄ˄ĞŀƒʀĀƘŸˮȬƬĊ°ƒUŸzou‡xe]}Ž…AyȑW¯ÌmK‡“Q]‹Īºif¸ÄX|sZt|½ÚUΠlkš^p{f¤lˆºlÆW –€A²˜PVܜPH”Êâ]ÎĈÌÜk´\\@qàsĔÄQºpRij¼èi†`¶—„bXƒrBgxfv»ŽuUiˆŒ^v~”J¬mVp´£Œ´VWrnP½ì¢BX‚¬h™ŠðX¹^TjVœŠriªj™tŊÄm€tPGx¸bgRšŽsT`ZozÆO]’ÒFô҆Oƒ‡ŊŒvŞ”p’cGŒêŠsx´DR–Œ{A†„EOr°Œ•žx|íœbˆ³Wm~DVjºéNN†Ëܲɶ­GƒxŷCStŸ}]ûō•SmtuÇÃĕN•™āg»šíT«u}ç½BĵÞʣ¥ëÊ¡Mێ³ãȅ¡ƋaǩÈÉQ‰†G¢·lG|›„tvgrrf«†ptęŘnŠÅĢr„I²¯LiØsPf˜_vĠd„xM prʹšL¤‹¤‡eˌƒÀđK“žïÙVY§]I‡óáĥ]ķ†Kˆ¥Œj|pŇ\\kzţ¦šnņäÔVĂîĪ¬|vW’®l¤èØr‚˜•xm¶ă~lÄƯĄ̈́öȄEÔ¤ØQĄ–Ą»ƢjȦOǺ¨ìSŖÆƬy”Qœv`–cwƒZSÌ®ü±DŽ]ŀç¬B¬©ńzƺŷɄeeOĨS’Œfm Ċ‚ƀP̎ēz©Ċ‚ÄÕÊmgŸÇsJ¥ƔˆŊśæ’΁Ñqv¿íUOµª‰ÂnĦÁ_½ä@ê텣P}Ġ[@gġ}g“ɊדûÏWXá¢užƻÌsNͽƎÁ§č՛AēeL³àydl›¦ĘVçŁpśdžĽĺſʃQíÜçÛġԏsĕ¬—Ǹ¯YßċġHµ ¡eå`ļƒrĉŘóƢFì“ĎWøxÊk†”ƈdƬv|–I|·©NqńRŀƒ¤é”eŊœŀ›ˆàŀU²ŕƀB‚Q£Ď}L¹Îk@©ĈuǰųǨ”Ú§ƈnTËÇéƟÊcfčŤ^Xm‡—HĊĕË«W·ċëx³ǔķÐċJā‚wİ_ĸ˜Ȁ^ôWr­°oú¬Ħ…ŨK~”ȰCĐ´Ƕ£’fNÎèâw¢XnŮeÂÆĶŽ¾¾xäLĴĘlļO¤ÒĨA¢Êɚ¨®‚ØCÔ ŬGƠ”ƦYĜ‡ĘÜƬDJ—g_ͥœ@čŅĻA“¶¯@wÎqC½Ĉ»NŸăëK™ďÍQ“Ùƫ[«Ãí•gßÔÇOÝáW‘ñuZ“¯ĥ€Ÿŕā¡ÑķJu¤E Ÿå¯°WKɱ_d_}}vyŸõu¬ï¹ÓU±½@gÏ¿rýD‰†g…Cd‰µ—°MFYxw¿CG£‹Rƛ½Õ{]L§{qqąš¿BÇƻğëšܭNJË|c²}Fµ}›ÙRsÓpg±ŠQNqǫŋRwŕnéÑÉKŸ†«SeYR…ŋ‹@{¤SJ}šD Ûǖ֍Ÿ]gr¡µŷjqWÛham³~S«“„›Þ]"]],encodeOffsets:[[[127123,51780]],[[134456,44547]]]},properties:{cp:[126.642464,45.756967],name:"黑龙江",childNum:2}},{id:"320000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@cþÅPiŠ`ZŸRu¥É\\]~°ŽY`µ†Óƒ^phÁbnÀşúŽòa–ĬºTÖŒb‚˜e¦¦€{¸ZâćNpŒ©žHr|^ˆmjhŠSEb\\afv`sz^lkŽlj‹Ätg‹¤D˜­¾Xš¿À’|ДiZ„ȀåB·î}GL¢õcßjaŸyBFµÏC^ĭ•cÙt¿sğH]j{s©HM¢ƒQnDÀ©DaÜތ·jgàiDbPufjDk`dPOîƒhw¡ĥ‡¥šG˜ŸP²ĐobºrY†„î¶aHŢ´ ]´‚rılw³r_{£DB_Ûdåuk|ˆŨ¯F Cºyr{XFy™e³Þċ‡¿Â™kĭB¿„MvÛpm`rÚã”@Ę¹hågËÖƿxnlč¶Åì½Ot¾dJlŠVJʜǀœŞqvnOŠ^ŸJ”Z‘ż·Q}ê͎ÅmµÒ]Žƍ¦Dq}¬R^èĂ´ŀĻĊIԒtžIJyQŐĠMNtœR®òLh‰›Ěs©»œ}OӌGZz¶A\\jĨFˆäOĤ˜HYš†JvÞHNiÜaϚɖnFQlšNM¤ˆB´ĄNöɂtp–Ŭdf先‹qm¿QûŠùއÚb¤uŃJŴu»¹Ą•lȖħŴw̌ŵ²ǹǠ͛hĭłƕrçü±Y™xci‡tğ®jű¢KOķ•Coy`å®VTa­_Ā]ŐÝɞï²ʯÊ^]afYǸÃĆēĪȣJđ͍ôƋĝÄ͎ī‰çÛɈǥ£­ÛmY`ó£Z«§°Ó³QafusNıDž_k}¢m[ÝóDµ—¡RLčiXy‡ÅNïă¡¸iĔϑNÌŕoēdōîåŤûHcs}~Ûwbù¹£¦ÓCt‹OPrƒE^ÒoŠg™ĉIµžÛÅʹK…¤½phMŠü`o怆ŀ"],encodeOffsets:[[121740,32276]]},properties:{cp:[118.767413,32.041544],name:"江苏",childNum:1}},{id:"330000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@E^dQ]K"],["@@jX^j‡"],["@@sfŠbU‡"],["@@qP\\xz[ck"],["@@‘Rƒ¢‚FX}°[s_"],["@@Cbœ\\—}"],["@@e|v\\la{u"],["@@v~u}"],["@@QxÂF¯}"],["@@¹nŒvÞs¯o"],["@@rSkUEj"],["@@bi­ZŒP"],["@@p[}INf"],["@@À¿€"],["@@¹dnbŒ…"],["@@rSŸBnR"],["@@g~h}"],["@@FlEk"],["@@OdPc"],["@@v[u\\"],["@@FjâL~wyoo~›sµL–\\"],["@@¬e¹aNˆ"],["@@\\nÔ¡q]L³ë\\ÿ®ŒQ֎"],["@@ÊA­©[¬"],["@@KxŒv­"],["@@@hlIk]"],["@@pW{o||j"],["@@Md|_mC"],["@@¢…X£ÏylD¼XˆtH"],["@@hlÜ[LykAvyfw^Ež›¤"],["@@fp¤Mus“R"],["@@®_ma~•LÁ¬šZ"],["@@iM„xZ"],["@@ZcYd"],["@@Z~dOSo|A¿qZv"],["@@@`”EN¡v"],["@@|–TY{"],["@@@n@m"],["@@XWkCT\\"],["@@ºwšZRkĕWO¢"],["@@™X®±Grƪ\\ÔáXq{‹"],["@@ůTG°ĄLHm°UC‹"],["@@¤Ž€aÜx~}dtüGæţŎíĔcŖpMËВjē¢·ðĄÆMzˆjWKĎ¢Q¶˜À_꒔_Bı€i«pZ€gf€¤Nrq]§ĂN®«H±‡yƳí¾×ŸīàLłčŴǝĂíÀBŖÕªˆŠÁŖHŗʼnåqûõi¨hÜ·ƒñt»¹ýv_[«¸m‰YL¯‰Qª…mĉÅdMˆ•gÇjcº«•ęœ¬­K­´ƒB«Âącoċ\\xKd¡gěŧ«®á’[~ıxu·Å”KsËɏc¢Ù\\ĭƛëbf¹­ģSƒĜkáƉÔ­ĈZB{ŠaM‘µ‰fzʼnfåÂŧįƋǝÊĕġć£g³ne­ą»@­¦S®‚\\ßðCšh™iqªĭiAu‡A­µ”_W¥ƣO\\lċĢttC¨£t`ˆ™PZäuXßBs‡Ļyek€OđġĵHuXBšµ]׌‡­­\\›°®¬F¢¾pµ¼kŘó¬Wät’¸|@ž•L¨¸µr“ºù³Ù~§WI‹ŸZWŽ®’±Ð¨ÒÉx€`‰²pĜ•rOògtÁZ}þÙ]„’¡ŒŸFK‚wsPlU[}¦Rvn`hq¬\\”nQ´ĘRWb”‚_ rtČFI֊kŠŠĦPJ¶ÖÀÖJĈĄTĚòžC ²@Pú…Øzœ©PœCÈڜĒ±„hŖ‡l¬â~nm¨f©–iļ«m‡nt–u†ÖZÜÄj“ŠLŽ®E̜Fª²iÊxبžIÈhhst"],["@@o\\V’zRZ}y"],["@@†@°¡mۛGĕ¨§Ianá[ýƤjfæ‡ØL–•äGr™"]],encodeOffsets:[[[125592,31553]],[[125785,31436]],[[125729,31431]],[[125513,31380]],[[125223,30438]],[[125115,30114]],[[124815,29155]],[[124419,28746]],[[124095,28635]],[[124005,28609]],[[125e3,30713]],[[125111,30698]],[[125078,30682]],[[125150,30684]],[[124014,28103]],[[125008,31331]],[[125411,31468]],[[125329,31479]],[[125626,30916]],[[125417,30956]],[[125254,30976]],[[125199,30997]],[[125095,31058]],[[125083,30915]],[[124885,31015]],[[125218,30798]],[[124867,30838]],[[124755,30788]],[[124802,30809]],[[125267,30657]],[[125218,30578]],[[125200,30562]],[[124968,30474]],[[125167,30396]],[[124955,29879]],[[124714,29781]],[[124762,29462]],[[124325,28754]],[[123990,28459]],[[125366,31477]],[[125115,30363]],[[125369,31139]],[[122495,31878]],[[125329,30690]],[[125192,30787]]]},properties:{cp:[120.153576,30.287459],name:"浙江",childNum:45}},{id:"340000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@^iuLX^"],["@@‚e©Ehl"],["@@°ZÆëϵmkǀwÌÕæhºgBĝâqÙĊz›ÖgņtÀÁÊÆá’hEz|WzqD¹€Ÿ°E‡ŧl{ævÜcA`¤C`|´qžxIJkq^³³ŸGšµbƒíZ…¹qpa±ď OH—¦™Ħˆx¢„gPícOl_iCveaOjCh߸i݋bÛªCC¿€m„RV§¢A|t^iĠGÀtÚs–d]ĮÐDE¶zAb àiödK¡~H¸íæAžǿYƒ“j{ď¿‘™À½W—®£ChŒÃsiŒkkly]_teu[bFa‰Tig‡n{]Gqªo‹ĈMYá|·¥f¥—őaSÕė™NµñĞ«ImŒ_m¿Âa]uĜp …Z_§{Cƒäg¤°r[_Yj‰ÆOdý“[ŽI[á·¥“Q_n‡ùgL¾mv™ˊBÜƶĊJhšp“c¹˜O]iŠ]œ¥ jtsggJǧw×jÉ©±›EFˍ­‰Ki”ÛÃÕYv…s•ˆm¬njĻª•§emná}k«ŕˆƒgđ²Ù›DǤ›í¡ªOy›†×Où±@DŸñSęćăÕIÕ¿IµĥO‰‰jNÕËT¡¿tNæŇàåyķrĕq§ÄĩsWÆߎF¶žX®¿‰mŒ™w…RIޓfßoG‘³¾©uyH‘į{Ɓħ¯AFnuP…ÍÔzšŒV—dàôº^Ðæd´€‡oG¤{S‰¬ćxã}›ŧ×Kǥĩ«žÕOEзÖdÖsƘѨ[’Û^Xr¢¼˜§xvěƵ`K”§ tÒ´Cvlo¸fzŨð¾NY´ı~ÉĔē…ßúLÃϖ_ÈÏ|]ÂÏFl”g`bšežž€n¾¢pU‚h~ƴĖ¶_‚r sĄ~cž”ƈ]|r c~`¼{À{ȒiJjz`îÀT¥Û³…]’u}›f…ïQl{skl“oNdŸjŸäËzDvčoQŠďHI¦rb“tHĔ~BmlRš—V_„ħTLnñH±’DžœL‘¼L˜ªl§Ťa¸ŒĚlK²€\\RòvDcÎJbt[¤€D@®hh~kt°ǾzÖ@¾ªdb„YhüóZ ň¶vHrľ\\ʗJuxAT|dmÀO„‹[ÃԋG·ĚąĐlŪÚpSJ¨ĸˆLvÞcPæķŨŽ®mАˆálŸwKhïgA¢ųƩޖ¤OȜm’°ŒK´"]],encodeOffsets:[[[121722,32278]],[[119475,30423]],[[119168,35472]]]},properties:{cp:[117.283042,31.86119],name:"安徽",childNum:3}},{id:"350000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@“zht´‡]"],["@@aj^~ĆG—©O"],["@@ed¨„C}}i"],["@@@vˆPGsQ"],["@@‰sBz‚ddW]Q"],["@@SŽ¨Q“{"],["@@NŽVucW"],["@@qptBAq"],["@@‰’¸[mu"],["@@Q\\pD]_"],["@@jSwUadpF"],["@@eXª~ƒ•"],["@@AjvFso"],["@@fT–›_Çí\\Ÿ™—v|ba¦jZÆy€°"],["@@IjJi"],["@@wJI€ˆxš«¼AoNe{M­"],["@@K‰±¡Óˆ”ČäeZ"],["@@k¡¹Eh~c®wBk‹UplÀ¡I•~Māe£bN¨gZý¡a±Öcp©PhžI”Ÿ¢Qq…ÇGj‹|¥U™ g[Ky¬ŏ–v@OpˆtÉEŸF„\\@ åA¬ˆV{Xģ‰ĐBy…cpě…¼³Ăp·¤ƒ¥o“hqqÚ¡ŅLsƒ^ᗞ§qlŸÀhH¨MCe»åÇGD¥zPO£čÙkJA¼ß–ėu›ĕeûҍiÁŧSW¥˜QŠûŗ½ùěcݧSùĩąSWó«íęACµ›eR—åǃRCÒÇZÍ¢‹ź±^dlsŒtjD¸•‚ZpužÔâÒH¾oLUêÃÔjjēò´ĄW‚ƛ…^Ñ¥‹ĦŸ@Çò–ŠmŒƒOw¡õyJ†yD}¢ďÑÈġfŠZd–a©º²z£šN–ƒjD°Ötj¶¬ZSÎ~¾c°¶Ðm˜x‚O¸¢Pl´žSL|¥žA†ȪĖM’ņIJg®áIJČĒü` ŽQF‡¬h|ÓJ@zµ |ê³È ¸UÖŬŬÀEttĸr‚]€˜ðŽM¤ĶIJHtÏ A’†žĬkvsq‡^aÎbvŒd–™fÊòSD€´Z^’xPsÞrv‹ƞŀ˜jJd×ŘÉ ®A–ΦĤd€xĆqAŒ†ZR”ÀMźŒnĊ»ŒİÐZ— YX–æJŠyĊ²ˆ·¶q§·–K@·{s‘Xãô«lŗ¶»o½E¡­«¢±¨Yˆ®Ø‹¶^A™vWĶGĒĢžPlzfˆļŽtàAvWYãšO_‡¤sD§ssČġ[kƤPX¦Ž`¶“ž®ˆBBvĪjv©šjx[L¥àï[F…¼ÍË»ğV`«•Ip™}ccÅĥZE‹ãoP…´B@ŠD—¸m±“z«Ƴ—¿å³BRضˆœWlâþäą`“]Z£Tc— ĹGµ¶H™m@_©—kŒ‰¾xĨ‡ôȉðX«½đCIbćqK³Á‹Äš¬OAwã»aLʼn‡ËĥW[“ÂGI—ÂNxij¤D¢ŽîĎÎB§°_JœGsƒ¥E@…¤uć…P‘å†cuMuw¢BI¿‡]zG¹guĮck\\_"]],encodeOffsets:[[[123250,27563]],[[122541,27268]],[[123020,27189]],[[122916,27125]],[[122887,26845]],[[122808,26762]],[[122568,25912]],[[122778,26197]],[[122515,26757]],[[122816,26587]],[[123388,27005]],[[122450,26243]],[[122578,25962]],[[121255,25103]],[[120987,24903]],[[122339,25802]],[[121042,25093]],[[122439,26024]]]},properties:{cp:[119.306239,26.075302],name:"福建",childNum:18}},{id:"360000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@ĢĨƐgļˆ¼ÂMD~ņªe^\\^§„ý©j׍cZ†Ø¨zdÒa¶ˆlҍJŒìõ`oz÷@¤u޸´†ôęöY¼‰HČƶajlÞƩ¥éZ[”|h}^U Œ ¥p„ĄžƦO lt¸Æ €Q\\€ŠaÆ|CnÂOjt­ĚĤd’ÈŒF`’¶„@Ð딠¦ōҞ¨Sêv†HĢûXD®…QgėWiØPÞìºr¤dž€NĠ¢l–•ĄtZoœCƞÔºCxrpĠV®Ê{f_Y`_ƒeq’’®Aot`@o‚DXfkp¨|Šs¬\\D‘ÄSfè©Hn¬…^DhÆyøJh“ØxĢĀLʈ„ƠPżċĄwȠ̦G®ǒĤäTŠÆ~ĦwŠ«|TF¡Šn€c³Ïå¹]ĉđxe{ÎӐ†vOEm°BƂĨİ|G’vz½ª´€H’àp”eJ݆Qšxn‹ÀŠW­žEµàXÅĪt¨ÃĖrÄwÀFÎ|ňÓMå¼ibµ¯»åDT±m[“r«_gŽmQu~¥V\\OkxtL E¢‹ƒ‘Ú^~ýê‹Pó–qo슱_Êw§ÑªåƗā¼‹mĉŹ‹¿NQ“…YB‹ąrwģcÍ¥B•Ÿ­ŗÊcØiI—žƝĿuŒqtāwO]‘³YCñTeɕš‹caub͈]trlu€ī…B‘ПGsĵıN£ï—^ķqss¿FūūV՟·´Ç{éĈý‰ÿ›OEˆR_ŸđûIċâJh­ŅıN‘ȩĕB…¦K{Tk³¡OP·wn—µÏd¯}½TÍ«YiµÕsC¯„iM•¤™­•¦¯P|ÿUHv“he¥oFTu‰õ\\ŽOSs‹MòđƇiaºćXŸĊĵà·çhƃ÷ǜ{‘ígu^›đg’m[×zkKN‘¶Õ»lčÓ{XSƉv©_ÈëJbVk„ĔVÀ¤P¾ºÈMÖxlò~ªÚàGĂ¢B„±’ÌŒK˜y’áV‡¼Ã~­…`g›ŸsÙfI›Ƌlę¹e|–~udjˆuTlXµf`¿JdŠ[\\˜„L‚‘²"],encodeOffsets:[[116689,26234]]},properties:{cp:[115.892151,28.676493],name:"江西",childNum:1}},{id:"370000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@Xjd]{K"],["@@itbFHy"],["@@HlGk"],["@@T‚ŒGŸy"],["@@K¬˜•‹U"],["@@WdXc"],["@@PtOs"],["@@•LnXhc"],["@@ppVƒu]Or"],["@@cdzAUa"],["@@udRhnCI‡"],["@@ˆoIƒpR„"],["@@Ľč{fzƤî’Kš–ÎMĮ]†—ZFˆ½Y]â£ph’™š¶¨râøÀ†ÎǨ¤^ºÄ”Gzˆ~grĚĜlĞƄLĆdž¢Îo¦–cv“Kb€gr°Wh”mZp ˆL]LºcU‰Æ­n”żĤÌĒœbAnrOAœ´žȊcÀbƦUØrĆUÜøœĬƞ†š˜Ez„VL®öØBkŖÝĐĖ¹ŧ̄±ÀbÎɜnb²ĦhņBĖ›žįĦåXćì@L¯´ywƕCéõė ƿ¸‘lµ¾Z|†ZWyFYŸ¨Mf~C¿`€à_RÇzwƌfQnny´INoƬˆèôº|sT„JUš›‚L„îVj„ǎ¾Ē؍‚Dz²XPn±ŴPè¸ŔLƔÜƺ_T‘üÃĤBBċȉöA´fa„˜M¨{«M`‡¶d¡ô‰Ö°šmȰBÔjjŒ´PM|”c^d¤u•ƒ¤Û´Œä«ƢfPk¶Môlˆ]Lb„}su^ke{lC‘…M•rDŠÇ­]NÑFsmoõľH‰yGă{{çrnÓE‰‹ƕZGª¹Fj¢ïW…uøCǷ돡ąuhÛ¡^Kx•C`C\\bÅxì²ĝÝ¿_N‰īCȽĿåB¥¢·IŖÕy\\‡¹kx‡Ã£Č×GDyÕ¤ÁçFQ¡„KtŵƋ]CgÏAùSed‡cÚź—ŠuYfƒyMmhUWpSyGwMPqŀ—›Á¼zK›¶†G•­Y§Ëƒ@–´śÇµƕBmœ@Io‚g——Z¯u‹TMx}C‘‰VK‚ï{éƵP—™_K«™pÛÙqċtkkù]gŽ‹Tğwo•ɁsMõ³ă‡AN£™MRkmEʕč™ÛbMjÝGu…IZ™—GPģ‡ãħE[iµBEuŸDPԛ~ª¼ętŠœ]ŒûG§€¡QMsğNPŏįzs£Ug{đJĿļā³]ç«Qr~¥CƎÑ^n¶ÆéÎR~Ż¸Y’I“] P‰umŝrƿ›‰›Iā‹[x‰edz‹L‘¯v¯s¬ÁY…~}…ťuŁŒg›ƋpÝĄ_ņī¶ÏSR´ÁP~ž¿Cyžċßdwk´Ss•X|t‰`Ä Èð€AªìÎT°¦Dd–€a^lĎDĶÚY°Ž`ĪŴǒˆ”àŠv\\ebŒZH„ŖR¬ŢƱùęO•ÑM­³FۃWp[ƒ"]],encodeOffsets:[[[123806,39303]],[[123821,39266]],[[123742,39256]],[[123702,39203]],[[123649,39066]],[[123847,38933]],[[123580,38839]],[[123894,37288]],[[123043,36624]],[[123344,38676]],[[123522,38857]],[[123628,38858]],[[118260,36742]]]},properties:{cp:[117.000923,36.675807],name:"山东",childNum:13}},{id:"410000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@•ýL™ùµP³swIÓxcŢĞð†´E®žÚPt†ĴXØx¶˜@«ŕŕQGƒ‹Yfa[şu“ßǩ™đš_X³ijÕčC]kbc•¥CS¯ëÍB©÷‹–³­Siˆ_}m˜YTtž³xlàcȂzÀD}ÂOQ³ÐTĨ¯†ƗòËŖ[hœł‹Ŧv~††}ÂZž«¤lPǕ£ªÝŴÅR§ØnhcŒtâk‡nύ­ľŹUÓÝdKuķ‡I§oTũÙďkęĆH¸ÓŒ\\ăŒ¿PcnS{wBIvɘĽ[GqµuŸŇôYgûƒZcaŽ©@½Õǽys¯}lgg@­C\\£as€IdÍuCQñ[L±ęk·‹ţb¨©kK—’»›KC²‘òGKmĨS`ƒ˜UQ™nk}AGē”sqaJ¥ĐGR‰ĎpCuÌy ã iMc”plk|tRk†ðœev~^‘´†¦ÜŽSí¿_iyjI|ȑ|¿_»d}qŸ^{“Ƈdă}Ÿtqµ`Ƴĕg}V¡om½fa™Ço³TTj¥„tĠ—Ry”K{ùÓjuµ{t}uËR‘iŸvGŠçJFjµŠÍyqΘàQÂFewixGw½Yŷpµú³XU›½ġy™łå‰kÚwZXˆ·l„¢Á¢K”zO„Λ΀jc¼htoDHr…|­J“½}JZ_¯iPq{tę½ĕ¦Zpĵø«kQ…Ťƒ]MÛfaQpě±ǽ¾]u­Fu‹÷nƒ™čįADp}AjmcEǒaª³o³ÆÍSƇĈÙDIzˑ赟^ˆKLœ—i—Þñ€[œƒaA²zz‰Ì÷Dœ|[šíijgf‚ÕÞd®|`ƒĆ~„oĠƑô³Ŋ‘D×°¯CsŠøÀ«ì‰UMhTº¨¸ǡîS–Ô„DruÂÇZ•ÖEŽ’vPZ„žW”~؋ÐtĄE¢¦Ðy¸bŠô´oŬ¬Ž²Ês~€€]®tªašpŎJ¨Öº„_ŠŔ–`’Ŗ^Ѝ\\Ĝu–”~m²Ƹ›¸fW‰ĦrƔ}Î^gjdfÔ¡J}\\n C˜¦þWxªJRÔŠu¬ĨĨmF†dM{\\d\\ŠYÊ¢ú@@¦ª²SŠÜsC–}fNècbpRmlØ^g„d¢aÒ¢CZˆZxvÆ¶N¿’¢T@€uCœ¬^ĊðÄn|žlGl’™Rjsp¢ED}€Fio~ÔNŽ‹„~zkĘHVsDzßjƒŬŒŠŢ`Pûàl¢˜\\ÀœEhŽİgÞē X¼Pk–„|m"],encodeOffsets:[[118256,37017]]},properties:{cp:[113.665412,34.757975],name:"河南",childNum:1}},{id:"420000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@AB‚"],["@@lskt"],["@@¾«}{ra®pîÃ\\™›{øCŠËyyB±„b\\›ò˜Ý˜jK›‡L ]ĎĽÌ’JyÚCƈćÎT´Å´pb©È‘dFin~BCo°BĎĚømvŒ®E^vǾ½Ĝ²Ro‚bÜeNŽ„^ĺ£R†¬lĶ÷YoĖ¥Ě¾|sOr°jY`~I”¾®I†{GqpCgyl{‡£œÍƒÍyPL“¡ƒ¡¸kW‡xYlÙ抚ŁĢzœ¾žV´W¶ùŸo¾ZHxjwfx„GNÁ•³Xéæl¶‰EièIH‰ u’jÌQ~v|sv¶Ôi|ú¢Fh˜Qsğ¦ƒSiŠBg™ÐE^ÁÐ{–čnOÂȞUÎóĔ†ÊēIJ}Z³½Mŧïeyp·uk³DsѨŸL“¶_œÅuèw»—€¡WqÜ]\\‘Ò§tƗcÕ¸ÕFÏǝĉăxŻČƟO‡ƒKÉġÿ×wg”÷IÅzCg†]m«ªGeçÃTC’«[‰t§{loWeC@ps_Bp‘­r‘„f_``Z|ei¡—oċMqow€¹DƝӛDYpûs•–‹Ykıǃ}s¥ç³[§ŸcYŠ§HK„«Qy‰]¢“wwö€¸ïx¼ņ¾Xv®ÇÀµRĠЋžHMž±cÏd„ƒǍũȅȷ±DSyúĝ£ŤĀàtÖÿï[îb\\}pĭÉI±Ñy…¿³x¯N‰o‰|¹H™ÏÛm‹júË~Tš•u˜ęjCöAwě¬R’đl¯ Ñb­‰ŇT†Ŀ_[Œ‘IčĄʿnM¦ğ\\É[T·™k¹œ©oĕ@A¾w•ya¥Y\\¥Âaz¯ãÁ¡k¥ne£Ûw†E©Êō¶˓uoj_Uƒ¡cF¹­[Wv“P©w—huÕyBF“ƒ`R‹qJUw\\i¡{jŸŸEPïÿ½fć…QÑÀQ{ž‚°‡fLԁ~wXg—ītêݾ–ĺ‘Hdˆ³fJd]‹HJ²…E€ƒoU¥†HhwQsƐ»Xmg±çve›]Dm͂PˆoCc¾‹_h”–høYrŊU¶eD°Č_N~øĹĚ·`z’]Äþp¼…äÌQŒv\\rCŒé¾TnkžŐڀÜa‡“¼ÝƆĢ¶Ûo…d…ĔňТJq’Pb ¾|JŒ¾fXŠƐîĨ_Z¯À}úƲ‹N_ĒĊ^„‘ĈaŐyp»CÇĕKŠšñL³ŠġMŒ²wrIÒŭxjb[œžn«øœ˜—æˆàƒ ^²­h¯Ú€ŐªÞ¸€Y²ĒVø}Ā^İ™´‚LŠÚm„¥ÀJÞ{JVŒųÞŃx×sxxƈē ģMř–ÚðòIf–Ċ“Œ\\Ʈ±ŒdʧĘD†vČ_Àæ~DŒċ´A®µ†¨ØLV¦êHÒ¤"]],encodeOffsets:[[[113712,34e3]],[[115612,30507]],[[113649,34054]]]},properties:{cp:[114.298572,30.584355],name:"湖北",childNum:3}},{id:"430000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@—n„FTs"],["@@ßÅÆችÔXr—†CO™“…ËR‘ïÿĩ­TooQyšÓ[‹ŅBE¬–ÎÓXa„į§Ã¸G °ITxp‰úxÚij¥Ïš–Ģ¾ŠedžÄ©ĸG…œàGh‚€M¤–Â_U}Ċ}¢pczfŠþg¤€”ÇòAV‘‹M"],["@@©K—ƒA·³CQ±Á«³BUŠƑ¹AŠtćOw™D]ŒJiØSm¯b£‘ylƒ›X…HËѱH•«–‘C^õľA–Å§¤É¥„ïyuǙuA¢^{ÌC´­¦ŷJ£^[†“ª¿‡ĕ~•Ƈ…•N… skóā‡¹¿€ï]ă~÷O§­@—Vm¡‹Qđ¦¢Ĥ{ºjԏŽŒª¥nf´•~ÕoŸž×Ûą‹MąıuZœmZcÒ IJĪ²SÊDŽŶ¨ƚƒ’CÖŎªQؼrŭŽ­«}NÏürʬŒmjr€@ĘrTW ­SsdHzƓ^ÇÂyUi¯DÅYlŹu{hTœ}mĉ–¹¥ě‰Dÿë©ıÓ[Oº£ž“¥ót€ł¹MՄžƪƒ`Pš…Di–ÛUŠ¾Å‌ìˆU’ñB“È£ýhe‰dy¡oċ€`pfmjP~‚kZa…ZsÐd°wj§ƒ@€Ĵ®w~^‚kÀÅKvNmX\\¨a“”сqvíó¿F„¤¡@ũÑVw}S@j}¾«pĂr–ªg àÀ²NJ¶¶Dô…K‚|^ª†Ž°LX¾ŴäPĪ±œ£EXd›”^¶›IJÞܓ~‘u¸ǔ˜Ž›MRhsR…e†`ÄofIÔ\\Ø  i”ćymnú¨cj ¢»–GČìƊÿШXeĈĀ¾Oð Fi ¢|[jVxrIQŒ„_E”zAN¦zLU`œcªx”OTu RLÄ¢dV„i`p˔vŎµªÉžF~ƒØ€d¢ºgİàw¸Áb[¦Zb¦–z½xBĖ@ªpº›šlS¸Ö\\Ĕ[N¥ˀmĎă’J\\‹ŀ`€…ňSڊĖÁĐiO“Ĝ«BxDõĚiv—ž–S™Ì}iùŒžÜnšÐºGŠ{Šp°M´w†ÀÒzJ²ò¨ oTçüöoÛÿñŽőФ‚ùTz²CȆȸǎŪƒƑÐc°dPÎŸğ˶[Ƚu¯½WM¡­Éž“’B·rížnZŸÒ `‡¨GA¾\\pē˜XhÆRC­üWGġu…T靧Ŏѝ©ò³I±³}_‘‹EÃħg®ęisÁPDmÅ{‰b[Rşs·€kPŸŽƥƒóRo”O‹ŸVŸ~]{g\\“êYƪ¦kÝbiċƵŠGZ»Ěõ…ó·³vŝž£ø@pyö_‹ëŽIkѵ‡bcѧy…×dY؎ªiþž¨ƒ[]f]Ņ©C}ÁN‡»hĻħƏ’ĩ"]],encodeOffsets:[[[115640,30489]],[[112543,27312]],[[116690,26230]]]},properties:{cp:[112.982279,28.19409],name:"湖南",childNum:3}},{id:"440000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@QdˆAua"],["@@ƒlxDLo"],["@@sbhNLo"],["@@Ă āŸ"],["@@WltO[["],["@@Krœ]S"],["@@e„„I]y"],["@@I|„Mym"],["@@ƒÛ³LSŒž¼Y"],["@@nvºB–ëui©`¾"],["@@zdšÛ›Jw®"],["@@†°…¯"],["@@a yAª¸ËJIx،@€ĀHAmßV¡o•fu•o"],["@@šs‰ŗÃÔėAƁ›ZšÄ ~°ČP‚‹äh"],["@@‹¶Ý’Ì‚vmĞh­ı‡Q"],["@@HœŠdSjĒ¢D}war…“u«ZqadYM"],["@@elŒ\\LqqU"],["@@~rMo\\"],["@@f„^ƒC"],["@@øPªoj÷ÍÝħXČx”°Q¨ıXNv"],["@@gÇƳˆŽˆ”oˆŠˆ[~tly"],["@@E–ÆC¿‘"],["@@OŽP"],["@@w‹†đóg‰™ĝ—[³‹¡VÙæÅöM̳¹pÁaËýý©D©Ü“JŹƕģGą¤{Ùū…ǘO²«BƱéA—Ò‰ĥ‡¡«BhlmtÃPµyU¯uc“d·w_bŝcīímGOŽ|KP’ȏ‡ŹãŝIŕŭŕ@Óoo¿ē‹±ß}Ž…ŭ‚ŸIJWÈCőâUâǙI›ğʼn©I›ijEׅÁ”³Aó›wXJþ±ÌŒÜӔĨ£L]ĈÙƺZǾĆĖMĸĤfŒÎĵl•ŨnȈ‘ĐtF”Š–FĤ–‚êk¶œ^k°f¶gŠŽœ}®Fa˜f`vXŲxl˜„¦–ÔÁ²¬ÐŸ¦pqÊ̲ˆi€XŸØRDÎ}†Ä@ZĠ’s„x®AR~®ETtĄZ†–ƈfŠŠHâÒÐA†µ\\S¸„^wĖkRzŠalŽŜ|E¨ÈNĀňZTŒ’pBh£\\ŒĎƀuXĖtKL–¶G|Ž»ĺEļĞ~ÜĢÛĊrˆO˜Ùîvd]nˆ¬VœÊĜ°R֟pM††–‚ƂªFbwžEÀˆ˜©Œž\\…¤]ŸI®¥D³|ˎ]CöAŤ¦…æ’´¥¸Lv¼€•¢ĽBaô–F~—š®²GÌҐEY„„œzk¤’°ahlV՞I^‹šCxĈPŽsB‰ƒºV‰¸@¾ªR²ĨN]´_eavSi‡vc•}p}Đ¼ƌkJœÚe thœ†_¸ ºx±ò_xN›Ë‹²‘@ƒă¡ßH©Ùñ}wkNÕ¹ÇO½¿£ĕ]ly_WìIžÇª`ŠuTÅxYĒÖ¼k֞’µ‚MžjJÚwn\\h‘œĒv]îh|’È›Ƅøègž¸Ķß ĉĈWb¹ƀdéʌNTtP[ŠöSvrCZžžaGuœbo´ŖÒÇА~¡zCI…özx¢„Pn‹•‰Èñ @ŒĥÒ¦†]ƞŠV}³ăĔñiiÄÓVépKG½Ä‘ÓávYo–C·sit‹iaÀy„ŧΡÈYDÑům}‰ý|m[węõĉZÅxUO}÷N¹³ĉo_qtă“qwµŁYلǝŕ¹tïÛUïmRCº…ˆĭ|µ›ÕÊK™½R‘ē ó]‘–GªęAx–»HO£|ām‡¡diď×YïYWªʼnOeÚtĐ«zđ¹T…ā‡úE™á²\\‹ķÍ}jYàÙÆſ¿Çdğ·ùTßÇţʄ¡XgWÀLJğ·¿ÃˆOj YÇ÷Qě‹i"]],encodeOffsets:[[[117381,22988]],[[116552,22934]],[[116790,22617]],[[116973,22545]],[[116444,22536]],[[116931,22515]],[[116496,22490]],[[116453,22449]],[[113301,21439]],[[118726,21604]],[[118709,21486]],[[113210,20816]],[[115482,22082]],[[113171,21585]],[[113199,21590]],[[115232,22102]],[[115739,22373]],[[115134,22184]],[[113056,21175]],[[119573,21271]],[[119957,24020]],[[115859,22356]],[[116561,22649]],[[116285,22746]]]},properties:{cp:[113.280637,23.125178],name:"广东",childNum:24}},{id:"450000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@H– TQ§•A"],["@@ĨʪƒLƒƊDÎĹĐCǦė¸zÚGn£¾›rªŀÜt¬@֛ڈSx~øOŒ˜ŶÐÂæȠ\\„ÈÜObĖw^oބLf¬°bI lTØB̈F£Ć¹gñĤaY“t¿¤VSñœK¸¤nM†¼‚JE±„½¸šŠño‹ÜCƆæĪ^ŠĚQÖ¦^‡ˆˆf´Q†üÜʝz¯šlzUĺš@쇀p¶n]sxtx¶@„~ÒĂJb©gk‚{°‚~c°`ԙ¬rV\\“la¼¤ôá`¯¹LC†ÆbŒxEræO‚v[H­˜„[~|aB£ÖsºdAĐzNÂðsŽÞƔ…Ĥªbƒ–ab`ho¡³F«èVloŽ¤™ÔRzpp®SŽĪº¨ÖƒºN…ij„d`’a”¦¤F³ºDÎńĀìŠCžĜº¦Ċ•~nS›|gźvZkCÆj°zVÈÁƔ]LÊFZg…čP­kini«‹qǀcz͔Y®¬Ů»qR×ō©DՄ‘§ƙǃŵTÉĩ±ŸıdÑnYY›IJvNĆƌØÜ Öp–}e³¦m‹©iÓ|¹Ÿħņ›|ª¦QF¢Â¬ʖovg¿em‡^ucà÷gՎuŒíÙćĝ}FĻ¼Ĺ{µHK•sLSđƃr‹č¤[Ag‘oS‹ŇYMÿ§Ç{Fśbky‰lQxĕƒ]T·¶[B…ÑÏGáşşƇe€…•ăYSs­FQ}­Bƒw‘tYğÃ@~…C̀Q ×W‡j˱rÉ¥oÏ ±«ÓÂ¥•ƒ€k—ŽwWűŒmcih³K›~‰µh¯e]lµ›él•Eģ‰•E“ďs‡’mǖŧē`ãògK_ÛsUʝ“ćğ¶hŒöŒO¤Ǜn³Žc‘`¡y‹¦C‘ez€YŠwa™–‘[ďĵűMę§]X˜Î_‚훘Û]é’ÛUćİÕBƣ±…dƒy¹T^džûÅÑŦ·‡PĻþÙ`K€¦˜…¢ÍeœĥR¿Œ³£[~Œäu¼dl‰t‚†W¸oRM¢ď\\zœ}Æzdvň–{ÎXF¶°Â_„ÒÂÏL©Ö•TmuŸ¼ãl‰›īkiqéfA„·Êµ\\őDc¥ÝF“y›Ôć˜c€űH_hL܋êĺШc}rn`½„Ì@¸¶ªVLŒŠhŒ‹\\•Ţĺk~ŽĠið°|gŒtTĭĸ^x‘vK˜VGréAé‘bUu›MJ‰VÃO¡…qĂXËS‰ģãlýàŸ_ju‡YÛÒB†œG^˜é֊¶§ŽƒEG”ÅzěƒƯ¤Ek‡N[kdåucé¬dnYpAyČ{`]þ¯T’bÜÈk‚¡Ġ•vŒàh„ÂƄ¢J"]],encodeOffsets:[[[111707,21520]],[[107619,25527]]]},properties:{cp:[108.320004,22.82402],name:"广西",childNum:2}},{id:"460000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@š¦Ŝil¢”XƦ‘ƞò–ïè§ŞCêɕrŧůÇąĻõ™·ĉ³œ̅kÇm@ċȧƒŧĥ‰Ľʉ­ƅſ“ȓÒ˦ŝE}ºƑ[ÍĜȋ gÎfǐÏĤ¨êƺ\\Ɔ¸ĠĎvʄȀœÐ¾jNðĀÒRŒšZdž™zÐŘΰH¨Ƣb²_Ġ "],encodeOffsets:[[112750,20508]]},properties:{cp:[110.33119,20.031971],name:"海南",childNum:1}},{id:"510000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@LqKr"],["@@Š[ĻéV£ž_ţġñpG •réÏ·~ąSfy×͂·ºſƽiÍıƣıĻmHH}siaX@iÇ°ÁÃ×t«ƒ­Tƒ¤J–JJŒyJ•ÈŠ`Ohߦ¡uËhIyCjmÿw…ZG……Ti‹SˆsO‰žB²ŸfNmsPaˆ{M{ŠõE‘^Hj}gYpaeuž¯‘oáwHjÁ½M¡pM“–uå‡mni{fk”\\oƒÎqCw†EZ¼K›ĝŠƒAy{m÷L‡wO×SimRI¯rK™õBS«sFe‡]fµ¢óY_ÆPRcue°Cbo׌bd£ŌIHgtrnyPt¦foaXďx›lBowz‹_{ÊéWiêE„GhܸºuFĈIxf®Ž•Y½ĀǙ]¤EyŸF²ċ’w¸¿@g¢§RGv»–áŸW`ÃĵJwi]t¥wO­½a[׈]`Ãi­üL€¦LabbTÀå’c}Íh™Æhˆ‹®BH€î|Ék­¤S†y£„ia©taį·Ɖ`ō¥Uh“O…ƒĝLk}©Fos‰´›Jm„µlŁu—…ø–nÑJWΪ–YÀïAetTžŅ‚ӍG™Ë«bo‰{ıwodƟ½ƒžOġܑµxàNÖ¾P²§HKv¾–]|•B‡ÆåoZ`¡Ø`ÀmºĠ~ÌЧnDž¿¤]wğ@sƒ‰rğu‰~‘Io”[é±¹ ¿žſđӉ@q‹gˆ¹zƱřaí°KtǤV»Ã[ĩǭƑ^ÇÓ@ỗs›Zϕ‹œÅĭ€Ƌ•ěpwDóÖሯneQˌq·•GCœýS]xŸ·ý‹q³•O՜Œ¶Qzßti{ř‰áÍÇWŝŭñzÇW‹pç¿JŒ™‚Xœĩè½cŒF–ÂLiVjx}\\N†ŇĖ¥Ge–“JA¼ÄHfÈu~¸Æ«dE³ÉMA|b˜Ò…˜ćhG¬CM‚õŠ„ƤąAvƒüV€éŀ‰_V̳ĐwQj´·ZeÈÁ¨X´Æ¡Qu·»Ÿ“˜ÕZ³ġqDo‰y`L¬gdp°şŠp¦ėìÅĮZŽ°Iä”h‚‘ˆzŠĵœf²å ›ĚрKp‹IN|‹„Ñz]ń……·FU×é»R³™MƒÉ»GM«€ki€™ér™}Ã`¹ăÞmȝnÁîRǀ³ĜoİzŔwǶVÚ£À]ɜ»ĆlƂ²Ġ…þTº·àUȞÏʦ¶†I’«dĽĢdĬ¿–»Ĕ׊h\\c¬†ä²GêëĤł¥ÀǿżÃÆMº}BÕĢyFVvw–ˆxBèĻĒ©Ĉ“tCĢɽŠȣ¦āæ·HĽî“ôNԓ~^¤Ɗœu„œ^s¼{TA¼ø°¢İªDè¾Ň¶ÝJ‘®Z´ğ~Sn|ªWÚ©òzPOȸ‚bð¢|‹øĞŠŒœŒQìÛÐ@Ğ™ǎRS¤Á§d…i“´ezÝúØã]Hq„kIŸþËQǦÃsǤ[E¬ÉŪÍxXƒ·ÖƁİlƞ¹ª¹|XÊwn‘ÆƄmÀêErĒtD®ċæcQƒ”E®³^ĭ¥©l}äQto˜ŖÜqƎkµ–„ªÔĻĴ¡@Ċ°B²Èw^^RsºTĀ£ŚæœQP‘JvÄz„^Đ¹Æ¯fLà´GC²‘dt˜­ĀRt¼¤ĦOðğfÔðDŨŁĞƘïžPȆ®âbMüÀXZ ¸£@Ś›»»QÉ­™]d“sÖ×_͖_ÌêŮPrĔĐÕGĂeZÜîĘqBhtO ¤tE[h|Y‹Ô‚ZśÎs´xº±UŒ’ñˆt|O’ĩĠºNbgþŠJy^dÂY Į„]Řz¦gC‚³€R`ĀŠz’¢AjŒ¸CL„¤RÆ»@­Ŏk\\Ç´£YW}z@Z}‰Ã¶“oû¶]´^N‡Ò}èN‚ª–P˜Íy¹`S°´†ATe€VamdUĐwʄvĮÕ\\ƒu‹Æŗ¨Yp¹àZÂm™Wh{á„}WØǍ•Éüw™ga§áCNęÎ[ĀÕĪgÖɪX˜øx¬½Ů¦¦[€—„NΆL€ÜUÖ´òrÙŠxR^–†J˜k„ijnDX{Uƒ~ET{ļº¦PZc”jF²Ė@Žp˜g€ˆ¨“B{ƒu¨ŦyhoÚD®¯¢˜ WòàFΤ¨GDäz¦kŮPœġq˚¥À]€Ÿ˜eŽâÚ´ªKxī„Pˆ—Ö|æ[xäJÞĥ‚s’NÖ½ž€I†¬nĨY´®Ð—ƐŠ€mD™ŝuäđđEb…e’e_™v¡}ìęNJē}q”É埁T¯µRs¡M@}ůa†a­¯wvƉåZwž\\Z{åû^›"]],encodeOffsets:[[[108815,30935]],[[110617,31811]]]},properties:{cp:[104.065735,30.659462],name:"四川",childNum:2}},{id:"520000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@†G\\†lY£‘in"],["@@q‚|ˆ‚mc¯tχVSÎ"],["@@hÑ£Is‡NgßH†›HªķÃh_¹ƒ¡ĝħń¦uيùŽgS¯JHŸ|sÝÅtÁïyMDč»eÕtA¤{b\\}—ƒG®u\\åPFq‹wÅaD…žK°ºâ_£ùbµ”mÁ‹ÛœĹM[q|hlaªāI}тƒµ@swtwm^oµˆD鼊yV™ky°ÉžûÛR…³‚‡eˆ‡¥]RՋěħ[ƅåÛDpŒ”J„iV™™‰ÂF²I…»mN·£›LbÒYb—WsÀbŽ™pki™TZĄă¶HŒq`……ĥ_JŸ¯ae«ƒKpÝx]aĕÛPƒÇȟ[ÁåŵÏő—÷Pw}‡TœÙ@Õs«ĿÛq©½œm¤ÙH·yǥĘĉBµĨÕnđ]K„©„œá‹ŸG纍§Õßg‡ǗĦTèƤƺ{¶ÉHÎd¾ŚÊ·OÐjXWrãLyzÉAL¾ę¢bĶėy_qMĔąro¼hĊžw¶øV¤w”²Ĉ]ʚKx|`ź¦ÂÈdr„cȁbe¸›`I¼čTF´¼Óýȃr¹ÍJ©k_șl³´_pН`oÒhŽ¶pa‚^ÓĔ}D»^Xyœ`d˜[Kv…JPhèhCrĂĚÂ^Êƌ wˆZL­Ġ£šÁbrzOIl’MM”ĪŐžËr×ÎeŦŽtw|Œ¢mKjSǘňĂStÎŦEtqFT†¾†E쬬ôxÌO¢Ÿ KŠ³ŀºäY†„”PVgŎ¦Ŋm޼VZwVlŒ„z¤…ž£Tl®ctĽÚó{G­A‡ŒÇgeš~Αd¿æaSba¥KKûj®_ć^\\ؾbP®¦x^sxjĶI_Ä X‚⼕Hu¨Qh¡À@Ëô}Ž±žGNìĎlT¸ˆ…`V~R°tbÕĊ`¸úÛtπFDu€[ƒMfqGH·¥yA‰ztMFe|R‚_Gk†ChZeÚ°to˜v`x‹b„ŒDnÐ{E}šZ˜è€x—†NEފREn˜[Pv@{~rĆAB§‚EO¿|UZ~ì„Uf¨J²ĂÝƀ‚sª–B`„s¶œfvö¦ŠÕ~dÔq¨¸º»uù[[§´sb¤¢zþFœ¢Æ…Àhˆ™ÂˆW\\ıŽËI݊o±ĭŠ£þˆÊs}¡R]ŒěƒD‚g´VG¢‚j±®è†ºÃmpU[Á›‘Œëº°r›ÜbNu¸}Žº¼‡`ni”ºÔXĄ¤¼Ôdaµ€Á_À…†ftQQgœR—‘·Ǔ’v”}Ýלĵ]µœ“Wc¤F²›OĩųãW½¯K‚©…]€{†LóµCIµ±Mß¿hŸ•©āq¬o‚½ž~@i~TUxŪÒ¢@ƒ£ÀEîôruń‚”“‚b[§nWuMÆLl¿]x}ij­€½"]],encodeOffsets:[[[112158,27383]],[[112105,27474]],[[112095,27476]]]},properties:{cp:[106.713478,26.578343],name:"贵州",childNum:3}},{id:"530000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@[„ùx½}ÑRH‘YīĺûsÍn‘iEoã½Ya²ė{c¬ĝg•ĂsA•ØÅwď‚õzFjw}—«Dx¿}UũlŸê™@•HÅ­F‰¨ÇoJ´Ónũuą¡Ã¢pÒŌ“Ø TF²‚xa²ËX€‚cʋlHîAßËŁkŻƑŷÉ©h™W­æßU‡“Ës¡¦}•teèƶStǀÇ}Fd£j‹ĈZĆÆ‹¤T‚č\\Dƒ}O÷š£Uˆ§~ŃG™‚åŃDĝ¸œTsd¶¶Bªš¤u¢ŌĎo~t¾ÍŶÒtD¦Ú„iôö‰€z›ØX²ghįh½Û±¯€ÿm·zR¦Ɵ`ªŊÃh¢rOԍ´£Ym¼èêf¯ŪĽn„†cÚbŒw\\zlvWžªâˆ ¦g–mĿBş£¢ƹřbĥkǫßeeZkÙIKueT»sVesb‘aĕ  ¶®dNœĄÄpªyŽ¼—„³BE˜®l‡ŽGœŭCœǶwêżĔÂe„pÍÀQƞpC„–¼ŲÈ­AÎô¶R„ä’Q^Øu¬°š_Èôc´¹ò¨P΢hlϦ´Ħ“Æ´sâDŽŲPnÊD^¯°’Upv†}®BP̪–jǬx–Söwlfòªv€qĸ|`H€­viļ€ndĜ­Ćhň•‚em·FyށqóžSį¯‘³X_ĞçêtryvL¤§z„¦c¦¥jnŞk˜ˆlD¤øz½ĜàžĂŧMÅ|áƆàÊcðÂF܎‚áŢ¥\\\\º™İøÒÐJĴ‡„îD¦zK²ǏÎEh~’CD­hMn^ÌöÄ©ČZÀžaü„fɭyœpį´ěFűk]Ôě¢qlÅĆÙa¶~Äqššê€ljN¬¼H„ÊšNQ´ê¼VظE††^ŃÒyŒƒM{ŒJLoÒœęæŸe±Ķ›y‰’‡gã“¯JYÆĭĘëo¥Š‰o¯hcK«z_pŠrC´ĢÖY”—¼ v¸¢RŽÅW³Â§fǸYi³xR´ďUˊ`êĿU„û€uĆBƒƣö‰N€DH«Ĉg†——Ñ‚aB{ÊNF´¬c·Åv}eÇÃGB»”If•¦HňĕM…~[iwjUÁKE•Ž‹¾dĪçW›šI‹èÀŒoÈXòyŞŮÈXâÎŚŠj|àsRy‹µÖ›–Pr´þŒ ¸^wþTDŔ–Hr¸‹žRÌmf‡żÕâCôox–ĜƌÆĮŒ›Ð–œY˜tâŦÔ@]ÈǮƒ\\Ī¼Ä£UsȯLbîƲŚºyh‡rŒŠ@ĒԝƀŸÀ²º\\êp“’JŠ}ĠvŠqt„Ġ@^xÀ£È†¨mËÏğ}n¹_¿¢×Y_æpˆÅ–A^{½•Lu¨GO±Õ½ßM¶w’ÁĢۂP‚›Ƣ¼pcIJxŠ|ap̬HšÐŒŊSfsðBZ¿©“XÏÒK•k†÷Eû¿‰S…rEFsÕūk”óVǥʼniTL‚¡n{‹uxţÏh™ôŝ¬ğōN“‘NJkyPaq™Âğ¤K®‡YŸxÉƋÁ]āęDqçgOg†ILu—\\_gz—]W¼ž~CÔē]bµogpў_oď`´³Țkl`IªºÎȄqÔþž»E³ĎSJ»œ_f·‚adÇqƒÇc¥Á_Źw{™L^ɱćx“U£µ÷xgĉp»ĆqNē`rĘzaĵĚ¡K½ÊBzyäKXqiWPÏɸ½řÍcÊG|µƕƣG˛÷Ÿk°_^ý|_zċBZocmø¯hhcæ\\lˆMFlư£Ĝ„ÆyH“„F¨‰µêÕ]—›HA…àӄ^it `þßäkŠĤÎT~Wlÿ¨„ÔPzUC–NVv [jâôDôď[}ž‰z¿–msSh‹¯{jïğl}šĹ[–őŒ‰gK‹©U·µË@¾ƒm_~q¡f¹…ÅË^»‘f³ø}Q•„¡Ö˳gͱ^ǁ…\\ëÃA_—¿bW›Ï[¶ƛ鏝£F{īZgm@|kHǭƁć¦UĔťƒ×ë}ǝƒeďºȡȘÏíBə£āĘPªij¶“ʼnÿ‡y©n‰ď£G¹¡I›Š±LÉĺÑdĉ܇W¥˜‰}g˜Á†{aqÃ¥aŠıęÏZ—ï`"],encodeOffsets:[[104636,22969]]},properties:{cp:[102.712251,25.040609],name:"云南",childNum:1}},{id:"540000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@hžľxŽŖ‰xƒÒVŽ†ºÅâAĪÝȆµę¯Ňa±r_w~uSÕň‘qOj]ɄQ…£Z……UDûoY’»©M[‹L¼qãË{V͕çWViŽ]ë©Ä÷àyƛh›ÚU°ŒŒa”d„cQƒ~Mx¥™cc¡ÙaSyF—ցk­ŒuRýq¿Ôµ•QĽ³aG{¿FµëªéĜÿª@¬·–K‰·àariĕĀ«V»Ŷ™Ĵū˜gèLǴŇƶaf‹tŒèBŚ£^Šâ†ǐÝ®–šM¦ÁǞÿ¬LhŸŽJ¾óƾƺcxw‹f]Y…´ƒ¦|œQLn°aœdĊ…œ\\¨o’œǀÍŎœ´ĩĀd`tÊQŞŕ|‚¨C^©œĈ¦„¦ÎJĊ{ŽëĎjª²rЉšl`¼Ą[t|¦St辉PŒÜK¸€d˜Ƅı]s¤—î_v¹ÎVòŦj˜£Əsc—¬_Ğ´|Ł˜¦AvŽ¦w`ăaÝaa­¢e¤ı²©ªSªšÈMĄwžÉØŔì@T‘¤—Ę™\\õª@”þo´­xA s”ÂtŎKzó´ÇĊµ¢rž^nĊ­Æ¬×üGž¢‚³ {âĊ]š™G‚~bÀgVjzlhǶf€žOšfdŠ‰ªB]pj„•TO–tĊ‚n¤}®¦ƒČ¥d¢¼»ddš”Y¼Žt—¢eȤJ¤}Ǿ¡°§¤AГlc@ĝ”sªćļđAç‡wx•UuzEÖġ~AN¹ÄÅȀŻ¦¿ģŁéì±H…ãd«g[؉¼ēÀ•cīľġ¬cJ‘µ…ÐʥVȝ¸ßS¹†ý±ğkƁ¼ą^ɛ¤Ûÿ‰b[}¬ōõÃ]ËNm®g@•Bg}ÍF±ǐyL¥íCˆƒIij€Ï÷њį[¹¦[⚍EÛïÁÉdƅß{âNÆāŨߝ¾ě÷yC£‡k­´ÓH@¹†TZ¥¢įƒ·ÌAЧ®—Zc…v½ŸZ­¹|ŕWZqgW“|ieZÅYVӁqdq•bc²R@†c‡¥Rã»Ge†ŸeƃīQ•}J[ғK…¬Ə|o’ėjġĠÑN¡ð¯EBčnwôɍėªƒ²•CλŹġǝʅįĭạ̃ūȹ]ΓͧgšsgȽóϧµǛ†ęgſ¶ҍć`ĘąŌJޚä¤rÅň¥ÖÁUětęuůÞiĊÄÀ\\Æs¦ÓRb|Â^řÌkÄŷ¶½÷‡f±iMݑ›‰@ĥ°G¬ÃM¥n£Øą‚ğ¯ß”§aëbéüÑOčœk£{\\‘eµª×M‘šÉfm«Ƒ{Å׃Gŏǩãy³©WÑăû‚··‘Q—òı}¯ã‰I•éÕÂZ¨īès¶ZÈsŽæĔTŘvŽgÌsN@îá¾ó@‰˜ÙwU±ÉT廣TđŸWxq¹Zo‘b‹s[׌¯cĩv‡Œėŧ³BM|¹k‰ªħ—¥TzNYnݍßpęrñĠĉRS~½ŠěVVŠµ‚õ‡«ŒM££µB•ĉ¥áºae~³AuĐh`Ü³ç@BۘïĿa©|z²Ý¼D”£àč²‹ŸƒIƒû›I ā€óK¥}rÝ_Á´éMaň¨€~ªSĈ½Ž½KÙóĿeƃÆBŽ·¬ën×W|Uº}LJrƳ˜lŒµ`bÔ`QˆˆÐÓ@s¬ñIŒÍ@ûws¡åQÑßÁ`ŋĴ{Ī“T•ÚÅTSij‚‹Yo|Ç[ǾµMW¢ĭiÕØ¿@˜šMh…pÕ]j†éò¿OƇĆƇp€êĉâlØw–ěsˆǩ‚ĵ¸c…bU¹ř¨WavquSMzeo_^gsÏ·¥Ó@~¯¿RiīB™Š\\”qTGªÇĜçPoŠÿfñòą¦óQīÈáP•œābß{ƒZŗĸIæńhnszÁCËìñšÏ·ąĚÝUm®ó­L·ăU›Èíoù´Êj°ŁŤ_uµ^‘°Œìǖ@tĶĒ¡Æ‡M³Ģ«˜İĨÅ®ğ†RŽāð“ggheÆ¢z‚Ê©Ô\\°ÝĎz~ź¤Pn–MĪÖB£Ÿk™n鄧żćŠ˜ĆK„Ē°¼L¶è‰âz¨u¦¥LDĘz¬ýÎmĘd¾ß”Fz“hg²™Fy¦ĝ¤ċņbΛ@y‚Ąæm°NĮZRÖíŽJ²öLĸÒ¨Y®ƌÐV‰à˜tt_ڀÂyĠzž]Ţh€zĎ{†ĢX”ˆc|šÐqŽšfO¢¤ög‚ÌHNŽ„PKŖœŽ˜Uú´xx[xˆvĐCûĀŠìÖT¬¸^}Ìsòd´_Ž‡KgžLĴ…ÀBon|H@–Êx˜—¦BpŰˆŌ¿fµƌA¾zLjRxŠ¶F”œkĄźRzŀˆ~¶[”´Hnª–VƞuĒ­È¨ƎcƽÌm¸ÁÈM¦x͊ëÀxdžB’šú^´W†£–d„kɾĬpœw‚˂ØɦļĬIŚœÊ•n›Ŕa¸™~J°î”lɌxĤÊÈðhÌ®‚g˜T´øŽàCˆŽÀ^ªerrƘdž¢İP|Ė ŸWœªĦ^¶´ÂL„aT±üWƜ˜ǀRšŶUńšĖ[QhlLüA†‹Ü\\†qR›Ą©"],encodeOffsets:[[90849,37210]]},properties:{cp:[91.132212,29.660361],name:"西藏",childNum:1}},{id:"610000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@˜p¢—ȮµšûG™Ħ}Ħšðǚ¶òƄ€jɂz°{ºØkÈęâ¦jª‚Bg‚\\œċ°s¬Ž’]jžú ‚E”Ȍdž¬s„t‡”RˆÆdĠݎwܔ¸ôW¾ƮłÒ_{’Ìšû¼„jº¹¢GǪÒ¯ĘƒZ`ºŊƒecņąš~BÂgzpâēòYǠȰÌTΨÂWœ|fcŸă§uF—Œ@NŸ¢XLƒŠRMº[ğȣſï|¥J™kc`sʼnǷ’Y¹‹W@µ÷K…ãï³ÛIcñ·VȋڍÒķø©—þ¥ƒy‚ÓŸğęmWµÎumZyOŅƟĥÓ~sÑL¤µaŅY¦ocyZ{‰y c]{ŒTa©ƒ`U_Ěē£ωÊƍKù’K¶ȱÝƷ§{û»ÅÁȹÍéuij|¹cÑd‘ŠìUYƒŽO‘uF–ÕÈYvÁCqӃT•Ǣí§·S¹NgŠV¬ë÷Át‡°Dد’C´ʼnƒópģ}„ċcE˅FŸŸéGU¥×K…§­¶³B‹Č}C¿åċ`wġB·¤őcƭ²ő[Å^axwQO…ÿEËߌ•ĤNĔŸwƇˆÄŠńwĪ­Šo[„_KÓª³“ÙnK‰Çƒěœÿ]ď€ă_d©·©Ýŏ°Ù®g]±„Ÿ‡ß˜å›—¬÷m\\›iaǑkěX{¢|ZKlçhLt€Ňîŵ€œè[€É@ƉĄEœ‡tƇÏ˜³­ħZ«mJ…›×¾‘MtÝĦ£IwÄå\\Õ{‡˜ƒOwĬ©LÙ³ÙgBƕŀr̛ĢŭO¥lãyC§HÍ£ßEñŸX¡—­°ÙCgpťz‘ˆb`wI„vA|§”‡—hoĕ@E±“iYd¥OĻ¹S|}F@¾oAO²{tfžÜ—¢Fǂ҈W²°BĤh^Wx{@„¬‚­F¸¡„ķn£P|ŸªĴ@^ĠĈæb–Ôc¶l˜Yi…–^Mi˜cĎ°Â[ä€vï¶gv@À“Ĭ·lJ¸sn|¼u~a]’ÆÈtŌºJp’ƒþ£KKf~Š¦UbyäIšĺãn‡Ô¿^­žŵMT–hĠܤko¼Ŏìąǜh`[tŒRd²IJ_œXPrɲ‰l‘‚XžiL§àƒ–¹ŽH˜°Ȧqº®QC—bA†„ŌJ¸ĕÚ³ĺ§ `d¨YjžiZvRĺ±öVKkjGȊĐePОZmļKÀ€‚[ŠŽ`ösìh†ïÎoĬdtKÞ{¬èÒÒBŒÔpIJÇĬJŊ¦±J«ˆY§‹@·pH€µàåVKe›pW†ftsAÅqC·¬ko«pHÆuK@oŸHĆۄķhx“e‘n›S³àǍrqƶRbzy€¸ËАl›¼EºpĤ¼Œx¼½~Ğ’”à@†ÚüdK^ˆmÌSj"],encodeOffsets:[[110234,38774]]},properties:{cp:[108.948024,34.263161],name:"陕西",childNum:1}},{id:"620000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@VuUv"],["@@ũ‹EĠtt~nkh`Q‰¦ÅÄÜdw˜Ab×ĠąJˆ¤DüègĺqBqœj°lI¡ĨÒ¤úSHbš‡ŠjΑBŠ°aZˆ¢KJŽ’O[|A£žDx}Nì•HUnrk„ kp€¼Y kMJn[aG‚áÚÏ[½rc†}aQxOgsPMnUs‡nc‹Z…ž–sKúvA›t„Þġ’£®ĀYKdnFwš¢JE°”Latf`¼h¬we|€Æ‡šbj}GA€·~WŽ”—`†¢MC¤tL©IJ°qdf”O‚“bÞĬ¹ttu`^ZúE`Œ[@„Æsîz®¡’C„ƳƜG²“R‘¢R’m”fŽwĸg܃‚ą G@pzJM½mŠhVy¸uÈÔO±¨{LfæU¶ßGĂq\\ª¬‡²I‚¥IʼnÈīoı‹ÓÑAçÑ|«LÝcspīðÍg…të_õ‰\\ĉñLYnĝg’ŸRǡÁiHLlõUĹ²uQjYi§Z_c¨Ÿ´ĹĖÙ·ŋI…ƒaBD˜­R¹ȥr—¯G•ºß„K¨jWk’ɱŠOq›Wij\\a­‹Q\\sg_ĆǛōëp»£lğۀgS•ŶN®À]ˆÓäm™ĹãJaz¥V}‰Le¤L„ýo‘¹IsŋÅÇ^‘Žbz…³tmEÁ´aŠ¹cčecÇN•ĊãÁ\\č¯—dNj•]j†—ZµkÓda•ćå]ğij@ ©O{¤ĸm¢ƒE·®ƒ«|@Xwg]Aģ±¯‡XǁÑdzªc›wQÚŝñsÕ³ÛV_ýƒ˜¥\\ů¥©¾÷w—Ž©WÕÊĩhÿÖÁRo¸V¬âDb¨šhûx–Ê×nj~Zâƒg|šXÁnßYoº§ZÅŘvŒ[„ĭÖʃuďxcVbnUSf…B¯³_Tzº—ΕO©çMÑ~Mˆ³]µ^püµ”ŠÄY~y@X~¤Z³€[Èōl@®Å¼£QKƒ·Di‹¡By‘ÿ‰Q_´D¥hŗyƒ^ŸĭÁZ]cIzý‰ah¹MĪğP‘s{ò‡‹‘²Vw¹t³Ŝˁ[ŽÑ}X\\gsFŸ£sPAgěp×ëfYHāďÖqēŭOÏë“dLü•\\iŒ”t^c®šRʺ¶—¢H°mˆ‘rYŸ£BŸ¹čIoľu¶uI]vģSQ{ƒUŻ”Å}QÂ|̋°ƅ¤ĩŪU ęĄžÌZҞ\\v˜²PĔ»ƢNHƒĂyAmƂwVmž`”]ȏb•”H`‰Ì¢²ILvĜ—H®¤Dlt_„¢JJÄämèÔDëþgºƫ™”aʎÌrêYi~ ÎݤNpÀA¾Ĕ¼b…ð÷’Žˆ‡®‚”üs”zMzÖĖQdȨý†v§Tè|ªH’þa¸|šÐ ƒwKĢx¦ivr^ÿ ¸l öæfƟĴ·PJv}n\\h¹¶v†·À|\\ƁĚN´Ĝ€çèÁz]ġ¤²¨QÒŨTIl‡ªťØ}¼˗ƦvÄùØE‹’«Fï˛Iq”ōŒTvāÜŏ‚íÛߜÛV—j³âwGăÂíNOŠˆŠPìyV³ʼnĖýZso§HіiYw[߆\\X¦¥c]ÔƩÜ·«j‡ÐqvÁ¦m^ċ±R™¦΋ƈťĚgÀ»IïĨʗƮŽ°Ɲ˜ĻþÍAƉſ±tÍEÕÞāNU͗¡\\ſčåÒʻĘm ƭÌŹöʥ’ëQ¤µ­ÇcƕªoIýˆ‰Iɐ_mkl³ă‰Ɠ¦j—¡Yz•Ňi–}Msßõ–īʋ —}ƒÁVmŸ_[n}eı­Uĥ¼‘ª•I{ΧDӜƻėoj‘qYhĹT©oūĶ£]ďxĩ‹ǑMĝ‰q`B´ƃ˺Ч—ç~™²ņj@”¥@đ´ί}ĥtPńǾV¬ufӃÉC‹tÓ̻‰…¹£G³€]ƖƾŎĪŪĘ̖¨ʈĢƂlɘ۪üºňUðǜȢƢż̌ȦǼ‚ĤŊɲĖ­Kq´ï¦—ºĒDzņɾªǀÞĈĂD†½ĄĎÌŗĞrôñnŽœN¼â¾ʄľԆ|DŽŽ֦ज़ȗlj̘̭ɺƅêgV̍ʆĠ·ÌĊv|ýĖÕWĊǎÞ´õ¼cÒÒBĢ͢UĜð͒s¨ňƃLĉÕÝ@ɛƯ÷¿Ľ­ĹeȏijëCȚDŲyê×Ŗyò¯ļcÂßY…tÁƤyAã˾J@ǝrý‹‰@¤…rz¸oP¹ɐÚyᐇHŸĀ[Jw…cVeȴϜ»ÈŽĖ}ƒŰŐèȭǢόĀƪÈŶë;Ñ̆ȤМľĮEŔ—ĹŊũ~ËUă{ŸĻƹɁύȩþĽvĽƓÉ@ē„ĽɲßǐƫʾǗĒpäWÐxnsÀ^ƆwW©¦cÅ¡Ji§vúF¶Ž¨c~c¼īŒeXǚ‹\\đ¾JŽwÀďksãA‹fÕ¦L}wa‚o”Z’‹D½†Ml«]eÒÅaɲáo½FõÛ]ĻÒ¡wYR£¢rvÓ®y®LF‹LzĈ„ôe]gx}•|KK}xklL]c¦£fRtív¦†PĤoH{tK"]],encodeOffsets:[[[108619,36299]],[[108589,36341]]]},properties:{cp:[103.823557,36.058039],name:"甘肃",childNum:2}},{id:"630000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@InJm"],["@@CƒÆ½OŃĦsΰ~Ē³¦@@“Ņiš±è}ؘƄ˹A³r_ĞŠǒNĪŒĐw¤^ŬĵªpĺSZg’rpiƼĘԛ¨C|͖J’©Ħ»®VIJ~f\\m `Un„˜~ʌŸ•ĬàöNt•~ňjy–¢Zi˜Ɣ¥ĄŠk´nl`JʇŠJþ©pdƖ®È£¶ìRʦ‘źõƮËnŸʼėæÑƀĎ[‚˜¢VÎĂMÖÝÎF²sƊƀÎBļýƞ—¯ʘƭðħ¼Jh¿ŦęΌƇš¥²Q]Č¥nuÂÏriˆ¸¬ƪÛ^Ó¦d€¥[Wà…x\\ZŽjҕ¨GtpþYŊĕ´€zUO뇉P‰îMĄÁxH´á˜iÜUà›îÜՁĂÛSuŎ‹r“œJð̬EŒ‘FÁú×uÃÎkr“Ē{V}İ«O_ÌËĬ©ŽÓŧSRѱ§Ģ£^ÂyèçěM³Ƃę{[¸¿u…ºµ[gt£¸OƤĿéYŸõ·kĀŸq]juw¥Dĩƍ€õÇPéĽG‘ž©ã‡¤G…uȧþRcÕĕNy“yût“ˆ­‡ø‘†ï»a½ē¿BMoį£ŸÍj}éZËqbʍš“Ƭh¹ìÿÓAçãnIáI`ƒks£CG­ě˜Uy×Cy•…’Ÿ@¶ʡÊBnāzG„ơMē¼±O÷õJËĚăVŸĪũƆ£Œ¯{ËL½Ìzż“„VR|ĠTbuvJvµhĻĖH”Aëáa…­OÇðñęNw‡…œľ·L›mI±íĠĩPÉ×®ÿs—’cB³±JKßĊ«`…ađ»·QAmO’‘Vţéÿ¤¹SQt]]Çx€±¯A@ĉij¢Óļ©•ƒl¶ÅÛr—ŕspãRk~¦ª]Į­´“FR„åd­ČsCqđéFn¿Åƃm’Éx{W©ºƝºįkÕƂƑ¸wWūЩÈFž£\\tÈ¥ÄRÈýÌJ ƒlGr^×äùyÞ³fj”c†€¨£ÂZ|ǓMĝšÏ@ëÜőR‹›ĝ‰Œ÷¡{aïȷPu°ËXÙ{©TmĠ}Y³’­ÞIňµç½©C¡į÷¯B»|St»›]vƒųƒs»”}MÓ ÿʪƟǭA¡fs˜»PY¼c¡»¦c„ċ­¥£~msĉP•–Siƒ^o©A‰Šec‚™PeǵŽkg‚yUi¿h}aH™šĉ^|ᴟ¡HØûÅ«ĉ®]m€¡qĉ¶³ÈyôōLÁst“BŸ®wn±ă¥HSòėš£˜S’ë@לÊăxÇN©™©T±ª£IJ¡fb®ÞbŽb_Ą¥xu¥B—ž{łĝ³«`d˜Ɛt—¤ťiñžÍUuºí`£˜^tƃIJc—·ÛLO‹½Šsç¥Ts{ă\\_»™kϊ±q©čiìĉ|ÍIƒ¥ć¥›€]ª§D{ŝŖÉR_sÿc³Īō›ƿΑ›§p›[ĉ†›c¯bKm›R¥{³„Z†e^ŽŒwx¹dƽŽôIg §Mĕ ƹĴ¿—ǣÜ̓]‹Ý–]snåA{‹eŒƭ`ǻŊĿ\\ijŬű”YÂÿ¬jĖqŽßbŠ¸•L«¸©@ěĀ©ê¶ìÀEH|´bRľž–Ó¶rÀQþ‹vl®Õ‚E˜TzÜdb ˜hw¤{LR„ƒd“c‹b¯‹ÙVgœ‚ƜßzÃô쮍^jUèXΖ|UäÌ»rKŽ\\ŒªN‘¼pZCü†VY††¤ɃRi^rPҒTÖ}|br°qňbĚ°ªiƶGQ¾²„x¦PœmlŜ‘[Ĥ¡ΞsĦŸÔÏâ\\ªÚŒU\\f…¢N²§x|¤§„xĔsZPòʛ²SÐqF`ª„VƒÞŜĶƨVZŒÌL`ˆ¢dŐIqr\\oäõ–F礻Ŷ×h¹]Clـ\\¦ďÌį¬řtTӺƙgQÇÓHţĒ”´ÃbEÄlbʔC”|CˆŮˆk„Ʈ[ʼ¬ňœ´KŮÈΰÌĪ¶ƶlð”ļA†TUvdTŠG†º̼ŠÔ€ŒsÊDԄveOg"]],encodeOffsets:[[[105308,37219]],[[95370,40081]]]},properties:{cp:[101.778916,36.623178],name:"青海",childNum:2}},{id:"640000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@KëÀęĞ«OęȿȕŸı]ʼn¡åįÕÔ«Ǵõƪ™ĚQÐZhv K°›öqÀѐS[ÃÖHƖčË‡nL]ûc…Ùß@‚“ĝ‘¾}w»»‹oģF¹œ»kÌÏ·{zPƒ§B­¢íyÅt@ƒ@áš]Yv_ssģ¼i߁”ĻL¾ġsKD£¡N_…“˜X¸}B~Haiˆ™Åf{«x»ge_bs“KF¯¡Ix™mELcÿZ¤­Ģ‘ƒÝœsuBLù•t†ŒYdˆmVtNmtOPhRw~bd…¾qÐ\\âÙH\\bImlNZŸ»loƒŸqlVm–Gā§~QCw¤™{A\\‘PKŸNY‡¯bF‡kC¥’sk‹Šs_Ã\\ă«¢ħkJi¯r›rAhĹûç£CU‡ĕĊ_ԗBixÅُĄnªÑaM~ħpOu¥sîeQ¥¤^dkKwlL~{L~–hw^‚ófćƒKyEŒ­K­zuÔ¡qQ¤xZÑ¢^ļöܾEpž±âbÊÑÆ^fk¬…NC¾‘Œ“YpxbK~¥Že֎ŒäBlt¿Đx½I[ĒǙŒWž‹f»Ĭ}d§dµùEuj¨‚IÆ¢¥dXªƅx¿]mtÏwßRĶŒX¢͎vÆzƂZò®ǢÌʆCrâºMÞzžÆMҔÊÓŊZľ–r°Î®Ȉmª²ĈUªĚøºˆĮ¦ÌĘk„^FłĬhĚiĀĖ¾iİbjÕ"],["@@mfwěwMrŢªv@G‰"]],encodeOffsets:[[[109366,40242]],[[108600,36303]]]},properties:{cp:[106.278179,38.46637],name:"宁夏",childNum:2}},{id:"650000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@QØĔ²X¨”~ǘBºjʐßØvK”ƔX¨vĊOžÃƒ·¢i@~c—‡ĝe_«”Eš“}QxgɪëÏÃ@sÅyXoŖ{ô«ŸuX…ê•Îf`œC‚¹ÂÿÐGĮÕĞXŪōŸMźÈƺQèĽôe|¿ƸJR¤ĘEjcUóº¯Ĩ_ŘÁMª÷Ð¥Oéȇ¿ÖğǤǷÂF҇zÉx[]­Ĥĝ‰œ¦EP}ûƥé¿İƷTėƫœŕƅ™ƱB»Đ±’ēO…¦E–•}‘`cȺrĦáŖuҞª«IJ‡πdƺÏØZƴwʄ¤ĖGЙǂZĶƒèH¶}ÚZצʥĪï|ÇĦMŔ»İĝLj‹ì¥Βœba­¯¥ǕǚkĆŵĦɑĺƯxūД̵nơʃĽá½M»›òmqóŘĝč˾ăC…ćāƿÝɽ©DZŅ¹đ¥˜³ðLrÁ®ɱĕģʼnǻ̋ȥơŻǛȡVï¹Ň۩ûkɗġƁ§ʇė̕ĩũƽō^ƕŠUv£ƁQï“Ƶkŏ½ΉÃŭdzLқʻ«ƭ\\lƒ‡ŭD‡“{ʓDkaFÃÄa“³ŤđÔGRÈƚhSӹŚsİ«ĐË[¥ÚDkº^Øg¼ŵ¸£EÍö•€ůʼnT¡c_‡ËKY‹ƧUśĵ„݃U_©rETÏʜ±OñtYwē¨ƒ{£¨uM³x½şL©Ùá[ÓÐĥ Νtģ¢\\‚ś’nkO›w¥±ƒT»ƷFɯàĩÞáB¹Æ…ÑUw„੍žĽw[“mG½Èå~‡Æ÷QyŠěCFmĭZī—ŵVÁ™ƿQƛ—ûXS²‰b½KϽĉS›©ŷXĕŸ{ŽĕK·¥Ɨcqq©f¿]‡ßDõU³h—­gËÇïģÉɋw“k¯í}I·šœbmœÉ–ř›īJɥĻˁ×xo›ɹī‡l•c…¤³Xù]‘™DžA¿w͉ì¥wÇN·ÂËnƾƍdǧđ®Ɲv•Um©³G\\“}µĿ‡QyŹl㓛µEw‰LJQ½yƋBe¶ŋÀů‡ož¥A—˜Éw@•{Gpm¿Aij†ŽKLhˆ³`ñcËtW‚±»ÕS‰ëüÿďD‡u\\wwwù³—V›LŕƒOMËGh£õP¡™er™Ïd{“‡ġWÁ…č|yšg^ğyÁzÙs`—s|ÉåªÇ}m¢Ń¨`x¥’ù^•}ƒÌ¥H«‰Yªƅ”Aйn~ź¯šf¤áÀz„gŠÇDIԝ´AňĀ҄¶ûEYospõD[{ù°]u›Jq•U•|Soċxţ[õÔĥkŋÞŭZ˺óYËüċrw €ÞkrťË¿XGÉbřaDü·Ē÷Aê[Ää€I®BÕИÞ_¢āĠpŠÛÄȉĖġDKwbm‡ÄNô‡ŠfœƫVÉvi†dz—H‘‹QµâFšù­Âœ³¦{YGžƒd¢ĚÜO „€{Ö¦ÞÍÀPŒ^b–ƾŠlŽ[„vt×ĈÍE˨¡Đ~´î¸ùÎh€uè`¸ŸHÕŔVºwĠââWò‡@{œÙNÝ´ə²ȕn{¿¥{l—÷eé^e’ďˆXj©î\\ªÑò˜Üìc\\üqˆÕ[Č¡xoÂċªbØ­Œø|€¶ȴZdÆšońéŒGš\\”¼C°ÌƁn´nxšÊOĨ’Ūƴĸ¢¸òTxÊǪMīИÖŲÃɎOvˆʦƢ~FŽ‡Rěò—¿ġ~åŊœú‰Nšžš¸qŽ’Ę[Ĕ¶ÂćnÒPĒÜvúĀÊbÖ{Äî¸~Ŕünp¤ÂH¾œĄYÒ©ÊfºmԈĘcDoĬMŬ’˜S¤„s²‚”ʘچžȂVŦ –ŽèW°ªB|IJXŔþÈJĦÆæFĚêŠYĂªĂ]øªŖNÞüA€’fɨJ€˜¯ÎrDDšĤ€`€mz\\„§~D¬{vJÂ˜«lµĂb–¤p€ŌŰNĄ¨ĊXW|ų ¿¾ɄĦƐMT”‡òP˜÷fØĶK¢ȝ˔Sô¹òEð­”`Ɩ½ǒÂň×äı–§ĤƝ§C~¡‚hlå‚ǺŦŞkâ’~}ŽFøàIJaĞ‚fƠ¥Ž„Ŕdž˜®U¸ˆźXœv¢aƆúŪtŠųƠjd•ƺŠƺÅìnrh\\ĺ¯äɝĦ]èpĄ¦´LƞĬŠ´ƤǬ˼Ēɸ¤rºǼ²¨zÌPðŀbþ¹ļD¢¹œ\\ĜÑŚŸ¶ZƄ³àjĨoâŠȴLʉȮŒĐ­ĚăŽÀêZǚŐ¤qȂ\\L¢ŌİfÆs|zºeªÙæ§΢{Ā´ƐÚ¬¨Ĵà²łhʺKÞºÖTŠiƢ¾ªì°`öøu®Ê¾ãØ"],encodeOffsets:[[88824,50096]]},properties:{cp:[87.617733,43.792818],name:"新疆",childNum:1}},{id:"110000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@ĽOÁ›ûtŷmiÍt_H»Ĩ±d`Š¹­{bw…Yr“³S]§§o¹€qGtm_Sŧ€“oa›‹FLg‘QN_•dV€@Zom_ć\\ߚc±x¯oœRcfe…£’o§ËgToÛJíĔóu…|wP¤™XnO¢ÉˆŦ¯rNÄā¤zâŖÈRpŢZŠœÚ{GŠrFt¦Òx§ø¹RóäV¤XdˆżâºWbwŚ¨Ud®bêņ¾‘jnŎGŃŶŠnzÚSeîĜZczî¾i]͜™QaúÍÔiþĩȨWĢ‹ü|Ėu[qb[swP@ÅğP¿{\\‡¥A¨Ï‘Ѩj¯ŠX\\¯œMK‘pA³[H…īu}}"],encodeOffsets:[[120023,41045]]},properties:{cp:[116.405285,39.904989],name:"北京",childNum:1}},{id:"120000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@ŬgX§Ü«E…¶Ḟ“¬O_™ïlÁg“z±AXe™µÄĵ{¶]gitgšIj·›¥îakS€‰¨ÐƎk}ĕ{gB—qGf{¿a†U^fI“ư‹³õ{YƒıëNĿžk©ïËZŏ‘R§òoY×Ógc…ĥs¡bġ«@dekąI[nlPqCnp{ˆō³°`{PNdƗqSÄĻNNâyj]äžÒD ĬH°Æ]~¡HO¾ŒX}ÐxŒgp“gWˆrDGˆŒpù‚Š^L‚ˆrzWxˆZ^¨´T\\|~@I‰zƒ–bĤ‹œjeĊªz£®Ĕvě€L†mV¾Ô_ȔNW~zbĬvG†²ZmDM~”~"],encodeOffsets:[[120237,41215]]},properties:{cp:[117.190182,39.125596],name:"天津",childNum:1}},{id:"310000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@ɧư¬EpƸÁxc‡"],["@@©„ªƒ"],["@@”MA‹‘š"],["@@Qp݁E§ÉC¾"],["@@bŝՕÕEȣÚƥêImɇǦèÜĠŒÚžÃƌÃ͎ó"],["@@ǜûȬɋŠŭ™×^‰sYŒɍDŋ‘ŽąñCG²«ªč@h–_p¯A{‡oloY€¬j@IJ`•gQڛhr|ǀ^MIJvtbe´R¯Ô¬¨YŽô¤r]ì†Ƭį"]],encodeOffsets:[[[124702,32062]],[[124547,32200]],[[124808,31991]],[[124726,32110]],[[124903,32376]],[[124438,32149]]]},properties:{cp:[121.472644,31.231706],name:"上海",childNum:6}},{id:"500000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@vjG~nGŘŬĶȂƀƾ¹¸ØÎezĆT¸}êЖqHŸðqĖ䒊¥^CƒIj–²p…\\_ æüY|[YxƊæuž°xb®…Űb@~¢NQt°¶‚S栓Ê~rljĔëĚ¢~šuf`‘‚†fa‚ĔJåĊ„nÖ]„jƎćÊ@Š£¾a®£Ű{ŶĕF‹ègLk{Y|¡ĜWƔtƬJÑxq‹±ĢN´‰òK‰™–LÈüD|s`ŋ’ć]ƒÃ‰`đŒMûƱ½~Y°ħ`ƏíW‰½eI‹½{aŸ‘OIrÏ¡ĕŇa†p†µÜƅġ‘œ^ÖÛbÙŽŏml½S‹êqDu[R‹ãË»†ÿw`»y‘¸_ĺę}÷`M¯ċfCVµqʼn÷Z•gg“Œ`d½pDO‡ÎCnœ^uf²ènh¼WtƏxRGg¦…pV„†FI±ŽG^ŒIc´ec‡’G•ĹÞ½sëĬ„h˜xW‚}Kӈe­Xsbk”F¦›L‘ØgTkïƵNï¶}Gy“w\\oñ¡nmĈzjŸ•@™Óc£»Wă¹Ój“_m»ˆ¹·~MvÛaqœ»­‰êœ’\\ÂoVnŽÓØ͙²«‹bq¿efE „€‹Ĝ^Qž~ Évý‡ş¤²Į‰pEİ}zcĺƒL‹½‡š¿gņ›¡ýE¡ya£³t\\¨\\vú»¼§·Ñr_oÒý¥u‚•_n»_ƒ•At©Þűā§IVeëƒY}{VPÀFA¨ąB}q@|Ou—\\Fm‰QF݅Mw˜å}]•€|FmϋCaƒwŒu_p—¯sfÙgY…DHl`{QEfNysBŠ¦zG¸rHe‚„N\\CvEsÐùÜ_·ÖĉsaQ¯€}_U‡†xÃđŠq›NH¬•Äd^ÝŰR¬ã°wećJEž·vÝ·Hgƒ‚éFXjÉê`|yŒpxkAwœWĐpb¥eOsmzwqChóUQl¥F^laf‹anòsr›EvfQdÁUVf—ÎvÜ^efˆtET¬ôA\\œ¢sJŽnQTjP؈xøK|nBz‰„œĞ»LY‚…FDxӄvr“[ehľš•vN”¢o¾NiÂxGp⬐z›bfZo~hGi’]öF|‰|Nb‡tOMn eA±ŠtPT‡LjpYQ|†SH††YĀxinzDJ€Ìg¢và¥Pg‰_–ÇzII‹€II•„£®S¬„Øs쐣ŒN"],["@@ifjN@s"]],encodeOffsets:[[[109628,30765]],[[111725,31320]]]},properties:{cp:[106.504962,29.533155],name:"重庆",childNum:2}},{id:"810000",type:"Feature",geometry:{type:"MultiPolygon",coordinates:[["@@AlBk"],["@@mŽn"],["@@EpFo"],["@@ea¢pl¸Eõ¹‡hj[ƒ]ÔCΖ@lj˜¡uBXŸ…•´‹AI¹…[‹yDUˆ]W`çwZkmc–…M›žp€Åv›}I‹oJlcaƒfёKŽ°ä¬XJmРđhI®æÔtSHn€Eˆ„ÒrÈc"],["@@rMUw‡AS®€e"]],encodeOffsets:[[[117111,23002]],[[117072,22876]],[[117045,22887]],[[116975,23082]],[[116882,22747]]]},properties:{cp:[114.173355,22.320048],name:"香港",childNum:5}},{id:"820000",type:"Feature",geometry:{type:"Polygon",coordinates:["@@kÊd°å§s"],encodeOffsets:[[116279,22639]]},properties:{cp:[113.54909,22.198951],name:"澳门",childNum:1}}],UTF8Encoding:!0}):void n("ECharts Map is not loaded"):void n("ECharts is not Loaded")})},"./app/containers/Widget/charts/markBoxplot.ts":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t,n,r){var s=n.xAxis,l=n.xAxisInterval,d=n.xAxisRotate,u=n.dataZoomThreshold,c=n.hasLegend,p=n.legendSelected,f=n.legendPosition,h=n.toolbox,m=n.splitLineX,g=n.splitLineY,b=n.splitLineStyle,_=n.splitLineWidth,v=n.top,y=n.bottom,x=n.left,j=n.right,w=n.suffixYAxis,k=n.markMetrics,M=n.metrics,S=void 0,T=void 0,E=void 0,C=void 0,O=void 0,D=void 0,L=void 0,A=void 0,P=void 0,I=void 0;if(s&&M&&M.length){var R=e.map(function(e){return e[s]});I=R.filter(function(e,t){return R.indexOf(e)===t}),T={xAxis:{type:"category",data:I,boundaryGap:!0,nameGap:30,splitArea:{show:!0},axisLabel:{interval:l,rotate:d,formatter:"{value}"},splitLine:{show:m&&m.length,lineStyle:{width:_,type:b}}}}}if(P=[],M&&M.length){M=[M];var N=I.map(function(t){return e.filter(function(e){return e[s]===t})}),z=N.map(function(e){return M.map(function(t){return e.map(function(e){return e[t]})})});P=M.map(function(e,t){var n=[];return z.forEach(function(e,o){n.push(e[t])}),n}).map(function(e){return i.default(e)}),S={series:P.reduce(function(e,t,n){return e.concat({name:M[n],type:"boxplot",data:t.boxData,tooltip:{formatter:a}},{name:M[n],type:"pictorialBar",symbolPosition:"end",symbolSize:8,barGap:"30%",data:t.outliers,tooltip:{formatter:function(e){return[e.name+" ","异常值: "+e.data[1]].join("
    ")}}})},[])}}if(k&&k.length){var Y=e.map(function(e){var t;return t={},o(t,s,e[s]),o(t,k,e[k]),t}),F=Y.reduce(function(e,t){return Object.assign({},e,o({},t[s],t[k]))},{}),H=Object.values(F);S.series.push({name:k,type:"scatter",data:H,itemStyle:{normal:{color:"rgb(251, 118, 123)"}}})}A=w&&w.length?{axisLabel:{formatter:"{value} "+w}}:null,E={yAxis:Object.assign({type:"value",splitArea:{show:!1},splitLine:{show:g&&g.length,lineStyle:{width:_,type:b}}},A)};var V=0,q=0;if(c&&c.length){var W=void 0,B=void 0;switch(f){case"right":W={orient:"vertical"},B={right:8,top:40,bottom:16},q=108;break;case"bottom":W={orient:"horizontal"},B={bottom:16,left:8,right:8},V=72;break;default:W={orient:"horizontal"},B={top:3,left:8,right:120}}var U="unselectAll"===p?{selected:M.reduce(function(e,t){return Object.assign({},e,o({},t,!1))},{})}:null;C={legend:Object.assign({data:M,type:"scroll"},W,B,U)}}return O=h&&h.length?{toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,D={grid:{top:v,left:x,right:Math.max(j,q),bottom:Math.max(y,V)}},L=u>0&&u")}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/echarts/extension-src/dataTool/prepareBoxplotData.js");t.default=r},"./app/containers/Widget/charts/parallel.ts":function(e,t,n){"use strict";function o(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0){var o=e-parseFloat(O[t-1]);return o>=0?(r.push(o),a.push("-"),n.push(parseFloat(O[t-1]))):(r.push("-"),a.push(Math.abs(o)),n.push(parseFloat(O[t-1])-Math.abs(o))),o}return r.push(e),a.push("-"),n.push(0),e});var i=r.reduce(function(e,t){return"number"==typeof t?e+t:e+0},0),s=a.reduce(function(e,t){return"number"==typeof t?e+t:e+0},0),l=i-s;b&&b.length&&(E.push("累计"),n.push("-"),l>0?(r.push(l),a.push("-")):(a.push(Math.abs(l)),r.push("-")));var d={name:t,type:"bar",sampling:"average",data:n,itemStyle:{normal:{barBorderColor:"rgba(0,0,0,0)",color:"rgba(0,0,0,0)",opacity:void 0===o?1:.25},emphasis:{barBorderColor:"rgba(0,0,0,0)",color:"rgba(0,0,0,0)"}},stack:"stack"},u={name:"升",type:"bar",sampling:"average",data:r,itemStyle:{normal:{opacity:void 0===o?1:.25}},stack:"stack",label:{normal:{show:!(!f||!f.length),position:"top"}}},c={name:"降",type:"bar",sampling:"average",data:a,itemStyle:{normal:{opacity:void 0===o?1:.25}},stack:"stack",label:{normal:{show:!(!f||!f.length),position:"bottom"}}};C.push(d),C.push(u),C.push(c)}),y={series:C}}T=_&&_.length?{axisLabel:{formatter:"{value} "+_}}:null,a&&a.length?(r&&(x={yAxis:{data:e.map(function(e){return e[r]}),axisLabel:{show:!1},axisLine:{show:!1},axisTick:{show:!1}}}),j={xAxis:{type:"value",position:"top",splitLine:{lineStyle:{type:"dashed"}},axisLabel:{interval:i,rotate:s}}}):(r&&(x={xAxis:{data:E,axisLabel:{interval:i,rotate:s}}}),j={yAxis:Object.assign({type:"value"},T)});var A=0,P=0;if(d&&d.length){var I=void 0,R=void 0;switch(u){case"right":I={orient:"vertical"},R={right:8,top:40,bottom:16},P=108;break;case"bottom":I={orient:"horizontal"},R={bottom:16,left:8,right:8},A=72;break;default:I={orient:"horizontal"},R={top:3,left:8,right:120}}w={legend:Object.assign({data:C.map(function(e){return e.name}),type:"scroll"},I,R)}}return k=c&&c.length?{toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{pixelRatio:2}},right:8}}:null,M={grid:{top:p,left:m,right:Math.max(g,P),bottom:Math.max(h,A)}},S=l>0&&l"))}}},y,x,j,w,k,M,S)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o},"./app/containers/Widget/charts/wordCloud.ts":function(e,t,n){"use strict";function o(e,t,n){var o=n.title,r=n.gridSize,a=n.sizeRangeX,i=n.sizeRangeY,s=void 0,l=void 0,d=void 0,u=void 0,c=[];l=r&&{gridSize:r},d=(a||i)&&{sizeRange:[a||0,i||0]};var p=e.reduce(function(e,t){var n=t[o];return e[n]?e[n].value+=1:e[n]={name:n,value:1},e},{}),f=Object.assign({type:"wordCloud",textStyle:{normal:{color:"#509af2"},emphasis:{shadowBlur:10,shadowColor:"#509af2"}},data:Object.keys(p).map(function(e){return p[e]}),rotationStep:45,rotationRange:[-90,90]},l,d);return c.push(f),s={series:c},u={grid:{top:0,left:0,right:0,bottom:0}},Object.assign({},s,u)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o},"./app/containers/Widget/components/Chart/Chart.less":function(e,t,n){var o=n("./node_modules/css-loader/index.js?modules&importLoaders=1!./node_modules/postcss-loader/index.js!./node_modules/less-loader/lib/loader.js!./app/containers/Widget/components/Chart/Chart.less");"string"==typeof o&&(o=[[e.i,o,""]]);var r={};r.transform=void 0;n("./node_modules/style-loader/lib/addStyles.js")(o,r);o.locals&&(e.exports=o.locals)},"./app/containers/Widget/components/Chart/Chart.tsx":function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n=0?[]:["",""],e},{}):e.reduce(function(e,t){return e[t]=["",""],e},{})},n.handleTableChange=function(e,t,o){n.setState({pagination:e,sortedInfo:o},function(){n.onLoadData()})},n.onSearchInputChange=function(e){return function(t){var r=n.state.filterValues;n.setState({filterValues:Object.assign({},r,o({},e,[t.target.value]))})}},n.onNumberInputChange=function(e){return function(t){var r=n.state.filterValues;n.setState({filterValues:Object.assign({},r,o({},e,[isNaN(t[0])?r[e][0]:t[0],isNaN(t[1])?r[e][1]:t[1]]))})}},n.onRangePickerChange=function(e){return function(t,r){n.setState({filterValues:Object.assign({},n.state.filterValues,o({},e,[r[0],r[1]]))}),n.onLoadData()}},n.onLoadData=function(){},n.rowClick=function(e,t,o){var r=o.target,a=r.tagName,i=r.classList[0],s=/select/g;if("DIV"===a&&s.test(i))return void o.stopPropagation();var l=n.props,d=l.id,u=l.onCheckInteract,p=l.onDoInteract,f=n.state.data;if(u&&p){var h=u(Number(d));Object.keys(h).length&&(f.forEach(function(t){t[c.KEY_COLUMN]===e[c.KEY_COLUMN]&&p(Number(d),h,e[c.KEY_COLUMN])}),n.setState({data:Object.assign({},f)}))}},n.rowClassFilter=function(e,t){return n.props.interactId===e[c.KEY_COLUMN]?p.selectedRow:""},n.state={data:e.data,sortedInfo:{},filterDropdownVisibles:{},filterValues:{},pagination:{}},n}return i(t,e),s(t,[{key:"componentWillMount",value:function(){this.setState({pagination:this.props.width<=768?this.pageAutoAdapted("mobile"):this.pageAutoAdapted("pc")})}},{key:"componentWillReceiveProps",value:function(e){this.props.data!==e.data&&this.setState({data:e.data,filterValues:{}}),this.setState({pagination:e.width<=768?this.pageAutoAdapted("mobile"):this.pageAutoAdapted("pc")})}},{key:"render",value:function(){var e=this.props,t=e.className,n=(e.filterable,e.sortable,e.width),o=e.height,r=this.state,a=r.data,i=(r.filterDropdownVisibles,r.filterValues,r.pagination),s=[];a.length&&(s=Object.keys(a[0]).map(function(e,t){var n={title:e.toUpperCase(),dataIndex:e,key:e,width:c.COLUMN_WIDTH};return Object.assign({},n)}));var u=(a.length?Object.keys(a[0]).length:1)*c.COLUMN_WIDTH,p=u>n?{x:u}:null,f=Object.assign({},p,{y:o-40-60});return l.createElement(d,{className:t,dataSource:a,columns:s,pagination:i,scroll:f,onChange:this.handleTableChange,onRowClick:this.rowClick,rowClassName:this.rowClassFilter,bordered:!0})}}]),t}(l.PureComponent);f.defaultProps={filterable:!0,sortable:!0},t.Table=f,t.default=f},"./app/containers/Widget/components/Chart/index.tsx":function(e,t,n){"use strict";function o(e){var t=e.width,n=e.height,o=e.data;return e.selectedChart===s.getTable().id?r.createElement(a.default,{data:o,width:t,height:n}):r.createElement(i.default,e)}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/react/react.js"),a=n("./app/containers/Widget/components/Chart/Table.tsx"),i=n("./app/containers/Widget/components/Chart/Chart.tsx"),s=n("./app/containers/Widget/components/util.ts");t.CombinedChart=o,t.default=o},"./app/containers/Widget/components/Pivot/Cell.tsx":function(e,t,n){"use strict";function o(e){var t=e.colKey,n=void 0===t?"":t,o=e.rowKey,u=void 0===o?"":o,c=e.width,p=e.height,f=e.data,h=e.chartStyles,m=e.color,g=e.legend,b=h.pivot,_=b.color,v=b.fontSize,y=b.fontFamily,x=b.lineColor,j=b.lineStyle,w=e.metrics;if(n.includes(s.DEFAULT_SPLITER)&&u.includes(s.DEFAULT_SPLITER)){var k=r(n);if(k===r(u)){var M=k.split(s.DEFAULT_SPLITER),S=a(M,2),T=S[0],E=S[1];w=w.filter(function(e){return e.name===""+T+s.DEFAULT_SPLITER+E})}else w=[]}else if(n.includes(s.DEFAULT_SPLITER)){var C=r(n).split(s.DEFAULT_SPLITER),O=a(C,2),D=O[0],L=O[1];w=w.filter(function(e){return e.name===""+D+s.DEFAULT_SPLITER+L})}else if(u.includes(s.DEFAULT_SPLITER)){var A=r(u).split(s.DEFAULT_SPLITER),P=a(A,2),I=P[0],R=P[1];w=w.filter(function(e){return e.name===""+I+s.DEFAULT_SPLITER+R})}var N=w.map(function(e){var t=l.decodeMetricName(e.name),n=m.items.find(function(t){return t.config.actOn===e.name})||m.items.find(function(e){return"all"===e.config.actOn});return f&&f.map(function(o,r){var a=void 0;if(n){var s=g[n.name];s&&s.includes(o[n.name])||(a={color:n.config.values[o[n.name]]})}return i.createElement("p",{key:""+e.name+r,className:d.cellContent,style:Object.assign({},a)},o[e.agg+"("+t+")"])})}),z=Object.assign({width:c},p&&{height:p},{color:_,fontSize:Number(v),fontFamily:y,borderColor:x,borderStyle:j});return i.createElement("td",{style:z},N)}function r(e){return e.split(String.fromCharCode(0)).filter(function(e){return e.includes(s.DEFAULT_SPLITER)})[0]}var a=function(){function e(e,t){var n=[],o=!0,r=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(o=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);o=!0);}catch(e){r=!0,a=e}finally{try{!o&&s.return&&s.return()}finally{if(r)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/react/react.js"),s=n("./app/globalConstants.ts"),l=n("./app/containers/Widget/components/util.ts"),d=n("./app/containers/Widget/components/Pivot/Pivot.less");t.Cell=o,t.default=o},"./app/containers/Widget/components/Pivot/Chart.tsx":function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){var n=[],o=!0,r=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(o=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);o=!0);}catch(e){r=!0,a=e}finally{try{!o&&s.return&&s.return()}finally{if(r)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function(){function e(e,t){for(var n=0;ns){var l=[],d={key:"",height:0,data:[]};return n.forEach(function(e,t){var o="col"===a?e.height*r.length:e.height;d.height+o>s&&(d.key=""+t+d.data.map(function(e){return e.key}).join(","),l.push(d),d={key:"",height:0,data:[]}),d.height+=o,d.data.push(e),t===n.length-1&&(d.key=""+t+d.data.map(function(e){return e.key}).join(","),l.push(d))}),l}return[{key:"chunk",height:t,data:n}]},e.verticalCutting=function(t,n){var o=e.props,r=o.metrics,a=o.dimetionAxis,i=o.drawingData.multiCoordinate,s=i?p.PIVOT_CANVAS_POLAR_SIZE_LIMIT:p.PIVOT_CANVAS_SIZE_LIMIT;if(t>s){var l={};return n.forEach(function(t){var n=e.initBlockLine(t),o=e.initBlock(n);t.data.forEach(function(i,d){var u="row"===a?i.width*r.length:i.width;if(o.width+u>s){if(l[d-1]){var c=l[d-1];c.data=c.data.concat(o.data)}else l[d-1]=Object.assign({},o,{key:""+(d-1)+o.data.map(function(e){return e.key}).join(",")});n=e.initBlockLine(t),o=e.initBlock(n)}if(o.width+=u,n.data.push(i),d===t.data.length-1)if(l[d]){var p=l[d];p.data=p.data.concat(o.data)}else l[d]=Object.assign({},o,{key:""+d+o.data.map(function(e){return e.key}).join(",")})})}),Object.values(l).map(function(e){return Object.assign({},e,{pieces:f.getChartPieces(e.data.reduce(function(e,t){return e+t.data.reduce(function(e,t){return e+("col"===a?t.records.length*r.length:t.records.length)},0)},0),e.data.length)})})}return[{key:"block",width:t,data:n,pieces:f.getChartPieces(n.reduce(function(e,t){return e+t.data.reduce(function(e,t){return e+("col"===a?t.records.length*r.length:t.records.length)},0)},0),n.length)}]},e.initBlock=function(e){return{key:"",width:0,data:[e],pieces:0}},e.initBlockLine=function(e){return Object.assign({},e,{key:""+h.uuid(8,16)+e.key,data:[]})},e}return i(t,e),s(t,[{key:"render",value:function(){var e,t=this.props,n=t.rows,r=t.cols,a=t.rowKeys,i=t.colKeys,s=t.rowTree,p=t.rowWidths,g=t.colTree,b=t.tree,_=t.metrics,v=t.metricAxisConfig,y=t.chartStyles,x=t.drawingData,j=t.dimetionAxis,w=t.color,k=t.label,M=t.size,S=t.xAxis,T=t.tip,E=t.renderType,C=t.legend,O=t.onCheckTableInteract,D=t.onDoInteract,L=x.elementSize,A=x.unitMetricWidth,P=x.unitMetricHeight,I=x.tableBodyCollapsed,R=null,N=[],z=[],Y=0;if(j){var F=0;if(i.length&&a.length){var H=[];a.forEach(function(e,t){var n=e.join(String.fromCharCode(0)),o=[];i.forEach(function(r,s){var l=r.join(String.fromCharCode(0)),d=b[n][l];if("col"===j){var u=i[s+1]||[],c=o[o.length-1];if(c&&!c.ended||(c={key:""+n+l,width:0,records:[],ended:!1},o.push(c)),c.records.push({key:r[r.length-1],value:d}),1===r.length&&s===i.length-1||r[r.length-2]!==u[u.length-2]){var p=c.records.length*L;c.width=p,c.ended=!0,u.length||(N.push({key:n,height:P,data:o.slice()}),F+=1,o=[])}}else{var f=a[t+1]||[];H[s]||(H[s]=[]);var h=H[s],m=h[h.length-1];if(m&&!m.ended||(m={key:""+l+n,width:0,records:[],ended:!1},h.push(m)),m.records.push({key:e[e.length-1],value:d}),1===e.length&&t===a.length-1||e[e.length-2]!==f[f.length-2]){if(m.width=A,m.ended=!0,s===i.length-1){var g=m.records.length*L;N.push({key:n,height:g,data:H.reduce(function(e,t){return e.concat(t)},[])}),H=[]}t===a.length-1&&(F+=1)}}})})}else if(i.length){var V=[];i.forEach(function(e,t){var n=e.join(String.fromCharCode(0)),o=g[n].records;if("col"===j){var r=i[t+1]||[],a=V[V.length-1];if(a&&!a.ended||(a={key:n,width:0,records:[],ended:!1},V.push(a)),a.records.push({key:e[e.length-1],value:o}),1===e.length&&t===i.length-1||e[e.length-2]!==r[r.length-2]){var s=a.records.length*L;a.width=s,a.ended=!0,r.length||(N.push({key:n,height:P,data:V.slice()}),F+=1)}}else V.push({key:n,width:A,records:[{key:e[e.length-1],value:o}],ended:!0}),F+=1,t===i.length-1&&N.push({key:n,height:L,data:V.slice()})})}else if(a.length){var q=[];a.forEach(function(e,t){var n=e.join(String.fromCharCode(0)),o=s[n].records;if("row"===j){var r=a[t+1]||[],i=q[q.length-1];if(i&&!i.ended||(i={key:n,width:0,records:[],ended:!1},q.push(i)),i.records.push({key:e[e.length-1],value:o}),1===e.length&&t===a.length-1||e[e.length-2]!==r[r.length-2]){i.width=A,i.ended=!0;var l=i.records.length*L;N.push({key:n,height:l,data:q.slice()}),q=[],t===a.length-1&&(F+=1)}}else N.push({key:n,height:P,data:[{key:n,width:L,records:[{key:e[e.length-1],value:o}],ended:!1}]}),F+=1})}else{var W=b[0],B="col"===j?L:A,U="row"===j?L:P,G={width:B,records:[{key:"data",value:W}],ended:!0};N.push({height:U,data:[G]})}var K=i.length||1,Z=a.length||1;F=F||1;var J=0;"col"===j?(Y=K*L,J=F*P*_.length):(Y=F*A*_.length,J=Z*L),R=l.createElement(c.default,{width:Y,height:J,cols:r,rows:n,dimetionAxisCount:"col"===j?K:Z,metricAxisCount:F,metrics:_,data:this.gridCutting(Y,J,N),chartStyles:y,drawingData:x,dimetionAxis:j,metricAxisConfig:v,color:w,label:k,size:M,xAxis:S,tip:T,renderType:E,legend:C,onCheckTableInteract:O,onDoInteract:D})}else{if(i.length&&a.length)a.forEach(function(e){var t=e.join(String.fromCharCode(0)),n=[];Y=0,i.forEach(function(e){var o=e.join(String.fromCharCode(0)),r=b[t][o],a=g[o],i=a.width,s=a.height,d=f.getPivotCellWidth(i);Y+=d,n.push(l.createElement(u.default,{key:""+t+o,colKey:o,rowKey:t,width:d,height:f.getPivotCellHeight(s),metrics:_,data:r,chartStyles:y,color:w,legend:C}))}),z.push(l.createElement("tr",{key:t},n))});else if(i.length){var X=[];Y=0,i.forEach(function(e){var t=e.join(String.fromCharCode(0)),n=g[t],o=n.width,r=n.height,a=n.records,i=f.getPivotCellWidth(o);Y+=i,X.push(l.createElement(u.default,{key:t,colKey:t,width:i,height:f.getPivotCellHeight(r),metrics:_,data:a,chartStyles:y,color:w,legend:C}))}),z.push(l.createElement("tr",{key:h.uuid(8,16)},X))}else if(a.length)a.forEach(function(e){var t=e.join(String.fromCharCode(0)),n=s[t],o=n.height,r=n.records,a=[];Y=0;var i=f.getPivotCellWidth(p[p.length-1]);Y+=i,a.push(l.createElement(u.default,{key:t,rowKey:t,width:i,height:f.getPivotCellHeight(o),metrics:_,data:r,chartStyles:y,color:w,legend:C})),a.length&&z.push(l.createElement("tr",{key:t},a))});else if(_.length){var Q=b[0],$=0;_.forEach(function(e){var t=Q[e.agg+"("+e.name+")"];$=Math.max($,f.getPivotContentTextWidth(t))});var ee=f.getPivotCellHeight();z.push(l.createElement("tr",{key:h.uuid(8,16)},l.createElement(u.default,{key:h.uuid(8,16),width:$,height:ee,metrics:_,data:Q,chartStyles:y,color:w,legend:C})))}R=l.createElement("table",{className:m.pivot,style:{width:Y}},l.createElement("tbody",null,z))}var te=d((e={},o(e,m.columnBody,!0),o(e,m.bodyCollapsed,I),o(e,m.raw,!j),e));return l.createElement("div",{className:te},R)}}]),t}(l.Component);t.TableBody=g,t.default=g},"./app/containers/Widget/components/Pivot/Xaxis.tsx":function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;ni)return 1;if("number"==typeof e&&"number"!=typeof t)return-1;if("number"==typeof t&&"number"!=typeof e)return 1;if("number"==typeof e&&"number"==typeof t)return 0;if(isNaN(i)&&!isNaN(a))return-1;if(isNaN(a)&&!isNaN(i))return 1;var s=String(e),l=String(t);if(s===l)return 0;if(!o.test(s)||!o.test(l))return s>l?1:-1;for(var d=s.match(n),u=l.match(n);d.length&&u.length;){var c=d.shift(),p=u.shift();if(c!==p)return o.test(c)&&o.test(p)?Number(c.replace(r,".0"))-Number(p.replace(r,".0")):c>p?1:-1}return d.length-u.length}function d(e){return e+2*N.PIVOT_CELL_PADDING+2*N.PIVOT_CELL_BORDER}function u(e){return(e||N.PIVOT_LINE_HEIGHT)+2*N.PIVOT_CELL_PADDING+N.PIVOT_CELL_BORDER}function c(e,t,n,o){var r=void 0,a=void 0;"col"===e?(r=Math.max(1,n[0]),a=t[0]):(r=Math.max(1,n[1]),a=t[1]);var i=a/r,s=o?N.PIVOT_CHART_METRIC_AXIS_MIN_SIZE:N.PIVOT_CHART_ELEMENT_MIN_WIDTH;return Math.max(Math.floor(i),s)}function p(e,t,n,o){return"row"===e&&n>o*t}function f(e,t,n){return Math.max(e,t*n*N.PIVOT_CHART_METRIC_AXIS_MIN_SIZE)/t/n}function h(e,t,n){return Math.max(e,t*n*N.PIVOT_CHART_METRIC_AXIS_MIN_SIZE)/t/n}function m(e,t,n){var o=Array.isArray(n)?n:[n],r=!0,a=!1,i=void 0;try{for(var s,l=o[Symbol.iterator]();!(r=(s=l.next()).done);r=!0){var d=s.value,u=d.requireDimetions,c=d.requireMetrics;if(Array.isArray(u)){if(eu[1])return!1}else if(e!==u)return!1;if(Array.isArray(c)){if(tc[1])return!1}else if(t!==c)return!1}}catch(e){a=!0,i=e}finally{try{!r&&l.return&&l.return()}finally{if(a)throw i}}return!0}function g(e,t){var n=Math.floor(e/t),o=Math.pow(10,(""+n).length-1);return(Math.floor(n/o)+1)*o}function b(e,t){if(1===t)return t;var n=e/t;return Math.abs(n-N.PIVOT_CHART_POINT_LIMIT)/N.PIVOT_CHART_POINT_LIMIT<.2?t:n>N.PIVOT_CHART_POINT_LIMIT?t:b(e,Math.round(t/2))}function _(e){function t(e){return e>=10?Math.floor(e):e.toFixed(1)}return e>=Math.pow(10,9)&&e=Math.pow(10,6)&&e=Math.pow(10,3)&&eN.PIVOT_CANVAS_AXIS_SIZE_LIMIT){var a=[];return r.forEach(function(o){var r={key:""+H.uuid(8,16)+o.key,data:[]},i={key:"",length:0,data:[r]};o.data.forEach(function(s,l){var d="x"===e&&"row"===t||"y"===e&&"col"===t?s.width*n.length:s.width;i.length+d>N.PIVOT_CANVAS_AXIS_SIZE_LIMIT&&(i.key=""+l+i.data.map(function(e){return e.key}).join(","),a.push(i),r={key:""+H.uuid(8,16)+o.key,data:[]},i={key:"",length:0,data:[r]}),i.length+=d,r.data.push(s),l===o.data.length-1&&(i.key=""+l+i.data.map(function(e){return e.key}).join(","),a.push(i))})}),a}return[{key:"block",data:r,length:o}]}function T(e){return function(n){for(var o=n,r=e>N.PIVOT_XAXIS_ROTATE_LIMIT?e:N.PIVOT_XAXIS_SIZE-N.PIVOT_XAXIS_TICK_SIZE;t.getTextWidth(n)>r;)n=n.substring(0,n.length-1);return n===o?n:n.substring(0,n.length-1)+"…"}}function E(e,t,n,o,r){var a=I(e,2),i=a[0],s=a[1],l=r.contentSize,d=r.viewSize,u=I(l,2),c=u[0],p=u[1],f=I(d,2),h=f[0],m=f[1];return[i+c+10>h?i-10-c:i+10,Math.min(s,m-p)]}function C(e,t,n,r,a,s,l,d,u){var c=t.concat(n),p=[].concat(o(r));return a&&(c=c.concat(a.items.map(function(e){return e.name}))),s&&(c=c.concat(s.items.filter(function(e){return"category"===e.type}).map(function(e){return e.name})),p=p.concat(s.items.filter(function(e){return"value"===e.type}))),l&&(p=p.concat(l.items)),d&&(p=p.concat(d.items)),u&&(p=p.concat(u.items)),c=c.reduce(function(e,t){return e.includes(t)||e.push(t),e},[]),p=p.reduce(function(e,t){var n=i(t.name);return e.find(function(e){return e.name.includes(n)&&e.agg===t.agg})||e.push(t),e},[]),function(t){var n=L(t,e);return p.map(function(e){var t=i(e.name),o=n?Array.isArray(n)?n.reduce(function(n,o){return n+o[e.agg+"("+t+")"]},0):n[e.agg+"("+t+")"]:0;return t+": "+o}).concat(c.map(function(e){return e+": "+(n?Array.isArray(n)?n[0][e]:n[e]:"")})).join("
    ")}}function O(e,t,n){var r=n.cols,a=n.metrics,s=n.color,l=n.size,d=n.scatterXAxis,u=n.tip,c=r,p=[].concat(o(a));return s&&(c=c.concat(s.items.map(function(e){return e.name}))),l&&(p=p.concat(l.items)),d&&(p=p.concat(d.items)),u&&(p=p.concat(u.items)),c=c.reduce(function(e,t){return e.includes(t)||e.push(t),e},[]),p=p.reduce(function(e,t){var n=i(t.name);return e.find(function(e){return e.name.includes(n)&&e.agg===t.agg})||e.push(t),e},[]),function(n){var o=n.seriesIndex,r=n.dataIndex,a="funnel"===e?t[r]:t[o][r];return c.map(function(e){return e+": "+(a?Array.isArray(a)?a[0][e]:a[e]:"")}).concat(p.map(function(e){var t=i(e.name),n=a?Array.isArray(a)?a.reduce(function(n,o){return n+o[e.agg+"("+t+")"]},0):a[e.agg+"("+t+")"]:0;return t+": "+n})).join("
    ")}}function D(e,t){return function(n){var o=L(n,e)||{};return"category"===t.type?Array.isArray(o)?o[0][t.name]:o[t.name]||"":Array.isArray(o)?o.reduce(function(e,n){return e+n[t.agg+"("+i(t.name)+")"]},0):o[t.agg+"("+i(t.name)+")"]||0}}function L(e,t){var n=e.seriesIndex,o=e.dataIndex,r=t[n],a=r.type,i=r.grouped,s=r.records;return"cartesian"===a?i?s[o]:s[o].value:"polar"===a?s[o]:s?s[0]:{}}function A(e,t){return Math.max(e/10,t/100)}function P(e){return e>=N.PIVOT_DEFAULT_SCATTER_SIZE_TIMES?e-N.PIVOT_DEFAULT_SCATTER_SIZE_TIMES+1:1/Math.pow(2,N.PIVOT_DEFAULT_SCATTER_SIZE_TIMES-e)}var I=function(){function e(e,t){var n=[],o=!0,r=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(o=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);o=!0);}catch(e){r=!0,a=e}finally{try{!o&&s.return&&s.return()}finally{if(r)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),R=this;Object.defineProperty(t,"__esModule",{value:!0});var N=n("./app/globalConstants.ts"),z=n("./app/containers/Widget/config/index.ts"),Y=z.default.pivot,F=z.default.chart,H=n("./app/utils/util.ts");t.getAggregatorLocale=r,t.encodeMetricName=a,t.decodeMetricName=i,t.spanSize=s,t.naturalSort=l,t.getTextWidth=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:N.DEFAULT_FONT_WEIGHT,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:N.DEFAULT_FONT_SIZE,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:N.DEFAULT_FONT_FAMILY,r=R.canvas||(R.canvas=document.createElement("canvas")),a=r.getContext("2d");a.font=t+" "+n+" "+o;var i=a.measureText(e);return Math.ceil(i.width)},t.getPivotContentTextWidth=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:N.DEFAULT_FONT_WEIGHT,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:N.DEFAULT_FONT_SIZE,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:N.DEFAULT_FONT_FAMILY;return Math.min(t.getTextWidth(e,n,o,r),N.PIVOT_MAX_CONTENT_WIDTH)},t.getPivotCellWidth=d,t.getPivotCellHeight=u,t.getTableBodyWidth=function(e,t,n){var o=n.length&&N.PIVOT_TITLE_SIZE,r="row"===e?n.slice(0,n.length-1).reduce(function(e,t){return e+d(t)},0):n.reduce(function(e,t){return e+d(t)},0);return t-2*N.PIVOT_BORDER-r-N.PIVOT_YAXIS_SIZE-o},t.getTableBodyHeight=function(e,t,n){var o=n&&N.PIVOT_TITLE_SIZE,r="col"===e?Math.max(n-1,0):n;return t-2*N.PIVOT_BORDER-r*u()-N.PIVOT_XAXIS_SIZE-o},t.getChartElementSize=c,t.shouldTableBodyCollapsed=p,t.getChartUnitMetricWidth=f,t.getChartUnitMetricHeight=h,t.checkChartEnable=m,t.getAxisInterval=g,t.getChartPieces=b,t.metricAxisLabelFormatter=_,t.getPivot=v,t.getBar=y,t.getScatter=x,t.getTable=j,t.getStyleConfig=w,t.getChartViewMetrics=k,t.getAxisData=M,t.axisDataCutting=S,t.getXaxisLabel=T,t.getTooltipPosition=E,t.getPivotTooltipLabel=C,t.getChartTooltipLabel=O,t.getChartLabel=D,t.getTriggeringRecord=L,t.getSizeRate=A,t.getSizeValue=P},"./app/containers/Widget/config/chart/bar.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/globalConstants.ts"),r={id:3,name:"bar",title:"柱状图",icon:"icon-chart-bar",coordinate:"cartesian",requireDimetions:[0,1],requireMetrics:[1,9999],dimetionAxis:"col",data:{color:{title:"颜色",type:"category"},tip:{title:"提示信息",type:"value"}},style:{spec:{},label:{showLabel:!1,labelPosition:o.CHART_LABEL_POSITIONS[0].value,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR},xAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR},yAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR,showTitleAndUnit:!0,titleFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,titleFontSize:"12",titleColor:o.PIVOT_DEFAULT_FONT_COLOR},splitLine:{showHorizontalLine:!0,horizontalLineStyle:"dashed",horizontalLineSize:"1",horizontalLineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showVerticalLine:!1,verticalLineStyle:"dashed",verticalLineSize:"1",verticalLineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR},legend:{showLegend:!0,legendPosition:"right",selectAll:!0,fontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:o.PIVOT_DEFAULT_FONT_COLOR}}};t.default=r},"./app/containers/Widget/config/chart/funnel.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/globalConstants.ts"),r={id:6,name:"funnel",title:"漏斗图",icon:"icon-iconloudoutu",coordinate:"cartesian",requireDimetions:[0,9999],requireMetrics:1,dimetionAxis:"col",data:{color:{title:"颜色",type:"category"}},style:{label:{showLabel:!1,funnelLabelPosition:o.CHART_FUNNEL_LABEL_POSITIONS[0].value,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR},legend:{showLegend:!0,legendPosition:"right",selectAll:!0,fontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:o.PIVOT_DEFAULT_FONT_COLOR},spec:{sortMode:o.CHART_SORT_MODES[0].value,alignmentMode:o.CHART_ALIGNMENT_MODES[0].value,gapNumber:0}}};t.default=r},"./app/containers/Widget/config/chart/index.tsx":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Widget/config/chart/table.ts"),r=n("./app/containers/Widget/config/chart/line.ts"),a=n("./app/containers/Widget/config/chart/bar.ts"),i=n("./app/containers/Widget/config/chart/scatter.ts"),s=n("./app/containers/Widget/config/chart/pie.ts"),l=n("./app/containers/Widget/config/chart/funnel.ts"),d=[o.default,r.default,a.default,i.default,s.default,l.default];t.default=d},"./app/containers/Widget/config/chart/line.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/globalConstants.ts"),r={id:2,name:"line",title:"折线图",icon:"icon-chart-line",coordinate:"cartesian",requireDimetions:1,requireMetrics:[1,9999],dimetionAxis:"col",data:{color:{title:"颜色",type:"category"},tip:{title:"提示信息",type:"value"}},style:{spec:{smooth:!1,step:!1},label:{showLabel:!1,labelPosition:o.CHART_LABEL_POSITIONS[0].value,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR},xAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR},yAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR,showTitleAndUnit:!0,titleFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,titleFontSize:"12",titleColor:o.PIVOT_DEFAULT_FONT_COLOR},splitLine:{showHorizontalLine:!0,horizontalLineStyle:"dashed",horizontalLineSize:"1",horizontalLineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showVerticalLine:!1,verticalLineStyle:"dashed",verticalLineSize:"1",verticalLineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR},legend:{showLegend:!0,legendPosition:"right",selectAll:!0,fontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:o.PIVOT_DEFAULT_FONT_COLOR}}};t.default=r},"./app/containers/Widget/config/chart/pie.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/globalConstants.ts"),r={id:5,name:"pie",title:"饼图",icon:"icon-chartpie",coordinate:"cartesian",requireDimetions:[0,9999],requireMetrics:1,dimetionAxis:"col",data:{color:{title:"颜色",type:"category"}},style:{label:{showLabel:!1,pieLabelPosition:o.CHART_PIE_LABEL_POSITIONS[0].value,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR},legend:{showLegend:!0,legendPosition:"right",selectAll:!0,fontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:o.PIVOT_DEFAULT_FONT_COLOR},spec:{roseType:!1,circle:!1}}};t.default=r},"./app/containers/Widget/config/chart/scatter.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/globalConstants.ts"),r={id:4,name:"scatter",title:"散点图",icon:"icon-scatter-chart",coordinate:"cartesian",requireDimetions:[0,9999],requireMetrics:2,dimetionAxis:"col",data:{size:{title:"尺寸",type:"value"},color:{title:"颜色",type:"category"},tip:{title:"提示信息",type:"value"}},style:{spec:{},label:{showLabel:!1,labelPosition:o.CHART_LABEL_POSITIONS[0].value,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR},xAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR,showTitleAndUnit:!0,titleFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,titleFontSize:"12",titleColor:o.PIVOT_DEFAULT_FONT_COLOR},yAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR,showTitleAndUnit:!0,titleFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,titleFontSize:"12",titleColor:o.PIVOT_DEFAULT_FONT_COLOR},splitLine:{showHorizontalLine:!0,horizontalLineStyle:"dashed",horizontalLineSize:"1",horizontalLineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showVerticalLine:!1,verticalLineStyle:"dashed",verticalLineSize:"1",verticalLineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR},legend:{showLegend:!0,legendPosition:"right",selectAll:!0,fontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:o.PIVOT_DEFAULT_FONT_COLOR}}};t.default=r},"./app/containers/Widget/config/chart/table.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/globalConstants.ts"),r={id:1,name:"table",title:"表格",icon:"icon-table",coordinate:"other",requireDimetions:[0,9999],requireMetrics:[0,9999],data:{},style:{table:{fontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:o.PIVOT_DEFAULT_FONT_COLOR,lineStyle:"solid",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,headerBackgroundColor:o.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR}}};t.default=r},"./app/containers/Widget/config/index.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Widget/config/pivot/index.ts"),r=n("./app/containers/Widget/config/chart/index.tsx");t.default={pivot:o.default,chart:r.default}},"./app/containers/Widget/config/pivot/bar.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/globalConstants.ts"),r={id:3,name:"bar",title:"柱状图",icon:"icon-chart-bar",coordinate:"cartesian",requireDimetions:[0,9999],requireMetrics:[1,9999],dimetionAxis:"col",data:{color:{title:"颜色",type:"category"},label:{title:"标签",type:"all"},tip:{title:"提示信息",type:"value"}},style:{xAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR},yAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR,showTitleAndUnit:!0,titleFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,titleFontSize:"12",titleColor:o.PIVOT_DEFAULT_FONT_COLOR},splitLine:{showHorizontalLine:!0,horizontalLineStyle:"dashed",horizontalLineSize:"1",horizontalLineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showVerticalLine:!1,verticalLineStyle:"dashed",verticalLineSize:"1",verticalLineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR},pivot:{fontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:o.PIVOT_DEFAULT_FONT_COLOR,lineStyle:"solid",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,headerBackgroundColor:o.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR}}};t.default=r},"./app/containers/Widget/config/pivot/index.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/containers/Widget/config/pivot/pivot.ts"),r=n("./app/containers/Widget/config/pivot/line.ts"),a=n("./app/containers/Widget/config/pivot/bar.ts"),i=n("./app/containers/Widget/config/pivot/pie.ts"),s=n("./app/containers/Widget/config/pivot/scatter.ts"),l=[o.default,r.default,a.default,s.default,i.default];t.default=l},"./app/containers/Widget/config/pivot/line.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/globalConstants.ts"),r={id:2,name:"line",title:"折线图",icon:"icon-chart-line",coordinate:"cartesian",requireDimetions:[1,9999],requireMetrics:[1,9999],dimetionAxis:"col",data:{color:{title:"颜色",type:"category"},label:{title:"标签",type:"all"},tip:{title:"提示信息",type:"value"}},style:{spec:{smooth:!1,step:!1},xAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR},yAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR,showTitleAndUnit:!0,titleFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,titleFontSize:"12",titleColor:o.PIVOT_DEFAULT_FONT_COLOR},splitLine:{showHorizontalLine:!0,horizontalLineStyle:"dashed",horizontalLineSize:"1",horizontalLineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showVerticalLine:!1,verticalLineStyle:"dashed",verticalLineSize:"1",verticalLineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR},pivot:{fontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:o.PIVOT_DEFAULT_FONT_COLOR,lineStyle:"solid",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,headerBackgroundColor:o.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR}}};t.default=r},"./app/containers/Widget/config/pivot/pie.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/globalConstants.ts"),r={id:5,name:"pie",title:"饼图",icon:"icon-chartpie",coordinate:"polar",requireDimetions:[0,9999],requireMetrics:[1,9999],data:{color:{title:"颜色",type:"category"},label:{title:"标签",type:"all"},tip:{title:"提示信息",type:"value"}},style:{spec:{circle:!1},xAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR},splitLine:{showHorizontalLine:!0,horizontalLineStyle:"dashed",horizontalLineSize:"1",horizontalLineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showVerticalLine:!1,verticalLineStyle:"dashed",verticalLineSize:"1",verticalLineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR},pivot:{fontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:o.PIVOT_DEFAULT_FONT_COLOR,lineStyle:"solid",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,headerBackgroundColor:o.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR}}};t.default=r},"./app/containers/Widget/config/pivot/pivot.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/globalConstants.ts"),r={id:1,name:"pivot",title:"透视表",icon:"icon-table",coordinate:"cartesian",requireDimetions:[0,9999],requireMetrics:[0,9999],data:{color:{title:"颜色",type:"category"}},style:{pivot:{fontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:o.PIVOT_DEFAULT_FONT_COLOR,lineStyle:"solid",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,headerBackgroundColor:o.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR}}};t.default=r},"./app/containers/Widget/config/pivot/scatter.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/globalConstants.ts"),r={id:4,name:"scatter",title:"散点图",icon:"icon-scatter-chart",coordinate:"cartesian",requireDimetions:[0,9999],requireMetrics:[1,9999],data:{xAxis:{title:"x数据轴",type:"value"},color:{title:"颜色",type:"category"},size:{title:"尺寸",type:"value"},label:{title:"标签",type:"all"},tip:{title:"提示信息",type:"value"}},style:{xAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR},yAxis:{showLine:!0,lineStyle:"solid",lineSize:"1",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showLabel:!0,labelFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,labelFontSize:"12",labelColor:o.PIVOT_DEFAULT_FONT_COLOR,showTitleAndUnit:!0,titleFontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,titleFontSize:"12",titleColor:o.PIVOT_DEFAULT_FONT_COLOR},splitLine:{showHorizontalLine:!0,horizontalLineStyle:"dashed",horizontalLineSize:"1",horizontalLineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,showVerticalLine:!1,verticalLineStyle:"dashed",verticalLineSize:"1",verticalLineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR},pivot:{fontFamily:o.PIVOT_CHART_FONT_FAMILIES[0].value,fontSize:"12",color:o.PIVOT_DEFAULT_FONT_COLOR,lineStyle:"solid",lineColor:o.PIVOT_DEFAULT_AXIS_LINE_COLOR,headerBackgroundColor:o.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR}}};t.default=r},"./app/containers/Widget/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LOAD_WIDGETS="davinci/Widget/LOAD_WIDGETS",t.LOAD_WIDGETS_SUCCESS="davinci/Widget/LOAD_WIDGETS_SUCCESS",t.LOAD_WIDGETS_FAILURE="davinci/Widget/LOAD_WIDGETS_FAILURE",t.ADD_WIDGET="davinci/Widget/ADD_WIDGET",t.ADD_WIDGET_SUCCESS="davinci/Widget/ADD_WIDGET_SUCCESS",t.ADD_WIDGET_FAILURE="davinci/Widget/ADD_WIDGET_FAILURE",t.LOAD_WIDGET_DETAIL="davinci/Widget/LOAD_WIDGET_DETAIL",t.LOAD_WIDGET_DETAIL_SUCCESS="davinci/Widget/LOAD_WIDGET_DETAIL_SUCCESS",t.LOAD_WIDGET_DETAIL_FAILURE="davinci/Widget/LOAD_WIDGET_DETAIL_FAILURE",t.EDIT_WIDGET="davinci/Widget/EDIT_WIDGET",t.EDIT_WIDGET_SUCCESS="davinci/Widget/EDIT_WIDGET_SUCCESS",t.EDIT_WIDGET_FAILURE="davinci/Widget/EDIT_WIDGET_FAILURE",t.DELETE_WIDGET="davinci/Widget/DELETE_WIDGET",t.DELETE_WIDGET_SUCCESS="davinci/Widget/DELETE_WIDGET_SUCCESS",t.DELETE_WIDGET_FAILURE="davinci/Widget/DELETE_WIDGET_FAILURE",t.CLEAR_CURRENT_WIDGET="davinci/Widget/CLEAR_CURRENT_WIDGET"},"./app/containers/Widget/reducer.ts":function(e,t,n){"use strict";function o(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:l,t=arguments[1],n=t.type,o=t.payload,s=e.get("widgets");switch(n){case r.LOAD_WIDGETS:return e.set("loading",!0).set("widgets",null);case r.LOAD_WIDGETS_SUCCESS:return e.set("loading",!1).set("widgets",o.widgets);case r.LOAD_WIDGETS_FAILURE:return e.set("loading",!1);case r.ADD_WIDGET:return e.set("loading",!0);case r.ADD_WIDGET_SUCCESS:return s?(s.push(o.result),e.set("loading",!1).set("widgets",s.slice())):e.set("loading",!1).set("widgets",[o.result]);case r.ADD_WIDGET_FAILURE:return e.set("loading",!1);case r.DELETE_WIDGET:return e.set("loading",!0);case r.DELETE_WIDGET_SUCCESS:return e.set("widgets",s.filter(function(e){return e.id!==o.id})).set("loading",!1);case r.DELETE_WIDGET_FAILURE:return e.set("loading",!1);case r.LOAD_WIDGET_DETAIL:return e.set("loading",!0).set("currentWidget",null);case r.LOAD_WIDGET_DETAIL_SUCCESS:return e.set("loading",!1).set("currentWidget",o.detail);case r.LOAD_WIDGET_DETAIL_FAILURE:return e.set("loading",!1);case r.EDIT_WIDGET:return e.set("loading",!0);case r.EDIT_WIDGET_SUCCESS:case r.EDIT_WIDGET_FAILURE:return e.set("loading",!1);case i.LOAD_DATA:return e.set("dataLoading",!0);case i.LOAD_DATA_SUCCESS:case i.LOAD_DATA_FAILURE:return e.set("dataLoading",!1);case i.CLEAR_BIZDATAS:return e.set("bizdatas",!1);case a.LOAD_DASHBOARD_DETAIL_SUCCESS:return e.set("widgets",o.widgets);case i.LOAD_DISTINCT_VALUE:return e.set("columnValueLoading",!0).set("distinctColumnValues",null);case i.LOAD_DISTINCT_VALUE_SUCCESS:return e.set("columnValueLoading",!1).set("distinctColumnValues",o.data[o.fieldName].slice(0,100));case i.LOAD_DISTINCT_VALUE_FAILURE:return e.set("columnValueLoading",!1);case r.CLEAR_CURRENT_WIDGET:return e.set("currentWidget",null);default:return e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/containers/Widget/constants.ts"),a=n("./app/containers/Dashboard/constants.ts"),i=n("./app/containers/Bizlogic/constants.ts"),s=n("./node_modules/immutable/dist/immutable.js"),l=s.fromJS({widgets:null,currentWidget:null,loading:!1,dataLoading:!1,columnValueLoading:!1,distinctColumnValues:null});t.default=o},"./app/containers/Widget/render/chart/bar.ts":function(e,t,n){"use strict";function o(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t1)&&(D={legend:s.getLegendOption(f,O)});var L={showLine:b,lineColor:_,lineSize:v,lineStyle:y},A={showLine:x,lineColor:j,lineSize:w,lineStyle:k};return Object.assign({xAxis:s.getDimetionAxisOption(h,L,S),yAxis:s.getMetricAxisOption(m,A,r.map(function(e){return i.decodeMetricName(e.name)}).join(" / ")),series:E,tooltip:{formatter:i.getChartTooltipLabel("bar",C,{cols:n,metrics:r,color:u,tip:c})}},D,{grid:s.getGridPositions(f,O)})}var a=function(){function e(e,t){var n=[],o=!0,r=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(o=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);o=!0);}catch(e){r=!0,a=e}finally{try{!o&&s.return&&s.return()}finally{if(r)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();Object.defineProperty(t,"__esModule",{value:!0});var i=n("./app/containers/Widget/components/util.ts"),s=n("./app/containers/Widget/render/chart/util.ts"),l=n("./app/assets/json/echartsThemes/default.project.json"),d=l.theme.color;t.default=r},"./app/containers/Widget/render/chart/funnel.ts":function(e,t,n){"use strict";function o(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t1)&&(P={legend:s.getLegendOption(b,A)});var I={showLine:_,lineColor:v,lineSize:y,lineStyle:x},R={showLine:j,lineColor:w,lineSize:k,lineStyle:M};return Object.assign({xAxis:s.getDimetionAxisOption(f,I,C),yAxis:s.getMetricAxisOption(h,R,r.map(function(e){return i.decodeMetricName(e.name)}).join(" / ")),series:D,tooltip:{formatter:i.getChartTooltipLabel("line",L,{cols:n,metrics:r,color:u,tip:c})}},P,{grid:s.getGridPositions(b,A)})}var a=function(){function e(e,t){var n=[],o=!0,r=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(o=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);o=!0);}catch(e){r=!0,a=e}finally{try{!o&&s.return&&s.return()}finally{if(r)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();Object.defineProperty(t,"__esModule",{value:!0});var i=n("./app/containers/Widget/components/util.ts"),s=n("./app/containers/Widget/render/chart/util.ts"),l=n("./app/assets/json/echartsThemes/default.project.json"),d=l.theme.color;t.default=r},"./app/containers/Widget/render/chart/pie.ts":function(e,t,n){"use strict";function o(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t{c} ({d}%)"},legend:s.getLegendOption(f,k),series:w}}var a=function(){function e(e,t){var n=[],o=!0,r=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(o=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);o=!0);}catch(e){r=!0,a=e}finally{try{!o&&s.return&&s.return()}finally{if(r)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();Object.defineProperty(t,"__esModule",{value:!0});var i=n("./app/containers/Widget/components/util.ts"),s=n("./app/containers/Widget/render/chart/util.ts");t.default=r},"./app/containers/Widget/render/chart/scatter.ts":function(e,t,n){"use strict";function o(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t3&&void 0!==arguments[3]?arguments[3]:"y",r=e.showLine,a=e.lineStyle,i=e.lineSize,s=e.lineColor,l=e.showLabel,d=e.labelFontFamily,u=e.labelFontSize,c=e.labelColor,p=e.showTitleAndUnit,f=e.titleFontFamily,m=e.titleFontSize,g=e.titleColor,b=t.showLine,_=t.lineStyle,v=t.lineSize,y=t.lineColor;return{type:"value",axisLabel:{show:l,color:c,fontFamily:d,fontSize:u,formatter:h.metricAxisLabelFormatter},axisLine:{show:r,lineStyle:{color:s,width:i,type:a}},axisTick:{show:r,lineStyle:{color:s}},name:p?n:"",nameLocation:"y"===o?"middle":"center",nameGap:"y"===o?45:30,nameTextStyle:{color:g,fontFamily:f,fontSize:m},splitLine:{show:b,lineStyle:{color:y,width:v,type:_}}}}function s(e,t,n,o){var r=t.showLabel,a=t.labelPosition,i=t.labelFontFamily,s=t.labelFontSize,l=t.labelColor,d=t.pieLabelPosition,u=t.funnelLabelPosition,c=void 0;switch(e){case"pie":c=d;break;case"funnel":c=u;break;default:c=a}return Object.assign({normal:Object.assign({show:("pie"!==e||"center"!==d)&&r,position:c,color:l,fontFamily:i,fontSize:s},o)},n&&{emphasis:Object.assign({show:r,position:c,color:l,fontFamily:i,fontSize:s},o)})}function l(e,t){var n=e.showLegend,o=e.legendPosition,a=e.selectAll,i=e.fontFamily,s=e.fontSize,l=e.color,d=void 0,u=void 0;switch(o){case"top":d={orient:"horizontal"},u={top:8,left:8,right:8,height:32};break;case"bottom":d={orient:"horizontal"},u={bottom:8,left:8,right:8,height:32};break;case"left":d={orient:"vertical"},u={left:8,top:16,bottom:24,width:96};break;default:d={orient:"vertical"},u={right:8,top:16,bottom:24,width:96}}var c={selected:t.reduce(function(e,t){return Object.assign({},e,r({},t,a))},{})};return Object.assign({show:n,data:t,type:"scroll",textStyle:{fontFamily:i,fontSize:s,color:l}},d,u,c)}function d(e,t){var n=e.showLegend,r=e.legendPosition,a=e.fontSize;return m.CHART_LEGEND_POSITIONS.reduce(function(e,i){var s=i.value;return e[s]=u(s),n&&(e[s]+=r===s?["top","bottom"].includes(s)?32:32+Math.max.apply(Math,o(t.map(function(e){return h.getTextWidth(e,"",a+"px")}))):0),e},{})}function u(e){switch(e){case"top":return 24;case"left":return 64;case"right":return 24;case"bottom":return 50}}function c(e,t,n,o,a){var i={};return e.forEach(function(e){var o=t.map(function(t){return e[t]}).join(" "),r=e[n];i[o]||(i[o]={}),i[o][r]||(i[o][r]=[]),i[o][r].push(e)}),Object.keys(i).map(function(e){var t=i[e];i[e]=a.map(function(e){return t[e]?t[e][0]:o.reduce(function(e,t){return Object.assign({},e,r({},t.agg+"("+h.decodeMetricName(t.name)+")",0))},{})})}),i}function p(e,t){return t?Object.keys(e.reduce(function(e,n){return e[n[t]]||(e[n[t]]=!0),e},{})):[]}function f(e,t){return e?Math.ceil(t/e):t}Object.defineProperty(t,"__esModule",{value:!0});var h=n("./app/containers/Widget/components/util.ts"),m=n("./app/globalConstants.ts");t.getDimetionAxisOption=a,t.getMetricAxisOption=i,t.getLabelOption=s,t.getLegendOption=l,t.getGridPositions=d,t.makeGrouped=c,t.distinctXaxis=p,t.getSymbolSize=f},"./app/containers/Widget/render/pivot/bar.ts":function(e,t,n){"use strict";function o(e){return{chartOption:{type:"bar",barWidth:.8*e},stackOption:!0}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o},"./app/containers/Widget/render/pivot/index.ts":function(e,t,n){"use strict";function o(e,t){switch(e){case"line":return r.default();case"bar":return a.default(t.elementSize);case"scatter":return i.default(t.sizeRate);case"pie":return s.default()}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./app/containers/Widget/render/pivot/line.ts"),a=n("./app/containers/Widget/render/pivot/bar.ts"),i=n("./app/containers/Widget/render/pivot/scatter.ts"),s=n("./app/containers/Widget/render/pivot/pie.ts");t.default=o},"./app/containers/Widget/render/pivot/line.ts":function(e,t,n){"use strict";function o(){return{chartOption:{type:"line"}}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o},"./app/containers/Widget/render/pivot/pie.ts":function(e,t,n){"use strict";function o(){return{chartOption:{type:"pie"},calcPieCenterAndRadius:function(e,t,n,o,r,a,i,s,l,d,u,c,p,f,h,m){var g=void 0,b=void 0;if("col"===e){var _=100/l/u,v=100/a;if(g=[v*(m+s+1)-v/2+"%",_*(h+u*p+1)-_/2+"%"],t>n){b=["0%",100/u/l*Math.min(o/r[0],1)*.75+"%"]}else{b=["0%",100/a*Math.min(r[0]/o,1)*.75+"%"]}}else{var y=100/i,x=100/d/u;if(g=[x*(h+u*f+1)-x/2+"%",y*(i-m-p*c)-y/2+"%"],t>n){b=["0%",100/i*Math.min(r[1]/o,1)*.75+"%"]}else{b=["0%",100/u/d*Math.min(o/r[1],1)*.75+"%"]}}return{center:g,radius:b}}}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o},"./app/containers/Widget/render/pivot/scatter.ts":function(e,t,n){"use strict";function o(e){return{chartOption:{type:"scatter"},getSymbolSize:function(t,n){return e?Math.ceil(n/e[t]):n}}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=o},"./app/globalConfig.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.envName={production:"production",dev:"dev"},t.env=t.envName.production,t.default={dev:{host:"/api/v3",shareHost:"/share.html"},production:{host:"/api/v3",shareHost:"/share.html"}}},"./app/globalConstants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/assets/json/echartsThemes/default.project.json");t.DEFAULT_ECHARTS_THEME=o.theme,t.DEFAULT_PRIMARY_COLOR="#1B98E0",t.DEFAULT_SECONDARY_COLOR="#223151",t.GRID_BREAKPOINTS={lg:1200,md:996,sm:768,xs:480,xxs:0},t.GRID_COLS={lg:12,md:12,sm:12,xs:2,xxs:2},t.GRID_ITEM_MARGIN=16,t.GRID_ROW_HEIGHT=30,t.TABLE_HEADER_HEIGHT=50,t.TABLE_PAGINATION_HEIGHT=61,t.COLUMN_WIDTH=150,t.DASHBOARD_ITEM_FILTER_HEIGHT=40,t.DEFAULT_TABLE_PAGE=1,t.DEFAULT_TABLE_PAGE_SIZE=20,t.PIVOT_CELL_PADDING=4,t.PIVOT_CELL_BORDER=1,t.PIVOT_LINE_HEIGHT=18,t.PIVOT_MAX_CONTENT_WIDTH=200,t.PIVOT_BORDER=1,t.PIVOT_CHART_ELEMENT_MIN_WIDTH=24,t.PIVOT_CHART_ELEMENT_MAX_WIDTH=72,t.PIVOT_CHART_METRIC_AXIS_MIN_SIZE=80,t.PIVOT_CHART_SPLIT_SIZE=40,t.PIVOT_CHART_POINT_LIMIT=100,t.PIVOT_XAXIS_SIZE=50,t.PIVOT_YAXIS_SIZE=64,t.PIVOT_TITLE_SIZE=27,t.PIVOT_XAXIS_ROTATE_LIMIT=30,t.PIVOT_XAXIS_TICK_SIZE=12,t.PIVOT_LEGEND_ITEM_PADDING=32,t.PIVOT_LEGEND_PADDING=16,t.PIVOT_DEFAULT_SCATTER_SIZE=10,t.PIVOT_DEFAULT_SCATTER_SIZE_TIMES=4,t.PIVOT_CANVAS_SIZE_LIMIT=3e3,t.PIVOT_CANVAS_AXIS_SIZE_LIMIT=8e3,t.PIVOT_CANVAS_POLAR_SIZE_LIMIT=8e3,t.PIVOT_DEFAULT_AXIS_LINE_COLOR="#D9D9D9",t.PIVOT_DEFAULT_FONT_COLOR="#666",t.PIVOT_DEFAULT_HEADER_BACKGROUND_COLOR="#f7f7f7",t.PIVOT_CHART_FONT_FAMILIES=[{name:"苹方",value:"PingFang SC"},{name:"微软雅黑",value:"Microsoft YaHei"},{name:"宋体",value:"SimSun"},{name:"黑体",value:"SimHei"},{name:"Helvetica Neue",value:'"Helvetica Neue"'},{name:"Helvetica",value:"Helvetica"},{name:"Arial",value:"Arial"},{name:"sans-serif",value:"sans-serif"}],t.PIVOT_CHART_LINE_STYLES=[{name:"实线",value:"solid"},{name:"虚线",value:"dashed"},{name:"点",value:"dotted"}],t.PIVOT_CHART_FONT_SIZES=[10,12,13,14,15,16,18,20,24,28,32,36,40,48,56,64],t.CHART_LABEL_POSITIONS=[{name:"上",value:"top"},{name:"左",value:"left"},{name:"右",value:"right"},{name:"下",value:"bottom"},{name:"内",value:"inside"},{name:"内左",value:"insideLeft"},{name:"内右",value:"insideRight"},{name:"内上",value:"insideTop"},{name:"内下",value:"insideBottom"},{name:"内左上",value:"insideTopLeft"},{name:"内左下",value:"insideBottomLeft"},{name:"内右上",value:"insideTopRight"},{name:"内右下",value:"insideBottomRight"}],t.CHART_PIE_LABEL_POSITIONS=[{name:"外侧",value:"outside"},{name:"内部",value:"inside"},{name:"中心",value:"center"}],t.CHART_FUNNEL_LABEL_POSITIONS=[{name:"左侧",value:"left"},{name:"右侧",value:"right"},{name:"内部",value:"inside"}],t.CHART_SORT_MODES=[{name:"降序",value:"descending"},{name:"升序",value:"ascending"},{name:"无",value:"none"}],t.CHART_ALIGNMENT_MODES=[{name:"居中",value:"center"},{name:"居左",value:"left"},{name:"居右",value:"right"}],t.CHART_LEGEND_POSITIONS=[{name:"右",value:"right"},{name:"上",value:"top"},{name:"下",value:"bottom"},{name:"左",value:"left"}],t.SQL_STRING_TYPES=["CHAR","VARCHAR","TINYTEXT","TEXT","MEDIUMTEXT","LONGTEXT","JSON","LINESTRING","MULTILINESTRING","TINYBLOB","MEDIUMBLOB","BLOB","LONGBLOB","BINARY","VARBINARY","ENUM","SET"],t.SQL_NUMBER_TYPES=["TINYINT","SMALLINT","MEDIUMINT","INT","INTEGER","BIGINT","FLOAT","DOUBLE","DOUBLE PRECISION","REAL","DECIMAL","BIT","SERIAL","BOOL","BOOLEAN","DEC","FIXED","NUMERIC"],t.SQL_DATE_TYPES=["DATE","DATETIME","TIMESTAMP","TIME","YEAR"],t.DEFAULT_SPLITER="@davinci@",t.KEY_COLUMN="davinciUniqueId",t.ECHARTS_RENDERER="echarts",t.DEFAULT_FONT_WEIGHT="normal",t.DEFAULT_FONT_SIZE="12px",t.DEFAULT_FONT_FAMILY='"Helvetica Neue For Number", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif',t.DEFAULT_DATE_FORMAT="YYYY-MM-DD",t.DEFAULT_DATETIME_FORMAT="YYYY-MM-DD HH:mm:ss"},"./app/i18n.js":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"appLocales",function(){return h}),n.d(t,"formatTranslationMessages",function(){return m}),n.d(t,"translationMessages",function(){return g});var r=n("./node_modules/react-intl/lib/index.es.js"),a=n("./node_modules/react-intl/locale-data/en.js"),i=n.n(a),s=n("./node_modules/react-intl/locale-data/de.js"),l=n.n(s),d=n("./app/containers/App/constants.ts"),u=(n.n(d),n("./app/translations/en.json")),c=n.n(u),p=n("./app/translations/de.json"),f=n.n(p);Object(r.addLocaleData)(i.a),Object(r.addLocaleData)(l.a);var h=["en","de"],m=function e(t,n){var r=t!==d.DEFAULT_LOCALE?e(d.DEFAULT_LOCALE,c.a):{};return Object.keys(n).reduce(function(e,a){var i=n[a]||t===d.DEFAULT_LOCALE?n[a]:r[a];return Object.assign(e,o({},a,i))},{})},g={en:m("en",c.a),de:m("de",f.a)}},"./app/reducers.ts":function(e,t,n){"use strict";function o(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p,t=arguments[1];switch(t.type){case s.LOCATION_CHANGE:return e.merge({locationBeforeTransitions:t.payload});default:return e}}function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return i.combineReducers(Object.assign({route:o,language:l.default,report:d.default,bizlogic:u.default,widget:c.default},e))}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/immutable/dist/immutable.js"),i=n("./node_modules/redux-immutable/dist/index.js"),s=n("./node_modules/react-router-redux/lib/index.js"),l=n("./app/containers/LanguageProvider/reducer.ts"),d=n("./app/containers/Report/reducer.ts"),u=n("./app/containers/Bizlogic/reducer.ts"),c=n("./app/containers/Widget/reducer.ts"),p=a.fromJS({locationBeforeTransitions:null});t.default=r},"./app/translations/de.json":function(e,t){e.exports={}},"./app/translations/en.json":function(e,t){e.exports={}},"./app/utils/api.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./app/globalConfig.ts"),r=n.n(o),a=r.a[o.env].host;t.default={login:a+"/login",group:a+"/groups",user:a+"/users",changepwd:a+"/changepwd",source:a+"/sources",bizlogic:a+"/views",widget:a+"/widgets",display:a+"/displays",share:a+"/share",checkName:a+"/check",projectsCheckName:a+"/check/",uploads:a+"/uploads",schedule:a+"/cronjobs",signup:a+"/users",organizations:a+"/organizations",checkNameUnique:a+"/check",projects:a+"/projects",teams:a+"/teams",portal:a+"/dashboardPortals",star:a+"/star"}},"./app/utils/asyncAdapter.js":function(e,t,n){"use strict";function o(e){return e&&l.apiConfig[e]?l.apiConfig[e].env:s.env}function r(e,t){switch(o(t)){case"production":return e.payload||[];default:return e}}function a(e,t){switch(o(t)){case"production":return e.payload;default:return e}}function i(e,t){switch(o(t)){case"production":return{payload:[e]};default:return e}}Object.defineProperty(t,"__esModule",{value:!0}),t.readListAdapter=r,t.readObjectAdapter=a,t.writeAdapter=i;var s=n("./app/globalConfig.ts"),l=(n.n(s),n("./app/utils/api.js"))},"./app/utils/checkStore.ts":function(e,t,n){"use strict";function o(e){s(r(e,{dispatch:a,subscribe:a,getState:a,replaceReducer:a,runSaga:a,injectedReducers:i,injectedSagas:i}),"(app/utils...) injectors: Expected a valid redux store")}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/lodash/conformsTo.js"),a=n("./node_modules/lodash/isFunction.js"),i=n("./node_modules/lodash/isObject.js"),s=n("./node_modules/invariant/browser.js");t.default=o},"./app/utils/constants.ts":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RESTART_ON_REMOUNT="@@saga-injector/restart-on-remount",t.DAEMON="@@saga-injector/daemon",t.ONCE_TILL_UNMOUNT="@@saga-injector/once-till-unmount"},"./app/utils/injectReducer.tsx":function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},r=arguments[2];t||c.default(e);var a=Object.assign({},o,{mode:o.mode||p.RESTART_ON_REMOUNT}),i=a.saga,s=a.mode;h(n),m(a);var l=Reflect.has(e.injectedSagas,n);(!l||l&&s!==p.DAEMON&&s!==p.ONCE_TILL_UNMOUNT)&&(e.injectedSagas[n]=Object.assign({},a,{task:e.runSaga(i,r)}))}}function r(e,t){return function(n){if(t||c.default(e),h(n),Reflect.has(e.injectedSagas,n)){var o=e.injectedSagas[n];o.mode!==p.DAEMON&&(o.task.cancel(),e.injectedSagas[n]="done")}}}function a(e){return c.default(e),{injectSaga:o(e,!0),ejectSaga:r(e,!0)}}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/lodash/isEmpty.js"),s=n("./node_modules/lodash/isFunction.js"),l=n("./node_modules/lodash/isString.js"),d=n("./node_modules/invariant/browser.js"),u=n("./node_modules/lodash/conformsTo.js"),c=n("./app/utils/checkStore.ts"),p=n("./app/utils/constants.ts"),f=[p.RESTART_ON_REMOUNT,p.DAEMON,p.ONCE_TILL_UNMOUNT],h=function(e){return d(l(e)&&!i(e),"(app/utils...) injectSaga: Expected `key` to be a non empty string")},m=function(e){d(u(e,{saga:s,mode:function(e){return l(e)&&f.includes(e)}}),"(app/utils...) injectSaga: Expected a valid saga descriptor")};t.injectSagaFactory=o,t.ejectSagaFactory=r,t.default=a},"./app/utils/util.ts":function(e,t,n){"use strict";function o(e,t){var n=Math.max((""+e).indexOf(".")>=0?(""+e).substr((""+e).indexOf(".")+1).length:0,(""+t).indexOf(".")>=0?(""+t).substr((""+t).indexOf(".")+1).length:0);if(n){var o=Math.pow(10,n);return(Math.round(e*o)+Math.round(t*o))/o}return e+t}function r(e){if(e.response)switch(e.response.status){case 403:l.error("未登录或会话过期,请重新登录",1),s.removeToken(),localStorage.removeItem("TOKEN");var t=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search+"#login";location.replace(t);case 401:l.error("您没有权限访问此数据",2);break;default:l.error(e.response.data.header.msg,3)}else l.error(e,3)}function a(e,t){var n=new FileReader;n.addEventListener("load",function(){return t(n.result)}),n.readAsDataURL(e)}function i(e){var t=[];return e.length&&e.forEach(function(e){var n=[];e.columns&&e.columns.length&&e.columns.forEach(function(e){n.push({title:e.name,key:e.name})}),t.push({title:e.tableName,key:e.tableName,children:n})}),t}Object.defineProperty(t,"__esModule",{value:!0});var s=n("./app/utils/request.ts"),l=n("./node_modules/antd/lib/message/index.js");t.uuid=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:62,n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),o=[],r=void 0;if(e)for(r=0;r, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}},{key:"componentDidMount",value:function(){void 0!==window.SVGElement&&c.findDOMNode(this)instanceof SVGElement&&this.setState({isElementSVG:!0})}},{key:"componentWillReceiveProps",value:function(e){!e.position||this.props.position&&e.position.x===this.props.position.x&&e.position.y===this.props.position.y||this.setState({x:e.position.x,y:e.position.y})}},{key:"componentWillUnmount",value:function(){this.setState({dragging:!1})}},{key:"render",value:function(){var e,t={},n=null,r=Boolean(this.props.position),a=!r||this.state.dragging,i=this.props.position||this.props.defaultPosition,l={x:h.canDragX(this)&&a?this.state.x:i.x,y:h.canDragY(this)&&a?this.state.y:i.y};this.state.isElementSVG?n=f.createSVGTransform(l):t=f.createCSSTransform(l);var d=this.props,c=d.defaultClassName,g=d.defaultClassNameDragging,b=d.defaultClassNameDragged,_=u.Children.only(this.props.children),v=p(_.props.className||"",c,(e={},o(e,g,this.state.dragging),o(e,b,this.state.dragged),e));return u.createElement(m.default,s({},this.props,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),u.cloneElement(_,{className:v,style:Object.assign({},_.props.style,t),transform:n}))}}]),t}(u.Component);b.displayName="Draggable",b.defaultProps=Object.assign({},m.default.defaultProps,{axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},position:null}),t.default=b},"./libs/react-draggable/lib/DraggableCore.tsx":function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var i=function(){function e(e,t){var n=[],o=!0,r=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(o=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);o=!0);}catch(e){r=!0,a=e}finally{try{!o&&s.return&&s.return()}finally{if(r)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function(){function e(e,t){for(var n=0;n not mounted on DragStart!");var o=n.ownerDocument;if(!(e.props.disabled||!(t.target instanceof Node)||e.props.handle&&!u.matchesSelectorAndParentsTo(t.target,e.props.handle,n)||e.props.cancel&&u.matchesSelectorAndParentsTo(t.target,e.props.cancel,n))){var r=u.getTouchIdentifier(t);e.setState({touchIdentifier:r});var a=c.getControlPosition(t,r,e);if(null!=a){var i=a.x,s=a.y,l=c.createCoreData(e,i,s);p.default("DraggableCore: handleDragStart: %j",l),p.default("calling",e.props.onStart);!1!==e.props.onStart(t,l)&&(e.props.enableUserSelectHack&&u.addUserSelectStyles(o),e.setState({dragging:!0,lastX:i,lastY:s}),u.addEvent(o,h.move,e.handleDrag),u.addEvent(o,h.stop,e.handleDragStop))}}},e.handleDrag=function(t){"touchmove"===t.type&&t.preventDefault();var n=c.getControlPosition(t,e.state.touchIdentifier,e);if(null!=n){var o=n.x,r=n.y;if(Array.isArray(e.props.grid)){var a=c.snapToGrid(e.props.grid,o-e.state.lastX,r-e.state.lastY),s=i(a,2),l=s[0],d=s[1];if(!l&&!d)return;o=e.state.lastX+l,r=e.state.lastY+d}var u=c.createCoreData(e,o,r);p.default("DraggableCore: handleDrag: %j",u);if(!1!==e.props.onDrag(t,u))e.setState({lastX:o,lastY:r});else try{e.handleDragStop(new MouseEvent("mouseup"))}catch(t){var f=document.createEvent("MouseEvents");f.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),e.handleDragStop(f)}}},e.handleDragStop=function(t){if(e.state.dragging){var n=c.getControlPosition(t,e.state.touchIdentifier,e);if(null!=n){var o=n.x,r=n.y,a=c.createCoreData(e,o,r),i=d.findDOMNode(e);i&&e.props.enableUserSelectHack&&u.removeUserSelectStyles(i.ownerDocument),p.default("DraggableCore: handleDragStop: %j",a),e.setState({dragging:!1,lastX:NaN,lastY:NaN}),e.props.onStop(t,a),i&&(p.default("DraggableCore: Removing handlers"),u.removeEvent(i.ownerDocument,h.move,e.handleDrag),u.removeEvent(i.ownerDocument,h.stop,e.handleDragStop))}}},e.onMouseDown=function(t){return h=f.mouse,e.handleDragStart(t)},e.onMouseUp=function(t){return h=f.mouse,e.handleDragStop(t)},e.onTouchStart=function(t){return h=f.touch,e.handleDragStart(t)},e.onTouchEnd=function(t){return h=f.touch,e.handleDragStop(t)},e}return a(t,e),s(t,[{key:"componentWillUnmount",value:function(){var e=d.findDOMNode(this);if(e){var t=e.ownerDocument;u.removeEvent(t,f.mouse.move,this.handleDrag),u.removeEvent(t,f.touch.move,this.handleDrag),u.removeEvent(t,f.mouse.stop,this.handleDragStop),u.removeEvent(t,f.touch.stop,this.handleDragStop),this.props.enableUserSelectHack&&u.removeUserSelectStyles(t)}}},{key:"render",value:function(){return l.cloneElement(l.Children.only(this.props.children),{style:u.styleHacks(this.props.children.props.style),onMouseDown:this.onMouseDown,onTouchStart:this.onTouchStart,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}}]),t}(l.Component);m.displayName="DraggableCore",m.defaultProps={allowAnyClick:!1,cancel:null,disabled:!1,enableUserSelectHack:!0,offsetParent:null,handle:null,grid:null,scale:1,transform:null,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){}},t.default=m},"./libs/react-draggable/lib/utils/domFns.ts":function(e,t,n){"use strict";function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){return k||(k=j.findInArray(["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"],function(t){return j.isFunction(e[t])})),!!j.isFunction(e[k])&&e[k](t)}function a(e,t,n){var o=e;do{if(r(o,t))return!0;if(o===n)return!1;o=o.parentNode}while(o);return!1}function i(e,t,n){e&&(e.attachEvent?e.attachEvent("on"+t,n):e.addEventListener?e.addEventListener(t,n,!0):e["on"+t]=n)}function s(e,t,n){e&&(e.detachEvent?e.detachEvent("on"+t,n):e.removeEventListener?e.removeEventListener(t,n,!0):e["on"+t]=null)}function l(e){var t=e.clientHeight,n=e.ownerDocument.defaultView.getComputedStyle(e);return t+=j.int(n.borderTopWidth),t+=j.int(n.borderBottomWidth)}function d(e){var t=e.clientWidth,n=e.ownerDocument.defaultView.getComputedStyle(e);return t+=j.int(n.borderLeftWidth),t+=j.int(n.borderRightWidth)}function u(e){var t=e.clientHeight,n=e.ownerDocument.defaultView.getComputedStyle(e);return t-=j.int(n.paddingTop),t-=j.int(n.paddingBottom)}function c(e){var t=e.clientWidth,n=e.ownerDocument.defaultView.getComputedStyle(e);return t-=j.int(n.paddingLeft),t-=j.int(n.paddingRight)}function p(e,t){var n=t===t.ownerDocument.body,o=n?{left:0,top:0}:t.getBoundingClientRect();return{x:e.clientX+t.scrollLeft-o.left,y:e.clientY+t.scrollTop-o.top}}function f(e){var t=e.x,n=e.y;return o({},w.browserPrefixToKey("transform",w.default),"translate("+t+"px,"+n+"px)")}function h(e){return"translate("+e.x+","+e.y+")"}function m(e,t){return e.targetTouches&&j.findInArray(e.targetTouches,function(e){return t===e.identifier})||e.changedTouches&&j.findInArray(e.changedTouches,function(e){return t===e.identifier})}function g(e){return e.targetTouches&&e.targetTouches[0]?e.targetTouches[0].identifier:e.changedTouches&&e.changedTouches[0]?e.changedTouches[0].identifier:void 0}function b(e){if(e){var t=e.getElementById("react-draggable-style-el");t||(t=e.createElement("style"),t.setAttribute("type","text/css"),t.id="react-draggable-style-el",t.innerHTML=".react-draggable-transparent-selection *::-moz-selection {background: transparent;}\n",t.innerHTML+=".react-draggable-transparent-selection *::selection {background: transparent;}\n",e.getElementsByTagName("head")[0].appendChild(t)),e.body&&y(e.body,"react-draggable-transparent-selection")}}function _(e){try{e&&e.body&&x(e.body,"react-draggable-transparent-selection"),window.getSelection().removeAllRanges()}catch(e){}}function v(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object.assign({touchAction:"none"},e)}function y(e,t){e.classList?e.classList.add(t):e.className.match(new RegExp("(?:^|\\s)"+t+"(?!\\S)"))||(e.className+=" "+t)}function x(e,t){e.classList?e.classList.remove(t):e.className=e.className.replace(new RegExp("(?:^|\\s)"+t+"(?!\\S)","g"),"")}Object.defineProperty(t,"__esModule",{value:!0});var j=n("./libs/react-draggable/lib/utils/shims.ts"),w=n("./libs/react-draggable/lib/utils/getPrefix.ts"),k="";t.matchesSelector=r,t.matchesSelectorAndParentsTo=a,t.addEvent=i,t.removeEvent=s,t.outerHeight=l,t.outerWidth=d,t.innerHeight=u,t.innerWidth=c,t.offsetXYFromParent=p,t.createCSSTransform=f,t.createSVGTransform=h,t.getTouch=m,t.getTouchIdentifier=g,t.addUserSelectStyles=b,t.removeUserSelectStyles=_,t.styleHacks=v,t.addClassName=y,t.removeClassName=x},"./libs/react-draggable/lib/utils/getPrefix.ts":function(e,t,n){"use strict";function o(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"transform";if("undefined"==typeof window||void 0===window.document)return"";var t=window.document.documentElement.style;if(e in t)return"";for(var n=0;n: Unmounted during event!");return t}var p=function(){function e(e,t){var n=[],o=!0,r=!1,a=void 0;try{for(var i,s=e[Symbol.iterator]();!(o=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);o=!0);}catch(e){r=!0,a=e}finally{try{!o&&s.return&&s.return()}finally{if(r)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();Object.defineProperty(t,"__esModule",{value:!0});var f=n("./libs/react-draggable/lib/utils/shims.ts"),h=n("./node_modules/react-dom/index.js"),m=n("./libs/react-draggable/lib/utils/domFns.ts");t.getBoundPosition=o,t.snapToGrid=r,t.canDragX=a,t.canDragY=i,t.getControlPosition=s,t.createCoreData=l,t.createDraggableData=d},"./libs/react-draggable/lib/utils/shims.ts":function(e,t,n){"use strict";function o(e,t){for(var n=0,o=e.length;ne.w||n>e.maxW?new Error("minWidth larger than item width/maxWidth"):void 0},maxW:function(e,t){var n=e[t];return"number"!=typeof n?new Error("maxWidth not Number"):ne.h||n>e.maxH?new Error("minHeight larger than item height/maxHeight"):void 0},maxH:function(e,t){var n=e[t];return"number"!=typeof n?new Error("maxHeight not Number"):n0){var g=1/0,_=1/0;m.forEach(function(e){e.x>f.x&&(g=Math.min(g,e.x)),e.y>f.y&&(_=Math.min(_,e.y))}),Number.isFinite(g)&&(f.w=g-f.x),Number.isFinite(_)&&(f.h=_-f.y)}}h||(f.w=t,f.h=n);var v={w:f.w,h:f.h,x:f.x,y:f.y,static:!0,i:e};this.props.onResize(s,d,f,v,r,a),this.setState({layout:(0,b.compact)(s,this.compactType(),c),activeDrag:v})}},t.prototype.onResizeStop=function(e,t,n,o){var r=o.e,a=o.node,i=this.state,s=i.layout,l=i.oldResizeItem,d=this.props.cols,u=(0,b.getLayoutItem)(s,e);this.props.onResizeStop(s,l,u,null,r,a);var c=(0,b.compact)(s,this.compactType(),d),p=this.state.oldLayout;this.setState({activeDrag:null,layout:c,oldResizeItem:null,oldLayout:null}),this.onLayoutMaybeChanged(c,p)},t.prototype.placeholder=function(){var e=this.state.activeDrag;if(!e)return null;var t=this.props,n=t.width,o=t.cols,r=t.margin,a=t.containerPadding,i=t.rowHeight,s=t.maxRows,l=t.useCSSTransforms;return u.default.createElement(v.default,{w:e.w,h:e.h,x:e.x,y:e.y,i:e.i,className:"react-grid-placeholder",containerWidth:n,cols:o,margin:r,containerPadding:a||r,maxRows:s,rowHeight:i,isDraggable:!1,isResizable:!1,useCSSTransforms:l},u.default.createElement("div",null))},t.prototype.processGridItem=function(e){if(e&&e.key){var t=(0,b.getLayoutItem)(this.state.layout,String(e.key));if(!t)return null;var n=this.props,o=n.width,r=n.cols,a=n.margin,i=n.containerPadding,s=n.rowHeight,l=n.maxRows,d=n.isDraggable,c=n.isResizable,p=n.useCSSTransforms,f=n.draggableCancel,h=n.draggableHandle,m=this.state.mounted,g=Boolean(!t.static&&d&&(t.isDraggable||null==t.isDraggable)),_=Boolean(!t.static&&c&&(t.isResizable||null==t.isResizable));return u.default.createElement(v.default,{containerWidth:o,cols:r,margin:a,containerPadding:i||a,maxRows:l,rowHeight:s,cancel:f,handle:h,onDragStop:this.onDragStop,onDragStart:this.onDragStart,onDrag:this.onDrag,onResizeStart:this.onResizeStart,onResize:this.onResize,onResizeStop:this.onResizeStop,isDraggable:g,isResizable:_,useCSSTransforms:p&&m,usePercentages:!m,w:t.w,h:t.h,x:t.x,y:t.y,i:t.i,minH:t.minH,minW:t.minW,maxH:t.maxH,maxW:t.maxW,static:t.static},e)}},t.prototype.render=function(){var e=this,t=this.props,n=t.className,o=t.style,r=(0,g.default)("react-grid-layout",n),a=l({height:this.containerHeight()},o);return u.default.createElement("div",{className:r,style:a},u.default.Children.map(this.props.children,function(t){return e.processGridItem(t)}),this.placeholder())},t}(u.default.Component);y.displayName="ReactGridLayout",y.propTypes={className:p.default.string,style:p.default.object,width:p.default.number,autoSize:p.default.bool,cols:p.default.number,draggableCancel:p.default.string,draggableHandle:p.default.string,verticalCompact:function(e){e.verticalCompact,1},compactType:p.default.oneOf(["vertical","horizontal"]),layout:function(e){var t=e.layout;void 0!==t&&(0,b.validateLayout)(t,"layout")},margin:p.default.arrayOf(p.default.number),containerPadding:p.default.arrayOf(p.default.number),rowHeight:p.default.number,maxRows:p.default.number,isDraggable:p.default.bool,isResizable:p.default.bool,preventCollision:p.default.bool,useCSSTransforms:p.default.bool,onLayoutChange:p.default.func,onDragStart:p.default.func,onDrag:p.default.func,onDragStop:p.default.func,onResizeStart:p.default.func,onResize:p.default.func,onResizeStop:p.default.func,children:function(e,t){var n=e[t],o={};u.default.Children.forEach(n,function(e){if(o[e.key])throw new Error('Duplicate child key "'+e.key+'" found! This will cause problems in ReactGridLayout.');o[e.key]=!0})}},y.defaultProps={autoSize:!0,cols:12,className:"",style:{},draggableHandle:"",draggableCancel:"",containerPadding:null,rowHeight:150,maxRows:1/0,layout:[],margin:[10,10],isDraggable:!0,isResizable:!0,useCSSTransforms:!0,verticalCompact:!0,compactType:"vertical",preventCollision:!1,onLayoutChange:b.noop,onDragStart:b.noop,onDrag:b.noop,onDragStop:b.noop,onResizeStart:b.noop,onResize:b.noop,onResizeStop:b.noop};var x=function(){this.state={activeDrag:null,layout:(0,b.synchronizeLayoutWithChildren)(this.props.layout,this.props.children,this.props.cols,this.compactType()),mounted:!1,oldDragItem:null,oldLayout:null,oldResizeItem:null}};t.default=y},"./libs/react-grid-layout/lib/ResponsiveReactGridLayout.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t){var n={};for(var o in e)t.indexOf(o)>=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":l(t))&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":l(t)));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};t.__esModule=!0;var d=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":d(t))&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+(void 0===t?"undefined":d(t)));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function l(e){var t,n;return n=t=function(t){function n(){var e,o,r;a(this,n);for(var s=arguments.length,l=Array(s),d=0;de[s]&&(o=s)}return o}function r(e,t){if(!t[e])throw new Error("ResponsiveReactGridLayout: `cols` entry for breakpoint "+e+" is missing!");return t[e]}function a(e,t,n,o,r,a){if(e[n])return(0,s.cloneLayout)(e[n]);for(var l=e[o],d=i(t),u=d.slice(d.indexOf(n)),c=0,p=u.length;ct&&(t=n);return t}function a(e){for(var t=Array(e.length),n=0,o=e.length;n=t.x+t.w)&&(!(e.y+e.h<=t.y)&&!(e.y>=t.y+t.h))))}function d(e,t,n){for(var o=g(e),r=j(e,t),a=Array(e.length),s=0,l=r.length;st.y+t.h)break;l(t,s)&&u(e,s,n+t[r],o)}}t[o]=n}function c(e,t,n,o,a){var i="vertical"===n,s="horizontal"===n;if(i)for(t.y=Math.min(r(e),t.y);t.y>0&&!h(e,t);)t.y--;else if(s)for(t.y=Math.min(r(e),t.y);t.x>0&&!h(e,t);)t.x--;for(var l=void 0;l=h(e,t);)s?u(a,t,l.x+l.w,"x"):u(a,t,l.y+l.h,"y"),s&&t.x+t.w>o&&(t.x=o-t.w,t.y++);return t}function p(e,t){for(var n=g(e),o=0,r=e.length;ot.cols&&(a.x=t.cols-a.w),a.x<0&&(a.x=0,a.w=t.cols),a.static)for(;h(n,a);)a.y++;else n.push(a)}return e}function f(e,t){for(var n=0,o=e.length;n=o:"horizontal"===i&&"number"==typeof n&&l>=n)&&(u=u.reverse());var c=m(u,t);if(a&&c.length)return E("Collision prevented on "+t.i+", reverting."),t.x=l,t.y=d,t.moved=!1,e;for(var p=0,f=c.length;pt.y||e.y===t.y&&e.x>t.x?1:e.y===t.y&&e.x===t.x?0:-1})}function k(e){return[].concat(e).sort(function(e,t){return e.x>t.x||e.x===t.x&&e.y>t.y?1:-1})}function M(e,t,n,o){e=e||[];var a=[];return A.default.Children.forEach(t,function(t,n){var o=f(e,String(t.key));if(o)a[n]=i(o);else{!P&&t.props._grid&&console.warn("`_grid` properties on children have been deprecated as of React 15.2. Please use `data-grid` or add your properties directly to the `layout`.");var s=t.props["data-grid"]||t.props._grid;s?(P||S([s],"ReactGridLayout.children"),a[n]=i(C({},s,{i:t.key}))):a[n]=i({w:1,h:1,x:0,y:r(a),i:String(t.key)})}}),a=p(a,{cols:n}),a=d(a,o,n)}function S(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Layout",n=["x","y","w","h"];if(!Array.isArray(e))throw new Error(t+" must be an array!");for(var o=0,r=e.length;o0&&(i=this.getOptions().map(function(r){return m.default.createElement(w.default,{key:r.value,disabled:"disabled"in r?r.disabled:t.disabled,value:r.value,checked:-1!==n.value.indexOf(r.value),onChange:function(){return e.toggleOption(r)},className:o+"-item"},r.label)}));var s=(0,v.default)(o,r);return m.default.createElement("div",{className:s},i)}}]),t}(m.default.Component);t.default=k,k.defaultProps={options:[],prefixCls:"ant-checkbox-group"},k.propTypes={defaultValue:b.default.array,value:b.default.array,options:b.default.array.isRequired,onChange:b.default.func},k.childContextTypes={checkboxGroup:b.default.any},e.exports=t.default},"./node_modules/antd/lib/checkbox/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/antd/lib/checkbox/Checkbox.js"),a=o(r),i=n("./node_modules/antd/lib/checkbox/Group.js"),s=o(i);a.default.Group=s.default,t.default=a.default,e.exports=t.default},"./node_modules/antd/lib/col/index.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/antd/lib/grid/index.js");t.default=o.Col,e.exports=t.default},"./node_modules/antd/lib/date-picker/Calendar.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/createClass.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/inherits.js"),c=o(u),p=n("./node_modules/react/react.js"),f=o(p),h=n("./node_modules/rc-calendar/lib/locale/zh_CN.js"),m=o(h),g=n("./node_modules/rc-calendar/lib/index.js"),b=o(g),_=n("./node_modules/warning/browser.js"),v=o(_),y=function(e){function t(){return(0,a.default)(this,t),(0,d.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return(0,c.default)(t,e),(0,s.default)(t,[{key:"render",value:function(){return(0,v.default)(!1,"DatePicker.Calendar is deprecated, use Calendar instead."),f.default.createElement(b.default,this.props)}}]),t}(f.default.Component);t.default=y,y.defaultProps={locale:m.default,prefixCls:"ant-calendar"},e.exports=t.default},"./node_modules/antd/lib/date-picker/RangePicker.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e){var t=(0,x.default)(e,2),n=t[0],o=t[1];if(n||o){return[n,o&&o.isSame(n,"month")?o.clone().add(1,"month"):o]}}function a(e,t){return e&&e.format(t)||""}function i(e){if(e)return Array.isArray(e)?e:[e,e.clone().add(1,"month")]}function s(e){return!!Array.isArray(e)&&(0===e.length||e.every(function(e){return!e}))}Object.defineProperty(t,"__esModule",{value:!0});var l=n("./node_modules/babel-runtime/helpers/extends.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/defineProperty.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),f=o(p),h=n("./node_modules/babel-runtime/helpers/createClass.js"),m=o(h),g=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),b=o(g),_=n("./node_modules/babel-runtime/helpers/inherits.js"),v=o(_),y=n("./node_modules/babel-runtime/helpers/slicedToArray.js"),x=o(y),j=n("./node_modules/react/react.js"),w=o(j),k=n("./node_modules/moment/src/moment.js"),M=o(k),S=n("./node_modules/prop-types/index.js"),T=o(S),E=n("./node_modules/rc-calendar/lib/RangeCalendar.js"),C=o(E),O=n("./node_modules/rc-calendar/lib/Picker.js"),D=o(O),L=n("./node_modules/classnames/index.js"),A=o(L),P=n("./node_modules/antd/lib/icon/index.js"),I=o(P),R=n("./node_modules/antd/lib/_util/getLocale.js"),N=n("./node_modules/antd/lib/_util/warning.js"),z=o(N),Y=function(e){function t(e){(0,f.default)(this,t);var n=(0,b.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.clearSelection=function(e){e.preventDefault(),e.stopPropagation(),n.setState({value:[]}),n.handleChange([])},n.clearHoverValue=function(){return n.setState({hoverValue:[]})},n.handleChange=function(e){var t=n.props;"value"in t||n.setState(function(t){var n=t.showDate;return{value:e,showDate:r(e)||n}}),t.onChange(e,[a(e[0],t.format),a(e[1],t.format)])},n.handleOpenChange=function(e){"open"in n.props||n.setState({open:e});var t=n.props.onOpenChange;t&&t(e)},n.handleShowDateChange=function(e){return n.setState({showDate:e})},n.handleHoverChange=function(e){return n.setState({hoverValue:e})},n.renderFooter=function(){var e=n.props,t=e.prefixCls,o=e.ranges,r=e.renderExtraFooter;if(!o&&!r)return null;var a=r?w.default.createElement("div",{className:t+"-footer-extra",key:"extra"},r.apply(void 0,arguments)):null,i=Object.keys(o||{}).map(function(e){var t=o[e];return w.default.createElement("a",{key:e,onClick:function(){return n.setValue(t,!0)},onMouseEnter:function(){return n.setState({hoverValue:t})},onMouseLeave:n.clearHoverValue},e)});return[w.default.createElement("div",{className:t+"-footer-extra "+t+"-range-quick-selector",key:"range"},i),a]};var o=e.value||e.defaultValue||[];if(o[0]&&!M.default.isMoment(o[0])||o[1]&&!M.default.isMoment(o[1]))throw new Error("The value/defaultValue of RangePicker must be a moment object array after `antd@2.0`, see: https://u.ant.design/date-picker-value");var l=!o||s(o)?e.defaultPickerValue:o;return n.state={value:o,showDate:i(l||(0,M.default)()),open:e.open,hoverValue:[]},n}return(0,v.default)(t,e),(0,m.default)(t,[{key:"componentWillReceiveProps",value:function(e){if("value"in e){var t=this.state,n=e.value||[];this.setState({value:n,showDate:r(n)||t.showDate})}"open"in e&&this.setState({open:e.open})}},{key:"setValue",value:function(e,t){this.handleChange(e),!t&&this.props.showTime||"open"in this.props||this.setState({open:!1})}},{key:"render",value:function(){var e,t=this,n=this.state,o=this.props,r=this.context,a=n.value,i=n.showDate,s=n.hoverValue,l=n.open,u=(0,R.getLocaleCode)(r);a&&u&&(a[0]&&a[0].locale(u),a[1]&&a[1].locale(u));var p=o.prefixCls,f=o.popupStyle,h=o.style,m=o.disabledDate,g=o.disabledTime,b=o.showTime,_=o.showToday,v=o.ranges,y=o.onOk,x=o.locale,j=o.format;(0,z.default)(!("onOK"in o),"It should be `RangePicker[onOk]`, instead of `onOK`!");var k=(0,A.default)((e={},(0,c.default)(e,p+"-time",b),(0,c.default)(e,p+"-range-with-ranges",v),e)),M={onChange:this.handleChange},S={onOk:this.handleChange};o.timePicker?M.onChange=function(e){return t.handleChange(e)}:S={};var T="placeholder"in o?o.placeholder[0]:x.lang.rangePlaceholder[0],E="placeholder"in o?o.placeholder[1]:x.lang.rangePlaceholder[1],O=w.default.createElement(C.default,(0,d.default)({},S,{format:j,prefixCls:p,className:k,renderFooter:this.renderFooter,timePicker:o.timePicker,disabledDate:m,disabledTime:g,dateInputPlaceholder:[T,E],locale:x.lang,onOk:y,value:i,onValueChange:this.handleShowDateChange,hoverValue:s,onHoverChange:this.handleHoverChange,showToday:_})),L={};o.showTime&&(L.width=h&&h.width||300);var P=!o.disabled&&o.allowClear&&a&&(a[0]||a[1])?w.default.createElement(I.default,{type:"cross-circle",className:p+"-picker-clear",onClick:this.clearSelection}):null,N=function(e){var t=e.value,n=t[0],r=t[1];return w.default.createElement("span",{className:o.pickerInputClass},w.default.createElement("input",{disabled:o.disabled,readOnly:!0,value:n&&n.format(o.format)||"",placeholder:T,className:p+"-range-picker-input"}),w.default.createElement("span",{className:p+"-range-picker-separator"}," ~ "),w.default.createElement("input",{disabled:o.disabled,readOnly:!0,value:r&&r.format(o.format)||"",placeholder:E,className:p+"-range-picker-input"}),P,w.default.createElement("span",{className:p+"-picker-icon"}))};return w.default.createElement("span",{className:(0,A.default)(o.className,o.pickerClass),style:(0,d.default)({},h,L)},w.default.createElement(D.default,(0,d.default)({},o,M,{calendar:O,value:a,open:l,onOpenChange:this.handleOpenChange,prefixCls:p+"-picker-container",style:f}),N))}}]),t}(w.default.Component);t.default=Y,Y.contextTypes={antLocale:T.default.object},Y.defaultProps={prefixCls:"ant-calendar",allowClear:!0,showToday:!1},e.exports=t.default},"./node_modules/antd/lib/date-picker/createPicker.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e){return t=function(t){function n(e){(0,u.default)(this,n);var t=(0,h.default)(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,e));t.renderFooter=function(){var e=t.props,n=e.prefixCls,o=e.renderExtraFooter;return o?_.default.createElement("div",{className:n+"-footer-extra"},o.apply(void 0,arguments)):null},t.clearSelection=function(e){e.preventDefault(),e.stopPropagation(),t.handleChange(null)},t.handleChange=function(e){var n=t.props;"value"in n||t.setState({value:e,showDate:e}),n.onChange(e,e&&e.format(n.format)||"")},t.handleCalendarChange=function(e){t.setState({showDate:e})};var o=e.value||e.defaultValue;if(o&&!j.default.isMoment(o))throw new Error("The value/defaultValue of DatePicker or MonthPicker must be a moment object after `antd@2.0`, see: https://u.ant.design/date-picker-value");return t.state={value:o,showDate:o},t}return(0,g.default)(n,t),(0,p.default)(n,[{key:"componentWillReceiveProps",value:function(e){"value"in e&&this.setState({value:e.value,showDate:e.value})}},{key:"render",value:function(){var t,n=this.state,o=n.value,r=n.showDate,a=(0,O.default)(this.props,["onChange"]),s=a.prefixCls,d=a.locale,u="placeholder"in a?a.placeholder:d.lang.placeholder,c=a.showTime?a.disabledTime:null,p=(0,E.default)((t={},(0,l.default)(t,s+"-time",a.showTime),(0,l.default)(t,s+"-month",k.default===e),t)),f={},h={};a.showTime?h={onSelect:this.handleChange}:f={onChange:this.handleChange},(0,I.default)(!("onOK"in a),"It should be `DatePicker[onOk]` or `MonthPicker[onOk]`, instead of `onOK`!");var m=_.default.createElement(e,(0,i.default)({},h,{disabledDate:a.disabledDate,disabledTime:c,locale:d.lang,timePicker:a.timePicker,defaultValue:a.defaultPickerValue||(0,j.default)(),dateInputPlaceholder:u,prefixCls:s,className:p,onOk:a.onOk,format:a.format,showToday:a.showToday,monthCellContentRender:a.monthCellContentRender,renderFooter:this.renderFooter,onChange:this.handleCalendarChange,value:r})),g={};a.showTime&&(g.width=a.style&&a.style.width||154);var b=!a.disabled&&a.allowClear&&o?_.default.createElement(L.default,{type:"cross-circle",className:s+"-picker-clear",onClick:this.clearSelection}):null,v=function(e){var t=e.value;return _.default.createElement("div",null,_.default.createElement("input",{disabled:a.disabled,readOnly:!0,value:t&&t.format(a.format)||"",placeholder:u,className:a.pickerInputClass}),b,_.default.createElement("span",{className:s+"-picker-icon"}))},y=o,x=(0,A.getLocaleCode)(this.context);y&&x&&y.locale(x);var w=(0,i.default)({},a.style,g);return _.default.createElement("span",{className:(0,E.default)(a.className,a.pickerClass),style:w},_.default.createElement(S.default,(0,i.default)({},a,f,{calendar:m,value:o,prefixCls:s+"-picker-container",style:a.popupStyle}),v))}}]),n}(_.default.Component),t.contextTypes={antLocale:y.default.object},t.defaultProps={prefixCls:"ant-calendar",allowClear:!0,showToday:!0},t;var t}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/extends.js"),i=o(a),s=n("./node_modules/babel-runtime/helpers/defineProperty.js"),l=o(s),d=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),u=o(d),c=n("./node_modules/babel-runtime/helpers/createClass.js"),p=o(c),f=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),h=o(f),m=n("./node_modules/babel-runtime/helpers/inherits.js"),g=o(m);t.default=r;var b=n("./node_modules/react/react.js"),_=o(b),v=n("./node_modules/prop-types/index.js"),y=o(v),x=n("./node_modules/moment/src/moment.js"),j=o(x),w=n("./node_modules/rc-calendar/lib/MonthCalendar.js"),k=o(w),M=n("./node_modules/rc-calendar/lib/Picker.js"),S=o(M),T=n("./node_modules/classnames/index.js"),E=o(T),C=n("./node_modules/omit.js/lib/index.js"),O=o(C),D=n("./node_modules/antd/lib/icon/index.js"),L=o(D),A=n("./node_modules/antd/lib/_util/getLocale.js"),P=n("./node_modules/antd/lib/_util/warning.js"),I=o(P);e.exports=t.default},"./node_modules/antd/lib/date-picker/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/extends.js"),a=o(r),i=n("./node_modules/rc-calendar/lib/index.js"),s=o(i),l=n("./node_modules/rc-calendar/lib/MonthCalendar.js"),d=o(l),u=n("./node_modules/antd/lib/date-picker/createPicker.js"),c=o(u),p=n("./node_modules/antd/lib/date-picker/wrapPicker.js"),f=o(p),h=n("./node_modules/antd/lib/date-picker/RangePicker.js"),m=o(h),g=n("./node_modules/antd/lib/date-picker/Calendar.js"),b=o(g),_=(0,f.default)((0,c.default)(s.default)),v=(0,f.default)((0,c.default)(d.default),"YYYY-MM");(0,a.default)(_,{RangePicker:(0,f.default)(m.default),Calendar:b.default,MonthPicker:v}),t.default=_,e.exports=t.default},"./node_modules/antd/lib/date-picker/locale/zh_CN.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/extends.js"),a=o(r),i=n("./node_modules/rc-calendar/lib/locale/zh_CN.js"),s=o(i),l=n("./node_modules/antd/lib/time-picker/locale/zh_CN.js"),d=o(l),u=n("./node_modules/moment/src/moment.js"),c=o(u);n("./node_modules/moment/locale/zh-cn.js"),c.default.locale("zh-cn");var p={lang:(0,a.default)({placeholder:"请选择日期",rangePlaceholder:["开始日期","结束日期"]},s.default),timePickerLocale:(0,a.default)({},d.default)};p.lang.ok="确 定",t.default=p,e.exports=t.default},"./node_modules/antd/lib/date-picker/wrapPicker.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e){var t=e.showHour,n=e.showMinute,o=e.showSecond,r=e.use12Hours,a=0;return t&&(a+=1),n&&(a+=1),o&&(a+=1),r&&(a+=1),a}function a(e,t){return o=function(t){function o(){(0,c.default)(this,o);var e=(0,m.default)(this,(o.__proto__||Object.getPrototypeOf(o)).apply(this,arguments));return e.handleOpenChange=function(t){var n=e.props,o=n.onOpenChange,r=n.toggleOpen;o(t),r&&((0,E.default)(!1,"`toggleOpen` is deprecated and will be removed in the future, please use `onOpenChange` instead, see: https://u.ant.design/date-picker-on-open-change"),r({open:t}))},e}return(0,b.default)(o,t),(0,f.default)(o,[{key:"render",value:function(){var t,o=this.props,a=o.prefixCls,i=o.inputPrefixCls,l=(0,M.default)((0,d.default)({},a+"-picker",!0)),u=(0,M.default)(a+"-picker-input",i,(t={},(0,d.default)(t,i+"-lg","large"===o.size),(0,d.default)(t,i+"-sm","small"===o.size),(0,d.default)(t,i+"-disabled",o.disabled),t)),c=(0,C.getComponentLocale)(o,this.context,"DatePicker",function(){return n("./node_modules/antd/lib/date-picker/locale/zh_CN.js")}),p=o.showTime&&o.showTime.format||"HH:mm:ss",f=(0,s.default)({},(0,S.generateShowHourMinuteSecond)(p),{format:p,use12Hours:o.showTime&&o.showTime.use12Hours}),h=r(f),m=a+"-time-picker-column-"+h,g=o.showTime?v.default.createElement(w.default,(0,s.default)({},f,o.showTime,{prefixCls:a+"-time-picker",className:m,placeholder:c.timePickerLocale.placeholder,transitionName:"slide-up"})):null;return v.default.createElement(e,(0,s.default)({},o,{pickerClass:l,pickerInputClass:u,locale:c,timePicker:g,onOpenChange:this.handleOpenChange}))}}]),o}(v.default.Component),o.contextTypes={antLocale:x.default.object},o.defaultProps={format:t||"YYYY-MM-DD",transitionName:"slide-up",popupStyle:{},onChange:function(){},onOk:function(){},onOpenChange:function(){},locale:{},prefixCls:"ant-calendar",inputPrefixCls:"ant-input"},o;var o}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/babel-runtime/helpers/extends.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/defineProperty.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/createClass.js"),f=o(p),h=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),m=o(h),g=n("./node_modules/babel-runtime/helpers/inherits.js"),b=o(g);t.default=a;var _=n("./node_modules/react/react.js"),v=o(_),y=n("./node_modules/prop-types/index.js"),x=o(y),j=n("./node_modules/rc-time-picker/lib/Panel.js"),w=o(j),k=n("./node_modules/classnames/index.js"),M=o(k),S=n("./node_modules/antd/lib/time-picker/index.js"),T=n("./node_modules/antd/lib/_util/warning.js"),E=o(T),C=n("./node_modules/antd/lib/_util/getLocale.js");e.exports=t.default},"./node_modules/antd/lib/dropdown/dropdown-button.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/extends.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/inherits.js"),f=o(p),h=n("./node_modules/react/react.js"),m=o(h),g=n("./node_modules/antd/lib/button/index.js"),b=o(g),_=n("./node_modules/antd/lib/icon/index.js"),v=o(_),y=n("./node_modules/antd/lib/dropdown/dropdown.js"),x=o(y),j=n("./node_modules/classnames/index.js"),w=o(j),k=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,o=Object.getOwnPropertySymbols(e);r=0?"slide-down":"slide-up"}},{key:"componentDidMount",value:function(){var e=this.props.overlay,t=e.props;(0,x.default)(!t.mode||"vertical"===t.mode,'mode="'+t.mode+"\" is not supported for Dropdown's Menu.")}},{key:"render",value:function(){var e=this.props,t=e.children,n=e.prefixCls,o=e.overlay,r=e.trigger,i=e.disabled,s=(0,h.cloneElement)(t,{className:(0,v.default)(t.props.className,n+"-trigger"),disabled:i}),l=o&&o.props,d=!!(l&&"selectable"in l)&&l.selectable,u=(0,h.cloneElement)(o,{mode:"vertical",selectable:d});return m.default.createElement(b.default,(0,a.default)({},this.props,{transitionName:this.getTransitionName(),trigger:i?[]:r,overlay:u}),s)}}]),t}(m.default.Component);t.default=j,j.defaultProps={prefixCls:"ant-dropdown",mouseEnterDelay:.15,mouseLeaveDelay:.1,placement:"bottomLeft"},e.exports=t.default},"./node_modules/antd/lib/dropdown/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/antd/lib/dropdown/dropdown.js"),a=o(r),i=n("./node_modules/antd/lib/dropdown/dropdown-button.js"),s=o(i);a.default.Button=s.default,t.default=a.default,e.exports=t.default},"./node_modules/antd/lib/form/Form.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/extends.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/defineProperty.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=o(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=o(h),g=n("./node_modules/react/react.js"),b=o(g),_=n("./node_modules/prop-types/index.js"),v=o(_),y=n("./node_modules/classnames/index.js"),x=o(y),j=n("./node_modules/rc-form/lib/createDOMForm.js"),w=o(j),k=n("./node_modules/rc-util/lib/PureRenderMixin.js"),M=o(k),S=n("./node_modules/omit.js/lib/index.js"),T=o(S),E=n("./node_modules/create-react-class/index.js"),C=o(E),O=n("./node_modules/antd/lib/_util/warning.js"),D=o(O),L=n("./node_modules/antd/lib/form/FormItem.js"),A=o(L),P=n("./node_modules/antd/lib/form/constants.js"),I=function(e){function t(e){(0,d.default)(this,t);var n=(0,f.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return(0,D.default)(!e.form,"It is unnecessary to pass `form` to `Form` after antd@1.7.0."),n}return(0,m.default)(t,e),(0,c.default)(t,[{key:"shouldComponentUpdate",value:function(){for(var e=arguments.length,t=Array(e),n=0;n0&&void 0!==arguments[0]?arguments[0]:{},t=(0,w.default)((0,a.default)({fieldNameProp:"id"},e,{fieldMetaProp:P.FIELD_META_PROP}));return function(n){return t((0,C.default)({propTypes:{form:v.default.object.isRequired},childContextTypes:{form:v.default.object.isRequired},getChildContext:function(){return{form:this.props.form}},componentWillMount:function(){this.__getFieldProps=this.props.form.getFieldProps},deprecatedGetFieldProps:function(e,t){return(0,D.default)(!1,"`getFieldProps` is not recommended, please use `getFieldDecorator` instead, see: https://u.ant.design/get-field-decorator"),this.__getFieldProps(e,t)},render:function(){this.props.form.getFieldProps=this.deprecatedGetFieldProps;var t={};return e.withRef?t.ref="formWrappedComponent":this.props.wrappedComponentRef&&(t.ref=this.props.wrappedComponentRef),b.default.createElement(n,(0,a.default)({},this.props,t))}}))}},e.exports=t.default},"./node_modules/antd/lib/form/FormItem.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/extends.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=o(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=o(h),g=n("./node_modules/react/react.js"),b=o(g),_=n("./node_modules/react-dom/index.js"),v=n("./node_modules/prop-types/index.js"),y=o(v),x=n("./node_modules/classnames/index.js"),j=o(x),w=n("./node_modules/rc-util/lib/PureRenderMixin.js"),k=o(w),M=n("./node_modules/antd/lib/grid/row.js"),S=o(M),T=n("./node_modules/antd/lib/grid/col.js"),E=o(T),C=n("./node_modules/antd/lib/form/constants.js"),O=n("./node_modules/antd/lib/_util/warning.js"),D=o(O),L=function(e){function t(){(0,d.default)(this,t);var e=(0,f.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments));return e.onLabelClick=function(){var t=e.props.id||e.getId();if(t){if(1!==document.querySelectorAll('[id="'+t+'"]').length){var n=(0,_.findDOMNode)(e).querySelector('[id="'+t+'"]');n&&n.focus&&n.focus()}}},e}return(0,m.default)(t,e),(0,c.default)(t,[{key:"componentDidMount",value:function(){(0,D.default)(this.getControls(this.props.children,!0).length<=1,"`Form.Item` cannot generate `validateStatus` and `help` automatically, while there are more than one `getFieldDecorator` in it.")}},{key:"shouldComponentUpdate",value:function(){for(var e=arguments.length,t=Array(e),n=0;n0));a++){var i=r[a];(!i.type||i.type!==t&&"FormItem"!==i.type.displayName)&&i.props&&(C.FIELD_META_PROP in i.props?o.push(i):i.props.children&&(o=o.concat(this.getControls(i.props.children,n))))}return o}},{key:"getOnlyControl",value:function(){var e=this.getControls(this.props.children,!1)[0];return void 0!==e?e:null}},{key:"getChildProp",value:function(e){var t=this.getOnlyControl();return t&&t.props&&t.props[e]}},{key:"getId",value:function(){return this.getChildProp("id")}},{key:"getMeta",value:function(){return this.getChildProp(C.FIELD_META_PROP)}},{key:"renderHelp",value:function(){var e=this.props.prefixCls,t=this.getHelpMsg();return t?b.default.createElement("div",{className:e+"-explain",key:"help"},t):null}},{key:"renderExtra",value:function(){var e=this.props,t=e.prefixCls,n=e.extra;return n?b.default.createElement("div",{className:t+"-extra"},n):null}},{key:"getValidateStatus",value:function(){var e=this.context.form,t=e.isFieldValidating,n=e.getFieldError,o=e.getFieldValue,r=this.getId();if(!r)return"";if(t(r))return"validating";if(n(r))return"error";var a=o(r);return void 0!==a&&null!==a&&""!==a?"success":""}},{key:"renderValidateWrapper",value:function(e,t,n){var o="",r=this.context.form,a=this.props,i=void 0===a.validateStatus&&r?this.getValidateStatus():a.validateStatus;return i&&(o=(0,j.default)({"has-feedback":a.hasFeedback||"validating"===i,"has-success":"success"===i,"has-warning":"warning"===i,"has-error":"error"===i,"is-validating":"validating"===i})),b.default.createElement("div",{className:this.props.prefixCls+"-item-control "+o},e,t,n)}},{key:"renderWrapper",value:function(e){var t=this.props,n=t.prefixCls,o=t.wrapperCol,r=(0,j.default)(n+"-item-control-wrapper",o&&o.className);return b.default.createElement(E.default,(0,s.default)({},o,{className:r,key:"wrapper"}),e)}},{key:"isRequired",value:function(){var e=this.props.required;if(void 0!==e)return e;if(this.context.form){return((this.getMeta()||{}).validate||[]).filter(function(e){return!!e.rules}).some(function(e){return e.rules.some(function(e){return e.required})})}return!1}},{key:"renderLabel",value:function(){var e=this.props,t=e.prefixCls,n=e.label,o=e.labelCol,r=e.colon,i=e.id,l=this.context,d=this.isRequired(),u=(0,j.default)(t+"-item-label",o&&o.className),c=(0,j.default)((0,a.default)({},t+"-item-required",d)),p=n;return r&&!l.vertical&&"string"==typeof n&&""!==n.trim()&&(p=n.replace(/[:|:]\s*$/,"")),n?b.default.createElement(E.default,(0,s.default)({},o,{className:u,key:"label"}),b.default.createElement("label",{htmlFor:i||this.getId(),className:c,title:"string"==typeof n?n:"",onClick:this.onLabelClick},p)):null}},{key:"renderChildren",value:function(){var e=this.props,t=b.default.Children.map(e.children,function(e){return e&&"function"==typeof e.type&&!e.props.size?b.default.cloneElement(e,{size:"large"}):e});return[this.renderLabel(),this.renderWrapper(this.renderValidateWrapper(t,this.renderHelp(),this.renderExtra()))]}},{key:"renderFormItem",value:function(e){var t,n=this.props,o=n.prefixCls,r=n.style,i=(t={},(0,a.default)(t,o+"-item",!0),(0,a.default)(t,o+"-item-with-help",!!this.getHelpMsg()),(0,a.default)(t,o+"-item-no-colon",!n.colon),(0,a.default)(t,""+n.className,!!n.className),t);return b.default.createElement(S.default,{className:(0,j.default)(i),style:r},e)}},{key:"render",value:function(){var e=this.renderChildren();return this.renderFormItem(e)}}]),t}(b.default.Component);t.default=L,L.defaultProps={hasFeedback:!1,prefixCls:"ant-form",colon:!0},L.propTypes={prefixCls:y.default.string,label:y.default.oneOfType([y.default.string,y.default.node]),labelCol:y.default.object,help:y.default.oneOfType([y.default.node,y.default.bool]),validateStatus:y.default.oneOf(["","success","warning","error","validating"]),hasFeedback:y.default.bool,wrapperCol:y.default.object,className:y.default.string,id:y.default.string,children:y.default.node,colon:y.default.bool},L.contextTypes={form:y.default.object,vertical:y.default.bool},e.exports=t.default},"./node_modules/antd/lib/form/constants.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.FIELD_META_PROP="data-__meta"},"./node_modules/antd/lib/form/index.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/antd/lib/form/Form.js"),r=function(e){return e&&e.__esModule?e:{default:e}}(o);t.default=r.default,e.exports=t.default},"./node_modules/antd/lib/grid/col.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/extends.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/typeof.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/createClass.js"),f=o(p),h=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),m=o(h),g=n("./node_modules/babel-runtime/helpers/inherits.js"),b=o(g),_=n("./node_modules/react/react.js"),v=o(_),y=n("./node_modules/prop-types/index.js"),x=o(y),j=n("./node_modules/classnames/index.js"),w=o(j),k=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,o=Object.getOwnPropertySymbols(e);r0?(0,a.default)({marginLeft:l/-2,marginRight:l/-2},d):d,_=g.Children.map(u,function(e){return e?e.props&&l>0?(0,g.cloneElement)(e,{style:(0,a.default)({paddingLeft:l/2,paddingRight:l/2},e.props.style)}):e:null});return b.default.createElement("div",(0,a.default)({},f,{className:h,style:m}),_)}}]),t}(b.default.Component);t.default=w,w.defaultProps={gutter:0},w.propTypes={type:x.default.string,align:x.default.string,justify:x.default.string,className:x.default.string,children:x.default.node,gutter:x.default.number,prefixCls:x.default.string},e.exports=t.default},"./node_modules/antd/lib/icon/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/extends.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/defineProperty.js"),s=o(i),l=n("./node_modules/react/react.js"),d=o(l),u=n("./node_modules/classnames/index.js"),c=o(u),p=n("./node_modules/omit.js/lib/index.js"),f=o(p),h=function(e){var t=e.type,n=e.className,o=void 0===n?"":n,r=e.spin,i=(0,c.default)((0,s.default)({anticon:!0,"anticon-spin":!!r||"loading"===t},"anticon-"+t,!0),o);return d.default.createElement("i",(0,a.default)({},(0,f.default)(e,["type","spin"]),{className:i}))};t.default=h,e.exports=t.default},"./node_modules/antd/lib/input-number/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/extends.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/defineProperty.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=o(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=o(h),g=n("./node_modules/react/react.js"),b=o(g),_=n("./node_modules/classnames/index.js"),v=o(_),y=n("./node_modules/rc-input-number/lib/index.js"),x=o(y),j=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,o=Object.getOwnPropertySymbols(e);r1&&void 0!==arguments[1]&&arguments[1],n=e.getAttribute("id")||e.getAttribute("data-reactid")||e.getAttribute("name");if(t&&s[n])return s[n];var o=window.getComputedStyle(e),r=o.getPropertyValue("box-sizing")||o.getPropertyValue("-moz-box-sizing")||o.getPropertyValue("-webkit-box-sizing"),a=parseFloat(o.getPropertyValue("padding-bottom"))+parseFloat(o.getPropertyValue("padding-top")),l=parseFloat(o.getPropertyValue("border-bottom-width"))+parseFloat(o.getPropertyValue("border-top-width")),d=i.map(function(e){return e+":"+o.getPropertyValue(e)}).join(";"),u={sizingStyle:d,paddingSize:a,borderSize:l,boxSizing:r};return t&&n&&(s[n]=u),u}function r(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;l||(l=document.createElement("textarea"),document.body.appendChild(l)),e.getAttribute("wrap")?l.setAttribute("wrap",e.getAttribute("wrap")):l.removeAttribute("wrap");var i=o(e,t),s=i.paddingSize,d=i.borderSize,u=i.boxSizing,c=i.sizingStyle;l.setAttribute("style",c+";"+a),l.value=e.value||e.placeholder||"";var p=-1/0,f=1/0,h=l.scrollHeight,m=void 0;if("border-box"===u?h+=d:"content-box"===u&&(h-=s),null!==n||null!==r){l.value="";var g=l.scrollHeight-s;null!==n&&(p=g*n,"border-box"===u&&(p=p+s+d),h=Math.max(p,h)),null!==r&&(f=g*r,"border-box"===u&&(f=f+s+d),m=h>f?"":"hidden",h=Math.min(f,h))}return r||(m="hidden"),{height:h,minHeight:p,maxHeight:f,overflowY:m}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=r;var a="\n min-height:0 !important;\n max-height:none !important;\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important\n",i=["letter-spacing","line-height","padding-top","padding-bottom","font-family","font-weight","font-size","text-rendering","text-transform","width","text-indent","padding-left","padding-right","border-width","box-sizing"],s={},l=void 0;e.exports=t.default},"./node_modules/antd/lib/input/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/antd/lib/input/Input.js"),a=o(r),i=n("./node_modules/antd/lib/input/Group.js"),s=o(i),l=n("./node_modules/antd/lib/input/Search.js"),d=o(l),u=n("./node_modules/antd/lib/input/TextArea.js"),c=o(u);a.default.Group=s.default,a.default.Search=d.default,a.default.TextArea=c.default,t.default=a.default,e.exports=t.default},"./node_modules/antd/lib/locale-provider/injectLocale.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/extends.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/inherits.js"),f=o(p),h=n("./node_modules/prop-types/index.js"),m=o(h);t.default=function(e,t){return function(n){var o=n;return r=function(n){function o(){return(0,s.default)(this,o),(0,c.default)(this,(o.__proto__||Object.getPrototypeOf(o)).apply(this,arguments))}return(0,f.default)(o,n),(0,d.default)(o,[{key:"getLocale",value:function(){var n=this.context.antLocale,o=n&&n[e],r=this.props.locale||{};return(0,a.default)({},t,o||{},r)}}]),o}(n),r.propTypes=o.propTypes,r.defaultProps=o.defaultProps,r.contextTypes=(0,a.default)({},o.context||{},{antLocale:m.default.object}),r;var r}},e.exports=t.default},"./node_modules/antd/lib/menu/MenuItem.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/createClass.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/inherits.js"),c=o(u),p=n("./node_modules/react/react.js"),f=o(p),h=n("./node_modules/rc-menu/lib/index.js"),m=n("./node_modules/prop-types/index.js"),g=o(m),b=n("./node_modules/antd/lib/tooltip/index.js"),_=o(b),v=function(e){function t(){return(0,a.default)(this,t),(0,d.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return(0,c.default)(t,e),(0,s.default)(t,[{key:"render",value:function(){var e=this.context.inlineCollapsed,t=this.props;return f.default.createElement(_.default,{title:e&&1===t.level?t.children:"",placement:"right",overlayClassName:t.rootPrefixCls+"-inline-collapsed-tooltip"},f.default.createElement(h.Item,t))}}]),t}(f.default.Component);v.contextTypes={inlineCollapsed:g.default.bool},v.isMenuItem=1,t.default=v,e.exports=t.default},"./node_modules/antd/lib/menu/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/extends.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=o(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=o(h),g=n("./node_modules/react/react.js"),b=o(g),_=n("./node_modules/rc-menu/lib/index.js"),v=o(_),y=n("./node_modules/prop-types/index.js"),x=o(y),j=n("./node_modules/classnames/index.js"),w=o(j),k=n("./node_modules/antd/lib/_util/openAnimation.js"),M=o(k),S=n("./node_modules/antd/lib/_util/warning.js"),T=o(S),E=n("./node_modules/antd/lib/menu/MenuItem.js"),C=o(E),O=function(e){function t(e){(0,d.default)(this,t);var n=(0,f.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.inlineOpenKeys=[],n.handleClick=function(e){n.handleOpenChange([]);var t=n.props.onClick;t&&t(e)},n.handleOpenChange=function(e){n.setOpenKeys(e);var t=n.props.onOpenChange;t&&t(e)},(0,T.default)(!("onOpen"in e||"onClose"in e),"`onOpen` and `onClose` are removed, please use `onOpenChange` instead, see: https://u.ant.design/menu-on-open-change."),(0,T.default)(!("inlineCollapsed"in e&&"inline"!==e.mode),"`inlineCollapsed` should only be used when Menu's `mode` is inline.");var o=void 0;return"defaultOpenKeys"in e?o=e.defaultOpenKeys:"openKeys"in e&&(o=e.openKeys),n.state={openKeys:o||[]},n}return(0,m.default)(t,e),(0,c.default)(t,[{key:"getChildContext",value:function(){return{inlineCollapsed:this.getInlineCollapsed()}}},{key:"componentWillReceiveProps",value:function(e,t){if("inline"===this.props.mode&&"inline"!==e.mode&&(this.switchModeFromInline=!0),"openKeys"in e)return void this.setState({openKeys:e.openKeys});(e.inlineCollapsed&&!this.props.inlineCollapsed||t.siderCollapsed&&!this.context.siderCollapsed)&&(this.switchModeFromInline=!!this.state.openKeys.length,this.inlineOpenKeys=this.state.openKeys,this.setState({openKeys:[]})),(!e.inlineCollapsed&&this.props.inlineCollapsed||!t.siderCollapsed&&this.context.siderCollapsed)&&(this.setState({openKeys:this.inlineOpenKeys}),this.inlineOpenKeys=[])}},{key:"setOpenKeys",value:function(e){"openKeys"in this.props||this.setState({openKeys:e})}},{key:"getRealMenuMode",value:function(){var e=this.getInlineCollapsed();if(this.switchModeFromInline&&e&&this.leaveAnimationExecutedWhenInlineCollapsed)return this.leaveAnimationExecutedWhenInlineCollapsed=!1,"inline";var t=this.props.mode;return e?"vertical":t}},{key:"getInlineCollapsed",value:function(){var e=this.props.inlineCollapsed;return void 0!==this.context.siderCollapsed?this.context.siderCollapsed:e}},{key:"getMenuOpenAnimation",value:function(e){var t=this,n=this.props,o=n.openAnimation,r=n.openTransitionName,a=o||r;if(void 0===o&&void 0===r)switch(e){case"horizontal":a="slide-up";break;case"vertical":this.switchModeFromInline?(a="",this.switchModeFromInline=!1):a="zoom-big";break;case"inline":a=(0,s.default)({},M.default,{leave:function(e,n){return M.default.leave(e,function(){t.switchModeFromInline=!1,t.leaveAnimationExecutedWhenInlineCollapsed=!0,t.setState({}),n()})}})}return a}},{key:"render",value:function(){var e=this.props,t=e.prefixCls,n=e.className,o=e.theme,r=this.getRealMenuMode(),i=this.getMenuOpenAnimation(r),l=(0,w.default)(n,t+"-"+o,(0,a.default)({},t+"-inline-collapsed",this.getInlineCollapsed())),d={openKeys:this.state.openKeys,onOpenChange:this.handleOpenChange,className:l,mode:r};return"inline"!==r?(d.onClick=this.handleClick,d.openTransitionName=i):d.openAnimation=i,b.default.createElement(v.default,(0,s.default)({},this.props,d))}}]),t}(b.default.Component);t.default=O,O.Divider=_.Divider,O.Item=C.default,O.SubMenu=_.SubMenu,O.ItemGroup=_.ItemGroup,O.defaultProps={prefixCls:"ant-menu",className:"",theme:"light"},O.childContextTypes={inlineCollapsed:x.default.bool},O.contextTypes={siderCollapsed:x.default.bool},e.exports=t.default},"./node_modules/antd/lib/message/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(){return h=h||d.default.newInstance({prefixCls:g,transitionName:"move-up",style:{top:f},getContainer:b})}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p,n=arguments[2],o=arguments[3],a={info:"info-circle",success:"check-circle",error:"cross-circle",warning:"exclamation-circle",loading:"loading"}[n],i=r();return i.notice({key:m,duration:t,style:{},content:s.default.createElement("div",{className:g+"-custom-content "+g+"-"+n},s.default.createElement(c.default,{type:a}),s.default.createElement("span",null,e)),onClose:o}),function(){var e=m++;return function(){i.removeNotice(e)}}()}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/react/react.js"),s=o(i),l=n("./node_modules/rc-notification/lib/index.js"),d=o(l),u=n("./node_modules/antd/lib/icon/index.js"),c=o(u),p=3,f=void 0,h=void 0,m=1,g="ant-message",b=void 0;t.default={info:function(e,t,n){return a(e,t,"info",n)},success:function(e,t,n){return a(e,t,"success",n)},error:function(e,t,n){return a(e,t,"error",n)},warn:function(e,t,n){return a(e,t,"warning",n)},warning:function(e,t,n){return a(e,t,"warning",n)},loading:function(e,t,n){return a(e,t,"loading",n)},config:function(e){void 0!==e.top&&(f=e.top,h=null),void 0!==e.duration&&(p=e.duration),void 0!==e.prefixCls&&(g=e.prefixCls),void 0!==e.getContainer&&(b=e.getContainer)},destroy:function(){h&&(h.destroy(),h=null)}},e.exports=t.default},"./node_modules/antd/lib/pagination/MiniSelect.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/extends.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/inherits.js"),f=o(p),h=n("./node_modules/react/react.js"),m=o(h),g=n("./node_modules/antd/lib/select/index.js"),b=o(g),_=function(e){function t(){return(0,s.default)(this,t),(0,c.default)(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return(0,f.default)(t,e),(0,d.default)(t,[{key:"render",value:function(){return m.default.createElement(b.default,(0,a.default)({size:"small"},this.props))}}]),t}(m.default.Component);t.default=_,_.Option=b.default.Option,e.exports=t.default},"./node_modules/antd/lib/pagination/Pagination.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/extends.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/inherits.js"),f=o(p),h=n("./node_modules/react/react.js"),m=o(h),g=n("./node_modules/rc-pagination/lib/index.js"),b=o(g),_=n("./node_modules/rc-pagination/lib/locale/zh_CN.js"),v=o(_),y=n("./node_modules/classnames/index.js"),x=o(y),j=n("./node_modules/antd/lib/locale-provider/injectLocale.js"),w=o(j),k=n("./node_modules/antd/lib/select/index.js"),M=o(k),S=n("./node_modules/antd/lib/pagination/MiniSelect.js"),T=o(S),E=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,o=Object.getOwnPropertySymbols(e);r0&&(d=s.map(function(t,n){return"string"==typeof t?g.default.createElement(k.default,{key:n,disabled:e.props.disabled,value:t,onChange:e.onRadioChange,checked:e.state.value===t},t):g.default.createElement(k.default,{key:n,disabled:t.disabled||e.props.disabled,value:t.value,onChange:e.onRadioChange,checked:e.state.value===t.value},t.label)})),g.default.createElement("div",{className:l,style:t.style,onMouseEnter:t.onMouseEnter,onMouseLeave:t.onMouseLeave,id:t.id},d)}}]),t}(g.default.Component);t.default=M,M.defaultProps={disabled:!1},M.childContextTypes={radioGroup:_.default.any},e.exports=t.default},"./node_modules/antd/lib/radio/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.Group=t.Button=void 0;var r=n("./node_modules/antd/lib/radio/radio.js"),a=o(r),i=n("./node_modules/antd/lib/radio/group.js"),s=o(i),l=n("./node_modules/antd/lib/radio/radioButton.js"),d=o(l);a.default.Button=d.default,a.default.Group=s.default,t.Button=d.default,t.Group=s.default,t.default=a.default},"./node_modules/antd/lib/radio/radio.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/extends.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/createClass.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),f=o(p),h=n("./node_modules/babel-runtime/helpers/inherits.js"),m=o(h),g=n("./node_modules/react/react.js"),b=o(g),_=n("./node_modules/prop-types/index.js"),v=o(_),y=n("./node_modules/rc-checkbox/lib/index.js"),x=o(y),j=n("./node_modules/classnames/index.js"),w=o(j),k=n("./node_modules/shallowequal/index.js"),M=o(k),S=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,o=Object.getOwnPropertySymbols(e);r=0:t.getState().selectedRowKeys.indexOf(o)>=0||n.indexOf(o)>=0}},{key:"render",value:function(){var e=this.props,t=e.type,n=e.rowIndex,o=e.disabled,r=e.onChange,a=this.state.checked;return"radio"===t?f.default.createElement(b.default,{disabled:o,onChange:r,value:n,checked:a}):f.default.createElement(m.default,{checked:a,disabled:o,onChange:r})}}]),t}(f.default.Component);t.default=_,e.exports=t.default},"./node_modules/antd/lib/table/SelectionCheckboxAll.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/inherits.js"),f=o(p),h=n("./node_modules/react/react.js"),m=o(h),g=n("./node_modules/antd/lib/checkbox/index.js"),b=o(g),_=n("./node_modules/antd/lib/dropdown/index.js"),v=o(_),y=n("./node_modules/antd/lib/menu/index.js"),x=o(y),j=n("./node_modules/antd/lib/icon/index.js"),w=o(j),k=n("./node_modules/classnames/index.js"),M=o(k),S=function(e){function t(e){(0,s.default)(this,t);var n=(0,c.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.handleSelectAllChagne=function(e){var t=e.target.checked;n.props.onSelect(t?"all":"removeAll",0,null)},n.defaultSelections=e.hideDefaultSelections?[]:[{key:"all",text:e.locale.selectAll,onSelect:function(){}},{key:"invert",text:e.locale.selectInvert,onSelect:function(){}}],n.state={checked:n.getCheckState(e),indeterminate:n.getIndeterminateState(e)},n}return(0,f.default)(t,e),(0,d.default)(t,[{key:"componentDidMount",value:function(){this.subscribe()}},{key:"componentWillReceiveProps",value:function(e){this.setCheckState(e)}},{key:"componentWillUnmount",value:function(){this.unsubscribe&&this.unsubscribe()}},{key:"subscribe",value:function(){var e=this,t=this.props.store;this.unsubscribe=t.subscribe(function(){e.setCheckState(e.props)})}},{key:"checkSelection",value:function(e,t,n){var o=this.props,r=o.store,a=o.getCheckboxPropsByItem,i=o.getRecordKey;return("every"===t||"some"===t)&&(n?e[t](function(e,t){return a(e,t).defaultChecked}):e[t](function(e,t){return r.getState().selectedRowKeys.indexOf(i(e,t))>=0}))}},{key:"setCheckState",value:function(e){var t=this.getCheckState(e),n=this.getIndeterminateState(e);t!==this.state.checked&&this.setState({checked:t}),n!==this.state.indeterminate&&this.setState({indeterminate:n})}},{key:"getCheckState",value:function(e){var t=e.store,n=e.data;return!!n.length&&(t.getState().selectionDirty?this.checkSelection(n,"every",!1):this.checkSelection(n,"every",!1)||this.checkSelection(n,"every",!0))}},{key:"getIndeterminateState",value:function(e){var t=e.store,n=e.data;return!!n.length&&(t.getState().selectionDirty?this.checkSelection(n,"some",!1)&&!this.checkSelection(n,"every",!1):this.checkSelection(n,"some",!1)&&!this.checkSelection(n,"every",!1)||this.checkSelection(n,"some",!0)&&!this.checkSelection(n,"every",!0))}},{key:"renderMenus",value:function(e){var t=this;return e.map(function(e,n){return m.default.createElement(x.default.Item,{key:e.key||n},m.default.createElement("div",{onClick:function(){t.props.onSelect(e.key,n,e.onSelect)}},e.text))})}},{key:"render",value:function(){var e=this.props,t=e.disabled,n=e.prefixCls,o=e.selections,r=e.getPopupContainer,i=this.state,s=i.checked,l=i.indeterminate,d=n+"-selection",u=null;if(o){var c=Array.isArray(o)?this.defaultSelections.concat(o):this.defaultSelections,p=m.default.createElement(x.default,{className:d+"-menu",selectedKeys:[]},this.renderMenus(c));u=c.length>0?m.default.createElement(v.default,{overlay:p,getPopupContainer:r},m.default.createElement("div",{className:d+"-down"},m.default.createElement(w.default,{type:"down"}))):null}return m.default.createElement("div",{className:d},m.default.createElement(b.default,{className:(0,M.default)((0,a.default)({},d+"-select-all-custom",u)),checked:s,indeterminate:l,disabled:t,onChange:this.handleSelectAllChagne}),u)}}]),t}(m.default.Component);t.default=S,e.exports=t.default},"./node_modules/antd/lib/table/Table.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(){}function a(e){e.stopPropagation(),e.nativeEvent.stopImmediatePropagation&&e.nativeEvent.stopImmediatePropagation()}Object.defineProperty(t,"__esModule",{value:!0});var i=n("./node_modules/babel-runtime/helpers/typeof.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/defineProperty.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/extends.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),f=o(p),h=n("./node_modules/babel-runtime/helpers/createClass.js"),m=o(h),g=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),b=o(g),_=n("./node_modules/babel-runtime/helpers/inherits.js"),v=o(_),y=n("./node_modules/react/react.js"),x=o(y),j=n("./node_modules/react-dom/index.js"),w=n("./node_modules/rc-table/lib/index.js"),k=o(w),M=n("./node_modules/prop-types/index.js"),S=o(M),T=n("./node_modules/classnames/index.js"),E=o(T),C=n("./node_modules/antd/lib/pagination/index.js"),O=o(C),D=n("./node_modules/antd/lib/icon/index.js"),L=o(D),A=n("./node_modules/antd/lib/spin/index.js"),P=o(A),I=n("./node_modules/antd/lib/_util/warning.js"),R=o(I),N=n("./node_modules/antd/lib/table/filterDropdown.js"),z=o(N),Y=n("./node_modules/antd/lib/table/createStore.js"),F=o(Y),H=n("./node_modules/antd/lib/table/SelectionBox.js"),V=o(H),q=n("./node_modules/antd/lib/table/SelectionCheckboxAll.js"),W=o(q),B=n("./node_modules/antd/lib/table/Column.js"),U=o(B),G=n("./node_modules/antd/lib/table/ColumnGroup.js"),K=o(G),Z=n("./node_modules/antd/lib/table/util.js"),J=function(e,t){var n={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var r=0,o=Object.getOwnPropertySymbols(e);r0&&(l.filters=u),"object"===(0,s.default)(o.pagination)&&"current"in o.pagination&&(l.pagination=(0,c.default)({},r,{current:n.state.pagination.current})),n.setState(l,function(){n.store.setState({selectionDirty:!1});var e=n.props.onChange;e&&e.apply(null,n.prepareParamsArguments((0,c.default)({},n.state,{selectionDirty:!1,filters:a,pagination:r})))})},n.handleSelect=function(e,t,o){var r=o.target.checked,a=n.store.getState().selectionDirty?[]:n.getDefaultSelection(),i=n.store.getState().selectedRowKeys.concat(a),s=n.getRecordKey(e,t);r?i.push(n.getRecordKey(e,t)):i=i.filter(function(e){return s!==e}),n.store.setState({selectionDirty:!0}),n.setSelectedRowKeys(i,{selectWay:"onSelect",record:e,checked:r})},n.handleRadioSelect=function(e,t,o){var r=o.target.checked,a=n.store.getState().selectionDirty?[]:n.getDefaultSelection(),i=n.store.getState().selectedRowKeys.concat(a);i=[n.getRecordKey(e,t)],n.store.setState({selectionDirty:!0}),n.setSelectedRowKeys(i,{selectWay:"onSelect",record:e,checked:r})},n.handleSelectRow=function(e,t,o){var r=n.getFlatCurrentPageData(),a=n.store.getState().selectionDirty?[]:n.getDefaultSelection(),i=n.store.getState().selectedRowKeys.concat(a),s=r.filter(function(e,t){return!n.getCheckboxPropsByItem(e,t).disabled}).map(function(e,t){return n.getRecordKey(e,t)}),l=[],d="",u=void 0;switch(e){case"all":s.forEach(function(e){i.indexOf(e)<0&&(i.push(e),l.push(e))}),d="onSelectAll",u=!0;break;case"removeAll":s.forEach(function(e){i.indexOf(e)>=0&&(i.splice(i.indexOf(e),1),l.push(e))}),d="onSelectAll",u=!1;break;case"invert":s.forEach(function(e){i.indexOf(e)<0?i.push(e):i.splice(i.indexOf(e),1),l.push(e),d="onSelectInvert"})}n.store.setState({selectionDirty:!0});var c=n.props.rowSelection,p=2;if(c&&c.hideDefaultSelections&&(p=0),t>=p&&"function"==typeof o)return o(s);n.setSelectedRowKeys(i,{selectWay:d,checked:u,changeRowKeys:l})},n.handlePageChange=function(e){for(var t=arguments.length,o=Array(t>1?t-1:0),r=1;r0){var n=this.getSortStateFromColumns(this.columns);n.sortColumn===this.state.sortColumn&&n.sortOrder===this.state.sortOrder||this.setState(n)}if(this.getFilteredValueColumns(this.columns).length>0){var o=this.getFiltersFromColumns(this.columns),r=(0,c.default)({},this.state.filters);Object.keys(o).forEach(function(e){r[e]=o[e]}),this.isFiltersChanged(r)&&this.setState({filters:r})}}},{key:"setSelectedRowKeys",value:function(e,t){var n=this,o=t.selectWay,r=t.record,a=t.checked,i=t.changeRowKeys,s=this.props.rowSelection,l=void 0===s?{}:s;!l||"selectedRowKeys"in l||this.store.setState({selectedRowKeys:e});var d=this.getFlatData();if(l.onChange||l[o]){var u=d.filter(function(t,o){return e.indexOf(n.getRecordKey(t,o))>=0});if(l.onChange&&l.onChange(e,u),"onSelect"===o&&l.onSelect)l.onSelect(r,a,u);else if("onSelectAll"===o&&l.onSelectAll){var c=d.filter(function(e,t){return i.indexOf(n.getRecordKey(e,t))>=0});l.onSelectAll(a,u,c)}else"onSelectInvert"===o&&l.onSelectInvert&&l.onSelectInvert(e)}}},{key:"hasPagination",value:function(e){return!1!==(e||this.props).pagination}},{key:"isFiltersChanged",value:function(e){var t=this,n=!1;return Object.keys(e).length!==Object.keys(this.state.filters).length?n=!0:Object.keys(e).forEach(function(o){e[o]!==t.state.filters[o]&&(n=!0)}),n}},{key:"getSortOrderColumns",value:function(e){return(0,Z.flatFilter)(e||this.columns||[],function(e){return"sortOrder"in e})}},{key:"getFilteredValueColumns",value:function(e){return(0,Z.flatFilter)(e||this.columns||[],function(e){return void 0!==e.filteredValue})}},{key:"getFiltersFromColumns",value:function(e){var t=this,n={};return this.getFilteredValueColumns(e).forEach(function(e){n[t.getColumnKey(e)]=e.filteredValue}),n}},{key:"getSortStateFromColumns",value:function(e){var t=this.getSortOrderColumns(e).filter(function(e){return e.sortOrder})[0];return t?{sortColumn:t,sortOrder:t.sortOrder}:{sortColumn:null,sortOrder:null}}},{key:"getSorterFn",value:function(){var e=this.state,t=e.sortOrder,n=e.sortColumn;if(t&&n&&"function"==typeof n.sorter)return function(e,o){var r=n.sorter(e,o);return 0!==r?"descend"===t?-r:r:0}}},{key:"toggleSortOrder",value:function(e,t){var n=this.state,o=n.sortColumn,r=n.sortOrder;this.isSortColumn(t)?r===e?(r="",o=null):r=e:(r=e,o=t);var a={sortOrder:r,sortColumn:o};0===this.getSortOrderColumns().length&&this.setState(a);var i=this.props.onChange;i&&i.apply(null,this.prepareParamsArguments((0,c.default)({},this.state,a)))}},{key:"renderRowSelection",value:function(){var e=this,t=this.props,n=t.prefixCls,o=t.rowSelection,r=this.columns.concat();if(o){var a=this.getFlatCurrentPageData().filter(function(t,n){return!o.getCheckboxProps||!e.getCheckboxPropsByItem(t,n).disabled}),i=(0,E.default)(n+"-selection-column",(0,d.default)({},n+"-selection-column-custom",o.selections)),s={key:"selection-column",render:this.renderSelectionBox(o.type),className:i};if("radio"!==o.type){var l=a.every(function(t,n){return e.getCheckboxPropsByItem(t,n).disabled});s.title=x.default.createElement(W.default,{store:this.store,locale:this.getLocale(),data:a,getCheckboxPropsByItem:this.getCheckboxPropsByItem,getRecordKey:this.getRecordKey,disabled:l,prefixCls:n,onSelect:this.handleSelectRow,selections:o.selections,hideDefaultSelections:o.hideDefaultSelections,getPopupContainer:this.getPopupContainer})}r.some(function(e){return"left"===e.fixed||!0===e.fixed})&&(s.fixed="left"),r[0]&&"selection-column"===r[0].key?r[0]=s:r.unshift(s)}return r}},{key:"getColumnKey",value:function(e,t){return e.key||e.dataIndex||t}},{key:"getMaxCurrent",value:function(e){var t=this.state.pagination,n=t.current,o=t.pageSize;return(n-1)*o>=e?Math.floor((e-1)/o)+1:n}},{key:"isSortColumn",value:function(e){var t=this.state.sortColumn;return!(!e||!t)&&this.getColumnKey(t)===this.getColumnKey(e)}},{key:"renderColumnsDropdown",value:function(e){var t=this,n=this.props,o=n.prefixCls,r=n.dropdownPrefixCls,a=this.state.sortOrder,i=this.getLocale();return(0,Z.treeMap)(e,function(e,n){var s=(0,c.default)({},e),l=t.getColumnKey(s,n),d=void 0,u=void 0;if(s.filters&&s.filters.length>0||s.filterDropdown){var p=t.state.filters[l]||[];d=x.default.createElement(z.default,{locale:i,column:s,selectedKeys:p,confirmFilter:t.handleFilter,prefixCls:o+"-filter",dropdownPrefixCls:r||"ant-dropdown",getPopupContainer:t.getPopupContainer})}if(s.sorter){var f=t.isSortColumn(s);f&&(s.className=s.className||"",a&&(s.className+=" "+o+"-column-sort"));var h=f&&"ascend"===a,m=f&&"descend"===a;u=x.default.createElement("div",{className:o+"-column-sorter"},x.default.createElement("span",{className:o+"-column-sorter-up "+(h?"on":"off"),title:"↑",onClick:function(){return t.toggleSortOrder("ascend",s)}},x.default.createElement(L.default,{type:"caret-up"})),x.default.createElement("span",{className:o+"-column-sorter-down "+(m?"on":"off"),title:"↓",onClick:function(){return t.toggleSortOrder("descend",s)}},x.default.createElement(L.default,{type:"caret-down"})))}return s.title=x.default.createElement("span",null,s.title,u,d),s})}},{key:"renderPagination",value:function(){if(!this.hasPagination())return null;var e="default",t=this.state.pagination;t.size?e=t.size:"middle"!==this.props.size&&"small"!==this.props.size||(e="small");var n=t.total||this.getLocalData().length;return n>0?x.default.createElement(O.default,(0,c.default)({key:"pagination"},t,{className:(0,E.default)(t.className,this.props.prefixCls+"-pagination"),onChange:this.handlePageChange,total:n,size:e,current:this.getMaxCurrent(n),onShowSizeChange:this.handleShowSizeChange})):null}},{key:"prepareParamsArguments",value:function(e){var t=(0,c.default)({},e.pagination);delete t.onChange,delete t.onShowSizeChange;var n=e.filters,o={};return e.sortColumn&&e.sortOrder&&(o.column=e.sortColumn,o.order=e.sortOrder,o.field=e.sortColumn.dataIndex,o.columnKey=this.getColumnKey(e.sortColumn)),[t,n,o]}},{key:"findColumn",value:function(e){var t=this,n=void 0;return(0,Z.treeMap)(this.columns,function(o){t.getColumnKey(o)===e&&(n=o)}),n}},{key:"getCurrentPageData",value:function(){var e=this.getLocalData(),t=void 0,n=void 0,o=this.state;return this.hasPagination()?(n=o.pagination.pageSize,t=this.getMaxCurrent(o.pagination.total||e.length)):(n=Number.MAX_VALUE,t=1),(e.length>n||n===Number.MAX_VALUE)&&(e=e.filter(function(e,o){return o>=(t-1)*n&&o=0?delete t[e.key]:t[e.key]=e.keyPath,n.setState({keyPathOfSelectedItem:t})}},n.renderFilterIcon=function(){var e=n.props,t=e.column,o=e.locale,r=e.prefixCls,i=t.filterIcon,s=n.props.selectedKeys.length>0?r+"-selected":"";return i?m.default.cloneElement(i,{title:o.filterTitle,className:(0,w.default)(i.className,(0,a.default)({},r+"-icon",!0))}):m.default.createElement(T.default,{title:o.filterTitle,type:"filter",className:s})};var o="filterDropdownVisible"in e.column&&e.column.filterDropdownVisible;return n.state={selectedKeys:e.selectedKeys,keyPathOfSelectedItem:{},visible:o},n}return(0,f.default)(t,e),(0,d.default)(t,[{key:"componentDidMount",value:function(){var e=this.props.column;this.setNeverShown(e)}},{key:"componentWillReceiveProps",value:function(e){var t=e.column;this.setNeverShown(t);var n={};"selectedKeys"in e&&(n.selectedKeys=e.selectedKeys),"filterDropdownVisible"in t&&(n.visible=t.filterDropdownVisible),Object.keys(n).length>0&&this.setState(n)}},{key:"setVisible",value:function(e){var t=this.props.column;"filterDropdownVisible"in t||this.setState({visible:e}),t.onFilterDropdownVisibleChange&&t.onFilterDropdownVisibleChange(e)}},{key:"confirmFilter",value:function(){this.state.selectedKeys!==this.props.selectedKeys&&this.props.confirmFilter(this.props.column,this.state.selectedKeys)}},{key:"renderMenuItem",value:function(e){var t=this.props.column,n=!("filterMultiple"in t)||t.filterMultiple,o=n?m.default.createElement(C.default,{checked:this.state.selectedKeys.indexOf(e.value.toString())>=0}):m.default.createElement(D.default,{checked:this.state.selectedKeys.indexOf(e.value.toString())>=0});return m.default.createElement(_.Item,{key:e.value},o,m.default.createElement("span",null,e.text))}},{key:"hasSubMenu",value:function(){var e=this.props.column.filters;return(void 0===e?[]:e).some(function(e){return!!(e.children&&e.children.length>0)})}},{key:"renderMenus",value:function(e){var t=this;return e.map(function(e){if(e.children&&e.children.length>0){var n=t.state.keyPathOfSelectedItem,o=Object.keys(n).some(function(t){return n[t].indexOf(e.value)>=0}),r=o?t.props.dropdownPrefixCls+"-submenu-contain-selected":"";return m.default.createElement(_.SubMenu,{title:e.text,className:r,key:e.value.toString()},t.renderMenus(e.children))}return t.renderMenuItem(e)})}},{key:"render",value:function(){var e=this.props,t=e.column,n=e.locale,o=e.prefixCls,r=e.dropdownPrefixCls,i=e.getPopupContainer,s=!("filterMultiple"in t)||t.filterMultiple,l=(0,w.default)((0,a.default)({},r+"-menu-without-submenu",!this.hasSubMenu())),d=t.filterDropdown?m.default.createElement(A.default,null,t.filterDropdown):m.default.createElement(A.default,{className:o+"-dropdown"},m.default.createElement(v.default,{multiple:s,onClick:this.handleMenuItemClick,prefixCls:r+"-menu",className:l,onSelect:this.setSelectedKeys,onDeselect:this.setSelectedKeys,selectedKeys:this.state.selectedKeys},this.renderMenus(t.filters)),m.default.createElement("div",{className:o+"-dropdown-btns"},m.default.createElement("a",{className:o+"-dropdown-link confirm",onClick:this.handleConfirm},n.filterConfirm),m.default.createElement("a",{className:o+"-dropdown-link clear",onClick:this.handleClearFilters},n.filterReset)));return m.default.createElement(M.default,{trigger:["click"],overlay:d,visible:!this.neverShown&&this.state.visible,onVisibleChange:this.onVisibleChange,getPopupContainer:i},this.renderFilterIcon())}}]),t}(m.default.Component);t.default=P,P.defaultProps={handleFilter:function(){},column:{}},e.exports=t.default},"./node_modules/antd/lib/table/index.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=n("./node_modules/antd/lib/table/Table.js"),r=function(e){return e&&e.__esModule?e:{default:e}}(o);t.default=r.default,e.exports=t.default},"./node_modules/antd/lib/table/util.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"children",n=[];return function e(o){o.forEach(function(o){if(o[t]){var r=(0,c.default)({},o);delete r[t],n.push(r),o[t].length>0&&e(o[t])}else n.push(o)})}(e),n}function a(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"children";return e.map(function(e,o){var r={};return e[n]&&(r[n]=a(e[n],t,n)),(0,c.default)({},t(e,o),r)})}function i(e,t){return e.reduce(function(e,n){if(t(n)&&e.push(n),n.children){var o=i(n.children,t);e.push.apply(e,(0,d.default)(o))}return e},[])}function s(e){var t=[];return f.default.Children.forEach(e,function(e){if(f.default.isValidElement(e)){var n=(0,c.default)({},e.props);e.key&&(n.key=e.key),e.type&&e.type.__ANT_TABLE_COLUMN_GROUP&&(n.children=s(n.children)),t.push(n)}}),t}Object.defineProperty(t,"__esModule",{value:!0});var l=n("./node_modules/babel-runtime/helpers/toConsumableArray.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/extends.js"),c=o(u);t.flatArray=r,t.treeMap=a,t.flatFilter=i,t.normalizeColumns=s;var p=n("./node_modules/react/react.js"),f=o(p)},"./node_modules/antd/lib/time-picker/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e){return{showHour:e.indexOf("H")>-1||e.indexOf("h")>-1||e.indexOf("k")>-1,showMinute:e.indexOf("m")>-1,showSecond:e.indexOf("s")>-1}}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/defineProperty.js"),i=o(a),s=n("./node_modules/babel-runtime/helpers/extends.js"),l=o(s),d=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),u=o(d),c=n("./node_modules/babel-runtime/helpers/createClass.js"),p=o(c),f=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),h=o(f),m=n("./node_modules/babel-runtime/helpers/inherits.js"),g=o(m);t.generateShowHourMinuteSecond=r;var b=n("./node_modules/react/react.js"),_=o(b),v=n("./node_modules/moment/src/moment.js"),y=o(v),x=n("./node_modules/rc-time-picker/lib/TimePicker.js"),j=o(x),w=n("./node_modules/classnames/index.js"),k=o(w),M=n("./node_modules/antd/lib/locale-provider/injectLocale.js"),S=o(M),T=n("./node_modules/antd/lib/time-picker/locale/zh_CN.js"),E=o(T),C=function(e){function t(e){(0,u.default)(this,t);var n=(0,h.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));n.handleChange=function(e){"value"in n.props||n.setState({value:e});var t=n.props,o=t.onChange,r=t.format,a=void 0===r?"HH:mm:ss":r;o&&o(e,e&&e.format(a)||"")},n.handleOpenClose=function(e){var t=e.open,o=n.props.onOpenChange;o&&o(t)},n.saveTimePicker=function(e){n.timePickerRef=e};var o=e.value||e.defaultValue;if(o&&!y.default.isMoment(o))throw new Error("The value/defaultValue of TimePicker must be a moment object after `antd@2.0`, see: https://u.ant.design/time-picker-value");return n.state={value:o},n}return(0,g.default)(t,e),(0,p.default)(t,[{key:"componentWillReceiveProps",value:function(e){"value"in e&&this.setState({value:e.value})}},{key:"focus",value:function(){this.timePickerRef.focus()}},{key:"getDefaultFormat",value:function(){var e=this.props,t=e.format,n=e.use12Hours;return t||(n?"h:mm:ss a":"HH:mm:ss")}},{key:"render",value:function(){var e=(0,l.default)({},this.props);delete e.defaultValue;var t=this.getDefaultFormat(),n=(0,k.default)(e.className,(0,i.default)({},e.prefixCls+"-"+e.size,!!e.size)),o=function(t){return e.addon?_.default.createElement("div",{className:e.prefixCls+"-panel-addon"},e.addon(t)):null};return _.default.createElement(j.default,(0,l.default)({},r(t),e,{ref:this.saveTimePicker,format:t,className:n,value:this.state.value,placeholder:void 0===e.placeholder?this.getLocale().placeholder:e.placeholder,onChange:this.handleChange,onOpen:this.handleOpenClose,onClose:this.handleOpenClose,addon:o}))}}]),t}(_.default.Component);C.defaultProps={prefixCls:"ant-time-picker",align:{offset:[0,-2]},disabled:!1,disabledHours:void 0,disabledMinutes:void 0,disabledSeconds:void 0,hideDisabledOptions:!1,placement:"bottomLeft",transitionName:"slide-up"};var O=(0,S.default)("TimePicker",E.default);t.default=O(C)},"./node_modules/antd/lib/time-picker/locale/zh_CN.js":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o={placeholder:"请选择时间"};t.default=o,e.exports=t.default},"./node_modules/antd/lib/tooltip/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/babel-runtime/helpers/defineProperty.js"),a=o(r),i=n("./node_modules/babel-runtime/helpers/classCallCheck.js"),s=o(i),l=n("./node_modules/babel-runtime/helpers/createClass.js"),d=o(l),u=n("./node_modules/babel-runtime/helpers/possibleConstructorReturn.js"),c=o(u),p=n("./node_modules/babel-runtime/helpers/inherits.js"),f=o(p),h=n("./node_modules/babel-runtime/helpers/extends.js"),m=o(h),g=n("./node_modules/react/react.js"),b=o(g),_=n("./node_modules/rc-tooltip/lib/index.js"),v=o(_),y=n("./node_modules/classnames/index.js"),x=o(y),j=n("./node_modules/antd/lib/tooltip/placements.js"),w=o(j),k=function(e,t){var n={},o=(0,m.default)({},e);return t.forEach(function(t){e&&t in e&&(n[t]=e[t],delete o[t])}),{picked:n,omited:o}},M=function(e){function t(e){(0,s.default)(this,t);var n=(0,c.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.onVisibleChange=function(e){var t=n.props.onVisibleChange;"visible"in n.props||n.setState({visible:!n.isNoTitle()&&e}),t&&!n.isNoTitle()&&t(e)},n.onPopupAlign=function(e,t){var o=n.getPlacements(),r=Object.keys(o).filter(function(e){return o[e].points[0]===t.points[0]&&o[e].points[1]===t.points[1]})[0];if(r){var a=e.getBoundingClientRect(),i={top:"50%",left:"50%"};r.indexOf("top")>=0||r.indexOf("Bottom")>=0?i.top=a.height-t.offset[1]+"px":(r.indexOf("Top")>=0||r.indexOf("bottom")>=0)&&(i.top=-t.offset[1]+"px"),r.indexOf("left")>=0||r.indexOf("Right")>=0?i.left=a.width-t.offset[0]+"px":(r.indexOf("right")>=0||r.indexOf("Left")>=0)&&(i.left=-t.offset[0]+"px"),e.style.transformOrigin=i.left+" "+i.top}},n.state={visible:!!e.visible||!!e.defaultVisible},n}return(0,f.default)(t,e),(0,d.default)(t,[{key:"componentWillReceiveProps",value:function(e){"visible"in e&&this.setState({visible:e.visible})}},{key:"getPopupDomNode",value:function(){return this.refs.tooltip.getPopupDomNode()}},{key:"getPlacements",value:function(){var e=this.props,t=e.builtinPlacements,n=e.arrowPointAtCenter,o=e.autoAdjustOverflow;return t||(0,w.default)({arrowPointAtCenter:n,verticalArrowShift:8,autoAdjustOverflow:o})}},{key:"isHoverTrigger",value:function(){var e=this.props.trigger;return!e||"hover"===e||!!Array.isArray(e)&&e.indexOf("hover")>=0}},{key:"getDisabledCompatibleChildren",value:function(e){if((e.type.__ANT_BUTTON||"button"===e.type)&&e.props.disabled&&this.isHoverTrigger()){var t=k(e.props.style,["position","left","right","top","bottom","float","display","zIndex"]),n=t.picked,o=t.omited,r=(0,m.default)({display:"inline-block"},n,{cursor:"not-allowed"}),a=(0,m.default)({},o,{pointerEvents:"none"}),i=(0,g.cloneElement)(e,{style:a,className:null});return b.default.createElement("span",{style:r,className:e.props.className},i)}return e}},{key:"isNoTitle",value:function(){var e=this.props,t=e.title,n=e.overlay;return!t&&!n}},{key:"render",value:function(){var e=this.props,t=this.state,n=e.prefixCls,o=e.title,r=e.overlay,i=e.openClassName,s=e.getPopupContainer,l=e.getTooltipContainer,d=e.children,u=t.visible;"visible"in e||!this.isNoTitle()||(u=!1);var c=this.getDisabledCompatibleChildren(b.default.isValidElement(d)?d:b.default.createElement("span",null,d)),p=c.props,f=(0,x.default)(p.className,(0,a.default)({},i||n+"-open",!0));return b.default.createElement(v.default,(0,m.default)({},this.props,{getTooltipContainer:s||l,ref:"tooltip",builtinPlacements:this.getPlacements(),overlay:r||o||"",visible:u,onVisibleChange:this.onVisibleChange,onPopupAlign:this.onPopupAlign}),u?(0,g.cloneElement)(c,{className:f}):c)}}]),t}(b.default.Component);t.default=M,M.defaultProps={prefixCls:"ant-tooltip",placement:"top",transitionName:"zoom-big-fast",mouseEnterDelay:.1,mouseLeaveDelay:.1,arrowPointAtCenter:!1,autoAdjustOverflow:!0},e.exports=t.default},"./node_modules/antd/lib/tooltip/placements.js":function(e,t,n){"use strict";function o(e){return"boolean"==typeof e?e?l:d:(0,i.default)({},d,e)}function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.arrowWidth,n=void 0===t?5:t,r=e.horizontalArrowShift,a=void 0===r?16:r,l=e.verticalArrowShift,d=void 0===l?12:l,c=e.autoAdjustOverflow,p=void 0===c||c,f={left:{points:["cr","cl"],offset:[-4,0]},right:{points:["cl","cr"],offset:[4,0]},top:{points:["bc","tc"],offset:[0,-4]},bottom:{points:["tc","bc"],offset:[0,4]},topLeft:{points:["bl","tc"],offset:[-(a+n),-4]},leftTop:{points:["tr","cl"],offset:[-4,-(d+n)]},topRight:{points:["br","tc"],offset:[a+n,-4]},rightTop:{points:["tl","cr"],offset:[4,-(d+n)]},bottomRight:{points:["tr","bc"],offset:[a+n,4]},rightBottom:{points:["bl","cr"],offset:[4,d+n]},bottomLeft:{points:["tl","bc"],offset:[-(a+n),4]},leftBottom:{points:["br","cl"],offset:[-4,d+n]}};return Object.keys(f).forEach(function(t){f[t]=e.arrowPointAtCenter?(0,i.default)({},f[t],{overflow:o(p),targetOffset:u}):(0,i.default)({},s.placements[t],{overflow:o(p)})}),f}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/extends.js"),i=function(e){return e&&e.__esModule?e:{default:e}}(a);t.getOverflowOptions=o,t.default=r;var s=n("./node_modules/rc-tooltip/lib/placements.js"),l={adjustX:1,adjustY:1},d={adjustX:0,adjustY:0},u=[0,0]},"./node_modules/async-validator/lib/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e){this.rules=null,this._messages=p.messages,this.define(e)}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/extends.js"),i=o(a),s=n("./node_modules/babel-runtime/helpers/typeof.js"),l=o(s),d=n("./node_modules/async-validator/lib/util.js"),u=n("./node_modules/async-validator/lib/validator/index.js"),c=o(u),p=n("./node_modules/async-validator/lib/messages.js");r.prototype={messages:function(e){return e&&(this._messages=(0,d.deepMerge)((0,p.newMessages)(),e)),this._messages},define:function(e){if(!e)throw new Error("Cannot configure a schema with no rules");if("object"!==(void 0===e?"undefined":(0,l.default)(e))||Array.isArray(e))throw new Error("Rules must be an object");this.rules={};var t=void 0,n=void 0;for(t in e)e.hasOwnProperty(t)&&(n=e[t],this.rules[t]=Array.isArray(n)?n:[n])},validate:function(e){function t(e){var t=void 0,n=void 0,o=[],r={};for(t=0;t1&&void 0!==arguments[1]?arguments[1]:{},a=arguments[2],s=e,u=o,c=a;if("function"==typeof u&&(c=u,u={}),!this.rules||0===Object.keys(this.rules).length)return void(c&&c());if(u.messages){var f=this.messages();f===p.messages&&(f=(0,p.newMessages)()),(0,d.deepMerge)(f,u.messages),u.messages=f}else u.messages=this.messages();var h=void 0,m=void 0,g={};(u.keys||Object.keys(this.rules)).forEach(function(t){h=n.rules[t],m=s[t],h.forEach(function(o){var r=o;"function"==typeof r.transform&&(s===e&&(s=(0,i.default)({},s)),m=s[t]=r.transform(m)),r="function"==typeof r?{validator:r}:(0,i.default)({},r),r.validator=n.getValidationMethod(r),r.field=t,r.fullField=r.fullField||t,r.type=n.getType(r),r.validator&&(g[t]=g[t]||[],g[t].push({rule:r,value:m,source:s,field:t}))})});var b={};(0,d.asyncMap)(g,u,function(e,t){function n(e,t){return(0,i.default)({},t,{fullField:a.fullField+"."+e})}function o(){var o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],l=o;if(Array.isArray(l)||(l=[l]),l.length&&(0,d.warning)("async-validator:",l),l.length&&a.message&&(l=[].concat(a.message)),l=l.map((0,d.complementError)(a)),u.first&&l.length)return b[a.field]=1,t(l);if(s){if(a.required&&!e.value)return l=a.message?[].concat(a.message).map((0,d.complementError)(a)):u.error?[u.error(a,(0,d.format)(u.messages.required,a.field))]:[],t(l);var c={};if(a.defaultField)for(var p in e.value)e.value.hasOwnProperty(p)&&(c[p]=a.defaultField);c=(0,i.default)({},c,e.rule.fields);for(var f in c)if(c.hasOwnProperty(f)){var h=Array.isArray(c[f])?c[f]:[c[f]];c[f]=h.map(n.bind(null,f))}var m=new r(c);m.messages(u.messages),e.rule.options&&(e.rule.options.messages=u.messages,e.rule.options.error=u.error),m.validate(e.value,e.rule.options||u,function(e){t(e&&e.length?l.concat(e):e)})}else t(l)}var a=e.rule,s=!("object"!==a.type&&"array"!==a.type||"object"!==(0,l.default)(a.fields)&&"object"!==(0,l.default)(a.defaultField));s=s&&(a.required||!a.required&&e.value),a.field=e.field;var c=a.validator(a,e.value,o,e.source,u);c&&c.then&&c.then(function(){return o()},function(e){return o(e)})},function(e){t(e)})},getType:function(e){if(void 0===e.type&&e.pattern instanceof RegExp&&(e.type="pattern"),"function"!=typeof e.validator&&e.type&&!c.default.hasOwnProperty(e.type))throw new Error((0,d.format)("Unknown rule type %s",e.type));return e.type||"string"},getValidationMethod:function(e){if("function"==typeof e.validator)return e.validator;var t=Object.keys(e),n=t.indexOf("message");return-1!==n&&t.splice(n,1),1===t.length&&"required"===t[0]?c.default.required:c.default[this.getType(e)]||!1}},r.register=function(e,t){if("function"!=typeof t)throw new Error("Cannot register a validator by type, validator is not a function");c.default[e]=t},r.messages=p.messages,t.default=r,e.exports=t.default},"./node_modules/async-validator/lib/messages.js":function(e,t,n){"use strict";function o(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var e=JSON.parse(JSON.stringify(this));return e.clone=this.clone,e}}}Object.defineProperty(t,"__esModule",{value:!0}),t.newMessages=o;t.messages=o()},"./node_modules/async-validator/lib/rule/enum.js":function(e,t,n){"use strict";function o(e,t,n,o,r){e[i]=Array.isArray(e[i])?e[i]:[],-1===e[i].indexOf(t)&&o.push(a.format(r.messages[i],e.fullField,e[i].join(", ")))}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/async-validator/lib/util.js"),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(r),i="enum";t.default=o,e.exports=t.default},"./node_modules/async-validator/lib/rule/index.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/async-validator/lib/rule/required.js"),a=o(r),i=n("./node_modules/async-validator/lib/rule/whitespace.js"),s=o(i),l=n("./node_modules/async-validator/lib/rule/type.js"),d=o(l),u=n("./node_modules/async-validator/lib/rule/range.js"),c=o(u),p=n("./node_modules/async-validator/lib/rule/enum.js"),f=o(p),h=n("./node_modules/async-validator/lib/rule/pattern.js"),m=o(h);t.default={required:a.default,whitespace:s.default,type:d.default,range:c.default,enum:f.default,pattern:m.default},e.exports=t.default},"./node_modules/async-validator/lib/rule/pattern.js":function(e,t,n){"use strict";function o(e,t,n,o,r){if(e.pattern)if(e.pattern instanceof RegExp)e.pattern.lastIndex=0,e.pattern.test(t)||o.push(a.format(r.messages.pattern.mismatch,e.fullField,t,e.pattern));else if("string"==typeof e.pattern){var i=new RegExp(e.pattern);i.test(t)||o.push(a.format(r.messages.pattern.mismatch,e.fullField,t,e.pattern))}}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/async-validator/lib/util.js"),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(r);t.default=o,e.exports=t.default},"./node_modules/async-validator/lib/rule/range.js":function(e,t,n){"use strict";function o(e,t,n,o,r){var i="number"==typeof e.len,s="number"==typeof e.min,l="number"==typeof e.max,d=t,u=null,c="number"==typeof t,p="string"==typeof t,f=Array.isArray(t);if(c?u="number":p?u="string":f&&(u="array"),!u)return!1;(p||f)&&(d=t.length),i?d!==e.len&&o.push(a.format(r.messages[u].len,e.fullField,e.len)):s&&!l&&de.max?o.push(a.format(r.messages[u].max,e.fullField,e.max)):s&&l&&(de.max)&&o.push(a.format(r.messages[u].range,e.fullField,e.min,e.max))}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/async-validator/lib/util.js"),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(r);t.default=o,e.exports=t.default},"./node_modules/async-validator/lib/rule/required.js":function(e,t,n){"use strict";function o(e,t,n,o,r,i){!e.required||n.hasOwnProperty(e.field)&&!a.isEmptyValue(t,i||e.type)||o.push(a.format(r.messages.required,e.fullField))}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/async-validator/lib/util.js"),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(r);t.default=o,e.exports=t.default},"./node_modules/async-validator/lib/rule/type.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(e,t,n,o,r){if(e.required&&void 0===t)return void(0,u.default)(e,t,n,o,r);var a=["integer","float","array","regexp","object","method","email","number","date","url","hex"],s=e.type;a.indexOf(s)>-1?p[s](t)||o.push(l.format(r.messages.types[s],e.fullField,e.type)):s&&(void 0===t?"undefined":(0,i.default)(t))!==e.type&&o.push(l.format(r.messages.types[s],e.fullField,e.type))}Object.defineProperty(t,"__esModule",{value:!0});var a=n("./node_modules/babel-runtime/helpers/typeof.js"),i=o(a),s=n("./node_modules/async-validator/lib/util.js"),l=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(s),d=n("./node_modules/async-validator/lib/rule/required.js"),u=o(d),c={email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,url:new RegExp("^(?!mailto:)(?:(?:http|https|ftp)://|//)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$","i"),hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},p={integer:function(e){return p.number(e)&&parseInt(e,10)===e},float:function(e){return p.number(e)&&!p.integer(e)},array:function(e){return Array.isArray(e)},regexp:function(e){if(e instanceof RegExp)return!0;try{return!!new RegExp(e)}catch(e){return!1}},date:function(e){return"function"==typeof e.getTime&&"function"==typeof e.getMonth&&"function"==typeof e.getYear},number:function(e){return!isNaN(e)&&"number"==typeof e},object:function(e){return"object"===(void 0===e?"undefined":(0,i.default)(e))&&!p.array(e)},method:function(e){return"function"==typeof e},email:function(e){return"string"==typeof e&&!!e.match(c.email)&&e.length<255},url:function(e){return"string"==typeof e&&!!e.match(c.url)},hex:function(e){return"string"==typeof e&&!!e.match(c.hex)}};t.default=r,e.exports=t.default},"./node_modules/async-validator/lib/rule/whitespace.js":function(e,t,n){"use strict";function o(e,t,n,o,r){(/^\s+$/.test(t)||""===t)&&o.push(a.format(r.messages.whitespace,e.fullField))}Object.defineProperty(t,"__esModule",{value:!0});var r=n("./node_modules/async-validator/lib/util.js"),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(r);t.default=o,e.exports=t.default},"./node_modules/async-validator/lib/util.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}function r(){for(var e=arguments.length,t=Array(e),n=0;n=a)return e;switch(e){case"%s":return String(t[o++]);case"%d":return Number(t[o++]);case"%j":try{return JSON.stringify(t[o++])}catch(e){return"[Circular]"}break;default:return e}}),s=t[o];o=200&&e<300}};s.headers={common:{Accept:"application/json, text/plain, */*"}},r.forEach(["delete","get","head"],function(e){s.headers[e]={}}),r.forEach(["post","put","patch"],function(e){s.headers[e]=r.merge(i)}),e.exports=s}).call(t,n("./node_modules/process/browser.js"))},"./node_modules/axios/lib/helpers/bind.js":function(e,t,n){"use strict";e.exports=function(e,t){return function(){for(var n=new Array(arguments.length),o=0;o>8-s%1*8)){if((n=r.charCodeAt(s+=.75))>255)throw new o;t=t<<8|n}return i}var a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";o.prototype=new Error,o.prototype.code=5,o.prototype.name="InvalidCharacterError",e.exports=r},"./node_modules/axios/lib/helpers/buildURL.js":function(e,t,n){"use strict";function o(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var r=n("./node_modules/axios/lib/utils.js");e.exports=function(e,t,n){if(!t)return e;var a;if(n)a=n(t);else if(r.isURLSearchParams(t))a=t.toString();else{var i=[];r.forEach(t,function(e,t){null!==e&&void 0!==e&&(r.isArray(e)&&(t+="[]"),r.isArray(e)||(e=[e]),r.forEach(e,function(e){r.isDate(e)?e=e.toISOString():r.isObject(e)&&(e=JSON.stringify(e)),i.push(o(t)+"="+o(e))}))}),a=i.join("&")}return a&&(e+=(-1===e.indexOf("?")?"?":"&")+a),e}},"./node_modules/axios/lib/helpers/combineURLs.js":function(e,t,n){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},"./node_modules/axios/lib/helpers/cookies.js":function(e,t,n){"use strict";var o=n("./node_modules/axios/lib/utils.js");e.exports=o.isStandardBrowserEnv()?function(){return{write:function(e,t,n,r,a,i){var s=[];s.push(e+"="+encodeURIComponent(t)),o.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),o.isString(r)&&s.push("path="+r),o.isString(a)&&s.push("domain="+a),!0===i&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}()},"./node_modules/axios/lib/helpers/isAbsoluteURL.js":function(e,t,n){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},"./node_modules/axios/lib/helpers/isURLSameOrigin.js":function(e,t,n){"use strict";var o=n("./node_modules/axios/lib/utils.js");e.exports=o.isStandardBrowserEnv()?function(){function e(e){var t=e;return n&&(r.setAttribute("href",t),t=r.href),r.setAttribute("href",t),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:"/"===r.pathname.charAt(0)?r.pathname:"/"+r.pathname}}var t,n=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement("a");return t=e(window.location.href),function(n){var r=o.isString(n)?e(n):n;return r.protocol===t.protocol&&r.host===t.host}}():function(){return function(){return!0}}()},"./node_modules/axios/lib/helpers/normalizeHeaderName.js":function(e,t,n){"use strict";var o=n("./node_modules/axios/lib/utils.js");e.exports=function(e,t){o.forEach(e,function(n,o){o!==t&&o.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[o])})}},"./node_modules/axios/lib/helpers/parseHeaders.js":function(e,t,n){"use strict";var o=n("./node_modules/axios/lib/utils.js"),r=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,a,i={};return e?(o.forEach(e.split("\n"),function(e){if(a=e.indexOf(":"),t=o.trim(e.substr(0,a)).toLowerCase(),n=o.trim(e.substr(a+1)),t){if(i[t]&&r.indexOf(t)>=0)return;i[t]="set-cookie"===t?(i[t]?i[t]:[]).concat([n]):i[t]?i[t]+", "+n:n}}),i):i}},"./node_modules/axios/lib/helpers/spread.js":function(e,t,n){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},"./node_modules/axios/lib/utils.js":function(e,t,n){"use strict";function o(e){return"[object Array]"===k.call(e)}function r(e){return"[object ArrayBuffer]"===k.call(e)}function a(e){return"undefined"!=typeof FormData&&e instanceof FormData}function i(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer}function s(e){return"string"==typeof e}function l(e){return"number"==typeof e}function d(e){return void 0===e}function u(e){return null!==e&&"object"==typeof e}function c(e){return"[object Date]"===k.call(e)}function p(e){return"[object File]"===k.call(e)}function f(e){return"[object Blob]"===k.call(e)}function h(e){return"[object Function]"===k.call(e)}function m(e){return u(e)&&h(e.pipe)}function g(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams}function b(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")}function _(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)}function v(e,t){if(null!==e&&void 0!==e)if("object"!=typeof e&&(e=[e]),o(e))for(var n=0,r=e.length;n=0;--o){var r=this.tryEntries[o],a=r.completion;if("root"===r.tryLoc)return t("end");if(r.tryLoc<=this.prev){var i=_.call(r,"catchLoc"),s=_.call(r,"finallyLoc");if(i&&s){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&_.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),p(n),C}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var o=n.completion;if("throw"===o.type){var r=o.arg;p(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:h(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=g),C}}}("object"==typeof t?t:"object"==typeof window?window:"object"==typeof self?self:this)}).call(t,n("./node_modules/webpack/buildin/global.js"))},"./node_modules/babel-runtime/core-js/array/from.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/array/from.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/get-iterator.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/get-iterator.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/is-iterable.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/is-iterable.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/assign.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/object/assign.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/create.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/object/create.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/define-property.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/object/define-property.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/object/set-prototype-of.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/object/set-prototype-of.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/symbol.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/symbol/index.js"),__esModule:!0}},"./node_modules/babel-runtime/core-js/symbol/iterator.js":function(e,t,n){e.exports={default:n("./node_modules/core-js/library/fn/symbol/iterator.js"),__esModule:!0}},"./node_modules/babel-runtime/helpers/classCallCheck.js":function(e,t,n){"use strict";t.__esModule=!0,t.default=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},"./node_modules/babel-runtime/helpers/createClass.js":function(e,t,n){"use strict";t.__esModule=!0;var o=n("./node_modules/babel-runtime/core-js/object/define-property.js"),r=function(e){return e&&e.__esModule?e:{default:e}}(o);t.default=function(){function e(e,t){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return n}},"./node_modules/babel-runtime/helpers/possibleConstructorReturn.js":function(e,t,n){"use strict";t.__esModule=!0;var o=n("./node_modules/babel-runtime/helpers/typeof.js"),r=function(e){return e&&e.__esModule?e:{default:e}}(o);t.default=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":(0,r.default)(t))&&"function"!=typeof t?e:t}},"./node_modules/babel-runtime/helpers/slicedToArray.js":function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var r=n("./node_modules/babel-runtime/core-js/is-iterable.js"),a=o(r),i=n("./node_modules/babel-runtime/core-js/get-iterator.js"),s=o(i);t.default=function(){function e(e,t){var n=[],o=!0,r=!1,a=void 0;try{for(var i,l=(0,s.default)(e);!(o=(i=l.next()).done)&&(n.push(i.value),!t||n.length!==t);o=!0);}catch(e){r=!0,a=e}finally{try{!o&&l.return&&l.return()}finally{if(r)throw a}}return n}return function(t,n){if(Array.isArray(t))return t;if((0,a.default)(Object(t)))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}()},"./node_modules/babel-runtime/helpers/toConsumableArray.js":function(e,t,n){"use strict";t.__esModule=!0;var o=n("./node_modules/babel-runtime/core-js/array/from.js"),r=function(e){return e&&e.__esModule?e:{default:e}}(o);t.default=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t]/g)||[]).length<=0)return!0;return e(n).length>0}catch(e){return!1}},_process_options:function(t){this._o=e.extend({},this._o,t);var r=this.o=e.extend({},this._o),a=r.language;g[a]||(a=a.split("-")[0],g[a]||(a=h.language)),r.language=a,r.startView=this._resolveViewName(r.startView),r.minViewMode=this._resolveViewName(r.minViewMode),r.maxViewMode=this._resolveViewName(r.maxViewMode),r.startView=Math.max(this.o.minViewMode,Math.min(this.o.maxViewMode,r.startView)),!0!==r.multidate&&(r.multidate=Number(r.multidate)||!1,!1!==r.multidate&&(r.multidate=Math.max(0,r.multidate))),r.multidateSeparator=String(r.multidateSeparator),r.weekStart%=7,r.weekEnd=(r.weekStart+6)%7;var i=b.parseFormat(r.format);r.startDate!==-1/0&&(r.startDate?r.startDate instanceof Date?r.startDate=this._local_to_utc(this._zero_time(r.startDate)):r.startDate=b.parseDate(r.startDate,i,r.language,r.assumeNearbyYear):r.startDate=-1/0),r.endDate!==1/0&&(r.endDate?r.endDate instanceof Date?r.endDate=this._local_to_utc(this._zero_time(r.endDate)):r.endDate=b.parseDate(r.endDate,i,r.language,r.assumeNearbyYear):r.endDate=1/0),r.daysOfWeekDisabled=this._resolveDaysOfWeek(r.daysOfWeekDisabled||[]),r.daysOfWeekHighlighted=this._resolveDaysOfWeek(r.daysOfWeekHighlighted||[]),r.datesDisabled=r.datesDisabled||[],e.isArray(r.datesDisabled)||(r.datesDisabled=r.datesDisabled.split(",")),r.datesDisabled=e.map(r.datesDisabled,function(e){return b.parseDate(e,i,r.language,r.assumeNearbyYear)});var s=String(r.orientation).toLowerCase().split(/\s+/g),l=r.orientation.toLowerCase();if(s=e.grep(s,function(e){return/^auto|left|right|top|bottom$/.test(e)}),r.orientation={x:"auto",y:"auto"},l&&"auto"!==l)if(1===s.length)switch(s[0]){case"top":case"bottom":r.orientation.y=s[0];break;case"left":case"right":r.orientation.x=s[0]}else l=e.grep(s,function(e){return/^left|right$/.test(e)}),r.orientation.x=l[0]||"auto",l=e.grep(s,function(e){return/^top|bottom$/.test(e)}),r.orientation.y=l[0]||"auto";else;if(r.defaultViewDate instanceof Date||"string"==typeof r.defaultViewDate)r.defaultViewDate=b.parseDate(r.defaultViewDate,i,r.language,r.assumeNearbyYear);else if(r.defaultViewDate){var d=r.defaultViewDate.year||(new Date).getFullYear(),u=r.defaultViewDate.month||0,c=r.defaultViewDate.day||1;r.defaultViewDate=n(d,u,c)}else r.defaultViewDate=o()},_events:[],_secondaryEvents:[],_applyEvents:function(e){for(var n,o,r,a=0;ar?(this.picker.addClass("datepicker-orient-right"),p+=c-t):this.o.rtl?this.picker.addClass("datepicker-orient-right"):this.picker.addClass("datepicker-orient-left");var h,m=this.o.orientation.y;if("auto"===m&&(h=-a+f-n,m=h<0?"bottom":"top"),this.picker.addClass("datepicker-orient-"+m),"top"===m?f-=n+parseInt(this.picker.css("padding-top")):f+=u,this.o.rtl){var g=r-(p+c);this.picker.css({top:f,right:g,zIndex:l})}else this.picker.css({top:f,left:p,zIndex:l});return this},_allow_update:!0,update:function(){if(!this._allow_update)return this;var t=this.dates.copy(),n=[],o=!1;return arguments.length?(e.each(arguments,e.proxy(function(e,t){t instanceof Date&&(t=this._local_to_utc(t)),n.push(t)},this)),o=!0):(n=this.isInput?this.element.val():this.element.data("date")||this.inputField.val(),n=n&&this.o.multidate?n.split(this.o.multidateSeparator):[n],delete this.element.data().date),n=e.map(n,e.proxy(function(e){return b.parseDate(e,this.o.format,this.o.language,this.o.assumeNearbyYear)},this)),n=e.grep(n,e.proxy(function(e){return!this.dateWithinRange(e)||!e},this),!0),this.dates.replace(n),this.o.updateViewDate&&(this.dates.length?this.viewDate=new Date(this.dates.get(-1)):this.viewDatethis.o.endDate?this.viewDate=new Date(this.o.endDate):this.viewDate=this.o.defaultViewDate),o?(this.setValue(),this.element.change()):this.dates.length&&String(t)!==String(this.dates)&&o&&(this._trigger("changeDate"),this.element.change()),!this.dates.length&&t.length&&(this._trigger("clearDate"),this.element.change()),this.fill(),this},fillDow:function(){if(this.o.showWeekDays){var t=this.o.weekStart,n="";for(this.o.calendarWeeks&&(n+=' ');t";n+="",this.picker.find(".datepicker-days thead").append(n)}},fillMonths:function(){for(var e,t=this._utc_to_local(this.viewDate),n="",o=0;o<12;o++)e=t&&t.getMonth()===o?" focused":"",n+=''+g[this.o.language].monthsShort[o]+"";this.picker.find(".datepicker-months td").html(n)},setRange:function(t){t&&t.length?this.range=e.map(t,function(e){return e.valueOf()}):delete this.range,this.fill()},getClassNames:function(t){var n=[],a=this.viewDate.getUTCFullYear(),i=this.viewDate.getUTCMonth(),s=o();return t.getUTCFullYear()a||t.getUTCFullYear()===a&&t.getUTCMonth()>i)&&n.push("new"),this.focusDate&&t.valueOf()===this.focusDate.valueOf()&&n.push("focused"),this.o.todayHighlight&&r(t,s)&&n.push("today"),-1!==this.dates.contains(t)&&n.push("active"),this.dateWithinRange(t)||n.push("disabled"),this.dateIsDisabled(t)&&n.push("disabled","disabled-date"),-1!==e.inArray(t.getUTCDay(),this.o.daysOfWeekHighlighted)&&n.push("highlighted"),this.range&&(t>this.range[0]&&ts)&&d.push("disabled"),v===b&&d.push("focused"),l!==e.noop&&(c=l(new Date(v,0,1)),c===t?c={}:"boolean"==typeof c?c={enabled:c}:"string"==typeof c&&(c={classes:c}),!1===c.enabled&&d.push("disabled"),c.classes&&(d=d.concat(c.classes.split(/\s+/))),c.tooltip&&(u=c.tooltip)),p+='"+v+"";h.find(".datepicker-switch").text(m+"-"+g),h.find("td").html(p)},fill:function(){var o,r,a=new Date(this.viewDate),i=a.getUTCFullYear(),s=a.getUTCMonth(),l=this.o.startDate!==-1/0?this.o.startDate.getUTCFullYear():-1/0,d=this.o.startDate!==-1/0?this.o.startDate.getUTCMonth():-1/0,u=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,c=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,p=g[this.o.language].today||g.en.today||"",f=g[this.o.language].clear||g.en.clear||"",h=g[this.o.language].titleFormat||g.en.titleFormat;if(!isNaN(i)&&!isNaN(s)){this.picker.find(".datepicker-days .datepicker-switch").text(b.formatDate(a,h,this.o.language)),this.picker.find("tfoot .today").text(p).css("display",!0===this.o.todayBtn||"linked"===this.o.todayBtn?"table-cell":"none"),this.picker.find("tfoot .clear").text(f).css("display",!0===this.o.clearBtn?"table-cell":"none"),this.picker.find("thead .datepicker-title").text(this.o.title).css("display","string"==typeof this.o.title&&""!==this.o.title?"table-cell":"none"),this.updateNavArrows(),this.fillMonths();var m=n(i,s,0),_=m.getUTCDate();m.setUTCDate(_-(m.getUTCDay()-this.o.weekStart+7)%7);var v=new Date(m);m.getUTCFullYear()<100&&v.setUTCFullYear(m.getUTCFullYear()),v.setUTCDate(v.getUTCDate()+42),v=v.valueOf();for(var y,x,j=[];m.valueOf()"),this.o.calendarWeeks)){var w=new Date(+m+(this.o.weekStart-y-7)%7*864e5),k=new Date(Number(w)+(11-w.getUTCDay())%7*864e5),M=new Date(Number(M=n(k.getUTCFullYear(),0,1))+(11-M.getUTCDay())%7*864e5),S=(k-M)/864e5/7+1;j.push(''+S+"")}x=this.getClassNames(m),x.push("day");var T=m.getUTCDate();this.o.beforeShowDay!==e.noop&&(r=this.o.beforeShowDay(this._utc_to_local(m)),r===t?r={}:"boolean"==typeof r?r={enabled:r}:"string"==typeof r&&(r={classes:r}),!1===r.enabled&&x.push("disabled"),r.classes&&(x=x.concat(r.classes.split(/\s+/))),r.tooltip&&(o=r.tooltip),r.content&&(T=r.content)),x=e.isFunction(e.uniqueSort)?e.uniqueSort(x):e.unique(x),j.push(''+T+""),o=null,y===this.o.weekEnd&&j.push(""),m.setUTCDate(m.getUTCDate()+1)}this.picker.find(".datepicker-days tbody").html(j.join(""));var E=g[this.o.language].monthsTitle||g.en.monthsTitle||"Months",D=this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode<2?E:i).end().find("tbody span").removeClass("active");if(e.each(this.dates,function(e,t){t.getUTCFullYear()===i&&D.eq(t.getUTCMonth()).addClass("active")}),(iu)&&D.addClass("disabled"),i===l&&D.slice(0,d).addClass("disabled"),i===u&&D.slice(c+1).addClass("disabled"),this.o.beforeShowMonth!==e.noop){var O=this;e.each(D,function(n,o){var r=new Date(i,n,1),a=O.o.beforeShowMonth(r);a===t?a={}:"boolean"==typeof a?a={enabled:a}:"string"==typeof a&&(a={classes:a}),!1!==a.enabled||e(o).hasClass("disabled")||e(o).addClass("disabled"),a.classes&&e(o).addClass(a.classes),a.tooltip&&e(o).prop("title",a.tooltip)})}this._fill_yearsView(".datepicker-years","year",10,i,l,u,this.o.beforeShowYear),this._fill_yearsView(".datepicker-decades","decade",100,i,l,u,this.o.beforeShowDecade),this._fill_yearsView(".datepicker-centuries","century",1e3,i,l,u,this.o.beforeShowCentury)}},updateNavArrows:function(){if(this._allow_update){var e,t,n=new Date(this.viewDate),o=n.getUTCFullYear(),r=n.getUTCMonth(),a=this.o.startDate!==-1/0?this.o.startDate.getUTCFullYear():-1/0,i=this.o.startDate!==-1/0?this.o.startDate.getUTCMonth():-1/0,s=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,l=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,d=1;switch(this.viewMode){case 4:d*=10;case 3:d*=10;case 2:d*=10;case 1:e=Math.floor(o/d)*ds;break;case 0:e=o<=a&&r=s&&r>l}this.picker.find(".prev").toggleClass("disabled",e),this.picker.find(".next").toggleClass("disabled",t)}},click:function(t){t.preventDefault(),t.stopPropagation();var r,a,i,s;r=e(t.target),r.hasClass("datepicker-switch")&&this.viewMode!==this.o.maxViewMode&&this.setViewMode(this.viewMode+1),r.hasClass("today")&&!r.hasClass("day")&&(this.setViewMode(0),this._setDate(o(),"linked"===this.o.todayBtn?null:"view")),r.hasClass("clear")&&this.clearDates(),r.hasClass("disabled")||(r.hasClass("month")||r.hasClass("year")||r.hasClass("decade")||r.hasClass("century"))&&(this.viewDate.setUTCDate(1),a=1,1===this.viewMode?(s=r.parent().find("span").index(r),i=this.viewDate.getUTCFullYear(),this.viewDate.setUTCMonth(s)):(s=0,i=Number(r.text()),this.viewDate.setUTCFullYear(i)),this._trigger(b.viewModes[this.viewMode-1].e,this.viewDate),this.viewMode===this.o.minViewMode?this._setDate(n(i,s,a)):(this.setViewMode(this.viewMode-1),this.fill())),this.picker.is(":visible")&&this._focused_from&&this._focused_from.focus(),delete this._focused_from},dayCellClick:function(t){var n=e(t.currentTarget),o=n.data("date"),r=new Date(o);this.o.updateViewDate&&(r.getUTCFullYear()!==this.viewDate.getUTCFullYear()&&this._trigger("changeYear",this.viewDate),r.getUTCMonth()!==this.viewDate.getUTCMonth()&&this._trigger("changeMonth",this.viewDate)),this._setDate(r)},navArrowsClick:function(t){var n=e(t.currentTarget),o=n.hasClass("prev")?-1:1;0!==this.viewMode&&(o*=12*b.viewModes[this.viewMode].navStep),this.viewDate=this.moveMonth(this.viewDate,o),this._trigger(b.viewModes[this.viewMode].e,this.viewDate),this.fill()},_toggle_multidate:function(e){var t=this.dates.contains(e);if(e||this.dates.clear(),-1!==t?(!0===this.o.multidate||this.o.multidate>1||this.o.toggleActive)&&this.dates.remove(t):!1===this.o.multidate?(this.dates.clear(),this.dates.push(e)):this.dates.push(e),"number"==typeof this.o.multidate)for(;this.dates.length>this.o.multidate;)this.dates.remove(0)},_setDate:function(e,t){t&&"date"!==t||this._toggle_multidate(e&&new Date(e)),(!t&&this.o.updateViewDate||"view"===t)&&(this.viewDate=e&&new Date(e)),this.fill(),this.setValue(),t&&"view"===t||this._trigger("changeDate"),this.inputField.trigger("change"),!this.o.autoclose||t&&"date"!==t||this.hide()},moveDay:function(e,t){var n=new Date(e);return n.setUTCDate(e.getUTCDate()+t),n},moveWeek:function(e,t){return this.moveDay(e,7*t)},moveMonth:function(e,t){if(!i(e))return this.o.defaultViewDate;if(!t)return e;var n,o,r=new Date(e.valueOf()),a=r.getUTCDate(),s=r.getUTCMonth(),l=Math.abs(t);if(t=t>0?1:-1,1===l)o=-1===t?function(){return r.getUTCMonth()===s}:function(){return r.getUTCMonth()!==n},n=s+t,r.setUTCMonth(n),n=(n+12)%12;else{for(var d=0;d0},dateWithinRange:function(e){return e>=this.o.startDate&&e<=this.o.endDate},keydown:function(e){if(!this.picker.is(":visible"))return void(40!==e.keyCode&&27!==e.keyCode||(this.show(),e.stopPropagation()));var t,n,o=!1,r=this.focusDate||this.viewDate;switch(e.keyCode){case 27:this.focusDate?(this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill()):this.hide(),e.preventDefault(),e.stopPropagation();break;case 37:case 38:case 39:case 40:if(!this.o.keyboardNavigation||7===this.o.daysOfWeekDisabled.length)break;t=37===e.keyCode||38===e.keyCode?-1:1,0===this.viewMode?e.ctrlKey?(n=this.moveAvailableDate(r,t,"moveYear"))&&this._trigger("changeYear",this.viewDate):e.shiftKey?(n=this.moveAvailableDate(r,t,"moveMonth"))&&this._trigger("changeMonth",this.viewDate):37===e.keyCode||39===e.keyCode?n=this.moveAvailableDate(r,t,"moveDay"):this.weekOfDateIsDisabled(r)||(n=this.moveAvailableDate(r,t,"moveWeek")):1===this.viewMode?(38!==e.keyCode&&40!==e.keyCode||(t*=4),n=this.moveAvailableDate(r,t,"moveMonth")):2===this.viewMode&&(38!==e.keyCode&&40!==e.keyCode||(t*=4),n=this.moveAvailableDate(r,t,"moveYear")),n&&(this.focusDate=this.viewDate=n,this.setValue(),this.fill(),e.preventDefault());break;case 13:if(!this.o.forceParse)break;r=this.focusDate||this.dates.get(-1)||this.viewDate,this.o.keyboardNavigation&&(this._toggle_multidate(r),o=!0),this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.setValue(),this.fill(),this.picker.is(":visible")&&(e.preventDefault(),e.stopPropagation(),this.o.autoclose&&this.hide());break;case 9:this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill(),this.hide()}o&&(this.dates.length?this._trigger("changeDate"):this._trigger("clearDate"),this.inputField.trigger("change"))},setViewMode:function(e){this.viewMode=e,this.picker.children("div").hide().filter(".datepicker-"+b.viewModes[this.viewMode].clsName).show(),this.updateNavArrows(),this._trigger("changeViewMode",new Date(this.viewDate))}};var c=function(t,n){e.data(t,"datepicker",this),this.element=e(t),this.inputs=e.map(n.inputs,function(e){return e.jquery?e[0]:e}),delete n.inputs,this.keepEmptyValues=n.keepEmptyValues,delete n.keepEmptyValues,f.call(e(this.inputs),n).on("changeDate",e.proxy(this.dateUpdated,this)),this.pickers=e.map(this.inputs,function(t){return e.data(t,"datepicker")}),this.updateDates()};c.prototype={updateDates:function(){this.dates=e.map(this.pickers,function(e){return e.getUTCDate()}),this.updateRanges()},updateRanges:function(){var t=e.map(this.dates,function(e){return e.valueOf()});e.each(this.pickers,function(e,n){n.setRange(t)})},clearDates:function(){e.each(this.pickers,function(e,t){t.clearDates()})},dateUpdated:function(n){if(!this.updating){this.updating=!0;var o=e.data(n.target,"datepicker");if(o!==t){var r=o.getUTCDate(),a=this.keepEmptyValues,i=e.inArray(n.target,this.inputs),s=i-1,l=i+1,d=this.inputs.length;if(-1!==i){if(e.each(this.pickers,function(e,t){t.getUTCDate()||t!==o&&a||t.setUTCDate(r)}),r=0&&rthis.dates[l])for(;lthis.dates[l];)this.pickers[l++].setUTCDate(r);this.updateDates(),delete this.updating}}}},destroy:function(){e.map(this.pickers,function(e){e.destroy()}),e(this.inputs).off("changeDate",this.dateUpdated),delete this.element.data().datepicker},remove:a("destroy","Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead")};var p=e.fn.datepicker,f=function(n){var o=Array.apply(null,arguments);o.shift();var r;if(this.each(function(){var t=e(this),a=t.data("datepicker"),i="object"==typeof n&&n;if(!a){var d=s(this,"date"),p=e.extend({},h,d,i),f=l(p.language),m=e.extend({},h,f,d,i);t.hasClass("input-daterange")||m.inputs?(e.extend(m,{inputs:m.inputs||t.find("input").toArray()}),a=new c(this,m)):a=new u(this,m),t.data("datepicker",a)}"string"==typeof n&&"function"==typeof a[n]&&(r=a[n].apply(a,o))}),r===t||r instanceof u||r instanceof c)return this;if(this.length>1)throw new Error("Using only allowed for the collection of a single element ("+n+" function)");return r};e.fn.datepicker=f;var h=e.fn.datepicker.defaults={assumeNearbyYear:!1,autoclose:!1,beforeShowDay:e.noop,beforeShowMonth:e.noop,beforeShowYear:e.noop,beforeShowDecade:e.noop,beforeShowCentury:e.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],daysOfWeekHighlighted:[],datesDisabled:[],endDate:1/0,forceParse:!0,format:"mm/dd/yyyy",keepEmptyValues:!1,keyboardNavigation:!0,language:"en",minViewMode:0,maxViewMode:4,multidate:!1,multidateSeparator:",",orientation:"auto",rtl:!1,startDate:-1/0,startView:0,todayBtn:!1,todayHighlight:!1,updateViewDate:!0,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,showOnFocus:!0,zIndexOffset:10,container:"body",immediateUpdates:!1,title:"",templates:{leftArrow:"«",rightArrow:"»"},showWeekDays:!0},m=e.fn.datepicker.locale_opts=["format","rtl","weekStart"];e.fn.datepicker.Constructor=u;var g=e.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM yyyy"}},b={viewModes:[{names:["days","month"],clsName:"days",e:"changeMonth"},{names:["months","year"],clsName:"months",e:"changeYear",navStep:1},{names:["years","decade"],clsName:"years",e:"changeDecade",navStep:10},{names:["decades","century"],clsName:"decades",e:"changeCentury",navStep:100},{names:["centuries","millennium"],clsName:"centuries",e:"changeMillennium",navStep:1e3}],validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,parseFormat:function(e){if("function"==typeof e.toValue&&"function"==typeof e.toDisplay)return e;var t=e.replace(this.validParts,"\0").split("\0"),n=e.match(this.validParts);if(!t||!t.length||!n||0===n.length)throw new Error("Invalid date format.");return{separators:t,parts:n}},parseDate:function(n,r,a,i){function s(e,t){return!0===t&&(t=10),e<100&&(e+=2e3)>(new Date).getFullYear()+t&&(e-=100),e}function l(){var e=this.slice(0,d[f].length),t=d[f].slice(0,e.length);return e.toLowerCase()===t.toLowerCase()}if(!n)return t;if(n instanceof Date)return n;if("string"==typeof r&&(r=b.parseFormat(r)),r.toValue)return r.toValue(n,r,a);var d,c,p,f,h,m={d:"moveDay",m:"moveMonth",w:"moveWeek",y:"moveYear"},_={yesterday:"-1d",today:"+0d",tomorrow:"+1d"};if(n in _&&(n=_[n]),/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/i.test(n)){for(d=n.match(/([\-+]\d+)([dmwy])/gi),n=new Date,f=0;f'+h.templates.leftArrow+''+h.templates.rightArrow+"",contTemplate:'',footTemplate:''};b.template='
    '+b.headTemplate+""+b.footTemplate+'
    '+b.headTemplate+b.contTemplate+b.footTemplate+'
    '+b.headTemplate+b.contTemplate+b.footTemplate+'
    '+b.headTemplate+b.contTemplate+b.footTemplate+'
    '+b.headTemplate+b.contTemplate+b.footTemplate+"
    ",e.fn.datepicker.DPGlobal=b,e.fn.datepicker.noConflict=function(){return e.fn.datepicker=p,this},e.fn.datepicker.version="1.8.0",e.fn.datepicker.deprecated=function(e){var t=window.console;t&&t.warn&&t.warn("DEPRECATED: "+e)},e(document).on("focus.datepicker.data-api click.datepicker.data-api",'[data-provide="datepicker"]',function(t){var n=e(this);n.data("datepicker")||(t.preventDefault(),f.call(n,"show"))}),e(function(){f.call(e('[data-provide="datepicker-inline"]'))})})},"./node_modules/classnames/index.js":function(e,t,n){var o,r;/*! +!function(i){r=[n("./node_modules/jquery/dist/jquery.js")],o=i,void 0!==(a="function"==typeof o?o.apply(t,r):o)&&(e.exports=a)}(function(e,t){function n(){return new Date(Date.UTC.apply(Date,arguments))}function o(){var e=new Date;return n(e.getFullYear(),e.getMonth(),e.getDate())}function r(e,t){return e.getUTCFullYear()===t.getUTCFullYear()&&e.getUTCMonth()===t.getUTCMonth()&&e.getUTCDate()===t.getUTCDate()}function a(n,o){return function(){return o!==t&&e.fn.datepicker.deprecated(o),this[n].apply(this,arguments)}}function i(e){return e&&!isNaN(e.getTime())}function s(t,n){function o(e,t){return t.toLowerCase()}var r,a=e(t).data(),i={},s=new RegExp("^"+n.toLowerCase()+"([A-Z])");n=new RegExp("^"+n.toLowerCase());for(var l in a)n.test(l)&&(r=l.replace(s,o),i[r]=a[l]);return i}function l(t){var n={};if(g[t]||(t=t.split("-")[0],g[t])){var o=g[t];return e.each(m,function(e,t){t in o&&(n[t]=o[t])}),n}}var d=function(){var t={get:function(e){return this.slice(e)[0]},contains:function(e){for(var t=e&&e.valueOf(),n=0,o=this.length;n]/g)||[]).length<=0)return!0;return e(n).length>0}catch(e){return!1}},_process_options:function(t){this._o=e.extend({},this._o,t);var r=this.o=e.extend({},this._o),a=r.language;g[a]||(a=a.split("-")[0],g[a]||(a=h.language)),r.language=a,r.startView=this._resolveViewName(r.startView),r.minViewMode=this._resolveViewName(r.minViewMode),r.maxViewMode=this._resolveViewName(r.maxViewMode),r.startView=Math.max(this.o.minViewMode,Math.min(this.o.maxViewMode,r.startView)),!0!==r.multidate&&(r.multidate=Number(r.multidate)||!1,!1!==r.multidate&&(r.multidate=Math.max(0,r.multidate))),r.multidateSeparator=String(r.multidateSeparator),r.weekStart%=7,r.weekEnd=(r.weekStart+6)%7;var i=b.parseFormat(r.format);r.startDate!==-1/0&&(r.startDate?r.startDate instanceof Date?r.startDate=this._local_to_utc(this._zero_time(r.startDate)):r.startDate=b.parseDate(r.startDate,i,r.language,r.assumeNearbyYear):r.startDate=-1/0),r.endDate!==1/0&&(r.endDate?r.endDate instanceof Date?r.endDate=this._local_to_utc(this._zero_time(r.endDate)):r.endDate=b.parseDate(r.endDate,i,r.language,r.assumeNearbyYear):r.endDate=1/0),r.daysOfWeekDisabled=this._resolveDaysOfWeek(r.daysOfWeekDisabled||[]),r.daysOfWeekHighlighted=this._resolveDaysOfWeek(r.daysOfWeekHighlighted||[]),r.datesDisabled=r.datesDisabled||[],e.isArray(r.datesDisabled)||(r.datesDisabled=r.datesDisabled.split(",")),r.datesDisabled=e.map(r.datesDisabled,function(e){return b.parseDate(e,i,r.language,r.assumeNearbyYear)});var s=String(r.orientation).toLowerCase().split(/\s+/g),l=r.orientation.toLowerCase();if(s=e.grep(s,function(e){return/^auto|left|right|top|bottom$/.test(e)}),r.orientation={x:"auto",y:"auto"},l&&"auto"!==l)if(1===s.length)switch(s[0]){case"top":case"bottom":r.orientation.y=s[0];break;case"left":case"right":r.orientation.x=s[0]}else l=e.grep(s,function(e){return/^left|right$/.test(e)}),r.orientation.x=l[0]||"auto",l=e.grep(s,function(e){return/^top|bottom$/.test(e)}),r.orientation.y=l[0]||"auto";else;if(r.defaultViewDate instanceof Date||"string"==typeof r.defaultViewDate)r.defaultViewDate=b.parseDate(r.defaultViewDate,i,r.language,r.assumeNearbyYear);else if(r.defaultViewDate){var d=r.defaultViewDate.year||(new Date).getFullYear(),u=r.defaultViewDate.month||0,c=r.defaultViewDate.day||1;r.defaultViewDate=n(d,u,c)}else r.defaultViewDate=o()},_events:[],_secondaryEvents:[],_applyEvents:function(e){for(var n,o,r,a=0;ar?(this.picker.addClass("datepicker-orient-right"),p+=c-t):this.o.rtl?this.picker.addClass("datepicker-orient-right"):this.picker.addClass("datepicker-orient-left");var h,m=this.o.orientation.y;if("auto"===m&&(h=-a+f-n,m=h<0?"bottom":"top"),this.picker.addClass("datepicker-orient-"+m),"top"===m?f-=n+parseInt(this.picker.css("padding-top")):f+=u,this.o.rtl){var g=r-(p+c);this.picker.css({top:f,right:g,zIndex:l})}else this.picker.css({top:f,left:p,zIndex:l});return this},_allow_update:!0,update:function(){if(!this._allow_update)return this;var t=this.dates.copy(),n=[],o=!1;return arguments.length?(e.each(arguments,e.proxy(function(e,t){t instanceof Date&&(t=this._local_to_utc(t)),n.push(t)},this)),o=!0):(n=this.isInput?this.element.val():this.element.data("date")||this.inputField.val(),n=n&&this.o.multidate?n.split(this.o.multidateSeparator):[n],delete this.element.data().date),n=e.map(n,e.proxy(function(e){return b.parseDate(e,this.o.format,this.o.language,this.o.assumeNearbyYear)},this)),n=e.grep(n,e.proxy(function(e){return!this.dateWithinRange(e)||!e},this),!0),this.dates.replace(n),this.o.updateViewDate&&(this.dates.length?this.viewDate=new Date(this.dates.get(-1)):this.viewDatethis.o.endDate?this.viewDate=new Date(this.o.endDate):this.viewDate=this.o.defaultViewDate),o?(this.setValue(),this.element.change()):this.dates.length&&String(t)!==String(this.dates)&&o&&(this._trigger("changeDate"),this.element.change()),!this.dates.length&&t.length&&(this._trigger("clearDate"),this.element.change()),this.fill(),this},fillDow:function(){if(this.o.showWeekDays){var t=this.o.weekStart,n="";for(this.o.calendarWeeks&&(n+=' ');t";n+="",this.picker.find(".datepicker-days thead").append(n)}},fillMonths:function(){for(var e,t=this._utc_to_local(this.viewDate),n="",o=0;o<12;o++)e=t&&t.getMonth()===o?" focused":"",n+=''+g[this.o.language].monthsShort[o]+"";this.picker.find(".datepicker-months td").html(n)},setRange:function(t){t&&t.length?this.range=e.map(t,function(e){return e.valueOf()}):delete this.range,this.fill()},getClassNames:function(t){var n=[],a=this.viewDate.getUTCFullYear(),i=this.viewDate.getUTCMonth(),s=o();return t.getUTCFullYear()a||t.getUTCFullYear()===a&&t.getUTCMonth()>i)&&n.push("new"),this.focusDate&&t.valueOf()===this.focusDate.valueOf()&&n.push("focused"),this.o.todayHighlight&&r(t,s)&&n.push("today"),-1!==this.dates.contains(t)&&n.push("active"),this.dateWithinRange(t)||n.push("disabled"),this.dateIsDisabled(t)&&n.push("disabled","disabled-date"),-1!==e.inArray(t.getUTCDay(),this.o.daysOfWeekHighlighted)&&n.push("highlighted"),this.range&&(t>this.range[0]&&ts)&&d.push("disabled"),v===b&&d.push("focused"),l!==e.noop&&(c=l(new Date(v,0,1)),c===t?c={}:"boolean"==typeof c?c={enabled:c}:"string"==typeof c&&(c={classes:c}),!1===c.enabled&&d.push("disabled"),c.classes&&(d=d.concat(c.classes.split(/\s+/))),c.tooltip&&(u=c.tooltip)),p+='"+v+"";h.find(".datepicker-switch").text(m+"-"+g),h.find("td").html(p)},fill:function(){var o,r,a=new Date(this.viewDate),i=a.getUTCFullYear(),s=a.getUTCMonth(),l=this.o.startDate!==-1/0?this.o.startDate.getUTCFullYear():-1/0,d=this.o.startDate!==-1/0?this.o.startDate.getUTCMonth():-1/0,u=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,c=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,p=g[this.o.language].today||g.en.today||"",f=g[this.o.language].clear||g.en.clear||"",h=g[this.o.language].titleFormat||g.en.titleFormat;if(!isNaN(i)&&!isNaN(s)){this.picker.find(".datepicker-days .datepicker-switch").text(b.formatDate(a,h,this.o.language)),this.picker.find("tfoot .today").text(p).css("display",!0===this.o.todayBtn||"linked"===this.o.todayBtn?"table-cell":"none"),this.picker.find("tfoot .clear").text(f).css("display",!0===this.o.clearBtn?"table-cell":"none"),this.picker.find("thead .datepicker-title").text(this.o.title).css("display","string"==typeof this.o.title&&""!==this.o.title?"table-cell":"none"),this.updateNavArrows(),this.fillMonths();var m=n(i,s,0),_=m.getUTCDate();m.setUTCDate(_-(m.getUTCDay()-this.o.weekStart+7)%7);var v=new Date(m);m.getUTCFullYear()<100&&v.setUTCFullYear(m.getUTCFullYear()),v.setUTCDate(v.getUTCDate()+42),v=v.valueOf();for(var y,x,j=[];m.valueOf()"),this.o.calendarWeeks)){var w=new Date(+m+(this.o.weekStart-y-7)%7*864e5),k=new Date(Number(w)+(11-w.getUTCDay())%7*864e5),M=new Date(Number(M=n(k.getUTCFullYear(),0,1))+(11-M.getUTCDay())%7*864e5),S=(k-M)/864e5/7+1;j.push(''+S+"")}x=this.getClassNames(m),x.push("day");var T=m.getUTCDate();this.o.beforeShowDay!==e.noop&&(r=this.o.beforeShowDay(this._utc_to_local(m)),r===t?r={}:"boolean"==typeof r?r={enabled:r}:"string"==typeof r&&(r={classes:r}),!1===r.enabled&&x.push("disabled"),r.classes&&(x=x.concat(r.classes.split(/\s+/))),r.tooltip&&(o=r.tooltip),r.content&&(T=r.content)),x=e.isFunction(e.uniqueSort)?e.uniqueSort(x):e.unique(x),j.push(''+T+""),o=null,y===this.o.weekEnd&&j.push(""),m.setUTCDate(m.getUTCDate()+1)}this.picker.find(".datepicker-days tbody").html(j.join(""));var E=g[this.o.language].monthsTitle||g.en.monthsTitle||"Months",C=this.picker.find(".datepicker-months").find(".datepicker-switch").text(this.o.maxViewMode<2?E:i).end().find("tbody span").removeClass("active");if(e.each(this.dates,function(e,t){t.getUTCFullYear()===i&&C.eq(t.getUTCMonth()).addClass("active")}),(iu)&&C.addClass("disabled"),i===l&&C.slice(0,d).addClass("disabled"),i===u&&C.slice(c+1).addClass("disabled"),this.o.beforeShowMonth!==e.noop){var O=this;e.each(C,function(n,o){var r=new Date(i,n,1),a=O.o.beforeShowMonth(r);a===t?a={}:"boolean"==typeof a?a={enabled:a}:"string"==typeof a&&(a={classes:a}),!1!==a.enabled||e(o).hasClass("disabled")||e(o).addClass("disabled"),a.classes&&e(o).addClass(a.classes),a.tooltip&&e(o).prop("title",a.tooltip)})}this._fill_yearsView(".datepicker-years","year",10,i,l,u,this.o.beforeShowYear),this._fill_yearsView(".datepicker-decades","decade",100,i,l,u,this.o.beforeShowDecade),this._fill_yearsView(".datepicker-centuries","century",1e3,i,l,u,this.o.beforeShowCentury)}},updateNavArrows:function(){if(this._allow_update){var e,t,n=new Date(this.viewDate),o=n.getUTCFullYear(),r=n.getUTCMonth(),a=this.o.startDate!==-1/0?this.o.startDate.getUTCFullYear():-1/0,i=this.o.startDate!==-1/0?this.o.startDate.getUTCMonth():-1/0,s=this.o.endDate!==1/0?this.o.endDate.getUTCFullYear():1/0,l=this.o.endDate!==1/0?this.o.endDate.getUTCMonth():1/0,d=1;switch(this.viewMode){case 4:d*=10;case 3:d*=10;case 2:d*=10;case 1:e=Math.floor(o/d)*ds;break;case 0:e=o<=a&&r=s&&r>l}this.picker.find(".prev").toggleClass("disabled",e),this.picker.find(".next").toggleClass("disabled",t)}},click:function(t){t.preventDefault(),t.stopPropagation();var r,a,i,s;r=e(t.target),r.hasClass("datepicker-switch")&&this.viewMode!==this.o.maxViewMode&&this.setViewMode(this.viewMode+1),r.hasClass("today")&&!r.hasClass("day")&&(this.setViewMode(0),this._setDate(o(),"linked"===this.o.todayBtn?null:"view")),r.hasClass("clear")&&this.clearDates(),r.hasClass("disabled")||(r.hasClass("month")||r.hasClass("year")||r.hasClass("decade")||r.hasClass("century"))&&(this.viewDate.setUTCDate(1),a=1,1===this.viewMode?(s=r.parent().find("span").index(r),i=this.viewDate.getUTCFullYear(),this.viewDate.setUTCMonth(s)):(s=0,i=Number(r.text()),this.viewDate.setUTCFullYear(i)),this._trigger(b.viewModes[this.viewMode-1].e,this.viewDate),this.viewMode===this.o.minViewMode?this._setDate(n(i,s,a)):(this.setViewMode(this.viewMode-1),this.fill())),this.picker.is(":visible")&&this._focused_from&&this._focused_from.focus(),delete this._focused_from},dayCellClick:function(t){var n=e(t.currentTarget),o=n.data("date"),r=new Date(o);this.o.updateViewDate&&(r.getUTCFullYear()!==this.viewDate.getUTCFullYear()&&this._trigger("changeYear",this.viewDate),r.getUTCMonth()!==this.viewDate.getUTCMonth()&&this._trigger("changeMonth",this.viewDate)),this._setDate(r)},navArrowsClick:function(t){var n=e(t.currentTarget),o=n.hasClass("prev")?-1:1;0!==this.viewMode&&(o*=12*b.viewModes[this.viewMode].navStep),this.viewDate=this.moveMonth(this.viewDate,o),this._trigger(b.viewModes[this.viewMode].e,this.viewDate),this.fill()},_toggle_multidate:function(e){var t=this.dates.contains(e);if(e||this.dates.clear(),-1!==t?(!0===this.o.multidate||this.o.multidate>1||this.o.toggleActive)&&this.dates.remove(t):!1===this.o.multidate?(this.dates.clear(),this.dates.push(e)):this.dates.push(e),"number"==typeof this.o.multidate)for(;this.dates.length>this.o.multidate;)this.dates.remove(0)},_setDate:function(e,t){t&&"date"!==t||this._toggle_multidate(e&&new Date(e)),(!t&&this.o.updateViewDate||"view"===t)&&(this.viewDate=e&&new Date(e)),this.fill(),this.setValue(),t&&"view"===t||this._trigger("changeDate"),this.inputField.trigger("change"),!this.o.autoclose||t&&"date"!==t||this.hide()},moveDay:function(e,t){var n=new Date(e);return n.setUTCDate(e.getUTCDate()+t),n},moveWeek:function(e,t){return this.moveDay(e,7*t)},moveMonth:function(e,t){if(!i(e))return this.o.defaultViewDate;if(!t)return e;var n,o,r=new Date(e.valueOf()),a=r.getUTCDate(),s=r.getUTCMonth(),l=Math.abs(t);if(t=t>0?1:-1,1===l)o=-1===t?function(){return r.getUTCMonth()===s}:function(){return r.getUTCMonth()!==n},n=s+t,r.setUTCMonth(n),n=(n+12)%12;else{for(var d=0;d0},dateWithinRange:function(e){return e>=this.o.startDate&&e<=this.o.endDate},keydown:function(e){if(!this.picker.is(":visible"))return void(40!==e.keyCode&&27!==e.keyCode||(this.show(),e.stopPropagation()));var t,n,o=!1,r=this.focusDate||this.viewDate;switch(e.keyCode){case 27:this.focusDate?(this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill()):this.hide(),e.preventDefault(),e.stopPropagation();break;case 37:case 38:case 39:case 40:if(!this.o.keyboardNavigation||7===this.o.daysOfWeekDisabled.length)break;t=37===e.keyCode||38===e.keyCode?-1:1,0===this.viewMode?e.ctrlKey?(n=this.moveAvailableDate(r,t,"moveYear"))&&this._trigger("changeYear",this.viewDate):e.shiftKey?(n=this.moveAvailableDate(r,t,"moveMonth"))&&this._trigger("changeMonth",this.viewDate):37===e.keyCode||39===e.keyCode?n=this.moveAvailableDate(r,t,"moveDay"):this.weekOfDateIsDisabled(r)||(n=this.moveAvailableDate(r,t,"moveWeek")):1===this.viewMode?(38!==e.keyCode&&40!==e.keyCode||(t*=4),n=this.moveAvailableDate(r,t,"moveMonth")):2===this.viewMode&&(38!==e.keyCode&&40!==e.keyCode||(t*=4),n=this.moveAvailableDate(r,t,"moveYear")),n&&(this.focusDate=this.viewDate=n,this.setValue(),this.fill(),e.preventDefault());break;case 13:if(!this.o.forceParse)break;r=this.focusDate||this.dates.get(-1)||this.viewDate,this.o.keyboardNavigation&&(this._toggle_multidate(r),o=!0),this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.setValue(),this.fill(),this.picker.is(":visible")&&(e.preventDefault(),e.stopPropagation(),this.o.autoclose&&this.hide());break;case 9:this.focusDate=null,this.viewDate=this.dates.get(-1)||this.viewDate,this.fill(),this.hide()}o&&(this.dates.length?this._trigger("changeDate"):this._trigger("clearDate"),this.inputField.trigger("change"))},setViewMode:function(e){this.viewMode=e,this.picker.children("div").hide().filter(".datepicker-"+b.viewModes[this.viewMode].clsName).show(),this.updateNavArrows(),this._trigger("changeViewMode",new Date(this.viewDate))}};var c=function(t,n){e.data(t,"datepicker",this),this.element=e(t),this.inputs=e.map(n.inputs,function(e){return e.jquery?e[0]:e}),delete n.inputs,this.keepEmptyValues=n.keepEmptyValues,delete n.keepEmptyValues,f.call(e(this.inputs),n).on("changeDate",e.proxy(this.dateUpdated,this)),this.pickers=e.map(this.inputs,function(t){return e.data(t,"datepicker")}),this.updateDates()};c.prototype={updateDates:function(){this.dates=e.map(this.pickers,function(e){return e.getUTCDate()}),this.updateRanges()},updateRanges:function(){var t=e.map(this.dates,function(e){return e.valueOf()});e.each(this.pickers,function(e,n){n.setRange(t)})},clearDates:function(){e.each(this.pickers,function(e,t){t.clearDates()})},dateUpdated:function(n){if(!this.updating){this.updating=!0;var o=e.data(n.target,"datepicker");if(o!==t){var r=o.getUTCDate(),a=this.keepEmptyValues,i=e.inArray(n.target,this.inputs),s=i-1,l=i+1,d=this.inputs.length;if(-1!==i){if(e.each(this.pickers,function(e,t){t.getUTCDate()||t!==o&&a||t.setUTCDate(r)}),r=0&&rthis.dates[l])for(;lthis.dates[l];)this.pickers[l++].setUTCDate(r);this.updateDates(),delete this.updating}}}},destroy:function(){e.map(this.pickers,function(e){e.destroy()}),e(this.inputs).off("changeDate",this.dateUpdated),delete this.element.data().datepicker},remove:a("destroy","Method `remove` is deprecated and will be removed in version 2.0. Use `destroy` instead")};var p=e.fn.datepicker,f=function(n){var o=Array.apply(null,arguments);o.shift();var r;if(this.each(function(){var t=e(this),a=t.data("datepicker"),i="object"==typeof n&&n;if(!a){var d=s(this,"date"),p=e.extend({},h,d,i),f=l(p.language),m=e.extend({},h,f,d,i);t.hasClass("input-daterange")||m.inputs?(e.extend(m,{inputs:m.inputs||t.find("input").toArray()}),a=new c(this,m)):a=new u(this,m),t.data("datepicker",a)}"string"==typeof n&&"function"==typeof a[n]&&(r=a[n].apply(a,o))}),r===t||r instanceof u||r instanceof c)return this;if(this.length>1)throw new Error("Using only allowed for the collection of a single element ("+n+" function)");return r};e.fn.datepicker=f;var h=e.fn.datepicker.defaults={assumeNearbyYear:!1,autoclose:!1,beforeShowDay:e.noop,beforeShowMonth:e.noop,beforeShowYear:e.noop,beforeShowDecade:e.noop,beforeShowCentury:e.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],daysOfWeekHighlighted:[],datesDisabled:[],endDate:1/0,forceParse:!0,format:"mm/dd/yyyy",keepEmptyValues:!1,keyboardNavigation:!0,language:"en",minViewMode:0,maxViewMode:4,multidate:!1,multidateSeparator:",",orientation:"auto",rtl:!1,startDate:-1/0,startView:0,todayBtn:!1,todayHighlight:!1,updateViewDate:!0,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,showOnFocus:!0,zIndexOffset:10,container:"body",immediateUpdates:!1,title:"",templates:{leftArrow:"«",rightArrow:"»"},showWeekDays:!0},m=e.fn.datepicker.locale_opts=["format","rtl","weekStart"];e.fn.datepicker.Constructor=u;var g=e.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM yyyy"}},b={viewModes:[{names:["days","month"],clsName:"days",e:"changeMonth"},{names:["months","year"],clsName:"months",e:"changeYear",navStep:1},{names:["years","decade"],clsName:"years",e:"changeDecade",navStep:10},{names:["decades","century"],clsName:"decades",e:"changeCentury",navStep:100},{names:["centuries","millennium"],clsName:"centuries",e:"changeMillennium",navStep:1e3}],validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,parseFormat:function(e){if("function"==typeof e.toValue&&"function"==typeof e.toDisplay)return e;var t=e.replace(this.validParts,"\0").split("\0"),n=e.match(this.validParts);if(!t||!t.length||!n||0===n.length)throw new Error("Invalid date format.");return{separators:t,parts:n}},parseDate:function(n,r,a,i){function s(e,t){return!0===t&&(t=10),e<100&&(e+=2e3)>(new Date).getFullYear()+t&&(e-=100),e}function l(){var e=this.slice(0,d[f].length),t=d[f].slice(0,e.length);return e.toLowerCase()===t.toLowerCase()}if(!n)return t;if(n instanceof Date)return n;if("string"==typeof r&&(r=b.parseFormat(r)),r.toValue)return r.toValue(n,r,a);var d,c,p,f,h,m={d:"moveDay",m:"moveMonth",w:"moveWeek",y:"moveYear"},_={yesterday:"-1d",today:"+0d",tomorrow:"+1d"};if(n in _&&(n=_[n]),/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/i.test(n)){for(d=n.match(/([\-+]\d+)([dmwy])/gi),n=new Date,f=0;f'+h.templates.leftArrow+''+h.templates.rightArrow+"",contTemplate:'',footTemplate:''};b.template='
    '+b.headTemplate+""+b.footTemplate+'
    '+b.headTemplate+b.contTemplate+b.footTemplate+'
    '+b.headTemplate+b.contTemplate+b.footTemplate+'
    '+b.headTemplate+b.contTemplate+b.footTemplate+'
    '+b.headTemplate+b.contTemplate+b.footTemplate+"
    ",e.fn.datepicker.DPGlobal=b,e.fn.datepicker.noConflict=function(){return e.fn.datepicker=p,this},e.fn.datepicker.version="1.8.0",e.fn.datepicker.deprecated=function(e){var t=window.console;t&&t.warn&&t.warn("DEPRECATED: "+e)},e(document).on("focus.datepicker.data-api click.datepicker.data-api",'[data-provide="datepicker"]',function(t){var n=e(this);n.data("datepicker")||(t.preventDefault(),f.call(n,"show"))}),e(function(){f.call(e('[data-provide="datepicker-inline"]'))})})},"./node_modules/classnames/index.js":function(e,t,n){var o,r;/*! Copyright (c) 2016 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ -!function(){"use strict";function n(){for(var e=[],t=0;tu;)if((s=l[u++])!=s)return!0}else for(;d>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}}},"./node_modules/core-js/library/modules/_classof.js":function(e,t,n){var o=n("./node_modules/core-js/library/modules/_cof.js"),r=n("./node_modules/core-js/library/modules/_wks.js")("toStringTag"),a="Arguments"==o(function(){return arguments}()),i=function(e,t){try{return e[t]}catch(e){}};e.exports=function(e){var t,n,s;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=i(t=Object(e),r))?n:a?o(t):"Object"==(s=o(t))&&"function"==typeof t.callee?"Arguments":s}},"./node_modules/core-js/library/modules/_cof.js":function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},"./node_modules/core-js/library/modules/_core.js":function(e,t){var n=e.exports={version:"2.5.5"};"number"==typeof __e&&(__e=n)},"./node_modules/core-js/library/modules/_create-property.js":function(e,t,n){"use strict";var o=n("./node_modules/core-js/library/modules/_object-dp.js"),r=n("./node_modules/core-js/library/modules/_property-desc.js");e.exports=function(e,t,n){t in e?o.f(e,t,r(0,n)):e[t]=n}},"./node_modules/core-js/library/modules/_ctx.js":function(e,t,n){var o=n("./node_modules/core-js/library/modules/_a-function.js");e.exports=function(e,t,n){if(o(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,o){return e.call(t,n,o)};case 3:return function(n,o,r){return e.call(t,n,o,r)}}return function(){return e.apply(t,arguments)}}},"./node_modules/core-js/library/modules/_defined.js":function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},"./node_modules/core-js/library/modules/_descriptors.js":function(e,t,n){e.exports=!n("./node_modules/core-js/library/modules/_fails.js")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},"./node_modules/core-js/library/modules/_dom-create.js":function(e,t,n){var o=n("./node_modules/core-js/library/modules/_is-object.js"),r=n("./node_modules/core-js/library/modules/_global.js").document,a=o(r)&&o(r.createElement);e.exports=function(e){return a?r.createElement(e):{}}},"./node_modules/core-js/library/modules/_enum-bug-keys.js":function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},"./node_modules/core-js/library/modules/_enum-keys.js":function(e,t,n){var o=n("./node_modules/core-js/library/modules/_object-keys.js"),r=n("./node_modules/core-js/library/modules/_object-gops.js"),a=n("./node_modules/core-js/library/modules/_object-pie.js");e.exports=function(e){var t=o(e),n=r.f;if(n)for(var i,s=n(e),l=a.f,d=0;s.length>d;)l.call(e,i=s[d++])&&t.push(i);return t}},"./node_modules/core-js/library/modules/_export.js":function(e,t,n){var o=n("./node_modules/core-js/library/modules/_global.js"),r=n("./node_modules/core-js/library/modules/_core.js"),a=n("./node_modules/core-js/library/modules/_ctx.js"),i=n("./node_modules/core-js/library/modules/_hide.js"),s=n("./node_modules/core-js/library/modules/_has.js"),l=function(e,t,n){var d,u,c,p=e&l.F,f=e&l.G,h=e&l.S,m=e&l.P,g=e&l.B,b=e&l.W,_=f?r:r[t]||(r[t]={}),v=_.prototype,y=f?o:h?o[t]:(o[t]||{}).prototype;f&&(n=t);for(d in n)(u=!p&&y&&void 0!==y[d])&&s(_,d)||(c=u?y[d]:n[d],_[d]=f&&"function"!=typeof y[d]?n[d]:g&&u?a(c,o):b&&y[d]==c?function(e){var t=function(t,n,o){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,o)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(c):m&&"function"==typeof c?a(Function.call,c):c,m&&((_.virtual||(_.virtual={}))[d]=c,e&l.R&&v&&!v[d]&&i(v,d,c)))};l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,e.exports=l},"./node_modules/core-js/library/modules/_fails.js":function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},"./node_modules/core-js/library/modules/_global.js":function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},"./node_modules/core-js/library/modules/_has.js":function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},"./node_modules/core-js/library/modules/_hide.js":function(e,t,n){var o=n("./node_modules/core-js/library/modules/_object-dp.js"),r=n("./node_modules/core-js/library/modules/_property-desc.js");e.exports=n("./node_modules/core-js/library/modules/_descriptors.js")?function(e,t,n){return o.f(e,t,r(1,n))}:function(e,t,n){return e[t]=n,e}},"./node_modules/core-js/library/modules/_html.js":function(e,t,n){var o=n("./node_modules/core-js/library/modules/_global.js").document;e.exports=o&&o.documentElement},"./node_modules/core-js/library/modules/_ie8-dom-define.js":function(e,t,n){e.exports=!n("./node_modules/core-js/library/modules/_descriptors.js")&&!n("./node_modules/core-js/library/modules/_fails.js")(function(){return 7!=Object.defineProperty(n("./node_modules/core-js/library/modules/_dom-create.js")("div"),"a",{get:function(){return 7}}).a})},"./node_modules/core-js/library/modules/_iobject.js":function(e,t,n){var o=n("./node_modules/core-js/library/modules/_cof.js");e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==o(e)?e.split(""):Object(e)}},"./node_modules/core-js/library/modules/_is-array-iter.js":function(e,t,n){var o=n("./node_modules/core-js/library/modules/_iterators.js"),r=n("./node_modules/core-js/library/modules/_wks.js")("iterator"),a=Array.prototype;e.exports=function(e){return void 0!==e&&(o.Array===e||a[r]===e)}},"./node_modules/core-js/library/modules/_is-array.js":function(e,t,n){var o=n("./node_modules/core-js/library/modules/_cof.js");e.exports=Array.isArray||function(e){return"Array"==o(e)}},"./node_modules/core-js/library/modules/_is-object.js":function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},"./node_modules/core-js/library/modules/_iter-call.js":function(e,t,n){var o=n("./node_modules/core-js/library/modules/_an-object.js");e.exports=function(e,t,n,r){try{return r?t(o(n)[0],n[1]):t(n)}catch(t){var a=e.return;throw void 0!==a&&o(a.call(e)),t}}},"./node_modules/core-js/library/modules/_iter-create.js":function(e,t,n){"use strict";var o=n("./node_modules/core-js/library/modules/_object-create.js"),r=n("./node_modules/core-js/library/modules/_property-desc.js"),a=n("./node_modules/core-js/library/modules/_set-to-string-tag.js"),i={};n("./node_modules/core-js/library/modules/_hide.js")(i,n("./node_modules/core-js/library/modules/_wks.js")("iterator"),function(){return this}),e.exports=function(e,t,n){e.prototype=o(i,{next:r(1,n)}),a(e,t+" Iterator")}},"./node_modules/core-js/library/modules/_iter-define.js":function(e,t,n){"use strict";var o=n("./node_modules/core-js/library/modules/_library.js"),r=n("./node_modules/core-js/library/modules/_export.js"),a=n("./node_modules/core-js/library/modules/_redefine.js"),i=n("./node_modules/core-js/library/modules/_hide.js"),s=n("./node_modules/core-js/library/modules/_iterators.js"),l=n("./node_modules/core-js/library/modules/_iter-create.js"),d=n("./node_modules/core-js/library/modules/_set-to-string-tag.js"),u=n("./node_modules/core-js/library/modules/_object-gpo.js"),c=n("./node_modules/core-js/library/modules/_wks.js")("iterator"),p=!([].keys&&"next"in[].keys()),f=function(){return this};e.exports=function(e,t,n,h,m,g,b){l(n,t,h);var _,v,y,x=function(e){if(!p&&e in M)return M[e];switch(e){case"keys":case"values":return function(){return new n(this,e)}}return function(){return new n(this,e)}},j=t+" Iterator",w="values"==m,k=!1,M=e.prototype,S=M[c]||M["@@iterator"]||m&&M[m],T=S||x(m),E=m?w?x("entries"):T:void 0,D="Array"==t?M.entries||S:S;if(D&&(y=u(D.call(new e)))!==Object.prototype&&y.next&&(d(y,j,!0),o||"function"==typeof y[c]||i(y,c,f)),w&&S&&"values"!==S.name&&(k=!0,T=function(){return S.call(this)}),o&&!b||!p&&!k&&M[c]||i(M,c,T),s[t]=T,s[j]=f,m)if(_={values:w?T:x("values"),keys:g?T:x("keys"),entries:E},b)for(v in _)v in M||a(M,v,_[v]);else r(r.P+r.F*(p||k),t,_);return _}},"./node_modules/core-js/library/modules/_iter-detect.js":function(e,t,n){var o=n("./node_modules/core-js/library/modules/_wks.js")("iterator"),r=!1;try{var a=[7][o]();a.return=function(){r=!0},Array.from(a,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!r)return!1;var n=!1;try{var a=[7],i=a[o]();i.next=function(){return{done:n=!0}},a[o]=function(){return i},e(a)}catch(e){}return n}},"./node_modules/core-js/library/modules/_iter-step.js":function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},"./node_modules/core-js/library/modules/_iterators.js":function(e,t){e.exports={}},"./node_modules/core-js/library/modules/_library.js":function(e,t){e.exports=!0},"./node_modules/core-js/library/modules/_meta.js":function(e,t,n){var o=n("./node_modules/core-js/library/modules/_uid.js")("meta"),r=n("./node_modules/core-js/library/modules/_is-object.js"),a=n("./node_modules/core-js/library/modules/_has.js"),i=n("./node_modules/core-js/library/modules/_object-dp.js").f,s=0,l=Object.isExtensible||function(){return!0},d=!n("./node_modules/core-js/library/modules/_fails.js")(function(){return l(Object.preventExtensions({}))}),u=function(e){i(e,o,{value:{i:"O"+ ++s,w:{}}})},c=function(e,t){if(!r(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!a(e,o)){if(!l(e))return"F";if(!t)return"E";u(e)}return e[o].i},p=function(e,t){if(!a(e,o)){if(!l(e))return!0;if(!t)return!1;u(e)}return e[o].w},f=function(e){return d&&h.NEED&&l(e)&&!a(e,o)&&u(e),e},h=e.exports={KEY:o,NEED:!1,fastKey:c,getWeak:p,onFreeze:f}},"./node_modules/core-js/library/modules/_object-assign.js":function(e,t,n){"use strict";var o=n("./node_modules/core-js/library/modules/_object-keys.js"),r=n("./node_modules/core-js/library/modules/_object-gops.js"),a=n("./node_modules/core-js/library/modules/_object-pie.js"),i=n("./node_modules/core-js/library/modules/_to-object.js"),s=n("./node_modules/core-js/library/modules/_iobject.js"),l=Object.assign;e.exports=!l||n("./node_modules/core-js/library/modules/_fails.js")(function(){var e={},t={},n=Symbol(),o="abcdefghijklmnopqrst";return e[n]=7,o.split("").forEach(function(e){t[e]=e}),7!=l({},e)[n]||Object.keys(l({},t)).join("")!=o})?function(e,t){for(var n=i(e),l=arguments.length,d=1,u=r.f,c=a.f;l>d;)for(var p,f=s(arguments[d++]),h=u?o(f).concat(u(f)):o(f),m=h.length,g=0;m>g;)c.call(f,p=h[g++])&&(n[p]=f[p]);return n}:l},"./node_modules/core-js/library/modules/_object-create.js":function(e,t,n){var o=n("./node_modules/core-js/library/modules/_an-object.js"),r=n("./node_modules/core-js/library/modules/_object-dps.js"),a=n("./node_modules/core-js/library/modules/_enum-bug-keys.js"),i=n("./node_modules/core-js/library/modules/_shared-key.js")("IE_PROTO"),s=function(){},l=function(){var e,t=n("./node_modules/core-js/library/modules/_dom-create.js")("iframe"),o=a.length;for(t.style.display="none",n("./node_modules/core-js/library/modules/_html.js").appendChild(t),t.src="javascript:",e=t.contentWindow.document,e.open(),e.write(" \ No newline at end of file +Davinci
    \ No newline at end of file From eefc6fb6f2dad96c88a157a99cfc9deb0b421250 Mon Sep 17 00:00:00 2001 From: shanmengm Date: Tue, 16 Oct 2018 16:11:11 +0800 Subject: [PATCH 44/45] fix --- .../main/java/edp/core/common/jdbc/JdbcDataSource.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java b/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java index 7c4376d5e..f67062de1 100644 --- a/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java +++ b/server/src/main/java/edp/core/common/jdbc/JdbcDataSource.java @@ -73,10 +73,7 @@ public class JdbcDataSource extends DruidDataSource { @Value("${source.connection-error-retry-attempts:3}") private int connectionErrorRetryAttempts; -// @Value("${spring.datasource.validation-query}") -// private String validationQuery; - - private static volatile Map map = new HashMap<>(); + private static volatile Map map = new HashMap<>(); public synchronized DruidDataSource getDataSource(String jdbcUrl, String username, String password) throws SourceException { String url = jdbcUrl.toLowerCase(); @@ -124,7 +121,6 @@ public synchronized DruidDataSource getDataSource(String jdbcUrl, String usernam instance.setTestOnReturn(testOnReturn); instance.setConnectionErrorRetryAttempts(connectionErrorRetryAttempts); instance.setBreakAfterAcquireFailure(breakAfterAcquireFailure); -// instance.setValidationQuery(validationQuery); try { instance.init(); @@ -135,6 +131,6 @@ public synchronized DruidDataSource getDataSource(String jdbcUrl, String usernam map.put(username + "@" + url, instance); } - return (DruidDataSource) map.get(username + "@" + url); + return map.get(username + "@" + url); } } From 9ccd761502c2929020f0055965be6ec686905836 Mon Sep 17 00:00:00 2001 From: shanmengm Date: Tue, 16 Oct 2018 16:22:06 +0800 Subject: [PATCH 45/45] assembly beta.2 --- assembly/src/main/assembly/assembly.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assembly/src/main/assembly/assembly.xml b/assembly/src/main/assembly/assembly.xml index e310405cd..57aac6883 100644 --- a/assembly/src/main/assembly/assembly.xml +++ b/assembly/src/main/assembly/assembly.xml @@ -20,7 +20,7 @@ - dist + dist-beta.2 zip