@ecan-bi/indicator-library 1.0.15 → 1.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.umd.js","sources":["../src/utils/withInstall.ts","../src/utils/constant.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/index.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/bar/props.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/line/props.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/pie/props.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/custom-graph/props.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/combo-graph/props.ts","../src/indicator/indicator-library/data-list/DataViewList.vue","../src/indicator/indicator-library/data-list/DataViewList.vue","../node_modules/@ctrl/tinycolor/dist/module/util.js","../node_modules/@ctrl/tinycolor/dist/module/conversion.js","../node_modules/@ctrl/tinycolor/dist/module/css-color-names.js","../node_modules/@ctrl/tinycolor/dist/module/format-input.js","../node_modules/@ant-design/colors/dist/index.esm.js","../node_modules/@ant-design/icons-vue/es/insert-css.js","../node_modules/@ant-design/icons-vue/es/utils.js","../node_modules/@ant-design/icons-vue/es/components/IconBase.js","../node_modules/@ant-design/icons-vue/es/components/twoTonePrimaryColor.js","../node_modules/@ant-design/icons-vue/es/components/AntdIcon.js","../node_modules/@ant-design/icons-svg/es/asn/AppstoreAddOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/AppstoreAddOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CaretDownOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/CaretDownOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CaretRightOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/CaretRightOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CloseOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/CloseOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DeleteOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/DeleteOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DownOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/DownOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/MinusCircleOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/MinusCircleOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/PlusCircleOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/PlusCircleOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/PlusOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/PlusOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/SettingOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/SettingOutlined.js","../src/indicator/indicator-library/data-list/DataSourceList.vue","../src/indicator/indicator-library/data-list/DataSourceList.vue","../src/indicator/indicator-library/data-list/DataList.vue","../src/indicator/indicator-library/data-list/DataList.vue","../src/directives/focus.ts","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/CustomSortModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/CustomSortModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/CustomGroupModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/CustomGroupModal.vue","../node_modules/dayjs/plugin/quarterOfYear.js","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/Condition.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/Condition.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/ConditionList.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/ConditionList.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/FilterModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/FilterModal.vue","../node_modules/nanoid/index.prod.js","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/calculation-modal/FormulaCalculation.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/calculation-modal/FormulaCalculation.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/calculation-modal/CalculationModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/calculation-modal/CalculationModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/DataConfigCard.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/DataConfigCard.vue","../src/indicator/indicator-library/data-config/data-config-group/data.ts","../src/indicator/indicator-library/data-config/data-config-group/DataConfigGroup.vue","../src/indicator/indicator-library/data-config/data-config-group/DataConfigGroup.vue","../src/indicator/indicator-library/data-config/style-config-group/data.ts","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/data.tsx","../src/utils/util.ts","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/input/Input.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/input/Input.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/input-number/InputNumber.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/input-number/InputNumber.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/radio-group/RadioGroup.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/select/Select.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/select/Select.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/switch/Switch.vue","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/vue-pick-colors/dist/index.esm.js","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/color-pick/ColorPick.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/color-pick/ColorPick.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/color-group-pick/ColorGroupPick.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/color-group-pick/ColorGroupPick.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/form-group/FormGroup.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/form-group/FormGroup.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/textarea/Textarea.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/textarea/Textarea.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/PropsToForm.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/PropsToForm.vue","../src/indicator/editor/Editor.vue","../src/indicator/editor/Editor.vue","../src/indicator/indicator-library/data-config/style-config-group/StyleConfigGroup.vue","../src/indicator/indicator-library/data-config/style-config-group/StyleConfigGroup.vue","../src/hooks/useIndicatorData.ts","../src/utils/runCode.ts","../src/hooks/useVariablesInText.ts","../src/hooks/useValueFormatter.ts","../src/indicator/chart-graph/transformProps.ts","../src/hooks/useTransformChartDataByAttrKey.ts","../src/hooks/useTransformChartDataByAttrValue.ts","../src/indicator/chart-graph/ChartGraph.vue","../src/indicator/chart-graph/ChartGraph.vue","../src/indicator/indicator-library/data-config/DataConfig.vue","../src/indicator/indicator-library/data-config/DataConfig.vue","../src/indicator/indicator-library/IndicatorLibrary.vue","../src/indicator/indicator-library/IndicatorLibrary.vue","../src/indicator/indicator-library/index.ts","../src/indicator/chart-graph/index.ts","../src/index.ts"],"sourcesContent":["import { NOOP } from '@vue/shared'\nimport { Plugin } from 'vue'\n\nexport type SFCWithInstall<T> = T & Plugin\n\nexport const withInstall = <T, E extends Record<string, any>>(\n main: T,\n extra?: E\n) => {\n (main as SFCWithInstall<T>).install = (app): void => {\n for (const comp of [main, ...Object.values(extra ?? {})]) {\n app.component(comp.name, comp)\n }\n }\n\n if (extra) {\n for (const [key, comp] of Object.entries(extra)) {\n (main as any)[key] = comp\n }\n }\n return main as SFCWithInstall<T> & E\n}\n\nexport const withInstallFunction = <T>(fn: T, name: string) => {\n (fn as SFCWithInstall<T>).install = (app) => {\n app.config.globalProperties[name] = fn\n }\n\n return fn as SFCWithInstall<T>\n}\n\nexport const withNoopInstall = <T>(component: T) => {\n (component as SFCWithInstall<T>).install = NOOP\n\n return component as SFCWithInstall<T>\n}\n","export const REQUEST = '$request'\n// @ts-ignore\nexport const INDICATOR_URL = window?.config?.indicatorURL || `${location.origin}/api`\n\nexport const INDICATOR_TOKEN = 'INDICATOR_TOKEN'\n\nexport const CONTAINER_TYPES = ['tabs', 'border']\n\nexport const CACHE_STEP = 'CACHE_STEP'\n\nexport const UPDATE_SNAPSHOT_LIST = 'UPDATE_SNAPSHOT_LIST'\n\nexport const REQUEST_MODEL = 'REQUEST_MODEL'\n\nexport const DATA_LIST = 'DATA_LIST'\n\nexport const SELECTED_COMPONENT = 'SELECTED_COMPONENT'\n\nexport const GRAPHIC_CONFIG = 'GRAPHIC_CONFIG'\n\nexport const UPDATE_GRAPHIC_CONFIG = 'UPDATE_GRAPHIC_CONFIG'\n\nexport const SHOW_STYLE_CONFIG = 'SHOW_STYLE_CONFIG'\n\nexport const REFRESH_DATA = 'REFRESH_DATA'\n\nexport const CHARTS_OPTIONS = 'CHARTS_OPTIONS'\n\nexport const ZOOM_FONT_SIZE = 18\n\nexport const UPDATE_CHARTS_OPTIONS = 'UPDATE_CHARTS_OPTIONS'\n\nexport const SOURCE_TYPE = 'SOURCE_TYPE'\n\nexport const CHANGE_CONDITION = 'CHANGE_CONDITION'\n","import { barProps } from './bar'\nimport { lineProps } from './line'\nimport { pieProps } from './pie'\nimport { customGraphProps } from './custom-graph'\nimport { comboGraphProps } from './combo-graph'\n\nexport default {\n bar: barProps,\n line: lineProps,\n pie: pieProps,\n customGraph: customGraphProps,\n comboGraph: comboGraphProps\n}\n","\nexport interface BarProps {\n name: String,\n type: String,\n width: string // 图表宽度\n height: string // 图表高度\n titleText: string\n titleSubtext: string\n colors: string []\n legendShow: boolean\n legendTextStyleColor: string\n legendLeft: 'left' | 'center' | 'right'\n legendTop: 'top' | 'middle' | 'bottom'\n legendOrient: 'vertical' | 'horizontal'\n xAxisLabelInterval: number\n xAxisSplitLineShow: boolean // x轴展示分割线\n xAxisLabelColor: string // x轴名称颜色\n xAxisLabelWidth: number | undefined // x轴名称宽度\n xAxisLabelOverflow: 'none' | 'truncate' | 'break' | 'breakAll' // x轴名称溢出操作\n xAxisLabelRotate: number // x轴名称旋转\n xAxisLineStyleColor: string // x轴名称颜色\n xAxisTickShow: boolean // 展示刻度\n xAxisLabelFormatter: string\n xAxisSplitLineStyleColor: string // x轴分割线颜色\n xAxisInverse: boolean\n xAxisMinInterval: number\n yAxisMinInterval: number\n yAxisInverse: boolean\n yAxisLabelWidth: number | undefined // y轴名称宽度\n yAxisLabelOverflow: 'none' | 'truncate' | 'break' | 'breakAll' // y轴名称溢出操作\n yAxisLabelRotate: number // y轴名称旋转\n yAxisSplitLineShow: boolean // y轴展示分割线\n yAxisSplitLineStyleColor: string // y轴分割线颜色\n yAxisLabelColor: string // y轴名称颜色\n yAxisLineStyleColor: string // y轴名称颜色\n yAxisLabelFormatter: string\n yAxisLineAlwaysDisplay: boolean // 总是显示y轴\n tooltipShow: boolean\n tooltipTextStyleColor: string\n tooltipFormatter: string,\n gridContainLabel: boolean\n gridTop: string\n gridBottom: string\n gridLeft: string\n gridRight: string\n barWidth: string\n toolboxShow: boolean\n toolboxLocation: boolean\n toolboxDownloadShow:boolean\n toolboxDataZoomShow: boolean\n toolboxInfoShow: boolean\n toolboxOrient: 'horizontal' | 'vertical'\n toolboxItemSize: number // 工具栏 icon 的大小。\n toolboxItemGap: number // 工具栏 icon 每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。\n toolboxLeft: 'left' | 'center' | 'right'\n toolboxTop: 'top'| 'middle'| 'bottom'\n toolboxIconStyleBorderColor: string\n toolboxDownloadUrl: string\n toolboxInfoText: string\n isUseHorizontalAxis: boolean\n axisInverse: boolean\n isStack: boolean\n labelShow: boolean\n labelFontSize: string\n labelPosition: 'inside' | 'top' | 'bottom' | 'right' | 'left'\n labelColor: string\n}\n\nexport const barProps: BarProps = {\n name: '柱状图',\n type: 'bar',\n width: '400px',\n height: '400px',\n xAxisLabelFormatter: '{value}',\n yAxisLabelFormatter: '{value}',\n yAxisLineAlwaysDisplay: false,\n titleText: '',\n titleSubtext: '',\n colors: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'],\n legendShow: true,\n legendTextStyleColor: '#333',\n legendOrient: 'horizontal',\n legendTop: 'top',\n legendLeft: 'center',\n tooltipShow: true,\n tooltipTextStyleColor: '',\n tooltipFormatter: '{marker} {a} {c}',\n xAxisSplitLineShow: true,\n xAxisSplitLineStyleColor: '#333',\n xAxisLabelInterval: 0,\n xAxisLabelColor: '#333',\n xAxisLabelWidth: undefined,\n xAxisLabelRotate: 0,\n xAxisLabelOverflow: 'none',\n xAxisLineStyleColor: '#333',\n xAxisTickShow: true,\n xAxisMinInterval: 0,\n yAxisMinInterval: 0,\n yAxisLabelWidth: undefined,\n yAxisLabelRotate: 0,\n yAxisLabelOverflow: 'none',\n yAxisSplitLineShow: true,\n yAxisSplitLineStyleColor: '#333',\n yAxisLabelColor: '#333',\n yAxisLineStyleColor: '#333',\n barWidth: '40%',\n gridContainLabel: true,\n gridTop: '10%',\n gridBottom: '10%',\n gridLeft: '5%',\n gridRight: '5%',\n toolboxShow: false,\n toolboxOrient: 'horizontal',\n toolboxItemSize: 16,\n toolboxItemGap: 8,\n toolboxLeft: 'right',\n toolboxTop: 'top',\n toolboxIconStyleBorderColor: '#666',\n toolboxDownloadUrl: '',\n toolboxInfoText: '当前无说明信息',\n isUseHorizontalAxis: false,\n axisInverse: false,\n xAxisInverse: false,\n yAxisInverse: false,\n isStack: false,\n labelShow: false,\n labelFontSize: '12px',\n labelPosition: 'inside',\n labelColor: '',\n toolboxLocation: false,\n toolboxDownloadShow: true,\n toolboxDataZoomShow: true,\n toolboxInfoShow: true\n}\n","export interface LineProps {\n name: String,\n type: String,\n width: string // 图表宽度\n height: string // 图表高度\n colors: string[]\n titleText: string\n titleSubtext: string\n legendShow: boolean,\n legendLeft: 'left' | 'center' | 'right'\n legendTop: 'top' | 'middle' | 'bottom'\n legendOrient: 'vertical' | 'horizontal' // 标记点大小\n symbolSize: number // 线宽度\n lineStyleWidth: number // 线宽\n smooth: boolean // 光滑\n xAxisLabelInterval: number\n xAxisSplitLineShow: boolean // x轴展示分割线\n xAxisLabelColor: string // x轴名称颜色\n xAxisLineStyleColor: string // x轴名称颜色\n xAxisSplitLineStyleColor: string // x轴分割线颜色\n xAxisTickShow: boolean // 展示刻度\n xAxisLabelFormatter: string // 格式化\n xAxisInverse: boolean\n xAxisMinInterval: number\n xAxisLabelWidth: number | undefined // x轴名称宽度\n xAxisLabelOverflow: 'none' | 'truncate' | 'break' | 'breakAll' // x轴名称溢出操作\n xAxisLabelRotate: number // x轴名称旋转\n yAxisMinInterval: number\n yAxisInverse: boolean\n yAxisSplitLineShow: boolean // y轴展示分割线\n yAxisSplitLineStyleColor: string // y轴分割线颜色\n yAxisLabelColor: string // y轴名称颜色\n yAxisLineStyleColor: string // y轴名称颜色\n yAxisLineAlwaysDisplay: boolean // 总是显示y轴\n yAxisLabelFormatter: string // 格式化\n gridContainLabel: boolean\n gridTop: string\n gridBottom: string\n gridLeft: string\n gridRight: string\n tooltipFormatter: string\n tooltipShow: boolean\n toolboxShow: boolean\n toolboxDownloadShow:boolean\n toolboxDataZoomShow: boolean\n toolboxInfoShow: boolean\n toolboxOrient: 'horizontal' | 'vertical'\n toolboxItemSize: number // 工具栏 icon 的大小。\n toolboxItemGap: number // 工具栏 icon 每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。\n toolboxLeft: 'left' | 'center' | 'right'\n toolboxTop: 'top'| 'middle'| 'bottom'\n toolboxIconStyleBorderColor: string\n toolboxDownloadUrl: string\n toolboxInfoText: string\n areaStyleOpacity: number\n}\n\nexport const lineProps = {\n name: '折线图',\n type: 'line',\n width: '400px',\n height: '400px',\n legendShow: true,\n legendOrient: 'horizontal',\n legendTop: 'top',\n legendLeft: 'center',\n titleText: '',\n titleSubtext: '',\n colors: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'],\n symbolSize: 4,\n lineStyleWidth: 2,\n smooth: false,\n xAxisLabelWidth: undefined,\n xAxisLabelRotate: 0,\n xAxisLabelOverflow: 'none',\n xAxisLabelInterval: 0,\n xAxisSplitLineShow: true,\n xAxisSplitLineStyleColor: '#333',\n xAxisLabelColor: '#333',\n xAxisLineStyleColor: '#333',\n xAxisTickShow: true,\n xAxisLabelFormatter: '{value}', // 格式化\n xAxisMinInterval: 0,\n yAxisMinInterval: 0,\n yAxisSplitLineShow: true,\n yAxisSplitLineStyleColor: '#333',\n yAxisLabelColor: '#333',\n yAxisLineStyleColor: '#333',\n yAxisLineAlwaysDisplay: false,\n yAxisLabelFormatter: '{value}',\n gridContainLabel: true,\n gridTop: '10%',\n gridBottom: '10%',\n gridLeft: '5%',\n gridRight: '5%',\n tooltipShow: true,\n tooltipFormatter: '{marker} {a} {c}',\n toolboxShow: false,\n toolboxDownloadShow: true,\n toolboxDataZoomShow: true,\n toolboxInfoShow: true,\n toolboxOrient: 'horizontal',\n toolboxItemSize: 16,\n toolboxItemGap: 8,\n toolboxLeft: 'right',\n toolboxTop: 'top',\n toolboxIconStyleBorderColor: '#666',\n toolboxDownloadUrl: '',\n toolboxInfoText: '当前无说明信息',\n areaStyleOpacity: 0\n}\n","\nexport interface PieProps{\n name: String,\n type: String,\n width: string // 图表宽度\n height: string // 图表高度\n colors: string[]\n titleText: string\n titleSubtext: string\n backgroundColor: string\n tooltipShow: boolean\n toolboxDownloadShow:boolean\n toolboxDataZoomShow: boolean\n toolboxInfoShow: boolean\n tooltipTrigger: 'item' | 'axis' | 'none'\n tooltipTextStyleColor: string\n tooltipFormatter: string\n legendShow: boolean\n legendLeft: 'left' | 'center' | 'right'\n legendTop: 'top' | 'middle' | 'bottom'\n legendOrient: 'vertical' | 'horizontal'\n legendTextStyleColor: string\n innerRadius: string\n outerRadius: string\n centerLeft: string\n centerTop: string\n minAngle: number\n labelShow: boolean\n labelFormatter: string\n labelFontSize: number\n labelPosition: 'outside' | 'inside' | 'center'\n labelLineShow: boolean\n labelColor: string\n isUseLabelColors: boolean\n labelLineLength: number\n labelLineLength2: number\n roseType: '' | 'radius' | 'area'\n gridContainLabel: boolean\n gridTop: string\n gridBottom: string\n gridLeft: string\n gridRight: string\n toolboxShow: boolean\n toolboxOrient: 'horizontal' | 'vertical'\n toolboxItemSize: number // 工具栏 icon 的大小。\n toolboxItemGap: number // 工具栏 icon 每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。\n toolboxLeft: 'left' | 'center' | 'right'\n toolboxTop: 'top'| 'middle'| 'bottom'\n toolboxIconStyleBorderColor: string\n toolboxDownloadUrl: string\n toolboxInfoText: string\n}\n\nexport const pieProps: PieProps = {\n name: '饼图',\n type: 'pie',\n width: '400px',\n height: '400px',\n titleText: '',\n titleSubtext: '',\n colors: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'],\n backgroundColor: '',\n tooltipShow: true,\n toolboxDownloadShow: true,\n toolboxDataZoomShow: true,\n toolboxInfoShow: true,\n tooltipTextStyleColor: '',\n tooltipTrigger: 'item',\n tooltipFormatter: '{marker} {b} {c} ({d}%)',\n legendShow: true,\n legendTextStyleColor: '#333',\n legendOrient: 'vertical',\n legendTop: 'top',\n legendLeft: 'left',\n innerRadius: '0%',\n outerRadius: '60%',\n centerLeft: '50%',\n centerTop: '50%',\n minAngle: 0,\n labelShow: true,\n labelColor: '#333',\n isUseLabelColors: false,\n labelFontSize: 12,\n labelPosition: 'outside',\n labelFormatter: '{b}\\\\n{d}%',\n labelLineShow: true,\n labelLineLength: 10,\n labelLineLength2: 15,\n roseType: '',\n gridContainLabel: true,\n gridTop: '10%',\n gridBottom: '10%',\n gridLeft: '5%',\n gridRight: '5%',\n toolboxShow: false,\n toolboxOrient: 'horizontal',\n toolboxItemSize: 16,\n toolboxItemGap: 8,\n toolboxLeft: 'right',\n toolboxTop: 'top',\n toolboxIconStyleBorderColor: '#666',\n toolboxDownloadUrl: '',\n toolboxInfoText: '当前无说明信息'\n}\n","export interface CustomGraphProps {\n name: String,\n type: String,\n width: string // 图表宽度\n height: string // 图表高度\n option: { [key:string]: any }\n optionCode: string\n}\n\nexport const customGraphProps: CustomGraphProps = {\n name: '自定义图表',\n type: 'customGraph',\n width: '400px',\n height: '400px',\n option: {},\n optionCode: ''\n}\n","\nexport interface ComboGraphProps {\n name: String,\n type: String,\n width: string // 图表宽度\n height: string // 图表高度\n colors: string []\n titleText: string\n titleSubtext: string\n legendShow: boolean\n legendTextStyleColor: string\n legendLeft: 'left' | 'center' | 'right'\n legendTop: 'top' | 'middle' | 'bottom'\n legendOrient: 'vertical' | 'horizontal'\n xAxisLabelInterval: number\n xAxisSplitLineShow: boolean // x轴展示分割线\n xAxisMinInterval: number // 最小间距\n xAxisLabelColor: string // x轴名称颜色\n xAxisLabelRotate: number\n xAxisLabelOverflow: string\n xAxisLabelWidth: number | undefined // x轴名称宽度\n xAxisLineStyleColor: string // x轴名称颜色\n xAxisTickShow: boolean // 展示刻度\n yAxisSplitLineShow: boolean // y轴展示分割线\n xAxisSplitLineStyleColor: string // x轴分割线颜色\n yAxisSplitLineStyleColor: string // y轴分割线颜色\n yAxisLabelColor: string // y轴名称颜色\n yAxisLineStyleColor: string // y轴名称颜色\n yAxisLineAlwaysDisplay: boolean // 总是显示y轴\n tooltipShow: boolean\n tooltipTrigger: 'item' | 'axis' | 'none'\n tooltipTextStyleColor: string\n tooltipFormatter: string\n seriesTypes: { [key: string]: any } []\n yAxis: { [key: string]: any } []\n yAxisMinInterval: number\n gridContainLabel: boolean\n gridTop: string\n gridBottom: string\n gridLeft: string\n gridRight: string\n toolboxShow: boolean\n toolboxLocation: boolean\n toolboxDownloadShow:boolean\n toolboxDataZoomShow: boolean\n toolboxInfoShow: boolean\n toolboxOrient: 'horizontal' | 'vertical'\n toolboxItemSize: number // 工具栏 icon 的大小。\n toolboxItemGap: number // 工具栏 icon 每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。\n toolboxLeft: 'left' | 'center' | 'right'\n toolboxTop: 'top'| 'middle'| 'bottom'\n toolboxIconStyleBorderColor: string\n toolboxDownloadUrl: string\n toolboxInfoText: string\n symbolSize: number // 线宽度\n lineStyleWidth: number // 线宽\n smooth: boolean // 光滑\n areaStyleOpacity: number\n barWidth: string\n}\n\nexport const comboGraphProps: ComboGraphProps = {\n name: '组合图表',\n type: 'comboGraph',\n width: '400px',\n height: '400px',\n titleText: '',\n titleSubtext: '',\n colors: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'],\n legendShow: true,\n legendTextStyleColor: '#333',\n legendOrient: 'horizontal',\n legendTop: 'top',\n legendLeft: 'center',\n tooltipShow: true,\n tooltipTextStyleColor: '',\n tooltipTrigger: 'item',\n tooltipFormatter: '{marker} {a} {c}',\n xAxisLabelInterval: 0,\n xAxisSplitLineShow: true,\n xAxisLabelRotate: 0,\n xAxisLabelOverflow: 'none',\n xAxisLabelWidth: undefined,\n xAxisSplitLineStyleColor: '#333',\n xAxisLabelColor: '#333',\n xAxisLineStyleColor: '#333',\n xAxisTickShow: true,\n xAxisMinInterval: 0,\n yAxisMinInterval: 0,\n yAxisSplitLineShow: true,\n yAxisSplitLineStyleColor: '#333',\n yAxisLabelColor: '#333',\n yAxisLineStyleColor: '#333',\n yAxisLineAlwaysDisplay: false,\n seriesTypes: [\n {\n type: 'bar',\n axisIndex: 0\n },\n {\n type: 'line',\n axisIndex: 0\n }\n ],\n yAxis: [\n {\n axisLabelFormatter: '{value}'\n },\n {\n axisLabelFormatter: '{value}'\n }\n ],\n gridContainLabel: true,\n gridTop: '10%',\n gridBottom: '10%',\n gridLeft: '5%',\n gridRight: '5%',\n toolboxShow: false,\n toolboxLocation: false,\n toolboxDownloadShow: true,\n toolboxDataZoomShow: true,\n toolboxInfoShow: true,\n toolboxOrient: 'horizontal',\n toolboxItemSize: 16,\n toolboxItemGap: 8,\n toolboxLeft: 'right',\n toolboxTop: 'top',\n toolboxIconStyleBorderColor: '#666',\n toolboxDownloadUrl: '',\n toolboxInfoText: '当前无说明信息',\n areaStyleOpacity: 0,\n symbolSize: 4,\n lineStyleWidth: 2,\n smooth: false,\n barWidth: '40%'\n}\n","<template>\n <div class=\"data-view-list\">\n <a-spin\n wrapper-class-name=\"tree-spin\"\n :spinning=\"treeSelectLoading\"\n tip=\"视图加载中...\"\n >\n <a-tree-select\n :value=\"dataViewId\"\n style=\"width: 100%\"\n placeholder=\"请选择视图\"\n :dropdown-style=\"{ maxHeight: '400px', overflow: 'auto' }\"\n :tree-data=\"treeSelectData\"\n :load-data=\"handleLoadData\"\n tree-data-simple-mode\n @change=\"onDataViewIdChange\"\n />\n </a-spin>\n <div class=\"columns\">\n <a-spin\n :spinning=\"dataViewLoading\"\n tip=\"数据加载中...\"\n >\n <div\n v-for=\"dataView in dataViewList\"\n :key=\"dataView.id\"\n >\n <div\n class=\"column-item\"\n :draggable=\"true\"\n @dragstart=\"onDragstart($event, dataView)\"\n >\n 【{{ mapGenericType(dataView.genericType) }}】\n <span class=\"column-item-name\">\n {{ dataView.name }}\n </span>\n </div>\n </div>\n </a-spin>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n reactive,\n ref,\n computed,\n unref,\n onMounted,\n inject\n} from 'vue'\nimport { TreeSelectProps, Spin as ASpin, TreeSelect as ATreeSelect } from 'ant-design-vue'\nimport {\n REQUEST,\n INDICATOR_URL,\n INDICATOR_TOKEN,\n DATA_LIST,\n GRAPHIC_CONFIG,\n UPDATE_GRAPHIC_CONFIG\n} from '@/utils/constant'\nexport default defineComponent({\n name: 'DataViewList',\n components: {\n ASpin,\n ATreeSelect\n },\n setup () {\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const dataViewId = computed(() => unref(graphicConfig)?.dataViewId || null)\n const treeSelectLoading = ref(false)\n const treeSelectData = ref<TreeSelectProps['treeData']>([])\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n interface TreeDom {\n id: string\n pId: string\n title: string\n value: string\n isLeaf?: boolean\n disabled?: boolean\n selectable?: boolean\n }\n // 当前选中树节点\n const selectedItem = reactive<TreeDom>({\n title: '已选',\n value: 'YXJG',\n id: 'YXJG',\n pId: '0',\n disabled: true,\n selectable: false,\n isLeaf: true\n })\n // 回显已选节点\n const echoSelectedNode = async () => {\n const id = dataViewId.value\n treeSelectLoading.value = true\n try {\n const { data } = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n {\n source: 'SQL_VIEW',\n dataViewId: id,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n treeSelectLoading.value = false\n if (data.success) {\n treeSelectData.value?.push(selectedItem)\n treeSelectData.value = treeSelectData.value?.concat(\n transTreeData([data.data.rows[0]] as any, 'YXJG')\n )\n }\n } catch (error) {\n treeSelectLoading.value = false\n }\n }\n // 树的数据转换\n const transTreeData = (\n data: { [key: string]: any }[] = [],\n pId?: string\n ) => {\n const list: TreeSelectProps['treeData'] = []\n data.forEach((item) => {\n list.push({\n id: item.id,\n pId: pId ?? item.parentId,\n value: item.id,\n title: item.name,\n isLeaf: item.leaf || false,\n nature: item.nature,\n selectable: item.leaf || false\n })\n })\n return list\n }\n const handleLoadData = async (treeNode?: any, isFirst?: boolean) => {\n let id = 0\n if (treeNode) {\n const { value } = treeNode.dataRef\n id = value\n }\n const { data } = await request.post(\n `${INDICATOR_URL}/dataview/treetable`,\n {\n pageFlag: true,\n pageId: PAGE_ID,\n parentId: id\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n\n if (data.success) {\n treeSelectData.value = unref(treeSelectData)?.concat(\n transTreeData(data.data)\n )\n if (isFirst && unref(dataViewId)) {\n await echoSelectedNode()\n }\n }\n }\n\n const onDataViewIdChange = (dataViewId: string) => {\n handleDataViewColumns(dataViewId)\n updateGraphicConfig({\n dataViewId,\n // 重制数据\n classificationList: [],\n seriesList: [],\n leftAxisList: [],\n rightAxisList: [],\n indicators: [],\n controlList: []\n })\n }\n\n const { setDataList } = inject(DATA_LIST, {\n // eslint-disable-next-line\n setDataList: (list: { [key: string]: any }[]) => list\n })\n\n const dataViewLoading = ref(false)\n\n const dataViewList = ref<{ [key: string]: any }[]>([])\n\n const handleDataViewColumns = async (dataViewId: string) => {\n if (!dataViewId) return\n dataViewList.value = []\n dataViewLoading.value = true\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n {\n source: 'SQL_VIEW',\n dataViewId,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = {} } = res.data\n dataViewLoading.value = false\n if (success) {\n const { rows = [] } = data\n rows?.forEach((row: any) => {\n const columns =\n row?.dataViewColumns?.map((column: any) => {\n return {\n ...column,\n // 复选框\n show: true\n }\n }) || []\n dataViewList.value = [...unref(dataViewList), ...columns]\n })\n setDataList(unref(dataViewList))\n }\n } catch (error) {\n dataViewLoading.value = false\n }\n }\n const mapGenericType = (genericType: 'TEXT' | 'NUMBER' | 'DATE') => {\n const map = {\n TEXT: '字符',\n NUMBER: '数字',\n DATE: '时间'\n }\n return map[genericType]\n }\n\n const onDragstart = (\n event: DragEvent,\n dataView: { [key: string]: any }\n ) => {\n event.dataTransfer?.setData('list-item', JSON.stringify(dataView))\n }\n\n onMounted(async () => {\n await handleLoadData(undefined, true)\n handleDataViewColumns(unref(dataViewId))\n })\n return {\n dataViewId,\n handleLoadData,\n treeSelectData,\n treeSelectLoading,\n dataViewList,\n dataViewLoading,\n onDataViewIdChange,\n mapGenericType,\n onDragstart\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-view-list {\n display: flex;\n flex-direction: column;\n height: 100%;\n .tree-spin {\n height: auto;\n }\n}\n.columns {\n height: 100%;\n overflow: auto;\n flex: 1;\n padding-top: 10px;\n}\n\n.column-item {\n display: flow-root;\n margin: 3px 0;\n padding: 2px 0;\n}\n\n.column-item:hover {\n background: #eee;\n}\n\n.column-item-name {\n margin-left: 5px;\n}\n</style>\n","<template>\n <div class=\"data-view-list\">\n <a-spin\n wrapper-class-name=\"tree-spin\"\n :spinning=\"treeSelectLoading\"\n tip=\"视图加载中...\"\n >\n <a-tree-select\n :value=\"dataViewId\"\n style=\"width: 100%\"\n placeholder=\"请选择视图\"\n :dropdown-style=\"{ maxHeight: '400px', overflow: 'auto' }\"\n :tree-data=\"treeSelectData\"\n :load-data=\"handleLoadData\"\n tree-data-simple-mode\n @change=\"onDataViewIdChange\"\n />\n </a-spin>\n <div class=\"columns\">\n <a-spin\n :spinning=\"dataViewLoading\"\n tip=\"数据加载中...\"\n >\n <div\n v-for=\"dataView in dataViewList\"\n :key=\"dataView.id\"\n >\n <div\n class=\"column-item\"\n :draggable=\"true\"\n @dragstart=\"onDragstart($event, dataView)\"\n >\n 【{{ mapGenericType(dataView.genericType) }}】\n <span class=\"column-item-name\">\n {{ dataView.name }}\n </span>\n </div>\n </div>\n </a-spin>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n reactive,\n ref,\n computed,\n unref,\n onMounted,\n inject\n} from 'vue'\nimport { TreeSelectProps, Spin as ASpin, TreeSelect as ATreeSelect } from 'ant-design-vue'\nimport {\n REQUEST,\n INDICATOR_URL,\n INDICATOR_TOKEN,\n DATA_LIST,\n GRAPHIC_CONFIG,\n UPDATE_GRAPHIC_CONFIG\n} from '@/utils/constant'\nexport default defineComponent({\n name: 'DataViewList',\n components: {\n ASpin,\n ATreeSelect\n },\n setup () {\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const dataViewId = computed(() => unref(graphicConfig)?.dataViewId || null)\n const treeSelectLoading = ref(false)\n const treeSelectData = ref<TreeSelectProps['treeData']>([])\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n interface TreeDom {\n id: string\n pId: string\n title: string\n value: string\n isLeaf?: boolean\n disabled?: boolean\n selectable?: boolean\n }\n // 当前选中树节点\n const selectedItem = reactive<TreeDom>({\n title: '已选',\n value: 'YXJG',\n id: 'YXJG',\n pId: '0',\n disabled: true,\n selectable: false,\n isLeaf: true\n })\n // 回显已选节点\n const echoSelectedNode = async () => {\n const id = dataViewId.value\n treeSelectLoading.value = true\n try {\n const { data } = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n {\n source: 'SQL_VIEW',\n dataViewId: id,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n treeSelectLoading.value = false\n if (data.success) {\n treeSelectData.value?.push(selectedItem)\n treeSelectData.value = treeSelectData.value?.concat(\n transTreeData([data.data.rows[0]] as any, 'YXJG')\n )\n }\n } catch (error) {\n treeSelectLoading.value = false\n }\n }\n // 树的数据转换\n const transTreeData = (\n data: { [key: string]: any }[] = [],\n pId?: string\n ) => {\n const list: TreeSelectProps['treeData'] = []\n data.forEach((item) => {\n list.push({\n id: item.id,\n pId: pId ?? item.parentId,\n value: item.id,\n title: item.name,\n isLeaf: item.leaf || false,\n nature: item.nature,\n selectable: item.leaf || false\n })\n })\n return list\n }\n const handleLoadData = async (treeNode?: any, isFirst?: boolean) => {\n let id = 0\n if (treeNode) {\n const { value } = treeNode.dataRef\n id = value\n }\n const { data } = await request.post(\n `${INDICATOR_URL}/dataview/treetable`,\n {\n pageFlag: true,\n pageId: PAGE_ID,\n parentId: id\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n\n if (data.success) {\n treeSelectData.value = unref(treeSelectData)?.concat(\n transTreeData(data.data)\n )\n if (isFirst && unref(dataViewId)) {\n await echoSelectedNode()\n }\n }\n }\n\n const onDataViewIdChange = (dataViewId: string) => {\n handleDataViewColumns(dataViewId)\n updateGraphicConfig({\n dataViewId,\n // 重制数据\n classificationList: [],\n seriesList: [],\n leftAxisList: [],\n rightAxisList: [],\n indicators: [],\n controlList: []\n })\n }\n\n const { setDataList } = inject(DATA_LIST, {\n // eslint-disable-next-line\n setDataList: (list: { [key: string]: any }[]) => list\n })\n\n const dataViewLoading = ref(false)\n\n const dataViewList = ref<{ [key: string]: any }[]>([])\n\n const handleDataViewColumns = async (dataViewId: string) => {\n if (!dataViewId) return\n dataViewList.value = []\n dataViewLoading.value = true\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n {\n source: 'SQL_VIEW',\n dataViewId,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = {} } = res.data\n dataViewLoading.value = false\n if (success) {\n const { rows = [] } = data\n rows?.forEach((row: any) => {\n const columns =\n row?.dataViewColumns?.map((column: any) => {\n return {\n ...column,\n // 复选框\n show: true\n }\n }) || []\n dataViewList.value = [...unref(dataViewList), ...columns]\n })\n setDataList(unref(dataViewList))\n }\n } catch (error) {\n dataViewLoading.value = false\n }\n }\n const mapGenericType = (genericType: 'TEXT' | 'NUMBER' | 'DATE') => {\n const map = {\n TEXT: '字符',\n NUMBER: '数字',\n DATE: '时间'\n }\n return map[genericType]\n }\n\n const onDragstart = (\n event: DragEvent,\n dataView: { [key: string]: any }\n ) => {\n event.dataTransfer?.setData('list-item', JSON.stringify(dataView))\n }\n\n onMounted(async () => {\n await handleLoadData(undefined, true)\n handleDataViewColumns(unref(dataViewId))\n })\n return {\n dataViewId,\n handleLoadData,\n treeSelectData,\n treeSelectLoading,\n dataViewList,\n dataViewLoading,\n onDataViewIdChange,\n mapGenericType,\n onDragstart\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-view-list {\n display: flex;\n flex-direction: column;\n height: 100%;\n .tree-spin {\n height: auto;\n }\n}\n.columns {\n height: 100%;\n overflow: auto;\n flex: 1;\n padding-top: 10px;\n}\n\n.column-item {\n display: flow-root;\n margin: 3px 0;\n padding: 2px 0;\n}\n\n.column-item:hover {\n background: #eee;\n}\n\n.column-item-name {\n margin-left: 5px;\n}\n</style>\n","/**\n * Take input from [0, n] and return it as [0, 1]\n * @hidden\n */\nexport function bound01(n, max) {\n if (isOnePointZero(n)) {\n n = '100%';\n }\n var isPercent = isPercentage(n);\n n = max === 360 ? n : Math.min(max, Math.max(0, parseFloat(n)));\n // Automatically convert percentage into number\n if (isPercent) {\n n = parseInt(String(n * max), 10) / 100;\n }\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n // Convert into [0, 1] range if it isn't already\n if (max === 360) {\n // If n is a hue given in degrees,\n // wrap around out-of-range values into [0, 360] range\n // then convert into [0, 1].\n n = (n < 0 ? (n % max) + max : n % max) / parseFloat(String(max));\n }\n else {\n // If n not a hue given in degrees\n // Convert into [0, 1] range if it isn't already.\n n = (n % max) / parseFloat(String(max));\n }\n return n;\n}\n/**\n * Force a number between 0 and 1\n * @hidden\n */\nexport function clamp01(val) {\n return Math.min(1, Math.max(0, val));\n}\n/**\n * Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n * <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\n * @hidden\n */\nexport function isOnePointZero(n) {\n return typeof n === 'string' && n.indexOf('.') !== -1 && parseFloat(n) === 1;\n}\n/**\n * Check to see if string passed in is a percentage\n * @hidden\n */\nexport function isPercentage(n) {\n return typeof n === 'string' && n.indexOf('%') !== -1;\n}\n/**\n * Return a valid alpha value [0,1] with all invalid values being set to 1\n * @hidden\n */\nexport function boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n}\n/**\n * Replace a decimal with it's percentage value\n * @hidden\n */\nexport function convertToPercentage(n) {\n if (n <= 1) {\n return \"\".concat(Number(n) * 100, \"%\");\n }\n return n;\n}\n/**\n * Force a hex value to have 2 characters\n * @hidden\n */\nexport function pad2(c) {\n return c.length === 1 ? '0' + c : String(c);\n}\n","import { bound01, pad2 } from './util.js';\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n/**\n * Handle bounds / percentage checking to conform to CSS color spec\n * <http://www.w3.org/TR/css3-color/>\n * *Assumes:* r, g, b in [0, 255] or [0, 1]\n * *Returns:* { r, g, b } in [0, 255]\n */\nexport function rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255,\n };\n}\n/**\n * Converts an RGB color value to HSL.\n * *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n * *Returns:* { h, s, l } in [0,1]\n */\nexport function rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = 0;\n var s = 0;\n var l = (max + min) / 2;\n if (max === min) {\n s = 0;\n h = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, l: l };\n}\nfunction hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * (6 * t);\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n}\n/**\n * Converts an HSL color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hslToRgb(h, s, l) {\n var r;\n var g;\n var b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n if (s === 0) {\n // achromatic\n g = l;\n b = l;\n r = l;\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color value to HSV\n *\n * *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n * *Returns:* { h, s, v } in [0,1]\n */\nexport function rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = 0;\n var v = max;\n var d = max - min;\n var s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0; // achromatic\n }\n else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n}\n/**\n * Converts an HSV color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - f * s);\n var t = v * (1 - (1 - f) * s);\n var mod = i % 6;\n var r = [v, q, p, p, t, v][mod];\n var g = [t, v, v, q, p, p][mod];\n var b = [p, p, t, v, v, q][mod];\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color to hex\n *\n * Assumes r, g, and b are contained in the set [0, 255]\n * Returns a 3 or 6 character hex\n */\nexport function rgbToHex(r, g, b, allow3Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n // Return a 3 character hex if possible\n if (allow3Char &&\n hex[0].startsWith(hex[0].charAt(1)) &&\n hex[1].startsWith(hex[1].charAt(1)) &&\n hex[2].startsWith(hex[2].charAt(1))) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join('');\n}\n/**\n * Converts an RGBA color plus alpha transparency to hex\n *\n * Assumes r, g, b are contained in the set [0, 255] and\n * a in [0, 1]. Returns a 4 or 8 character rgba hex\n */\n// eslint-disable-next-line max-params\nexport function rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n pad2(convertDecimalToHex(a)),\n ];\n // Return a 4 character hex if possible\n if (allow4Char &&\n hex[0].startsWith(hex[0].charAt(1)) &&\n hex[1].startsWith(hex[1].charAt(1)) &&\n hex[2].startsWith(hex[2].charAt(1)) &&\n hex[3].startsWith(hex[3].charAt(1))) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join('');\n}\n/**\n * Converts an RGBA color to an ARGB Hex8 string\n * Rarely used, but required for \"toFilter()\"\n */\nexport function rgbaToArgbHex(r, g, b, a) {\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n return hex.join('');\n}\n/** Converts a decimal to a hex value */\nexport function convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n/** Converts a hex value to a decimal */\nexport function convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n}\n/** Parse a base-16 hex value into a base-10 integer */\nexport function parseIntFromHex(val) {\n return parseInt(val, 16);\n}\nexport function numberInputToObject(color) {\n return {\n r: color >> 16,\n g: (color & 0xff00) >> 8,\n b: color & 0xff,\n };\n}\n","// https://github.com/bahamas10/css-color-names/blob/master/css-color-names.json\n/**\n * @hidden\n */\nexport var names = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n goldenrod: '#daa520',\n gold: '#ffd700',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavenderblush: '#fff0f5',\n lavender: '#e6e6fa',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32',\n};\n","/* eslint-disable @typescript-eslint/no-redundant-type-constituents */\nimport { convertHexToDecimal, hslToRgb, hsvToRgb, parseIntFromHex, rgbToRgb, } from './conversion.js';\nimport { names } from './css-color-names.js';\nimport { boundAlpha, convertToPercentage } from './util.js';\n/**\n * Given a string or object, convert that input to RGB\n *\n * Possible string inputs:\n * ```\n * \"red\"\n * \"#f00\" or \"f00\"\n * \"#ff0000\" or \"ff0000\"\n * \"#ff000000\" or \"ff000000\"\n * \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n * \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n * \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n * \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n * \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n * \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n * \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n * ```\n */\nexport function inputToRGB(color) {\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color === 'string') {\n color = stringInputToObject(color);\n }\n if (typeof color === 'object') {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === '%' ? 'prgb' : 'rgb';\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = 'hsv';\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = 'hsl';\n }\n if (Object.prototype.hasOwnProperty.call(color, 'a')) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a,\n };\n}\n// <http://www.w3.org/TR/css3-values/#integers>\nvar CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\n// <http://www.w3.org/TR/css3-values/#number-value>\nvar CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\n// Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\nvar CSS_UNIT = \"(?:\".concat(CSS_NUMBER, \")|(?:\").concat(CSS_INTEGER, \")\");\n// Actual matching.\n// Parentheses and commas are optional, but not required.\n// Whitespace can take the place of commas or opening paren\nvar PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar matchers = {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp('rgb' + PERMISSIVE_MATCH3),\n rgba: new RegExp('rgba' + PERMISSIVE_MATCH4),\n hsl: new RegExp('hsl' + PERMISSIVE_MATCH3),\n hsla: new RegExp('hsla' + PERMISSIVE_MATCH4),\n hsv: new RegExp('hsv' + PERMISSIVE_MATCH3),\n hsva: new RegExp('hsva' + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n};\n/**\n * Permissive string parsing. Take in a number of formats, and output an object\n * based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n */\nexport function stringInputToObject(color) {\n color = color.trim().toLowerCase();\n if (color.length === 0) {\n return false;\n }\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n }\n else if (color === 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: 'name' };\n }\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match = matchers.rgb.exec(color);\n if (match) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n match = matchers.rgba.exec(color);\n if (match) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n match = matchers.hsl.exec(color);\n if (match) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n match = matchers.hsla.exec(color);\n if (match) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n match = matchers.hsv.exec(color);\n if (match) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n match = matchers.hsva.exec(color);\n if (match) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n match = matchers.hex8.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? 'name' : 'hex8',\n };\n }\n match = matchers.hex6.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n match = matchers.hex4.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1] + match[1]),\n g: parseIntFromHex(match[2] + match[2]),\n b: parseIntFromHex(match[3] + match[3]),\n a: convertHexToDecimal(match[4] + match[4]),\n format: named ? 'name' : 'hex8',\n };\n }\n match = matchers.hex3.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1] + match[1]),\n g: parseIntFromHex(match[2] + match[2]),\n b: parseIntFromHex(match[3] + match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n return false;\n}\n/**\n * Check to see if it looks like a CSS unit\n * (see `matchers` above for definition).\n */\nexport function isValidCSSUnit(color) {\n return Boolean(matchers.CSS_UNIT.exec(String(color)));\n}\n","import { inputToRGB, rgbToHex, rgbToHsv } from '@ctrl/tinycolor';\n\nvar hueStep = 2; // 色相阶梯\n\nvar saturationStep = 0.16; // 饱和度阶梯,浅色部分\n\nvar saturationStep2 = 0.05; // 饱和度阶梯,深色部分\n\nvar brightnessStep1 = 0.05; // 亮度阶梯,浅色部分\n\nvar brightnessStep2 = 0.15; // 亮度阶梯,深色部分\n\nvar lightColorCount = 5; // 浅色数量,主色上\n\nvar darkColorCount = 4; // 深色数量,主色下\n// 暗色主题颜色映射关系表\n\nvar darkColorMap = [{\n index: 7,\n opacity: 0.15\n}, {\n index: 6,\n opacity: 0.25\n}, {\n index: 5,\n opacity: 0.3\n}, {\n index: 5,\n opacity: 0.45\n}, {\n index: 5,\n opacity: 0.65\n}, {\n index: 5,\n opacity: 0.85\n}, {\n index: 4,\n opacity: 0.9\n}, {\n index: 3,\n opacity: 0.95\n}, {\n index: 2,\n opacity: 0.97\n}, {\n index: 1,\n opacity: 0.98\n}]; // Wrapper function ported from TinyColor.prototype.toHsv\n// Keep it here because of `hsv.h * 360`\n\nfunction toHsv(_ref) {\n var r = _ref.r,\n g = _ref.g,\n b = _ref.b;\n var hsv = rgbToHsv(r, g, b);\n return {\n h: hsv.h * 360,\n s: hsv.s,\n v: hsv.v\n };\n} // Wrapper function ported from TinyColor.prototype.toHexString\n// Keep it here because of the prefix `#`\n\n\nfunction toHex(_ref2) {\n var r = _ref2.r,\n g = _ref2.g,\n b = _ref2.b;\n return \"#\".concat(rgbToHex(r, g, b, false));\n} // Wrapper function ported from TinyColor.prototype.mix, not treeshakable.\n// Amount in range [0, 1]\n// Assume color1 & color2 has no alpha, since the following src code did so.\n\n\nfunction mix(rgb1, rgb2, amount) {\n var p = amount / 100;\n var rgb = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b\n };\n return rgb;\n}\n\nfunction getHue(hsv, i, light) {\n var hue; // 根据色相不同,色相转向不同\n\n if (Math.round(hsv.h) >= 60 && Math.round(hsv.h) <= 240) {\n hue = light ? Math.round(hsv.h) - hueStep * i : Math.round(hsv.h) + hueStep * i;\n } else {\n hue = light ? Math.round(hsv.h) + hueStep * i : Math.round(hsv.h) - hueStep * i;\n }\n\n if (hue < 0) {\n hue += 360;\n } else if (hue >= 360) {\n hue -= 360;\n }\n\n return hue;\n}\n\nfunction getSaturation(hsv, i, light) {\n // grey color don't change saturation\n if (hsv.h === 0 && hsv.s === 0) {\n return hsv.s;\n }\n\n var saturation;\n\n if (light) {\n saturation = hsv.s - saturationStep * i;\n } else if (i === darkColorCount) {\n saturation = hsv.s + saturationStep;\n } else {\n saturation = hsv.s + saturationStep2 * i;\n } // 边界值修正\n\n\n if (saturation > 1) {\n saturation = 1;\n } // 第一格的 s 限制在 0.06-0.1 之间\n\n\n if (light && i === lightColorCount && saturation > 0.1) {\n saturation = 0.1;\n }\n\n if (saturation < 0.06) {\n saturation = 0.06;\n }\n\n return Number(saturation.toFixed(2));\n}\n\nfunction getValue(hsv, i, light) {\n var value;\n\n if (light) {\n value = hsv.v + brightnessStep1 * i;\n } else {\n value = hsv.v - brightnessStep2 * i;\n }\n\n if (value > 1) {\n value = 1;\n }\n\n return Number(value.toFixed(2));\n}\n\nfunction generate(color) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var patterns = [];\n var pColor = inputToRGB(color);\n\n for (var i = lightColorCount; i > 0; i -= 1) {\n var hsv = toHsv(pColor);\n var colorString = toHex(inputToRGB({\n h: getHue(hsv, i, true),\n s: getSaturation(hsv, i, true),\n v: getValue(hsv, i, true)\n }));\n patterns.push(colorString);\n }\n\n patterns.push(toHex(pColor));\n\n for (var _i = 1; _i <= darkColorCount; _i += 1) {\n var _hsv = toHsv(pColor);\n\n var _colorString = toHex(inputToRGB({\n h: getHue(_hsv, _i),\n s: getSaturation(_hsv, _i),\n v: getValue(_hsv, _i)\n }));\n\n patterns.push(_colorString);\n } // dark theme patterns\n\n\n if (opts.theme === 'dark') {\n return darkColorMap.map(function (_ref3) {\n var index = _ref3.index,\n opacity = _ref3.opacity;\n var darkColorString = toHex(mix(inputToRGB(opts.backgroundColor || '#141414'), inputToRGB(patterns[index]), opacity * 100));\n return darkColorString;\n });\n }\n\n return patterns;\n}\n\nvar presetPrimaryColors = {\n red: '#F5222D',\n volcano: '#FA541C',\n orange: '#FA8C16',\n gold: '#FAAD14',\n yellow: '#FADB14',\n lime: '#A0D911',\n green: '#52C41A',\n cyan: '#13C2C2',\n blue: '#1890FF',\n geekblue: '#2F54EB',\n purple: '#722ED1',\n magenta: '#EB2F96',\n grey: '#666666'\n};\nvar presetPalettes = {};\nvar presetDarkPalettes = {};\nObject.keys(presetPrimaryColors).forEach(function (key) {\n presetPalettes[key] = generate(presetPrimaryColors[key]);\n presetPalettes[key].primary = presetPalettes[key][5]; // dark presetPalettes\n\n presetDarkPalettes[key] = generate(presetPrimaryColors[key], {\n theme: 'dark',\n backgroundColor: '#141414'\n });\n presetDarkPalettes[key].primary = presetDarkPalettes[key][5];\n});\nvar red = presetPalettes.red;\nvar volcano = presetPalettes.volcano;\nvar gold = presetPalettes.gold;\nvar orange = presetPalettes.orange;\nvar yellow = presetPalettes.yellow;\nvar lime = presetPalettes.lime;\nvar green = presetPalettes.green;\nvar cyan = presetPalettes.cyan;\nvar blue = presetPalettes.blue;\nvar geekblue = presetPalettes.geekblue;\nvar purple = presetPalettes.purple;\nvar magenta = presetPalettes.magenta;\nvar grey = presetPalettes.grey;\n\nexport { blue, cyan, geekblue, generate, gold, green, grey, lime, magenta, orange, presetDarkPalettes, presetPalettes, presetPrimaryColors, purple, red, volcano, yellow };\n","// https://github.com/substack/insert-css\nvar containers = []; // will store container HTMLElement references\n\nvar styleElements = []; // will store {prepend: HTMLElement, append: HTMLElement}\n\nvar usage = 'insert-css: You need to provide a CSS string. Usage: insertCss(cssString[, options]).';\n\nfunction createStyleElement() {\n var styleElement = document.createElement('style');\n styleElement.setAttribute('type', 'text/css');\n return styleElement;\n} // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\n\nfunction insertCss(css, options) {\n options = options || {};\n\n if (css === undefined) {\n throw new Error(usage);\n }\n\n var position = options.prepend === true ? 'prepend' : 'append';\n var container = options.container !== undefined ? options.container : document.querySelector('head');\n var containerId = containers.indexOf(container); // first time we see this container, create the necessary entries\n\n if (containerId === -1) {\n containerId = containers.push(container) - 1;\n styleElements[containerId] = {};\n } // try to get the correponding container + position styleElement, create it otherwise\n\n\n var styleElement;\n\n if (styleElements[containerId] !== undefined && styleElements[containerId][position] !== undefined) {\n styleElement = styleElements[containerId][position];\n } else {\n styleElement = styleElements[containerId][position] = createStyleElement();\n\n if (position === 'prepend') {\n container.insertBefore(styleElement, container.childNodes[0]);\n } else {\n container.appendChild(styleElement);\n }\n } // strip potential UTF-8 BOM if css was read from a file\n\n\n if (css.charCodeAt(0) === 0xfeff) {\n css = css.substr(1, css.length);\n } // actually add the stylesheet\n\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText += css;\n } else {\n styleElement.textContent += css;\n }\n\n return styleElement;\n}\n\nexport default insertCss;","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport { nextTick, h } from 'vue';\nimport { generate as generateColor } from '@ant-design/colors';\nimport insertCss from './insert-css';\nexport function warn(valid, message) {\n // Support uglify\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n console.error(\"Warning: \".concat(message));\n }\n}\nexport function warning(valid, message) {\n warn(valid, \"[@ant-design/icons-vue] \".concat(message));\n} // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\nexport function isIconDefinition(target) {\n return typeof target === 'object' && typeof target.name === 'string' && typeof target.theme === 'string' && (typeof target.icon === 'object' || typeof target.icon === 'function');\n}\nexport function normalizeAttrs() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return Object.keys(attrs).reduce(function (acc, key) {\n var val = attrs[key];\n\n switch (key) {\n case 'class':\n acc.className = val;\n delete acc[\"class\"];\n break;\n\n default:\n acc[key] = val;\n }\n\n return acc;\n }, {});\n}\nexport function generate(node, key, rootProps) {\n if (!rootProps) {\n return h(node.tag, _objectSpread({\n key: key\n }, node.attrs), (node.children || []).map(function (child, index) {\n return generate(child, \"\".concat(key, \"-\").concat(node.tag, \"-\").concat(index));\n }));\n }\n\n return h(node.tag, _objectSpread({\n key: key\n }, rootProps, node.attrs), (node.children || []).map(function (child, index) {\n return generate(child, \"\".concat(key, \"-\").concat(node.tag, \"-\").concat(index));\n }));\n}\nexport function getSecondaryColor(primaryColor) {\n // choose the second color\n return generateColor(primaryColor)[0];\n}\nexport function normalizeTwoToneColors(twoToneColor) {\n if (!twoToneColor) {\n return [];\n }\n\n return Array.isArray(twoToneColor) ? twoToneColor : [twoToneColor];\n} // These props make sure that the SVG behaviours like general text.\n// Reference: https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4\n\nexport var svgBaseProps = {\n width: '1em',\n height: '1em',\n fill: 'currentColor',\n 'aria-hidden': 'true',\n focusable: 'false'\n};\nexport var iconStyles = \"\\n.anticon {\\n display: inline-block;\\n color: inherit;\\n font-style: normal;\\n line-height: 0;\\n text-align: center;\\n text-transform: none;\\n vertical-align: -0.125em;\\n text-rendering: optimizeLegibility;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\n.anticon > * {\\n line-height: 1;\\n}\\n\\n.anticon svg {\\n display: inline-block;\\n}\\n\\n.anticon::before {\\n display: none;\\n}\\n\\n.anticon .anticon-icon {\\n display: block;\\n}\\n\\n.anticon[tabindex] {\\n cursor: pointer;\\n}\\n\\n.anticon-spin::before,\\n.anticon-spin {\\n display: inline-block;\\n -webkit-animation: loadingCircle 1s infinite linear;\\n animation: loadingCircle 1s infinite linear;\\n}\\n\\n@-webkit-keyframes loadingCircle {\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes loadingCircle {\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\";\nvar cssInjectedFlag = false;\nexport var useInsertStyles = function useInsertStyles() {\n var styleStr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : iconStyles;\n nextTick(function () {\n if (!cssInjectedFlag) {\n if (typeof window !== 'undefined' && window.document && window.document.documentElement) {\n insertCss(styleStr, {\n prepend: true\n });\n }\n\n cssInjectedFlag = true;\n }\n });\n};","var _excluded = [\"icon\", \"primaryColor\", \"secondaryColor\"];\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport { generate, getSecondaryColor, isIconDefinition, warning, useInsertStyles } from '../utils';\nvar twoToneColorPalette = {\n primaryColor: '#333',\n secondaryColor: '#E6E6E6',\n calculated: false\n};\n\nfunction setTwoToneColors(_ref) {\n var primaryColor = _ref.primaryColor,\n secondaryColor = _ref.secondaryColor;\n twoToneColorPalette.primaryColor = primaryColor;\n twoToneColorPalette.secondaryColor = secondaryColor || getSecondaryColor(primaryColor);\n twoToneColorPalette.calculated = !!secondaryColor;\n}\n\nfunction getTwoToneColors() {\n return _objectSpread({}, twoToneColorPalette);\n}\n\nvar IconBase = function IconBase(props, context) {\n var _props$context$attrs = _objectSpread({}, props, context.attrs),\n icon = _props$context$attrs.icon,\n primaryColor = _props$context$attrs.primaryColor,\n secondaryColor = _props$context$attrs.secondaryColor,\n restProps = _objectWithoutProperties(_props$context$attrs, _excluded);\n\n var colors = twoToneColorPalette;\n\n if (primaryColor) {\n colors = {\n primaryColor: primaryColor,\n secondaryColor: secondaryColor || getSecondaryColor(primaryColor)\n };\n }\n\n useInsertStyles();\n warning(isIconDefinition(icon), \"icon should be icon definiton, but got \".concat(icon));\n\n if (!isIconDefinition(icon)) {\n return null;\n }\n\n var target = icon;\n\n if (target && typeof target.icon === 'function') {\n target = _objectSpread({}, target, {\n icon: target.icon(colors.primaryColor, colors.secondaryColor)\n });\n }\n\n return generate(target.icon, \"svg-\".concat(target.name), _objectSpread({}, restProps, {\n 'data-icon': target.name,\n width: '1em',\n height: '1em',\n fill: 'currentColor',\n 'aria-hidden': 'true'\n })); // },\n};\n\nIconBase.props = {\n icon: Object,\n primaryColor: String,\n secondaryColor: String,\n focusable: String\n};\nIconBase.inheritAttrs = false;\nIconBase.displayName = 'IconBase';\nIconBase.getTwoToneColors = getTwoToneColors;\nIconBase.setTwoToneColors = setTwoToneColors;\nexport default IconBase;","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport VueIcon from './IconBase';\nimport { normalizeTwoToneColors } from '../utils';\nexport function setTwoToneColor(twoToneColor) {\n var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor),\n _normalizeTwoToneColo2 = _slicedToArray(_normalizeTwoToneColo, 2),\n primaryColor = _normalizeTwoToneColo2[0],\n secondaryColor = _normalizeTwoToneColo2[1];\n\n return VueIcon.setTwoToneColors({\n primaryColor: primaryColor,\n secondaryColor: secondaryColor\n });\n}\nexport function getTwoToneColor() {\n var colors = VueIcon.getTwoToneColors();\n\n if (!colors.calculated) {\n return colors.primaryColor;\n }\n\n return [colors.primaryColor, colors.secondaryColor];\n}","var _excluded = [\"class\", \"icon\", \"spin\", \"rotate\", \"tabindex\", \"twoToneColor\", \"onClick\"];\nimport { createVNode as _createVNode } from \"vue\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport VueIcon from './IconBase';\nimport { getTwoToneColor, setTwoToneColor } from './twoTonePrimaryColor';\nimport { normalizeTwoToneColors } from '../utils'; // Initial setting\n\nsetTwoToneColor('#1890ff');\n\nvar Icon = function Icon(props, context) {\n var _classObj;\n\n var _props$context$attrs = _objectSpread({}, props, context.attrs),\n cls = _props$context$attrs[\"class\"],\n icon = _props$context$attrs.icon,\n spin = _props$context$attrs.spin,\n rotate = _props$context$attrs.rotate,\n tabindex = _props$context$attrs.tabindex,\n twoToneColor = _props$context$attrs.twoToneColor,\n onClick = _props$context$attrs.onClick,\n restProps = _objectWithoutProperties(_props$context$attrs, _excluded);\n\n var classObj = (_classObj = {\n anticon: true\n }, _defineProperty(_classObj, \"anticon-\".concat(icon.name), Boolean(icon.name)), _defineProperty(_classObj, cls, cls), _classObj);\n var svgClassString = spin === '' || !!spin || icon.name === 'loading' ? 'anticon-spin' : '';\n var iconTabIndex = tabindex;\n\n if (iconTabIndex === undefined && onClick) {\n iconTabIndex = -1;\n restProps.tabindex = iconTabIndex;\n }\n\n var svgStyle = rotate ? {\n msTransform: \"rotate(\".concat(rotate, \"deg)\"),\n transform: \"rotate(\".concat(rotate, \"deg)\")\n } : undefined;\n\n var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor),\n _normalizeTwoToneColo2 = _slicedToArray(_normalizeTwoToneColo, 2),\n primaryColor = _normalizeTwoToneColo2[0],\n secondaryColor = _normalizeTwoToneColo2[1];\n\n return _createVNode(\"span\", _objectSpread({\n \"role\": \"img\",\n \"aria-label\": icon.name\n }, restProps, {\n \"onClick\": onClick,\n \"class\": classObj\n }), [_createVNode(VueIcon, {\n \"class\": svgClassString,\n \"icon\": icon,\n \"primaryColor\": primaryColor,\n \"secondaryColor\": secondaryColor,\n \"style\": svgStyle\n }, null)]);\n};\n\nIcon.props = {\n spin: Boolean,\n rotate: Number,\n icon: Object,\n twoToneColor: String\n};\nIcon.displayName = 'AntdIcon';\nIcon.inheritAttrs = false;\nIcon.getTwoToneColor = getTwoToneColor;\nIcon.setTwoToneColor = setTwoToneColor;\nexport default Icon;","// This icon file is generated automatically.\nvar AppstoreAddOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"defs\", \"attrs\": {}, \"children\": [{ \"tag\": \"style\", \"attrs\": {} }] }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zm52 132H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200zM424 712H296V584c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v128H104c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h128v128c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V776h128c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\" } }] }, \"name\": \"appstore-add\", \"theme\": \"outlined\" };\nexport default AppstoreAddOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport AppstoreAddOutlinedSvg from \"@ant-design/icons-svg/es/asn/AppstoreAddOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar AppstoreAddOutlined = function AppstoreAddOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": AppstoreAddOutlinedSvg\n }), null);\n};\n\nAppstoreAddOutlined.displayName = 'AppstoreAddOutlined';\nAppstoreAddOutlined.inheritAttrs = false;\nexport default AppstoreAddOutlined;","// This icon file is generated automatically.\nvar CaretDownOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\" } }] }, \"name\": \"caret-down\", \"theme\": \"outlined\" };\nexport default CaretDownOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport CaretDownOutlinedSvg from \"@ant-design/icons-svg/es/asn/CaretDownOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar CaretDownOutlined = function CaretDownOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": CaretDownOutlinedSvg\n }), null);\n};\n\nCaretDownOutlined.displayName = 'CaretDownOutlined';\nCaretDownOutlined.inheritAttrs = false;\nexport default CaretDownOutlined;","// This icon file is generated automatically.\nvar CaretRightOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M715.8 493.5L335 165.1c-14.2-12.2-35-1.2-35 18.5v656.8c0 19.7 20.8 30.7 35 18.5l380.8-328.4c10.9-9.4 10.9-27.6 0-37z\" } }] }, \"name\": \"caret-right\", \"theme\": \"outlined\" };\nexport default CaretRightOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport CaretRightOutlinedSvg from \"@ant-design/icons-svg/es/asn/CaretRightOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar CaretRightOutlined = function CaretRightOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": CaretRightOutlinedSvg\n }), null);\n};\n\nCaretRightOutlined.displayName = 'CaretRightOutlined';\nCaretRightOutlined.inheritAttrs = false;\nexport default CaretRightOutlined;","// This icon file is generated automatically.\nvar CloseOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"fill-rule\": \"evenodd\", \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M799.86 166.31c.02 0 .04.02.08.06l57.69 57.7c.04.03.05.05.06.08a.12.12 0 010 .06c0 .03-.02.05-.06.09L569.93 512l287.7 287.7c.04.04.05.06.06.09a.12.12 0 010 .07c0 .02-.02.04-.06.08l-57.7 57.69c-.03.04-.05.05-.07.06a.12.12 0 01-.07 0c-.03 0-.05-.02-.09-.06L512 569.93l-287.7 287.7c-.04.04-.06.05-.09.06a.12.12 0 01-.07 0c-.02 0-.04-.02-.08-.06l-57.69-57.7c-.04-.03-.05-.05-.06-.07a.12.12 0 010-.07c0-.03.02-.05.06-.09L454.07 512l-287.7-287.7c-.04-.04-.05-.06-.06-.09a.12.12 0 010-.07c0-.02.02-.04.06-.08l57.7-57.69c.03-.04.05-.05.07-.06a.12.12 0 01.07 0c.03 0 .05.02.09.06L512 454.07l287.7-287.7c.04-.04.06-.05.09-.06a.12.12 0 01.07 0z\" } }] }, \"name\": \"close\", \"theme\": \"outlined\" };\nexport default CloseOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport CloseOutlinedSvg from \"@ant-design/icons-svg/es/asn/CloseOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar CloseOutlined = function CloseOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": CloseOutlinedSvg\n }), null);\n};\n\nCloseOutlined.displayName = 'CloseOutlined';\nCloseOutlined.inheritAttrs = false;\nexport default CloseOutlined;","// This icon file is generated automatically.\nvar DeleteOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\" } }] }, \"name\": \"delete\", \"theme\": \"outlined\" };\nexport default DeleteOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport DeleteOutlinedSvg from \"@ant-design/icons-svg/es/asn/DeleteOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar DeleteOutlined = function DeleteOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": DeleteOutlinedSvg\n }), null);\n};\n\nDeleteOutlined.displayName = 'DeleteOutlined';\nDeleteOutlined.inheritAttrs = false;\nexport default DeleteOutlined;","// This icon file is generated automatically.\nvar DownOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\" } }] }, \"name\": \"down\", \"theme\": \"outlined\" };\nexport default DownOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport DownOutlinedSvg from \"@ant-design/icons-svg/es/asn/DownOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar DownOutlined = function DownOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": DownOutlinedSvg\n }), null);\n};\n\nDownOutlined.displayName = 'DownOutlined';\nDownOutlined.inheritAttrs = false;\nexport default DownOutlined;","// This icon file is generated automatically.\nvar MinusCircleOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M696 480H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\" } }] }, \"name\": \"minus-circle\", \"theme\": \"outlined\" };\nexport default MinusCircleOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport MinusCircleOutlinedSvg from \"@ant-design/icons-svg/es/asn/MinusCircleOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar MinusCircleOutlined = function MinusCircleOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": MinusCircleOutlinedSvg\n }), null);\n};\n\nMinusCircleOutlined.displayName = 'MinusCircleOutlined';\nMinusCircleOutlined.inheritAttrs = false;\nexport default MinusCircleOutlined;","// This icon file is generated automatically.\nvar PlusCircleOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M696 480H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\" } }] }, \"name\": \"plus-circle\", \"theme\": \"outlined\" };\nexport default PlusCircleOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport PlusCircleOutlinedSvg from \"@ant-design/icons-svg/es/asn/PlusCircleOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar PlusCircleOutlined = function PlusCircleOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": PlusCircleOutlinedSvg\n }), null);\n};\n\nPlusCircleOutlined.displayName = 'PlusCircleOutlined';\nPlusCircleOutlined.inheritAttrs = false;\nexport default PlusCircleOutlined;","// This icon file is generated automatically.\nvar PlusOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M192 474h672q8 0 8 8v60q0 8-8 8H160q-8 0-8-8v-60q0-8 8-8z\" } }] }, \"name\": \"plus\", \"theme\": \"outlined\" };\nexport default PlusOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport PlusOutlinedSvg from \"@ant-design/icons-svg/es/asn/PlusOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar PlusOutlined = function PlusOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": PlusOutlinedSvg\n }), null);\n};\n\nPlusOutlined.displayName = 'PlusOutlined';\nPlusOutlined.inheritAttrs = false;\nexport default PlusOutlined;","// This icon file is generated automatically.\nvar SettingOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z\" } }] }, \"name\": \"setting\", \"theme\": \"outlined\" };\nexport default SettingOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport SettingOutlinedSvg from \"@ant-design/icons-svg/es/asn/SettingOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar SettingOutlined = function SettingOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": SettingOutlinedSvg\n }), null);\n};\n\nSettingOutlined.displayName = 'SettingOutlined';\nSettingOutlined.inheritAttrs = false;\nexport default SettingOutlined;","<template>\n <div class=\"data-source-list\">\n <a-input-search\n v-model:value=\"searchText\"\n placeholder=\"请输入关键字\"\n style=\"width: 100%\"\n @change=\"onChange\"\n @search=\"onSearch\"\n />\n <div class=\"columns\">\n <a-spin\n :spinning=\"dataSourceLoading\"\n tip=\"数据源加载中...\"\n >\n <div\n v-for=\"(dataSource, index) in dataSourceList\"\n :key=\"dataSource.id\"\n >\n <div class=\"column-item\">\n <span\n style=\"cursor: pointer\"\n @click=\"onToggleGroup(index)\"\n >\n <caret-down-outlined v-if=\"dataSource.show\" />\n <caret-right-outlined v-else />\n {{ dataSource.indexCode + ' ' + dataSource.name }}\n </span>\n </div>\n <div v-if=\"dataSource.show\">\n <div\n class=\"column-child-item\"\n v-for=\"dataViewColumn in dataSource.dataViewColumns\"\n :key=\"dataViewColumn.id\"\n :draggable=\"true\"\n @dragstart=\"onDragstart($event, dataViewColumn)\"\n >\n 【{{ mapScope(dataViewColumn.scope) }}】\n <span class=\"column-child-item-name\">\n {{ dataViewColumn.title || dataViewColumn.name }}\n </span>\n </div>\n </div>\n </div>\n </a-spin>\n </div>\n <a-pagination\n size=\"small\"\n show-quick-jumper\n v-model:pageSize=\"pagination.pageSize\"\n :total=\"pagination.totalResult\"\n :show-total=\"(total: any) => `共 ${total} 条`\"\n v-model:current=\"pagination.currentPage\"\n @change=\"onPaginationChange\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n onMounted,\n reactive,\n ref,\n unref,\n inject\n} from 'vue'\nimport { CaretRightOutlined, CaretDownOutlined } from '@ant-design/icons-vue'\nimport {\n InputSearch as AInputSearch,\n Spin as ASpin,\n Pagination as APagination\n} from 'ant-design-vue'\nimport { debounce } from 'lodash-es'\nimport {\n INDICATOR_URL,\n REQUEST,\n INDICATOR_TOKEN,\n SELECTED_COMPONENT\n} from '@/utils/constant'\nexport default defineComponent({\n name: 'DataSourceList',\n components: {\n CaretRightOutlined,\n CaretDownOutlined,\n AInputSearch,\n ASpin,\n APagination\n },\n setup () {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n const selectedConfig = computed(\n () => unref(selectedComponent)?.graphicConfig\n )\n const dataSourceId = computed(() => unref(selectedConfig)?.dataSourceId)\n const dataSourceList = ref<{ [key: string]: any }[]>([])\n const dataSourceLoading = ref(false)\n // 分页数据\n const pagination = reactive({\n pageSize: 20,\n currentPage: 1,\n totalResult: 0\n })\n const searchText = ref('')\n const handleDataSourceList = async () => {\n dataSourceLoading.value = true\n const params = {\n source: 'INDICATOR_LIB',\n queryRequest: {\n pageSize: pagination.pageSize,\n pageNum: pagination.currentPage\n },\n indexName: unref(searchText),\n pageId: PAGE_ID,\n dataSourceId: unref(dataSourceId)\n }\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n params,\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n dataSourceLoading.value = false\n const { success, data = {} } = res.data\n if (success) {\n const { rows = [], total = 0 } = data\n rows?.forEach((row: { [key: string]: any }) => {\n row.show = false\n row.dataViewColumns?.forEach((column: { [key: string]: any }) => {\n column.show = true\n // 编辑名字\n column.edit = false\n })\n })\n dataSourceList.value = rows\n pagination.totalResult = +total\n }\n } catch (error) {\n dataSourceLoading.value = false\n }\n }\n\n const mapScope = (scope: 'DIM' | 'IDX') => {\n const map = {\n DIM: '维度',\n IDX: '指标'\n }\n return map[scope]\n }\n\n const onToggleGroup = (index: number) => {\n dataSourceList.value[index].show = !dataSourceList.value[index].show\n }\n const onDragstart = (\n event: DragEvent,\n dataView: { [key: string]: any }\n ) => {\n event.dataTransfer?.setData('list-item', JSON.stringify(dataView))\n }\n\n const onSearch = () => {\n pagination.currentPage = 1\n handleDataSourceList()\n }\n\n const onChange = debounce(() => {\n pagination.currentPage = 1\n handleDataSourceList()\n }, 200)\n\n const onPaginationChange = (page: number, pageSize: number) => {\n pagination.pageSize = pageSize\n pagination.currentPage = page\n handleDataSourceList()\n }\n\n onMounted(() => {\n handleDataSourceList()\n })\n\n return {\n dataSourceList,\n dataSourceLoading,\n pagination,\n onDragstart,\n onToggleGroup,\n mapScope,\n onSearch,\n onChange,\n onPaginationChange,\n searchText\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-source-list {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.columns {\n height: 100%;\n overflow: auto;\n flex: 1;\n padding-top: 10px;\n}\n\n.column-item {\n display: flow-root;\n margin: 3px 0;\n padding: 2px 0;\n}\n\n.column-child-item {\n padding: 3px 10px;\n}\n</style>\n","<template>\n <div class=\"data-source-list\">\n <a-input-search\n v-model:value=\"searchText\"\n placeholder=\"请输入关键字\"\n style=\"width: 100%\"\n @change=\"onChange\"\n @search=\"onSearch\"\n />\n <div class=\"columns\">\n <a-spin\n :spinning=\"dataSourceLoading\"\n tip=\"数据源加载中...\"\n >\n <div\n v-for=\"(dataSource, index) in dataSourceList\"\n :key=\"dataSource.id\"\n >\n <div class=\"column-item\">\n <span\n style=\"cursor: pointer\"\n @click=\"onToggleGroup(index)\"\n >\n <caret-down-outlined v-if=\"dataSource.show\" />\n <caret-right-outlined v-else />\n {{ dataSource.indexCode + ' ' + dataSource.name }}\n </span>\n </div>\n <div v-if=\"dataSource.show\">\n <div\n class=\"column-child-item\"\n v-for=\"dataViewColumn in dataSource.dataViewColumns\"\n :key=\"dataViewColumn.id\"\n :draggable=\"true\"\n @dragstart=\"onDragstart($event, dataViewColumn)\"\n >\n 【{{ mapScope(dataViewColumn.scope) }}】\n <span class=\"column-child-item-name\">\n {{ dataViewColumn.title || dataViewColumn.name }}\n </span>\n </div>\n </div>\n </div>\n </a-spin>\n </div>\n <a-pagination\n size=\"small\"\n show-quick-jumper\n v-model:pageSize=\"pagination.pageSize\"\n :total=\"pagination.totalResult\"\n :show-total=\"(total: any) => `共 ${total} 条`\"\n v-model:current=\"pagination.currentPage\"\n @change=\"onPaginationChange\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n onMounted,\n reactive,\n ref,\n unref,\n inject\n} from 'vue'\nimport { CaretRightOutlined, CaretDownOutlined } from '@ant-design/icons-vue'\nimport {\n InputSearch as AInputSearch,\n Spin as ASpin,\n Pagination as APagination\n} from 'ant-design-vue'\nimport { debounce } from 'lodash-es'\nimport {\n INDICATOR_URL,\n REQUEST,\n INDICATOR_TOKEN,\n SELECTED_COMPONENT\n} from '@/utils/constant'\nexport default defineComponent({\n name: 'DataSourceList',\n components: {\n CaretRightOutlined,\n CaretDownOutlined,\n AInputSearch,\n ASpin,\n APagination\n },\n setup () {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n const selectedConfig = computed(\n () => unref(selectedComponent)?.graphicConfig\n )\n const dataSourceId = computed(() => unref(selectedConfig)?.dataSourceId)\n const dataSourceList = ref<{ [key: string]: any }[]>([])\n const dataSourceLoading = ref(false)\n // 分页数据\n const pagination = reactive({\n pageSize: 20,\n currentPage: 1,\n totalResult: 0\n })\n const searchText = ref('')\n const handleDataSourceList = async () => {\n dataSourceLoading.value = true\n const params = {\n source: 'INDICATOR_LIB',\n queryRequest: {\n pageSize: pagination.pageSize,\n pageNum: pagination.currentPage\n },\n indexName: unref(searchText),\n pageId: PAGE_ID,\n dataSourceId: unref(dataSourceId)\n }\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n params,\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n dataSourceLoading.value = false\n const { success, data = {} } = res.data\n if (success) {\n const { rows = [], total = 0 } = data\n rows?.forEach((row: { [key: string]: any }) => {\n row.show = false\n row.dataViewColumns?.forEach((column: { [key: string]: any }) => {\n column.show = true\n // 编辑名字\n column.edit = false\n })\n })\n dataSourceList.value = rows\n pagination.totalResult = +total\n }\n } catch (error) {\n dataSourceLoading.value = false\n }\n }\n\n const mapScope = (scope: 'DIM' | 'IDX') => {\n const map = {\n DIM: '维度',\n IDX: '指标'\n }\n return map[scope]\n }\n\n const onToggleGroup = (index: number) => {\n dataSourceList.value[index].show = !dataSourceList.value[index].show\n }\n const onDragstart = (\n event: DragEvent,\n dataView: { [key: string]: any }\n ) => {\n event.dataTransfer?.setData('list-item', JSON.stringify(dataView))\n }\n\n const onSearch = () => {\n pagination.currentPage = 1\n handleDataSourceList()\n }\n\n const onChange = debounce(() => {\n pagination.currentPage = 1\n handleDataSourceList()\n }, 200)\n\n const onPaginationChange = (page: number, pageSize: number) => {\n pagination.pageSize = pageSize\n pagination.currentPage = page\n handleDataSourceList()\n }\n\n onMounted(() => {\n handleDataSourceList()\n })\n\n return {\n dataSourceList,\n dataSourceLoading,\n pagination,\n onDragstart,\n onToggleGroup,\n mapScope,\n onSearch,\n onChange,\n onPaginationChange,\n searchText\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-source-list {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.columns {\n height: 100%;\n overflow: auto;\n flex: 1;\n padding-top: 10px;\n}\n\n.column-item {\n display: flow-root;\n margin: 3px 0;\n padding: 2px 0;\n}\n\n.column-child-item {\n padding: 3px 10px;\n}\n</style>\n","<template>\n <data-view-list v-if=\"source === 'SQL_VIEW'\" />\n <data-source-list v-if=\"source === 'INDICATOR_LIB'\" />\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject } from 'vue'\nimport DataViewList from './DataViewList.vue'\nimport DataSourceList from './DataSourceList.vue'\nimport { SOURCE_TYPE } from '@/utils/constant'\nexport default defineComponent({\n name: 'DataList',\n components: {\n DataSourceList,\n DataViewList\n },\n setup () {\n const source = inject(SOURCE_TYPE)\n return {\n source\n }\n }\n})\n</script>\n\n<style scoped></style>\n","<template>\n <data-view-list v-if=\"source === 'SQL_VIEW'\" />\n <data-source-list v-if=\"source === 'INDICATOR_LIB'\" />\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject } from 'vue'\nimport DataViewList from './DataViewList.vue'\nimport DataSourceList from './DataSourceList.vue'\nimport { SOURCE_TYPE } from '@/utils/constant'\nexport default defineComponent({\n name: 'DataList',\n components: {\n DataSourceList,\n DataViewList\n },\n setup () {\n const source = inject(SOURCE_TYPE)\n return {\n source\n }\n }\n})\n</script>\n\n<style scoped></style>\n","export default {\n mounted (el: HTMLElement) {\n // 自动聚焦\n el.focus()\n }\n}\n","<template>\n <a-modal\n title=\"进行拖拽排序\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n @cancel=\"onCancel\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n padding: '10px 24px'\n }\"\n :footer=\"null\"\n >\n <div class=\"button-wrapper\">\n <a-button danger @click=\"onDeleteConfig\">\n 删除配置\n </a-button>\n </div>\n <draggable\n v-model=\"customSortList\"\n class=\"custom-sort-list\"\n item-key=\"id\"\n :put=\"false\"\n @change=\"onChange\"\n >\n <template #item=\"{element}\">\n <div class=\"sort-item\">\n {{ element }}\n </div>\n </template>\n </draggable>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, watch, inject } from 'vue'\nimport {\n Modal as AModal,\n Button as AButton\n} from 'ant-design-vue'\nimport Draggable from 'vuedraggable'\nimport { REQUEST, INDICATOR_TOKEN, INDICATOR_URL, GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nexport default defineComponent({\n name: 'CustomSortModal',\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n Draggable,\n AModal,\n AButton\n },\n setup (props, { expose }) {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as Function\n const source = computed(() => unref(graphicConfig).source)\n const dataViewId = computed(() => unref(graphicConfig).dataViewId)\n const customSortList = ref([])\n const handleCustomSortList = async () => {\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/groupvalue`, {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: props.item.name,\n hrpIndexTypeGuid: props.item.id,\n pageId: PAGE_ID,\n pageFlag: true\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n customSortList.value = data?.slice(0, 200)\n }\n } catch (e) {\n console.error(e)\n }\n }\n const updateCustomSortList = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n const item = list[props.index]\n const { label, name } = props.item\n // 自定义排序\n item.sort = {\n label,\n columnName: name,\n type: 'CUSTOM',\n customOrderColumns: unref(customSortList)\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n // 数据是否改变\n let isDataChange = false\n const onChange = () => {\n isDataChange = true\n }\n const visible = ref(false)\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const onCancel = () => {\n // 改变才更新\n if (isDataChange) updateCustomSortList()\n isDataChange = false\n // 隐藏弹窗\n hideModal()\n }\n expose({\n showModal\n })\n // 弹窗数据初始化\n watch(visible, (visible) => {\n if (visible) {\n const customOrderColumns = props.item?.sort?.customOrderColumns\n if (customOrderColumns == null) {\n handleCustomSortList()\n } else {\n customSortList.value = customOrderColumns\n }\n } else {\n // 关闭时清空数据\n customSortList.value = []\n }\n }, {\n flush: 'post'\n })\n\n const onDeleteConfig = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n const item = list[props.index]\n const { label, name } = props.item\n // 自定义排序\n item.sort = {\n label,\n columnName: name\n }\n updateGraphicConfig({\n [props.type]: list\n })\n hideModal()\n }\n\n return {\n visible,\n onCancel,\n customSortList,\n onChange,\n onDeleteConfig\n }\n }\n})\n</script>\n<style scoped lang=\"less\">\n.button-wrapper {\n width: 100%;\n display: flex;\n justify-content: flex-end;\n margin-bottom: 10px;\n}\n\n.custom-sort-list {\n width: 100%;\n overflow: auto;\n height: 70vh;\n list-style: none;\n padding-bottom: 60px;\n}\n\n.sort-item {\n border: 1px dashed #aaa;\n margin-bottom: 5px;\n padding: 5px;\n font-size: 14px;\n}\n</style>\n","<template>\n <a-modal\n title=\"进行拖拽排序\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n @cancel=\"onCancel\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n padding: '10px 24px'\n }\"\n :footer=\"null\"\n >\n <div class=\"button-wrapper\">\n <a-button danger @click=\"onDeleteConfig\">\n 删除配置\n </a-button>\n </div>\n <draggable\n v-model=\"customSortList\"\n class=\"custom-sort-list\"\n item-key=\"id\"\n :put=\"false\"\n @change=\"onChange\"\n >\n <template #item=\"{element}\">\n <div class=\"sort-item\">\n {{ element }}\n </div>\n </template>\n </draggable>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, watch, inject } from 'vue'\nimport {\n Modal as AModal,\n Button as AButton\n} from 'ant-design-vue'\nimport Draggable from 'vuedraggable'\nimport { REQUEST, INDICATOR_TOKEN, INDICATOR_URL, GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nexport default defineComponent({\n name: 'CustomSortModal',\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n Draggable,\n AModal,\n AButton\n },\n setup (props, { expose }) {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as Function\n const source = computed(() => unref(graphicConfig).source)\n const dataViewId = computed(() => unref(graphicConfig).dataViewId)\n const customSortList = ref([])\n const handleCustomSortList = async () => {\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/groupvalue`, {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: props.item.name,\n hrpIndexTypeGuid: props.item.id,\n pageId: PAGE_ID,\n pageFlag: true\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n customSortList.value = data?.slice(0, 200)\n }\n } catch (e) {\n console.error(e)\n }\n }\n const updateCustomSortList = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n const item = list[props.index]\n const { label, name } = props.item\n // 自定义排序\n item.sort = {\n label,\n columnName: name,\n type: 'CUSTOM',\n customOrderColumns: unref(customSortList)\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n // 数据是否改变\n let isDataChange = false\n const onChange = () => {\n isDataChange = true\n }\n const visible = ref(false)\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const onCancel = () => {\n // 改变才更新\n if (isDataChange) updateCustomSortList()\n isDataChange = false\n // 隐藏弹窗\n hideModal()\n }\n expose({\n showModal\n })\n // 弹窗数据初始化\n watch(visible, (visible) => {\n if (visible) {\n const customOrderColumns = props.item?.sort?.customOrderColumns\n if (customOrderColumns == null) {\n handleCustomSortList()\n } else {\n customSortList.value = customOrderColumns\n }\n } else {\n // 关闭时清空数据\n customSortList.value = []\n }\n }, {\n flush: 'post'\n })\n\n const onDeleteConfig = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n const item = list[props.index]\n const { label, name } = props.item\n // 自定义排序\n item.sort = {\n label,\n columnName: name\n }\n updateGraphicConfig({\n [props.type]: list\n })\n hideModal()\n }\n\n return {\n visible,\n onCancel,\n customSortList,\n onChange,\n onDeleteConfig\n }\n }\n})\n</script>\n<style scoped lang=\"less\">\n.button-wrapper {\n width: 100%;\n display: flex;\n justify-content: flex-end;\n margin-bottom: 10px;\n}\n\n.custom-sort-list {\n width: 100%;\n overflow: auto;\n height: 70vh;\n list-style: none;\n padding-bottom: 60px;\n}\n\n.sort-item {\n border: 1px dashed #aaa;\n margin-bottom: 5px;\n padding: 5px;\n font-size: 14px;\n}\n</style>\n","<template>\n <a-modal\n :title=\"title\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column'\n }\"\n :footer=\"null\"\n @cancel=\"onCancel\"\n >\n <div class=\"custom-group-header\">\n <div class=\"move-and-create\">\n <div>\n <span class=\"select-tip\">\n 已选<span class=\"select-count\">{{ selectCount }}</span\n >个\n </span>\n <a-select\n v-model:value=\"selectGroupIndex\"\n class=\"select-group\"\n placeholder=\"请选择移入分组\"\n >\n <a-select-option\n v-for=\"(customGroup, index) in customGroupList\"\n :key=\"index\"\n >\n {{ customGroup.title }}\n </a-select-option>\n </a-select>\n <a-button @click=\"onMoveInGroup\">移入分组</a-button>\n </div>\n <div class=\"create-group\">\n 创建分组:\n <a-input\n class=\"create-group-name\"\n v-model:value=\"createGroupTitle\"\n placeholder=\"请输入创建分组名\"\n @pressEnter=\"onAddGroup\"\n />\n </div>\n </div>\n <div>\n <a-checkbox\n v-model:checked=\"useOtherGroup\"\n @change=\"onUseOtherGroup\"\n >\n 将未分组设为其他分组\n </a-checkbox>\n </div>\n </div>\n <div class=\"custom-group-content\">\n <a-collapse\n v-model:activeKey=\"activeKey\"\n ghost\n >\n <a-collapse-panel\n v-for=\"(customGroup, index) in customGroupList\"\n :key=\"index\"\n >\n <template #header>\n <div\n @click.prevent.stop=\"onEditTitle(index)\"\n v-if=\"!customGroupEditTitleList[index]\"\n >\n {{ customGroup.title }}\n </div>\n <a-input\n class=\"edit-title-input\"\n :value=\"customGroup.title\"\n size=\"small\"\n v-focus\n v-else\n @change=\"onTitleChange($event, index)\"\n @blur=\"onFinishEditTitle(index)\"\n @pressEnter=\"onFinishEditTitle(index)\"\n />\n </template>\n <template #extra>\n <div class=\"extra\">\n <template v-if=\"index === 0 && useOtherGroup\">\n <a-tag\n class=\"tag\"\n color=\"blue\"\n >\n 其他组\n </a-tag>\n </template>\n <template v-if=\"index !== 0\">\n <a-tag\n class=\"tag\"\n color=\"green\"\n >\n 自定义组\n </a-tag>\n <close-outlined @click.prevent.stop=\"onDeleteGroup(index)\" />\n </template>\n </div>\n </template>\n <div class=\"custom-group-list\">\n <a-checkable-tag\n color=\"red\"\n v-model:checked=\"item.checked\"\n class=\"custom-group\"\n v-for=\"(item, i) in customGroup.data\"\n :key=\"i\"\n >\n <span class=\"text\">{{ item.label }}</span>\n </a-checkable-tag>\n </div>\n </a-collapse-panel>\n </a-collapse>\n </div>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, watch, inject } from 'vue'\nimport {\n REQUEST,\n INDICATOR_TOKEN,\n INDICATOR_URL,\n GRAPHIC_CONFIG,\n UPDATE_GRAPHIC_CONFIG\n} from '@/utils/constant'\nimport { CloseOutlined } from '@ant-design/icons-vue'\nimport {\n Modal as AModal,\n Select as ASelect,\n SelectOption as ASelectOption,\n Button as AButton,\n Input as AInput,\n Checkbox as ACheckbox,\n Collapse as ACollapse,\n CollapsePanel as ACollapsePanel,\n Tag as ATag,\n CheckableTag as ACheckableTag,\n message\n} from 'ant-design-vue'\nimport focus from '@/directives/focus'\nexport default defineComponent({\n name: 'CustomGroupModal',\n directives: {\n focus\n },\n components: {\n CloseOutlined,\n AModal,\n ASelect,\n ASelectOption,\n AButton,\n AInput,\n ACheckbox,\n ACollapse,\n ACollapsePanel,\n ATag,\n ACheckableTag\n },\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n setup (props, { expose }) {\n const request = inject(REQUEST) as any\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n let isDataChange = false\n const title = computed(() => `自定义分组-${props.item.label}`)\n const createGroupTitle = ref<string | null>(null)\n const activeKey = ref([])\n interface CustomGroup {\n title: string\n data: {\n label: string\n checked: boolean\n }[]\n }\n const customGroupList = ref<CustomGroup[]>([])\n const customGroupTitleSet = computed(() => {\n const customGroupTitleList = unref(customGroupList).map(\n (item) => item.title\n )\n return new Set(customGroupTitleList)\n })\n const customGroupEditTitleList = ref<boolean[]>([])\n watch(\n () => unref(customGroupList).length,\n (length: number) => {\n customGroupEditTitleList.value = new Array(length).fill(false)\n }\n )\n const selectCount = computed(() => {\n let count = 0\n unref(customGroupList).forEach((customGroup) => {\n customGroup.data?.forEach((item) => {\n if (item.checked) {\n count++\n }\n })\n })\n return count\n })\n const onAddGroup = () => {\n const title = unref(createGroupTitle)\n if (!title) {\n message.error('创建分组名不能空')\n return\n }\n if (!unref(customGroupTitleSet).has(title)) {\n unref(customGroupList).push({\n title,\n data: []\n })\n isDataChange = true\n } else {\n message.error('分组名已存在,请重新命名')\n }\n }\n const onDeleteGroup = (index: number) => {\n unref(customGroupList).splice(index, 1)\n isDataChange = true\n }\n const selectGroupIndex = ref<number | null>(null)\n const onMoveInGroup = () => {\n if (unref(selectCount) === 0) {\n message.error('当前移入分组已选个数为0')\n return\n }\n const index = unref(selectGroupIndex)\n if (index == null) {\n message.error('请选择移入分组')\n return\n }\n if (!unref(customGroupList)[index]) {\n message.error('移入分组不存在,请重新选择')\n return\n }\n const selectList: { label: string; checked: boolean }[] = []\n const len = unref(customGroupList).length\n for (let i = 0; i < len; i++) {\n const customGroup = unref(customGroupList)[i]\n unref(customGroupList)[i].data = customGroup.data.filter((item) => {\n if (item.checked) {\n selectList.push({\n ...item,\n checked: false\n })\n }\n return !item.checked\n })\n }\n unref(customGroupList)[index].data = [\n ...selectList,\n ...unref(customGroupList)[index].data\n ]\n isDataChange = true\n }\n const onEditTitle = (index: number) => {\n unref(customGroupEditTitleList)[index] = true\n }\n const onFinishEditTitle = (index: number) => {\n unref(customGroupEditTitleList)[index] = false\n }\n const onTitleChange = (event: Event, index: number) => {\n const value = (event.target as any).value\n if (unref(customGroupTitleSet).has(value)) {\n message.error('组名不能相同,请修改')\n }\n unref(customGroupList)[index].title = value\n isDataChange = true\n }\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const source = computed(() => unref(graphicConfig).source)\n const dataViewId = computed(() => unref(graphicConfig).dataViewId)\n const useOtherGroup = ref(false)\n const updateCustomGroup = () => {\n const customGroups = unref(customGroupList)\n let otherGroupName = ''\n if (unref(useOtherGroup)) {\n otherGroupName = customGroups[0]?.title\n }\n const len = customGroups?.length\n const groupInfoMap: { [key: string]: any } = {}\n for (let i = 1; i < len; i++) {\n const customGroup = customGroups[i] || {}\n const { title, data } = customGroup as any\n groupInfoMap[title] = data?.map((item) => item.label) || []\n }\n const list = unref(graphicConfig)[props.type]?.slice() || []\n const item = list[props.index]\n // 更新其他组名称\n item.customGroup = {\n groupInfoMap,\n otherGroupName\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const visible = ref(false)\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const onCancel = () => {\n // 隐藏弹窗\n hideModal()\n // 更新数据\n if (isDataChange) updateCustomGroup()\n isDataChange = false\n }\n const onUseOtherGroup = () => {\n isDataChange = true\n }\n const allLabelSet = new Set()\n const handleInitData = async () => {\n const customGroup = props.item.customGroup || {}\n const otherGroupName = customGroup.otherGroupName\n const groupInfoMap = customGroup.groupInfoMap\n if (otherGroupName === '' || otherGroupName == null) {\n useOtherGroup.value = false\n }\n unref(customGroupList)[0] = {\n title: otherGroupName || '未分组',\n data: []\n }\n let i = 1\n for (const key in groupInfoMap) {\n if (Object.prototype.hasOwnProperty.call(groupInfoMap, key)) {\n const values = groupInfoMap[key] as string[]\n const data = values.map((item) => {\n allLabelSet.add(item)\n return {\n label: item,\n checked: false\n }\n })\n // 其他项\n unref(customGroupList)[i] = {\n title: key as string,\n data\n }\n i++\n }\n }\n await handleCustomGroupList() // 处理 customGroupList\n }\n const handleCustomGroupList = async () => {\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/groupvalue`,\n {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: props.item.name,\n hrpIndexTypeGuid: props.item.id,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n const { success, data = [] } = res.data\n if (success) {\n // 截取200\n const rows: { label: string; checked: boolean }[] = []\n data?.slice(0, 200)?.forEach((item: string) => {\n if (!allLabelSet.has(item)) {\n rows.push({\n label: item,\n checked: false\n })\n }\n })\n unref(customGroupList)[0].data = rows\n }\n } catch (e) {\n console.error(e)\n }\n }\n\n watch(\n visible,\n (visible) => {\n if (visible) {\n handleInitData()\n }\n },\n {\n flush: 'post'\n }\n )\n\n expose({\n showModal\n })\n return {\n visible,\n title,\n activeKey,\n customGroupList,\n onCancel,\n useOtherGroup,\n selectCount,\n createGroupTitle,\n onAddGroup,\n onDeleteGroup,\n onMoveInGroup,\n selectGroupIndex,\n onEditTitle,\n onTitleChange,\n onFinishEditTitle,\n onUseOtherGroup,\n customGroupEditTitleList\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.move-and-create {\n display: flex;\n justify-content: space-between;\n margin-bottom: 15px;\n}\n\n.create-group {\n display: flex;\n align-items: center;\n font-size: 15px;\n}\n\n.create-group-name {\n width: 140px;\n margin-left: 10px;\n}\n\n.custom-group-content {\n overflow-y: auto;\n}\n\n.tag {\n margin-right: 10px;\n}\n\n.edit-title-input {\n width: 150px;\n}\n\n.extra {\n width: 90px;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n\n.custom-group {\n margin: 5px;\n padding: 3px 5px;\n}\n\n.text {\n font-size: 14px;\n}\n\n.select-tip {\n margin-right: 10px;\n font-size: 15px;\n}\n\n.select-count {\n color: red;\n margin: 0 3px;\n}\n\n.select-group {\n margin-right: 15px;\n width: 140px;\n}\n\n.cancel-button {\n margin-right: 20px;\n}\n\n.footer {\n display: flex;\n}\n</style>\n\n<style lang=\"less\">\n.custom-group-content {\n .ant-collapse > .ant-collapse-item > .ant-collapse-header {\n padding: 12px 0;\n }\n}\n</style>\n","<template>\n <a-modal\n :title=\"title\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column'\n }\"\n :footer=\"null\"\n @cancel=\"onCancel\"\n >\n <div class=\"custom-group-header\">\n <div class=\"move-and-create\">\n <div>\n <span class=\"select-tip\">\n 已选<span class=\"select-count\">{{ selectCount }}</span\n >个\n </span>\n <a-select\n v-model:value=\"selectGroupIndex\"\n class=\"select-group\"\n placeholder=\"请选择移入分组\"\n >\n <a-select-option\n v-for=\"(customGroup, index) in customGroupList\"\n :key=\"index\"\n >\n {{ customGroup.title }}\n </a-select-option>\n </a-select>\n <a-button @click=\"onMoveInGroup\">移入分组</a-button>\n </div>\n <div class=\"create-group\">\n 创建分组:\n <a-input\n class=\"create-group-name\"\n v-model:value=\"createGroupTitle\"\n placeholder=\"请输入创建分组名\"\n @pressEnter=\"onAddGroup\"\n />\n </div>\n </div>\n <div>\n <a-checkbox\n v-model:checked=\"useOtherGroup\"\n @change=\"onUseOtherGroup\"\n >\n 将未分组设为其他分组\n </a-checkbox>\n </div>\n </div>\n <div class=\"custom-group-content\">\n <a-collapse\n v-model:activeKey=\"activeKey\"\n ghost\n >\n <a-collapse-panel\n v-for=\"(customGroup, index) in customGroupList\"\n :key=\"index\"\n >\n <template #header>\n <div\n @click.prevent.stop=\"onEditTitle(index)\"\n v-if=\"!customGroupEditTitleList[index]\"\n >\n {{ customGroup.title }}\n </div>\n <a-input\n class=\"edit-title-input\"\n :value=\"customGroup.title\"\n size=\"small\"\n v-focus\n v-else\n @change=\"onTitleChange($event, index)\"\n @blur=\"onFinishEditTitle(index)\"\n @pressEnter=\"onFinishEditTitle(index)\"\n />\n </template>\n <template #extra>\n <div class=\"extra\">\n <template v-if=\"index === 0 && useOtherGroup\">\n <a-tag\n class=\"tag\"\n color=\"blue\"\n >\n 其他组\n </a-tag>\n </template>\n <template v-if=\"index !== 0\">\n <a-tag\n class=\"tag\"\n color=\"green\"\n >\n 自定义组\n </a-tag>\n <close-outlined @click.prevent.stop=\"onDeleteGroup(index)\" />\n </template>\n </div>\n </template>\n <div class=\"custom-group-list\">\n <a-checkable-tag\n color=\"red\"\n v-model:checked=\"item.checked\"\n class=\"custom-group\"\n v-for=\"(item, i) in customGroup.data\"\n :key=\"i\"\n >\n <span class=\"text\">{{ item.label }}</span>\n </a-checkable-tag>\n </div>\n </a-collapse-panel>\n </a-collapse>\n </div>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, watch, inject } from 'vue'\nimport {\n REQUEST,\n INDICATOR_TOKEN,\n INDICATOR_URL,\n GRAPHIC_CONFIG,\n UPDATE_GRAPHIC_CONFIG\n} from '@/utils/constant'\nimport { CloseOutlined } from '@ant-design/icons-vue'\nimport {\n Modal as AModal,\n Select as ASelect,\n SelectOption as ASelectOption,\n Button as AButton,\n Input as AInput,\n Checkbox as ACheckbox,\n Collapse as ACollapse,\n CollapsePanel as ACollapsePanel,\n Tag as ATag,\n CheckableTag as ACheckableTag,\n message\n} from 'ant-design-vue'\nimport focus from '@/directives/focus'\nexport default defineComponent({\n name: 'CustomGroupModal',\n directives: {\n focus\n },\n components: {\n CloseOutlined,\n AModal,\n ASelect,\n ASelectOption,\n AButton,\n AInput,\n ACheckbox,\n ACollapse,\n ACollapsePanel,\n ATag,\n ACheckableTag\n },\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n setup (props, { expose }) {\n const request = inject(REQUEST) as any\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n let isDataChange = false\n const title = computed(() => `自定义分组-${props.item.label}`)\n const createGroupTitle = ref<string | null>(null)\n const activeKey = ref([])\n interface CustomGroup {\n title: string\n data: {\n label: string\n checked: boolean\n }[]\n }\n const customGroupList = ref<CustomGroup[]>([])\n const customGroupTitleSet = computed(() => {\n const customGroupTitleList = unref(customGroupList).map(\n (item) => item.title\n )\n return new Set(customGroupTitleList)\n })\n const customGroupEditTitleList = ref<boolean[]>([])\n watch(\n () => unref(customGroupList).length,\n (length: number) => {\n customGroupEditTitleList.value = new Array(length).fill(false)\n }\n )\n const selectCount = computed(() => {\n let count = 0\n unref(customGroupList).forEach((customGroup) => {\n customGroup.data?.forEach((item) => {\n if (item.checked) {\n count++\n }\n })\n })\n return count\n })\n const onAddGroup = () => {\n const title = unref(createGroupTitle)\n if (!title) {\n message.error('创建分组名不能空')\n return\n }\n if (!unref(customGroupTitleSet).has(title)) {\n unref(customGroupList).push({\n title,\n data: []\n })\n isDataChange = true\n } else {\n message.error('分组名已存在,请重新命名')\n }\n }\n const onDeleteGroup = (index: number) => {\n unref(customGroupList).splice(index, 1)\n isDataChange = true\n }\n const selectGroupIndex = ref<number | null>(null)\n const onMoveInGroup = () => {\n if (unref(selectCount) === 0) {\n message.error('当前移入分组已选个数为0')\n return\n }\n const index = unref(selectGroupIndex)\n if (index == null) {\n message.error('请选择移入分组')\n return\n }\n if (!unref(customGroupList)[index]) {\n message.error('移入分组不存在,请重新选择')\n return\n }\n const selectList: { label: string; checked: boolean }[] = []\n const len = unref(customGroupList).length\n for (let i = 0; i < len; i++) {\n const customGroup = unref(customGroupList)[i]\n unref(customGroupList)[i].data = customGroup.data.filter((item) => {\n if (item.checked) {\n selectList.push({\n ...item,\n checked: false\n })\n }\n return !item.checked\n })\n }\n unref(customGroupList)[index].data = [\n ...selectList,\n ...unref(customGroupList)[index].data\n ]\n isDataChange = true\n }\n const onEditTitle = (index: number) => {\n unref(customGroupEditTitleList)[index] = true\n }\n const onFinishEditTitle = (index: number) => {\n unref(customGroupEditTitleList)[index] = false\n }\n const onTitleChange = (event: Event, index: number) => {\n const value = (event.target as any).value\n if (unref(customGroupTitleSet).has(value)) {\n message.error('组名不能相同,请修改')\n }\n unref(customGroupList)[index].title = value\n isDataChange = true\n }\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const source = computed(() => unref(graphicConfig).source)\n const dataViewId = computed(() => unref(graphicConfig).dataViewId)\n const useOtherGroup = ref(false)\n const updateCustomGroup = () => {\n const customGroups = unref(customGroupList)\n let otherGroupName = ''\n if (unref(useOtherGroup)) {\n otherGroupName = customGroups[0]?.title\n }\n const len = customGroups?.length\n const groupInfoMap: { [key: string]: any } = {}\n for (let i = 1; i < len; i++) {\n const customGroup = customGroups[i] || {}\n const { title, data } = customGroup as any\n groupInfoMap[title] = data?.map((item) => item.label) || []\n }\n const list = unref(graphicConfig)[props.type]?.slice() || []\n const item = list[props.index]\n // 更新其他组名称\n item.customGroup = {\n groupInfoMap,\n otherGroupName\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const visible = ref(false)\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const onCancel = () => {\n // 隐藏弹窗\n hideModal()\n // 更新数据\n if (isDataChange) updateCustomGroup()\n isDataChange = false\n }\n const onUseOtherGroup = () => {\n isDataChange = true\n }\n const allLabelSet = new Set()\n const handleInitData = async () => {\n const customGroup = props.item.customGroup || {}\n const otherGroupName = customGroup.otherGroupName\n const groupInfoMap = customGroup.groupInfoMap\n if (otherGroupName === '' || otherGroupName == null) {\n useOtherGroup.value = false\n }\n unref(customGroupList)[0] = {\n title: otherGroupName || '未分组',\n data: []\n }\n let i = 1\n for (const key in groupInfoMap) {\n if (Object.prototype.hasOwnProperty.call(groupInfoMap, key)) {\n const values = groupInfoMap[key] as string[]\n const data = values.map((item) => {\n allLabelSet.add(item)\n return {\n label: item,\n checked: false\n }\n })\n // 其他项\n unref(customGroupList)[i] = {\n title: key as string,\n data\n }\n i++\n }\n }\n await handleCustomGroupList() // 处理 customGroupList\n }\n const handleCustomGroupList = async () => {\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/groupvalue`,\n {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: props.item.name,\n hrpIndexTypeGuid: props.item.id,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n const { success, data = [] } = res.data\n if (success) {\n // 截取200\n const rows: { label: string; checked: boolean }[] = []\n data?.slice(0, 200)?.forEach((item: string) => {\n if (!allLabelSet.has(item)) {\n rows.push({\n label: item,\n checked: false\n })\n }\n })\n unref(customGroupList)[0].data = rows\n }\n } catch (e) {\n console.error(e)\n }\n }\n\n watch(\n visible,\n (visible) => {\n if (visible) {\n handleInitData()\n }\n },\n {\n flush: 'post'\n }\n )\n\n expose({\n showModal\n })\n return {\n visible,\n title,\n activeKey,\n customGroupList,\n onCancel,\n useOtherGroup,\n selectCount,\n createGroupTitle,\n onAddGroup,\n onDeleteGroup,\n onMoveInGroup,\n selectGroupIndex,\n onEditTitle,\n onTitleChange,\n onFinishEditTitle,\n onUseOtherGroup,\n customGroupEditTitleList\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.move-and-create {\n display: flex;\n justify-content: space-between;\n margin-bottom: 15px;\n}\n\n.create-group {\n display: flex;\n align-items: center;\n font-size: 15px;\n}\n\n.create-group-name {\n width: 140px;\n margin-left: 10px;\n}\n\n.custom-group-content {\n overflow-y: auto;\n}\n\n.tag {\n margin-right: 10px;\n}\n\n.edit-title-input {\n width: 150px;\n}\n\n.extra {\n width: 90px;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n\n.custom-group {\n margin: 5px;\n padding: 3px 5px;\n}\n\n.text {\n font-size: 14px;\n}\n\n.select-tip {\n margin-right: 10px;\n font-size: 15px;\n}\n\n.select-count {\n color: red;\n margin: 0 3px;\n}\n\n.select-group {\n margin-right: 15px;\n width: 140px;\n}\n\n.cancel-button {\n margin-right: 20px;\n}\n\n.footer {\n display: flex;\n}\n</style>\n\n<style lang=\"less\">\n.custom-group-content {\n .ant-collapse > .ant-collapse-item > .ant-collapse-header {\n padding: 12px 0;\n }\n}\n</style>\n","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_quarterOfYear=n()}(this,(function(){\"use strict\";var t=\"month\",n=\"quarter\";return function(e,i){var r=i.prototype;r.quarter=function(t){return this.$utils().u(t)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(t-1))};var s=r.add;r.add=function(e,i){return e=Number(e),this.$utils().p(i)===n?this.add(3*e,t):s.bind(this)(e,i)};var u=r.startOf;r.startOf=function(e,i){var r=this.$utils(),s=!!r.u(i)||i;if(r.p(e)===n){var o=this.quarter()-1;return s?this.month(3*o).startOf(t).startOf(\"day\"):this.month(3*o+2).endOf(t).endOf(\"day\")}return u.bind(this)(e,i)}}}));","<template>\n <div class=\"condition\">\n <a-select\n class=\"field-name\"\n :value=\"condition.fieldName\"\n :options=\"fieldOptions\"\n :field-names=\"{ value: 'name' }\"\n @change=\"onFieldChange\"\n >\n </a-select>\n <div class=\"rule\">\n <a-dropdown class=\"dropdown\" v-if=\"isDateType\" :trigger=\"['click']\">\n <template #overlay>\n <a-menu @click=\"handleMenuClick\">\n <a-sub-menu\n v-for=\"item in ruleOptions\"\n :key=\"item.value\">\n <template #title>\n <span :style=\"condition.rule === item.value ? 'color: #1890FF;' : ''\">{{ item.label }}</span>\n </template>\n <a-sub-menu\n v-for=\"mr in menuRule\"\n :key=\"mr.value\"\n :disabled=\"mr.value === 'component' && !controlList?.length\">\n <template #title>\n <span :style=\"condition.rule === item.value && condition.dataType === mr.value ? 'color: #1890FF;' : ''\">\n {{ mr.label }}\n </span>\n </template>\n <a-menu-item\n v-for=\"fl in formatList\"\n :key=\"fl.value\">\n <span :style=\"condition.rule === item.value && condition.dataType === mr.value && condition.dateFormat === fl.value ? 'color: #1890FF;' : ''\">\n {{ fl.label }}\n </span>\n </a-menu-item>\n </a-sub-menu>\n </a-sub-menu>\n </a-menu>\n </template>\n <a-button>\n {{ dateBtnLabel }}\n <DownOutlined :style=\"downIconStyle\"/>\n </a-button>\n </a-dropdown>\n <a-select\n v-else\n style=\"width: 100%;\"\n :value=\"condition.rule\"\n :options=\"ruleOptions\"\n @change=\"onRuleChange\"\n >\n </a-select>\n </div>\n <div class=\"field-value\" v-if=\"isDateType\" style=\"display: flex;align-items: center;\">\n <a-date-picker\n v-if=\"condition.dataType === 'time'\"\n style=\"width: calc(100% - 35px);margin-right: 10px;\"\n v-model:value=\"condition.fieldValue\"\n :format=\"condition.dateFormat\"\n />\n <a-select\n v-else-if=\"typeof condition.fieldValue === 'string'\"\n style=\"width: calc(100% - 35px);margin-right: 10px;\"\n v-model:value=\"condition.fieldValue\"\n :fieldNames=\"{\n label: 'keyName',\n value: 'keyName'\n }\"\n :options=\"controlList\"\n >\n </a-select>\n <a-popover v-model:visible=\"popoverVisible\" trigger=\"click\" placement=\"bottomRight\">\n <template #content>\n <div class=\"popover-content-wrap\">\n <a-tabs :defaultActiveKey=\"condition.activeKey\" @change=\"changeTabInitDate\">\n <a-tab-pane v-for=\"(tabItem, tabIndex) in tabDateList\" :key=\"tabIndex\" :tab=\"tabItem.label\">\n <div class=\"tabFilterRadio\">\n <a-radio-group v-model:value=\"tabItem.radioValue\" @change=\"changeRadioValue($event,tabItem)\">\n <div v-if=\"showTime\">相对当前时间:{{tabItem.value}}</div>\n <div v-else>相对当前时间:{{getFieldValue(tabIndex)}}</div>\n <a-radio :style=\"dateRadioStyle\" value=\"1\">\n <a-input-number v-model:value=\"tabItem.beforeNum\" :min=\"0\" @blur=\"blurCompare($event, tabItem,'-','1')\" />\n <span style=\"margin-left: 10px;\">{{tabItem.beforeLabel}}</span>\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"2\">\n <a-input-number v-model:value=\"tabItem.afterNum\" :min=\"0\" @blur=\"blurCompare($event, tabItem,'+','2')\" />\n <span style=\"margin-left: 10px;\">{{tabItem.afterLabel}}</span>\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"3\" v-if=\"tabItem.beforeText\">\n {{tabItem.beforeText}}\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"4\" v-if=\"tabItem.afterText\">\n {{tabItem.afterText}}\n </a-radio>\n </a-radio-group>\n <div style=\"position: absolute;bottom: 10px;\">\n <a-button style=\"margin-right:12px;\" @click=\"popoverVisible = false\">取消</a-button>\n <a-button @click=\"okDatePickConfig(tabItem,tabIndex)\">确定</a-button>\n </div>\n </div>\n </a-tab-pane>\n </a-tabs>\n </div>\n </template>\n <div class=\"calendar-wrap\" @click=\"popoverVisible = true;\">\n <appstore-add-outlined />\n </div>\n </a-popover>\n </div>\n <a-select\n class=\"field-value\"\n v-else-if=\"['IN', 'NOT_IN'].includes(condition.rule || '')\"\n :value=\"fieldValues\"\n mode=\"multiple\"\n :options=\"valueOptions\"\n @change=\"onFieldValueSelectChange\"\n >\n </a-select>\n <a-input\n v-else\n class=\"field-value\"\n v-model:value=\"condition.fieldValue\"\n />\n <close-outlined class=\"delete-icon\" @click=\"onDelete\" />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, unref, ref, watch, onMounted } from 'vue'\nimport { CloseOutlined, DownOutlined, AppstoreAddOutlined } from '@ant-design/icons-vue'\nimport {\n Select as ASelect,\n Input as AInput,\n DatePicker as ADatePicker,\n Button as AButton,\n Dropdown as ADropdown,\n Menu as AMenu,\n MenuItem as AMenuItem,\n SubMenu as ASubMenu,\n Popover as APopover,\n Tabs as ATabs,\n TabPane as ATabPane,\n RadioGroup as ARadioGroup,\n Radio as ARadio,\n InputNumber as AInputNumber\n} from 'ant-design-vue'\nimport 'ant-design-vue/es/popover/style'\nimport 'ant-design-vue/es/dropdown/style'\nimport { REQUEST, INDICATOR_TOKEN, INDICATOR_URL, DATA_LIST, GRAPHIC_CONFIG, CHANGE_CONDITION } from '@/utils/constant'\nimport dayjs, { Dayjs } from 'dayjs'\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear'\nimport { cloneDeep } from 'lodash-es'\ndayjs.extend(quarterOfYear)\nexport default defineComponent({\n name: 'Condition',\n components: {\n CloseOutlined,\n DownOutlined,\n AppstoreAddOutlined,\n ASelect,\n AInput,\n ADatePicker,\n AButton,\n ADropdown,\n AMenu,\n AMenuItem,\n ASubMenu,\n APopover,\n ATabs,\n ATabPane,\n ARadioGroup,\n ARadio,\n AInputNumber\n },\n props: {\n data: {\n type: Object,\n default: () => ({})\n },\n level: {\n type: Number,\n default: 0\n },\n index: {\n type: Number,\n default: 0\n },\n type: {\n type: String,\n default: ''\n }\n },\n setup (props) {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const controlList = computed(() => unref(graphicConfig)?.controlList)\n const dataViewId = computed(() => unref(graphicConfig)?.dataViewId)\n const source = computed(() => unref(graphicConfig)?.source)\n // const isDataViewMode = computed(() => unref(source) === 'SQL_VIEW')\n const showTime = ref(false)\n const dateRadioStyle = {\n display: 'block',\n height: '34px',\n lineHeight: '34px',\n marginTop: '3px'\n }\n const formatList = [\n { label: '年', value: 'YYYY' },\n { label: '年月', value: 'YYYY-MM' },\n { label: '年月日', value: 'YYYY-MM-DD' },\n { label: '年月日时', value: 'YYYY-MM-DD HH' },\n { label: '年月日时分', value: 'YYYY-MM-DD HH:mm' },\n { label: '年月日时分秒', value: 'YYYY-MM-DD HH:mm:ss' }\n ]\n const tabDateList = ref([\n { key: 0, value: '', label: '年', type: 'years', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '年前', afterLabel: '年后', beforeText: '年初', afterText: '年末' },\n { key: 1, value: '', label: '季度', type: 'quarters', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '个季度前', afterLabel: '个季度后', beforeText: '季度初', afterText: '季度末' },\n { key: 2, value: '', label: '月', type: 'months', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '个月前', afterLabel: '个月后', beforeText: '月初', afterText: '月末' },\n { key: 3, value: '', label: '周', type: 'weeks', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '周前', afterLabel: '周后', beforeText: '', afterText: '' },\n { key: 4, value: '', label: '天', type: 'days', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '天前', afterLabel: '天后', beforeText: '今天', afterText: '' }\n ])\n const compareList = [\n { label: '年份', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '季的季度', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '月的月份', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '周的周', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '天的日期', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' }\n ]\n const menuRule = [\n { label: '时间值', value: 'time' },\n { label: '过滤组件值', value: 'component' }\n ]\n const { getDataList } = inject(DATA_LIST, {\n getDataList: () => ([] as { key:string } [])\n })\n interface Condition {\n fieldName: undefined | string\n fieldType: undefined | string\n rule: undefined | string\n id: undefined | string\n fieldValue: undefined | string | Dayjs\n label: string\n targetSource: string\n typeGuid: string\n dateFormat?: string\n dataType?: string\n activeKey?: number\n radioValue?: string\n calcWays?: any\n dateCalcTypes?: any\n }\n const condition = ref<Condition>({\n fieldName: props.data?.fieldName,\n fieldType: props.data?.fieldType,\n rule: props.data?.rule,\n id: props.data?.id,\n fieldValue: props.data?.fieldType === 'DATE' && props.data?.dataType === 'time' ? dayjs(props.data?.fieldValue) : props.data?.fieldValue,\n label: props.data?.label,\n // 暂时传空\n targetSource: '',\n typeGuid: props.data?.typeGuid\n })\n const popoverVisible = ref(false)\n const isDateType = computed(() => condition.value.fieldType === 'DATE')\n const fieldOptions = computed(() => {\n const type = props.type\n if (['classificationList', 'seriesList', 'indicators'].includes(type)) {\n let options = [] as { key:string } []\n for (const key in unref(graphicConfig)) {\n if (Object.prototype.hasOwnProperty.call(unref(graphicConfig), key) && !['controlList', 'sqlConditions'].includes(key)) {\n const value = unref(graphicConfig)[key]\n if (Array.isArray(value)) {\n options = options.concat(value)\n }\n }\n }\n return options.map((v: any) => {\n return {\n ...v,\n label: v.title || v.label\n }\n })\n } else if (['leftAxisList', 'rightAxisList', 'queryColumnList'].includes(type)) {\n return unref(getDataList())\n }\n return []\n })\n const { updateCondition, deleteCondition } = inject(CHANGE_CONDITION, {\n // eslint-disable-next-line no-void\n updateCondition: (_condition: { [key: string]: any}, _level:number, _index: number) => void 0,\n // eslint-disable-next-line no-void\n deleteCondition: (_level:number, _index: number) => void 0\n })\n const onDelete = () => {\n deleteCondition(props.level, props.index)\n }\n watch(condition, (condition) => {\n const result = cloneDeep(condition)\n if (condition.fieldType === 'DATE' && condition.dataType !== 'component' && condition.fieldValue) {\n result.fieldValue = (condition.fieldValue as Dayjs).format(condition.dateFormat)\n }\n updateCondition(result, props.level, props.index)\n }, {\n deep: true\n })\n\n const onFieldChange = (_value: string, option: { [key:string]:any }) => {\n const { name, genericType, id, label, typeGuid } = option\n condition.value = {\n id,\n fieldName: name,\n fieldType: genericType,\n label,\n // 重置规则\n rule: undefined,\n fieldValue: genericType === 'DATE' ? null : undefined,\n targetSource: '',\n typeGuid\n }\n }\n const ruleOptions = computed(() => {\n const type = unref(condition).fieldType\n if (type === 'TEXT') {\n return [\n { label: '属于', value: 'IN' },\n { label: '不属于', value: 'NOT_IN' },\n { label: '包含', value: 'LIKE' },\n { label: '不包含', value: 'NOT_LIKE' },\n { label: '开头是', value: 'LIKE%' },\n { label: '结尾是', value: '%LIKE' },\n { label: '前N个', value: 'TOP' },\n { label: '后N个', value: 'BOTTOM' }\n ]\n } else if (type === 'NUMBER') {\n return [\n { label: '小于', value: 'LESS' },\n { label: '小于等于', value: 'LESS_EQUAL' },\n { label: '大于', value: 'GREATER' },\n { label: '大于等于', value: 'GREATER_EQUAL' },\n { label: '等于', value: 'EQUAL' },\n { label: '不等于', value: 'NOT_EQUAL' },\n { label: '前N个', value: 'TOP' },\n { label: '后N个', value: 'BOTTOM' }\n ]\n } else if (type === 'DATE') {\n return [\n { label: '属于', value: 'IN' },\n { label: '不属于', value: 'NOT_IN' },\n { label: '小于', value: 'LESS' },\n { label: '小于等于', value: 'LESS_EQUAL' },\n { label: '大于', value: 'GREATER' },\n { label: '大于等于', value: 'GREATER_EQUAL' },\n { label: '等于', value: 'EQUAL' },\n { label: '不等于', value: 'NOT_EQUAL' }\n ]\n } else {\n return []\n }\n })\n const dateBtnLabel = computed(() => {\n let result = ''\n const obj = unref(ruleOptions).find(item => item.value === unref(condition).rule)\n if (obj) {\n result = obj.label\n }\n return result\n })\n const downIconStyle = computed(() => {\n let style: any = {\n fontSize: '12px'\n }\n if (!unref(dateBtnLabel)) {\n style = {\n ...style,\n position: 'absolute',\n right: '11px',\n top: '9px'\n }\n }\n return style\n })\n const valueOptions = ref< { [key:string]: any } []>([])\n const handleValueOptions = async () => {\n if (unref(valueOptions).length > 0) return\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/groupvalue`, {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: unref(condition).fieldName,\n hrpIndexTypeGuid: unref(condition).typeGuid,\n pageId: PAGE_ID,\n pageFlag: true\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n valueOptions.value = data?.slice(0, 200)?.map((item: string) => ({ label: item, value: item }))\n }\n } catch (e) {\n console.error(e)\n }\n }\n const onRuleChange = (value: string) => {\n unref(condition).rule = value\n unref(condition).fieldValue = unref(condition).fieldType === 'DATE' ? null : undefined\n if (['IN', 'NOT_IN'].includes(value)) {\n handleValueOptions()\n }\n }\n const fieldValues = ref<string []>()\n const onFieldValueSelectChange = (values: string []) => {\n fieldValues.value = values\n unref(condition).fieldValue = values?.join(',') || ''\n }\n\n const handleMenuClick = (data: any) => {\n const { keyPath } = data\n unref(condition).rule = keyPath[0]\n unref(condition).dataType = keyPath[1]\n unref(condition).dateFormat = keyPath[2]\n unref(condition).fieldValue = ''\n }\n\n onMounted(() => {\n if (unref(condition).fieldType === 'DATE') {\n console.log(props.data)\n unref(condition).dateFormat = props.data?.dateFormat\n unref(condition).dataType = props.data?.dataType || ''\n unref(condition).activeKey = props.data?.activeKey\n unref(condition).radioValue = props.data?.radioValue || ''\n unref(condition).calcWays = props.data?.calcWays || []\n unref(condition).dateCalcTypes = props.data?.dateCalcTypes || []\n const tabItem = unref(tabDateList).find(item => item.key === props.data?.activeKey)\n if (tabItem) {\n setTabItemData(tabItem, props.data)\n }\n } else {\n fieldValues.value = props.data?.fieldValue?.split(',') || []\n }\n const { fieldType, fieldName, rule } = condition.value\n if (fieldType !== 'DATE' && fieldName && rule && ['IN', 'NOT_IN'].includes(rule)) {\n handleValueOptions()\n }\n })\n\n // 时间相对配置Tab切换\n const changeTabInitDate = (activeKey: any) => {\n if (unref(condition).activeKey === activeKey) {\n unref(tabDateList)[activeKey].radioValue = unref(condition).radioValue\n if (unref(tabDateList)[unref(condition).activeKey]) {\n unref(tabDateList)[unref(condition).activeKey].radioValue = unref(condition).radioValue\n if (unref(condition).radioValue === '1') {\n unref(tabDateList)[activeKey].beforeNum = unref(condition).calcWays[0]\n } else if (unref(condition).radioValue === '2') {\n unref(tabDateList)[activeKey].afterNum = unref(condition).calcWays[0]\n }\n }\n return\n }\n unref(tabDateList).forEach(row => {\n row.beforeNum = 0\n row.afterNum = 0\n row.radioValue = '1'\n row.value = ''\n })\n }\n\n // 时间相对配置选中值改变\n const changeRadioValue = (e: any, tabItem: any) => {\n showTime.value = true\n const value = e.target.value\n const type = tabItem.type\n const format = unref(condition).dateFormat\n const beforeNum = Math.abs(tabItem.beforeNum)\n const afterNum = tabItem.afterNum\n tabItem.value = getDateValue(value, type, format, beforeNum, afterNum)\n }\n\n const getFieldValue = (tabIndex: number) => {\n const activeKey = unref(condition).activeKey\n if (tabIndex !== activeKey) {\n return\n }\n let type = ''\n if (activeKey === 0) {\n type = 'years'\n } else if (activeKey === 1) {\n type = 'quarters'\n } else if (activeKey === 2) {\n type = 'months'\n } else if (activeKey === 3) {\n type = 'weeks'\n } else if (activeKey === 4) {\n type = 'days'\n }\n const format = unref(condition).dateFormat\n const value = unref(condition).radioValue\n let beforeNum = 0\n let afterNum = 0\n if (value === '1') {\n beforeNum = Math.abs(unref(condition).calcWays[0])\n } else if (value === '2') {\n afterNum = unref(condition).calcWays[0]\n }\n return getDateValue(value, type, format, beforeNum, afterNum)\n }\n\n // 时间相对配置中的比较失焦\n const blurCompare = (e: any, tabItem: any, flag: any, key: any) => {\n showTime.value = true\n if (tabItem.radioValue === key) {\n const value = e.target.value\n if (flag === '+') {\n tabItem.value = dayjs().add(value, tabItem.type).format(unref(condition).dateFormat)\n } else {\n tabItem.value = dayjs().subtract(value, tabItem.type).format(unref(condition).dateFormat)\n }\n }\n }\n\n // 保存时间相对配置\n const okDatePickConfig = (tabItem: any, tabIndex: any) => {\n if (unref(condition).fieldType !== 'DATE' || unref(condition).dataType !== 'component') {\n condition.value.fieldValue = dayjs(tabItem.value, unref(condition).dateFormat)\n }\n if (!unref(condition).calcWays) {\n unref(condition).calcWays = []\n }\n // condition.value.absoluteBool = true\n unref(condition).activeKey = tabIndex\n unref(condition).radioValue = tabItem.radioValue\n if (tabItem.radioValue === '1') {\n unref(condition).calcWays[0] = '-' + tabItem.beforeNum\n } else if (tabItem.radioValue === '2') {\n unref(condition).calcWays[0] = tabItem.afterNum\n } else if (tabItem.radioValue === '3') {\n if (tabIndex === 4) {\n unref(condition).calcWays[0] = '0'// 今天\n } else {\n unref(condition).calcWays[0] = 'BEGIN'\n }\n } else if (tabItem.radioValue === '4') {\n unref(condition).calcWays[0] = 'END'\n }\n if (tabIndex === 0) {\n unref(condition).dateCalcTypes = ['YEAR']\n } else if (tabIndex === 1) {\n unref(condition).dateCalcTypes = ['QUARTER']\n } else if (tabIndex === 2) {\n unref(condition).dateCalcTypes = ['MONTH']\n } else if (tabIndex === 3) {\n unref(condition).dateCalcTypes = ['WEEK']\n } else if (tabIndex === 4) {\n unref(condition).dateCalcTypes = ['DAY']\n }\n popoverVisible.value = false\n }\n\n function setTabItemData (tabItem: any, source: any) {\n const { radioValue = '', calcWays = [] } = source\n tabItem.radioValue = radioValue\n if (calcWays?.length) {\n if (radioValue === '1') {\n tabItem.beforeNum = Math.abs(calcWays[0])\n } else if (radioValue === '2') {\n tabItem.afterNum = calcWays[0]\n }\n }\n }\n\n // 相对时间设置\n function getDateValue (value: any, type: any, format: any, beforeNum: any, afterNum: any) {\n if (value === '1') {\n return dayjs().subtract(beforeNum, type).format(format)\n } else if (value === '2') {\n return dayjs().add(afterNum, type).format(format)\n } else if (value === '3') {\n if (type === 'years') {\n return dayjs().startOf('year').format(format)\n } else if (type === 'quarters') {\n return dayjs().startOf('quarter').format(format)\n } else if (type === 'months') {\n return dayjs().startOf('month').format(format)\n } else if (type === 'days') {\n return dayjs().format(format)\n }\n } else if (value === '4') {\n if (type === 'years') {\n return dayjs().endOf('year').format(format)\n } else if (type === 'quarters') {\n return dayjs().endOf('quarter').format(format)\n } else if (type === 'months') {\n return dayjs().endOf('month').format(format)\n }\n }\n return ''\n }\n return {\n fieldOptions,\n ruleOptions,\n onFieldChange,\n condition,\n valueOptions,\n onRuleChange,\n onFieldValueSelectChange,\n fieldValues,\n onDelete,\n isDateType,\n formatList,\n tabDateList,\n compareList,\n menuRule,\n dateBtnLabel,\n downIconStyle,\n popoverVisible,\n dateRadioStyle,\n showTime,\n controlList,\n handleMenuClick,\n changeTabInitDate,\n changeRadioValue,\n getFieldValue,\n blurCompare,\n okDatePickConfig\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.condition {\n padding: 8px;\n border: 1px solid #e8e8e8;\n width: 100%;\n display: flex;\n align-items: center;\n}\n\n.field-name {\n width: 180px;\n margin-right: 20px;\n}\n\n.field-value {\n flex: 1;\n margin-left: 20px;\n margin-right: 20px;\n}\n\n.rule {\n width: 180px;\n}\n\n.delete-icon {\n margin-right: 10px;\n}\n\n.dropdown {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n width: 100%;\n padding-left: 11px;\n padding-right: 11px;\n}\n\n.calendar-wrap {\n width: 25px;\n border: 1px solid #d9d9d9;\n border-radius: 50%;\n height: 25px;\n text-align: center;\n cursor: pointer;\n &:hover {\n border-color: rgb(24, 144, 255);\n }\n}\n\n.popover-content-wrap {\n width: 400px;\n height: 300px;\n padding: 12px;\n .ant-tabs{\n height: 100%;\n .tabFilterRadio{\n display: flex;\n justify-content: center;\n height: 100%;\n }\n }\n}\n</style>\n<style lang=\"less\">\n.condition .ant-dropdown-menu-title-content {\n white-space: nowrap;\n}\n</style>\n","<template>\n <div class=\"condition\">\n <a-select\n class=\"field-name\"\n :value=\"condition.fieldName\"\n :options=\"fieldOptions\"\n :field-names=\"{ value: 'name' }\"\n @change=\"onFieldChange\"\n >\n </a-select>\n <div class=\"rule\">\n <a-dropdown class=\"dropdown\" v-if=\"isDateType\" :trigger=\"['click']\">\n <template #overlay>\n <a-menu @click=\"handleMenuClick\">\n <a-sub-menu\n v-for=\"item in ruleOptions\"\n :key=\"item.value\">\n <template #title>\n <span :style=\"condition.rule === item.value ? 'color: #1890FF;' : ''\">{{ item.label }}</span>\n </template>\n <a-sub-menu\n v-for=\"mr in menuRule\"\n :key=\"mr.value\"\n :disabled=\"mr.value === 'component' && !controlList?.length\">\n <template #title>\n <span :style=\"condition.rule === item.value && condition.dataType === mr.value ? 'color: #1890FF;' : ''\">\n {{ mr.label }}\n </span>\n </template>\n <a-menu-item\n v-for=\"fl in formatList\"\n :key=\"fl.value\">\n <span :style=\"condition.rule === item.value && condition.dataType === mr.value && condition.dateFormat === fl.value ? 'color: #1890FF;' : ''\">\n {{ fl.label }}\n </span>\n </a-menu-item>\n </a-sub-menu>\n </a-sub-menu>\n </a-menu>\n </template>\n <a-button>\n {{ dateBtnLabel }}\n <DownOutlined :style=\"downIconStyle\"/>\n </a-button>\n </a-dropdown>\n <a-select\n v-else\n style=\"width: 100%;\"\n :value=\"condition.rule\"\n :options=\"ruleOptions\"\n @change=\"onRuleChange\"\n >\n </a-select>\n </div>\n <div class=\"field-value\" v-if=\"isDateType\" style=\"display: flex;align-items: center;\">\n <a-date-picker\n v-if=\"condition.dataType === 'time'\"\n style=\"width: calc(100% - 35px);margin-right: 10px;\"\n v-model:value=\"condition.fieldValue\"\n :format=\"condition.dateFormat\"\n />\n <a-select\n v-else-if=\"typeof condition.fieldValue === 'string'\"\n style=\"width: calc(100% - 35px);margin-right: 10px;\"\n v-model:value=\"condition.fieldValue\"\n :fieldNames=\"{\n label: 'keyName',\n value: 'keyName'\n }\"\n :options=\"controlList\"\n >\n </a-select>\n <a-popover v-model:visible=\"popoverVisible\" trigger=\"click\" placement=\"bottomRight\">\n <template #content>\n <div class=\"popover-content-wrap\">\n <a-tabs :defaultActiveKey=\"condition.activeKey\" @change=\"changeTabInitDate\">\n <a-tab-pane v-for=\"(tabItem, tabIndex) in tabDateList\" :key=\"tabIndex\" :tab=\"tabItem.label\">\n <div class=\"tabFilterRadio\">\n <a-radio-group v-model:value=\"tabItem.radioValue\" @change=\"changeRadioValue($event,tabItem)\">\n <div v-if=\"showTime\">相对当前时间:{{tabItem.value}}</div>\n <div v-else>相对当前时间:{{getFieldValue(tabIndex)}}</div>\n <a-radio :style=\"dateRadioStyle\" value=\"1\">\n <a-input-number v-model:value=\"tabItem.beforeNum\" :min=\"0\" @blur=\"blurCompare($event, tabItem,'-','1')\" />\n <span style=\"margin-left: 10px;\">{{tabItem.beforeLabel}}</span>\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"2\">\n <a-input-number v-model:value=\"tabItem.afterNum\" :min=\"0\" @blur=\"blurCompare($event, tabItem,'+','2')\" />\n <span style=\"margin-left: 10px;\">{{tabItem.afterLabel}}</span>\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"3\" v-if=\"tabItem.beforeText\">\n {{tabItem.beforeText}}\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"4\" v-if=\"tabItem.afterText\">\n {{tabItem.afterText}}\n </a-radio>\n </a-radio-group>\n <div style=\"position: absolute;bottom: 10px;\">\n <a-button style=\"margin-right:12px;\" @click=\"popoverVisible = false\">取消</a-button>\n <a-button @click=\"okDatePickConfig(tabItem,tabIndex)\">确定</a-button>\n </div>\n </div>\n </a-tab-pane>\n </a-tabs>\n </div>\n </template>\n <div class=\"calendar-wrap\" @click=\"popoverVisible = true;\">\n <appstore-add-outlined />\n </div>\n </a-popover>\n </div>\n <a-select\n class=\"field-value\"\n v-else-if=\"['IN', 'NOT_IN'].includes(condition.rule || '')\"\n :value=\"fieldValues\"\n mode=\"multiple\"\n :options=\"valueOptions\"\n @change=\"onFieldValueSelectChange\"\n >\n </a-select>\n <a-input\n v-else\n class=\"field-value\"\n v-model:value=\"condition.fieldValue\"\n />\n <close-outlined class=\"delete-icon\" @click=\"onDelete\" />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, unref, ref, watch, onMounted } from 'vue'\nimport { CloseOutlined, DownOutlined, AppstoreAddOutlined } from '@ant-design/icons-vue'\nimport {\n Select as ASelect,\n Input as AInput,\n DatePicker as ADatePicker,\n Button as AButton,\n Dropdown as ADropdown,\n Menu as AMenu,\n MenuItem as AMenuItem,\n SubMenu as ASubMenu,\n Popover as APopover,\n Tabs as ATabs,\n TabPane as ATabPane,\n RadioGroup as ARadioGroup,\n Radio as ARadio,\n InputNumber as AInputNumber\n} from 'ant-design-vue'\nimport 'ant-design-vue/es/popover/style'\nimport 'ant-design-vue/es/dropdown/style'\nimport { REQUEST, INDICATOR_TOKEN, INDICATOR_URL, DATA_LIST, GRAPHIC_CONFIG, CHANGE_CONDITION } from '@/utils/constant'\nimport dayjs, { Dayjs } from 'dayjs'\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear'\nimport { cloneDeep } from 'lodash-es'\ndayjs.extend(quarterOfYear)\nexport default defineComponent({\n name: 'Condition',\n components: {\n CloseOutlined,\n DownOutlined,\n AppstoreAddOutlined,\n ASelect,\n AInput,\n ADatePicker,\n AButton,\n ADropdown,\n AMenu,\n AMenuItem,\n ASubMenu,\n APopover,\n ATabs,\n ATabPane,\n ARadioGroup,\n ARadio,\n AInputNumber\n },\n props: {\n data: {\n type: Object,\n default: () => ({})\n },\n level: {\n type: Number,\n default: 0\n },\n index: {\n type: Number,\n default: 0\n },\n type: {\n type: String,\n default: ''\n }\n },\n setup (props) {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const controlList = computed(() => unref(graphicConfig)?.controlList)\n const dataViewId = computed(() => unref(graphicConfig)?.dataViewId)\n const source = computed(() => unref(graphicConfig)?.source)\n // const isDataViewMode = computed(() => unref(source) === 'SQL_VIEW')\n const showTime = ref(false)\n const dateRadioStyle = {\n display: 'block',\n height: '34px',\n lineHeight: '34px',\n marginTop: '3px'\n }\n const formatList = [\n { label: '年', value: 'YYYY' },\n { label: '年月', value: 'YYYY-MM' },\n { label: '年月日', value: 'YYYY-MM-DD' },\n { label: '年月日时', value: 'YYYY-MM-DD HH' },\n { label: '年月日时分', value: 'YYYY-MM-DD HH:mm' },\n { label: '年月日时分秒', value: 'YYYY-MM-DD HH:mm:ss' }\n ]\n const tabDateList = ref([\n { key: 0, value: '', label: '年', type: 'years', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '年前', afterLabel: '年后', beforeText: '年初', afterText: '年末' },\n { key: 1, value: '', label: '季度', type: 'quarters', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '个季度前', afterLabel: '个季度后', beforeText: '季度初', afterText: '季度末' },\n { key: 2, value: '', label: '月', type: 'months', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '个月前', afterLabel: '个月后', beforeText: '月初', afterText: '月末' },\n { key: 3, value: '', label: '周', type: 'weeks', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '周前', afterLabel: '周后', beforeText: '', afterText: '' },\n { key: 4, value: '', label: '天', type: 'days', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '天前', afterLabel: '天后', beforeText: '今天', afterText: '' }\n ])\n const compareList = [\n { label: '年份', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '季的季度', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '月的月份', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '周的周', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '天的日期', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' }\n ]\n const menuRule = [\n { label: '时间值', value: 'time' },\n { label: '过滤组件值', value: 'component' }\n ]\n const { getDataList } = inject(DATA_LIST, {\n getDataList: () => ([] as { key:string } [])\n })\n interface Condition {\n fieldName: undefined | string\n fieldType: undefined | string\n rule: undefined | string\n id: undefined | string\n fieldValue: undefined | string | Dayjs\n label: string\n targetSource: string\n typeGuid: string\n dateFormat?: string\n dataType?: string\n activeKey?: number\n radioValue?: string\n calcWays?: any\n dateCalcTypes?: any\n }\n const condition = ref<Condition>({\n fieldName: props.data?.fieldName,\n fieldType: props.data?.fieldType,\n rule: props.data?.rule,\n id: props.data?.id,\n fieldValue: props.data?.fieldType === 'DATE' && props.data?.dataType === 'time' ? dayjs(props.data?.fieldValue) : props.data?.fieldValue,\n label: props.data?.label,\n // 暂时传空\n targetSource: '',\n typeGuid: props.data?.typeGuid\n })\n const popoverVisible = ref(false)\n const isDateType = computed(() => condition.value.fieldType === 'DATE')\n const fieldOptions = computed(() => {\n const type = props.type\n if (['classificationList', 'seriesList', 'indicators'].includes(type)) {\n let options = [] as { key:string } []\n for (const key in unref(graphicConfig)) {\n if (Object.prototype.hasOwnProperty.call(unref(graphicConfig), key) && !['controlList', 'sqlConditions'].includes(key)) {\n const value = unref(graphicConfig)[key]\n if (Array.isArray(value)) {\n options = options.concat(value)\n }\n }\n }\n return options.map((v: any) => {\n return {\n ...v,\n label: v.title || v.label\n }\n })\n } else if (['leftAxisList', 'rightAxisList', 'queryColumnList'].includes(type)) {\n return unref(getDataList())\n }\n return []\n })\n const { updateCondition, deleteCondition } = inject(CHANGE_CONDITION, {\n // eslint-disable-next-line no-void\n updateCondition: (_condition: { [key: string]: any}, _level:number, _index: number) => void 0,\n // eslint-disable-next-line no-void\n deleteCondition: (_level:number, _index: number) => void 0\n })\n const onDelete = () => {\n deleteCondition(props.level, props.index)\n }\n watch(condition, (condition) => {\n const result = cloneDeep(condition)\n if (condition.fieldType === 'DATE' && condition.dataType !== 'component' && condition.fieldValue) {\n result.fieldValue = (condition.fieldValue as Dayjs).format(condition.dateFormat)\n }\n updateCondition(result, props.level, props.index)\n }, {\n deep: true\n })\n\n const onFieldChange = (_value: string, option: { [key:string]:any }) => {\n const { name, genericType, id, label, typeGuid } = option\n condition.value = {\n id,\n fieldName: name,\n fieldType: genericType,\n label,\n // 重置规则\n rule: undefined,\n fieldValue: genericType === 'DATE' ? null : undefined,\n targetSource: '',\n typeGuid\n }\n }\n const ruleOptions = computed(() => {\n const type = unref(condition).fieldType\n if (type === 'TEXT') {\n return [\n { label: '属于', value: 'IN' },\n { label: '不属于', value: 'NOT_IN' },\n { label: '包含', value: 'LIKE' },\n { label: '不包含', value: 'NOT_LIKE' },\n { label: '开头是', value: 'LIKE%' },\n { label: '结尾是', value: '%LIKE' },\n { label: '前N个', value: 'TOP' },\n { label: '后N个', value: 'BOTTOM' }\n ]\n } else if (type === 'NUMBER') {\n return [\n { label: '小于', value: 'LESS' },\n { label: '小于等于', value: 'LESS_EQUAL' },\n { label: '大于', value: 'GREATER' },\n { label: '大于等于', value: 'GREATER_EQUAL' },\n { label: '等于', value: 'EQUAL' },\n { label: '不等于', value: 'NOT_EQUAL' },\n { label: '前N个', value: 'TOP' },\n { label: '后N个', value: 'BOTTOM' }\n ]\n } else if (type === 'DATE') {\n return [\n { label: '属于', value: 'IN' },\n { label: '不属于', value: 'NOT_IN' },\n { label: '小于', value: 'LESS' },\n { label: '小于等于', value: 'LESS_EQUAL' },\n { label: '大于', value: 'GREATER' },\n { label: '大于等于', value: 'GREATER_EQUAL' },\n { label: '等于', value: 'EQUAL' },\n { label: '不等于', value: 'NOT_EQUAL' }\n ]\n } else {\n return []\n }\n })\n const dateBtnLabel = computed(() => {\n let result = ''\n const obj = unref(ruleOptions).find(item => item.value === unref(condition).rule)\n if (obj) {\n result = obj.label\n }\n return result\n })\n const downIconStyle = computed(() => {\n let style: any = {\n fontSize: '12px'\n }\n if (!unref(dateBtnLabel)) {\n style = {\n ...style,\n position: 'absolute',\n right: '11px',\n top: '9px'\n }\n }\n return style\n })\n const valueOptions = ref< { [key:string]: any } []>([])\n const handleValueOptions = async () => {\n if (unref(valueOptions).length > 0) return\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/groupvalue`, {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: unref(condition).fieldName,\n hrpIndexTypeGuid: unref(condition).typeGuid,\n pageId: PAGE_ID,\n pageFlag: true\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n valueOptions.value = data?.slice(0, 200)?.map((item: string) => ({ label: item, value: item }))\n }\n } catch (e) {\n console.error(e)\n }\n }\n const onRuleChange = (value: string) => {\n unref(condition).rule = value\n unref(condition).fieldValue = unref(condition).fieldType === 'DATE' ? null : undefined\n if (['IN', 'NOT_IN'].includes(value)) {\n handleValueOptions()\n }\n }\n const fieldValues = ref<string []>()\n const onFieldValueSelectChange = (values: string []) => {\n fieldValues.value = values\n unref(condition).fieldValue = values?.join(',') || ''\n }\n\n const handleMenuClick = (data: any) => {\n const { keyPath } = data\n unref(condition).rule = keyPath[0]\n unref(condition).dataType = keyPath[1]\n unref(condition).dateFormat = keyPath[2]\n unref(condition).fieldValue = ''\n }\n\n onMounted(() => {\n if (unref(condition).fieldType === 'DATE') {\n console.log(props.data)\n unref(condition).dateFormat = props.data?.dateFormat\n unref(condition).dataType = props.data?.dataType || ''\n unref(condition).activeKey = props.data?.activeKey\n unref(condition).radioValue = props.data?.radioValue || ''\n unref(condition).calcWays = props.data?.calcWays || []\n unref(condition).dateCalcTypes = props.data?.dateCalcTypes || []\n const tabItem = unref(tabDateList).find(item => item.key === props.data?.activeKey)\n if (tabItem) {\n setTabItemData(tabItem, props.data)\n }\n } else {\n fieldValues.value = props.data?.fieldValue?.split(',') || []\n }\n const { fieldType, fieldName, rule } = condition.value\n if (fieldType !== 'DATE' && fieldName && rule && ['IN', 'NOT_IN'].includes(rule)) {\n handleValueOptions()\n }\n })\n\n // 时间相对配置Tab切换\n const changeTabInitDate = (activeKey: any) => {\n if (unref(condition).activeKey === activeKey) {\n unref(tabDateList)[activeKey].radioValue = unref(condition).radioValue\n if (unref(tabDateList)[unref(condition).activeKey]) {\n unref(tabDateList)[unref(condition).activeKey].radioValue = unref(condition).radioValue\n if (unref(condition).radioValue === '1') {\n unref(tabDateList)[activeKey].beforeNum = unref(condition).calcWays[0]\n } else if (unref(condition).radioValue === '2') {\n unref(tabDateList)[activeKey].afterNum = unref(condition).calcWays[0]\n }\n }\n return\n }\n unref(tabDateList).forEach(row => {\n row.beforeNum = 0\n row.afterNum = 0\n row.radioValue = '1'\n row.value = ''\n })\n }\n\n // 时间相对配置选中值改变\n const changeRadioValue = (e: any, tabItem: any) => {\n showTime.value = true\n const value = e.target.value\n const type = tabItem.type\n const format = unref(condition).dateFormat\n const beforeNum = Math.abs(tabItem.beforeNum)\n const afterNum = tabItem.afterNum\n tabItem.value = getDateValue(value, type, format, beforeNum, afterNum)\n }\n\n const getFieldValue = (tabIndex: number) => {\n const activeKey = unref(condition).activeKey\n if (tabIndex !== activeKey) {\n return\n }\n let type = ''\n if (activeKey === 0) {\n type = 'years'\n } else if (activeKey === 1) {\n type = 'quarters'\n } else if (activeKey === 2) {\n type = 'months'\n } else if (activeKey === 3) {\n type = 'weeks'\n } else if (activeKey === 4) {\n type = 'days'\n }\n const format = unref(condition).dateFormat\n const value = unref(condition).radioValue\n let beforeNum = 0\n let afterNum = 0\n if (value === '1') {\n beforeNum = Math.abs(unref(condition).calcWays[0])\n } else if (value === '2') {\n afterNum = unref(condition).calcWays[0]\n }\n return getDateValue(value, type, format, beforeNum, afterNum)\n }\n\n // 时间相对配置中的比较失焦\n const blurCompare = (e: any, tabItem: any, flag: any, key: any) => {\n showTime.value = true\n if (tabItem.radioValue === key) {\n const value = e.target.value\n if (flag === '+') {\n tabItem.value = dayjs().add(value, tabItem.type).format(unref(condition).dateFormat)\n } else {\n tabItem.value = dayjs().subtract(value, tabItem.type).format(unref(condition).dateFormat)\n }\n }\n }\n\n // 保存时间相对配置\n const okDatePickConfig = (tabItem: any, tabIndex: any) => {\n if (unref(condition).fieldType !== 'DATE' || unref(condition).dataType !== 'component') {\n condition.value.fieldValue = dayjs(tabItem.value, unref(condition).dateFormat)\n }\n if (!unref(condition).calcWays) {\n unref(condition).calcWays = []\n }\n // condition.value.absoluteBool = true\n unref(condition).activeKey = tabIndex\n unref(condition).radioValue = tabItem.radioValue\n if (tabItem.radioValue === '1') {\n unref(condition).calcWays[0] = '-' + tabItem.beforeNum\n } else if (tabItem.radioValue === '2') {\n unref(condition).calcWays[0] = tabItem.afterNum\n } else if (tabItem.radioValue === '3') {\n if (tabIndex === 4) {\n unref(condition).calcWays[0] = '0'// 今天\n } else {\n unref(condition).calcWays[0] = 'BEGIN'\n }\n } else if (tabItem.radioValue === '4') {\n unref(condition).calcWays[0] = 'END'\n }\n if (tabIndex === 0) {\n unref(condition).dateCalcTypes = ['YEAR']\n } else if (tabIndex === 1) {\n unref(condition).dateCalcTypes = ['QUARTER']\n } else if (tabIndex === 2) {\n unref(condition).dateCalcTypes = ['MONTH']\n } else if (tabIndex === 3) {\n unref(condition).dateCalcTypes = ['WEEK']\n } else if (tabIndex === 4) {\n unref(condition).dateCalcTypes = ['DAY']\n }\n popoverVisible.value = false\n }\n\n function setTabItemData (tabItem: any, source: any) {\n const { radioValue = '', calcWays = [] } = source\n tabItem.radioValue = radioValue\n if (calcWays?.length) {\n if (radioValue === '1') {\n tabItem.beforeNum = Math.abs(calcWays[0])\n } else if (radioValue === '2') {\n tabItem.afterNum = calcWays[0]\n }\n }\n }\n\n // 相对时间设置\n function getDateValue (value: any, type: any, format: any, beforeNum: any, afterNum: any) {\n if (value === '1') {\n return dayjs().subtract(beforeNum, type).format(format)\n } else if (value === '2') {\n return dayjs().add(afterNum, type).format(format)\n } else if (value === '3') {\n if (type === 'years') {\n return dayjs().startOf('year').format(format)\n } else if (type === 'quarters') {\n return dayjs().startOf('quarter').format(format)\n } else if (type === 'months') {\n return dayjs().startOf('month').format(format)\n } else if (type === 'days') {\n return dayjs().format(format)\n }\n } else if (value === '4') {\n if (type === 'years') {\n return dayjs().endOf('year').format(format)\n } else if (type === 'quarters') {\n return dayjs().endOf('quarter').format(format)\n } else if (type === 'months') {\n return dayjs().endOf('month').format(format)\n }\n }\n return ''\n }\n return {\n fieldOptions,\n ruleOptions,\n onFieldChange,\n condition,\n valueOptions,\n onRuleChange,\n onFieldValueSelectChange,\n fieldValues,\n onDelete,\n isDateType,\n formatList,\n tabDateList,\n compareList,\n menuRule,\n dateBtnLabel,\n downIconStyle,\n popoverVisible,\n dateRadioStyle,\n showTime,\n controlList,\n handleMenuClick,\n changeTabInitDate,\n changeRadioValue,\n getFieldValue,\n blurCompare,\n okDatePickConfig\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.condition {\n padding: 8px;\n border: 1px solid #e8e8e8;\n width: 100%;\n display: flex;\n align-items: center;\n}\n\n.field-name {\n width: 180px;\n margin-right: 20px;\n}\n\n.field-value {\n flex: 1;\n margin-left: 20px;\n margin-right: 20px;\n}\n\n.rule {\n width: 180px;\n}\n\n.delete-icon {\n margin-right: 10px;\n}\n\n.dropdown {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n width: 100%;\n padding-left: 11px;\n padding-right: 11px;\n}\n\n.calendar-wrap {\n width: 25px;\n border: 1px solid #d9d9d9;\n border-radius: 50%;\n height: 25px;\n text-align: center;\n cursor: pointer;\n &:hover {\n border-color: rgb(24, 144, 255);\n }\n}\n\n.popover-content-wrap {\n width: 400px;\n height: 300px;\n padding: 12px;\n .ant-tabs{\n height: 100%;\n .tabFilterRadio{\n display: flex;\n justify-content: center;\n height: 100%;\n }\n }\n}\n</style>\n<style lang=\"less\">\n.condition .ant-dropdown-menu-title-content {\n white-space: nowrap;\n}\n</style>\n","<template>\n <div class=\"condition-list\" v-if=\"Array.isArray(list)\">\n <template\n v-for=\"(item, index) in list\"\n :key=\"index\"\n >\n <template v-if=\"item.join && item.conditions && Array.isArray(item.conditions)\">\n <div class=\"condition-container\">\n <template v-if=\"item.conditions.length > 1\">\n <div class=\"condition-text\" v-if=\"item.join === '||'\">或</div>\n <div class=\"condition-text\" v-if=\"item.join === '&&'\">且</div>\n </template>\n <div class=\"conditions\">\n <template v-if=\"item.conditions.length > 0\">\n <condition-list\n :level=\"level + 1\"\n :list=\"item.conditions\"\n :type=\"type\"\n />\n </template>\n </div>\n </div>\n </template>\n <template v-else>\n <condition\n class=\"condition\"\n :data=\"item\"\n :level=\"level\"\n :index=\"index\"\n :type=\"type\"\n />\n </template>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { PropType, defineComponent } from 'vue'\nimport Condition from './Condition.vue'\nexport default defineComponent({\n name: 'ConditionList',\n props: {\n list: {\n type: Array as PropType<any[]>,\n default: () => ([])\n },\n level: {\n type: Number,\n default: 0\n },\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n Condition\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.condition-text {\n min-width: 50px;\n max-width: 50px;\n border: 1px solid #e8e8e8;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.condition-container {\n display: flex;\n width: 100%;\n}\n\n.conditions {\n display: flex;\n flex-direction: column;\n flex: 1;\n}\n\n.condition {\n}\n</style>\n","<template>\n <div class=\"condition-list\" v-if=\"Array.isArray(list)\">\n <template\n v-for=\"(item, index) in list\"\n :key=\"index\"\n >\n <template v-if=\"item.join && item.conditions && Array.isArray(item.conditions)\">\n <div class=\"condition-container\">\n <template v-if=\"item.conditions.length > 1\">\n <div class=\"condition-text\" v-if=\"item.join === '||'\">或</div>\n <div class=\"condition-text\" v-if=\"item.join === '&&'\">且</div>\n </template>\n <div class=\"conditions\">\n <template v-if=\"item.conditions.length > 0\">\n <condition-list\n :level=\"level + 1\"\n :list=\"item.conditions\"\n :type=\"type\"\n />\n </template>\n </div>\n </div>\n </template>\n <template v-else>\n <condition\n class=\"condition\"\n :data=\"item\"\n :level=\"level\"\n :index=\"index\"\n :type=\"type\"\n />\n </template>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { PropType, defineComponent } from 'vue'\nimport Condition from './Condition.vue'\nexport default defineComponent({\n name: 'ConditionList',\n props: {\n list: {\n type: Array as PropType<any[]>,\n default: () => ([])\n },\n level: {\n type: Number,\n default: 0\n },\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n Condition\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.condition-text {\n min-width: 50px;\n max-width: 50px;\n border: 1px solid #e8e8e8;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.condition-container {\n display: flex;\n width: 100%;\n}\n\n.conditions {\n display: flex;\n flex-direction: column;\n flex: 1;\n}\n\n.condition {\n}\n</style>\n","<template>\n <a-modal\n :title=\"handleTitle()\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column'\n }\"\n :closable=\"false\"\n @ok=\"onOk\"\n @cancel=\"onCancel\"\n >\n <div class=\"header\">\n <template v-if=\"Array.isArray(conditionList) && conditionList.length > 0\">\n <a-button\n class=\"add-and-condition\"\n @click=\"addCondition('&&')\"\n >\n 添加且条件\n </a-button>\n <a-button\n class=\"add-or-condition\"\n @click=\"addCondition('||')\"\n >\n 添加或条件\n </a-button>\n </template>\n <a-button @click=\"addCondition\" v-else>\n 添加条件\n </a-button>\n </div>\n <condition-list\n class=\"condition-list\"\n :list=\"conditionList\"\n :level=\"0\"\n :type=\"type\"\n />\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, unref, provide, watch, inject } from 'vue'\nimport {\n Modal as AModal,\n Button as AButton\n} from 'ant-design-vue'\nimport ConditionList from './ConditionList.vue'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG, CHANGE_CONDITION, REQUEST, INDICATOR_URL, INDICATOR_TOKEN } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nexport default defineComponent({\n name: 'FilterModal',\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n ConditionList,\n AModal,\n AButton\n },\n setup (props, { expose }) {\n const handleTitle = () => `添加过滤条件-${props.item?.label || ''}`\n const graphicConfig = inject(GRAPHIC_CONFIG)\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const conditionList = ref<{ [key: string]: any } []>([])\n const visible = ref(false)\n watch(visible, (visible) => {\n if (visible && Array.isArray(props.item?.conditions)) {\n conditionList.value = cloneDeep(props.item?.conditions) || []\n }\n }, {\n flush: 'post'\n })\n let isDataChange = false\n const addCondition = (join?: '||' | '&&') => {\n isDataChange = true\n if (unref(conditionList) == null || unref(conditionList)?.length === 0) {\n conditionList.value = [{}]\n } else if (unref(conditionList)[0] != null) {\n if (unref(conditionList)[0].conditions == null || unref(conditionList)[0].join !== join) {\n conditionList.value = [{\n join,\n conditions: [\n unref(conditionList)[0],\n {}\n ]\n }]\n } else if (unref(conditionList)[0].conditions.length > 1 && unref(conditionList)[0].join === join) {\n conditionList.value[0].conditions.push({})\n }\n }\n }\n provide(CHANGE_CONDITION, {\n updateCondition (condition: { [key:string]: any}, level: number, index: number) {\n isDataChange = true\n let conditions = unref(conditionList)\n for (let i = 0; i < level; i++) {\n if (conditions[0]) {\n conditions = conditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n if (Array.isArray(conditions) && conditions[index]) {\n conditions[index] = condition\n }\n },\n deleteCondition (level: number, index: number) {\n isDataChange = true\n let conditions = unref(conditionList)\n for (let i = 0; i < level; i++) {\n if (conditions[0]) {\n conditions = conditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n if (Array.isArray(conditions) && conditions[index]) {\n conditions.splice(index, 1)\n if (conditions.length === 1) {\n let wrapperConditions = unref(conditionList)\n const wrapperLevel = level - 2 > 0 ? level - 2 : 0\n for (let i = 0; i < wrapperLevel; i++) {\n if (wrapperConditions[0]) {\n wrapperConditions = wrapperConditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n // 合并\n if (wrapperConditions[0].join === conditions[0].join) {\n // 最外层合并 (需要搞清数据结构)\n wrapperConditions[0].conditions = [\n ...conditions[0].conditions,\n ...wrapperConditions[0].conditions.slice(1)\n ]\n } else {\n // 当前 conditions[0].join 无条件说明是第一层,直接替换\n wrapperConditions[0] = conditions[0]\n }\n }\n }\n }\n })\n const updateFilter = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n list[props.index].conditions = unref(conditionList)\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n conditionList.value = []\n visible.value = false\n }\n const onOk = () => {\n if (isDataChange) updateFilter()\n isDataChange = false\n hideModal()\n }\n const onCancel = () => {\n hideModal()\n }\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const getHrpIndexWithComplex = async (hrpIndexGuid: string) => {\n // if (!['leftAxisList', 'rightAxisList', 'indicators', 'queryColumnList'].includes(props.type)) return\n if (props.type) return\n try {\n const res = await request.get(`${INDICATOR_URL}/diagram/hrpIndexWithComplex`, {\n params: {\n dataSourceId: '',\n hrpIndexGuid\n }\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n console.log(data)\n }\n } catch (e) {\n console.error(e)\n }\n }\n watch(() => props.item, (data: any) => {\n if (data) {\n getHrpIndexWithComplex(data.id)\n }\n })\n expose({\n showModal\n })\n return {\n visible,\n onOk,\n onCancel,\n handleTitle,\n conditionList,\n addCondition\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.header {\n display: flex;\n justify-content: flex-end;\n margin-bottom: 30px;\n}\n.add-and-condition {\n width: 100px;\n margin-right: 15px;\n}\n.add-or-condition {\n width: 100px;\n}\n\n</style>\n","<template>\n <a-modal\n :title=\"handleTitle()\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column'\n }\"\n :closable=\"false\"\n @ok=\"onOk\"\n @cancel=\"onCancel\"\n >\n <div class=\"header\">\n <template v-if=\"Array.isArray(conditionList) && conditionList.length > 0\">\n <a-button\n class=\"add-and-condition\"\n @click=\"addCondition('&&')\"\n >\n 添加且条件\n </a-button>\n <a-button\n class=\"add-or-condition\"\n @click=\"addCondition('||')\"\n >\n 添加或条件\n </a-button>\n </template>\n <a-button @click=\"addCondition\" v-else>\n 添加条件\n </a-button>\n </div>\n <condition-list\n class=\"condition-list\"\n :list=\"conditionList\"\n :level=\"0\"\n :type=\"type\"\n />\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, unref, provide, watch, inject } from 'vue'\nimport {\n Modal as AModal,\n Button as AButton\n} from 'ant-design-vue'\nimport ConditionList from './ConditionList.vue'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG, CHANGE_CONDITION, REQUEST, INDICATOR_URL, INDICATOR_TOKEN } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nexport default defineComponent({\n name: 'FilterModal',\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n ConditionList,\n AModal,\n AButton\n },\n setup (props, { expose }) {\n const handleTitle = () => `添加过滤条件-${props.item?.label || ''}`\n const graphicConfig = inject(GRAPHIC_CONFIG)\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const conditionList = ref<{ [key: string]: any } []>([])\n const visible = ref(false)\n watch(visible, (visible) => {\n if (visible && Array.isArray(props.item?.conditions)) {\n conditionList.value = cloneDeep(props.item?.conditions) || []\n }\n }, {\n flush: 'post'\n })\n let isDataChange = false\n const addCondition = (join?: '||' | '&&') => {\n isDataChange = true\n if (unref(conditionList) == null || unref(conditionList)?.length === 0) {\n conditionList.value = [{}]\n } else if (unref(conditionList)[0] != null) {\n if (unref(conditionList)[0].conditions == null || unref(conditionList)[0].join !== join) {\n conditionList.value = [{\n join,\n conditions: [\n unref(conditionList)[0],\n {}\n ]\n }]\n } else if (unref(conditionList)[0].conditions.length > 1 && unref(conditionList)[0].join === join) {\n conditionList.value[0].conditions.push({})\n }\n }\n }\n provide(CHANGE_CONDITION, {\n updateCondition (condition: { [key:string]: any}, level: number, index: number) {\n isDataChange = true\n let conditions = unref(conditionList)\n for (let i = 0; i < level; i++) {\n if (conditions[0]) {\n conditions = conditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n if (Array.isArray(conditions) && conditions[index]) {\n conditions[index] = condition\n }\n },\n deleteCondition (level: number, index: number) {\n isDataChange = true\n let conditions = unref(conditionList)\n for (let i = 0; i < level; i++) {\n if (conditions[0]) {\n conditions = conditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n if (Array.isArray(conditions) && conditions[index]) {\n conditions.splice(index, 1)\n if (conditions.length === 1) {\n let wrapperConditions = unref(conditionList)\n const wrapperLevel = level - 2 > 0 ? level - 2 : 0\n for (let i = 0; i < wrapperLevel; i++) {\n if (wrapperConditions[0]) {\n wrapperConditions = wrapperConditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n // 合并\n if (wrapperConditions[0].join === conditions[0].join) {\n // 最外层合并 (需要搞清数据结构)\n wrapperConditions[0].conditions = [\n ...conditions[0].conditions,\n ...wrapperConditions[0].conditions.slice(1)\n ]\n } else {\n // 当前 conditions[0].join 无条件说明是第一层,直接替换\n wrapperConditions[0] = conditions[0]\n }\n }\n }\n }\n })\n const updateFilter = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n list[props.index].conditions = unref(conditionList)\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n conditionList.value = []\n visible.value = false\n }\n const onOk = () => {\n if (isDataChange) updateFilter()\n isDataChange = false\n hideModal()\n }\n const onCancel = () => {\n hideModal()\n }\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const getHrpIndexWithComplex = async (hrpIndexGuid: string) => {\n // if (!['leftAxisList', 'rightAxisList', 'indicators', 'queryColumnList'].includes(props.type)) return\n if (props.type) return\n try {\n const res = await request.get(`${INDICATOR_URL}/diagram/hrpIndexWithComplex`, {\n params: {\n dataSourceId: '',\n hrpIndexGuid\n }\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n console.log(data)\n }\n } catch (e) {\n console.error(e)\n }\n }\n watch(() => props.item, (data: any) => {\n if (data) {\n getHrpIndexWithComplex(data.id)\n }\n })\n expose({\n showModal\n })\n return {\n visible,\n onOk,\n onCancel,\n handleTitle,\n conditionList,\n addCondition\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.header {\n display: flex;\n justify-content: flex-end;\n margin-bottom: 30px;\n}\n.add-and-condition {\n width: 100px;\n margin-right: 15px;\n}\n.add-or-condition {\n width: 100px;\n}\n\n</style>\n","import { urlAlphabet } from './url-alphabet/index.js'\nif (false) {\n if (\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative' &&\n typeof crypto === 'undefined'\n ) {\n throw new Error(\n 'React Native does not have a built-in secure random generator. ' +\n 'If you don’t need unpredictable IDs use `nanoid/non-secure`. ' +\n 'For secure IDs, import `react-native-get-random-values` ' +\n 'before Nano ID.'\n )\n }\n if (typeof msCrypto !== 'undefined' && typeof crypto === 'undefined') {\n throw new Error(\n 'Import file with `if (!window.crypto) window.crypto = window.msCrypto`' +\n ' before importing Nano ID to fix IE 11 support'\n )\n }\n if (typeof crypto === 'undefined') {\n throw new Error(\n 'Your browser does not have secure random generator. ' +\n 'If you don’t need unpredictable IDs, you can use nanoid/non-secure.'\n )\n }\n}\nlet random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nlet customRandom = (alphabet, size, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * size) / alphabet.length)\n return () => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nlet customAlphabet = (alphabet, size) => customRandom(alphabet, size, random)\nlet nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array(size))\n while (size--) {\n let byte = bytes[size] & 63\n if (byte < 36) {\n id += byte.toString(36)\n } else if (byte < 62) {\n id += (byte - 26).toString(36).toUpperCase()\n } else if (byte < 63) {\n id += '_'\n } else {\n id += '-'\n }\n }\n return id\n}\nexport { nanoid, customAlphabet, customRandom, urlAlphabet, random }\n","<template>\n <div class=\"formula-calculation\">\n <a-row style=\"height: 100%\">\n <a-col :span=\"6\">\n <div class=\"field-area\">\n <div>数值字段({{ fieldList.length }})</div>\n <div\n class=\"field\"\n v-for=\"(field, index) in fieldList\"\n :key=\"index\"\n @click=\"insertText(field.label)\"\n >\n {{ field.label }}\n </div>\n </div>\n </a-col>\n <a-col :span=\"18\">\n <a-textarea\n class=\"textarea\"\n v-model:value=\"myValue\"\n :autoSize=\"{\n minRows: 13,\n maxRows: 13\n }\"\n placeholder=\"示例: ${指标} * 3\"\n />\n </a-col>\n </a-row>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, inject } from 'vue'\nimport { GRAPHIC_CONFIG } from '@/utils/constant'\nimport { Row as ARow, Col as ACol, Textarea as ATextarea } from 'ant-design-vue'\nexport default defineComponent({\n name: 'FormulaCalculation',\n props: {\n value: {\n type: String,\n default: ''\n }\n },\n components: {\n ARow,\n ACol,\n ATextarea\n },\n emits: ['update:value', 'change'],\n setup (props, { emit }) {\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const leftAxisList = computed(() => unref(graphicConfig).leftAxisList || [])\n const rightAxisList = computed(\n () => unref(graphicConfig).rightAxisList || []\n )\n const indicators = computed(() => unref(graphicConfig).indicators || [])\n const queryColumnList = computed(\n () => unref(graphicConfig).queryColumnList || []\n )\n const fieldList = computed(() => {\n const fieldList = unref(leftAxisList)\n .concat(unref(rightAxisList))\n .concat(unref(indicators))\n .concat(unref(queryColumnList)) as { [key: string]: any }[]\n // 公式计算需要过滤不是数字类型的字段\n return fieldList?.filter((field) => field.genericType === 'NUMBER') || []\n })\n const myValue = computed({\n get: () => props.value || '',\n set: (value) => {\n emit('update:value', value)\n emit('change', value)\n }\n })\n const insertText = (text: string) => {\n myValue.value = unref(myValue) + '${' + text + '}'\n }\n return {\n fieldList,\n myValue,\n insertText\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.formula-calculation {\n border: 1px solid #ccc;\n width: 100%;\n}\n\n[theme='dark'] .formula-calculation {\n border: 1px solid #333;\n}\n\n.field-area {\n height: 100%;\n padding-left: 20px;\n padding-top: 20px;\n background: #eff1f4;\n}\n[theme='dark'] .field-area {\n background: #333;\n}\n.field {\n margin-top: 10px;\n padding-left: 15px;\n font-weight: 500;\n}\n\n.textarea {\n height: 100%;\n}\n</style>\n","<template>\n <div class=\"formula-calculation\">\n <a-row style=\"height: 100%\">\n <a-col :span=\"6\">\n <div class=\"field-area\">\n <div>数值字段({{ fieldList.length }})</div>\n <div\n class=\"field\"\n v-for=\"(field, index) in fieldList\"\n :key=\"index\"\n @click=\"insertText(field.label)\"\n >\n {{ field.label }}\n </div>\n </div>\n </a-col>\n <a-col :span=\"18\">\n <a-textarea\n class=\"textarea\"\n v-model:value=\"myValue\"\n :autoSize=\"{\n minRows: 13,\n maxRows: 13\n }\"\n placeholder=\"示例: ${指标} * 3\"\n />\n </a-col>\n </a-row>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, inject } from 'vue'\nimport { GRAPHIC_CONFIG } from '@/utils/constant'\nimport { Row as ARow, Col as ACol, Textarea as ATextarea } from 'ant-design-vue'\nexport default defineComponent({\n name: 'FormulaCalculation',\n props: {\n value: {\n type: String,\n default: ''\n }\n },\n components: {\n ARow,\n ACol,\n ATextarea\n },\n emits: ['update:value', 'change'],\n setup (props, { emit }) {\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const leftAxisList = computed(() => unref(graphicConfig).leftAxisList || [])\n const rightAxisList = computed(\n () => unref(graphicConfig).rightAxisList || []\n )\n const indicators = computed(() => unref(graphicConfig).indicators || [])\n const queryColumnList = computed(\n () => unref(graphicConfig).queryColumnList || []\n )\n const fieldList = computed(() => {\n const fieldList = unref(leftAxisList)\n .concat(unref(rightAxisList))\n .concat(unref(indicators))\n .concat(unref(queryColumnList)) as { [key: string]: any }[]\n // 公式计算需要过滤不是数字类型的字段\n return fieldList?.filter((field) => field.genericType === 'NUMBER') || []\n })\n const myValue = computed({\n get: () => props.value || '',\n set: (value) => {\n emit('update:value', value)\n emit('change', value)\n }\n })\n const insertText = (text: string) => {\n myValue.value = unref(myValue) + '${' + text + '}'\n }\n return {\n fieldList,\n myValue,\n insertText\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.formula-calculation {\n border: 1px solid #ccc;\n width: 100%;\n}\n\n[theme='dark'] .formula-calculation {\n border: 1px solid #333;\n}\n\n.field-area {\n height: 100%;\n padding-left: 20px;\n padding-top: 20px;\n background: #eff1f4;\n}\n[theme='dark'] .field-area {\n background: #333;\n}\n.field {\n margin-top: 10px;\n padding-left: 15px;\n font-weight: 500;\n}\n\n.textarea {\n height: 100%;\n}\n</style>\n","<template>\n <a-modal\n :title=\"`${mode === 'add' ? '新增' : '编辑'}计算指标`\"\n :visible=\"visible\"\n width=\"50%\"\n :bodyStyle=\"{\n height: '50vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column'\n }\"\n :closable=\"false\"\n @Ok=\"onOK\"\n @cancel=\"onCancel\"\n >\n <a-form :model=\"formState\">\n <a-form-item\n label=\"指标名\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-input\n v-model:value=\"formState.label\"\n @change=\"onChange\"\n />\n </a-form-item>\n <a-form-item\n label=\"计算方式\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-select\n v-model:value=\"formState.calcType\"\n @change=\"onChange\"\n >\n <a-select-option value=\"FORMULA\">公式</a-select-option>\n <a-select-option value=\"BUILT_IN\">内置公式</a-select-option>\n </a-select>\n </a-form-item>\n <template v-if=\"formState.calcType === 'FORMULA'\">\n <formula-calculation\n v-model:value=\"formState.formula\"\n @change=\"onChange\"\n />\n </template>\n <template v-if=\"formState.calcType === 'BUILT_IN'\">\n <a-form-item\n label=\"内置公式\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-select\n v-model:value=\"formState.builtInFormula\"\n @change=\"onChange\"\n >\n <a-select-option value=\"BUILT_IN_ALL_VALUE\">所有值</a-select-option>\n <a-select-option value=\"BUILT_IN_ALL_VALUE_IN_GROUPO\"\n >组内所有值</a-select-option\n >\n <a-select-option value=\"BUILT_IN_RANK\">排名</a-select-option>\n <a-select-option value=\"BUILT_IN_RANK_IN_GROUPO\"\n >组内排名</a-select-option\n >\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"取值来源\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-select\n v-model:value=\"formState.builtInValueSource\"\n @change=\"onChange\"\n >\n <a-select-option\n v-for=\"(builtInValueSource, index) in builtInValueSourceList\"\n :key=\"index\"\n :value=\"builtInValueSource.name\"\n >\n {{ builtInValueSource.label }}\n </a-select-option>\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"取值原则\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-select\n v-model:value=\"formState.builtInCalcWay\"\n @change=\"onChange\"\n >\n <template\n v-if=\"\n ['BUILT_IN_RANK', 'BUILT_IN_RANK_IN_GROUPO'].includes(\n formState.builtInValueSource || ''\n )\n \"\n >\n <!-- 所有值/组内所有值 -->\n <a-select-option value=\"SUM\">求和</a-select-option>\n <a-select-option value=\"AVG\">求平均</a-select-option>\n <a-select-option value=\"MAX\">求最大值</a-select-option>\n <a-select-option value=\"MIN\">求最小值</a-select-option>\n </template>\n <template v-else>\n <!-- 排名/组内排名 -->\n <a-select-option value=\"ASC\">升序</a-select-option>\n <a-select-option value=\"DESC\">降序</a-select-option>\n </template>\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"取数逻辑\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-textarea\n :rows=\"6\"\n disabled\n />\n </a-form-item>\n </template>\n </a-form>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n ref,\n computed,\n unref,\n PropType,\n watch,\n inject\n} from 'vue'\nimport { nanoid } from 'nanoid'\nimport FormulaCalculation from './FormulaCalculation.vue'\nimport {\n Form as AForm,\n Modal as AModal,\n FormItem as AFormItem,\n Input as AInput,\n Select as ASelect,\n SelectOption as ASelectOption,\n Textarea as ATextarea\n} from 'ant-design-vue'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nexport default defineComponent({\n name: 'CalculationModal',\n components: {\n FormulaCalculation,\n AForm,\n AModal,\n AFormItem,\n AInput,\n ASelect,\n ASelectOption,\n ATextarea\n },\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n },\n // 模式\n mode: {\n type: String as PropType<'add' | 'edit'>,\n default: 'add'\n }\n },\n setup (props, { expose }) {\n const graphicConfig = inject(GRAPHIC_CONFIG)\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const builtInValueSourceList = computed(\n () => unref(graphicConfig)[props.type] || []\n )\n const labelCol = { span: 4 }\n const wrapperCol = { span: 18 }\n const formDefaultValue = {\n label: undefined,\n calcType: 'FORMULA',\n formula: undefined,\n builtInValueSource: undefined,\n builtInFormula: undefined,\n builtInCalcWay: undefined\n }\n const formState = ref(formDefaultValue)\n watch(\n () => props.item,\n (item) => {\n if (props.mode === 'edit') {\n const {\n label,\n calcType,\n formula,\n builtInValueSource,\n builtInFormula,\n builtInCalcWay\n } = item\n formState.value = {\n label,\n calcType,\n formula,\n builtInValueSource,\n builtInFormula,\n builtInCalcWay\n }\n }\n },\n {\n immediate: true,\n deep: true\n }\n )\n let isDataChange = false\n const onChange = () => {\n isDataChange = true\n }\n // 保存指标库\n const saveIndicator = () => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n const { label } = unref(formState) || {}\n if (props.mode === 'add') {\n const id = nanoid()\n list.push({\n ...unref(formState),\n id,\n show: true,\n name: label\n })\n } else if (props.mode === 'edit') {\n list[props.index] = {\n ...list[props.index],\n ...unref(formState),\n name: label\n }\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const visible = ref(false)\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const formRules = ref({\n label: [\n {\n required: true,\n message: '请输入指标名'\n }\n ],\n calcType: [\n {\n required: true,\n message: '请选择计算方式'\n }\n ],\n formula: [\n {\n required: true,\n message: '请选择计算公式'\n }\n ]\n })\n const { validate, validateInfos, clearValidate } = AForm.useForm(\n formState,\n formRules\n )\n const onOK = () => {\n validate().then(() => {\n if (isDataChange) saveIndicator()\n isDataChange = false\n // 重置\n formState.value = formDefaultValue\n hideModal()\n })\n }\n const onCancel = () => {\n // 重置\n formState.value = formDefaultValue\n clearValidate()\n hideModal()\n }\n expose({\n showModal\n })\n return {\n visible,\n onCancel,\n labelCol,\n wrapperCol,\n formState,\n builtInValueSourceList,\n onOK,\n onChange,\n validateInfos\n }\n }\n})\n</script>\n\n<style scoped></style>\n","<template>\n <a-modal\n :title=\"`${mode === 'add' ? '新增' : '编辑'}计算指标`\"\n :visible=\"visible\"\n width=\"50%\"\n :bodyStyle=\"{\n height: '50vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column'\n }\"\n :closable=\"false\"\n @Ok=\"onOK\"\n @cancel=\"onCancel\"\n >\n <a-form :model=\"formState\">\n <a-form-item\n label=\"指标名\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-input\n v-model:value=\"formState.label\"\n @change=\"onChange\"\n />\n </a-form-item>\n <a-form-item\n label=\"计算方式\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-select\n v-model:value=\"formState.calcType\"\n @change=\"onChange\"\n >\n <a-select-option value=\"FORMULA\">公式</a-select-option>\n <a-select-option value=\"BUILT_IN\">内置公式</a-select-option>\n </a-select>\n </a-form-item>\n <template v-if=\"formState.calcType === 'FORMULA'\">\n <formula-calculation\n v-model:value=\"formState.formula\"\n @change=\"onChange\"\n />\n </template>\n <template v-if=\"formState.calcType === 'BUILT_IN'\">\n <a-form-item\n label=\"内置公式\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-select\n v-model:value=\"formState.builtInFormula\"\n @change=\"onChange\"\n >\n <a-select-option value=\"BUILT_IN_ALL_VALUE\">所有值</a-select-option>\n <a-select-option value=\"BUILT_IN_ALL_VALUE_IN_GROUPO\"\n >组内所有值</a-select-option\n >\n <a-select-option value=\"BUILT_IN_RANK\">排名</a-select-option>\n <a-select-option value=\"BUILT_IN_RANK_IN_GROUPO\"\n >组内排名</a-select-option\n >\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"取值来源\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-select\n v-model:value=\"formState.builtInValueSource\"\n @change=\"onChange\"\n >\n <a-select-option\n v-for=\"(builtInValueSource, index) in builtInValueSourceList\"\n :key=\"index\"\n :value=\"builtInValueSource.name\"\n >\n {{ builtInValueSource.label }}\n </a-select-option>\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"取值原则\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-select\n v-model:value=\"formState.builtInCalcWay\"\n @change=\"onChange\"\n >\n <template\n v-if=\"\n ['BUILT_IN_RANK', 'BUILT_IN_RANK_IN_GROUPO'].includes(\n formState.builtInValueSource || ''\n )\n \"\n >\n <!-- 所有值/组内所有值 -->\n <a-select-option value=\"SUM\">求和</a-select-option>\n <a-select-option value=\"AVG\">求平均</a-select-option>\n <a-select-option value=\"MAX\">求最大值</a-select-option>\n <a-select-option value=\"MIN\">求最小值</a-select-option>\n </template>\n <template v-else>\n <!-- 排名/组内排名 -->\n <a-select-option value=\"ASC\">升序</a-select-option>\n <a-select-option value=\"DESC\">降序</a-select-option>\n </template>\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"取数逻辑\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-textarea\n :rows=\"6\"\n disabled\n />\n </a-form-item>\n </template>\n </a-form>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n ref,\n computed,\n unref,\n PropType,\n watch,\n inject\n} from 'vue'\nimport { nanoid } from 'nanoid'\nimport FormulaCalculation from './FormulaCalculation.vue'\nimport {\n Form as AForm,\n Modal as AModal,\n FormItem as AFormItem,\n Input as AInput,\n Select as ASelect,\n SelectOption as ASelectOption,\n Textarea as ATextarea\n} from 'ant-design-vue'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nexport default defineComponent({\n name: 'CalculationModal',\n components: {\n FormulaCalculation,\n AForm,\n AModal,\n AFormItem,\n AInput,\n ASelect,\n ASelectOption,\n ATextarea\n },\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n },\n // 模式\n mode: {\n type: String as PropType<'add' | 'edit'>,\n default: 'add'\n }\n },\n setup (props, { expose }) {\n const graphicConfig = inject(GRAPHIC_CONFIG)\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const builtInValueSourceList = computed(\n () => unref(graphicConfig)[props.type] || []\n )\n const labelCol = { span: 4 }\n const wrapperCol = { span: 18 }\n const formDefaultValue = {\n label: undefined,\n calcType: 'FORMULA',\n formula: undefined,\n builtInValueSource: undefined,\n builtInFormula: undefined,\n builtInCalcWay: undefined\n }\n const formState = ref(formDefaultValue)\n watch(\n () => props.item,\n (item) => {\n if (props.mode === 'edit') {\n const {\n label,\n calcType,\n formula,\n builtInValueSource,\n builtInFormula,\n builtInCalcWay\n } = item\n formState.value = {\n label,\n calcType,\n formula,\n builtInValueSource,\n builtInFormula,\n builtInCalcWay\n }\n }\n },\n {\n immediate: true,\n deep: true\n }\n )\n let isDataChange = false\n const onChange = () => {\n isDataChange = true\n }\n // 保存指标库\n const saveIndicator = () => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n const { label } = unref(formState) || {}\n if (props.mode === 'add') {\n const id = nanoid()\n list.push({\n ...unref(formState),\n id,\n show: true,\n name: label\n })\n } else if (props.mode === 'edit') {\n list[props.index] = {\n ...list[props.index],\n ...unref(formState),\n name: label\n }\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const visible = ref(false)\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const formRules = ref({\n label: [\n {\n required: true,\n message: '请输入指标名'\n }\n ],\n calcType: [\n {\n required: true,\n message: '请选择计算方式'\n }\n ],\n formula: [\n {\n required: true,\n message: '请选择计算公式'\n }\n ]\n })\n const { validate, validateInfos, clearValidate } = AForm.useForm(\n formState,\n formRules\n )\n const onOK = () => {\n validate().then(() => {\n if (isDataChange) saveIndicator()\n isDataChange = false\n // 重置\n formState.value = formDefaultValue\n hideModal()\n })\n }\n const onCancel = () => {\n // 重置\n formState.value = formDefaultValue\n clearValidate()\n hideModal()\n }\n expose({\n showModal\n })\n return {\n visible,\n onCancel,\n labelCol,\n wrapperCol,\n formState,\n builtInValueSourceList,\n onOK,\n onChange,\n validateInfos\n }\n }\n})\n</script>\n\n<style scoped></style>\n","<template>\n <a-card\n class=\"data-config-card\"\n :head-style=\"{\n backgroundColor: 'rgba(161,212,230,0.3)',\n minHeight: '38px',\n padding: '0 10px'\n }\"\n @dragover.prevent.stop\n @drop.prevent.stop=\"onDrop\"\n >\n <template #title>\n <div class=\"title\">\n <div class=\"title-text\">{{ title }}</div>\n <div\n class=\"add-calculation\"\n v-if=\"!['classificationList', 'seriesList', 'rowHeaderList'].includes(type)\"\n @click.prevent.stop=\"onShowCalculationModal('add')\"\n >\n <plus-outlined class=\"add-calculation-icon\" />\n <span>添加计算指标</span>\n </div>\n </div>\n </template>\n <div\n v-for=\"(cardItem, index) in cardItemList\"\n :key=\"index\"\n :draggable=\"true\"\n @dragstart.stop=\"onDropStart($event, cardItem, index)\"\n @dragover.prevent.stop\n >\n <a-checkbox\n class=\"card-item\"\n :checked=\"cardItem.show\"\n @change=\"onCheckboxChange($event, index)\"\n >\n <!-- editLabelList 和 labelList 都为 cardItemList 映射列表,用于修改label交互 -->\n <!-- editLabelList 是否修改名字, 变为输入框,值为 boolean -->\n <!-- labelList,label 列表 -->\n <div class=\"card-item-inner\">\n <div\n class=\"name\"\n v-if=\"!editLabelList[index] && cardItem.label\"\n @click.prevent.stop=\"onEdit(index)\"\n >\n {{ cardItem.title || cardItem.label }}\n </div>\n <div\n class=\"name placeholder\"\n v-if=\"!editLabelList[index] && !cardItem.label\"\n @click.prevent.stop=\"onEdit(index)\"\n >\n 请点击填入名字\n </div>\n <a-input\n :default-value=\"cardItem.label\"\n size=\"small\"\n v-if=\"editLabelList[index]\"\n v-focus\n @blur=\"onCommitLabelChange($event, index)\"\n @pressEnter=\"onCommitLabelChange($event, index)\"\n @change=\"onLabelChange\"\n />\n <span\n class=\"calculation-icon\"\n @click.prevent.stop=\"\n onShowCalculationModal('edit', cardItem, index)\n \"\n v-if=\"['FORMULA', 'BUILT_IN'].includes(cardItem.calcType)\"\n >\n fx\n </span>\n <a-dropdown :trigger=\"['click']\">\n <setting-outlined class=\"setting-icon\" />\n <template #overlay>\n <a-menu>\n <!-- 仅在分类、系列中设置 -->\n <template\n v-if=\"['classificationList', 'seriesList'].includes(type)\"\n >\n <!-- 升序 -->\n <a-sub-menu\n :title=\"handleSortTitle(cardItem, 'ASC')\"\n key=\"0\"\n >\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"sortItem in sortList\"\n :key=\"sortItem.id\"\n @click=\"onSort(sortItem, index, 'ASC')\"\n >\n {{ sortItem.label }}\n </a-menu-item>\n </a-sub-menu>\n <!-- 降序 -->\n <a-sub-menu\n :title=\"handleSortTitle(cardItem, 'DESC')\"\n key=\"1\"\n >\n <a-menu-item\n class=\"menu-item\"\n style=\"white-space: nowrap\"\n v-for=\"sortItem in sortList\"\n :key=\"sortItem.id\"\n @click=\"onSort(sortItem, index, 'DESC')\"\n >\n {{ sortItem.label }}\n </a-menu-item>\n </a-sub-menu>\n <!-- 自定义排序 -->\n <a-menu-item @click=\"showCustomSortModal(cardItem, index)\">\n {{ handleCustomSortTitle(cardItem) }}\n </a-menu-item>\n <a-menu-divider />\n <!-- 自定义分组 -->\n <a-menu-item @click=\"showCustomGroupModal(cardItem, index)\">\n {{ handleCustomGroupTitle(cardItem) }}\n </a-menu-item>\n <a-menu-divider />\n </template>\n <!-- 过滤 -->\n <a-menu-item @click=\"showFilterModal(cardItem, index)\">\n {{ handleFilterTitle(cardItem) }}\n </a-menu-item>\n <template\n v-if=\"!['classificationList', 'seriesList'].includes(type)\"\n >\n <!-- 汇总方式 -->\n <a-sub-menu :title=\"handleAggregateTitle(cardItem.aggregate)\">\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"aggregate in aggregateList\"\n :key=\"aggregate.value\"\n @click=\"onAggregateChange(aggregate.value, index)\"\n >\n {{ aggregate.name }}\n </a-menu-item>\n </a-sub-menu>\n <a-menu-divider />\n </template>\n </a-menu>\n </template>\n </a-dropdown>\n <delete-outlined\n class=\"delete-icon\"\n @click.prevent=\"onDelete(index)\"\n />\n </div>\n </a-checkbox>\n </div>\n <custom-sort-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"customSortModalRef\"\n />\n <custom-group-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"customGroupModalRef\"\n />\n <filter-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"filterModalRef\"\n />\n <calculation-modal\n :type=\"type\"\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :mode=\"calculationModalMode\"\n ref=\"calculationModalRef\"\n />\n </a-card>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, watch, inject } from 'vue'\nimport {\n Card as ACard,\n Checkbox as ACheckbox,\n Input as AInput,\n Dropdown as ADropdown,\n Menu as AMenu,\n SubMenu as ASubMenu,\n MenuItem as AMenuItem,\n MenuDivider as AMenuDivider\n} from 'ant-design-vue'\nimport {\n SettingOutlined,\n DeleteOutlined,\n PlusOutlined\n} from '@ant-design/icons-vue'\nimport focus from '@/directives/focus'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nimport CustomSortModal from './CustomSortModal.vue'\nimport CustomGroupModal from './CustomGroupModal.vue'\nimport FilterModal from './filter-modal'\nimport CalculationModal from './calculation-modal'\nexport default defineComponent({\n name: 'DataConfigCard',\n directives: {\n focus\n },\n components: {\n CalculationModal,\n FilterModal,\n CustomGroupModal,\n SettingOutlined,\n DeleteOutlined,\n CustomSortModal,\n PlusOutlined,\n ACard,\n ACheckbox,\n AInput,\n ADropdown,\n AMenu,\n ASubMenu,\n AMenuItem,\n AMenuDivider\n },\n props: {\n title: {\n type: String,\n default: ''\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n setup (props) {\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const handleListItemData = (listData: string = '{}') => {\n try {\n const data = JSON.parse(listData)\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n if (['classificationList', 'seriesList'].includes(props.type)) {\n list.forEach((item: { [key: string]: any }) => {\n item.show = false\n })\n }\n reNameSame(list, data)\n list.push(data)\n updateGraphicConfig({\n [props.type]: list\n })\n } catch (e) {\n console.error(e)\n }\n }\n const handleCardItemData = (cardData: string = '{}') => {\n try {\n const { cardItem, type, index } = JSON.parse(cardData)\n if (type === props.type) return\n // 添加新元素\n const currentList = unref(graphicConfig)[props.type]?.slice() || []\n reNameSame(currentList, cardItem)\n currentList.push(cardItem)\n // 删除原先的元素\n const originalList = unref(graphicConfig)[type].slice() || []\n originalList.splice(index, 1)\n // 更新\n updateGraphicConfig({\n [props.type]: currentList,\n [type]: originalList\n })\n } catch (e) {\n console.error(e)\n }\n }\n function reNameSame (list: any, addItem: any) {\n const sameNums = []\n list.forEach((checkItem: any) => {\n if (checkItem.label.includes(addItem.label)) {\n sameNums.push(checkItem.label.split(addItem.label)[1])\n }\n })\n if (sameNums.length >= 1) {\n for (let i = 1; i <= sameNums.length; i++) {\n if (!sameNums.includes(i + '')) {\n addItem.label = addItem.label + i\n break\n }\n }\n }\n }\n const onCheckboxChange = (event, index: number) => {\n const value = (event.target as any)?.checked\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n if (['classificationList', 'seriesList'].includes(props.type)) {\n list.forEach((item: { [key: string]: any }) => {\n item.show = false\n })\n }\n list[index].show = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onDropStart = (\n event: DragEvent,\n cardItem: { [key: string]: any },\n index: number\n ) => {\n event.dataTransfer?.setData(\n 'card-item',\n JSON.stringify({\n cardItem,\n type: props.type,\n index\n })\n )\n }\n const onDropEnd = (index: string) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list.splice(index, 1)\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onDrop = (event: DragEvent) => {\n // 接受列表 或者 卡片之间的数据\n const listItemData = event.dataTransfer?.getData('list-item')\n const cardItemData = event.dataTransfer?.getData('card-item')\n if (listItemData) {\n handleListItemData(listItemData)\n } else if (cardItemData) {\n handleCardItemData(cardItemData)\n }\n }\n const onDragover = () => {}\n const cardItemList = computed(() => unref(graphicConfig)[props.type] || [])\n const editLabelList = ref<boolean[]>([])\n let isLabelChange = false\n watch(\n () => unref(cardItemList).length,\n (length) => {\n editLabelList.value = new Array(length).fill(false)\n },\n {\n flush: 'post',\n immediate: true\n }\n )\n const onDelete = (index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list.splice(index, 1)\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onEdit = (index: number) => {\n editLabelList.value[index] = true\n }\n const onLabelChange = () => {\n isLabelChange = true\n }\n const onCommitLabelChange = (event: Event, index: number) => {\n editLabelList.value[index] = false\n if (isLabelChange) {\n const value = (event.target as any)?.value\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n list[index].label = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n isLabelChange = false\n }\n const DEFAULT = 'DEFAULT'\n const sortList = computed(() => {\n // 自身分类加指标\n const list = unref(graphicConfig)[props.type] || []\n const {\n leftAxisList = [],\n rightAxisList = [],\n indicators = []\n } = unref(graphicConfig) || {}\n return [\n {\n id: DEFAULT,\n label: '默认',\n name: '默认'\n },\n ...list,\n ...leftAxisList,\n ...rightAxisList,\n ...indicators\n ]\n })\n // 升降序\n const onSort = (\n item: { [key: string]: any } = {},\n index: number,\n order: 'ASC' | 'DESC' = 'ASC'\n ) => {\n const { label, name, id } = item\n const list = unref(graphicConfig)[props.type]?.slice() || []\n if (id === DEFAULT) {\n delete list[index].sort\n } else {\n list[index].sort = {\n label,\n columnName: name,\n type: 'NORMAL',\n order\n }\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const handleSortTitle = (\n item: { [key: string]: any } = {},\n type: 'ASC' | 'DESC' = 'ASC'\n ) => {\n const map = {\n ASC: '升序',\n DESC: '降序'\n }\n const text = map[type]\n const { sort } = item\n const { label, order } = sort || {}\n return label && order === type ? `${text}(${label})` : text\n }\n const currentItem = ref()\n const currentIndex = ref()\n const customSortModalRef = ref()\n const customGroupModalRef = ref()\n const showCustomSortModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(customSortModalRef)?.showModal()\n }\n const handleCustomSortTitle = (item: { [key: string]: any }) => {\n return '自定义排序' + (item?.sort?.type === 'CUSTOM' ? '(已配置)' : '')\n }\n const showCustomGroupModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(customGroupModalRef)?.showModal()\n }\n const handleCustomGroupTitle = (item: { [key: string]: any }) => {\n return '自定义分组' + (item?.customGroup != null ? '(已配置)' : '')\n }\n // 汇总方式\n const aggregateList = [\n {\n name: '总和',\n value: 'SUM'\n },\n {\n name: '平均数',\n value: 'AVG'\n },\n {\n name: '最小值',\n value: 'MIN'\n },\n {\n name: '最大值',\n value: 'MAX'\n },\n {\n name: '计数',\n value: 'COUNT'\n }\n ]\n const onAggregateChange = (value: string, index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list[index].aggregate = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const handleAggregateTitle = (\n key: 'SUM' | 'AVG' | 'MIN' | 'MAX' | 'COUNT' = 'SUM'\n ) => {\n const map = {\n SUM: '总和',\n AVG: '平均数',\n MIN: '最小值',\n MAX: '最大值',\n COUNT: '计数'\n }\n return `汇总方式(${map[key]})`\n }\n\n const handleFilterTitle = (item: { [key: string]: any } = {}) => {\n return (\n '过滤' +\n (item?.conditions && item?.conditions?.length > 0 ? '(已配置)' : '')\n )\n }\n const filterModalRef = ref()\n const showFilterModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(filterModalRef).showModal()\n }\n const calculationModalRef = ref()\n const calculationModalMode = ref<'add' | 'edit'>('add')\n const onShowCalculationModal = (\n mode: 'add' | 'edit',\n item?: { [key: string]: any },\n index?: number\n ) => {\n calculationModalMode.value = mode\n if (mode === 'edit') {\n currentItem.value = item\n currentIndex.value = index\n }\n unref(calculationModalRef)?.showModal()\n }\n return {\n onCheckboxChange,\n onDrop,\n onDropStart,\n onDropEnd,\n onDragover,\n cardItemList,\n onDelete,\n onEdit,\n onCommitLabelChange,\n sortList,\n onSort,\n handleSortTitle,\n showCustomSortModal,\n customSortModalRef,\n currentItem,\n currentIndex,\n handleCustomSortTitle,\n handleCustomGroupTitle,\n customGroupModalRef,\n showCustomGroupModal,\n editLabelList,\n onLabelChange,\n aggregateList,\n onAggregateChange,\n handleAggregateTitle,\n onShowCalculationModal,\n handleFilterTitle,\n filterModalRef,\n showFilterModal,\n calculationModalRef,\n calculationModalMode\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-config-card {\n display: flex;\n flex-direction: column;\n height: 280px;\n}\n\n.card-item {\n background-color: rgba(161, 212, 230, 0.3);\n width: 100%;\n height: 100%;\n padding: 5px;\n margin: 3px 0;\n}\n\n.title {\n display: flex;\n justify-content: space-between;\n}\n\n.add-calculation {\n cursor: pointer;\n font-size: 13px;\n color: #3f8ce8;\n line-height: 24px;\n}\n\n.add-calculation-icon {\n color: #3f8ce8;\n margin-right: 3px;\n}\n\n.ant-checkbox + span {\n width: 100% !important;\n}\n\n.card-item-inner {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.name {\n width: 100%;\n}\n\n.placeholder {\n color: red;\n}\n\n.setting-icon {\n color: #545;\n margin-left: 5px;\n}\n\n.delete-icon {\n color: #ff0000;\n margin-left: 5px;\n}\n\n.calculation-icon {\n font-weight: bold;\n font-style: italic;\n}\n\n.menu-item {\n white-space: nowrap;\n}\n</style>\n\n<style lang=\"less\">\n.data-config-card {\n .ant-card-body {\n overflow-y: auto;\n }\n}\n\n.card-item {\n .ant-checkbox + span {\n width: 100%;\n }\n}\n</style>\n","<template>\n <a-card\n class=\"data-config-card\"\n :head-style=\"{\n backgroundColor: 'rgba(161,212,230,0.3)',\n minHeight: '38px',\n padding: '0 10px'\n }\"\n @dragover.prevent.stop\n @drop.prevent.stop=\"onDrop\"\n >\n <template #title>\n <div class=\"title\">\n <div class=\"title-text\">{{ title }}</div>\n <div\n class=\"add-calculation\"\n v-if=\"!['classificationList', 'seriesList', 'rowHeaderList'].includes(type)\"\n @click.prevent.stop=\"onShowCalculationModal('add')\"\n >\n <plus-outlined class=\"add-calculation-icon\" />\n <span>添加计算指标</span>\n </div>\n </div>\n </template>\n <div\n v-for=\"(cardItem, index) in cardItemList\"\n :key=\"index\"\n :draggable=\"true\"\n @dragstart.stop=\"onDropStart($event, cardItem, index)\"\n @dragover.prevent.stop\n >\n <a-checkbox\n class=\"card-item\"\n :checked=\"cardItem.show\"\n @change=\"onCheckboxChange($event, index)\"\n >\n <!-- editLabelList 和 labelList 都为 cardItemList 映射列表,用于修改label交互 -->\n <!-- editLabelList 是否修改名字, 变为输入框,值为 boolean -->\n <!-- labelList,label 列表 -->\n <div class=\"card-item-inner\">\n <div\n class=\"name\"\n v-if=\"!editLabelList[index] && cardItem.label\"\n @click.prevent.stop=\"onEdit(index)\"\n >\n {{ cardItem.title || cardItem.label }}\n </div>\n <div\n class=\"name placeholder\"\n v-if=\"!editLabelList[index] && !cardItem.label\"\n @click.prevent.stop=\"onEdit(index)\"\n >\n 请点击填入名字\n </div>\n <a-input\n :default-value=\"cardItem.label\"\n size=\"small\"\n v-if=\"editLabelList[index]\"\n v-focus\n @blur=\"onCommitLabelChange($event, index)\"\n @pressEnter=\"onCommitLabelChange($event, index)\"\n @change=\"onLabelChange\"\n />\n <span\n class=\"calculation-icon\"\n @click.prevent.stop=\"\n onShowCalculationModal('edit', cardItem, index)\n \"\n v-if=\"['FORMULA', 'BUILT_IN'].includes(cardItem.calcType)\"\n >\n fx\n </span>\n <a-dropdown :trigger=\"['click']\">\n <setting-outlined class=\"setting-icon\" />\n <template #overlay>\n <a-menu>\n <!-- 仅在分类、系列中设置 -->\n <template\n v-if=\"['classificationList', 'seriesList'].includes(type)\"\n >\n <!-- 升序 -->\n <a-sub-menu\n :title=\"handleSortTitle(cardItem, 'ASC')\"\n key=\"0\"\n >\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"sortItem in sortList\"\n :key=\"sortItem.id\"\n @click=\"onSort(sortItem, index, 'ASC')\"\n >\n {{ sortItem.label }}\n </a-menu-item>\n </a-sub-menu>\n <!-- 降序 -->\n <a-sub-menu\n :title=\"handleSortTitle(cardItem, 'DESC')\"\n key=\"1\"\n >\n <a-menu-item\n class=\"menu-item\"\n style=\"white-space: nowrap\"\n v-for=\"sortItem in sortList\"\n :key=\"sortItem.id\"\n @click=\"onSort(sortItem, index, 'DESC')\"\n >\n {{ sortItem.label }}\n </a-menu-item>\n </a-sub-menu>\n <!-- 自定义排序 -->\n <a-menu-item @click=\"showCustomSortModal(cardItem, index)\">\n {{ handleCustomSortTitle(cardItem) }}\n </a-menu-item>\n <a-menu-divider />\n <!-- 自定义分组 -->\n <a-menu-item @click=\"showCustomGroupModal(cardItem, index)\">\n {{ handleCustomGroupTitle(cardItem) }}\n </a-menu-item>\n <a-menu-divider />\n </template>\n <!-- 过滤 -->\n <a-menu-item @click=\"showFilterModal(cardItem, index)\">\n {{ handleFilterTitle(cardItem) }}\n </a-menu-item>\n <template\n v-if=\"!['classificationList', 'seriesList'].includes(type)\"\n >\n <!-- 汇总方式 -->\n <a-sub-menu :title=\"handleAggregateTitle(cardItem.aggregate)\">\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"aggregate in aggregateList\"\n :key=\"aggregate.value\"\n @click=\"onAggregateChange(aggregate.value, index)\"\n >\n {{ aggregate.name }}\n </a-menu-item>\n </a-sub-menu>\n <a-menu-divider />\n </template>\n </a-menu>\n </template>\n </a-dropdown>\n <delete-outlined\n class=\"delete-icon\"\n @click.prevent=\"onDelete(index)\"\n />\n </div>\n </a-checkbox>\n </div>\n <custom-sort-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"customSortModalRef\"\n />\n <custom-group-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"customGroupModalRef\"\n />\n <filter-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"filterModalRef\"\n />\n <calculation-modal\n :type=\"type\"\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :mode=\"calculationModalMode\"\n ref=\"calculationModalRef\"\n />\n </a-card>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, watch, inject } from 'vue'\nimport {\n Card as ACard,\n Checkbox as ACheckbox,\n Input as AInput,\n Dropdown as ADropdown,\n Menu as AMenu,\n SubMenu as ASubMenu,\n MenuItem as AMenuItem,\n MenuDivider as AMenuDivider\n} from 'ant-design-vue'\nimport {\n SettingOutlined,\n DeleteOutlined,\n PlusOutlined\n} from '@ant-design/icons-vue'\nimport focus from '@/directives/focus'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nimport CustomSortModal from './CustomSortModal.vue'\nimport CustomGroupModal from './CustomGroupModal.vue'\nimport FilterModal from './filter-modal'\nimport CalculationModal from './calculation-modal'\nexport default defineComponent({\n name: 'DataConfigCard',\n directives: {\n focus\n },\n components: {\n CalculationModal,\n FilterModal,\n CustomGroupModal,\n SettingOutlined,\n DeleteOutlined,\n CustomSortModal,\n PlusOutlined,\n ACard,\n ACheckbox,\n AInput,\n ADropdown,\n AMenu,\n ASubMenu,\n AMenuItem,\n AMenuDivider\n },\n props: {\n title: {\n type: String,\n default: ''\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n setup (props) {\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const handleListItemData = (listData: string = '{}') => {\n try {\n const data = JSON.parse(listData)\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n if (['classificationList', 'seriesList'].includes(props.type)) {\n list.forEach((item: { [key: string]: any }) => {\n item.show = false\n })\n }\n reNameSame(list, data)\n list.push(data)\n updateGraphicConfig({\n [props.type]: list\n })\n } catch (e) {\n console.error(e)\n }\n }\n const handleCardItemData = (cardData: string = '{}') => {\n try {\n const { cardItem, type, index } = JSON.parse(cardData)\n if (type === props.type) return\n // 添加新元素\n const currentList = unref(graphicConfig)[props.type]?.slice() || []\n reNameSame(currentList, cardItem)\n currentList.push(cardItem)\n // 删除原先的元素\n const originalList = unref(graphicConfig)[type].slice() || []\n originalList.splice(index, 1)\n // 更新\n updateGraphicConfig({\n [props.type]: currentList,\n [type]: originalList\n })\n } catch (e) {\n console.error(e)\n }\n }\n function reNameSame (list: any, addItem: any) {\n const sameNums = []\n list.forEach((checkItem: any) => {\n if (checkItem.label.includes(addItem.label)) {\n sameNums.push(checkItem.label.split(addItem.label)[1])\n }\n })\n if (sameNums.length >= 1) {\n for (let i = 1; i <= sameNums.length; i++) {\n if (!sameNums.includes(i + '')) {\n addItem.label = addItem.label + i\n break\n }\n }\n }\n }\n const onCheckboxChange = (event, index: number) => {\n const value = (event.target as any)?.checked\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n if (['classificationList', 'seriesList'].includes(props.type)) {\n list.forEach((item: { [key: string]: any }) => {\n item.show = false\n })\n }\n list[index].show = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onDropStart = (\n event: DragEvent,\n cardItem: { [key: string]: any },\n index: number\n ) => {\n event.dataTransfer?.setData(\n 'card-item',\n JSON.stringify({\n cardItem,\n type: props.type,\n index\n })\n )\n }\n const onDropEnd = (index: string) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list.splice(index, 1)\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onDrop = (event: DragEvent) => {\n // 接受列表 或者 卡片之间的数据\n const listItemData = event.dataTransfer?.getData('list-item')\n const cardItemData = event.dataTransfer?.getData('card-item')\n if (listItemData) {\n handleListItemData(listItemData)\n } else if (cardItemData) {\n handleCardItemData(cardItemData)\n }\n }\n const onDragover = () => {}\n const cardItemList = computed(() => unref(graphicConfig)[props.type] || [])\n const editLabelList = ref<boolean[]>([])\n let isLabelChange = false\n watch(\n () => unref(cardItemList).length,\n (length) => {\n editLabelList.value = new Array(length).fill(false)\n },\n {\n flush: 'post',\n immediate: true\n }\n )\n const onDelete = (index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list.splice(index, 1)\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onEdit = (index: number) => {\n editLabelList.value[index] = true\n }\n const onLabelChange = () => {\n isLabelChange = true\n }\n const onCommitLabelChange = (event: Event, index: number) => {\n editLabelList.value[index] = false\n if (isLabelChange) {\n const value = (event.target as any)?.value\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n list[index].label = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n isLabelChange = false\n }\n const DEFAULT = 'DEFAULT'\n const sortList = computed(() => {\n // 自身分类加指标\n const list = unref(graphicConfig)[props.type] || []\n const {\n leftAxisList = [],\n rightAxisList = [],\n indicators = []\n } = unref(graphicConfig) || {}\n return [\n {\n id: DEFAULT,\n label: '默认',\n name: '默认'\n },\n ...list,\n ...leftAxisList,\n ...rightAxisList,\n ...indicators\n ]\n })\n // 升降序\n const onSort = (\n item: { [key: string]: any } = {},\n index: number,\n order: 'ASC' | 'DESC' = 'ASC'\n ) => {\n const { label, name, id } = item\n const list = unref(graphicConfig)[props.type]?.slice() || []\n if (id === DEFAULT) {\n delete list[index].sort\n } else {\n list[index].sort = {\n label,\n columnName: name,\n type: 'NORMAL',\n order\n }\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const handleSortTitle = (\n item: { [key: string]: any } = {},\n type: 'ASC' | 'DESC' = 'ASC'\n ) => {\n const map = {\n ASC: '升序',\n DESC: '降序'\n }\n const text = map[type]\n const { sort } = item\n const { label, order } = sort || {}\n return label && order === type ? `${text}(${label})` : text\n }\n const currentItem = ref()\n const currentIndex = ref()\n const customSortModalRef = ref()\n const customGroupModalRef = ref()\n const showCustomSortModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(customSortModalRef)?.showModal()\n }\n const handleCustomSortTitle = (item: { [key: string]: any }) => {\n return '自定义排序' + (item?.sort?.type === 'CUSTOM' ? '(已配置)' : '')\n }\n const showCustomGroupModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(customGroupModalRef)?.showModal()\n }\n const handleCustomGroupTitle = (item: { [key: string]: any }) => {\n return '自定义分组' + (item?.customGroup != null ? '(已配置)' : '')\n }\n // 汇总方式\n const aggregateList = [\n {\n name: '总和',\n value: 'SUM'\n },\n {\n name: '平均数',\n value: 'AVG'\n },\n {\n name: '最小值',\n value: 'MIN'\n },\n {\n name: '最大值',\n value: 'MAX'\n },\n {\n name: '计数',\n value: 'COUNT'\n }\n ]\n const onAggregateChange = (value: string, index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list[index].aggregate = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const handleAggregateTitle = (\n key: 'SUM' | 'AVG' | 'MIN' | 'MAX' | 'COUNT' = 'SUM'\n ) => {\n const map = {\n SUM: '总和',\n AVG: '平均数',\n MIN: '最小值',\n MAX: '最大值',\n COUNT: '计数'\n }\n return `汇总方式(${map[key]})`\n }\n\n const handleFilterTitle = (item: { [key: string]: any } = {}) => {\n return (\n '过滤' +\n (item?.conditions && item?.conditions?.length > 0 ? '(已配置)' : '')\n )\n }\n const filterModalRef = ref()\n const showFilterModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(filterModalRef).showModal()\n }\n const calculationModalRef = ref()\n const calculationModalMode = ref<'add' | 'edit'>('add')\n const onShowCalculationModal = (\n mode: 'add' | 'edit',\n item?: { [key: string]: any },\n index?: number\n ) => {\n calculationModalMode.value = mode\n if (mode === 'edit') {\n currentItem.value = item\n currentIndex.value = index\n }\n unref(calculationModalRef)?.showModal()\n }\n return {\n onCheckboxChange,\n onDrop,\n onDropStart,\n onDropEnd,\n onDragover,\n cardItemList,\n onDelete,\n onEdit,\n onCommitLabelChange,\n sortList,\n onSort,\n handleSortTitle,\n showCustomSortModal,\n customSortModalRef,\n currentItem,\n currentIndex,\n handleCustomSortTitle,\n handleCustomGroupTitle,\n customGroupModalRef,\n showCustomGroupModal,\n editLabelList,\n onLabelChange,\n aggregateList,\n onAggregateChange,\n handleAggregateTitle,\n onShowCalculationModal,\n handleFilterTitle,\n filterModalRef,\n showFilterModal,\n calculationModalRef,\n calculationModalMode\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-config-card {\n display: flex;\n flex-direction: column;\n height: 280px;\n}\n\n.card-item {\n background-color: rgba(161, 212, 230, 0.3);\n width: 100%;\n height: 100%;\n padding: 5px;\n margin: 3px 0;\n}\n\n.title {\n display: flex;\n justify-content: space-between;\n}\n\n.add-calculation {\n cursor: pointer;\n font-size: 13px;\n color: #3f8ce8;\n line-height: 24px;\n}\n\n.add-calculation-icon {\n color: #3f8ce8;\n margin-right: 3px;\n}\n\n.ant-checkbox + span {\n width: 100% !important;\n}\n\n.card-item-inner {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.name {\n width: 100%;\n}\n\n.placeholder {\n color: red;\n}\n\n.setting-icon {\n color: #545;\n margin-left: 5px;\n}\n\n.delete-icon {\n color: #ff0000;\n margin-left: 5px;\n}\n\n.calculation-icon {\n font-weight: bold;\n font-style: italic;\n}\n\n.menu-item {\n white-space: nowrap;\n}\n</style>\n\n<style lang=\"less\">\n.data-config-card {\n .ant-card-body {\n overflow-y: auto;\n }\n}\n\n.card-item {\n .ant-checkbox + span {\n width: 100%;\n }\n}\n</style>\n","export const cardTypeMap = {\n classificationList: {\n title: '分类'\n },\n seriesList: {\n title: '系列'\n },\n leftAxisList: {\n title: '左值轴'\n },\n rightAxisList: {\n title: '右值轴'\n },\n indicators: {\n title: '数值'\n },\n queryColumnList: {\n title: '数据'\n },\n rowHeaderList: {\n title: '行表头'\n }\n}\n","<template>\n <div class=\"data-group\">\n <template v-for=\"card in cards\" :key=\"card.type\">\n <data-config-card class=\"data-config-card\" :type=\"card.type\" v-bind=\"card\" />\n </template>\n </div>\n</template>\n<script lang=\"ts\">\nimport { computed, defineComponent, reactive, ref, unref, inject } from 'vue'\nimport DataConfigCard from './data-config-card'\nimport { cardTypeMap } from './data'\nimport { SELECTED_COMPONENT, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nexport default defineComponent({\n name: 'DataConfigGroup',\n components: {\n DataConfigCard\n },\n setup () {\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n const selectedComponentType = computed(() => unref(selectedComponent)?.type)\n const isGroupTable = computed(() => !!unref(selectedComponent)?.isGroupTable)\n const cardsMap = ref({})\n const cards = reactive<{ [key: string]: any }[]>([])\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const hasOwn = (v: object, k: string | symbol): k is keyof typeof v => Object.prototype.hasOwnProperty.call(v, k)\n const handleGraphicConfigMap = () => {\n const graphicConfig = cloneDeep(unref(selectedComponent)?.graphicConfig)\n const allMap = ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList', 'indicators', 'rowHeaderList', 'queryColumnList']\n const graphicConfigMap = {\n // leftAxisList + rightAxisList = indicatorList,只是 location 是 LEFT,RIGHT\n pie: ['classificationList', 'indicators'],\n bar: ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList'],\n line: ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList'],\n comboGraph: ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList'],\n radar: ['classificationList', 'seriesList', 'leftAxisList'],\n table: isGroupTable.value ? ['rowHeaderList', 'indicators'] : ['queryColumnList'],\n text: ['indicators'],\n proportion: ['indicators'],\n select: ['queryColumnList'],\n checkbox: ['queryColumnList'],\n radio: ['queryColumnList']\n } as { [key: string]: any }\n const startStr = 'ecan'\n let type = unref(selectedComponentType) as string\n if (type.startsWith(startStr)) {\n const startIndex = startStr.length\n type = type.slice(startIndex, startIndex + 1)?.toLowerCase() + type.slice(startIndex + 1)\n }\n const componentMapKeys = graphicConfigMap[type]\n const map = cardTypeMap as { [key: string]: any }\n const len = componentMapKeys?.length || 0\n for (let i = 0; i < len; i++) {\n const componentMapKey = (componentMapKeys[i]) as string\n // 为空直接跳过\n if (!componentMapKey) break\n cards.push({\n ...map[componentMapKey],\n type: componentMapKey\n })\n }\n\n // 用于切换graphicConfig变量后清空无效的变量,比如table切到分组表的时候,要把queryColumnList=[]\n for (const item of allMap) {\n if (hasOwn(graphicConfig, item) && !componentMapKeys.find((v: string) => v === item)) {\n graphicConfig[item] = []\n }\n }\n updateGraphicConfig(graphicConfig)\n }\n\n handleGraphicConfigMap()\n\n return {\n cardsMap,\n cards\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-group {\n display: flex;\n}\n\n.data-config-card {\n width: 25%;\n\n &:not(:last-child) {\n margin-right: 15px;\n }\n}\n</style>\n\n<style lang=\"less\">\n.data-group {\n .ant-card-body {\n padding: 10px;\n }\n}\n</style>\n","<template>\n <div class=\"data-group\">\n <template v-for=\"card in cards\" :key=\"card.type\">\n <data-config-card class=\"data-config-card\" :type=\"card.type\" v-bind=\"card\" />\n </template>\n </div>\n</template>\n<script lang=\"ts\">\nimport { computed, defineComponent, reactive, ref, unref, inject } from 'vue'\nimport DataConfigCard from './data-config-card'\nimport { cardTypeMap } from './data'\nimport { SELECTED_COMPONENT, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nexport default defineComponent({\n name: 'DataConfigGroup',\n components: {\n DataConfigCard\n },\n setup () {\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n const selectedComponentType = computed(() => unref(selectedComponent)?.type)\n const isGroupTable = computed(() => !!unref(selectedComponent)?.isGroupTable)\n const cardsMap = ref({})\n const cards = reactive<{ [key: string]: any }[]>([])\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const hasOwn = (v: object, k: string | symbol): k is keyof typeof v => Object.prototype.hasOwnProperty.call(v, k)\n const handleGraphicConfigMap = () => {\n const graphicConfig = cloneDeep(unref(selectedComponent)?.graphicConfig)\n const allMap = ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList', 'indicators', 'rowHeaderList', 'queryColumnList']\n const graphicConfigMap = {\n // leftAxisList + rightAxisList = indicatorList,只是 location 是 LEFT,RIGHT\n pie: ['classificationList', 'indicators'],\n bar: ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList'],\n line: ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList'],\n comboGraph: ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList'],\n radar: ['classificationList', 'seriesList', 'leftAxisList'],\n table: isGroupTable.value ? ['rowHeaderList', 'indicators'] : ['queryColumnList'],\n text: ['indicators'],\n proportion: ['indicators'],\n select: ['queryColumnList'],\n checkbox: ['queryColumnList'],\n radio: ['queryColumnList']\n } as { [key: string]: any }\n const startStr = 'ecan'\n let type = unref(selectedComponentType) as string\n if (type.startsWith(startStr)) {\n const startIndex = startStr.length\n type = type.slice(startIndex, startIndex + 1)?.toLowerCase() + type.slice(startIndex + 1)\n }\n const componentMapKeys = graphicConfigMap[type]\n const map = cardTypeMap as { [key: string]: any }\n const len = componentMapKeys?.length || 0\n for (let i = 0; i < len; i++) {\n const componentMapKey = (componentMapKeys[i]) as string\n // 为空直接跳过\n if (!componentMapKey) break\n cards.push({\n ...map[componentMapKey],\n type: componentMapKey\n })\n }\n\n // 用于切换graphicConfig变量后清空无效的变量,比如table切到分组表的时候,要把queryColumnList=[]\n for (const item of allMap) {\n if (hasOwn(graphicConfig, item) && !componentMapKeys.find((v: string) => v === item)) {\n graphicConfig[item] = []\n }\n }\n updateGraphicConfig(graphicConfig)\n }\n\n handleGraphicConfigMap()\n\n return {\n cardsMap,\n cards\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-group {\n display: flex;\n}\n\n.data-config-card {\n width: 25%;\n\n &:not(:last-child) {\n margin-right: 15px;\n }\n}\n</style>\n\n<style lang=\"less\">\n.data-group {\n .ant-card-body {\n padding: 10px;\n }\n}\n</style>\n","export interface PropsGroup {\r\n title?: string // 标题\r\n enableProps?: string // 是否能使用(禁用)\r\n onlyType?: string | string [],\r\n excludeType?: string | string []\r\n props: string [] // 属性组\r\n}\r\n\r\nexport type PropsGroups = PropsGroup[]\r\n\r\nexport interface DetailPropsGroup {\r\n title?: string\r\n enableProps?: boolean\r\n onlyType?: string | string []\r\n excludeType?: string | string []\r\n // enablePropsName 就是 PropsGroup 的 enableProps\r\n enablePropsName?: string\r\n props: {\r\n [key: string]: any\r\n }\r\n}\r\n\r\nexport type DetailPropsGroups = DetailPropsGroup[]\r\n\r\n// 没有title属性直接展示属性\r\n// 有tilt属性才有折叠面板\r\n// 此属性控制属性配置面板的顺序\r\nexport const propsGroups: PropsGroups = [\r\n {\r\n title: '基本属性',\r\n props: [\r\n 'name',\r\n 'width',\r\n 'height',\r\n 'colors'\r\n ]\r\n },\r\n {\r\n title: '系列',\r\n props: [\r\n 'seriesTypes'\r\n ]\r\n },\r\n {\r\n title: '折线图',\r\n onlyType: ['line', 'comboGraph'],\r\n props: [\r\n 'areaStyleOpacity',\r\n 'smooth',\r\n 'lineStyleWidth',\r\n 'symbolSize'\r\n ]\r\n },\r\n {\r\n title: '柱状图',\r\n onlyType: ['bar', 'comboGraph'],\r\n props: [\r\n 'barWidth',\r\n 'isUseHorizontalAxis',\r\n 'axisInverse',\r\n 'isStack',\r\n 'labelShow'\r\n ]\r\n },\r\n {\r\n title: '饼图',\r\n onlyType: 'pie',\r\n props: [\r\n 'centerTop',\r\n 'centerLeft',\r\n 'innerRadius',\r\n 'outerRadius',\r\n 'roseType',\r\n 'minAngle'\r\n ]\r\n },\r\n {\r\n title: '布局',\r\n props: [\r\n 'gridTop',\r\n 'gridBottom',\r\n 'gridLeft',\r\n 'gridRight',\r\n 'gridContainLabel'\r\n ]\r\n },\r\n {\r\n title: 'x轴',\r\n props: [\r\n 'xAxisLabelColor',\r\n 'xAxisLineStyleColor',\r\n 'xAxisLabelWidth',\r\n 'xAxisLabelOverflow',\r\n 'xAxisLabelRotate',\r\n 'xAxisTickShow',\r\n 'xAxisSplitLineShow',\r\n 'xAxisSplitLineStyleColor',\r\n 'xAxisLabelFormatter',\r\n 'xAxisInverse',\r\n 'xAxisMinInterval',\r\n 'xAxisLabelInterval'\r\n ]\r\n },\r\n {\r\n title: 'y轴',\r\n props: [\r\n 'yAxisLabelColor',\r\n 'yAxisLineStyleColor',\r\n 'yAxisLineAlwaysDisplay',\r\n 'yAxisLabelWidth',\r\n 'yAxisLabelOverflow',\r\n 'yAxisLabelRotate',\r\n 'yAxisSplitLineShow',\r\n 'yAxisSplitLineStyleColor',\r\n 'yAxisLabelFormatter',\r\n 'yAxisInverse',\r\n 'yAxisMinInterval',\r\n 'yAxis'\r\n ]\r\n },\r\n {\r\n title: '标签',\r\n enableProps: 'labelShow',\r\n props: [\r\n 'labelFormatter',\r\n 'labelColor',\r\n 'isUseLabelColors',\r\n 'labelFontSize',\r\n 'labelPosition'\r\n ]\r\n },\r\n {\r\n title: '标签引导线',\r\n enableProps: 'labelLineShow',\r\n props: [\r\n 'labelLineLength',\r\n 'labelLineLength2'\r\n ]\r\n },\r\n {\r\n title: '图例',\r\n enableProps: 'legendShow',\r\n props: [\r\n 'legendTextStyleColor',\r\n 'legendTop',\r\n 'legendLeft',\r\n 'legendOrient'\r\n ]\r\n },\r\n {\r\n title: '提示框',\r\n enableProps: 'tooltipShow',\r\n props: [\r\n 'tooltipTrigger',\r\n 'tooltipFormatter',\r\n 'tooltipTextStyleColor'\r\n ]\r\n },\r\n {\r\n title: '工具栏',\r\n enableProps: 'toolboxShow',\r\n props: [\r\n 'toolboxOrient',\r\n 'toolboxItemSize',\r\n 'toolboxItemGap',\r\n 'toolboxLeft',\r\n 'toolboxTop',\r\n 'toolboxLocation',\r\n 'toolboxDownloadShow',\r\n 'toolboxDataZoomShow',\r\n 'toolboxInfoShow',\r\n 'toolboxDownloadUrl',\r\n 'toolboxInfoText'\r\n ]\r\n }\r\n]\r\n","export interface PropToAttributeConfig {\n label: string // 标题\n component: string // 需要转化的组件,如 width 由 numberInput 控制\n style?: string // 组件样式\n valueProp?: any // 值的属性字段\n value?: string // 值\n changeValueEventName?: string // 改变值的事件\n options?: { value: any; label?: any }[] // 子组件option\n updateMode?: 'page' | 'component' // 修改页面、组件页面供属性\n props?: { [key: string]: any } // 组件的 v-bind\n events?: { [key: string]: (e: any) => void } // 组件的 v-on\n onlyType?: string | string[] // 限定数组类型 onlyType\n excludeType?: string | string[]\n layout?: 'horizontal' | 'vertical'\n}\n\ntype PropToAttributeConfigList = PropToAttributeConfig[]\n\n// 属性转换配置(表单)\nexport type PropsToAttributeConfig = {\n [key: string]: PropToAttributeConfig | PropToAttributeConfigList\n}\n\n// 属性转表单的字典映射\nexport const mapAttributeProps: PropsToAttributeConfig = {\n name: {\n label: '控件别名',\n component: 'input'\n },\n title: {\n label: '标题',\n component: 'input'\n },\n width: {\n label: '宽度',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 0\n }\n },\n height: {\n label: '高度',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 10\n }\n },\n colors: {\n label: '颜色',\n component: 'color-group-pick'\n },\n centerLeft: {\n label: '水平位置',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n centerTop: {\n label: '垂直位置',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n innerRadius: {\n label: '内半径',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n outerRadius: {\n label: '外半径',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n tooltipTrigger: {\n label: '触发条件',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '图形',\n value: 'item'\n },\n {\n label: '坐标轴',\n value: 'axis'\n },\n {\n label: '无',\n value: 'none'\n }\n ]\n }\n },\n tooltipTextStyleColor: {\n label: '颜色',\n component: 'color-pick'\n },\n tooltipFormatter: {\n label: '格式化',\n component: 'textarea'\n },\n legendTextStyleColor: {\n label: '颜色',\n component: 'color-pick'\n },\n legendTop: {\n label: '垂直位置',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '上',\n value: 'top'\n },\n {\n label: '中',\n value: 'middle'\n },\n {\n label: '下',\n value: 'bottom'\n }\n ]\n }\n },\n legendLeft: {\n label: '水平位置',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '左',\n value: 'left'\n },\n {\n label: '中',\n value: 'center'\n },\n {\n label: '右',\n value: 'right'\n }\n ]\n }\n },\n legendOrient: {\n label: '布局',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '垂直',\n value: 'vertical'\n },\n {\n label: '水平',\n value: 'horizontal'\n }\n ]\n }\n },\n labelFormatter: {\n label: '格式化',\n component: 'input'\n },\n labelColor: {\n label: '标签颜色',\n component: 'color-pick'\n },\n isUseLabelColors: {\n label: '系列色',\n component: 'switch'\n },\n labelFontSize: {\n label: '字体大小',\n component: 'input-number',\n props: {\n min: 12,\n suffix: 'px'\n }\n },\n labelPosition: [\n {\n label: '位置',\n component: 'radio-group',\n onlyType: 'pie',\n props: {\n options: [\n {\n label: '外侧',\n value: 'outside'\n },\n {\n label: '内侧',\n value: 'inside'\n },\n {\n label: '中心',\n value: 'center'\n }\n ]\n }\n },\n {\n label: '位置',\n component: 'select',\n onlyType: 'bar',\n props: {\n options: [\n {\n label: '上',\n value: 'top'\n },\n {\n label: '中',\n value: 'inside'\n },\n {\n label: '下',\n value: 'bottom'\n },\n {\n label: '右',\n value: 'right'\n },\n {\n label: '左',\n value: 'left'\n }\n ]\n }\n }\n ],\n labelLineLength: {\n label: '第一段',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n labelLineLength2: {\n label: '第二段',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n symbolSize: {\n label: '标记点尺寸',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n smooth: {\n label: '线条光滑',\n component: 'switch'\n },\n lineStyleWidth: {\n label: '线条宽度',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n xAxisSplitLineShow: {\n label: '分割线',\n component: 'switch'\n },\n xAxisSplitLineStyleColor: {\n label: '分割线颜色',\n component: 'color-pick'\n },\n xAxisLabelColor: {\n label: '名称颜色',\n component: 'color-pick'\n },\n xAxisLineStyleColor: {\n label: '横边颜色',\n component: 'color-pick'\n },\n xAxisTickShow: {\n label: '显示刻度',\n component: 'switch'\n },\n xAxisLabelFormatter: {\n label: '格式化',\n component: 'input'\n },\n yAxisSplitLineShow: {\n label: '分割线',\n component: 'switch'\n },\n yAxisLineAlwaysDisplay: {\n label: '显示竖边',\n component: 'switch'\n },\n yAxisSplitLineStyleColor: {\n label: '分割线颜色',\n component: 'color-pick'\n },\n yAxisLabelColor: {\n label: '名称颜色',\n component: 'color-pick'\n },\n yAxisLineStyleColor: {\n label: '竖边颜色',\n component: 'color-pick'\n },\n yAxisLabelFormatter: {\n label: '格式化',\n component: 'input'\n },\n roseType: {\n label: '玫瑰图',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '不展示',\n value: ''\n },\n {\n label: '圆心角',\n value: 'area'\n },\n {\n label: '半径',\n value: 'radius'\n }\n ]\n }\n },\n yAxis: {\n label: '系列',\n component: 'form-group',\n layout: 'vertical',\n props: {\n max: 2,\n format: [\n {\n label: ['左轴', '右轴'],\n type: 'input',\n value: 'axisLabelFormatter',\n props: {\n options: [\n {\n label: '柱状图',\n value: 'bar'\n },\n {\n label: '折线图',\n value: 'line'\n }\n ]\n }\n }\n ]\n }\n },\n seriesTypes: {\n label: '系列',\n component: 'form-group',\n layout: 'vertical',\n props: {\n format: [\n {\n label: '系列',\n type: 'select',\n value: 'type',\n useLabelIndex: true,\n props: {\n options: [\n {\n label: '柱状图',\n value: 'bar'\n },\n {\n label: '折线图',\n value: 'line'\n }\n ]\n }\n },\n {\n label: '对应轴',\n type: 'select',\n value: 'axisIndex',\n props: {\n options: [\n {\n label: '左轴',\n value: 0\n },\n {\n label: '右轴',\n value: 1\n }\n ]\n }\n },\n {\n label: '提示框格式化',\n type: 'input',\n value: 'tooltipFormatter'\n }\n ]\n }\n },\n barWidth: {\n label: '宽度',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0\n }\n },\n gridTop: {\n label: '上侧距离',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n gridBottom: {\n label: '下侧距离',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n gridLeft: {\n label: '左侧距离',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n gridRight: {\n label: '右侧距离',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n gridContainLabel: {\n label: '包含刻度标签',\n component: 'switch'\n },\n toolboxOrient: {\n label: '排版',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '水平',\n value: 'horizontal'\n },\n {\n label: '垂直',\n value: 'vertical'\n }\n ]\n }\n },\n toolboxItemSize: {\n label: '图标大小',\n component: 'input-number'\n },\n toolboxItemGap: {\n label: '图标间距',\n component: 'input-number'\n },\n toolboxLeft: {\n label: '水平位置',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '居左',\n value: 'left'\n },\n {\n label: '居中',\n value: 'center'\n },\n {\n label: '居右',\n value: 'right'\n }\n ]\n }\n },\n toolboxTop: {\n label: '垂直位置',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '顶部',\n value: 'top'\n },\n {\n label: '居中',\n value: 'middle'\n },\n {\n label: '底部',\n value: 'bottom'\n }\n ]\n }\n },\n toolboxDownloadUrl: {\n label: '下载文件地址',\n component: 'input'\n },\n toolboxInfoText: {\n label: '说明信息内容',\n component: 'input'\n },\n isUseHorizontalAxis: {\n label: '横向排列',\n component: 'switch'\n },\n axisInverse: {\n label: '倒叙排列',\n component: 'switch'\n },\n xAxisInverse: {\n label: '图形反转',\n component: 'switch'\n },\n yAxisInverse: {\n label: '图形反转',\n component: 'switch'\n },\n areaStyleOpacity: {\n label: '面积透明度',\n component: 'input-number',\n props: {\n step: 0.1,\n min: 0,\n max: 1\n }\n },\n xAxisLabelWidth: {\n label: '名称宽度',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n xAxisLabelOverflow: {\n label: '名称溢出',\n component: 'radio-group',\n props: {\n optionType: 'button',\n options: [\n {\n label: '无',\n value: 'none'\n },\n {\n label: '换行',\n value: 'break'\n },\n {\n label: '省略号',\n value: 'truncate'\n }\n ]\n }\n },\n xAxisLabelRotate: {\n label: '名称旋转',\n component: 'input-number'\n },\n yAxisLabelWidth: {\n label: '名称宽度',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n yAxisLabelOverflow: {\n label: '名称溢出',\n component: 'radio-group',\n props: {\n optionType: 'button',\n options: [\n {\n label: '无',\n value: 'none'\n },\n {\n label: '换行',\n value: 'break'\n },\n {\n label: '省略号',\n value: 'truncate'\n }\n ]\n }\n },\n yAxisLabelRotate: {\n label: '名称旋转',\n component: 'input-number'\n },\n isStack: {\n label: '是否堆叠',\n component: 'switch'\n },\n labelShow: {\n label: '展示标签',\n component: 'switch'\n },\n xAxisMinInterval: {\n label: '最小间距',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n yAxisMinInterval: {\n label: '最小间距',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n minAngle: {\n label: '最小角度',\n component: 'input-number',\n props: {\n min: 0,\n max: 360\n }\n },\n xAxisLabelInterval: {\n label: '标签间隔',\n component: 'input-number',\n props: {\n min: -1\n }\n },\n toolboxLocation: {\n label: '快速定位',\n component: 'switch'\n },\n toolboxDownloadShow: {\n label: '使用数据下载',\n component: 'switch'\n },\n toolboxDataZoomShow: {\n label: '使用放大',\n component: 'switch'\n },\n toolboxInfoShow: {\n label: '使用说明信息',\n component: 'switch'\n }\n}\n","/**\r\n * 字符串1 中是否包含 字符串2 (会全部转成小写)\r\n * @param v1 字符串1\r\n * @param v2 字符串2 | 字符串数组\r\n * @constructor\r\n */\r\nexport const lowerCaseIncludes = (v1: any, v2: any): boolean => {\r\n if (typeof v1 === 'string' && typeof v2 === 'string') {\r\n return v1.toLocaleLowerCase().includes(v2.toLocaleLowerCase())\r\n } else if (typeof v1 === 'string' && Array.isArray(v2)) {\r\n const len = v2.length\r\n for (let i = 0; i < len; i++) {\r\n const s = v2[i]\r\n if (typeof s === 'string' && v1.toLocaleLowerCase().includes(s.toLocaleLowerCase())) {\r\n return true\r\n }\r\n }\r\n }\r\n return false\r\n}\r\n\r\nexport const handleFormatter = (formatter: string) => {\r\n return formatter.replace(/\\\\n/g, '\\n')\r\n}\r\n","<template>\n <a-input\n :value=\"value\"\n :disabled=\"disabled\"\n @change=\"onInputChange\"\n v-focus\n />\n</template>\n\n<script lang=\"ts\">\nimport { Input as AInput } from 'ant-design-vue'\nimport { defineComponent } from 'vue'\nexport default defineComponent({\n name: 'Input',\n directives: {\n focus\n },\n props: {\n value: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n components: {\n AInput\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onInputChange = (e: any) => {\n emit('change', e.target.value)\n }\n return {\n onInputChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-input\n :value=\"value\"\n :disabled=\"disabled\"\n @change=\"onInputChange\"\n v-focus\n />\n</template>\n\n<script lang=\"ts\">\nimport { Input as AInput } from 'ant-design-vue'\nimport { defineComponent } from 'vue'\nexport default defineComponent({\n name: 'Input',\n directives: {\n focus\n },\n props: {\n value: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n components: {\n AInput\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onInputChange = (e: any) => {\n emit('change', e.target.value)\n }\n return {\n onInputChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-input-number\n :value=\"inputValue\"\n :min=\"min\"\n :max=\"max\"\n :step=\"step\"\n :parser=\"parser\"\n :addon-before=\"Array.isArray(prefix) ? undefined : prefix\"\n :addon-after=\"Array.isArray(suffix) ? undefined : prefix\"\n @change=\"onInputChange\"\n @blur=\"onInputBlur\"\n >\n <template #addonBefore v-if=\"Array.isArray(prefix) && prefix.length > 0\">\n <a-select v-model:value=\"prefixValue\" @change=\"onPrefixChange\">\n <a-select-option\n v-for=\"({ label, value }, index) in prefix\"\n :key=\"index\"\n :value=\"value\"\n >\n {{ label }}\n </a-select-option>\n </a-select>\n </template>\n <template #addonAfter v-if=\"Array.isArray(suffix) && suffix.length > 0\">\n <a-select v-model:value=\"suffixValue\" @change=\"onSuffixChange\">\n <a-select-option\n v-for=\"({ label, value }, index) in suffix\"\n :key=\"index\"\n :value=\"value\"\n >\n {{ label }}\n </a-select-option>\n </a-select>\n </template>\n </a-input-number>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, PropType } from 'vue'\nimport { InputNumber as AInputNumber, Select as ASelect, SelectOption as ASelectOption } from 'ant-design-vue'\nexport default defineComponent({\n name: 'InputNumber',\n props: {\n value: {\n type: [String, Number, Object],\n default: ''\n },\n valueKey: {\n type: String,\n default: 'value'\n },\n prefixValueKey: {\n type: String,\n default: 'prefix'\n },\n prefix: {\n type: [String, Array] as PropType<any>,\n default: ''\n },\n suffixValueKey: {\n type: String,\n default: 'suffix'\n },\n suffix: {\n type: [String, Array] as PropType<any>,\n default: ''\n },\n min: {\n type: Number,\n default: -Infinity\n },\n max: {\n type: Number,\n default: Infinity\n },\n step: {\n type: [String, Number],\n default: 1\n },\n useBlurEvent: {\n type: Boolean,\n default: true\n }\n },\n components: {\n AInputNumber,\n ASelect,\n ASelectOption\n },\n emits: ['change'],\n setup (props, { emit }) {\n const inputValue = computed(() => {\n const value = props.value\n if (typeof value === 'string') {\n return parseFloat(value)\n } else if (typeof value === 'object' && value != null) {\n return value[props.valueKey]\n }\n return value\n })\n const getPrefixOrSuffixValue = (type: 'prefix' | 'suffix') => {\n if (props.value != null && typeof props.value === 'object') {\n return props.value[props[`${type}ValueKey`]]\n } else if (Array.isArray(props[type])) {\n return props[type][0] && (props[type][0] as any).value\n }\n return null\n }\n const prefixValue = ref(getPrefixOrSuffixValue('prefix'))\n const suffixValue = ref(getPrefixOrSuffixValue('suffix'))\n const onInputChange = (value: string) => {\n const suffix = props.suffix\n // 如果后缀不传\n if (Array.isArray(props.prefix) || Array.isArray(props.suffix)) {\n emit('change', {\n [props.valueKey]: value,\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n } else if (suffix === '' || value == null) {\n emit('change', value)\n } else {\n emit('change', `${value}${suffix}`)\n }\n }\n\n const onPrefixChange = () => {\n if (Array.isArray(props.prefix)) {\n emit('change', {\n [props.valueKey]: unref(inputValue),\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n }\n }\n\n const onSuffixChange = () => {\n if (Array.isArray(props.suffix)) {\n emit('change', {\n [props.valueKey]: unref(inputValue),\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n }\n }\n\n const parser = (value: string) => {\n if (typeof props.suffix === 'string') {\n return value.replace(props.suffix, '')\n } else if (\n Array.isArray(props.suffix) &&\n props.value != null &&\n typeof props.value === 'object'\n ) {\n return value.replace(props.value[props.suffixValueKey], '')\n }\n return value\n }\n const onInputBlur = () => {\n if (props.useBlurEvent) {\n emit('change', null, false)\n }\n }\n return {\n inputValue,\n onInputChange,\n parser,\n onInputBlur,\n prefixValue,\n suffixValue,\n onPrefixChange,\n onSuffixChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-input-number\n :value=\"inputValue\"\n :min=\"min\"\n :max=\"max\"\n :step=\"step\"\n :parser=\"parser\"\n :addon-before=\"Array.isArray(prefix) ? undefined : prefix\"\n :addon-after=\"Array.isArray(suffix) ? undefined : prefix\"\n @change=\"onInputChange\"\n @blur=\"onInputBlur\"\n >\n <template #addonBefore v-if=\"Array.isArray(prefix) && prefix.length > 0\">\n <a-select v-model:value=\"prefixValue\" @change=\"onPrefixChange\">\n <a-select-option\n v-for=\"({ label, value }, index) in prefix\"\n :key=\"index\"\n :value=\"value\"\n >\n {{ label }}\n </a-select-option>\n </a-select>\n </template>\n <template #addonAfter v-if=\"Array.isArray(suffix) && suffix.length > 0\">\n <a-select v-model:value=\"suffixValue\" @change=\"onSuffixChange\">\n <a-select-option\n v-for=\"({ label, value }, index) in suffix\"\n :key=\"index\"\n :value=\"value\"\n >\n {{ label }}\n </a-select-option>\n </a-select>\n </template>\n </a-input-number>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, PropType } from 'vue'\nimport { InputNumber as AInputNumber, Select as ASelect, SelectOption as ASelectOption } from 'ant-design-vue'\nexport default defineComponent({\n name: 'InputNumber',\n props: {\n value: {\n type: [String, Number, Object],\n default: ''\n },\n valueKey: {\n type: String,\n default: 'value'\n },\n prefixValueKey: {\n type: String,\n default: 'prefix'\n },\n prefix: {\n type: [String, Array] as PropType<any>,\n default: ''\n },\n suffixValueKey: {\n type: String,\n default: 'suffix'\n },\n suffix: {\n type: [String, Array] as PropType<any>,\n default: ''\n },\n min: {\n type: Number,\n default: -Infinity\n },\n max: {\n type: Number,\n default: Infinity\n },\n step: {\n type: [String, Number],\n default: 1\n },\n useBlurEvent: {\n type: Boolean,\n default: true\n }\n },\n components: {\n AInputNumber,\n ASelect,\n ASelectOption\n },\n emits: ['change'],\n setup (props, { emit }) {\n const inputValue = computed(() => {\n const value = props.value\n if (typeof value === 'string') {\n return parseFloat(value)\n } else if (typeof value === 'object' && value != null) {\n return value[props.valueKey]\n }\n return value\n })\n const getPrefixOrSuffixValue = (type: 'prefix' | 'suffix') => {\n if (props.value != null && typeof props.value === 'object') {\n return props.value[props[`${type}ValueKey`]]\n } else if (Array.isArray(props[type])) {\n return props[type][0] && (props[type][0] as any).value\n }\n return null\n }\n const prefixValue = ref(getPrefixOrSuffixValue('prefix'))\n const suffixValue = ref(getPrefixOrSuffixValue('suffix'))\n const onInputChange = (value: string) => {\n const suffix = props.suffix\n // 如果后缀不传\n if (Array.isArray(props.prefix) || Array.isArray(props.suffix)) {\n emit('change', {\n [props.valueKey]: value,\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n } else if (suffix === '' || value == null) {\n emit('change', value)\n } else {\n emit('change', `${value}${suffix}`)\n }\n }\n\n const onPrefixChange = () => {\n if (Array.isArray(props.prefix)) {\n emit('change', {\n [props.valueKey]: unref(inputValue),\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n }\n }\n\n const onSuffixChange = () => {\n if (Array.isArray(props.suffix)) {\n emit('change', {\n [props.valueKey]: unref(inputValue),\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n }\n }\n\n const parser = (value: string) => {\n if (typeof props.suffix === 'string') {\n return value.replace(props.suffix, '')\n } else if (\n Array.isArray(props.suffix) &&\n props.value != null &&\n typeof props.value === 'object'\n ) {\n return value.replace(props.value[props.suffixValueKey], '')\n }\n return value\n }\n const onInputBlur = () => {\n if (props.useBlurEvent) {\n emit('change', null, false)\n }\n }\n return {\n inputValue,\n onInputChange,\n parser,\n onInputBlur,\n prefixValue,\n suffixValue,\n onPrefixChange,\n onSuffixChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-radio-group\n :value=\"value\"\n :optionType=\"optionType\"\n @change=\"onRadioChange\"\n >\n <a-radio-button\n v-for=\"option in options\"\n :key=\"option.value\"\n :value=\"option.value\"\n >\n {{ option.label }}\n </a-radio-button>\n </a-radio-group>\n</template>\n\n<script>\nimport { defineComponent } from 'vue'\nimport { RadioGroup as ARadioGroup, RadioButton as ARadioButton } from 'ant-design-vue'\nexport default defineComponent({\n name: 'RadioGroup',\n props: {\n value: {\n type: [String, Number],\n default: ''\n },\n options: {\n type: Array,\n default: () => []\n },\n optionType: {\n type: String,\n default: 'default'\n },\n size: {\n type: String,\n default: 'default'\n }\n },\n components: {\n ARadioGroup,\n ARadioButton\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onRadioChange = (e) => {\n emit('change', e.target.value)\n }\n return {\n onRadioChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-select\n :value=\"value\"\n @change=\"onSelectChange\"\n >\n <a-select-option\n v-for=\"option in options\"\n :key=\"option.value\"\n :value=\"option.value\"\n >\n {{ option.label }}\n </a-select-option>\n </a-select>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue'\nimport { Select as ASelect, SelectOption as ASelectOption } from 'ant-design-vue'\nexport default defineComponent({\n name: 'Select',\n props: {\n value: {\n type: [String, Number],\n default: ''\n },\n options: {\n type: Array as PropType<any>,\n default: () => []\n }\n },\n components: {\n ASelect,\n ASelectOption\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onSelectChange = (value: string | number) => {\n emit('change', value)\n }\n return {\n onSelectChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-select\n :value=\"value\"\n @change=\"onSelectChange\"\n >\n <a-select-option\n v-for=\"option in options\"\n :key=\"option.value\"\n :value=\"option.value\"\n >\n {{ option.label }}\n </a-select-option>\n </a-select>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue'\nimport { Select as ASelect, SelectOption as ASelectOption } from 'ant-design-vue'\nexport default defineComponent({\n name: 'Select',\n props: {\n value: {\n type: [String, Number],\n default: ''\n },\n options: {\n type: Array as PropType<any>,\n default: () => []\n }\n },\n components: {\n ASelect,\n ASelectOption\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onSelectChange = (value: string | number) => {\n emit('change', value)\n }\n return {\n onSelectChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <div :style=\"{ width: `${width}px` }\">\n <a-switch :disabled=\"disabled\" :checked=\"value\" @change=\"onSwitchChange\"/>\n </div>\n</template>\n\n<script>\nimport { defineComponent } from 'vue'\nimport { Switch as ASwitch } from 'ant-design-vue'\nexport default defineComponent({\n name: 'Switch',\n props: {\n value: {\n type: Boolean,\n default: false\n },\n width: {\n type: [String, Number],\n default: 150\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n components: {\n ASwitch\n },\n emit: ['change'],\n setup (props, { emit }) {\n const onSwitchChange = (value) => {\n emit('change', value)\n }\n return {\n onSwitchChange\n }\n }\n})\n</script>\n\n<style scoped></style>\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import{defineComponent as e,computed as t,openBlock as r,createElementBlock as n,normalizeStyle as o,withModifiers as a,createElementVNode as i,pushScopeId as l,popScopeId as c,ref as u,onMounted as s,watch as f,toDisplayString as d,withKeys as p,inject as h,unref as v,resolveComponent as m,Fragment as g,renderList as y,createBlock as b,createVNode as w,createCommentVNode as x,nextTick as S,onBeforeUnmount as k,provide as C,onUnmounted as O,toRaw as I,Teleport as A,Transition as P,withCtx as j}from\"vue\";import{createPopper as _}from\"@popperjs/core\";function N(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function E(e,t){if(e){if(\"string\"==typeof e)return N(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===r&&e.constructor&&(r=e.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(e):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?N(e,t):void 0}}function F(e){return function(e){if(Array.isArray(e))return N(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||E(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function L(e){return 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},L(e)}function z(e,t,r,n,o,a,i){try{var l=e[a](i),c=l.value}catch(e){return void r(e)}l.done?t(c):Promise.resolve(c).then(n,o)}function M(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var a=e.apply(t,r);function i(e){z(a,n,o,i,l,\"next\",e)}function l(e){z(a,n,o,i,l,\"throw\",e)}i(void 0)}))}}var R={exports:{}},B={exports:{}};!function(e){function t(r){return e.exports=t=\"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},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports}(B),function(e){var t=B.exports.default;function r(){e.exports=r=function(){return o},e.exports.__esModule=!0,e.exports.default=e.exports;var n,o={},a=Object.prototype,i=a.hasOwnProperty,l=Object.defineProperty||function(e,t,r){e[t]=r.value},c=\"function\"==typeof Symbol?Symbol:{},u=c.iterator||\"@@iterator\",s=c.asyncIterator||\"@@asyncIterator\",f=c.toStringTag||\"@@toStringTag\";function d(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{d({},\"\")}catch(n){d=function(e,t,r){return e[t]=r}}function p(e,t,r,n){var o=t&&t.prototype instanceof w?t:w,a=Object.create(o.prototype),i=new F(n||[]);return l(a,\"_invoke\",{value:j(e,r,i)}),a}function h(e,t,r){try{return{type:\"normal\",arg:e.call(t,r)}}catch(e){return{type:\"throw\",arg:e}}}o.wrap=p;var v=\"suspendedStart\",m=\"suspendedYield\",g=\"executing\",y=\"completed\",b={};function w(){}function x(){}function S(){}var k={};d(k,u,(function(){return this}));var C=Object.getPrototypeOf,O=C&&C(C(L([])));O&&O!==a&&i.call(O,u)&&(k=O);var I=S.prototype=w.prototype=Object.create(k);function A(e){[\"next\",\"throw\",\"return\"].forEach((function(t){d(e,t,(function(e){return this._invoke(t,e)}))}))}function P(e,r){function n(o,a,l,c){var u=h(e[o],e,a);if(\"throw\"!==u.type){var s=u.arg,f=s.value;return f&&\"object\"==t(f)&&i.call(f,\"__await\")?r.resolve(f.__await).then((function(e){n(\"next\",e,l,c)}),(function(e){n(\"throw\",e,l,c)})):r.resolve(f).then((function(e){s.value=e,l(s)}),(function(e){return n(\"throw\",e,l,c)}))}c(u.arg)}var o;l(this,\"_invoke\",{value:function(e,t){function a(){return new r((function(r,o){n(e,t,r,o)}))}return o=o?o.then(a,a):a()}})}function j(e,t,r){var o=v;return function(a,i){if(o===g)throw new Error(\"Generator is already running\");if(o===y){if(\"throw\"===a)throw i;return{value:n,done:!0}}for(r.method=a,r.arg=i;;){var l=r.delegate;if(l){var c=_(l,r);if(c){if(c===b)continue;return c}}if(\"next\"===r.method)r.sent=r._sent=r.arg;else if(\"throw\"===r.method){if(o===v)throw o=y,r.arg;r.dispatchException(r.arg)}else\"return\"===r.method&&r.abrupt(\"return\",r.arg);o=g;var u=h(e,t,r);if(\"normal\"===u.type){if(o=r.done?y:m,u.arg===b)continue;return{value:u.arg,done:r.done}}\"throw\"===u.type&&(o=y,r.method=\"throw\",r.arg=u.arg)}}}function _(e,t){var r=t.method,o=e.iterator[r];if(o===n)return t.delegate=null,\"throw\"===r&&e.iterator.return&&(t.method=\"return\",t.arg=n,_(e,t),\"throw\"===t.method)||\"return\"!==r&&(t.method=\"throw\",t.arg=new TypeError(\"The iterator does not provide a '\"+r+\"' method\")),b;var a=h(o,e.iterator,t.arg);if(\"throw\"===a.type)return t.method=\"throw\",t.arg=a.arg,t.delegate=null,b;var i=a.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,\"return\"!==t.method&&(t.method=\"next\",t.arg=n),t.delegate=null,b):i:(t.method=\"throw\",t.arg=new TypeError(\"iterator result is not an object\"),t.delegate=null,b)}function N(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function E(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(N,this),this.reset(!0)}function L(e){if(e||\"\"===e){var r=e[u];if(r)return r.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,a=function t(){for(;++o<e.length;)if(i.call(e,o))return t.value=e[o],t.done=!1,t;return t.value=n,t.done=!0,t};return a.next=a}}throw new TypeError(t(e)+\" is not iterable\")}return x.prototype=S,l(I,\"constructor\",{value:S,configurable:!0}),l(S,\"constructor\",{value:x,configurable:!0}),x.displayName=d(S,f,\"GeneratorFunction\"),o.isGeneratorFunction=function(e){var t=\"function\"==typeof e&&e.constructor;return!!t&&(t===x||\"GeneratorFunction\"===(t.displayName||t.name))},o.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,S):(e.__proto__=S,d(e,f,\"GeneratorFunction\")),e.prototype=Object.create(I),e},o.awrap=function(e){return{__await:e}},A(P.prototype),d(P.prototype,s,(function(){return this})),o.AsyncIterator=P,o.async=function(e,t,r,n,a){void 0===a&&(a=Promise);var i=new P(p(e,t,r,n),a);return o.isGeneratorFunction(t)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},A(I),d(I,f,\"Generator\"),d(I,u,(function(){return this})),d(I,\"toString\",(function(){return\"[object Generator]\"})),o.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},o.values=L,F.prototype={constructor:F,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method=\"next\",this.arg=n,this.tryEntries.forEach(E),!e)for(var t in this)\"t\"===t.charAt(0)&&i.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=n)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if(\"throw\"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(r,o){return l.type=\"throw\",l.arg=e,t.next=r,o&&(t.method=\"next\",t.arg=n),!!o}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],l=a.completion;if(\"root\"===a.tryLoc)return r(\"end\");if(a.tryLoc<=this.prev){var c=i.call(a,\"catchLoc\"),u=i.call(a,\"finallyLoc\");if(c&&u){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!u)throw new Error(\"try statement without catch or finally\");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&i.call(n,\"finallyLoc\")&&this.prev<n.finallyLoc){var o=n;break}}o&&(\"break\"===e||\"continue\"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=t,o?(this.method=\"next\",this.next=o.finallyLoc,b):this.complete(a)},complete:function(e,t){if(\"throw\"===e.type)throw e.arg;return\"break\"===e.type||\"continue\"===e.type?this.next=e.arg:\"return\"===e.type?(this.rval=this.arg=e.arg,this.method=\"return\",this.next=\"end\"):\"normal\"===e.type&&t&&(this.next=t),b},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),E(r),b}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if(\"throw\"===n.type){var o=n.arg;E(r)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,t,r){return this.delegate={iterator:L(e),resultName:t,nextLoc:r},\"next\"===this.method&&(this.arg=n),b}},o}e.exports=r,e.exports.__esModule=!0,e.exports.default=e.exports}(R);var D=R.exports(),T=D;try{regeneratorRuntime=D}catch(e){\"object\"==typeof globalThis?globalThis.regeneratorRuntime=D:Function(\"r\",\"regeneratorRuntime = r\")(D)}function H(e){var t=function(e,t){if(\"object\"!==L(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||\"default\");if(\"object\"!==L(n))return n;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(e)}(e,\"string\");return\"symbol\"===L(t)?t:String(t)}function G(e,t,r){return(t=H(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var $=e({name:\"Saturation\",props:{size:{type:Number,default:160},hue:{type:Number,default:0},saturation:{type:Number,default:0},value:{type:Number,default:0}},emits:[\"change\"],setup:function(e,r){var n=r.emit,o=t((function(){return{width:\"\".concat(e.size,\"px\"),height:\"\".concat(e.size,\"px\"),background:\"hsl(\".concat(e.hue,\", 100%, 50%)\")}}));return{saturationStyle:o,sliderStyle:t((function(){return{top:\"\".concat((100-e.value)/100*e.size-5,\"px\"),left:\"\".concat(e.saturation*e.size/100-5,\"px\"),width:\"\".concat(10,\"px\"),height:\"\".concat(10,\"px\")}})),onSelect:function(t){var r=t.target.getBoundingClientRect(),o=r.left,a=r.top,i=function(t){var r=t.clientX,i=t.clientY,l=r-o,c=i-a;l<0&&(l=0),c<0&&(c=0),l>e.size&&(l=e.size),c>e.size&&(c=e.size);var u=l/e.size*100,s=100-c/e.size*100;n(\"change\",u,s)};i(t),document.addEventListener(\"mousemove\",i),document.addEventListener(\"mouseup\",(function e(){document.removeEventListener(\"mousemove\",i),document.removeEventListener(\"mouseup\",e)}))}}}}),V=function(e){return l(\"data-v-24517fec\"),e=e(),c(),e},Y=V((function(){return i(\"div\",{class:\"saturation-white\"},null,-1)})),J=V((function(){return i(\"div\",{class:\"saturation-black\"},null,-1)}));function W(e,t){void 0===t&&(t={});var r=t.insertAt;if(e&&\"undefined\"!=typeof document){var n=document.head||document.getElementsByTagName(\"head\")[0],o=document.createElement(\"style\");o.type=\"text/css\",\"top\"===r&&n.firstChild?n.insertBefore(o,n.firstChild):n.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}W(\".saturation[data-v-24517fec]{position:relative}.saturation-black[data-v-24517fec],.saturation-white[data-v-24517fec]{cursor:pointer;height:100%;left:0;position:absolute;top:0;width:100%}.saturation-white[data-v-24517fec]{background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.saturation-black[data-v-24517fec]{background:linear-gradient(0deg,#000,transparent)}.slider[data-v-24517fec]{border:1px solid #fff;border-radius:50%;box-shadow:0 0 1px 1px rgba(0,0,0,.3);left:0;pointer-events:none;position:absolute;top:0;z-index:1}\"),$.render=function(e,t,l,c,u,s){return r(),n(\"div\",{class:\"saturation\",style:o(e.saturationStyle),onMousedown:t[0]||(t[0]=a((function(){return e.onSelect&&e.onSelect.apply(e,arguments)}),[\"prevent\",\"stop\"]))},[Y,J,i(\"div\",{class:\"slider\",style:o(e.sliderStyle)},null,4)],36)},$.__scopeId=\"data-v-24517fec\",$.__file=\"src/picker/Saturation.vue\";var X=e({name:\"Hue\",props:{width:{type:Number,default:15},height:{type:Number,default:160},hue:{type:Number,default:0}},emits:[\"change\"],setup:function(e,r){var n=r.emit,o=t((function(){return{top:\"\".concat((1-e.hue/360)*e.height-2,\"px\"),height:\"\".concat(4,\"px\")}})),a=u();s((function(){!function(){a.value.width=e.width,a.value.height=e.height;var t=a.value.getContext(\"2d\"),r=t.createLinearGradient(0,0,0,e.height);r.addColorStop(0,\"#FF0000\"),r.addColorStop(.17,\"#FF00FF\"),r.addColorStop(.34,\"#0000FF\"),r.addColorStop(.51,\"#00FFFF\"),r.addColorStop(.68,\"#00FF00\"),r.addColorStop(.17*5,\"#FFFF00\"),r.addColorStop(1,\"#FF0000\"),t.fillStyle=r,t.fillRect(0,0,e.width,e.height)}()}));return{canvas:a,sliderStyle:o,onSelect:function(t){var r=t.target.getBoundingClientRect().top,o=function(t){var o=t.clientY-r;o<0&&(o=0),o>e.height&&(o=e.height);var a=-100*o/e.height+100;n(\"change\",360*a/100)};o(t),document.addEventListener(\"mousemove\",o),document.addEventListener(\"mouseup\",(function e(){document.removeEventListener(\"mousemove\",o),document.removeEventListener(\"mouseup\",e)}))}}}}),q={ref:\"canvas\"};W(\".hue[data-v-78b9f4f0]{position:relative}.slider[data-v-78b9f4f0]{background:#fff;box-shadow:0 0 1px 0 rgba(0,0,0,.3);left:0;pointer-events:none;position:absolute;width:100%;z-index:1}\"),X.render=function(e,t,l,c,u,s){return r(),n(\"div\",{class:\"hue\",onMousedown:t[0]||(t[0]=a((function(){return e.onSelect&&e.onSelect.apply(e,arguments)}),[\"prevent\",\"stop\"]))},[i(\"canvas\",q,null,512),i(\"div\",{class:\"slider\",style:o(e.sliderStyle)},null,4)],32)},X.__scopeId=\"data-v-78b9f4f0\",X.__file=\"src/picker/Hue.vue\";var U=e({name:\"Alpha\",props:{width:{type:Number,default:15},height:{type:Number,default:160},color:{type:String,default:\"#000000\"},alpha:{type:Number,default:1}},setup:function(e,r){var n=r.emit,o=t((function(){return{top:\"\".concat(e.alpha*e.height-2,\"px\"),height:\"\".concat(4,\"px\")}})),a=u(),i=function(){var t=a.value.getContext(\"2d\");a.value.width=e.width,a.value.height=e.height;var r=function(e){var t=document.createElement(\"canvas\"),r=t.getContext(\"2d\"),n=2*e;return t.width=n,t.height=n,r.fillStyle=\"#ffffff\",r.fillRect(0,0,n,n),r.fillStyle=\"#ccd5db\",r.fillRect(0,0,e,e),r.fillRect(e,e,e,e),t}(5);t.fillStyle=t.createPattern(r,\"repeat\"),t.fillRect(0,0,e.width,e.height);var n=t.createLinearGradient(0,0,0,e.height);n.addColorStop(.01,\"rgba(255,255,255,0)\"),n.addColorStop(.99,e.color),t.fillStyle=n,t.fillRect(0,0,e.width,e.height)};f((function(){return e.color}),(function(){i()})),s((function(){i()}));return{canvas:a,sliderStyle:o,onSelect:function(t){var r=t.target.getBoundingClientRect().top,o=function(t){var o=t.clientY-r;o<0&&(o=0),o>e.height&&(o=e.height);var a=parseFloat((o/e.height).toFixed(2));n(\"change\",a)};o(t),document.addEventListener(\"mousemove\",o),document.addEventListener(\"mouseup\",(function e(){document.removeEventListener(\"mousemove\",o),document.removeEventListener(\"mouseup\",e)}))}}}}),K={ref:\"canvas\"};W(\".alpha[data-v-24dc9656]{position:relative}.slider[data-v-24dc9656]{background:#fff;box-shadow:0 0 1px 0 rgba(0,0,0,.3);left:0;pointer-events:none;position:absolute;width:100%;z-index:1}\"),U.render=function(e,t,l,c,u,s){return r(),n(\"div\",{class:\"alpha\",onMousedown:t[0]||(t[0]=a((function(){return e.onSelect&&e.onSelect.apply(e,arguments)}),[\"prevent\",\"stop\"]))},[i(\"canvas\",K,null,512),i(\"div\",{class:\"slider\",style:o(e.sliderStyle)},null,4)],32)},U.__scopeId=\"data-v-24dc9656\",U.__file=\"src/picker/Alpha.vue\";var Q=e({name:\"Input\",props:{label:{type:String,default:\"RGBA\"},value:{type:String,default:\"\"},width:{type:Number,default:168}},emits:[\"change\",\"focus\",\"blur\",\"enter\"],setup:function(e,r){var n=r.emit;return{onInput:function(e){var t;n(\"change\",null===(t=e.target)||void 0===t?void 0:t.value)},valueStyle:t((function(){return{minWidth:\"\".concat(e.width,\"px\"),maxWidth:\"\".concat(e.width,\"px\"),width:\"\".concat(e.width,\"px\")}})),onFocus:function(){n(\"focus\")},onBlur:function(){n(\"blur\")},onEnter:function(){n(\"enter\")}}}}),Z={class:\"input\"},ee={class:\"label\"},te=[\".value\"];function re(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=r){var n,o,a,i,l=[],c=!0,u=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=a.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(u)throw o}}return l}}(e,t)||E(e,t)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function ne(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function oe(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ne(Object(r),!0).forEach((function(t){G(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ne(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}W(\".input[data-v-d52a4d02]{display:inline-block;font-size:12px}.label[data-v-d52a4d02]{align-items:center;background:#e7e8e9;color:#999;display:flex;float:left;font-weight:500;height:30px;justify-content:center;width:45px}[pick-colors-theme=dark] .label[data-v-d52a4d02]{background:#252930;color:#999}.value[data-v-d52a4d02]{background:#eceef0;border:1px solid #eceef0;box-sizing:border-box;color:#666;flex:1;height:30px;text-align:center}[pick-colors-theme=dark] .value[data-v-d52a4d02]{background:#2e333a;border:1px solid #2e333a;color:#fff}.value[data-v-d52a4d02]:focus{border:1px solid #1890ff;outline:none}\"),Q.render=function(e,t,a,l,c,u){return r(),n(\"div\",Z,[i(\"span\",ee,d(e.label),1),i(\"input\",{class:\"value\",style:o(e.valueStyle),\".value\":e.value,onFocus:t[0]||(t[0]=function(){return e.onFocus&&e.onFocus.apply(e,arguments)}),onInput:t[1]||(t[1]=function(){return e.onInput&&e.onInput.apply(e,arguments)}),onBlur:t[2]||(t[2]=function(){return e.onBlur&&e.onBlur.apply(e,arguments)}),onKeydown:t[3]||(t[3]=p((function(){return e.onEnter&&e.onEnter.apply(e,arguments)}),[\"enter\"]))},null,44,te)])},Q.__scopeId=\"data-v-d52a4d02\",Q.__file=\"src/picker/InputValue.vue\";var ae=function(e,t,r){return[e,t*r/((e=(2-t)*r)<1?e:2-e)||0,e/2]},ie={10:\"A\",11:\"B\",12:\"C\",13:\"D\",14:\"E\",15:\"F\"},le=function(e){e=Math.min(Math.round(e),255);var t=Math.floor(e/16),r=e%16;return\"\".concat(ie[t]||t).concat(ie[r]||r)},ce=function(e){var t=e.r,r=e.g,n=e.b;return isNaN(t)||isNaN(r)||isNaN(n)?\"\":\"#\".concat(le(t)).concat(le(r)).concat(le(n))},ue=function(e,t){var r;\"string\"==typeof(r=e)&&-1!==r.indexOf(\".\")&&1===parseFloat(r)&&(e=\"100%\");var n=function(e){return\"string\"==typeof e&&-1!==e.indexOf(\"%\")}(e);return e=Math.min(t,Math.max(0,parseFloat(\"\".concat(e)))),n&&(e=parseInt(\"\".concat(e*t),10)/100),Math.abs(e-t)<1e-6?1:e%t/parseFloat(t)},se=function(e,t,r){e=6*ue(e,360),t=ue(t,100),r=ue(r,100);var n=Math.floor(e),o=e-n,a=r*(1-t),i=r*(1-o*t),l=r*(1-(1-o)*t),c=n%6,u=[r,i,a,a,l,r][c],s=[l,r,r,i,a,a][c],f=[a,a,l,r,r,i][c];return{r:Math.round(255*u),g:Math.round(255*s),b:Math.round(255*f)}},fe=function(e,t,r){var n=e.h,o=e.s,a=e.v,i=e.a;if(r)switch(t){case\"hsl\":var l=ae(n,o/100,a/100);return\"hsla(\".concat(n.toFixed(0),\", \").concat(Math.round(100*l[1]),\"%, \").concat(Math.round(100*l[2]),\"%, \").concat(i,\")\");case\"hsv\":return\"hsva(\".concat(n.toFixed(0),\", \").concat(Math.round(o),\"%, \").concat(Math.round(a),\"%, \").concat(i,\")\");case\"rgb\":var c=se(n,o,a),u=c.r,s=c.g,f=c.b;return\"rgba(\".concat(u,\", \").concat(s,\", \").concat(f,\", \").concat(i,\")\");default:return\"\".concat(ce(se(n,o,a))).concat(le(255*i))}else switch(t){case\"hsl\":var d=ae(n,o/100,a/100);return\"hsl(\".concat(n.toFixed(0),\", \").concat(Math.round(100*d[1]),\"%, \").concat(Math.round(100*d[2]),\"%)\");case\"hsv\":return\"hsv(\".concat(n.toFixed(0),\", \").concat(Math.round(o),\"%, \").concat(Math.round(a),\"%)\");case\"rgb\":var p=se(n,o,a),h=p.r,v=p.g,m=p.b;return\"rgb(\".concat(h,\", \").concat(v,\", \").concat(m,\")\");default:return ce(se(n,o,a))}},de=function(e){var t=e.r,r=e.g,n=e.b;t=ue(t,255),r=ue(r,255),n=ue(n,255);var o,a=Math.max(t,r,n),i=Math.min(t,r,n),l=a,c=a-i,u=0===a?0:c/a;if(a===i)o=0;else{switch(a){case t:o=(r-n)/c+(r<n?6:0);break;case r:o=(n-t)/c+2;break;case n:o=(t-r)/c+4}o/=6}return{h:360*o,s:100*u,v:100*l}},pe=function(e){var t=e.h,r=e.s,n=e.l;n/=100;var o=r/=100,a=Math.max(n,.01);return r*=(n*=2)<=1?n:2-n,o*=a<=1?a:2-a,{h:+t,s:100*(0===n?2*o/(a+o):2*r/(n+r)),v:100*((n+r)/2)}},he=function(e){var t=[];if(e.match(/^#([0-9a-fA-f]{3,4})$/g))for(var r=1;r<e.length;r++)t.push(parseInt(\"0x\"+e[r].repeat(2)));else if(e.match(/^#([0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/g))for(var n=1;n<e.length;n+=2)t.push(parseInt(\"0x\"+e.slice(n,n+2)));return{r:t[0],g:t[1],b:t[2],a:t[3]}},ve=function(e,t,r){if(\"string\"==typeof e&&\"\"!==e){var n=be(e,we(e),r),o=xe(n);return fe(o,t,r)}return\"\"},me=function(e){var t=re(e.match(/(\\d(\\.\\d+)?)+/g),4);return{r:t[0],g:t[1],b:t[2],a:t[3]}},ge=function(e){var t=re(e.match(/(\\d(\\.\\d+)?)+/g),4),r=t[0],n=t[1],o=t[2],a=t[3];return{h:r,s:parseFloat(n),l:parseFloat(o),a:a}},ye=function(e){var t=re(e.match(/(\\d(\\.\\d+)?)+/g),4),r=t[0],n=t[1],o=t[2],a=t[3];return{h:parseFloat(r),s:parseFloat(n),v:parseFloat(o),a:parseFloat(a)}},be=function(e,t){if(!(arguments.length>2&&void 0!==arguments[2])||arguments[2])switch(t){case\"rgb\":var r=me(e),n=r.r,o=r.g,a=r.b,i=r.a;return oe(oe({},de({r:n,g:o,b:a})),{},{a:+i});case\"hsv\":var l=ye(e);return{h:l.h,s:l.s,v:l.v,a:l.a};case\"hsl\":var c=ge(e),u=c.h,s=c.s,f=c.l,d=c.a;return oe(oe({},pe({h:u,s:s,l:f})),{},{a:+d});default:var p=he(e),h=p.r,v=p.g,m=p.b,g=p.a;return oe(oe({},de({r:h,g:v,b:m})),{},{a:g/255})}else{switch(t){case\"rgb\":return oe(oe({},de(me(e))),{},{a:1});case\"hsv\":var y=ye(e);return{h:y.h,s:y.s,v:y.v,a:1};case\"hsl\":return oe(oe({},pe(ge(e))),{},{a:1});default:return oe(oe({},de(he(e))),{},{a:1})}}},we=function(e){return e.match(/^#/)?\"hex\":e.match(/^rgb/)?\"rgb\":e.match(/^hsl/)?\"hsl\":e.match(/^hsv/)?\"hsv\":\"hex\"},xe=function(e){var t=e.h,r=e.s,n=e.v,o=e.a;return isNaN(t)&&(t=0),isNaN(r)&&(r=0),isNaN(n)&&(n=0),isNaN(o)&&(o=1),{h:t,s:r,v:n,a:o}},Se=e({name:\"ColorItem\",props:{size:{type:[Number,String],default:20},width:{type:[Number,String]},height:{type:[Number,String]},value:{type:String,default:\"\"},border:{type:Boolean,default:!0},borderRadius:{type:Number,default:5},selected:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1}},emits:[\"select\"],setup:function(e){var r=u(),n=h(\"theme\",{theme:\"light\"}).theme,o=t((function(){return parseFloat((e.width||e.size)+\"\")})),a=t((function(){return parseFloat((e.height||e.size)+\"\")})),i=t((function(){return{width:\"\".concat(v(o),\"px\"),height:\"\".concat(v(a),\"px\"),border:e.border?\"1px solid \".concat(\"dark\"===v(n)?\"#434345\":\"#d9d9d9\"):\"\",borderRadius:\"\".concat(e.borderRadius,\"px\"),boxShadow:e.selected?\"0 0 3px 2px \".concat(\"dark\"===v(n)?\"#2681ff\":\"#1890ff\"):\"\"}})),l=function(){var t=r.value.getContext(\"2d\");r.value.width=v(o),r.value.height=v(a);var n=function(e){var t=document.createElement(\"canvas\"),r=t.getContext(\"2d\"),n=2*e;return t.width=n,t.height=n,r.fillStyle=\"#ffffff\",r.fillRect(0,0,n,n),r.fillStyle=\"#ccd5db\",r.fillRect(0,0,e,e),r.fillRect(e,e,e,e),t}(5);t.fillStyle=t.createPattern(n,\"repeat\"),t.fillRect(0,0,v(o),v(a)),t.fillStyle=e.value,t.fillRect(0,0,v(o),v(a))};return f((function(){return e.value}),(function(){l()})),s((function(){l()})),{canvas:r,colorItemStyle:i}}}),ke=[\"draggable\"];W(\".color-item[data-v-02da71fd]{display:inline-block;vertical-align:top}\"),Se.render=function(e,t,a,i,l,c){return r(),n(\"canvas\",{class:\"color-item\",style:o(e.colorItemStyle),ref:\"canvas\",draggable:e.draggable},null,12,ke)},Se.__scopeId=\"data-v-02da71fd\",Se.__file=\"src/color-item/ColorItem.vue\";var Ce=e({name:\"Colors\",components:{ColorItem:Se},props:{colors:{type:Array,default:function(){return[]}},selectedIndex:{type:Number,default:-1}},emits:[\"change\"],setup:function(e,r){var n=r.emit;return{onSelectColor:function(e,t){n(\"change\",e,t)},useColors:t((function(){return e.colors.map((function(e){return ve(e,\"hex\",!0)}))}))}}}),Oe={class:\"colors\"};function Ie(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Ae(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Ie(Object(r),!0).forEach((function(t){G(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ie(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}W(\".colors[data-v-0f8b52a8]{align-items:center;display:flex;flex-wrap:wrap;margin-top:5px}.color-item[data-v-0f8b52a8]{margin:5px}\"),Ce.render=function(e,t,o,i,l,c){var u=m(\"color-item\");return r(),n(\"div\",Oe,[(r(!0),n(g,null,y(e.useColors,(function(t,n){return r(),b(u,{key:n,class:\"color-item\",size:16,value:t,border:!1,\"border-radius\":3,selected:e.selectedIndex===n,onClick:a((function(r){return e.onSelectColor(t,+n)}),[\"stop\",\"prevent\"])},null,8,[\"value\",\"selected\",\"onClick\"])})),128))])},Ce.__scopeId=\"data-v-0f8b52a8\",Ce.__file=\"src/picker/Colors.vue\";var Pe=e({name:\"Picker\",components:{Colors:Ce,Saturation:$,Hue:X,Alpha:U,InputValue:Q},props:{format:{type:String,default:\"hex\"},showAlpha:{type:Boolean,default:!1},value:{type:String,default:\"\"},colors:{type:Array,default:function(){return[]}},style:{type:Object,default:function(){return{}}}},emits:[\"change\",\"update:value\"],setup:function(e,r){var n=r.emit,o=t((function(){return Ae(Ae({},e.style),{},{width:e.showAlpha?\"230px\":\"205px\"})})),a=t((function(){return e.showAlpha?165:140})),i=u(),l=u(),c=u(),s=function(){var t,r=null===(t=e.value)||void 0===t?void 0:t.trim();if(null!=r&&\"\"!==r){var n=we(r);return xe(be(r,n,e.showAlpha))}return null};f((function(){return e.value}),(function(){e.value!==v(c)&&(i.value=s())}),{immediate:!0}),f(i,(function(t,r){var o=\"\";null!=t?(o=fe(Ae({},t),e.format,e.showAlpha),l.value=Ae({},t)):l.value=null,c.value=o;var a=s();JSON.stringify(t)!==JSON.stringify(a)&&JSON.stringify(t)!==JSON.stringify(r)&&n(\"change\",o)}),{immediate:!0});var d=t((function(){var e;return(null===(e=v(i))||void 0===e?void 0:e.h)||0})),p=t((function(){var e;return(null===(e=v(i))||void 0===e?void 0:e.s)||0})),h=t((function(){var e;return(null===(e=v(i))||void 0===e?void 0:e.v)||0})),m=t((function(){var e,t;return null!=(null===(e=v(i))||void 0===e?void 0:e.a)?null===(t=v(i))||void 0===t?void 0:t.a:1})),g=t((function(){return se(v(d),v(p),v(h))})),y=t((function(){return\"rgb(\".concat(v(g).r,\", \").concat(v(g).g,\", \").concat(v(g).b,\")\")})),b=t((function(){var t=e.format;if(e.showAlpha)switch(t){case\"hsv\":return\"HSVA\";case\"hsl\":return\"HSLA\";case\"rgb\":return\"RGBA\";default:return\"HEX\"}else switch(t){case\"hsv\":return\"HSV\";case\"hsl\":return\"HSL\";case\"rgb\":return\"RGB\";default:return\"HEX\"}})),w=u(-1),x=function(e,t,r){if(0!==e.length){var n=be(e,t,r),o=n.h,a=n.s,l=n.v;if(!(isNaN(o)||isNaN(a)||isNaN(l))){var c=1,u=n.a;isNaN(u)||(c=u),i.value={h:o,s:a,v:l,a:c}}}};return{h:d,s:p,v:h,a:m,rgbStr:y,onSelectSaturation:function(e,t){w.value=-1,null==v(i)?i.value={h:v(d),s:e,v:t,a:v(m)}:i.value=Ae(Ae({},v(i)),{},{s:e,v:t})},onSelectHue:function(e){w.value=-1,null==v(i)&&(i.value={h:e,s:v(p),v:v(h),a:v(m)}),i.value=Ae(Ae({},v(i)),{},{h:e})},onSelectAlpha:function(e){w.value=-1,null==v(i)?i.value={h:v(d),s:v(p),v:v(h),a:e}:i.value=Ae(Ae({},v(i)),{},{a:e})},label:b,colorValue:c,pickerStyle:o,inputWidth:a,onInputChange:function(e){w.value=-1,c.value=e},handleChange:function(){var t,r=null===(t=v(c))||void 0===t?void 0:t.trim();if(\"\"!==r){var n=e.showAlpha,o=e.format,a=function(e,t,r){if(r)switch(t){case\"rgb\":return/^[rR][gG][Bb][Aa][(]([\\s]*(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)[\\s]*,){3}[\\s]*(1|1.0|0|0.[0-9]|0.[0-9][0-9])[\\s]*[)]{1}$/.test(e);case\"hsv\":return/^[hH][Ss][Vv][Aa][(]([\\s]*(2[0-9][0-9]|360|3[0-5][0-9]|[01]?[0-9][0-9]?)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*,){2}([\\s]*(1|1.0|0|0.[0-9]|0.[0-9][0-9])[\\s]*)[)]$/.test(e);case\"hsl\":return/^[hH][Ss][Ll][Aa][(]([\\s]*(2[0-9][0-9]|360|3[0-5][0-9]|[01]?[0-9][0-9]?)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*,){2}([\\s]*(1|1.0|0|0.[0-9]|0.[0-9][0-9])[\\s]*)[)]$/.test(e);default:return/^#([0-9a-fA-f]{4}|[0-9a-fA-F]{8})$/g.test(e)}else switch(t){case\"rgb\":return/^[rR][gG][Bb][(]([\\s]*(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)[\\s]*,){2}[\\s]*(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)[\\s]*[)]{1}$/.test(e);case\"hsv\":return/^[hH][Ss][Vv][(]([\\s]*(2[0-9][0-9]|360|3[0-5][0-9]|[01]?[0-9][0-9]?)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*)[)]$/.test(e);case\"hsl\":return/^[hH][Ss][Ll][(]([\\s]*(2[0-9][0-9]|360|3[0-5][0-9]|[01]?[0-9][0-9]?)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*)[)]$/.test(e);default:return/^#([0-9a-fA-f]{3}|[0-9a-fA-F]{6})$/g.test(e)}}(r,o,n);a?x(r,o,n):null!=v(l)?i.value=v(l):c.value=\"\"}else i.value=null},selectColorIndex:w,onSelectColor:function(e,t){if(w.value=t,\"\"===(e=e.trim()))i.value=null;else{var r=we(e);r?x(e,r,!0):i.value=null}}}}}),je={class:\"picker-inner\"},_e={class:\"picker-header\"};W(\".picker[data-v-6ceadec6]{background:#f7f8f9;border-radius:4px;box-shadow:0 0 16px 0 rgba(0,0,0,.16)}.picker-inner[data-v-6ceadec6]{padding:10px}[pick-colors-theme=dark] .picker-inner[data-v-6ceadec6]{background:#1d2024;box-shadow:0 0 16px 0 rgba(0,0,0,.16)}.picker-header[data-v-6ceadec6]{display:flex;margin-bottom:5px}.alpha[data-v-6ceadec6],.hue[data-v-6ceadec6]{margin-left:10px}.colors[data-v-6ceadec6]{margin-top:5px}\"),Pe.render=function(e,t,a,l,c,u){var s=m(\"saturation\"),f=m(\"hue\"),d=m(\"alpha\"),p=m(\"input-value\"),h=m(\"Colors\");return r(),n(\"div\",{class:\"picker\",style:o(e.pickerStyle)},[i(\"div\",je,[i(\"div\",_e,[w(s,{class:\"saturation\",hue:e.h,saturation:e.s,value:e.v,onChange:e.onSelectSaturation},null,8,[\"hue\",\"saturation\",\"value\",\"onChange\"]),w(f,{class:\"hue\",hue:e.h,onChange:e.onSelectHue},null,8,[\"hue\",\"onChange\"]),e.showAlpha?(r(),b(d,{key:0,class:\"alpha\",alpha:e.a,color:e.rgbStr,onChange:e.onSelectAlpha},null,8,[\"alpha\",\"color\",\"onChange\"])):x(\"v-if\",!0)]),w(p,{label:e.label,value:e.colorValue,width:e.inputWidth,onChange:e.onInputChange,onBlur:e.handleChange,onEnter:e.handleChange},null,8,[\"label\",\"value\",\"width\",\"onChange\",\"onBlur\",\"onEnter\"]),e.colors.length>0?(r(),b(h,{key:0,class:\"colors\",colors:e.colors,\"selected-index\":e.selectColorIndex,onChange:e.onSelectColor},null,8,[\"colors\",\"selected-index\",\"onChange\"])):x(\"v-if\",!0)])],4)},Pe.__scopeId=\"data-v-6ceadec6\",Pe.__file=\"src/picker/Picker.vue\";var Ne=e({name:\"AddColorItem\",props:{size:{type:Number,default:20},selected:{type:Boolean,default:!1}},setup:function(e){var r=h(\"theme\",{theme:\"light\"}).theme;return{addColorItemStyle:t((function(){return{width:\"\".concat(e.size,\"px\"),height:\"\".concat(e.size,\"px\"),lineHeight:\"\".concat(e.size,\"px\"),boxShadow:e.selected?\"0 0 3px 2px \".concat(\"dark\"===v(r)?\"#2681ff\":\"#1890ff\"):\"\"}}))}}}),Ee=[function(e){return l(\"data-v-ceb1719c\"),e=e(),c(),e}((function(){return i(\"g\",{class:\"container\"},[i(\"path\",{d:\"M544 464V160h-80v304H160v80h304v304h80V544h304v-80z\"})],-1)}))];function Fe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Le(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Fe(Object(r),!0).forEach((function(t){G(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Fe(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}W(\".add-color-item[data-v-ceb1719c]{background:#fff;border:1px solid #d9d9d9;border-radius:5px;vertical-align:top}.container[data-v-ceb1719c]{pointer-events:none;transform:scale(.9);transform-origin:center}[pick-colors-theme=dark] .add-color-item[data-v-ceb1719c]{background:#141414;border:1px solid #434343}path[data-v-ceb1719c]{fill:#000}[pick-colors-theme=dark] path[data-v-ceb1719c]{fill:#fff}\"),Ne.render=function(e,t,a,i,l,c){return r(),n(\"svg\",{style:o(e.addColorItemStyle),class:\"add-color-item\",viewBox:\"0 0 1024 1024\",xmlns:\"http://www.w3.org/2000/svg\"},[].concat(Ee),4)},Ne.__scopeId=\"data-v-ceb1719c\",Ne.__file=\"src/add-color-item/AddColorItem.vue\";var ze=null,Me=e({name:\"ColorPicker\",components:{ColorItem:Se,Picker:Pe,AddColorItem:Ne},props:{value:{type:[String,Array]},theme:{type:String,default:\"light\"},size:{type:[Number,String],default:20},width:{type:[Number,String]},height:{type:[Number,String]},format:{type:String,default:\"hex\"},showPicker:{type:Boolean,default:void 0},showAlpha:{type:Boolean,default:!1},addColor:{type:Boolean,default:!1},deleteColor:{type:Boolean,default:!0},max:{type:Number,default:13},popupContainer:{type:[String,Object,Boolean]},zIndex:{type:Number,default:1e3},colors:{type:Array,default:function(){return[\"#ff4500\",\"#ff8c00\",\"#ffd700\",\"#90ee90\",\"#00ced1\",\"#1e90ff\",\"#c71585\",\"#ff4500\",\"#ff7d4d\",\"#00babd\",\"#1f93ff\",\"#fa64c3\"]}}},emits:[\"change\",\"update:value\",\"update:showPicker\",\"overflowMax\",\"closePicker\"],setup:function(e,r){var n=r.emit,o=u([]),a=t((function(){return v(o).map((function(t){return ve(t,\"hex\",e.showAlpha)}))}));f((function(){return e.value}),(function(){var t=e.value||\"\",r=Array.isArray(t)?t:[t];o.value=r.map((function(t){return ve(t,e.format,e.showAlpha)}))}),{immediate:!0});var i=u(void 0),l=t((function(){return v(o)[v(i)]})),c=u(!1);f((function(){return e.showPicker}),(function(){c.value=e.showPicker}),{immediate:!0});var d,p,h,m,g,y,b,w=u(null),x=u(null),A=(d=w,p=x,h={zIndex:e.zIndex},m=u({}),g={strategy:\"absolute\",placement:\"auto\",onFirstUpdate:function(){ze.update()},modifiers:[{name:\"offset\",options:{offset:[0,5]}},{name:\"computeStyles\",options:{gpuAcceleration:!1,adaptive:!0}},{name:\"flip\",options:{fallbackPlacements:[\"top\"],allowedAutoPlacements:[\"top\",\"bottom\"]}},{name:\"applyStyles\",enabled:!1},{name:\"updateState\",enabled:!0,phase:\"write\",requires:[\"computeStyles\"],fn:function(e){var t=e.state,r=t.styles,n=t.placement,o=r.popper;m.value=Le(Le(Le({},o),h),{},{transformOrigin:\"top\"===n?\"center bottom\":\"\"})}}]},f((function(){return[v(d),v(p)]}),(function(e,t){var r,n=re(e,2),o=n[0],a=n[1],i=re(t,2),l=i[0],c=i[1];if(o&&a&&(l!==o||c!==l)){null===(r=ze)||void 0===r||r.destroy();var u=o.$el||o,s=a.$el||a;S((function(){ze=_(u,s,g)}))}})),k((function(){var e;ze&&(null===(e=ze)||void 0===e||e.destroy(),ze=null)})),{instance:ze,style:m}),P=A.style,j=function(){null==v(w)&&(w.value=v(V)[0],i.value=0),void 0===e.showPicker?c.value=!0:n(\"update:showPicker\",!0)},N=function(){i.value=void 0,void 0===e.showPicker?c.value=!1:n(\"update:showPicker\",!1),n(\"closePicker\",I(Array.isArray(e.value)||e.addColor?v(o):v(o)[0]))},E=u(),z=function(){var e=M(T.mark((function e(t){var r,n,o,a;return T.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.target,null!=(o=null===(r=n.dataset)||void 0===r?void 0:r.index)&&\"\"!==o){e.next=4;break}return e.abrupt(\"return\");case 4:if(a=+o,v(i)!==a){e.next=7;break}return e.abrupt(\"return\");case 7:null!=v(i)&&v(i)!==a?(N(),y&&clearTimeout(y),y=setTimeout((function(){j(),clearTimeout(y)}),100)):j(),i.value=a,w.value=n;case 10:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),R=function(){var e=M(T.mark((function e(t){var r,n,o,a,i;return T.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.target,!(!(null!==(r=v(E))&&void 0!==r&&r.isEqualNode(a))&&(null===(n=v(E))||void 0===n?void 0:n.contains(a)))){e.next=4;break}return e.abrupt(\"return\");case 4:if(i=null===(o=v(x))||void 0===o?void 0:o.$el,!((null==i?void 0:i.contains(a))||!1)){e.next=8;break}return e.abrupt(\"return\");case 8:b&&clearTimeout(b),b=setTimeout((function(){v(c)&&N()}),0);case 10:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();f(c,(function(){v(c)&&(j(),clearTimeout(b))}));var B,D=u(e.max>v(o).length),H=t((function(){return\"string\"==typeof e.popupContainer||\"object\"===L(e.popupContainer)&&null!=e.popupContainer?e.popupContainer:\"body\"})),G=t((function(){return\"boolean\"==typeof e.popupContainer&&!1===e.popupContainer})),$=t((function(){return e.theme}));f((function(){return[e.theme,v(x)]}),(function(){S((function(){var e,t;null===(e=v(E))||void 0===e||e.setAttribute(\"pick-colors-theme\",v($)),null===(t=v(x))||void 0===t||null===(t=t.$el)||void 0===t||t.setAttribute(\"pick-colors-theme\",v($))}))}),{immediate:!0}),C(\"theme\",{theme:$});var V=u([]);return s((function(){document.addEventListener(\"mouseup\",R,!1),e.showPicker&&j()})),O((function(){document.removeEventListener(\"mouseup\",R,!1),y&&(clearTimeout(y),y=null),b&&(clearTimeout(b),b=null)})),{valueList:o,colorItemSelected:function(t){return(e.addColor?v(o).length>0:v(o).length>1)&&v(i)===t},selectedColor:l,selectedIndex:i,isShowPicker:c,addColorItemShow:D,onPickerChange:function(t){var r=v(i),a=v(o).slice(),l=v(o).length;if(null!=r){r>=0?a[r]=t:(i.value=l,a.push(t));var c=\"\";c=Array.isArray(e.value)||e.addColor?a:t,void 0===e.value?o.value=Array.isArray(c)?c:[c]:(n(\"update:value\",c),n(\"change\",c,t,r)),e.addColor&&l>=e.max&&(D.value=!1,n(\"overflowMax\"))}},colorPicker:E,onColorClick:z,pickerRef:x,onColorItemDragStart:function(e){e.dataTransfer.effectAllowed=\"move\";var t=e.target;B=+t.dataset.index},onColorItemDragOver:function(e){},onColorItemDrop:function(e){var t=+e.target.dataset.index,r=F(v(o)),a=r[B];r.splice(B,1);var i=r.slice(0,t),l=r.splice(t),c=i.concat([a]).concat(l);n(\"update:value\",c),n(\"change\",c,c[B],B)},colorItemsRef:V,pickerStyle:P,values:a,teleportDisabled:G,toPopupContainer:H}}});W(\".color-picker[data-v-3c43ade8]{display:inline-block}.color-item[data-v-3c43ade8]{margin:5px}.add-color-item[data-v-3c43ade8]{display:inline-block;margin:5px}.picker[data-v-3c43ade8]{overflow:hidden}.v-enter-active[data-v-3c43ade8],.v-leave-active[data-v-3c43ade8]{opacity:1;transform:scaleY(1);transform-origin:center top;transition:opacity .2s ease-in-out,transform .2s ease-in-out}.v-enter-from[data-v-3c43ade8],.v-leave-to[data-v-3c43ade8]{opacity:0;transform:scaleY(0)}\"),Me.render=function(e,t,i,l,c,u){var s=m(\"color-item\"),f=m(\"add-color-item\"),d=m(\"picker\");return r(),n(\"div\",{class:\"color-picker\",ref:\"colorPicker\",onDragstart:t[0]||(t[0]=a((function(){return e.onColorItemDragStart&&e.onColorItemDragStart.apply(e,arguments)}),[\"stop\"])),onDragover:t[1]||(t[1]=a((function(){return e.onColorItemDragOver&&e.onColorItemDragOver.apply(e,arguments)}),[\"prevent\",\"stop\"])),onDrop:t[2]||(t[2]=a((function(){return e.onColorItemDrop&&e.onColorItemDrop.apply(e,arguments)}),[\"prevent\",\"stop\"])),onClick:t[3]||(t[3]=a((function(){return e.onColorClick&&e.onColorClick.apply(e,arguments)}),[\"stop\"]))},[(r(!0),n(g,null,y(e.values,(function(t,n){return r(),b(s,{class:\"color-item\",key:n,ref_for:!0,ref:function(t){return e.colorItemsRef[n]=t},size:e.size,width:e.width,height:e.height,value:t,selected:e.colorItemSelected(n),\"data-index\":n,draggable:e.valueList.length>1,format:e.format},null,8,[\"size\",\"width\",\"height\",\"value\",\"selected\",\"data-index\",\"draggable\",\"format\"])})),128)),e.addColor&&e.addColorItemShow?(r(),b(f,{key:0,class:\"add-color-item\",ref:\"addColorItem\",selected:e.colorItemSelected(-1),\"data-index\":-1},null,8,[\"selected\"])):x(\"v-if\",!0),(r(),b(A,{to:e.toPopupContainer,disabled:e.teleportDisabled},[w(P,null,{default:j((function(){return[e.isShowPicker?(r(),b(d,{key:0,class:\"picker\",style:o(e.pickerStyle),ref:\"pickerRef\",value:e.selectedColor,format:e.format,\"show-alpha\":e.showAlpha,colors:e.colors,onChange:e.onPickerChange},null,8,[\"style\",\"value\",\"format\",\"show-alpha\",\"colors\",\"onChange\"])):x(\"v-if\",!0)]})),_:1})],8,[\"to\",\"disabled\"]))],544)},Me.__scopeId=\"data-v-3c43ade8\",Me.__file=\"src/ColorPicker.vue\";export{Me as default};\n","<template>\n <div class=\"color-pick\">\n <a-input class=\"input\" v-model:value=\"colorValue\"/>\n <pick-colors\n class=\"pick-colors\"\n v-model:value=\"colorValue\"\n :size=\"25\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent } from 'vue'\nimport { Input as AInput } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nexport default defineComponent({\n name: 'ColorPick',\n components: {\n PickColors,\n AInput\n },\n props: {\n value: {\n type: String,\n require: true\n }\n },\n emits: ['change'],\n setup (props, context) {\n const colorValue = computed({\n get: () => props.value,\n set: (value) => {\n context.emit('change', value)\n }\n })\n const onChangColor = (e: any) => {\n colorValue.value = e.hex\n }\n return {\n colorValue,\n onChangColor\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.color-pick {\n display: flex;\n}\n.input {\n margin-right: 10px;\n}\n</style>\n","<template>\n <div class=\"color-pick\">\n <a-input class=\"input\" v-model:value=\"colorValue\"/>\n <pick-colors\n class=\"pick-colors\"\n v-model:value=\"colorValue\"\n :size=\"25\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent } from 'vue'\nimport { Input as AInput } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nexport default defineComponent({\n name: 'ColorPick',\n components: {\n PickColors,\n AInput\n },\n props: {\n value: {\n type: String,\n require: true\n }\n },\n emits: ['change'],\n setup (props, context) {\n const colorValue = computed({\n get: () => props.value,\n set: (value) => {\n context.emit('change', value)\n }\n })\n const onChangColor = (e: any) => {\n colorValue.value = e.hex\n }\n return {\n colorValue,\n onChangColor\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.color-pick {\n display: flex;\n}\n.input {\n margin-right: 10px;\n}\n</style>\n","<template>\n <div class=\"color-group-pick\">\n <pick-colors\n :value=\"value\"\n add-color\n :max=\"max\"\n @change=\"onColorsChange\"\n @overflow-max=\"onOverflowMax\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType, ref } from 'vue'\nimport { message } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nexport default defineComponent({\n name: 'ColorGroupPick',\n components: {\n PickColors\n },\n props: {\n value: {\n type: Array as PropType<string[]>,\n default: () => ([])\n }\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onColorsChange = (value: string[]) => {\n emit('change', value)\n }\n const max = ref(13)\n const onOverflowMax = () => {\n message.warn(`已经超出最大添加个数:${max.value}`)\n }\n return {\n onColorsChange,\n max,\n onOverflowMax\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.color-group-pick {\n padding: 10px;\n}\n</style>\n","<template>\n <div class=\"color-group-pick\">\n <pick-colors\n :value=\"value\"\n add-color\n :max=\"max\"\n @change=\"onColorsChange\"\n @overflow-max=\"onOverflowMax\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType, ref } from 'vue'\nimport { message } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nexport default defineComponent({\n name: 'ColorGroupPick',\n components: {\n PickColors\n },\n props: {\n value: {\n type: Array as PropType<string[]>,\n default: () => ([])\n }\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onColorsChange = (value: string[]) => {\n emit('change', value)\n }\n const max = ref(13)\n const onOverflowMax = () => {\n message.warn(`已经超出最大添加个数:${max.value}`)\n }\n return {\n onColorsChange,\n max,\n onOverflowMax\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.color-group-pick {\n padding: 10px;\n}\n</style>\n","<template>\n <div class=\"form-group\">\n <appstore-add-outlined\n class=\"icon add\"\n @click=\"onAdd\"\n />\n <draggable class=\"form\" v-model=\"myValue\" item-key=\"id\">\n <template #item=\"{ element: e, index: i}\">\n <div class=\"form-row\">\n <div class=\"form-item\" v-for=\"(f, j) in format\" :key=\"j\">\n <template v-if=\"Array.isArray(f.label)\">\n <span class=\"label\">\n {{ f.useLabelIndex ? f.label[i] + (i + 1) : f.label[i] }}\n </span>\n </template>\n <span class=\"label\" v-else>\n {{ f.useLabelIndex ? f.label + (i + 1) : f.label }}\n </span>\n <component\n class=\"value\"\n :[formatTypeValue(f.typeValue)]=\"typeof e === 'string' ? e : (e[f.value] ?? f.defaultValue)\"\n :is=\"useComponentType(f.type)\"\n :style=\"{\n width: !['color', 'switch'].includes(f.type) && format.length > 1 ? '110px' : ''\n }\"\n v-bind=\"f.props\"\n :theme=\"theme\"\n :use-blur-event=\"false\"\n @change=\"onValueChange($event, i, f.value)\"\n />\n </div>\n </div>\n </template>\n </draggable>\n <div class=\"icon-group\">\n <div class=\"icon-item\" v-for=\"(e, i) in myValue\" :key=\"i\">\n <!-- <plus-circle-outlined class=\"icon add-children-icon\" /> -->\n <minus-circle-outlined class=\"icon delete\" @click=\"onDelete(i)\" />\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, PropType } from 'vue'\nimport Draggable from 'vuedraggable'\nimport { AppstoreAddOutlined, MinusCircleOutlined, PlusCircleOutlined } from '@ant-design/icons-vue'\nimport { message } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nimport InputNumber from '../input-number'\nexport default defineComponent({\n name: 'FormGroup',\n components: {\n Draggable,\n AppstoreAddOutlined,\n MinusCircleOutlined,\n PickColors,\n InputNumber,\n PlusCircleOutlined\n },\n props: {\n value: {\n type: Array,\n default: () => []\n },\n // 格式化 (映射)\n format: {\n type: Array as PropType<{ [key: string]: any } []>,\n default: () => []\n },\n useLabelIndex: {\n type: Boolean,\n default: false\n },\n max: {\n type: Number,\n default: -1\n }\n },\n emits: ['change'],\n setup (props, { emit }) {\n const myValue = computed({\n get: () => props.value,\n set: (value) => {\n emit('change', value)\n }\n })\n\n const onValueChange = (e: Event, index: number, key: string) => {\n console.log('e', e)\n const temp = props.value?.slice()\n if (Array.isArray(temp)) {\n const target = e?.target as any\n const value = target?.value != null ? target?.value : e\n if (key) {\n temp[index][key] = value\n } else {\n temp[index] = value\n }\n myValue.value = temp\n }\n }\n\n const onAdd = () => {\n const temp = props.value?.slice()\n if (!Array.isArray(temp)) return\n const len = temp.length\n if (props.max === -1 || props.max > len) {\n const firstItem = temp[0]\n if (Object.prototype.toString.call(firstItem) === '[object Object]') {\n const keys = Object.keys(firstItem)\n const obj = {} as { [key:string]: string}\n keys.forEach((key) => {\n obj[key] = ''\n })\n temp.push(obj)\n } else if (typeof firstItem === 'string') {\n temp.push(firstItem)\n }\n myValue.value = temp\n } else {\n message.warn('已达到最大上限')\n }\n }\n const onDelete = (index: number) => {\n const temp = props.value?.slice()\n if (!Array.isArray(temp)) return\n if (temp.length === 1) {\n message.warn('已经是最后一条数据,无法删除')\n return\n }\n temp.splice(index, 1)\n myValue.value = temp\n }\n\n const useComponentType = (type: 'input' | 'select' | 'color' | 'switch') => {\n const map = {\n input: 'aInput',\n select: 'aSelect',\n color: 'pickColors',\n 'input-number': 'inputNumber',\n switch: 'aSwitch'\n }\n return map[type]\n }\n\n const theme = 'light'\n const formatTypeValue = (v: string) => v || 'value'\n return {\n myValue,\n onAdd,\n useComponentType,\n onValueChange,\n onDelete,\n theme,\n formatTypeValue\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.form-group {\n position: relative;\n display: flex;\n width: 100%;\n}\n\n.form {\n flex: 1;\n overflow-x: hidden;\n &:hover {\n overflow: overlay;\n }\n}\n\n.form-row {\n display: flex;\n align-items: center;\n}\n\n.form-row:not(:last-child) {\n margin-bottom: 15px;\n\n}\n\n.form-item {\n display: flex;\n align-items: center;\n width: 100%;\n margin-bottom: 10px;\n}\n\n.label {\n width: max-content;\n padding-right: 5px;\n}\n\n.value {\n flex: 1;\n margin-right: 10px;\n}\n\n.icon {\n color: rgba(0, 0, 0, 0.65);\n}\n\n.add {\n position: absolute;\n top: -30px;\n right: 0;\n font-size: 20px;\n}\n\n.icon-group {\n display: flex;\n flex-direction: column;\n}\n\n.delete {\n width: 30px;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n font-size: 18px;\n}\n.icon-item {\n display: flex;\n width: 30px;\n height: 40px;\n justify-content: center;\n align-items: center;\n}\n.icon-item:not(:last-child) {\n margin-bottom: 15px;\n}\n\n.add-children-icon {\n font-size: 18px;\n margin-right: 10px;\n}\n\n// .delete:not(:last-child) {\n// margin-bottom: 15px;\n// }\n\n.fixed {\n font-size: 18px;\n}\n\n.use-font-size {\n display: flex;\n align-items: center;\n}\n\n.use-color {\n margin: 5px;\n}\n</style>\n","<template>\n <div class=\"form-group\">\n <appstore-add-outlined\n class=\"icon add\"\n @click=\"onAdd\"\n />\n <draggable class=\"form\" v-model=\"myValue\" item-key=\"id\">\n <template #item=\"{ element: e, index: i}\">\n <div class=\"form-row\">\n <div class=\"form-item\" v-for=\"(f, j) in format\" :key=\"j\">\n <template v-if=\"Array.isArray(f.label)\">\n <span class=\"label\">\n {{ f.useLabelIndex ? f.label[i] + (i + 1) : f.label[i] }}\n </span>\n </template>\n <span class=\"label\" v-else>\n {{ f.useLabelIndex ? f.label + (i + 1) : f.label }}\n </span>\n <component\n class=\"value\"\n :[formatTypeValue(f.typeValue)]=\"typeof e === 'string' ? e : (e[f.value] ?? f.defaultValue)\"\n :is=\"useComponentType(f.type)\"\n :style=\"{\n width: !['color', 'switch'].includes(f.type) && format.length > 1 ? '110px' : ''\n }\"\n v-bind=\"f.props\"\n :theme=\"theme\"\n :use-blur-event=\"false\"\n @change=\"onValueChange($event, i, f.value)\"\n />\n </div>\n </div>\n </template>\n </draggable>\n <div class=\"icon-group\">\n <div class=\"icon-item\" v-for=\"(e, i) in myValue\" :key=\"i\">\n <!-- <plus-circle-outlined class=\"icon add-children-icon\" /> -->\n <minus-circle-outlined class=\"icon delete\" @click=\"onDelete(i)\" />\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, PropType } from 'vue'\nimport Draggable from 'vuedraggable'\nimport { AppstoreAddOutlined, MinusCircleOutlined, PlusCircleOutlined } from '@ant-design/icons-vue'\nimport { message } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nimport InputNumber from '../input-number'\nexport default defineComponent({\n name: 'FormGroup',\n components: {\n Draggable,\n AppstoreAddOutlined,\n MinusCircleOutlined,\n PickColors,\n InputNumber,\n PlusCircleOutlined\n },\n props: {\n value: {\n type: Array,\n default: () => []\n },\n // 格式化 (映射)\n format: {\n type: Array as PropType<{ [key: string]: any } []>,\n default: () => []\n },\n useLabelIndex: {\n type: Boolean,\n default: false\n },\n max: {\n type: Number,\n default: -1\n }\n },\n emits: ['change'],\n setup (props, { emit }) {\n const myValue = computed({\n get: () => props.value,\n set: (value) => {\n emit('change', value)\n }\n })\n\n const onValueChange = (e: Event, index: number, key: string) => {\n console.log('e', e)\n const temp = props.value?.slice()\n if (Array.isArray(temp)) {\n const target = e?.target as any\n const value = target?.value != null ? target?.value : e\n if (key) {\n temp[index][key] = value\n } else {\n temp[index] = value\n }\n myValue.value = temp\n }\n }\n\n const onAdd = () => {\n const temp = props.value?.slice()\n if (!Array.isArray(temp)) return\n const len = temp.length\n if (props.max === -1 || props.max > len) {\n const firstItem = temp[0]\n if (Object.prototype.toString.call(firstItem) === '[object Object]') {\n const keys = Object.keys(firstItem)\n const obj = {} as { [key:string]: string}\n keys.forEach((key) => {\n obj[key] = ''\n })\n temp.push(obj)\n } else if (typeof firstItem === 'string') {\n temp.push(firstItem)\n }\n myValue.value = temp\n } else {\n message.warn('已达到最大上限')\n }\n }\n const onDelete = (index: number) => {\n const temp = props.value?.slice()\n if (!Array.isArray(temp)) return\n if (temp.length === 1) {\n message.warn('已经是最后一条数据,无法删除')\n return\n }\n temp.splice(index, 1)\n myValue.value = temp\n }\n\n const useComponentType = (type: 'input' | 'select' | 'color' | 'switch') => {\n const map = {\n input: 'aInput',\n select: 'aSelect',\n color: 'pickColors',\n 'input-number': 'inputNumber',\n switch: 'aSwitch'\n }\n return map[type]\n }\n\n const theme = 'light'\n const formatTypeValue = (v: string) => v || 'value'\n return {\n myValue,\n onAdd,\n useComponentType,\n onValueChange,\n onDelete,\n theme,\n formatTypeValue\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.form-group {\n position: relative;\n display: flex;\n width: 100%;\n}\n\n.form {\n flex: 1;\n overflow-x: hidden;\n &:hover {\n overflow: overlay;\n }\n}\n\n.form-row {\n display: flex;\n align-items: center;\n}\n\n.form-row:not(:last-child) {\n margin-bottom: 15px;\n\n}\n\n.form-item {\n display: flex;\n align-items: center;\n width: 100%;\n margin-bottom: 10px;\n}\n\n.label {\n width: max-content;\n padding-right: 5px;\n}\n\n.value {\n flex: 1;\n margin-right: 10px;\n}\n\n.icon {\n color: rgba(0, 0, 0, 0.65);\n}\n\n.add {\n position: absolute;\n top: -30px;\n right: 0;\n font-size: 20px;\n}\n\n.icon-group {\n display: flex;\n flex-direction: column;\n}\n\n.delete {\n width: 30px;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n font-size: 18px;\n}\n.icon-item {\n display: flex;\n width: 30px;\n height: 40px;\n justify-content: center;\n align-items: center;\n}\n.icon-item:not(:last-child) {\n margin-bottom: 15px;\n}\n\n.add-children-icon {\n font-size: 18px;\n margin-right: 10px;\n}\n\n// .delete:not(:last-child) {\n// margin-bottom: 15px;\n// }\n\n.fixed {\n font-size: 18px;\n}\n\n.use-font-size {\n display: flex;\n align-items: center;\n}\n\n.use-color {\n margin: 5px;\n}\n</style>\n","<template>\n <a-textarea\n :value=\"value\"\n :disabled=\"disabled\"\n :autoSize=\"{\n minRows: 3\n }\"\n @change=\"onTextareaChange\"\n />\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { Textarea as ATextarea } from 'ant-design-vue'\nexport default defineComponent({\n name: 'Textarea',\n props: {\n value: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n components: {\n ATextarea\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onTextareaChange = (e: any) => {\n emit('change', e.target.value)\n }\n return {\n onTextareaChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-textarea\n :value=\"value\"\n :disabled=\"disabled\"\n :autoSize=\"{\n minRows: 3\n }\"\n @change=\"onTextareaChange\"\n />\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { Textarea as ATextarea } from 'ant-design-vue'\nexport default defineComponent({\n name: 'Textarea',\n props: {\n value: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n components: {\n ATextarea\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onTextareaChange = (e: any) => {\n emit('change', e.target.value)\n }\n return {\n onTextareaChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <div class=\"props-to-form\">\n <template\n v-for=\"(formProp, key) in formProps\"\n :key=\"key\"\n >\n <!--限定特定组件修改属性,formProp 为对象 -->\n <div class=\"prop-item\">\n <span class=\"label\">\n {{ formProp.label }}\n </span>\n <div class=\"component-wrapper\">\n <template v-if=\"Array.isArray(formProp)\">\n <template\n v-for=\"(v, k) in formProp\"\n :key=\"k\"\n >\n <component\n class=\"component\"\n :is=\"v.component\"\n :style=\"v.style\"\n :disabled=\"disabled\"\n v-bind=\"v.props\"\n v-on=\"v.events\"\n />\n </template>\n </template>\n <template v-if=\"!Array.isArray(formProp)\">\n <component\n class=\"component\"\n v-if=\"formProp.component\"\n :is=\"formProp.component\"\n :[formProp.valueProp]=\"formProp.value\"\n :style=\"formProp.style\"\n :disabled=\"disabled\"\n v-bind=\"formProp.props\"\n v-on=\"formProp.events\"\n />\n </template>\n </div>\n </div>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, unref, inject } from 'vue'\nimport { reduce } from 'lodash-es'\nimport { CHARTS_OPTIONS, UPDATE_CHARTS_OPTIONS } from '@/utils/constant'\nimport {\n PropsToAttributeConfig,\n mapAttributeProps,\n PropToAttributeConfig\n} from './data'\nimport { lowerCaseIncludes } from '@/utils/util'\nimport Input from './input'\nimport InputNumber from './input-number'\nimport RadioGroup from './radio-group'\nimport Select from './select'\nimport Switch from './switch'\nimport ColorPick from './color-pick'\nimport ColorGroupPick from './color-group-pick'\nimport FormGroup from './form-group'\nimport Textarea from './textarea'\nexport default defineComponent({\n name: 'PropsToForm',\n components: {\n Input,\n InputNumber,\n RadioGroup,\n Select,\n Switch,\n ColorPick,\n ColorGroupPick,\n FormGroup,\n Textarea\n },\n props: {\n props: {\n type: Object,\n require: true\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n setup (props) {\n interface SetOptions {\n mapAttributeProp: PropToAttributeConfig\n result: PropsToAttributeConfig\n key: string\n value: any\n }\n const chartsOptions = inject(CHARTS_OPTIONS) as {\n [key: string]: any\n }\n const updateChartsOptions = inject(UPDATE_CHARTS_OPTIONS) as Function\n const type = computed(() => unref(chartsOptions)?.type)\n const setFormProps = (setOptions: SetOptions) => {\n const { result, mapAttributeProp, key, value } = setOptions\n if (result == null || typeof result !== 'object') {\n return\n }\n const {\n valueProp = 'value',\n changeValueEventName = 'change',\n events\n } = mapAttributeProp\n result[key] = {\n ...mapAttributeProp,\n // 值属性\n valueProp,\n value,\n events: {\n [changeValueEventName]: (\n value: any,\n updateValue: boolean = true\n ) => {\n // 值改变后回调\n if (updateValue) {\n updateChartsOptions({ [key]: value })\n } else {\n updateChartsOptions({})\n }\n },\n ...events\n }\n }\n }\n // 当前选择的元素\n const formProps = computed(() => {\n const attrs = props.props\n if (attrs == null || typeof attrs !== 'object') {\n return {}\n }\n return reduce(\n attrs,\n (result, value, key) => {\n const mapAttributeProp = mapAttributeProps[key]\n if (Array.isArray(mapAttributeProp)) {\n const item = mapAttributeProp.find((item) => {\n const { onlyType, excludeType } = item\n if (onlyType == null && excludeType == null) {\n return true\n } else if (onlyType) {\n return lowerCaseIncludes(unref(type), onlyType)\n } else if (excludeType) {\n return !lowerCaseIncludes(unref(type), excludeType)\n }\n return false\n })\n if (item) {\n setFormProps({ result, value, key, mapAttributeProp: item })\n }\n } else {\n setFormProps({ result, value, key, mapAttributeProp })\n }\n return result\n },\n {} as { [key: string]: any }\n )\n })\n return {\n formProps,\n lowerCaseIncludes\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.prop-item {\n display: flex;\n align-items: center;\n padding: 5px 5px 10px 5px;\n}\n\n.label {\n width: 28%;\n display: flex;\n justify-content: center;\n}\n\n.label-vertical {\n justify-content: flex-start;\n padding-bottom: 4px;\n}\n\n.component-wrapper {\n width: 72%;\n}\n\n.component {\n width: 100%;\n}\n\n.layout {\n align-items: flex-start;\n flex-direction: column;\n padding: 10px 5px 10px 10px;\n\n .label {\n text-align: left;\n margin-bottom: 5px;\n }\n\n .component-wrapper {\n width: 100%;\n }\n}\n</style>\n","<template>\n <div class=\"props-to-form\">\n <template\n v-for=\"(formProp, key) in formProps\"\n :key=\"key\"\n >\n <!--限定特定组件修改属性,formProp 为对象 -->\n <div class=\"prop-item\">\n <span class=\"label\">\n {{ formProp.label }}\n </span>\n <div class=\"component-wrapper\">\n <template v-if=\"Array.isArray(formProp)\">\n <template\n v-for=\"(v, k) in formProp\"\n :key=\"k\"\n >\n <component\n class=\"component\"\n :is=\"v.component\"\n :style=\"v.style\"\n :disabled=\"disabled\"\n v-bind=\"v.props\"\n v-on=\"v.events\"\n />\n </template>\n </template>\n <template v-if=\"!Array.isArray(formProp)\">\n <component\n class=\"component\"\n v-if=\"formProp.component\"\n :is=\"formProp.component\"\n :[formProp.valueProp]=\"formProp.value\"\n :style=\"formProp.style\"\n :disabled=\"disabled\"\n v-bind=\"formProp.props\"\n v-on=\"formProp.events\"\n />\n </template>\n </div>\n </div>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, unref, inject } from 'vue'\nimport { reduce } from 'lodash-es'\nimport { CHARTS_OPTIONS, UPDATE_CHARTS_OPTIONS } from '@/utils/constant'\nimport {\n PropsToAttributeConfig,\n mapAttributeProps,\n PropToAttributeConfig\n} from './data'\nimport { lowerCaseIncludes } from '@/utils/util'\nimport Input from './input'\nimport InputNumber from './input-number'\nimport RadioGroup from './radio-group'\nimport Select from './select'\nimport Switch from './switch'\nimport ColorPick from './color-pick'\nimport ColorGroupPick from './color-group-pick'\nimport FormGroup from './form-group'\nimport Textarea from './textarea'\nexport default defineComponent({\n name: 'PropsToForm',\n components: {\n Input,\n InputNumber,\n RadioGroup,\n Select,\n Switch,\n ColorPick,\n ColorGroupPick,\n FormGroup,\n Textarea\n },\n props: {\n props: {\n type: Object,\n require: true\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n setup (props) {\n interface SetOptions {\n mapAttributeProp: PropToAttributeConfig\n result: PropsToAttributeConfig\n key: string\n value: any\n }\n const chartsOptions = inject(CHARTS_OPTIONS) as {\n [key: string]: any\n }\n const updateChartsOptions = inject(UPDATE_CHARTS_OPTIONS) as Function\n const type = computed(() => unref(chartsOptions)?.type)\n const setFormProps = (setOptions: SetOptions) => {\n const { result, mapAttributeProp, key, value } = setOptions\n if (result == null || typeof result !== 'object') {\n return\n }\n const {\n valueProp = 'value',\n changeValueEventName = 'change',\n events\n } = mapAttributeProp\n result[key] = {\n ...mapAttributeProp,\n // 值属性\n valueProp,\n value,\n events: {\n [changeValueEventName]: (\n value: any,\n updateValue: boolean = true\n ) => {\n // 值改变后回调\n if (updateValue) {\n updateChartsOptions({ [key]: value })\n } else {\n updateChartsOptions({})\n }\n },\n ...events\n }\n }\n }\n // 当前选择的元素\n const formProps = computed(() => {\n const attrs = props.props\n if (attrs == null || typeof attrs !== 'object') {\n return {}\n }\n return reduce(\n attrs,\n (result, value, key) => {\n const mapAttributeProp = mapAttributeProps[key]\n if (Array.isArray(mapAttributeProp)) {\n const item = mapAttributeProp.find((item) => {\n const { onlyType, excludeType } = item\n if (onlyType == null && excludeType == null) {\n return true\n } else if (onlyType) {\n return lowerCaseIncludes(unref(type), onlyType)\n } else if (excludeType) {\n return !lowerCaseIncludes(unref(type), excludeType)\n }\n return false\n })\n if (item) {\n setFormProps({ result, value, key, mapAttributeProp: item })\n }\n } else {\n setFormProps({ result, value, key, mapAttributeProp })\n }\n return result\n },\n {} as { [key: string]: any }\n )\n })\n return {\n formProps,\n lowerCaseIncludes\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.prop-item {\n display: flex;\n align-items: center;\n padding: 5px 5px 10px 5px;\n}\n\n.label {\n width: 28%;\n display: flex;\n justify-content: center;\n}\n\n.label-vertical {\n justify-content: flex-start;\n padding-bottom: 4px;\n}\n\n.component-wrapper {\n width: 72%;\n}\n\n.component {\n width: 100%;\n}\n\n.layout {\n align-items: flex-start;\n flex-direction: column;\n padding: 10px 5px 10px 10px;\n\n .label {\n text-align: left;\n margin-bottom: 5px;\n }\n\n .component-wrapper {\n width: 100%;\n }\n}\n</style>\n","<template>\n <div class=\"editor\" ref=\"dom\">\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, onMounted, onUnmounted, watch, PropType } from 'vue'\nimport { debounce } from 'lodash-es'\nimport { editor as monacoEditor } from 'monaco-editor'\nimport EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'\nimport JsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'\n// 暂时不引入ts,后面需要可以开启\nimport TsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker.js?worker'\nexport type LanguageType = 'json' | 'typescript'\nexport default defineComponent({\n name: 'Editor',\n props: {\n valueData: {\n type: String,\n default: ''\n },\n options: {\n type: Object,\n default: () => ({})\n },\n language: {\n type: String as PropType<LanguageType>,\n default: 'json'\n },\n // 是否使用小地图\n isUseMinimap: {\n type: Boolean,\n default: false\n },\n // 是否开启提示\n UseSuggestions: {\n type: Boolean,\n default: false\n },\n // 是否自动格式化\n autoFormat: {\n type: Boolean,\n default: false\n },\n readonly: {\n type: Boolean,\n default: false\n }\n },\n emits: ['change', 'update:valueData'],\n setup (props, { emit }) {\n /* eslint-disable */\n // @ts-ignore\n window.MonacoEnvironment = {\n getWorker (workerId: string, label: string) {\n if (label === 'json') {\n return new JsonWorker()\n }\n if (label === 'typescript') {\n return new TsWorker()\n }\n return new EditorWorker()\n }\n }\n /* eslint-enable */\n\n // dom\n const dom = ref()\n // 实例\n let editor = null as monacoEditor.IStandaloneCodeEditor | null\n\n // 主题设置\n const themeMap = {\n light: 'vs',\n dark: 'vs-dark'\n }\n onMounted(() => {\n editor = monacoEditor.create(dom.value, {\n language: props.language,\n tabSize: 2,\n automaticLayout: true,\n scrollBeyondLastLine: false,\n theme: themeMap.light,\n wordWrap: 'off',\n lineDecorationsWidth: 3,\n lineHeight: 15,\n lineNumbersMinChars: 3,\n formatOnPaste: true,\n formatOnType: true,\n wordBasedSuggestions: false,\n // 代码提示\n quickSuggestions: props.UseSuggestions,\n snippetSuggestions: 'none',\n suggestOnTriggerCharacters: false,\n scrollbar: {\n verticalScrollbarSize: 6,\n horizontalScrollbarSize: 6,\n alwaysConsumeMouseWheel: false,\n arrowSize: 0\n },\n autoIndent: 'advanced',\n glyphMargin: false,\n fontSize: 13,\n // 关闭右键菜单\n contextmenu: false,\n // 小地图\n minimap: {\n enabled: props.isUseMinimap\n },\n readOnly: props.readonly,\n ...props.options\n })\n // 初始化需要延迟格式化\n editor?.setValue(props.valueData)\n // 如果发现 json 格式化无用\n // 请尝试使用 JSON.stringify(ob, null, 2) 进行格式化\n if (props.autoFormat) {\n setTimeout(() => {\n editor?.getAction('editor.action.formatDocument').run()\n }, 200)\n }\n editor.onDidChangeModelContent(debounce(() => {\n // const selection = editor?.getSelection()\n // const = selection?.getSelectionStart()\n const value = editor?.getValue()\n emit('change', value)\n }, 300))\n\n // 由于 change 会实时改变光标,所以v-model在失去焦点时完成\n editor.onDidBlurEditorText(() => {\n const value = editor?.getValue()\n emit('update:valueData', value)\n })\n })\n // 监听值变化\n watch(() => props.valueData, (code) => {\n if (editor) {\n // 保留光标位置\n const position = editor.getPosition()\n editor.setValue(code)\n // 格式化\n if (props.autoFormat) {\n editor.getAction('editor.action.formatDocument').run()\n }\n if (position != null) {\n // 重新赋值光标位置\n editor.setPosition(position)\n }\n }\n })\n\n onUnmounted(() => {\n editor?.dispose()\n })\n return {\n dom\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.editor {\n width: 100%;\n height: 100%;\n}\n:deep(.overlayWidgets) {\n .find-widget {\n min-width: 220px !important;\n }\n}\n</style>\n","<template>\n <div class=\"editor\" ref=\"dom\">\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, onMounted, onUnmounted, watch, PropType } from 'vue'\nimport { debounce } from 'lodash-es'\nimport { editor as monacoEditor } from 'monaco-editor'\nimport EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'\nimport JsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'\n// 暂时不引入ts,后面需要可以开启\nimport TsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker.js?worker'\nexport type LanguageType = 'json' | 'typescript'\nexport default defineComponent({\n name: 'Editor',\n props: {\n valueData: {\n type: String,\n default: ''\n },\n options: {\n type: Object,\n default: () => ({})\n },\n language: {\n type: String as PropType<LanguageType>,\n default: 'json'\n },\n // 是否使用小地图\n isUseMinimap: {\n type: Boolean,\n default: false\n },\n // 是否开启提示\n UseSuggestions: {\n type: Boolean,\n default: false\n },\n // 是否自动格式化\n autoFormat: {\n type: Boolean,\n default: false\n },\n readonly: {\n type: Boolean,\n default: false\n }\n },\n emits: ['change', 'update:valueData'],\n setup (props, { emit }) {\n /* eslint-disable */\n // @ts-ignore\n window.MonacoEnvironment = {\n getWorker (workerId: string, label: string) {\n if (label === 'json') {\n return new JsonWorker()\n }\n if (label === 'typescript') {\n return new TsWorker()\n }\n return new EditorWorker()\n }\n }\n /* eslint-enable */\n\n // dom\n const dom = ref()\n // 实例\n let editor = null as monacoEditor.IStandaloneCodeEditor | null\n\n // 主题设置\n const themeMap = {\n light: 'vs',\n dark: 'vs-dark'\n }\n onMounted(() => {\n editor = monacoEditor.create(dom.value, {\n language: props.language,\n tabSize: 2,\n automaticLayout: true,\n scrollBeyondLastLine: false,\n theme: themeMap.light,\n wordWrap: 'off',\n lineDecorationsWidth: 3,\n lineHeight: 15,\n lineNumbersMinChars: 3,\n formatOnPaste: true,\n formatOnType: true,\n wordBasedSuggestions: false,\n // 代码提示\n quickSuggestions: props.UseSuggestions,\n snippetSuggestions: 'none',\n suggestOnTriggerCharacters: false,\n scrollbar: {\n verticalScrollbarSize: 6,\n horizontalScrollbarSize: 6,\n alwaysConsumeMouseWheel: false,\n arrowSize: 0\n },\n autoIndent: 'advanced',\n glyphMargin: false,\n fontSize: 13,\n // 关闭右键菜单\n contextmenu: false,\n // 小地图\n minimap: {\n enabled: props.isUseMinimap\n },\n readOnly: props.readonly,\n ...props.options\n })\n // 初始化需要延迟格式化\n editor?.setValue(props.valueData)\n // 如果发现 json 格式化无用\n // 请尝试使用 JSON.stringify(ob, null, 2) 进行格式化\n if (props.autoFormat) {\n setTimeout(() => {\n editor?.getAction('editor.action.formatDocument').run()\n }, 200)\n }\n editor.onDidChangeModelContent(debounce(() => {\n // const selection = editor?.getSelection()\n // const = selection?.getSelectionStart()\n const value = editor?.getValue()\n emit('change', value)\n }, 300))\n\n // 由于 change 会实时改变光标,所以v-model在失去焦点时完成\n editor.onDidBlurEditorText(() => {\n const value = editor?.getValue()\n emit('update:valueData', value)\n })\n })\n // 监听值变化\n watch(() => props.valueData, (code) => {\n if (editor) {\n // 保留光标位置\n const position = editor.getPosition()\n editor.setValue(code)\n // 格式化\n if (props.autoFormat) {\n editor.getAction('editor.action.formatDocument').run()\n }\n if (position != null) {\n // 重新赋值光标位置\n editor.setPosition(position)\n }\n }\n })\n\n onUnmounted(() => {\n editor?.dispose()\n })\n return {\n dom\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.editor {\n width: 100%;\n height: 100%;\n}\n:deep(.overlayWidgets) {\n .find-widget {\n min-width: 220px !important;\n }\n}\n</style>\n","<template>\r\n <div class=\"style-group\">\r\n <a-form-item label=\"图表类型\">\r\n <a-select\r\n v-model:value=\"type\"\r\n style=\"width: 100%\"\r\n @change=\"handleChangeType\"\r\n >\r\n <a-select-option value=\"line\">折线图</a-select-option>\r\n <a-select-option value=\"bar\">柱状图</a-select-option>\r\n <a-select-option value=\"pie\">饼图</a-select-option>\r\n <a-select-option value=\"comboGraph\">组合图表</a-select-option>\r\n <a-select-option value=\"customGraph\">自定义图表</a-select-option>\r\n </a-select>\r\n </a-form-item>\r\n <a-collapse v-model:activeKey=\"activePanel\">\r\n <template\r\n v-for=\"detailPropsGroup in detailPropsGroups\"\r\n :key=\"detailPropsGroup.title\"\r\n >\r\n <template v-if=\"isRenderForm(detailPropsGroup, type)\">\r\n <!--传递 title 时-->\r\n <a-collapse-panel\r\n v-if=\"detailPropsGroup.title\"\r\n :header=\"detailPropsGroup.title\"\r\n :key=\"detailPropsGroup.title\"\r\n >\r\n <template #extra>\r\n <a-switch\r\n v-if=\"typeof detailPropsGroup.enableProps === 'boolean'\"\r\n :checked=\"detailPropsGroup.enableProps\"\r\n @change=\"\r\n onSwitchChange($event, detailPropsGroup.enablePropsName)\r\n \"\r\n @click=\"onSwitchClick\"\r\n />\r\n </template>\r\n <props-to-form\r\n :props=\"detailPropsGroup.props\"\r\n :disabled=\"\r\n typeof detailPropsGroup.enableProps === 'boolean'\r\n ? !detailPropsGroup.enableProps\r\n : false\r\n \"\r\n />\r\n </a-collapse-panel>\r\n </template>\r\n </template>\r\n <!-- <a-collapse-panel\r\n key=\"props\"\r\n header=\"属性配置\"\r\n >\r\n <editor\r\n class=\"json-editor\"\r\n :valueData=\"ComponentString\"\r\n @change=\"updateComponentOptions\"\r\n />\r\n </a-collapse-panel> -->\r\n <!-- 只有在选择自定义图表展示 -->\r\n <a-collapse-panel\r\n key=\"custom-option\"\r\n header=\"自定义option配置\"\r\n v-if=\"isShowOptionEditor\"\r\n >\r\n <editor\r\n class=\"option-editor\"\r\n language=\"typescript\"\r\n :valueData=\"optionCode\"\r\n @change=\"onEditorChange\"\r\n />\r\n </a-collapse-panel>\r\n </a-collapse>\r\n </div>\r\n</template>\r\n<script lang=\"ts\">\r\nimport { defineComponent, computed, ref, unref, inject } from 'vue'\r\nimport {\r\n FormItem as AFormItem,\r\n Select as ASelect,\r\n SelectOption as ASelectOption,\r\n Collapse as ACollapse,\r\n CollapsePanel as ACollapsePanel,\r\n Switch as ASwitch\r\n} from 'ant-design-vue'\r\nimport {\r\n DetailPropsGroups,\r\n DetailPropsGroup,\r\n PropsGroup,\r\n propsGroups\r\n} from './data'\r\nimport propsMap from '@/indicator/indicator-library/data-config/style-config-group/chart-props'\r\nimport PropsToForm from './props-to-form'\r\nimport Editor from '@/indicator/editor'\r\nimport { CHARTS_OPTIONS, UPDATE_CHARTS_OPTIONS, REFRESH_DATA } from '@/utils/constant'\r\nimport { lowerCaseIncludes } from '@/utils/util'\r\nimport { pick } from 'lodash-es'\r\nimport 'ant-design-vue/es/collapse/style'\r\nexport default defineComponent({\r\n name: 'StyleConfigGroup',\r\n components: {\r\n PropsToForm,\r\n Editor,\r\n AFormItem,\r\n ASelect,\r\n ASelectOption,\r\n ACollapse,\r\n ACollapsePanel,\r\n ASwitch\r\n },\r\n setup () {\r\n const activePanel = ref<number[]>([])\r\n const chartsOptions = inject(CHARTS_OPTIONS) as {\r\n [key: string]: any\r\n }\r\n const updateChartsOptions = inject(UPDATE_CHARTS_OPTIONS) as Function\r\n const refreshData = inject(REFRESH_DATA) as Function\r\n const handleChangeType = (val: string) => {\r\n updateChartsOptions(\r\n {\r\n ...propsMap[val]\r\n },\r\n false\r\n )\r\n refreshData()\r\n }\r\n const type = computed(() => unref(chartsOptions)?.type)\r\n const detailPropsGroups = computed<DetailPropsGroups>(() => {\r\n return propsGroups\r\n .map((propsGroup: PropsGroup) => {\r\n const { props, title, enableProps, onlyType, excludeType } =\r\n propsGroup\r\n const pickProps = [] as string[]\r\n props.forEach((prop) => {\r\n if (typeof prop === 'string') {\r\n pickProps.push(prop)\r\n }\r\n })\r\n return {\r\n title,\r\n enableProps:\r\n typeof enableProps === 'string' && chartsOptions.value\r\n ? (chartsOptions.value[enableProps] as boolean)\r\n : undefined,\r\n enablePropsName: enableProps,\r\n onlyType,\r\n excludeType,\r\n props: pick(unref(chartsOptions), pickProps)\r\n }\r\n }) // 过滤空属性组\r\n .filter(({ props }) => {\r\n return Object.keys(props).length > 0\r\n })\r\n })\r\n const isRenderForm = (\r\n detailPropsGroup: DetailPropsGroup,\r\n componentType: string\r\n ) => {\r\n const { onlyType, excludeType } = detailPropsGroup\r\n if (onlyType == null && excludeType == null) {\r\n return true\r\n } else if (onlyType) {\r\n return lowerCaseIncludes(componentType, onlyType)\r\n } else if (excludeType) {\r\n return !lowerCaseIncludes(componentType, excludeType)\r\n }\r\n return false\r\n }\r\n const onSwitchClick = (\r\n checked: boolean | string | number,\r\n event: Event\r\n ) => {\r\n event?.stopPropagation()\r\n }\r\n const onSwitchChange = (value: boolean, key: string | undefined) => {\r\n if (key != null) {\r\n updateChartsOptions({\r\n [key]: value\r\n })\r\n }\r\n }\r\n const ComponentString = computed(() =>\r\n JSON.stringify(unref(chartsOptions), null, 2)\r\n )\r\n const updateComponentOptions = (code: string) => {\r\n try {\r\n const props = JSON.parse(code || '{}')\r\n updateChartsOptions(props, false)\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n const optionCode = ref('')\r\n const onEditorChange = (code: string) => {\r\n try {\r\n optionCode.value = code\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n const isShowOptionEditor = computed(() =>\r\n ['customGraph'].includes(unref(chartsOptions)?.type)\r\n )\r\n return {\r\n type,\r\n handleChangeType,\r\n activePanel,\r\n ComponentString,\r\n updateComponentOptions,\r\n optionCode,\r\n onEditorChange,\r\n onSwitchClick,\r\n onSwitchChange,\r\n detailPropsGroups,\r\n isRenderForm,\r\n isShowOptionEditor\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.style-group {\r\n width: 70%;\r\n\r\n .option-editor {\r\n @height: 500px;\r\n min-height: @height;\r\n max-height: @height;\r\n border: 1px solid #e9e9e9;\r\n }\r\n}\r\n</style>\r\n<style lang=\"less\">\r\n.attribute-config .ant-collapse-content > .ant-collapse-content-box > editor {\r\n padding: 16px 10px;\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"style-group\">\r\n <a-form-item label=\"图表类型\">\r\n <a-select\r\n v-model:value=\"type\"\r\n style=\"width: 100%\"\r\n @change=\"handleChangeType\"\r\n >\r\n <a-select-option value=\"line\">折线图</a-select-option>\r\n <a-select-option value=\"bar\">柱状图</a-select-option>\r\n <a-select-option value=\"pie\">饼图</a-select-option>\r\n <a-select-option value=\"comboGraph\">组合图表</a-select-option>\r\n <a-select-option value=\"customGraph\">自定义图表</a-select-option>\r\n </a-select>\r\n </a-form-item>\r\n <a-collapse v-model:activeKey=\"activePanel\">\r\n <template\r\n v-for=\"detailPropsGroup in detailPropsGroups\"\r\n :key=\"detailPropsGroup.title\"\r\n >\r\n <template v-if=\"isRenderForm(detailPropsGroup, type)\">\r\n <!--传递 title 时-->\r\n <a-collapse-panel\r\n v-if=\"detailPropsGroup.title\"\r\n :header=\"detailPropsGroup.title\"\r\n :key=\"detailPropsGroup.title\"\r\n >\r\n <template #extra>\r\n <a-switch\r\n v-if=\"typeof detailPropsGroup.enableProps === 'boolean'\"\r\n :checked=\"detailPropsGroup.enableProps\"\r\n @change=\"\r\n onSwitchChange($event, detailPropsGroup.enablePropsName)\r\n \"\r\n @click=\"onSwitchClick\"\r\n />\r\n </template>\r\n <props-to-form\r\n :props=\"detailPropsGroup.props\"\r\n :disabled=\"\r\n typeof detailPropsGroup.enableProps === 'boolean'\r\n ? !detailPropsGroup.enableProps\r\n : false\r\n \"\r\n />\r\n </a-collapse-panel>\r\n </template>\r\n </template>\r\n <!-- <a-collapse-panel\r\n key=\"props\"\r\n header=\"属性配置\"\r\n >\r\n <editor\r\n class=\"json-editor\"\r\n :valueData=\"ComponentString\"\r\n @change=\"updateComponentOptions\"\r\n />\r\n </a-collapse-panel> -->\r\n <!-- 只有在选择自定义图表展示 -->\r\n <a-collapse-panel\r\n key=\"custom-option\"\r\n header=\"自定义option配置\"\r\n v-if=\"isShowOptionEditor\"\r\n >\r\n <editor\r\n class=\"option-editor\"\r\n language=\"typescript\"\r\n :valueData=\"optionCode\"\r\n @change=\"onEditorChange\"\r\n />\r\n </a-collapse-panel>\r\n </a-collapse>\r\n </div>\r\n</template>\r\n<script lang=\"ts\">\r\nimport { defineComponent, computed, ref, unref, inject } from 'vue'\r\nimport {\r\n FormItem as AFormItem,\r\n Select as ASelect,\r\n SelectOption as ASelectOption,\r\n Collapse as ACollapse,\r\n CollapsePanel as ACollapsePanel,\r\n Switch as ASwitch\r\n} from 'ant-design-vue'\r\nimport {\r\n DetailPropsGroups,\r\n DetailPropsGroup,\r\n PropsGroup,\r\n propsGroups\r\n} from './data'\r\nimport propsMap from '@/indicator/indicator-library/data-config/style-config-group/chart-props'\r\nimport PropsToForm from './props-to-form'\r\nimport Editor from '@/indicator/editor'\r\nimport { CHARTS_OPTIONS, UPDATE_CHARTS_OPTIONS, REFRESH_DATA } from '@/utils/constant'\r\nimport { lowerCaseIncludes } from '@/utils/util'\r\nimport { pick } from 'lodash-es'\r\nimport 'ant-design-vue/es/collapse/style'\r\nexport default defineComponent({\r\n name: 'StyleConfigGroup',\r\n components: {\r\n PropsToForm,\r\n Editor,\r\n AFormItem,\r\n ASelect,\r\n ASelectOption,\r\n ACollapse,\r\n ACollapsePanel,\r\n ASwitch\r\n },\r\n setup () {\r\n const activePanel = ref<number[]>([])\r\n const chartsOptions = inject(CHARTS_OPTIONS) as {\r\n [key: string]: any\r\n }\r\n const updateChartsOptions = inject(UPDATE_CHARTS_OPTIONS) as Function\r\n const refreshData = inject(REFRESH_DATA) as Function\r\n const handleChangeType = (val: string) => {\r\n updateChartsOptions(\r\n {\r\n ...propsMap[val]\r\n },\r\n false\r\n )\r\n refreshData()\r\n }\r\n const type = computed(() => unref(chartsOptions)?.type)\r\n const detailPropsGroups = computed<DetailPropsGroups>(() => {\r\n return propsGroups\r\n .map((propsGroup: PropsGroup) => {\r\n const { props, title, enableProps, onlyType, excludeType } =\r\n propsGroup\r\n const pickProps = [] as string[]\r\n props.forEach((prop) => {\r\n if (typeof prop === 'string') {\r\n pickProps.push(prop)\r\n }\r\n })\r\n return {\r\n title,\r\n enableProps:\r\n typeof enableProps === 'string' && chartsOptions.value\r\n ? (chartsOptions.value[enableProps] as boolean)\r\n : undefined,\r\n enablePropsName: enableProps,\r\n onlyType,\r\n excludeType,\r\n props: pick(unref(chartsOptions), pickProps)\r\n }\r\n }) // 过滤空属性组\r\n .filter(({ props }) => {\r\n return Object.keys(props).length > 0\r\n })\r\n })\r\n const isRenderForm = (\r\n detailPropsGroup: DetailPropsGroup,\r\n componentType: string\r\n ) => {\r\n const { onlyType, excludeType } = detailPropsGroup\r\n if (onlyType == null && excludeType == null) {\r\n return true\r\n } else if (onlyType) {\r\n return lowerCaseIncludes(componentType, onlyType)\r\n } else if (excludeType) {\r\n return !lowerCaseIncludes(componentType, excludeType)\r\n }\r\n return false\r\n }\r\n const onSwitchClick = (\r\n checked: boolean | string | number,\r\n event: Event\r\n ) => {\r\n event?.stopPropagation()\r\n }\r\n const onSwitchChange = (value: boolean, key: string | undefined) => {\r\n if (key != null) {\r\n updateChartsOptions({\r\n [key]: value\r\n })\r\n }\r\n }\r\n const ComponentString = computed(() =>\r\n JSON.stringify(unref(chartsOptions), null, 2)\r\n )\r\n const updateComponentOptions = (code: string) => {\r\n try {\r\n const props = JSON.parse(code || '{}')\r\n updateChartsOptions(props, false)\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n const optionCode = ref('')\r\n const onEditorChange = (code: string) => {\r\n try {\r\n optionCode.value = code\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n const isShowOptionEditor = computed(() =>\r\n ['customGraph'].includes(unref(chartsOptions)?.type)\r\n )\r\n return {\r\n type,\r\n handleChangeType,\r\n activePanel,\r\n ComponentString,\r\n updateComponentOptions,\r\n optionCode,\r\n onEditorChange,\r\n onSwitchClick,\r\n onSwitchChange,\r\n detailPropsGroups,\r\n isRenderForm,\r\n isShowOptionEditor\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.style-group {\r\n width: 70%;\r\n\r\n .option-editor {\r\n @height: 500px;\r\n min-height: @height;\r\n max-height: @height;\r\n border: 1px solid #e9e9e9;\r\n }\r\n}\r\n</style>\r\n<style lang=\"less\">\r\n.attribute-config .ant-collapse-content > .ant-collapse-content-box > editor {\r\n padding: 16px 10px;\r\n}\r\n</style>\r\n","import { INDICATOR_URL } from '@/utils/constant'\r\nimport { lowerCaseIncludes } from '@/utils/util'\r\n\r\nexport const useIndicatorData = (props: { [key:string]: any } = {}) => {\r\n const handleQueryColumn = (queryColumn: { [key:string]: any } = {}) => {\r\n const { label, name, location, show, indexCode } = queryColumn\r\n return {\r\n label,\r\n columnName: name,\r\n location,\r\n show,\r\n calcType: 'COLUMN',\r\n hrpIndexCode: indexCode\r\n }\r\n }\r\n\r\n const handleIndicator = (indicator: { [key:string]: any } = {}) => {\r\n const {\r\n label,\r\n name,\r\n location,\r\n show,\r\n indexCode,\r\n calcType = 'COLUMN',\r\n builtInFormula,\r\n builtInValueSource,\r\n builtInCalcWay,\r\n formula,\r\n conditions\r\n } = indicator\r\n return {\r\n label,\r\n columnName: name,\r\n location,\r\n show,\r\n calcType,\r\n hrpIndexCode: indexCode,\r\n aggregate: 'SUM',\r\n builtInFormula,\r\n builtInValueSource,\r\n builtInCalcWay,\r\n formula,\r\n conditions\r\n }\r\n }\r\n\r\n return async () => {\r\n const { graphicConfig, type, request, indicatorToken } = props\r\n // 全部属性, 为了属性可拓展,所以在设计器中自由添加\r\n let {\r\n source,\r\n dataViewId,\r\n plugin = '1', // 插件类型\r\n layer, // 后台图表类型,值分0,1\r\n chartType, // 前端图表类型,实测没用\r\n classificationList = [],\r\n seriesList = [],\r\n leftAxisList = [],\r\n rightAxisList = [],\r\n queryColumnList = [],\r\n indicators = [],\r\n // controlList = [],\r\n dataSourceId, // 所属数据源ID\r\n idxLibMode, // 指标库模式, source= INDICATOR_LIB时候必填, NORMAL_YEAR_TABLE = 普通年表, WITH_DATE_DIM_TABLE = 带有时间维度表\r\n preview = false // 预览开关\r\n } = graphicConfig || {}\r\n // 图类型,1=表 2=图\r\n if (layer == null) {\r\n if (lowerCaseIncludes(type, 'table')) {\r\n layer = '1'\r\n } else {\r\n layer = '2'\r\n }\r\n }\r\n // console.log('classificationList', classificationList)\r\n // console.log('seriesList', seriesList)\r\n // console.log('leftAxisList', leftAxisList)\r\n // console.log('rightAxisList', rightAxisList)\r\n // console.log('indicators', indicators)\r\n // console.log('controlList', controlList)\r\n // 重点处理 classificationList、seriesList、leftAxisList、rightAxisList、indicators\r\n // classificationList (取第一项) => classification\r\n let classification: Object\r\n if (Array.isArray(classificationList) && classificationList.length > 0) {\r\n const len = classificationList.length\r\n for (let i = 0; i < len; i++) {\r\n const item = classificationList[i] || {}\r\n const { label = '', name = '', show = false, sort, customGroup, conditions } = item\r\n // 如果是 show 直接提取 classification,停止遍历\r\n if (show || len === 1) {\r\n classification = {\r\n label,\r\n columnName: name,\r\n show,\r\n sort,\r\n customGroup,\r\n conditions\r\n }\r\n break\r\n }\r\n }\r\n }\r\n // seriesList (取第一项) => series\r\n let series: Object\r\n if (Array.isArray(seriesList) && seriesList.length > 0) {\r\n const len = seriesList.length\r\n for (let i = 0; i < len; i++) {\r\n const item = seriesList[i] || {}\r\n const { label = '', name = '', show = false, sort, customGroup, conditions } = item\r\n // 如果是 show 直接提取 seriesList,停止遍历\r\n if (show || len === 1) {\r\n series = {\r\n label,\r\n columnName: name,\r\n show,\r\n sort,\r\n customGroup,\r\n conditions\r\n }\r\n break\r\n }\r\n }\r\n }\r\n // queryColumnList => queryColumns\r\n const queryColumns = []\r\n queryColumnList?.forEach((queryColumn: { [key:string]: any }) => {\r\n queryColumns.push(handleQueryColumn(queryColumn))\r\n })\r\n\r\n // leftAxisList + rightAxisList + indicators => indicatorList\r\n const indicatorList = []\r\n leftAxisList?.forEach((leftAxis: { [key:string]: any }) => {\r\n leftAxis.location = 'LEFT'\r\n indicatorList.push(handleIndicator(leftAxis))\r\n })\r\n rightAxisList?.forEach((rightAxis: { [key:string]: any }) => {\r\n rightAxis.location = 'RIGHT'\r\n indicatorList.push(handleIndicator(rightAxis))\r\n })\r\n indicators?.forEach((indicator: { [key:string]: any }) => {\r\n indicator.location = 'LEFT'\r\n indicatorList.push(handleIndicator(indicator))\r\n })\r\n // queryColumns 表格配置为空返回\r\n if (layer === '1' && queryColumns.length === 0) {\r\n return\r\n // queryColumns 图表配置为空返回\r\n } else if (layer === '2' && indicatorList.length === 0) {\r\n return\r\n }\r\n try {\r\n // @ts-ignore\r\n const PAGE_ID = window?.config?.pageId\r\n const res = await request.post(`${INDICATOR_URL}/diagram`, {\r\n source,\r\n dataViewId,\r\n plugin,\r\n layer,\r\n chartType,\r\n classification,\r\n series,\r\n indicatorList,\r\n queryColumns,\r\n pageFlag: true,\r\n sqlConditions: [],\r\n dataSourceId,\r\n idxLibMode,\r\n pageId: PAGE_ID,\r\n preview\r\n },\r\n {\r\n headers: {\r\n Authentication: indicatorToken,\r\n operateContext: 'ygt'\r\n }\r\n })\r\n return res\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n}\r\n\r\nexport default useIndicatorData\r\n","import dayjs from 'dayjs'\nconst runCode = (code: string, data?: { [key:string]: any }) => {\n const useFn = {\n dayjs,\n ...data\n }\n let paramsStr = ''\n const params = []\n for (const key in useFn) {\n paramsStr += `${key},`\n params.push(useFn[key])\n }\n paramsStr = paramsStr.replace(/,$/, '')\n const runFn = `function (${paramsStr}){return ${code}}`\n let result\n try {\n // eslint-disable-next-line no-new-func\n result = Function(`\"use strict\";return (${runFn})`)()(...params)\n } catch (e) {\n // console.error()\n return code\n }\n return result\n}\n\nexport default runCode\n","import runCode from '@/utils/runCode'\nexport const useVariablesInText = (\n formatter: string = '',\n { textData, codeData }: { textData?: { [key:string]: any }, codeData?: { [key:string]: any } } = {},\n { useNewline = false, useSpace = false } = {}\n) => {\n // 引入全局变量\n const data = { ...textData }\n const variables = (formatter).match(/\\{(.+?)\\}/g)\n if (variables == null || variables.length === 0) {\n return formatter\n }\n for (let i = 0; i < variables.length; i++) {\n const variable = variables[i]\n let statement = variable.slice(1, -1).trim()\n const reg = /[\\u4e00-\\u9fa5a-z-_A-Z0-9]*/g\n const textVariables = statement.match(reg)\n for (let j = 0; j < textVariables.length; j++) {\n const textVariable = textVariables[j]\n const usedVariable = data[textVariable]\n if (usedVariable != null) {\n // 使用的变量\n statement = statement.replace(textVariable, usedVariable)\n }\n }\n if ((/\\(.*\\)/g).test(statement) || (/[+/\\\\*]/g).test(statement)) {\n statement = runCode(statement, codeData)\n }\n formatter = formatter.replace(variable, statement)\n }\n // 替换换行\n if (useNewline) {\n formatter = formatter?.replace(/\\n|\\\\n/g, '<br/>')\n }\n // 替换空格\n if (useSpace) {\n formatter = formatter?.replace(/\\s{2,}?/g, '&nbsp;&nbsp;')\n }\n return formatter\n}\n\nexport default useVariablesInText\n","import runCode from '@/utils/runCode'\nexport const useValueFormatter = (formatter: string, value:string) => {\n if (formatter == null) return value\n const variables = (formatter).match(/\\{.*\\}/g)\n if (variables == null || variables.length === 0) {\n return value\n }\n const len = variables.length\n for (let i = 0; i < len; i++) {\n const variable = variables[i]\n if (variable == null || variable === '') break\n let statement = variable.slice(1, -1)?.trim()\n statement = statement?.replace(/value/g, value)\n try {\n let result = statement\n if ((/\\(.*\\)/g).test(statement) || (/[+/\\\\*]/g).test(statement)) {\n result = runCode(statement)\n }\n formatter = formatter.replace(variable, result)\n } catch (e) {\n formatter = formatter.replace(variable, statement)\n }\n }\n return formatter\n}\n\nexport default useValueFormatter\n","import { computed, unref } from 'vue'\r\nimport useVariablesInText from '@/hooks/useVariablesInText'\r\nimport useValueFormatter from '@/hooks/useValueFormatter'\r\nimport { handleFormatter } from '@/utils/util'\r\n\r\nexport const getTransformProps = (chartsOptions, chartData, fontSize) => {\r\n switch (chartsOptions.type) {\r\n case 'bar':\r\n return getBarTransfromProps(chartsOptions, chartData, fontSize)\r\n case 'line':\r\n return getLineTransfromProps(chartsOptions, chartData, fontSize)\r\n case 'pie':\r\n return getPieTransfromProps(chartsOptions, chartData, fontSize)\r\n case 'comboGraph':\r\n return getComboGraphTransfromProps(chartsOptions, chartData, fontSize)\r\n default:\r\n return {}\r\n }\r\n}\r\n\r\nconst getBarTransfromProps = (chartsOptions, chartData, fontSize) => {\r\n const yAxisLabelFormatter = chartsOptions.yAxisLabelFormatter\r\n const xAxisLabelFormatter = chartsOptions.xAxisLabelFormatter\r\n const { dimensions = [], dataset = [] } = chartData\r\n const series = computed(() => {\r\n const ds = dataset\r\n const len = ds.length\r\n const series = []\r\n for (let i = 0; i < len; i++) {\r\n const item = {\r\n ...ds[i],\r\n type: 'bar',\r\n barWidth: chartsOptions.barWidth\r\n } as { [key: string]: any }\r\n if (chartsOptions.isStack) {\r\n item.stack = 'stack'\r\n }\r\n item.label = {\r\n show: chartsOptions.labelShow,\r\n fontSize: chartsOptions.labelFontSize,\r\n position: chartsOptions.labelPosition,\r\n color: chartsOptions.labelColor\r\n }\r\n series.push(item)\r\n }\r\n return series\r\n })\r\n const xAxisData = computed(() => {\r\n return dimensions.map((item) => {\r\n let result = {}\r\n if (item && typeof item === 'object') {\r\n result = {\r\n ...item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n } else {\r\n result = {\r\n value: item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n }\r\n return result\r\n })\r\n })\r\n return {\r\n tooltip: {\r\n trigger: 'axis',\r\n show: chartsOptions.tooltipShow,\r\n formatter: (params) => {\r\n const len = params.length\r\n let formatter = ''\r\n let tooltipFormatter = chartsOptions.tooltipFormatter\r\n if (tooltipFormatter === '') {\r\n tooltipFormatter = '{marker} {a} {c}'\r\n }\r\n for (let i = 0; i < len; i++) {\r\n const { marker, seriesName, name, value, data } = params[i] || {}\r\n if (i === 0) {\r\n formatter += `${name}<br/>`\r\n }\r\n formatter += useVariablesInText(\r\n tooltipFormatter,\r\n {\r\n textData: {\r\n marker,\r\n name,\r\n value,\r\n a: seriesName,\r\n b: name,\r\n c: value,\r\n ...data\r\n }\r\n },\r\n {\r\n useNewline: true,\r\n useSpace: true\r\n }\r\n )\r\n formatter += '<br/>'\r\n }\r\n return formatter\r\n },\r\n textStyle: {\r\n color: chartsOptions.tooltipTextStyleColor,\r\n fontSize: fontSize\r\n }\r\n },\r\n legend: {\r\n show: chartsOptions.legendShow,\r\n orient: chartsOptions.legendOrient,\r\n top: chartsOptions.legendTop,\r\n left: chartsOptions.legendLeft,\r\n textStyle: {\r\n color: chartsOptions.legendTextStyleColor,\r\n fontSize: fontSize\r\n }\r\n },\r\n xAxis: {\r\n type: chartsOptions.isUseHorizontalAxis ? 'value' : 'category',\r\n data: chartsOptions.isUseHorizontalAxis ? null : unref(xAxisData),\r\n inverse: chartsOptions.isUseHorizontalAxis\r\n ? chartsOptions.xAxisInverse\r\n : chartsOptions.axisInverse,\r\n minInterval: chartsOptions.xAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.xAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.xAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n color: chartsOptions.xAxisLabelColor,\r\n interval: chartsOptions.xAxisLabelInterval || 0,\r\n rotate: chartsOptions.xAxisLabelRotate,\r\n width: chartsOptions.xAxisLabelWidth,\r\n overflow: chartsOptions.xAxisLabelOverflow,\r\n formatter (value: string) {\r\n return useValueFormatter(xAxisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: chartsOptions.xAxisLineStyleColor\r\n }\r\n },\r\n axisTick: {\r\n show: chartsOptions.xAxisTickShow\r\n }\r\n },\r\n yAxis: {\r\n type: chartsOptions.isUseHorizontalAxis ? 'category' : 'value',\r\n data: chartsOptions.isUseHorizontalAxis ? dimensions : null,\r\n inverse: chartsOptions.isUseHorizontalAxis\r\n ? chartsOptions.axisInverse\r\n : chartsOptions.yAxisInverse,\r\n minInterval: chartsOptions.yAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.yAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.yAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n fontSize: fontSize,\r\n color: chartsOptions.yAxisLabelColor,\r\n rotate: chartsOptions.yAxisLabelRotate,\r\n width: chartsOptions.yAxisLabelWidth,\r\n overflow: chartsOptions.yAxisLabelOverflow,\r\n formatter (value: string) {\r\n return useValueFormatter(yAxisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n show: chartsOptions.yAxisLineAlwaysDisplay,\r\n lineStyle: {\r\n color: chartsOptions.yAxisLineStyleColor\r\n }\r\n }\r\n },\r\n series: unref(series)\r\n }\r\n}\r\n\r\nconst getLineTransfromProps = (chartsOptions, chartData, fontSize) => {\r\n const yAxisLabelFormatter = chartsOptions.yAxisLabelFormatter\r\n const xAxisLabelFormatter = chartsOptions.xAxisLabelFormatter\r\n const { dimensions = [], dataset = [] } = chartData\r\n const xAxisData = computed(() => {\r\n return dimensions.map((item) => {\r\n let result = {}\r\n if (item && typeof item === 'object') {\r\n result = {\r\n ...item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n } else {\r\n result = {\r\n value: item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n }\r\n return result\r\n })\r\n })\r\n const series = computed(() => {\r\n const temp = [] as { [key: string]: any } []\r\n const len = dataset.length\r\n for (let i = 0; i < len; i++) {\r\n temp.push({\r\n type: 'line',\r\n ...dataset[i],\r\n symbolSize: chartsOptions.symbolSize,\r\n smooth: chartsOptions.smooth,\r\n lineStyle: {\r\n width: chartsOptions.lineStyleWidth\r\n }\r\n })\r\n }\r\n return temp\r\n })\r\n return {\r\n tooltip: {\r\n trigger: 'axis',\r\n textStyle: {\r\n fontSize: fontSize\r\n },\r\n show: chartsOptions.tooltipShow,\r\n formatter: (params) => {\r\n const len = params.length\r\n let formatter = ''\r\n let tooltipFormatter = chartsOptions.tooltipFormatter\r\n if (tooltipFormatter === '') {\r\n tooltipFormatter = '{marker} {a} {c}'\r\n }\r\n for (let i = 0; i < len; i++) {\r\n const { marker, seriesName, name, value, data } = params[i] || {}\r\n if (i === 0) {\r\n formatter += `${name}<br/>`\r\n }\r\n formatter += useVariablesInText(\r\n tooltipFormatter,\r\n {\r\n textData: {\r\n marker,\r\n name,\r\n value,\r\n a: seriesName,\r\n b: name,\r\n c: value,\r\n ...data\r\n }\r\n },\r\n {\r\n useNewline: true,\r\n useSpace: true\r\n })\r\n formatter += '<br/>'\r\n }\r\n return formatter\r\n }\r\n },\r\n xAxis: {\r\n type: 'category',\r\n data: unref(xAxisData),\r\n minInterval: chartsOptions.xAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.xAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.xAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n color: chartsOptions.xAxisLabelColor,\r\n interval: chartsOptions.xAxisLabelInterval || 0,\r\n rotate: chartsOptions.xAxisLabelRotate,\r\n width: chartsOptions.xAxisLabelWidth,\r\n overflow: chartsOptions.xAxisLabelOverflow,\r\n formatter (value: string) {\r\n return useValueFormatter(xAxisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: chartsOptions.xAxisLineStyleColor\r\n }\r\n },\r\n axisTick: {\r\n show: chartsOptions.xAxisTickShow\r\n }\r\n },\r\n yAxis: {\r\n type: 'value',\r\n minInterval: chartsOptions.yAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.yAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.yAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n fontSize: fontSize,\r\n color: chartsOptions.yAxisLabelColor,\r\n formatter (value: string) {\r\n return useValueFormatter(yAxisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n show: chartsOptions.yAxisLineAlwaysDisplay,\r\n lineStyle: {\r\n color: chartsOptions.yAxisLineStyleColor\r\n }\r\n }\r\n },\r\n // 图例\r\n legend: {\r\n show: chartsOptions.legendShow,\r\n orient: chartsOptions.legendOrient,\r\n top: chartsOptions.legendTop,\r\n left: chartsOptions.legendLeft,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n },\r\n series: unref(series)\r\n }\r\n}\r\n\r\nconst getPieTransfromProps = (chartsOptions, chartData, fontSize) => {\r\n const { dataset = [] } = chartData\r\n let { data = [] } = dataset[0] || {}\r\n if (Array.isArray(chartsOptions.colors)) {\r\n const isUseLabelColors = chartsOptions.isUseLabelColors\r\n const colors = chartsOptions.colors\r\n data = data.map((item, index) => ({\r\n label: isUseLabelColors ? { color: colors[index] } : {},\r\n ...item\r\n }))\r\n }\r\n return {\r\n // 提示\r\n tooltip: {\r\n show: chartsOptions.tooltipShow,\r\n trigger: chartsOptions.tooltipTrigger,\r\n formatter: (params) => {\r\n const { marker, seriesName, name, value, percent, data } = params || {}\r\n return useVariablesInText(\r\n chartsOptions.tooltipFormatter,\r\n {\r\n textData: {\r\n marker,\r\n name,\r\n value,\r\n percent,\r\n a: seriesName,\r\n b: name,\r\n c: value,\r\n d: percent,\r\n ...data\r\n }\r\n },\r\n {\r\n useNewline: true,\r\n useSpace: true\r\n }\r\n )\r\n },\r\n textStyle: {\r\n color: chartsOptions.tooltipTextStyleColor\r\n }\r\n },\r\n // 图例\r\n legend: {\r\n show: chartsOptions.legendShow,\r\n orient: chartsOptions.legendOrient,\r\n top: chartsOptions.legendTop,\r\n left: chartsOptions.legendLeft,\r\n textStyle: {\r\n color: chartsOptions.legendTextStyleColor,\r\n fontSize: fontSize === 18 ? fontSize : chartsOptions.labelFontSize\r\n }\r\n },\r\n series: [\r\n {\r\n data,\r\n type: 'pie',\r\n radius: [chartsOptions.innerRadius, chartsOptions.outerRadius],\r\n center: [chartsOptions.centerLeft, chartsOptions.centerTop],\r\n roseType: chartsOptions.roseType,\r\n avoidLabelOverlap: false,\r\n minAngle: chartsOptions.minAngle,\r\n label: {\r\n show: chartsOptions.labelPosition !== 'center' && chartsOptions.labelShow,\r\n color: chartsOptions.labelColor,\r\n fontSize: fontSize === 18 ? fontSize : chartsOptions.labelFontSize,\r\n position: chartsOptions.labelPosition,\r\n formatter: handleFormatter(chartsOptions.labelFormatter)\r\n },\r\n labelLine: {\r\n show: chartsOptions.labelLineShow,\r\n length: chartsOptions.labelLineLength,\r\n length2: chartsOptions.labelLineLength2\r\n },\r\n emphasis: {\r\n itemStyle: {\r\n shadowBlur: 10,\r\n shadowOffsetX: 0,\r\n shadowColor: 'rgba(0, 0, 0, 0.5)'\r\n },\r\n label: {}\r\n }\r\n }\r\n ]\r\n }\r\n}\r\n\r\nconst getComboGraphTransfromProps = (chartsOptions, chartData, fontSize) => {\r\n const { dimensions = [], dataset = [] } = chartData\r\n const xAxisData = computed(() => {\r\n return dimensions.map((item) => {\r\n let result = {}\r\n if (item && typeof item === 'object') {\r\n result = {\r\n ...item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n } else {\r\n result = {\r\n value: item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n }\r\n return result\r\n })\r\n })\r\n const series = computed(() => {\r\n const temp = [] as { [key: string]: any } []\r\n const len = dataset.length\r\n const seriesTypes = chartsOptions.seriesTypes\r\n for (let i = 0; i < len; i++) {\r\n const seriesType = seriesTypes[i]\r\n temp.push({\r\n type: seriesType?.type,\r\n yAxisIndex: seriesType?.axisIndex,\r\n ...dataset[i]\r\n })\r\n }\r\n return temp\r\n })\r\n const yAxis = computed(() => {\r\n const yAxis = chartsOptions.yAxis\r\n return yAxis?.map((axis) => {\r\n return {\r\n type: 'value',\r\n minInterval: chartsOptions.yAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.yAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.yAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n fontSize: fontSize,\r\n color: chartsOptions.yAxisLabelColor,\r\n formatter (value: string) {\r\n return useValueFormatter(axis.axisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n show: chartsOptions.yAxisLineAlwaysDisplay,\r\n lineStyle: {\r\n color: chartsOptions.yAxisLineStyleColor\r\n }\r\n }\r\n }\r\n })\r\n })\r\n return {\r\n legend: {\r\n show: chartsOptions.legendShow,\r\n orient: chartsOptions.legendOrient,\r\n top: chartsOptions.legendTop,\r\n left: chartsOptions.legendLeft,\r\n textStyle: {\r\n color: chartsOptions.legendTextStyleColor,\r\n fontSize: fontSize\r\n }\r\n },\r\n tooltip: {\r\n trigger: 'axis',\r\n show: chartsOptions.tooltipShow,\r\n formatter: (params) => {\r\n const len = params.length\r\n let formatter = ''\r\n let tooltipFormatter = chartsOptions.tooltipFormatter\r\n if (tooltipFormatter === '') {\r\n tooltipFormatter = '{marker} {a} {c}'\r\n }\r\n const seriesTypes = chartsOptions.seriesTypes\r\n for (let i = 0; i < len; i++) {\r\n const seriesType = seriesTypes[i]\r\n const { tooltipFormatter: _tooltipFormatter } = seriesType || {}\r\n const { marker, seriesName, name, value, data } = params[i] || {}\r\n if (i === 0) {\r\n formatter += `${name}<br/>`\r\n }\r\n formatter += useVariablesInText(\r\n // 如果系列有提示框组件就使用自定义,没有就用默认的\r\n _tooltipFormatter || tooltipFormatter,\r\n {\r\n textData: {\r\n marker,\r\n name,\r\n value,\r\n seriesName,\r\n a: seriesName,\r\n b: name,\r\n c: value,\r\n ...data\r\n }\r\n },\r\n {\r\n useNewline: true,\r\n useSpace: true\r\n })\r\n formatter += '<br/>'\r\n }\r\n return formatter\r\n },\r\n textStyle: {\r\n color: chartsOptions.tooltipTextStyleColor,\r\n fontSize: fontSize\r\n }\r\n },\r\n xAxis: {\r\n minInterval: chartsOptions.xAxisMinInterval,\r\n type: 'category',\r\n data: unref(xAxisData),\r\n splitLine: {\r\n show: chartsOptions.xAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.xAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n color: chartsOptions.xAxisLabelColor,\r\n interval: chartsOptions.xAxisLabelInterval || 0,\r\n rotate: chartsOptions.xAxisLabelRotate,\r\n width: chartsOptions.xAxisLabelWidth,\r\n overflow: chartsOptions.xAxisLabelOverflow\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: chartsOptions.xAxisLineStyleColor\r\n }\r\n },\r\n axisTick: {\r\n show: chartsOptions.xAxisTickShow\r\n }\r\n },\r\n yAxis: unref(yAxis),\r\n series: unref(series)\r\n }\r\n}\r\n","interface DataItem {\n name: string | number\n value: string | number\n type?: string\n}\n\nexport type Data = DataItem []\n\nexport interface KeyTypeDataFieldNames {\n name: string\n types: {\n label: string\n value: string\n } []\n}\n\n/**\n * 图形转化数据\n * @param data 数据\n * @param dataFieldNames 字段映射\n */\nexport const useTransformChartDataByAttrKey = (data: Data = [], dataFieldNames: KeyTypeDataFieldNames) => {\n let { name = 'name', types = [] } = dataFieldNames || {}\n name = name?.trim() || name\n const set = new Set()\n const map = new Map<string, any []>()\n const dataLen = data.length\n const typesLen = types.length\n // 只有一条记录\n if (dataLen === 1) {\n const vs = []\n // data 为一个值取第一个\n for (let i = 0; i < typesLen; i++) {\n const type = types[i]\n const { label, value } = type\n const v = { ...data[0], value: data[0][value] }\n set.add(label)\n // 值列表\n vs.push(v)\n }\n const n = data[0][name] || ''\n map.set(n, vs)\n } else {\n for (let i = 0; i < dataLen; i++) {\n const item = data[i]\n const x = item[name]\n set.add(x)\n for (let j = 0; j < typesLen; j++) {\n const type = types[j]\n const { label, value } = type\n const v = { ...item, value: item[value] }\n if (map.has(label)) {\n const m = map.get(label)\n m.push(v)\n map.set(label, m)\n } else {\n map.set(label, [v])\n }\n }\n }\n }\n\n const dimensions = Array.from(set)\n const dataset: { [key:string]:any } [] = []\n for (const [name, data] of map) {\n dataset.push({\n name,\n data\n })\n }\n return {\n dimensions,\n dataset\n }\n}\n\nexport default useTransformChartDataByAttrKey\n","interface DataItem {\n name: string | number\n value: string | number\n type?: string\n}\n\nexport type Data = DataItem []\n\nexport interface ValueTypeDataFieldNames {\n name: string\n value: string\n type: string\n}\n\n/**\n * 图形转化数据\n * @param data 数据\n * @param dataFieldNames 字段映射\n */\nexport const useTransformChartDataByAttrValue = (data: Data, dataFieldNames?: ValueTypeDataFieldNames) => {\n let { name = 'name', value = 'value', type = 'type' } = dataFieldNames || {}\n // 处去字符串\n name = name?.trim()\n value = value?.trim()\n type = type?.trim()\n const set = new Set()\n const map = new Map()\n const len = data.length\n for (let i = 0; i < len; i++) {\n const item = data[i]\n // x轴\n const x = item[name] || ''\n // y轴\n const y = item[value] || ''\n // 系列(类型)\n const t = item[type] || ''\n set.add(x)\n if (map.has(t)) {\n const arr = map.get(t)\n arr.push({ name: x, value: y, ...item })\n map.set(t, arr)\n } else {\n map.set(t, [{ name: x, value: y, ...item }])\n }\n }\n const dimensions = Array.from(set)\n const dataset: { [key:string]:any } [] = []\n for (const [name, data] of map) {\n dataset.push({\n name,\n data\n })\n }\n return {\n dimensions,\n dataset\n }\n}\nexport default useTransformChartDataByAttrValue\n","<template>\r\n <div class=\"ecan-chart-graph\" ref=\"chartWrap\">\r\n <a-spin\r\n :spinning=\"loading\"\r\n wrapperClassName=\"chart-spin\"\r\n tip=\"数据加载中...\"\r\n >\r\n <div\r\n style=\"width: 100%; height: 100%\"\r\n ref=\"echartRef\"\r\n ></div>\r\n </a-spin>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport * as echarts from 'echarts'\r\nimport {\r\n defineComponent,\r\n onMounted,\r\n onBeforeUnmount,\r\n computed,\r\n ref,\r\n inject,\r\n unref,\r\n watch\r\n} from 'vue'\r\nimport { Modal as AModal, Spin as ASpin } from 'ant-design-vue'\r\nimport useIndicatorData from '@/hooks/useIndicatorData'\r\nimport { getTransformProps } from './transformProps'\r\nimport useTransformChartDataByAttrKey, {\r\n KeyTypeDataFieldNames\r\n} from '@/hooks/useTransformChartDataByAttrKey'\r\nimport useTransformChartDataByAttrValue, {\r\n ValueTypeDataFieldNames\r\n} from '@/hooks/useTransformChartDataByAttrValue'\r\nimport {\r\n CHARTS_OPTIONS,\r\n GRAPHIC_CONFIG,\r\n ZOOM_FONT_SIZE,\r\n REQUEST,\r\n INDICATOR_TOKEN\r\n} from '@/utils/constant'\r\nexport default defineComponent({\r\n name: 'ChartGraph',\r\n components: {\r\n ASpin\r\n },\r\n props: {\r\n graphicConfig: {\r\n // 指标库配置\r\n type: Object,\r\n default: () => {}\r\n },\r\n chartsOptions: {\r\n // 图表配置\r\n type: Object,\r\n default: () => {}\r\n }\r\n },\r\n setup (props, { expose }) {\r\n const chartsOptions = computed(() => {\r\n if (props.chartsOptions) {\r\n return unref(props.chartsOptions)\r\n } else {\r\n return inject(CHARTS_OPTIONS) as {\r\n [key: string]: any\r\n }\r\n }\r\n })\r\n const graphicConfig = computed(() => {\r\n if (props.graphicConfig) {\r\n return unref(props.graphicConfig)\r\n } else {\r\n return inject(GRAPHIC_CONFIG) as {\r\n [key: string]: any\r\n }\r\n }\r\n })\r\n const request = inject(REQUEST)\r\n let observer: ResizeObserver | null = null\r\n const indicatorToken = inject(INDICATOR_TOKEN) || ''\r\n const echartRef = ref<HTMLElement>(null)\r\n const myChart = ref<any>()\r\n const loading = ref(false)\r\n const visible = ref(false)\r\n const fontSize = computed(() => (visible.value ? ZOOM_FONT_SIZE : 12))\r\n const chartData = ref<any>({})\r\n const myOption = ref()\r\n const chartOption = computed(() => {\r\n // 这样写为了触发响应式\r\n const chartsOptionsValue = unref(chartsOptions.value)\r\n if (chartsOptionsValue?.type === 'customGraph') {\r\n return myOption.value\r\n }\r\n const options = getTransformProps(\r\n chartsOptionsValue,\r\n unref(chartData),\r\n fontSize.value\r\n )\r\n return {\r\n toolbox: {\r\n show: chartsOptionsValue.toolboxShow,\r\n left: chartsOptionsValue.toolboxLeft,\r\n top: chartsOptionsValue.toolboxTop,\r\n itemSize: chartsOptionsValue.toolboxItemSize,\r\n itemGap: chartsOptionsValue.toolboxItemGap,\r\n feature: {\r\n myLocation: {\r\n show: visible.value ? false : chartsOptionsValue.toolboxLocation,\r\n title: '快速定位',\r\n icon: 'path://M512 512m-80 0a80 80 0 1 0 160 0 80 80 0 1 0-160 0Z, M960 480h-33.632C910.752 276.16 747.84 113.248 544 97.632V64a32 32 0 1 0-64 0v33.632C276.16 113.248 113.248 276.16 97.632 480H64a32 32 0 0 0 0 64h33.632C113.248 747.84 276.16 910.752 480 926.368V960a32 32 0 1 0 64 0v-33.632C747.84 910.752 910.752 747.84 926.368 544H960a32 32 0 1 0 0-64zM544 862.368V800a32 32 0 1 0-64 0v62.368C311.424 847.104 176.896 712.576 161.632 544H224a32 32 0 1 0 0-64H161.632C176.896 311.424 311.424 176.896 480 161.632V224a32 32 0 0 0 64 0V161.632c168.576 15.296 303.104 149.792 318.368 318.368H800a32 32 0 1 0 0 64h62.368c-15.264 168.576-149.792 303.104-318.368 318.368z',\r\n onclick () {}\r\n },\r\n myDownload: {\r\n show: chartsOptionsValue.toolboxDownloadShow,\r\n title: '数据下载',\r\n icon: 'path://M502.010485 765.939573c3.773953 3.719718 8.686846 5.573949 13.596669 5.573949 0.075725 0 0.151449-0.010233 0.227174-0.011256 0.329505 0.016373 0.654916 0.050142 0.988514 0.050142 0.706081 0 1.400906-0.042979 2.087545-0.116657 4.352121-0.366344 8.607028-2.190899 11.961426-5.496178l335.053985-330.166675c7.619538-7.509021 7.709589-19.773346 0.200568-27.393907s-19.774369-7.711636-27.39493-0.201591L536.193005 706.304358 536.193005 50.019207c0-10.698666-8.67252-19.371186-19.371186-19.371186s-19.371186 8.67252-19.371186 19.371186l0 657.032164-306.881342-302.44838c-7.618515-7.509021-19.883863-7.419993-27.393907 0.199545-7.509021 7.619538-7.419993 19.884886 0.199545 27.393907L502.010485 765.939573z, M867.170139 711.020776c-10.698666 0-19.371186 8.67252-19.371186 19.371186l0 165.419494c0 13.054317-10.620895 23.675212-23.676236 23.675212L205.182103 919.486668c-13.054317 0-23.676236-10.620895-23.676236-23.675212L181.505867 730.391962c0-10.698666-8.67252-19.371186-19.371186-19.371186s-19.371186 8.67252-19.371186 19.371186l0 165.419494c0 34.416857 28.000728 62.416562 62.417585 62.416562l618.941638 0c34.417881 0 62.417585-27.999704 62.417585-62.416562L886.540302 730.391962C886.541325 719.693296 877.868805 711.020776 867.170139 711.020776z',\r\n onclick () {}\r\n },\r\n myDataZoom: {\r\n show: visible.value\r\n ? false\r\n : chartsOptionsValue.toolboxDataZoomShow,\r\n title: '放大',\r\n icon: 'path://M932.42 902.246667L792 761.793333A403.84 403.84 0 0 0 896 490.666667c0-223.86-181.473333-405.333333-405.333333-405.333334S85.333333 266.806667 85.333333 490.666667s181.473333 405.333333 405.333334 405.333333a403.84 403.84 0 0 0 271.126666-104l140.453334 140.453333a21.333333 21.333333 0 0 0 30.173333-30.173333zM128 490.666667c0-200.293333 162.373333-362.666667 362.666667-362.666667s362.666667 162.373333 362.666666 362.666667-162.373333 362.666667-362.666666 362.666666-362.666667-162.373333-362.666667-362.666666z m512 0a21.333333 21.333333 0 0 1-21.333333 21.333333H512v106.666667a21.333333 21.333333 0 0 1-42.666667 0V512H362.666667a21.333333 21.333333 0 0 1 0-42.666667h106.666666V362.666667a21.333333 21.333333 0 0 1 42.666667 0v106.666666h106.666667a21.333333 21.333333 0 0 1 21.333333 21.333334z',\r\n onclick () {}\r\n },\r\n myInfo: {\r\n show: chartsOptionsValue.toolboxInfoShow,\r\n title: '说明信息',\r\n icon: 'path://M512.50142 958.397886c-119.320573 0-231.499491-46.465265-315.871087-130.837884C112.258737 743.188406 65.792449 631.010511 65.792449 511.688915c0-119.319549 46.466288-231.499491 130.837884-315.871087C281.002952 111.445208 393.180847 64.979944 512.50142 64.979944s231.499491 46.465265 315.871087 130.837884c84.372619 84.372619 130.837884 196.551538 130.837884 315.871087 0 119.321596-46.465265 231.499491-130.837884 315.871087C744.000911 911.932622 631.821993 958.397886 512.50142 958.397886zM512.50142 105.962334c-223.718271 0-405.726581 182.00831-405.726581 405.726581s182.00831 405.726581 405.726581 405.726581c223.718271 0 405.727605-182.00831 405.727605-405.726581S736.220714 105.962334 512.50142 105.962334z M510.150886 775.953647c-18.107403 0-32.745798-14.678304-32.745798-32.785707L477.405087 452.191846c0-18.108426 14.638395-32.785707 32.745798-32.785707 18.107403 0 32.745798 14.678304 32.745798 32.785707l0 290.976094C542.896684 761.275343 528.258289 775.953647 510.150886 775.953647z M511.357364 296.458969m-45.080731 0a44.054 44.054 0 1 0 90.161463 0 44.054 44.054 0 1 0-90.161463 0Z',\r\n onclick () {\r\n AModal.info({\r\n title: '说明信息',\r\n content: chartsOptionsValue.toolboxInfoText\r\n })\r\n }\r\n }\r\n }\r\n },\r\n title: {\r\n text: chartsOptionsValue.titleText,\r\n subtext: chartsOptionsValue.titleSubtext,\r\n left: 'center'\r\n },\r\n grid: {\r\n top: chartsOptionsValue.gridTop,\r\n bottom: chartsOptionsValue.gridBottom,\r\n left: chartsOptionsValue.gridLeft,\r\n right: chartsOptionsValue.gridRight,\r\n containLabel: chartsOptionsValue.gridContainLabel\r\n },\r\n color: chartsOptionsValue.colors,\r\n ...options\r\n }\r\n })\r\n const handleIndicatorDataset = (\r\n data: any = [],\r\n keyTypeDataFieldNames: KeyTypeDataFieldNames,\r\n useDataFieldNames: boolean = false\r\n ) => {\r\n const dataFieldNames = useDataFieldNames ? keyTypeDataFieldNames : null\r\n chartData.value = useTransformChartDataByAttrKey(data, dataFieldNames)\r\n }\r\n const handleIndicatorPieDataset = (\r\n data: any = [],\r\n dataFieldNames?: ValueTypeDataFieldNames\r\n ) => {\r\n chartData.value = useTransformChartDataByAttrValue(data, dataFieldNames)\r\n }\r\n const handleIndicatorData = async () => {\r\n try {\r\n const indicatorData = useIndicatorData({\r\n graphicConfig: unref(graphicConfig.value),\r\n type: unref(chartsOptions.value)?.type,\r\n request,\r\n indicatorToken\r\n })\r\n loading.value = true\r\n const res = await indicatorData()\r\n const { columns = [], rows = [] } = res?.data?.data ?? {}\r\n if (unref(chartsOptions.value)?.type === 'pie') {\r\n let arr = []\r\n if (columns.length > 0) {\r\n const name = columns[0]\r\n const value = columns[1]\r\n arr = rows.map((item) => {\r\n return {\r\n name: item[name],\r\n value: item[value]\r\n }\r\n })\r\n }\r\n handleIndicatorPieDataset(arr)\r\n } else {\r\n let fieldNames\r\n if (columns.length > 0) {\r\n fieldNames = {\r\n name: columns[0],\r\n types: columns.slice(1).map((column) => {\r\n return {\r\n label: column,\r\n value: column\r\n }\r\n })\r\n }\r\n }\r\n handleIndicatorDataset(rows, fieldNames, true)\r\n }\r\n } catch (e) {\r\n console.error(e)\r\n } finally {\r\n loading.value = false\r\n }\r\n }\r\n const emptyOption = {\r\n title: {\r\n text: '暂无数据',\r\n x: 'center',\r\n y: 'center',\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal'\r\n }\r\n }\r\n }\r\n const setChartOption = () => {\r\n const isEmpty = unref(chartData).dataset.length === 0\r\n if (isEmpty) {\r\n myChart.value.setOption(emptyOption)\r\n } else {\r\n myChart.value.setOption(chartOption.value)\r\n }\r\n }\r\n const refreshData = () => {\r\n if (unref(chartsOptions.value).type !== 'customGraph') {\r\n handleIndicatorData()\r\n }\r\n }\r\n const handleResize = () => {\r\n myChart.value?.resize()\r\n }\r\n watch(\r\n chartOption,\r\n () => {\r\n setChartOption()\r\n },\r\n {\r\n deep: true\r\n }\r\n )\r\n watch(\r\n () => unref(chartsOptions.value).optionCode,\r\n (optionCode: string) => {\r\n try {\r\n // eslint-disable-next-line\r\n const evalCopy = eval\r\n myOption.value = evalCopy(optionCode)\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n )\r\n onMounted(() => {\r\n observer = new ResizeObserver(handleResize)\r\n const chartWrap = document.getElementsByClassName('ecan-chart-graph')[0]\r\n observer.observe(chartWrap)\r\n myChart.value = echarts.init(echartRef.value)\r\n })\r\n onBeforeUnmount(() => {\r\n myChart.value.dispose()\r\n if (observer) {\r\n observer.disconnect()\r\n observer = null\r\n }\r\n })\r\n expose({\r\n refreshData\r\n })\r\n return {\r\n echartRef,\r\n loading\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n.ecan-chart-graph {\r\n width: 100%;\r\n height: 100%;\r\n .chart-spin {\r\n width: 100%;\r\n height: 100%;\r\n :deep(.ant-spin-container) {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"ecan-chart-graph\" ref=\"chartWrap\">\r\n <a-spin\r\n :spinning=\"loading\"\r\n wrapperClassName=\"chart-spin\"\r\n tip=\"数据加载中...\"\r\n >\r\n <div\r\n style=\"width: 100%; height: 100%\"\r\n ref=\"echartRef\"\r\n ></div>\r\n </a-spin>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport * as echarts from 'echarts'\r\nimport {\r\n defineComponent,\r\n onMounted,\r\n onBeforeUnmount,\r\n computed,\r\n ref,\r\n inject,\r\n unref,\r\n watch\r\n} from 'vue'\r\nimport { Modal as AModal, Spin as ASpin } from 'ant-design-vue'\r\nimport useIndicatorData from '@/hooks/useIndicatorData'\r\nimport { getTransformProps } from './transformProps'\r\nimport useTransformChartDataByAttrKey, {\r\n KeyTypeDataFieldNames\r\n} from '@/hooks/useTransformChartDataByAttrKey'\r\nimport useTransformChartDataByAttrValue, {\r\n ValueTypeDataFieldNames\r\n} from '@/hooks/useTransformChartDataByAttrValue'\r\nimport {\r\n CHARTS_OPTIONS,\r\n GRAPHIC_CONFIG,\r\n ZOOM_FONT_SIZE,\r\n REQUEST,\r\n INDICATOR_TOKEN\r\n} from '@/utils/constant'\r\nexport default defineComponent({\r\n name: 'ChartGraph',\r\n components: {\r\n ASpin\r\n },\r\n props: {\r\n graphicConfig: {\r\n // 指标库配置\r\n type: Object,\r\n default: () => {}\r\n },\r\n chartsOptions: {\r\n // 图表配置\r\n type: Object,\r\n default: () => {}\r\n }\r\n },\r\n setup (props, { expose }) {\r\n const chartsOptions = computed(() => {\r\n if (props.chartsOptions) {\r\n return unref(props.chartsOptions)\r\n } else {\r\n return inject(CHARTS_OPTIONS) as {\r\n [key: string]: any\r\n }\r\n }\r\n })\r\n const graphicConfig = computed(() => {\r\n if (props.graphicConfig) {\r\n return unref(props.graphicConfig)\r\n } else {\r\n return inject(GRAPHIC_CONFIG) as {\r\n [key: string]: any\r\n }\r\n }\r\n })\r\n const request = inject(REQUEST)\r\n let observer: ResizeObserver | null = null\r\n const indicatorToken = inject(INDICATOR_TOKEN) || ''\r\n const echartRef = ref<HTMLElement>(null)\r\n const myChart = ref<any>()\r\n const loading = ref(false)\r\n const visible = ref(false)\r\n const fontSize = computed(() => (visible.value ? ZOOM_FONT_SIZE : 12))\r\n const chartData = ref<any>({})\r\n const myOption = ref()\r\n const chartOption = computed(() => {\r\n // 这样写为了触发响应式\r\n const chartsOptionsValue = unref(chartsOptions.value)\r\n if (chartsOptionsValue?.type === 'customGraph') {\r\n return myOption.value\r\n }\r\n const options = getTransformProps(\r\n chartsOptionsValue,\r\n unref(chartData),\r\n fontSize.value\r\n )\r\n return {\r\n toolbox: {\r\n show: chartsOptionsValue.toolboxShow,\r\n left: chartsOptionsValue.toolboxLeft,\r\n top: chartsOptionsValue.toolboxTop,\r\n itemSize: chartsOptionsValue.toolboxItemSize,\r\n itemGap: chartsOptionsValue.toolboxItemGap,\r\n feature: {\r\n myLocation: {\r\n show: visible.value ? false : chartsOptionsValue.toolboxLocation,\r\n title: '快速定位',\r\n icon: 'path://M512 512m-80 0a80 80 0 1 0 160 0 80 80 0 1 0-160 0Z, M960 480h-33.632C910.752 276.16 747.84 113.248 544 97.632V64a32 32 0 1 0-64 0v33.632C276.16 113.248 113.248 276.16 97.632 480H64a32 32 0 0 0 0 64h33.632C113.248 747.84 276.16 910.752 480 926.368V960a32 32 0 1 0 64 0v-33.632C747.84 910.752 910.752 747.84 926.368 544H960a32 32 0 1 0 0-64zM544 862.368V800a32 32 0 1 0-64 0v62.368C311.424 847.104 176.896 712.576 161.632 544H224a32 32 0 1 0 0-64H161.632C176.896 311.424 311.424 176.896 480 161.632V224a32 32 0 0 0 64 0V161.632c168.576 15.296 303.104 149.792 318.368 318.368H800a32 32 0 1 0 0 64h62.368c-15.264 168.576-149.792 303.104-318.368 318.368z',\r\n onclick () {}\r\n },\r\n myDownload: {\r\n show: chartsOptionsValue.toolboxDownloadShow,\r\n title: '数据下载',\r\n icon: 'path://M502.010485 765.939573c3.773953 3.719718 8.686846 5.573949 13.596669 5.573949 0.075725 0 0.151449-0.010233 0.227174-0.011256 0.329505 0.016373 0.654916 0.050142 0.988514 0.050142 0.706081 0 1.400906-0.042979 2.087545-0.116657 4.352121-0.366344 8.607028-2.190899 11.961426-5.496178l335.053985-330.166675c7.619538-7.509021 7.709589-19.773346 0.200568-27.393907s-19.774369-7.711636-27.39493-0.201591L536.193005 706.304358 536.193005 50.019207c0-10.698666-8.67252-19.371186-19.371186-19.371186s-19.371186 8.67252-19.371186 19.371186l0 657.032164-306.881342-302.44838c-7.618515-7.509021-19.883863-7.419993-27.393907 0.199545-7.509021 7.619538-7.419993 19.884886 0.199545 27.393907L502.010485 765.939573z, M867.170139 711.020776c-10.698666 0-19.371186 8.67252-19.371186 19.371186l0 165.419494c0 13.054317-10.620895 23.675212-23.676236 23.675212L205.182103 919.486668c-13.054317 0-23.676236-10.620895-23.676236-23.675212L181.505867 730.391962c0-10.698666-8.67252-19.371186-19.371186-19.371186s-19.371186 8.67252-19.371186 19.371186l0 165.419494c0 34.416857 28.000728 62.416562 62.417585 62.416562l618.941638 0c34.417881 0 62.417585-27.999704 62.417585-62.416562L886.540302 730.391962C886.541325 719.693296 877.868805 711.020776 867.170139 711.020776z',\r\n onclick () {}\r\n },\r\n myDataZoom: {\r\n show: visible.value\r\n ? false\r\n : chartsOptionsValue.toolboxDataZoomShow,\r\n title: '放大',\r\n icon: 'path://M932.42 902.246667L792 761.793333A403.84 403.84 0 0 0 896 490.666667c0-223.86-181.473333-405.333333-405.333333-405.333334S85.333333 266.806667 85.333333 490.666667s181.473333 405.333333 405.333334 405.333333a403.84 403.84 0 0 0 271.126666-104l140.453334 140.453333a21.333333 21.333333 0 0 0 30.173333-30.173333zM128 490.666667c0-200.293333 162.373333-362.666667 362.666667-362.666667s362.666667 162.373333 362.666666 362.666667-162.373333 362.666667-362.666666 362.666666-362.666667-162.373333-362.666667-362.666666z m512 0a21.333333 21.333333 0 0 1-21.333333 21.333333H512v106.666667a21.333333 21.333333 0 0 1-42.666667 0V512H362.666667a21.333333 21.333333 0 0 1 0-42.666667h106.666666V362.666667a21.333333 21.333333 0 0 1 42.666667 0v106.666666h106.666667a21.333333 21.333333 0 0 1 21.333333 21.333334z',\r\n onclick () {}\r\n },\r\n myInfo: {\r\n show: chartsOptionsValue.toolboxInfoShow,\r\n title: '说明信息',\r\n icon: 'path://M512.50142 958.397886c-119.320573 0-231.499491-46.465265-315.871087-130.837884C112.258737 743.188406 65.792449 631.010511 65.792449 511.688915c0-119.319549 46.466288-231.499491 130.837884-315.871087C281.002952 111.445208 393.180847 64.979944 512.50142 64.979944s231.499491 46.465265 315.871087 130.837884c84.372619 84.372619 130.837884 196.551538 130.837884 315.871087 0 119.321596-46.465265 231.499491-130.837884 315.871087C744.000911 911.932622 631.821993 958.397886 512.50142 958.397886zM512.50142 105.962334c-223.718271 0-405.726581 182.00831-405.726581 405.726581s182.00831 405.726581 405.726581 405.726581c223.718271 0 405.727605-182.00831 405.727605-405.726581S736.220714 105.962334 512.50142 105.962334z M510.150886 775.953647c-18.107403 0-32.745798-14.678304-32.745798-32.785707L477.405087 452.191846c0-18.108426 14.638395-32.785707 32.745798-32.785707 18.107403 0 32.745798 14.678304 32.745798 32.785707l0 290.976094C542.896684 761.275343 528.258289 775.953647 510.150886 775.953647z M511.357364 296.458969m-45.080731 0a44.054 44.054 0 1 0 90.161463 0 44.054 44.054 0 1 0-90.161463 0Z',\r\n onclick () {\r\n AModal.info({\r\n title: '说明信息',\r\n content: chartsOptionsValue.toolboxInfoText\r\n })\r\n }\r\n }\r\n }\r\n },\r\n title: {\r\n text: chartsOptionsValue.titleText,\r\n subtext: chartsOptionsValue.titleSubtext,\r\n left: 'center'\r\n },\r\n grid: {\r\n top: chartsOptionsValue.gridTop,\r\n bottom: chartsOptionsValue.gridBottom,\r\n left: chartsOptionsValue.gridLeft,\r\n right: chartsOptionsValue.gridRight,\r\n containLabel: chartsOptionsValue.gridContainLabel\r\n },\r\n color: chartsOptionsValue.colors,\r\n ...options\r\n }\r\n })\r\n const handleIndicatorDataset = (\r\n data: any = [],\r\n keyTypeDataFieldNames: KeyTypeDataFieldNames,\r\n useDataFieldNames: boolean = false\r\n ) => {\r\n const dataFieldNames = useDataFieldNames ? keyTypeDataFieldNames : null\r\n chartData.value = useTransformChartDataByAttrKey(data, dataFieldNames)\r\n }\r\n const handleIndicatorPieDataset = (\r\n data: any = [],\r\n dataFieldNames?: ValueTypeDataFieldNames\r\n ) => {\r\n chartData.value = useTransformChartDataByAttrValue(data, dataFieldNames)\r\n }\r\n const handleIndicatorData = async () => {\r\n try {\r\n const indicatorData = useIndicatorData({\r\n graphicConfig: unref(graphicConfig.value),\r\n type: unref(chartsOptions.value)?.type,\r\n request,\r\n indicatorToken\r\n })\r\n loading.value = true\r\n const res = await indicatorData()\r\n const { columns = [], rows = [] } = res?.data?.data ?? {}\r\n if (unref(chartsOptions.value)?.type === 'pie') {\r\n let arr = []\r\n if (columns.length > 0) {\r\n const name = columns[0]\r\n const value = columns[1]\r\n arr = rows.map((item) => {\r\n return {\r\n name: item[name],\r\n value: item[value]\r\n }\r\n })\r\n }\r\n handleIndicatorPieDataset(arr)\r\n } else {\r\n let fieldNames\r\n if (columns.length > 0) {\r\n fieldNames = {\r\n name: columns[0],\r\n types: columns.slice(1).map((column) => {\r\n return {\r\n label: column,\r\n value: column\r\n }\r\n })\r\n }\r\n }\r\n handleIndicatorDataset(rows, fieldNames, true)\r\n }\r\n } catch (e) {\r\n console.error(e)\r\n } finally {\r\n loading.value = false\r\n }\r\n }\r\n const emptyOption = {\r\n title: {\r\n text: '暂无数据',\r\n x: 'center',\r\n y: 'center',\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal'\r\n }\r\n }\r\n }\r\n const setChartOption = () => {\r\n const isEmpty = unref(chartData).dataset.length === 0\r\n if (isEmpty) {\r\n myChart.value.setOption(emptyOption)\r\n } else {\r\n myChart.value.setOption(chartOption.value)\r\n }\r\n }\r\n const refreshData = () => {\r\n if (unref(chartsOptions.value).type !== 'customGraph') {\r\n handleIndicatorData()\r\n }\r\n }\r\n const handleResize = () => {\r\n myChart.value?.resize()\r\n }\r\n watch(\r\n chartOption,\r\n () => {\r\n setChartOption()\r\n },\r\n {\r\n deep: true\r\n }\r\n )\r\n watch(\r\n () => unref(chartsOptions.value).optionCode,\r\n (optionCode: string) => {\r\n try {\r\n // eslint-disable-next-line\r\n const evalCopy = eval\r\n myOption.value = evalCopy(optionCode)\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n )\r\n onMounted(() => {\r\n observer = new ResizeObserver(handleResize)\r\n const chartWrap = document.getElementsByClassName('ecan-chart-graph')[0]\r\n observer.observe(chartWrap)\r\n myChart.value = echarts.init(echartRef.value)\r\n })\r\n onBeforeUnmount(() => {\r\n myChart.value.dispose()\r\n if (observer) {\r\n observer.disconnect()\r\n observer = null\r\n }\r\n })\r\n expose({\r\n refreshData\r\n })\r\n return {\r\n echartRef,\r\n loading\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n.ecan-chart-graph {\r\n width: 100%;\r\n height: 100%;\r\n .chart-spin {\r\n width: 100%;\r\n height: 100%;\r\n :deep(.ant-spin-container) {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n }\r\n}\r\n</style>\r\n","<template>\n <div class=\"data-config\">\n <a-tabs v-model:activeKey=\"activeKey\">\n <a-tab-pane\n key=\"1\"\n tab=\"数据配置\"\n >\n <data-group />\n </a-tab-pane>\n <a-tab-pane\n v-if=\"isShowStyleConfig\"\n key=\"2\"\n tab=\"样式配置\"\n force-render\n >\n <style-group></style-group>\n </a-tab-pane>\n </a-tabs>\n <chart-graph\n v-if=\"isShowStyleConfig\"\n class=\"chart-component\"\n :class=\"fullWidth ? 'full-width' : ''\"\n ref=\"componentRef\"\n style=\"width: 100%; height: 290px\"\n ></chart-graph>\n <component\n v-else\n class=\"chart-component\"\n :class=\"fullWidth ? 'full-width' : ''\"\n :is=\"type\"\n v-bind=\"component\"\n ref=\"componentRef\"\n />\n </div>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n computed,\n ref,\n unref,\n inject,\n watch,\n provide,\n onMounted\n} from 'vue'\nimport { Tabs as ATabs, TabPane as ATabPane } from 'ant-design-vue'\nimport DataGroup from './data-config-group'\nimport StyleGroup from './style-config-group'\nimport ChartGraph from '@/indicator/chart-graph/ChartGraph.vue'\nimport { cloneDeep, pick, without } from 'lodash-es'\nimport {\n SELECTED_COMPONENT,\n GRAPHIC_CONFIG,\n SHOW_STYLE_CONFIG,\n REFRESH_DATA\n} from '@/utils/constant'\nimport { lowerCaseIncludes } from '@/utils/util'\n\nexport default defineComponent({\n name: 'DataConfig',\n components: {\n DataGroup,\n StyleGroup,\n ChartGraph,\n ATabs,\n ATabPane\n },\n setup () {\n const activeKey = ref('1')\n const activePanel = ref<number[]>([0, 1, 2])\n const componentRef = ref()\n const selectedComponent = inject(SELECTED_COMPONENT) as {\n [key: string]: any\n }\n const isShowStyleConfig = inject(SHOW_STYLE_CONFIG)\n const graphicConfig = inject(GRAPHIC_CONFIG) as { [key: string]: any }\n const notGraphicList = ['text', 'proportion', 'select', 'checkbox', 'radio', 'radar']\n const component = computed<{ [key: string]: any }>(() => {\n const cloneComponent = cloneDeep(unref(selectedComponent))\n const pickComponent = pick(\n cloneComponent,\n without(\n Object.keys(cloneComponent),\n 'position',\n 'top',\n 'left',\n 'width',\n 'height'\n )\n )\n if (lowerCaseIncludes(cloneComponent.type, notGraphicList)) {\n pickComponent.height = cloneComponent.height\n pickComponent.width = cloneComponent.width\n } else {\n pickComponent.height = '290px'\n }\n const config = cloneDeep(unref(graphicConfig))\n // 设计模式\n config.pageMode = 'design'\n // 后台开启预览模式\n config.preview = true\n return {\n ...pickComponent,\n graphicConfig: config,\n // 隐藏工具栏\n toolboxShow: false\n }\n })\n const fullWidth = computed(() => {\n let result = true\n if (lowerCaseIncludes(unref(component).type, notGraphicList)) {\n result = false\n }\n return result\n })\n const type = computed(() => unref(component)?.type)\n\n const refreshData = () => {\n const refreshData = unref(componentRef)?.refreshData\n if (typeof refreshData === 'function') {\n refreshData()\n }\n }\n provide(REFRESH_DATA, refreshData)\n watch(\n graphicConfig,\n () => {\n refreshData()\n },\n {\n deep: true,\n flush: 'post'\n }\n )\n onMounted(() => {\n refreshData()\n })\n\n return {\n isShowStyleConfig,\n activeKey,\n activePanel,\n componentRef,\n type,\n component,\n fullWidth\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-config {\n background: #fff;\n height: 100%;\n width: 100%;\n padding: 0 15px;\n overflow-y: auto;\n color: #444;\n\n :deep(.ant-tabs) {\n height: calc(100% - 310px);\n\n .ant-tabs-content-holder {\n height: calc(100% - 50px);\n overflow: auto;\n }\n }\n}\n\n.chart-component {\n width: 100%;\n position: relative !important;\n margin: 20px auto 0;\n\n &.full-width {\n width: 100% !important;\n }\n}\n\n.prop-item {\n display: flex;\n align-items: center;\n padding: 5px 5px 10px 5px;\n}\n\n.label {\n width: 135px;\n display: flex;\n justify-content: center;\n}\n\n.component-wrapper {\n width: calc(100% - 135px);\n}\n\n.color-pick {\n display: flex;\n}\n\n.input {\n margin-right: 10px;\n}\n</style>\n","<template>\n <div class=\"data-config\">\n <a-tabs v-model:activeKey=\"activeKey\">\n <a-tab-pane\n key=\"1\"\n tab=\"数据配置\"\n >\n <data-group />\n </a-tab-pane>\n <a-tab-pane\n v-if=\"isShowStyleConfig\"\n key=\"2\"\n tab=\"样式配置\"\n force-render\n >\n <style-group></style-group>\n </a-tab-pane>\n </a-tabs>\n <chart-graph\n v-if=\"isShowStyleConfig\"\n class=\"chart-component\"\n :class=\"fullWidth ? 'full-width' : ''\"\n ref=\"componentRef\"\n style=\"width: 100%; height: 290px\"\n ></chart-graph>\n <component\n v-else\n class=\"chart-component\"\n :class=\"fullWidth ? 'full-width' : ''\"\n :is=\"type\"\n v-bind=\"component\"\n ref=\"componentRef\"\n />\n </div>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n computed,\n ref,\n unref,\n inject,\n watch,\n provide,\n onMounted\n} from 'vue'\nimport { Tabs as ATabs, TabPane as ATabPane } from 'ant-design-vue'\nimport DataGroup from './data-config-group'\nimport StyleGroup from './style-config-group'\nimport ChartGraph from '@/indicator/chart-graph/ChartGraph.vue'\nimport { cloneDeep, pick, without } from 'lodash-es'\nimport {\n SELECTED_COMPONENT,\n GRAPHIC_CONFIG,\n SHOW_STYLE_CONFIG,\n REFRESH_DATA\n} from '@/utils/constant'\nimport { lowerCaseIncludes } from '@/utils/util'\n\nexport default defineComponent({\n name: 'DataConfig',\n components: {\n DataGroup,\n StyleGroup,\n ChartGraph,\n ATabs,\n ATabPane\n },\n setup () {\n const activeKey = ref('1')\n const activePanel = ref<number[]>([0, 1, 2])\n const componentRef = ref()\n const selectedComponent = inject(SELECTED_COMPONENT) as {\n [key: string]: any\n }\n const isShowStyleConfig = inject(SHOW_STYLE_CONFIG)\n const graphicConfig = inject(GRAPHIC_CONFIG) as { [key: string]: any }\n const notGraphicList = ['text', 'proportion', 'select', 'checkbox', 'radio', 'radar']\n const component = computed<{ [key: string]: any }>(() => {\n const cloneComponent = cloneDeep(unref(selectedComponent))\n const pickComponent = pick(\n cloneComponent,\n without(\n Object.keys(cloneComponent),\n 'position',\n 'top',\n 'left',\n 'width',\n 'height'\n )\n )\n if (lowerCaseIncludes(cloneComponent.type, notGraphicList)) {\n pickComponent.height = cloneComponent.height\n pickComponent.width = cloneComponent.width\n } else {\n pickComponent.height = '290px'\n }\n const config = cloneDeep(unref(graphicConfig))\n // 设计模式\n config.pageMode = 'design'\n // 后台开启预览模式\n config.preview = true\n return {\n ...pickComponent,\n graphicConfig: config,\n // 隐藏工具栏\n toolboxShow: false\n }\n })\n const fullWidth = computed(() => {\n let result = true\n if (lowerCaseIncludes(unref(component).type, notGraphicList)) {\n result = false\n }\n return result\n })\n const type = computed(() => unref(component)?.type)\n\n const refreshData = () => {\n const refreshData = unref(componentRef)?.refreshData\n if (typeof refreshData === 'function') {\n refreshData()\n }\n }\n provide(REFRESH_DATA, refreshData)\n watch(\n graphicConfig,\n () => {\n refreshData()\n },\n {\n deep: true,\n flush: 'post'\n }\n )\n onMounted(() => {\n refreshData()\n })\n\n return {\n isShowStyleConfig,\n activeKey,\n activePanel,\n componentRef,\n type,\n component,\n fullWidth\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-config {\n background: #fff;\n height: 100%;\n width: 100%;\n padding: 0 15px;\n overflow-y: auto;\n color: #444;\n\n :deep(.ant-tabs) {\n height: calc(100% - 310px);\n\n .ant-tabs-content-holder {\n height: calc(100% - 50px);\n overflow: auto;\n }\n }\n}\n\n.chart-component {\n width: 100%;\n position: relative !important;\n margin: 20px auto 0;\n\n &.full-width {\n width: 100% !important;\n }\n}\n\n.prop-item {\n display: flex;\n align-items: center;\n padding: 5px 5px 10px 5px;\n}\n\n.label {\n width: 135px;\n display: flex;\n justify-content: center;\n}\n\n.component-wrapper {\n width: calc(100% - 135px);\n}\n\n.color-pick {\n display: flex;\n}\n\n.input {\n margin-right: 10px;\n}\n</style>\n","<template>\n <div class=\"config-modal\">\n <div class=\"config-modal-left\">\n <data-list />\n </div>\n <div class=\"config-modal-right\">\n <data-config />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, provide } from 'vue'\nimport { cloneDeep } from 'lodash-es'\nimport {\n DATA_LIST,\n INDICATOR_TOKEN,\n GRAPHIC_CONFIG,\n CHARTS_OPTIONS,\n SOURCE_TYPE,\n SHOW_STYLE_CONFIG,\n UPDATE_GRAPHIC_CONFIG,\n UPDATE_CHARTS_OPTIONS,\n SELECTED_COMPONENT\n} from '@/utils/constant'\nimport propsMap from './data-config/style-config-group/chart-props'\nimport DataList from './data-list'\nimport DataConfig from './data-config'\nexport default defineComponent({\n name: 'IndicatorLibrary',\n components: {\n DataList,\n DataConfig\n },\n props: {\n isShowStyleConfig: {\n // 是否显示样式配置\n type: Boolean,\n default: false\n },\n sourceType: {\n // 数据源类型\n type: String,\n default: ''\n },\n indicatorToken: {\n // 指标库token\n type: String,\n default: ''\n },\n selectedComponent: {\n // 当前组件\n type: Object,\n default: () => {}\n }\n },\n setup (props, { expose }) {\n const sourceType = computed(() => props.sourceType)\n const indicatorToken = computed(() => props.indicatorToken || '')\n const component = computed(() => props.selectedComponent)\n const isShowStyleConfig = computed(() => props.isShowStyleConfig)\n // 图形化配置\n let graphicConfig = unref(component).graphicConfig\n ? cloneDeep(unref(component).graphicConfig)\n : ref({})\n graphicConfig = ref(graphicConfig)\n // 图表样式配置\n let chartsOptions = unref(component).chartsOptions\n ? cloneDeep(unref(component).chartsOptions)\n : ref(cloneDeep(propsMap.line))\n chartsOptions = ref(chartsOptions)\n // 设置数据列表\n const dataList = ref<{ [key: string]: any }[]>([])\n const setDataList = (list: { [key: string]: any }[]) => {\n dataList.value = list\n }\n const updateGraphicConfig = (config: { [key: string]: any }) => {\n graphicConfig.value = {\n ...unref(graphicConfig),\n ...unref(config)\n }\n }\n const updateChartsOptions = (\n options: { [key: string]: any },\n isMerge: Boolean = true\n ) => {\n if (isMerge) {\n chartsOptions.value = {\n ...unref(chartsOptions),\n ...unref(options)\n }\n } else {\n chartsOptions.value = {\n ...unref(options)\n }\n }\n }\n const getDataList = () => dataList\n provide(DATA_LIST, {\n setDataList,\n getDataList\n })\n provide(SELECTED_COMPONENT, component)\n provide(GRAPHIC_CONFIG, graphicConfig)\n provide(CHARTS_OPTIONS, chartsOptions)\n provide(SOURCE_TYPE, sourceType)\n provide(SHOW_STYLE_CONFIG, isShowStyleConfig)\n provide(INDICATOR_TOKEN, indicatorToken)\n provide(UPDATE_GRAPHIC_CONFIG, updateGraphicConfig)\n provide(UPDATE_CHARTS_OPTIONS, updateChartsOptions)\n expose({\n graphicConfig,\n chartsOptions\n })\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.config-modal {\n width: 100%;\n height: 100%;\n display: flex;\n padding: 10px;\n}\n\n.config-modal-left {\n width: 300px;\n height: 100%;\n margin-right: 10px;\n padding: 10px;\n}\n\n.config-modal-right {\n flex: 1;\n}\n</style>\n","<template>\n <div class=\"config-modal\">\n <div class=\"config-modal-left\">\n <data-list />\n </div>\n <div class=\"config-modal-right\">\n <data-config />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, provide } from 'vue'\nimport { cloneDeep } from 'lodash-es'\nimport {\n DATA_LIST,\n INDICATOR_TOKEN,\n GRAPHIC_CONFIG,\n CHARTS_OPTIONS,\n SOURCE_TYPE,\n SHOW_STYLE_CONFIG,\n UPDATE_GRAPHIC_CONFIG,\n UPDATE_CHARTS_OPTIONS,\n SELECTED_COMPONENT\n} from '@/utils/constant'\nimport propsMap from './data-config/style-config-group/chart-props'\nimport DataList from './data-list'\nimport DataConfig from './data-config'\nexport default defineComponent({\n name: 'IndicatorLibrary',\n components: {\n DataList,\n DataConfig\n },\n props: {\n isShowStyleConfig: {\n // 是否显示样式配置\n type: Boolean,\n default: false\n },\n sourceType: {\n // 数据源类型\n type: String,\n default: ''\n },\n indicatorToken: {\n // 指标库token\n type: String,\n default: ''\n },\n selectedComponent: {\n // 当前组件\n type: Object,\n default: () => {}\n }\n },\n setup (props, { expose }) {\n const sourceType = computed(() => props.sourceType)\n const indicatorToken = computed(() => props.indicatorToken || '')\n const component = computed(() => props.selectedComponent)\n const isShowStyleConfig = computed(() => props.isShowStyleConfig)\n // 图形化配置\n let graphicConfig = unref(component).graphicConfig\n ? cloneDeep(unref(component).graphicConfig)\n : ref({})\n graphicConfig = ref(graphicConfig)\n // 图表样式配置\n let chartsOptions = unref(component).chartsOptions\n ? cloneDeep(unref(component).chartsOptions)\n : ref(cloneDeep(propsMap.line))\n chartsOptions = ref(chartsOptions)\n // 设置数据列表\n const dataList = ref<{ [key: string]: any }[]>([])\n const setDataList = (list: { [key: string]: any }[]) => {\n dataList.value = list\n }\n const updateGraphicConfig = (config: { [key: string]: any }) => {\n graphicConfig.value = {\n ...unref(graphicConfig),\n ...unref(config)\n }\n }\n const updateChartsOptions = (\n options: { [key: string]: any },\n isMerge: Boolean = true\n ) => {\n if (isMerge) {\n chartsOptions.value = {\n ...unref(chartsOptions),\n ...unref(options)\n }\n } else {\n chartsOptions.value = {\n ...unref(options)\n }\n }\n }\n const getDataList = () => dataList\n provide(DATA_LIST, {\n setDataList,\n getDataList\n })\n provide(SELECTED_COMPONENT, component)\n provide(GRAPHIC_CONFIG, graphicConfig)\n provide(CHARTS_OPTIONS, chartsOptions)\n provide(SOURCE_TYPE, sourceType)\n provide(SHOW_STYLE_CONFIG, isShowStyleConfig)\n provide(INDICATOR_TOKEN, indicatorToken)\n provide(UPDATE_GRAPHIC_CONFIG, updateGraphicConfig)\n provide(UPDATE_CHARTS_OPTIONS, updateChartsOptions)\n expose({\n graphicConfig,\n chartsOptions\n })\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.config-modal {\n width: 100%;\n height: 100%;\n display: flex;\n padding: 10px;\n}\n\n.config-modal-left {\n width: 300px;\n height: 100%;\n margin-right: 10px;\n padding: 10px;\n}\n\n.config-modal-right {\n flex: 1;\n}\n</style>\n","import { withInstall } from '@/utils/withInstall'\r\nimport IndicatorLibrary from './IndicatorLibrary.vue'\r\nexport const EcanIndicatorLibrary = withInstall(IndicatorLibrary)\r\nexport default EcanIndicatorLibrary\r\n","import { withInstall } from '@/utils/withInstall'\r\nimport ChartGraph from './ChartGraph.vue'\r\nexport const EcanChartGraph = withInstall(ChartGraph)\r\nexport default EcanChartGraph\r\n","import { App } from 'vue'\nimport * as components from './components'\nconst install = (app: App, options: any) => {\n const { request } = options\n app.provide('$request', request)\n Object.keys(components).forEach((key) => {\n const component = components[key]\n if (component.install) {\n app.use(component)\n }\n })\n}\n\n// 部分导出\nexport * from './components'\n// 全局安装\nexport default {\n install\n}\n"],"names":["withInstall","main","extra","app","comp","key","REQUEST","INDICATOR_URL","_a","INDICATOR_TOKEN","DATA_LIST","SELECTED_COMPONENT","GRAPHIC_CONFIG","UPDATE_GRAPHIC_CONFIG","SHOW_STYLE_CONFIG","REFRESH_DATA","CHARTS_OPTIONS","ZOOM_FONT_SIZE","UPDATE_CHARTS_OPTIONS","SOURCE_TYPE","CHANGE_CONDITION","propsMap","_sfc_main$q","defineComponent","ASpin","ATreeSelect","request","inject","indicatorToken","unref","graphicConfig","updateGraphicConfig","dataViewId","computed","treeSelectLoading","ref","treeSelectData","PAGE_ID","selectedItem","reactive","echoSelectedNode","id","data","_b","transTreeData","pId","list","item","handleLoadData","treeNode","isFirst","value","onDataViewIdChange","handleDataViewColumns","setDataList","dataViewLoading","dataViewList","res","success","rows","row","columns","column","mapGenericType","genericType","onDragstart","event","dataView","onMounted","_component_a_spin","_resolveComponent","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_ctx","_withCtx","_component_a_tree_select","_createElementVNode","_hoisted_2","_Fragment","_renderList","$event","_createTextVNode","_toDisplayString","bound01","n","max","isOnePointZero","isPercent","isPercentage","boundAlpha","a","convertToPercentage","pad2","c","rgbToRgb","r","g","b","hue2rgb","p","q","t","hslToRgb","h","s","l","rgbToHsv","min","v","hsvToRgb","i","f","mod","rgbToHex","allow3Char","hex","convertHexToDecimal","parseIntFromHex","val","names","inputToRGB","color","rgb","ok","format","stringInputToObject","isValidCSSUnit","CSS_INTEGER","CSS_NUMBER","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","matchers","named","match","hueStep","saturationStep","saturationStep2","brightnessStep1","brightnessStep2","lightColorCount","darkColorCount","darkColorMap","toHsv","_ref","hsv","toHex","_ref2","mix","rgb1","rgb2","amount","getHue","light","hue","getSaturation","saturation","getValue","generate","opts","patterns","pColor","colorString","_i","_hsv","_colorString","_ref3","index","opacity","darkColorString","presetPrimaryColors","presetPalettes","presetDarkPalettes","containers","styleElements","usage","createStyleElement","styleElement","insertCss","css","options","position","container","containerId","_objectSpread","target","source","ownKeys","sym","_defineProperty","obj","warn","valid","message","warning","isIconDefinition","node","rootProps","child","getSecondaryColor","primaryColor","generateColor","normalizeTwoToneColors","twoToneColor","iconStyles","cssInjectedFlag","useInsertStyles","styleStr","nextTick","_excluded","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","sourceKeys","twoToneColorPalette","setTwoToneColors","secondaryColor","getTwoToneColors","IconBase","props","context","_props$context$attrs","icon","restProps","colors","VueIcon","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","o","minLen","_arrayLikeToArray","len","arr2","_arr","_n","_d","_s","_e","err","setTwoToneColor","_normalizeTwoToneColo","_normalizeTwoToneColo2","getTwoToneColor","Icon","_classObj","cls","spin","rotate","tabindex","onClick","classObj","svgClassString","iconTabIndex","svgStyle","AntdIcon","AppstoreAddOutlined","AppstoreAddOutlinedSvg","AppstoreAddOutlined$1","CaretDownOutlined","CaretDownOutlinedSvg","CaretDownOutlined$1","CaretRightOutlined","CaretRightOutlinedSvg","CaretRightOutlined$1","CloseOutlined","CloseOutlinedSvg","CloseOutlined$1","DeleteOutlined","DeleteOutlinedSvg","DeleteOutlined$1","DownOutlined","DownOutlinedSvg","DownOutlined$1","MinusCircleOutlined","MinusCircleOutlinedSvg","MinusCircleOutlined$1","PlusCircleOutlined","PlusCircleOutlinedSvg","PlusCircleOutlined$1","PlusOutlined","PlusOutlinedSvg","PlusOutlined$1","SettingOutlined","SettingOutlinedSvg","SettingOutlined$1","_sfc_main$p","AInputSearch","APagination","selectedComponent","selectedConfig","dataSourceId","dataSourceList","dataSourceLoading","pagination","searchText","handleDataSourceList","params","total","mapScope","scope","onToggleGroup","onSearch","onChange","debounce","onPaginationChange","page","pageSize","_hoisted_5","_component_a_input_search","_cache","dataSource","_hoisted_3","_createBlock","_component_caret_down_outlined","_component_caret_right_outlined","_hoisted_4","dataViewColumn","_component_a_pagination","_sfc_main$o","DataSourceList","DataViewList","_component_data_source_list","_createCommentVNode","focus$1","el","_sfc_main$n","Draggable","AModal","AButton","expose","customSortList","handleCustomSortList","e","updateCustomSortList","label","name","isDataChange","visible","showModal","hideModal","onCancel","watch","customOrderColumns","_component_a_modal","_component_a_button","_sfc_main$m","focus","ASelect","ASelectOption","AInput","ACheckbox","ACollapse","ACollapsePanel","ATag","ACheckableTag","title","createGroupTitle","activeKey","customGroupList","customGroupTitleSet","customGroupTitleList","customGroupEditTitleList","length","selectCount","count","customGroup","onAddGroup","onDeleteGroup","selectGroupIndex","onMoveInGroup","selectList","onEditTitle","onFinishEditTitle","onTitleChange","useOtherGroup","updateCustomGroup","customGroups","otherGroupName","groupInfoMap","onUseOtherGroup","allLabelSet","handleInitData","handleCustomGroupList","_hoisted_6","_hoisted_7","_resolveDirective","_component_a_select_option","_component_a_input","_component_a_checkbox","_component_a_collapse","_component_a_collapse_panel","_withDirectives","_hoisted_8","_component_a_tag","_hoisted_9","_component_a_checkable_tag","module","this","u","dayjs","quarterOfYear","_sfc_main$l","ADatePicker","ADropdown","AMenu","AMenuItem","ASubMenu","APopover","ATabs","ATabPane","ARadioGroup","ARadio","AInputNumber","controlList","showTime","dateRadioStyle","formatList","tabDateList","compareList","menuRule","getDataList","condition","_c","_f","_g","_h","_j","_k","popoverVisible","isDateType","fieldOptions","type","updateCondition","deleteCondition","_condition","_level","_index","onDelete","result","cloneDeep","onFieldChange","_value","option","typeGuid","ruleOptions","dateBtnLabel","downIconStyle","style","valueOptions","handleValueOptions","onRuleChange","fieldValues","onFieldValueSelectChange","values","handleMenuClick","keyPath","tabItem","setTabItemData","fieldType","fieldName","rule","changeTabInitDate","changeRadioValue","beforeNum","afterNum","getDateValue","getFieldValue","tabIndex","blurCompare","flag","okDatePickConfig","radioValue","calcWays","_component_a_select","_component_a_dropdown","_component_a_menu","_normalizeStyle","mr","_component_a_sub_menu","fl","_component_DownOutlined","_component_a_date_picker","_component_a_popover","_component_a_tabs","_component_a_tab_pane","_component_a_radio_group","_component_a_radio","_component_a_input_number","_hoisted_10","_component_close_outlined","_sfc_main$k","Condition","_component_condition_list","_component_condition","_sfc_main$j","ConditionList","handleTitle","conditionList","addCondition","join","provide","level","conditions","wrapperConditions","wrapperLevel","updateFilter","onOk","getHrpIndexWithComplex","hrpIndexGuid","nanoid","size","bytes","byte","_sfc_main$i","ARow","ACol","ATextarea","emit","leftAxisList","rightAxisList","indicators","queryColumnList","fieldList","field","myValue","text","_component_a_row","_component_a_col","_component_a_textarea","_sfc_main$h","FormulaCalculation","AForm","AFormItem","builtInValueSourceList","labelCol","wrapperCol","formDefaultValue","formState","calcType","formula","builtInValueSource","builtInFormula","builtInCalcWay","saveIndicator","formRules","validate","validateInfos","clearValidate","onOK","_component_a_form","_component_a_form_item","_component_formula_calculation","_sfc_main$g","CalculationModal","FilterModal","CustomGroupModal","CustomSortModal","ACard","AMenuDivider","handleListItemData","listData","reNameSame","handleCardItemData","cardData","cardItem","currentList","originalList","addItem","sameNums","checkItem","onCheckboxChange","onDropStart","onDropEnd","onDrop","listItemData","cardItemData","onDragover","cardItemList","editLabelList","isLabelChange","onEdit","onLabelChange","onCommitLabelChange","DEFAULT","sortList","onSort","order","handleSortTitle","sort","currentItem","currentIndex","customSortModalRef","customGroupModalRef","showCustomSortModal","handleCustomSortTitle","showCustomGroupModal","handleCustomGroupTitle","aggregateList","onAggregateChange","handleAggregateTitle","handleFilterTitle","filterModalRef","showFilterModal","calculationModalRef","calculationModalMode","mode","_withScopeId","_pushScopeId","_popScopeId","_component_a_card","_withModifiers","_component_plus_outlined","sortItem","_component_a_menu_item","_component_a_menu_divider","aggregate","_component_delete_outlined","_component_custom_sort_modal","_component_custom_group_modal","_component_filter_modal","_component_calculation_modal","cardTypeMap","_sfc_main$f","DataConfigCard","selectedComponentType","isGroupTable","cardsMap","cards","hasOwn","k","allMap","graphicConfigMap","startStr","startIndex","componentMapKeys","map","componentMapKey","card","_component_data_config_card","_mergeProps","propsGroups","mapAttributeProps","component","width","suffix","height","centerLeft","centerTop","innerRadius","outerRadius","tooltipTrigger","tooltipTextStyleColor","tooltipFormatter","legendTextStyleColor","legendTop","legendLeft","legendOrient","labelFormatter","labelColor","isUseLabelColors","labelFontSize","labelPosition","onlyType","labelLineLength","labelLineLength2","symbolSize","smooth","lineStyleWidth","xAxisSplitLineShow","xAxisSplitLineStyleColor","xAxisLabelColor","xAxisLineStyleColor","xAxisTickShow","xAxisLabelFormatter","yAxisSplitLineShow","yAxisLineAlwaysDisplay","yAxisSplitLineStyleColor","yAxisLabelColor","yAxisLineStyleColor","yAxisLabelFormatter","roseType","yAxis","layout","seriesTypes","useLabelIndex","barWidth","gridTop","gridBottom","gridLeft","gridRight","gridContainLabel","toolboxOrient","toolboxItemSize","toolboxItemGap","toolboxLeft","toolboxTop","toolboxDownloadUrl","toolboxInfoText","isUseHorizontalAxis","axisInverse","xAxisInverse","yAxisInverse","areaStyleOpacity","step","xAxisLabelWidth","xAxisLabelOverflow","optionType","xAxisLabelRotate","yAxisLabelWidth","yAxisLabelOverflow","yAxisLabelRotate","isStack","labelShow","xAxisMinInterval","yAxisMinInterval","minAngle","xAxisLabelInterval","toolboxLocation","toolboxDownloadShow","toolboxDataZoomShow","toolboxInfoShow","lowerCaseIncludes","v1","v2","handleFormatter","formatter","_sfc_main$e","_directive_focus","_sfc_main$d","inputValue","getPrefixOrSuffixValue","prefixValue","suffixValue","_createSlots","_sfc_main","ARadioButton","_component_a_radio_button","_sfc_main$b","ASwitch","_component_a_switch","top","bottom","right","left","auto","basePlacements","start","end","clippingParents","viewport","popper","reference","variationPlacements","acc","placement","placements","beforeRead","read","afterRead","beforeMain","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","element","getWindow","ownerDocument","isElement","OwnElement","isHTMLElement","isShadowRoot","applyStyles","state","attributes","effect","initialStyles","styleProperties","property","attribute","applyStyles$1","getBasePlacement","round","getUAString","uaData","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","x","y","getLayoutRect","contains","parent","rootNode","next","getComputedStyle","isTableElement","getDocumentElement","getParentNode","getTrueOffsetParent","getContainingBlock","isFirefox","isIE","elementCss","currentNode","getOffsetParent","window","offsetParent","getMainAxisFromPlacement","within","mathMax","mathMin","withinMaxClamp","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","keys","hashMap","toPaddingObject","padding","arrow","_state$modifiersData$","arrowElement","popperOffsets","basePlacement","axis","isVertical","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","offset","axisProp","_options$element","arrow$1","getVariation","unsetSides","roundOffsetsByDPR","win","dpr","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","offsetY","offsetX","commonStyles","_ref4","_Object$assign","computeStyles","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","computeStyles$1","passive","instance","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","eventListeners","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","scrollTop","getWindowScrollBarX","getViewportRect","strategy","html","layoutViewport","getDocumentRect","_element$ownerDocumen","winScroll","body","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","listScrollParents","isBody","updatedList","rectToClientRect","rect","getInnerBoundingClientRect","getClientRectFromMixedType","clippingParent","getClippingParents","canEscapeClipping","clipperElement","getClippingRect","boundary","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","getExpandedFallbackPlacements","oppositePlacement","flip","_options$mainAxis","checkMainAxis","_options$altAxis","checkAltAxis","specifiedFallbackPlacements","_options$flipVariatio","preferredPlacement","isBasePlacement","fallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","check","numberOfChecks","_loop","fittingPlacement","_ret","flip$1","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","hide","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","hide$1","distanceAndSkiddingToXY","rects","invertDistance","skidding","distance","_options$offset","_data$state$placement","offset$1","popperOffsets$1","getAltAxis","preventOverflow","_options$tether","tether","_options$tetherOffset","tetherOffset","altAxis","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","preventOverflow$1","getHTMLElementScroll","getNodeScroll","isElementScaled","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","documentElement","modifiers","visited","modifier","requires","dep","depModifier","orderModifiers","orderedModifiers","phase","fn","pending","resolve","mergeByName","merged","current","existing","DEFAULT_OPTIONS","areValidElements","args","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","m","runModifierEffects","_state$elements","_state$orderedModifie","_state$orderedModifie2","_ref$options","cleanupFn","noopFn","createPopper","N","E","F","L","z","M","R","B","d","w","j","S","C","O","A","P","_","D","T","H","G","$","V","Y","J","W","X","U","K","Q","Z","ee","te","re","ne","oe","ae","ie","le","ce","ue","se","fe","de","pe","he","ve","be","we","xe","me","ge","ye","Se","ke","Ce","Oe","Ie","Ae","Pe","je","Ne","Ee","Fe","Le","ze","Me","I","_sfc_main$9","PickColors","colorValue","_component_pick_colors","_sfc_main$8","onColorsChange","_sfc_main$7","InputNumber","temp","firstItem","_component_appstore_add_outlined","_component_draggable","_resolveDynamicComponent","_component_minus_circle_outlined","_sfc_main$6","_sfc_main$5","Input","RadioGroup","Select","Switch","ColorPick","ColorGroupPick","FormGroup","Textarea","chartsOptions","updateChartsOptions","setFormProps","setOptions","mapAttributeProp","valueProp","changeValueEventName","events","updateValue","attrs","reduce","excludeType","$props","$setup","$data","$options","formProp","_sfc_main$4","workerId","JsonWorker","TsWorker","EditorWorker","dom","editor","themeMap","monacoEditor","code","onUnmounted","_sfc_main$3","PropsToForm","Editor","activePanel","refreshData","handleChangeType","detailPropsGroups","propsGroup","enableProps","pickProps","prop","pick","isRenderForm","detailPropsGroup","componentType","onSwitchClick","checked","onSwitchChange","ComponentString","updateComponentOptions","optionCode","onEditorChange","isShowOptionEditor","_component_props_to_form","_component_editor","useIndicatorData","handleQueryColumn","queryColumn","location","show","indexCode","handleIndicator","indicator","plugin","layer","chartType","classificationList","seriesList","idxLibMode","preview","classification","series","queryColumns","indicatorList","leftAxis","rightAxis","runCode","useFn","paramsStr","runFn","useVariablesInText","textData","codeData","useNewline","useSpace","variables","variable","statement","reg","textVariables","textVariable","usedVariable","useValueFormatter","getTransformProps","chartData","fontSize","getBarTransfromProps","getLineTransfromProps","getPieTransfromProps","getComboGraphTransfromProps","dimensions","dataset","ds","xAxisData","marker","seriesName","percent","seriesType","_tooltipFormatter","useTransformChartDataByAttrKey","dataFieldNames","types","set","dataLen","typesLen","vs","useTransformChartDataByAttrValue","_sfc_main$2","observer","echartRef","myChart","loading","myOption","chartOption","chartsOptionsValue","handleIndicatorDataset","keyTypeDataFieldNames","useDataFieldNames","handleIndicatorPieDataset","handleIndicatorData","indicatorData","fieldNames","emptyOption","setChartOption","handleResize","evalCopy","chartWrap","echarts","onBeforeUnmount","_sfc_main$1","DataGroup","StyleGroup","ChartGraph","componentRef","isShowStyleConfig","notGraphicList","cloneComponent","pickComponent","without","config","fullWidth","_component_chart_graph","_normalizeClass","DataList","DataConfig","sourceType","dataList","isMerge","_component_data_list","EcanIndicatorLibrary","EcanChartGraph","components"],"mappings":"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kBACA,qBACA,mBACA,gBACA,qBACA,2BACA,sBACA,eACA,mBACA,oBACF,CACF,EACA,CACE,MAAO,KACP,MAAO,CACL,kBACA,sBACA,yBACA,kBACA,qBACA,mBACA,qBACA,2BACA,sBACA,eACA,mBACA,OACF,CACF,EACA,CACE,MAAO,KACP,YAAa,YACb,MAAO,CACL,iBACA,aACA,mBACA,gBACA,eACF,CACF,EACA,CACE,MAAO,QACP,YAAa,gBACb,MAAO,CACL,kBACA,kBACF,CACF,EACA,CACE,MAAO,KACP,YAAa,aACb,MAAO,CACL,uBACA,YACA,aACA,cACF,CACF,EACA,CACE,MAAO,MACP,YAAa,cACb,MAAO,CACL,iBACA,mBACA,uBACF,CACF,EACA,CACE,MAAO,MACP,YAAa,cACb,MAAO,CACL,gBACA,kBACA,iBACA,cACA,aACA,kBACA,sBACA,sBACA,kBACA,qBACA,iBACF,CACF,CACF,ECvJaC,GAA4C,CACvDlT,KAAM,CACJD,MAAO,OACPoT,UAAW,OACZ,EACD/R,MAAO,CACLrB,MAAO,KACPoT,UAAW,OACZ,EACDC,MAAO,CACLrT,MAAO,KACPoT,UAAW,eACX3a,MAAO,CACL6a,OAAQ,KACR9hB,IAAK,CACP,CACD,EACD+hB,OAAQ,CACNvT,MAAO,KACPoT,UAAW,eACX3a,MAAO,CACL6a,OAAQ,KACR9hB,IAAK,EACP,CACD,EACDsH,OAAQ,CACNkH,MAAO,KACPoT,UAAW,kBACZ,EACDI,WAAY,CACVxT,MAAO,OACPoT,UAAW,eACX3a,MAAO,CACL6a,OAAQ,IACR9hB,IAAK,EACLtB,IAAK,GACP,CACD,EACDujB,UAAW,CACTzT,MAAO,OACPoT,UAAW,eACX3a,MAAO,CACL6a,OAAQ,IACR9hB,IAAK,EACLtB,IAAK,GACP,CACD,EACDwjB,YAAa,CACX1T,MAAO,MACPoT,UAAW,eACX3a,MAAO,CACL6a,OAAQ,IACR9hB,IAAK,EACLtB,IAAK,GACP,CACD,EACDyjB,YAAa,CACX3T,MAAO,MACPoT,UAAW,eACX3a,MAAO,CACL6a,OAAQ,IACR9hB,IAAK,EACLtB,IAAK,GACP,CACD,EACD0jB,eAAgB,CACd5T,MAAO,OACPoT,UAAW,cACX3a,MAAO,CACLxC,QAAS,CACP,CACE+J,MAAO,KACPlS,MAAO,MACT,EACA,CACEkS,MAAO,MACPlS,MAAO,MACT,EACA,CACEkS,MAAO,IACPlS,MAAO,OACR,CAEL,CACD,EACD+lB,sBAAuB,CACrB7T,MAAO,KACPoT,UAAW,YACZ,EACDU,iBAAkB,CAChB9T,MAAO,MACPoT,UAAW,UACZ,EACDW,qBAAsB,CACpB/T,MAAO,KACPoT,UAAW,YACZ,EACDY,UAAW,CACThU,MAAO,OACPoT,UAAW,cACX3a,MAAO,CACLxC,QAAS,CACP,CACE+J,MAAO,IACPlS,MAAO,KACT,EACA,CACEkS,MAAO,IACPlS,MAAO,QACT,EACA,CACEkS,MAAO,IACPlS,MAAO,SACR,CAEL,CACD,EACDmmB,WAAY,CACVjU,MAAO,OACPoT,UAAW,cACX3a,MAAO,CACLxC,QAAS,CACP,CACE+J,MAAO,IACPlS,MAAO,MACT,EACA,CACEkS,MAAO,IACPlS,MAAO,QACT,EACA,CACEkS,MAAO,IACPlS,MAAO,QACR,CAEL,CACD,EACDomB,aAAc,CACZlU,MAAO,KACPoT,UAAW,cACX3a,MAAO,CACLxC,QAAS,CACP,CACE+J,MAAO,KACPlS,MAAO,UACT,EACA,CACEkS,MAAO,KACPlS,MAAO,aACR,CAEL,CACD,EACDqmB,eAAgB,CACdnU,MAAO,MACPoT,UAAW,OACZ,EACDgB,WAAY,CACVpU,MAAO,OACPoT,UAAW,YACZ,EACDiB,iBAAkB,CAChBrU,MAAO,MACPoT,UAAW,QACZ,EACDkB,cAAe,CACbtU,MAAO,OACPoT,UAAW,eACX3a,MAAO,CACLjH,IAAK,GACL8hB,OAAQ,IACV,CACD,EACDiB,cAAe,CACb,CACEvU,MAAO,KACPoT,UAAW,cACXoB,SAAU,MACV/b,MAAO,CACLxC,QAAS,CACP,CACE+J,MAAO,KACPlS,MAAO,SACT,EACA,CACEkS,MAAO,KACPlS,MAAO,QACT,EACA,CACEkS,MAAO,KACPlS,MAAO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","x_google_ignoreList":[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,49,56,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131]}
1
+ {"version":3,"file":"index.umd.js","sources":["../src/utils/withInstall.ts","../src/utils/constant.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/index.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/bar/props.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/line/props.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/pie/props.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/custom-graph/props.ts","../src/indicator/indicator-library/data-config/style-config-group/chart-props/combo-graph/props.ts","../src/indicator/indicator-library/data-list/DataViewList.vue","../src/indicator/indicator-library/data-list/DataViewList.vue","../node_modules/@ctrl/tinycolor/dist/module/util.js","../node_modules/@ctrl/tinycolor/dist/module/conversion.js","../node_modules/@ctrl/tinycolor/dist/module/css-color-names.js","../node_modules/@ctrl/tinycolor/dist/module/format-input.js","../node_modules/@ant-design/colors/dist/index.esm.js","../node_modules/@ant-design/icons-vue/es/insert-css.js","../node_modules/@ant-design/icons-vue/es/utils.js","../node_modules/@ant-design/icons-vue/es/components/IconBase.js","../node_modules/@ant-design/icons-vue/es/components/twoTonePrimaryColor.js","../node_modules/@ant-design/icons-vue/es/components/AntdIcon.js","../node_modules/@ant-design/icons-svg/es/asn/AppstoreAddOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/AppstoreAddOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CaretDownOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/CaretDownOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CaretRightOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/CaretRightOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/CloseOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/CloseOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DeleteOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/DeleteOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/DownOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/DownOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/MinusCircleOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/MinusCircleOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/PlusCircleOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/PlusCircleOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/PlusOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/PlusOutlined.js","../node_modules/@ant-design/icons-svg/es/asn/SettingOutlined.js","../node_modules/@ant-design/icons-vue/es/icons/SettingOutlined.js","../src/indicator/indicator-library/data-list/DataSourceList.vue","../src/indicator/indicator-library/data-list/DataSourceList.vue","../src/indicator/indicator-library/data-list/DataList.vue","../src/indicator/indicator-library/data-list/DataList.vue","../src/directives/focus.ts","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/CustomSortModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/CustomSortModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/CustomGroupModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/CustomGroupModal.vue","../node_modules/dayjs/plugin/quarterOfYear.js","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/Condition.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/Condition.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/ConditionList.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/ConditionList.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/FilterModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/filter-modal/FilterModal.vue","../node_modules/nanoid/index.prod.js","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/calculation-modal/FormulaCalculation.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/calculation-modal/FormulaCalculation.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/calculation-modal/CalculationModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/calculation-modal/CalculationModal.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/DataConfigCard.vue","../src/indicator/indicator-library/data-config/data-config-group/data-config-card/DataConfigCard.vue","../src/indicator/indicator-library/data-config/data-config-group/data.ts","../src/indicator/indicator-library/data-config/data-config-group/DataConfigGroup.vue","../src/indicator/indicator-library/data-config/data-config-group/DataConfigGroup.vue","../src/indicator/indicator-library/data-config/style-config-group/data.ts","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/data.tsx","../src/utils/util.ts","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/input/Input.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/input/Input.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/input-number/InputNumber.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/input-number/InputNumber.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/radio-group/RadioGroup.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/select/Select.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/select/Select.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/switch/Switch.vue","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/vue-pick-colors/dist/index.esm.js","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/color-pick/ColorPick.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/color-pick/ColorPick.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/color-group-pick/ColorGroupPick.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/color-group-pick/ColorGroupPick.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/form-group/FormGroup.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/form-group/FormGroup.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/textarea/Textarea.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/textarea/Textarea.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/PropsToForm.vue","../src/indicator/indicator-library/data-config/style-config-group/props-to-form/PropsToForm.vue","../src/indicator/editor/Editor.vue","../src/indicator/editor/Editor.vue","../src/indicator/indicator-library/data-config/style-config-group/StyleConfigGroup.vue","../src/indicator/indicator-library/data-config/style-config-group/StyleConfigGroup.vue","../src/hooks/useIndicatorData.ts","../src/utils/runCode.ts","../src/hooks/useVariablesInText.ts","../src/hooks/useValueFormatter.ts","../src/indicator/chart-graph/transformProps.ts","../src/hooks/useTransformChartDataByAttrKey.ts","../src/hooks/useTransformChartDataByAttrValue.ts","../src/indicator/chart-graph/ChartGraph.vue","../src/indicator/chart-graph/ChartGraph.vue","../src/indicator/indicator-library/data-config/DataConfig.vue","../src/indicator/indicator-library/data-config/DataConfig.vue","../src/indicator/indicator-library/IndicatorLibrary.vue","../src/indicator/indicator-library/IndicatorLibrary.vue","../src/indicator/indicator-library/index.ts","../src/indicator/chart-graph/index.ts","../src/index.ts"],"sourcesContent":["import { NOOP } from '@vue/shared'\nimport { Plugin } from 'vue'\n\nexport type SFCWithInstall<T> = T & Plugin\n\nexport const withInstall = <T, E extends Record<string, any>>(\n main: T,\n extra?: E\n) => {\n (main as SFCWithInstall<T>).install = (app): void => {\n for (const comp of [main, ...Object.values(extra ?? {})]) {\n app.component(comp.name, comp)\n }\n }\n\n if (extra) {\n for (const [key, comp] of Object.entries(extra)) {\n (main as any)[key] = comp\n }\n }\n return main as SFCWithInstall<T> & E\n}\n\nexport const withInstallFunction = <T>(fn: T, name: string) => {\n (fn as SFCWithInstall<T>).install = (app) => {\n app.config.globalProperties[name] = fn\n }\n\n return fn as SFCWithInstall<T>\n}\n\nexport const withNoopInstall = <T>(component: T) => {\n (component as SFCWithInstall<T>).install = NOOP\n\n return component as SFCWithInstall<T>\n}\n","export const REQUEST = '$request'\n// @ts-ignore\nexport const INDICATOR_URL = window?.config?.indicatorURL || `${location.origin}/api`\n\nexport const INDICATOR_TOKEN = 'INDICATOR_TOKEN'\n\nexport const CONTAINER_TYPES = ['tabs', 'border']\n\nexport const CACHE_STEP = 'CACHE_STEP'\n\nexport const UPDATE_SNAPSHOT_LIST = 'UPDATE_SNAPSHOT_LIST'\n\nexport const REQUEST_MODEL = 'REQUEST_MODEL'\n\nexport const DATA_LIST = 'DATA_LIST'\n\nexport const SELECTED_COMPONENT = 'SELECTED_COMPONENT'\n\nexport const GRAPHIC_CONFIG = 'GRAPHIC_CONFIG'\n\nexport const UPDATE_GRAPHIC_CONFIG = 'UPDATE_GRAPHIC_CONFIG'\n\nexport const SHOW_STYLE_CONFIG = 'SHOW_STYLE_CONFIG'\n\nexport const REFRESH_DATA = 'REFRESH_DATA'\n\nexport const CHARTS_OPTIONS = 'CHARTS_OPTIONS'\n\nexport const ZOOM_FONT_SIZE = 18\n\nexport const UPDATE_CHARTS_OPTIONS = 'UPDATE_CHARTS_OPTIONS'\n\nexport const SOURCE_TYPE = 'SOURCE_TYPE'\n\nexport const CHANGE_CONDITION = 'CHANGE_CONDITION'\n","import { barProps } from './bar'\nimport { lineProps } from './line'\nimport { pieProps } from './pie'\nimport { customGraphProps } from './custom-graph'\nimport { comboGraphProps } from './combo-graph'\n\nexport default {\n bar: barProps,\n line: lineProps,\n pie: pieProps,\n customGraph: customGraphProps,\n comboGraph: comboGraphProps\n}\n","\nexport interface BarProps {\n name: String,\n type: String,\n width: string // 图表宽度\n height: string // 图表高度\n titleText: string\n titleSubtext: string\n colors: string []\n legendShow: boolean\n legendTextStyleColor: string\n legendLeft: 'left' | 'center' | 'right'\n legendTop: 'top' | 'middle' | 'bottom'\n legendOrient: 'vertical' | 'horizontal'\n xAxisLabelInterval: number\n xAxisSplitLineShow: boolean // x轴展示分割线\n xAxisLabelColor: string // x轴名称颜色\n xAxisLabelWidth: number | undefined // x轴名称宽度\n xAxisLabelOverflow: 'none' | 'truncate' | 'break' | 'breakAll' // x轴名称溢出操作\n xAxisLabelRotate: number // x轴名称旋转\n xAxisLineStyleColor: string // x轴名称颜色\n xAxisTickShow: boolean // 展示刻度\n xAxisLabelFormatter: string\n xAxisSplitLineStyleColor: string // x轴分割线颜色\n xAxisInverse: boolean\n xAxisMinInterval: number\n yAxisMinInterval: number\n yAxisInverse: boolean\n yAxisLabelWidth: number | undefined // y轴名称宽度\n yAxisLabelOverflow: 'none' | 'truncate' | 'break' | 'breakAll' // y轴名称溢出操作\n yAxisLabelRotate: number // y轴名称旋转\n yAxisSplitLineShow: boolean // y轴展示分割线\n yAxisSplitLineStyleColor: string // y轴分割线颜色\n yAxisLabelColor: string // y轴名称颜色\n yAxisLineStyleColor: string // y轴名称颜色\n yAxisLabelFormatter: string\n yAxisLineAlwaysDisplay: boolean // 总是显示y轴\n tooltipShow: boolean\n tooltipTextStyleColor: string\n tooltipFormatter: string,\n gridContainLabel: boolean\n gridTop: string\n gridBottom: string\n gridLeft: string\n gridRight: string\n barWidth: string\n toolboxShow: boolean\n toolboxLocation: boolean\n toolboxDownloadShow:boolean\n toolboxDataZoomShow: boolean\n toolboxInfoShow: boolean\n toolboxOrient: 'horizontal' | 'vertical'\n toolboxItemSize: number // 工具栏 icon 的大小。\n toolboxItemGap: number // 工具栏 icon 每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。\n toolboxLeft: 'left' | 'center' | 'right'\n toolboxTop: 'top'| 'middle'| 'bottom'\n toolboxIconStyleBorderColor: string\n toolboxDownloadUrl: string\n toolboxInfoText: string\n isUseHorizontalAxis: boolean\n axisInverse: boolean\n isStack: boolean\n labelShow: boolean\n labelFontSize: string\n labelPosition: 'inside' | 'top' | 'bottom' | 'right' | 'left'\n labelColor: string\n}\n\nexport const barProps: BarProps = {\n name: '柱状图',\n type: 'bar',\n width: '400px',\n height: '400px',\n xAxisLabelFormatter: '{value}',\n yAxisLabelFormatter: '{value}',\n yAxisLineAlwaysDisplay: false,\n titleText: '',\n titleSubtext: '',\n colors: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'],\n legendShow: true,\n legendTextStyleColor: '#333',\n legendOrient: 'horizontal',\n legendTop: 'top',\n legendLeft: 'center',\n tooltipShow: true,\n tooltipTextStyleColor: '',\n tooltipFormatter: '{marker} {a} {c}',\n xAxisSplitLineShow: true,\n xAxisSplitLineStyleColor: '#333',\n xAxisLabelInterval: 0,\n xAxisLabelColor: '#333',\n xAxisLabelWidth: undefined,\n xAxisLabelRotate: 0,\n xAxisLabelOverflow: 'none',\n xAxisLineStyleColor: '#333',\n xAxisTickShow: true,\n xAxisMinInterval: 0,\n yAxisMinInterval: 0,\n yAxisLabelWidth: undefined,\n yAxisLabelRotate: 0,\n yAxisLabelOverflow: 'none',\n yAxisSplitLineShow: true,\n yAxisSplitLineStyleColor: '#333',\n yAxisLabelColor: '#333',\n yAxisLineStyleColor: '#333',\n barWidth: '40%',\n gridContainLabel: true,\n gridTop: '10%',\n gridBottom: '10%',\n gridLeft: '5%',\n gridRight: '5%',\n toolboxShow: false,\n toolboxOrient: 'horizontal',\n toolboxItemSize: 16,\n toolboxItemGap: 8,\n toolboxLeft: 'right',\n toolboxTop: 'top',\n toolboxIconStyleBorderColor: '#666',\n toolboxDownloadUrl: '',\n toolboxInfoText: '当前无说明信息',\n isUseHorizontalAxis: false,\n axisInverse: false,\n xAxisInverse: false,\n yAxisInverse: false,\n isStack: false,\n labelShow: false,\n labelFontSize: '12px',\n labelPosition: 'inside',\n labelColor: '',\n toolboxLocation: false,\n toolboxDownloadShow: true,\n toolboxDataZoomShow: true,\n toolboxInfoShow: true\n}\n","export interface LineProps {\n name: String,\n type: String,\n width: string // 图表宽度\n height: string // 图表高度\n colors: string[]\n titleText: string\n titleSubtext: string\n legendShow: boolean,\n legendLeft: 'left' | 'center' | 'right'\n legendTop: 'top' | 'middle' | 'bottom'\n legendOrient: 'vertical' | 'horizontal' // 标记点大小\n symbolSize: number // 线宽度\n lineStyleWidth: number // 线宽\n smooth: boolean // 光滑\n xAxisLabelInterval: number\n xAxisSplitLineShow: boolean // x轴展示分割线\n xAxisLabelColor: string // x轴名称颜色\n xAxisLineStyleColor: string // x轴名称颜色\n xAxisSplitLineStyleColor: string // x轴分割线颜色\n xAxisTickShow: boolean // 展示刻度\n xAxisLabelFormatter: string // 格式化\n xAxisInverse: boolean\n xAxisMinInterval: number\n xAxisLabelWidth: number | undefined // x轴名称宽度\n xAxisLabelOverflow: 'none' | 'truncate' | 'break' | 'breakAll' // x轴名称溢出操作\n xAxisLabelRotate: number // x轴名称旋转\n yAxisMinInterval: number\n yAxisInverse: boolean\n yAxisSplitLineShow: boolean // y轴展示分割线\n yAxisSplitLineStyleColor: string // y轴分割线颜色\n yAxisLabelColor: string // y轴名称颜色\n yAxisLineStyleColor: string // y轴名称颜色\n yAxisLineAlwaysDisplay: boolean // 总是显示y轴\n yAxisLabelFormatter: string // 格式化\n gridContainLabel: boolean\n gridTop: string\n gridBottom: string\n gridLeft: string\n gridRight: string\n tooltipFormatter: string\n tooltipShow: boolean\n toolboxShow: boolean\n toolboxDownloadShow:boolean\n toolboxDataZoomShow: boolean\n toolboxInfoShow: boolean\n toolboxOrient: 'horizontal' | 'vertical'\n toolboxItemSize: number // 工具栏 icon 的大小。\n toolboxItemGap: number // 工具栏 icon 每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。\n toolboxLeft: 'left' | 'center' | 'right'\n toolboxTop: 'top'| 'middle'| 'bottom'\n toolboxIconStyleBorderColor: string\n toolboxDownloadUrl: string\n toolboxInfoText: string\n areaStyleOpacity: number\n}\n\nexport const lineProps = {\n name: '折线图',\n type: 'line',\n width: '400px',\n height: '400px',\n legendShow: true,\n legendOrient: 'horizontal',\n legendTop: 'top',\n legendLeft: 'center',\n titleText: '',\n titleSubtext: '',\n colors: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'],\n symbolSize: 4,\n lineStyleWidth: 2,\n smooth: false,\n xAxisLabelWidth: undefined,\n xAxisLabelRotate: 0,\n xAxisLabelOverflow: 'none',\n xAxisLabelInterval: 0,\n xAxisSplitLineShow: true,\n xAxisSplitLineStyleColor: '#333',\n xAxisLabelColor: '#333',\n xAxisLineStyleColor: '#333',\n xAxisTickShow: true,\n xAxisLabelFormatter: '{value}', // 格式化\n xAxisMinInterval: 0,\n yAxisMinInterval: 0,\n yAxisSplitLineShow: true,\n yAxisSplitLineStyleColor: '#333',\n yAxisLabelColor: '#333',\n yAxisLineStyleColor: '#333',\n yAxisLineAlwaysDisplay: false,\n yAxisLabelFormatter: '{value}',\n gridContainLabel: true,\n gridTop: '10%',\n gridBottom: '10%',\n gridLeft: '5%',\n gridRight: '5%',\n tooltipShow: true,\n tooltipFormatter: '{marker} {a} {c}',\n toolboxShow: false,\n toolboxDownloadShow: true,\n toolboxDataZoomShow: true,\n toolboxInfoShow: true,\n toolboxOrient: 'horizontal',\n toolboxItemSize: 16,\n toolboxItemGap: 8,\n toolboxLeft: 'right',\n toolboxTop: 'top',\n toolboxIconStyleBorderColor: '#666',\n toolboxDownloadUrl: '',\n toolboxInfoText: '当前无说明信息',\n areaStyleOpacity: 0\n}\n","\nexport interface PieProps{\n name: String,\n type: String,\n width: string // 图表宽度\n height: string // 图表高度\n colors: string[]\n titleText: string\n titleSubtext: string\n backgroundColor: string\n tooltipShow: boolean\n toolboxDownloadShow:boolean\n toolboxDataZoomShow: boolean\n toolboxInfoShow: boolean\n tooltipTrigger: 'item' | 'axis' | 'none'\n tooltipTextStyleColor: string\n tooltipFormatter: string\n legendShow: boolean\n legendLeft: 'left' | 'center' | 'right'\n legendTop: 'top' | 'middle' | 'bottom'\n legendOrient: 'vertical' | 'horizontal'\n legendTextStyleColor: string\n innerRadius: string\n outerRadius: string\n centerLeft: string\n centerTop: string\n minAngle: number\n labelShow: boolean\n labelFormatter: string\n labelFontSize: number\n labelPosition: 'outside' | 'inside' | 'center'\n labelLineShow: boolean\n labelColor: string\n isUseLabelColors: boolean\n labelLineLength: number\n labelLineLength2: number\n roseType: '' | 'radius' | 'area'\n gridContainLabel: boolean\n gridTop: string\n gridBottom: string\n gridLeft: string\n gridRight: string\n toolboxShow: boolean\n toolboxOrient: 'horizontal' | 'vertical'\n toolboxItemSize: number // 工具栏 icon 的大小。\n toolboxItemGap: number // 工具栏 icon 每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。\n toolboxLeft: 'left' | 'center' | 'right'\n toolboxTop: 'top'| 'middle'| 'bottom'\n toolboxIconStyleBorderColor: string\n toolboxDownloadUrl: string\n toolboxInfoText: string\n}\n\nexport const pieProps: PieProps = {\n name: '饼图',\n type: 'pie',\n width: '400px',\n height: '400px',\n titleText: '',\n titleSubtext: '',\n colors: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'],\n backgroundColor: '',\n tooltipShow: true,\n toolboxDownloadShow: true,\n toolboxDataZoomShow: true,\n toolboxInfoShow: true,\n tooltipTextStyleColor: '',\n tooltipTrigger: 'item',\n tooltipFormatter: '{marker} {b} {c} ({d}%)',\n legendShow: true,\n legendTextStyleColor: '#333',\n legendOrient: 'vertical',\n legendTop: 'top',\n legendLeft: 'left',\n innerRadius: '0%',\n outerRadius: '60%',\n centerLeft: '50%',\n centerTop: '50%',\n minAngle: 0,\n labelShow: true,\n labelColor: '#333',\n isUseLabelColors: false,\n labelFontSize: 12,\n labelPosition: 'outside',\n labelFormatter: '{b}\\\\n{d}%',\n labelLineShow: true,\n labelLineLength: 10,\n labelLineLength2: 15,\n roseType: '',\n gridContainLabel: true,\n gridTop: '10%',\n gridBottom: '10%',\n gridLeft: '5%',\n gridRight: '5%',\n toolboxShow: false,\n toolboxOrient: 'horizontal',\n toolboxItemSize: 16,\n toolboxItemGap: 8,\n toolboxLeft: 'right',\n toolboxTop: 'top',\n toolboxIconStyleBorderColor: '#666',\n toolboxDownloadUrl: '',\n toolboxInfoText: '当前无说明信息'\n}\n","export interface CustomGraphProps {\n name: String,\n type: String,\n width: string // 图表宽度\n height: string // 图表高度\n option: { [key:string]: any }\n optionCode: string\n}\n\nexport const customGraphProps: CustomGraphProps = {\n name: '自定义图表',\n type: 'customGraph',\n width: '400px',\n height: '400px',\n option: {},\n optionCode: ''\n}\n","\nexport interface ComboGraphProps {\n name: String,\n type: String,\n width: string // 图表宽度\n height: string // 图表高度\n colors: string []\n titleText: string\n titleSubtext: string\n legendShow: boolean\n legendTextStyleColor: string\n legendLeft: 'left' | 'center' | 'right'\n legendTop: 'top' | 'middle' | 'bottom'\n legendOrient: 'vertical' | 'horizontal'\n xAxisLabelInterval: number\n xAxisSplitLineShow: boolean // x轴展示分割线\n xAxisMinInterval: number // 最小间距\n xAxisLabelColor: string // x轴名称颜色\n xAxisLabelRotate: number\n xAxisLabelOverflow: string\n xAxisLabelWidth: number | undefined // x轴名称宽度\n xAxisLineStyleColor: string // x轴名称颜色\n xAxisTickShow: boolean // 展示刻度\n yAxisSplitLineShow: boolean // y轴展示分割线\n xAxisSplitLineStyleColor: string // x轴分割线颜色\n yAxisSplitLineStyleColor: string // y轴分割线颜色\n yAxisLabelColor: string // y轴名称颜色\n yAxisLineStyleColor: string // y轴名称颜色\n yAxisLineAlwaysDisplay: boolean // 总是显示y轴\n tooltipShow: boolean\n tooltipTrigger: 'item' | 'axis' | 'none'\n tooltipTextStyleColor: string\n tooltipFormatter: string\n seriesTypes: { [key: string]: any } []\n yAxis: { [key: string]: any } []\n yAxisMinInterval: number\n gridContainLabel: boolean\n gridTop: string\n gridBottom: string\n gridLeft: string\n gridRight: string\n toolboxShow: boolean\n toolboxLocation: boolean\n toolboxDownloadShow:boolean\n toolboxDataZoomShow: boolean\n toolboxInfoShow: boolean\n toolboxOrient: 'horizontal' | 'vertical'\n toolboxItemSize: number // 工具栏 icon 的大小。\n toolboxItemGap: number // 工具栏 icon 每项之间的间隔。横向布局时为水平间隔,纵向布局时为纵向间隔。\n toolboxLeft: 'left' | 'center' | 'right'\n toolboxTop: 'top'| 'middle'| 'bottom'\n toolboxIconStyleBorderColor: string\n toolboxDownloadUrl: string\n toolboxInfoText: string\n symbolSize: number // 线宽度\n lineStyleWidth: number // 线宽\n smooth: boolean // 光滑\n areaStyleOpacity: number\n barWidth: string\n}\n\nexport const comboGraphProps: ComboGraphProps = {\n name: '组合图表',\n type: 'comboGraph',\n width: '400px',\n height: '400px',\n titleText: '',\n titleSubtext: '',\n colors: ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'],\n legendShow: true,\n legendTextStyleColor: '#333',\n legendOrient: 'horizontal',\n legendTop: 'top',\n legendLeft: 'center',\n tooltipShow: true,\n tooltipTextStyleColor: '',\n tooltipTrigger: 'item',\n tooltipFormatter: '{marker} {a} {c}',\n xAxisLabelInterval: 0,\n xAxisSplitLineShow: true,\n xAxisLabelRotate: 0,\n xAxisLabelOverflow: 'none',\n xAxisLabelWidth: undefined,\n xAxisSplitLineStyleColor: '#333',\n xAxisLabelColor: '#333',\n xAxisLineStyleColor: '#333',\n xAxisTickShow: true,\n xAxisMinInterval: 0,\n yAxisMinInterval: 0,\n yAxisSplitLineShow: true,\n yAxisSplitLineStyleColor: '#333',\n yAxisLabelColor: '#333',\n yAxisLineStyleColor: '#333',\n yAxisLineAlwaysDisplay: false,\n seriesTypes: [\n {\n type: 'bar',\n axisIndex: 0\n },\n {\n type: 'line',\n axisIndex: 0\n }\n ],\n yAxis: [\n {\n axisLabelFormatter: '{value}'\n },\n {\n axisLabelFormatter: '{value}'\n }\n ],\n gridContainLabel: true,\n gridTop: '10%',\n gridBottom: '10%',\n gridLeft: '5%',\n gridRight: '5%',\n toolboxShow: false,\n toolboxLocation: false,\n toolboxDownloadShow: true,\n toolboxDataZoomShow: true,\n toolboxInfoShow: true,\n toolboxOrient: 'horizontal',\n toolboxItemSize: 16,\n toolboxItemGap: 8,\n toolboxLeft: 'right',\n toolboxTop: 'top',\n toolboxIconStyleBorderColor: '#666',\n toolboxDownloadUrl: '',\n toolboxInfoText: '当前无说明信息',\n areaStyleOpacity: 0,\n symbolSize: 4,\n lineStyleWidth: 2,\n smooth: false,\n barWidth: '40%'\n}\n","<template>\n <div class=\"data-view-list\">\n <a-spin\n wrapper-class-name=\"tree-spin\"\n :spinning=\"treeSelectLoading\"\n tip=\"视图加载中...\"\n >\n <a-tree-select\n :value=\"dataViewId\"\n style=\"width: 100%\"\n placeholder=\"请选择视图\"\n :dropdown-style=\"{ maxHeight: '400px', overflow: 'auto' }\"\n :tree-data=\"treeSelectData\"\n :load-data=\"handleLoadData\"\n tree-data-simple-mode\n @change=\"onDataViewIdChange\"\n />\n </a-spin>\n <div class=\"columns\">\n <a-spin\n :spinning=\"dataViewLoading\"\n tip=\"数据加载中...\"\n >\n <div\n v-for=\"dataView in dataViewList\"\n :key=\"dataView.id\"\n >\n <div\n class=\"column-item\"\n :draggable=\"true\"\n @dragstart=\"onDragstart($event, dataView)\"\n >\n 【{{ mapGenericType(dataView.genericType) }}】\n <span class=\"column-item-name\">\n {{ dataView.name }}\n </span>\n </div>\n </div>\n </a-spin>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n reactive,\n ref,\n computed,\n unref,\n onMounted,\n inject\n} from 'vue'\nimport { TreeSelectProps, Spin as ASpin, TreeSelect as ATreeSelect } from 'ant-design-vue'\nimport {\n REQUEST,\n INDICATOR_URL,\n INDICATOR_TOKEN,\n DATA_LIST,\n GRAPHIC_CONFIG,\n UPDATE_GRAPHIC_CONFIG\n} from '@/utils/constant'\nexport default defineComponent({\n name: 'DataViewList',\n components: {\n ASpin,\n ATreeSelect\n },\n setup () {\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const dataViewId = computed(() => unref(graphicConfig)?.dataViewId || null)\n const treeSelectLoading = ref(false)\n const treeSelectData = ref<TreeSelectProps['treeData']>([])\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n interface TreeDom {\n id: string\n pId: string\n title: string\n value: string\n isLeaf?: boolean\n disabled?: boolean\n selectable?: boolean\n }\n // 当前选中树节点\n const selectedItem = reactive<TreeDom>({\n title: '已选',\n value: 'YXJG',\n id: 'YXJG',\n pId: '0',\n disabled: true,\n selectable: false,\n isLeaf: true\n })\n // 回显已选节点\n const echoSelectedNode = async () => {\n const id = dataViewId.value\n treeSelectLoading.value = true\n try {\n const { data } = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n {\n source: 'SQL_VIEW',\n dataViewId: id,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n treeSelectLoading.value = false\n if (data.success) {\n treeSelectData.value?.push(selectedItem)\n treeSelectData.value = treeSelectData.value?.concat(\n transTreeData([data.data.rows[0]] as any, 'YXJG')\n )\n }\n } catch (error) {\n treeSelectLoading.value = false\n }\n }\n // 树的数据转换\n const transTreeData = (\n data: { [key: string]: any }[] = [],\n pId?: string\n ) => {\n const list: TreeSelectProps['treeData'] = []\n data.forEach((item) => {\n list.push({\n id: item.id,\n pId: pId ?? item.parentId,\n value: item.id,\n title: item.name,\n isLeaf: item.leaf || false,\n nature: item.nature,\n selectable: item.leaf || false\n })\n })\n return list\n }\n const handleLoadData = async (treeNode?: any, isFirst?: boolean) => {\n let id = 0\n if (treeNode) {\n const { value } = treeNode.dataRef\n id = value\n }\n const { data } = await request.post(\n `${INDICATOR_URL}/dataview/treetable`,\n {\n pageFlag: true,\n pageId: PAGE_ID,\n parentId: id\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n\n if (data.success) {\n treeSelectData.value = unref(treeSelectData)?.concat(\n transTreeData(data.data)\n )\n if (isFirst && unref(dataViewId)) {\n await echoSelectedNode()\n }\n }\n }\n\n const onDataViewIdChange = (dataViewId: string) => {\n handleDataViewColumns(dataViewId)\n updateGraphicConfig({\n dataViewId,\n // 重制数据\n classificationList: [],\n seriesList: [],\n leftAxisList: [],\n rightAxisList: [],\n indicators: [],\n controlList: []\n })\n }\n\n const { setDataList } = inject(DATA_LIST, {\n // eslint-disable-next-line\n setDataList: (list: { [key: string]: any }[]) => list\n })\n\n const dataViewLoading = ref(false)\n\n const dataViewList = ref<{ [key: string]: any }[]>([])\n\n const handleDataViewColumns = async (dataViewId: string) => {\n if (!dataViewId) return\n dataViewList.value = []\n dataViewLoading.value = true\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n {\n source: 'SQL_VIEW',\n dataViewId,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = {} } = res.data\n dataViewLoading.value = false\n if (success) {\n const { rows = [] } = data\n rows?.forEach((row: any) => {\n const columns =\n row?.dataViewColumns?.map((column: any) => {\n return {\n ...column,\n // 复选框\n show: true\n }\n }) || []\n dataViewList.value = [...unref(dataViewList), ...columns]\n })\n setDataList(unref(dataViewList))\n }\n } catch (error) {\n dataViewLoading.value = false\n }\n }\n const mapGenericType = (genericType: 'TEXT' | 'NUMBER' | 'DATE') => {\n const map = {\n TEXT: '字符',\n NUMBER: '数字',\n DATE: '时间'\n }\n return map[genericType]\n }\n\n const onDragstart = (\n event: DragEvent,\n dataView: { [key: string]: any }\n ) => {\n event.dataTransfer?.setData('list-item', JSON.stringify(dataView))\n }\n\n onMounted(async () => {\n await handleLoadData(undefined, true)\n handleDataViewColumns(unref(dataViewId))\n })\n return {\n dataViewId,\n handleLoadData,\n treeSelectData,\n treeSelectLoading,\n dataViewList,\n dataViewLoading,\n onDataViewIdChange,\n mapGenericType,\n onDragstart\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-view-list {\n display: flex;\n flex-direction: column;\n height: 100%;\n .tree-spin {\n height: auto;\n }\n}\n.columns {\n height: 100%;\n overflow: auto;\n flex: 1;\n padding-top: 10px;\n}\n\n.column-item {\n display: flow-root;\n margin: 3px 0;\n padding: 2px 0;\n}\n\n.column-item:hover {\n background: #eee;\n}\n\n.column-item-name {\n margin-left: 5px;\n}\n</style>\n","<template>\n <div class=\"data-view-list\">\n <a-spin\n wrapper-class-name=\"tree-spin\"\n :spinning=\"treeSelectLoading\"\n tip=\"视图加载中...\"\n >\n <a-tree-select\n :value=\"dataViewId\"\n style=\"width: 100%\"\n placeholder=\"请选择视图\"\n :dropdown-style=\"{ maxHeight: '400px', overflow: 'auto' }\"\n :tree-data=\"treeSelectData\"\n :load-data=\"handleLoadData\"\n tree-data-simple-mode\n @change=\"onDataViewIdChange\"\n />\n </a-spin>\n <div class=\"columns\">\n <a-spin\n :spinning=\"dataViewLoading\"\n tip=\"数据加载中...\"\n >\n <div\n v-for=\"dataView in dataViewList\"\n :key=\"dataView.id\"\n >\n <div\n class=\"column-item\"\n :draggable=\"true\"\n @dragstart=\"onDragstart($event, dataView)\"\n >\n 【{{ mapGenericType(dataView.genericType) }}】\n <span class=\"column-item-name\">\n {{ dataView.name }}\n </span>\n </div>\n </div>\n </a-spin>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n reactive,\n ref,\n computed,\n unref,\n onMounted,\n inject\n} from 'vue'\nimport { TreeSelectProps, Spin as ASpin, TreeSelect as ATreeSelect } from 'ant-design-vue'\nimport {\n REQUEST,\n INDICATOR_URL,\n INDICATOR_TOKEN,\n DATA_LIST,\n GRAPHIC_CONFIG,\n UPDATE_GRAPHIC_CONFIG\n} from '@/utils/constant'\nexport default defineComponent({\n name: 'DataViewList',\n components: {\n ASpin,\n ATreeSelect\n },\n setup () {\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const dataViewId = computed(() => unref(graphicConfig)?.dataViewId || null)\n const treeSelectLoading = ref(false)\n const treeSelectData = ref<TreeSelectProps['treeData']>([])\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n interface TreeDom {\n id: string\n pId: string\n title: string\n value: string\n isLeaf?: boolean\n disabled?: boolean\n selectable?: boolean\n }\n // 当前选中树节点\n const selectedItem = reactive<TreeDom>({\n title: '已选',\n value: 'YXJG',\n id: 'YXJG',\n pId: '0',\n disabled: true,\n selectable: false,\n isLeaf: true\n })\n // 回显已选节点\n const echoSelectedNode = async () => {\n const id = dataViewId.value\n treeSelectLoading.value = true\n try {\n const { data } = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n {\n source: 'SQL_VIEW',\n dataViewId: id,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n treeSelectLoading.value = false\n if (data.success) {\n treeSelectData.value?.push(selectedItem)\n treeSelectData.value = treeSelectData.value?.concat(\n transTreeData([data.data.rows[0]] as any, 'YXJG')\n )\n }\n } catch (error) {\n treeSelectLoading.value = false\n }\n }\n // 树的数据转换\n const transTreeData = (\n data: { [key: string]: any }[] = [],\n pId?: string\n ) => {\n const list: TreeSelectProps['treeData'] = []\n data.forEach((item) => {\n list.push({\n id: item.id,\n pId: pId ?? item.parentId,\n value: item.id,\n title: item.name,\n isLeaf: item.leaf || false,\n nature: item.nature,\n selectable: item.leaf || false\n })\n })\n return list\n }\n const handleLoadData = async (treeNode?: any, isFirst?: boolean) => {\n let id = 0\n if (treeNode) {\n const { value } = treeNode.dataRef\n id = value\n }\n const { data } = await request.post(\n `${INDICATOR_URL}/dataview/treetable`,\n {\n pageFlag: true,\n pageId: PAGE_ID,\n parentId: id\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n\n if (data.success) {\n treeSelectData.value = unref(treeSelectData)?.concat(\n transTreeData(data.data)\n )\n if (isFirst && unref(dataViewId)) {\n await echoSelectedNode()\n }\n }\n }\n\n const onDataViewIdChange = (dataViewId: string) => {\n handleDataViewColumns(dataViewId)\n updateGraphicConfig({\n dataViewId,\n // 重制数据\n classificationList: [],\n seriesList: [],\n leftAxisList: [],\n rightAxisList: [],\n indicators: [],\n controlList: []\n })\n }\n\n const { setDataList } = inject(DATA_LIST, {\n // eslint-disable-next-line\n setDataList: (list: { [key: string]: any }[]) => list\n })\n\n const dataViewLoading = ref(false)\n\n const dataViewList = ref<{ [key: string]: any }[]>([])\n\n const handleDataViewColumns = async (dataViewId: string) => {\n if (!dataViewId) return\n dataViewList.value = []\n dataViewLoading.value = true\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n {\n source: 'SQL_VIEW',\n dataViewId,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = {} } = res.data\n dataViewLoading.value = false\n if (success) {\n const { rows = [] } = data\n rows?.forEach((row: any) => {\n const columns =\n row?.dataViewColumns?.map((column: any) => {\n return {\n ...column,\n // 复选框\n show: true\n }\n }) || []\n dataViewList.value = [...unref(dataViewList), ...columns]\n })\n setDataList(unref(dataViewList))\n }\n } catch (error) {\n dataViewLoading.value = false\n }\n }\n const mapGenericType = (genericType: 'TEXT' | 'NUMBER' | 'DATE') => {\n const map = {\n TEXT: '字符',\n NUMBER: '数字',\n DATE: '时间'\n }\n return map[genericType]\n }\n\n const onDragstart = (\n event: DragEvent,\n dataView: { [key: string]: any }\n ) => {\n event.dataTransfer?.setData('list-item', JSON.stringify(dataView))\n }\n\n onMounted(async () => {\n await handleLoadData(undefined, true)\n handleDataViewColumns(unref(dataViewId))\n })\n return {\n dataViewId,\n handleLoadData,\n treeSelectData,\n treeSelectLoading,\n dataViewList,\n dataViewLoading,\n onDataViewIdChange,\n mapGenericType,\n onDragstart\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-view-list {\n display: flex;\n flex-direction: column;\n height: 100%;\n .tree-spin {\n height: auto;\n }\n}\n.columns {\n height: 100%;\n overflow: auto;\n flex: 1;\n padding-top: 10px;\n}\n\n.column-item {\n display: flow-root;\n margin: 3px 0;\n padding: 2px 0;\n}\n\n.column-item:hover {\n background: #eee;\n}\n\n.column-item-name {\n margin-left: 5px;\n}\n</style>\n","/**\n * Take input from [0, n] and return it as [0, 1]\n * @hidden\n */\nexport function bound01(n, max) {\n if (isOnePointZero(n)) {\n n = '100%';\n }\n var isPercent = isPercentage(n);\n n = max === 360 ? n : Math.min(max, Math.max(0, parseFloat(n)));\n // Automatically convert percentage into number\n if (isPercent) {\n n = parseInt(String(n * max), 10) / 100;\n }\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n // Convert into [0, 1] range if it isn't already\n if (max === 360) {\n // If n is a hue given in degrees,\n // wrap around out-of-range values into [0, 360] range\n // then convert into [0, 1].\n n = (n < 0 ? (n % max) + max : n % max) / parseFloat(String(max));\n }\n else {\n // If n not a hue given in degrees\n // Convert into [0, 1] range if it isn't already.\n n = (n % max) / parseFloat(String(max));\n }\n return n;\n}\n/**\n * Force a number between 0 and 1\n * @hidden\n */\nexport function clamp01(val) {\n return Math.min(1, Math.max(0, val));\n}\n/**\n * Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n * <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\n * @hidden\n */\nexport function isOnePointZero(n) {\n return typeof n === 'string' && n.indexOf('.') !== -1 && parseFloat(n) === 1;\n}\n/**\n * Check to see if string passed in is a percentage\n * @hidden\n */\nexport function isPercentage(n) {\n return typeof n === 'string' && n.indexOf('%') !== -1;\n}\n/**\n * Return a valid alpha value [0,1] with all invalid values being set to 1\n * @hidden\n */\nexport function boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n}\n/**\n * Replace a decimal with it's percentage value\n * @hidden\n */\nexport function convertToPercentage(n) {\n if (n <= 1) {\n return \"\".concat(Number(n) * 100, \"%\");\n }\n return n;\n}\n/**\n * Force a hex value to have 2 characters\n * @hidden\n */\nexport function pad2(c) {\n return c.length === 1 ? '0' + c : String(c);\n}\n","import { bound01, pad2 } from './util.js';\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n/**\n * Handle bounds / percentage checking to conform to CSS color spec\n * <http://www.w3.org/TR/css3-color/>\n * *Assumes:* r, g, b in [0, 255] or [0, 1]\n * *Returns:* { r, g, b } in [0, 255]\n */\nexport function rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255,\n };\n}\n/**\n * Converts an RGB color value to HSL.\n * *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n * *Returns:* { h, s, l } in [0,1]\n */\nexport function rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = 0;\n var s = 0;\n var l = (max + min) / 2;\n if (max === min) {\n s = 0;\n h = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, l: l };\n}\nfunction hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * (6 * t);\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n}\n/**\n * Converts an HSL color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hslToRgb(h, s, l) {\n var r;\n var g;\n var b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n if (s === 0) {\n // achromatic\n g = l;\n b = l;\n r = l;\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color value to HSV\n *\n * *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n * *Returns:* { h, s, v } in [0,1]\n */\nexport function rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h = 0;\n var v = max;\n var d = max - min;\n var s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0; // achromatic\n }\n else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n break;\n }\n h /= 6;\n }\n return { h: h, s: s, v: v };\n}\n/**\n * Converts an HSV color value to RGB.\n *\n * *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n * *Returns:* { r, g, b } in the set [0, 255]\n */\nexport function hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - f * s);\n var t = v * (1 - (1 - f) * s);\n var mod = i % 6;\n var r = [v, q, p, p, t, v][mod];\n var g = [t, v, v, q, p, p][mod];\n var b = [p, p, t, v, v, q][mod];\n return { r: r * 255, g: g * 255, b: b * 255 };\n}\n/**\n * Converts an RGB color to hex\n *\n * Assumes r, g, and b are contained in the set [0, 255]\n * Returns a 3 or 6 character hex\n */\nexport function rgbToHex(r, g, b, allow3Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n // Return a 3 character hex if possible\n if (allow3Char &&\n hex[0].startsWith(hex[0].charAt(1)) &&\n hex[1].startsWith(hex[1].charAt(1)) &&\n hex[2].startsWith(hex[2].charAt(1))) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join('');\n}\n/**\n * Converts an RGBA color plus alpha transparency to hex\n *\n * Assumes r, g, b are contained in the set [0, 255] and\n * a in [0, 1]. Returns a 4 or 8 character rgba hex\n */\n// eslint-disable-next-line max-params\nexport function rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n pad2(convertDecimalToHex(a)),\n ];\n // Return a 4 character hex if possible\n if (allow4Char &&\n hex[0].startsWith(hex[0].charAt(1)) &&\n hex[1].startsWith(hex[1].charAt(1)) &&\n hex[2].startsWith(hex[2].charAt(1)) &&\n hex[3].startsWith(hex[3].charAt(1))) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join('');\n}\n/**\n * Converts an RGBA color to an ARGB Hex8 string\n * Rarely used, but required for \"toFilter()\"\n */\nexport function rgbaToArgbHex(r, g, b, a) {\n var hex = [\n pad2(convertDecimalToHex(a)),\n pad2(Math.round(r).toString(16)),\n pad2(Math.round(g).toString(16)),\n pad2(Math.round(b).toString(16)),\n ];\n return hex.join('');\n}\n/** Converts a decimal to a hex value */\nexport function convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n/** Converts a hex value to a decimal */\nexport function convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n}\n/** Parse a base-16 hex value into a base-10 integer */\nexport function parseIntFromHex(val) {\n return parseInt(val, 16);\n}\nexport function numberInputToObject(color) {\n return {\n r: color >> 16,\n g: (color & 0xff00) >> 8,\n b: color & 0xff,\n };\n}\n","// https://github.com/bahamas10/css-color-names/blob/master/css-color-names.json\n/**\n * @hidden\n */\nexport var names = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkgrey: '#a9a9a9',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkslategrey: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n goldenrod: '#daa520',\n gold: '#ffd700',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n grey: '#808080',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavenderblush: '#fff0f5',\n lavender: '#e6e6fa',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightgrey: '#d3d3d3',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370db',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#db7093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32',\n};\n","/* eslint-disable @typescript-eslint/no-redundant-type-constituents */\nimport { convertHexToDecimal, hslToRgb, hsvToRgb, parseIntFromHex, rgbToRgb, } from './conversion.js';\nimport { names } from './css-color-names.js';\nimport { boundAlpha, convertToPercentage } from './util.js';\n/**\n * Given a string or object, convert that input to RGB\n *\n * Possible string inputs:\n * ```\n * \"red\"\n * \"#f00\" or \"f00\"\n * \"#ff0000\" or \"ff0000\"\n * \"#ff000000\" or \"ff000000\"\n * \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n * \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n * \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n * \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n * \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n * \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n * \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n * ```\n */\nexport function inputToRGB(color) {\n var rgb = { r: 0, g: 0, b: 0 };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color === 'string') {\n color = stringInputToObject(color);\n }\n if (typeof color === 'object') {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === '%' ? 'prgb' : 'rgb';\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = 'hsv';\n }\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = 'hsl';\n }\n if (Object.prototype.hasOwnProperty.call(color, 'a')) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a,\n };\n}\n// <http://www.w3.org/TR/css3-values/#integers>\nvar CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\n// <http://www.w3.org/TR/css3-values/#number-value>\nvar CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\n// Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\nvar CSS_UNIT = \"(?:\".concat(CSS_NUMBER, \")|(?:\").concat(CSS_INTEGER, \")\");\n// Actual matching.\n// Parentheses and commas are optional, but not required.\n// Whitespace can take the place of commas or opening paren\nvar PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\".concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")[,|\\\\s]+(\").concat(CSS_UNIT, \")\\\\s*\\\\)?\");\nvar matchers = {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp('rgb' + PERMISSIVE_MATCH3),\n rgba: new RegExp('rgba' + PERMISSIVE_MATCH4),\n hsl: new RegExp('hsl' + PERMISSIVE_MATCH3),\n hsla: new RegExp('hsla' + PERMISSIVE_MATCH4),\n hsv: new RegExp('hsv' + PERMISSIVE_MATCH3),\n hsva: new RegExp('hsva' + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n};\n/**\n * Permissive string parsing. Take in a number of formats, and output an object\n * based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n */\nexport function stringInputToObject(color) {\n color = color.trim().toLowerCase();\n if (color.length === 0) {\n return false;\n }\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n }\n else if (color === 'transparent') {\n return { r: 0, g: 0, b: 0, a: 0, format: 'name' };\n }\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match = matchers.rgb.exec(color);\n if (match) {\n return { r: match[1], g: match[2], b: match[3] };\n }\n match = matchers.rgba.exec(color);\n if (match) {\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\n }\n match = matchers.hsl.exec(color);\n if (match) {\n return { h: match[1], s: match[2], l: match[3] };\n }\n match = matchers.hsla.exec(color);\n if (match) {\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\n }\n match = matchers.hsv.exec(color);\n if (match) {\n return { h: match[1], s: match[2], v: match[3] };\n }\n match = matchers.hsva.exec(color);\n if (match) {\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\n }\n match = matchers.hex8.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? 'name' : 'hex8',\n };\n }\n match = matchers.hex6.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n match = matchers.hex4.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1] + match[1]),\n g: parseIntFromHex(match[2] + match[2]),\n b: parseIntFromHex(match[3] + match[3]),\n a: convertHexToDecimal(match[4] + match[4]),\n format: named ? 'name' : 'hex8',\n };\n }\n match = matchers.hex3.exec(color);\n if (match) {\n return {\n r: parseIntFromHex(match[1] + match[1]),\n g: parseIntFromHex(match[2] + match[2]),\n b: parseIntFromHex(match[3] + match[3]),\n format: named ? 'name' : 'hex',\n };\n }\n return false;\n}\n/**\n * Check to see if it looks like a CSS unit\n * (see `matchers` above for definition).\n */\nexport function isValidCSSUnit(color) {\n return Boolean(matchers.CSS_UNIT.exec(String(color)));\n}\n","import { inputToRGB, rgbToHex, rgbToHsv } from '@ctrl/tinycolor';\n\nvar hueStep = 2; // 色相阶梯\n\nvar saturationStep = 0.16; // 饱和度阶梯,浅色部分\n\nvar saturationStep2 = 0.05; // 饱和度阶梯,深色部分\n\nvar brightnessStep1 = 0.05; // 亮度阶梯,浅色部分\n\nvar brightnessStep2 = 0.15; // 亮度阶梯,深色部分\n\nvar lightColorCount = 5; // 浅色数量,主色上\n\nvar darkColorCount = 4; // 深色数量,主色下\n// 暗色主题颜色映射关系表\n\nvar darkColorMap = [{\n index: 7,\n opacity: 0.15\n}, {\n index: 6,\n opacity: 0.25\n}, {\n index: 5,\n opacity: 0.3\n}, {\n index: 5,\n opacity: 0.45\n}, {\n index: 5,\n opacity: 0.65\n}, {\n index: 5,\n opacity: 0.85\n}, {\n index: 4,\n opacity: 0.9\n}, {\n index: 3,\n opacity: 0.95\n}, {\n index: 2,\n opacity: 0.97\n}, {\n index: 1,\n opacity: 0.98\n}]; // Wrapper function ported from TinyColor.prototype.toHsv\n// Keep it here because of `hsv.h * 360`\n\nfunction toHsv(_ref) {\n var r = _ref.r,\n g = _ref.g,\n b = _ref.b;\n var hsv = rgbToHsv(r, g, b);\n return {\n h: hsv.h * 360,\n s: hsv.s,\n v: hsv.v\n };\n} // Wrapper function ported from TinyColor.prototype.toHexString\n// Keep it here because of the prefix `#`\n\n\nfunction toHex(_ref2) {\n var r = _ref2.r,\n g = _ref2.g,\n b = _ref2.b;\n return \"#\".concat(rgbToHex(r, g, b, false));\n} // Wrapper function ported from TinyColor.prototype.mix, not treeshakable.\n// Amount in range [0, 1]\n// Assume color1 & color2 has no alpha, since the following src code did so.\n\n\nfunction mix(rgb1, rgb2, amount) {\n var p = amount / 100;\n var rgb = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b\n };\n return rgb;\n}\n\nfunction getHue(hsv, i, light) {\n var hue; // 根据色相不同,色相转向不同\n\n if (Math.round(hsv.h) >= 60 && Math.round(hsv.h) <= 240) {\n hue = light ? Math.round(hsv.h) - hueStep * i : Math.round(hsv.h) + hueStep * i;\n } else {\n hue = light ? Math.round(hsv.h) + hueStep * i : Math.round(hsv.h) - hueStep * i;\n }\n\n if (hue < 0) {\n hue += 360;\n } else if (hue >= 360) {\n hue -= 360;\n }\n\n return hue;\n}\n\nfunction getSaturation(hsv, i, light) {\n // grey color don't change saturation\n if (hsv.h === 0 && hsv.s === 0) {\n return hsv.s;\n }\n\n var saturation;\n\n if (light) {\n saturation = hsv.s - saturationStep * i;\n } else if (i === darkColorCount) {\n saturation = hsv.s + saturationStep;\n } else {\n saturation = hsv.s + saturationStep2 * i;\n } // 边界值修正\n\n\n if (saturation > 1) {\n saturation = 1;\n } // 第一格的 s 限制在 0.06-0.1 之间\n\n\n if (light && i === lightColorCount && saturation > 0.1) {\n saturation = 0.1;\n }\n\n if (saturation < 0.06) {\n saturation = 0.06;\n }\n\n return Number(saturation.toFixed(2));\n}\n\nfunction getValue(hsv, i, light) {\n var value;\n\n if (light) {\n value = hsv.v + brightnessStep1 * i;\n } else {\n value = hsv.v - brightnessStep2 * i;\n }\n\n if (value > 1) {\n value = 1;\n }\n\n return Number(value.toFixed(2));\n}\n\nfunction generate(color) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var patterns = [];\n var pColor = inputToRGB(color);\n\n for (var i = lightColorCount; i > 0; i -= 1) {\n var hsv = toHsv(pColor);\n var colorString = toHex(inputToRGB({\n h: getHue(hsv, i, true),\n s: getSaturation(hsv, i, true),\n v: getValue(hsv, i, true)\n }));\n patterns.push(colorString);\n }\n\n patterns.push(toHex(pColor));\n\n for (var _i = 1; _i <= darkColorCount; _i += 1) {\n var _hsv = toHsv(pColor);\n\n var _colorString = toHex(inputToRGB({\n h: getHue(_hsv, _i),\n s: getSaturation(_hsv, _i),\n v: getValue(_hsv, _i)\n }));\n\n patterns.push(_colorString);\n } // dark theme patterns\n\n\n if (opts.theme === 'dark') {\n return darkColorMap.map(function (_ref3) {\n var index = _ref3.index,\n opacity = _ref3.opacity;\n var darkColorString = toHex(mix(inputToRGB(opts.backgroundColor || '#141414'), inputToRGB(patterns[index]), opacity * 100));\n return darkColorString;\n });\n }\n\n return patterns;\n}\n\nvar presetPrimaryColors = {\n red: '#F5222D',\n volcano: '#FA541C',\n orange: '#FA8C16',\n gold: '#FAAD14',\n yellow: '#FADB14',\n lime: '#A0D911',\n green: '#52C41A',\n cyan: '#13C2C2',\n blue: '#1890FF',\n geekblue: '#2F54EB',\n purple: '#722ED1',\n magenta: '#EB2F96',\n grey: '#666666'\n};\nvar presetPalettes = {};\nvar presetDarkPalettes = {};\nObject.keys(presetPrimaryColors).forEach(function (key) {\n presetPalettes[key] = generate(presetPrimaryColors[key]);\n presetPalettes[key].primary = presetPalettes[key][5]; // dark presetPalettes\n\n presetDarkPalettes[key] = generate(presetPrimaryColors[key], {\n theme: 'dark',\n backgroundColor: '#141414'\n });\n presetDarkPalettes[key].primary = presetDarkPalettes[key][5];\n});\nvar red = presetPalettes.red;\nvar volcano = presetPalettes.volcano;\nvar gold = presetPalettes.gold;\nvar orange = presetPalettes.orange;\nvar yellow = presetPalettes.yellow;\nvar lime = presetPalettes.lime;\nvar green = presetPalettes.green;\nvar cyan = presetPalettes.cyan;\nvar blue = presetPalettes.blue;\nvar geekblue = presetPalettes.geekblue;\nvar purple = presetPalettes.purple;\nvar magenta = presetPalettes.magenta;\nvar grey = presetPalettes.grey;\n\nexport { blue, cyan, geekblue, generate, gold, green, grey, lime, magenta, orange, presetDarkPalettes, presetPalettes, presetPrimaryColors, purple, red, volcano, yellow };\n","// https://github.com/substack/insert-css\nvar containers = []; // will store container HTMLElement references\n\nvar styleElements = []; // will store {prepend: HTMLElement, append: HTMLElement}\n\nvar usage = 'insert-css: You need to provide a CSS string. Usage: insertCss(cssString[, options]).';\n\nfunction createStyleElement() {\n var styleElement = document.createElement('style');\n styleElement.setAttribute('type', 'text/css');\n return styleElement;\n} // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\n\nfunction insertCss(css, options) {\n options = options || {};\n\n if (css === undefined) {\n throw new Error(usage);\n }\n\n var position = options.prepend === true ? 'prepend' : 'append';\n var container = options.container !== undefined ? options.container : document.querySelector('head');\n var containerId = containers.indexOf(container); // first time we see this container, create the necessary entries\n\n if (containerId === -1) {\n containerId = containers.push(container) - 1;\n styleElements[containerId] = {};\n } // try to get the correponding container + position styleElement, create it otherwise\n\n\n var styleElement;\n\n if (styleElements[containerId] !== undefined && styleElements[containerId][position] !== undefined) {\n styleElement = styleElements[containerId][position];\n } else {\n styleElement = styleElements[containerId][position] = createStyleElement();\n\n if (position === 'prepend') {\n container.insertBefore(styleElement, container.childNodes[0]);\n } else {\n container.appendChild(styleElement);\n }\n } // strip potential UTF-8 BOM if css was read from a file\n\n\n if (css.charCodeAt(0) === 0xfeff) {\n css = css.substr(1, css.length);\n } // actually add the stylesheet\n\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText += css;\n } else {\n styleElement.textContent += css;\n }\n\n return styleElement;\n}\n\nexport default insertCss;","function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport { nextTick, h } from 'vue';\nimport { generate as generateColor } from '@ant-design/colors';\nimport insertCss from './insert-css';\nexport function warn(valid, message) {\n // Support uglify\n if (process.env.NODE_ENV !== 'production' && !valid && console !== undefined) {\n console.error(\"Warning: \".concat(message));\n }\n}\nexport function warning(valid, message) {\n warn(valid, \"[@ant-design/icons-vue] \".concat(message));\n} // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\nexport function isIconDefinition(target) {\n return typeof target === 'object' && typeof target.name === 'string' && typeof target.theme === 'string' && (typeof target.icon === 'object' || typeof target.icon === 'function');\n}\nexport function normalizeAttrs() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return Object.keys(attrs).reduce(function (acc, key) {\n var val = attrs[key];\n\n switch (key) {\n case 'class':\n acc.className = val;\n delete acc[\"class\"];\n break;\n\n default:\n acc[key] = val;\n }\n\n return acc;\n }, {});\n}\nexport function generate(node, key, rootProps) {\n if (!rootProps) {\n return h(node.tag, _objectSpread({\n key: key\n }, node.attrs), (node.children || []).map(function (child, index) {\n return generate(child, \"\".concat(key, \"-\").concat(node.tag, \"-\").concat(index));\n }));\n }\n\n return h(node.tag, _objectSpread({\n key: key\n }, rootProps, node.attrs), (node.children || []).map(function (child, index) {\n return generate(child, \"\".concat(key, \"-\").concat(node.tag, \"-\").concat(index));\n }));\n}\nexport function getSecondaryColor(primaryColor) {\n // choose the second color\n return generateColor(primaryColor)[0];\n}\nexport function normalizeTwoToneColors(twoToneColor) {\n if (!twoToneColor) {\n return [];\n }\n\n return Array.isArray(twoToneColor) ? twoToneColor : [twoToneColor];\n} // These props make sure that the SVG behaviours like general text.\n// Reference: https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4\n\nexport var svgBaseProps = {\n width: '1em',\n height: '1em',\n fill: 'currentColor',\n 'aria-hidden': 'true',\n focusable: 'false'\n};\nexport var iconStyles = \"\\n.anticon {\\n display: inline-block;\\n color: inherit;\\n font-style: normal;\\n line-height: 0;\\n text-align: center;\\n text-transform: none;\\n vertical-align: -0.125em;\\n text-rendering: optimizeLegibility;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\n.anticon > * {\\n line-height: 1;\\n}\\n\\n.anticon svg {\\n display: inline-block;\\n}\\n\\n.anticon::before {\\n display: none;\\n}\\n\\n.anticon .anticon-icon {\\n display: block;\\n}\\n\\n.anticon[tabindex] {\\n cursor: pointer;\\n}\\n\\n.anticon-spin::before,\\n.anticon-spin {\\n display: inline-block;\\n -webkit-animation: loadingCircle 1s infinite linear;\\n animation: loadingCircle 1s infinite linear;\\n}\\n\\n@-webkit-keyframes loadingCircle {\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes loadingCircle {\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\";\nvar cssInjectedFlag = false;\nexport var useInsertStyles = function useInsertStyles() {\n var styleStr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : iconStyles;\n nextTick(function () {\n if (!cssInjectedFlag) {\n if (typeof window !== 'undefined' && window.document && window.document.documentElement) {\n insertCss(styleStr, {\n prepend: true\n });\n }\n\n cssInjectedFlag = true;\n }\n });\n};","var _excluded = [\"icon\", \"primaryColor\", \"secondaryColor\"];\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nimport { generate, getSecondaryColor, isIconDefinition, warning, useInsertStyles } from '../utils';\nvar twoToneColorPalette = {\n primaryColor: '#333',\n secondaryColor: '#E6E6E6',\n calculated: false\n};\n\nfunction setTwoToneColors(_ref) {\n var primaryColor = _ref.primaryColor,\n secondaryColor = _ref.secondaryColor;\n twoToneColorPalette.primaryColor = primaryColor;\n twoToneColorPalette.secondaryColor = secondaryColor || getSecondaryColor(primaryColor);\n twoToneColorPalette.calculated = !!secondaryColor;\n}\n\nfunction getTwoToneColors() {\n return _objectSpread({}, twoToneColorPalette);\n}\n\nvar IconBase = function IconBase(props, context) {\n var _props$context$attrs = _objectSpread({}, props, context.attrs),\n icon = _props$context$attrs.icon,\n primaryColor = _props$context$attrs.primaryColor,\n secondaryColor = _props$context$attrs.secondaryColor,\n restProps = _objectWithoutProperties(_props$context$attrs, _excluded);\n\n var colors = twoToneColorPalette;\n\n if (primaryColor) {\n colors = {\n primaryColor: primaryColor,\n secondaryColor: secondaryColor || getSecondaryColor(primaryColor)\n };\n }\n\n useInsertStyles();\n warning(isIconDefinition(icon), \"icon should be icon definiton, but got \".concat(icon));\n\n if (!isIconDefinition(icon)) {\n return null;\n }\n\n var target = icon;\n\n if (target && typeof target.icon === 'function') {\n target = _objectSpread({}, target, {\n icon: target.icon(colors.primaryColor, colors.secondaryColor)\n });\n }\n\n return generate(target.icon, \"svg-\".concat(target.name), _objectSpread({}, restProps, {\n 'data-icon': target.name,\n width: '1em',\n height: '1em',\n fill: 'currentColor',\n 'aria-hidden': 'true'\n })); // },\n};\n\nIconBase.props = {\n icon: Object,\n primaryColor: String,\n secondaryColor: String,\n focusable: String\n};\nIconBase.inheritAttrs = false;\nIconBase.displayName = 'IconBase';\nIconBase.getTwoToneColors = getTwoToneColors;\nIconBase.setTwoToneColors = setTwoToneColors;\nexport default IconBase;","function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport VueIcon from './IconBase';\nimport { normalizeTwoToneColors } from '../utils';\nexport function setTwoToneColor(twoToneColor) {\n var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor),\n _normalizeTwoToneColo2 = _slicedToArray(_normalizeTwoToneColo, 2),\n primaryColor = _normalizeTwoToneColo2[0],\n secondaryColor = _normalizeTwoToneColo2[1];\n\n return VueIcon.setTwoToneColors({\n primaryColor: primaryColor,\n secondaryColor: secondaryColor\n });\n}\nexport function getTwoToneColor() {\n var colors = VueIcon.getTwoToneColors();\n\n if (!colors.calculated) {\n return colors.primaryColor;\n }\n\n return [colors.primaryColor, colors.secondaryColor];\n}","var _excluded = [\"class\", \"icon\", \"spin\", \"rotate\", \"tabindex\", \"twoToneColor\", \"onClick\"];\nimport { createVNode as _createVNode } from \"vue\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_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\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport VueIcon from './IconBase';\nimport { getTwoToneColor, setTwoToneColor } from './twoTonePrimaryColor';\nimport { normalizeTwoToneColors } from '../utils'; // Initial setting\n\nsetTwoToneColor('#1890ff');\n\nvar Icon = function Icon(props, context) {\n var _classObj;\n\n var _props$context$attrs = _objectSpread({}, props, context.attrs),\n cls = _props$context$attrs[\"class\"],\n icon = _props$context$attrs.icon,\n spin = _props$context$attrs.spin,\n rotate = _props$context$attrs.rotate,\n tabindex = _props$context$attrs.tabindex,\n twoToneColor = _props$context$attrs.twoToneColor,\n onClick = _props$context$attrs.onClick,\n restProps = _objectWithoutProperties(_props$context$attrs, _excluded);\n\n var classObj = (_classObj = {\n anticon: true\n }, _defineProperty(_classObj, \"anticon-\".concat(icon.name), Boolean(icon.name)), _defineProperty(_classObj, cls, cls), _classObj);\n var svgClassString = spin === '' || !!spin || icon.name === 'loading' ? 'anticon-spin' : '';\n var iconTabIndex = tabindex;\n\n if (iconTabIndex === undefined && onClick) {\n iconTabIndex = -1;\n restProps.tabindex = iconTabIndex;\n }\n\n var svgStyle = rotate ? {\n msTransform: \"rotate(\".concat(rotate, \"deg)\"),\n transform: \"rotate(\".concat(rotate, \"deg)\")\n } : undefined;\n\n var _normalizeTwoToneColo = normalizeTwoToneColors(twoToneColor),\n _normalizeTwoToneColo2 = _slicedToArray(_normalizeTwoToneColo, 2),\n primaryColor = _normalizeTwoToneColo2[0],\n secondaryColor = _normalizeTwoToneColo2[1];\n\n return _createVNode(\"span\", _objectSpread({\n \"role\": \"img\",\n \"aria-label\": icon.name\n }, restProps, {\n \"onClick\": onClick,\n \"class\": classObj\n }), [_createVNode(VueIcon, {\n \"class\": svgClassString,\n \"icon\": icon,\n \"primaryColor\": primaryColor,\n \"secondaryColor\": secondaryColor,\n \"style\": svgStyle\n }, null)]);\n};\n\nIcon.props = {\n spin: Boolean,\n rotate: Number,\n icon: Object,\n twoToneColor: String\n};\nIcon.displayName = 'AntdIcon';\nIcon.inheritAttrs = false;\nIcon.getTwoToneColor = getTwoToneColor;\nIcon.setTwoToneColor = setTwoToneColor;\nexport default Icon;","// This icon file is generated automatically.\nvar AppstoreAddOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"defs\", \"attrs\": {}, \"children\": [{ \"tag\": \"style\", \"attrs\": {} }] }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M464 144H160c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H212V212h200v200zm452-268H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V160c0-8.8-7.2-16-16-16zm-52 268H612V212h200v200zm52 132H560c-8.8 0-16 7.2-16 16v304c0 8.8 7.2 16 16 16h304c8.8 0 16-7.2 16-16V560c0-8.8-7.2-16-16-16zm-52 268H612V612h200v200zM424 712H296V584c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v128H104c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h128v128c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V776h128c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\" } }] }, \"name\": \"appstore-add\", \"theme\": \"outlined\" };\nexport default AppstoreAddOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport AppstoreAddOutlinedSvg from \"@ant-design/icons-svg/es/asn/AppstoreAddOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar AppstoreAddOutlined = function AppstoreAddOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": AppstoreAddOutlinedSvg\n }), null);\n};\n\nAppstoreAddOutlined.displayName = 'AppstoreAddOutlined';\nAppstoreAddOutlined.inheritAttrs = false;\nexport default AppstoreAddOutlined;","// This icon file is generated automatically.\nvar CaretDownOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z\" } }] }, \"name\": \"caret-down\", \"theme\": \"outlined\" };\nexport default CaretDownOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport CaretDownOutlinedSvg from \"@ant-design/icons-svg/es/asn/CaretDownOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar CaretDownOutlined = function CaretDownOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": CaretDownOutlinedSvg\n }), null);\n};\n\nCaretDownOutlined.displayName = 'CaretDownOutlined';\nCaretDownOutlined.inheritAttrs = false;\nexport default CaretDownOutlined;","// This icon file is generated automatically.\nvar CaretRightOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"0 0 1024 1024\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M715.8 493.5L335 165.1c-14.2-12.2-35-1.2-35 18.5v656.8c0 19.7 20.8 30.7 35 18.5l380.8-328.4c10.9-9.4 10.9-27.6 0-37z\" } }] }, \"name\": \"caret-right\", \"theme\": \"outlined\" };\nexport default CaretRightOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport CaretRightOutlinedSvg from \"@ant-design/icons-svg/es/asn/CaretRightOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar CaretRightOutlined = function CaretRightOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": CaretRightOutlinedSvg\n }), null);\n};\n\nCaretRightOutlined.displayName = 'CaretRightOutlined';\nCaretRightOutlined.inheritAttrs = false;\nexport default CaretRightOutlined;","// This icon file is generated automatically.\nvar CloseOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"fill-rule\": \"evenodd\", \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M799.86 166.31c.02 0 .04.02.08.06l57.69 57.7c.04.03.05.05.06.08a.12.12 0 010 .06c0 .03-.02.05-.06.09L569.93 512l287.7 287.7c.04.04.05.06.06.09a.12.12 0 010 .07c0 .02-.02.04-.06.08l-57.7 57.69c-.03.04-.05.05-.07.06a.12.12 0 01-.07 0c-.03 0-.05-.02-.09-.06L512 569.93l-287.7 287.7c-.04.04-.06.05-.09.06a.12.12 0 01-.07 0c-.02 0-.04-.02-.08-.06l-57.69-57.7c-.04-.03-.05-.05-.06-.07a.12.12 0 010-.07c0-.03.02-.05.06-.09L454.07 512l-287.7-287.7c-.04-.04-.05-.06-.06-.09a.12.12 0 010-.07c0-.02.02-.04.06-.08l57.7-57.69c.03-.04.05-.05.07-.06a.12.12 0 01.07 0c.03 0 .05.02.09.06L512 454.07l287.7-287.7c.04-.04.06-.05.09-.06a.12.12 0 01.07 0z\" } }] }, \"name\": \"close\", \"theme\": \"outlined\" };\nexport default CloseOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport CloseOutlinedSvg from \"@ant-design/icons-svg/es/asn/CloseOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar CloseOutlined = function CloseOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": CloseOutlinedSvg\n }), null);\n};\n\nCloseOutlined.displayName = 'CloseOutlined';\nCloseOutlined.inheritAttrs = false;\nexport default CloseOutlined;","// This icon file is generated automatically.\nvar DeleteOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M360 184h-8c4.4 0 8-3.6 8-8v8h304v-8c0 4.4 3.6 8 8 8h-8v72h72v-80c0-35.3-28.7-64-64-64H352c-35.3 0-64 28.7-64 64v80h72v-72zm504 72H160c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8h60.4l24.7 523c1.6 34.1 29.8 61 63.9 61h454c34.2 0 62.3-26.8 63.9-61l24.7-523H888c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32zM731.3 840H292.7l-24.2-512h487l-24.2 512z\" } }] }, \"name\": \"delete\", \"theme\": \"outlined\" };\nexport default DeleteOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport DeleteOutlinedSvg from \"@ant-design/icons-svg/es/asn/DeleteOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar DeleteOutlined = function DeleteOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": DeleteOutlinedSvg\n }), null);\n};\n\nDeleteOutlined.displayName = 'DeleteOutlined';\nDeleteOutlined.inheritAttrs = false;\nexport default DeleteOutlined;","// This icon file is generated automatically.\nvar DownOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z\" } }] }, \"name\": \"down\", \"theme\": \"outlined\" };\nexport default DownOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport DownOutlinedSvg from \"@ant-design/icons-svg/es/asn/DownOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar DownOutlined = function DownOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": DownOutlinedSvg\n }), null);\n};\n\nDownOutlined.displayName = 'DownOutlined';\nDownOutlined.inheritAttrs = false;\nexport default DownOutlined;","// This icon file is generated automatically.\nvar MinusCircleOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M696 480H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\" } }] }, \"name\": \"minus-circle\", \"theme\": \"outlined\" };\nexport default MinusCircleOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport MinusCircleOutlinedSvg from \"@ant-design/icons-svg/es/asn/MinusCircleOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar MinusCircleOutlined = function MinusCircleOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": MinusCircleOutlinedSvg\n }), null);\n};\n\nMinusCircleOutlined.displayName = 'MinusCircleOutlined';\nMinusCircleOutlined.inheritAttrs = false;\nexport default MinusCircleOutlined;","// This icon file is generated automatically.\nvar PlusCircleOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M696 480H544V328c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h152v152c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V544h152c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z\" } }] }, \"name\": \"plus-circle\", \"theme\": \"outlined\" };\nexport default PlusCircleOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport PlusCircleOutlinedSvg from \"@ant-design/icons-svg/es/asn/PlusCircleOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar PlusCircleOutlined = function PlusCircleOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": PlusCircleOutlinedSvg\n }), null);\n};\n\nPlusCircleOutlined.displayName = 'PlusCircleOutlined';\nPlusCircleOutlined.inheritAttrs = false;\nexport default PlusCircleOutlined;","// This icon file is generated automatically.\nvar PlusOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M482 152h60q8 0 8 8v704q0 8-8 8h-60q-8 0-8-8V160q0-8 8-8z\" } }, { \"tag\": \"path\", \"attrs\": { \"d\": \"M192 474h672q8 0 8 8v60q0 8-8 8H160q-8 0-8-8v-60q0-8 8-8z\" } }] }, \"name\": \"plus\", \"theme\": \"outlined\" };\nexport default PlusOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport PlusOutlinedSvg from \"@ant-design/icons-svg/es/asn/PlusOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar PlusOutlined = function PlusOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": PlusOutlinedSvg\n }), null);\n};\n\nPlusOutlined.displayName = 'PlusOutlined';\nPlusOutlined.inheritAttrs = false;\nexport default PlusOutlined;","// This icon file is generated automatically.\nvar SettingOutlined = { \"icon\": { \"tag\": \"svg\", \"attrs\": { \"viewBox\": \"64 64 896 896\", \"focusable\": \"false\" }, \"children\": [{ \"tag\": \"path\", \"attrs\": { \"d\": \"M924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 009.3-35.2l-.9-2.6a443.74 443.74 0 00-79.7-137.9l-1.8-2.1a32.12 32.12 0 00-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 00-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 00-25.8 25.7l-15.8 85.4a351.86 351.86 0 00-99 57.4l-81.9-29.1a32 32 0 00-35.1 9.5l-1.8 2.1a446.02 446.02 0 00-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1 0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 00-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0035.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0025.8 25.7l2.7.5a449.4 449.4 0 00159 0l2.7-.5a32.05 32.05 0 0025.8-25.7l15.7-85a350 350 0 0099.7-57.6l81.3 28.9a32 32 0 0035.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35zM788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1 74.7 63.9a370.03 370.03 0 01-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3-17.9 97a377.5 377.5 0 01-85 0l-17.9-97.2-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5 0-15.3 1.2-30.6 3.7-45.5l6.5-40-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2 31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3 17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97 38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8 92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426l6.5 39.9zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm79.2 255.2A111.6 111.6 0 01512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 01400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390c29.9 0 58 11.6 79.2 32.8A111.6 111.6 0 01624 502c0 29.9-11.7 58-32.8 79.2z\" } }] }, \"name\": \"setting\", \"theme\": \"outlined\" };\nexport default SettingOutlined;\n","import { createVNode as _createVNode } from \"vue\";\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? Object(arguments[i]) : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _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; }\n\n// GENERATE BY ./scripts/generate.ts\n// DON NOT EDIT IT MANUALLY\nimport SettingOutlinedSvg from \"@ant-design/icons-svg/es/asn/SettingOutlined\";\nimport AntdIcon from '../components/AntdIcon';\n\nvar SettingOutlined = function SettingOutlined(props, context) {\n var p = _objectSpread({}, props, context.attrs);\n\n return _createVNode(AntdIcon, _objectSpread({}, p, {\n \"icon\": SettingOutlinedSvg\n }), null);\n};\n\nSettingOutlined.displayName = 'SettingOutlined';\nSettingOutlined.inheritAttrs = false;\nexport default SettingOutlined;","<template>\n <div class=\"data-source-list\">\n <a-input-search\n v-model:value=\"searchText\"\n placeholder=\"请输入关键字\"\n style=\"width: 100%\"\n @change=\"onChange\"\n @search=\"onSearch\"\n />\n <div class=\"columns\">\n <a-spin\n :spinning=\"dataSourceLoading\"\n tip=\"数据源加载中...\"\n >\n <div\n v-for=\"(dataSource, index) in dataSourceList\"\n :key=\"dataSource.id\"\n >\n <div class=\"column-item\">\n <span\n style=\"cursor: pointer\"\n @click=\"onToggleGroup(index)\"\n >\n <caret-down-outlined v-if=\"dataSource.show\" />\n <caret-right-outlined v-else />\n {{ dataSource.indexCode + ' ' + dataSource.name }}\n </span>\n </div>\n <div v-if=\"dataSource.show\">\n <div\n class=\"column-child-item\"\n v-for=\"dataViewColumn in dataSource.dataViewColumns\"\n :key=\"dataViewColumn.id\"\n :draggable=\"true\"\n @dragstart=\"onDragstart($event, dataViewColumn)\"\n >\n 【{{ mapScope(dataViewColumn.scope) }}】\n <span class=\"column-child-item-name\">\n {{ dataViewColumn.title || dataViewColumn.name }}\n </span>\n </div>\n </div>\n </div>\n </a-spin>\n </div>\n <a-pagination\n size=\"small\"\n show-quick-jumper\n v-model:pageSize=\"pagination.pageSize\"\n :total=\"pagination.totalResult\"\n :show-total=\"(total: any) => `共 ${total} 条`\"\n v-model:current=\"pagination.currentPage\"\n @change=\"onPaginationChange\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n onMounted,\n reactive,\n ref,\n unref,\n inject\n} from 'vue'\nimport { CaretRightOutlined, CaretDownOutlined } from '@ant-design/icons-vue'\nimport {\n InputSearch as AInputSearch,\n Spin as ASpin,\n Pagination as APagination\n} from 'ant-design-vue'\nimport { debounce } from 'lodash-es'\nimport {\n INDICATOR_URL,\n REQUEST,\n INDICATOR_TOKEN,\n SELECTED_COMPONENT\n} from '@/utils/constant'\nexport default defineComponent({\n name: 'DataSourceList',\n components: {\n CaretRightOutlined,\n CaretDownOutlined,\n AInputSearch,\n ASpin,\n APagination\n },\n setup () {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n const selectedConfig = computed(\n () => unref(selectedComponent)?.graphicConfig\n )\n const dataSourceId = computed(() => unref(selectedConfig)?.dataSourceId)\n const dataSourceList = ref<{ [key: string]: any }[]>([])\n const dataSourceLoading = ref(false)\n // 分页数据\n const pagination = reactive({\n pageSize: 20,\n currentPage: 1,\n totalResult: 0\n })\n const searchText = ref('')\n const handleDataSourceList = async () => {\n dataSourceLoading.value = true\n const params = {\n source: 'INDICATOR_LIB',\n queryRequest: {\n pageSize: pagination.pageSize,\n pageNum: pagination.currentPage\n },\n indexName: unref(searchText),\n pageId: PAGE_ID,\n dataSourceId: unref(dataSourceId)\n }\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n params,\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n dataSourceLoading.value = false\n const { success, data = {} } = res.data\n if (success) {\n const { rows = [], total = 0 } = data\n rows?.forEach((row: { [key: string]: any }) => {\n row.show = false\n row.dataViewColumns?.forEach((column: { [key: string]: any }) => {\n column.show = true\n // 编辑名字\n column.edit = false\n })\n })\n dataSourceList.value = rows\n pagination.totalResult = +total\n }\n } catch (error) {\n dataSourceLoading.value = false\n }\n }\n\n const mapScope = (scope: 'DIM' | 'IDX') => {\n const map = {\n DIM: '维度',\n IDX: '指标'\n }\n return map[scope]\n }\n\n const onToggleGroup = (index: number) => {\n dataSourceList.value[index].show = !dataSourceList.value[index].show\n }\n const onDragstart = (\n event: DragEvent,\n dataView: { [key: string]: any }\n ) => {\n event.dataTransfer?.setData('list-item', JSON.stringify(dataView))\n }\n\n const onSearch = () => {\n pagination.currentPage = 1\n handleDataSourceList()\n }\n\n const onChange = debounce(() => {\n pagination.currentPage = 1\n handleDataSourceList()\n }, 200)\n\n const onPaginationChange = (page: number, pageSize: number) => {\n pagination.pageSize = pageSize\n pagination.currentPage = page\n handleDataSourceList()\n }\n\n onMounted(() => {\n handleDataSourceList()\n })\n\n return {\n dataSourceList,\n dataSourceLoading,\n pagination,\n onDragstart,\n onToggleGroup,\n mapScope,\n onSearch,\n onChange,\n onPaginationChange,\n searchText\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-source-list {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.columns {\n height: 100%;\n overflow: auto;\n flex: 1;\n padding-top: 10px;\n}\n\n.column-item {\n display: flow-root;\n margin: 3px 0;\n padding: 2px 0;\n}\n\n.column-child-item {\n padding: 3px 10px;\n}\n</style>\n","<template>\n <div class=\"data-source-list\">\n <a-input-search\n v-model:value=\"searchText\"\n placeholder=\"请输入关键字\"\n style=\"width: 100%\"\n @change=\"onChange\"\n @search=\"onSearch\"\n />\n <div class=\"columns\">\n <a-spin\n :spinning=\"dataSourceLoading\"\n tip=\"数据源加载中...\"\n >\n <div\n v-for=\"(dataSource, index) in dataSourceList\"\n :key=\"dataSource.id\"\n >\n <div class=\"column-item\">\n <span\n style=\"cursor: pointer\"\n @click=\"onToggleGroup(index)\"\n >\n <caret-down-outlined v-if=\"dataSource.show\" />\n <caret-right-outlined v-else />\n {{ dataSource.indexCode + ' ' + dataSource.name }}\n </span>\n </div>\n <div v-if=\"dataSource.show\">\n <div\n class=\"column-child-item\"\n v-for=\"dataViewColumn in dataSource.dataViewColumns\"\n :key=\"dataViewColumn.id\"\n :draggable=\"true\"\n @dragstart=\"onDragstart($event, dataViewColumn)\"\n >\n 【{{ mapScope(dataViewColumn.scope) }}】\n <span class=\"column-child-item-name\">\n {{ dataViewColumn.title || dataViewColumn.name }}\n </span>\n </div>\n </div>\n </div>\n </a-spin>\n </div>\n <a-pagination\n size=\"small\"\n show-quick-jumper\n v-model:pageSize=\"pagination.pageSize\"\n :total=\"pagination.totalResult\"\n :show-total=\"(total: any) => `共 ${total} 条`\"\n v-model:current=\"pagination.currentPage\"\n @change=\"onPaginationChange\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n onMounted,\n reactive,\n ref,\n unref,\n inject\n} from 'vue'\nimport { CaretRightOutlined, CaretDownOutlined } from '@ant-design/icons-vue'\nimport {\n InputSearch as AInputSearch,\n Spin as ASpin,\n Pagination as APagination\n} from 'ant-design-vue'\nimport { debounce } from 'lodash-es'\nimport {\n INDICATOR_URL,\n REQUEST,\n INDICATOR_TOKEN,\n SELECTED_COMPONENT\n} from '@/utils/constant'\nexport default defineComponent({\n name: 'DataSourceList',\n components: {\n CaretRightOutlined,\n CaretDownOutlined,\n AInputSearch,\n ASpin,\n APagination\n },\n setup () {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n const selectedConfig = computed(\n () => unref(selectedComponent)?.graphicConfig\n )\n const dataSourceId = computed(() => unref(selectedConfig)?.dataSourceId)\n const dataSourceList = ref<{ [key: string]: any }[]>([])\n const dataSourceLoading = ref(false)\n // 分页数据\n const pagination = reactive({\n pageSize: 20,\n currentPage: 1,\n totalResult: 0\n })\n const searchText = ref('')\n const handleDataSourceList = async () => {\n dataSourceLoading.value = true\n const params = {\n source: 'INDICATOR_LIB',\n queryRequest: {\n pageSize: pagination.pageSize,\n pageNum: pagination.currentPage\n },\n indexName: unref(searchText),\n pageId: PAGE_ID,\n dataSourceId: unref(dataSourceId)\n }\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/sourceList`,\n params,\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n dataSourceLoading.value = false\n const { success, data = {} } = res.data\n if (success) {\n const { rows = [], total = 0 } = data\n rows?.forEach((row: { [key: string]: any }) => {\n row.show = false\n row.dataViewColumns?.forEach((column: { [key: string]: any }) => {\n column.show = true\n // 编辑名字\n column.edit = false\n })\n })\n dataSourceList.value = rows\n pagination.totalResult = +total\n }\n } catch (error) {\n dataSourceLoading.value = false\n }\n }\n\n const mapScope = (scope: 'DIM' | 'IDX') => {\n const map = {\n DIM: '维度',\n IDX: '指标'\n }\n return map[scope]\n }\n\n const onToggleGroup = (index: number) => {\n dataSourceList.value[index].show = !dataSourceList.value[index].show\n }\n const onDragstart = (\n event: DragEvent,\n dataView: { [key: string]: any }\n ) => {\n event.dataTransfer?.setData('list-item', JSON.stringify(dataView))\n }\n\n const onSearch = () => {\n pagination.currentPage = 1\n handleDataSourceList()\n }\n\n const onChange = debounce(() => {\n pagination.currentPage = 1\n handleDataSourceList()\n }, 200)\n\n const onPaginationChange = (page: number, pageSize: number) => {\n pagination.pageSize = pageSize\n pagination.currentPage = page\n handleDataSourceList()\n }\n\n onMounted(() => {\n handleDataSourceList()\n })\n\n return {\n dataSourceList,\n dataSourceLoading,\n pagination,\n onDragstart,\n onToggleGroup,\n mapScope,\n onSearch,\n onChange,\n onPaginationChange,\n searchText\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-source-list {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n.columns {\n height: 100%;\n overflow: auto;\n flex: 1;\n padding-top: 10px;\n}\n\n.column-item {\n display: flow-root;\n margin: 3px 0;\n padding: 2px 0;\n}\n\n.column-child-item {\n padding: 3px 10px;\n}\n</style>\n","<template>\n <data-view-list v-if=\"source === 'SQL_VIEW'\" />\n <data-source-list v-if=\"source === 'INDICATOR_LIB'\" />\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject } from 'vue'\nimport DataViewList from './DataViewList.vue'\nimport DataSourceList from './DataSourceList.vue'\nimport { SOURCE_TYPE } from '@/utils/constant'\nexport default defineComponent({\n name: 'DataList',\n components: {\n DataSourceList,\n DataViewList\n },\n setup () {\n const source = inject(SOURCE_TYPE)\n return {\n source\n }\n }\n})\n</script>\n\n<style scoped></style>\n","<template>\n <data-view-list v-if=\"source === 'SQL_VIEW'\" />\n <data-source-list v-if=\"source === 'INDICATOR_LIB'\" />\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject } from 'vue'\nimport DataViewList from './DataViewList.vue'\nimport DataSourceList from './DataSourceList.vue'\nimport { SOURCE_TYPE } from '@/utils/constant'\nexport default defineComponent({\n name: 'DataList',\n components: {\n DataSourceList,\n DataViewList\n },\n setup () {\n const source = inject(SOURCE_TYPE)\n return {\n source\n }\n }\n})\n</script>\n\n<style scoped></style>\n","export default {\n mounted (el: HTMLElement) {\n // 自动聚焦\n el.focus()\n }\n}\n","<template>\n <a-modal\n title=\"进行拖拽排序\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n @cancel=\"onCancel\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n padding: '10px 24px'\n }\"\n :footer=\"null\"\n >\n <div class=\"button-wrapper\">\n <a-button danger @click=\"onDeleteConfig\">\n 删除配置\n </a-button>\n </div>\n <draggable\n v-model=\"customSortList\"\n class=\"custom-sort-list\"\n item-key=\"id\"\n :put=\"false\"\n @change=\"onChange\"\n >\n <template #item=\"{element}\">\n <div class=\"sort-item\">\n {{ element }}\n </div>\n </template>\n </draggable>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, watch, inject } from 'vue'\nimport {\n Modal as AModal,\n Button as AButton\n} from 'ant-design-vue'\nimport Draggable from 'vuedraggable'\nimport { REQUEST, INDICATOR_TOKEN, INDICATOR_URL, GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nexport default defineComponent({\n name: 'CustomSortModal',\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n Draggable,\n AModal,\n AButton\n },\n setup (props, { expose }) {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as Function\n const source = computed(() => unref(graphicConfig).source)\n const dataViewId = computed(() => unref(graphicConfig).dataViewId)\n const customSortList = ref([])\n const handleCustomSortList = async () => {\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/groupvalue`, {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: props.item.name,\n hrpIndexTypeGuid: props.item.id,\n pageId: PAGE_ID,\n pageFlag: true\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n customSortList.value = data?.slice(0, 200)\n }\n } catch (e) {\n console.error(e)\n }\n }\n const updateCustomSortList = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n const item = list[props.index]\n const { label, name } = props.item\n // 自定义排序\n item.sort = {\n label,\n columnName: name,\n type: 'CUSTOM',\n customOrderColumns: unref(customSortList)\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n // 数据是否改变\n let isDataChange = false\n const onChange = () => {\n isDataChange = true\n }\n const visible = ref(false)\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const onCancel = () => {\n // 改变才更新\n if (isDataChange) updateCustomSortList()\n isDataChange = false\n // 隐藏弹窗\n hideModal()\n }\n expose({\n showModal\n })\n // 弹窗数据初始化\n watch(visible, (visible) => {\n if (visible) {\n const customOrderColumns = props.item?.sort?.customOrderColumns\n if (customOrderColumns == null) {\n handleCustomSortList()\n } else {\n customSortList.value = customOrderColumns\n }\n } else {\n // 关闭时清空数据\n customSortList.value = []\n }\n }, {\n flush: 'post'\n })\n\n const onDeleteConfig = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n const item = list[props.index]\n const { label, name } = props.item\n // 自定义排序\n item.sort = {\n label,\n columnName: name\n }\n updateGraphicConfig({\n [props.type]: list\n })\n hideModal()\n }\n\n return {\n visible,\n onCancel,\n customSortList,\n onChange,\n onDeleteConfig\n }\n }\n})\n</script>\n<style scoped lang=\"less\">\n.button-wrapper {\n width: 100%;\n display: flex;\n justify-content: flex-end;\n margin-bottom: 10px;\n}\n\n.custom-sort-list {\n width: 100%;\n overflow: auto;\n height: 70vh;\n list-style: none;\n padding-bottom: 60px;\n}\n\n.sort-item {\n border: 1px dashed #aaa;\n margin-bottom: 5px;\n padding: 5px;\n font-size: 14px;\n}\n</style>\n","<template>\n <a-modal\n title=\"进行拖拽排序\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n @cancel=\"onCancel\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n padding: '10px 24px'\n }\"\n :footer=\"null\"\n >\n <div class=\"button-wrapper\">\n <a-button danger @click=\"onDeleteConfig\">\n 删除配置\n </a-button>\n </div>\n <draggable\n v-model=\"customSortList\"\n class=\"custom-sort-list\"\n item-key=\"id\"\n :put=\"false\"\n @change=\"onChange\"\n >\n <template #item=\"{element}\">\n <div class=\"sort-item\">\n {{ element }}\n </div>\n </template>\n </draggable>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, watch, inject } from 'vue'\nimport {\n Modal as AModal,\n Button as AButton\n} from 'ant-design-vue'\nimport Draggable from 'vuedraggable'\nimport { REQUEST, INDICATOR_TOKEN, INDICATOR_URL, GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nexport default defineComponent({\n name: 'CustomSortModal',\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n Draggable,\n AModal,\n AButton\n },\n setup (props, { expose }) {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as Function\n const source = computed(() => unref(graphicConfig).source)\n const dataViewId = computed(() => unref(graphicConfig).dataViewId)\n const customSortList = ref([])\n const handleCustomSortList = async () => {\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/groupvalue`, {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: props.item.name,\n hrpIndexTypeGuid: props.item.id,\n pageId: PAGE_ID,\n pageFlag: true\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n customSortList.value = data?.slice(0, 200)\n }\n } catch (e) {\n console.error(e)\n }\n }\n const updateCustomSortList = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n const item = list[props.index]\n const { label, name } = props.item\n // 自定义排序\n item.sort = {\n label,\n columnName: name,\n type: 'CUSTOM',\n customOrderColumns: unref(customSortList)\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n // 数据是否改变\n let isDataChange = false\n const onChange = () => {\n isDataChange = true\n }\n const visible = ref(false)\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const onCancel = () => {\n // 改变才更新\n if (isDataChange) updateCustomSortList()\n isDataChange = false\n // 隐藏弹窗\n hideModal()\n }\n expose({\n showModal\n })\n // 弹窗数据初始化\n watch(visible, (visible) => {\n if (visible) {\n const customOrderColumns = props.item?.sort?.customOrderColumns\n if (customOrderColumns == null) {\n handleCustomSortList()\n } else {\n customSortList.value = customOrderColumns\n }\n } else {\n // 关闭时清空数据\n customSortList.value = []\n }\n }, {\n flush: 'post'\n })\n\n const onDeleteConfig = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n const item = list[props.index]\n const { label, name } = props.item\n // 自定义排序\n item.sort = {\n label,\n columnName: name\n }\n updateGraphicConfig({\n [props.type]: list\n })\n hideModal()\n }\n\n return {\n visible,\n onCancel,\n customSortList,\n onChange,\n onDeleteConfig\n }\n }\n})\n</script>\n<style scoped lang=\"less\">\n.button-wrapper {\n width: 100%;\n display: flex;\n justify-content: flex-end;\n margin-bottom: 10px;\n}\n\n.custom-sort-list {\n width: 100%;\n overflow: auto;\n height: 70vh;\n list-style: none;\n padding-bottom: 60px;\n}\n\n.sort-item {\n border: 1px dashed #aaa;\n margin-bottom: 5px;\n padding: 5px;\n font-size: 14px;\n}\n</style>\n","<template>\n <a-modal\n :title=\"title\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column'\n }\"\n :footer=\"null\"\n @cancel=\"onCancel\"\n >\n <div class=\"custom-group-header\">\n <div class=\"move-and-create\">\n <div>\n <span class=\"select-tip\">\n 已选<span class=\"select-count\">{{ selectCount }}</span\n >个\n </span>\n <a-select\n v-model:value=\"selectGroupIndex\"\n class=\"select-group\"\n placeholder=\"请选择移入分组\"\n >\n <a-select-option\n v-for=\"(customGroup, index) in customGroupList\"\n :key=\"index\"\n >\n {{ customGroup.title }}\n </a-select-option>\n </a-select>\n <a-button @click=\"onMoveInGroup\">移入分组</a-button>\n </div>\n <div class=\"create-group\">\n 创建分组:\n <a-input\n class=\"create-group-name\"\n v-model:value=\"createGroupTitle\"\n placeholder=\"请输入创建分组名\"\n @pressEnter=\"onAddGroup\"\n />\n </div>\n </div>\n <div>\n <a-checkbox\n v-model:checked=\"useOtherGroup\"\n @change=\"onUseOtherGroup\"\n >\n 将未分组设为其他分组\n </a-checkbox>\n </div>\n </div>\n <div class=\"custom-group-content\">\n <a-collapse\n v-model:activeKey=\"activeKey\"\n ghost\n >\n <a-collapse-panel\n v-for=\"(customGroup, index) in customGroupList\"\n :key=\"index\"\n >\n <template #header>\n <div\n @click.prevent.stop=\"onEditTitle(index)\"\n v-if=\"!customGroupEditTitleList[index]\"\n >\n {{ customGroup.title }}\n </div>\n <a-input\n class=\"edit-title-input\"\n :value=\"customGroup.title\"\n size=\"small\"\n v-focus\n v-else\n @change=\"onTitleChange($event, index)\"\n @blur=\"onFinishEditTitle(index)\"\n @pressEnter=\"onFinishEditTitle(index)\"\n />\n </template>\n <template #extra>\n <div class=\"extra\">\n <template v-if=\"index === 0 && useOtherGroup\">\n <a-tag\n class=\"tag\"\n color=\"blue\"\n >\n 其他组\n </a-tag>\n </template>\n <template v-if=\"index !== 0\">\n <a-tag\n class=\"tag\"\n color=\"green\"\n >\n 自定义组\n </a-tag>\n <close-outlined @click.prevent.stop=\"onDeleteGroup(index)\" />\n </template>\n </div>\n </template>\n <div class=\"custom-group-list\">\n <a-checkable-tag\n color=\"red\"\n v-model:checked=\"item.checked\"\n class=\"custom-group\"\n v-for=\"(item, i) in customGroup.data\"\n :key=\"i\"\n >\n <span class=\"text\">{{ item.label }}</span>\n </a-checkable-tag>\n </div>\n </a-collapse-panel>\n </a-collapse>\n </div>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, watch, inject } from 'vue'\nimport {\n REQUEST,\n INDICATOR_TOKEN,\n INDICATOR_URL,\n GRAPHIC_CONFIG,\n UPDATE_GRAPHIC_CONFIG\n} from '@/utils/constant'\nimport { CloseOutlined } from '@ant-design/icons-vue'\nimport {\n Modal as AModal,\n Select as ASelect,\n SelectOption as ASelectOption,\n Button as AButton,\n Input as AInput,\n Checkbox as ACheckbox,\n Collapse as ACollapse,\n CollapsePanel as ACollapsePanel,\n Tag as ATag,\n CheckableTag as ACheckableTag,\n message\n} from 'ant-design-vue'\nimport focus from '@/directives/focus'\nexport default defineComponent({\n name: 'CustomGroupModal',\n directives: {\n focus\n },\n components: {\n CloseOutlined,\n AModal,\n ASelect,\n ASelectOption,\n AButton,\n AInput,\n ACheckbox,\n ACollapse,\n ACollapsePanel,\n ATag,\n ACheckableTag\n },\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n setup (props, { expose }) {\n const request = inject(REQUEST) as any\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n let isDataChange = false\n const title = computed(() => `自定义分组-${props.item.label}`)\n const createGroupTitle = ref<string | null>(null)\n const activeKey = ref([])\n interface CustomGroup {\n title: string\n data: {\n label: string\n checked: boolean\n }[]\n }\n const customGroupList = ref<CustomGroup[]>([])\n const customGroupTitleSet = computed(() => {\n const customGroupTitleList = unref(customGroupList).map(\n (item) => item.title\n )\n return new Set(customGroupTitleList)\n })\n const customGroupEditTitleList = ref<boolean[]>([])\n watch(\n () => unref(customGroupList).length,\n (length: number) => {\n customGroupEditTitleList.value = new Array(length).fill(false)\n }\n )\n const selectCount = computed(() => {\n let count = 0\n unref(customGroupList).forEach((customGroup) => {\n customGroup.data?.forEach((item) => {\n if (item.checked) {\n count++\n }\n })\n })\n return count\n })\n const onAddGroup = () => {\n const title = unref(createGroupTitle)\n if (!title) {\n message.error('创建分组名不能空')\n return\n }\n if (!unref(customGroupTitleSet).has(title)) {\n unref(customGroupList).push({\n title,\n data: []\n })\n isDataChange = true\n } else {\n message.error('分组名已存在,请重新命名')\n }\n }\n const onDeleteGroup = (index: number) => {\n unref(customGroupList).splice(index, 1)\n isDataChange = true\n }\n const selectGroupIndex = ref<number | null>(null)\n const onMoveInGroup = () => {\n if (unref(selectCount) === 0) {\n message.error('当前移入分组已选个数为0')\n return\n }\n const index = unref(selectGroupIndex)\n if (index == null) {\n message.error('请选择移入分组')\n return\n }\n if (!unref(customGroupList)[index]) {\n message.error('移入分组不存在,请重新选择')\n return\n }\n const selectList: { label: string; checked: boolean }[] = []\n const len = unref(customGroupList).length\n for (let i = 0; i < len; i++) {\n const customGroup = unref(customGroupList)[i]\n unref(customGroupList)[i].data = customGroup.data.filter((item) => {\n if (item.checked) {\n selectList.push({\n ...item,\n checked: false\n })\n }\n return !item.checked\n })\n }\n unref(customGroupList)[index].data = [\n ...selectList,\n ...unref(customGroupList)[index].data\n ]\n isDataChange = true\n }\n const onEditTitle = (index: number) => {\n unref(customGroupEditTitleList)[index] = true\n }\n const onFinishEditTitle = (index: number) => {\n unref(customGroupEditTitleList)[index] = false\n }\n const onTitleChange = (event: Event, index: number) => {\n const value = (event.target as any).value\n if (unref(customGroupTitleSet).has(value)) {\n message.error('组名不能相同,请修改')\n }\n unref(customGroupList)[index].title = value\n isDataChange = true\n }\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const source = computed(() => unref(graphicConfig).source)\n const dataViewId = computed(() => unref(graphicConfig).dataViewId)\n const useOtherGroup = ref(false)\n const updateCustomGroup = () => {\n const customGroups = unref(customGroupList)\n let otherGroupName = ''\n if (unref(useOtherGroup)) {\n otherGroupName = customGroups[0]?.title\n }\n const len = customGroups?.length\n const groupInfoMap: { [key: string]: any } = {}\n for (let i = 1; i < len; i++) {\n const customGroup = customGroups[i] || {}\n const { title, data } = customGroup as any\n groupInfoMap[title] = data?.map((item) => item.label) || []\n }\n const list = unref(graphicConfig)[props.type]?.slice() || []\n const item = list[props.index]\n // 更新其他组名称\n item.customGroup = {\n groupInfoMap,\n otherGroupName\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const visible = ref(false)\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const onCancel = () => {\n // 隐藏弹窗\n hideModal()\n // 更新数据\n if (isDataChange) updateCustomGroup()\n isDataChange = false\n }\n const onUseOtherGroup = () => {\n isDataChange = true\n }\n const allLabelSet = new Set()\n const handleInitData = async () => {\n const customGroup = props.item.customGroup || {}\n const otherGroupName = customGroup.otherGroupName\n const groupInfoMap = customGroup.groupInfoMap\n if (otherGroupName === '' || otherGroupName == null) {\n useOtherGroup.value = false\n }\n unref(customGroupList)[0] = {\n title: otherGroupName || '未分组',\n data: []\n }\n let i = 1\n for (const key in groupInfoMap) {\n if (Object.prototype.hasOwnProperty.call(groupInfoMap, key)) {\n const values = groupInfoMap[key] as string[]\n const data = values.map((item) => {\n allLabelSet.add(item)\n return {\n label: item,\n checked: false\n }\n })\n // 其他项\n unref(customGroupList)[i] = {\n title: key as string,\n data\n }\n i++\n }\n }\n await handleCustomGroupList() // 处理 customGroupList\n }\n const handleCustomGroupList = async () => {\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/groupvalue`,\n {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: props.item.name,\n hrpIndexTypeGuid: props.item.id,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n const { success, data = [] } = res.data\n if (success) {\n // 截取200\n const rows: { label: string; checked: boolean }[] = []\n data?.slice(0, 200)?.forEach((item: string) => {\n if (!allLabelSet.has(item)) {\n rows.push({\n label: item,\n checked: false\n })\n }\n })\n unref(customGroupList)[0].data = rows\n }\n } catch (e) {\n console.error(e)\n }\n }\n\n watch(\n visible,\n (visible) => {\n if (visible) {\n handleInitData()\n }\n },\n {\n flush: 'post'\n }\n )\n\n expose({\n showModal\n })\n return {\n visible,\n title,\n activeKey,\n customGroupList,\n onCancel,\n useOtherGroup,\n selectCount,\n createGroupTitle,\n onAddGroup,\n onDeleteGroup,\n onMoveInGroup,\n selectGroupIndex,\n onEditTitle,\n onTitleChange,\n onFinishEditTitle,\n onUseOtherGroup,\n customGroupEditTitleList\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.move-and-create {\n display: flex;\n justify-content: space-between;\n margin-bottom: 15px;\n}\n\n.create-group {\n display: flex;\n align-items: center;\n font-size: 15px;\n}\n\n.create-group-name {\n width: 140px;\n margin-left: 10px;\n}\n\n.custom-group-content {\n overflow-y: auto;\n}\n\n.tag {\n margin-right: 10px;\n}\n\n.edit-title-input {\n width: 150px;\n}\n\n.extra {\n width: 90px;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n\n.custom-group {\n margin: 5px;\n padding: 3px 5px;\n}\n\n.text {\n font-size: 14px;\n}\n\n.select-tip {\n margin-right: 10px;\n font-size: 15px;\n}\n\n.select-count {\n color: red;\n margin: 0 3px;\n}\n\n.select-group {\n margin-right: 15px;\n width: 140px;\n}\n\n.cancel-button {\n margin-right: 20px;\n}\n\n.footer {\n display: flex;\n}\n</style>\n\n<style lang=\"less\">\n.custom-group-content {\n .ant-collapse > .ant-collapse-item > .ant-collapse-header {\n padding: 12px 0;\n }\n}\n</style>\n","<template>\n <a-modal\n :title=\"title\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column'\n }\"\n :footer=\"null\"\n @cancel=\"onCancel\"\n >\n <div class=\"custom-group-header\">\n <div class=\"move-and-create\">\n <div>\n <span class=\"select-tip\">\n 已选<span class=\"select-count\">{{ selectCount }}</span\n >个\n </span>\n <a-select\n v-model:value=\"selectGroupIndex\"\n class=\"select-group\"\n placeholder=\"请选择移入分组\"\n >\n <a-select-option\n v-for=\"(customGroup, index) in customGroupList\"\n :key=\"index\"\n >\n {{ customGroup.title }}\n </a-select-option>\n </a-select>\n <a-button @click=\"onMoveInGroup\">移入分组</a-button>\n </div>\n <div class=\"create-group\">\n 创建分组:\n <a-input\n class=\"create-group-name\"\n v-model:value=\"createGroupTitle\"\n placeholder=\"请输入创建分组名\"\n @pressEnter=\"onAddGroup\"\n />\n </div>\n </div>\n <div>\n <a-checkbox\n v-model:checked=\"useOtherGroup\"\n @change=\"onUseOtherGroup\"\n >\n 将未分组设为其他分组\n </a-checkbox>\n </div>\n </div>\n <div class=\"custom-group-content\">\n <a-collapse\n v-model:activeKey=\"activeKey\"\n ghost\n >\n <a-collapse-panel\n v-for=\"(customGroup, index) in customGroupList\"\n :key=\"index\"\n >\n <template #header>\n <div\n @click.prevent.stop=\"onEditTitle(index)\"\n v-if=\"!customGroupEditTitleList[index]\"\n >\n {{ customGroup.title }}\n </div>\n <a-input\n class=\"edit-title-input\"\n :value=\"customGroup.title\"\n size=\"small\"\n v-focus\n v-else\n @change=\"onTitleChange($event, index)\"\n @blur=\"onFinishEditTitle(index)\"\n @pressEnter=\"onFinishEditTitle(index)\"\n />\n </template>\n <template #extra>\n <div class=\"extra\">\n <template v-if=\"index === 0 && useOtherGroup\">\n <a-tag\n class=\"tag\"\n color=\"blue\"\n >\n 其他组\n </a-tag>\n </template>\n <template v-if=\"index !== 0\">\n <a-tag\n class=\"tag\"\n color=\"green\"\n >\n 自定义组\n </a-tag>\n <close-outlined @click.prevent.stop=\"onDeleteGroup(index)\" />\n </template>\n </div>\n </template>\n <div class=\"custom-group-list\">\n <a-checkable-tag\n color=\"red\"\n v-model:checked=\"item.checked\"\n class=\"custom-group\"\n v-for=\"(item, i) in customGroup.data\"\n :key=\"i\"\n >\n <span class=\"text\">{{ item.label }}</span>\n </a-checkable-tag>\n </div>\n </a-collapse-panel>\n </a-collapse>\n </div>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, watch, inject } from 'vue'\nimport {\n REQUEST,\n INDICATOR_TOKEN,\n INDICATOR_URL,\n GRAPHIC_CONFIG,\n UPDATE_GRAPHIC_CONFIG\n} from '@/utils/constant'\nimport { CloseOutlined } from '@ant-design/icons-vue'\nimport {\n Modal as AModal,\n Select as ASelect,\n SelectOption as ASelectOption,\n Button as AButton,\n Input as AInput,\n Checkbox as ACheckbox,\n Collapse as ACollapse,\n CollapsePanel as ACollapsePanel,\n Tag as ATag,\n CheckableTag as ACheckableTag,\n message\n} from 'ant-design-vue'\nimport focus from '@/directives/focus'\nexport default defineComponent({\n name: 'CustomGroupModal',\n directives: {\n focus\n },\n components: {\n CloseOutlined,\n AModal,\n ASelect,\n ASelectOption,\n AButton,\n AInput,\n ACheckbox,\n ACollapse,\n ACollapsePanel,\n ATag,\n ACheckableTag\n },\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n setup (props, { expose }) {\n const request = inject(REQUEST) as any\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n let isDataChange = false\n const title = computed(() => `自定义分组-${props.item.label}`)\n const createGroupTitle = ref<string | null>(null)\n const activeKey = ref([])\n interface CustomGroup {\n title: string\n data: {\n label: string\n checked: boolean\n }[]\n }\n const customGroupList = ref<CustomGroup[]>([])\n const customGroupTitleSet = computed(() => {\n const customGroupTitleList = unref(customGroupList).map(\n (item) => item.title\n )\n return new Set(customGroupTitleList)\n })\n const customGroupEditTitleList = ref<boolean[]>([])\n watch(\n () => unref(customGroupList).length,\n (length: number) => {\n customGroupEditTitleList.value = new Array(length).fill(false)\n }\n )\n const selectCount = computed(() => {\n let count = 0\n unref(customGroupList).forEach((customGroup) => {\n customGroup.data?.forEach((item) => {\n if (item.checked) {\n count++\n }\n })\n })\n return count\n })\n const onAddGroup = () => {\n const title = unref(createGroupTitle)\n if (!title) {\n message.error('创建分组名不能空')\n return\n }\n if (!unref(customGroupTitleSet).has(title)) {\n unref(customGroupList).push({\n title,\n data: []\n })\n isDataChange = true\n } else {\n message.error('分组名已存在,请重新命名')\n }\n }\n const onDeleteGroup = (index: number) => {\n unref(customGroupList).splice(index, 1)\n isDataChange = true\n }\n const selectGroupIndex = ref<number | null>(null)\n const onMoveInGroup = () => {\n if (unref(selectCount) === 0) {\n message.error('当前移入分组已选个数为0')\n return\n }\n const index = unref(selectGroupIndex)\n if (index == null) {\n message.error('请选择移入分组')\n return\n }\n if (!unref(customGroupList)[index]) {\n message.error('移入分组不存在,请重新选择')\n return\n }\n const selectList: { label: string; checked: boolean }[] = []\n const len = unref(customGroupList).length\n for (let i = 0; i < len; i++) {\n const customGroup = unref(customGroupList)[i]\n unref(customGroupList)[i].data = customGroup.data.filter((item) => {\n if (item.checked) {\n selectList.push({\n ...item,\n checked: false\n })\n }\n return !item.checked\n })\n }\n unref(customGroupList)[index].data = [\n ...selectList,\n ...unref(customGroupList)[index].data\n ]\n isDataChange = true\n }\n const onEditTitle = (index: number) => {\n unref(customGroupEditTitleList)[index] = true\n }\n const onFinishEditTitle = (index: number) => {\n unref(customGroupEditTitleList)[index] = false\n }\n const onTitleChange = (event: Event, index: number) => {\n const value = (event.target as any).value\n if (unref(customGroupTitleSet).has(value)) {\n message.error('组名不能相同,请修改')\n }\n unref(customGroupList)[index].title = value\n isDataChange = true\n }\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const source = computed(() => unref(graphicConfig).source)\n const dataViewId = computed(() => unref(graphicConfig).dataViewId)\n const useOtherGroup = ref(false)\n const updateCustomGroup = () => {\n const customGroups = unref(customGroupList)\n let otherGroupName = ''\n if (unref(useOtherGroup)) {\n otherGroupName = customGroups[0]?.title\n }\n const len = customGroups?.length\n const groupInfoMap: { [key: string]: any } = {}\n for (let i = 1; i < len; i++) {\n const customGroup = customGroups[i] || {}\n const { title, data } = customGroup as any\n groupInfoMap[title] = data?.map((item) => item.label) || []\n }\n const list = unref(graphicConfig)[props.type]?.slice() || []\n const item = list[props.index]\n // 更新其他组名称\n item.customGroup = {\n groupInfoMap,\n otherGroupName\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const visible = ref(false)\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const onCancel = () => {\n // 隐藏弹窗\n hideModal()\n // 更新数据\n if (isDataChange) updateCustomGroup()\n isDataChange = false\n }\n const onUseOtherGroup = () => {\n isDataChange = true\n }\n const allLabelSet = new Set()\n const handleInitData = async () => {\n const customGroup = props.item.customGroup || {}\n const otherGroupName = customGroup.otherGroupName\n const groupInfoMap = customGroup.groupInfoMap\n if (otherGroupName === '' || otherGroupName == null) {\n useOtherGroup.value = false\n }\n unref(customGroupList)[0] = {\n title: otherGroupName || '未分组',\n data: []\n }\n let i = 1\n for (const key in groupInfoMap) {\n if (Object.prototype.hasOwnProperty.call(groupInfoMap, key)) {\n const values = groupInfoMap[key] as string[]\n const data = values.map((item) => {\n allLabelSet.add(item)\n return {\n label: item,\n checked: false\n }\n })\n // 其他项\n unref(customGroupList)[i] = {\n title: key as string,\n data\n }\n i++\n }\n }\n await handleCustomGroupList() // 处理 customGroupList\n }\n const handleCustomGroupList = async () => {\n try {\n const res = await request.post(\n `${INDICATOR_URL}/diagram/groupvalue`,\n {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: props.item.name,\n hrpIndexTypeGuid: props.item.id,\n pageId: PAGE_ID,\n pageFlag: true\n },\n {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n }\n )\n const { success, data = [] } = res.data\n if (success) {\n // 截取200\n const rows: { label: string; checked: boolean }[] = []\n data?.slice(0, 200)?.forEach((item: string) => {\n if (!allLabelSet.has(item)) {\n rows.push({\n label: item,\n checked: false\n })\n }\n })\n unref(customGroupList)[0].data = rows\n }\n } catch (e) {\n console.error(e)\n }\n }\n\n watch(\n visible,\n (visible) => {\n if (visible) {\n handleInitData()\n }\n },\n {\n flush: 'post'\n }\n )\n\n expose({\n showModal\n })\n return {\n visible,\n title,\n activeKey,\n customGroupList,\n onCancel,\n useOtherGroup,\n selectCount,\n createGroupTitle,\n onAddGroup,\n onDeleteGroup,\n onMoveInGroup,\n selectGroupIndex,\n onEditTitle,\n onTitleChange,\n onFinishEditTitle,\n onUseOtherGroup,\n customGroupEditTitleList\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.move-and-create {\n display: flex;\n justify-content: space-between;\n margin-bottom: 15px;\n}\n\n.create-group {\n display: flex;\n align-items: center;\n font-size: 15px;\n}\n\n.create-group-name {\n width: 140px;\n margin-left: 10px;\n}\n\n.custom-group-content {\n overflow-y: auto;\n}\n\n.tag {\n margin-right: 10px;\n}\n\n.edit-title-input {\n width: 150px;\n}\n\n.extra {\n width: 90px;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n}\n\n.custom-group {\n margin: 5px;\n padding: 3px 5px;\n}\n\n.text {\n font-size: 14px;\n}\n\n.select-tip {\n margin-right: 10px;\n font-size: 15px;\n}\n\n.select-count {\n color: red;\n margin: 0 3px;\n}\n\n.select-group {\n margin-right: 15px;\n width: 140px;\n}\n\n.cancel-button {\n margin-right: 20px;\n}\n\n.footer {\n display: flex;\n}\n</style>\n\n<style lang=\"less\">\n.custom-group-content {\n .ant-collapse > .ant-collapse-item > .ant-collapse-header {\n padding: 12px 0;\n }\n}\n</style>\n","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_quarterOfYear=n()}(this,(function(){\"use strict\";var t=\"month\",n=\"quarter\";return function(e,i){var r=i.prototype;r.quarter=function(t){return this.$utils().u(t)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(t-1))};var s=r.add;r.add=function(e,i){return e=Number(e),this.$utils().p(i)===n?this.add(3*e,t):s.bind(this)(e,i)};var u=r.startOf;r.startOf=function(e,i){var r=this.$utils(),s=!!r.u(i)||i;if(r.p(e)===n){var o=this.quarter()-1;return s?this.month(3*o).startOf(t).startOf(\"day\"):this.month(3*o+2).endOf(t).endOf(\"day\")}return u.bind(this)(e,i)}}}));","<template>\n <div class=\"condition\">\n <a-select\n class=\"field-name\"\n :value=\"condition.fieldName\"\n :options=\"fieldOptions\"\n :field-names=\"{ value: 'name' }\"\n @change=\"onFieldChange\"\n >\n </a-select>\n <div class=\"rule\">\n <a-dropdown class=\"dropdown\" v-if=\"isDateType\" :trigger=\"['click']\">\n <template #overlay>\n <a-menu @click=\"handleMenuClick\">\n <a-sub-menu\n v-for=\"item in ruleOptions\"\n :key=\"item.value\">\n <template #title>\n <span :style=\"condition.rule === item.value ? 'color: #1890FF;' : ''\">{{ item.label }}</span>\n </template>\n <a-sub-menu\n v-for=\"mr in menuRule\"\n :key=\"mr.value\"\n :disabled=\"mr.value === 'component' && !controlList?.length\">\n <template #title>\n <span :style=\"condition.rule === item.value && condition.dataType === mr.value ? 'color: #1890FF;' : ''\">\n {{ mr.label }}\n </span>\n </template>\n <a-menu-item\n v-for=\"fl in formatList\"\n :key=\"fl.value\">\n <span :style=\"condition.rule === item.value && condition.dataType === mr.value && condition.dateFormat === fl.value ? 'color: #1890FF;' : ''\">\n {{ fl.label }}\n </span>\n </a-menu-item>\n </a-sub-menu>\n </a-sub-menu>\n </a-menu>\n </template>\n <a-button>\n {{ dateBtnLabel }}\n <DownOutlined :style=\"downIconStyle\"/>\n </a-button>\n </a-dropdown>\n <a-select\n v-else\n style=\"width: 100%;\"\n :value=\"condition.rule\"\n :options=\"ruleOptions\"\n @change=\"onRuleChange\"\n >\n </a-select>\n </div>\n <div class=\"field-value\" v-if=\"isDateType\" style=\"display: flex;align-items: center;\">\n <a-date-picker\n v-if=\"condition.dataType === 'time'\"\n style=\"width: calc(100% - 35px);margin-right: 10px;\"\n v-model:value=\"condition.fieldValue\"\n :format=\"condition.dateFormat\"\n />\n <a-select\n v-else-if=\"typeof condition.fieldValue === 'string'\"\n style=\"width: calc(100% - 35px);margin-right: 10px;\"\n v-model:value=\"condition.fieldValue\"\n :fieldNames=\"{\n label: 'keyName',\n value: 'keyName'\n }\"\n :options=\"controlList\"\n >\n </a-select>\n <a-popover v-model:visible=\"popoverVisible\" trigger=\"click\" placement=\"bottomRight\">\n <template #content>\n <div class=\"popover-content-wrap\">\n <a-tabs :defaultActiveKey=\"condition.activeKey\" @change=\"changeTabInitDate\">\n <a-tab-pane v-for=\"(tabItem, tabIndex) in tabDateList\" :key=\"tabIndex\" :tab=\"tabItem.label\">\n <div class=\"tabFilterRadio\">\n <a-radio-group v-model:value=\"tabItem.radioValue\" @change=\"changeRadioValue($event,tabItem)\">\n <div v-if=\"showTime\">相对当前时间:{{tabItem.value}}</div>\n <div v-else>相对当前时间:{{getFieldValue(tabIndex)}}</div>\n <a-radio :style=\"dateRadioStyle\" value=\"1\">\n <a-input-number v-model:value=\"tabItem.beforeNum\" :min=\"0\" @blur=\"blurCompare($event, tabItem,'-','1')\" />\n <span style=\"margin-left: 10px;\">{{tabItem.beforeLabel}}</span>\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"2\">\n <a-input-number v-model:value=\"tabItem.afterNum\" :min=\"0\" @blur=\"blurCompare($event, tabItem,'+','2')\" />\n <span style=\"margin-left: 10px;\">{{tabItem.afterLabel}}</span>\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"3\" v-if=\"tabItem.beforeText\">\n {{tabItem.beforeText}}\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"4\" v-if=\"tabItem.afterText\">\n {{tabItem.afterText}}\n </a-radio>\n </a-radio-group>\n <div style=\"position: absolute;bottom: 10px;\">\n <a-button style=\"margin-right:12px;\" @click=\"popoverVisible = false\">取消</a-button>\n <a-button @click=\"okDatePickConfig(tabItem,tabIndex)\">确定</a-button>\n </div>\n </div>\n </a-tab-pane>\n </a-tabs>\n </div>\n </template>\n <div class=\"calendar-wrap\" @click=\"popoverVisible = true;\">\n <appstore-add-outlined />\n </div>\n </a-popover>\n </div>\n <a-select\n class=\"field-value\"\n v-else-if=\"['IN', 'NOT_IN'].includes(condition.rule || '')\"\n :value=\"fieldValues\"\n mode=\"multiple\"\n :options=\"valueOptions\"\n @change=\"onFieldValueSelectChange\"\n >\n </a-select>\n <a-input\n v-else\n class=\"field-value\"\n v-model:value=\"condition.fieldValue\"\n />\n <close-outlined class=\"delete-icon\" @click=\"onDelete\" />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, unref, ref, watch, onMounted } from 'vue'\nimport { CloseOutlined, DownOutlined, AppstoreAddOutlined } from '@ant-design/icons-vue'\nimport {\n Select as ASelect,\n Input as AInput,\n DatePicker as ADatePicker,\n Button as AButton,\n Dropdown as ADropdown,\n Menu as AMenu,\n MenuItem as AMenuItem,\n SubMenu as ASubMenu,\n Popover as APopover,\n Tabs as ATabs,\n TabPane as ATabPane,\n RadioGroup as ARadioGroup,\n Radio as ARadio,\n InputNumber as AInputNumber\n} from 'ant-design-vue'\nimport 'ant-design-vue/es/popover/style'\nimport 'ant-design-vue/es/dropdown/style'\nimport { REQUEST, INDICATOR_TOKEN, INDICATOR_URL, DATA_LIST, GRAPHIC_CONFIG, CHANGE_CONDITION } from '@/utils/constant'\nimport dayjs, { Dayjs } from 'dayjs'\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear'\nimport { cloneDeep } from 'lodash-es'\ndayjs.extend(quarterOfYear)\nexport default defineComponent({\n name: 'Condition',\n components: {\n CloseOutlined,\n DownOutlined,\n AppstoreAddOutlined,\n ASelect,\n AInput,\n ADatePicker,\n AButton,\n ADropdown,\n AMenu,\n AMenuItem,\n ASubMenu,\n APopover,\n ATabs,\n ATabPane,\n ARadioGroup,\n ARadio,\n AInputNumber\n },\n props: {\n data: {\n type: Object,\n default: () => ({})\n },\n level: {\n type: Number,\n default: 0\n },\n index: {\n type: Number,\n default: 0\n },\n type: {\n type: String,\n default: ''\n }\n },\n setup (props) {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const controlList = computed(() => unref(graphicConfig)?.controlList)\n const dataViewId = computed(() => unref(graphicConfig)?.dataViewId)\n const source = computed(() => unref(graphicConfig)?.source)\n // const isDataViewMode = computed(() => unref(source) === 'SQL_VIEW')\n const showTime = ref(false)\n const dateRadioStyle = {\n display: 'block',\n height: '34px',\n lineHeight: '34px',\n marginTop: '3px'\n }\n const formatList = [\n { label: '年', value: 'YYYY' },\n { label: '年月', value: 'YYYY-MM' },\n { label: '年月日', value: 'YYYY-MM-DD' },\n { label: '年月日时', value: 'YYYY-MM-DD HH' },\n { label: '年月日时分', value: 'YYYY-MM-DD HH:mm' },\n { label: '年月日时分秒', value: 'YYYY-MM-DD HH:mm:ss' }\n ]\n const tabDateList = ref([\n { key: 0, value: '', label: '年', type: 'years', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '年前', afterLabel: '年后', beforeText: '年初', afterText: '年末' },\n { key: 1, value: '', label: '季度', type: 'quarters', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '个季度前', afterLabel: '个季度后', beforeText: '季度初', afterText: '季度末' },\n { key: 2, value: '', label: '月', type: 'months', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '个月前', afterLabel: '个月后', beforeText: '月初', afterText: '月末' },\n { key: 3, value: '', label: '周', type: 'weeks', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '周前', afterLabel: '周后', beforeText: '', afterText: '' },\n { key: 4, value: '', label: '天', type: 'days', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '天前', afterLabel: '天后', beforeText: '今天', afterText: '' }\n ])\n const compareList = [\n { label: '年份', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '季的季度', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '月的月份', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '周的周', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '天的日期', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' }\n ]\n const menuRule = [\n { label: '时间值', value: 'time' },\n { label: '过滤组件值', value: 'component' }\n ]\n const { getDataList } = inject(DATA_LIST, {\n getDataList: () => ([] as { key:string } [])\n })\n interface Condition {\n fieldName: undefined | string\n fieldType: undefined | string\n rule: undefined | string\n id: undefined | string\n fieldValue: undefined | string | Dayjs\n label: string\n targetSource: string\n typeGuid: string\n dateFormat?: string\n dataType?: string\n activeKey?: number\n radioValue?: string\n calcWays?: any\n dateCalcTypes?: any\n }\n const condition = ref<Condition>({\n fieldName: props.data?.fieldName,\n fieldType: props.data?.fieldType,\n rule: props.data?.rule,\n id: props.data?.id,\n fieldValue: props.data?.fieldType === 'DATE' && props.data?.dataType === 'time' ? dayjs(props.data?.fieldValue) : props.data?.fieldValue,\n label: props.data?.label,\n // 暂时传空\n targetSource: '',\n typeGuid: props.data?.typeGuid\n })\n const popoverVisible = ref(false)\n const isDateType = computed(() => condition.value.fieldType === 'DATE')\n const fieldOptions = computed(() => {\n const type = props.type\n if (['classificationList', 'seriesList', 'indicators'].includes(type)) {\n let options = [] as { key:string } []\n for (const key in unref(graphicConfig)) {\n if (Object.prototype.hasOwnProperty.call(unref(graphicConfig), key) && !['controlList', 'sqlConditions'].includes(key)) {\n const value = unref(graphicConfig)[key]\n if (Array.isArray(value)) {\n options = options.concat(value)\n }\n }\n }\n return options.map((v: any) => {\n return {\n ...v,\n label: v.title || v.label\n }\n })\n } else if (['leftAxisList', 'rightAxisList', 'queryColumnList'].includes(type)) {\n return unref(getDataList())\n }\n return []\n })\n const { updateCondition, deleteCondition } = inject(CHANGE_CONDITION, {\n // eslint-disable-next-line no-void\n updateCondition: (_condition: { [key: string]: any}, _level:number, _index: number) => void 0,\n // eslint-disable-next-line no-void\n deleteCondition: (_level:number, _index: number) => void 0\n })\n const onDelete = () => {\n deleteCondition(props.level, props.index)\n }\n watch(condition, (condition) => {\n const result = cloneDeep(condition)\n if (condition.fieldType === 'DATE' && condition.dataType !== 'component' && condition.fieldValue) {\n result.fieldValue = (condition.fieldValue as Dayjs).format(condition.dateFormat)\n }\n updateCondition(result, props.level, props.index)\n }, {\n deep: true\n })\n\n const onFieldChange = (_value: string, option: { [key:string]:any }) => {\n const { name, genericType, id, label, typeGuid } = option\n condition.value = {\n id,\n fieldName: name,\n fieldType: genericType,\n label,\n // 重置规则\n rule: undefined,\n fieldValue: genericType === 'DATE' ? null : undefined,\n targetSource: '',\n typeGuid\n }\n }\n const ruleOptions = computed(() => {\n const type = unref(condition).fieldType\n if (type === 'TEXT') {\n return [\n { label: '属于', value: 'IN' },\n { label: '不属于', value: 'NOT_IN' },\n { label: '包含', value: 'LIKE' },\n { label: '不包含', value: 'NOT_LIKE' },\n { label: '开头是', value: 'LIKE%' },\n { label: '结尾是', value: '%LIKE' },\n { label: '前N个', value: 'TOP' },\n { label: '后N个', value: 'BOTTOM' }\n ]\n } else if (type === 'NUMBER') {\n return [\n { label: '小于', value: 'LESS' },\n { label: '小于等于', value: 'LESS_EQUAL' },\n { label: '大于', value: 'GREATER' },\n { label: '大于等于', value: 'GREATER_EQUAL' },\n { label: '等于', value: 'EQUAL' },\n { label: '不等于', value: 'NOT_EQUAL' },\n { label: '前N个', value: 'TOP' },\n { label: '后N个', value: 'BOTTOM' }\n ]\n } else if (type === 'DATE') {\n return [\n { label: '属于', value: 'IN' },\n { label: '不属于', value: 'NOT_IN' },\n { label: '小于', value: 'LESS' },\n { label: '小于等于', value: 'LESS_EQUAL' },\n { label: '大于', value: 'GREATER' },\n { label: '大于等于', value: 'GREATER_EQUAL' },\n { label: '等于', value: 'EQUAL' },\n { label: '不等于', value: 'NOT_EQUAL' }\n ]\n } else {\n return []\n }\n })\n const dateBtnLabel = computed(() => {\n let result = ''\n const obj = unref(ruleOptions).find(item => item.value === unref(condition).rule)\n if (obj) {\n result = obj.label\n }\n return result\n })\n const downIconStyle = computed(() => {\n let style: any = {\n fontSize: '12px'\n }\n if (!unref(dateBtnLabel)) {\n style = {\n ...style,\n position: 'absolute',\n right: '11px',\n top: '9px'\n }\n }\n return style\n })\n const valueOptions = ref< { [key:string]: any } []>([])\n const handleValueOptions = async () => {\n if (unref(valueOptions).length > 0) return\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/groupvalue`, {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: unref(condition).fieldName,\n hrpIndexTypeGuid: unref(condition).typeGuid,\n pageId: PAGE_ID,\n pageFlag: true\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n valueOptions.value = data?.slice(0, 200)?.map((item: string) => ({ label: item, value: item }))\n }\n } catch (e) {\n console.error(e)\n }\n }\n const onRuleChange = (value: string) => {\n unref(condition).rule = value\n unref(condition).fieldValue = unref(condition).fieldType === 'DATE' ? null : undefined\n if (['IN', 'NOT_IN'].includes(value)) {\n handleValueOptions()\n }\n }\n const fieldValues = ref<string []>()\n const onFieldValueSelectChange = (values: string []) => {\n fieldValues.value = values\n unref(condition).fieldValue = values?.join(',') || ''\n }\n\n const handleMenuClick = (data: any) => {\n const { keyPath } = data\n unref(condition).rule = keyPath[0]\n unref(condition).dataType = keyPath[1]\n unref(condition).dateFormat = keyPath[2]\n unref(condition).fieldValue = ''\n }\n\n onMounted(() => {\n if (unref(condition).fieldType === 'DATE') {\n console.log(props.data)\n unref(condition).dateFormat = props.data?.dateFormat\n unref(condition).dataType = props.data?.dataType || ''\n unref(condition).activeKey = props.data?.activeKey\n unref(condition).radioValue = props.data?.radioValue || ''\n unref(condition).calcWays = props.data?.calcWays || []\n unref(condition).dateCalcTypes = props.data?.dateCalcTypes || []\n const tabItem = unref(tabDateList).find(item => item.key === props.data?.activeKey)\n if (tabItem) {\n setTabItemData(tabItem, props.data)\n }\n } else {\n fieldValues.value = props.data?.fieldValue?.split(',') || []\n }\n const { fieldType, fieldName, rule } = condition.value\n if (fieldType !== 'DATE' && fieldName && rule && ['IN', 'NOT_IN'].includes(rule)) {\n handleValueOptions()\n }\n })\n\n // 时间相对配置Tab切换\n const changeTabInitDate = (activeKey: any) => {\n if (unref(condition).activeKey === activeKey) {\n unref(tabDateList)[activeKey].radioValue = unref(condition).radioValue\n if (unref(tabDateList)[unref(condition).activeKey]) {\n unref(tabDateList)[unref(condition).activeKey].radioValue = unref(condition).radioValue\n if (unref(condition).radioValue === '1') {\n unref(tabDateList)[activeKey].beforeNum = unref(condition).calcWays[0]\n } else if (unref(condition).radioValue === '2') {\n unref(tabDateList)[activeKey].afterNum = unref(condition).calcWays[0]\n }\n }\n return\n }\n unref(tabDateList).forEach(row => {\n row.beforeNum = 0\n row.afterNum = 0\n row.radioValue = '1'\n row.value = ''\n })\n }\n\n // 时间相对配置选中值改变\n const changeRadioValue = (e: any, tabItem: any) => {\n showTime.value = true\n const value = e.target.value\n const type = tabItem.type\n const format = unref(condition).dateFormat\n const beforeNum = Math.abs(tabItem.beforeNum)\n const afterNum = tabItem.afterNum\n tabItem.value = getDateValue(value, type, format, beforeNum, afterNum)\n }\n\n const getFieldValue = (tabIndex: number) => {\n const activeKey = unref(condition).activeKey\n if (tabIndex !== activeKey) {\n return\n }\n let type = ''\n if (activeKey === 0) {\n type = 'years'\n } else if (activeKey === 1) {\n type = 'quarters'\n } else if (activeKey === 2) {\n type = 'months'\n } else if (activeKey === 3) {\n type = 'weeks'\n } else if (activeKey === 4) {\n type = 'days'\n }\n const format = unref(condition).dateFormat\n const value = unref(condition).radioValue\n let beforeNum = 0\n let afterNum = 0\n if (value === '1') {\n beforeNum = Math.abs(unref(condition).calcWays[0])\n } else if (value === '2') {\n afterNum = unref(condition).calcWays[0]\n }\n return getDateValue(value, type, format, beforeNum, afterNum)\n }\n\n // 时间相对配置中的比较失焦\n const blurCompare = (e: any, tabItem: any, flag: any, key: any) => {\n showTime.value = true\n if (tabItem.radioValue === key) {\n const value = e.target.value\n if (flag === '+') {\n tabItem.value = dayjs().add(value, tabItem.type).format(unref(condition).dateFormat)\n } else {\n tabItem.value = dayjs().subtract(value, tabItem.type).format(unref(condition).dateFormat)\n }\n }\n }\n\n // 保存时间相对配置\n const okDatePickConfig = (tabItem: any, tabIndex: any) => {\n if (unref(condition).fieldType !== 'DATE' || unref(condition).dataType !== 'component') {\n condition.value.fieldValue = dayjs(tabItem.value, unref(condition).dateFormat)\n }\n if (!unref(condition).calcWays) {\n unref(condition).calcWays = []\n }\n // condition.value.absoluteBool = true\n unref(condition).activeKey = tabIndex\n unref(condition).radioValue = tabItem.radioValue\n if (tabItem.radioValue === '1') {\n unref(condition).calcWays[0] = '-' + tabItem.beforeNum\n } else if (tabItem.radioValue === '2') {\n unref(condition).calcWays[0] = tabItem.afterNum\n } else if (tabItem.radioValue === '3') {\n if (tabIndex === 4) {\n unref(condition).calcWays[0] = '0'// 今天\n } else {\n unref(condition).calcWays[0] = 'BEGIN'\n }\n } else if (tabItem.radioValue === '4') {\n unref(condition).calcWays[0] = 'END'\n }\n if (tabIndex === 0) {\n unref(condition).dateCalcTypes = ['YEAR']\n } else if (tabIndex === 1) {\n unref(condition).dateCalcTypes = ['QUARTER']\n } else if (tabIndex === 2) {\n unref(condition).dateCalcTypes = ['MONTH']\n } else if (tabIndex === 3) {\n unref(condition).dateCalcTypes = ['WEEK']\n } else if (tabIndex === 4) {\n unref(condition).dateCalcTypes = ['DAY']\n }\n popoverVisible.value = false\n }\n\n function setTabItemData (tabItem: any, source: any) {\n const { radioValue = '', calcWays = [] } = source\n tabItem.radioValue = radioValue\n if (calcWays?.length) {\n if (radioValue === '1') {\n tabItem.beforeNum = Math.abs(calcWays[0])\n } else if (radioValue === '2') {\n tabItem.afterNum = calcWays[0]\n }\n }\n }\n\n // 相对时间设置\n function getDateValue (value: any, type: any, format: any, beforeNum: any, afterNum: any) {\n if (value === '1') {\n return dayjs().subtract(beforeNum, type).format(format)\n } else if (value === '2') {\n return dayjs().add(afterNum, type).format(format)\n } else if (value === '3') {\n if (type === 'years') {\n return dayjs().startOf('year').format(format)\n } else if (type === 'quarters') {\n return dayjs().startOf('quarter').format(format)\n } else if (type === 'months') {\n return dayjs().startOf('month').format(format)\n } else if (type === 'days') {\n return dayjs().format(format)\n }\n } else if (value === '4') {\n if (type === 'years') {\n return dayjs().endOf('year').format(format)\n } else if (type === 'quarters') {\n return dayjs().endOf('quarter').format(format)\n } else if (type === 'months') {\n return dayjs().endOf('month').format(format)\n }\n }\n return ''\n }\n return {\n fieldOptions,\n ruleOptions,\n onFieldChange,\n condition,\n valueOptions,\n onRuleChange,\n onFieldValueSelectChange,\n fieldValues,\n onDelete,\n isDateType,\n formatList,\n tabDateList,\n compareList,\n menuRule,\n dateBtnLabel,\n downIconStyle,\n popoverVisible,\n dateRadioStyle,\n showTime,\n controlList,\n handleMenuClick,\n changeTabInitDate,\n changeRadioValue,\n getFieldValue,\n blurCompare,\n okDatePickConfig\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.condition {\n padding: 8px;\n border: 1px solid #e8e8e8;\n width: 100%;\n display: flex;\n align-items: center;\n}\n\n.field-name {\n width: 180px;\n margin-right: 20px;\n}\n\n.field-value {\n flex: 1;\n margin-left: 20px;\n margin-right: 20px;\n}\n\n.rule {\n width: 180px;\n}\n\n.delete-icon {\n margin-right: 10px;\n}\n\n.dropdown {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n width: 100%;\n padding-left: 11px;\n padding-right: 11px;\n}\n\n.calendar-wrap {\n width: 25px;\n border: 1px solid #d9d9d9;\n border-radius: 50%;\n height: 25px;\n text-align: center;\n cursor: pointer;\n &:hover {\n border-color: rgb(24, 144, 255);\n }\n}\n\n.popover-content-wrap {\n width: 400px;\n height: 300px;\n padding: 12px;\n .ant-tabs{\n height: 100%;\n .tabFilterRadio{\n display: flex;\n justify-content: center;\n height: 100%;\n }\n }\n}\n</style>\n<style lang=\"less\">\n.ant-dropdown-menu-title-content {\n white-space: nowrap;\n}\n</style>\n","<template>\n <div class=\"condition\">\n <a-select\n class=\"field-name\"\n :value=\"condition.fieldName\"\n :options=\"fieldOptions\"\n :field-names=\"{ value: 'name' }\"\n @change=\"onFieldChange\"\n >\n </a-select>\n <div class=\"rule\">\n <a-dropdown class=\"dropdown\" v-if=\"isDateType\" :trigger=\"['click']\">\n <template #overlay>\n <a-menu @click=\"handleMenuClick\">\n <a-sub-menu\n v-for=\"item in ruleOptions\"\n :key=\"item.value\">\n <template #title>\n <span :style=\"condition.rule === item.value ? 'color: #1890FF;' : ''\">{{ item.label }}</span>\n </template>\n <a-sub-menu\n v-for=\"mr in menuRule\"\n :key=\"mr.value\"\n :disabled=\"mr.value === 'component' && !controlList?.length\">\n <template #title>\n <span :style=\"condition.rule === item.value && condition.dataType === mr.value ? 'color: #1890FF;' : ''\">\n {{ mr.label }}\n </span>\n </template>\n <a-menu-item\n v-for=\"fl in formatList\"\n :key=\"fl.value\">\n <span :style=\"condition.rule === item.value && condition.dataType === mr.value && condition.dateFormat === fl.value ? 'color: #1890FF;' : ''\">\n {{ fl.label }}\n </span>\n </a-menu-item>\n </a-sub-menu>\n </a-sub-menu>\n </a-menu>\n </template>\n <a-button>\n {{ dateBtnLabel }}\n <DownOutlined :style=\"downIconStyle\"/>\n </a-button>\n </a-dropdown>\n <a-select\n v-else\n style=\"width: 100%;\"\n :value=\"condition.rule\"\n :options=\"ruleOptions\"\n @change=\"onRuleChange\"\n >\n </a-select>\n </div>\n <div class=\"field-value\" v-if=\"isDateType\" style=\"display: flex;align-items: center;\">\n <a-date-picker\n v-if=\"condition.dataType === 'time'\"\n style=\"width: calc(100% - 35px);margin-right: 10px;\"\n v-model:value=\"condition.fieldValue\"\n :format=\"condition.dateFormat\"\n />\n <a-select\n v-else-if=\"typeof condition.fieldValue === 'string'\"\n style=\"width: calc(100% - 35px);margin-right: 10px;\"\n v-model:value=\"condition.fieldValue\"\n :fieldNames=\"{\n label: 'keyName',\n value: 'keyName'\n }\"\n :options=\"controlList\"\n >\n </a-select>\n <a-popover v-model:visible=\"popoverVisible\" trigger=\"click\" placement=\"bottomRight\">\n <template #content>\n <div class=\"popover-content-wrap\">\n <a-tabs :defaultActiveKey=\"condition.activeKey\" @change=\"changeTabInitDate\">\n <a-tab-pane v-for=\"(tabItem, tabIndex) in tabDateList\" :key=\"tabIndex\" :tab=\"tabItem.label\">\n <div class=\"tabFilterRadio\">\n <a-radio-group v-model:value=\"tabItem.radioValue\" @change=\"changeRadioValue($event,tabItem)\">\n <div v-if=\"showTime\">相对当前时间:{{tabItem.value}}</div>\n <div v-else>相对当前时间:{{getFieldValue(tabIndex)}}</div>\n <a-radio :style=\"dateRadioStyle\" value=\"1\">\n <a-input-number v-model:value=\"tabItem.beforeNum\" :min=\"0\" @blur=\"blurCompare($event, tabItem,'-','1')\" />\n <span style=\"margin-left: 10px;\">{{tabItem.beforeLabel}}</span>\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"2\">\n <a-input-number v-model:value=\"tabItem.afterNum\" :min=\"0\" @blur=\"blurCompare($event, tabItem,'+','2')\" />\n <span style=\"margin-left: 10px;\">{{tabItem.afterLabel}}</span>\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"3\" v-if=\"tabItem.beforeText\">\n {{tabItem.beforeText}}\n </a-radio>\n <a-radio :style=\"dateRadioStyle\" value=\"4\" v-if=\"tabItem.afterText\">\n {{tabItem.afterText}}\n </a-radio>\n </a-radio-group>\n <div style=\"position: absolute;bottom: 10px;\">\n <a-button style=\"margin-right:12px;\" @click=\"popoverVisible = false\">取消</a-button>\n <a-button @click=\"okDatePickConfig(tabItem,tabIndex)\">确定</a-button>\n </div>\n </div>\n </a-tab-pane>\n </a-tabs>\n </div>\n </template>\n <div class=\"calendar-wrap\" @click=\"popoverVisible = true;\">\n <appstore-add-outlined />\n </div>\n </a-popover>\n </div>\n <a-select\n class=\"field-value\"\n v-else-if=\"['IN', 'NOT_IN'].includes(condition.rule || '')\"\n :value=\"fieldValues\"\n mode=\"multiple\"\n :options=\"valueOptions\"\n @change=\"onFieldValueSelectChange\"\n >\n </a-select>\n <a-input\n v-else\n class=\"field-value\"\n v-model:value=\"condition.fieldValue\"\n />\n <close-outlined class=\"delete-icon\" @click=\"onDelete\" />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject, unref, ref, watch, onMounted } from 'vue'\nimport { CloseOutlined, DownOutlined, AppstoreAddOutlined } from '@ant-design/icons-vue'\nimport {\n Select as ASelect,\n Input as AInput,\n DatePicker as ADatePicker,\n Button as AButton,\n Dropdown as ADropdown,\n Menu as AMenu,\n MenuItem as AMenuItem,\n SubMenu as ASubMenu,\n Popover as APopover,\n Tabs as ATabs,\n TabPane as ATabPane,\n RadioGroup as ARadioGroup,\n Radio as ARadio,\n InputNumber as AInputNumber\n} from 'ant-design-vue'\nimport 'ant-design-vue/es/popover/style'\nimport 'ant-design-vue/es/dropdown/style'\nimport { REQUEST, INDICATOR_TOKEN, INDICATOR_URL, DATA_LIST, GRAPHIC_CONFIG, CHANGE_CONDITION } from '@/utils/constant'\nimport dayjs, { Dayjs } from 'dayjs'\nimport quarterOfYear from 'dayjs/plugin/quarterOfYear'\nimport { cloneDeep } from 'lodash-es'\ndayjs.extend(quarterOfYear)\nexport default defineComponent({\n name: 'Condition',\n components: {\n CloseOutlined,\n DownOutlined,\n AppstoreAddOutlined,\n ASelect,\n AInput,\n ADatePicker,\n AButton,\n ADropdown,\n AMenu,\n AMenuItem,\n ASubMenu,\n APopover,\n ATabs,\n ATabPane,\n ARadioGroup,\n ARadio,\n AInputNumber\n },\n props: {\n data: {\n type: Object,\n default: () => ({})\n },\n level: {\n type: Number,\n default: 0\n },\n index: {\n type: Number,\n default: 0\n },\n type: {\n type: String,\n default: ''\n }\n },\n setup (props) {\n // @ts-ignore\n const PAGE_ID = window?.config?.pageId\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const controlList = computed(() => unref(graphicConfig)?.controlList)\n const dataViewId = computed(() => unref(graphicConfig)?.dataViewId)\n const source = computed(() => unref(graphicConfig)?.source)\n // const isDataViewMode = computed(() => unref(source) === 'SQL_VIEW')\n const showTime = ref(false)\n const dateRadioStyle = {\n display: 'block',\n height: '34px',\n lineHeight: '34px',\n marginTop: '3px'\n }\n const formatList = [\n { label: '年', value: 'YYYY' },\n { label: '年月', value: 'YYYY-MM' },\n { label: '年月日', value: 'YYYY-MM-DD' },\n { label: '年月日时', value: 'YYYY-MM-DD HH' },\n { label: '年月日时分', value: 'YYYY-MM-DD HH:mm' },\n { label: '年月日时分秒', value: 'YYYY-MM-DD HH:mm:ss' }\n ]\n const tabDateList = ref([\n { key: 0, value: '', label: '年', type: 'years', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '年前', afterLabel: '年后', beforeText: '年初', afterText: '年末' },\n { key: 1, value: '', label: '季度', type: 'quarters', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '个季度前', afterLabel: '个季度后', beforeText: '季度初', afterText: '季度末' },\n { key: 2, value: '', label: '月', type: 'months', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '个月前', afterLabel: '个月后', beforeText: '月初', afterText: '月末' },\n { key: 3, value: '', label: '周', type: 'weeks', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '周前', afterLabel: '周后', beforeText: '', afterText: '' },\n { key: 4, value: '', label: '天', type: 'days', radioValue: '1', beforeNum: 0, afterNum: 0, beforeLabel: '天前', afterLabel: '天后', beforeText: '今天', afterText: '' }\n ])\n const compareList = [\n { label: '年份', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '季的季度', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '月的月份', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '周的周', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' },\n { label: '天的日期', text: '年', yearNum: 0, yearRule: 'before', otherNum: 0, otherRule: 'before' }\n ]\n const menuRule = [\n { label: '时间值', value: 'time' },\n { label: '过滤组件值', value: 'component' }\n ]\n const { getDataList } = inject(DATA_LIST, {\n getDataList: () => ([] as { key:string } [])\n })\n interface Condition {\n fieldName: undefined | string\n fieldType: undefined | string\n rule: undefined | string\n id: undefined | string\n fieldValue: undefined | string | Dayjs\n label: string\n targetSource: string\n typeGuid: string\n dateFormat?: string\n dataType?: string\n activeKey?: number\n radioValue?: string\n calcWays?: any\n dateCalcTypes?: any\n }\n const condition = ref<Condition>({\n fieldName: props.data?.fieldName,\n fieldType: props.data?.fieldType,\n rule: props.data?.rule,\n id: props.data?.id,\n fieldValue: props.data?.fieldType === 'DATE' && props.data?.dataType === 'time' ? dayjs(props.data?.fieldValue) : props.data?.fieldValue,\n label: props.data?.label,\n // 暂时传空\n targetSource: '',\n typeGuid: props.data?.typeGuid\n })\n const popoverVisible = ref(false)\n const isDateType = computed(() => condition.value.fieldType === 'DATE')\n const fieldOptions = computed(() => {\n const type = props.type\n if (['classificationList', 'seriesList', 'indicators'].includes(type)) {\n let options = [] as { key:string } []\n for (const key in unref(graphicConfig)) {\n if (Object.prototype.hasOwnProperty.call(unref(graphicConfig), key) && !['controlList', 'sqlConditions'].includes(key)) {\n const value = unref(graphicConfig)[key]\n if (Array.isArray(value)) {\n options = options.concat(value)\n }\n }\n }\n return options.map((v: any) => {\n return {\n ...v,\n label: v.title || v.label\n }\n })\n } else if (['leftAxisList', 'rightAxisList', 'queryColumnList'].includes(type)) {\n return unref(getDataList())\n }\n return []\n })\n const { updateCondition, deleteCondition } = inject(CHANGE_CONDITION, {\n // eslint-disable-next-line no-void\n updateCondition: (_condition: { [key: string]: any}, _level:number, _index: number) => void 0,\n // eslint-disable-next-line no-void\n deleteCondition: (_level:number, _index: number) => void 0\n })\n const onDelete = () => {\n deleteCondition(props.level, props.index)\n }\n watch(condition, (condition) => {\n const result = cloneDeep(condition)\n if (condition.fieldType === 'DATE' && condition.dataType !== 'component' && condition.fieldValue) {\n result.fieldValue = (condition.fieldValue as Dayjs).format(condition.dateFormat)\n }\n updateCondition(result, props.level, props.index)\n }, {\n deep: true\n })\n\n const onFieldChange = (_value: string, option: { [key:string]:any }) => {\n const { name, genericType, id, label, typeGuid } = option\n condition.value = {\n id,\n fieldName: name,\n fieldType: genericType,\n label,\n // 重置规则\n rule: undefined,\n fieldValue: genericType === 'DATE' ? null : undefined,\n targetSource: '',\n typeGuid\n }\n }\n const ruleOptions = computed(() => {\n const type = unref(condition).fieldType\n if (type === 'TEXT') {\n return [\n { label: '属于', value: 'IN' },\n { label: '不属于', value: 'NOT_IN' },\n { label: '包含', value: 'LIKE' },\n { label: '不包含', value: 'NOT_LIKE' },\n { label: '开头是', value: 'LIKE%' },\n { label: '结尾是', value: '%LIKE' },\n { label: '前N个', value: 'TOP' },\n { label: '后N个', value: 'BOTTOM' }\n ]\n } else if (type === 'NUMBER') {\n return [\n { label: '小于', value: 'LESS' },\n { label: '小于等于', value: 'LESS_EQUAL' },\n { label: '大于', value: 'GREATER' },\n { label: '大于等于', value: 'GREATER_EQUAL' },\n { label: '等于', value: 'EQUAL' },\n { label: '不等于', value: 'NOT_EQUAL' },\n { label: '前N个', value: 'TOP' },\n { label: '后N个', value: 'BOTTOM' }\n ]\n } else if (type === 'DATE') {\n return [\n { label: '属于', value: 'IN' },\n { label: '不属于', value: 'NOT_IN' },\n { label: '小于', value: 'LESS' },\n { label: '小于等于', value: 'LESS_EQUAL' },\n { label: '大于', value: 'GREATER' },\n { label: '大于等于', value: 'GREATER_EQUAL' },\n { label: '等于', value: 'EQUAL' },\n { label: '不等于', value: 'NOT_EQUAL' }\n ]\n } else {\n return []\n }\n })\n const dateBtnLabel = computed(() => {\n let result = ''\n const obj = unref(ruleOptions).find(item => item.value === unref(condition).rule)\n if (obj) {\n result = obj.label\n }\n return result\n })\n const downIconStyle = computed(() => {\n let style: any = {\n fontSize: '12px'\n }\n if (!unref(dateBtnLabel)) {\n style = {\n ...style,\n position: 'absolute',\n right: '11px',\n top: '9px'\n }\n }\n return style\n })\n const valueOptions = ref< { [key:string]: any } []>([])\n const handleValueOptions = async () => {\n if (unref(valueOptions).length > 0) return\n try {\n const res = await request.post(`${INDICATOR_URL}/diagram/groupvalue`, {\n source: unref(source),\n dataViewId: unref(dataViewId),\n groupColumn: unref(condition).fieldName,\n hrpIndexTypeGuid: unref(condition).typeGuid,\n pageId: PAGE_ID,\n pageFlag: true\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n valueOptions.value = data?.slice(0, 200)?.map((item: string) => ({ label: item, value: item }))\n }\n } catch (e) {\n console.error(e)\n }\n }\n const onRuleChange = (value: string) => {\n unref(condition).rule = value\n unref(condition).fieldValue = unref(condition).fieldType === 'DATE' ? null : undefined\n if (['IN', 'NOT_IN'].includes(value)) {\n handleValueOptions()\n }\n }\n const fieldValues = ref<string []>()\n const onFieldValueSelectChange = (values: string []) => {\n fieldValues.value = values\n unref(condition).fieldValue = values?.join(',') || ''\n }\n\n const handleMenuClick = (data: any) => {\n const { keyPath } = data\n unref(condition).rule = keyPath[0]\n unref(condition).dataType = keyPath[1]\n unref(condition).dateFormat = keyPath[2]\n unref(condition).fieldValue = ''\n }\n\n onMounted(() => {\n if (unref(condition).fieldType === 'DATE') {\n console.log(props.data)\n unref(condition).dateFormat = props.data?.dateFormat\n unref(condition).dataType = props.data?.dataType || ''\n unref(condition).activeKey = props.data?.activeKey\n unref(condition).radioValue = props.data?.radioValue || ''\n unref(condition).calcWays = props.data?.calcWays || []\n unref(condition).dateCalcTypes = props.data?.dateCalcTypes || []\n const tabItem = unref(tabDateList).find(item => item.key === props.data?.activeKey)\n if (tabItem) {\n setTabItemData(tabItem, props.data)\n }\n } else {\n fieldValues.value = props.data?.fieldValue?.split(',') || []\n }\n const { fieldType, fieldName, rule } = condition.value\n if (fieldType !== 'DATE' && fieldName && rule && ['IN', 'NOT_IN'].includes(rule)) {\n handleValueOptions()\n }\n })\n\n // 时间相对配置Tab切换\n const changeTabInitDate = (activeKey: any) => {\n if (unref(condition).activeKey === activeKey) {\n unref(tabDateList)[activeKey].radioValue = unref(condition).radioValue\n if (unref(tabDateList)[unref(condition).activeKey]) {\n unref(tabDateList)[unref(condition).activeKey].radioValue = unref(condition).radioValue\n if (unref(condition).radioValue === '1') {\n unref(tabDateList)[activeKey].beforeNum = unref(condition).calcWays[0]\n } else if (unref(condition).radioValue === '2') {\n unref(tabDateList)[activeKey].afterNum = unref(condition).calcWays[0]\n }\n }\n return\n }\n unref(tabDateList).forEach(row => {\n row.beforeNum = 0\n row.afterNum = 0\n row.radioValue = '1'\n row.value = ''\n })\n }\n\n // 时间相对配置选中值改变\n const changeRadioValue = (e: any, tabItem: any) => {\n showTime.value = true\n const value = e.target.value\n const type = tabItem.type\n const format = unref(condition).dateFormat\n const beforeNum = Math.abs(tabItem.beforeNum)\n const afterNum = tabItem.afterNum\n tabItem.value = getDateValue(value, type, format, beforeNum, afterNum)\n }\n\n const getFieldValue = (tabIndex: number) => {\n const activeKey = unref(condition).activeKey\n if (tabIndex !== activeKey) {\n return\n }\n let type = ''\n if (activeKey === 0) {\n type = 'years'\n } else if (activeKey === 1) {\n type = 'quarters'\n } else if (activeKey === 2) {\n type = 'months'\n } else if (activeKey === 3) {\n type = 'weeks'\n } else if (activeKey === 4) {\n type = 'days'\n }\n const format = unref(condition).dateFormat\n const value = unref(condition).radioValue\n let beforeNum = 0\n let afterNum = 0\n if (value === '1') {\n beforeNum = Math.abs(unref(condition).calcWays[0])\n } else if (value === '2') {\n afterNum = unref(condition).calcWays[0]\n }\n return getDateValue(value, type, format, beforeNum, afterNum)\n }\n\n // 时间相对配置中的比较失焦\n const blurCompare = (e: any, tabItem: any, flag: any, key: any) => {\n showTime.value = true\n if (tabItem.radioValue === key) {\n const value = e.target.value\n if (flag === '+') {\n tabItem.value = dayjs().add(value, tabItem.type).format(unref(condition).dateFormat)\n } else {\n tabItem.value = dayjs().subtract(value, tabItem.type).format(unref(condition).dateFormat)\n }\n }\n }\n\n // 保存时间相对配置\n const okDatePickConfig = (tabItem: any, tabIndex: any) => {\n if (unref(condition).fieldType !== 'DATE' || unref(condition).dataType !== 'component') {\n condition.value.fieldValue = dayjs(tabItem.value, unref(condition).dateFormat)\n }\n if (!unref(condition).calcWays) {\n unref(condition).calcWays = []\n }\n // condition.value.absoluteBool = true\n unref(condition).activeKey = tabIndex\n unref(condition).radioValue = tabItem.radioValue\n if (tabItem.radioValue === '1') {\n unref(condition).calcWays[0] = '-' + tabItem.beforeNum\n } else if (tabItem.radioValue === '2') {\n unref(condition).calcWays[0] = tabItem.afterNum\n } else if (tabItem.radioValue === '3') {\n if (tabIndex === 4) {\n unref(condition).calcWays[0] = '0'// 今天\n } else {\n unref(condition).calcWays[0] = 'BEGIN'\n }\n } else if (tabItem.radioValue === '4') {\n unref(condition).calcWays[0] = 'END'\n }\n if (tabIndex === 0) {\n unref(condition).dateCalcTypes = ['YEAR']\n } else if (tabIndex === 1) {\n unref(condition).dateCalcTypes = ['QUARTER']\n } else if (tabIndex === 2) {\n unref(condition).dateCalcTypes = ['MONTH']\n } else if (tabIndex === 3) {\n unref(condition).dateCalcTypes = ['WEEK']\n } else if (tabIndex === 4) {\n unref(condition).dateCalcTypes = ['DAY']\n }\n popoverVisible.value = false\n }\n\n function setTabItemData (tabItem: any, source: any) {\n const { radioValue = '', calcWays = [] } = source\n tabItem.radioValue = radioValue\n if (calcWays?.length) {\n if (radioValue === '1') {\n tabItem.beforeNum = Math.abs(calcWays[0])\n } else if (radioValue === '2') {\n tabItem.afterNum = calcWays[0]\n }\n }\n }\n\n // 相对时间设置\n function getDateValue (value: any, type: any, format: any, beforeNum: any, afterNum: any) {\n if (value === '1') {\n return dayjs().subtract(beforeNum, type).format(format)\n } else if (value === '2') {\n return dayjs().add(afterNum, type).format(format)\n } else if (value === '3') {\n if (type === 'years') {\n return dayjs().startOf('year').format(format)\n } else if (type === 'quarters') {\n return dayjs().startOf('quarter').format(format)\n } else if (type === 'months') {\n return dayjs().startOf('month').format(format)\n } else if (type === 'days') {\n return dayjs().format(format)\n }\n } else if (value === '4') {\n if (type === 'years') {\n return dayjs().endOf('year').format(format)\n } else if (type === 'quarters') {\n return dayjs().endOf('quarter').format(format)\n } else if (type === 'months') {\n return dayjs().endOf('month').format(format)\n }\n }\n return ''\n }\n return {\n fieldOptions,\n ruleOptions,\n onFieldChange,\n condition,\n valueOptions,\n onRuleChange,\n onFieldValueSelectChange,\n fieldValues,\n onDelete,\n isDateType,\n formatList,\n tabDateList,\n compareList,\n menuRule,\n dateBtnLabel,\n downIconStyle,\n popoverVisible,\n dateRadioStyle,\n showTime,\n controlList,\n handleMenuClick,\n changeTabInitDate,\n changeRadioValue,\n getFieldValue,\n blurCompare,\n okDatePickConfig\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.condition {\n padding: 8px;\n border: 1px solid #e8e8e8;\n width: 100%;\n display: flex;\n align-items: center;\n}\n\n.field-name {\n width: 180px;\n margin-right: 20px;\n}\n\n.field-value {\n flex: 1;\n margin-left: 20px;\n margin-right: 20px;\n}\n\n.rule {\n width: 180px;\n}\n\n.delete-icon {\n margin-right: 10px;\n}\n\n.dropdown {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n width: 100%;\n padding-left: 11px;\n padding-right: 11px;\n}\n\n.calendar-wrap {\n width: 25px;\n border: 1px solid #d9d9d9;\n border-radius: 50%;\n height: 25px;\n text-align: center;\n cursor: pointer;\n &:hover {\n border-color: rgb(24, 144, 255);\n }\n}\n\n.popover-content-wrap {\n width: 400px;\n height: 300px;\n padding: 12px;\n .ant-tabs{\n height: 100%;\n .tabFilterRadio{\n display: flex;\n justify-content: center;\n height: 100%;\n }\n }\n}\n</style>\n<style lang=\"less\">\n.ant-dropdown-menu-title-content {\n white-space: nowrap;\n}\n</style>\n","<template>\n <div class=\"condition-list\" v-if=\"Array.isArray(list)\">\n <template\n v-for=\"(item, index) in list\"\n :key=\"index\"\n >\n <template v-if=\"item.join && item.conditions && Array.isArray(item.conditions)\">\n <div class=\"condition-container\">\n <template v-if=\"item.conditions.length > 1\">\n <div class=\"condition-text\" v-if=\"item.join === '||'\">或</div>\n <div class=\"condition-text\" v-if=\"item.join === '&&'\">且</div>\n </template>\n <div class=\"conditions\">\n <template v-if=\"item.conditions.length > 0\">\n <condition-list\n :level=\"level + 1\"\n :list=\"item.conditions\"\n :type=\"type\"\n />\n </template>\n </div>\n </div>\n </template>\n <template v-else>\n <condition\n class=\"condition\"\n :data=\"item\"\n :level=\"level\"\n :index=\"index\"\n :type=\"type\"\n />\n </template>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { PropType, defineComponent } from 'vue'\nimport Condition from './Condition.vue'\nexport default defineComponent({\n name: 'ConditionList',\n props: {\n list: {\n type: Array as PropType<any[]>,\n default: () => ([])\n },\n level: {\n type: Number,\n default: 0\n },\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n Condition\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.condition-text {\n min-width: 50px;\n max-width: 50px;\n border: 1px solid #e8e8e8;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.condition-container {\n display: flex;\n width: 100%;\n}\n\n.conditions {\n display: flex;\n flex-direction: column;\n flex: 1;\n}\n\n.condition {\n}\n</style>\n","<template>\n <div class=\"condition-list\" v-if=\"Array.isArray(list)\">\n <template\n v-for=\"(item, index) in list\"\n :key=\"index\"\n >\n <template v-if=\"item.join && item.conditions && Array.isArray(item.conditions)\">\n <div class=\"condition-container\">\n <template v-if=\"item.conditions.length > 1\">\n <div class=\"condition-text\" v-if=\"item.join === '||'\">或</div>\n <div class=\"condition-text\" v-if=\"item.join === '&&'\">且</div>\n </template>\n <div class=\"conditions\">\n <template v-if=\"item.conditions.length > 0\">\n <condition-list\n :level=\"level + 1\"\n :list=\"item.conditions\"\n :type=\"type\"\n />\n </template>\n </div>\n </div>\n </template>\n <template v-else>\n <condition\n class=\"condition\"\n :data=\"item\"\n :level=\"level\"\n :index=\"index\"\n :type=\"type\"\n />\n </template>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { PropType, defineComponent } from 'vue'\nimport Condition from './Condition.vue'\nexport default defineComponent({\n name: 'ConditionList',\n props: {\n list: {\n type: Array as PropType<any[]>,\n default: () => ([])\n },\n level: {\n type: Number,\n default: 0\n },\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n Condition\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.condition-text {\n min-width: 50px;\n max-width: 50px;\n border: 1px solid #e8e8e8;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.condition-container {\n display: flex;\n width: 100%;\n}\n\n.conditions {\n display: flex;\n flex-direction: column;\n flex: 1;\n}\n\n.condition {\n}\n</style>\n","<template>\n <a-modal\n :title=\"handleTitle()\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column'\n }\"\n :closable=\"false\"\n @ok=\"onOk\"\n @cancel=\"onCancel\"\n >\n <div class=\"header\">\n <template v-if=\"Array.isArray(conditionList) && conditionList.length > 0\">\n <a-button\n class=\"add-and-condition\"\n @click=\"addCondition('&&')\"\n >\n 添加且条件\n </a-button>\n <a-button\n class=\"add-or-condition\"\n @click=\"addCondition('||')\"\n >\n 添加或条件\n </a-button>\n </template>\n <a-button @click=\"addCondition\" v-else>\n 添加条件\n </a-button>\n </div>\n <condition-list\n class=\"condition-list\"\n :list=\"conditionList\"\n :level=\"0\"\n :type=\"type\"\n />\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, unref, provide, watch, inject } from 'vue'\nimport {\n Modal as AModal,\n Button as AButton\n} from 'ant-design-vue'\nimport ConditionList from './ConditionList.vue'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG, CHANGE_CONDITION, REQUEST, INDICATOR_URL, INDICATOR_TOKEN } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nexport default defineComponent({\n name: 'FilterModal',\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n ConditionList,\n AModal,\n AButton\n },\n setup (props, { expose }) {\n const handleTitle = () => `添加过滤条件-${props.item?.label || ''}`\n const graphicConfig = inject(GRAPHIC_CONFIG)\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const conditionList = ref<{ [key: string]: any } []>([])\n const visible = ref(false)\n watch(visible, (visible) => {\n if (visible && Array.isArray(props.item?.conditions)) {\n conditionList.value = cloneDeep(props.item?.conditions) || []\n }\n }, {\n flush: 'post'\n })\n let isDataChange = false\n const addCondition = (join?: '||' | '&&') => {\n isDataChange = true\n if (unref(conditionList) == null || unref(conditionList)?.length === 0) {\n conditionList.value = [{}]\n } else if (unref(conditionList)[0] != null) {\n if (unref(conditionList)[0].conditions == null || unref(conditionList)[0].join !== join) {\n conditionList.value = [{\n join,\n conditions: [\n unref(conditionList)[0],\n {}\n ]\n }]\n } else if (unref(conditionList)[0].conditions.length > 1 && unref(conditionList)[0].join === join) {\n conditionList.value[0].conditions.push({})\n }\n }\n }\n provide(CHANGE_CONDITION, {\n updateCondition (condition: { [key:string]: any}, level: number, index: number) {\n isDataChange = true\n let conditions = unref(conditionList)\n for (let i = 0; i < level; i++) {\n if (conditions[0]) {\n conditions = conditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n if (Array.isArray(conditions) && conditions[index]) {\n conditions[index] = condition\n }\n },\n deleteCondition (level: number, index: number) {\n isDataChange = true\n let conditions = unref(conditionList)\n for (let i = 0; i < level; i++) {\n if (conditions[0]) {\n conditions = conditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n if (Array.isArray(conditions) && conditions[index]) {\n conditions.splice(index, 1)\n if (conditions.length === 1) {\n let wrapperConditions = unref(conditionList)\n const wrapperLevel = level - 2 > 0 ? level - 2 : 0\n for (let i = 0; i < wrapperLevel; i++) {\n if (wrapperConditions[0]) {\n wrapperConditions = wrapperConditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n // 合并\n if (wrapperConditions[0].join === conditions[0].join) {\n // 最外层合并 (需要搞清数据结构)\n wrapperConditions[0].conditions = [\n ...conditions[0].conditions,\n ...wrapperConditions[0].conditions.slice(1)\n ]\n } else {\n // 当前 conditions[0].join 无条件说明是第一层,直接替换\n wrapperConditions[0] = conditions[0]\n }\n }\n }\n }\n })\n const updateFilter = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n list[props.index].conditions = unref(conditionList)\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n conditionList.value = []\n visible.value = false\n }\n const onOk = () => {\n if (isDataChange) updateFilter()\n isDataChange = false\n hideModal()\n }\n const onCancel = () => {\n hideModal()\n }\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const getHrpIndexWithComplex = async (hrpIndexGuid: string) => {\n // if (!['leftAxisList', 'rightAxisList', 'indicators', 'queryColumnList'].includes(props.type)) return\n if (props.type) return\n try {\n const res = await request.get(`${INDICATOR_URL}/diagram/hrpIndexWithComplex`, {\n params: {\n dataSourceId: '',\n hrpIndexGuid\n }\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n console.log(data)\n }\n } catch (e) {\n console.error(e)\n }\n }\n watch(() => props.item, (data: any) => {\n if (data) {\n getHrpIndexWithComplex(data.id)\n }\n })\n expose({\n showModal\n })\n return {\n visible,\n onOk,\n onCancel,\n handleTitle,\n conditionList,\n addCondition\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.header {\n display: flex;\n justify-content: flex-end;\n margin-bottom: 30px;\n}\n.add-and-condition {\n width: 100px;\n margin-right: 15px;\n}\n.add-or-condition {\n width: 100px;\n}\n\n</style>\n","<template>\n <a-modal\n :title=\"handleTitle()\"\n :visible=\"visible\"\n destroy-on-close\n width=\"50%\"\n :bodyStyle=\"{\n height: '70vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column'\n }\"\n :closable=\"false\"\n @ok=\"onOk\"\n @cancel=\"onCancel\"\n >\n <div class=\"header\">\n <template v-if=\"Array.isArray(conditionList) && conditionList.length > 0\">\n <a-button\n class=\"add-and-condition\"\n @click=\"addCondition('&&')\"\n >\n 添加且条件\n </a-button>\n <a-button\n class=\"add-or-condition\"\n @click=\"addCondition('||')\"\n >\n 添加或条件\n </a-button>\n </template>\n <a-button @click=\"addCondition\" v-else>\n 添加条件\n </a-button>\n </div>\n <condition-list\n class=\"condition-list\"\n :list=\"conditionList\"\n :level=\"0\"\n :type=\"type\"\n />\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, unref, provide, watch, inject } from 'vue'\nimport {\n Modal as AModal,\n Button as AButton\n} from 'ant-design-vue'\nimport ConditionList from './ConditionList.vue'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG, CHANGE_CONDITION, REQUEST, INDICATOR_URL, INDICATOR_TOKEN } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nexport default defineComponent({\n name: 'FilterModal',\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n components: {\n ConditionList,\n AModal,\n AButton\n },\n setup (props, { expose }) {\n const handleTitle = () => `添加过滤条件-${props.item?.label || ''}`\n const graphicConfig = inject(GRAPHIC_CONFIG)\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const conditionList = ref<{ [key: string]: any } []>([])\n const visible = ref(false)\n watch(visible, (visible) => {\n if (visible && Array.isArray(props.item?.conditions)) {\n conditionList.value = cloneDeep(props.item?.conditions) || []\n }\n }, {\n flush: 'post'\n })\n let isDataChange = false\n const addCondition = (join?: '||' | '&&') => {\n isDataChange = true\n if (unref(conditionList) == null || unref(conditionList)?.length === 0) {\n conditionList.value = [{}]\n } else if (unref(conditionList)[0] != null) {\n if (unref(conditionList)[0].conditions == null || unref(conditionList)[0].join !== join) {\n conditionList.value = [{\n join,\n conditions: [\n unref(conditionList)[0],\n {}\n ]\n }]\n } else if (unref(conditionList)[0].conditions.length > 1 && unref(conditionList)[0].join === join) {\n conditionList.value[0].conditions.push({})\n }\n }\n }\n provide(CHANGE_CONDITION, {\n updateCondition (condition: { [key:string]: any}, level: number, index: number) {\n isDataChange = true\n let conditions = unref(conditionList)\n for (let i = 0; i < level; i++) {\n if (conditions[0]) {\n conditions = conditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n if (Array.isArray(conditions) && conditions[index]) {\n conditions[index] = condition\n }\n },\n deleteCondition (level: number, index: number) {\n isDataChange = true\n let conditions = unref(conditionList)\n for (let i = 0; i < level; i++) {\n if (conditions[0]) {\n conditions = conditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n if (Array.isArray(conditions) && conditions[index]) {\n conditions.splice(index, 1)\n if (conditions.length === 1) {\n let wrapperConditions = unref(conditionList)\n const wrapperLevel = level - 2 > 0 ? level - 2 : 0\n for (let i = 0; i < wrapperLevel; i++) {\n if (wrapperConditions[0]) {\n wrapperConditions = wrapperConditions[0]?.conditions as { [key:string]: any } []\n } else {\n break\n }\n }\n // 合并\n if (wrapperConditions[0].join === conditions[0].join) {\n // 最外层合并 (需要搞清数据结构)\n wrapperConditions[0].conditions = [\n ...conditions[0].conditions,\n ...wrapperConditions[0].conditions.slice(1)\n ]\n } else {\n // 当前 conditions[0].join 无条件说明是第一层,直接替换\n wrapperConditions[0] = conditions[0]\n }\n }\n }\n }\n })\n const updateFilter = () => {\n const list = (unref(graphicConfig)[props.type])?.slice() || []\n list[props.index].conditions = unref(conditionList)\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n conditionList.value = []\n visible.value = false\n }\n const onOk = () => {\n if (isDataChange) updateFilter()\n isDataChange = false\n hideModal()\n }\n const onCancel = () => {\n hideModal()\n }\n const request = inject(REQUEST) as any\n const indicatorToken = unref(inject(INDICATOR_TOKEN))\n const getHrpIndexWithComplex = async (hrpIndexGuid: string) => {\n // if (!['leftAxisList', 'rightAxisList', 'indicators', 'queryColumnList'].includes(props.type)) return\n if (props.type) return\n try {\n const res = await request.get(`${INDICATOR_URL}/diagram/hrpIndexWithComplex`, {\n params: {\n dataSourceId: '',\n hrpIndexGuid\n }\n }, {\n headers: {\n Authentication: indicatorToken,\n operateContext: 'ygt'\n }\n })\n const { success, data = [] } = res.data\n if (success) {\n console.log(data)\n }\n } catch (e) {\n console.error(e)\n }\n }\n watch(() => props.item, (data: any) => {\n if (data) {\n getHrpIndexWithComplex(data.id)\n }\n })\n expose({\n showModal\n })\n return {\n visible,\n onOk,\n onCancel,\n handleTitle,\n conditionList,\n addCondition\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.header {\n display: flex;\n justify-content: flex-end;\n margin-bottom: 30px;\n}\n.add-and-condition {\n width: 100px;\n margin-right: 15px;\n}\n.add-or-condition {\n width: 100px;\n}\n\n</style>\n","import { urlAlphabet } from './url-alphabet/index.js'\nif (false) {\n if (\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative' &&\n typeof crypto === 'undefined'\n ) {\n throw new Error(\n 'React Native does not have a built-in secure random generator. ' +\n 'If you don’t need unpredictable IDs use `nanoid/non-secure`. ' +\n 'For secure IDs, import `react-native-get-random-values` ' +\n 'before Nano ID.'\n )\n }\n if (typeof msCrypto !== 'undefined' && typeof crypto === 'undefined') {\n throw new Error(\n 'Import file with `if (!window.crypto) window.crypto = window.msCrypto`' +\n ' before importing Nano ID to fix IE 11 support'\n )\n }\n if (typeof crypto === 'undefined') {\n throw new Error(\n 'Your browser does not have secure random generator. ' +\n 'If you don’t need unpredictable IDs, you can use nanoid/non-secure.'\n )\n }\n}\nlet random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nlet customRandom = (alphabet, size, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * size) / alphabet.length)\n return () => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nlet customAlphabet = (alphabet, size) => customRandom(alphabet, size, random)\nlet nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array(size))\n while (size--) {\n let byte = bytes[size] & 63\n if (byte < 36) {\n id += byte.toString(36)\n } else if (byte < 62) {\n id += (byte - 26).toString(36).toUpperCase()\n } else if (byte < 63) {\n id += '_'\n } else {\n id += '-'\n }\n }\n return id\n}\nexport { nanoid, customAlphabet, customRandom, urlAlphabet, random }\n","<template>\n <div class=\"formula-calculation\">\n <a-row style=\"height: 100%\">\n <a-col :span=\"6\">\n <div class=\"field-area\">\n <div>数值字段({{ fieldList.length }})</div>\n <div\n class=\"field\"\n v-for=\"(field, index) in fieldList\"\n :key=\"index\"\n @click=\"insertText(field.label)\"\n >\n {{ field.label }}\n </div>\n </div>\n </a-col>\n <a-col :span=\"18\">\n <a-textarea\n class=\"textarea\"\n v-model:value=\"myValue\"\n :autoSize=\"{\n minRows: 13,\n maxRows: 13\n }\"\n placeholder=\"示例: ${指标} * 3\"\n />\n </a-col>\n </a-row>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, inject } from 'vue'\nimport { GRAPHIC_CONFIG } from '@/utils/constant'\nimport { Row as ARow, Col as ACol, Textarea as ATextarea } from 'ant-design-vue'\nexport default defineComponent({\n name: 'FormulaCalculation',\n props: {\n value: {\n type: String,\n default: ''\n }\n },\n components: {\n ARow,\n ACol,\n ATextarea\n },\n emits: ['update:value', 'change'],\n setup (props, { emit }) {\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const leftAxisList = computed(() => unref(graphicConfig).leftAxisList || [])\n const rightAxisList = computed(\n () => unref(graphicConfig).rightAxisList || []\n )\n const indicators = computed(() => unref(graphicConfig).indicators || [])\n const queryColumnList = computed(\n () => unref(graphicConfig).queryColumnList || []\n )\n const fieldList = computed(() => {\n const fieldList = unref(leftAxisList)\n .concat(unref(rightAxisList))\n .concat(unref(indicators))\n .concat(unref(queryColumnList)) as { [key: string]: any }[]\n // 公式计算需要过滤不是数字类型的字段\n return fieldList?.filter((field) => field.genericType === 'NUMBER') || []\n })\n const myValue = computed({\n get: () => props.value || '',\n set: (value) => {\n emit('update:value', value)\n emit('change', value)\n }\n })\n const insertText = (text: string) => {\n myValue.value = unref(myValue) + '${' + text + '}'\n }\n return {\n fieldList,\n myValue,\n insertText\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.formula-calculation {\n border: 1px solid #ccc;\n width: 100%;\n}\n\n[theme='dark'] .formula-calculation {\n border: 1px solid #333;\n}\n\n.field-area {\n height: 100%;\n padding-left: 20px;\n padding-top: 20px;\n background: #eff1f4;\n}\n[theme='dark'] .field-area {\n background: #333;\n}\n.field {\n margin-top: 10px;\n padding-left: 15px;\n font-weight: 500;\n}\n\n.textarea {\n height: 100%;\n}\n</style>\n","<template>\n <div class=\"formula-calculation\">\n <a-row style=\"height: 100%\">\n <a-col :span=\"6\">\n <div class=\"field-area\">\n <div>数值字段({{ fieldList.length }})</div>\n <div\n class=\"field\"\n v-for=\"(field, index) in fieldList\"\n :key=\"index\"\n @click=\"insertText(field.label)\"\n >\n {{ field.label }}\n </div>\n </div>\n </a-col>\n <a-col :span=\"18\">\n <a-textarea\n class=\"textarea\"\n v-model:value=\"myValue\"\n :autoSize=\"{\n minRows: 13,\n maxRows: 13\n }\"\n placeholder=\"示例: ${指标} * 3\"\n />\n </a-col>\n </a-row>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, inject } from 'vue'\nimport { GRAPHIC_CONFIG } from '@/utils/constant'\nimport { Row as ARow, Col as ACol, Textarea as ATextarea } from 'ant-design-vue'\nexport default defineComponent({\n name: 'FormulaCalculation',\n props: {\n value: {\n type: String,\n default: ''\n }\n },\n components: {\n ARow,\n ACol,\n ATextarea\n },\n emits: ['update:value', 'change'],\n setup (props, { emit }) {\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const leftAxisList = computed(() => unref(graphicConfig).leftAxisList || [])\n const rightAxisList = computed(\n () => unref(graphicConfig).rightAxisList || []\n )\n const indicators = computed(() => unref(graphicConfig).indicators || [])\n const queryColumnList = computed(\n () => unref(graphicConfig).queryColumnList || []\n )\n const fieldList = computed(() => {\n const fieldList = unref(leftAxisList)\n .concat(unref(rightAxisList))\n .concat(unref(indicators))\n .concat(unref(queryColumnList)) as { [key: string]: any }[]\n // 公式计算需要过滤不是数字类型的字段\n return fieldList?.filter((field) => field.genericType === 'NUMBER') || []\n })\n const myValue = computed({\n get: () => props.value || '',\n set: (value) => {\n emit('update:value', value)\n emit('change', value)\n }\n })\n const insertText = (text: string) => {\n myValue.value = unref(myValue) + '${' + text + '}'\n }\n return {\n fieldList,\n myValue,\n insertText\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.formula-calculation {\n border: 1px solid #ccc;\n width: 100%;\n}\n\n[theme='dark'] .formula-calculation {\n border: 1px solid #333;\n}\n\n.field-area {\n height: 100%;\n padding-left: 20px;\n padding-top: 20px;\n background: #eff1f4;\n}\n[theme='dark'] .field-area {\n background: #333;\n}\n.field {\n margin-top: 10px;\n padding-left: 15px;\n font-weight: 500;\n}\n\n.textarea {\n height: 100%;\n}\n</style>\n","<template>\n <a-modal\n :title=\"`${mode === 'add' ? '新增' : '编辑'}计算指标`\"\n :visible=\"visible\"\n width=\"50%\"\n :bodyStyle=\"{\n height: '50vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column'\n }\"\n :closable=\"false\"\n @Ok=\"onOK\"\n @cancel=\"onCancel\"\n >\n <a-form :model=\"formState\">\n <a-form-item\n label=\"指标名\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-input\n v-model:value=\"formState.label\"\n @change=\"onChange\"\n />\n </a-form-item>\n <a-form-item\n label=\"计算方式\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-select\n v-model:value=\"formState.calcType\"\n @change=\"onChange\"\n >\n <a-select-option value=\"FORMULA\">公式</a-select-option>\n <a-select-option value=\"BUILT_IN\">内置公式</a-select-option>\n </a-select>\n </a-form-item>\n <template v-if=\"formState.calcType === 'FORMULA'\">\n <formula-calculation\n v-model:value=\"formState.formula\"\n @change=\"onChange\"\n />\n </template>\n <template v-if=\"formState.calcType === 'BUILT_IN'\">\n <a-form-item\n label=\"内置公式\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-select\n v-model:value=\"formState.builtInFormula\"\n @change=\"onChange\"\n >\n <a-select-option value=\"BUILT_IN_ALL_VALUE\">所有值</a-select-option>\n <a-select-option value=\"BUILT_IN_ALL_VALUE_IN_GROUPO\"\n >组内所有值</a-select-option\n >\n <a-select-option value=\"BUILT_IN_RANK\">排名</a-select-option>\n <a-select-option value=\"BUILT_IN_RANK_IN_GROUPO\"\n >组内排名</a-select-option\n >\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"取值来源\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-select\n v-model:value=\"formState.builtInValueSource\"\n @change=\"onChange\"\n >\n <a-select-option\n v-for=\"(builtInValueSource, index) in builtInValueSourceList\"\n :key=\"index\"\n :value=\"builtInValueSource.name\"\n >\n {{ builtInValueSource.label }}\n </a-select-option>\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"取值原则\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-select\n v-model:value=\"formState.builtInCalcWay\"\n @change=\"onChange\"\n >\n <template\n v-if=\"\n ['BUILT_IN_RANK', 'BUILT_IN_RANK_IN_GROUPO'].includes(\n formState.builtInValueSource || ''\n )\n \"\n >\n <!-- 所有值/组内所有值 -->\n <a-select-option value=\"SUM\">求和</a-select-option>\n <a-select-option value=\"AVG\">求平均</a-select-option>\n <a-select-option value=\"MAX\">求最大值</a-select-option>\n <a-select-option value=\"MIN\">求最小值</a-select-option>\n </template>\n <template v-else>\n <!-- 排名/组内排名 -->\n <a-select-option value=\"ASC\">升序</a-select-option>\n <a-select-option value=\"DESC\">降序</a-select-option>\n </template>\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"取数逻辑\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-textarea\n :rows=\"6\"\n disabled\n />\n </a-form-item>\n </template>\n </a-form>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n ref,\n computed,\n unref,\n PropType,\n watch,\n inject\n} from 'vue'\nimport { nanoid } from 'nanoid'\nimport FormulaCalculation from './FormulaCalculation.vue'\nimport {\n Form as AForm,\n Modal as AModal,\n FormItem as AFormItem,\n Input as AInput,\n Select as ASelect,\n SelectOption as ASelectOption,\n Textarea as ATextarea\n} from 'ant-design-vue'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nexport default defineComponent({\n name: 'CalculationModal',\n components: {\n FormulaCalculation,\n AForm,\n AModal,\n AFormItem,\n AInput,\n ASelect,\n ASelectOption,\n ATextarea\n },\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n },\n // 模式\n mode: {\n type: String as PropType<'add' | 'edit'>,\n default: 'add'\n }\n },\n setup (props, { expose }) {\n const graphicConfig = inject(GRAPHIC_CONFIG)\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const builtInValueSourceList = computed(\n () => unref(graphicConfig)[props.type] || []\n )\n const labelCol = { span: 4 }\n const wrapperCol = { span: 18 }\n const formDefaultValue = {\n label: undefined,\n calcType: 'FORMULA',\n formula: undefined,\n builtInValueSource: undefined,\n builtInFormula: undefined,\n builtInCalcWay: undefined\n }\n const formState = ref(formDefaultValue)\n watch(\n () => props.item,\n (item) => {\n if (props.mode === 'edit') {\n const {\n label,\n calcType,\n formula,\n builtInValueSource,\n builtInFormula,\n builtInCalcWay\n } = item\n formState.value = {\n label,\n calcType,\n formula,\n builtInValueSource,\n builtInFormula,\n builtInCalcWay\n }\n }\n },\n {\n immediate: true,\n deep: true\n }\n )\n let isDataChange = false\n const onChange = () => {\n isDataChange = true\n }\n // 保存指标库\n const saveIndicator = () => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n const { label } = unref(formState) || {}\n if (props.mode === 'add') {\n const id = nanoid()\n list.push({\n ...unref(formState),\n id,\n show: true,\n name: label\n })\n } else if (props.mode === 'edit') {\n list[props.index] = {\n ...list[props.index],\n ...unref(formState),\n name: label\n }\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const visible = ref(false)\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const formRules = ref({\n label: [\n {\n required: true,\n message: '请输入指标名'\n }\n ],\n calcType: [\n {\n required: true,\n message: '请选择计算方式'\n }\n ],\n formula: [\n {\n required: true,\n message: '请选择计算公式'\n }\n ]\n })\n const { validate, validateInfos, clearValidate } = AForm.useForm(\n formState,\n formRules\n )\n const onOK = () => {\n validate().then(() => {\n if (isDataChange) saveIndicator()\n isDataChange = false\n // 重置\n formState.value = formDefaultValue\n hideModal()\n })\n }\n const onCancel = () => {\n // 重置\n formState.value = formDefaultValue\n clearValidate()\n hideModal()\n }\n expose({\n showModal\n })\n return {\n visible,\n onCancel,\n labelCol,\n wrapperCol,\n formState,\n builtInValueSourceList,\n onOK,\n onChange,\n validateInfos\n }\n }\n})\n</script>\n\n<style scoped></style>\n","<template>\n <a-modal\n :title=\"`${mode === 'add' ? '新增' : '编辑'}计算指标`\"\n :visible=\"visible\"\n width=\"50%\"\n :bodyStyle=\"{\n height: '50vh',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column'\n }\"\n :closable=\"false\"\n @Ok=\"onOK\"\n @cancel=\"onCancel\"\n >\n <a-form :model=\"formState\">\n <a-form-item\n label=\"指标名\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-input\n v-model:value=\"formState.label\"\n @change=\"onChange\"\n />\n </a-form-item>\n <a-form-item\n label=\"计算方式\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-select\n v-model:value=\"formState.calcType\"\n @change=\"onChange\"\n >\n <a-select-option value=\"FORMULA\">公式</a-select-option>\n <a-select-option value=\"BUILT_IN\">内置公式</a-select-option>\n </a-select>\n </a-form-item>\n <template v-if=\"formState.calcType === 'FORMULA'\">\n <formula-calculation\n v-model:value=\"formState.formula\"\n @change=\"onChange\"\n />\n </template>\n <template v-if=\"formState.calcType === 'BUILT_IN'\">\n <a-form-item\n label=\"内置公式\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-select\n v-model:value=\"formState.builtInFormula\"\n @change=\"onChange\"\n >\n <a-select-option value=\"BUILT_IN_ALL_VALUE\">所有值</a-select-option>\n <a-select-option value=\"BUILT_IN_ALL_VALUE_IN_GROUPO\"\n >组内所有值</a-select-option\n >\n <a-select-option value=\"BUILT_IN_RANK\">排名</a-select-option>\n <a-select-option value=\"BUILT_IN_RANK_IN_GROUPO\"\n >组内排名</a-select-option\n >\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"取值来源\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-select\n v-model:value=\"formState.builtInValueSource\"\n @change=\"onChange\"\n >\n <a-select-option\n v-for=\"(builtInValueSource, index) in builtInValueSourceList\"\n :key=\"index\"\n :value=\"builtInValueSource.name\"\n >\n {{ builtInValueSource.label }}\n </a-select-option>\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"取值原则\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-select\n v-model:value=\"formState.builtInCalcWay\"\n @change=\"onChange\"\n >\n <template\n v-if=\"\n ['BUILT_IN_RANK', 'BUILT_IN_RANK_IN_GROUPO'].includes(\n formState.builtInValueSource || ''\n )\n \"\n >\n <!-- 所有值/组内所有值 -->\n <a-select-option value=\"SUM\">求和</a-select-option>\n <a-select-option value=\"AVG\">求平均</a-select-option>\n <a-select-option value=\"MAX\">求最大值</a-select-option>\n <a-select-option value=\"MIN\">求最小值</a-select-option>\n </template>\n <template v-else>\n <!-- 排名/组内排名 -->\n <a-select-option value=\"ASC\">升序</a-select-option>\n <a-select-option value=\"DESC\">降序</a-select-option>\n </template>\n </a-select>\n </a-form-item>\n <a-form-item\n label=\"取数逻辑\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-textarea\n :rows=\"6\"\n disabled\n />\n </a-form-item>\n </template>\n </a-form>\n </a-modal>\n</template>\n\n<script lang=\"ts\">\nimport {\n defineComponent,\n ref,\n computed,\n unref,\n PropType,\n watch,\n inject\n} from 'vue'\nimport { nanoid } from 'nanoid'\nimport FormulaCalculation from './FormulaCalculation.vue'\nimport {\n Form as AForm,\n Modal as AModal,\n FormItem as AFormItem,\n Input as AInput,\n Select as ASelect,\n SelectOption as ASelectOption,\n Textarea as ATextarea\n} from 'ant-design-vue'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nexport default defineComponent({\n name: 'CalculationModal',\n components: {\n FormulaCalculation,\n AForm,\n AModal,\n AFormItem,\n AInput,\n ASelect,\n ASelectOption,\n ATextarea\n },\n props: {\n item: {\n type: Object,\n default: () => ({})\n },\n index: {\n type: Number,\n default: 0\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n },\n // 模式\n mode: {\n type: String as PropType<'add' | 'edit'>,\n default: 'add'\n }\n },\n setup (props, { expose }) {\n const graphicConfig = inject(GRAPHIC_CONFIG)\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const builtInValueSourceList = computed(\n () => unref(graphicConfig)[props.type] || []\n )\n const labelCol = { span: 4 }\n const wrapperCol = { span: 18 }\n const formDefaultValue = {\n label: undefined,\n calcType: 'FORMULA',\n formula: undefined,\n builtInValueSource: undefined,\n builtInFormula: undefined,\n builtInCalcWay: undefined\n }\n const formState = ref(formDefaultValue)\n watch(\n () => props.item,\n (item) => {\n if (props.mode === 'edit') {\n const {\n label,\n calcType,\n formula,\n builtInValueSource,\n builtInFormula,\n builtInCalcWay\n } = item\n formState.value = {\n label,\n calcType,\n formula,\n builtInValueSource,\n builtInFormula,\n builtInCalcWay\n }\n }\n },\n {\n immediate: true,\n deep: true\n }\n )\n let isDataChange = false\n const onChange = () => {\n isDataChange = true\n }\n // 保存指标库\n const saveIndicator = () => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n const { label } = unref(formState) || {}\n if (props.mode === 'add') {\n const id = nanoid()\n list.push({\n ...unref(formState),\n id,\n show: true,\n name: label\n })\n } else if (props.mode === 'edit') {\n list[props.index] = {\n ...list[props.index],\n ...unref(formState),\n name: label\n }\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const visible = ref(false)\n const showModal = () => {\n visible.value = true\n }\n const hideModal = () => {\n visible.value = false\n }\n const formRules = ref({\n label: [\n {\n required: true,\n message: '请输入指标名'\n }\n ],\n calcType: [\n {\n required: true,\n message: '请选择计算方式'\n }\n ],\n formula: [\n {\n required: true,\n message: '请选择计算公式'\n }\n ]\n })\n const { validate, validateInfos, clearValidate } = AForm.useForm(\n formState,\n formRules\n )\n const onOK = () => {\n validate().then(() => {\n if (isDataChange) saveIndicator()\n isDataChange = false\n // 重置\n formState.value = formDefaultValue\n hideModal()\n })\n }\n const onCancel = () => {\n // 重置\n formState.value = formDefaultValue\n clearValidate()\n hideModal()\n }\n expose({\n showModal\n })\n return {\n visible,\n onCancel,\n labelCol,\n wrapperCol,\n formState,\n builtInValueSourceList,\n onOK,\n onChange,\n validateInfos\n }\n }\n})\n</script>\n\n<style scoped></style>\n","<template>\n <a-card\n class=\"data-config-card\"\n :head-style=\"{\n backgroundColor: 'rgba(161,212,230,0.3)',\n minHeight: '38px',\n padding: '0 10px'\n }\"\n @dragover.prevent.stop\n @drop.prevent.stop=\"onDrop\"\n >\n <template #title>\n <div class=\"title\">\n <div class=\"title-text\">{{ title }}</div>\n <div\n class=\"add-calculation\"\n v-if=\"!['classificationList', 'seriesList', 'rowHeaderList'].includes(type)\"\n @click.prevent.stop=\"onShowCalculationModal('add')\"\n >\n <plus-outlined class=\"add-calculation-icon\" />\n <span>添加计算指标</span>\n </div>\n </div>\n </template>\n <div\n v-for=\"(cardItem, index) in cardItemList\"\n :key=\"index\"\n :draggable=\"true\"\n @dragstart.stop=\"onDropStart($event, cardItem, index)\"\n @dragover.prevent.stop\n >\n <a-checkbox\n class=\"card-item\"\n :checked=\"cardItem.show\"\n @change=\"onCheckboxChange($event, index)\"\n >\n <!-- editLabelList 和 labelList 都为 cardItemList 映射列表,用于修改label交互 -->\n <!-- editLabelList 是否修改名字, 变为输入框,值为 boolean -->\n <!-- labelList,label 列表 -->\n <div class=\"card-item-inner\">\n <div\n class=\"name\"\n v-if=\"!editLabelList[index] && cardItem.label\"\n @click.prevent.stop=\"onEdit(index)\"\n >\n {{ cardItem.title || cardItem.label }}\n </div>\n <div\n class=\"name placeholder\"\n v-if=\"!editLabelList[index] && !cardItem.label\"\n @click.prevent.stop=\"onEdit(index)\"\n >\n 请点击填入名字\n </div>\n <a-input\n :default-value=\"cardItem.label\"\n size=\"small\"\n v-if=\"editLabelList[index]\"\n v-focus\n @blur=\"onCommitLabelChange($event, index)\"\n @pressEnter=\"onCommitLabelChange($event, index)\"\n @change=\"onLabelChange\"\n />\n <span\n class=\"calculation-icon\"\n @click.prevent.stop=\"\n onShowCalculationModal('edit', cardItem, index)\n \"\n v-if=\"['FORMULA', 'BUILT_IN'].includes(cardItem.calcType)\"\n >\n fx\n </span>\n <a-dropdown :trigger=\"['click']\">\n <setting-outlined class=\"setting-icon\" />\n <template #overlay>\n <a-menu>\n <!-- 仅在分类、系列中设置 -->\n <template\n v-if=\"['classificationList', 'seriesList'].includes(type)\"\n >\n <!-- 升序 -->\n <a-sub-menu\n :title=\"handleSortTitle(cardItem, 'ASC')\"\n key=\"0\"\n >\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"sortItem in sortList\"\n :key=\"sortItem.id\"\n @click=\"onSort(sortItem, index, 'ASC')\"\n >\n {{ sortItem.label }}\n </a-menu-item>\n </a-sub-menu>\n <!-- 降序 -->\n <a-sub-menu\n :title=\"handleSortTitle(cardItem, 'DESC')\"\n key=\"1\"\n >\n <a-menu-item\n class=\"menu-item\"\n style=\"white-space: nowrap\"\n v-for=\"sortItem in sortList\"\n :key=\"sortItem.id\"\n @click=\"onSort(sortItem, index, 'DESC')\"\n >\n {{ sortItem.label }}\n </a-menu-item>\n </a-sub-menu>\n <!-- 自定义排序 -->\n <a-menu-item @click=\"showCustomSortModal(cardItem, index)\">\n {{ handleCustomSortTitle(cardItem) }}\n </a-menu-item>\n <a-menu-divider />\n <!-- 自定义分组 -->\n <a-menu-item @click=\"showCustomGroupModal(cardItem, index)\">\n {{ handleCustomGroupTitle(cardItem) }}\n </a-menu-item>\n <a-menu-divider />\n </template>\n <!-- 过滤 -->\n <a-menu-item @click=\"showFilterModal(cardItem, index)\">\n {{ handleFilterTitle(cardItem) }}\n </a-menu-item>\n <template\n v-if=\"!['classificationList', 'seriesList'].includes(type)\"\n >\n <!-- 汇总方式 -->\n <a-sub-menu :title=\"handleAggregateTitle(cardItem.aggregate)\">\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"aggregate in aggregateList\"\n :key=\"aggregate.value\"\n @click=\"onAggregateChange(aggregate.value, index)\"\n >\n {{ aggregate.name }}\n </a-menu-item>\n </a-sub-menu>\n <a-menu-divider />\n </template>\n </a-menu>\n </template>\n </a-dropdown>\n <delete-outlined\n class=\"delete-icon\"\n @click.prevent=\"onDelete(index)\"\n />\n </div>\n </a-checkbox>\n </div>\n <custom-sort-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"customSortModalRef\"\n />\n <custom-group-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"customGroupModalRef\"\n />\n <filter-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"filterModalRef\"\n />\n <calculation-modal\n :type=\"type\"\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :mode=\"calculationModalMode\"\n ref=\"calculationModalRef\"\n />\n </a-card>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, watch, inject } from 'vue'\nimport {\n Card as ACard,\n Checkbox as ACheckbox,\n Input as AInput,\n Dropdown as ADropdown,\n Menu as AMenu,\n SubMenu as ASubMenu,\n MenuItem as AMenuItem,\n MenuDivider as AMenuDivider\n} from 'ant-design-vue'\nimport {\n SettingOutlined,\n DeleteOutlined,\n PlusOutlined\n} from '@ant-design/icons-vue'\nimport focus from '@/directives/focus'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nimport CustomSortModal from './CustomSortModal.vue'\nimport CustomGroupModal from './CustomGroupModal.vue'\nimport FilterModal from './filter-modal'\nimport CalculationModal from './calculation-modal'\nexport default defineComponent({\n name: 'DataConfigCard',\n directives: {\n focus\n },\n components: {\n CalculationModal,\n FilterModal,\n CustomGroupModal,\n SettingOutlined,\n DeleteOutlined,\n CustomSortModal,\n PlusOutlined,\n ACard,\n ACheckbox,\n AInput,\n ADropdown,\n AMenu,\n ASubMenu,\n AMenuItem,\n AMenuDivider\n },\n props: {\n title: {\n type: String,\n default: ''\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n setup (props) {\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const handleListItemData = (listData: string = '{}') => {\n try {\n const data = JSON.parse(listData)\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n if (['classificationList', 'seriesList'].includes(props.type)) {\n list.forEach((item: { [key: string]: any }) => {\n item.show = false\n })\n }\n reNameSame(list, data)\n list.push(data)\n updateGraphicConfig({\n [props.type]: list\n })\n } catch (e) {\n console.error(e)\n }\n }\n const handleCardItemData = (cardData: string = '{}') => {\n try {\n const { cardItem, type, index } = JSON.parse(cardData)\n if (type === props.type) return\n // 添加新元素\n const currentList = unref(graphicConfig)[props.type]?.slice() || []\n reNameSame(currentList, cardItem)\n currentList.push(cardItem)\n // 删除原先的元素\n const originalList = unref(graphicConfig)[type].slice() || []\n originalList.splice(index, 1)\n // 更新\n updateGraphicConfig({\n [props.type]: currentList,\n [type]: originalList\n })\n } catch (e) {\n console.error(e)\n }\n }\n function reNameSame (list: any, addItem: any) {\n const sameNums = []\n list.forEach((checkItem: any) => {\n if (checkItem.label.includes(addItem.label)) {\n sameNums.push(checkItem.label.split(addItem.label)[1])\n }\n })\n if (sameNums.length >= 1) {\n for (let i = 1; i <= sameNums.length; i++) {\n if (!sameNums.includes(i + '')) {\n addItem.label = addItem.label + i\n break\n }\n }\n }\n }\n const onCheckboxChange = (event, index: number) => {\n const value = (event.target as any)?.checked\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n if (['classificationList', 'seriesList'].includes(props.type)) {\n list.forEach((item: { [key: string]: any }) => {\n item.show = false\n })\n }\n list[index].show = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onDropStart = (\n event: DragEvent,\n cardItem: { [key: string]: any },\n index: number\n ) => {\n event.dataTransfer?.setData(\n 'card-item',\n JSON.stringify({\n cardItem,\n type: props.type,\n index\n })\n )\n }\n const onDropEnd = (index: string) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list.splice(index, 1)\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onDrop = (event: DragEvent) => {\n // 接受列表 或者 卡片之间的数据\n const listItemData = event.dataTransfer?.getData('list-item')\n const cardItemData = event.dataTransfer?.getData('card-item')\n if (listItemData) {\n handleListItemData(listItemData)\n } else if (cardItemData) {\n handleCardItemData(cardItemData)\n }\n }\n const onDragover = () => {}\n const cardItemList = computed(() => unref(graphicConfig)[props.type] || [])\n const editLabelList = ref<boolean[]>([])\n let isLabelChange = false\n watch(\n () => unref(cardItemList).length,\n (length) => {\n editLabelList.value = new Array(length).fill(false)\n },\n {\n flush: 'post',\n immediate: true\n }\n )\n const onDelete = (index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list.splice(index, 1)\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onEdit = (index: number) => {\n editLabelList.value[index] = true\n }\n const onLabelChange = () => {\n isLabelChange = true\n }\n const onCommitLabelChange = (event: Event, index: number) => {\n editLabelList.value[index] = false\n if (isLabelChange) {\n const value = (event.target as any)?.value\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n list[index].label = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n isLabelChange = false\n }\n const DEFAULT = 'DEFAULT'\n const sortList = computed(() => {\n // 自身分类加指标\n const list = unref(graphicConfig)[props.type] || []\n const {\n leftAxisList = [],\n rightAxisList = [],\n indicators = []\n } = unref(graphicConfig) || {}\n return [\n {\n id: DEFAULT,\n label: '默认',\n name: '默认'\n },\n ...list,\n ...leftAxisList,\n ...rightAxisList,\n ...indicators\n ]\n })\n // 升降序\n const onSort = (\n item: { [key: string]: any } = {},\n index: number,\n order: 'ASC' | 'DESC' = 'ASC'\n ) => {\n const { label, name, id } = item\n const list = unref(graphicConfig)[props.type]?.slice() || []\n if (id === DEFAULT) {\n delete list[index].sort\n } else {\n list[index].sort = {\n label,\n columnName: name,\n type: 'NORMAL',\n order\n }\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const handleSortTitle = (\n item: { [key: string]: any } = {},\n type: 'ASC' | 'DESC' = 'ASC'\n ) => {\n const map = {\n ASC: '升序',\n DESC: '降序'\n }\n const text = map[type]\n const { sort } = item\n const { label, order } = sort || {}\n return label && order === type ? `${text}(${label})` : text\n }\n const currentItem = ref()\n const currentIndex = ref()\n const customSortModalRef = ref()\n const customGroupModalRef = ref()\n const showCustomSortModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(customSortModalRef)?.showModal()\n }\n const handleCustomSortTitle = (item: { [key: string]: any }) => {\n return '自定义排序' + (item?.sort?.type === 'CUSTOM' ? '(已配置)' : '')\n }\n const showCustomGroupModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(customGroupModalRef)?.showModal()\n }\n const handleCustomGroupTitle = (item: { [key: string]: any }) => {\n return '自定义分组' + (item?.customGroup != null ? '(已配置)' : '')\n }\n // 汇总方式\n const aggregateList = [\n {\n name: '总和',\n value: 'SUM'\n },\n {\n name: '平均数',\n value: 'AVG'\n },\n {\n name: '最小值',\n value: 'MIN'\n },\n {\n name: '最大值',\n value: 'MAX'\n },\n {\n name: '计数',\n value: 'COUNT'\n }\n ]\n const onAggregateChange = (value: string, index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list[index].aggregate = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const handleAggregateTitle = (\n key: 'SUM' | 'AVG' | 'MIN' | 'MAX' | 'COUNT' = 'SUM'\n ) => {\n const map = {\n SUM: '总和',\n AVG: '平均数',\n MIN: '最小值',\n MAX: '最大值',\n COUNT: '计数'\n }\n return `汇总方式(${map[key]})`\n }\n\n const handleFilterTitle = (item: { [key: string]: any } = {}) => {\n return (\n '过滤' +\n (item?.conditions && item?.conditions?.length > 0 ? '(已配置)' : '')\n )\n }\n const filterModalRef = ref()\n const showFilterModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(filterModalRef).showModal()\n }\n const calculationModalRef = ref()\n const calculationModalMode = ref<'add' | 'edit'>('add')\n const onShowCalculationModal = (\n mode: 'add' | 'edit',\n item?: { [key: string]: any },\n index?: number\n ) => {\n calculationModalMode.value = mode\n if (mode === 'edit') {\n currentItem.value = item\n currentIndex.value = index\n }\n unref(calculationModalRef)?.showModal()\n }\n return {\n onCheckboxChange,\n onDrop,\n onDropStart,\n onDropEnd,\n onDragover,\n cardItemList,\n onDelete,\n onEdit,\n onCommitLabelChange,\n sortList,\n onSort,\n handleSortTitle,\n showCustomSortModal,\n customSortModalRef,\n currentItem,\n currentIndex,\n handleCustomSortTitle,\n handleCustomGroupTitle,\n customGroupModalRef,\n showCustomGroupModal,\n editLabelList,\n onLabelChange,\n aggregateList,\n onAggregateChange,\n handleAggregateTitle,\n onShowCalculationModal,\n handleFilterTitle,\n filterModalRef,\n showFilterModal,\n calculationModalRef,\n calculationModalMode\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-config-card {\n display: flex;\n flex-direction: column;\n height: 280px;\n}\n\n.card-item {\n background-color: rgba(161, 212, 230, 0.3);\n width: 100%;\n height: 100%;\n padding: 5px;\n margin: 3px 0;\n}\n\n.title {\n display: flex;\n justify-content: space-between;\n}\n\n.add-calculation {\n cursor: pointer;\n font-size: 13px;\n color: #3f8ce8;\n line-height: 24px;\n}\n\n.add-calculation-icon {\n color: #3f8ce8;\n margin-right: 3px;\n}\n\n.ant-checkbox + span {\n width: 100% !important;\n}\n\n.card-item-inner {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.name {\n width: 100%;\n}\n\n.placeholder {\n color: red;\n}\n\n.setting-icon {\n color: #545;\n margin-left: 5px;\n}\n\n.delete-icon {\n color: #ff0000;\n margin-left: 5px;\n}\n\n.calculation-icon {\n font-weight: bold;\n font-style: italic;\n}\n\n.menu-item {\n white-space: nowrap;\n}\n</style>\n\n<style lang=\"less\">\n.data-config-card {\n .ant-card-body {\n overflow-y: auto;\n }\n}\n\n.card-item {\n .ant-checkbox + span {\n width: 100%;\n }\n}\n</style>\n","<template>\n <a-card\n class=\"data-config-card\"\n :head-style=\"{\n backgroundColor: 'rgba(161,212,230,0.3)',\n minHeight: '38px',\n padding: '0 10px'\n }\"\n @dragover.prevent.stop\n @drop.prevent.stop=\"onDrop\"\n >\n <template #title>\n <div class=\"title\">\n <div class=\"title-text\">{{ title }}</div>\n <div\n class=\"add-calculation\"\n v-if=\"!['classificationList', 'seriesList', 'rowHeaderList'].includes(type)\"\n @click.prevent.stop=\"onShowCalculationModal('add')\"\n >\n <plus-outlined class=\"add-calculation-icon\" />\n <span>添加计算指标</span>\n </div>\n </div>\n </template>\n <div\n v-for=\"(cardItem, index) in cardItemList\"\n :key=\"index\"\n :draggable=\"true\"\n @dragstart.stop=\"onDropStart($event, cardItem, index)\"\n @dragover.prevent.stop\n >\n <a-checkbox\n class=\"card-item\"\n :checked=\"cardItem.show\"\n @change=\"onCheckboxChange($event, index)\"\n >\n <!-- editLabelList 和 labelList 都为 cardItemList 映射列表,用于修改label交互 -->\n <!-- editLabelList 是否修改名字, 变为输入框,值为 boolean -->\n <!-- labelList,label 列表 -->\n <div class=\"card-item-inner\">\n <div\n class=\"name\"\n v-if=\"!editLabelList[index] && cardItem.label\"\n @click.prevent.stop=\"onEdit(index)\"\n >\n {{ cardItem.title || cardItem.label }}\n </div>\n <div\n class=\"name placeholder\"\n v-if=\"!editLabelList[index] && !cardItem.label\"\n @click.prevent.stop=\"onEdit(index)\"\n >\n 请点击填入名字\n </div>\n <a-input\n :default-value=\"cardItem.label\"\n size=\"small\"\n v-if=\"editLabelList[index]\"\n v-focus\n @blur=\"onCommitLabelChange($event, index)\"\n @pressEnter=\"onCommitLabelChange($event, index)\"\n @change=\"onLabelChange\"\n />\n <span\n class=\"calculation-icon\"\n @click.prevent.stop=\"\n onShowCalculationModal('edit', cardItem, index)\n \"\n v-if=\"['FORMULA', 'BUILT_IN'].includes(cardItem.calcType)\"\n >\n fx\n </span>\n <a-dropdown :trigger=\"['click']\">\n <setting-outlined class=\"setting-icon\" />\n <template #overlay>\n <a-menu>\n <!-- 仅在分类、系列中设置 -->\n <template\n v-if=\"['classificationList', 'seriesList'].includes(type)\"\n >\n <!-- 升序 -->\n <a-sub-menu\n :title=\"handleSortTitle(cardItem, 'ASC')\"\n key=\"0\"\n >\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"sortItem in sortList\"\n :key=\"sortItem.id\"\n @click=\"onSort(sortItem, index, 'ASC')\"\n >\n {{ sortItem.label }}\n </a-menu-item>\n </a-sub-menu>\n <!-- 降序 -->\n <a-sub-menu\n :title=\"handleSortTitle(cardItem, 'DESC')\"\n key=\"1\"\n >\n <a-menu-item\n class=\"menu-item\"\n style=\"white-space: nowrap\"\n v-for=\"sortItem in sortList\"\n :key=\"sortItem.id\"\n @click=\"onSort(sortItem, index, 'DESC')\"\n >\n {{ sortItem.label }}\n </a-menu-item>\n </a-sub-menu>\n <!-- 自定义排序 -->\n <a-menu-item @click=\"showCustomSortModal(cardItem, index)\">\n {{ handleCustomSortTitle(cardItem) }}\n </a-menu-item>\n <a-menu-divider />\n <!-- 自定义分组 -->\n <a-menu-item @click=\"showCustomGroupModal(cardItem, index)\">\n {{ handleCustomGroupTitle(cardItem) }}\n </a-menu-item>\n <a-menu-divider />\n </template>\n <!-- 过滤 -->\n <a-menu-item @click=\"showFilterModal(cardItem, index)\">\n {{ handleFilterTitle(cardItem) }}\n </a-menu-item>\n <template\n v-if=\"!['classificationList', 'seriesList'].includes(type)\"\n >\n <!-- 汇总方式 -->\n <a-sub-menu :title=\"handleAggregateTitle(cardItem.aggregate)\">\n <a-menu-item\n style=\"white-space: nowrap\"\n v-for=\"aggregate in aggregateList\"\n :key=\"aggregate.value\"\n @click=\"onAggregateChange(aggregate.value, index)\"\n >\n {{ aggregate.name }}\n </a-menu-item>\n </a-sub-menu>\n <a-menu-divider />\n </template>\n </a-menu>\n </template>\n </a-dropdown>\n <delete-outlined\n class=\"delete-icon\"\n @click.prevent=\"onDelete(index)\"\n />\n </div>\n </a-checkbox>\n </div>\n <custom-sort-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"customSortModalRef\"\n />\n <custom-group-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"customGroupModalRef\"\n />\n <filter-modal\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :type=\"type\"\n ref=\"filterModalRef\"\n />\n <calculation-modal\n :type=\"type\"\n :item=\"currentItem\"\n :index=\"currentIndex\"\n :mode=\"calculationModalMode\"\n ref=\"calculationModalRef\"\n />\n </a-card>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, watch, inject } from 'vue'\nimport {\n Card as ACard,\n Checkbox as ACheckbox,\n Input as AInput,\n Dropdown as ADropdown,\n Menu as AMenu,\n SubMenu as ASubMenu,\n MenuItem as AMenuItem,\n MenuDivider as AMenuDivider\n} from 'ant-design-vue'\nimport {\n SettingOutlined,\n DeleteOutlined,\n PlusOutlined\n} from '@ant-design/icons-vue'\nimport focus from '@/directives/focus'\nimport { GRAPHIC_CONFIG, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nimport CustomSortModal from './CustomSortModal.vue'\nimport CustomGroupModal from './CustomGroupModal.vue'\nimport FilterModal from './filter-modal'\nimport CalculationModal from './calculation-modal'\nexport default defineComponent({\n name: 'DataConfigCard',\n directives: {\n focus\n },\n components: {\n CalculationModal,\n FilterModal,\n CustomGroupModal,\n SettingOutlined,\n DeleteOutlined,\n CustomSortModal,\n PlusOutlined,\n ACard,\n ACheckbox,\n AInput,\n ADropdown,\n AMenu,\n ASubMenu,\n AMenuItem,\n AMenuDivider\n },\n props: {\n title: {\n type: String,\n default: ''\n },\n // 卡片类型\n type: {\n type: String,\n default: ''\n }\n },\n setup (props) {\n const graphicConfig = inject(GRAPHIC_CONFIG) as any\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const handleListItemData = (listData: string = '{}') => {\n try {\n const data = JSON.parse(listData)\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n if (['classificationList', 'seriesList'].includes(props.type)) {\n list.forEach((item: { [key: string]: any }) => {\n item.show = false\n })\n }\n reNameSame(list, data)\n list.push(data)\n updateGraphicConfig({\n [props.type]: list\n })\n } catch (e) {\n console.error(e)\n }\n }\n const handleCardItemData = (cardData: string = '{}') => {\n try {\n const { cardItem, type, index } = JSON.parse(cardData)\n if (type === props.type) return\n // 添加新元素\n const currentList = unref(graphicConfig)[props.type]?.slice() || []\n reNameSame(currentList, cardItem)\n currentList.push(cardItem)\n // 删除原先的元素\n const originalList = unref(graphicConfig)[type].slice() || []\n originalList.splice(index, 1)\n // 更新\n updateGraphicConfig({\n [props.type]: currentList,\n [type]: originalList\n })\n } catch (e) {\n console.error(e)\n }\n }\n function reNameSame (list: any, addItem: any) {\n const sameNums = []\n list.forEach((checkItem: any) => {\n if (checkItem.label.includes(addItem.label)) {\n sameNums.push(checkItem.label.split(addItem.label)[1])\n }\n })\n if (sameNums.length >= 1) {\n for (let i = 1; i <= sameNums.length; i++) {\n if (!sameNums.includes(i + '')) {\n addItem.label = addItem.label + i\n break\n }\n }\n }\n }\n const onCheckboxChange = (event, index: number) => {\n const value = (event.target as any)?.checked\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n if (['classificationList', 'seriesList'].includes(props.type)) {\n list.forEach((item: { [key: string]: any }) => {\n item.show = false\n })\n }\n list[index].show = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onDropStart = (\n event: DragEvent,\n cardItem: { [key: string]: any },\n index: number\n ) => {\n event.dataTransfer?.setData(\n 'card-item',\n JSON.stringify({\n cardItem,\n type: props.type,\n index\n })\n )\n }\n const onDropEnd = (index: string) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list.splice(index, 1)\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onDrop = (event: DragEvent) => {\n // 接受列表 或者 卡片之间的数据\n const listItemData = event.dataTransfer?.getData('list-item')\n const cardItemData = event.dataTransfer?.getData('card-item')\n if (listItemData) {\n handleListItemData(listItemData)\n } else if (cardItemData) {\n handleCardItemData(cardItemData)\n }\n }\n const onDragover = () => {}\n const cardItemList = computed(() => unref(graphicConfig)[props.type] || [])\n const editLabelList = ref<boolean[]>([])\n let isLabelChange = false\n watch(\n () => unref(cardItemList).length,\n (length) => {\n editLabelList.value = new Array(length).fill(false)\n },\n {\n flush: 'post',\n immediate: true\n }\n )\n const onDelete = (index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list.splice(index, 1)\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const onEdit = (index: number) => {\n editLabelList.value[index] = true\n }\n const onLabelChange = () => {\n isLabelChange = true\n }\n const onCommitLabelChange = (event: Event, index: number) => {\n editLabelList.value[index] = false\n if (isLabelChange) {\n const value = (event.target as any)?.value\n const list = unref(graphicConfig)[props.type]?.slice() || []\n // 限定单选\n list[index].label = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n isLabelChange = false\n }\n const DEFAULT = 'DEFAULT'\n const sortList = computed(() => {\n // 自身分类加指标\n const list = unref(graphicConfig)[props.type] || []\n const {\n leftAxisList = [],\n rightAxisList = [],\n indicators = []\n } = unref(graphicConfig) || {}\n return [\n {\n id: DEFAULT,\n label: '默认',\n name: '默认'\n },\n ...list,\n ...leftAxisList,\n ...rightAxisList,\n ...indicators\n ]\n })\n // 升降序\n const onSort = (\n item: { [key: string]: any } = {},\n index: number,\n order: 'ASC' | 'DESC' = 'ASC'\n ) => {\n const { label, name, id } = item\n const list = unref(graphicConfig)[props.type]?.slice() || []\n if (id === DEFAULT) {\n delete list[index].sort\n } else {\n list[index].sort = {\n label,\n columnName: name,\n type: 'NORMAL',\n order\n }\n }\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const handleSortTitle = (\n item: { [key: string]: any } = {},\n type: 'ASC' | 'DESC' = 'ASC'\n ) => {\n const map = {\n ASC: '升序',\n DESC: '降序'\n }\n const text = map[type]\n const { sort } = item\n const { label, order } = sort || {}\n return label && order === type ? `${text}(${label})` : text\n }\n const currentItem = ref()\n const currentIndex = ref()\n const customSortModalRef = ref()\n const customGroupModalRef = ref()\n const showCustomSortModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(customSortModalRef)?.showModal()\n }\n const handleCustomSortTitle = (item: { [key: string]: any }) => {\n return '自定义排序' + (item?.sort?.type === 'CUSTOM' ? '(已配置)' : '')\n }\n const showCustomGroupModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(customGroupModalRef)?.showModal()\n }\n const handleCustomGroupTitle = (item: { [key: string]: any }) => {\n return '自定义分组' + (item?.customGroup != null ? '(已配置)' : '')\n }\n // 汇总方式\n const aggregateList = [\n {\n name: '总和',\n value: 'SUM'\n },\n {\n name: '平均数',\n value: 'AVG'\n },\n {\n name: '最小值',\n value: 'MIN'\n },\n {\n name: '最大值',\n value: 'MAX'\n },\n {\n name: '计数',\n value: 'COUNT'\n }\n ]\n const onAggregateChange = (value: string, index: number) => {\n const list = unref(graphicConfig)[props.type]?.slice() || []\n list[index].aggregate = value\n updateGraphicConfig({\n [props.type]: list\n })\n }\n const handleAggregateTitle = (\n key: 'SUM' | 'AVG' | 'MIN' | 'MAX' | 'COUNT' = 'SUM'\n ) => {\n const map = {\n SUM: '总和',\n AVG: '平均数',\n MIN: '最小值',\n MAX: '最大值',\n COUNT: '计数'\n }\n return `汇总方式(${map[key]})`\n }\n\n const handleFilterTitle = (item: { [key: string]: any } = {}) => {\n return (\n '过滤' +\n (item?.conditions && item?.conditions?.length > 0 ? '(已配置)' : '')\n )\n }\n const filterModalRef = ref()\n const showFilterModal = (\n item: { [key: string]: any } = {},\n index: number\n ) => {\n currentItem.value = item\n currentIndex.value = index\n unref(filterModalRef).showModal()\n }\n const calculationModalRef = ref()\n const calculationModalMode = ref<'add' | 'edit'>('add')\n const onShowCalculationModal = (\n mode: 'add' | 'edit',\n item?: { [key: string]: any },\n index?: number\n ) => {\n calculationModalMode.value = mode\n if (mode === 'edit') {\n currentItem.value = item\n currentIndex.value = index\n }\n unref(calculationModalRef)?.showModal()\n }\n return {\n onCheckboxChange,\n onDrop,\n onDropStart,\n onDropEnd,\n onDragover,\n cardItemList,\n onDelete,\n onEdit,\n onCommitLabelChange,\n sortList,\n onSort,\n handleSortTitle,\n showCustomSortModal,\n customSortModalRef,\n currentItem,\n currentIndex,\n handleCustomSortTitle,\n handleCustomGroupTitle,\n customGroupModalRef,\n showCustomGroupModal,\n editLabelList,\n onLabelChange,\n aggregateList,\n onAggregateChange,\n handleAggregateTitle,\n onShowCalculationModal,\n handleFilterTitle,\n filterModalRef,\n showFilterModal,\n calculationModalRef,\n calculationModalMode\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-config-card {\n display: flex;\n flex-direction: column;\n height: 280px;\n}\n\n.card-item {\n background-color: rgba(161, 212, 230, 0.3);\n width: 100%;\n height: 100%;\n padding: 5px;\n margin: 3px 0;\n}\n\n.title {\n display: flex;\n justify-content: space-between;\n}\n\n.add-calculation {\n cursor: pointer;\n font-size: 13px;\n color: #3f8ce8;\n line-height: 24px;\n}\n\n.add-calculation-icon {\n color: #3f8ce8;\n margin-right: 3px;\n}\n\n.ant-checkbox + span {\n width: 100% !important;\n}\n\n.card-item-inner {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.name {\n width: 100%;\n}\n\n.placeholder {\n color: red;\n}\n\n.setting-icon {\n color: #545;\n margin-left: 5px;\n}\n\n.delete-icon {\n color: #ff0000;\n margin-left: 5px;\n}\n\n.calculation-icon {\n font-weight: bold;\n font-style: italic;\n}\n\n.menu-item {\n white-space: nowrap;\n}\n</style>\n\n<style lang=\"less\">\n.data-config-card {\n .ant-card-body {\n overflow-y: auto;\n }\n}\n\n.card-item {\n .ant-checkbox + span {\n width: 100%;\n }\n}\n</style>\n","export const cardTypeMap = {\n classificationList: {\n title: '分类'\n },\n seriesList: {\n title: '系列'\n },\n leftAxisList: {\n title: '左值轴'\n },\n rightAxisList: {\n title: '右值轴'\n },\n indicators: {\n title: '数值'\n },\n queryColumnList: {\n title: '数据'\n },\n rowHeaderList: {\n title: '行表头'\n }\n}\n","<template>\n <div class=\"data-group\">\n <template v-for=\"card in cards\" :key=\"card.type\">\n <data-config-card class=\"data-config-card\" :type=\"card.type\" v-bind=\"card\" />\n </template>\n </div>\n</template>\n<script lang=\"ts\">\nimport { computed, defineComponent, reactive, ref, unref, inject } from 'vue'\nimport DataConfigCard from './data-config-card'\nimport { cardTypeMap } from './data'\nimport { SELECTED_COMPONENT, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nexport default defineComponent({\n name: 'DataConfigGroup',\n components: {\n DataConfigCard\n },\n setup () {\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n const selectedComponentType = computed(() => unref(selectedComponent)?.type)\n const isGroupTable = computed(() => !!unref(selectedComponent)?.isGroupTable)\n const cardsMap = ref({})\n const cards = reactive<{ [key: string]: any }[]>([])\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const hasOwn = (v: object, k: string | symbol): k is keyof typeof v => Object.prototype.hasOwnProperty.call(v, k)\n const handleGraphicConfigMap = () => {\n const graphicConfig = cloneDeep(unref(selectedComponent)?.graphicConfig)\n const allMap = ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList', 'indicators', 'rowHeaderList', 'queryColumnList']\n const graphicConfigMap = {\n // leftAxisList + rightAxisList = indicatorList,只是 location 是 LEFT,RIGHT\n pie: ['classificationList', 'indicators'],\n bar: ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList'],\n line: ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList'],\n comboGraph: ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList'],\n radar: ['classificationList', 'seriesList', 'leftAxisList'],\n table: isGroupTable.value ? ['rowHeaderList', 'indicators'] : ['queryColumnList'],\n text: ['indicators'],\n proportion: ['indicators'],\n select: ['queryColumnList'],\n checkbox: ['queryColumnList'],\n radio: ['queryColumnList']\n } as { [key: string]: any }\n const startStr = 'ecan'\n let type = unref(selectedComponentType) as string\n if (type.startsWith(startStr)) {\n const startIndex = startStr.length\n type = type.slice(startIndex, startIndex + 1)?.toLowerCase() + type.slice(startIndex + 1)\n }\n const componentMapKeys = graphicConfigMap[type]\n const map = cardTypeMap as { [key: string]: any }\n const len = componentMapKeys?.length || 0\n for (let i = 0; i < len; i++) {\n const componentMapKey = (componentMapKeys[i]) as string\n // 为空直接跳过\n if (!componentMapKey) break\n cards.push({\n ...map[componentMapKey],\n type: componentMapKey\n })\n }\n\n // 用于切换graphicConfig变量后清空无效的变量,比如table切到分组表的时候,要把queryColumnList=[]\n for (const item of allMap) {\n if (hasOwn(graphicConfig, item) && !componentMapKeys.find((v: string) => v === item)) {\n graphicConfig[item] = []\n }\n }\n updateGraphicConfig(graphicConfig)\n }\n\n handleGraphicConfigMap()\n\n return {\n cardsMap,\n cards\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-group {\n display: flex;\n}\n\n.data-config-card {\n width: 25%;\n\n &:not(:last-child) {\n margin-right: 15px;\n }\n}\n</style>\n\n<style lang=\"less\">\n.data-group {\n .ant-card-body {\n padding: 10px;\n }\n}\n</style>\n","<template>\n <div class=\"data-group\">\n <template v-for=\"card in cards\" :key=\"card.type\">\n <data-config-card class=\"data-config-card\" :type=\"card.type\" v-bind=\"card\" />\n </template>\n </div>\n</template>\n<script lang=\"ts\">\nimport { computed, defineComponent, reactive, ref, unref, inject } from 'vue'\nimport DataConfigCard from './data-config-card'\nimport { cardTypeMap } from './data'\nimport { SELECTED_COMPONENT, UPDATE_GRAPHIC_CONFIG } from '@/utils/constant'\nimport { cloneDeep } from 'lodash-es'\nexport default defineComponent({\n name: 'DataConfigGroup',\n components: {\n DataConfigCard\n },\n setup () {\n const selectedComponent = inject(SELECTED_COMPONENT) as any\n const selectedComponentType = computed(() => unref(selectedComponent)?.type)\n const isGroupTable = computed(() => !!unref(selectedComponent)?.isGroupTable)\n const cardsMap = ref({})\n const cards = reactive<{ [key: string]: any }[]>([])\n const updateGraphicConfig = inject(UPDATE_GRAPHIC_CONFIG) as any\n const hasOwn = (v: object, k: string | symbol): k is keyof typeof v => Object.prototype.hasOwnProperty.call(v, k)\n const handleGraphicConfigMap = () => {\n const graphicConfig = cloneDeep(unref(selectedComponent)?.graphicConfig)\n const allMap = ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList', 'indicators', 'rowHeaderList', 'queryColumnList']\n const graphicConfigMap = {\n // leftAxisList + rightAxisList = indicatorList,只是 location 是 LEFT,RIGHT\n pie: ['classificationList', 'indicators'],\n bar: ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList'],\n line: ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList'],\n comboGraph: ['classificationList', 'seriesList', 'leftAxisList', 'rightAxisList'],\n radar: ['classificationList', 'seriesList', 'leftAxisList'],\n table: isGroupTable.value ? ['rowHeaderList', 'indicators'] : ['queryColumnList'],\n text: ['indicators'],\n proportion: ['indicators'],\n select: ['queryColumnList'],\n checkbox: ['queryColumnList'],\n radio: ['queryColumnList']\n } as { [key: string]: any }\n const startStr = 'ecan'\n let type = unref(selectedComponentType) as string\n if (type.startsWith(startStr)) {\n const startIndex = startStr.length\n type = type.slice(startIndex, startIndex + 1)?.toLowerCase() + type.slice(startIndex + 1)\n }\n const componentMapKeys = graphicConfigMap[type]\n const map = cardTypeMap as { [key: string]: any }\n const len = componentMapKeys?.length || 0\n for (let i = 0; i < len; i++) {\n const componentMapKey = (componentMapKeys[i]) as string\n // 为空直接跳过\n if (!componentMapKey) break\n cards.push({\n ...map[componentMapKey],\n type: componentMapKey\n })\n }\n\n // 用于切换graphicConfig变量后清空无效的变量,比如table切到分组表的时候,要把queryColumnList=[]\n for (const item of allMap) {\n if (hasOwn(graphicConfig, item) && !componentMapKeys.find((v: string) => v === item)) {\n graphicConfig[item] = []\n }\n }\n updateGraphicConfig(graphicConfig)\n }\n\n handleGraphicConfigMap()\n\n return {\n cardsMap,\n cards\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-group {\n display: flex;\n}\n\n.data-config-card {\n width: 25%;\n\n &:not(:last-child) {\n margin-right: 15px;\n }\n}\n</style>\n\n<style lang=\"less\">\n.data-group {\n .ant-card-body {\n padding: 10px;\n }\n}\n</style>\n","export interface PropsGroup {\r\n title?: string // 标题\r\n enableProps?: string // 是否能使用(禁用)\r\n onlyType?: string | string [],\r\n excludeType?: string | string []\r\n props: string [] // 属性组\r\n}\r\n\r\nexport type PropsGroups = PropsGroup[]\r\n\r\nexport interface DetailPropsGroup {\r\n title?: string\r\n enableProps?: boolean\r\n onlyType?: string | string []\r\n excludeType?: string | string []\r\n // enablePropsName 就是 PropsGroup 的 enableProps\r\n enablePropsName?: string\r\n props: {\r\n [key: string]: any\r\n }\r\n}\r\n\r\nexport type DetailPropsGroups = DetailPropsGroup[]\r\n\r\n// 没有title属性直接展示属性\r\n// 有tilt属性才有折叠面板\r\n// 此属性控制属性配置面板的顺序\r\nexport const propsGroups: PropsGroups = [\r\n {\r\n title: '基本属性',\r\n props: [\r\n 'name',\r\n 'width',\r\n 'height',\r\n 'colors'\r\n ]\r\n },\r\n {\r\n title: '系列',\r\n props: [\r\n 'seriesTypes'\r\n ]\r\n },\r\n {\r\n title: '折线图',\r\n onlyType: ['line', 'comboGraph'],\r\n props: [\r\n 'areaStyleOpacity',\r\n 'smooth',\r\n 'lineStyleWidth',\r\n 'symbolSize'\r\n ]\r\n },\r\n {\r\n title: '柱状图',\r\n onlyType: ['bar', 'comboGraph'],\r\n props: [\r\n 'barWidth',\r\n 'isUseHorizontalAxis',\r\n 'axisInverse',\r\n 'isStack',\r\n 'labelShow'\r\n ]\r\n },\r\n {\r\n title: '饼图',\r\n onlyType: 'pie',\r\n props: [\r\n 'centerTop',\r\n 'centerLeft',\r\n 'innerRadius',\r\n 'outerRadius',\r\n 'roseType',\r\n 'minAngle'\r\n ]\r\n },\r\n {\r\n title: '布局',\r\n props: [\r\n 'gridTop',\r\n 'gridBottom',\r\n 'gridLeft',\r\n 'gridRight',\r\n 'gridContainLabel'\r\n ]\r\n },\r\n {\r\n title: 'x轴',\r\n props: [\r\n 'xAxisLabelColor',\r\n 'xAxisLineStyleColor',\r\n 'xAxisLabelWidth',\r\n 'xAxisLabelOverflow',\r\n 'xAxisLabelRotate',\r\n 'xAxisTickShow',\r\n 'xAxisSplitLineShow',\r\n 'xAxisSplitLineStyleColor',\r\n 'xAxisLabelFormatter',\r\n 'xAxisInverse',\r\n 'xAxisMinInterval',\r\n 'xAxisLabelInterval'\r\n ]\r\n },\r\n {\r\n title: 'y轴',\r\n props: [\r\n 'yAxisLabelColor',\r\n 'yAxisLineStyleColor',\r\n 'yAxisLineAlwaysDisplay',\r\n 'yAxisLabelWidth',\r\n 'yAxisLabelOverflow',\r\n 'yAxisLabelRotate',\r\n 'yAxisSplitLineShow',\r\n 'yAxisSplitLineStyleColor',\r\n 'yAxisLabelFormatter',\r\n 'yAxisInverse',\r\n 'yAxisMinInterval',\r\n 'yAxis'\r\n ]\r\n },\r\n {\r\n title: '标签',\r\n enableProps: 'labelShow',\r\n props: [\r\n 'labelFormatter',\r\n 'labelColor',\r\n 'isUseLabelColors',\r\n 'labelFontSize',\r\n 'labelPosition'\r\n ]\r\n },\r\n {\r\n title: '标签引导线',\r\n enableProps: 'labelLineShow',\r\n props: [\r\n 'labelLineLength',\r\n 'labelLineLength2'\r\n ]\r\n },\r\n {\r\n title: '图例',\r\n enableProps: 'legendShow',\r\n props: [\r\n 'legendTextStyleColor',\r\n 'legendTop',\r\n 'legendLeft',\r\n 'legendOrient'\r\n ]\r\n },\r\n {\r\n title: '提示框',\r\n enableProps: 'tooltipShow',\r\n props: [\r\n 'tooltipTrigger',\r\n 'tooltipFormatter',\r\n 'tooltipTextStyleColor'\r\n ]\r\n },\r\n {\r\n title: '工具栏',\r\n enableProps: 'toolboxShow',\r\n props: [\r\n 'toolboxOrient',\r\n 'toolboxItemSize',\r\n 'toolboxItemGap',\r\n 'toolboxLeft',\r\n 'toolboxTop',\r\n 'toolboxLocation',\r\n 'toolboxDownloadShow',\r\n 'toolboxDataZoomShow',\r\n 'toolboxInfoShow',\r\n 'toolboxDownloadUrl',\r\n 'toolboxInfoText'\r\n ]\r\n }\r\n]\r\n","export interface PropToAttributeConfig {\n label: string // 标题\n component: string // 需要转化的组件,如 width 由 numberInput 控制\n style?: string // 组件样式\n valueProp?: any // 值的属性字段\n value?: string // 值\n changeValueEventName?: string // 改变值的事件\n options?: { value: any; label?: any }[] // 子组件option\n updateMode?: 'page' | 'component' // 修改页面、组件页面供属性\n props?: { [key: string]: any } // 组件的 v-bind\n events?: { [key: string]: (e: any) => void } // 组件的 v-on\n onlyType?: string | string[] // 限定数组类型 onlyType\n excludeType?: string | string[]\n layout?: 'horizontal' | 'vertical'\n}\n\ntype PropToAttributeConfigList = PropToAttributeConfig[]\n\n// 属性转换配置(表单)\nexport type PropsToAttributeConfig = {\n [key: string]: PropToAttributeConfig | PropToAttributeConfigList\n}\n\n// 属性转表单的字典映射\nexport const mapAttributeProps: PropsToAttributeConfig = {\n name: {\n label: '控件别名',\n component: 'input'\n },\n title: {\n label: '标题',\n component: 'input'\n },\n width: {\n label: '宽度',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 0\n }\n },\n height: {\n label: '高度',\n component: 'input-number',\n props: {\n suffix: 'px',\n min: 10\n }\n },\n colors: {\n label: '颜色',\n component: 'color-group-pick'\n },\n centerLeft: {\n label: '水平位置',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n centerTop: {\n label: '垂直位置',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n innerRadius: {\n label: '内半径',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n outerRadius: {\n label: '外半径',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n tooltipTrigger: {\n label: '触发条件',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '图形',\n value: 'item'\n },\n {\n label: '坐标轴',\n value: 'axis'\n },\n {\n label: '无',\n value: 'none'\n }\n ]\n }\n },\n tooltipTextStyleColor: {\n label: '颜色',\n component: 'color-pick'\n },\n tooltipFormatter: {\n label: '格式化',\n component: 'textarea'\n },\n legendTextStyleColor: {\n label: '颜色',\n component: 'color-pick'\n },\n legendTop: {\n label: '垂直位置',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '上',\n value: 'top'\n },\n {\n label: '中',\n value: 'middle'\n },\n {\n label: '下',\n value: 'bottom'\n }\n ]\n }\n },\n legendLeft: {\n label: '水平位置',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '左',\n value: 'left'\n },\n {\n label: '中',\n value: 'center'\n },\n {\n label: '右',\n value: 'right'\n }\n ]\n }\n },\n legendOrient: {\n label: '布局',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '垂直',\n value: 'vertical'\n },\n {\n label: '水平',\n value: 'horizontal'\n }\n ]\n }\n },\n labelFormatter: {\n label: '格式化',\n component: 'input'\n },\n labelColor: {\n label: '标签颜色',\n component: 'color-pick'\n },\n isUseLabelColors: {\n label: '系列色',\n component: 'switch'\n },\n labelFontSize: {\n label: '字体大小',\n component: 'input-number',\n props: {\n min: 12,\n suffix: 'px'\n }\n },\n labelPosition: [\n {\n label: '位置',\n component: 'radio-group',\n onlyType: 'pie',\n props: {\n options: [\n {\n label: '外侧',\n value: 'outside'\n },\n {\n label: '内侧',\n value: 'inside'\n },\n {\n label: '中心',\n value: 'center'\n }\n ]\n }\n },\n {\n label: '位置',\n component: 'select',\n onlyType: 'bar',\n props: {\n options: [\n {\n label: '上',\n value: 'top'\n },\n {\n label: '中',\n value: 'inside'\n },\n {\n label: '下',\n value: 'bottom'\n },\n {\n label: '右',\n value: 'right'\n },\n {\n label: '左',\n value: 'left'\n }\n ]\n }\n }\n ],\n labelLineLength: {\n label: '第一段',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n labelLineLength2: {\n label: '第二段',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n symbolSize: {\n label: '标记点尺寸',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n smooth: {\n label: '线条光滑',\n component: 'switch'\n },\n lineStyleWidth: {\n label: '线条宽度',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n xAxisSplitLineShow: {\n label: '分割线',\n component: 'switch'\n },\n xAxisSplitLineStyleColor: {\n label: '分割线颜色',\n component: 'color-pick'\n },\n xAxisLabelColor: {\n label: '名称颜色',\n component: 'color-pick'\n },\n xAxisLineStyleColor: {\n label: '横边颜色',\n component: 'color-pick'\n },\n xAxisTickShow: {\n label: '显示刻度',\n component: 'switch'\n },\n xAxisLabelFormatter: {\n label: '格式化',\n component: 'input'\n },\n yAxisSplitLineShow: {\n label: '分割线',\n component: 'switch'\n },\n yAxisLineAlwaysDisplay: {\n label: '显示竖边',\n component: 'switch'\n },\n yAxisSplitLineStyleColor: {\n label: '分割线颜色',\n component: 'color-pick'\n },\n yAxisLabelColor: {\n label: '名称颜色',\n component: 'color-pick'\n },\n yAxisLineStyleColor: {\n label: '竖边颜色',\n component: 'color-pick'\n },\n yAxisLabelFormatter: {\n label: '格式化',\n component: 'input'\n },\n roseType: {\n label: '玫瑰图',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '不展示',\n value: ''\n },\n {\n label: '圆心角',\n value: 'area'\n },\n {\n label: '半径',\n value: 'radius'\n }\n ]\n }\n },\n yAxis: {\n label: '系列',\n component: 'form-group',\n layout: 'vertical',\n props: {\n max: 2,\n format: [\n {\n label: ['左轴', '右轴'],\n type: 'input',\n value: 'axisLabelFormatter',\n props: {\n options: [\n {\n label: '柱状图',\n value: 'bar'\n },\n {\n label: '折线图',\n value: 'line'\n }\n ]\n }\n }\n ]\n }\n },\n seriesTypes: {\n label: '系列',\n component: 'form-group',\n layout: 'vertical',\n props: {\n format: [\n {\n label: '系列',\n type: 'select',\n value: 'type',\n useLabelIndex: true,\n props: {\n options: [\n {\n label: '柱状图',\n value: 'bar'\n },\n {\n label: '折线图',\n value: 'line'\n }\n ]\n }\n },\n {\n label: '对应轴',\n type: 'select',\n value: 'axisIndex',\n props: {\n options: [\n {\n label: '左轴',\n value: 0\n },\n {\n label: '右轴',\n value: 1\n }\n ]\n }\n },\n {\n label: '提示框格式化',\n type: 'input',\n value: 'tooltipFormatter'\n }\n ]\n }\n },\n barWidth: {\n label: '宽度',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0\n }\n },\n gridTop: {\n label: '上侧距离',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n gridBottom: {\n label: '下侧距离',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n gridLeft: {\n label: '左侧距离',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n gridRight: {\n label: '右侧距离',\n component: 'input-number',\n props: {\n suffix: '%',\n min: 0,\n max: 100\n }\n },\n gridContainLabel: {\n label: '包含刻度标签',\n component: 'switch'\n },\n toolboxOrient: {\n label: '排版',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '水平',\n value: 'horizontal'\n },\n {\n label: '垂直',\n value: 'vertical'\n }\n ]\n }\n },\n toolboxItemSize: {\n label: '图标大小',\n component: 'input-number'\n },\n toolboxItemGap: {\n label: '图标间距',\n component: 'input-number'\n },\n toolboxLeft: {\n label: '水平位置',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '居左',\n value: 'left'\n },\n {\n label: '居中',\n value: 'center'\n },\n {\n label: '居右',\n value: 'right'\n }\n ]\n }\n },\n toolboxTop: {\n label: '垂直位置',\n component: 'radio-group',\n props: {\n options: [\n {\n label: '顶部',\n value: 'top'\n },\n {\n label: '居中',\n value: 'middle'\n },\n {\n label: '底部',\n value: 'bottom'\n }\n ]\n }\n },\n toolboxDownloadUrl: {\n label: '下载文件地址',\n component: 'input'\n },\n toolboxInfoText: {\n label: '说明信息内容',\n component: 'input'\n },\n isUseHorizontalAxis: {\n label: '横向排列',\n component: 'switch'\n },\n axisInverse: {\n label: '倒叙排列',\n component: 'switch'\n },\n xAxisInverse: {\n label: '图形反转',\n component: 'switch'\n },\n yAxisInverse: {\n label: '图形反转',\n component: 'switch'\n },\n areaStyleOpacity: {\n label: '面积透明度',\n component: 'input-number',\n props: {\n step: 0.1,\n min: 0,\n max: 1\n }\n },\n xAxisLabelWidth: {\n label: '名称宽度',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n xAxisLabelOverflow: {\n label: '名称溢出',\n component: 'radio-group',\n props: {\n optionType: 'button',\n options: [\n {\n label: '无',\n value: 'none'\n },\n {\n label: '换行',\n value: 'break'\n },\n {\n label: '省略号',\n value: 'truncate'\n }\n ]\n }\n },\n xAxisLabelRotate: {\n label: '名称旋转',\n component: 'input-number'\n },\n yAxisLabelWidth: {\n label: '名称宽度',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n yAxisLabelOverflow: {\n label: '名称溢出',\n component: 'radio-group',\n props: {\n optionType: 'button',\n options: [\n {\n label: '无',\n value: 'none'\n },\n {\n label: '换行',\n value: 'break'\n },\n {\n label: '省略号',\n value: 'truncate'\n }\n ]\n }\n },\n yAxisLabelRotate: {\n label: '名称旋转',\n component: 'input-number'\n },\n isStack: {\n label: '是否堆叠',\n component: 'switch'\n },\n labelShow: {\n label: '展示标签',\n component: 'switch'\n },\n xAxisMinInterval: {\n label: '最小间距',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n yAxisMinInterval: {\n label: '最小间距',\n component: 'input-number',\n props: {\n min: 0\n }\n },\n minAngle: {\n label: '最小角度',\n component: 'input-number',\n props: {\n min: 0,\n max: 360\n }\n },\n xAxisLabelInterval: {\n label: '标签间隔',\n component: 'input-number',\n props: {\n min: -1\n }\n },\n toolboxLocation: {\n label: '快速定位',\n component: 'switch'\n },\n toolboxDownloadShow: {\n label: '使用数据下载',\n component: 'switch'\n },\n toolboxDataZoomShow: {\n label: '使用放大',\n component: 'switch'\n },\n toolboxInfoShow: {\n label: '使用说明信息',\n component: 'switch'\n }\n}\n","/**\r\n * 字符串1 中是否包含 字符串2 (会全部转成小写)\r\n * @param v1 字符串1\r\n * @param v2 字符串2 | 字符串数组\r\n * @constructor\r\n */\r\nexport const lowerCaseIncludes = (v1: any, v2: any): boolean => {\r\n if (typeof v1 === 'string' && typeof v2 === 'string') {\r\n return v1.toLocaleLowerCase().includes(v2.toLocaleLowerCase())\r\n } else if (typeof v1 === 'string' && Array.isArray(v2)) {\r\n const len = v2.length\r\n for (let i = 0; i < len; i++) {\r\n const s = v2[i]\r\n if (typeof s === 'string' && v1.toLocaleLowerCase().includes(s.toLocaleLowerCase())) {\r\n return true\r\n }\r\n }\r\n }\r\n return false\r\n}\r\n\r\nexport const handleFormatter = (formatter: string) => {\r\n return formatter.replace(/\\\\n/g, '\\n')\r\n}\r\n","<template>\n <a-input\n :value=\"value\"\n :disabled=\"disabled\"\n @change=\"onInputChange\"\n v-focus\n />\n</template>\n\n<script lang=\"ts\">\nimport { Input as AInput } from 'ant-design-vue'\nimport { defineComponent } from 'vue'\nexport default defineComponent({\n name: 'Input',\n directives: {\n focus\n },\n props: {\n value: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n components: {\n AInput\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onInputChange = (e: any) => {\n emit('change', e.target.value)\n }\n return {\n onInputChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-input\n :value=\"value\"\n :disabled=\"disabled\"\n @change=\"onInputChange\"\n v-focus\n />\n</template>\n\n<script lang=\"ts\">\nimport { Input as AInput } from 'ant-design-vue'\nimport { defineComponent } from 'vue'\nexport default defineComponent({\n name: 'Input',\n directives: {\n focus\n },\n props: {\n value: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n components: {\n AInput\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onInputChange = (e: any) => {\n emit('change', e.target.value)\n }\n return {\n onInputChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-input-number\n :value=\"inputValue\"\n :min=\"min\"\n :max=\"max\"\n :step=\"step\"\n :parser=\"parser\"\n :addon-before=\"Array.isArray(prefix) ? undefined : prefix\"\n :addon-after=\"Array.isArray(suffix) ? undefined : prefix\"\n @change=\"onInputChange\"\n @blur=\"onInputBlur\"\n >\n <template #addonBefore v-if=\"Array.isArray(prefix) && prefix.length > 0\">\n <a-select v-model:value=\"prefixValue\" @change=\"onPrefixChange\">\n <a-select-option\n v-for=\"({ label, value }, index) in prefix\"\n :key=\"index\"\n :value=\"value\"\n >\n {{ label }}\n </a-select-option>\n </a-select>\n </template>\n <template #addonAfter v-if=\"Array.isArray(suffix) && suffix.length > 0\">\n <a-select v-model:value=\"suffixValue\" @change=\"onSuffixChange\">\n <a-select-option\n v-for=\"({ label, value }, index) in suffix\"\n :key=\"index\"\n :value=\"value\"\n >\n {{ label }}\n </a-select-option>\n </a-select>\n </template>\n </a-input-number>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, PropType } from 'vue'\nimport { InputNumber as AInputNumber, Select as ASelect, SelectOption as ASelectOption } from 'ant-design-vue'\nexport default defineComponent({\n name: 'InputNumber',\n props: {\n value: {\n type: [String, Number, Object],\n default: ''\n },\n valueKey: {\n type: String,\n default: 'value'\n },\n prefixValueKey: {\n type: String,\n default: 'prefix'\n },\n prefix: {\n type: [String, Array] as PropType<any>,\n default: ''\n },\n suffixValueKey: {\n type: String,\n default: 'suffix'\n },\n suffix: {\n type: [String, Array] as PropType<any>,\n default: ''\n },\n min: {\n type: Number,\n default: -Infinity\n },\n max: {\n type: Number,\n default: Infinity\n },\n step: {\n type: [String, Number],\n default: 1\n },\n useBlurEvent: {\n type: Boolean,\n default: true\n }\n },\n components: {\n AInputNumber,\n ASelect,\n ASelectOption\n },\n emits: ['change'],\n setup (props, { emit }) {\n const inputValue = computed(() => {\n const value = props.value\n if (typeof value === 'string') {\n return parseFloat(value)\n } else if (typeof value === 'object' && value != null) {\n return value[props.valueKey]\n }\n return value\n })\n const getPrefixOrSuffixValue = (type: 'prefix' | 'suffix') => {\n if (props.value != null && typeof props.value === 'object') {\n return props.value[props[`${type}ValueKey`]]\n } else if (Array.isArray(props[type])) {\n return props[type][0] && (props[type][0] as any).value\n }\n return null\n }\n const prefixValue = ref(getPrefixOrSuffixValue('prefix'))\n const suffixValue = ref(getPrefixOrSuffixValue('suffix'))\n const onInputChange = (value: string) => {\n const suffix = props.suffix\n // 如果后缀不传\n if (Array.isArray(props.prefix) || Array.isArray(props.suffix)) {\n emit('change', {\n [props.valueKey]: value,\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n } else if (suffix === '' || value == null) {\n emit('change', value)\n } else {\n emit('change', `${value}${suffix}`)\n }\n }\n\n const onPrefixChange = () => {\n if (Array.isArray(props.prefix)) {\n emit('change', {\n [props.valueKey]: unref(inputValue),\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n }\n }\n\n const onSuffixChange = () => {\n if (Array.isArray(props.suffix)) {\n emit('change', {\n [props.valueKey]: unref(inputValue),\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n }\n }\n\n const parser = (value: string) => {\n if (typeof props.suffix === 'string') {\n return value.replace(props.suffix, '')\n } else if (\n Array.isArray(props.suffix) &&\n props.value != null &&\n typeof props.value === 'object'\n ) {\n return value.replace(props.value[props.suffixValueKey], '')\n }\n return value\n }\n const onInputBlur = () => {\n if (props.useBlurEvent) {\n emit('change', null, false)\n }\n }\n return {\n inputValue,\n onInputChange,\n parser,\n onInputBlur,\n prefixValue,\n suffixValue,\n onPrefixChange,\n onSuffixChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-input-number\n :value=\"inputValue\"\n :min=\"min\"\n :max=\"max\"\n :step=\"step\"\n :parser=\"parser\"\n :addon-before=\"Array.isArray(prefix) ? undefined : prefix\"\n :addon-after=\"Array.isArray(suffix) ? undefined : prefix\"\n @change=\"onInputChange\"\n @blur=\"onInputBlur\"\n >\n <template #addonBefore v-if=\"Array.isArray(prefix) && prefix.length > 0\">\n <a-select v-model:value=\"prefixValue\" @change=\"onPrefixChange\">\n <a-select-option\n v-for=\"({ label, value }, index) in prefix\"\n :key=\"index\"\n :value=\"value\"\n >\n {{ label }}\n </a-select-option>\n </a-select>\n </template>\n <template #addonAfter v-if=\"Array.isArray(suffix) && suffix.length > 0\">\n <a-select v-model:value=\"suffixValue\" @change=\"onSuffixChange\">\n <a-select-option\n v-for=\"({ label, value }, index) in suffix\"\n :key=\"index\"\n :value=\"value\"\n >\n {{ label }}\n </a-select-option>\n </a-select>\n </template>\n </a-input-number>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref, unref, PropType } from 'vue'\nimport { InputNumber as AInputNumber, Select as ASelect, SelectOption as ASelectOption } from 'ant-design-vue'\nexport default defineComponent({\n name: 'InputNumber',\n props: {\n value: {\n type: [String, Number, Object],\n default: ''\n },\n valueKey: {\n type: String,\n default: 'value'\n },\n prefixValueKey: {\n type: String,\n default: 'prefix'\n },\n prefix: {\n type: [String, Array] as PropType<any>,\n default: ''\n },\n suffixValueKey: {\n type: String,\n default: 'suffix'\n },\n suffix: {\n type: [String, Array] as PropType<any>,\n default: ''\n },\n min: {\n type: Number,\n default: -Infinity\n },\n max: {\n type: Number,\n default: Infinity\n },\n step: {\n type: [String, Number],\n default: 1\n },\n useBlurEvent: {\n type: Boolean,\n default: true\n }\n },\n components: {\n AInputNumber,\n ASelect,\n ASelectOption\n },\n emits: ['change'],\n setup (props, { emit }) {\n const inputValue = computed(() => {\n const value = props.value\n if (typeof value === 'string') {\n return parseFloat(value)\n } else if (typeof value === 'object' && value != null) {\n return value[props.valueKey]\n }\n return value\n })\n const getPrefixOrSuffixValue = (type: 'prefix' | 'suffix') => {\n if (props.value != null && typeof props.value === 'object') {\n return props.value[props[`${type}ValueKey`]]\n } else if (Array.isArray(props[type])) {\n return props[type][0] && (props[type][0] as any).value\n }\n return null\n }\n const prefixValue = ref(getPrefixOrSuffixValue('prefix'))\n const suffixValue = ref(getPrefixOrSuffixValue('suffix'))\n const onInputChange = (value: string) => {\n const suffix = props.suffix\n // 如果后缀不传\n if (Array.isArray(props.prefix) || Array.isArray(props.suffix)) {\n emit('change', {\n [props.valueKey]: value,\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n } else if (suffix === '' || value == null) {\n emit('change', value)\n } else {\n emit('change', `${value}${suffix}`)\n }\n }\n\n const onPrefixChange = () => {\n if (Array.isArray(props.prefix)) {\n emit('change', {\n [props.valueKey]: unref(inputValue),\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n }\n }\n\n const onSuffixChange = () => {\n if (Array.isArray(props.suffix)) {\n emit('change', {\n [props.valueKey]: unref(inputValue),\n [props.prefixValueKey]: unref(prefixValue),\n [props.suffixValueKey]: unref(suffixValue)\n })\n }\n }\n\n const parser = (value: string) => {\n if (typeof props.suffix === 'string') {\n return value.replace(props.suffix, '')\n } else if (\n Array.isArray(props.suffix) &&\n props.value != null &&\n typeof props.value === 'object'\n ) {\n return value.replace(props.value[props.suffixValueKey], '')\n }\n return value\n }\n const onInputBlur = () => {\n if (props.useBlurEvent) {\n emit('change', null, false)\n }\n }\n return {\n inputValue,\n onInputChange,\n parser,\n onInputBlur,\n prefixValue,\n suffixValue,\n onPrefixChange,\n onSuffixChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-radio-group\n :value=\"value\"\n :optionType=\"optionType\"\n @change=\"onRadioChange\"\n >\n <a-radio-button\n v-for=\"option in options\"\n :key=\"option.value\"\n :value=\"option.value\"\n >\n {{ option.label }}\n </a-radio-button>\n </a-radio-group>\n</template>\n\n<script>\nimport { defineComponent } from 'vue'\nimport { RadioGroup as ARadioGroup, RadioButton as ARadioButton } from 'ant-design-vue'\nexport default defineComponent({\n name: 'RadioGroup',\n props: {\n value: {\n type: [String, Number],\n default: ''\n },\n options: {\n type: Array,\n default: () => []\n },\n optionType: {\n type: String,\n default: 'default'\n },\n size: {\n type: String,\n default: 'default'\n }\n },\n components: {\n ARadioGroup,\n ARadioButton\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onRadioChange = (e) => {\n emit('change', e.target.value)\n }\n return {\n onRadioChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-select\n :value=\"value\"\n @change=\"onSelectChange\"\n >\n <a-select-option\n v-for=\"option in options\"\n :key=\"option.value\"\n :value=\"option.value\"\n >\n {{ option.label }}\n </a-select-option>\n </a-select>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue'\nimport { Select as ASelect, SelectOption as ASelectOption } from 'ant-design-vue'\nexport default defineComponent({\n name: 'Select',\n props: {\n value: {\n type: [String, Number],\n default: ''\n },\n options: {\n type: Array as PropType<any>,\n default: () => []\n }\n },\n components: {\n ASelect,\n ASelectOption\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onSelectChange = (value: string | number) => {\n emit('change', value)\n }\n return {\n onSelectChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-select\n :value=\"value\"\n @change=\"onSelectChange\"\n >\n <a-select-option\n v-for=\"option in options\"\n :key=\"option.value\"\n :value=\"option.value\"\n >\n {{ option.label }}\n </a-select-option>\n </a-select>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue'\nimport { Select as ASelect, SelectOption as ASelectOption } from 'ant-design-vue'\nexport default defineComponent({\n name: 'Select',\n props: {\n value: {\n type: [String, Number],\n default: ''\n },\n options: {\n type: Array as PropType<any>,\n default: () => []\n }\n },\n components: {\n ASelect,\n ASelectOption\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onSelectChange = (value: string | number) => {\n emit('change', value)\n }\n return {\n onSelectChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <div :style=\"{ width: `${width}px` }\">\n <a-switch :disabled=\"disabled\" :checked=\"value\" @change=\"onSwitchChange\"/>\n </div>\n</template>\n\n<script>\nimport { defineComponent } from 'vue'\nimport { Switch as ASwitch } from 'ant-design-vue'\nexport default defineComponent({\n name: 'Switch',\n props: {\n value: {\n type: Boolean,\n default: false\n },\n width: {\n type: [String, Number],\n default: 150\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n components: {\n ASwitch\n },\n emit: ['change'],\n setup (props, { emit }) {\n const onSwitchChange = (value) => {\n emit('change', value)\n }\n return {\n onSwitchChange\n }\n }\n})\n</script>\n\n<style scoped></style>\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import{defineComponent as e,computed as t,openBlock as r,createElementBlock as n,normalizeStyle as o,withModifiers as a,createElementVNode as i,pushScopeId as l,popScopeId as c,ref as u,onMounted as s,watch as f,toDisplayString as d,withKeys as p,inject as h,unref as v,resolveComponent as m,Fragment as g,renderList as y,createBlock as b,createVNode as w,createCommentVNode as x,nextTick as S,onBeforeUnmount as k,provide as C,onUnmounted as O,toRaw as I,Teleport as A,Transition as P,withCtx as j}from\"vue\";import{createPopper as _}from\"@popperjs/core\";function N(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function E(e,t){if(e){if(\"string\"==typeof e)return N(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===r&&e.constructor&&(r=e.constructor.name),\"Map\"===r||\"Set\"===r?Array.from(e):\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?N(e,t):void 0}}function F(e){return function(e){if(Array.isArray(e))return N(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||E(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function L(e){return 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},L(e)}function z(e,t,r,n,o,a,i){try{var l=e[a](i),c=l.value}catch(e){return void r(e)}l.done?t(c):Promise.resolve(c).then(n,o)}function M(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var a=e.apply(t,r);function i(e){z(a,n,o,i,l,\"next\",e)}function l(e){z(a,n,o,i,l,\"throw\",e)}i(void 0)}))}}var R={exports:{}},B={exports:{}};!function(e){function t(r){return e.exports=t=\"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},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports}(B),function(e){var t=B.exports.default;function r(){e.exports=r=function(){return o},e.exports.__esModule=!0,e.exports.default=e.exports;var n,o={},a=Object.prototype,i=a.hasOwnProperty,l=Object.defineProperty||function(e,t,r){e[t]=r.value},c=\"function\"==typeof Symbol?Symbol:{},u=c.iterator||\"@@iterator\",s=c.asyncIterator||\"@@asyncIterator\",f=c.toStringTag||\"@@toStringTag\";function d(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{d({},\"\")}catch(n){d=function(e,t,r){return e[t]=r}}function p(e,t,r,n){var o=t&&t.prototype instanceof w?t:w,a=Object.create(o.prototype),i=new F(n||[]);return l(a,\"_invoke\",{value:j(e,r,i)}),a}function h(e,t,r){try{return{type:\"normal\",arg:e.call(t,r)}}catch(e){return{type:\"throw\",arg:e}}}o.wrap=p;var v=\"suspendedStart\",m=\"suspendedYield\",g=\"executing\",y=\"completed\",b={};function w(){}function x(){}function S(){}var k={};d(k,u,(function(){return this}));var C=Object.getPrototypeOf,O=C&&C(C(L([])));O&&O!==a&&i.call(O,u)&&(k=O);var I=S.prototype=w.prototype=Object.create(k);function A(e){[\"next\",\"throw\",\"return\"].forEach((function(t){d(e,t,(function(e){return this._invoke(t,e)}))}))}function P(e,r){function n(o,a,l,c){var u=h(e[o],e,a);if(\"throw\"!==u.type){var s=u.arg,f=s.value;return f&&\"object\"==t(f)&&i.call(f,\"__await\")?r.resolve(f.__await).then((function(e){n(\"next\",e,l,c)}),(function(e){n(\"throw\",e,l,c)})):r.resolve(f).then((function(e){s.value=e,l(s)}),(function(e){return n(\"throw\",e,l,c)}))}c(u.arg)}var o;l(this,\"_invoke\",{value:function(e,t){function a(){return new r((function(r,o){n(e,t,r,o)}))}return o=o?o.then(a,a):a()}})}function j(e,t,r){var o=v;return function(a,i){if(o===g)throw new Error(\"Generator is already running\");if(o===y){if(\"throw\"===a)throw i;return{value:n,done:!0}}for(r.method=a,r.arg=i;;){var l=r.delegate;if(l){var c=_(l,r);if(c){if(c===b)continue;return c}}if(\"next\"===r.method)r.sent=r._sent=r.arg;else if(\"throw\"===r.method){if(o===v)throw o=y,r.arg;r.dispatchException(r.arg)}else\"return\"===r.method&&r.abrupt(\"return\",r.arg);o=g;var u=h(e,t,r);if(\"normal\"===u.type){if(o=r.done?y:m,u.arg===b)continue;return{value:u.arg,done:r.done}}\"throw\"===u.type&&(o=y,r.method=\"throw\",r.arg=u.arg)}}}function _(e,t){var r=t.method,o=e.iterator[r];if(o===n)return t.delegate=null,\"throw\"===r&&e.iterator.return&&(t.method=\"return\",t.arg=n,_(e,t),\"throw\"===t.method)||\"return\"!==r&&(t.method=\"throw\",t.arg=new TypeError(\"The iterator does not provide a '\"+r+\"' method\")),b;var a=h(o,e.iterator,t.arg);if(\"throw\"===a.type)return t.method=\"throw\",t.arg=a.arg,t.delegate=null,b;var i=a.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,\"return\"!==t.method&&(t.method=\"next\",t.arg=n),t.delegate=null,b):i:(t.method=\"throw\",t.arg=new TypeError(\"iterator result is not an object\"),t.delegate=null,b)}function N(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function E(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function F(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(N,this),this.reset(!0)}function L(e){if(e||\"\"===e){var r=e[u];if(r)return r.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,a=function t(){for(;++o<e.length;)if(i.call(e,o))return t.value=e[o],t.done=!1,t;return t.value=n,t.done=!0,t};return a.next=a}}throw new TypeError(t(e)+\" is not iterable\")}return x.prototype=S,l(I,\"constructor\",{value:S,configurable:!0}),l(S,\"constructor\",{value:x,configurable:!0}),x.displayName=d(S,f,\"GeneratorFunction\"),o.isGeneratorFunction=function(e){var t=\"function\"==typeof e&&e.constructor;return!!t&&(t===x||\"GeneratorFunction\"===(t.displayName||t.name))},o.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,S):(e.__proto__=S,d(e,f,\"GeneratorFunction\")),e.prototype=Object.create(I),e},o.awrap=function(e){return{__await:e}},A(P.prototype),d(P.prototype,s,(function(){return this})),o.AsyncIterator=P,o.async=function(e,t,r,n,a){void 0===a&&(a=Promise);var i=new P(p(e,t,r,n),a);return o.isGeneratorFunction(t)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},A(I),d(I,f,\"Generator\"),d(I,u,(function(){return this})),d(I,\"toString\",(function(){return\"[object Generator]\"})),o.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},o.values=L,F.prototype={constructor:F,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method=\"next\",this.arg=n,this.tryEntries.forEach(E),!e)for(var t in this)\"t\"===t.charAt(0)&&i.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=n)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if(\"throw\"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(r,o){return l.type=\"throw\",l.arg=e,t.next=r,o&&(t.method=\"next\",t.arg=n),!!o}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],l=a.completion;if(\"root\"===a.tryLoc)return r(\"end\");if(a.tryLoc<=this.prev){var c=i.call(a,\"catchLoc\"),u=i.call(a,\"finallyLoc\");if(c&&u){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(c){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!u)throw new Error(\"try statement without catch or finally\");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&i.call(n,\"finallyLoc\")&&this.prev<n.finallyLoc){var o=n;break}}o&&(\"break\"===e||\"continue\"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=t,o?(this.method=\"next\",this.next=o.finallyLoc,b):this.complete(a)},complete:function(e,t){if(\"throw\"===e.type)throw e.arg;return\"break\"===e.type||\"continue\"===e.type?this.next=e.arg:\"return\"===e.type?(this.rval=this.arg=e.arg,this.method=\"return\",this.next=\"end\"):\"normal\"===e.type&&t&&(this.next=t),b},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),E(r),b}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if(\"throw\"===n.type){var o=n.arg;E(r)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,t,r){return this.delegate={iterator:L(e),resultName:t,nextLoc:r},\"next\"===this.method&&(this.arg=n),b}},o}e.exports=r,e.exports.__esModule=!0,e.exports.default=e.exports}(R);var D=R.exports(),T=D;try{regeneratorRuntime=D}catch(e){\"object\"==typeof globalThis?globalThis.regeneratorRuntime=D:Function(\"r\",\"regeneratorRuntime = r\")(D)}function H(e){var t=function(e,t){if(\"object\"!==L(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||\"default\");if(\"object\"!==L(n))return n;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(e)}(e,\"string\");return\"symbol\"===L(t)?t:String(t)}function G(e,t,r){return(t=H(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var $=e({name:\"Saturation\",props:{size:{type:Number,default:160},hue:{type:Number,default:0},saturation:{type:Number,default:0},value:{type:Number,default:0}},emits:[\"change\"],setup:function(e,r){var n=r.emit,o=t((function(){return{width:\"\".concat(e.size,\"px\"),height:\"\".concat(e.size,\"px\"),background:\"hsl(\".concat(e.hue,\", 100%, 50%)\")}}));return{saturationStyle:o,sliderStyle:t((function(){return{top:\"\".concat((100-e.value)/100*e.size-5,\"px\"),left:\"\".concat(e.saturation*e.size/100-5,\"px\"),width:\"\".concat(10,\"px\"),height:\"\".concat(10,\"px\")}})),onSelect:function(t){var r=t.target.getBoundingClientRect(),o=r.left,a=r.top,i=function(t){var r=t.clientX,i=t.clientY,l=r-o,c=i-a;l<0&&(l=0),c<0&&(c=0),l>e.size&&(l=e.size),c>e.size&&(c=e.size);var u=l/e.size*100,s=100-c/e.size*100;n(\"change\",u,s)};i(t),document.addEventListener(\"mousemove\",i),document.addEventListener(\"mouseup\",(function e(){document.removeEventListener(\"mousemove\",i),document.removeEventListener(\"mouseup\",e)}))}}}}),V=function(e){return l(\"data-v-24517fec\"),e=e(),c(),e},Y=V((function(){return i(\"div\",{class:\"saturation-white\"},null,-1)})),J=V((function(){return i(\"div\",{class:\"saturation-black\"},null,-1)}));function W(e,t){void 0===t&&(t={});var r=t.insertAt;if(e&&\"undefined\"!=typeof document){var n=document.head||document.getElementsByTagName(\"head\")[0],o=document.createElement(\"style\");o.type=\"text/css\",\"top\"===r&&n.firstChild?n.insertBefore(o,n.firstChild):n.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}W(\".saturation[data-v-24517fec]{position:relative}.saturation-black[data-v-24517fec],.saturation-white[data-v-24517fec]{cursor:pointer;height:100%;left:0;position:absolute;top:0;width:100%}.saturation-white[data-v-24517fec]{background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.saturation-black[data-v-24517fec]{background:linear-gradient(0deg,#000,transparent)}.slider[data-v-24517fec]{border:1px solid #fff;border-radius:50%;box-shadow:0 0 1px 1px rgba(0,0,0,.3);left:0;pointer-events:none;position:absolute;top:0;z-index:1}\"),$.render=function(e,t,l,c,u,s){return r(),n(\"div\",{class:\"saturation\",style:o(e.saturationStyle),onMousedown:t[0]||(t[0]=a((function(){return e.onSelect&&e.onSelect.apply(e,arguments)}),[\"prevent\",\"stop\"]))},[Y,J,i(\"div\",{class:\"slider\",style:o(e.sliderStyle)},null,4)],36)},$.__scopeId=\"data-v-24517fec\",$.__file=\"src/picker/Saturation.vue\";var X=e({name:\"Hue\",props:{width:{type:Number,default:15},height:{type:Number,default:160},hue:{type:Number,default:0}},emits:[\"change\"],setup:function(e,r){var n=r.emit,o=t((function(){return{top:\"\".concat((1-e.hue/360)*e.height-2,\"px\"),height:\"\".concat(4,\"px\")}})),a=u();s((function(){!function(){a.value.width=e.width,a.value.height=e.height;var t=a.value.getContext(\"2d\"),r=t.createLinearGradient(0,0,0,e.height);r.addColorStop(0,\"#FF0000\"),r.addColorStop(.17,\"#FF00FF\"),r.addColorStop(.34,\"#0000FF\"),r.addColorStop(.51,\"#00FFFF\"),r.addColorStop(.68,\"#00FF00\"),r.addColorStop(.17*5,\"#FFFF00\"),r.addColorStop(1,\"#FF0000\"),t.fillStyle=r,t.fillRect(0,0,e.width,e.height)}()}));return{canvas:a,sliderStyle:o,onSelect:function(t){var r=t.target.getBoundingClientRect().top,o=function(t){var o=t.clientY-r;o<0&&(o=0),o>e.height&&(o=e.height);var a=-100*o/e.height+100;n(\"change\",360*a/100)};o(t),document.addEventListener(\"mousemove\",o),document.addEventListener(\"mouseup\",(function e(){document.removeEventListener(\"mousemove\",o),document.removeEventListener(\"mouseup\",e)}))}}}}),q={ref:\"canvas\"};W(\".hue[data-v-78b9f4f0]{position:relative}.slider[data-v-78b9f4f0]{background:#fff;box-shadow:0 0 1px 0 rgba(0,0,0,.3);left:0;pointer-events:none;position:absolute;width:100%;z-index:1}\"),X.render=function(e,t,l,c,u,s){return r(),n(\"div\",{class:\"hue\",onMousedown:t[0]||(t[0]=a((function(){return e.onSelect&&e.onSelect.apply(e,arguments)}),[\"prevent\",\"stop\"]))},[i(\"canvas\",q,null,512),i(\"div\",{class:\"slider\",style:o(e.sliderStyle)},null,4)],32)},X.__scopeId=\"data-v-78b9f4f0\",X.__file=\"src/picker/Hue.vue\";var U=e({name:\"Alpha\",props:{width:{type:Number,default:15},height:{type:Number,default:160},color:{type:String,default:\"#000000\"},alpha:{type:Number,default:1}},setup:function(e,r){var n=r.emit,o=t((function(){return{top:\"\".concat(e.alpha*e.height-2,\"px\"),height:\"\".concat(4,\"px\")}})),a=u(),i=function(){var t=a.value.getContext(\"2d\");a.value.width=e.width,a.value.height=e.height;var r=function(e){var t=document.createElement(\"canvas\"),r=t.getContext(\"2d\"),n=2*e;return t.width=n,t.height=n,r.fillStyle=\"#ffffff\",r.fillRect(0,0,n,n),r.fillStyle=\"#ccd5db\",r.fillRect(0,0,e,e),r.fillRect(e,e,e,e),t}(5);t.fillStyle=t.createPattern(r,\"repeat\"),t.fillRect(0,0,e.width,e.height);var n=t.createLinearGradient(0,0,0,e.height);n.addColorStop(.01,\"rgba(255,255,255,0)\"),n.addColorStop(.99,e.color),t.fillStyle=n,t.fillRect(0,0,e.width,e.height)};f((function(){return e.color}),(function(){i()})),s((function(){i()}));return{canvas:a,sliderStyle:o,onSelect:function(t){var r=t.target.getBoundingClientRect().top,o=function(t){var o=t.clientY-r;o<0&&(o=0),o>e.height&&(o=e.height);var a=parseFloat((o/e.height).toFixed(2));n(\"change\",a)};o(t),document.addEventListener(\"mousemove\",o),document.addEventListener(\"mouseup\",(function e(){document.removeEventListener(\"mousemove\",o),document.removeEventListener(\"mouseup\",e)}))}}}}),K={ref:\"canvas\"};W(\".alpha[data-v-24dc9656]{position:relative}.slider[data-v-24dc9656]{background:#fff;box-shadow:0 0 1px 0 rgba(0,0,0,.3);left:0;pointer-events:none;position:absolute;width:100%;z-index:1}\"),U.render=function(e,t,l,c,u,s){return r(),n(\"div\",{class:\"alpha\",onMousedown:t[0]||(t[0]=a((function(){return e.onSelect&&e.onSelect.apply(e,arguments)}),[\"prevent\",\"stop\"]))},[i(\"canvas\",K,null,512),i(\"div\",{class:\"slider\",style:o(e.sliderStyle)},null,4)],32)},U.__scopeId=\"data-v-24dc9656\",U.__file=\"src/picker/Alpha.vue\";var Q=e({name:\"Input\",props:{label:{type:String,default:\"RGBA\"},value:{type:String,default:\"\"},width:{type:Number,default:168}},emits:[\"change\",\"focus\",\"blur\",\"enter\"],setup:function(e,r){var n=r.emit;return{onInput:function(e){var t;n(\"change\",null===(t=e.target)||void 0===t?void 0:t.value)},valueStyle:t((function(){return{minWidth:\"\".concat(e.width,\"px\"),maxWidth:\"\".concat(e.width,\"px\"),width:\"\".concat(e.width,\"px\")}})),onFocus:function(){n(\"focus\")},onBlur:function(){n(\"blur\")},onEnter:function(){n(\"enter\")}}}}),Z={class:\"input\"},ee={class:\"label\"},te=[\".value\"];function re(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=r){var n,o,a,i,l=[],c=!0,u=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=a.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(u)throw o}}return l}}(e,t)||E(e,t)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function ne(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function oe(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ne(Object(r),!0).forEach((function(t){G(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ne(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}W(\".input[data-v-d52a4d02]{display:inline-block;font-size:12px}.label[data-v-d52a4d02]{align-items:center;background:#e7e8e9;color:#999;display:flex;float:left;font-weight:500;height:30px;justify-content:center;width:45px}[pick-colors-theme=dark] .label[data-v-d52a4d02]{background:#252930;color:#999}.value[data-v-d52a4d02]{background:#eceef0;border:1px solid #eceef0;box-sizing:border-box;color:#666;flex:1;height:30px;text-align:center}[pick-colors-theme=dark] .value[data-v-d52a4d02]{background:#2e333a;border:1px solid #2e333a;color:#fff}.value[data-v-d52a4d02]:focus{border:1px solid #1890ff;outline:none}\"),Q.render=function(e,t,a,l,c,u){return r(),n(\"div\",Z,[i(\"span\",ee,d(e.label),1),i(\"input\",{class:\"value\",style:o(e.valueStyle),\".value\":e.value,onFocus:t[0]||(t[0]=function(){return e.onFocus&&e.onFocus.apply(e,arguments)}),onInput:t[1]||(t[1]=function(){return e.onInput&&e.onInput.apply(e,arguments)}),onBlur:t[2]||(t[2]=function(){return e.onBlur&&e.onBlur.apply(e,arguments)}),onKeydown:t[3]||(t[3]=p((function(){return e.onEnter&&e.onEnter.apply(e,arguments)}),[\"enter\"]))},null,44,te)])},Q.__scopeId=\"data-v-d52a4d02\",Q.__file=\"src/picker/InputValue.vue\";var ae=function(e,t,r){return[e,t*r/((e=(2-t)*r)<1?e:2-e)||0,e/2]},ie={10:\"A\",11:\"B\",12:\"C\",13:\"D\",14:\"E\",15:\"F\"},le=function(e){e=Math.min(Math.round(e),255);var t=Math.floor(e/16),r=e%16;return\"\".concat(ie[t]||t).concat(ie[r]||r)},ce=function(e){var t=e.r,r=e.g,n=e.b;return isNaN(t)||isNaN(r)||isNaN(n)?\"\":\"#\".concat(le(t)).concat(le(r)).concat(le(n))},ue=function(e,t){var r;\"string\"==typeof(r=e)&&-1!==r.indexOf(\".\")&&1===parseFloat(r)&&(e=\"100%\");var n=function(e){return\"string\"==typeof e&&-1!==e.indexOf(\"%\")}(e);return e=Math.min(t,Math.max(0,parseFloat(\"\".concat(e)))),n&&(e=parseInt(\"\".concat(e*t),10)/100),Math.abs(e-t)<1e-6?1:e%t/parseFloat(t)},se=function(e,t,r){e=6*ue(e,360),t=ue(t,100),r=ue(r,100);var n=Math.floor(e),o=e-n,a=r*(1-t),i=r*(1-o*t),l=r*(1-(1-o)*t),c=n%6,u=[r,i,a,a,l,r][c],s=[l,r,r,i,a,a][c],f=[a,a,l,r,r,i][c];return{r:Math.round(255*u),g:Math.round(255*s),b:Math.round(255*f)}},fe=function(e,t,r){var n=e.h,o=e.s,a=e.v,i=e.a;if(r)switch(t){case\"hsl\":var l=ae(n,o/100,a/100);return\"hsla(\".concat(n.toFixed(0),\", \").concat(Math.round(100*l[1]),\"%, \").concat(Math.round(100*l[2]),\"%, \").concat(i,\")\");case\"hsv\":return\"hsva(\".concat(n.toFixed(0),\", \").concat(Math.round(o),\"%, \").concat(Math.round(a),\"%, \").concat(i,\")\");case\"rgb\":var c=se(n,o,a),u=c.r,s=c.g,f=c.b;return\"rgba(\".concat(u,\", \").concat(s,\", \").concat(f,\", \").concat(i,\")\");default:return\"\".concat(ce(se(n,o,a))).concat(le(255*i))}else switch(t){case\"hsl\":var d=ae(n,o/100,a/100);return\"hsl(\".concat(n.toFixed(0),\", \").concat(Math.round(100*d[1]),\"%, \").concat(Math.round(100*d[2]),\"%)\");case\"hsv\":return\"hsv(\".concat(n.toFixed(0),\", \").concat(Math.round(o),\"%, \").concat(Math.round(a),\"%)\");case\"rgb\":var p=se(n,o,a),h=p.r,v=p.g,m=p.b;return\"rgb(\".concat(h,\", \").concat(v,\", \").concat(m,\")\");default:return ce(se(n,o,a))}},de=function(e){var t=e.r,r=e.g,n=e.b;t=ue(t,255),r=ue(r,255),n=ue(n,255);var o,a=Math.max(t,r,n),i=Math.min(t,r,n),l=a,c=a-i,u=0===a?0:c/a;if(a===i)o=0;else{switch(a){case t:o=(r-n)/c+(r<n?6:0);break;case r:o=(n-t)/c+2;break;case n:o=(t-r)/c+4}o/=6}return{h:360*o,s:100*u,v:100*l}},pe=function(e){var t=e.h,r=e.s,n=e.l;n/=100;var o=r/=100,a=Math.max(n,.01);return r*=(n*=2)<=1?n:2-n,o*=a<=1?a:2-a,{h:+t,s:100*(0===n?2*o/(a+o):2*r/(n+r)),v:100*((n+r)/2)}},he=function(e){var t=[];if(e.match(/^#([0-9a-fA-f]{3,4})$/g))for(var r=1;r<e.length;r++)t.push(parseInt(\"0x\"+e[r].repeat(2)));else if(e.match(/^#([0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/g))for(var n=1;n<e.length;n+=2)t.push(parseInt(\"0x\"+e.slice(n,n+2)));return{r:t[0],g:t[1],b:t[2],a:t[3]}},ve=function(e,t,r){if(\"string\"==typeof e&&\"\"!==e){var n=be(e,we(e),r),o=xe(n);return fe(o,t,r)}return\"\"},me=function(e){var t=re(e.match(/(\\d(\\.\\d+)?)+/g),4);return{r:t[0],g:t[1],b:t[2],a:t[3]}},ge=function(e){var t=re(e.match(/(\\d(\\.\\d+)?)+/g),4),r=t[0],n=t[1],o=t[2],a=t[3];return{h:r,s:parseFloat(n),l:parseFloat(o),a:a}},ye=function(e){var t=re(e.match(/(\\d(\\.\\d+)?)+/g),4),r=t[0],n=t[1],o=t[2],a=t[3];return{h:parseFloat(r),s:parseFloat(n),v:parseFloat(o),a:parseFloat(a)}},be=function(e,t){if(!(arguments.length>2&&void 0!==arguments[2])||arguments[2])switch(t){case\"rgb\":var r=me(e),n=r.r,o=r.g,a=r.b,i=r.a;return oe(oe({},de({r:n,g:o,b:a})),{},{a:+i});case\"hsv\":var l=ye(e);return{h:l.h,s:l.s,v:l.v,a:l.a};case\"hsl\":var c=ge(e),u=c.h,s=c.s,f=c.l,d=c.a;return oe(oe({},pe({h:u,s:s,l:f})),{},{a:+d});default:var p=he(e),h=p.r,v=p.g,m=p.b,g=p.a;return oe(oe({},de({r:h,g:v,b:m})),{},{a:g/255})}else{switch(t){case\"rgb\":return oe(oe({},de(me(e))),{},{a:1});case\"hsv\":var y=ye(e);return{h:y.h,s:y.s,v:y.v,a:1};case\"hsl\":return oe(oe({},pe(ge(e))),{},{a:1});default:return oe(oe({},de(he(e))),{},{a:1})}}},we=function(e){return e.match(/^#/)?\"hex\":e.match(/^rgb/)?\"rgb\":e.match(/^hsl/)?\"hsl\":e.match(/^hsv/)?\"hsv\":\"hex\"},xe=function(e){var t=e.h,r=e.s,n=e.v,o=e.a;return isNaN(t)&&(t=0),isNaN(r)&&(r=0),isNaN(n)&&(n=0),isNaN(o)&&(o=1),{h:t,s:r,v:n,a:o}},Se=e({name:\"ColorItem\",props:{size:{type:[Number,String],default:20},width:{type:[Number,String]},height:{type:[Number,String]},value:{type:String,default:\"\"},border:{type:Boolean,default:!0},borderRadius:{type:Number,default:5},selected:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1}},emits:[\"select\"],setup:function(e){var r=u(),n=h(\"theme\",{theme:\"light\"}).theme,o=t((function(){return parseFloat((e.width||e.size)+\"\")})),a=t((function(){return parseFloat((e.height||e.size)+\"\")})),i=t((function(){return{width:\"\".concat(v(o),\"px\"),height:\"\".concat(v(a),\"px\"),border:e.border?\"1px solid \".concat(\"dark\"===v(n)?\"#434345\":\"#d9d9d9\"):\"\",borderRadius:\"\".concat(e.borderRadius,\"px\"),boxShadow:e.selected?\"0 0 3px 2px \".concat(\"dark\"===v(n)?\"#2681ff\":\"#1890ff\"):\"\"}})),l=function(){var t=r.value.getContext(\"2d\");r.value.width=v(o),r.value.height=v(a);var n=function(e){var t=document.createElement(\"canvas\"),r=t.getContext(\"2d\"),n=2*e;return t.width=n,t.height=n,r.fillStyle=\"#ffffff\",r.fillRect(0,0,n,n),r.fillStyle=\"#ccd5db\",r.fillRect(0,0,e,e),r.fillRect(e,e,e,e),t}(5);t.fillStyle=t.createPattern(n,\"repeat\"),t.fillRect(0,0,v(o),v(a)),t.fillStyle=e.value,t.fillRect(0,0,v(o),v(a))};return f((function(){return e.value}),(function(){l()})),s((function(){l()})),{canvas:r,colorItemStyle:i}}}),ke=[\"draggable\"];W(\".color-item[data-v-02da71fd]{display:inline-block;vertical-align:top}\"),Se.render=function(e,t,a,i,l,c){return r(),n(\"canvas\",{class:\"color-item\",style:o(e.colorItemStyle),ref:\"canvas\",draggable:e.draggable},null,12,ke)},Se.__scopeId=\"data-v-02da71fd\",Se.__file=\"src/color-item/ColorItem.vue\";var Ce=e({name:\"Colors\",components:{ColorItem:Se},props:{colors:{type:Array,default:function(){return[]}},selectedIndex:{type:Number,default:-1}},emits:[\"change\"],setup:function(e,r){var n=r.emit;return{onSelectColor:function(e,t){n(\"change\",e,t)},useColors:t((function(){return e.colors.map((function(e){return ve(e,\"hex\",!0)}))}))}}}),Oe={class:\"colors\"};function Ie(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Ae(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Ie(Object(r),!0).forEach((function(t){G(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ie(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}W(\".colors[data-v-0f8b52a8]{align-items:center;display:flex;flex-wrap:wrap;margin-top:5px}.color-item[data-v-0f8b52a8]{margin:5px}\"),Ce.render=function(e,t,o,i,l,c){var u=m(\"color-item\");return r(),n(\"div\",Oe,[(r(!0),n(g,null,y(e.useColors,(function(t,n){return r(),b(u,{key:n,class:\"color-item\",size:16,value:t,border:!1,\"border-radius\":3,selected:e.selectedIndex===n,onClick:a((function(r){return e.onSelectColor(t,+n)}),[\"stop\",\"prevent\"])},null,8,[\"value\",\"selected\",\"onClick\"])})),128))])},Ce.__scopeId=\"data-v-0f8b52a8\",Ce.__file=\"src/picker/Colors.vue\";var Pe=e({name:\"Picker\",components:{Colors:Ce,Saturation:$,Hue:X,Alpha:U,InputValue:Q},props:{format:{type:String,default:\"hex\"},showAlpha:{type:Boolean,default:!1},value:{type:String,default:\"\"},colors:{type:Array,default:function(){return[]}},style:{type:Object,default:function(){return{}}}},emits:[\"change\",\"update:value\"],setup:function(e,r){var n=r.emit,o=t((function(){return Ae(Ae({},e.style),{},{width:e.showAlpha?\"230px\":\"205px\"})})),a=t((function(){return e.showAlpha?165:140})),i=u(),l=u(),c=u(),s=function(){var t,r=null===(t=e.value)||void 0===t?void 0:t.trim();if(null!=r&&\"\"!==r){var n=we(r);return xe(be(r,n,e.showAlpha))}return null};f((function(){return e.value}),(function(){e.value!==v(c)&&(i.value=s())}),{immediate:!0}),f(i,(function(t,r){var o=\"\";null!=t?(o=fe(Ae({},t),e.format,e.showAlpha),l.value=Ae({},t)):l.value=null,c.value=o;var a=s();JSON.stringify(t)!==JSON.stringify(a)&&JSON.stringify(t)!==JSON.stringify(r)&&n(\"change\",o)}),{immediate:!0});var d=t((function(){var e;return(null===(e=v(i))||void 0===e?void 0:e.h)||0})),p=t((function(){var e;return(null===(e=v(i))||void 0===e?void 0:e.s)||0})),h=t((function(){var e;return(null===(e=v(i))||void 0===e?void 0:e.v)||0})),m=t((function(){var e,t;return null!=(null===(e=v(i))||void 0===e?void 0:e.a)?null===(t=v(i))||void 0===t?void 0:t.a:1})),g=t((function(){return se(v(d),v(p),v(h))})),y=t((function(){return\"rgb(\".concat(v(g).r,\", \").concat(v(g).g,\", \").concat(v(g).b,\")\")})),b=t((function(){var t=e.format;if(e.showAlpha)switch(t){case\"hsv\":return\"HSVA\";case\"hsl\":return\"HSLA\";case\"rgb\":return\"RGBA\";default:return\"HEX\"}else switch(t){case\"hsv\":return\"HSV\";case\"hsl\":return\"HSL\";case\"rgb\":return\"RGB\";default:return\"HEX\"}})),w=u(-1),x=function(e,t,r){if(0!==e.length){var n=be(e,t,r),o=n.h,a=n.s,l=n.v;if(!(isNaN(o)||isNaN(a)||isNaN(l))){var c=1,u=n.a;isNaN(u)||(c=u),i.value={h:o,s:a,v:l,a:c}}}};return{h:d,s:p,v:h,a:m,rgbStr:y,onSelectSaturation:function(e,t){w.value=-1,null==v(i)?i.value={h:v(d),s:e,v:t,a:v(m)}:i.value=Ae(Ae({},v(i)),{},{s:e,v:t})},onSelectHue:function(e){w.value=-1,null==v(i)&&(i.value={h:e,s:v(p),v:v(h),a:v(m)}),i.value=Ae(Ae({},v(i)),{},{h:e})},onSelectAlpha:function(e){w.value=-1,null==v(i)?i.value={h:v(d),s:v(p),v:v(h),a:e}:i.value=Ae(Ae({},v(i)),{},{a:e})},label:b,colorValue:c,pickerStyle:o,inputWidth:a,onInputChange:function(e){w.value=-1,c.value=e},handleChange:function(){var t,r=null===(t=v(c))||void 0===t?void 0:t.trim();if(\"\"!==r){var n=e.showAlpha,o=e.format,a=function(e,t,r){if(r)switch(t){case\"rgb\":return/^[rR][gG][Bb][Aa][(]([\\s]*(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)[\\s]*,){3}[\\s]*(1|1.0|0|0.[0-9]|0.[0-9][0-9])[\\s]*[)]{1}$/.test(e);case\"hsv\":return/^[hH][Ss][Vv][Aa][(]([\\s]*(2[0-9][0-9]|360|3[0-5][0-9]|[01]?[0-9][0-9]?)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*,){2}([\\s]*(1|1.0|0|0.[0-9]|0.[0-9][0-9])[\\s]*)[)]$/.test(e);case\"hsl\":return/^[hH][Ss][Ll][Aa][(]([\\s]*(2[0-9][0-9]|360|3[0-5][0-9]|[01]?[0-9][0-9]?)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*,){2}([\\s]*(1|1.0|0|0.[0-9]|0.[0-9][0-9])[\\s]*)[)]$/.test(e);default:return/^#([0-9a-fA-f]{4}|[0-9a-fA-F]{8})$/g.test(e)}else switch(t){case\"rgb\":return/^[rR][gG][Bb][(]([\\s]*(2[0-4][0-9]|25[0-5]|[01]?[0-9][0-9]?)[\\s]*,){2}[\\s]*(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)[\\s]*[)]{1}$/.test(e);case\"hsv\":return/^[hH][Ss][Vv][(]([\\s]*(2[0-9][0-9]|360|3[0-5][0-9]|[01]?[0-9][0-9]?)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*)[)]$/.test(e);case\"hsl\":return/^[hH][Ss][Ll][(]([\\s]*(2[0-9][0-9]|360|3[0-5][0-9]|[01]?[0-9][0-9]?)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*,)([\\s]*((100|[0-9][0-9]?)%|0)[\\s]*)[)]$/.test(e);default:return/^#([0-9a-fA-f]{3}|[0-9a-fA-F]{6})$/g.test(e)}}(r,o,n);a?x(r,o,n):null!=v(l)?i.value=v(l):c.value=\"\"}else i.value=null},selectColorIndex:w,onSelectColor:function(e,t){if(w.value=t,\"\"===(e=e.trim()))i.value=null;else{var r=we(e);r?x(e,r,!0):i.value=null}}}}}),je={class:\"picker-inner\"},_e={class:\"picker-header\"};W(\".picker[data-v-6ceadec6]{background:#f7f8f9;border-radius:4px;box-shadow:0 0 16px 0 rgba(0,0,0,.16)}.picker-inner[data-v-6ceadec6]{padding:10px}[pick-colors-theme=dark] .picker-inner[data-v-6ceadec6]{background:#1d2024;box-shadow:0 0 16px 0 rgba(0,0,0,.16)}.picker-header[data-v-6ceadec6]{display:flex;margin-bottom:5px}.alpha[data-v-6ceadec6],.hue[data-v-6ceadec6]{margin-left:10px}.colors[data-v-6ceadec6]{margin-top:5px}\"),Pe.render=function(e,t,a,l,c,u){var s=m(\"saturation\"),f=m(\"hue\"),d=m(\"alpha\"),p=m(\"input-value\"),h=m(\"Colors\");return r(),n(\"div\",{class:\"picker\",style:o(e.pickerStyle)},[i(\"div\",je,[i(\"div\",_e,[w(s,{class:\"saturation\",hue:e.h,saturation:e.s,value:e.v,onChange:e.onSelectSaturation},null,8,[\"hue\",\"saturation\",\"value\",\"onChange\"]),w(f,{class:\"hue\",hue:e.h,onChange:e.onSelectHue},null,8,[\"hue\",\"onChange\"]),e.showAlpha?(r(),b(d,{key:0,class:\"alpha\",alpha:e.a,color:e.rgbStr,onChange:e.onSelectAlpha},null,8,[\"alpha\",\"color\",\"onChange\"])):x(\"v-if\",!0)]),w(p,{label:e.label,value:e.colorValue,width:e.inputWidth,onChange:e.onInputChange,onBlur:e.handleChange,onEnter:e.handleChange},null,8,[\"label\",\"value\",\"width\",\"onChange\",\"onBlur\",\"onEnter\"]),e.colors.length>0?(r(),b(h,{key:0,class:\"colors\",colors:e.colors,\"selected-index\":e.selectColorIndex,onChange:e.onSelectColor},null,8,[\"colors\",\"selected-index\",\"onChange\"])):x(\"v-if\",!0)])],4)},Pe.__scopeId=\"data-v-6ceadec6\",Pe.__file=\"src/picker/Picker.vue\";var Ne=e({name:\"AddColorItem\",props:{size:{type:Number,default:20},selected:{type:Boolean,default:!1}},setup:function(e){var r=h(\"theme\",{theme:\"light\"}).theme;return{addColorItemStyle:t((function(){return{width:\"\".concat(e.size,\"px\"),height:\"\".concat(e.size,\"px\"),lineHeight:\"\".concat(e.size,\"px\"),boxShadow:e.selected?\"0 0 3px 2px \".concat(\"dark\"===v(r)?\"#2681ff\":\"#1890ff\"):\"\"}}))}}}),Ee=[function(e){return l(\"data-v-ceb1719c\"),e=e(),c(),e}((function(){return i(\"g\",{class:\"container\"},[i(\"path\",{d:\"M544 464V160h-80v304H160v80h304v304h80V544h304v-80z\"})],-1)}))];function Fe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Le(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Fe(Object(r),!0).forEach((function(t){G(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Fe(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}W(\".add-color-item[data-v-ceb1719c]{background:#fff;border:1px solid #d9d9d9;border-radius:5px;vertical-align:top}.container[data-v-ceb1719c]{pointer-events:none;transform:scale(.9);transform-origin:center}[pick-colors-theme=dark] .add-color-item[data-v-ceb1719c]{background:#141414;border:1px solid #434343}path[data-v-ceb1719c]{fill:#000}[pick-colors-theme=dark] path[data-v-ceb1719c]{fill:#fff}\"),Ne.render=function(e,t,a,i,l,c){return r(),n(\"svg\",{style:o(e.addColorItemStyle),class:\"add-color-item\",viewBox:\"0 0 1024 1024\",xmlns:\"http://www.w3.org/2000/svg\"},[].concat(Ee),4)},Ne.__scopeId=\"data-v-ceb1719c\",Ne.__file=\"src/add-color-item/AddColorItem.vue\";var ze=null,Me=e({name:\"ColorPicker\",components:{ColorItem:Se,Picker:Pe,AddColorItem:Ne},props:{value:{type:[String,Array]},theme:{type:String,default:\"light\"},size:{type:[Number,String],default:20},width:{type:[Number,String]},height:{type:[Number,String]},format:{type:String,default:\"hex\"},showPicker:{type:Boolean,default:void 0},showAlpha:{type:Boolean,default:!1},addColor:{type:Boolean,default:!1},deleteColor:{type:Boolean,default:!0},max:{type:Number,default:13},popupContainer:{type:[String,Object,Boolean]},zIndex:{type:Number,default:1e3},colors:{type:Array,default:function(){return[\"#ff4500\",\"#ff8c00\",\"#ffd700\",\"#90ee90\",\"#00ced1\",\"#1e90ff\",\"#c71585\",\"#ff4500\",\"#ff7d4d\",\"#00babd\",\"#1f93ff\",\"#fa64c3\"]}}},emits:[\"change\",\"update:value\",\"update:showPicker\",\"overflowMax\",\"closePicker\"],setup:function(e,r){var n=r.emit,o=u([]),a=t((function(){return v(o).map((function(t){return ve(t,\"hex\",e.showAlpha)}))}));f((function(){return e.value}),(function(){var t=e.value||\"\",r=Array.isArray(t)?t:[t];o.value=r.map((function(t){return ve(t,e.format,e.showAlpha)}))}),{immediate:!0});var i=u(void 0),l=t((function(){return v(o)[v(i)]})),c=u(!1);f((function(){return e.showPicker}),(function(){c.value=e.showPicker}),{immediate:!0});var d,p,h,m,g,y,b,w=u(null),x=u(null),A=(d=w,p=x,h={zIndex:e.zIndex},m=u({}),g={strategy:\"absolute\",placement:\"auto\",onFirstUpdate:function(){ze.update()},modifiers:[{name:\"offset\",options:{offset:[0,5]}},{name:\"computeStyles\",options:{gpuAcceleration:!1,adaptive:!0}},{name:\"flip\",options:{fallbackPlacements:[\"top\"],allowedAutoPlacements:[\"top\",\"bottom\"]}},{name:\"applyStyles\",enabled:!1},{name:\"updateState\",enabled:!0,phase:\"write\",requires:[\"computeStyles\"],fn:function(e){var t=e.state,r=t.styles,n=t.placement,o=r.popper;m.value=Le(Le(Le({},o),h),{},{transformOrigin:\"top\"===n?\"center bottom\":\"\"})}}]},f((function(){return[v(d),v(p)]}),(function(e,t){var r,n=re(e,2),o=n[0],a=n[1],i=re(t,2),l=i[0],c=i[1];if(o&&a&&(l!==o||c!==l)){null===(r=ze)||void 0===r||r.destroy();var u=o.$el||o,s=a.$el||a;S((function(){ze=_(u,s,g)}))}})),k((function(){var e;ze&&(null===(e=ze)||void 0===e||e.destroy(),ze=null)})),{instance:ze,style:m}),P=A.style,j=function(){null==v(w)&&(w.value=v(V)[0],i.value=0),void 0===e.showPicker?c.value=!0:n(\"update:showPicker\",!0)},N=function(){i.value=void 0,void 0===e.showPicker?c.value=!1:n(\"update:showPicker\",!1),n(\"closePicker\",I(Array.isArray(e.value)||e.addColor?v(o):v(o)[0]))},E=u(),z=function(){var e=M(T.mark((function e(t){var r,n,o,a;return T.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.target,null!=(o=null===(r=n.dataset)||void 0===r?void 0:r.index)&&\"\"!==o){e.next=4;break}return e.abrupt(\"return\");case 4:if(a=+o,v(i)!==a){e.next=7;break}return e.abrupt(\"return\");case 7:null!=v(i)&&v(i)!==a?(N(),y&&clearTimeout(y),y=setTimeout((function(){j(),clearTimeout(y)}),100)):j(),i.value=a,w.value=n;case 10:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),R=function(){var e=M(T.mark((function e(t){var r,n,o,a,i;return T.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.target,!(!(null!==(r=v(E))&&void 0!==r&&r.isEqualNode(a))&&(null===(n=v(E))||void 0===n?void 0:n.contains(a)))){e.next=4;break}return e.abrupt(\"return\");case 4:if(i=null===(o=v(x))||void 0===o?void 0:o.$el,!((null==i?void 0:i.contains(a))||!1)){e.next=8;break}return e.abrupt(\"return\");case 8:b&&clearTimeout(b),b=setTimeout((function(){v(c)&&N()}),0);case 10:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();f(c,(function(){v(c)&&(j(),clearTimeout(b))}));var B,D=u(e.max>v(o).length),H=t((function(){return\"string\"==typeof e.popupContainer||\"object\"===L(e.popupContainer)&&null!=e.popupContainer?e.popupContainer:\"body\"})),G=t((function(){return\"boolean\"==typeof e.popupContainer&&!1===e.popupContainer})),$=t((function(){return e.theme}));f((function(){return[e.theme,v(x)]}),(function(){S((function(){var e,t;null===(e=v(E))||void 0===e||e.setAttribute(\"pick-colors-theme\",v($)),null===(t=v(x))||void 0===t||null===(t=t.$el)||void 0===t||t.setAttribute(\"pick-colors-theme\",v($))}))}),{immediate:!0}),C(\"theme\",{theme:$});var V=u([]);return s((function(){document.addEventListener(\"mouseup\",R,!1),e.showPicker&&j()})),O((function(){document.removeEventListener(\"mouseup\",R,!1),y&&(clearTimeout(y),y=null),b&&(clearTimeout(b),b=null)})),{valueList:o,colorItemSelected:function(t){return(e.addColor?v(o).length>0:v(o).length>1)&&v(i)===t},selectedColor:l,selectedIndex:i,isShowPicker:c,addColorItemShow:D,onPickerChange:function(t){var r=v(i),a=v(o).slice(),l=v(o).length;if(null!=r){r>=0?a[r]=t:(i.value=l,a.push(t));var c=\"\";c=Array.isArray(e.value)||e.addColor?a:t,void 0===e.value?o.value=Array.isArray(c)?c:[c]:(n(\"update:value\",c),n(\"change\",c,t,r)),e.addColor&&l>=e.max&&(D.value=!1,n(\"overflowMax\"))}},colorPicker:E,onColorClick:z,pickerRef:x,onColorItemDragStart:function(e){e.dataTransfer.effectAllowed=\"move\";var t=e.target;B=+t.dataset.index},onColorItemDragOver:function(e){},onColorItemDrop:function(e){var t=+e.target.dataset.index,r=F(v(o)),a=r[B];r.splice(B,1);var i=r.slice(0,t),l=r.splice(t),c=i.concat([a]).concat(l);n(\"update:value\",c),n(\"change\",c,c[B],B)},colorItemsRef:V,pickerStyle:P,values:a,teleportDisabled:G,toPopupContainer:H}}});W(\".color-picker[data-v-3c43ade8]{display:inline-block}.color-item[data-v-3c43ade8]{margin:5px}.add-color-item[data-v-3c43ade8]{display:inline-block;margin:5px}.picker[data-v-3c43ade8]{overflow:hidden}.v-enter-active[data-v-3c43ade8],.v-leave-active[data-v-3c43ade8]{opacity:1;transform:scaleY(1);transform-origin:center top;transition:opacity .2s ease-in-out,transform .2s ease-in-out}.v-enter-from[data-v-3c43ade8],.v-leave-to[data-v-3c43ade8]{opacity:0;transform:scaleY(0)}\"),Me.render=function(e,t,i,l,c,u){var s=m(\"color-item\"),f=m(\"add-color-item\"),d=m(\"picker\");return r(),n(\"div\",{class:\"color-picker\",ref:\"colorPicker\",onDragstart:t[0]||(t[0]=a((function(){return e.onColorItemDragStart&&e.onColorItemDragStart.apply(e,arguments)}),[\"stop\"])),onDragover:t[1]||(t[1]=a((function(){return e.onColorItemDragOver&&e.onColorItemDragOver.apply(e,arguments)}),[\"prevent\",\"stop\"])),onDrop:t[2]||(t[2]=a((function(){return e.onColorItemDrop&&e.onColorItemDrop.apply(e,arguments)}),[\"prevent\",\"stop\"])),onClick:t[3]||(t[3]=a((function(){return e.onColorClick&&e.onColorClick.apply(e,arguments)}),[\"stop\"]))},[(r(!0),n(g,null,y(e.values,(function(t,n){return r(),b(s,{class:\"color-item\",key:n,ref_for:!0,ref:function(t){return e.colorItemsRef[n]=t},size:e.size,width:e.width,height:e.height,value:t,selected:e.colorItemSelected(n),\"data-index\":n,draggable:e.valueList.length>1,format:e.format},null,8,[\"size\",\"width\",\"height\",\"value\",\"selected\",\"data-index\",\"draggable\",\"format\"])})),128)),e.addColor&&e.addColorItemShow?(r(),b(f,{key:0,class:\"add-color-item\",ref:\"addColorItem\",selected:e.colorItemSelected(-1),\"data-index\":-1},null,8,[\"selected\"])):x(\"v-if\",!0),(r(),b(A,{to:e.toPopupContainer,disabled:e.teleportDisabled},[w(P,null,{default:j((function(){return[e.isShowPicker?(r(),b(d,{key:0,class:\"picker\",style:o(e.pickerStyle),ref:\"pickerRef\",value:e.selectedColor,format:e.format,\"show-alpha\":e.showAlpha,colors:e.colors,onChange:e.onPickerChange},null,8,[\"style\",\"value\",\"format\",\"show-alpha\",\"colors\",\"onChange\"])):x(\"v-if\",!0)]})),_:1})],8,[\"to\",\"disabled\"]))],544)},Me.__scopeId=\"data-v-3c43ade8\",Me.__file=\"src/ColorPicker.vue\";export{Me as default};\n","<template>\n <div class=\"color-pick\">\n <a-input class=\"input\" v-model:value=\"colorValue\"/>\n <pick-colors\n class=\"pick-colors\"\n v-model:value=\"colorValue\"\n :size=\"25\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent } from 'vue'\nimport { Input as AInput } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nexport default defineComponent({\n name: 'ColorPick',\n components: {\n PickColors,\n AInput\n },\n props: {\n value: {\n type: String,\n require: true\n }\n },\n emits: ['change'],\n setup (props, context) {\n const colorValue = computed({\n get: () => props.value,\n set: (value) => {\n context.emit('change', value)\n }\n })\n const onChangColor = (e: any) => {\n colorValue.value = e.hex\n }\n return {\n colorValue,\n onChangColor\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.color-pick {\n display: flex;\n}\n.input {\n margin-right: 10px;\n}\n</style>\n","<template>\n <div class=\"color-pick\">\n <a-input class=\"input\" v-model:value=\"colorValue\"/>\n <pick-colors\n class=\"pick-colors\"\n v-model:value=\"colorValue\"\n :size=\"25\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent } from 'vue'\nimport { Input as AInput } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nexport default defineComponent({\n name: 'ColorPick',\n components: {\n PickColors,\n AInput\n },\n props: {\n value: {\n type: String,\n require: true\n }\n },\n emits: ['change'],\n setup (props, context) {\n const colorValue = computed({\n get: () => props.value,\n set: (value) => {\n context.emit('change', value)\n }\n })\n const onChangColor = (e: any) => {\n colorValue.value = e.hex\n }\n return {\n colorValue,\n onChangColor\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.color-pick {\n display: flex;\n}\n.input {\n margin-right: 10px;\n}\n</style>\n","<template>\n <div class=\"color-group-pick\">\n <pick-colors\n :value=\"value\"\n add-color\n :max=\"max\"\n @change=\"onColorsChange\"\n @overflow-max=\"onOverflowMax\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType, ref } from 'vue'\nimport { message } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nexport default defineComponent({\n name: 'ColorGroupPick',\n components: {\n PickColors\n },\n props: {\n value: {\n type: Array as PropType<string[]>,\n default: () => ([])\n }\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onColorsChange = (value: string[]) => {\n emit('change', value)\n }\n const max = ref(13)\n const onOverflowMax = () => {\n message.warn(`已经超出最大添加个数:${max.value}`)\n }\n return {\n onColorsChange,\n max,\n onOverflowMax\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.color-group-pick {\n padding: 10px;\n}\n</style>\n","<template>\n <div class=\"color-group-pick\">\n <pick-colors\n :value=\"value\"\n add-color\n :max=\"max\"\n @change=\"onColorsChange\"\n @overflow-max=\"onOverflowMax\"\n />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType, ref } from 'vue'\nimport { message } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nexport default defineComponent({\n name: 'ColorGroupPick',\n components: {\n PickColors\n },\n props: {\n value: {\n type: Array as PropType<string[]>,\n default: () => ([])\n }\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onColorsChange = (value: string[]) => {\n emit('change', value)\n }\n const max = ref(13)\n const onOverflowMax = () => {\n message.warn(`已经超出最大添加个数:${max.value}`)\n }\n return {\n onColorsChange,\n max,\n onOverflowMax\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.color-group-pick {\n padding: 10px;\n}\n</style>\n","<template>\n <div class=\"form-group\">\n <appstore-add-outlined\n class=\"icon add\"\n @click=\"onAdd\"\n />\n <draggable class=\"form\" v-model=\"myValue\" item-key=\"id\">\n <template #item=\"{ element: e, index: i}\">\n <div class=\"form-row\">\n <div class=\"form-item\" v-for=\"(f, j) in format\" :key=\"j\">\n <template v-if=\"Array.isArray(f.label)\">\n <span class=\"label\">\n {{ f.useLabelIndex ? f.label[i] + (i + 1) : f.label[i] }}\n </span>\n </template>\n <span class=\"label\" v-else>\n {{ f.useLabelIndex ? f.label + (i + 1) : f.label }}\n </span>\n <component\n class=\"value\"\n :[formatTypeValue(f.typeValue)]=\"typeof e === 'string' ? e : (e[f.value] ?? f.defaultValue)\"\n :is=\"useComponentType(f.type)\"\n :style=\"{\n width: !['color', 'switch'].includes(f.type) && format.length > 1 ? '110px' : ''\n }\"\n v-bind=\"f.props\"\n :theme=\"theme\"\n :use-blur-event=\"false\"\n @change=\"onValueChange($event, i, f.value)\"\n />\n </div>\n </div>\n </template>\n </draggable>\n <div class=\"icon-group\">\n <div class=\"icon-item\" v-for=\"(e, i) in myValue\" :key=\"i\">\n <!-- <plus-circle-outlined class=\"icon add-children-icon\" /> -->\n <minus-circle-outlined class=\"icon delete\" @click=\"onDelete(i)\" />\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, PropType } from 'vue'\nimport Draggable from 'vuedraggable'\nimport { AppstoreAddOutlined, MinusCircleOutlined, PlusCircleOutlined } from '@ant-design/icons-vue'\nimport { message } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nimport InputNumber from '../input-number'\nexport default defineComponent({\n name: 'FormGroup',\n components: {\n Draggable,\n AppstoreAddOutlined,\n MinusCircleOutlined,\n PickColors,\n InputNumber,\n PlusCircleOutlined\n },\n props: {\n value: {\n type: Array,\n default: () => []\n },\n // 格式化 (映射)\n format: {\n type: Array as PropType<{ [key: string]: any } []>,\n default: () => []\n },\n useLabelIndex: {\n type: Boolean,\n default: false\n },\n max: {\n type: Number,\n default: -1\n }\n },\n emits: ['change'],\n setup (props, { emit }) {\n const myValue = computed({\n get: () => props.value,\n set: (value) => {\n emit('change', value)\n }\n })\n\n const onValueChange = (e: Event, index: number, key: string) => {\n console.log('e', e)\n const temp = props.value?.slice()\n if (Array.isArray(temp)) {\n const target = e?.target as any\n const value = target?.value != null ? target?.value : e\n if (key) {\n temp[index][key] = value\n } else {\n temp[index] = value\n }\n myValue.value = temp\n }\n }\n\n const onAdd = () => {\n const temp = props.value?.slice()\n if (!Array.isArray(temp)) return\n const len = temp.length\n if (props.max === -1 || props.max > len) {\n const firstItem = temp[0]\n if (Object.prototype.toString.call(firstItem) === '[object Object]') {\n const keys = Object.keys(firstItem)\n const obj = {} as { [key:string]: string}\n keys.forEach((key) => {\n obj[key] = ''\n })\n temp.push(obj)\n } else if (typeof firstItem === 'string') {\n temp.push(firstItem)\n }\n myValue.value = temp\n } else {\n message.warn('已达到最大上限')\n }\n }\n const onDelete = (index: number) => {\n const temp = props.value?.slice()\n if (!Array.isArray(temp)) return\n if (temp.length === 1) {\n message.warn('已经是最后一条数据,无法删除')\n return\n }\n temp.splice(index, 1)\n myValue.value = temp\n }\n\n const useComponentType = (type: 'input' | 'select' | 'color' | 'switch') => {\n const map = {\n input: 'aInput',\n select: 'aSelect',\n color: 'pickColors',\n 'input-number': 'inputNumber',\n switch: 'aSwitch'\n }\n return map[type]\n }\n\n const theme = 'light'\n const formatTypeValue = (v: string) => v || 'value'\n return {\n myValue,\n onAdd,\n useComponentType,\n onValueChange,\n onDelete,\n theme,\n formatTypeValue\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.form-group {\n position: relative;\n display: flex;\n width: 100%;\n}\n\n.form {\n flex: 1;\n overflow-x: hidden;\n &:hover {\n overflow: overlay;\n }\n}\n\n.form-row {\n display: flex;\n align-items: center;\n}\n\n.form-row:not(:last-child) {\n margin-bottom: 15px;\n\n}\n\n.form-item {\n display: flex;\n align-items: center;\n width: 100%;\n margin-bottom: 10px;\n}\n\n.label {\n width: max-content;\n padding-right: 5px;\n}\n\n.value {\n flex: 1;\n margin-right: 10px;\n}\n\n.icon {\n color: rgba(0, 0, 0, 0.65);\n}\n\n.add {\n position: absolute;\n top: -30px;\n right: 0;\n font-size: 20px;\n}\n\n.icon-group {\n display: flex;\n flex-direction: column;\n}\n\n.delete {\n width: 30px;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n font-size: 18px;\n}\n.icon-item {\n display: flex;\n width: 30px;\n height: 40px;\n justify-content: center;\n align-items: center;\n}\n.icon-item:not(:last-child) {\n margin-bottom: 15px;\n}\n\n.add-children-icon {\n font-size: 18px;\n margin-right: 10px;\n}\n\n// .delete:not(:last-child) {\n// margin-bottom: 15px;\n// }\n\n.fixed {\n font-size: 18px;\n}\n\n.use-font-size {\n display: flex;\n align-items: center;\n}\n\n.use-color {\n margin: 5px;\n}\n</style>\n","<template>\n <div class=\"form-group\">\n <appstore-add-outlined\n class=\"icon add\"\n @click=\"onAdd\"\n />\n <draggable class=\"form\" v-model=\"myValue\" item-key=\"id\">\n <template #item=\"{ element: e, index: i}\">\n <div class=\"form-row\">\n <div class=\"form-item\" v-for=\"(f, j) in format\" :key=\"j\">\n <template v-if=\"Array.isArray(f.label)\">\n <span class=\"label\">\n {{ f.useLabelIndex ? f.label[i] + (i + 1) : f.label[i] }}\n </span>\n </template>\n <span class=\"label\" v-else>\n {{ f.useLabelIndex ? f.label + (i + 1) : f.label }}\n </span>\n <component\n class=\"value\"\n :[formatTypeValue(f.typeValue)]=\"typeof e === 'string' ? e : (e[f.value] ?? f.defaultValue)\"\n :is=\"useComponentType(f.type)\"\n :style=\"{\n width: !['color', 'switch'].includes(f.type) && format.length > 1 ? '110px' : ''\n }\"\n v-bind=\"f.props\"\n :theme=\"theme\"\n :use-blur-event=\"false\"\n @change=\"onValueChange($event, i, f.value)\"\n />\n </div>\n </div>\n </template>\n </draggable>\n <div class=\"icon-group\">\n <div class=\"icon-item\" v-for=\"(e, i) in myValue\" :key=\"i\">\n <!-- <plus-circle-outlined class=\"icon add-children-icon\" /> -->\n <minus-circle-outlined class=\"icon delete\" @click=\"onDelete(i)\" />\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, PropType } from 'vue'\nimport Draggable from 'vuedraggable'\nimport { AppstoreAddOutlined, MinusCircleOutlined, PlusCircleOutlined } from '@ant-design/icons-vue'\nimport { message } from 'ant-design-vue'\nimport PickColors from 'vue-pick-colors'\nimport InputNumber from '../input-number'\nexport default defineComponent({\n name: 'FormGroup',\n components: {\n Draggable,\n AppstoreAddOutlined,\n MinusCircleOutlined,\n PickColors,\n InputNumber,\n PlusCircleOutlined\n },\n props: {\n value: {\n type: Array,\n default: () => []\n },\n // 格式化 (映射)\n format: {\n type: Array as PropType<{ [key: string]: any } []>,\n default: () => []\n },\n useLabelIndex: {\n type: Boolean,\n default: false\n },\n max: {\n type: Number,\n default: -1\n }\n },\n emits: ['change'],\n setup (props, { emit }) {\n const myValue = computed({\n get: () => props.value,\n set: (value) => {\n emit('change', value)\n }\n })\n\n const onValueChange = (e: Event, index: number, key: string) => {\n console.log('e', e)\n const temp = props.value?.slice()\n if (Array.isArray(temp)) {\n const target = e?.target as any\n const value = target?.value != null ? target?.value : e\n if (key) {\n temp[index][key] = value\n } else {\n temp[index] = value\n }\n myValue.value = temp\n }\n }\n\n const onAdd = () => {\n const temp = props.value?.slice()\n if (!Array.isArray(temp)) return\n const len = temp.length\n if (props.max === -1 || props.max > len) {\n const firstItem = temp[0]\n if (Object.prototype.toString.call(firstItem) === '[object Object]') {\n const keys = Object.keys(firstItem)\n const obj = {} as { [key:string]: string}\n keys.forEach((key) => {\n obj[key] = ''\n })\n temp.push(obj)\n } else if (typeof firstItem === 'string') {\n temp.push(firstItem)\n }\n myValue.value = temp\n } else {\n message.warn('已达到最大上限')\n }\n }\n const onDelete = (index: number) => {\n const temp = props.value?.slice()\n if (!Array.isArray(temp)) return\n if (temp.length === 1) {\n message.warn('已经是最后一条数据,无法删除')\n return\n }\n temp.splice(index, 1)\n myValue.value = temp\n }\n\n const useComponentType = (type: 'input' | 'select' | 'color' | 'switch') => {\n const map = {\n input: 'aInput',\n select: 'aSelect',\n color: 'pickColors',\n 'input-number': 'inputNumber',\n switch: 'aSwitch'\n }\n return map[type]\n }\n\n const theme = 'light'\n const formatTypeValue = (v: string) => v || 'value'\n return {\n myValue,\n onAdd,\n useComponentType,\n onValueChange,\n onDelete,\n theme,\n formatTypeValue\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.form-group {\n position: relative;\n display: flex;\n width: 100%;\n}\n\n.form {\n flex: 1;\n overflow-x: hidden;\n &:hover {\n overflow: overlay;\n }\n}\n\n.form-row {\n display: flex;\n align-items: center;\n}\n\n.form-row:not(:last-child) {\n margin-bottom: 15px;\n\n}\n\n.form-item {\n display: flex;\n align-items: center;\n width: 100%;\n margin-bottom: 10px;\n}\n\n.label {\n width: max-content;\n padding-right: 5px;\n}\n\n.value {\n flex: 1;\n margin-right: 10px;\n}\n\n.icon {\n color: rgba(0, 0, 0, 0.65);\n}\n\n.add {\n position: absolute;\n top: -30px;\n right: 0;\n font-size: 20px;\n}\n\n.icon-group {\n display: flex;\n flex-direction: column;\n}\n\n.delete {\n width: 30px;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n font-size: 18px;\n}\n.icon-item {\n display: flex;\n width: 30px;\n height: 40px;\n justify-content: center;\n align-items: center;\n}\n.icon-item:not(:last-child) {\n margin-bottom: 15px;\n}\n\n.add-children-icon {\n font-size: 18px;\n margin-right: 10px;\n}\n\n// .delete:not(:last-child) {\n// margin-bottom: 15px;\n// }\n\n.fixed {\n font-size: 18px;\n}\n\n.use-font-size {\n display: flex;\n align-items: center;\n}\n\n.use-color {\n margin: 5px;\n}\n</style>\n","<template>\n <a-textarea\n :value=\"value\"\n :disabled=\"disabled\"\n :autoSize=\"{\n minRows: 3\n }\"\n @change=\"onTextareaChange\"\n />\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { Textarea as ATextarea } from 'ant-design-vue'\nexport default defineComponent({\n name: 'Textarea',\n props: {\n value: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n components: {\n ATextarea\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onTextareaChange = (e: any) => {\n emit('change', e.target.value)\n }\n return {\n onTextareaChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <a-textarea\n :value=\"value\"\n :disabled=\"disabled\"\n :autoSize=\"{\n minRows: 3\n }\"\n @change=\"onTextareaChange\"\n />\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent } from 'vue'\nimport { Textarea as ATextarea } from 'ant-design-vue'\nexport default defineComponent({\n name: 'Textarea',\n props: {\n value: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n components: {\n ATextarea\n },\n emits: ['change'],\n setup (props, { emit }) {\n const onTextareaChange = (e: any) => {\n emit('change', e.target.value)\n }\n return {\n onTextareaChange\n }\n }\n})\n</script>\n\n<style scoped>\n\n</style>\n","<template>\n <div class=\"props-to-form\">\n <template\n v-for=\"(formProp, key) in formProps\"\n :key=\"key\"\n >\n <!--限定特定组件修改属性,formProp 为对象 -->\n <div class=\"prop-item\">\n <span class=\"label\">\n {{ formProp.label }}\n </span>\n <div class=\"component-wrapper\">\n <template v-if=\"Array.isArray(formProp)\">\n <template\n v-for=\"(v, k) in formProp\"\n :key=\"k\"\n >\n <component\n class=\"component\"\n :is=\"v.component\"\n :style=\"v.style\"\n :disabled=\"disabled\"\n v-bind=\"v.props\"\n v-on=\"v.events\"\n />\n </template>\n </template>\n <template v-if=\"!Array.isArray(formProp)\">\n <component\n class=\"component\"\n v-if=\"formProp.component\"\n :is=\"formProp.component\"\n :[formProp.valueProp]=\"formProp.value\"\n :style=\"formProp.style\"\n :disabled=\"disabled\"\n v-bind=\"formProp.props\"\n v-on=\"formProp.events\"\n />\n </template>\n </div>\n </div>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, unref, inject } from 'vue'\nimport { reduce } from 'lodash-es'\nimport { CHARTS_OPTIONS, UPDATE_CHARTS_OPTIONS } from '@/utils/constant'\nimport {\n PropsToAttributeConfig,\n mapAttributeProps,\n PropToAttributeConfig\n} from './data'\nimport { lowerCaseIncludes } from '@/utils/util'\nimport Input from './input'\nimport InputNumber from './input-number'\nimport RadioGroup from './radio-group'\nimport Select from './select'\nimport Switch from './switch'\nimport ColorPick from './color-pick'\nimport ColorGroupPick from './color-group-pick'\nimport FormGroup from './form-group'\nimport Textarea from './textarea'\nexport default defineComponent({\n name: 'PropsToForm',\n components: {\n Input,\n InputNumber,\n RadioGroup,\n Select,\n Switch,\n ColorPick,\n ColorGroupPick,\n FormGroup,\n Textarea\n },\n props: {\n props: {\n type: Object,\n require: true\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n setup (props) {\n interface SetOptions {\n mapAttributeProp: PropToAttributeConfig\n result: PropsToAttributeConfig\n key: string\n value: any\n }\n const chartsOptions = inject(CHARTS_OPTIONS) as {\n [key: string]: any\n }\n const updateChartsOptions = inject(UPDATE_CHARTS_OPTIONS) as Function\n const type = computed(() => unref(chartsOptions)?.type)\n const setFormProps = (setOptions: SetOptions) => {\n const { result, mapAttributeProp, key, value } = setOptions\n if (result == null || typeof result !== 'object') {\n return\n }\n const {\n valueProp = 'value',\n changeValueEventName = 'change',\n events\n } = mapAttributeProp\n result[key] = {\n ...mapAttributeProp,\n // 值属性\n valueProp,\n value,\n events: {\n [changeValueEventName]: (\n value: any,\n updateValue: boolean = true\n ) => {\n // 值改变后回调\n if (updateValue) {\n updateChartsOptions({ [key]: value })\n } else {\n updateChartsOptions({})\n }\n },\n ...events\n }\n }\n }\n // 当前选择的元素\n const formProps = computed(() => {\n const attrs = props.props\n if (attrs == null || typeof attrs !== 'object') {\n return {}\n }\n return reduce(\n attrs,\n (result, value, key) => {\n const mapAttributeProp = mapAttributeProps[key]\n if (Array.isArray(mapAttributeProp)) {\n const item = mapAttributeProp.find((item) => {\n const { onlyType, excludeType } = item\n if (onlyType == null && excludeType == null) {\n return true\n } else if (onlyType) {\n return lowerCaseIncludes(unref(type), onlyType)\n } else if (excludeType) {\n return !lowerCaseIncludes(unref(type), excludeType)\n }\n return false\n })\n if (item) {\n setFormProps({ result, value, key, mapAttributeProp: item })\n }\n } else {\n setFormProps({ result, value, key, mapAttributeProp })\n }\n return result\n },\n {} as { [key: string]: any }\n )\n })\n return {\n formProps,\n lowerCaseIncludes\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.prop-item {\n display: flex;\n align-items: center;\n padding: 5px 5px 10px 5px;\n}\n\n.label {\n width: 28%;\n display: flex;\n justify-content: center;\n}\n\n.label-vertical {\n justify-content: flex-start;\n padding-bottom: 4px;\n}\n\n.component-wrapper {\n width: 72%;\n}\n\n.component {\n width: 100%;\n}\n\n.layout {\n align-items: flex-start;\n flex-direction: column;\n padding: 10px 5px 10px 10px;\n\n .label {\n text-align: left;\n margin-bottom: 5px;\n }\n\n .component-wrapper {\n width: 100%;\n }\n}\n</style>\n","<template>\n <div class=\"props-to-form\">\n <template\n v-for=\"(formProp, key) in formProps\"\n :key=\"key\"\n >\n <!--限定特定组件修改属性,formProp 为对象 -->\n <div class=\"prop-item\">\n <span class=\"label\">\n {{ formProp.label }}\n </span>\n <div class=\"component-wrapper\">\n <template v-if=\"Array.isArray(formProp)\">\n <template\n v-for=\"(v, k) in formProp\"\n :key=\"k\"\n >\n <component\n class=\"component\"\n :is=\"v.component\"\n :style=\"v.style\"\n :disabled=\"disabled\"\n v-bind=\"v.props\"\n v-on=\"v.events\"\n />\n </template>\n </template>\n <template v-if=\"!Array.isArray(formProp)\">\n <component\n class=\"component\"\n v-if=\"formProp.component\"\n :is=\"formProp.component\"\n :[formProp.valueProp]=\"formProp.value\"\n :style=\"formProp.style\"\n :disabled=\"disabled\"\n v-bind=\"formProp.props\"\n v-on=\"formProp.events\"\n />\n </template>\n </div>\n </div>\n </template>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, unref, inject } from 'vue'\nimport { reduce } from 'lodash-es'\nimport { CHARTS_OPTIONS, UPDATE_CHARTS_OPTIONS } from '@/utils/constant'\nimport {\n PropsToAttributeConfig,\n mapAttributeProps,\n PropToAttributeConfig\n} from './data'\nimport { lowerCaseIncludes } from '@/utils/util'\nimport Input from './input'\nimport InputNumber from './input-number'\nimport RadioGroup from './radio-group'\nimport Select from './select'\nimport Switch from './switch'\nimport ColorPick from './color-pick'\nimport ColorGroupPick from './color-group-pick'\nimport FormGroup from './form-group'\nimport Textarea from './textarea'\nexport default defineComponent({\n name: 'PropsToForm',\n components: {\n Input,\n InputNumber,\n RadioGroup,\n Select,\n Switch,\n ColorPick,\n ColorGroupPick,\n FormGroup,\n Textarea\n },\n props: {\n props: {\n type: Object,\n require: true\n },\n disabled: {\n type: Boolean,\n default: false\n }\n },\n setup (props) {\n interface SetOptions {\n mapAttributeProp: PropToAttributeConfig\n result: PropsToAttributeConfig\n key: string\n value: any\n }\n const chartsOptions = inject(CHARTS_OPTIONS) as {\n [key: string]: any\n }\n const updateChartsOptions = inject(UPDATE_CHARTS_OPTIONS) as Function\n const type = computed(() => unref(chartsOptions)?.type)\n const setFormProps = (setOptions: SetOptions) => {\n const { result, mapAttributeProp, key, value } = setOptions\n if (result == null || typeof result !== 'object') {\n return\n }\n const {\n valueProp = 'value',\n changeValueEventName = 'change',\n events\n } = mapAttributeProp\n result[key] = {\n ...mapAttributeProp,\n // 值属性\n valueProp,\n value,\n events: {\n [changeValueEventName]: (\n value: any,\n updateValue: boolean = true\n ) => {\n // 值改变后回调\n if (updateValue) {\n updateChartsOptions({ [key]: value })\n } else {\n updateChartsOptions({})\n }\n },\n ...events\n }\n }\n }\n // 当前选择的元素\n const formProps = computed(() => {\n const attrs = props.props\n if (attrs == null || typeof attrs !== 'object') {\n return {}\n }\n return reduce(\n attrs,\n (result, value, key) => {\n const mapAttributeProp = mapAttributeProps[key]\n if (Array.isArray(mapAttributeProp)) {\n const item = mapAttributeProp.find((item) => {\n const { onlyType, excludeType } = item\n if (onlyType == null && excludeType == null) {\n return true\n } else if (onlyType) {\n return lowerCaseIncludes(unref(type), onlyType)\n } else if (excludeType) {\n return !lowerCaseIncludes(unref(type), excludeType)\n }\n return false\n })\n if (item) {\n setFormProps({ result, value, key, mapAttributeProp: item })\n }\n } else {\n setFormProps({ result, value, key, mapAttributeProp })\n }\n return result\n },\n {} as { [key: string]: any }\n )\n })\n return {\n formProps,\n lowerCaseIncludes\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.prop-item {\n display: flex;\n align-items: center;\n padding: 5px 5px 10px 5px;\n}\n\n.label {\n width: 28%;\n display: flex;\n justify-content: center;\n}\n\n.label-vertical {\n justify-content: flex-start;\n padding-bottom: 4px;\n}\n\n.component-wrapper {\n width: 72%;\n}\n\n.component {\n width: 100%;\n}\n\n.layout {\n align-items: flex-start;\n flex-direction: column;\n padding: 10px 5px 10px 10px;\n\n .label {\n text-align: left;\n margin-bottom: 5px;\n }\n\n .component-wrapper {\n width: 100%;\n }\n}\n</style>\n","<template>\n <div class=\"editor\" ref=\"dom\">\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, onMounted, onUnmounted, watch, PropType } from 'vue'\nimport { debounce } from 'lodash-es'\nimport { editor as monacoEditor } from 'monaco-editor'\nimport EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'\nimport JsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'\n// 暂时不引入ts,后面需要可以开启\nimport TsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker.js?worker'\nexport type LanguageType = 'json' | 'typescript'\nexport default defineComponent({\n name: 'Editor',\n props: {\n valueData: {\n type: String,\n default: ''\n },\n options: {\n type: Object,\n default: () => ({})\n },\n language: {\n type: String as PropType<LanguageType>,\n default: 'json'\n },\n // 是否使用小地图\n isUseMinimap: {\n type: Boolean,\n default: false\n },\n // 是否开启提示\n UseSuggestions: {\n type: Boolean,\n default: false\n },\n // 是否自动格式化\n autoFormat: {\n type: Boolean,\n default: false\n },\n readonly: {\n type: Boolean,\n default: false\n }\n },\n emits: ['change', 'update:valueData'],\n setup (props, { emit }) {\n /* eslint-disable */\n // @ts-ignore\n window.MonacoEnvironment = {\n getWorker (workerId: string, label: string) {\n if (label === 'json') {\n return new JsonWorker()\n }\n if (label === 'typescript') {\n return new TsWorker()\n }\n return new EditorWorker()\n }\n }\n /* eslint-enable */\n\n // dom\n const dom = ref()\n // 实例\n let editor = null as monacoEditor.IStandaloneCodeEditor | null\n\n // 主题设置\n const themeMap = {\n light: 'vs',\n dark: 'vs-dark'\n }\n onMounted(() => {\n editor = monacoEditor.create(dom.value, {\n language: props.language,\n tabSize: 2,\n automaticLayout: true,\n scrollBeyondLastLine: false,\n theme: themeMap.light,\n wordWrap: 'off',\n lineDecorationsWidth: 3,\n lineHeight: 15,\n lineNumbersMinChars: 3,\n formatOnPaste: true,\n formatOnType: true,\n wordBasedSuggestions: false,\n // 代码提示\n quickSuggestions: props.UseSuggestions,\n snippetSuggestions: 'none',\n suggestOnTriggerCharacters: false,\n scrollbar: {\n verticalScrollbarSize: 6,\n horizontalScrollbarSize: 6,\n alwaysConsumeMouseWheel: false,\n arrowSize: 0\n },\n autoIndent: 'advanced',\n glyphMargin: false,\n fontSize: 13,\n // 关闭右键菜单\n contextmenu: false,\n // 小地图\n minimap: {\n enabled: props.isUseMinimap\n },\n readOnly: props.readonly,\n ...props.options\n })\n // 初始化需要延迟格式化\n editor?.setValue(props.valueData)\n // 如果发现 json 格式化无用\n // 请尝试使用 JSON.stringify(ob, null, 2) 进行格式化\n if (props.autoFormat) {\n setTimeout(() => {\n editor?.getAction('editor.action.formatDocument').run()\n }, 200)\n }\n editor.onDidChangeModelContent(debounce(() => {\n // const selection = editor?.getSelection()\n // const = selection?.getSelectionStart()\n const value = editor?.getValue()\n emit('change', value)\n }, 300))\n\n // 由于 change 会实时改变光标,所以v-model在失去焦点时完成\n editor.onDidBlurEditorText(() => {\n const value = editor?.getValue()\n emit('update:valueData', value)\n })\n })\n // 监听值变化\n watch(() => props.valueData, (code) => {\n if (editor) {\n // 保留光标位置\n const position = editor.getPosition()\n editor.setValue(code)\n // 格式化\n if (props.autoFormat) {\n editor.getAction('editor.action.formatDocument').run()\n }\n if (position != null) {\n // 重新赋值光标位置\n editor.setPosition(position)\n }\n }\n })\n\n onUnmounted(() => {\n editor?.dispose()\n })\n return {\n dom\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.editor {\n width: 100%;\n height: 100%;\n}\n:deep(.overlayWidgets) {\n .find-widget {\n min-width: 220px !important;\n }\n}\n</style>\n","<template>\n <div class=\"editor\" ref=\"dom\">\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, onMounted, onUnmounted, watch, PropType } from 'vue'\nimport { debounce } from 'lodash-es'\nimport { editor as monacoEditor } from 'monaco-editor'\nimport EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'\nimport JsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'\n// 暂时不引入ts,后面需要可以开启\nimport TsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker.js?worker'\nexport type LanguageType = 'json' | 'typescript'\nexport default defineComponent({\n name: 'Editor',\n props: {\n valueData: {\n type: String,\n default: ''\n },\n options: {\n type: Object,\n default: () => ({})\n },\n language: {\n type: String as PropType<LanguageType>,\n default: 'json'\n },\n // 是否使用小地图\n isUseMinimap: {\n type: Boolean,\n default: false\n },\n // 是否开启提示\n UseSuggestions: {\n type: Boolean,\n default: false\n },\n // 是否自动格式化\n autoFormat: {\n type: Boolean,\n default: false\n },\n readonly: {\n type: Boolean,\n default: false\n }\n },\n emits: ['change', 'update:valueData'],\n setup (props, { emit }) {\n /* eslint-disable */\n // @ts-ignore\n window.MonacoEnvironment = {\n getWorker (workerId: string, label: string) {\n if (label === 'json') {\n return new JsonWorker()\n }\n if (label === 'typescript') {\n return new TsWorker()\n }\n return new EditorWorker()\n }\n }\n /* eslint-enable */\n\n // dom\n const dom = ref()\n // 实例\n let editor = null as monacoEditor.IStandaloneCodeEditor | null\n\n // 主题设置\n const themeMap = {\n light: 'vs',\n dark: 'vs-dark'\n }\n onMounted(() => {\n editor = monacoEditor.create(dom.value, {\n language: props.language,\n tabSize: 2,\n automaticLayout: true,\n scrollBeyondLastLine: false,\n theme: themeMap.light,\n wordWrap: 'off',\n lineDecorationsWidth: 3,\n lineHeight: 15,\n lineNumbersMinChars: 3,\n formatOnPaste: true,\n formatOnType: true,\n wordBasedSuggestions: false,\n // 代码提示\n quickSuggestions: props.UseSuggestions,\n snippetSuggestions: 'none',\n suggestOnTriggerCharacters: false,\n scrollbar: {\n verticalScrollbarSize: 6,\n horizontalScrollbarSize: 6,\n alwaysConsumeMouseWheel: false,\n arrowSize: 0\n },\n autoIndent: 'advanced',\n glyphMargin: false,\n fontSize: 13,\n // 关闭右键菜单\n contextmenu: false,\n // 小地图\n minimap: {\n enabled: props.isUseMinimap\n },\n readOnly: props.readonly,\n ...props.options\n })\n // 初始化需要延迟格式化\n editor?.setValue(props.valueData)\n // 如果发现 json 格式化无用\n // 请尝试使用 JSON.stringify(ob, null, 2) 进行格式化\n if (props.autoFormat) {\n setTimeout(() => {\n editor?.getAction('editor.action.formatDocument').run()\n }, 200)\n }\n editor.onDidChangeModelContent(debounce(() => {\n // const selection = editor?.getSelection()\n // const = selection?.getSelectionStart()\n const value = editor?.getValue()\n emit('change', value)\n }, 300))\n\n // 由于 change 会实时改变光标,所以v-model在失去焦点时完成\n editor.onDidBlurEditorText(() => {\n const value = editor?.getValue()\n emit('update:valueData', value)\n })\n })\n // 监听值变化\n watch(() => props.valueData, (code) => {\n if (editor) {\n // 保留光标位置\n const position = editor.getPosition()\n editor.setValue(code)\n // 格式化\n if (props.autoFormat) {\n editor.getAction('editor.action.formatDocument').run()\n }\n if (position != null) {\n // 重新赋值光标位置\n editor.setPosition(position)\n }\n }\n })\n\n onUnmounted(() => {\n editor?.dispose()\n })\n return {\n dom\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.editor {\n width: 100%;\n height: 100%;\n}\n:deep(.overlayWidgets) {\n .find-widget {\n min-width: 220px !important;\n }\n}\n</style>\n","<template>\r\n <div class=\"style-group\">\r\n <a-form-item label=\"图表类型\">\r\n <a-select\r\n v-model:value=\"type\"\r\n style=\"width: 100%\"\r\n @change=\"handleChangeType\"\r\n >\r\n <a-select-option value=\"line\">折线图</a-select-option>\r\n <a-select-option value=\"bar\">柱状图</a-select-option>\r\n <a-select-option value=\"pie\">饼图</a-select-option>\r\n <a-select-option value=\"comboGraph\">组合图表</a-select-option>\r\n <a-select-option value=\"customGraph\">自定义图表</a-select-option>\r\n </a-select>\r\n </a-form-item>\r\n <a-collapse v-model:activeKey=\"activePanel\">\r\n <template\r\n v-for=\"detailPropsGroup in detailPropsGroups\"\r\n :key=\"detailPropsGroup.title\"\r\n >\r\n <template v-if=\"isRenderForm(detailPropsGroup, type)\">\r\n <!--传递 title 时-->\r\n <a-collapse-panel\r\n v-if=\"detailPropsGroup.title\"\r\n :header=\"detailPropsGroup.title\"\r\n :key=\"detailPropsGroup.title\"\r\n >\r\n <template #extra>\r\n <a-switch\r\n v-if=\"typeof detailPropsGroup.enableProps === 'boolean'\"\r\n :checked=\"detailPropsGroup.enableProps\"\r\n @change=\"\r\n onSwitchChange($event, detailPropsGroup.enablePropsName)\r\n \"\r\n @click=\"onSwitchClick\"\r\n />\r\n </template>\r\n <props-to-form\r\n :props=\"detailPropsGroup.props\"\r\n :disabled=\"\r\n typeof detailPropsGroup.enableProps === 'boolean'\r\n ? !detailPropsGroup.enableProps\r\n : false\r\n \"\r\n />\r\n </a-collapse-panel>\r\n </template>\r\n </template>\r\n <!-- <a-collapse-panel\r\n key=\"props\"\r\n header=\"属性配置\"\r\n >\r\n <editor\r\n class=\"json-editor\"\r\n :valueData=\"ComponentString\"\r\n @change=\"updateComponentOptions\"\r\n />\r\n </a-collapse-panel> -->\r\n <!-- 只有在选择自定义图表展示 -->\r\n <a-collapse-panel\r\n key=\"custom-option\"\r\n header=\"自定义option配置\"\r\n v-if=\"isShowOptionEditor\"\r\n >\r\n <editor\r\n class=\"option-editor\"\r\n language=\"typescript\"\r\n :valueData=\"optionCode\"\r\n @change=\"onEditorChange\"\r\n />\r\n </a-collapse-panel>\r\n </a-collapse>\r\n </div>\r\n</template>\r\n<script lang=\"ts\">\r\nimport { defineComponent, computed, ref, unref, inject } from 'vue'\r\nimport {\r\n FormItem as AFormItem,\r\n Select as ASelect,\r\n SelectOption as ASelectOption,\r\n Collapse as ACollapse,\r\n CollapsePanel as ACollapsePanel,\r\n Switch as ASwitch\r\n} from 'ant-design-vue'\r\nimport {\r\n DetailPropsGroups,\r\n DetailPropsGroup,\r\n PropsGroup,\r\n propsGroups\r\n} from './data'\r\nimport propsMap from '@/indicator/indicator-library/data-config/style-config-group/chart-props'\r\nimport PropsToForm from './props-to-form'\r\nimport Editor from '@/indicator/editor'\r\nimport { CHARTS_OPTIONS, UPDATE_CHARTS_OPTIONS, REFRESH_DATA } from '@/utils/constant'\r\nimport { lowerCaseIncludes } from '@/utils/util'\r\nimport { pick } from 'lodash-es'\r\nimport 'ant-design-vue/es/collapse/style'\r\nexport default defineComponent({\r\n name: 'StyleConfigGroup',\r\n components: {\r\n PropsToForm,\r\n Editor,\r\n AFormItem,\r\n ASelect,\r\n ASelectOption,\r\n ACollapse,\r\n ACollapsePanel,\r\n ASwitch\r\n },\r\n setup () {\r\n const activePanel = ref<number[]>([])\r\n const chartsOptions = inject(CHARTS_OPTIONS) as {\r\n [key: string]: any\r\n }\r\n const updateChartsOptions = inject(UPDATE_CHARTS_OPTIONS) as Function\r\n const refreshData = inject(REFRESH_DATA) as Function\r\n const handleChangeType = (val: string) => {\r\n updateChartsOptions(\r\n {\r\n ...propsMap[val]\r\n },\r\n false\r\n )\r\n refreshData()\r\n }\r\n const type = computed(() => unref(chartsOptions)?.type)\r\n const detailPropsGroups = computed<DetailPropsGroups>(() => {\r\n return propsGroups\r\n .map((propsGroup: PropsGroup) => {\r\n const { props, title, enableProps, onlyType, excludeType } =\r\n propsGroup\r\n const pickProps = [] as string[]\r\n props.forEach((prop) => {\r\n if (typeof prop === 'string') {\r\n pickProps.push(prop)\r\n }\r\n })\r\n return {\r\n title,\r\n enableProps:\r\n typeof enableProps === 'string' && chartsOptions.value\r\n ? (chartsOptions.value[enableProps] as boolean)\r\n : undefined,\r\n enablePropsName: enableProps,\r\n onlyType,\r\n excludeType,\r\n props: pick(unref(chartsOptions), pickProps)\r\n }\r\n }) // 过滤空属性组\r\n .filter(({ props }) => {\r\n return Object.keys(props).length > 0\r\n })\r\n })\r\n const isRenderForm = (\r\n detailPropsGroup: DetailPropsGroup,\r\n componentType: string\r\n ) => {\r\n const { onlyType, excludeType } = detailPropsGroup\r\n if (onlyType == null && excludeType == null) {\r\n return true\r\n } else if (onlyType) {\r\n return lowerCaseIncludes(componentType, onlyType)\r\n } else if (excludeType) {\r\n return !lowerCaseIncludes(componentType, excludeType)\r\n }\r\n return false\r\n }\r\n const onSwitchClick = (\r\n checked: boolean | string | number,\r\n event: Event\r\n ) => {\r\n event?.stopPropagation()\r\n }\r\n const onSwitchChange = (value: boolean, key: string | undefined) => {\r\n if (key != null) {\r\n updateChartsOptions({\r\n [key]: value\r\n })\r\n }\r\n }\r\n const ComponentString = computed(() =>\r\n JSON.stringify(unref(chartsOptions), null, 2)\r\n )\r\n const updateComponentOptions = (code: string) => {\r\n try {\r\n const props = JSON.parse(code || '{}')\r\n updateChartsOptions(props, false)\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n const optionCode = ref('')\r\n const onEditorChange = (code: string) => {\r\n try {\r\n optionCode.value = code\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n const isShowOptionEditor = computed(() =>\r\n ['customGraph'].includes(unref(chartsOptions)?.type)\r\n )\r\n return {\r\n type,\r\n handleChangeType,\r\n activePanel,\r\n ComponentString,\r\n updateComponentOptions,\r\n optionCode,\r\n onEditorChange,\r\n onSwitchClick,\r\n onSwitchChange,\r\n detailPropsGroups,\r\n isRenderForm,\r\n isShowOptionEditor\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.style-group {\r\n width: 70%;\r\n\r\n .option-editor {\r\n @height: 500px;\r\n min-height: @height;\r\n max-height: @height;\r\n border: 1px solid #e9e9e9;\r\n }\r\n}\r\n</style>\r\n<style lang=\"less\">\r\n.attribute-config .ant-collapse-content > .ant-collapse-content-box > editor {\r\n padding: 16px 10px;\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"style-group\">\r\n <a-form-item label=\"图表类型\">\r\n <a-select\r\n v-model:value=\"type\"\r\n style=\"width: 100%\"\r\n @change=\"handleChangeType\"\r\n >\r\n <a-select-option value=\"line\">折线图</a-select-option>\r\n <a-select-option value=\"bar\">柱状图</a-select-option>\r\n <a-select-option value=\"pie\">饼图</a-select-option>\r\n <a-select-option value=\"comboGraph\">组合图表</a-select-option>\r\n <a-select-option value=\"customGraph\">自定义图表</a-select-option>\r\n </a-select>\r\n </a-form-item>\r\n <a-collapse v-model:activeKey=\"activePanel\">\r\n <template\r\n v-for=\"detailPropsGroup in detailPropsGroups\"\r\n :key=\"detailPropsGroup.title\"\r\n >\r\n <template v-if=\"isRenderForm(detailPropsGroup, type)\">\r\n <!--传递 title 时-->\r\n <a-collapse-panel\r\n v-if=\"detailPropsGroup.title\"\r\n :header=\"detailPropsGroup.title\"\r\n :key=\"detailPropsGroup.title\"\r\n >\r\n <template #extra>\r\n <a-switch\r\n v-if=\"typeof detailPropsGroup.enableProps === 'boolean'\"\r\n :checked=\"detailPropsGroup.enableProps\"\r\n @change=\"\r\n onSwitchChange($event, detailPropsGroup.enablePropsName)\r\n \"\r\n @click=\"onSwitchClick\"\r\n />\r\n </template>\r\n <props-to-form\r\n :props=\"detailPropsGroup.props\"\r\n :disabled=\"\r\n typeof detailPropsGroup.enableProps === 'boolean'\r\n ? !detailPropsGroup.enableProps\r\n : false\r\n \"\r\n />\r\n </a-collapse-panel>\r\n </template>\r\n </template>\r\n <!-- <a-collapse-panel\r\n key=\"props\"\r\n header=\"属性配置\"\r\n >\r\n <editor\r\n class=\"json-editor\"\r\n :valueData=\"ComponentString\"\r\n @change=\"updateComponentOptions\"\r\n />\r\n </a-collapse-panel> -->\r\n <!-- 只有在选择自定义图表展示 -->\r\n <a-collapse-panel\r\n key=\"custom-option\"\r\n header=\"自定义option配置\"\r\n v-if=\"isShowOptionEditor\"\r\n >\r\n <editor\r\n class=\"option-editor\"\r\n language=\"typescript\"\r\n :valueData=\"optionCode\"\r\n @change=\"onEditorChange\"\r\n />\r\n </a-collapse-panel>\r\n </a-collapse>\r\n </div>\r\n</template>\r\n<script lang=\"ts\">\r\nimport { defineComponent, computed, ref, unref, inject } from 'vue'\r\nimport {\r\n FormItem as AFormItem,\r\n Select as ASelect,\r\n SelectOption as ASelectOption,\r\n Collapse as ACollapse,\r\n CollapsePanel as ACollapsePanel,\r\n Switch as ASwitch\r\n} from 'ant-design-vue'\r\nimport {\r\n DetailPropsGroups,\r\n DetailPropsGroup,\r\n PropsGroup,\r\n propsGroups\r\n} from './data'\r\nimport propsMap from '@/indicator/indicator-library/data-config/style-config-group/chart-props'\r\nimport PropsToForm from './props-to-form'\r\nimport Editor from '@/indicator/editor'\r\nimport { CHARTS_OPTIONS, UPDATE_CHARTS_OPTIONS, REFRESH_DATA } from '@/utils/constant'\r\nimport { lowerCaseIncludes } from '@/utils/util'\r\nimport { pick } from 'lodash-es'\r\nimport 'ant-design-vue/es/collapse/style'\r\nexport default defineComponent({\r\n name: 'StyleConfigGroup',\r\n components: {\r\n PropsToForm,\r\n Editor,\r\n AFormItem,\r\n ASelect,\r\n ASelectOption,\r\n ACollapse,\r\n ACollapsePanel,\r\n ASwitch\r\n },\r\n setup () {\r\n const activePanel = ref<number[]>([])\r\n const chartsOptions = inject(CHARTS_OPTIONS) as {\r\n [key: string]: any\r\n }\r\n const updateChartsOptions = inject(UPDATE_CHARTS_OPTIONS) as Function\r\n const refreshData = inject(REFRESH_DATA) as Function\r\n const handleChangeType = (val: string) => {\r\n updateChartsOptions(\r\n {\r\n ...propsMap[val]\r\n },\r\n false\r\n )\r\n refreshData()\r\n }\r\n const type = computed(() => unref(chartsOptions)?.type)\r\n const detailPropsGroups = computed<DetailPropsGroups>(() => {\r\n return propsGroups\r\n .map((propsGroup: PropsGroup) => {\r\n const { props, title, enableProps, onlyType, excludeType } =\r\n propsGroup\r\n const pickProps = [] as string[]\r\n props.forEach((prop) => {\r\n if (typeof prop === 'string') {\r\n pickProps.push(prop)\r\n }\r\n })\r\n return {\r\n title,\r\n enableProps:\r\n typeof enableProps === 'string' && chartsOptions.value\r\n ? (chartsOptions.value[enableProps] as boolean)\r\n : undefined,\r\n enablePropsName: enableProps,\r\n onlyType,\r\n excludeType,\r\n props: pick(unref(chartsOptions), pickProps)\r\n }\r\n }) // 过滤空属性组\r\n .filter(({ props }) => {\r\n return Object.keys(props).length > 0\r\n })\r\n })\r\n const isRenderForm = (\r\n detailPropsGroup: DetailPropsGroup,\r\n componentType: string\r\n ) => {\r\n const { onlyType, excludeType } = detailPropsGroup\r\n if (onlyType == null && excludeType == null) {\r\n return true\r\n } else if (onlyType) {\r\n return lowerCaseIncludes(componentType, onlyType)\r\n } else if (excludeType) {\r\n return !lowerCaseIncludes(componentType, excludeType)\r\n }\r\n return false\r\n }\r\n const onSwitchClick = (\r\n checked: boolean | string | number,\r\n event: Event\r\n ) => {\r\n event?.stopPropagation()\r\n }\r\n const onSwitchChange = (value: boolean, key: string | undefined) => {\r\n if (key != null) {\r\n updateChartsOptions({\r\n [key]: value\r\n })\r\n }\r\n }\r\n const ComponentString = computed(() =>\r\n JSON.stringify(unref(chartsOptions), null, 2)\r\n )\r\n const updateComponentOptions = (code: string) => {\r\n try {\r\n const props = JSON.parse(code || '{}')\r\n updateChartsOptions(props, false)\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n const optionCode = ref('')\r\n const onEditorChange = (code: string) => {\r\n try {\r\n optionCode.value = code\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n const isShowOptionEditor = computed(() =>\r\n ['customGraph'].includes(unref(chartsOptions)?.type)\r\n )\r\n return {\r\n type,\r\n handleChangeType,\r\n activePanel,\r\n ComponentString,\r\n updateComponentOptions,\r\n optionCode,\r\n onEditorChange,\r\n onSwitchClick,\r\n onSwitchChange,\r\n detailPropsGroups,\r\n isRenderForm,\r\n isShowOptionEditor\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n.style-group {\r\n width: 70%;\r\n\r\n .option-editor {\r\n @height: 500px;\r\n min-height: @height;\r\n max-height: @height;\r\n border: 1px solid #e9e9e9;\r\n }\r\n}\r\n</style>\r\n<style lang=\"less\">\r\n.attribute-config .ant-collapse-content > .ant-collapse-content-box > editor {\r\n padding: 16px 10px;\r\n}\r\n</style>\r\n","import { INDICATOR_URL } from '@/utils/constant'\r\nimport { lowerCaseIncludes } from '@/utils/util'\r\n\r\nexport const useIndicatorData = (props: { [key:string]: any } = {}) => {\r\n const handleQueryColumn = (queryColumn: { [key:string]: any } = {}) => {\r\n const { label, name, location, show, indexCode } = queryColumn\r\n return {\r\n label,\r\n columnName: name,\r\n location,\r\n show,\r\n calcType: 'COLUMN',\r\n hrpIndexCode: indexCode\r\n }\r\n }\r\n\r\n const handleIndicator = (indicator: { [key:string]: any } = {}) => {\r\n const {\r\n label,\r\n name,\r\n location,\r\n show,\r\n indexCode,\r\n calcType = 'COLUMN',\r\n builtInFormula,\r\n builtInValueSource,\r\n builtInCalcWay,\r\n formula,\r\n conditions\r\n } = indicator\r\n return {\r\n label,\r\n columnName: name,\r\n location,\r\n show,\r\n calcType,\r\n hrpIndexCode: indexCode,\r\n aggregate: 'SUM',\r\n builtInFormula,\r\n builtInValueSource,\r\n builtInCalcWay,\r\n formula,\r\n conditions\r\n }\r\n }\r\n\r\n return async () => {\r\n const { graphicConfig, type, request, indicatorToken } = props\r\n // 全部属性, 为了属性可拓展,所以在设计器中自由添加\r\n let {\r\n source,\r\n dataViewId,\r\n plugin = '1', // 插件类型\r\n layer, // 后台图表类型,值分0,1\r\n chartType, // 前端图表类型,实测没用\r\n classificationList = [],\r\n seriesList = [],\r\n leftAxisList = [],\r\n rightAxisList = [],\r\n queryColumnList = [],\r\n indicators = [],\r\n // controlList = [],\r\n dataSourceId, // 所属数据源ID\r\n idxLibMode, // 指标库模式, source= INDICATOR_LIB时候必填, NORMAL_YEAR_TABLE = 普通年表, WITH_DATE_DIM_TABLE = 带有时间维度表\r\n preview = false // 预览开关\r\n } = graphicConfig || {}\r\n // 图类型,1=表 2=图\r\n if (layer == null) {\r\n if (lowerCaseIncludes(type, 'table')) {\r\n layer = '1'\r\n } else {\r\n layer = '2'\r\n }\r\n }\r\n // console.log('classificationList', classificationList)\r\n // console.log('seriesList', seriesList)\r\n // console.log('leftAxisList', leftAxisList)\r\n // console.log('rightAxisList', rightAxisList)\r\n // console.log('indicators', indicators)\r\n // console.log('controlList', controlList)\r\n // 重点处理 classificationList、seriesList、leftAxisList、rightAxisList、indicators\r\n // classificationList (取第一项) => classification\r\n let classification: Object\r\n if (Array.isArray(classificationList) && classificationList.length > 0) {\r\n const len = classificationList.length\r\n for (let i = 0; i < len; i++) {\r\n const item = classificationList[i] || {}\r\n const { label = '', name = '', show = false, sort, customGroup, conditions } = item\r\n // 如果是 show 直接提取 classification,停止遍历\r\n if (show || len === 1) {\r\n classification = {\r\n label,\r\n columnName: name,\r\n show,\r\n sort,\r\n customGroup,\r\n conditions\r\n }\r\n break\r\n }\r\n }\r\n }\r\n // seriesList (取第一项) => series\r\n let series: Object\r\n if (Array.isArray(seriesList) && seriesList.length > 0) {\r\n const len = seriesList.length\r\n for (let i = 0; i < len; i++) {\r\n const item = seriesList[i] || {}\r\n const { label = '', name = '', show = false, sort, customGroup, conditions } = item\r\n // 如果是 show 直接提取 seriesList,停止遍历\r\n if (show || len === 1) {\r\n series = {\r\n label,\r\n columnName: name,\r\n show,\r\n sort,\r\n customGroup,\r\n conditions\r\n }\r\n break\r\n }\r\n }\r\n }\r\n // queryColumnList => queryColumns\r\n const queryColumns = []\r\n queryColumnList?.forEach((queryColumn: { [key:string]: any }) => {\r\n queryColumns.push(handleQueryColumn(queryColumn))\r\n })\r\n\r\n // leftAxisList + rightAxisList + indicators => indicatorList\r\n const indicatorList = []\r\n leftAxisList?.forEach((leftAxis: { [key:string]: any }) => {\r\n leftAxis.location = 'LEFT'\r\n indicatorList.push(handleIndicator(leftAxis))\r\n })\r\n rightAxisList?.forEach((rightAxis: { [key:string]: any }) => {\r\n rightAxis.location = 'RIGHT'\r\n indicatorList.push(handleIndicator(rightAxis))\r\n })\r\n indicators?.forEach((indicator: { [key:string]: any }) => {\r\n indicator.location = 'LEFT'\r\n indicatorList.push(handleIndicator(indicator))\r\n })\r\n // queryColumns 表格配置为空返回\r\n if (layer === '1' && queryColumns.length === 0) {\r\n return\r\n // queryColumns 图表配置为空返回\r\n } else if (layer === '2' && indicatorList.length === 0) {\r\n return\r\n }\r\n try {\r\n // @ts-ignore\r\n const PAGE_ID = window?.config?.pageId\r\n const res = await request.post(`${INDICATOR_URL}/diagram`, {\r\n source,\r\n dataViewId,\r\n plugin,\r\n layer,\r\n chartType,\r\n classification,\r\n series,\r\n indicatorList,\r\n queryColumns,\r\n pageFlag: true,\r\n sqlConditions: [],\r\n dataSourceId,\r\n idxLibMode,\r\n pageId: PAGE_ID,\r\n preview\r\n },\r\n {\r\n headers: {\r\n Authentication: indicatorToken,\r\n operateContext: 'ygt'\r\n }\r\n })\r\n return res\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n }\r\n}\r\n\r\nexport default useIndicatorData\r\n","import dayjs from 'dayjs'\nconst runCode = (code: string, data?: { [key:string]: any }) => {\n const useFn = {\n dayjs,\n ...data\n }\n let paramsStr = ''\n const params = []\n for (const key in useFn) {\n paramsStr += `${key},`\n params.push(useFn[key])\n }\n paramsStr = paramsStr.replace(/,$/, '')\n const runFn = `function (${paramsStr}){return ${code}}`\n let result\n try {\n // eslint-disable-next-line no-new-func\n result = Function(`\"use strict\";return (${runFn})`)()(...params)\n } catch (e) {\n // console.error()\n return code\n }\n return result\n}\n\nexport default runCode\n","import runCode from '@/utils/runCode'\nexport const useVariablesInText = (\n formatter: string = '',\n { textData, codeData }: { textData?: { [key:string]: any }, codeData?: { [key:string]: any } } = {},\n { useNewline = false, useSpace = false } = {}\n) => {\n // 引入全局变量\n const data = { ...textData }\n const variables = (formatter).match(/\\{(.+?)\\}/g)\n if (variables == null || variables.length === 0) {\n return formatter\n }\n for (let i = 0; i < variables.length; i++) {\n const variable = variables[i]\n let statement = variable.slice(1, -1).trim()\n const reg = /[\\u4e00-\\u9fa5a-z-_A-Z0-9]*/g\n const textVariables = statement.match(reg)\n for (let j = 0; j < textVariables.length; j++) {\n const textVariable = textVariables[j]\n const usedVariable = data[textVariable]\n if (usedVariable != null) {\n // 使用的变量\n statement = statement.replace(textVariable, usedVariable)\n }\n }\n if ((/\\(.*\\)/g).test(statement) || (/[+/\\\\*]/g).test(statement)) {\n statement = runCode(statement, codeData)\n }\n formatter = formatter.replace(variable, statement)\n }\n // 替换换行\n if (useNewline) {\n formatter = formatter?.replace(/\\n|\\\\n/g, '<br/>')\n }\n // 替换空格\n if (useSpace) {\n formatter = formatter?.replace(/\\s{2,}?/g, '&nbsp;&nbsp;')\n }\n return formatter\n}\n\nexport default useVariablesInText\n","import runCode from '@/utils/runCode'\nexport const useValueFormatter = (formatter: string, value:string) => {\n if (formatter == null) return value\n const variables = (formatter).match(/\\{.*\\}/g)\n if (variables == null || variables.length === 0) {\n return value\n }\n const len = variables.length\n for (let i = 0; i < len; i++) {\n const variable = variables[i]\n if (variable == null || variable === '') break\n let statement = variable.slice(1, -1)?.trim()\n statement = statement?.replace(/value/g, value)\n try {\n let result = statement\n if ((/\\(.*\\)/g).test(statement) || (/[+/\\\\*]/g).test(statement)) {\n result = runCode(statement)\n }\n formatter = formatter.replace(variable, result)\n } catch (e) {\n formatter = formatter.replace(variable, statement)\n }\n }\n return formatter\n}\n\nexport default useValueFormatter\n","import { computed, unref } from 'vue'\r\nimport useVariablesInText from '@/hooks/useVariablesInText'\r\nimport useValueFormatter from '@/hooks/useValueFormatter'\r\nimport { handleFormatter } from '@/utils/util'\r\n\r\nexport const getTransformProps = (chartsOptions, chartData, fontSize) => {\r\n switch (chartsOptions.type) {\r\n case 'bar':\r\n return getBarTransfromProps(chartsOptions, chartData, fontSize)\r\n case 'line':\r\n return getLineTransfromProps(chartsOptions, chartData, fontSize)\r\n case 'pie':\r\n return getPieTransfromProps(chartsOptions, chartData, fontSize)\r\n case 'comboGraph':\r\n return getComboGraphTransfromProps(chartsOptions, chartData, fontSize)\r\n default:\r\n return {}\r\n }\r\n}\r\n\r\nconst getBarTransfromProps = (chartsOptions, chartData, fontSize) => {\r\n const yAxisLabelFormatter = chartsOptions.yAxisLabelFormatter\r\n const xAxisLabelFormatter = chartsOptions.xAxisLabelFormatter\r\n const { dimensions = [], dataset = [] } = chartData\r\n const series = computed(() => {\r\n const ds = dataset\r\n const len = ds.length\r\n const series = []\r\n for (let i = 0; i < len; i++) {\r\n const item = {\r\n ...ds[i],\r\n type: 'bar',\r\n barWidth: chartsOptions.barWidth\r\n } as { [key: string]: any }\r\n if (chartsOptions.isStack) {\r\n item.stack = 'stack'\r\n }\r\n item.label = {\r\n show: chartsOptions.labelShow,\r\n fontSize: chartsOptions.labelFontSize,\r\n position: chartsOptions.labelPosition,\r\n color: chartsOptions.labelColor\r\n }\r\n series.push(item)\r\n }\r\n return series\r\n })\r\n const xAxisData = computed(() => {\r\n return dimensions.map((item) => {\r\n let result = {}\r\n if (item && typeof item === 'object') {\r\n result = {\r\n ...item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n } else {\r\n result = {\r\n value: item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n }\r\n return result\r\n })\r\n })\r\n return {\r\n tooltip: {\r\n trigger: 'axis',\r\n show: chartsOptions.tooltipShow,\r\n formatter: (params) => {\r\n const len = params.length\r\n let formatter = ''\r\n let tooltipFormatter = chartsOptions.tooltipFormatter\r\n if (tooltipFormatter === '') {\r\n tooltipFormatter = '{marker} {a} {c}'\r\n }\r\n for (let i = 0; i < len; i++) {\r\n const { marker, seriesName, name, value, data } = params[i] || {}\r\n if (i === 0) {\r\n formatter += `${name}<br/>`\r\n }\r\n formatter += useVariablesInText(\r\n tooltipFormatter,\r\n {\r\n textData: {\r\n marker,\r\n name,\r\n value,\r\n a: seriesName,\r\n b: name,\r\n c: value,\r\n ...data\r\n }\r\n },\r\n {\r\n useNewline: true,\r\n useSpace: true\r\n }\r\n )\r\n formatter += '<br/>'\r\n }\r\n return formatter\r\n },\r\n textStyle: {\r\n color: chartsOptions.tooltipTextStyleColor,\r\n fontSize: fontSize\r\n }\r\n },\r\n legend: {\r\n show: chartsOptions.legendShow,\r\n orient: chartsOptions.legendOrient,\r\n top: chartsOptions.legendTop,\r\n left: chartsOptions.legendLeft,\r\n textStyle: {\r\n color: chartsOptions.legendTextStyleColor,\r\n fontSize: fontSize\r\n }\r\n },\r\n xAxis: {\r\n type: chartsOptions.isUseHorizontalAxis ? 'value' : 'category',\r\n data: chartsOptions.isUseHorizontalAxis ? null : unref(xAxisData),\r\n inverse: chartsOptions.isUseHorizontalAxis\r\n ? chartsOptions.xAxisInverse\r\n : chartsOptions.axisInverse,\r\n minInterval: chartsOptions.xAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.xAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.xAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n color: chartsOptions.xAxisLabelColor,\r\n interval: chartsOptions.xAxisLabelInterval || 0,\r\n rotate: chartsOptions.xAxisLabelRotate,\r\n width: chartsOptions.xAxisLabelWidth,\r\n overflow: chartsOptions.xAxisLabelOverflow,\r\n formatter (value: string) {\r\n return useValueFormatter(xAxisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: chartsOptions.xAxisLineStyleColor\r\n }\r\n },\r\n axisTick: {\r\n show: chartsOptions.xAxisTickShow\r\n }\r\n },\r\n yAxis: {\r\n type: chartsOptions.isUseHorizontalAxis ? 'category' : 'value',\r\n data: chartsOptions.isUseHorizontalAxis ? dimensions : null,\r\n inverse: chartsOptions.isUseHorizontalAxis\r\n ? chartsOptions.axisInverse\r\n : chartsOptions.yAxisInverse,\r\n minInterval: chartsOptions.yAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.yAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.yAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n fontSize: fontSize,\r\n color: chartsOptions.yAxisLabelColor,\r\n rotate: chartsOptions.yAxisLabelRotate,\r\n width: chartsOptions.yAxisLabelWidth,\r\n overflow: chartsOptions.yAxisLabelOverflow,\r\n formatter (value: string) {\r\n return useValueFormatter(yAxisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n show: chartsOptions.yAxisLineAlwaysDisplay,\r\n lineStyle: {\r\n color: chartsOptions.yAxisLineStyleColor\r\n }\r\n }\r\n },\r\n series: unref(series)\r\n }\r\n}\r\n\r\nconst getLineTransfromProps = (chartsOptions, chartData, fontSize) => {\r\n const yAxisLabelFormatter = chartsOptions.yAxisLabelFormatter\r\n const xAxisLabelFormatter = chartsOptions.xAxisLabelFormatter\r\n const { dimensions = [], dataset = [] } = chartData\r\n const xAxisData = computed(() => {\r\n return dimensions.map((item) => {\r\n let result = {}\r\n if (item && typeof item === 'object') {\r\n result = {\r\n ...item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n } else {\r\n result = {\r\n value: item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n }\r\n return result\r\n })\r\n })\r\n const series = computed(() => {\r\n const temp = [] as { [key: string]: any } []\r\n const len = dataset.length\r\n for (let i = 0; i < len; i++) {\r\n temp.push({\r\n type: 'line',\r\n ...dataset[i],\r\n symbolSize: chartsOptions.symbolSize,\r\n smooth: chartsOptions.smooth,\r\n lineStyle: {\r\n width: chartsOptions.lineStyleWidth\r\n }\r\n })\r\n }\r\n return temp\r\n })\r\n return {\r\n tooltip: {\r\n trigger: 'axis',\r\n textStyle: {\r\n fontSize: fontSize\r\n },\r\n show: chartsOptions.tooltipShow,\r\n formatter: (params) => {\r\n const len = params.length\r\n let formatter = ''\r\n let tooltipFormatter = chartsOptions.tooltipFormatter\r\n if (tooltipFormatter === '') {\r\n tooltipFormatter = '{marker} {a} {c}'\r\n }\r\n for (let i = 0; i < len; i++) {\r\n const { marker, seriesName, name, value, data } = params[i] || {}\r\n if (i === 0) {\r\n formatter += `${name}<br/>`\r\n }\r\n formatter += useVariablesInText(\r\n tooltipFormatter,\r\n {\r\n textData: {\r\n marker,\r\n name,\r\n value,\r\n a: seriesName,\r\n b: name,\r\n c: value,\r\n ...data\r\n }\r\n },\r\n {\r\n useNewline: true,\r\n useSpace: true\r\n })\r\n formatter += '<br/>'\r\n }\r\n return formatter\r\n }\r\n },\r\n xAxis: {\r\n type: 'category',\r\n data: unref(xAxisData),\r\n minInterval: chartsOptions.xAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.xAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.xAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n color: chartsOptions.xAxisLabelColor,\r\n interval: chartsOptions.xAxisLabelInterval || 0,\r\n rotate: chartsOptions.xAxisLabelRotate,\r\n width: chartsOptions.xAxisLabelWidth,\r\n overflow: chartsOptions.xAxisLabelOverflow,\r\n formatter (value: string) {\r\n return useValueFormatter(xAxisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: chartsOptions.xAxisLineStyleColor\r\n }\r\n },\r\n axisTick: {\r\n show: chartsOptions.xAxisTickShow\r\n }\r\n },\r\n yAxis: {\r\n type: 'value',\r\n minInterval: chartsOptions.yAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.yAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.yAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n fontSize: fontSize,\r\n color: chartsOptions.yAxisLabelColor,\r\n formatter (value: string) {\r\n return useValueFormatter(yAxisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n show: chartsOptions.yAxisLineAlwaysDisplay,\r\n lineStyle: {\r\n color: chartsOptions.yAxisLineStyleColor\r\n }\r\n }\r\n },\r\n // 图例\r\n legend: {\r\n show: chartsOptions.legendShow,\r\n orient: chartsOptions.legendOrient,\r\n top: chartsOptions.legendTop,\r\n left: chartsOptions.legendLeft,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n },\r\n series: unref(series)\r\n }\r\n}\r\n\r\nconst getPieTransfromProps = (chartsOptions, chartData, fontSize) => {\r\n const { dataset = [] } = chartData\r\n let { data = [] } = dataset[0] || {}\r\n if (Array.isArray(chartsOptions.colors)) {\r\n const isUseLabelColors = chartsOptions.isUseLabelColors\r\n const colors = chartsOptions.colors\r\n data = data.map((item, index) => ({\r\n label: isUseLabelColors ? { color: colors[index] } : {},\r\n ...item\r\n }))\r\n }\r\n return {\r\n // 提示\r\n tooltip: {\r\n show: chartsOptions.tooltipShow,\r\n trigger: chartsOptions.tooltipTrigger,\r\n formatter: (params) => {\r\n const { marker, seriesName, name, value, percent, data } = params || {}\r\n return useVariablesInText(\r\n chartsOptions.tooltipFormatter,\r\n {\r\n textData: {\r\n marker,\r\n name,\r\n value,\r\n percent,\r\n a: seriesName,\r\n b: name,\r\n c: value,\r\n d: percent,\r\n ...data\r\n }\r\n },\r\n {\r\n useNewline: true,\r\n useSpace: true\r\n }\r\n )\r\n },\r\n textStyle: {\r\n color: chartsOptions.tooltipTextStyleColor\r\n }\r\n },\r\n // 图例\r\n legend: {\r\n show: chartsOptions.legendShow,\r\n orient: chartsOptions.legendOrient,\r\n top: chartsOptions.legendTop,\r\n left: chartsOptions.legendLeft,\r\n textStyle: {\r\n color: chartsOptions.legendTextStyleColor,\r\n fontSize: fontSize === 18 ? fontSize : chartsOptions.labelFontSize\r\n }\r\n },\r\n series: [\r\n {\r\n data,\r\n type: 'pie',\r\n radius: [chartsOptions.innerRadius, chartsOptions.outerRadius],\r\n center: [chartsOptions.centerLeft, chartsOptions.centerTop],\r\n roseType: chartsOptions.roseType,\r\n avoidLabelOverlap: false,\r\n minAngle: chartsOptions.minAngle,\r\n label: {\r\n show: chartsOptions.labelPosition !== 'center' && chartsOptions.labelShow,\r\n color: chartsOptions.labelColor,\r\n fontSize: fontSize === 18 ? fontSize : chartsOptions.labelFontSize,\r\n position: chartsOptions.labelPosition,\r\n formatter: handleFormatter(chartsOptions.labelFormatter)\r\n },\r\n labelLine: {\r\n show: chartsOptions.labelLineShow,\r\n length: chartsOptions.labelLineLength,\r\n length2: chartsOptions.labelLineLength2\r\n },\r\n emphasis: {\r\n itemStyle: {\r\n shadowBlur: 10,\r\n shadowOffsetX: 0,\r\n shadowColor: 'rgba(0, 0, 0, 0.5)'\r\n },\r\n label: {}\r\n }\r\n }\r\n ]\r\n }\r\n}\r\n\r\nconst getComboGraphTransfromProps = (chartsOptions, chartData, fontSize) => {\r\n const { dimensions = [], dataset = [] } = chartData\r\n const xAxisData = computed(() => {\r\n return dimensions.map((item) => {\r\n let result = {}\r\n if (item && typeof item === 'object') {\r\n result = {\r\n ...item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n } else {\r\n result = {\r\n value: item,\r\n textStyle: {\r\n fontSize: fontSize\r\n }\r\n }\r\n }\r\n return result\r\n })\r\n })\r\n const series = computed(() => {\r\n const temp = [] as { [key: string]: any } []\r\n const len = dataset.length\r\n const seriesTypes = chartsOptions.seriesTypes\r\n for (let i = 0; i < len; i++) {\r\n const seriesType = seriesTypes[i]\r\n temp.push({\r\n type: seriesType?.type,\r\n yAxisIndex: seriesType?.axisIndex,\r\n ...dataset[i]\r\n })\r\n }\r\n return temp\r\n })\r\n const yAxis = computed(() => {\r\n const yAxis = chartsOptions.yAxis\r\n return yAxis?.map((axis) => {\r\n return {\r\n type: 'value',\r\n minInterval: chartsOptions.yAxisMinInterval,\r\n splitLine: {\r\n show: chartsOptions.yAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.yAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n fontSize: fontSize,\r\n color: chartsOptions.yAxisLabelColor,\r\n formatter (value: string) {\r\n return useValueFormatter(axis.axisLabelFormatter, value)\r\n }\r\n },\r\n axisLine: {\r\n show: chartsOptions.yAxisLineAlwaysDisplay,\r\n lineStyle: {\r\n color: chartsOptions.yAxisLineStyleColor\r\n }\r\n }\r\n }\r\n })\r\n })\r\n return {\r\n legend: {\r\n show: chartsOptions.legendShow,\r\n orient: chartsOptions.legendOrient,\r\n top: chartsOptions.legendTop,\r\n left: chartsOptions.legendLeft,\r\n textStyle: {\r\n color: chartsOptions.legendTextStyleColor,\r\n fontSize: fontSize\r\n }\r\n },\r\n tooltip: {\r\n trigger: 'axis',\r\n show: chartsOptions.tooltipShow,\r\n formatter: (params) => {\r\n const len = params.length\r\n let formatter = ''\r\n let tooltipFormatter = chartsOptions.tooltipFormatter\r\n if (tooltipFormatter === '') {\r\n tooltipFormatter = '{marker} {a} {c}'\r\n }\r\n const seriesTypes = chartsOptions.seriesTypes\r\n for (let i = 0; i < len; i++) {\r\n const seriesType = seriesTypes[i]\r\n const { tooltipFormatter: _tooltipFormatter } = seriesType || {}\r\n const { marker, seriesName, name, value, data } = params[i] || {}\r\n if (i === 0) {\r\n formatter += `${name}<br/>`\r\n }\r\n formatter += useVariablesInText(\r\n // 如果系列有提示框组件就使用自定义,没有就用默认的\r\n _tooltipFormatter || tooltipFormatter,\r\n {\r\n textData: {\r\n marker,\r\n name,\r\n value,\r\n seriesName,\r\n a: seriesName,\r\n b: name,\r\n c: value,\r\n ...data\r\n }\r\n },\r\n {\r\n useNewline: true,\r\n useSpace: true\r\n })\r\n formatter += '<br/>'\r\n }\r\n return formatter\r\n },\r\n textStyle: {\r\n color: chartsOptions.tooltipTextStyleColor,\r\n fontSize: fontSize\r\n }\r\n },\r\n xAxis: {\r\n minInterval: chartsOptions.xAxisMinInterval,\r\n type: 'category',\r\n data: unref(xAxisData),\r\n splitLine: {\r\n show: chartsOptions.xAxisSplitLineShow,\r\n lineStyle: {\r\n color: chartsOptions.xAxisSplitLineStyleColor\r\n }\r\n },\r\n axisLabel: {\r\n color: chartsOptions.xAxisLabelColor,\r\n interval: chartsOptions.xAxisLabelInterval || 0,\r\n rotate: chartsOptions.xAxisLabelRotate,\r\n width: chartsOptions.xAxisLabelWidth,\r\n overflow: chartsOptions.xAxisLabelOverflow\r\n },\r\n axisLine: {\r\n lineStyle: {\r\n color: chartsOptions.xAxisLineStyleColor\r\n }\r\n },\r\n axisTick: {\r\n show: chartsOptions.xAxisTickShow\r\n }\r\n },\r\n yAxis: unref(yAxis),\r\n series: unref(series)\r\n }\r\n}\r\n","interface DataItem {\n name: string | number\n value: string | number\n type?: string\n}\n\nexport type Data = DataItem []\n\nexport interface KeyTypeDataFieldNames {\n name: string\n types: {\n label: string\n value: string\n } []\n}\n\n/**\n * 图形转化数据\n * @param data 数据\n * @param dataFieldNames 字段映射\n */\nexport const useTransformChartDataByAttrKey = (data: Data = [], dataFieldNames: KeyTypeDataFieldNames) => {\n let { name = 'name', types = [] } = dataFieldNames || {}\n name = name?.trim() || name\n const set = new Set()\n const map = new Map<string, any []>()\n const dataLen = data.length\n const typesLen = types.length\n // 只有一条记录\n if (dataLen === 1) {\n const vs = []\n // data 为一个值取第一个\n for (let i = 0; i < typesLen; i++) {\n const type = types[i]\n const { label, value } = type\n const v = { ...data[0], value: data[0][value] }\n set.add(label)\n // 值列表\n vs.push(v)\n }\n const n = data[0][name] || ''\n map.set(n, vs)\n } else {\n for (let i = 0; i < dataLen; i++) {\n const item = data[i]\n const x = item[name]\n set.add(x)\n for (let j = 0; j < typesLen; j++) {\n const type = types[j]\n const { label, value } = type\n const v = { ...item, value: item[value] }\n if (map.has(label)) {\n const m = map.get(label)\n m.push(v)\n map.set(label, m)\n } else {\n map.set(label, [v])\n }\n }\n }\n }\n\n const dimensions = Array.from(set)\n const dataset: { [key:string]:any } [] = []\n for (const [name, data] of map) {\n dataset.push({\n name,\n data\n })\n }\n return {\n dimensions,\n dataset\n }\n}\n\nexport default useTransformChartDataByAttrKey\n","interface DataItem {\n name: string | number\n value: string | number\n type?: string\n}\n\nexport type Data = DataItem []\n\nexport interface ValueTypeDataFieldNames {\n name: string\n value: string\n type: string\n}\n\n/**\n * 图形转化数据\n * @param data 数据\n * @param dataFieldNames 字段映射\n */\nexport const useTransformChartDataByAttrValue = (data: Data, dataFieldNames?: ValueTypeDataFieldNames) => {\n let { name = 'name', value = 'value', type = 'type' } = dataFieldNames || {}\n // 处去字符串\n name = name?.trim()\n value = value?.trim()\n type = type?.trim()\n const set = new Set()\n const map = new Map()\n const len = data.length\n for (let i = 0; i < len; i++) {\n const item = data[i]\n // x轴\n const x = item[name] || ''\n // y轴\n const y = item[value] || ''\n // 系列(类型)\n const t = item[type] || ''\n set.add(x)\n if (map.has(t)) {\n const arr = map.get(t)\n arr.push({ name: x, value: y, ...item })\n map.set(t, arr)\n } else {\n map.set(t, [{ name: x, value: y, ...item }])\n }\n }\n const dimensions = Array.from(set)\n const dataset: { [key:string]:any } [] = []\n for (const [name, data] of map) {\n dataset.push({\n name,\n data\n })\n }\n return {\n dimensions,\n dataset\n }\n}\nexport default useTransformChartDataByAttrValue\n","<template>\r\n <div class=\"ecan-chart-graph\" ref=\"chartWrap\">\r\n <a-spin\r\n :spinning=\"loading\"\r\n wrapperClassName=\"chart-spin\"\r\n tip=\"数据加载中...\"\r\n >\r\n <div\r\n style=\"width: 100%; height: 100%\"\r\n ref=\"echartRef\"\r\n ></div>\r\n </a-spin>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport * as echarts from 'echarts'\r\nimport {\r\n defineComponent,\r\n onMounted,\r\n onBeforeUnmount,\r\n computed,\r\n ref,\r\n inject,\r\n unref,\r\n watch\r\n} from 'vue'\r\nimport { Modal as AModal, Spin as ASpin } from 'ant-design-vue'\r\nimport useIndicatorData from '@/hooks/useIndicatorData'\r\nimport { getTransformProps } from './transformProps'\r\nimport useTransformChartDataByAttrKey, {\r\n KeyTypeDataFieldNames\r\n} from '@/hooks/useTransformChartDataByAttrKey'\r\nimport useTransformChartDataByAttrValue, {\r\n ValueTypeDataFieldNames\r\n} from '@/hooks/useTransformChartDataByAttrValue'\r\nimport {\r\n CHARTS_OPTIONS,\r\n GRAPHIC_CONFIG,\r\n ZOOM_FONT_SIZE,\r\n REQUEST,\r\n INDICATOR_TOKEN\r\n} from '@/utils/constant'\r\nexport default defineComponent({\r\n name: 'ChartGraph',\r\n components: {\r\n ASpin\r\n },\r\n props: {\r\n graphicConfig: {\r\n // 指标库配置\r\n type: Object,\r\n default: () => {}\r\n },\r\n chartsOptions: {\r\n // 图表配置\r\n type: Object,\r\n default: () => {}\r\n }\r\n },\r\n setup (props, { expose }) {\r\n const chartsOptions = computed(() => {\r\n if (props.chartsOptions) {\r\n return unref(props.chartsOptions)\r\n } else {\r\n return inject(CHARTS_OPTIONS) as {\r\n [key: string]: any\r\n }\r\n }\r\n })\r\n const graphicConfig = computed(() => {\r\n if (props.graphicConfig) {\r\n return unref(props.graphicConfig)\r\n } else {\r\n return inject(GRAPHIC_CONFIG) as {\r\n [key: string]: any\r\n }\r\n }\r\n })\r\n const request = inject(REQUEST)\r\n let observer: ResizeObserver | null = null\r\n const indicatorToken = inject(INDICATOR_TOKEN) || ''\r\n const echartRef = ref<HTMLElement>(null)\r\n const myChart = ref<any>()\r\n const loading = ref(false)\r\n const visible = ref(false)\r\n const fontSize = computed(() => (visible.value ? ZOOM_FONT_SIZE : 12))\r\n const chartData = ref<any>({})\r\n const myOption = ref()\r\n const chartOption = computed(() => {\r\n // 这样写为了触发响应式\r\n const chartsOptionsValue = unref(chartsOptions.value)\r\n if (chartsOptionsValue?.type === 'customGraph') {\r\n return myOption.value\r\n }\r\n const options = getTransformProps(\r\n chartsOptionsValue,\r\n unref(chartData),\r\n fontSize.value\r\n )\r\n return {\r\n toolbox: {\r\n show: chartsOptionsValue.toolboxShow,\r\n left: chartsOptionsValue.toolboxLeft,\r\n top: chartsOptionsValue.toolboxTop,\r\n itemSize: chartsOptionsValue.toolboxItemSize,\r\n itemGap: chartsOptionsValue.toolboxItemGap,\r\n feature: {\r\n myLocation: {\r\n show: visible.value ? false : chartsOptionsValue.toolboxLocation,\r\n title: '快速定位',\r\n icon: 'path://M512 512m-80 0a80 80 0 1 0 160 0 80 80 0 1 0-160 0Z, M960 480h-33.632C910.752 276.16 747.84 113.248 544 97.632V64a32 32 0 1 0-64 0v33.632C276.16 113.248 113.248 276.16 97.632 480H64a32 32 0 0 0 0 64h33.632C113.248 747.84 276.16 910.752 480 926.368V960a32 32 0 1 0 64 0v-33.632C747.84 910.752 910.752 747.84 926.368 544H960a32 32 0 1 0 0-64zM544 862.368V800a32 32 0 1 0-64 0v62.368C311.424 847.104 176.896 712.576 161.632 544H224a32 32 0 1 0 0-64H161.632C176.896 311.424 311.424 176.896 480 161.632V224a32 32 0 0 0 64 0V161.632c168.576 15.296 303.104 149.792 318.368 318.368H800a32 32 0 1 0 0 64h62.368c-15.264 168.576-149.792 303.104-318.368 318.368z',\r\n onclick () {}\r\n },\r\n myDownload: {\r\n show: chartsOptionsValue.toolboxDownloadShow,\r\n title: '数据下载',\r\n icon: 'path://M502.010485 765.939573c3.773953 3.719718 8.686846 5.573949 13.596669 5.573949 0.075725 0 0.151449-0.010233 0.227174-0.011256 0.329505 0.016373 0.654916 0.050142 0.988514 0.050142 0.706081 0 1.400906-0.042979 2.087545-0.116657 4.352121-0.366344 8.607028-2.190899 11.961426-5.496178l335.053985-330.166675c7.619538-7.509021 7.709589-19.773346 0.200568-27.393907s-19.774369-7.711636-27.39493-0.201591L536.193005 706.304358 536.193005 50.019207c0-10.698666-8.67252-19.371186-19.371186-19.371186s-19.371186 8.67252-19.371186 19.371186l0 657.032164-306.881342-302.44838c-7.618515-7.509021-19.883863-7.419993-27.393907 0.199545-7.509021 7.619538-7.419993 19.884886 0.199545 27.393907L502.010485 765.939573z, M867.170139 711.020776c-10.698666 0-19.371186 8.67252-19.371186 19.371186l0 165.419494c0 13.054317-10.620895 23.675212-23.676236 23.675212L205.182103 919.486668c-13.054317 0-23.676236-10.620895-23.676236-23.675212L181.505867 730.391962c0-10.698666-8.67252-19.371186-19.371186-19.371186s-19.371186 8.67252-19.371186 19.371186l0 165.419494c0 34.416857 28.000728 62.416562 62.417585 62.416562l618.941638 0c34.417881 0 62.417585-27.999704 62.417585-62.416562L886.540302 730.391962C886.541325 719.693296 877.868805 711.020776 867.170139 711.020776z',\r\n onclick () {}\r\n },\r\n myDataZoom: {\r\n show: visible.value\r\n ? false\r\n : chartsOptionsValue.toolboxDataZoomShow,\r\n title: '放大',\r\n icon: 'path://M932.42 902.246667L792 761.793333A403.84 403.84 0 0 0 896 490.666667c0-223.86-181.473333-405.333333-405.333333-405.333334S85.333333 266.806667 85.333333 490.666667s181.473333 405.333333 405.333334 405.333333a403.84 403.84 0 0 0 271.126666-104l140.453334 140.453333a21.333333 21.333333 0 0 0 30.173333-30.173333zM128 490.666667c0-200.293333 162.373333-362.666667 362.666667-362.666667s362.666667 162.373333 362.666666 362.666667-162.373333 362.666667-362.666666 362.666666-362.666667-162.373333-362.666667-362.666666z m512 0a21.333333 21.333333 0 0 1-21.333333 21.333333H512v106.666667a21.333333 21.333333 0 0 1-42.666667 0V512H362.666667a21.333333 21.333333 0 0 1 0-42.666667h106.666666V362.666667a21.333333 21.333333 0 0 1 42.666667 0v106.666666h106.666667a21.333333 21.333333 0 0 1 21.333333 21.333334z',\r\n onclick () {}\r\n },\r\n myInfo: {\r\n show: chartsOptionsValue.toolboxInfoShow,\r\n title: '说明信息',\r\n icon: 'path://M512.50142 958.397886c-119.320573 0-231.499491-46.465265-315.871087-130.837884C112.258737 743.188406 65.792449 631.010511 65.792449 511.688915c0-119.319549 46.466288-231.499491 130.837884-315.871087C281.002952 111.445208 393.180847 64.979944 512.50142 64.979944s231.499491 46.465265 315.871087 130.837884c84.372619 84.372619 130.837884 196.551538 130.837884 315.871087 0 119.321596-46.465265 231.499491-130.837884 315.871087C744.000911 911.932622 631.821993 958.397886 512.50142 958.397886zM512.50142 105.962334c-223.718271 0-405.726581 182.00831-405.726581 405.726581s182.00831 405.726581 405.726581 405.726581c223.718271 0 405.727605-182.00831 405.727605-405.726581S736.220714 105.962334 512.50142 105.962334z M510.150886 775.953647c-18.107403 0-32.745798-14.678304-32.745798-32.785707L477.405087 452.191846c0-18.108426 14.638395-32.785707 32.745798-32.785707 18.107403 0 32.745798 14.678304 32.745798 32.785707l0 290.976094C542.896684 761.275343 528.258289 775.953647 510.150886 775.953647z M511.357364 296.458969m-45.080731 0a44.054 44.054 0 1 0 90.161463 0 44.054 44.054 0 1 0-90.161463 0Z',\r\n onclick () {\r\n AModal.info({\r\n title: '说明信息',\r\n content: chartsOptionsValue.toolboxInfoText\r\n })\r\n }\r\n }\r\n }\r\n },\r\n title: {\r\n text: chartsOptionsValue.titleText,\r\n subtext: chartsOptionsValue.titleSubtext,\r\n left: 'center'\r\n },\r\n grid: {\r\n top: chartsOptionsValue.gridTop,\r\n bottom: chartsOptionsValue.gridBottom,\r\n left: chartsOptionsValue.gridLeft,\r\n right: chartsOptionsValue.gridRight,\r\n containLabel: chartsOptionsValue.gridContainLabel\r\n },\r\n color: chartsOptionsValue.colors,\r\n ...options\r\n }\r\n })\r\n const handleIndicatorDataset = (\r\n data: any = [],\r\n keyTypeDataFieldNames: KeyTypeDataFieldNames,\r\n useDataFieldNames: boolean = false\r\n ) => {\r\n const dataFieldNames = useDataFieldNames ? keyTypeDataFieldNames : null\r\n chartData.value = useTransformChartDataByAttrKey(data, dataFieldNames)\r\n }\r\n const handleIndicatorPieDataset = (\r\n data: any = [],\r\n dataFieldNames?: ValueTypeDataFieldNames\r\n ) => {\r\n chartData.value = useTransformChartDataByAttrValue(data, dataFieldNames)\r\n }\r\n const handleIndicatorData = async () => {\r\n try {\r\n const indicatorData = useIndicatorData({\r\n graphicConfig: unref(graphicConfig.value),\r\n type: unref(chartsOptions.value)?.type,\r\n request,\r\n indicatorToken\r\n })\r\n loading.value = true\r\n const res = await indicatorData()\r\n const { columns = [], rows = [] } = res?.data?.data ?? {}\r\n if (unref(chartsOptions.value)?.type === 'pie') {\r\n let arr = []\r\n if (columns.length > 0) {\r\n const name = columns[0]\r\n const value = columns[1]\r\n arr = rows.map((item) => {\r\n return {\r\n name: item[name],\r\n value: item[value]\r\n }\r\n })\r\n }\r\n handleIndicatorPieDataset(arr)\r\n } else {\r\n let fieldNames\r\n if (columns.length > 0) {\r\n fieldNames = {\r\n name: columns[0],\r\n types: columns.slice(1).map((column) => {\r\n return {\r\n label: column,\r\n value: column\r\n }\r\n })\r\n }\r\n }\r\n handleIndicatorDataset(rows, fieldNames, true)\r\n }\r\n } catch (e) {\r\n console.error(e)\r\n } finally {\r\n loading.value = false\r\n }\r\n }\r\n const emptyOption = {\r\n title: {\r\n text: '暂无数据',\r\n x: 'center',\r\n y: 'center',\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal'\r\n }\r\n }\r\n }\r\n const setChartOption = () => {\r\n const isEmpty = unref(chartData).dataset.length === 0\r\n if (isEmpty) {\r\n myChart.value.setOption(emptyOption)\r\n } else {\r\n myChart.value.setOption(chartOption.value)\r\n }\r\n }\r\n const refreshData = () => {\r\n if (unref(chartsOptions.value).type !== 'customGraph') {\r\n handleIndicatorData()\r\n }\r\n }\r\n const handleResize = () => {\r\n myChart.value?.resize()\r\n }\r\n watch(\r\n chartOption,\r\n () => {\r\n setChartOption()\r\n },\r\n {\r\n deep: true\r\n }\r\n )\r\n watch(\r\n () => unref(chartsOptions.value).optionCode,\r\n (optionCode: string) => {\r\n try {\r\n // eslint-disable-next-line\r\n const evalCopy = eval\r\n myOption.value = evalCopy(optionCode)\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n )\r\n onMounted(() => {\r\n observer = new ResizeObserver(handleResize)\r\n const chartWrap = document.getElementsByClassName('ecan-chart-graph')[0]\r\n observer.observe(chartWrap)\r\n myChart.value = echarts.init(echartRef.value)\r\n })\r\n onBeforeUnmount(() => {\r\n myChart.value.dispose()\r\n if (observer) {\r\n observer.disconnect()\r\n observer = null\r\n }\r\n })\r\n expose({\r\n refreshData\r\n })\r\n return {\r\n echartRef,\r\n loading\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n.ecan-chart-graph {\r\n width: 100%;\r\n height: 100%;\r\n .chart-spin {\r\n width: 100%;\r\n height: 100%;\r\n :deep(.ant-spin-container) {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n }\r\n}\r\n</style>\r\n","<template>\r\n <div class=\"ecan-chart-graph\" ref=\"chartWrap\">\r\n <a-spin\r\n :spinning=\"loading\"\r\n wrapperClassName=\"chart-spin\"\r\n tip=\"数据加载中...\"\r\n >\r\n <div\r\n style=\"width: 100%; height: 100%\"\r\n ref=\"echartRef\"\r\n ></div>\r\n </a-spin>\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport * as echarts from 'echarts'\r\nimport {\r\n defineComponent,\r\n onMounted,\r\n onBeforeUnmount,\r\n computed,\r\n ref,\r\n inject,\r\n unref,\r\n watch\r\n} from 'vue'\r\nimport { Modal as AModal, Spin as ASpin } from 'ant-design-vue'\r\nimport useIndicatorData from '@/hooks/useIndicatorData'\r\nimport { getTransformProps } from './transformProps'\r\nimport useTransformChartDataByAttrKey, {\r\n KeyTypeDataFieldNames\r\n} from '@/hooks/useTransformChartDataByAttrKey'\r\nimport useTransformChartDataByAttrValue, {\r\n ValueTypeDataFieldNames\r\n} from '@/hooks/useTransformChartDataByAttrValue'\r\nimport {\r\n CHARTS_OPTIONS,\r\n GRAPHIC_CONFIG,\r\n ZOOM_FONT_SIZE,\r\n REQUEST,\r\n INDICATOR_TOKEN\r\n} from '@/utils/constant'\r\nexport default defineComponent({\r\n name: 'ChartGraph',\r\n components: {\r\n ASpin\r\n },\r\n props: {\r\n graphicConfig: {\r\n // 指标库配置\r\n type: Object,\r\n default: () => {}\r\n },\r\n chartsOptions: {\r\n // 图表配置\r\n type: Object,\r\n default: () => {}\r\n }\r\n },\r\n setup (props, { expose }) {\r\n const chartsOptions = computed(() => {\r\n if (props.chartsOptions) {\r\n return unref(props.chartsOptions)\r\n } else {\r\n return inject(CHARTS_OPTIONS) as {\r\n [key: string]: any\r\n }\r\n }\r\n })\r\n const graphicConfig = computed(() => {\r\n if (props.graphicConfig) {\r\n return unref(props.graphicConfig)\r\n } else {\r\n return inject(GRAPHIC_CONFIG) as {\r\n [key: string]: any\r\n }\r\n }\r\n })\r\n const request = inject(REQUEST)\r\n let observer: ResizeObserver | null = null\r\n const indicatorToken = inject(INDICATOR_TOKEN) || ''\r\n const echartRef = ref<HTMLElement>(null)\r\n const myChart = ref<any>()\r\n const loading = ref(false)\r\n const visible = ref(false)\r\n const fontSize = computed(() => (visible.value ? ZOOM_FONT_SIZE : 12))\r\n const chartData = ref<any>({})\r\n const myOption = ref()\r\n const chartOption = computed(() => {\r\n // 这样写为了触发响应式\r\n const chartsOptionsValue = unref(chartsOptions.value)\r\n if (chartsOptionsValue?.type === 'customGraph') {\r\n return myOption.value\r\n }\r\n const options = getTransformProps(\r\n chartsOptionsValue,\r\n unref(chartData),\r\n fontSize.value\r\n )\r\n return {\r\n toolbox: {\r\n show: chartsOptionsValue.toolboxShow,\r\n left: chartsOptionsValue.toolboxLeft,\r\n top: chartsOptionsValue.toolboxTop,\r\n itemSize: chartsOptionsValue.toolboxItemSize,\r\n itemGap: chartsOptionsValue.toolboxItemGap,\r\n feature: {\r\n myLocation: {\r\n show: visible.value ? false : chartsOptionsValue.toolboxLocation,\r\n title: '快速定位',\r\n icon: 'path://M512 512m-80 0a80 80 0 1 0 160 0 80 80 0 1 0-160 0Z, M960 480h-33.632C910.752 276.16 747.84 113.248 544 97.632V64a32 32 0 1 0-64 0v33.632C276.16 113.248 113.248 276.16 97.632 480H64a32 32 0 0 0 0 64h33.632C113.248 747.84 276.16 910.752 480 926.368V960a32 32 0 1 0 64 0v-33.632C747.84 910.752 910.752 747.84 926.368 544H960a32 32 0 1 0 0-64zM544 862.368V800a32 32 0 1 0-64 0v62.368C311.424 847.104 176.896 712.576 161.632 544H224a32 32 0 1 0 0-64H161.632C176.896 311.424 311.424 176.896 480 161.632V224a32 32 0 0 0 64 0V161.632c168.576 15.296 303.104 149.792 318.368 318.368H800a32 32 0 1 0 0 64h62.368c-15.264 168.576-149.792 303.104-318.368 318.368z',\r\n onclick () {}\r\n },\r\n myDownload: {\r\n show: chartsOptionsValue.toolboxDownloadShow,\r\n title: '数据下载',\r\n icon: 'path://M502.010485 765.939573c3.773953 3.719718 8.686846 5.573949 13.596669 5.573949 0.075725 0 0.151449-0.010233 0.227174-0.011256 0.329505 0.016373 0.654916 0.050142 0.988514 0.050142 0.706081 0 1.400906-0.042979 2.087545-0.116657 4.352121-0.366344 8.607028-2.190899 11.961426-5.496178l335.053985-330.166675c7.619538-7.509021 7.709589-19.773346 0.200568-27.393907s-19.774369-7.711636-27.39493-0.201591L536.193005 706.304358 536.193005 50.019207c0-10.698666-8.67252-19.371186-19.371186-19.371186s-19.371186 8.67252-19.371186 19.371186l0 657.032164-306.881342-302.44838c-7.618515-7.509021-19.883863-7.419993-27.393907 0.199545-7.509021 7.619538-7.419993 19.884886 0.199545 27.393907L502.010485 765.939573z, M867.170139 711.020776c-10.698666 0-19.371186 8.67252-19.371186 19.371186l0 165.419494c0 13.054317-10.620895 23.675212-23.676236 23.675212L205.182103 919.486668c-13.054317 0-23.676236-10.620895-23.676236-23.675212L181.505867 730.391962c0-10.698666-8.67252-19.371186-19.371186-19.371186s-19.371186 8.67252-19.371186 19.371186l0 165.419494c0 34.416857 28.000728 62.416562 62.417585 62.416562l618.941638 0c34.417881 0 62.417585-27.999704 62.417585-62.416562L886.540302 730.391962C886.541325 719.693296 877.868805 711.020776 867.170139 711.020776z',\r\n onclick () {}\r\n },\r\n myDataZoom: {\r\n show: visible.value\r\n ? false\r\n : chartsOptionsValue.toolboxDataZoomShow,\r\n title: '放大',\r\n icon: 'path://M932.42 902.246667L792 761.793333A403.84 403.84 0 0 0 896 490.666667c0-223.86-181.473333-405.333333-405.333333-405.333334S85.333333 266.806667 85.333333 490.666667s181.473333 405.333333 405.333334 405.333333a403.84 403.84 0 0 0 271.126666-104l140.453334 140.453333a21.333333 21.333333 0 0 0 30.173333-30.173333zM128 490.666667c0-200.293333 162.373333-362.666667 362.666667-362.666667s362.666667 162.373333 362.666666 362.666667-162.373333 362.666667-362.666666 362.666666-362.666667-162.373333-362.666667-362.666666z m512 0a21.333333 21.333333 0 0 1-21.333333 21.333333H512v106.666667a21.333333 21.333333 0 0 1-42.666667 0V512H362.666667a21.333333 21.333333 0 0 1 0-42.666667h106.666666V362.666667a21.333333 21.333333 0 0 1 42.666667 0v106.666666h106.666667a21.333333 21.333333 0 0 1 21.333333 21.333334z',\r\n onclick () {}\r\n },\r\n myInfo: {\r\n show: chartsOptionsValue.toolboxInfoShow,\r\n title: '说明信息',\r\n icon: 'path://M512.50142 958.397886c-119.320573 0-231.499491-46.465265-315.871087-130.837884C112.258737 743.188406 65.792449 631.010511 65.792449 511.688915c0-119.319549 46.466288-231.499491 130.837884-315.871087C281.002952 111.445208 393.180847 64.979944 512.50142 64.979944s231.499491 46.465265 315.871087 130.837884c84.372619 84.372619 130.837884 196.551538 130.837884 315.871087 0 119.321596-46.465265 231.499491-130.837884 315.871087C744.000911 911.932622 631.821993 958.397886 512.50142 958.397886zM512.50142 105.962334c-223.718271 0-405.726581 182.00831-405.726581 405.726581s182.00831 405.726581 405.726581 405.726581c223.718271 0 405.727605-182.00831 405.727605-405.726581S736.220714 105.962334 512.50142 105.962334z M510.150886 775.953647c-18.107403 0-32.745798-14.678304-32.745798-32.785707L477.405087 452.191846c0-18.108426 14.638395-32.785707 32.745798-32.785707 18.107403 0 32.745798 14.678304 32.745798 32.785707l0 290.976094C542.896684 761.275343 528.258289 775.953647 510.150886 775.953647z M511.357364 296.458969m-45.080731 0a44.054 44.054 0 1 0 90.161463 0 44.054 44.054 0 1 0-90.161463 0Z',\r\n onclick () {\r\n AModal.info({\r\n title: '说明信息',\r\n content: chartsOptionsValue.toolboxInfoText\r\n })\r\n }\r\n }\r\n }\r\n },\r\n title: {\r\n text: chartsOptionsValue.titleText,\r\n subtext: chartsOptionsValue.titleSubtext,\r\n left: 'center'\r\n },\r\n grid: {\r\n top: chartsOptionsValue.gridTop,\r\n bottom: chartsOptionsValue.gridBottom,\r\n left: chartsOptionsValue.gridLeft,\r\n right: chartsOptionsValue.gridRight,\r\n containLabel: chartsOptionsValue.gridContainLabel\r\n },\r\n color: chartsOptionsValue.colors,\r\n ...options\r\n }\r\n })\r\n const handleIndicatorDataset = (\r\n data: any = [],\r\n keyTypeDataFieldNames: KeyTypeDataFieldNames,\r\n useDataFieldNames: boolean = false\r\n ) => {\r\n const dataFieldNames = useDataFieldNames ? keyTypeDataFieldNames : null\r\n chartData.value = useTransformChartDataByAttrKey(data, dataFieldNames)\r\n }\r\n const handleIndicatorPieDataset = (\r\n data: any = [],\r\n dataFieldNames?: ValueTypeDataFieldNames\r\n ) => {\r\n chartData.value = useTransformChartDataByAttrValue(data, dataFieldNames)\r\n }\r\n const handleIndicatorData = async () => {\r\n try {\r\n const indicatorData = useIndicatorData({\r\n graphicConfig: unref(graphicConfig.value),\r\n type: unref(chartsOptions.value)?.type,\r\n request,\r\n indicatorToken\r\n })\r\n loading.value = true\r\n const res = await indicatorData()\r\n const { columns = [], rows = [] } = res?.data?.data ?? {}\r\n if (unref(chartsOptions.value)?.type === 'pie') {\r\n let arr = []\r\n if (columns.length > 0) {\r\n const name = columns[0]\r\n const value = columns[1]\r\n arr = rows.map((item) => {\r\n return {\r\n name: item[name],\r\n value: item[value]\r\n }\r\n })\r\n }\r\n handleIndicatorPieDataset(arr)\r\n } else {\r\n let fieldNames\r\n if (columns.length > 0) {\r\n fieldNames = {\r\n name: columns[0],\r\n types: columns.slice(1).map((column) => {\r\n return {\r\n label: column,\r\n value: column\r\n }\r\n })\r\n }\r\n }\r\n handleIndicatorDataset(rows, fieldNames, true)\r\n }\r\n } catch (e) {\r\n console.error(e)\r\n } finally {\r\n loading.value = false\r\n }\r\n }\r\n const emptyOption = {\r\n title: {\r\n text: '暂无数据',\r\n x: 'center',\r\n y: 'center',\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal'\r\n }\r\n }\r\n }\r\n const setChartOption = () => {\r\n const isEmpty = unref(chartData).dataset.length === 0\r\n if (isEmpty) {\r\n myChart.value.setOption(emptyOption)\r\n } else {\r\n myChart.value.setOption(chartOption.value)\r\n }\r\n }\r\n const refreshData = () => {\r\n if (unref(chartsOptions.value).type !== 'customGraph') {\r\n handleIndicatorData()\r\n }\r\n }\r\n const handleResize = () => {\r\n myChart.value?.resize()\r\n }\r\n watch(\r\n chartOption,\r\n () => {\r\n setChartOption()\r\n },\r\n {\r\n deep: true\r\n }\r\n )\r\n watch(\r\n () => unref(chartsOptions.value).optionCode,\r\n (optionCode: string) => {\r\n try {\r\n // eslint-disable-next-line\r\n const evalCopy = eval\r\n myOption.value = evalCopy(optionCode)\r\n } catch (e) {\r\n console.error(e)\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n )\r\n onMounted(() => {\r\n observer = new ResizeObserver(handleResize)\r\n const chartWrap = document.getElementsByClassName('ecan-chart-graph')[0]\r\n observer.observe(chartWrap)\r\n myChart.value = echarts.init(echartRef.value)\r\n })\r\n onBeforeUnmount(() => {\r\n myChart.value.dispose()\r\n if (observer) {\r\n observer.disconnect()\r\n observer = null\r\n }\r\n })\r\n expose({\r\n refreshData\r\n })\r\n return {\r\n echartRef,\r\n loading\r\n }\r\n }\r\n})\r\n</script>\r\n\r\n<style lang=\"less\" scoped>\r\n.ecan-chart-graph {\r\n width: 100%;\r\n height: 100%;\r\n .chart-spin {\r\n width: 100%;\r\n height: 100%;\r\n :deep(.ant-spin-container) {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n }\r\n}\r\n</style>\r\n","<template>\n <div class=\"data-config\">\n <a-tabs v-model:activeKey=\"activeKey\">\n <a-tab-pane\n key=\"1\"\n tab=\"数据配置\"\n >\n <data-group />\n </a-tab-pane>\n <a-tab-pane\n v-if=\"isShowStyleConfig\"\n key=\"2\"\n tab=\"样式配置\"\n force-render\n >\n <style-group></style-group>\n </a-tab-pane>\n </a-tabs>\n <chart-graph\n v-if=\"isShowStyleConfig\"\n class=\"chart-component\"\n :class=\"fullWidth ? 'full-width' : ''\"\n ref=\"componentRef\"\n style=\"width: 100%; height: 290px\"\n ></chart-graph>\n <component\n v-else\n class=\"chart-component\"\n :class=\"fullWidth ? 'full-width' : ''\"\n :is=\"type\"\n v-bind=\"component\"\n ref=\"componentRef\"\n />\n </div>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n computed,\n ref,\n unref,\n inject,\n watch,\n provide,\n onMounted\n} from 'vue'\nimport { Tabs as ATabs, TabPane as ATabPane } from 'ant-design-vue'\nimport DataGroup from './data-config-group'\nimport StyleGroup from './style-config-group'\nimport ChartGraph from '@/indicator/chart-graph/ChartGraph.vue'\nimport { cloneDeep, pick, without } from 'lodash-es'\nimport {\n SELECTED_COMPONENT,\n GRAPHIC_CONFIG,\n SHOW_STYLE_CONFIG,\n REFRESH_DATA\n} from '@/utils/constant'\nimport { lowerCaseIncludes } from '@/utils/util'\n\nexport default defineComponent({\n name: 'DataConfig',\n components: {\n DataGroup,\n StyleGroup,\n ChartGraph,\n ATabs,\n ATabPane\n },\n setup () {\n const activeKey = ref('1')\n const activePanel = ref<number[]>([0, 1, 2])\n const componentRef = ref()\n const selectedComponent = inject(SELECTED_COMPONENT) as {\n [key: string]: any\n }\n const isShowStyleConfig = inject(SHOW_STYLE_CONFIG)\n const graphicConfig = inject(GRAPHIC_CONFIG) as { [key: string]: any }\n const notGraphicList = ['text', 'proportion', 'select', 'checkbox', 'radio', 'radar']\n const component = computed<{ [key: string]: any }>(() => {\n const cloneComponent = cloneDeep(unref(selectedComponent))\n const pickComponent = pick(\n cloneComponent,\n without(\n Object.keys(cloneComponent),\n 'position',\n 'top',\n 'left',\n 'width',\n 'height'\n )\n )\n if (lowerCaseIncludes(cloneComponent.type, notGraphicList)) {\n pickComponent.height = cloneComponent.height\n pickComponent.width = cloneComponent.width\n } else {\n pickComponent.height = '290px'\n }\n const config = cloneDeep(unref(graphicConfig))\n // 设计模式\n config.pageMode = 'design'\n // 后台开启预览模式\n config.preview = true\n return {\n ...pickComponent,\n graphicConfig: config,\n // 隐藏工具栏\n toolboxShow: false\n }\n })\n const fullWidth = computed(() => {\n let result = true\n if (lowerCaseIncludes(unref(component).type, notGraphicList)) {\n result = false\n }\n return result\n })\n const type = computed(() => unref(component)?.type)\n\n const refreshData = () => {\n const refreshData = unref(componentRef)?.refreshData\n if (typeof refreshData === 'function') {\n refreshData()\n }\n }\n provide(REFRESH_DATA, refreshData)\n watch(\n graphicConfig,\n () => {\n refreshData()\n },\n {\n deep: true,\n flush: 'post'\n }\n )\n onMounted(() => {\n refreshData()\n })\n\n return {\n isShowStyleConfig,\n activeKey,\n activePanel,\n componentRef,\n type,\n component,\n fullWidth\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-config {\n background: #fff;\n height: 100%;\n width: 100%;\n padding: 0 15px;\n overflow-y: auto;\n color: #444;\n\n :deep(.ant-tabs) {\n height: calc(100% - 310px);\n\n .ant-tabs-content-holder {\n height: calc(100% - 50px);\n overflow: auto;\n }\n }\n}\n\n.chart-component {\n width: 100%;\n position: relative !important;\n margin: 20px auto 0;\n\n &.full-width {\n width: 100% !important;\n }\n}\n\n.prop-item {\n display: flex;\n align-items: center;\n padding: 5px 5px 10px 5px;\n}\n\n.label {\n width: 135px;\n display: flex;\n justify-content: center;\n}\n\n.component-wrapper {\n width: calc(100% - 135px);\n}\n\n.color-pick {\n display: flex;\n}\n\n.input {\n margin-right: 10px;\n}\n</style>\n","<template>\n <div class=\"data-config\">\n <a-tabs v-model:activeKey=\"activeKey\">\n <a-tab-pane\n key=\"1\"\n tab=\"数据配置\"\n >\n <data-group />\n </a-tab-pane>\n <a-tab-pane\n v-if=\"isShowStyleConfig\"\n key=\"2\"\n tab=\"样式配置\"\n force-render\n >\n <style-group></style-group>\n </a-tab-pane>\n </a-tabs>\n <chart-graph\n v-if=\"isShowStyleConfig\"\n class=\"chart-component\"\n :class=\"fullWidth ? 'full-width' : ''\"\n ref=\"componentRef\"\n style=\"width: 100%; height: 290px\"\n ></chart-graph>\n <component\n v-else\n class=\"chart-component\"\n :class=\"fullWidth ? 'full-width' : ''\"\n :is=\"type\"\n v-bind=\"component\"\n ref=\"componentRef\"\n />\n </div>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n computed,\n ref,\n unref,\n inject,\n watch,\n provide,\n onMounted\n} from 'vue'\nimport { Tabs as ATabs, TabPane as ATabPane } from 'ant-design-vue'\nimport DataGroup from './data-config-group'\nimport StyleGroup from './style-config-group'\nimport ChartGraph from '@/indicator/chart-graph/ChartGraph.vue'\nimport { cloneDeep, pick, without } from 'lodash-es'\nimport {\n SELECTED_COMPONENT,\n GRAPHIC_CONFIG,\n SHOW_STYLE_CONFIG,\n REFRESH_DATA\n} from '@/utils/constant'\nimport { lowerCaseIncludes } from '@/utils/util'\n\nexport default defineComponent({\n name: 'DataConfig',\n components: {\n DataGroup,\n StyleGroup,\n ChartGraph,\n ATabs,\n ATabPane\n },\n setup () {\n const activeKey = ref('1')\n const activePanel = ref<number[]>([0, 1, 2])\n const componentRef = ref()\n const selectedComponent = inject(SELECTED_COMPONENT) as {\n [key: string]: any\n }\n const isShowStyleConfig = inject(SHOW_STYLE_CONFIG)\n const graphicConfig = inject(GRAPHIC_CONFIG) as { [key: string]: any }\n const notGraphicList = ['text', 'proportion', 'select', 'checkbox', 'radio', 'radar']\n const component = computed<{ [key: string]: any }>(() => {\n const cloneComponent = cloneDeep(unref(selectedComponent))\n const pickComponent = pick(\n cloneComponent,\n without(\n Object.keys(cloneComponent),\n 'position',\n 'top',\n 'left',\n 'width',\n 'height'\n )\n )\n if (lowerCaseIncludes(cloneComponent.type, notGraphicList)) {\n pickComponent.height = cloneComponent.height\n pickComponent.width = cloneComponent.width\n } else {\n pickComponent.height = '290px'\n }\n const config = cloneDeep(unref(graphicConfig))\n // 设计模式\n config.pageMode = 'design'\n // 后台开启预览模式\n config.preview = true\n return {\n ...pickComponent,\n graphicConfig: config,\n // 隐藏工具栏\n toolboxShow: false\n }\n })\n const fullWidth = computed(() => {\n let result = true\n if (lowerCaseIncludes(unref(component).type, notGraphicList)) {\n result = false\n }\n return result\n })\n const type = computed(() => unref(component)?.type)\n\n const refreshData = () => {\n const refreshData = unref(componentRef)?.refreshData\n if (typeof refreshData === 'function') {\n refreshData()\n }\n }\n provide(REFRESH_DATA, refreshData)\n watch(\n graphicConfig,\n () => {\n refreshData()\n },\n {\n deep: true,\n flush: 'post'\n }\n )\n onMounted(() => {\n refreshData()\n })\n\n return {\n isShowStyleConfig,\n activeKey,\n activePanel,\n componentRef,\n type,\n component,\n fullWidth\n }\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.data-config {\n background: #fff;\n height: 100%;\n width: 100%;\n padding: 0 15px;\n overflow-y: auto;\n color: #444;\n\n :deep(.ant-tabs) {\n height: calc(100% - 310px);\n\n .ant-tabs-content-holder {\n height: calc(100% - 50px);\n overflow: auto;\n }\n }\n}\n\n.chart-component {\n width: 100%;\n position: relative !important;\n margin: 20px auto 0;\n\n &.full-width {\n width: 100% !important;\n }\n}\n\n.prop-item {\n display: flex;\n align-items: center;\n padding: 5px 5px 10px 5px;\n}\n\n.label {\n width: 135px;\n display: flex;\n justify-content: center;\n}\n\n.component-wrapper {\n width: calc(100% - 135px);\n}\n\n.color-pick {\n display: flex;\n}\n\n.input {\n margin-right: 10px;\n}\n</style>\n","<template>\n <div class=\"config-modal\">\n <div class=\"config-modal-left\">\n <data-list />\n </div>\n <div class=\"config-modal-right\">\n <data-config />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, provide } from 'vue'\nimport { cloneDeep } from 'lodash-es'\nimport {\n DATA_LIST,\n INDICATOR_TOKEN,\n GRAPHIC_CONFIG,\n CHARTS_OPTIONS,\n SOURCE_TYPE,\n SHOW_STYLE_CONFIG,\n UPDATE_GRAPHIC_CONFIG,\n UPDATE_CHARTS_OPTIONS,\n SELECTED_COMPONENT\n} from '@/utils/constant'\nimport propsMap from './data-config/style-config-group/chart-props'\nimport DataList from './data-list'\nimport DataConfig from './data-config'\nexport default defineComponent({\n name: 'IndicatorLibrary',\n components: {\n DataList,\n DataConfig\n },\n props: {\n isShowStyleConfig: {\n // 是否显示样式配置\n type: Boolean,\n default: false\n },\n sourceType: {\n // 数据源类型\n type: String,\n default: ''\n },\n indicatorToken: {\n // 指标库token\n type: String,\n default: ''\n },\n selectedComponent: {\n // 当前组件\n type: Object,\n default: () => {}\n }\n },\n setup (props, { expose }) {\n const sourceType = computed(() => props.sourceType)\n const indicatorToken = computed(() => props.indicatorToken || '')\n const component = computed(() => props.selectedComponent)\n const isShowStyleConfig = computed(() => props.isShowStyleConfig)\n // 图形化配置\n let graphicConfig = unref(component).graphicConfig\n ? cloneDeep(unref(component).graphicConfig)\n : ref({})\n graphicConfig = ref(graphicConfig)\n // 图表样式配置\n let chartsOptions = unref(component).chartsOptions\n ? cloneDeep(unref(component).chartsOptions)\n : ref(cloneDeep(propsMap.line))\n chartsOptions = ref(chartsOptions)\n // 设置数据列表\n const dataList = ref<{ [key: string]: any }[]>([])\n const setDataList = (list: { [key: string]: any }[]) => {\n dataList.value = list\n }\n const updateGraphicConfig = (config: { [key: string]: any }) => {\n graphicConfig.value = {\n ...unref(graphicConfig),\n ...unref(config)\n }\n }\n const updateChartsOptions = (\n options: { [key: string]: any },\n isMerge: Boolean = true\n ) => {\n if (isMerge) {\n chartsOptions.value = {\n ...unref(chartsOptions),\n ...unref(options)\n }\n } else {\n chartsOptions.value = {\n ...unref(options)\n }\n }\n }\n const getDataList = () => dataList\n provide(DATA_LIST, {\n setDataList,\n getDataList\n })\n provide(SELECTED_COMPONENT, component)\n provide(GRAPHIC_CONFIG, graphicConfig)\n provide(CHARTS_OPTIONS, chartsOptions)\n provide(SOURCE_TYPE, sourceType)\n provide(SHOW_STYLE_CONFIG, isShowStyleConfig)\n provide(INDICATOR_TOKEN, indicatorToken)\n provide(UPDATE_GRAPHIC_CONFIG, updateGraphicConfig)\n provide(UPDATE_CHARTS_OPTIONS, updateChartsOptions)\n expose({\n graphicConfig,\n chartsOptions\n })\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.config-modal {\n width: 100%;\n height: 100%;\n display: flex;\n padding: 10px;\n}\n\n.config-modal-left {\n width: 300px;\n height: 100%;\n margin-right: 10px;\n padding: 10px;\n}\n\n.config-modal-right {\n flex: 1;\n}\n</style>\n","<template>\n <div class=\"config-modal\">\n <div class=\"config-modal-left\">\n <data-list />\n </div>\n <div class=\"config-modal-right\">\n <data-config />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, unref, ref, provide } from 'vue'\nimport { cloneDeep } from 'lodash-es'\nimport {\n DATA_LIST,\n INDICATOR_TOKEN,\n GRAPHIC_CONFIG,\n CHARTS_OPTIONS,\n SOURCE_TYPE,\n SHOW_STYLE_CONFIG,\n UPDATE_GRAPHIC_CONFIG,\n UPDATE_CHARTS_OPTIONS,\n SELECTED_COMPONENT\n} from '@/utils/constant'\nimport propsMap from './data-config/style-config-group/chart-props'\nimport DataList from './data-list'\nimport DataConfig from './data-config'\nexport default defineComponent({\n name: 'IndicatorLibrary',\n components: {\n DataList,\n DataConfig\n },\n props: {\n isShowStyleConfig: {\n // 是否显示样式配置\n type: Boolean,\n default: false\n },\n sourceType: {\n // 数据源类型\n type: String,\n default: ''\n },\n indicatorToken: {\n // 指标库token\n type: String,\n default: ''\n },\n selectedComponent: {\n // 当前组件\n type: Object,\n default: () => {}\n }\n },\n setup (props, { expose }) {\n const sourceType = computed(() => props.sourceType)\n const indicatorToken = computed(() => props.indicatorToken || '')\n const component = computed(() => props.selectedComponent)\n const isShowStyleConfig = computed(() => props.isShowStyleConfig)\n // 图形化配置\n let graphicConfig = unref(component).graphicConfig\n ? cloneDeep(unref(component).graphicConfig)\n : ref({})\n graphicConfig = ref(graphicConfig)\n // 图表样式配置\n let chartsOptions = unref(component).chartsOptions\n ? cloneDeep(unref(component).chartsOptions)\n : ref(cloneDeep(propsMap.line))\n chartsOptions = ref(chartsOptions)\n // 设置数据列表\n const dataList = ref<{ [key: string]: any }[]>([])\n const setDataList = (list: { [key: string]: any }[]) => {\n dataList.value = list\n }\n const updateGraphicConfig = (config: { [key: string]: any }) => {\n graphicConfig.value = {\n ...unref(graphicConfig),\n ...unref(config)\n }\n }\n const updateChartsOptions = (\n options: { [key: string]: any },\n isMerge: Boolean = true\n ) => {\n if (isMerge) {\n chartsOptions.value = {\n ...unref(chartsOptions),\n ...unref(options)\n }\n } else {\n chartsOptions.value = {\n ...unref(options)\n }\n }\n }\n const getDataList = () => dataList\n provide(DATA_LIST, {\n setDataList,\n getDataList\n })\n provide(SELECTED_COMPONENT, component)\n provide(GRAPHIC_CONFIG, graphicConfig)\n provide(CHARTS_OPTIONS, chartsOptions)\n provide(SOURCE_TYPE, sourceType)\n provide(SHOW_STYLE_CONFIG, isShowStyleConfig)\n provide(INDICATOR_TOKEN, indicatorToken)\n provide(UPDATE_GRAPHIC_CONFIG, updateGraphicConfig)\n provide(UPDATE_CHARTS_OPTIONS, updateChartsOptions)\n expose({\n graphicConfig,\n chartsOptions\n })\n }\n})\n</script>\n\n<style scoped lang=\"less\">\n.config-modal {\n width: 100%;\n height: 100%;\n display: flex;\n padding: 10px;\n}\n\n.config-modal-left {\n width: 300px;\n height: 100%;\n margin-right: 10px;\n padding: 10px;\n}\n\n.config-modal-right {\n flex: 1;\n}\n</style>\n","import { withInstall } from '@/utils/withInstall'\r\nimport IndicatorLibrary from './IndicatorLibrary.vue'\r\nexport const EcanIndicatorLibrary = withInstall(IndicatorLibrary)\r\nexport default EcanIndicatorLibrary\r\n","import { withInstall } from '@/utils/withInstall'\r\nimport ChartGraph from './ChartGraph.vue'\r\nexport const EcanChartGraph = withInstall(ChartGraph)\r\nexport default EcanChartGraph\r\n","import { App } from 'vue'\nimport * as components from './components'\nconst install = (app: App, options: any) => {\n const { request } = options\n app.provide('$request', request)\n Object.keys(components).forEach((key) => {\n const component = components[key]\n if (component.install) {\n app.use(component)\n }\n })\n}\n\n// 部分导出\nexport * from './components'\n// 全局安装\nexport default {\n install\n}\n"],"names":["withInstall","main","extra","app","comp","key","REQUEST","INDICATOR_URL","_a","INDICATOR_TOKEN","DATA_LIST","SELECTED_COMPONENT","GRAPHIC_CONFIG","UPDATE_GRAPHIC_CONFIG","SHOW_STYLE_CONFIG","REFRESH_DATA","CHARTS_OPTIONS","ZOOM_FONT_SIZE","UPDATE_CHARTS_OPTIONS","SOURCE_TYPE","CHANGE_CONDITION","propsMap","_sfc_main$q","defineComponent","ASpin","ATreeSelect","request","inject","indicatorToken","unref","graphicConfig","updateGraphicConfig","dataViewId","computed","treeSelectLoading","ref","treeSelectData","PAGE_ID","selectedItem","reactive","echoSelectedNode","id","data","_b","transTreeData","pId","list","item","handleLoadData","treeNode","isFirst","value","onDataViewIdChange","handleDataViewColumns","setDataList","dataViewLoading","dataViewList","res","success","rows","row","columns","column","mapGenericType","genericType","onDragstart","event","dataView","onMounted","_component_a_spin","_resolveComponent","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_ctx","_withCtx","_component_a_tree_select","_createElementVNode","_hoisted_2","_Fragment","_renderList","$event","_createTextVNode","_toDisplayString","bound01","n","max","isOnePointZero","isPercent","isPercentage","boundAlpha","a","convertToPercentage","pad2","c","rgbToRgb","r","g","b","hue2rgb","p","q","t","hslToRgb","h","s","l","rgbToHsv","min","v","hsvToRgb","i","f","mod","rgbToHex","allow3Char","hex","convertHexToDecimal","parseIntFromHex","val","names","inputToRGB","color","rgb","ok","format","stringInputToObject","isValidCSSUnit","CSS_INTEGER","CSS_NUMBER","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","matchers","named","match","hueStep","saturationStep","saturationStep2","brightnessStep1","brightnessStep2","lightColorCount","darkColorCount","darkColorMap","toHsv","_ref","hsv","toHex","_ref2","mix","rgb1","rgb2","amount","getHue","light","hue","getSaturation","saturation","getValue","generate","opts","patterns","pColor","colorString","_i","_hsv","_colorString","_ref3","index","opacity","darkColorString","presetPrimaryColors","presetPalettes","presetDarkPalettes","containers","styleElements","usage","createStyleElement","styleElement","insertCss","css","options","position","container","containerId","_objectSpread","target","source","ownKeys","sym","_defineProperty","obj","warn","valid","message","warning","isIconDefinition","node","rootProps","child","getSecondaryColor","primaryColor","generateColor","normalizeTwoToneColors","twoToneColor","iconStyles","cssInjectedFlag","useInsertStyles","styleStr","nextTick","_excluded","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","sourceKeys","twoToneColorPalette","setTwoToneColors","secondaryColor","getTwoToneColors","IconBase","props","context","_props$context$attrs","icon","restProps","colors","VueIcon","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","o","minLen","_arrayLikeToArray","len","arr2","_arr","_n","_d","_s","_e","err","setTwoToneColor","_normalizeTwoToneColo","_normalizeTwoToneColo2","getTwoToneColor","Icon","_classObj","cls","spin","rotate","tabindex","onClick","classObj","svgClassString","iconTabIndex","svgStyle","AntdIcon","AppstoreAddOutlined","AppstoreAddOutlinedSvg","AppstoreAddOutlined$1","CaretDownOutlined","CaretDownOutlinedSvg","CaretDownOutlined$1","CaretRightOutlined","CaretRightOutlinedSvg","CaretRightOutlined$1","CloseOutlined","CloseOutlinedSvg","CloseOutlined$1","DeleteOutlined","DeleteOutlinedSvg","DeleteOutlined$1","DownOutlined","DownOutlinedSvg","DownOutlined$1","MinusCircleOutlined","MinusCircleOutlinedSvg","MinusCircleOutlined$1","PlusCircleOutlined","PlusCircleOutlinedSvg","PlusCircleOutlined$1","PlusOutlined","PlusOutlinedSvg","PlusOutlined$1","SettingOutlined","SettingOutlinedSvg","SettingOutlined$1","_sfc_main$p","AInputSearch","APagination","selectedComponent","selectedConfig","dataSourceId","dataSourceList","dataSourceLoading","pagination","searchText","handleDataSourceList","params","total","mapScope","scope","onToggleGroup","onSearch","onChange","debounce","onPaginationChange","page","pageSize","_hoisted_5","_component_a_input_search","_cache","dataSource","_hoisted_3","_createBlock","_component_caret_down_outlined","_component_caret_right_outlined","_hoisted_4","dataViewColumn","_component_a_pagination","_sfc_main$o","DataSourceList","DataViewList","_component_data_source_list","_createCommentVNode","focus$1","el","_sfc_main$n","Draggable","AModal","AButton","expose","customSortList","handleCustomSortList","e","updateCustomSortList","label","name","isDataChange","visible","showModal","hideModal","onCancel","watch","customOrderColumns","_component_a_modal","_component_a_button","_sfc_main$m","focus","ASelect","ASelectOption","AInput","ACheckbox","ACollapse","ACollapsePanel","ATag","ACheckableTag","title","createGroupTitle","activeKey","customGroupList","customGroupTitleSet","customGroupTitleList","customGroupEditTitleList","length","selectCount","count","customGroup","onAddGroup","onDeleteGroup","selectGroupIndex","onMoveInGroup","selectList","onEditTitle","onFinishEditTitle","onTitleChange","useOtherGroup","updateCustomGroup","customGroups","otherGroupName","groupInfoMap","onUseOtherGroup","allLabelSet","handleInitData","handleCustomGroupList","_hoisted_6","_hoisted_7","_resolveDirective","_component_a_select_option","_component_a_input","_component_a_checkbox","_component_a_collapse","_component_a_collapse_panel","_withDirectives","_hoisted_8","_component_a_tag","_hoisted_9","_component_a_checkable_tag","module","this","u","dayjs","quarterOfYear","_sfc_main$l","ADatePicker","ADropdown","AMenu","AMenuItem","ASubMenu","APopover","ATabs","ATabPane","ARadioGroup","ARadio","AInputNumber","controlList","showTime","dateRadioStyle","formatList","tabDateList","compareList","menuRule","getDataList","condition","_c","_f","_g","_h","_j","_k","popoverVisible","isDateType","fieldOptions","type","updateCondition","deleteCondition","_condition","_level","_index","onDelete","result","cloneDeep","onFieldChange","_value","option","typeGuid","ruleOptions","dateBtnLabel","downIconStyle","style","valueOptions","handleValueOptions","onRuleChange","fieldValues","onFieldValueSelectChange","values","handleMenuClick","keyPath","tabItem","setTabItemData","fieldType","fieldName","rule","changeTabInitDate","changeRadioValue","beforeNum","afterNum","getDateValue","getFieldValue","tabIndex","blurCompare","flag","okDatePickConfig","radioValue","calcWays","_component_a_select","_component_a_dropdown","_component_a_menu","_normalizeStyle","mr","_component_a_sub_menu","fl","_component_DownOutlined","_component_a_date_picker","_component_a_popover","_component_a_tabs","_component_a_tab_pane","_component_a_radio_group","_component_a_radio","_component_a_input_number","_hoisted_10","_component_close_outlined","_sfc_main$k","Condition","_component_condition_list","_component_condition","_sfc_main$j","ConditionList","handleTitle","conditionList","addCondition","join","provide","level","conditions","wrapperConditions","wrapperLevel","updateFilter","onOk","getHrpIndexWithComplex","hrpIndexGuid","nanoid","size","bytes","byte","_sfc_main$i","ARow","ACol","ATextarea","emit","leftAxisList","rightAxisList","indicators","queryColumnList","fieldList","field","myValue","text","_component_a_row","_component_a_col","_component_a_textarea","_sfc_main$h","FormulaCalculation","AForm","AFormItem","builtInValueSourceList","labelCol","wrapperCol","formDefaultValue","formState","calcType","formula","builtInValueSource","builtInFormula","builtInCalcWay","saveIndicator","formRules","validate","validateInfos","clearValidate","onOK","_component_a_form","_component_a_form_item","_component_formula_calculation","_sfc_main$g","CalculationModal","FilterModal","CustomGroupModal","CustomSortModal","ACard","AMenuDivider","handleListItemData","listData","reNameSame","handleCardItemData","cardData","cardItem","currentList","originalList","addItem","sameNums","checkItem","onCheckboxChange","onDropStart","onDropEnd","onDrop","listItemData","cardItemData","onDragover","cardItemList","editLabelList","isLabelChange","onEdit","onLabelChange","onCommitLabelChange","DEFAULT","sortList","onSort","order","handleSortTitle","sort","currentItem","currentIndex","customSortModalRef","customGroupModalRef","showCustomSortModal","handleCustomSortTitle","showCustomGroupModal","handleCustomGroupTitle","aggregateList","onAggregateChange","handleAggregateTitle","handleFilterTitle","filterModalRef","showFilterModal","calculationModalRef","calculationModalMode","mode","_withScopeId","_pushScopeId","_popScopeId","_component_a_card","_withModifiers","_component_plus_outlined","sortItem","_component_a_menu_item","_component_a_menu_divider","aggregate","_component_delete_outlined","_component_custom_sort_modal","_component_custom_group_modal","_component_filter_modal","_component_calculation_modal","cardTypeMap","_sfc_main$f","DataConfigCard","selectedComponentType","isGroupTable","cardsMap","cards","hasOwn","k","allMap","graphicConfigMap","startStr","startIndex","componentMapKeys","map","componentMapKey","card","_component_data_config_card","_mergeProps","propsGroups","mapAttributeProps","component","width","suffix","height","centerLeft","centerTop","innerRadius","outerRadius","tooltipTrigger","tooltipTextStyleColor","tooltipFormatter","legendTextStyleColor","legendTop","legendLeft","legendOrient","labelFormatter","labelColor","isUseLabelColors","labelFontSize","labelPosition","onlyType","labelLineLength","labelLineLength2","symbolSize","smooth","lineStyleWidth","xAxisSplitLineShow","xAxisSplitLineStyleColor","xAxisLabelColor","xAxisLineStyleColor","xAxisTickShow","xAxisLabelFormatter","yAxisSplitLineShow","yAxisLineAlwaysDisplay","yAxisSplitLineStyleColor","yAxisLabelColor","yAxisLineStyleColor","yAxisLabelFormatter","roseType","yAxis","layout","seriesTypes","useLabelIndex","barWidth","gridTop","gridBottom","gridLeft","gridRight","gridContainLabel","toolboxOrient","toolboxItemSize","toolboxItemGap","toolboxLeft","toolboxTop","toolboxDownloadUrl","toolboxInfoText","isUseHorizontalAxis","axisInverse","xAxisInverse","yAxisInverse","areaStyleOpacity","step","xAxisLabelWidth","xAxisLabelOverflow","optionType","xAxisLabelRotate","yAxisLabelWidth","yAxisLabelOverflow","yAxisLabelRotate","isStack","labelShow","xAxisMinInterval","yAxisMinInterval","minAngle","xAxisLabelInterval","toolboxLocation","toolboxDownloadShow","toolboxDataZoomShow","toolboxInfoShow","lowerCaseIncludes","v1","v2","handleFormatter","formatter","_sfc_main$e","_directive_focus","_sfc_main$d","inputValue","getPrefixOrSuffixValue","prefixValue","suffixValue","_createSlots","_sfc_main","ARadioButton","_component_a_radio_button","_sfc_main$b","ASwitch","_component_a_switch","top","bottom","right","left","auto","basePlacements","start","end","clippingParents","viewport","popper","reference","variationPlacements","acc","placement","placements","beforeRead","read","afterRead","beforeMain","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","element","getWindow","ownerDocument","isElement","OwnElement","isHTMLElement","isShadowRoot","applyStyles","state","attributes","effect","initialStyles","styleProperties","property","attribute","applyStyles$1","getBasePlacement","round","getUAString","uaData","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","x","y","getLayoutRect","contains","parent","rootNode","next","getComputedStyle","isTableElement","getDocumentElement","getParentNode","getTrueOffsetParent","getContainingBlock","isFirefox","isIE","elementCss","currentNode","getOffsetParent","window","offsetParent","getMainAxisFromPlacement","within","mathMax","mathMin","withinMaxClamp","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","keys","hashMap","toPaddingObject","padding","arrow","_state$modifiersData$","arrowElement","popperOffsets","basePlacement","axis","isVertical","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","offset","axisProp","_options$element","arrow$1","getVariation","unsetSides","roundOffsetsByDPR","win","dpr","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","offsetY","offsetX","commonStyles","_ref4","_Object$assign","computeStyles","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","computeStyles$1","passive","instance","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","eventListeners","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","scrollTop","getWindowScrollBarX","getViewportRect","strategy","html","layoutViewport","getDocumentRect","_element$ownerDocumen","winScroll","body","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","listScrollParents","isBody","updatedList","rectToClientRect","rect","getInnerBoundingClientRect","getClientRectFromMixedType","clippingParent","getClippingParents","canEscapeClipping","clipperElement","getClippingRect","boundary","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","getExpandedFallbackPlacements","oppositePlacement","flip","_options$mainAxis","checkMainAxis","_options$altAxis","checkAltAxis","specifiedFallbackPlacements","_options$flipVariatio","preferredPlacement","isBasePlacement","fallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","check","numberOfChecks","_loop","fittingPlacement","_ret","flip$1","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","hide","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","hide$1","distanceAndSkiddingToXY","rects","invertDistance","skidding","distance","_options$offset","_data$state$placement","offset$1","popperOffsets$1","getAltAxis","preventOverflow","_options$tether","tether","_options$tetherOffset","tetherOffset","altAxis","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","preventOverflow$1","getHTMLElementScroll","getNodeScroll","isElementScaled","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","documentElement","modifiers","visited","modifier","requires","dep","depModifier","orderModifiers","orderedModifiers","phase","fn","pending","resolve","mergeByName","merged","current","existing","DEFAULT_OPTIONS","areValidElements","args","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","m","runModifierEffects","_state$elements","_state$orderedModifie","_state$orderedModifie2","_ref$options","cleanupFn","noopFn","createPopper","N","E","F","L","z","M","R","B","d","w","j","S","C","O","A","P","_","D","T","H","G","$","V","Y","J","W","X","U","K","Q","Z","ee","te","re","ne","oe","ae","ie","le","ce","ue","se","fe","de","pe","he","ve","be","we","xe","me","ge","ye","Se","ke","Ce","Oe","Ie","Ae","Pe","je","Ne","Ee","Fe","Le","ze","Me","I","_sfc_main$9","PickColors","colorValue","_component_pick_colors","_sfc_main$8","onColorsChange","_sfc_main$7","InputNumber","temp","firstItem","_component_appstore_add_outlined","_component_draggable","_resolveDynamicComponent","_component_minus_circle_outlined","_sfc_main$6","_sfc_main$5","Input","RadioGroup","Select","Switch","ColorPick","ColorGroupPick","FormGroup","Textarea","chartsOptions","updateChartsOptions","setFormProps","setOptions","mapAttributeProp","valueProp","changeValueEventName","events","updateValue","attrs","reduce","excludeType","$props","$setup","$data","$options","formProp","_sfc_main$4","workerId","JsonWorker","TsWorker","EditorWorker","dom","editor","themeMap","monacoEditor","code","onUnmounted","_sfc_main$3","PropsToForm","Editor","activePanel","refreshData","handleChangeType","detailPropsGroups","propsGroup","enableProps","pickProps","prop","pick","isRenderForm","detailPropsGroup","componentType","onSwitchClick","checked","onSwitchChange","ComponentString","updateComponentOptions","optionCode","onEditorChange","isShowOptionEditor","_component_props_to_form","_component_editor","useIndicatorData","handleQueryColumn","queryColumn","location","show","indexCode","handleIndicator","indicator","plugin","layer","chartType","classificationList","seriesList","idxLibMode","preview","classification","series","queryColumns","indicatorList","leftAxis","rightAxis","runCode","useFn","paramsStr","runFn","useVariablesInText","textData","codeData","useNewline","useSpace","variables","variable","statement","reg","textVariables","textVariable","usedVariable","useValueFormatter","getTransformProps","chartData","fontSize","getBarTransfromProps","getLineTransfromProps","getPieTransfromProps","getComboGraphTransfromProps","dimensions","dataset","ds","xAxisData","marker","seriesName","percent","seriesType","_tooltipFormatter","useTransformChartDataByAttrKey","dataFieldNames","types","set","dataLen","typesLen","vs","useTransformChartDataByAttrValue","_sfc_main$2","observer","echartRef","myChart","loading","myOption","chartOption","chartsOptionsValue","handleIndicatorDataset","keyTypeDataFieldNames","useDataFieldNames","handleIndicatorPieDataset","handleIndicatorData","indicatorData","fieldNames","emptyOption","setChartOption","handleResize","evalCopy","chartWrap","echarts","onBeforeUnmount","_sfc_main$1","DataGroup","StyleGroup","ChartGraph","componentRef","isShowStyleConfig","notGraphicList","cloneComponent","pickComponent","without","config","fullWidth","_component_chart_graph","_normalizeClass","DataList","DataConfig","sourceType","dataList","isMerge","_component_data_list","EcanIndicatorLibrary","EcanChartGraph","components"],"mappings":"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kBACA,qBACA,mBACA,gBACA,qBACA,2BACA,sBACA,eACA,mBACA,oBACF,CACF,EACA,CACE,MAAO,KACP,MAAO,CACL,kBACA,sBACA,yBACA,kBACA,qBACA,mBACA,qBACA,2BACA,sBACA,eACA,mBACA,OACF,CACF,EACA,CACE,MAAO,KACP,YAAa,YACb,MAAO,CACL,iBACA,aACA,mBACA,gBACA,eACF,CACF,EACA,CACE,MAAO,QACP,YAAa,gBACb,MAAO,CACL,kBACA,kBACF,CACF,EACA,CACE,MAAO,KACP,YAAa,aACb,MAAO,CACL,uBACA,YACA,aACA,cACF,CACF,EACA,CACE,MAAO,MACP,YAAa,cACb,MAAO,CACL,iBACA,mBACA,uBACF,CACF,EACA,CACE,MAAO,MACP,YAAa,cACb,MAAO,CACL,gBACA,kBACA,iBACA,cACA,aACA,kBACA,sBACA,sBACA,kBACA,qBACA,iBACF,CACF,CACF,ECvJaC,GAA4C,CACvDlT,KAAM,CACJD,MAAO,OACPoT,UAAW,OACZ,EACD/R,MAAO,CACLrB,MAAO,KACPoT,UAAW,OACZ,EACDC,MAAO,CACLrT,MAAO,KACPoT,UAAW,eACX3a,MAAO,CACL6a,OAAQ,KACR9hB,IAAK,CACP,CACD,EACD+hB,OAAQ,CACNvT,MAAO,KACPoT,UAAW,eACX3a,MAAO,CACL6a,OAAQ,KACR9hB,IAAK,EACP,CACD,EACDsH,OAAQ,CACNkH,MAAO,KACPoT,UAAW,kBACZ,EACDI,WAAY,CACVxT,MAAO,OACPoT,UAAW,eACX3a,MAAO,CACL6a,OAAQ,IACR9hB,IAAK,EACLtB,IAAK,GACP,CACD,EACDujB,UAAW,CACTzT,MAAO,OACPoT,UAAW,eACX3a,MAAO,CACL6a,OAAQ,IACR9hB,IAAK,EACLtB,IAAK,GACP,CACD,EACDwjB,YAAa,CACX1T,MAAO,MACPoT,UAAW,eACX3a,MAAO,CACL6a,OAAQ,IACR9hB,IAAK,EACLtB,IAAK,GACP,CACD,EACDyjB,YAAa,CACX3T,MAAO,MACPoT,UAAW,eACX3a,MAAO,CACL6a,OAAQ,IACR9hB,IAAK,EACLtB,IAAK,GACP,CACD,EACD0jB,eAAgB,CACd5T,MAAO,OACPoT,UAAW,cACX3a,MAAO,CACLxC,QAAS,CACP,CACE+J,MAAO,KACPlS,MAAO,MACT,EACA,CACEkS,MAAO,MACPlS,MAAO,MACT,EACA,CACEkS,MAAO,IACPlS,MAAO,OACR,CAEL,CACD,EACD+lB,sBAAuB,CACrB7T,MAAO,KACPoT,UAAW,YACZ,EACDU,iBAAkB,CAChB9T,MAAO,MACPoT,UAAW,UACZ,EACDW,qBAAsB,CACpB/T,MAAO,KACPoT,UAAW,YACZ,EACDY,UAAW,CACThU,MAAO,OACPoT,UAAW,cACX3a,MAAO,CACLxC,QAAS,CACP,CACE+J,MAAO,IACPlS,MAAO,KACT,EACA,CACEkS,MAAO,IACPlS,MAAO,QACT,EACA,CACEkS,MAAO,IACPlS,MAAO,SACR,CAEL,CACD,EACDmmB,WAAY,CACVjU,MAAO,OACPoT,UAAW,cACX3a,MAAO,CACLxC,QAAS,CACP,CACE+J,MAAO,IACPlS,MAAO,MACT,EACA,CACEkS,MAAO,IACPlS,MAAO,QACT,EACA,CACEkS,MAAO,IACPlS,MAAO,QACR,CAEL,CACD,EACDomB,aAAc,CACZlU,MAAO,KACPoT,UAAW,cACX3a,MAAO,CACLxC,QAAS,CACP,CACE+J,MAAO,KACPlS,MAAO,UACT,EACA,CACEkS,MAAO,KACPlS,MAAO,aACR,CAEL,CACD,EACDqmB,eAAgB,CACdnU,MAAO,MACPoT,UAAW,OACZ,EACDgB,WAAY,CACVpU,MAAO,OACPoT,UAAW,YACZ,EACDiB,iBAAkB,CAChBrU,MAAO,MACPoT,UAAW,QACZ,EACDkB,cAAe,CACbtU,MAAO,OACPoT,UAAW,eACX3a,MAAO,CACLjH,IAAK,GACL8hB,OAAQ,IACV,CACD,EACDiB,cAAe,CACb,CACEvU,MAAO,KACPoT,UAAW,cACXoB,SAAU,MACV/b,MAAO,CACLxC,QAAS,CACP,CACE+J,MAAO,KACPlS,MAAO,SACT,EACA,CACEkS,MAAO,KACPlS,MAAO,QACT,EACA,CACEkS,MAAO,KACPlS,MAAO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","x_google_ignoreList":[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,49,56,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131]}