tenghui-ui 2.0.21 → 2.0.22

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":"tenghui-ui.umd.js","sources":["../packages/template/src/index.vue?vue&type=template&lang.js","../packages/template/src/index.vue","../packages/template/index.ts","../packages/menu/src/index.vue?vue&type=template&lang.js","../packages/menu/src/index.vue","../packages/menu/index.ts","../packages/tabs/src/index.vue?vue&type=template&lang.js","../packages/tabs/src/index.vue","../packages/tabs/index.ts","../packages/tool/src/index.vue?vue&type=template&lang.js","../packages/tool/src/index.vue","../packages/tool/index.ts","../packages/dialog/src/index.vue?vue&type=template&lang.js","../packages/dialog/src/index.vue","../packages/dialog/index.ts","../packages/form-item/src/defaultAttrsConfig.js","../packages/form-item/src/index.vue?vue&type=template&lang.js","../packages/form-item/src/index.vue","../packages/form-item/index.ts","../packages/operation/src/Items.vue?vue&type=template&lang.js","../packages/operation/src/Items.vue","../packages/operation/src/index.vue?vue&type=template&lang.js","../packages/operation/src/index.vue","../packages/operation/index.ts","../node_modules/sortablejs/modular/sortable.esm.js","../node_modules/vuedraggable/dist/vuedraggable.umd.js","../packages/search/src/Record.vue?vue&type=template&lang.js","../packages/search/src/Record.vue","../node_modules/throttle-debounce/esm/index.js","../packages/search/src/index.vue?vue&type=template&lang.js","../packages/search/src/index.vue","../packages/search/index.ts","../utils/index.ts","../node_modules/has-symbols/shams.js","../node_modules/has-symbols/index.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/has/src/index.js","../node_modules/get-intrinsic/index.js","../node_modules/call-bind/index.js","../node_modules/call-bind/callBound.js","../__vite-browser-external","../node_modules/object-inspect/index.js","../node_modules/side-channel/index.js","../node_modules/qs/lib/formats.js","../node_modules/qs/lib/utils.js","../node_modules/qs/lib/stringify.js","../node_modules/qs/lib/parse.js","../node_modules/qs/lib/index.js","../packages/table/src/preset/presetConfig.js","../packages/table/src/preset/functionalComponent.js","../packages/table/src/ColumnConfig.vue?vue&type=template&lang.js","../packages/table/src/ColumnConfig.vue","../packages/table/src/index.vue?vue&type=template&lang.js","../packages/table/src/index.vue","../packages/table/index.ts","../packages/image/src/index.vue?vue&type=template&lang.js","../packages/image/src/index.vue","../packages/image/index.ts","../packages/container/src/index.vue?vue&type=template&lang.js","../packages/container/src/index.vue","../packages/container/index.ts","../node_modules/element-ui/packages/loading/src/loading.vue?vue&type=template&lang.js","../node_modules/element-ui/packages/loading/src/loading.vue","../src/directive/index.ts","../packages/form-dialog/src/main.vue?vue&type=template&lang.js","../packages/form-dialog/src/main.vue","../packages/form-dialog/src/main.ts","../src/main.ts"],"sourcesContent":["\n<div class=\"ui-template\">\n <h1>{{ msg }}</h1>\n <el-table :data=\"tableData\" style=\"width: 100%\">\n <el-table-column prop=\"date\" label=\"日期\" width=\"180\">\n </el-table-column>\n <el-table-column prop=\"name\" label=\"姓名\" width=\"180\">\n </el-table-column>\n <el-table-column prop=\"address\" label=\"地址\">\n </el-table-column>\n </el-table>\n</div>\n","<template>\r\n <div class=\"ui-template\">\r\n <h1>{{ msg }}</h1>\r\n <el-table :data=\"tableData\" style=\"width: 100%\">\r\n <el-table-column prop=\"date\" label=\"日期\" width=\"180\">\r\n </el-table-column>\r\n <el-table-column prop=\"name\" label=\"姓名\" width=\"180\">\r\n </el-table-column>\r\n <el-table-column prop=\"address\" label=\"地址\">\r\n </el-table-column>\r\n </el-table>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"ComTemplate\",\r\n data() {\r\n return {\r\n msg: '测试组件11111',\r\n tableData: [{\r\n date: '2016-05-02',\r\n name: '王小虎',\r\n address: '上海市普陀区金沙江路 1518 弄'\r\n }, {\r\n date: '2016-05-04',\r\n name: '王小虎',\r\n address: '上海市普陀区金沙江路 1517 弄'\r\n }, {\r\n date: '2016-05-01',\r\n name: '王小虎',\r\n address: '上海市普陀区金沙江路 1519 弄'\r\n }, {\r\n date: '2016-05-03',\r\n name: '王小虎',\r\n address: '上海市普陀区金沙江路 1516 弄'\r\n }]\r\n }\r\n },\r\n methods: {\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>","import Vue from 'vue';\r\nimport ComTemplate from './src/index.vue';\r\n\r\ntype SFCWithInstall<T> = T & { install(app: typeof Vue): void }; // vue 安装\r\n\r\n// 安装\r\nComTemplate.install = (app: typeof Vue) => {\r\n app.component(ComTemplate.name, ComTemplate);\r\n};\r\nconst InComTemplate: SFCWithInstall<typeof ComTemplate> = ComTemplate; // 增加类型\r\nexport default InComTemplate;","\n<div class=\"ui-menu\" :style=\"{ width: isCollapse ? '64px' : '200px' }\" :class=\"{ 'flex-direction-column ui-hasbg': mode == 'vertical' }\">\n <div class=\"ui-menu__header\" v-if=\"mode == 'vertical'\">\n <!-- <slot>\n <el-image class=\"ui-logo\" src=\"/logo.png\" fit=\"cover\"></el-image>\n </slot> -->\n <div class=\"ui-collapse\">\n <span @click=\"isCollapse = !isCollapse\" :class=\"isCollapse ? 'icon-qiehuan1 mr-24' : 'icon-qiehuan'\"></span>\n </div>\n <div class=\"ui-user\">\n <slot name=\"avatar\" :size=\"isCollapse ? 30 : 64\">\n <div class=\"ui-user__img\"></div>\n </slot>\n <div class=\"ui-user--name\">\n {{ userData.userName }}\n </div>\n <!-- <img src=\"../assets/image/touxiang.png\" alt=\"\"> -->\n </div>\n </div>\n <div class=\"ui-fast__search\" :class=\"{ 'ui-collapse--form': isCollapse }\">\n <com-form-item type=\"cascader\" \n popper-class=\"fast_search__cascader\" \n v-model=\"activePath\" \n :options=\"data\" \n :props=\"searchProps\" \n placeholder=\"搜索菜单\"\n @change=\"handleSearch\"></com-form-item>\n </div>\n <com-container :static-class=\"['.ui-fast__search', '.ui-user', '.el-header']\" :static-num=\"50\">\n <el-menu \n background-color=\"#545c64\" \n text-color=\"#FFF\" \n active-text-color=\"#FFF\" \n menu-trigger=\"hover\" \n :class=\"`ui-menu--${mode}`\" \n :mode=\"mode\" \n :default-active=\"$route.path\" \n :collapse=\"isCollapse\"\n @select=\"handleJump\">\n <template v-for=\"(item, index) in data\">\n <el-submenu v-if=\"item.children\" :index=\"item.path || item.name\">\n <template slot=\"title\">\n <i :class=\"item.icon || 'icon-chanpinguanli-chanpinliebiao'\"></i>\n <span>{{ item.name }}</span>\n </template>\n <template v-for=\"(_item, _index) in item.children\">\n <el-submenu v-if=\"_item.children\" :index=\"_item.path || _item.name\">\n <template slot=\"title\">{{ _item.name }}</template>\n <el-menu-item v-for=\"(__item, __index) in _item.children\" :key=\"__item.name\" :index=\"__item.path || __item.name\">{{ __item.name }}</el-menu-item>\n </el-submenu>\n <el-menu-item v-else :index=\"_item.path || _item.name\">{{ _item.name }}</el-menu-item>\n </template>\n </el-submenu>\n <el-menu-item v-else :index=\"item.path || item.name\">\n <i :class=\"item.icon || 'icon-chanpinguanli-chanpinliebiao'\"></i>\n <span slot=\"title\">{{ item.name }}</span>\n </el-menu-item>\n </template>\n </el-menu>\n </com-container>\n <!-- <com-form-item type=\"cascader\" v-model=\"activePath\" :options=\"data\" :props=\"searchProps\" placeholder=\"搜索菜单\" @change=\"handleSearch\"></com-form-item> -->\n</div>\n","<template>\r\n <div class=\"ui-menu\" :style=\"{ width: isCollapse ? '64px' : '200px' }\" :class=\"{ 'flex-direction-column ui-hasbg': mode == 'vertical' }\">\r\n <div class=\"ui-menu__header\" v-if=\"mode == 'vertical'\">\r\n <!-- <slot>\r\n <el-image class=\"ui-logo\" src=\"/logo.png\" fit=\"cover\"></el-image>\r\n </slot> -->\r\n <div class=\"ui-collapse\">\r\n <span @click=\"isCollapse = !isCollapse\" :class=\"isCollapse ? 'icon-qiehuan1 mr-24' : 'icon-qiehuan'\"></span>\r\n </div>\r\n <div class=\"ui-user\">\r\n <slot name=\"avatar\" :size=\"isCollapse ? 30 : 64\">\r\n <div class=\"ui-user__img\"></div>\r\n </slot>\r\n <div class=\"ui-user--name\">\r\n {{ userData.userName }}\r\n </div>\r\n <!-- <img src=\"../assets/image/touxiang.png\" alt=\"\"> -->\r\n </div>\r\n </div>\r\n <div class=\"ui-fast__search\" :class=\"{ 'ui-collapse--form': isCollapse }\">\r\n <com-form-item type=\"cascader\" \r\n popper-class=\"fast_search__cascader\" \r\n v-model=\"activePath\" \r\n :options=\"data\" \r\n :props=\"searchProps\" \r\n placeholder=\"搜索菜单\"\r\n @change=\"handleSearch\"></com-form-item>\r\n </div>\r\n <com-container :static-class=\"['.ui-fast__search', '.ui-user', '.el-header']\" :static-num=\"50\">\r\n <el-menu \r\n background-color=\"#545c64\" \r\n text-color=\"#FFF\" \r\n active-text-color=\"#FFF\" \r\n menu-trigger=\"hover\" \r\n :class=\"`ui-menu--${mode}`\" \r\n :mode=\"mode\" \r\n :default-active=\"$route.path\" \r\n :collapse=\"isCollapse\"\r\n @select=\"handleJump\">\r\n <template v-for=\"(item, index) in data\">\r\n <el-submenu v-if=\"item.children\" :index=\"item.path || item.name\">\r\n <template slot=\"title\">\r\n <i :class=\"item.icon || 'icon-chanpinguanli-chanpinliebiao'\"></i>\r\n <span>{{ item.name }}</span>\r\n </template>\r\n <template v-for=\"(_item, _index) in item.children\">\r\n <el-submenu v-if=\"_item.children\" :index=\"_item.path || _item.name\">\r\n <template slot=\"title\">{{ _item.name }}</template>\r\n <el-menu-item v-for=\"(__item, __index) in _item.children\" :key=\"__item.name\" :index=\"__item.path || __item.name\">{{ __item.name }}</el-menu-item>\r\n </el-submenu>\r\n <el-menu-item v-else :index=\"_item.path || _item.name\">{{ _item.name }}</el-menu-item>\r\n </template>\r\n </el-submenu>\r\n <el-menu-item v-else :index=\"item.path || item.name\">\r\n <i :class=\"item.icon || 'icon-chanpinguanli-chanpinliebiao'\"></i>\r\n <span slot=\"title\">{{ item.name }}</span>\r\n </el-menu-item>\r\n </template>\r\n </el-menu>\r\n </com-container>\r\n <!-- <com-form-item type=\"cascader\" v-model=\"activePath\" :options=\"data\" :props=\"searchProps\" placeholder=\"搜索菜单\" @change=\"handleSearch\"></com-form-item> -->\r\n </div>\r\n</template>\r\n<script>\r\nexport default {\r\n name: 'ComMenu',\r\n props: {\r\n data: {\r\n type: Array,\r\n default() {\r\n return []\r\n }\r\n },\r\n mode: {\r\n type: String,\r\n default: 'horizontal'\r\n },\r\n userData: {\r\n type: Object,\r\n default() {\r\n return {}\r\n }\r\n }\r\n },\r\n data() {\r\n return {\r\n searchProps: {\r\n label: 'name',\r\n value: 'path',\r\n emitPath: false\r\n },\r\n activePath: '',\r\n isCollapse: localStorage.getItem('SAVE_COLLAPSE_STATE') == 1\r\n }\r\n },\r\n methods: {\r\n handleJump(path) {\r\n this.$emit('jump', path);\r\n },\r\n\r\n handleSearch(val) {\r\n if (!val) return;\r\n this.handleJump(val);\r\n }\r\n },\r\n watch: {\r\n \"$route.path\"(val) {\r\n this.activePath = val;\r\n },\r\n isCollapse(val) {\r\n localStorage.setItem('SAVE_COLLAPSE_STATE', val ? 1 : 0);\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n\r\n@bdr-color: #1f4658;\r\n\r\n.ui-user {\r\n padding-top: 40px;\r\n padding-bottom: 20px;\r\n text-align: center;\r\n\r\n &__img {\r\n width: 64px;\r\n height: 64px;\r\n // background: url(../assets/image/touxiang.png) no-repeat;\r\n background-size: contain;\r\n margin: 0 auto;\r\n }\r\n\r\n &--name {\r\n margin-top: 10px;\r\n color: #FFF;\r\n }\r\n}\r\n\r\n.ui-fast__search {\r\n display: flex;\r\n justify-content: center;\r\n padding: 10px;\r\n\r\n /deep/ .ui-form__item {\r\n margin-right: 0;\r\n }\r\n}\r\n\r\n.ui-menu {\r\n height: 100%;\r\n flex: 1;\r\n display: flex;\r\n position: relative;\r\n\r\n ul {\r\n flex: 1;\r\n }\r\n\r\n /deep/ .el-cascader {\r\n .el-input__inner {\r\n // border-radius: 16px;\r\n background-color: rgba(0, 0, 0, .1);\r\n color: #FFF;\r\n\r\n &:hover {\r\n background-color: rgba(0, 0, 0, .2);\r\n }\r\n }\r\n }\r\n}\r\n\r\n.ui-menu--vertical {\r\n\r\n background-color: transparent !important;\r\n\r\n /deep/ &.el-menu {\r\n border-right: 0 none !important;\r\n background-color: transparent !important;\r\n }\r\n\r\n /deep/ .el-menu-item {\r\n background-color: transparent !important;\r\n\r\n &.is-active {\r\n background-color: rgba(0, 0, 0, .1) !important;\r\n }\r\n }\r\n\r\n /deep/ .el-submenu__title i {\r\n color: #FFF;\r\n }\r\n\r\n /deep/ .el-submenu__title {\r\n background-color: transparent !important;\r\n }\r\n\r\n /deep/ .el-menu-item {\r\n i {\r\n color: #fff;\r\n }\r\n }\r\n}\r\n\r\n.ui-menu--horizontal {\r\n /deep/ .el-menu {\r\n height: 40px;\r\n border-right: 0 none !important;\r\n background-color: transparent !important;\r\n }\r\n\r\n /deep/ .el-menu.el-menu--horizontal {\r\n border-bottom: 0 none !important;\r\n }\r\n\r\n /deep/ .el-menu--inline {\r\n background-color: rgba(0, 0, 0, .1) !important;\r\n }\r\n\r\n /deep/ .el-menu-item {\r\n min-width: unset;\r\n background-color: transparent !important;\r\n\r\n i {\r\n color: #fff;\r\n }\r\n\r\n &.is-active {\r\n background-color: rgba(0, 0, 0, .1) !important;\r\n }\r\n }\r\n\r\n /deep/ .el-submenu__title i {\r\n color: #FFF;\r\n }\r\n\r\n /deep/ .el-submenu__title {\r\n background-color: transparent !important;\r\n height: 40px !important;\r\n line-height: 40px !important;\r\n }\r\n\r\n .ui-menu__header {\r\n\r\n text-align: center;\r\n padding: 40px 0 20px;\r\n\r\n // border-bottom: 1px solid #aac8f2;\r\n &::after {\r\n content: '';\r\n display: block;\r\n height: 1px;\r\n width: 100%;\r\n margin-top: 20px;\r\n background: linear-gradient(to right bottom, #b3cdf2, #fff) no-repeat;\r\n }\r\n\r\n .ui-logo {\r\n width: 150px;\r\n }\r\n }\r\n\r\n\r\n /deep/ .el-menu--horizontal>.el-menu-item {\r\n height: 40px !important;\r\n line-height: 40px !important;\r\n\r\n i {\r\n color: #fff;\r\n }\r\n }\r\n}\r\n\r\n.ui-collapse {\r\n position: absolute;\r\n right: 0;\r\n bottom: 10px;\r\n \r\n span {\r\n font-size: 18px;\r\n cursor: pointer;\r\n color: #d1d1d1;\r\n\r\n &:hover {\r\n color: #FFF;\r\n }\r\n }\r\n\r\n &--form {\r\n /deep/ .el-input__suffix {\r\n display: none;\r\n }\r\n\r\n /deep/ .el-input__inner {\r\n padding: 0 2px !important;\r\n }\r\n }\r\n}\r\n</style>","import Vue from 'vue';\r\nimport ComComponent from './src/index.vue';\r\n\r\ntype SFCWithInstall<T> = T & { install(app: typeof Vue): void }; // vue 安装\r\n\r\n// 安装\r\nComComponent.install = (app: typeof Vue) => {\r\n app.component(ComComponent.name, ComComponent);\r\n};\r\nconst InComComponent: SFCWithInstall<typeof ComComponent> = ComComponent; // 增加类型\r\nexport default InComComponent;","\n<div class=\"ui-tabs\">\n <div class=\"inline-block h-full\">\n <div class=\"h-full flex items-end\">\n <div class=\"admin-tab__chrome-tab\" \n v-for=\"(item, index) in data\"\n :key=\"item.path\" \n :class=\"{ \n 'admin-tab__chrome-tab--active': currentTab.path === item.path,\n 'admin-tab__chrome-tab--hover': hoverItem == item.path\n }\" \n @click=\"handleToggle(item.path)\"\n @mouseenter=\"itemEnter(item.path)\"\n @mouseleave=\"itemLeave(item.path)\">\n <div class=\"admin-tab__chrome-tab__bg\">\n <svg style=\"width: 100%; height: 100%;\">\n <defs>\n <symbol id=\"geometry-left\" viewBox=\"0 0 214 36\">\n <path d=\"M17 0h197v36H0v-2c4.5 0 9-3.5 9-8V8c0-4.5 3.5-8 8-8z\"></path>\n </symbol>\n <symbol id=\"geometry-right\" viewBox=\"0 0 214 36\">\n <use xlink:href=\"#geometry-left\"></use>\n </symbol>\n <clipPath>\n <rect width=\"100%\" height=\"100%\" x=\"0\"></rect>\n </clipPath>\n </defs>\n <svg width=\"52%\" height=\"100%\">\n <use xlink:href=\"#geometry-left\" width=\"214\" height=\"36\" \n :fill=\"stateColor(item.path)\"></use>\n </svg>\n <g transform=\"scale(-1, 1)\">\n <svg width=\"52%\" height=\"100%\" x=\"-100%\" y=\"0\">\n <use xlink:href=\"#geometry-right\" width=\"214\" height=\"36\" :fill=\"stateColor(item.path)\"></use>\n </svg>\n </g>\n </svg>\n </div>\n <span class=\"admin-tab__chrome-tab__slot\">\n <i style=\"margin-right: 5px;\" :class=\"item.icon || ''\"></i>\n {{ item.name }} \n </span>\n <div class=\"admin-tab__chrome-tab__icon\" v-show=\"item.path !== '/Home'\">\n <div class=\"admin-tab__icon\" @click.stop=\"handleDeleteTab(item.path)\">\n <i class=\"icon-guanbi1 font-size-12\"></i>\n </div>\n </div>\n <div class=\"admin-tab__chrome-tab__divider\" \n :class=\"{ 'admin-tab__chrome-tab__divider--hide': hoverItem == item.path || currentTab.path === item.path }\"></div>\n </div>\n </div><!----><!----><!---->\n </div>\n</div>\n","<template>\r\n <div class=\"ui-tabs\">\r\n <div class=\"inline-block h-full\">\r\n <div class=\"h-full flex items-end\">\r\n <div class=\"admin-tab__chrome-tab\" \r\n v-for=\"(item, index) in data\"\r\n :key=\"item.path\" \r\n :class=\"{ \r\n 'admin-tab__chrome-tab--active': currentTab.path === item.path,\r\n 'admin-tab__chrome-tab--hover': hoverItem == item.path\r\n }\" \r\n @click=\"handleToggle(item.path)\"\r\n @mouseenter=\"itemEnter(item.path)\"\r\n @mouseleave=\"itemLeave(item.path)\">\r\n <div class=\"admin-tab__chrome-tab__bg\">\r\n <svg style=\"width: 100%; height: 100%;\">\r\n <defs>\r\n <symbol id=\"geometry-left\" viewBox=\"0 0 214 36\">\r\n <path d=\"M17 0h197v36H0v-2c4.5 0 9-3.5 9-8V8c0-4.5 3.5-8 8-8z\"></path>\r\n </symbol>\r\n <symbol id=\"geometry-right\" viewBox=\"0 0 214 36\">\r\n <use xlink:href=\"#geometry-left\"></use>\r\n </symbol>\r\n <clipPath>\r\n <rect width=\"100%\" height=\"100%\" x=\"0\"></rect>\r\n </clipPath>\r\n </defs>\r\n <svg width=\"52%\" height=\"100%\">\r\n <use xlink:href=\"#geometry-left\" width=\"214\" height=\"36\" \r\n :fill=\"stateColor(item.path)\"></use>\r\n </svg>\r\n <g transform=\"scale(-1, 1)\">\r\n <svg width=\"52%\" height=\"100%\" x=\"-100%\" y=\"0\">\r\n <use xlink:href=\"#geometry-right\" width=\"214\" height=\"36\" :fill=\"stateColor(item.path)\"></use>\r\n </svg>\r\n </g>\r\n </svg>\r\n </div>\r\n <span class=\"admin-tab__chrome-tab__slot\">\r\n <i style=\"margin-right: 5px;\" :class=\"item.icon || ''\"></i>\r\n {{ item.name }} \r\n </span>\r\n <div class=\"admin-tab__chrome-tab__icon\" v-show=\"item.path !== '/Home'\">\r\n <div class=\"admin-tab__icon\" @click.stop=\"handleDeleteTab(item.path)\">\r\n <i class=\"icon-guanbi1 font-size-12\"></i>\r\n </div>\r\n </div>\r\n <div class=\"admin-tab__chrome-tab__divider\" \r\n :class=\"{ 'admin-tab__chrome-tab__divider--hide': hoverItem == item.path || currentTab.path === item.path }\"></div>\r\n </div>\r\n </div><!----><!----><!---->\r\n </div>\r\n </div>\r\n</template>\r\n<script>\r\nexport default {\r\n name: 'ComTabs',\r\n props: {\r\n data: {\r\n type: Array,\r\n default() {\r\n return []\r\n }\r\n },\r\n currentTab: {\r\n type: Object,\r\n default() {\r\n return {}\r\n }\r\n }\r\n },\r\n data() {\r\n return {\r\n hoverItem: ''\r\n }\r\n },\r\n methods: {\r\n handleToggle(path) {\r\n this.$emit('toggle', path);\r\n },\r\n handleDeleteTab(path) {\r\n this.$emit('deleteTab', path);\r\n },\r\n\r\n itemEnter(target) {\r\n this.hoverItem = target;\r\n },\r\n\r\n itemLeave(target) {\r\n this.hoverItem = '';\r\n },\r\n\r\n stateColor(target) {\r\n const active = '#dee1e6';\r\n const hover = '#f5f7fa';\r\n\r\n return this.currentTab.path == target ? active : this.hoverItem == target ? hover : '#FFFFFF';\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n\r\n.ui-tabs {\r\n border-bottom: 1px solid @color-border;\r\n padding: 0 10px;\r\n height: 40px;\r\n background-color: #FFF;\r\n\r\n display: flex;\r\n align-items: flex-end;\r\n\r\n &__item {\r\n float: left;\r\n height: 31px;\r\n border-radius: 6px 6px 0 0;\r\n border: 1px solid @color-border;\r\n margin-top: 10px;\r\n box-sizing: border-box;\r\n font-size: 12px;\r\n line-height: 30px;\r\n padding: 0 10px;\r\n color: @color-f4;\r\n cursor: pointer;\r\n border-bottom-color: #FFF;\r\n margin-right: 1px;\r\n position: relative;\r\n transition: all .1s linear;\r\n\r\n &:hover {\r\n .el-icon-error {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n .el-icon-error {\r\n position: absolute;\r\n right: 2px;\r\n top: 50%;\r\n margin-top: -5px;\r\n opacity: 0;\r\n transition: all .1s linear;\r\n }\r\n\r\n &--active {\r\n padding-right: 20px;\r\n\r\n .el-icon-error {\r\n top: 50%;\r\n right: 5px;\r\n font-size: 14px;\r\n margin-top: -5px;\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n}\r\n.admin-tab__chrome-tab {\r\n position: relative;\r\n display: inline-flex;\r\n align-items: center;\r\n height: 34px;\r\n padding-left: 24px;\r\n padding-right: 24px;\r\n margin-right: -18px;\r\n cursor: pointer;\r\n}\r\n\r\n.admin-tab__chrome-tab__bg {\r\n position: absolute;\r\n left: 0;\r\n bottom: 0;\r\n width: 100%;\r\n height: 100%;\r\n overflow: hidden;\r\n\r\n svg {\r\n display: block;\r\n vertical-align: middle;\r\n }\r\n}\r\n\r\n.icon-guanbi1 {\r\n color: #a1a1a1;\r\n transition: all .2s linear;\r\n}\r\n\r\n.admin-tab__chrome-tab--active {\r\n z-index: 10;\r\n}\r\n\r\n.admin-tab__chrome-tab__slot {\r\n position: relative;\r\n z-index: 2;\r\n white-space: nowrap;\r\n font-size: 12px;\r\n}\r\n.admin-tab__chrome-tab__divider {\r\n position: absolute;\r\n right: 7.5px;\r\n z-index: 2;\r\n width: 1px;\r\n height: 16px;\r\n background-color: #a1a1a1;\r\n opacity: 1;\r\n transition: opacity 0.3s ease-in-out;\r\n}\r\n\r\n.admin-tab__chrome-tab__divider--hide {\r\n opacity: 0;\r\n}\r\n\r\n.admin-tab__chrome-tab--hover {\r\n z-index: 9;\r\n}\r\n\r\n.admin-tab__chrome-tab__icon {\r\n padding-left: 18px;\r\n\r\n .admin-tab__icon {\r\n position: relative;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 18px;\r\n height: 18px;\r\n font-size: 14px;\r\n }\r\n}\r\n</style>","import Vue from 'vue';\r\nimport ComComponent from './src/index.vue';\r\n\r\ntype SFCWithInstall<T> = T & { install(app: typeof Vue): void }; // vue 安装\r\n\r\n// 安装\r\nComComponent.install = (app: typeof Vue) => {\r\n app.component(ComComponent.name, ComComponent);\r\n};\r\nconst InComComponent: SFCWithInstall<typeof ComComponent> = ComComponent; // 增加类型\r\nexport default InComComponent;","\n\n<div class=\"ui-tool\">\n <el-dropdown @command=\"cmd => handleOperation('theme', cmd)\" v-if=\"themes.length\">\n <span class=\"el-dropdown-link\">\n <i class=\"icon-pifu\"></i>\n </span>\n <el-dropdown-menu slot=\"dropdown\">\n <el-dropdown-item v-for=\"item in themes\" \n :key=\"item.value\" \n :command=\"item.value\">\n <i class=\"el-icon-s-platform\" :style=\"{ color: item.theme['@theme-color'] }\"></i>\n <span>{{ item.label }}</span>\n </el-dropdown-item>\n </el-dropdown-menu>\n </el-dropdown>\n <el-dropdown @command=\"handleOperation\">\n <span class=\"el-dropdown-link\">\n <i class=\"el-icon-s-tools\"></i>\n </span>\n <el-dropdown-menu slot=\"dropdown\">\n <el-dropdown-item icon=\"icon-tuichudenglu\" command=\"outLogin\">退出登录</el-dropdown-item>\n </el-dropdown-menu>\n </el-dropdown>\n</div>\n\n<!-- <el-popover\n placement=\"bottom-start\"\n width=\"200\"\n trigger=\"hover\"\n content=\"这是一段内容,这是一段内容,这是一段内容,这是一段内容。\">\n <span class=\"el-dropdown-link\" slot=\"reference\">\n <i class=\"el-icon-s-tools\"></i>\n </span>\n</el-popover> -->\n","<template>\r\n\r\n <div class=\"ui-tool\">\r\n <el-dropdown @command=\"cmd => handleOperation('theme', cmd)\" v-if=\"themes.length\">\r\n <span class=\"el-dropdown-link\">\r\n <i class=\"icon-pifu\"></i>\r\n </span>\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <el-dropdown-item v-for=\"item in themes\" \r\n :key=\"item.value\" \r\n :command=\"item.value\">\r\n <i class=\"el-icon-s-platform\" :style=\"{ color: item.theme['@theme-color'] }\"></i>\r\n <span>{{ item.label }}</span>\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n <el-dropdown @command=\"handleOperation\">\r\n <span class=\"el-dropdown-link\">\r\n <i class=\"el-icon-s-tools\"></i>\r\n </span>\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <el-dropdown-item icon=\"icon-tuichudenglu\" command=\"outLogin\">退出登录</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n </div>\r\n\r\n <!-- <el-popover\r\n placement=\"bottom-start\"\r\n width=\"200\"\r\n trigger=\"hover\"\r\n content=\"这是一段内容,这是一段内容,这是一段内容,这是一段内容。\">\r\n <span class=\"el-dropdown-link\" slot=\"reference\">\r\n <i class=\"el-icon-s-tools\"></i>\r\n </span>\r\n </el-popover> -->\r\n</template>\r\n<script>\r\nexport default {\r\n name: 'ComTool',\r\n props: {\r\n themes: {\r\n type: Array,\r\n default() {\r\n return []\r\n }\r\n }\r\n },\r\n methods: {\r\n handleOperation(cmd, value) {\r\n switch (cmd) {\r\n case 'outLogin':\r\n this.$confirm('确认退出登录?', '提示', {\r\n type: 'warning'\r\n }).then(() => {\r\n console.log('out login');\r\n this.$emit('operation', cmd);\r\n })\r\n break;\r\n default:\r\n this.$emit('operation', cmd, value)\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n .el-icon-s-tools, .icon-pifu {\r\n font-size: 20px;\r\n color: #FFF;\r\n line-height: 60px;\r\n margin-right: 20px;\r\n cursor: pointer;\r\n }\r\n\r\n .ui-tool {\r\n margin-left: auto;\r\n display: flex;\r\n align-items: center;\r\n }\r\n</style>","import Vue from 'vue';\r\nimport ComComponent from './src/index.vue';\r\n\r\ntype SFCWithInstall<T> = T & { install(app: typeof Vue): void }; // vue 安装\r\n\r\n// 安装\r\nComComponent.install = (app: typeof Vue) => {\r\n app.component(ComComponent.name, ComComponent);\r\n};\r\nconst InComComponent: SFCWithInstall<typeof ComComponent> = ComComponent; // 增加类型\r\nexport default InComComponent;","\n<el-dialog \n append-to-body \n :top=\"top\" \n :title=\"title\" \n :visible=\"visible\"\n :width=\"width\" \n :close-on-click-modal=\"closeOnClickModal\"\n :before-close=\"beforeClose\"\n @close=\"handleClose\">\n <slot></slot>\n <template v-slot:footer>\n <slot name=\"footer\">\n <el-button v-if=\"showBtn\" size=\"small\" @click=\"handleCancel\">取消</el-button>\n <el-button v-if=\"showBtn\" size=\"small\" type=\"primary\" @click=\"handleConfirm\">确定</el-button>\n </slot>\n </template>\n</el-dialog>\n","<template>\r\n <el-dialog \r\n append-to-body \r\n :top=\"top\" \r\n :title=\"title\" \r\n :visible=\"visible\"\r\n :width=\"width\" \r\n :close-on-click-modal=\"closeOnClickModal\"\r\n :before-close=\"beforeClose\"\r\n @close=\"handleClose\">\r\n <slot></slot>\r\n <template v-slot:footer>\r\n <slot name=\"footer\">\r\n <el-button v-if=\"showBtn\" size=\"small\" @click=\"handleCancel\">取消</el-button>\r\n <el-button v-if=\"showBtn\" size=\"small\" type=\"primary\" @click=\"handleConfirm\">确定</el-button>\r\n </slot>\r\n </template>\r\n </el-dialog>\r\n</template>\r\n<script>\r\nexport default {\r\n name: 'ComDialog',\r\n props: {\r\n visible: {\r\n type: Boolean,\r\n default: false\r\n },\r\n title: {\r\n type: String,\r\n default: '标题'\r\n },\r\n width: {\r\n type: String,\r\n default: '600px'\r\n },\r\n top: {\r\n type: String,\r\n default: '50px'\r\n },\r\n closeOnClickModal: {\r\n type: Boolean,\r\n default: true\r\n },\r\n beforeClose: {\r\n type: Function,\r\n default(done) {\r\n done();\r\n }\r\n },\r\n showBtn: {\r\n type: Boolean,\r\n default: true\r\n }\r\n },\r\n data() {\r\n return {\r\n show: false\r\n }\r\n },\r\n methods: {\r\n handleClose() {\r\n this.$emit('close');\r\n this.$emit('update:visible', false);\r\n },\r\n\r\n handleConfirm() {\r\n this.$emit('confirm');\r\n },\r\n\r\n handleCancel() {\r\n this.$emit('cancel');\r\n this.$emit('update:visible', false);\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n/deep/ .el-dialog__header {\r\n border-bottom: 1px solid #ededed;\r\n\r\n .el-dialog__title {\r\n font-size: 16px;\r\n }\r\n}\r\n\r\n/deep/ .el-dialog__footer {\r\n border-top: 1px solid #ededed;\r\n}\r\n\r\n/deep/ .el-dialog__body {\r\n\r\n .el-form {\r\n .el-select {\r\n width: 240px;\r\n }\r\n\r\n .el-input {\r\n width: 240px;\r\n }\r\n\r\n .el-input-number {\r\n width: 240px;\r\n\r\n .el-input__inner {\r\n text-align: left;\r\n }\r\n }\r\n\r\n .ui-item__main {\r\n width: 100%;\r\n }\r\n\r\n .el-form-item__label {\r\n font-size: 12px;\r\n }\r\n\r\n .el-input--small .el-input__icon {\r\n height: 32px;\r\n }\r\n }\r\n}\r\n</style>","import Vue from 'vue';\r\nimport ComComponent from './src/index.vue';\r\n\r\ntype SFCWithInstall<T> = T & { install(app: typeof Vue): void }; // vue 安装\r\n\r\n// 安装\r\nComComponent.install = (app: typeof Vue) => {\r\n app.component(ComComponent.name, ComComponent);\r\n};\r\nconst InComComponent: SFCWithInstall<typeof ComComponent> = ComComponent; // 增加类型\r\nexport default InComComponent;","const datePickerCommonAttrs = {\r\n\t'range-separator': '至',\r\n\t'start-placeholder': '开始时间',\r\n\t'end-placeholder': '结束时间',\r\n};\r\nconst datetimerangeDefaultAttrs = {\r\n\t...datePickerCommonAttrs,\r\n\ttype: 'datetimerange',\r\n\t'default-time': ['00:00:00', '23:59:59'],\r\n\t'value-format': 'yyyy-MM-dd HH:mm:ss',\r\n\tformat: 'yyyy-MM-dd HH:mm:ss',\r\n};\r\nconst daterangeDefaultAttrs = {\r\n\t...datePickerCommonAttrs,\r\n\ttype: 'daterange',\r\n\t'value-format': 'yyyy-MM-dd',\r\n\tformat: 'yyyy-MM-dd',\r\n};\r\nconst datetimeDefaultAttrs = {\r\n\ttype: 'datetime',\r\n\t'default-time': '00:00:00',\r\n\tformat: 'yyyy-MM-dd HH:mm:ss',\r\n\t'value-format': 'yyyy-MM-dd HH:mm:ss',\r\n};\r\nconst dateDefaultAttrs = {\r\n\ttype: 'date',\r\n\tformat: 'yyyy-MM-dd',\r\n\t'value-format': 'yyyy-MM-dd',\r\n};\r\nexport const defaultAttrsMap = {\r\n\tinput: {\r\n\t\tsize: 'small',\r\n\t},\r\n\tselect: {\r\n\t\tsize: 'small',\r\n\t\tclearable: true,\r\n\t\tplaceholder: '请选择',\r\n\t},\r\n\ttextarea: {\r\n\t\tplaceholder: '请输入',\r\n\t\tsize: 'small',\r\n\t\trows: 4,\r\n\t},\r\n\t'input-number': {\r\n\t\t'controls-position': 'right',\r\n\t\tsize: 'small',\r\n\t},\r\n\tcascader: {\r\n\t\tsize: 'small',\r\n\t\tclearable: true,\r\n\t},\r\n\tdaterange: daterangeDefaultAttrs,\r\n\tdatetimerange: datetimerangeDefaultAttrs,\r\n\tdatetime: datetimeDefaultAttrs,\r\n\tdate: dateDefaultAttrs\r\n};\r\n","\n<div class=\"ui-form__item\" :style=\"staticStyle\" :class=\"`ui-form__item--${type}`\">\n\t<div>\n\t\t<slot name=\"label\">\n\t\t\t<div class=\"ui-item__label\" v-if=\"label\">\n\t\t\t\t<span>{{ label }}</span>\n\t\t\t</div>\n\t\t</slot>\n\t</div>\n\t<div class=\"ui-item__main\" :class=\"inlineLabel ? 'inline_form' : ''\">\n\t\t<template v-if=\"type === 'input'\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<div class=\"flex\">\n\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.mprepend }\">\n\t\t\t\t\t<slot name=\"mprepend\"></slot>\n\t\t\t\t</div>\n\t\t\t\t<el-input \n\t\t\t\t\t:class=\"{ inline_content: inlineLabel }\" \n\t\t\t\t\t:ref=\"type\" \n\t\t\t\t\tv-on=\"$listeners\"\n\t\t\t\t\tv-model=\"modelForm\" \n\t\t\t\t\tv-bind=\"setDefaultAttrs(polyfillAttrs($attrs))\"\n\t\t\t\t\t@keyup.enter.native=\"handleEnter\">\n\t\t\t\t\t<template v-for=\"(item, key) in getComponentSlots($slots)\" v-slot:[key]>\n\t\t\t\t\t\t<slot :name=\"key\"></slot>\n\t\t\t\t\t</template>\n\t\t\t\t</el-input>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"type === 'select'\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<div class=\"flex\">\n\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\n\t\t\t\t\t<slot name=\"prepend\"></slot>\n\t\t\t\t</div>\n\t\t\t\t<el-select \n\t\t\t\t\t:class=\"{ inline_content: inlineLabel }\" \n\t\t\t\t\t:ref=\"type\" \n\t\t\t\t\t:multiple=\"multiple\" \n\t\t\t\t\t:collapseTags=\"collapseTags\" \n\t\t\t\t\t:filterable=\"filterable\" \n\t\t\t\t\t:remote=\"remote\" \n\t\t\t\t\t:reserve-keyword=\"reserveKeyword\" \n\t\t\t\t\t:remote-method=\"remoteMethod\" \n\t\t\t\t\t:filter-method=\"checkFilterMethod\"\n\t\t\t\t\t@visible-change=\"handleSetSelectOpeWidth\"\n\t\t\t\t\t:popper-class=\"multiple ? `ui-select__popper--${itemFlag}` : ''\"\n\t\t\t\t\tv-model=\"modelForm\" \n\t\t\t\t\tv-bind=\"setDefaultAttrs(polyfillAttrs($attrs))\" \n\t\t\t\t\tv-on=\"$listeners\">\n\t\t\t\t\t<div class=\"ui-select__ope\" v-if=\"multiple && filterOptions.length\">\n\t\t\t\t\t\t<el-button type=\"text\" @click=\"handleSelectCheck(true)\">全选</el-button>\n\t\t\t\t\t\t<el-button type=\"text\" @click=\"handleSelectCheck()\">反选</el-button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<el-option v-for=\"(item, index) in filterOptions\" :key=\"`${item.value}${index}`\" :value=\"item.value.toString()\" :label=\"item.label\"></el-option>\n\t\t\t\t\t<template v-for=\"(item, key) in getComponentSlots($slots)\" v-slot:[key]>\n\t\t\t\t\t\t<slot :name=\"key\"></slot>\n\t\t\t\t\t</template>\n\t\t\t\t</el-select>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"type === 'bigselect'\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<div class=\"flex\">\n\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\n\t\t\t\t\t<slot name=\"prepend\"></slot>\n\t\t\t\t</div>\n\t\t\t\t<el-select :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" :multiple=\"multiple\" :collapseTags=\"collapseTags\" :filterable=\"filterable\" :remote=\"remote\" :reserve-keyword=\"reserveKeyword\" :filter-method=\"bigFilterMethod\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs(polyfillAttrs($attrs))\" v-on=\"$listeners\">\n\t\t\t\t\t<el-option v-for=\"(item, index) in bigOptions\" :key=\"`${item.value}${index}`\" :value=\"item.value.toString()\" :label=\"item.label\"></el-option>\n\t\t\t\t\t<template v-for=\"(item, key) in getComponentSlots($slots)\" v-slot:[key]>\n\t\t\t\t\t\t<slot :name=\"key\"></slot>\n\t\t\t\t\t</template>\n\t\t\t\t</el-select>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"type === 'textarea'\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<div class=\"flex\">\n\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.mprepend }\">\n\t\t\t\t\t<slot name=\"mprepend\"></slot>\n\t\t\t\t</div>\n\t\t\t\t<el-input :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" type=\"textarea\" \n\t\t\t\t\tv-on=\"$listeners\" \n\t\t\t\t\tv-bind=\"setDefaultAttrs(polyfillAttrs($attrs))\" \n\t\t\t\t\t@keyup.enter.native=\"handleEnter\"></el-input>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"type === 'input-number'\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<div class=\"flex\">\n\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\n\t\t\t\t\t<slot name=\"prepend\"></slot>\n\t\t\t\t</div>\n\t\t\t\t<el-input-number :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\" @keyup.enter.native=\"handleEnter\"></el-input-number>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"type === 'cascader'\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<div class=\"flex\">\n\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\n\t\t\t\t\t<slot name=\"prepend\"></slot>\n\t\t\t\t</div>\n\t\t\t\t<el-cascader :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" :options=\"options\" :props=\"props\" :filterable=\"filterable\" :collapseTags=\"collapseTags\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\"></el-cascader>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"type === 'daterange'\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<div class=\"flex\">\n\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\n\t\t\t\t\t<slot name=\"prepend\"></slot>\n\t\t\t\t</div>\n\t\t\t\t<el-date-picker :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\">\n\t\t\t\t</el-date-picker>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"type === 'datetimerange'\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<div class=\"flex\">\n\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\n\t\t\t\t\t<slot name=\"prepend\"></slot>\n\t\t\t\t</div>\n\t\t\t\t<el-date-picker :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\">\n\t\t\t\t</el-date-picker>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"type === 'datetime'\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<div class=\"flex\">\n\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\n\t\t\t\t\t<slot name=\"prepend\"></slot>\n\t\t\t\t</div>\n\t\t\t\t<el-date-picker :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\">\n\t\t\t\t</el-date-picker>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"['date', 'month'].includes(type)\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<div class=\"flex\">\n\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\n\t\t\t\t\t<slot name=\"prepend\"></slot>\n\t\t\t\t</div>\n\t\t\t\t<el-date-picker :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" :type=\"type\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\">\n\t\t\t\t</el-date-picker>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"type === 'inputrange'\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<div class=\"ui-input__range\" :class=\"{ inline_content: inlineLabel }\">\n\t\t\t\t<slot name=\"prepend\"></slot>\n\t\t\t\t<el-input v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\" style=\"width: 50%\" v-model=\"modelForm[0]\" @keyup.enter.native=\"handleEnter\"></el-input>\n\t\t\t\t<span style=\"color: #dcdfe6\">-</span>\n\t\t\t\t<el-input v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\" style=\"width: 50%\" v-model=\"modelForm[1]\" @keyup.enter.native=\"handleEnter\"></el-input>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"type === 'radio'\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<el-radio-group v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\">\n\t\t\t\t<el-radio v-for=\"item in selectOption\" :key=\"item.value\" :label=\"item.value\">{{ item.label }}</el-radio>\n\t\t\t</el-radio-group>\n\t\t</template>\n\t</div>\n</div>\n","<template>\r\n\t<div class=\"ui-form__item\" :style=\"staticStyle\" :class=\"`ui-form__item--${type}`\">\r\n\t\t<div>\r\n\t\t\t<slot name=\"label\">\r\n\t\t\t\t<div class=\"ui-item__label\" v-if=\"label\">\r\n\t\t\t\t\t<span>{{ label }}</span>\r\n\t\t\t\t</div>\r\n\t\t\t</slot>\r\n\t\t</div>\r\n\t\t<div class=\"ui-item__main\" :class=\"inlineLabel ? 'inline_form' : ''\">\r\n\t\t\t<template v-if=\"type === 'input'\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.mprepend }\">\r\n\t\t\t\t\t\t<slot name=\"mprepend\"></slot>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<el-input \r\n\t\t\t\t\t\t:class=\"{ inline_content: inlineLabel }\" \r\n\t\t\t\t\t\t:ref=\"type\" \r\n\t\t\t\t\t\tv-on=\"$listeners\"\r\n\t\t\t\t\t\tv-model=\"modelForm\" \r\n\t\t\t\t\t\tv-bind=\"setDefaultAttrs(polyfillAttrs($attrs))\"\r\n\t\t\t\t\t\t@keyup.enter.native=\"handleEnter\">\r\n\t\t\t\t\t\t<template v-for=\"(item, key) in getComponentSlots($slots)\" v-slot:[key]>\r\n\t\t\t\t\t\t\t<slot :name=\"key\"></slot>\r\n\t\t\t\t\t\t</template>\r\n\t\t\t\t\t</el-input>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t\t<template v-else-if=\"type === 'select'\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\r\n\t\t\t\t\t\t<slot name=\"prepend\"></slot>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<el-select \r\n\t\t\t\t\t\t:class=\"{ inline_content: inlineLabel }\" \r\n\t\t\t\t\t\t:ref=\"type\" \r\n\t\t\t\t\t\t:multiple=\"multiple\" \r\n\t\t\t\t\t\t:collapseTags=\"collapseTags\" \r\n\t\t\t\t\t\t:filterable=\"filterable\" \r\n\t\t\t\t\t\t:remote=\"remote\" \r\n\t\t\t\t\t\t:reserve-keyword=\"reserveKeyword\" \r\n\t\t\t\t\t\t:remote-method=\"remoteMethod\" \r\n\t\t\t\t\t\t:filter-method=\"checkFilterMethod\"\r\n\t\t\t\t\t\t@visible-change=\"handleSetSelectOpeWidth\"\r\n\t\t\t\t\t\t:popper-class=\"multiple ? `ui-select__popper--${itemFlag}` : ''\"\r\n\t\t\t\t\t\tv-model=\"modelForm\" \r\n\t\t\t\t\t\tv-bind=\"setDefaultAttrs(polyfillAttrs($attrs))\" \r\n\t\t\t\t\t\tv-on=\"$listeners\">\r\n\t\t\t\t\t\t<div class=\"ui-select__ope\" v-if=\"multiple && filterOptions.length\">\r\n\t\t\t\t\t\t\t<el-button type=\"text\" @click=\"handleSelectCheck(true)\">全选</el-button>\r\n\t\t\t\t\t\t\t<el-button type=\"text\" @click=\"handleSelectCheck()\">反选</el-button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<el-option v-for=\"(item, index) in filterOptions\" :key=\"`${item.value}${index}`\" :value=\"item.value.toString()\" :label=\"item.label\"></el-option>\r\n\t\t\t\t\t\t<template v-for=\"(item, key) in getComponentSlots($slots)\" v-slot:[key]>\r\n\t\t\t\t\t\t\t<slot :name=\"key\"></slot>\r\n\t\t\t\t\t\t</template>\r\n\t\t\t\t\t</el-select>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t\t<template v-else-if=\"type === 'bigselect'\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\r\n\t\t\t\t\t\t<slot name=\"prepend\"></slot>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<el-select :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" :multiple=\"multiple\" :collapseTags=\"collapseTags\" :filterable=\"filterable\" :remote=\"remote\" :reserve-keyword=\"reserveKeyword\" :filter-method=\"bigFilterMethod\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs(polyfillAttrs($attrs))\" v-on=\"$listeners\">\r\n\t\t\t\t\t\t<el-option v-for=\"(item, index) in bigOptions\" :key=\"`${item.value}${index}`\" :value=\"item.value.toString()\" :label=\"item.label\"></el-option>\r\n\t\t\t\t\t\t<template v-for=\"(item, key) in getComponentSlots($slots)\" v-slot:[key]>\r\n\t\t\t\t\t\t\t<slot :name=\"key\"></slot>\r\n\t\t\t\t\t\t</template>\r\n\t\t\t\t\t</el-select>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t\t<template v-else-if=\"type === 'textarea'\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.mprepend }\">\r\n\t\t\t\t\t\t<slot name=\"mprepend\"></slot>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<el-input :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" type=\"textarea\" \r\n\t\t\t\t\t\tv-on=\"$listeners\" \r\n\t\t\t\t\t\tv-bind=\"setDefaultAttrs(polyfillAttrs($attrs))\" \r\n\t\t\t\t\t\t@keyup.enter.native=\"handleEnter\"></el-input>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t\t<template v-else-if=\"type === 'input-number'\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\r\n\t\t\t\t\t\t<slot name=\"prepend\"></slot>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<el-input-number :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\" @keyup.enter.native=\"handleEnter\"></el-input-number>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t\t<template v-else-if=\"type === 'cascader'\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\r\n\t\t\t\t\t\t<slot name=\"prepend\"></slot>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<el-cascader :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" :options=\"options\" :props=\"props\" :filterable=\"filterable\" :collapseTags=\"collapseTags\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\"></el-cascader>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t\t<template v-else-if=\"type === 'daterange'\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\r\n\t\t\t\t\t\t<slot name=\"prepend\"></slot>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<el-date-picker :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\">\r\n\t\t\t\t\t</el-date-picker>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t\t<template v-else-if=\"type === 'datetimerange'\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\r\n\t\t\t\t\t\t<slot name=\"prepend\"></slot>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<el-date-picker :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\">\r\n\t\t\t\t\t</el-date-picker>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t\t<template v-else-if=\"type === 'datetime'\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\r\n\t\t\t\t\t\t<slot name=\"prepend\"></slot>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<el-date-picker :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\">\r\n\t\t\t\t\t</el-date-picker>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t\t<template v-else-if=\"['date', 'month'].includes(type)\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\r\n\t\t\t\t\t\t<slot name=\"prepend\"></slot>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<el-date-picker :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" :type=\"type\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\">\r\n\t\t\t\t\t</el-date-picker>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t\t<template v-else-if=\"type === 'inputrange'\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<div class=\"ui-input__range\" :class=\"{ inline_content: inlineLabel }\">\r\n\t\t\t\t\t<slot name=\"prepend\"></slot>\r\n\t\t\t\t\t<el-input v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\" style=\"width: 50%\" v-model=\"modelForm[0]\" @keyup.enter.native=\"handleEnter\"></el-input>\r\n\t\t\t\t\t<span style=\"color: #dcdfe6\">-</span>\r\n\t\t\t\t\t<el-input v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\" style=\"width: 50%\" v-model=\"modelForm[1]\" @keyup.enter.native=\"handleEnter\"></el-input>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t\t<template v-else-if=\"type === 'radio'\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<el-radio-group v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\">\r\n\t\t\t\t\t<el-radio v-for=\"item in selectOption\" :key=\"item.value\" :label=\"item.value\">{{ item.label }}</el-radio>\r\n\t\t\t\t</el-radio-group>\r\n\t\t\t</template>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n<script>\r\nimport { defaultAttrsMap } from './defaultAttrsConfig';\r\nexport default {\r\n\tinheritAttrs: false,\r\n\tname: 'ComFormItem',\r\n\tmodel: {\r\n\t\tprop: 'model',\r\n\t\tevent: 'changes',\r\n\t},\r\n\tprops: {\r\n\t\tmodel: undefined,\r\n\r\n\t\t// 组件类型\r\n\t\ttype: {\r\n\t\t\ttype: String,\r\n\t\t\tdefault: 'input',\r\n\t\t},\r\n\t\t// item name\r\n\t\tlabel: {\r\n\t\t\ttype: String,\r\n\t\t\tdefault: '',\r\n\t\t},\r\n\r\n\t\t// 使用属性透传代替了此props,但原来的使用方式一样有效果\r\n\t\t// readonly: {\r\n\t\t// \ttype: Boolean,\r\n\t\t// \tdefault: false,\r\n\t\t// },\r\n\r\n\t\t// 选项\r\n\t\toptions: {\r\n\t\t\ttype: [Object, Array],\r\n\t\t\tdefault() {\r\n\t\t\t\treturn [];\r\n\t\t\t},\r\n\t\t},\r\n\r\n\t\t// 选项映射\r\n\t\tprops: {\r\n\t\t\ttype: Object,\r\n\t\t\tdefault() {\r\n\t\t\t\treturn { value: 'value', label: 'label' };\r\n\t\t\t},\r\n\t\t},\r\n\t\t// 加载条\r\n\t\tloading: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: false,\r\n\t\t},\r\n\r\n\t\tmultiple: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: false,\r\n\t\t},\r\n\r\n\t\tcollapseTags: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: true,\r\n\t\t},\r\n\r\n\t\tfilterable: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: true,\r\n\t\t},\r\n\r\n\t\tremote: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: false,\r\n\t\t},\r\n\r\n\t\treserveKeyword: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: false,\r\n\t\t},\r\n\r\n\t\tremoteMethod: {\r\n\t\t\ttype: Function\r\n\t\t},\r\n\r\n\t\t// 行内显示标签\r\n\t\tinlineLabel: {\r\n\t\t\ttype: String,\r\n\t\t\tdefault: '',\r\n\t\t},\r\n\t\t// 行内标签宽度\r\n\t\tlabelWidth: {\r\n\t\t\ttype: String,\r\n\t\t\tdefault: '120px',\r\n\t\t},\r\n\r\n\t\t// 最小宽度\r\n\t\tminWidth: {\r\n\t\t\ttype: [String, Number],\r\n\t\t\tdefault: ''\r\n\t\t}\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tmodelForm: this.model,\r\n\t\t\tbigOptions: [],\r\n\r\n\t\t\t// 特殊处理时使用标识\r\n\t\t\titemFlag: Math.ceil(Math.random() * 10000),\r\n\r\n\t\t\tfilterOptions: []\r\n\t\t};\r\n\t},\r\n\tcomputed: {\r\n\t\tstaticStyle() {\r\n\t\t\tconst obj = {\r\n\r\n\t\t\t\t...(this.minWidth ? { minWidth: `${parseFloat(this.minWidth)}px` } : {})\r\n\t\t\t}\r\n\r\n\t\t\treturn obj;\r\n\t\t},\r\n\t\tselectOption() {\r\n\t\t\tlet tempArr = [];\r\n\t\t\tif (Array.isArray(this.options) && this.options.length && this.options[0][this.props.label] === undefined) {\r\n\t\t\t\tconst { label, value } = this.props;\r\n\t\t\t\ttempArr = this.options.map((item, index) => {\r\n\t\t\t\t\tconst obj = {\r\n\t\t\t\t\t\tlabel: item,\r\n\t\t\t\t\t\tvalue: index,\r\n\t\t\t\t\t};\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tlabel: obj[label],\r\n\t\t\t\t\t\tvalue: Number.isFinite(Number(obj[value])) ? obj[value].toString() : obj[value],\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t} else if (!Array.isArray(this.options)) {\r\n\t\t\t\ttempArr = Object.entries(this.options).map(([value, label]) => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tlabel,\r\n\t\t\t\t\t\tvalue: Number.isFinite(Number(value)) ? value.toString() : value,\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tlet options = [];\r\n\t\t\t\toptions.push(...this.options);\r\n\t\t\t\ttempArr = options.map((item) => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tlabel: item[this.props.label],\r\n\t\t\t\t\t\tvalue: Number.isFinite(Number(item[this.props.value])) ? item[this.props.value].toString() : item[this.props.value],\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\treturn tempArr;\r\n\t\t},\r\n\t},\r\n\tcreated() {\r\n\t\tthis.bigOptions = this.selectOption.slice(0, 150);\r\n\t\tthis.filterOptions = this.selectOption.slice(0);\r\n\t},\r\n\tmethods: {\r\n\r\n\t\t// 大数据查询\r\n\t\tbigFilterMethod(query) {\r\n\t\t\tlet tempOptions = [];\r\n\t\t\tif (query) {\r\n\t\t\t\ttempOptions = this.selectOption.filter(item => {\r\n\t\t\t\t\treturn item.label.toLowerCase().indexOf(query.toLowerCase()) > -1\r\n\t\t\t\t}).slice(0, 150);\r\n\t\t\t\t\r\n\t\t\t} else {\r\n\t\t\t\ttempOptions = JSON.parse(JSON.stringify(this.selectOption.slice(0, 150)));\r\n\t\t\t}\r\n\r\n\t\t\tconst posIndex = this.selectOption.findIndex(item => item.value == this.modelForm);\r\n\t\t\tif (posIndex < 150) {\r\n\t\t\t\tthis.bigOptions = tempOptions;\r\n\t\t\t} else {\r\n\t\t\t\tthis.bigOptions = [this.selectOption[posIndex], ...tempOptions];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// 获取需要透传到element组件的插槽\r\n\t\tgetComponentSlots(slots) {\r\n\t\t\tconst excludeSlots = ['label'];\r\n\t\t\tconst slots_ = {};\r\n\r\n\t\t\tObject.entries(slots).forEach(([key, value]) => {\r\n\t\t\t\tif (!excludeSlots.includes(key)) {\r\n\t\t\t\t\tslots_[key] = value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\treturn slots_;\r\n\t\t},\r\n\r\n\t\t// 获取当前element组件实例\r\n\t\tgetCurrentInstance() {\r\n\t\t\treturn this.$refs[this.type];\r\n\t\t},\r\n\r\n\t\t// 因使用属性透传而删除了以前定义的一些props,这里做一下兼容,让以前的使用方式不改变\r\n\t\tpolyfillAttrs(attrs) {\r\n\t\t\treturn {\r\n\t\t\t\t...attrs,\r\n\t\t\t\tdisabled: attrs.readonly || attrs.disabled,\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t// 获取配置项\r\n\t\tgetformItemConfig() {\r\n\t\t\tif (!this.$UICONFIG) return {};\r\n\t\t\tconst { formItemConfig } = this.$UICONFIG;\r\n\t\t\treturn formItemConfig || {};\r\n\t\t},\r\n\r\n\t\t// 设置elemenet组件默认属性\r\n\t\tsetDefaultAttrs(attrs) {\r\n\t\t\tconst { type } = this;\r\n\t\t\tconst formItemConfig = this.getformItemConfig();\r\n\t\t\tconst defaultAttrs = formItemConfig[type] || defaultAttrsMap[type] || {};\r\n\t\t\treturn {\r\n\t\t\t\t...defaultAttrs,\r\n\t\t\t\t...attrs,\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t// 回车\r\n\t\thandleEnter() {\r\n\t\t\tconst parent = this.$parent.$refs.Search ? this.$parent : this.$parent.$parent.$refs.Search ? this.$parent.$parent : null;\r\n\t\t\tif (parent) {\r\n\t\t\t\tparent.handleQuery();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// 设置Select类型 全选功能样式\r\n\t\tasync handleSetSelectOpeWidth(res) {\r\n\r\n\t\t\tif (!res) {\r\n\t\t\t\tthis.filterOptions = JSON.parse(JSON.stringify(this.selectOption));\r\n\t\t\t\treturn;\r\n\t\t\t};\r\n\r\n\t\t\tawait this.$nextTick();\r\n\t\t\tconst Eles = document.querySelector(`.ui-select__popper--${this.itemFlag}`);\r\n\r\n\t\t\tconst opeEle = Eles && Eles.querySelector('.ui-select__ope');\r\n\t\t\tif (opeEle) {\r\n\t\t\t\topeEle.style.width = `${Eles.offsetWidth - 2}px`;\r\n\t\t\t}\r\n\t\t},\r\n\t\thandleSelectCheck(isALL) {\r\n\t\t\tif (isALL) {\r\n\t\t\t\tthis.modelForm = this.filterOptions.map(item => item.value);\r\n\t\t\t} else {\r\n\t\t\t\tthis.modelForm = this.filterOptions.reduce((temp, item) => {\r\n\t\t\t\t\tif (!this.modelForm.includes(item.value)) {\r\n\t\t\t\t\t\treturn [...temp, item.value]\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn temp;\r\n\t\t\t\t\t}\r\n\t\t\t\t}, []);\r\n\t\t\t}\r\n\t\t},\r\n\t\tcheckFilterMethod(query) {\r\n\t\t\tlet tempOptions = [];\r\n\t\t\tif (query) {\r\n\t\t\t\ttempOptions = this.selectOption.filter(item => {\r\n\t\t\t\t\treturn item.label.toLowerCase().indexOf(query.toLowerCase()) > -1\r\n\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\ttempOptions = JSON.parse(JSON.stringify(this.selectOption));\r\n\t\t\t}\r\n\r\n\t\t\tthis.filterOptions = tempOptions;\r\n\t\t}\r\n\t},\r\n\twatch: {\r\n\t\tmodelForm(val) {\r\n\t\t\tthis.$emit('changes', val);\r\n\t\t},\r\n\t\tmodel(val) {\r\n\t\t\tthis.modelForm = val;\r\n\t\t},\r\n\t\tselectOption(val) {\r\n\t\t\tthis.bigOptions = val.slice(0, 200);\r\n\t\t\tthis.filterOptions = val.slice(0);\r\n\t\t}\r\n\t},\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n.ui-form__item {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tmargin-right: 15px;\r\n}\r\n\r\n.ui-item__label {\r\n\tmargin-right: 10px;\r\n\tfont-size: 12px;\r\n\twidth: 70px;\r\n\ttext-align: right;\r\n}\r\n\r\n// 使用远程搜索时箭头图标高亮显示\r\n::v-deep.el-select {\r\n\t.el-select__caret:first-child::before {\r\n\t\tcontent: '\\e6e1';\r\n\t}\r\n\r\n\t.is-focus {\r\n\t\t.el-select__caret:first-child {\r\n\t\t\ttransform: rotateZ(0deg);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.ui-input__range {\r\n\tmax-width: 240px;\r\n\tdisplay: flex;\r\n\r\n\t&>span {\r\n\t\tline-height: 28px;\r\n\t}\r\n}\r\n\r\n.el-date-editor {\r\n\twidth: 100% !important;\r\n}\r\n\r\n.inline_form {\r\n\tdisplay: flex;\r\n\tmargin-bottom: 10px;\r\n}\r\n\r\n.inline_label {\r\n\tdisplay: inline-block;\r\n\theight: 32px;\r\n\tline-height: 32px;\r\n\tfont-size: 12px;\r\n\ttext-align: right;\r\n\tpadding-right: 10px;\r\n}\r\n\r\n.inline_content {\r\n\tflex: 1;\r\n}\r\n</style>\r\n","import Vue from 'vue';\r\nimport ComComponent from './src/index.vue';\r\n\r\ntype SFCWithInstall<T> = T & { install(app: typeof Vue): void }; // vue 安装\r\n\r\n// 安装\r\nComComponent.install = (app: typeof Vue) => {\r\n app.component(ComComponent.name, ComComponent);\r\n};\r\nconst InComComponent: SFCWithInstall<typeof ComComponent> = ComComponent; // 增加类型\r\nexport default InComComponent;","\n<div>\n <template v-for=\"(item, index) in showItems\">\n <component\n size=\"mini\" \n btn-type=\"mock\"\n v-permit=\"{ value: item.$attrs.permit || 'break' }\"\n v-bind=\"$attrs\"\n :is=\"item.constructor\" \n :type=\"item.type == 'text' ? 'primary' : item.type\" \n :icon=\"item.icon\" \n v-on=\"item.$listeners\">\n {{ item.$slots.default[0].text }}\n </component>\n </template>\n</div>\n","<template>\r\n <div>\r\n <template v-for=\"(item, index) in showItems\">\r\n <component\r\n size=\"mini\" \r\n btn-type=\"mock\"\r\n v-permit=\"{ value: item.$attrs.permit || 'break' }\"\r\n v-bind=\"$attrs\"\r\n :is=\"item.constructor\" \r\n :type=\"item.type == 'text' ? 'primary' : item.type\" \r\n :icon=\"item.icon\" \r\n v-on=\"item.$listeners\">\r\n {{ item.$slots.default[0].text }}\r\n </component>\r\n </template>\r\n </div>\r\n</template>\r\n<script>\r\nexport default {\r\n props: {\r\n showItems: {\r\n type: Array,\r\n default() {\r\n return [];\r\n }\r\n }\r\n },\r\n created() {\r\n setTimeout(() => {\r\n console.log(this.showItems);\r\n }, 1000);\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n.el-button--mini {\r\n padding: 5px 8px;\r\n font-size: 12px !important;\r\n box-shadow: 0 0 5px 1px #b0ccf2;\r\n}\r\n</style>","\n<div class=\"ui-operation\">\n <slot></slot>\n <!-- <Items :show-items=\"showItems\"/> -->\n</div>\n","<template>\r\n <div class=\"ui-operation\">\r\n <slot></slot>\r\n <!-- <Items :show-items=\"showItems\"/> -->\r\n </div>\r\n</template>\r\n<script>\r\nimport Items from './Items.vue';\r\nexport default {\r\n name: 'ComOperation',\r\n components: {\r\n Items\r\n },\r\n prop: {\r\n type: String,\r\n default: 'main'\r\n },\r\n data() {\r\n return {\r\n isInit: false,\r\n listItems: []\r\n }\r\n },\r\n computed: {\r\n showItems() {\r\n return this.listItems.filter(item => item.$options._componentTag == 'el-button');\r\n }\r\n },\r\n mounted() {\r\n this.listItems = this.$children;\r\n },\r\n watch: {\r\n listItems(val) {\r\n if (val.length) {\r\n this.isInit = true;\r\n\r\n // console.log(this.$refs.TempArea);\r\n }\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n.ui-operation {\r\n padding: 5px 10px;\r\n}\r\n\r\n.el-button {\r\n padding: 5px 8px !important;\r\n font-size: 12px !important;\r\n box-shadow: 0 0 5px 1px #b0ccf2;\r\n}\r\n</style>","import Vue from 'vue';\r\nimport ComComponent from './src/index.vue';\r\n\r\ntype SFCWithInstall<T> = T & { install(app: typeof Vue): void }; // vue 安装\r\n\r\n// 安装\r\nComComponent.install = (app: typeof Vue) => {\r\n app.component(ComComponent.name, ComComponent);\r\n};\r\nconst InComComponent: SFCWithInstall<typeof ComComponent> = ComComponent; // 增加类型\r\nexport default InComComponent;","/**!\n * Sortable 1.10.2\n * @author\tRubaXa <trash@rubaxa.org>\n * @author\towenm <owen23355@gmail.com>\n * @license MIT\n */\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar version = \"1.10.2\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !!\n /*@__PURE__*/\n navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\n\n\nfunction getChild(el, childNum, options) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && children[i] !== Sortable.dragged && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread({}, extraEventProperties, PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, [\"evt\"]);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n if (lastChild(sortable)) return;\n var rect = getRect(sortable),\n threshold = sortable[expando].options.emptyInsertThreshold,\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (threshold && insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // assign target only if condition is true\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (rootEl.contains(dragEl) && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread({}, Sortable.utils, plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvt: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvt: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvt: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvt: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"sortablejs\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"sortablejs\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"vuedraggable\"] = factory(require(\"sortablejs\"));\n\telse\n\t\troot[\"vuedraggable\"] = factory(root[\"Sortable\"]);\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE_a352__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"01f9\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(\"2d00\");\nvar $export = __webpack_require__(\"5ca1\");\nvar redefine = __webpack_require__(\"2aba\");\nvar hide = __webpack_require__(\"32e9\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar $iterCreate = __webpack_require__(\"41a0\");\nvar setToStringTag = __webpack_require__(\"7f20\");\nvar getPrototypeOf = __webpack_require__(\"38fd\");\nvar ITERATOR = __webpack_require__(\"2b4c\")('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n/***/ }),\n\n/***/ \"02f4\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar defined = __webpack_require__(\"be13\");\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n\n\n/***/ }),\n\n/***/ \"0390\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar at = __webpack_require__(\"02f4\")(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n\n\n/***/ }),\n\n/***/ \"0bfb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = __webpack_require__(\"cb7c\");\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"0d58\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(\"ce10\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"1495\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar anObject = __webpack_require__(\"cb7c\");\nvar getKeys = __webpack_require__(\"0d58\");\n\nmodule.exports = __webpack_require__(\"9e1e\") ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"214f\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n__webpack_require__(\"b0c5\");\nvar redefine = __webpack_require__(\"2aba\");\nvar hide = __webpack_require__(\"32e9\");\nvar fails = __webpack_require__(\"79e5\");\nvar defined = __webpack_require__(\"be13\");\nvar wks = __webpack_require__(\"2b4c\");\nvar regexpExec = __webpack_require__(\"520a\");\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$<a>') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n\n\n/***/ }),\n\n/***/ \"230e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nvar document = __webpack_require__(\"7726\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"23c6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(\"2d95\");\nvar TAG = __webpack_require__(\"2b4c\")('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n/***/ }),\n\n/***/ \"2621\":\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"2aba\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar has = __webpack_require__(\"69a8\");\nvar SRC = __webpack_require__(\"ca5a\")('src');\nvar $toString = __webpack_require__(\"fa5b\");\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\n__webpack_require__(\"8378\").inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n\n\n/***/ }),\n\n/***/ \"2aeb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(\"cb7c\");\nvar dPs = __webpack_require__(\"1495\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(\"230e\")('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(\"fab2\").appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ \"2b4c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(\"5537\")('wks');\nvar uid = __webpack_require__(\"ca5a\");\nvar Symbol = __webpack_require__(\"7726\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n/***/ }),\n\n/***/ \"2d00\":\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ \"2d95\":\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"2fdb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n\nvar $export = __webpack_require__(\"5ca1\");\nvar context = __webpack_require__(\"d2c8\");\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * __webpack_require__(\"5147\")(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n\n/***/ \"32e9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar createDesc = __webpack_require__(\"4630\");\nmodule.exports = __webpack_require__(\"9e1e\") ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ \"38fd\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(\"69a8\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n/***/ }),\n\n/***/ \"41a0\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar create = __webpack_require__(\"2aeb\");\nvar descriptor = __webpack_require__(\"4630\");\nvar setToStringTag = __webpack_require__(\"7f20\");\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(\"32e9\")(IteratorPrototype, __webpack_require__(\"2b4c\")('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n/***/ }),\n\n/***/ \"456d\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(\"4bf8\");\nvar $keys = __webpack_require__(\"0d58\");\n\n__webpack_require__(\"5eda\")('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n\n\n/***/ }),\n\n/***/ \"4588\":\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n\n/***/ \"4630\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n\n/***/ \"4bf8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"5147\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MATCH = __webpack_require__(\"2b4c\")('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n\n\n/***/ }),\n\n/***/ \"520a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar regexpFlags = __webpack_require__(\"0bfb\");\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n\n\n/***/ }),\n\n/***/ \"52a7\":\n/***/ (function(module, exports) {\n\nexports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"5537\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(\"8378\");\nvar global = __webpack_require__(\"7726\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(\"2d00\") ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"5ca1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar core = __webpack_require__(\"8378\");\nvar hide = __webpack_require__(\"32e9\");\nvar redefine = __webpack_require__(\"2aba\");\nvar ctx = __webpack_require__(\"9b43\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n/***/ }),\n\n/***/ \"5eda\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(\"5ca1\");\nvar core = __webpack_require__(\"8378\");\nvar fails = __webpack_require__(\"79e5\");\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n/***/ }),\n\n/***/ \"5f1b\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar classof = __webpack_require__(\"23c6\");\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n\n\n/***/ }),\n\n/***/ \"613b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(\"5537\")('keys');\nvar uid = __webpack_require__(\"ca5a\");\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"626a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(\"2d95\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n\n/***/ \"6762\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// https://github.com/tc39/Array.prototype.includes\nvar $export = __webpack_require__(\"5ca1\");\nvar $includes = __webpack_require__(\"c366\")(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n__webpack_require__(\"9c6c\")('includes');\n\n\n/***/ }),\n\n/***/ \"6821\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(\"626a\");\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"69a8\":\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"6a99\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(\"d3f4\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"7333\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(\"0d58\");\nvar gOPS = __webpack_require__(\"2621\");\nvar pIE = __webpack_require__(\"52a7\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar IObject = __webpack_require__(\"626a\");\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(\"79e5\")(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n\n\n/***/ }),\n\n/***/ \"7726\":\n/***/ (function(module, exports) {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"77f1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n\n/***/ \"79e5\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ \"7f20\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar def = __webpack_require__(\"86cc\").f;\nvar has = __webpack_require__(\"69a8\");\nvar TAG = __webpack_require__(\"2b4c\")('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n/***/ }),\n\n/***/ \"8378\":\n/***/ (function(module, exports) {\n\nvar core = module.exports = { version: '2.6.5' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"84f2\":\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"86cc\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"cb7c\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"c69a\");\nvar toPrimitive = __webpack_require__(\"6a99\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(\"9e1e\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"9b43\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(\"d8e8\");\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ \"9c6c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = __webpack_require__(\"2b4c\")('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(\"32e9\")(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n\n/***/ \"9def\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(\"4588\");\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"9e1e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(\"79e5\")(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"a352\":\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_a352__;\n\n/***/ }),\n\n/***/ \"a481\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar anObject = __webpack_require__(\"cb7c\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar toLength = __webpack_require__(\"9def\");\nvar toInteger = __webpack_require__(\"4588\");\nvar advanceStringIndex = __webpack_require__(\"0390\");\nvar regExpExec = __webpack_require__(\"5f1b\");\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\n__webpack_require__(\"214f\")('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative($replace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return $replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n\n\n/***/ }),\n\n/***/ \"aae3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.8 IsRegExp(argument)\nvar isObject = __webpack_require__(\"d3f4\");\nvar cof = __webpack_require__(\"2d95\");\nvar MATCH = __webpack_require__(\"2b4c\")('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ \"ac6a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $iterators = __webpack_require__(\"cadf\");\nvar getKeys = __webpack_require__(\"0d58\");\nvar redefine = __webpack_require__(\"2aba\");\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar wks = __webpack_require__(\"2b4c\");\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n\n\n/***/ }),\n\n/***/ \"b0c5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar regexpExec = __webpack_require__(\"520a\");\n__webpack_require__(\"5ca1\")({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n\n\n/***/ }),\n\n/***/ \"be13\":\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"c366\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(\"6821\");\nvar toLength = __webpack_require__(\"9def\");\nvar toAbsoluteIndex = __webpack_require__(\"77f1\");\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n/***/ }),\n\n/***/ \"c649\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return insertNodeAt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return camelize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return console; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return removeNode; });\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"a481\");\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0__);\n\n\nfunction getConsole() {\n if (typeof window !== \"undefined\") {\n return window.console;\n }\n\n return global.console;\n}\n\nvar console = getConsole();\n\nfunction cached(fn) {\n var cache = Object.create(null);\n return function cachedFn(str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\n\nvar regex = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(regex, function (_, c) {\n return c ? c.toUpperCase() : \"\";\n });\n});\n\nfunction removeNode(node) {\n if (node.parentElement !== null) {\n node.parentElement.removeChild(node);\n }\n}\n\nfunction insertNodeAt(fatherNode, node, position) {\n var refNode = position === 0 ? fatherNode.children[0] : fatherNode.children[position - 1].nextSibling;\n fatherNode.insertBefore(node, refNode);\n}\n\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"c8ba\")))\n\n/***/ }),\n\n/***/ \"c69a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(\"9e1e\") && !__webpack_require__(\"79e5\")(function () {\n return Object.defineProperty(__webpack_require__(\"230e\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"c8ba\":\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n\n/***/ \"ca5a\":\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n/***/ }),\n\n/***/ \"cadf\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar addToUnscopables = __webpack_require__(\"9c6c\");\nvar step = __webpack_require__(\"d53b\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar toIObject = __webpack_require__(\"6821\");\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(\"01f9\")(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n\n/***/ \"cb7c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"ce10\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"69a8\");\nvar toIObject = __webpack_require__(\"6821\");\nvar arrayIndexOf = __webpack_require__(\"c366\")(false);\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"d2c8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = __webpack_require__(\"aae3\");\nvar defined = __webpack_require__(\"be13\");\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n\n\n/***/ }),\n\n/***/ \"d3f4\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"d53b\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n\n\n/***/ }),\n\n/***/ \"d8e8\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"e11e\":\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n/***/ }),\n\n/***/ \"f559\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n\nvar $export = __webpack_require__(\"5ca1\");\nvar toLength = __webpack_require__(\"9def\");\nvar context = __webpack_require__(\"d2c8\");\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * __webpack_require__(\"5147\")(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n\n\n/***/ }),\n\n/***/ \"f6fd\":\n/***/ (function(module, exports) {\n\n// document.currentScript polyfill by Adam Miller\n\n// MIT license\n\n(function(document){\n var currentScript = \"currentScript\",\n scripts = document.getElementsByTagName('script'); // Live NodeList collection\n\n // If browser needs currentScript polyfill, add get currentScript() to the document object\n if (!(currentScript in document)) {\n Object.defineProperty(document, currentScript, {\n get: function(){\n\n // IE 6-10 supports script readyState\n // IE 10+ support stack trace\n try { throw new Error(); }\n catch (err) {\n\n // Find the second match for the \"at\" string to get file src url from stack.\n // Specifically works with the format of stack traces in IE.\n var i, res = ((/.*at [^\\(]*\\((.*):.+:.+\\)$/ig).exec(err.stack) || [false])[1];\n\n // For all scripts on the page, if src matches or if ready state is interactive, return the script tag\n for(i in scripts){\n if(scripts[i].src == res || scripts[i].readyState == \"interactive\"){\n return scripts[i];\n }\n }\n\n // If no match, return null\n return null;\n }\n }\n });\n }\n})(document);\n\n\n/***/ }),\n\n/***/ \"f751\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(\"5ca1\");\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(\"7333\") });\n\n\n/***/ }),\n\n/***/ \"fa5b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"5537\")('native-function-to-string', Function.toString);\n\n\n/***/ }),\n\n/***/ \"fab2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar document = __webpack_require__(\"7726\").document;\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n\n/***/ \"fb15\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n if (true) {\n __webpack_require__(\"f6fd\")\n }\n\n var setPublicPath_i\n if ((setPublicPath_i = window.document.currentScript) && (setPublicPath_i = setPublicPath_i.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/))) {\n __webpack_require__.p = setPublicPath_i[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\n/* harmony default export */ var setPublicPath = (null);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.assign.js\nvar es6_object_assign = __webpack_require__(\"f751\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.starts-with.js\nvar es6_string_starts_with = __webpack_require__(\"f559\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom.iterable.js\nvar web_dom_iterable = __webpack_require__(\"ac6a\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.iterator.js\nvar es6_array_iterator = __webpack_require__(\"cadf\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.keys.js\nvar es6_object_keys = __webpack_require__(\"456d\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js\nfunction _nonIterableRest() {\n 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}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js\n\n\n\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es7.array.includes.js\nvar es7_array_includes = __webpack_require__(\"6762\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.includes.js\nvar es6_string_includes = __webpack_require__(\"2fdb\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArray.js\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\n\n\n\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n// EXTERNAL MODULE: external {\"commonjs\":\"sortablejs\",\"commonjs2\":\"sortablejs\",\"amd\":\"sortablejs\",\"root\":\"Sortable\"}\nvar external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_ = __webpack_require__(\"a352\");\nvar external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default = /*#__PURE__*/__webpack_require__.n(external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_);\n\n// EXTERNAL MODULE: ./src/util/helper.js\nvar helper = __webpack_require__(\"c649\");\n\n// CONCATENATED MODULE: ./src/vuedraggable.js\n\n\n\n\n\n\n\n\n\n\n\n\nfunction buildAttribute(object, propName, value) {\n if (value === undefined) {\n return object;\n }\n\n object = object || {};\n object[propName] = value;\n return object;\n}\n\nfunction computeVmIndex(vnodes, element) {\n return vnodes.map(function (elt) {\n return elt.elm;\n }).indexOf(element);\n}\n\nfunction _computeIndexes(slots, children, isTransition, footerOffset) {\n if (!slots) {\n return [];\n }\n\n var elmFromNodes = slots.map(function (elt) {\n return elt.elm;\n });\n var footerIndex = children.length - footerOffset;\n\n var rawIndexes = _toConsumableArray(children).map(function (elt, idx) {\n return idx >= footerIndex ? elmFromNodes.length : elmFromNodes.indexOf(elt);\n });\n\n return isTransition ? rawIndexes.filter(function (ind) {\n return ind !== -1;\n }) : rawIndexes;\n}\n\nfunction emit(evtName, evtData) {\n var _this = this;\n\n this.$nextTick(function () {\n return _this.$emit(evtName.toLowerCase(), evtData);\n });\n}\n\nfunction delegateAndEmit(evtName) {\n var _this2 = this;\n\n return function (evtData) {\n if (_this2.realList !== null) {\n _this2[\"onDrag\" + evtName](evtData);\n }\n\n emit.call(_this2, evtName, evtData);\n };\n}\n\nfunction isTransitionName(name) {\n return [\"transition-group\", \"TransitionGroup\"].includes(name);\n}\n\nfunction vuedraggable_isTransition(slots) {\n if (!slots || slots.length !== 1) {\n return false;\n }\n\n var _slots = _slicedToArray(slots, 1),\n componentOptions = _slots[0].componentOptions;\n\n if (!componentOptions) {\n return false;\n }\n\n return isTransitionName(componentOptions.tag);\n}\n\nfunction getSlot(slot, scopedSlot, key) {\n return slot[key] || (scopedSlot[key] ? scopedSlot[key]() : undefined);\n}\n\nfunction computeChildrenAndOffsets(children, slot, scopedSlot) {\n var headerOffset = 0;\n var footerOffset = 0;\n var header = getSlot(slot, scopedSlot, \"header\");\n\n if (header) {\n headerOffset = header.length;\n children = children ? [].concat(_toConsumableArray(header), _toConsumableArray(children)) : _toConsumableArray(header);\n }\n\n var footer = getSlot(slot, scopedSlot, \"footer\");\n\n if (footer) {\n footerOffset = footer.length;\n children = children ? [].concat(_toConsumableArray(children), _toConsumableArray(footer)) : _toConsumableArray(footer);\n }\n\n return {\n children: children,\n headerOffset: headerOffset,\n footerOffset: footerOffset\n };\n}\n\nfunction getComponentAttributes($attrs, componentData) {\n var attributes = null;\n\n var update = function update(name, value) {\n attributes = buildAttribute(attributes, name, value);\n };\n\n var attrs = Object.keys($attrs).filter(function (key) {\n return key === \"id\" || key.startsWith(\"data-\");\n }).reduce(function (res, key) {\n res[key] = $attrs[key];\n return res;\n }, {});\n update(\"attrs\", attrs);\n\n if (!componentData) {\n return attributes;\n }\n\n var on = componentData.on,\n props = componentData.props,\n componentDataAttrs = componentData.attrs;\n update(\"on\", on);\n update(\"props\", props);\n Object.assign(attributes.attrs, componentDataAttrs);\n return attributes;\n}\n\nvar eventsListened = [\"Start\", \"Add\", \"Remove\", \"Update\", \"End\"];\nvar eventsToEmit = [\"Choose\", \"Unchoose\", \"Sort\", \"Filter\", \"Clone\"];\nvar readonlyProperties = [\"Move\"].concat(eventsListened, eventsToEmit).map(function (evt) {\n return \"on\" + evt;\n});\nvar draggingElement = null;\nvar props = {\n options: Object,\n list: {\n type: Array,\n required: false,\n default: null\n },\n value: {\n type: Array,\n required: false,\n default: null\n },\n noTransitionOnDrag: {\n type: Boolean,\n default: false\n },\n clone: {\n type: Function,\n default: function _default(original) {\n return original;\n }\n },\n element: {\n type: String,\n default: \"div\"\n },\n tag: {\n type: String,\n default: null\n },\n move: {\n type: Function,\n default: null\n },\n componentData: {\n type: Object,\n required: false,\n default: null\n }\n};\nvar draggableComponent = {\n name: \"draggable\",\n inheritAttrs: false,\n props: props,\n data: function data() {\n return {\n transitionMode: false,\n noneFunctionalComponentMode: false\n };\n },\n render: function render(h) {\n var slots = this.$slots.default;\n this.transitionMode = vuedraggable_isTransition(slots);\n\n var _computeChildrenAndOf = computeChildrenAndOffsets(slots, this.$slots, this.$scopedSlots),\n children = _computeChildrenAndOf.children,\n headerOffset = _computeChildrenAndOf.headerOffset,\n footerOffset = _computeChildrenAndOf.footerOffset;\n\n this.headerOffset = headerOffset;\n this.footerOffset = footerOffset;\n var attributes = getComponentAttributes(this.$attrs, this.componentData);\n return h(this.getTag(), attributes, children);\n },\n created: function created() {\n if (this.list !== null && this.value !== null) {\n helper[\"b\" /* console */].error(\"Value and list props are mutually exclusive! Please set one or another.\");\n }\n\n if (this.element !== \"div\") {\n helper[\"b\" /* console */].warn(\"Element props is deprecated please use tag props instead. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#element-props\");\n }\n\n if (this.options !== undefined) {\n helper[\"b\" /* console */].warn(\"Options props is deprecated, add sortable options directly as vue.draggable item, or use v-bind. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#options-props\");\n }\n },\n mounted: function mounted() {\n var _this3 = this;\n\n this.noneFunctionalComponentMode = this.getTag().toLowerCase() !== this.$el.nodeName.toLowerCase() && !this.getIsFunctional();\n\n if (this.noneFunctionalComponentMode && this.transitionMode) {\n throw new Error(\"Transition-group inside component is not supported. Please alter tag value or remove transition-group. Current tag value: \".concat(this.getTag()));\n }\n\n var optionsAdded = {};\n eventsListened.forEach(function (elt) {\n optionsAdded[\"on\" + elt] = delegateAndEmit.call(_this3, elt);\n });\n eventsToEmit.forEach(function (elt) {\n optionsAdded[\"on\" + elt] = emit.bind(_this3, elt);\n });\n var attributes = Object.keys(this.$attrs).reduce(function (res, key) {\n res[Object(helper[\"a\" /* camelize */])(key)] = _this3.$attrs[key];\n return res;\n }, {});\n var options = Object.assign({}, this.options, attributes, optionsAdded, {\n onMove: function onMove(evt, originalEvent) {\n return _this3.onDragMove(evt, originalEvent);\n }\n });\n !(\"draggable\" in options) && (options.draggable = \">*\");\n this._sortable = new external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default.a(this.rootContainer, options);\n this.computeIndexes();\n },\n beforeDestroy: function beforeDestroy() {\n if (this._sortable !== undefined) this._sortable.destroy();\n },\n computed: {\n rootContainer: function rootContainer() {\n return this.transitionMode ? this.$el.children[0] : this.$el;\n },\n realList: function realList() {\n return this.list ? this.list : this.value;\n }\n },\n watch: {\n options: {\n handler: function handler(newOptionValue) {\n this.updateOptions(newOptionValue);\n },\n deep: true\n },\n $attrs: {\n handler: function handler(newOptionValue) {\n this.updateOptions(newOptionValue);\n },\n deep: true\n },\n realList: function realList() {\n this.computeIndexes();\n }\n },\n methods: {\n getIsFunctional: function getIsFunctional() {\n var fnOptions = this._vnode.fnOptions;\n return fnOptions && fnOptions.functional;\n },\n getTag: function getTag() {\n return this.tag || this.element;\n },\n updateOptions: function updateOptions(newOptionValue) {\n for (var property in newOptionValue) {\n var value = Object(helper[\"a\" /* camelize */])(property);\n\n if (readonlyProperties.indexOf(value) === -1) {\n this._sortable.option(value, newOptionValue[property]);\n }\n }\n },\n getChildrenNodes: function getChildrenNodes() {\n if (this.noneFunctionalComponentMode) {\n return this.$children[0].$slots.default;\n }\n\n var rawNodes = this.$slots.default;\n return this.transitionMode ? rawNodes[0].child.$slots.default : rawNodes;\n },\n computeIndexes: function computeIndexes() {\n var _this4 = this;\n\n this.$nextTick(function () {\n _this4.visibleIndexes = _computeIndexes(_this4.getChildrenNodes(), _this4.rootContainer.children, _this4.transitionMode, _this4.footerOffset);\n });\n },\n getUnderlyingVm: function getUnderlyingVm(htmlElt) {\n var index = computeVmIndex(this.getChildrenNodes() || [], htmlElt);\n\n if (index === -1) {\n //Edge case during move callback: related element might be\n //an element different from collection\n return null;\n }\n\n var element = this.realList[index];\n return {\n index: index,\n element: element\n };\n },\n getUnderlyingPotencialDraggableComponent: function getUnderlyingPotencialDraggableComponent(_ref) {\n var vue = _ref.__vue__;\n\n if (!vue || !vue.$options || !isTransitionName(vue.$options._componentTag)) {\n if (!(\"realList\" in vue) && vue.$children.length === 1 && \"realList\" in vue.$children[0]) return vue.$children[0];\n return vue;\n }\n\n return vue.$parent;\n },\n emitChanges: function emitChanges(evt) {\n var _this5 = this;\n\n this.$nextTick(function () {\n _this5.$emit(\"change\", evt);\n });\n },\n alterList: function alterList(onList) {\n if (this.list) {\n onList(this.list);\n return;\n }\n\n var newList = _toConsumableArray(this.value);\n\n onList(newList);\n this.$emit(\"input\", newList);\n },\n spliceList: function spliceList() {\n var _arguments = arguments;\n\n var spliceList = function spliceList(list) {\n return list.splice.apply(list, _toConsumableArray(_arguments));\n };\n\n this.alterList(spliceList);\n },\n updatePosition: function updatePosition(oldIndex, newIndex) {\n var updatePosition = function updatePosition(list) {\n return list.splice(newIndex, 0, list.splice(oldIndex, 1)[0]);\n };\n\n this.alterList(updatePosition);\n },\n getRelatedContextFromMoveEvent: function getRelatedContextFromMoveEvent(_ref2) {\n var to = _ref2.to,\n related = _ref2.related;\n var component = this.getUnderlyingPotencialDraggableComponent(to);\n\n if (!component) {\n return {\n component: component\n };\n }\n\n var list = component.realList;\n var context = {\n list: list,\n component: component\n };\n\n if (to !== related && list && component.getUnderlyingVm) {\n var destination = component.getUnderlyingVm(related);\n\n if (destination) {\n return Object.assign(destination, context);\n }\n }\n\n return context;\n },\n getVmIndex: function getVmIndex(domIndex) {\n var indexes = this.visibleIndexes;\n var numberIndexes = indexes.length;\n return domIndex > numberIndexes - 1 ? numberIndexes : indexes[domIndex];\n },\n getComponent: function getComponent() {\n return this.$slots.default[0].componentInstance;\n },\n resetTransitionData: function resetTransitionData(index) {\n if (!this.noTransitionOnDrag || !this.transitionMode) {\n return;\n }\n\n var nodes = this.getChildrenNodes();\n nodes[index].data = null;\n var transitionContainer = this.getComponent();\n transitionContainer.children = [];\n transitionContainer.kept = undefined;\n },\n onDragStart: function onDragStart(evt) {\n this.context = this.getUnderlyingVm(evt.item);\n evt.item._underlying_vm_ = this.clone(this.context.element);\n draggingElement = evt.item;\n },\n onDragAdd: function onDragAdd(evt) {\n var element = evt.item._underlying_vm_;\n\n if (element === undefined) {\n return;\n }\n\n Object(helper[\"d\" /* removeNode */])(evt.item);\n var newIndex = this.getVmIndex(evt.newIndex);\n this.spliceList(newIndex, 0, element);\n this.computeIndexes();\n var added = {\n element: element,\n newIndex: newIndex\n };\n this.emitChanges({\n added: added\n });\n },\n onDragRemove: function onDragRemove(evt) {\n Object(helper[\"c\" /* insertNodeAt */])(this.rootContainer, evt.item, evt.oldIndex);\n\n if (evt.pullMode === \"clone\") {\n Object(helper[\"d\" /* removeNode */])(evt.clone);\n return;\n }\n\n var oldIndex = this.context.index;\n this.spliceList(oldIndex, 1);\n var removed = {\n element: this.context.element,\n oldIndex: oldIndex\n };\n this.resetTransitionData(oldIndex);\n this.emitChanges({\n removed: removed\n });\n },\n onDragUpdate: function onDragUpdate(evt) {\n Object(helper[\"d\" /* removeNode */])(evt.item);\n Object(helper[\"c\" /* insertNodeAt */])(evt.from, evt.item, evt.oldIndex);\n var oldIndex = this.context.index;\n var newIndex = this.getVmIndex(evt.newIndex);\n this.updatePosition(oldIndex, newIndex);\n var moved = {\n element: this.context.element,\n oldIndex: oldIndex,\n newIndex: newIndex\n };\n this.emitChanges({\n moved: moved\n });\n },\n updateProperty: function updateProperty(evt, propertyName) {\n evt.hasOwnProperty(propertyName) && (evt[propertyName] += this.headerOffset);\n },\n computeFutureIndex: function computeFutureIndex(relatedContext, evt) {\n if (!relatedContext.element) {\n return 0;\n }\n\n var domChildren = _toConsumableArray(evt.to.children).filter(function (el) {\n return el.style[\"display\"] !== \"none\";\n });\n\n var currentDOMIndex = domChildren.indexOf(evt.related);\n var currentIndex = relatedContext.component.getVmIndex(currentDOMIndex);\n var draggedInList = domChildren.indexOf(draggingElement) !== -1;\n return draggedInList || !evt.willInsertAfter ? currentIndex : currentIndex + 1;\n },\n onDragMove: function onDragMove(evt, originalEvent) {\n var onMove = this.move;\n\n if (!onMove || !this.realList) {\n return true;\n }\n\n var relatedContext = this.getRelatedContextFromMoveEvent(evt);\n var draggedContext = this.context;\n var futureIndex = this.computeFutureIndex(relatedContext, evt);\n Object.assign(draggedContext, {\n futureIndex: futureIndex\n });\n var sendEvt = Object.assign({}, evt, {\n relatedContext: relatedContext,\n draggedContext: draggedContext\n });\n return onMove(sendEvt, originalEvent);\n },\n onDragEnd: function onDragEnd() {\n this.computeIndexes();\n draggingElement = null;\n }\n }\n};\n\nif (typeof window !== \"undefined\" && \"Vue\" in window) {\n window.Vue.component(\"draggable\", draggableComponent);\n}\n\n/* harmony default export */ var vuedraggable = (draggableComponent);\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js\n\n\n/* harmony default export */ var entry_lib = __webpack_exports__[\"default\"] = (vuedraggable);\n\n\n\n/***/ })\n\n/******/ })[\"default\"];\n});\n//# sourceMappingURL=vuedraggable.umd.js.map","\n<div class=\"ui-record\">\n <el-popover\n placement=\"bottom-start\"\n trigger=\"click\"\n popper-class=\"ui-search__popover\"\n width=\"600\" \n v-model=\"showPropover\"\n :offset=\"-172\">\n <div class=\"ui-record__list\">\n <div class=\"ui-record__saves\">\n <div class=\"ui-record__item\" \n v-for=\"(item, index) in recordData.saves\"\n :key=\"index\"\n :title=\"item.map(v => `${v.label}:${v.valueLabel || v.value}`).join(';')\"\n @click=\"handleShortcut(item)\">\n <span v-for=\"(v, index) in item\" :key=\"index\">{{v.label}}:{{v.valueLabel || v.value}}</span>\n <el-tooltip class=\"item\" effect=\"dark\" content=\"移除常用筛选\" placement=\"top-start\">\n <i class=\"el-icon-remove ui-flag--icon\" @click.stop=\"handleOperation(index, 'saves')\"></i>\n </el-tooltip>\n </div>\n </div>\n <div class=\"ui-record__temps\">\n <div class=\"ui-record__item\" \n v-for=\"(item, index) in recordData.temps\"\n :key=\"index\"\n :title=\"item.map(v => `${v.label}:${v.valueLabel || v.value}`).join(';')\" \n @click=\"handleShortcut(item)\">\n <span v-for=\"(v, i) in item\" :key=\"i\">{{v.label}}:{{v.valueLabel || v.value}}</span>\n <el-tooltip class=\"item\" effect=\"dark\" content=\"添加到常用筛选\" placement=\"top-start\">\n <i class=\"el-icon-circle-plus ui-flag--icon\" @click.stop=\"handleOperation(index, 'temps')\"></i>\n </el-tooltip>\n </div>\n </div>\n </div>\n <el-button slot=\"reference\" class=\"ui-search__button--more\" type=\"text\">筛选历史 <i class=\"el-icon-caret-right\"></i></el-button>\n </el-popover>\n</div>\n","<template>\r\n <div class=\"ui-record\">\r\n <el-popover\r\n placement=\"bottom-start\"\r\n trigger=\"click\"\r\n popper-class=\"ui-search__popover\"\r\n width=\"600\" \r\n v-model=\"showPropover\"\r\n :offset=\"-172\">\r\n <div class=\"ui-record__list\">\r\n <div class=\"ui-record__saves\">\r\n <div class=\"ui-record__item\" \r\n v-for=\"(item, index) in recordData.saves\"\r\n :key=\"index\"\r\n :title=\"item.map(v => `${v.label}:${v.valueLabel || v.value}`).join(';')\"\r\n @click=\"handleShortcut(item)\">\r\n <span v-for=\"(v, index) in item\" :key=\"index\">{{v.label}}:{{v.valueLabel || v.value}}</span>\r\n <el-tooltip class=\"item\" effect=\"dark\" content=\"移除常用筛选\" placement=\"top-start\">\r\n <i class=\"el-icon-remove ui-flag--icon\" @click.stop=\"handleOperation(index, 'saves')\"></i>\r\n </el-tooltip>\r\n </div>\r\n </div>\r\n <div class=\"ui-record__temps\">\r\n <div class=\"ui-record__item\" \r\n v-for=\"(item, index) in recordData.temps\"\r\n :key=\"index\"\r\n :title=\"item.map(v => `${v.label}:${v.valueLabel || v.value}`).join(';')\" \r\n @click=\"handleShortcut(item)\">\r\n <span v-for=\"(v, i) in item\" :key=\"i\">{{v.label}}:{{v.valueLabel || v.value}}</span>\r\n <el-tooltip class=\"item\" effect=\"dark\" content=\"添加到常用筛选\" placement=\"top-start\">\r\n <i class=\"el-icon-circle-plus ui-flag--icon\" @click.stop=\"handleOperation(index, 'temps')\"></i>\r\n </el-tooltip>\r\n </div>\r\n </div>\r\n </div>\r\n <el-button slot=\"reference\" class=\"ui-search__button--more\" type=\"text\">筛选历史 <i class=\"el-icon-caret-right\"></i></el-button>\r\n </el-popover>\r\n </div>\r\n</template>\r\n<script>\r\nexport default {\r\n props: {\r\n configKey: {\r\n type: String,\r\n default: ''\r\n },\r\n\r\n current: {\r\n type: Array,\r\n default() {\r\n return []\r\n }\r\n }\r\n },\r\n data() {\r\n return {\r\n showPropover: false,\r\n recordData: {\r\n saves: [],\r\n temps: []\r\n }\r\n }\r\n },\r\n created() {\r\n let locData = localStorage.getItem(`SaveRecord_${this.configKey}`);\r\n this.recordData = locData ? JSON.parse(locData) : {\r\n saves: [],\r\n temps: []\r\n }\r\n },\r\n methods: {\r\n handleOperation(index, type) {\r\n if (type == 'temps') {\r\n const addItem = this.recordData.temps[index];\r\n this.recordData.saves.unshift(addItem);\r\n } else {\r\n this.recordData.saves.splice(index, 1);\r\n }\r\n\r\n this.handelSaveRecord();\r\n },\r\n async handleShortcut(item) {\r\n this.$parent.$children.forEach(ref => {\r\n const findItem = item.find(v => v.label == ref.label);\r\n if (findItem) {\r\n ref.modelForm = findItem.value;\r\n } else if (ref.label) {\r\n // ref.modelForm = '';\r\n if (ref.$el.style.display !== 'none') {\r\n if (Array.isArray(ref.modelForm)) ref.modelForm = [];\r\n else if (typeof ref.modelForm == 'number') ref.modelForm = undefined;\r\n else ref.modelForm = '';\r\n }\r\n }\r\n })\r\n\r\n this.showPropover = false;\r\n await this.$nextTick();\r\n this.$parent.handleQuery();\r\n },\r\n\r\n // 保存缓存\r\n handelSaveRecord() {\r\n if (this.recordData.temps.length > 10) {\r\n this.recordData.temps.splice(10);\r\n }\r\n localStorage.setItem(`SaveRecord_${this.configKey}`, JSON.stringify(this.recordData));\r\n }\r\n },\r\n watch: {\r\n current: {\r\n handler(val) {\r\n if (val.length) {\r\n const findIndex = this.recordData.temps.findIndex(item => {\r\n\r\n // 先排序再对比\r\n const sortA = JSON.parse(JSON.stringify(item)).sort((v, nv) => v.label.localeCompare(nv.label));\r\n const sortB = JSON.parse(JSON.stringify(val)).sort((v, nv) => v.label.localeCompare(nv.label));\r\n\r\n return JSON.stringify(sortA) == JSON.stringify(sortB)\r\n });\r\n if (findIndex < 0) {\r\n this.recordData.temps.unshift(val);\r\n this.handelSaveRecord();\r\n }\r\n }\r\n },\r\n deep: true\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n\r\n.ui-record {\r\n align-self: flex-end;\r\n\r\n &__temps, &__saves {\r\n display: flex;\r\n flex-wrap: wrap;\r\n width: 100%;\r\n border: 1px solid #f1f1f1;\r\n border-radius: 4px;\r\n padding: 20px 10px 0 10px;\r\n position: relative;\r\n box-sizing: border-box;\r\n\r\n &::before {\r\n content: '历史筛选';\r\n display: block;\r\n position: absolute;\r\n top: -10px;\r\n left: 10px;\r\n background-color: #FFF;\r\n font-size: 12px;\r\n padding: 0 10px;\r\n color: #999;\r\n }\r\n }\r\n\r\n &__saves {\r\n margin-bottom: 20px;\r\n\r\n &::before {\r\n content: '常用筛选';\r\n }\r\n }\r\n\r\n &__item {\r\n font-size: 12px;\r\n margin-right: 8px;\r\n margin-bottom: 8px;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n border: 1px solid #f1f1f1;\r\n padding: 5px;\r\n background: #fefefe;\r\n border-radius: 4px;\r\n color: #666;\r\n align-self: flex-end;\r\n cursor: pointer;\r\n position: relative;\r\n\r\n span {\r\n background-color: #f1f1f1;\r\n padding: 2px 4px;\r\n margin-left: 5px;\r\n border-radius: 4px;\r\n\r\n &:first-child {\r\n margin-left: 0;\r\n }\r\n }\r\n\r\n &:hover {\r\n border-color: #b2d8ff;\r\n \r\n span {\r\n background-color: #b2d8ff;\r\n color: #FFF;\r\n }\r\n\r\n .ui-flag--icon {\r\n display: block;\r\n }\r\n }\r\n\r\n .ui-flag--icon {\r\n position: absolute;\r\n right: 5px;\r\n top: 50%;\r\n margin-top: -8px;\r\n font-size: 16px;\r\n color: #409EFF;\r\n display: none;\r\n background-color: #FFF;\r\n height: 18px;\r\n line-height: 18px;\r\n width: 18px;\r\n border-radius: 50%;\r\n text-align: center;\r\n box-shadow: 0 0 4px 1px #409EFF;\r\n }\r\n }\r\n}\r\n\r\n.ui-search__button {\r\n &--more {\r\n padding: 0 0 4px 0;\r\n vertical-align: bottom;\r\n border-bottom: 1px solid #409EFF !important;\r\n border-radius: 0;\r\n margin-right: 10px;\r\n align-self: flex-end;\r\n margin-bottom: 2px;\r\n }\r\n}\r\n</style>","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)\n * are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,\n * as-is, to `callback` when the throttled-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds\n * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed\n * one final time after the last throttled-function call. (After the throttled-function has not been called for\n * `delay` milliseconds, the internal counter is reset).\n * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback\n * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that\n * callback will never executed if both noLeading = true and noTrailing = true.\n * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is\n * false (at end), schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nfunction throttle (delay, callback, options) {\n var _ref = options || {},\n _ref$noTrailing = _ref.noTrailing,\n noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,\n _ref$noLeading = _ref.noLeading,\n noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,\n _ref$debounceMode = _ref.debounceMode,\n debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n\n\n var timeoutID;\n var cancelled = false; // Keep track of the last time `callback` was executed.\n\n var lastExec = 0; // Function to clear existing timeout\n\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n } // Function to cancel next exec\n\n\n function cancel(options) {\n var _ref2 = options || {},\n _ref2$upcomingOnly = _ref2.upcomingOnly,\n upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;\n\n clearExistingTimeout();\n cancelled = !upcomingOnly;\n }\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n\n\n function wrapper() {\n for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n arguments_[_key] = arguments[_key];\n }\n\n var self = this;\n var elapsed = Date.now() - lastExec;\n\n if (cancelled) {\n return;\n } // Execute `callback` and update the `lastExec` timestamp.\n\n\n function exec() {\n lastExec = Date.now();\n callback.apply(self, arguments_);\n }\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n\n\n function clear() {\n timeoutID = undefined;\n }\n\n if (!noLeading && debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`\n * and noLeading != true.\n */\n exec();\n }\n\n clearExistingTimeout();\n\n if (debounceMode === undefined && elapsed > delay) {\n if (noLeading) {\n /*\n * In throttle mode with noLeading, if `delay` time has\n * been exceeded, update `lastExec` and schedule `callback`\n * to execute after `delay` ms.\n */\n lastExec = Date.now();\n\n if (!noTrailing) {\n timeoutID = setTimeout(debounceMode ? clear : exec, delay);\n }\n } else {\n /*\n * In throttle mode without noLeading, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n }\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n\n wrapper.cancel = cancel; // Return the wrapper function.\n\n return wrapper;\n}\n\n/* eslint-disable no-undefined */\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n *\n * @returns {Function} A new, debounced function.\n */\n\nfunction debounce (delay, callback, options) {\n var _ref = options || {},\n _ref$atBegin = _ref.atBegin,\n atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;\n\n return throttle(delay, callback, {\n debounceMode: atBegin !== false\n });\n}\n\nexport { debounce, throttle };\n//# sourceMappingURL=index.js.map\n","\n<div class=\"ui-search\" ref=\"Search\" v-loading=\"loadSearch\">\n <div class=\"ui-search__main\">\n <slot v-if=\"!useConfig\"></slot>\n <div v-else v-show=\"false\"><slot></slot></div>\n <template v-if=\"!loadSearch && useConfig\">\n <DefaultItem v-for=\"(vnode, index) in childItems\" :key=\"index\" :vnode=\"vnode\"></DefaultItem>\n </template>\n </div>\n <div class=\"ui-search__footer\">\n <el-button size=\"small\" icon=\"el-icon-refresh\" @click=\"handleReset\">重置</el-button>\n <el-button style=\"margin-right: 10px;\" size=\"small\" icon=\"el-icon-search\" type=\"primary\" @click=\"handleQuery\">查询</el-button>\n <div style=\"align-self: flex-end;\">\n <el-popover\n placement=\"bottom-start\"\n trigger=\"click\"\n popper-class=\"ui-search__popover\"\n v-if=\"showMore\"\n :offset=\"-172\"\n :width=\"containerWidth\">\n <div class=\"ui-more__select\">\n <el-row>\n <el-col v-for=\"(vnode, index) in hideItems\" :key=\"index\" v-bind=\"{sm: 6, lg: 4, ...vnode.$attrs, ...vnode.$options.propsData }\">\n <template v-if=\"!loadSearch && useConfig\">\n <DefaultItem :vnode=\"vnode\"></DefaultItem>\n </template>\n <template v-else-if=\"!loadSearch\">\n <DefaultItem :vnode=\"vnode\"></DefaultItem>\n </template>\n </el-col>\n </el-row>\n </div>\n <el-button slot=\"reference\" class=\"ui-search__button--more\" type=\"text\">更多筛选 <i class=\"el-icon-caret-right\"></i></el-button>\n </el-popover>\n </div>\n <el-button v-if=\"useConfig\" @click=\"handleShowConfig\" class=\"ui-search__button--more\" type=\"text\">筛选配置 <i class=\"el-icon-setting\"></i></el-button>\n <Record :config-key=\"configKey\" :current=\"searchLoc\" />\n <slot name=\"footer\"></slot>\n <div class=\"ui-search__cache\" v-show=\"searchLoc.length\" :title=\"searchLoc.map(v => `${v.label}:${v.valueLabel || v.value}`).join(';')\">\n <span v-for=\"(item, index) in searchLoc\" :key=\"index\">{{item.label}}:{{item.valueLabel || item.value}}</span>\n </div>\n </div>\n <el-drawer\n title=\"筛选配置\"\n direction=\"btt\"\n size=\"100%\"\n :withHeader=\"false\"\n :modal=\"false\"\n :modal-append-to-body=\"false\"\n :visible.sync=\"showConfig\">\n <div class=\"ui-search--sort\">\n <div class=\"ui-sort__content\">\n <el-checkbox-group v-model=\"checkItems\" size=\"mini\">\n <draggable class=\"ui-draggable\" v-model=\"sortItems\"\n animation=\"100\" chosenClass=\"ui-dragmove\">\n <el-checkbox border :label=\"item\" v-for=\"(item, index) in sortItems\" :key=\"index\"></el-checkbox>\n </draggable>\n </el-checkbox-group>\n </div>\n <div class=\"ui-sort__footer\">\n <el-button type=\"primary\" size=\"mini\" @click=\"handleRenderConfig\">确认</el-button>\n <el-button size=\"mini\" @click=\"showConfig = !showConfig\">取消</el-button>\n </div>\n </div>\n </el-drawer>\n</div>\n","<template>\r\n <div class=\"ui-search\" ref=\"Search\" v-loading=\"loadSearch\">\r\n <div class=\"ui-search__main\">\r\n <slot v-if=\"!useConfig\"></slot>\r\n <div v-else v-show=\"false\"><slot></slot></div>\r\n <template v-if=\"!loadSearch && useConfig\">\r\n <DefaultItem v-for=\"(vnode, index) in childItems\" :key=\"index\" :vnode=\"vnode\"></DefaultItem>\r\n </template>\r\n </div>\r\n <div class=\"ui-search__footer\">\r\n <el-button size=\"small\" icon=\"el-icon-refresh\" @click=\"handleReset\">重置</el-button>\r\n <el-button style=\"margin-right: 10px;\" size=\"small\" icon=\"el-icon-search\" type=\"primary\" @click=\"handleQuery\">查询</el-button>\r\n <div style=\"align-self: flex-end;\">\r\n <el-popover\r\n placement=\"bottom-start\"\r\n trigger=\"click\"\r\n popper-class=\"ui-search__popover\"\r\n v-if=\"showMore\"\r\n :offset=\"-172\"\r\n :width=\"containerWidth\">\r\n <div class=\"ui-more__select\">\r\n <el-row>\r\n <el-col v-for=\"(vnode, index) in hideItems\" :key=\"index\" v-bind=\"{sm: 6, lg: 4, ...vnode.$attrs, ...vnode.$options.propsData }\">\r\n <template v-if=\"!loadSearch && useConfig\">\r\n <DefaultItem :vnode=\"vnode\"></DefaultItem>\r\n </template>\r\n <template v-else-if=\"!loadSearch\">\r\n <DefaultItem :vnode=\"vnode\"></DefaultItem>\r\n </template>\r\n </el-col>\r\n </el-row>\r\n </div>\r\n <el-button slot=\"reference\" class=\"ui-search__button--more\" type=\"text\">更多筛选 <i class=\"el-icon-caret-right\"></i></el-button>\r\n </el-popover>\r\n </div>\r\n <el-button v-if=\"useConfig\" @click=\"handleShowConfig\" class=\"ui-search__button--more\" type=\"text\">筛选配置 <i class=\"el-icon-setting\"></i></el-button>\r\n <Record :config-key=\"configKey\" :current=\"searchLoc\" />\r\n <slot name=\"footer\"></slot>\r\n <div class=\"ui-search__cache\" v-show=\"searchLoc.length\" :title=\"searchLoc.map(v => `${v.label}:${v.valueLabel || v.value}`).join(';')\">\r\n <span v-for=\"(item, index) in searchLoc\" :key=\"index\">{{item.label}}:{{item.valueLabel || item.value}}</span>\r\n </div>\r\n </div>\r\n <el-drawer\r\n title=\"筛选配置\"\r\n direction=\"btt\"\r\n size=\"100%\"\r\n :withHeader=\"false\"\r\n :modal=\"false\"\r\n :modal-append-to-body=\"false\"\r\n :visible.sync=\"showConfig\">\r\n <div class=\"ui-search--sort\">\r\n <div class=\"ui-sort__content\">\r\n <el-checkbox-group v-model=\"checkItems\" size=\"mini\">\r\n <draggable class=\"ui-draggable\" v-model=\"sortItems\"\r\n animation=\"100\" chosenClass=\"ui-dragmove\">\r\n <el-checkbox border :label=\"item\" v-for=\"(item, index) in sortItems\" :key=\"index\"></el-checkbox>\r\n </draggable>\r\n </el-checkbox-group>\r\n </div>\r\n <div class=\"ui-sort__footer\">\r\n <el-button type=\"primary\" size=\"mini\" @click=\"handleRenderConfig\">确认</el-button>\r\n <el-button size=\"mini\" @click=\"showConfig = !showConfig\">取消</el-button>\r\n </div>\r\n </div>\r\n </el-drawer>\r\n </div>\r\n</template>\r\n<script>\r\nimport draggable from 'vuedraggable';\r\nimport Record from './Record.vue';\r\nimport DefaultItem from './DefaultItem.vue';\r\nimport { debounce } from 'throttle-debounce';\r\nexport default {\r\n name: 'ComSearch',\r\n components: {\r\n draggable,\r\n Record,\r\n DefaultItem\r\n },\r\n props: {\r\n searchCfg: {\r\n type: Array,\r\n default() {\r\n return []\r\n }\r\n },\r\n \r\n // flagId 为空则取路由\r\n flagId: {\r\n type: String,\r\n default: ''\r\n },\r\n\r\n useConfig: {\r\n type: Boolean,\r\n default: true\r\n }\r\n },\r\n data() {\r\n return {\r\n containerWidth: '200px',\r\n hideItems: [],\r\n\r\n // 默认的搜索条件\r\n defaultVNode: [],\r\n defaultItems: [],\r\n showConfig: false,\r\n checkItems: [],\r\n sortItems: [],\r\n\r\n loadSearch: false,\r\n\r\n // 搜索缓存\r\n searchLoc: [],\r\n\r\n // 搜索items\r\n childItems: [],\r\n\r\n // 初始化\r\n initLoad: false,\r\n\r\n configKey: this.flagId || this.$route.path,\r\n\r\n handleWindowResize: null,\r\n\r\n\r\n waitTimeout: ''\r\n }\r\n },\r\n computed: {\r\n showMore() {\r\n return !!this.hideItems.length;\r\n }\r\n },\r\n methods: {\r\n handleQuery() {\r\n\r\n const empty = (value, type) => {\r\n if (value) {\r\n if (value instanceof Date) return false;\r\n\r\n if (Array.isArray(value) && type == 'inputrange') {\r\n return !value[0] && !value[1];\r\n } else {\r\n return value instanceof Object ? !Object.entries(value).length : false\r\n }\r\n } else if (typeof value === 'boolean') {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n this.searchLoc = this.$children.reduce((temp, item) => {\r\n if (item.label && !empty(item.modelForm, item.type)) {\r\n\r\n let valueLabel;\r\n if (item.options && Object.entries(item.options).length > 0) {\r\n if (Array.isArray(item.modelForm)) {\r\n valueLabel = item.modelForm.map(iv => item.selectOption.find(v => v.value == iv)?.label || iv)\r\n } else {\r\n valueLabel = item.selectOption.find(v => v.value == item.modelForm)?.label || item.modelForm\r\n }\r\n }\r\n\r\n return [\r\n ...temp,\r\n {\r\n label: item.label,\r\n value: item.modelForm,\r\n valueLabel\r\n }\r\n ]\r\n } else {\r\n return temp;\r\n }\r\n }, []);\r\n\r\n const queryFn = this.$parent.handleQuery;\r\n if (queryFn) {\r\n queryFn();\r\n } else {\r\n this.$emit('query');\r\n }\r\n },\r\n handleReset() {\r\n const resetFn = this.$parent.handleReset;\r\n if (resetFn) {\r\n resetFn();\r\n } else {\r\n this.$emit('reset');\r\n }\r\n },\r\n\r\n waitRenderItem() {\r\n return new Promise((resolve) => {\r\n clearTimeout(this.waitTimeout);\r\n const itemEls = this.$refs.Search.querySelectorAll('.ui-form__item');\r\n for (let i = 0; i < itemEls.length; i++) {\r\n const el = itemEls[i];\r\n if (el.getBoundingClientRect().right > 0) {\r\n return resolve(true);\r\n }\r\n }\r\n \r\n this.waitTimeout = setTimeout(async () => {\r\n resolve(await this.waitRenderItem());\r\n }, 100)\r\n })\r\n },\r\n\r\n async handleLayoutItem(renderEle = false) {\r\n \r\n await this.waitRenderItem();\r\n\r\n const containerEl = this.$refs.Search;\r\n const itemEls = containerEl.querySelectorAll('.ui-form__item');\r\n \r\n // 重置item 状态\r\n itemEls.forEach(ele => ele.className = ele.className.replace('ui-form__item--hide', ''))\r\n\r\n const { right: containerRight } = containerEl.getBoundingClientRect();\r\n this.containerWidth = containerEl.offsetWidth - 80;\r\n\r\n if (this.useConfig) {\r\n itemEls.forEach(ele => {\r\n try {\r\n const eleFlagLabel = ele.__vue__.label || ele.__vue__.$children[0].label;\r\n if (!this.checkItems.includes(eleFlagLabel)) {\r\n ele.style.display = 'none';\r\n } else {\r\n ele.style.display = 'block';\r\n }\r\n } catch(e) {\r\n console.log(ele.__vue__, ele);\r\n }\r\n }) \r\n }\r\n\r\n const hideEls = [];\r\n itemEls.forEach(ele => {\r\n const { right: itemRight } = ele.getBoundingClientRect();\r\n if (itemRight > containerRight) {\r\n ele.className = `${ele.className} ui-form__item--hide`;\r\n hideEls.push(ele);\r\n }\r\n })\r\n if (renderEle === true) return;\r\n\r\n if (this.useConfig) {\r\n this.hideItems = hideEls.map(item => {\r\n return this.childItems.find((v, i) => {\r\n const options = item.__vue__.vnode ? item.__vue__.vnode.$options : item.__vue__.$options;\r\n return v.$options.propsData.label == options.propsData.label;\r\n })\r\n }).filter(item => !!item);\r\n } else {\r\n this.hideItems = this.$children.filter(item => item.$el.className.indexOf('ui-form__item--hide') > -1);\r\n }\r\n this.loadSearch = false;\r\n },\r\n changeOptions(item) {\r\n this.$parent.changeOptions(item);\r\n },\r\n\r\n // 显示配置\r\n handleShowConfig() {\r\n this.showConfig = true;\r\n },\r\n\r\n // 渲染配置\r\n async handleRenderConfig() {\r\n\r\n // 配置存至缓存\r\n const saveConfig = {\r\n checkItems: this.checkItems,\r\n sortItems: this.sortItems\r\n }\r\n localStorage.setItem(`SearchCfg__${this.configKey}`, JSON.stringify(saveConfig));\r\n\r\n const sortItems = this.sortItems.map(item => {\r\n const findItem = this.childItems.find(v => v.$options.propsData.label == item);\r\n return findItem;\r\n })\r\n\r\n this.childItems = sortItems;\r\n\r\n await this.$nextTick();\r\n\r\n this.showConfig = false;\r\n this.handleLayoutItem();\r\n }\r\n },\r\n async mounted() {\r\n\r\n this.childItems = this.$slots.default.map(vnode => {\r\n return {\r\n componentOptions: vnode.componentOptions,\r\n $attrs: vnode.componentInstance.$attrs,\r\n constructor: vnode.componentInstance.constructor,\r\n $listeners: vnode.componentInstance.$listeners,\r\n $options: vnode.componentInstance.$options,\r\n $scopedSlots: vnode.componentInstance.$scopedSlots,\r\n $slots: vnode.componentInstance.$slots,\r\n staticStyle: vnode.data.staticStyle\r\n }\r\n });\r\n\r\n this.initLoad = true;\r\n await this.$nextTick();\r\n\r\n if (this.useConfig) {\r\n \r\n this.checkItems = this.childItems.map(item => item.$options.propsData.label);\r\n this.sortItems = this.childItems.map(item => item.$options.propsData.label);\r\n this.handleLayoutItem();\r\n\r\n \r\n // 读取缓存配置\r\n const locConfig = JSON.parse(localStorage.getItem(`SearchCfg__${this.configKey}`) || \"{}\");\r\n if (locConfig.checkItems) {\r\n await this.$nextTick();\r\n this.checkItems = locConfig.checkItems;\r\n this.sortItems = locConfig.sortItems;\r\n this.handleRenderConfig();\r\n }\r\n } else {\r\n this.loadSearch = false;\r\n this.handleLayoutItem();\r\n }\r\n\r\n this.handleWindowResize = debounce(100, this.handleLayoutItem);\r\n\r\n window.addEventListener('resize', this.handleWindowResize);\r\n },\r\n activated() {\r\n\t\tthis.handleLayoutItem();\r\n\t},\r\n beforeDestroy() {\r\n window.removeEventListener('resize', this.handleWindowResize);\r\n },\r\n watch: {\r\n childItems() {\r\n this.loadSearch = true;\r\n this.$nextTick().then(() => {\r\n this.loadSearch = false;\r\n })\r\n },\r\n hideItems(val, oldVal) {\r\n\r\n if (oldVal.length == val.length && oldVal.length == 0) return;\r\n\r\n this.loadSearch = true;\r\n this.$nextTick().then(async () => {\r\n this.loadSearch = false;\r\n\r\n await this.$nextTick();\r\n this.handleLayoutItem(true);\r\n })\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n .ui-search {\r\n height: 138px;\r\n box-sizing: border-box;\r\n margin: 10px 10px 0 10px;\r\n padding: 20px;\r\n // box-shadow: 0 0 5px 2px #e7e7e7;\r\n background-color: #FFF;\r\n border: 1px solid @color-border;\r\n border-radius: 4px;\r\n box-shadow: 0 0 4px 2px #eee;\r\n position: relative;\r\n\r\n /deep/ .el-drawer__wrapper {\r\n position: absolute;\r\n }\r\n\r\n &__main {\r\n display: flex;\r\n }\r\n\r\n &__footer {\r\n display: flex;\r\n margin-top: 10px;\r\n align-items: center;\r\n }\r\n\r\n &__cache {\r\n font-size: 12px;\r\n // margin-left: auto;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n border: 1px solid #f1f1f1;\r\n padding: 5px;\r\n background: #fefefe;\r\n border-radius: 4px;\r\n color: #666;\r\n align-self: flex-end;\r\n cursor: pointer;\r\n\r\n span {\r\n background-color: #f1f1f1;\r\n padding: 2px 4px;\r\n margin-left: 5px;\r\n border-radius: 4px;\r\n\r\n &:first-child {\r\n margin-left: 0;\r\n }\r\n }\r\n }\r\n\r\n .ui-search__button {\r\n\r\n &--more {\r\n padding: 0 0 4px 0;\r\n vertical-align: bottom;\r\n border-bottom: 1px solid #409EFF;\r\n border-radius: 0;\r\n margin-right: 10px;\r\n align-self: flex-end;\r\n margin-bottom: 2px;\r\n }\r\n }\r\n\r\n /deep/ .ui-form__item {\r\n display: block;\r\n min-width: 150px;\r\n\r\n &--inputrange {\r\n min-width: 160px;\r\n }\r\n\r\n &--hide {\r\n display: none !important;\r\n }\r\n\r\n &--daterange {\r\n min-width: 200px;\r\n }\r\n }\r\n\r\n /deep/ .ui-item__label {\r\n width: unset;\r\n text-align: left;\r\n margin-bottom: 5px;\r\n }\r\n\r\n /deep/ .el-cascader .el-input {\r\n display: flex;\r\n }\r\n\r\n /deep/ .ui-input__range {\r\n max-width: unset;\r\n }\r\n\r\n &--sort {\r\n padding: 10px;\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n }\r\n\r\n .ui-sort__content {\r\n\r\n flex: 1;\r\n margin-bottom: 10px;\r\n border-bottom: 1px solid #f1f1f1;\r\n\r\n .el-checkbox {\r\n margin-right: 10px;\r\n margin-left: 0 !important;\r\n margin-bottom: 10px;\r\n }\r\n }\r\n\r\n .ui-sort__footer {\r\n // margin-top: auto;\r\n }\r\n }\r\n\r\n .ui-more__select {\r\n \r\n .el-col {\r\n margin-bottom: 10px;\r\n }\r\n\r\n /deep/ .ui-input__range {\r\n max-width: unset;\r\n }\r\n\r\n /deep/ .el-cascader .el-input {\r\n display: flex;\r\n }\r\n }\r\n\r\n .ui-dragmove {\r\n background-color: #FFF;\r\n }\r\n</style>","import Vue from 'vue';\r\nimport ComComponent from './src/index.vue';\r\n\r\ntype SFCWithInstall<T> = T & { install(app: typeof Vue): void }; // vue 安装\r\n\r\n// 安装\r\nComComponent.install = (app: typeof Vue) => {\r\n app.component(ComComponent.name, ComComponent);\r\n};\r\nconst InComComponent: SFCWithInstall<typeof ComComponent> = ComComponent; // 增加类型\r\nexport default InComComponent;","\r\n/**\r\n * 计算表格高度\r\n * staticNum { number } \r\n * @param isTable { boolean } 是否计算列表页表格\r\n * */\r\n export function countTableHeight(staticNum = 0, isTable = true, staticClass:any = null) {\r\n\r\n const pageCountEls:any = staticClass ? staticClass.map(str => document.querySelector(str)) : document.querySelectorAll('.ui-page__main:not(.v-leave) > div');\r\n const pageOtherEles:any = [];\r\n if (isTable) {\r\n const paginationEl:any = document.querySelector('.ui-pagination');\r\n const headerEl:any = document.querySelector('.ui-container__header');\r\n const tabsEl:any = headerEl?.querySelector('.ui-tabs') ? null : document.querySelector('.ui-tabs');\r\n const tableTab:any = document.querySelector('.ui-table__tab');\r\n\r\n pageOtherEles.push(...[\r\n paginationEl?.offsetHeight || 0,\r\n headerEl?.offsetHeight || 0,\r\n tabsEl?.offsetHeight || 0,\r\n tableTab?.offsetHeight || 0\r\n ].filter(item => !!item));\r\n }\r\n\r\n let tableHeight = staticNum + pageOtherEles.reduce((sum, num) => sum + num, 0);\r\n \r\n let userAgent = navigator.userAgent;\r\n for (let i = 0; i < pageCountEls.length; i++) {\r\n\r\n // 获取容器元素\r\n let ele = pageCountEls[i];\r\n if (!ele || ele.className.indexOf('ui-table') > -1) continue;\r\n tableHeight += ele.offsetHeight;\r\n\r\n let eleMargin, eleTBMargin;\r\n let eleCss:any = document?.defaultView?.getComputedStyle(ele);\r\n if (userAgent.indexOf('Firefox') > -1) {\r\n eleTBMargin = parseInt(eleCss['margin-top']) + parseInt(eleCss['margin-bottom']);\r\n } else if (userAgent.indexOf('compatible') > -1 && userAgent.indexOf(\"MSIE\") > -1 && !(userAgent.indexOf(\"Opera\") > -1)) {\r\n let ieCss = ele.currentStyle;\r\n eleTBMargin = parseInt(ieCss['marginTop']) + parseInt(ieCss['marginBottom']);\r\n } else {\r\n eleMargin = eleCss.margin.split(' ');\r\n\r\n if (eleMargin.length == 1) {\r\n eleTBMargin = parseInt(eleMargin[0]) * 2;\r\n } else {\r\n const [mt, mr, mb, ml] = eleMargin;\r\n eleTBMargin = parseInt(mb) ? parseInt(mt) + parseInt(mb) : parseInt(mt);\r\n }\r\n }\r\n\r\n tableHeight = eleTBMargin + tableHeight;\r\n }\r\n tableHeight = window.innerHeight - tableHeight;\r\n return tableHeight;\r\n }\r\n \r\n // 表格INX\r\n export function autoAddTableInx(inx) {\r\n let i = parseInt(inx) + 1 + '';\r\n let first = '0';\r\n return first.repeat(4 - i.length) + i\r\n }\r\n\r\n ","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","export default {}","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '&quot;');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n var valuesArray = split.call(String(obj), ',');\n var valuesJoined = '';\n for (var i = 0; i < valuesArray.length; ++i) {\n valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));\n }\n return [formatter(keyValue) + (commaRoundTrip && isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined];\n }\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('&#10003;'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","import qs from 'qs';\r\nconst separator = '@';\r\nexport const isPresetProp = (prop, separator) => {\r\n\tif (!separator) return false;\r\n\tlet propArr = prop?.split(separator);\r\n\treturn propArr?.length > 1;\r\n};\r\nexport const processPresetProp = (prop, separator) => {\r\n\tif (!isPresetProp(prop, separator)) return {};\r\n\tconst propArr = prop.split(separator);\r\n\tconst [field, typeArr] = propArr;\r\n\tconst [type, params_] = typeArr.split('?');\r\n\r\n\tlet params = params_ ? qs.parse(params_) : {};\r\n\treturn {\r\n\t\tfield,\r\n\t\ttype,\r\n\t\tparams,\r\n\t};\r\n};\r\nexport const presetPropMap = {\r\n\timage(row, { field, params }) {\r\n\t\tconst src = row[field].split('|');\r\n\t\tconst size = params.size || 59;\r\n\t\treturn ['com-image', { attrs: { src, size } }];\r\n\t},\r\n\tlink(row, { field, params }) {\r\n\t\tconst text = row[field];\r\n\t\tlet { target, href, type, underline } = params;\r\n\r\n\t\ttarget = target || '_blank';\r\n\t\thref = row[href] || text;\r\n\t\ttype = type || 'primary';\r\n\t\tunderline = !!underline;\r\n\t\treturn [\r\n\t\t\t'el-link',\r\n\t\t\t{\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\thref,\r\n\t\t\t\t\ttype,\r\n\t\t\t\t\tunderline,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\ttext,\r\n\t\t];\r\n\t},\r\n};\r\n","// import Vue from 'vue';\r\nimport { processPresetProp } from './presetConfig';\r\n// Vue.component('table-preset-prop', {\r\n// \tfunctional: true,\r\n// \tprops: {\r\n// \t\ttableProp: {},\r\n// \t\trow: {},\r\n// \t},\r\n// \trender: function (createElement, context) {\r\n// \t\tconst getCurrentComponent = (context) => {\r\n// \t\t\tconst { tableProp, row } = context.props;\r\n// \t\t\tconst { tablePreset } = context.parent.$UICONFIG;\r\n// \t\t\tconst { separator, presetPropMap } = tablePreset;\r\n// \t\t\tconst { field, type, params } = processPresetProp(tableProp, separator);\r\n// \t\t\treturn presetPropMap[type](row, { field, params });\r\n// \t\t};\r\n// \t\treturn createElement(...getCurrentComponent(context));\r\n// \t},\r\n// });\r\n\r\nexport const TablePresetProp = {\r\n\tfunctional: true,\r\n\tprops: {\r\n\t\ttableProp: {},\r\n\t\trow: {},\r\n\t},\r\n\trender: function (createElement, context) {\r\n\t\tconst getCurrentComponent = (context) => {\r\n\t\t\tconst { tableProp, row } = context.props;\r\n\t\t\tconst { tablePreset } = context.parent.$UICONFIG;\r\n\t\t\tconst { separator, presetPropMap } = tablePreset;\r\n\t\t\tconst { field, type, params } = processPresetProp(tableProp, separator);\r\n\t\t\treturn presetPropMap[type](row, { field, params, h: createElement });\r\n\t\t};\r\n\t\treturn createElement(...getCurrentComponent(context));\r\n\t},\r\n};\r\n","\n<div class=\"ui-table_config\">\n <span class=\"el-icon-s-operation\" @click=\"handleShowConfig\"></span>\n <el-drawer\n title=\"列表配置\"\n direction=\"rtl\"\n size=\"188px\"\n :modal-append-to-body=\"false\"\n :visible.sync=\"showConfig\">\n <div class=\"ui-search--sort\">\n <div class=\"ui-sort__content\" :style=\"{ maxHeight: height }\">\n <el-checkbox-group v-model=\"checkItems\" size=\"mini\">\n <draggable class=\"ui-draggable\" v-model=\"sortItems\"\n animation=\"100\" chosenClass=\"ui-dragmove\">\n <el-checkbox border :label=\"item.value\" v-for=\"item in sortItems\" :key=\"item.value\">{{item.label}}</el-checkbox>\n </draggable>\n </el-checkbox-group>\n </div>\n <div class=\"ui-sort__footer\">\n <el-button type=\"primary\" size=\"mini\" @click=\"handleRenderConfig\">确认</el-button>\n <el-button size=\"mini\" @click=\"showConfig = !showConfig\">取消</el-button>\n <el-button size=\"mini\" @click=\"handleReset\">重置</el-button>\n </div>\n </div>\n </el-drawer>\n</div>\n","<template>\r\n <div class=\"ui-table_config\">\r\n <span class=\"el-icon-s-operation\" @click=\"handleShowConfig\"></span>\r\n <el-drawer\r\n title=\"列表配置\"\r\n direction=\"rtl\"\r\n size=\"188px\"\r\n :modal-append-to-body=\"false\"\r\n :visible.sync=\"showConfig\">\r\n <div class=\"ui-search--sort\">\r\n <div class=\"ui-sort__content\" :style=\"{ maxHeight: height }\">\r\n <el-checkbox-group v-model=\"checkItems\" size=\"mini\">\r\n <draggable class=\"ui-draggable\" v-model=\"sortItems\"\r\n animation=\"100\" chosenClass=\"ui-dragmove\">\r\n <el-checkbox border :label=\"item.value\" v-for=\"item in sortItems\" :key=\"item.value\">{{item.label}}</el-checkbox>\r\n </draggable>\r\n </el-checkbox-group>\r\n </div>\r\n <div class=\"ui-sort__footer\">\r\n <el-button type=\"primary\" size=\"mini\" @click=\"handleRenderConfig\">确认</el-button>\r\n <el-button size=\"mini\" @click=\"showConfig = !showConfig\">取消</el-button>\r\n <el-button size=\"mini\" @click=\"handleReset\">重置</el-button>\r\n </div>\r\n </div>\r\n </el-drawer>\r\n </div>\r\n</template>\r\n<script>\r\nimport draggable from 'vuedraggable';\r\nexport default {\r\n components: {\r\n draggable\r\n },\r\n props: {\r\n tableName: {\r\n type: String,\r\n default: ''\r\n },\r\n options: {\r\n type: Object,\r\n default() {\r\n return {}\r\n }\r\n }\r\n },\r\n data() {\r\n return {\r\n showConfig: false,\r\n checkItems: [],\r\n sortItems: [],\r\n defaultOptions: {}\r\n }\r\n },\r\n computed: {\r\n configKey() {\r\n return `TableConfig_${this.tableName || this.$route.path}`;\r\n },\r\n height() {\r\n return `${parseInt(this.$parent.tableHeight) - 30}px`;\r\n },\r\n handleOptions() {\r\n const options = JSON.parse(JSON.stringify(this.options));\r\n if (options.index) {\r\n delete options.index;\r\n }\r\n\r\n if (options.rowLabelInx) {\r\n delete options.rowLabelInx;\r\n }\r\n return options;\r\n }\r\n },\r\n methods: {\r\n\r\n handleInit(render = true) {\r\n let locTableConfig = localStorage.getItem(this.configKey);\r\n locTableConfig = locTableConfig ? JSON.parse(locTableConfig) : null;\r\n\r\n if (locTableConfig) {\r\n this.sortItems = locTableConfig.sortItems;\r\n this.checkItems = locTableConfig.checkItems;\r\n\r\n render && this.handleRenderConfig();\r\n } else {\r\n this.sortItems = Object.entries(this.handleOptions).map(([value, label]) => ({\r\n label, value\r\n }))\r\n\r\n this.checkItems = Object.keys(this.handleOptions);\r\n }\r\n },\r\n\r\n handleShowConfig() {\r\n this.handleInit(false);\r\n this.showConfig = true;\r\n },\r\n\r\n // 渲染配置\r\n handleRenderConfig() {\r\n const rMap = this.sortItems.reduce((t, v) => ({ ...t, ...(this.checkItems.includes(v.value) ? { [v.value]: v.label } : {}) }), {});\r\n this.$emit('change', rMap)\r\n this.showConfig = false;\r\n \r\n localStorage.setItem(this.configKey, JSON.stringify({\r\n sortItems: this.sortItems, checkItems: this.checkItems\r\n }))\r\n },\r\n\r\n // 重置\r\n handleReset() {\r\n this.sortItems = Object.entries(this.defaultOptions).map(([value, label]) => {\r\n return {\r\n label, value\r\n }\r\n })\r\n this.checkItems = Object.keys(this.defaultOptions);\r\n }\r\n },\r\n created() {\r\n this.defaultOptions = JSON.parse(JSON.stringify(this.handleOptions));\r\n this.handleInit();\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n\r\n.ui-table_config {\r\n display: flex;\r\n align-items: center;\r\n // margin-left: auto;\r\n height: 32px;\r\n}\r\n\r\n.el-icon-s-operation {\r\n font-size: 18px;\r\n color: #333;\r\n cursor: pointer;\r\n border-left: 1px solid #dedede;\r\n padding-left: 5px;\r\n\r\n &:hover {\r\n color: #777;\r\n }\r\n}\r\n\r\n/deep/ .el-drawer__wrapper {\r\n position: absolute;\r\n}\r\n\r\n/deep/ .v-modal {\r\n position: absolute;\r\n}\r\n\r\n.ui-draggable {\r\n\r\n padding: 10px;\r\n box-sizing: border-box;\r\n\r\n .el-checkbox {\r\n margin: 0 0 5px 0 !important;\r\n width: 100%;\r\n\r\n &:hover {\r\n border-color: #9ccdff;\r\n }\r\n }\r\n}\r\n\r\n.ui-sort__footer {\r\n border-top: 1px solid #f1f1f1;\r\n padding: 10px;\r\n\r\n .el-button {\r\n padding-left: 10px;\r\n padding-right: 10px;\r\n }\r\n}\r\n\r\n.ui-sort__content {\r\n overflow: auto;\r\n}\r\n\r\n/deep/ .el-drawer__header {\r\n border-bottom: 1px solid #f1f1f1;\r\n padding: 10px;\r\n margin-bottom: 10px;\r\n}\r\n</style>","\n<div class=\"ui-table\" :class=\"{ 'remove-hover-css': !hoverStyle }\">\n\t<div class=\"ui-table__tab\" :style=\"{ height: showTab ? '32px' : 'unset' }\">\n\t\t<slot>\n\t\t\t<el-tabs\n\t\t\t\tv-if=\"tabList.length\"\n\t\t\t\tv-model=\"checkTab\"\n\t\t\t\ttype=\"card\"\n\t\t\t\tsize=\"mini\"\n\t\t\t\t@tab-click=\"(val) => $emit('tabChange', val)\"\n\t\t\t>\n\t\t\t\t<el-tab-pane v-for=\"item in tabList\" :key=\"item.value\" :name=\"item.value\">\n\t\t\t\t\t<template v-slot:label>\n\t\t\t\t\t\t<el-badge :value=\"item.num\" :max=\"999\">\n\t\t\t\t\t\t\t<span>{{ item.label }}</span>\n\t\t\t\t\t\t</el-badge>\n\t\t\t\t\t</template>\n\t\t\t\t</el-tab-pane>\n\t\t\t</el-tabs>\n\t\t\t<div class=\"ui-tab--loading\" v-if=\"showTab && !tabList.length\">\n\t\t\t\t<i class=\"el-icon-loading\"></i>\n\t\t\t\t<span>加载中...</span>\n\t\t\t</div>\n\t\t</slot>\n\t\t<div class=\"ui-top-right\">\n\t\t\t<slot name=\"top-right\"></slot>\n\t\t</div>\n\t\t<ColumnConfig v-if=\"showConfig\" :tableName=\"tableName\" :options=\"useMaps\" @change=\"handleMapChange\" />\n\t</div>\n\n\t<el-table\n\t\tref=\"myTable\"\n\t\t@select=\"manualSelectchange\"\n\t\tv-loading=\"renderLoading\"\n\t\tv-bind=\"{ highlightRow: true, border: true, stripe: true, ...$attrs }\"\n\t\tv-on=\"polyfillListeners($listeners)\"\n\t\t:data=\"tableData\"\n\t\t:[isBindHeight]=\"tableHeight\"\n\t\t:[isBindMaxHeight]=\"maxHeight\"\n\t\t:span-method=\"spanMethod\"\n\t\t:row-class-name=\"rowClassName\"\n\t\t@row-click=\"handleRowClick\"\n\t>\n\t\t<!-- :cell-class-name=\"cellClassName\" -->\n\t\t<el-table-column type=\"selection\" width=\"35\" v-if=\"showSelect\" :selectable=\"selectable\"></el-table-column>\n\t\t<slot name=\"column\"></slot>\n\t\t<el-table-column\n\t\t\tv-for=\"(item, index) in tableTitle\"\n\t\t\t:minWidth=\"tableColsMinWidth[index] || '60px'\"\n\t\t\t:label=\"item\"\n\t\t\t:fixed=\"fixedMap[tableProps[index]]\"\n\t\t\t:key=\"tableProps[index]\"\n\t\t\t:render-header=\"typeof item === 'function' ? item : null\"\n\t\t\t:show-overflow-tooltip=\"tooltips.includes(tableProps[index])\"\n\t\t\t:prop=\"tableProps[index]\"\n\t\t\t:width=\"tableProps[index] === 'index' ? '60px' : tableColsWidth[index] || ''\"\n\t\t\t:sortable=\"getSortable(tableProps[index])\"\n\t\t>\n\t\t\t<!-- 表头插槽 自定义表头-->\n\t\t\t<template v-slot:header=\"scope\">\n\t\t\t\t<slot :name=\"tableProps[index] + 'Title'\" :row=\"item\" :$index=\"scope.$index\">\n\t\t\t\t\t<span>{{ item }}</span>\n\t\t\t\t</slot>\n\t\t\t</template>\n\n\t\t\t<!-- 内容插槽 -->\n\t\t\t<template v-slot:default=\"scope\" v-if=\"!multiHeaderKey.includes(tableProps[index])\">\n\t\t\t\t<template v-if=\"isPresetProp(tableProps[index], $UICONFIG.tablePreset && $UICONFIG.tablePreset.separator)\">\n\t\t\t\t\t<table-preset-prop :tableProp=\"tableProps[index]\" :row=\"scope.row\"></table-preset-prop>\n\t\t\t\t</template>\n\t\t\t\t<slot v-else :name=\"tableProps[index]\" :row=\"scope.row\" :$index=\"scope.$index\">\n\t\t\t\t\t<span :class=\"{ 'text--number': tableProps[index] != 'index' && Number.isFinite(Number(scope.row[tableProps[index]])) }\">{{\n\t\t\t\t\t\ttableProps[index] === 'index' ? changeTableInx(scope.$index) : scope.row[tableProps[index]]\n\t\t\t\t\t}}</span>\n\t\t\t\t</slot>\n\t\t\t</template>\n\t\t\t<template v-if=\"multiHeaderKey.includes(tableProps[index])\">\n\t\t\t\t<slot :name=\"tableProps[index]\"></slot>\n\t\t\t</template>\n\t\t</el-table-column>\n\t\t<template v-slot:empty>\n\t\t\t<div v-if=\"!autoHeight\">\n\t\t\t\t<el-empty v-show=\"!tableData.length\" description=\"暂无数据\"></el-empty>\n\t\t\t</div>\n\t\t</template>\n\t</el-table>\n\t<div class=\"ui-pagination\" v-if=\"showPage\">\n\t\t<div class=\"ui-summary--data\">\n\t\t\t<!-- 兼容老槽位 -->\n\t\t\t<slot name=\"right_top\"></slot>\n\n\t\t\t<!-- 新汇总数据槽位 -->\n\t\t\t<slot name=\"summarydata\"></slot>\n\t\t</div>\n\t\t<el-pagination\n\t\t\tref=\"pageRef\"\n\t\t\tlayout=\"total, sizes, prev, pager, next, jumper\"\n\t\t\t:current-page=\"Number(pageData.offset)\"\n\t\t\t:page-sizes=\"pageSizes\"\n\t\t\t:page-size=\"Number(pageData.limit)\"\n\t\t\t:total=\"Number(pageData.total)\"\n\t\t\t@size-change=\"(val) => handlePageChange('limit', val)\"\n\t\t\t@current-change=\"(val) => handlePageChange('offset', val)\"\n\t\t>\n\t\t</el-pagination>\n\t</div>\n</div>\n","<template>\r\n\t<div class=\"ui-table\" :class=\"{ 'remove-hover-css': !hoverStyle }\">\r\n\t\t<div class=\"ui-table__tab\" :style=\"{ height: showTab ? '32px' : 'unset' }\">\r\n\t\t\t<slot>\r\n\t\t\t\t<el-tabs\r\n\t\t\t\t\tv-if=\"tabList.length\"\r\n\t\t\t\t\tv-model=\"checkTab\"\r\n\t\t\t\t\ttype=\"card\"\r\n\t\t\t\t\tsize=\"mini\"\r\n\t\t\t\t\t@tab-click=\"(val) => $emit('tabChange', val)\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<el-tab-pane v-for=\"item in tabList\" :key=\"item.value\" :name=\"item.value\">\r\n\t\t\t\t\t\t<template v-slot:label>\r\n\t\t\t\t\t\t\t<el-badge :value=\"item.num\" :max=\"999\">\r\n\t\t\t\t\t\t\t\t<span>{{ item.label }}</span>\r\n\t\t\t\t\t\t\t</el-badge>\r\n\t\t\t\t\t\t</template>\r\n\t\t\t\t\t</el-tab-pane>\r\n\t\t\t\t</el-tabs>\r\n\t\t\t\t<div class=\"ui-tab--loading\" v-if=\"showTab && !tabList.length\">\r\n\t\t\t\t\t<i class=\"el-icon-loading\"></i>\r\n\t\t\t\t\t<span>加载中...</span>\r\n\t\t\t\t</div>\r\n\t\t\t</slot>\r\n\t\t\t<div class=\"ui-top-right\">\r\n\t\t\t\t<slot name=\"top-right\"></slot>\r\n\t\t\t</div>\r\n\t\t\t<ColumnConfig v-if=\"showConfig\" :tableName=\"tableName\" :options=\"useMaps\" @change=\"handleMapChange\" />\r\n\t\t</div>\r\n\r\n\t\t<el-table\r\n\t\t\tref=\"myTable\"\r\n\t\t\t@select=\"manualSelectchange\"\r\n\t\t\tv-loading=\"renderLoading\"\r\n\t\t\tv-bind=\"{ highlightRow: true, border: true, stripe: true, ...$attrs }\"\r\n\t\t\tv-on=\"polyfillListeners($listeners)\"\r\n\t\t\t:data=\"tableData\"\r\n\t\t\t:[isBindHeight]=\"tableHeight\"\r\n\t\t\t:[isBindMaxHeight]=\"maxHeight\"\r\n\t\t\t:span-method=\"spanMethod\"\r\n\t\t\t:row-class-name=\"rowClassName\"\r\n\t\t\t@row-click=\"handleRowClick\"\r\n\t\t>\r\n\t\t\t<!-- :cell-class-name=\"cellClassName\" -->\r\n\t\t\t<el-table-column type=\"selection\" width=\"35\" v-if=\"showSelect\" :selectable=\"selectable\"></el-table-column>\r\n\t\t\t<slot name=\"column\"></slot>\r\n\t\t\t<el-table-column\r\n\t\t\t\tv-for=\"(item, index) in tableTitle\"\r\n\t\t\t\t:minWidth=\"tableColsMinWidth[index] || '60px'\"\r\n\t\t\t\t:label=\"item\"\r\n\t\t\t\t:fixed=\"fixedMap[tableProps[index]]\"\r\n\t\t\t\t:key=\"tableProps[index]\"\r\n\t\t\t\t:render-header=\"typeof item === 'function' ? item : null\"\r\n\t\t\t\t:show-overflow-tooltip=\"tooltips.includes(tableProps[index])\"\r\n\t\t\t\t:prop=\"tableProps[index]\"\r\n\t\t\t\t:width=\"tableProps[index] === 'index' ? '60px' : tableColsWidth[index] || ''\"\r\n\t\t\t\t:sortable=\"getSortable(tableProps[index])\"\r\n\t\t\t>\r\n\t\t\t\t<!-- 表头插槽 自定义表头-->\r\n\t\t\t\t<template v-slot:header=\"scope\">\r\n\t\t\t\t\t<slot :name=\"tableProps[index] + 'Title'\" :row=\"item\" :$index=\"scope.$index\">\r\n\t\t\t\t\t\t<span>{{ item }}</span>\r\n\t\t\t\t\t</slot>\r\n\t\t\t\t</template>\r\n\r\n\t\t\t\t<!-- 内容插槽 -->\r\n\t\t\t\t<template v-slot:default=\"scope\" v-if=\"!multiHeaderKey.includes(tableProps[index])\">\r\n\t\t\t\t\t<template v-if=\"isPresetProp(tableProps[index], $UICONFIG.tablePreset && $UICONFIG.tablePreset.separator)\">\r\n\t\t\t\t\t\t<table-preset-prop :tableProp=\"tableProps[index]\" :row=\"scope.row\"></table-preset-prop>\r\n\t\t\t\t\t</template>\r\n\t\t\t\t\t<slot v-else :name=\"tableProps[index]\" :row=\"scope.row\" :$index=\"scope.$index\">\r\n\t\t\t\t\t\t<span :class=\"{ 'text--number': tableProps[index] != 'index' && Number.isFinite(Number(scope.row[tableProps[index]])) }\">{{\r\n\t\t\t\t\t\t\ttableProps[index] === 'index' ? changeTableInx(scope.$index) : scope.row[tableProps[index]]\r\n\t\t\t\t\t\t}}</span>\r\n\t\t\t\t\t</slot>\r\n\t\t\t\t</template>\r\n\t\t\t\t<template v-if=\"multiHeaderKey.includes(tableProps[index])\">\r\n\t\t\t\t\t<slot :name=\"tableProps[index]\"></slot>\r\n\t\t\t\t</template>\r\n\t\t\t</el-table-column>\r\n\t\t\t<template v-slot:empty>\r\n\t\t\t\t<div v-if=\"!autoHeight\">\r\n\t\t\t\t\t<el-empty v-show=\"!tableData.length\" description=\"暂无数据\"></el-empty>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t</el-table>\r\n\t\t<div class=\"ui-pagination\" v-if=\"showPage\">\r\n\t\t\t<div class=\"ui-summary--data\">\r\n\t\t\t\t<!-- 兼容老槽位 -->\r\n\t\t\t\t<slot name=\"right_top\"></slot>\r\n\r\n\t\t\t\t<!-- 新汇总数据槽位 -->\r\n\t\t\t\t<slot name=\"summarydata\"></slot>\r\n\t\t\t</div>\r\n\t\t\t<el-pagination\r\n\t\t\t\tref=\"pageRef\"\r\n\t\t\t\tlayout=\"total, sizes, prev, pager, next, jumper\"\r\n\t\t\t\t:current-page=\"Number(pageData.offset)\"\r\n\t\t\t\t:page-sizes=\"pageSizes\"\r\n\t\t\t\t:page-size=\"Number(pageData.limit)\"\r\n\t\t\t\t:total=\"Number(pageData.total)\"\r\n\t\t\t\t@size-change=\"(val) => handlePageChange('limit', val)\"\r\n\t\t\t\t@current-change=\"(val) => handlePageChange('offset', val)\"\r\n\t\t\t>\r\n\t\t\t</el-pagination>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n<script>\r\nimport { countTableHeight } from '@/utils';\r\nimport { TablePresetProp } from './preset/functionalComponent';\r\nimport { isPresetProp } from './preset/presetConfig.js';\r\nimport { debounce } from 'throttle-debounce';\r\nimport ColumnConfig from './ColumnConfig.vue';\r\nexport default {\r\n\tname: 'ComTable',\r\n\tcomponents: {\r\n\t\tColumnConfig,\r\n\t\tTablePresetProp,\r\n\t},\r\n\tprops: {\r\n\t\t// 表格名称,作为表格唯一值储存配置,如不传则当前页面路由会作为表格的唯一值储存配置,如页面存在多个表格并走配置情况下必须要有名称\r\n\t\ttableName: String,\r\n\r\n\t\t// 是否显示勾选框\r\n\t\tshowSelect: { type: Boolean, default: false },\r\n\t\t// 勾选方法\r\n\t\tselectable: {\r\n\t\t\ttype: Function,\r\n\t\t\tdefault() {\r\n\t\t\t\treturn () => {};\r\n\t\t\t},\r\n\t\t},\r\n\r\n\t\t// 表格是否为单选\r\n\t\tisSingleSelection: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: false,\r\n\t\t},\r\n\r\n\t\tspanMethod: {\r\n\t\t\ttype: Function,\r\n\t\t},\r\n\t\t// 表格数据\r\n\t\ttableData: {\r\n\t\t\ttype: Array,\r\n\t\t\tdefault() {\r\n\t\t\t\treturn [];\r\n\t\t\t},\r\n\t\t},\r\n\r\n\t\t// 表头映射\r\n\t\ttableMap: {\r\n\t\t\ttype: Object,\r\n\t\t\tdefault() {\r\n\t\t\t\treturn { index: '序号' };\r\n\t\t\t},\r\n\t\t},\r\n\r\n\t\t// 列宽度\r\n\t\tcolsWidth: {\r\n\t\t\ttype: [Array, Object],\r\n\t\t\tdefault() {\r\n\t\t\t\treturn [];\r\n\t\t\t},\r\n\t\t},\r\n\r\n\t\t// 最小列宽度\r\n\t\tcolsMinWidth: {\r\n\t\t\ttype: [Array, Object],\r\n\t\t\tdefault() {\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// 分页对象\r\n\t\tpageData: {\r\n\t\t\ttype: Object,\r\n\t\t\tdefault() {\r\n\t\t\t\treturn {};\r\n\t\t\t},\r\n\t\t},\r\n\r\n\t\t// 是否显示分页\r\n\t\tshowPage: { type: Boolean, default: true },\r\n\r\n\t\t// 固定表格高度\r\n\t\theight: { type: String, default: '' },\r\n\r\n\t\t// 表格高度自适应\r\n\t\tautoHeight: { type: Boolean, default: false },\r\n\r\n\t\t// 最大高度\r\n\t\tmaxHeight: { type: String, default: '' },\r\n\r\n\t\t// 高度占位值 当有特殊情况表格高度需减少指定值\r\n\t\theightStatic: { type: Number, default: 0 },\r\n\r\n\t\t// 表格tab [ { label, value } ]\r\n\t\ttabList: {\r\n\t\t\ttype: Array,\r\n\t\t\tdefault() {\r\n\t\t\t\treturn [];\r\n\t\t\t},\r\n\t\t},\r\n\t\tdefaultTab: {\r\n\t\t\ttype: [String, Number],\r\n\t\t\tdefault: '',\r\n\t\t},\r\n\t\tshowTab: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: false,\r\n\t\t},\r\n\r\n\t\trowClassName: {\r\n\t\t\ttype: Function,\r\n\t\t\tdefault({ row }) {},\r\n\t\t},\r\n\t\ttooltips: {\r\n\t\t\ttype: Array,\r\n\t\t\tdefault() {\r\n\t\t\t\treturn [];\r\n\t\t\t},\r\n\t\t},\r\n\t\tmultiHeaderKey: {\r\n\t\t\ttype: Array,\r\n\t\t\tdefault() {\r\n\t\t\t\treturn [];\r\n\t\t\t},\r\n\t\t},\r\n\t\t// cellClassName: {\r\n\t\t// \ttype: Function\r\n\t\t// }\r\n\t\tshowConfig: { type: Boolean, default: true },\r\n\r\n\t\t//排序\r\n\t\tsortables: {\r\n\t\t\ttype: [Array, Object],\r\n\t\t\tdefault() {\r\n\t\t\t\treturn [];\r\n\t\t\t},\r\n\t\t},\r\n \r\n\t\tfixedMap: {\r\n\t\t\ttype: Object,\r\n\t\t\tdefault() {\r\n\t\t\t\treturn {};\r\n\t\t\t},\r\n\t\t},\r\n\r\n\t\t// 是否使用hover样式\r\n\t\thoverStyle: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: true\r\n\t\t}\r\n\t},\r\n\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tisPresetProp,\r\n\t\t\tpageSizes: [20, 50, 100, 200, 500, 1000],\r\n\t\t\ttableHeight: '',\r\n\t\t\tcheckTab: '',\r\n\t\t\tuseMaps: {},\r\n\t\t\trenderLoading: false,\r\n\t\t\thandleWindowResize: null\r\n\t\t};\r\n\t},\r\n\tcomputed: {\r\n\t\ttableTitle() {\r\n\t\t\treturn JSON.stringify(this.useMaps) == '{}' ? [] : Object.values(this.useMaps);\r\n\t\t},\r\n\t\ttableProps() {\r\n\t\t\treturn JSON.stringify(this.useMaps) == '{}' ? [] : Object.keys(this.useMaps);\r\n\t\t},\r\n\t\ttableColsWidth() {\r\n\t\t\tif (Array.isArray(this.colsWidth)) {\r\n\t\t\t\treturn this.colsWidth.map((item) => `${parseInt(item)}px`);\r\n\t\t\t} else {\r\n\t\t\t\treturn this.tableProps.map((item) => (this.colsWidth[item] ? `${parseInt(this.colsWidth[item])}px` : ''));\r\n\t\t\t}\r\n\t\t},\r\n\t\ttableColsMinWidth() {\r\n\t\t\tif (Array.isArray(this.colsMinWidth)) {\r\n\t\t\t\treturn this.colsMinWidth.map((item) => `${parseInt(item)}px`);\r\n\t\t\t} else {\r\n\t\t\t\treturn this.tableProps.map((item) => (this.colsMinWidth[item] ? `${parseInt(this.colsMinWidth[item])}px` : ''));\r\n\t\t\t}\r\n\t\t},\r\n\t\tisBindHeight() {\r\n\t\t\treturn this.tableHeight ? 'height' : '';\r\n\t\t},\r\n\t\tisBindMaxHeight() {\r\n\t\t\treturn this.maxHeight ? 'max-height' : '';\r\n\t\t},\r\n\t},\r\n\tmethods: {\r\n\t\tchangeTableInx(inx) {\r\n\t\t\tlet i = parseInt(inx) + 1 + '';\r\n\t\t\tlet first = '0';\r\n\t\t\treturn first.repeat(4 - i.length) + i;\r\n\t\t},\r\n\r\n\t\t// 刷新表格高度\r\n\t\thandleRefreshHeight() {\r\n\r\n\t\t\t// 没设置表格高度 高度根据屏幕高度适应\r\n\t\t\tif (!this.autoHeight && !this.height) {\r\n\t\t\t\tthis.$nextTick().then(() => {\r\n\t\t\t\t\tthis.tableHeight = `${countTableHeight() - this.heightStatic}px`;\r\n\t\t\t\t\tthis.$refs['myTable'] && this.$refs['myTable'].doLayout();\r\n\t\t\t\t})\r\n\t\t\t} else if (this.height) {\r\n\t\t\t\tthis.tableHeight = this.height;\r\n\t\t\t\tthis.$refs['myTable'] && this.$refs['myTable'].doLayout();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// 分页切换\r\n\t\thandlePageChange(type = 'offset', val) {\r\n\t\t\tif (type === 'offset') {\r\n\t\t\t\tif (this.tempSize > this.pageData.total && this.pageData.offset > 1) return;\r\n\t\t\t\tthis.$emit('pageChange', type, val);\r\n\t\t\t} else {\r\n\t\t\t\tthis.tempSize = val;\r\n\t\t\t\tthis.$emit('pageChange', type, val);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// 兼容之前定义的事件名\r\n\t\tpolyfillListeners(listeners) {\r\n\t\t\tconst polyfillMap = {\r\n\t\t\t\tselectionChange: 'selection-change',\r\n\t\t\t};\r\n\t\t\treturn Object.entries(listeners).reduce((pre, [key, value]) => {\r\n\t\t\t\tconst listenerKey = polyfillMap[key];\r\n\t\t\t\tpre[listenerKey || key] = value;\r\n\t\t\t\treturn pre;\r\n\t\t\t}, {});\r\n\t\t},\r\n\r\n\t\t// 为单选模式时触发事件\r\n\t\tmanualSelectchange(selection, row) {\r\n\t\t\tif (!this.isSingleSelection) return;\r\n\t\t\tconst table = this.$refs.myTable;\r\n\t\t\ttable.clearSelection();\r\n\t\t\tthis.$nextTick(() => {\r\n\t\t\t\ttable.toggleRowSelection(row, true);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t// 配置map\r\n\t\thandleMapChange(val) {\r\n\t\t\tthis.useMaps = {};\r\n\t\t\tthis.renderLoading = true;\r\n\t\t\tthis.$nextTick().then(() => {\r\n\t\t\t\tthis.useMaps = val;\r\n\t\t\t\tthis.handleRefreshHeight();\r\n\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.renderLoading = false;\r\n\t\t\t\t}, 500);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tgetSortable(key) {\r\n\t\t\tconst sortables = this.sortables;\r\n\t\t\tif (Array.isArray(sortables)) {\r\n\t\t\t\treturn sortables.includes(key);\r\n\t\t\t} else {\r\n\t\t\t\treturn sortables[key];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// 行点击\r\n\t\thandleRowClick(row, column, event) {\r\n\t\t\tconst ele = event.target;\r\n\t\t\tif (ele.className.indexOf('cell') > -1) {\r\n\t\t\t\tif (this.isSingleSelection) {\r\n\t\t\t\t\tthis.manualSelectchange(null, row);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.$refs.myTable.toggleRowSelection(row);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// const eleParent = ele.parentElement;\r\n\t\t\t// if (['BUTTON', 'IMG'].includes(ele.tagName) || ['BUTTON', 'IMG'].includes(eleParent.tagName)) return;\r\n\t\t\t// this.$refs.myTable.toggleRowSelection(row);\r\n\t\t}\r\n\t},\r\n\r\n\tcreated() {\r\n\t\t// 设置默认tab\r\n\t\tthis.checkTab = this.defaultTab;\r\n\r\n\t\t// 默认map\r\n\t\tthis.useMaps = JSON.parse(JSON.stringify(this.tableMap));\r\n\t},\r\n\r\n\tasync mounted() {\r\n\t\t\r\n\t\tawait this.$nextTick();\r\n\t\tthis.handleRefreshHeight();\r\n\r\n\t\t// 单选模式下,隐藏全选按钮\r\n\t\tif (this.isSingleSelection) {\r\n\t\t\tconst checkboxEl = this.$refs.myTable.$el.querySelector('.el-table__header-wrapper .el-checkbox');\r\n\t\t\tcheckboxEl.style = 'display:none';\r\n\t\t}\r\n\r\n\t\tthis.handleWindowResize = debounce(100, this.handleRefreshHeight);\r\n\t\twindow.addEventListener('resize', this.handleWindowResize);\r\n\t},\r\n\r\n\twatch: {\r\n\t\tasync useMaps() {\r\n\t\t\tawait this.$nextTick();\r\n\t\t\tthis.handleRefreshHeight();\r\n\t\t},\r\n\t\ttableMap(val) {\r\n\t\t\tthis.useMaps = JSON.parse(JSON.stringify(val));\r\n\t\t},\r\n\t},\r\n\tbeforeDestroy() {\r\n\t\twindow.removeEventListener('resize', this.handleWindowResize);\r\n\t},\r\n\r\n\tasync activated() {\r\n\t\tthis.handleRefreshHeight();\r\n\t},\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n.ui-table {\r\n\tpadding: 0 10px;\r\n\tposition: relative;\r\n\r\n\t/deep/ .el-table-column--selection {\r\n\t\t.el-checkbox {\r\n\t\t\tdisplay: block;\r\n\t\t}\r\n\t}\r\n\r\n\t/deep/ .el-tabs__header {\r\n\t\tmargin-bottom: 0;\r\n\t\tborder-bottom: 0 none;\r\n\t\tbackground: #fff;\r\n\r\n\t\t.el-tabs__item {\r\n\t\t\theight: 32px;\r\n\t\t\tline-height: 32px;\r\n\t\t\tfont-size: 12px;\r\n\t\t}\r\n\t}\r\n\r\n\t/deep/ .el-tabs--card>.el-tabs__header .el-tabs__item {\r\n\t\tborder-bottom: 0 none;\r\n\t\tline-height: 28px;\r\n\t}\r\n\r\n\t/deep/ .el-tabs--card > .el-tabs__header .el-tabs__item.is-active {\r\n\t\t// background: linear-gradient(to right bottom, #cee3ff, #66a8ff) no-repeat;\r\n \t// color: #FFF;\r\n\t\tcolor: #FFF;\r\n\t\tbackground: #409eff;\r\n\t\tbox-shadow: 0 0 3px 1px #cee3ff;\r\n\t}\r\n\r\n\t/deep/ .el-tabs--card>.el-tabs__header .el-tabs__nav {\r\n\t\tborder: 0 none;\r\n\t\tbox-sizing: border-box;\r\n\t\ttop: 1px;\r\n\t\tborder-radius: unset;\r\n\t}\r\n}\r\n\r\n.ui-pagination {\r\n\ttext-align: right;\r\n\tpadding: 10px 0;\r\n\tdisplay: flex;\r\n}\r\n\r\n.ui-table__tab {\r\n\tbackground-color: #fff;\r\n\tdisplay: flex;\r\n}\r\n\r\n.ui-summary--data {\r\n\tmargin-right: auto;\r\n\tdisplay: flex;\r\n\tfont-size: 12px;\r\n\talign-items: center;\r\n}\r\n\r\n.ui-tab--loading {\r\n\tpadding-left: 10px;\r\n\theight: 32px;\r\n\tline-height: 32px;\r\n\r\n\tspan {\r\n\t\tfont-size: 12px;\r\n\t\tcolor: #999;\r\n\t\tdisplay: inline-block;\r\n\t\tmargin-left: 5px;\r\n\t}\r\n}\r\n\r\n/deep/ .el-table .cell {\r\n\tline-height: 16px;\r\n}\r\n\r\n/deep/ .el-tabs__nav-scroll {\r\n\toverflow: unset !important;\r\n}\r\n\r\n/deep/ .el-tabs__nav-wrap {\r\n\toverflow: unset !important;\r\n}\r\n\r\n/deep/ .el-badge__content.is-fixed {\r\n\tz-index: 1;\r\n}\r\n\r\n.ui-page__main > .ui-table {\r\n\tbackground: #FFF;\r\n box-shadow: 0 0 4px 1px #eee;\r\n margin-left: 10px;\r\n border-radius: 4px;\r\n\tpadding-left: 10px;\r\n\tmargin-right: 10px;\r\n}\r\n\r\n.ui-top-right {\r\n\tmargin-left: auto;\r\n\tmargin-right: 20px;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\r\n\t/deep/ .el-radio__label {\r\n\t\tfont-size: 12px;\r\n\t}\r\n\r\n\t/deep/ .el-radio__inner {\r\n\t\twidth: 12px;\r\n\t\theight: 12px;\r\n\t}\r\n}\r\n\r\n.text--number {\r\n\tfloat: right;\r\n}\r\n</style>\r\n","import Vue from 'vue';\r\nimport ComComponent from './src/index.vue';\r\n\r\ntype SFCWithInstall<T> = T & { install(app: typeof Vue): void }; // vue 安装\r\n\r\n// 安装\r\nComComponent.install = (app: typeof Vue) => {\r\n app.component(ComComponent.name, ComComponent);\r\n};\r\nconst InComComponent: SFCWithInstall<typeof ComComponent> = ComComponent; // 增加类型\r\nexport default InComComponent;","\n<el-image ref=\"imageRef\"\n v-if=\"show\" \n scroll-container=\".el-table__body-wrapper\"\n :src=\"srcMain\" \n :style=\"{ width: sizeMain }\" \n :preview-src-list=\"previewList\" \n :lazy=\"lazy\">\n <template v-slot:placeholder>\n <div v-loading=\"true\" class=\"ui-image--loading\" :style=\"{ width: sizeMain, height }\"></div>\n </template>\n <template v-slot:error>\n <div class=\"ui-image--error\" :style=\"{ width: sizeMain, height, lineHeight: height, fontSize }\">\n <i class=\"el-icon-picture-outline\"></i>\n </div>\n </template>\n</el-image>\n","<template>\r\n <el-image ref=\"imageRef\"\r\n v-if=\"show\" \r\n scroll-container=\".el-table__body-wrapper\"\r\n :src=\"srcMain\" \r\n :style=\"{ width: sizeMain }\" \r\n :preview-src-list=\"previewList\" \r\n :lazy=\"lazy\">\r\n <template v-slot:placeholder>\r\n <div v-loading=\"true\" class=\"ui-image--loading\" :style=\"{ width: sizeMain, height }\"></div>\r\n </template>\r\n <template v-slot:error>\r\n <div class=\"ui-image--error\" :style=\"{ width: sizeMain, height, lineHeight: height, fontSize }\">\r\n <i class=\"el-icon-picture-outline\"></i>\r\n </div>\r\n </template>\r\n </el-image>\r\n</template>\r\n<script>\r\nexport default {\r\n name: 'ComImage',\r\n props: {\r\n size: {\r\n type: String,\r\n default: ''\r\n },\r\n src: {\r\n type: [String, Array],\r\n default() {\r\n return ''\r\n }\r\n },\r\n previewSrcList: {\r\n type: Array,\r\n default() {\r\n return []\r\n }\r\n },\r\n lazy: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data() {\r\n return {\r\n height: '',\r\n show: false\r\n }\r\n },\r\n computed: {\r\n previewList() {\r\n\r\n if (this.previewSrcList.length) return this.previewSrcList;\r\n\r\n if (Array.isArray(this.src)) {\r\n return this.src;\r\n } else {\r\n return [];\r\n }\r\n },\r\n srcMain() {\r\n if (Array.isArray(this.src)) {\r\n return this.src[0]\r\n } else {\r\n return this.src;\r\n }\r\n },\r\n fontSize() {\r\n return `${parseInt(this.height) - 30}px`; \r\n },\r\n sizeMain() {\r\n if (!this.size) return '100%';\r\n else if (Number(this.size)) return `${this.size}px`;\r\n else return this.size;\r\n }\r\n },\r\n async mounted() {\r\n setTimeout(async () => {\r\n this.show = true;\r\n await this.$nextTick();\r\n this.height = `${this.$refs.imageRef.$el.offsetWidth}px`;\r\n }, 300)\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n\r\n.ui-image {\r\n\r\n &--error {\r\n text-align: center;\r\n color: #999;\r\n background-color: #efefef;\r\n }\r\n}\r\n</style>","import Vue from 'vue';\r\nimport ComComponent from './src/index.vue';\r\n\r\ntype SFCWithInstall<T> = T & { install(app: typeof Vue): void }; // vue 安装\r\n\r\n// 安装\r\nComComponent.install = (app: typeof Vue) => {\r\n app.component(ComComponent.name, ComComponent);\r\n};\r\nconst InComComponent: SFCWithInstall<typeof ComComponent> = ComComponent; // 增加类型\r\nexport default InComComponent;","\n<el-scrollbar class=\"ui-scrollbar\" :style=\"{height: height, width: '100%'}\">\n <slot></slot>\n</el-scrollbar>\n","<template>\r\n <el-scrollbar class=\"ui-scrollbar\" :style=\"{height: height, width: '100%'}\">\r\n <slot></slot>\r\n </el-scrollbar>\r\n</template>\r\n\r\n<script>\r\nimport { countTableHeight } from '@/utils';\r\nimport { debounce } from 'throttle-debounce';\r\nexport default {\r\n name: \"ComContainer\",\r\n props: {\r\n staticClass: {\r\n type: Array,\r\n default() {\r\n return []\r\n }\r\n },\r\n staticNum: {\r\n type: Number,\r\n default: 0\r\n }\r\n },\r\n data() {\r\n return {\r\n height: 'unset'\r\n }\r\n },\r\n methods: {\r\n handleRefreshHeight() {\r\n this.$nextTick().then(() => {\r\n this.height = `${countTableHeight(this.staticNum, false, this.staticClass)}px`;\r\n })\r\n },\r\n\r\n handleWindowResize: debounce(100, function () {\r\n this.handleRefreshHeight();\r\n })\r\n },\r\n mounted() {\r\n this.handleRefreshHeight();\r\n window.addEventListener('resize', this.handleWindowResize);\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n\r\n.ui-scrollbar {\r\n /deep/ .el-scrollbar__wrap {\r\n overflow-x: hidden;\r\n }\r\n}\r\n</style>","import Vue from 'vue';\r\nimport ComContainer from './src/index.vue';\r\n\r\ntype SFCWithInstall<T> = T & { install(app: typeof Vue): void }; // vue 安装\r\n\r\n// 安装\r\nComContainer.install = (app: typeof Vue) => {\r\n app.component(ComContainer.name, ComContainer);\r\n};\r\nconst InComContainer: SFCWithInstall<typeof ComContainer> = ComContainer; // 增加类型\r\nexport default InComContainer;","\n<transition name=\"el-loading-fade\" @after-leave=\"handleAfterLeave\">\n <div\n v-show=\"visible\"\n class=\"el-loading-mask\"\n :style=\"{ backgroundColor: background || '' }\"\n :class=\"[customClass, { 'is-fullscreen': fullscreen }]\">\n <div class=\"el-loading-spinner\">\n <svg v-if=\"!spinner\" class=\"circular\" viewBox=\"25 25 50 50\">\n <circle class=\"path\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\"/>\n </svg>\n <i v-else :class=\"spinner\"></i>\n <p v-if=\"text\" class=\"el-loading-text\">{{ text }}</p>\n </div>\n </div>\n</transition>\n","<template>\n <transition name=\"el-loading-fade\" @after-leave=\"handleAfterLeave\">\n <div\n v-show=\"visible\"\n class=\"el-loading-mask\"\n :style=\"{ backgroundColor: background || '' }\"\n :class=\"[customClass, { 'is-fullscreen': fullscreen }]\">\n <div class=\"el-loading-spinner\">\n <svg v-if=\"!spinner\" class=\"circular\" viewBox=\"25 25 50 50\">\n <circle class=\"path\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\"/>\n </svg>\n <i v-else :class=\"spinner\"></i>\n <p v-if=\"text\" class=\"el-loading-text\">{{ text }}</p>\n </div>\n </div>\n </transition>\n</template>\n\n<script>\n export default {\n data() {\n return {\n text: null,\n spinner: null,\n background: null,\n fullscreen: true,\n visible: false,\n customClass: ''\n };\n },\n\n methods: {\n handleAfterLeave() {\n this.$emit('after-leave');\n },\n setText(text) {\n this.text = text;\n }\n }\n };\n</script>\n","import Vue from 'vue';\r\nimport Loading from 'element-ui/packages/loading/src/loading.vue';\r\nconst Mask = Vue.extend(Loading);\r\n\r\nconst requestLoading:any = {\r\n bind(el:any, binding:any, { context }:any) {\r\n\r\n // 需在Store里配置才能使用\r\n if (!context.$store) return;\r\n\r\n const textExr = el.getAttribute('element-loading-text');\r\n const spinnerExr = el.getAttribute('element-loading-spinner');\r\n const backgroundExr = el.getAttribute('element-loading-background');\r\n const customClassExr = el.getAttribute('element-loading-custom-class');\r\n const mask = new Mask({\r\n el: document.createElement('div'),\r\n data: {\r\n text: textExr,\r\n spinner: spinnerExr,\r\n background: backgroundExr,\r\n customClass: customClassExr,\r\n fullscreen: false\r\n }\r\n });\r\n el.instance = mask;\r\n el.mask = mask.$el;\r\n el.maskStyle = {};\r\n el.flagId = `Loading_${new Date().getTime()}`;\r\n context.$store.commit('SAVE_HTTP_LOADINGS', {\r\n el,\r\n name: binding.arg,\r\n id: el.flagId\r\n });\r\n \r\n // if (binding.value !== false) {\r\n // binding.value = true;\r\n // binding.value && toggleLoading(el, binding);\r\n // Store.commit('SAVE_LOADING_STATE', { flag: binding.arg, status: true });\r\n // }\r\n },\r\n // unbing(el, binding) {\r\n // Store.commit('SAVE_HTTP_LOADINGS', {\r\n // el,\r\n // name: binding.arg,\r\n // id: el.flagId,\r\n // type: 'remove'\r\n // });\r\n // }\r\n}\r\n\r\nexport default {\r\n requestLoading\r\n}","\n<el-dialog :title=\"title\" :visible.sync=\"visible\" append-to-body>\n\t<div>\n\t\t<el-form :rules=\"formRules\" :model=\"formData\" :label-width=\"labelWidth\" ref=\"rulesForm\">\n\t\t\t<el-form-item v-for=\"(item, i) in items\" :label=\"item.label\" :key=\"i\" :prop=\"item.field\">\n\t\t\t\t<com-form-item\n\t\t\t\t\tv-if=\"item.type\"\n\t\t\t\t\t:type=\"item.type\"\n\t\t\t\t\tv-bind=\"item.attrs\"\n\t\t\t\t\tv-model=\"formData[item.field]\"\n\t\t\t\t></com-form-item>\n\t\t\t</el-form-item>\n\t\t</el-form>\n\t</div>\n\t<template v-slot:footer>\n\t\t<slot name=\"footer\">\n\t\t\t<el-button size=\"small\" :class=\"cancelButtonClass\" @click=\"handleClose\">{{ cancelButtonText }}</el-button>\n\t\t\t<el-button\n\t\t\t\tsize=\"small\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\t:class=\"confirmButtonClass\"\n\t\t\t\t@click=\"handleConfirm\"\n\t\t\t\t:loading=\"buttonLoading\"\n\t\t\t>\n\t\t\t\t{{ confirmButtonText }}\n\t\t\t</el-button>\n\t\t</slot>\n\t</template>\n</el-dialog>\n","<template>\r\n\t<el-dialog :title=\"title\" :visible.sync=\"visible\" append-to-body>\r\n\t\t<div>\r\n\t\t\t<el-form :rules=\"formRules\" :model=\"formData\" :label-width=\"labelWidth\" ref=\"rulesForm\">\r\n\t\t\t\t<el-form-item v-for=\"(item, i) in items\" :label=\"item.label\" :key=\"i\" :prop=\"item.field\">\r\n\t\t\t\t\t<com-form-item\r\n\t\t\t\t\t\tv-if=\"item.type\"\r\n\t\t\t\t\t\t:type=\"item.type\"\r\n\t\t\t\t\t\tv-bind=\"item.attrs\"\r\n\t\t\t\t\t\tv-model=\"formData[item.field]\"\r\n\t\t\t\t\t></com-form-item>\r\n\t\t\t\t</el-form-item>\r\n\t\t\t</el-form>\r\n\t\t</div>\r\n\t\t<template v-slot:footer>\r\n\t\t\t<slot name=\"footer\">\r\n\t\t\t\t<el-button size=\"small\" :class=\"cancelButtonClass\" @click=\"handleClose\">{{ cancelButtonText }}</el-button>\r\n\t\t\t\t<el-button\r\n\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\ttype=\"primary\"\r\n\t\t\t\t\t:class=\"confirmButtonClass\"\r\n\t\t\t\t\t@click=\"handleConfirm\"\r\n\t\t\t\t\t:loading=\"buttonLoading\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ confirmButtonText }}\r\n\t\t\t\t</el-button>\r\n\t\t\t</slot>\r\n\t\t</template>\r\n\t</el-dialog>\r\n</template>\r\n\r\n<script>\r\nconst ACTION = {\r\n\tconfirm: 'confirm',\r\n\tcancel: 'cancel',\r\n};\r\nexport default {\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tvisible: false,\r\n\t\t\tbuttonLoading: false,\r\n\t\t\taction: '',\r\n\t\t\tlabelWidth: '120px',\r\n\t\t\tuid: 1,\r\n\t\t\ttitle: '',\r\n\t\t\tformData: {},\r\n\t\t\titems: [],\r\n\t\t\trules: {},\r\n\t\t\tconfirmButtonText: '确定',\r\n\t\t\tcancelButtonText: '取消',\r\n\t\t\tconfirmButtonClass: '',\r\n\t\t\tcancelButtonClass: '',\r\n\t\t\tresolve: () => {},\r\n\t\t\tbeforeConfirm: null,\r\n\t\t\tbeforeCancel: null,\r\n\t\t};\r\n\t},\r\n\tcomputed: {\r\n\t\t// sugar 规则里定义了message就不需要定义required了\r\n\t\tformRules() {\r\n\t\t\treturn Object.entries(this.rules).reduce((pre, [key, rule]) => {\r\n\t\t\t\tconst { required, message } = rule;\r\n\t\t\t\tpre[key] = { ...rule, required: !!(required || message) };\r\n\t\t\t\treturn pre;\r\n\t\t\t}, {});\r\n\t\t},\r\n\t},\r\n\twatch: {\r\n\t\tvisible(val) {\r\n\t\t\tif (val) {\r\n\t\t\t\tthis.uid++;\r\n\t\t\t\tthis.buttonLoading = false;\r\n\t\t\t\tthis.$nextTick(() => {\r\n\t\t\t\t\tthis.$refs.rulesForm.clearValidate();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\t},\r\n\tmethods: {\r\n\t\tgetSafeClose() {\r\n\t\t\tconst currentId = this.uid;\r\n\t\t\treturn () => {\r\n\t\t\t\tthis.$nextTick(() => {\r\n\t\t\t\t\tif (currentId === this.uid) this.doClose();\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t},\r\n\t\thandleClose() {\r\n\t\t\tthis.triggerCallBack(ACTION.cancel);\r\n\t\t},\r\n\t\ttriggerCallBack(action) {\r\n\t\t\tconst callBackMap = {\r\n\t\t\t\t[ACTION.confirm]: 'beforeConfirm',\r\n\t\t\t\t[ACTION.cancel]: 'beforeCancel',\r\n\t\t\t};\r\n\t\t\tconst callBack = this[callBackMap[action]];\r\n\t\t\tthis.action = action;\r\n\t\t\tif (callBack && typeof callBack === 'function') {\r\n\t\t\t\tthis.buttonLoading = action === ACTION.confirm;\r\n\t\t\t\tcallBack({\r\n\t\t\t\t\tformData: this.formData,\r\n\t\t\t\t\tdone: this.getSafeClose(),\r\n\t\t\t\t\tinstance: this,\r\n\t\t\t\t\tstopLoading: () => {\r\n\t\t\t\t\t\tthis.buttonLoading = false;\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.doClose();\r\n\t\t\t}\r\n\t\t},\r\n\t\thandleConfirm() {\r\n\t\t\tthis.$refs.rulesForm.validate((valid) => {\r\n\t\t\t\tif (valid) {\r\n\t\t\t\t\tthis.triggerCallBack(ACTION.confirm);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t\tdoClose() {\r\n\t\t\tthis.visible = false;\r\n\t\t\tthis.buttonLoading = false;\r\n\t\t\tthis.resolve({ action: this.action });\r\n\t\t},\r\n\t},\r\n};\r\n</script>\r\n\r\n<style></style>\r\n","import Vue from 'vue';\r\nimport formDialogVue from './main.vue';\r\n\r\nconst defaults = {\r\n\ttitle: '',\r\n\titems: [],\r\n};\r\n\r\ninterface formItem {\r\n\tlabel: string;\r\n\tfield: string;\r\n\tattrs?: object;\r\n\ttype?: string;\r\n}\r\n\r\ninterface formConfig {\r\n\titems: formItem[];\r\n\trules?: object;\r\n\ttitle?: string;\r\n\tlabelWidth?: string;\r\n\tresolve?: any;\r\n\treject?: any;\r\n\tconfirmButtonText?: string;\r\n\tcancelButtonText?: string;\r\n\tconfirmButtonClass?: string;\r\n\tcancelButtonClass?: string;\r\n}\r\n\r\nconst FormDialogConstructor = Vue.extend(formDialogVue);\r\n\r\nlet currentDialog: formConfig | any, instance: any;\r\nlet dialogQueue: formConfig[] = [];\r\n\r\nconst initInstance = () => {\r\n\tinstance = new FormDialogConstructor({\r\n\t\tel: document.createElement('div'),\r\n\t});\r\n};\r\n\r\nconst buildFormData = (items: formItem[]): object => {\r\n\tlet formData: any = {};\r\n\titems.forEach((item: formItem) => {\r\n\t\tformData[item.field] = '';\r\n\t});\r\n\treturn formData;\r\n};\r\n\r\nconst showDialog = (options: formConfig) => {\r\n\tconst formData = buildFormData(options.items);\r\n\tObject.entries({ ...options, formData }).forEach(([key, value]) => {\r\n\t\tinstance[key] = value;\r\n\t});\r\n\tdocument.body.appendChild(instance.$el);\r\n\tVue.nextTick(() => {\r\n\t\tinstance.visible = true;\r\n\t});\r\n};\r\n\r\nconst showNextDialog = () => {\r\n\tif (!instance) {\r\n\t\tinitInstance();\r\n\t}\r\n\tif (dialogQueue.length > 0) {\r\n\t\tcurrentDialog = dialogQueue.shift();\r\n\t\tshowDialog(currentDialog);\r\n\t}\r\n};\r\n\r\nconst formDialog = (options: formConfig) => {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\tdialogQueue.push({ ...defaults, ...options, resolve, reject });\r\n\t\tshowNextDialog();\r\n\t});\r\n};\r\n\r\nexport default formDialog;\r\n","import './assets/less/index.less';\r\n\r\nimport ComTemplate from '../packages/template';\r\nimport ComMenu from '../packages/menu';\r\nimport ComTabs from '../packages/tabs';\r\nimport ComTool from '../packages/tool';\r\nimport ComDialog from '../packages/dialog';\r\nimport ComFormItem from '../packages/form-item';\r\nimport ComOperation from '../packages/operation';\r\nimport ComSearch from '../packages/search';\r\nimport ComTable from '../packages/table';\r\nimport ComImage from '../packages/image';\r\nimport ComContainer from '../packages/container';\r\n\r\nimport ComDirective from './directive';\r\nimport formDialog from '../packages/form-dialog';\r\n\r\nconst components: any[] = [\r\n ComTemplate,\r\n ComMenu,\r\n ComTabs,\r\n ComTool,\r\n ComDialog,\r\n ComFormItem,\r\n ComOperation,\r\n ComSearch,\r\n ComTable,\r\n ComImage,\r\n ComContainer\r\n];\r\n\r\n/**\r\n * @param { App }\r\n * @returns { Void }\r\n */\r\nconst install = (Vue: any, ops: any = { config: {} }) => {\r\n components.forEach(component => Vue.component(component.name, component));\r\n \r\n // 默认UI配置\r\n const UIDefaultConfig = {\r\n tablePreset: {\r\n separator: '@',\r\n presetPropMap: {\r\n image(row: any, { field, params }: any) {\r\n const src = row[field].split('|');\r\n const size = params.size || 59;\r\n return ['com-image', { attrs: { src, size, lazy: true } }];\r\n },\r\n link(row: any, { field, params }: any) {\r\n const text = row[field];\r\n let { target, href, type, underline } = params;\r\n\r\n target = target || '_blank';\r\n href = row[href] || text;\r\n type = type || 'primary';\r\n underline = !!underline;\r\n return [\r\n 'el-link',\r\n {\r\n attrs: {\r\n target,\r\n href,\r\n type,\r\n underline,\r\n },\r\n },\r\n text,\r\n ];\r\n },\r\n },\r\n },\r\n\r\n formItemConfig: {\r\n input: {\r\n placeholder: \"请输入\"\r\n },\r\n },\r\n }\r\n\r\n // 注册组件时可以带入UI库配置\r\n Vue.prototype.$UICONFIG = { ...UIDefaultConfig, ...ops.config };\r\n\r\n\r\n // 注册指令\r\n Object.entries(ComDirective).forEach(([key, value]) => {\r\n Vue.directive(key, value);\r\n })\r\n \r\n // 函数式调用表单弹窗组件\r\n Vue.prototype.$formDialog = formDialog;\r\n\r\n Vue.prototype.$jump = (url:string, type = '_blank') => {\r\n window.open(url, type);\r\n };\r\n}\r\n\r\n\r\nconst defaultConfig = {\r\n version: 'dev',\r\n install,\r\n ComTemplate,\r\n ComMenu,\r\n ComTabs,\r\n ComTool,\r\n ComDialog,\r\n ComFormItem,\r\n ComOperation,\r\n ComSearch,\r\n ComTable,\r\n ComImage,\r\n ComContainer\r\n};\r\n\r\ntry {\r\n defaultConfig.version = require('../package.json').version;\r\n} catch (e) {\r\n console.log('no require');\r\n}\r\n\r\nexport default defaultConfig;"],"names":["render","staticRenderFns","ComComponent","InComComponent","defaults","throttle","require$$0","this","hasSymbols","toStr","implementation","bind","undefined","$TypeError","require$$1","hasOwn","require$$2","$concat","$replace","GetIntrinsic","callBound","has","isArray","isRegExp","formats","utils","stringify","parse","qs","Vue","ComTemplate","ComMenu","ComTabs","ComTool","ComDialog","ComFormItem","ComOperation","ComSearch","ComTable","ComImage","ComContainer"],"mappings":"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"}
1
+ {"version":3,"file":"tenghui-ui.umd.js","sources":["../packages/template/src/index.vue?vue&type=template&lang.js","../packages/template/src/index.vue","../packages/template/index.ts","../packages/menu/src/index.vue?vue&type=template&lang.js","../packages/menu/src/index.vue","../packages/menu/index.ts","../packages/tabs/src/index.vue?vue&type=template&lang.js","../packages/tabs/src/index.vue","../packages/tabs/index.ts","../packages/tool/src/index.vue?vue&type=template&lang.js","../packages/tool/src/index.vue","../packages/tool/index.ts","../packages/dialog/src/index.vue?vue&type=template&lang.js","../packages/dialog/src/index.vue","../packages/dialog/index.ts","../packages/form-item/src/defaultAttrsConfig.js","../packages/form-item/src/index.vue?vue&type=template&lang.js","../packages/form-item/src/index.vue","../packages/form-item/index.ts","../packages/operation/src/Items.vue?vue&type=template&lang.js","../packages/operation/src/Items.vue","../packages/operation/src/index.vue?vue&type=template&lang.js","../packages/operation/src/index.vue","../packages/operation/index.ts","../node_modules/sortablejs/modular/sortable.esm.js","../node_modules/vuedraggable/dist/vuedraggable.umd.js","../packages/search/src/Record.vue?vue&type=template&lang.js","../packages/search/src/Record.vue","../node_modules/throttle-debounce/esm/index.js","../packages/search/src/index.vue?vue&type=template&lang.js","../packages/search/src/index.vue","../packages/search/index.ts","../utils/index.ts","../node_modules/has-symbols/shams.js","../node_modules/has-symbols/index.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/has/src/index.js","../node_modules/get-intrinsic/index.js","../node_modules/call-bind/index.js","../node_modules/call-bind/callBound.js","../__vite-browser-external","../node_modules/object-inspect/index.js","../node_modules/side-channel/index.js","../node_modules/qs/lib/formats.js","../node_modules/qs/lib/utils.js","../node_modules/qs/lib/stringify.js","../node_modules/qs/lib/parse.js","../node_modules/qs/lib/index.js","../packages/table/src/preset/presetConfig.js","../packages/table/src/preset/functionalComponent.js","../packages/table/src/ColumnConfig.vue?vue&type=template&lang.js","../packages/table/src/ColumnConfig.vue","../packages/table/src/index.vue?vue&type=template&lang.js","../packages/table/src/index.vue","../packages/table/index.ts","../packages/image/src/index.vue?vue&type=template&lang.js","../packages/image/src/index.vue","../packages/image/index.ts","../packages/container/src/index.vue?vue&type=template&lang.js","../packages/container/src/index.vue","../packages/container/index.ts","../node_modules/element-ui/packages/loading/src/loading.vue?vue&type=template&lang.js","../node_modules/element-ui/packages/loading/src/loading.vue","../src/directive/index.ts","../packages/form-dialog/src/main.vue?vue&type=template&lang.js","../packages/form-dialog/src/main.vue","../packages/form-dialog/src/main.ts","../src/main.ts"],"sourcesContent":["\n<div class=\"ui-template\">\n <h1>{{ msg }}</h1>\n <el-table :data=\"tableData\" style=\"width: 100%\">\n <el-table-column prop=\"date\" label=\"日期\" width=\"180\">\n </el-table-column>\n <el-table-column prop=\"name\" label=\"姓名\" width=\"180\">\n </el-table-column>\n <el-table-column prop=\"address\" label=\"地址\">\n </el-table-column>\n </el-table>\n</div>\n","<template>\r\n <div class=\"ui-template\">\r\n <h1>{{ msg }}</h1>\r\n <el-table :data=\"tableData\" style=\"width: 100%\">\r\n <el-table-column prop=\"date\" label=\"日期\" width=\"180\">\r\n </el-table-column>\r\n <el-table-column prop=\"name\" label=\"姓名\" width=\"180\">\r\n </el-table-column>\r\n <el-table-column prop=\"address\" label=\"地址\">\r\n </el-table-column>\r\n </el-table>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"ComTemplate\",\r\n data() {\r\n return {\r\n msg: '测试组件11111',\r\n tableData: [{\r\n date: '2016-05-02',\r\n name: '王小虎',\r\n address: '上海市普陀区金沙江路 1518 弄'\r\n }, {\r\n date: '2016-05-04',\r\n name: '王小虎',\r\n address: '上海市普陀区金沙江路 1517 弄'\r\n }, {\r\n date: '2016-05-01',\r\n name: '王小虎',\r\n address: '上海市普陀区金沙江路 1519 弄'\r\n }, {\r\n date: '2016-05-03',\r\n name: '王小虎',\r\n address: '上海市普陀区金沙江路 1516 弄'\r\n }]\r\n }\r\n },\r\n methods: {\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>","import Vue from 'vue';\r\nimport ComTemplate from './src/index.vue';\r\n\r\ntype SFCWithInstall<T> = T & { install(app: typeof Vue): void }; // vue 安装\r\n\r\n// 安装\r\nComTemplate.install = (app: typeof Vue) => {\r\n app.component(ComTemplate.name, ComTemplate);\r\n};\r\nconst InComTemplate: SFCWithInstall<typeof ComTemplate> = ComTemplate; // 增加类型\r\nexport default InComTemplate;","\n<div class=\"ui-menu\" :style=\"{ width: isCollapse ? '64px' : '200px' }\" :class=\"{ 'flex-direction-column ui-hasbg': mode == 'vertical' }\">\n <div class=\"ui-menu__header\" v-if=\"mode == 'vertical'\">\n <!-- <slot>\n <el-image class=\"ui-logo\" src=\"/logo.png\" fit=\"cover\"></el-image>\n </slot> -->\n <div class=\"ui-collapse\">\n <span @click=\"isCollapse = !isCollapse\" :class=\"isCollapse ? 'icon-qiehuan1 mr-24' : 'icon-qiehuan'\"></span>\n </div>\n <div class=\"ui-user\">\n <slot name=\"avatar\" :size=\"isCollapse ? 30 : 64\">\n <div class=\"ui-user__img\"></div>\n </slot>\n <div class=\"ui-user--name\">\n {{ userData.userName }}\n </div>\n <!-- <img src=\"../assets/image/touxiang.png\" alt=\"\"> -->\n </div>\n </div>\n <div class=\"ui-fast__search\" :class=\"{ 'ui-collapse--form': isCollapse }\">\n <com-form-item type=\"cascader\" \n popper-class=\"fast_search__cascader\" \n v-model=\"activePath\" \n :options=\"data\" \n :props=\"searchProps\" \n placeholder=\"搜索菜单\"\n @change=\"handleSearch\"></com-form-item>\n </div>\n <com-container :static-class=\"['.ui-fast__search', '.ui-user', '.el-header']\" :static-num=\"50\">\n <el-menu \n background-color=\"#545c64\" \n text-color=\"#FFF\" \n active-text-color=\"#FFF\" \n menu-trigger=\"hover\" \n :class=\"`ui-menu--${mode}`\" \n :mode=\"mode\" \n :default-active=\"$route.path\" \n :collapse=\"isCollapse\"\n @select=\"handleJump\">\n <template v-for=\"(item, index) in data\">\n <el-submenu v-if=\"item.children\" :index=\"item.path || item.name\">\n <template slot=\"title\">\n <i :class=\"item.icon || 'icon-chanpinguanli-chanpinliebiao'\"></i>\n <span>{{ item.name }}</span>\n </template>\n <template v-for=\"(_item, _index) in item.children\">\n <el-submenu v-if=\"_item.children\" :index=\"_item.path || _item.name\">\n <template slot=\"title\">{{ _item.name }}</template>\n <el-menu-item v-for=\"(__item, __index) in _item.children\" :key=\"__item.name\" :index=\"__item.path || __item.name\">{{ __item.name }}</el-menu-item>\n </el-submenu>\n <el-menu-item v-else :index=\"_item.path || _item.name\">{{ _item.name }}</el-menu-item>\n </template>\n </el-submenu>\n <el-menu-item v-else :index=\"item.path || item.name\">\n <i :class=\"item.icon || 'icon-chanpinguanli-chanpinliebiao'\"></i>\n <span slot=\"title\">{{ item.name }}</span>\n </el-menu-item>\n </template>\n </el-menu>\n </com-container>\n <!-- <com-form-item type=\"cascader\" v-model=\"activePath\" :options=\"data\" :props=\"searchProps\" placeholder=\"搜索菜单\" @change=\"handleSearch\"></com-form-item> -->\n</div>\n","<template>\r\n <div class=\"ui-menu\" :style=\"{ width: isCollapse ? '64px' : '200px' }\" :class=\"{ 'flex-direction-column ui-hasbg': mode == 'vertical' }\">\r\n <div class=\"ui-menu__header\" v-if=\"mode == 'vertical'\">\r\n <!-- <slot>\r\n <el-image class=\"ui-logo\" src=\"/logo.png\" fit=\"cover\"></el-image>\r\n </slot> -->\r\n <div class=\"ui-collapse\">\r\n <span @click=\"isCollapse = !isCollapse\" :class=\"isCollapse ? 'icon-qiehuan1 mr-24' : 'icon-qiehuan'\"></span>\r\n </div>\r\n <div class=\"ui-user\">\r\n <slot name=\"avatar\" :size=\"isCollapse ? 30 : 64\">\r\n <div class=\"ui-user__img\"></div>\r\n </slot>\r\n <div class=\"ui-user--name\">\r\n {{ userData.userName }}\r\n </div>\r\n <!-- <img src=\"../assets/image/touxiang.png\" alt=\"\"> -->\r\n </div>\r\n </div>\r\n <div class=\"ui-fast__search\" :class=\"{ 'ui-collapse--form': isCollapse }\">\r\n <com-form-item type=\"cascader\" \r\n popper-class=\"fast_search__cascader\" \r\n v-model=\"activePath\" \r\n :options=\"data\" \r\n :props=\"searchProps\" \r\n placeholder=\"搜索菜单\"\r\n @change=\"handleSearch\"></com-form-item>\r\n </div>\r\n <com-container :static-class=\"['.ui-fast__search', '.ui-user', '.el-header']\" :static-num=\"50\">\r\n <el-menu \r\n background-color=\"#545c64\" \r\n text-color=\"#FFF\" \r\n active-text-color=\"#FFF\" \r\n menu-trigger=\"hover\" \r\n :class=\"`ui-menu--${mode}`\" \r\n :mode=\"mode\" \r\n :default-active=\"$route.path\" \r\n :collapse=\"isCollapse\"\r\n @select=\"handleJump\">\r\n <template v-for=\"(item, index) in data\">\r\n <el-submenu v-if=\"item.children\" :index=\"item.path || item.name\">\r\n <template slot=\"title\">\r\n <i :class=\"item.icon || 'icon-chanpinguanli-chanpinliebiao'\"></i>\r\n <span>{{ item.name }}</span>\r\n </template>\r\n <template v-for=\"(_item, _index) in item.children\">\r\n <el-submenu v-if=\"_item.children\" :index=\"_item.path || _item.name\">\r\n <template slot=\"title\">{{ _item.name }}</template>\r\n <el-menu-item v-for=\"(__item, __index) in _item.children\" :key=\"__item.name\" :index=\"__item.path || __item.name\">{{ __item.name }}</el-menu-item>\r\n </el-submenu>\r\n <el-menu-item v-else :index=\"_item.path || _item.name\">{{ _item.name }}</el-menu-item>\r\n </template>\r\n </el-submenu>\r\n <el-menu-item v-else :index=\"item.path || item.name\">\r\n <i :class=\"item.icon || 'icon-chanpinguanli-chanpinliebiao'\"></i>\r\n <span slot=\"title\">{{ item.name }}</span>\r\n </el-menu-item>\r\n </template>\r\n </el-menu>\r\n </com-container>\r\n <!-- <com-form-item type=\"cascader\" v-model=\"activePath\" :options=\"data\" :props=\"searchProps\" placeholder=\"搜索菜单\" @change=\"handleSearch\"></com-form-item> -->\r\n </div>\r\n</template>\r\n<script>\r\nexport default {\r\n name: 'ComMenu',\r\n props: {\r\n data: {\r\n type: Array,\r\n default() {\r\n return []\r\n }\r\n },\r\n mode: {\r\n type: String,\r\n default: 'horizontal'\r\n },\r\n userData: {\r\n type: Object,\r\n default() {\r\n return {}\r\n }\r\n }\r\n },\r\n data() {\r\n return {\r\n searchProps: {\r\n label: 'name',\r\n value: 'path',\r\n emitPath: false\r\n },\r\n activePath: '',\r\n isCollapse: localStorage.getItem('SAVE_COLLAPSE_STATE') == 1\r\n }\r\n },\r\n methods: {\r\n handleJump(path) {\r\n this.$emit('jump', path);\r\n },\r\n\r\n handleSearch(val) {\r\n if (!val) return;\r\n this.handleJump(val);\r\n }\r\n },\r\n watch: {\r\n \"$route.path\"(val) {\r\n this.activePath = val;\r\n },\r\n isCollapse(val) {\r\n localStorage.setItem('SAVE_COLLAPSE_STATE', val ? 1 : 0);\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n\r\n@bdr-color: #1f4658;\r\n\r\n.ui-user {\r\n padding-top: 40px;\r\n padding-bottom: 20px;\r\n text-align: center;\r\n\r\n &__img {\r\n width: 64px;\r\n height: 64px;\r\n // background: url(../assets/image/touxiang.png) no-repeat;\r\n background-size: contain;\r\n margin: 0 auto;\r\n }\r\n\r\n &--name {\r\n margin-top: 10px;\r\n color: #FFF;\r\n }\r\n}\r\n\r\n.ui-fast__search {\r\n display: flex;\r\n justify-content: center;\r\n padding: 10px;\r\n\r\n /deep/ .ui-form__item {\r\n margin-right: 0;\r\n }\r\n}\r\n\r\n.ui-menu {\r\n height: 100%;\r\n flex: 1;\r\n display: flex;\r\n position: relative;\r\n\r\n ul {\r\n flex: 1;\r\n }\r\n\r\n /deep/ .el-cascader {\r\n .el-input__inner {\r\n // border-radius: 16px;\r\n background-color: rgba(0, 0, 0, .1);\r\n color: #FFF;\r\n\r\n &:hover {\r\n background-color: rgba(0, 0, 0, .2);\r\n }\r\n }\r\n }\r\n}\r\n\r\n.ui-menu--vertical {\r\n\r\n background-color: transparent !important;\r\n\r\n /deep/ &.el-menu {\r\n border-right: 0 none !important;\r\n background-color: transparent !important;\r\n }\r\n\r\n /deep/ .el-menu-item {\r\n background-color: transparent !important;\r\n\r\n &.is-active {\r\n background-color: rgba(0, 0, 0, .1) !important;\r\n }\r\n }\r\n\r\n /deep/ .el-submenu__title i {\r\n color: #FFF;\r\n }\r\n\r\n /deep/ .el-submenu__title {\r\n background-color: transparent !important;\r\n }\r\n\r\n /deep/ .el-menu-item {\r\n i {\r\n color: #fff;\r\n }\r\n }\r\n}\r\n\r\n.ui-menu--horizontal {\r\n /deep/ .el-menu {\r\n height: 40px;\r\n border-right: 0 none !important;\r\n background-color: transparent !important;\r\n }\r\n\r\n /deep/ .el-menu.el-menu--horizontal {\r\n border-bottom: 0 none !important;\r\n }\r\n\r\n /deep/ .el-menu--inline {\r\n background-color: rgba(0, 0, 0, .1) !important;\r\n }\r\n\r\n /deep/ .el-menu-item {\r\n min-width: unset;\r\n background-color: transparent !important;\r\n\r\n i {\r\n color: #fff;\r\n }\r\n\r\n &.is-active {\r\n background-color: rgba(0, 0, 0, .1) !important;\r\n }\r\n }\r\n\r\n /deep/ .el-submenu__title i {\r\n color: #FFF;\r\n }\r\n\r\n /deep/ .el-submenu__title {\r\n background-color: transparent !important;\r\n height: 40px !important;\r\n line-height: 40px !important;\r\n }\r\n\r\n .ui-menu__header {\r\n\r\n text-align: center;\r\n padding: 40px 0 20px;\r\n\r\n // border-bottom: 1px solid #aac8f2;\r\n &::after {\r\n content: '';\r\n display: block;\r\n height: 1px;\r\n width: 100%;\r\n margin-top: 20px;\r\n background: linear-gradient(to right bottom, #b3cdf2, #fff) no-repeat;\r\n }\r\n\r\n .ui-logo {\r\n width: 150px;\r\n }\r\n }\r\n\r\n\r\n /deep/ .el-menu--horizontal>.el-menu-item {\r\n height: 40px !important;\r\n line-height: 40px !important;\r\n\r\n i {\r\n color: #fff;\r\n }\r\n }\r\n}\r\n\r\n.ui-collapse {\r\n position: absolute;\r\n right: 0;\r\n bottom: 10px;\r\n \r\n span {\r\n font-size: 18px;\r\n cursor: pointer;\r\n color: #d1d1d1;\r\n\r\n &:hover {\r\n color: #FFF;\r\n }\r\n }\r\n\r\n &--form {\r\n /deep/ .el-input__suffix {\r\n display: none;\r\n }\r\n\r\n /deep/ .el-input__inner {\r\n padding: 0 2px !important;\r\n }\r\n }\r\n}\r\n</style>","import Vue from 'vue';\r\nimport ComComponent from './src/index.vue';\r\n\r\ntype SFCWithInstall<T> = T & { install(app: typeof Vue): void }; // vue 安装\r\n\r\n// 安装\r\nComComponent.install = (app: typeof Vue) => {\r\n app.component(ComComponent.name, ComComponent);\r\n};\r\nconst InComComponent: SFCWithInstall<typeof ComComponent> = ComComponent; // 增加类型\r\nexport default InComComponent;","\n<div class=\"ui-tabs\">\n <div class=\"inline-block h-full\">\n <div class=\"h-full flex items-end\">\n <div class=\"admin-tab__chrome-tab\" \n v-for=\"(item, index) in data\"\n :key=\"item.path\" \n :class=\"{ \n 'admin-tab__chrome-tab--active': currentTab.path === item.path,\n 'admin-tab__chrome-tab--hover': hoverItem == item.path\n }\" \n @click=\"handleToggle(item.path)\"\n @mouseenter=\"itemEnter(item.path)\"\n @mouseleave=\"itemLeave(item.path)\">\n <div class=\"admin-tab__chrome-tab__bg\">\n <svg style=\"width: 100%; height: 100%;\">\n <defs>\n <symbol id=\"geometry-left\" viewBox=\"0 0 214 36\">\n <path d=\"M17 0h197v36H0v-2c4.5 0 9-3.5 9-8V8c0-4.5 3.5-8 8-8z\"></path>\n </symbol>\n <symbol id=\"geometry-right\" viewBox=\"0 0 214 36\">\n <use xlink:href=\"#geometry-left\"></use>\n </symbol>\n <clipPath>\n <rect width=\"100%\" height=\"100%\" x=\"0\"></rect>\n </clipPath>\n </defs>\n <svg width=\"52%\" height=\"100%\">\n <use xlink:href=\"#geometry-left\" width=\"214\" height=\"36\" \n :fill=\"stateColor(item.path)\"></use>\n </svg>\n <g transform=\"scale(-1, 1)\">\n <svg width=\"52%\" height=\"100%\" x=\"-100%\" y=\"0\">\n <use xlink:href=\"#geometry-right\" width=\"214\" height=\"36\" :fill=\"stateColor(item.path)\"></use>\n </svg>\n </g>\n </svg>\n </div>\n <span class=\"admin-tab__chrome-tab__slot\">\n <i style=\"margin-right: 5px;\" :class=\"item.icon || ''\"></i>\n {{ item.name }} \n </span>\n <div class=\"admin-tab__chrome-tab__icon\" v-show=\"item.path !== '/Home'\">\n <div class=\"admin-tab__icon\" @click.stop=\"handleDeleteTab(item.path)\">\n <i class=\"icon-guanbi1 font-size-12\"></i>\n </div>\n </div>\n <div class=\"admin-tab__chrome-tab__divider\" \n :class=\"{ 'admin-tab__chrome-tab__divider--hide': hoverItem == item.path || currentTab.path === item.path }\"></div>\n </div>\n </div><!----><!----><!---->\n </div>\n</div>\n","<template>\r\n <div class=\"ui-tabs\">\r\n <div class=\"inline-block h-full\">\r\n <div class=\"h-full flex items-end\">\r\n <div class=\"admin-tab__chrome-tab\" \r\n v-for=\"(item, index) in data\"\r\n :key=\"item.path\" \r\n :class=\"{ \r\n 'admin-tab__chrome-tab--active': currentTab.path === item.path,\r\n 'admin-tab__chrome-tab--hover': hoverItem == item.path\r\n }\" \r\n @click=\"handleToggle(item.path)\"\r\n @mouseenter=\"itemEnter(item.path)\"\r\n @mouseleave=\"itemLeave(item.path)\">\r\n <div class=\"admin-tab__chrome-tab__bg\">\r\n <svg style=\"width: 100%; height: 100%;\">\r\n <defs>\r\n <symbol id=\"geometry-left\" viewBox=\"0 0 214 36\">\r\n <path d=\"M17 0h197v36H0v-2c4.5 0 9-3.5 9-8V8c0-4.5 3.5-8 8-8z\"></path>\r\n </symbol>\r\n <symbol id=\"geometry-right\" viewBox=\"0 0 214 36\">\r\n <use xlink:href=\"#geometry-left\"></use>\r\n </symbol>\r\n <clipPath>\r\n <rect width=\"100%\" height=\"100%\" x=\"0\"></rect>\r\n </clipPath>\r\n </defs>\r\n <svg width=\"52%\" height=\"100%\">\r\n <use xlink:href=\"#geometry-left\" width=\"214\" height=\"36\" \r\n :fill=\"stateColor(item.path)\"></use>\r\n </svg>\r\n <g transform=\"scale(-1, 1)\">\r\n <svg width=\"52%\" height=\"100%\" x=\"-100%\" y=\"0\">\r\n <use xlink:href=\"#geometry-right\" width=\"214\" height=\"36\" :fill=\"stateColor(item.path)\"></use>\r\n </svg>\r\n </g>\r\n </svg>\r\n </div>\r\n <span class=\"admin-tab__chrome-tab__slot\">\r\n <i style=\"margin-right: 5px;\" :class=\"item.icon || ''\"></i>\r\n {{ item.name }} \r\n </span>\r\n <div class=\"admin-tab__chrome-tab__icon\" v-show=\"item.path !== '/Home'\">\r\n <div class=\"admin-tab__icon\" @click.stop=\"handleDeleteTab(item.path)\">\r\n <i class=\"icon-guanbi1 font-size-12\"></i>\r\n </div>\r\n </div>\r\n <div class=\"admin-tab__chrome-tab__divider\" \r\n :class=\"{ 'admin-tab__chrome-tab__divider--hide': hoverItem == item.path || currentTab.path === item.path }\"></div>\r\n </div>\r\n </div><!----><!----><!---->\r\n </div>\r\n </div>\r\n</template>\r\n<script>\r\nexport default {\r\n name: 'ComTabs',\r\n props: {\r\n data: {\r\n type: Array,\r\n default() {\r\n return []\r\n }\r\n },\r\n currentTab: {\r\n type: Object,\r\n default() {\r\n return {}\r\n }\r\n }\r\n },\r\n data() {\r\n return {\r\n hoverItem: ''\r\n }\r\n },\r\n methods: {\r\n handleToggle(path) {\r\n this.$emit('toggle', path);\r\n },\r\n handleDeleteTab(path) {\r\n this.$emit('deleteTab', path);\r\n },\r\n\r\n itemEnter(target) {\r\n this.hoverItem = target;\r\n },\r\n\r\n itemLeave(target) {\r\n this.hoverItem = '';\r\n },\r\n\r\n stateColor(target) {\r\n const active = '#dee1e6';\r\n const hover = '#f5f7fa';\r\n\r\n return this.currentTab.path == target ? active : this.hoverItem == target ? hover : '#FFFFFF';\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n\r\n.ui-tabs {\r\n border-bottom: 1px solid @color-border;\r\n padding: 0 10px;\r\n height: 40px;\r\n background-color: #FFF;\r\n\r\n display: flex;\r\n align-items: flex-end;\r\n\r\n &__item {\r\n float: left;\r\n height: 31px;\r\n border-radius: 6px 6px 0 0;\r\n border: 1px solid @color-border;\r\n margin-top: 10px;\r\n box-sizing: border-box;\r\n font-size: 12px;\r\n line-height: 30px;\r\n padding: 0 10px;\r\n color: @color-f4;\r\n cursor: pointer;\r\n border-bottom-color: #FFF;\r\n margin-right: 1px;\r\n position: relative;\r\n transition: all .1s linear;\r\n\r\n &:hover {\r\n .el-icon-error {\r\n opacity: 1;\r\n }\r\n }\r\n\r\n .el-icon-error {\r\n position: absolute;\r\n right: 2px;\r\n top: 50%;\r\n margin-top: -5px;\r\n opacity: 0;\r\n transition: all .1s linear;\r\n }\r\n\r\n &--active {\r\n padding-right: 20px;\r\n\r\n .el-icon-error {\r\n top: 50%;\r\n right: 5px;\r\n font-size: 14px;\r\n margin-top: -5px;\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n}\r\n.admin-tab__chrome-tab {\r\n position: relative;\r\n display: inline-flex;\r\n align-items: center;\r\n height: 34px;\r\n padding-left: 24px;\r\n padding-right: 24px;\r\n margin-right: -18px;\r\n cursor: pointer;\r\n}\r\n\r\n.admin-tab__chrome-tab__bg {\r\n position: absolute;\r\n left: 0;\r\n bottom: 0;\r\n width: 100%;\r\n height: 100%;\r\n overflow: hidden;\r\n\r\n svg {\r\n display: block;\r\n vertical-align: middle;\r\n }\r\n}\r\n\r\n.icon-guanbi1 {\r\n color: #a1a1a1;\r\n transition: all .2s linear;\r\n}\r\n\r\n.admin-tab__chrome-tab--active {\r\n z-index: 10;\r\n}\r\n\r\n.admin-tab__chrome-tab__slot {\r\n position: relative;\r\n z-index: 2;\r\n white-space: nowrap;\r\n font-size: 12px;\r\n}\r\n.admin-tab__chrome-tab__divider {\r\n position: absolute;\r\n right: 7.5px;\r\n z-index: 2;\r\n width: 1px;\r\n height: 16px;\r\n background-color: #a1a1a1;\r\n opacity: 1;\r\n transition: opacity 0.3s ease-in-out;\r\n}\r\n\r\n.admin-tab__chrome-tab__divider--hide {\r\n opacity: 0;\r\n}\r\n\r\n.admin-tab__chrome-tab--hover {\r\n z-index: 9;\r\n}\r\n\r\n.admin-tab__chrome-tab__icon {\r\n padding-left: 18px;\r\n\r\n .admin-tab__icon {\r\n position: relative;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n width: 18px;\r\n height: 18px;\r\n font-size: 14px;\r\n }\r\n}\r\n</style>","import Vue from 'vue';\r\nimport ComComponent from './src/index.vue';\r\n\r\ntype SFCWithInstall<T> = T & { install(app: typeof Vue): void }; // vue 安装\r\n\r\n// 安装\r\nComComponent.install = (app: typeof Vue) => {\r\n app.component(ComComponent.name, ComComponent);\r\n};\r\nconst InComComponent: SFCWithInstall<typeof ComComponent> = ComComponent; // 增加类型\r\nexport default InComComponent;","\n\n<div class=\"ui-tool\">\n <el-dropdown @command=\"cmd => handleOperation('theme', cmd)\" v-if=\"themes.length\">\n <span class=\"el-dropdown-link\">\n <i class=\"icon-pifu\"></i>\n </span>\n <el-dropdown-menu slot=\"dropdown\">\n <el-dropdown-item v-for=\"item in themes\" \n :key=\"item.value\" \n :command=\"item.value\">\n <i class=\"el-icon-s-platform\" :style=\"{ color: item.theme['@theme-color'] }\"></i>\n <span>{{ item.label }}</span>\n </el-dropdown-item>\n </el-dropdown-menu>\n </el-dropdown>\n <el-dropdown @command=\"handleOperation\">\n <span class=\"el-dropdown-link\">\n <i class=\"el-icon-s-tools\"></i>\n </span>\n <el-dropdown-menu slot=\"dropdown\">\n <el-dropdown-item icon=\"icon-tuichudenglu\" command=\"outLogin\">退出登录</el-dropdown-item>\n </el-dropdown-menu>\n </el-dropdown>\n</div>\n\n<!-- <el-popover\n placement=\"bottom-start\"\n width=\"200\"\n trigger=\"hover\"\n content=\"这是一段内容,这是一段内容,这是一段内容,这是一段内容。\">\n <span class=\"el-dropdown-link\" slot=\"reference\">\n <i class=\"el-icon-s-tools\"></i>\n </span>\n</el-popover> -->\n","<template>\r\n\r\n <div class=\"ui-tool\">\r\n <el-dropdown @command=\"cmd => handleOperation('theme', cmd)\" v-if=\"themes.length\">\r\n <span class=\"el-dropdown-link\">\r\n <i class=\"icon-pifu\"></i>\r\n </span>\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <el-dropdown-item v-for=\"item in themes\" \r\n :key=\"item.value\" \r\n :command=\"item.value\">\r\n <i class=\"el-icon-s-platform\" :style=\"{ color: item.theme['@theme-color'] }\"></i>\r\n <span>{{ item.label }}</span>\r\n </el-dropdown-item>\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n <el-dropdown @command=\"handleOperation\">\r\n <span class=\"el-dropdown-link\">\r\n <i class=\"el-icon-s-tools\"></i>\r\n </span>\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <el-dropdown-item icon=\"icon-tuichudenglu\" command=\"outLogin\">退出登录</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n </div>\r\n\r\n <!-- <el-popover\r\n placement=\"bottom-start\"\r\n width=\"200\"\r\n trigger=\"hover\"\r\n content=\"这是一段内容,这是一段内容,这是一段内容,这是一段内容。\">\r\n <span class=\"el-dropdown-link\" slot=\"reference\">\r\n <i class=\"el-icon-s-tools\"></i>\r\n </span>\r\n </el-popover> -->\r\n</template>\r\n<script>\r\nexport default {\r\n name: 'ComTool',\r\n props: {\r\n themes: {\r\n type: Array,\r\n default() {\r\n return []\r\n }\r\n }\r\n },\r\n methods: {\r\n handleOperation(cmd, value) {\r\n switch (cmd) {\r\n case 'outLogin':\r\n this.$confirm('确认退出登录?', '提示', {\r\n type: 'warning'\r\n }).then(() => {\r\n console.log('out login');\r\n this.$emit('operation', cmd);\r\n })\r\n break;\r\n default:\r\n this.$emit('operation', cmd, value)\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n .el-icon-s-tools, .icon-pifu {\r\n font-size: 20px;\r\n color: #FFF;\r\n line-height: 60px;\r\n margin-right: 20px;\r\n cursor: pointer;\r\n }\r\n\r\n .ui-tool {\r\n margin-left: auto;\r\n display: flex;\r\n align-items: center;\r\n }\r\n</style>","import Vue from 'vue';\r\nimport ComComponent from './src/index.vue';\r\n\r\ntype SFCWithInstall<T> = T & { install(app: typeof Vue): void }; // vue 安装\r\n\r\n// 安装\r\nComComponent.install = (app: typeof Vue) => {\r\n app.component(ComComponent.name, ComComponent);\r\n};\r\nconst InComComponent: SFCWithInstall<typeof ComComponent> = ComComponent; // 增加类型\r\nexport default InComComponent;","\n<el-dialog \n append-to-body \n :top=\"top\" \n :title=\"title\" \n :visible=\"visible\"\n :width=\"width\" \n :close-on-click-modal=\"closeOnClickModal\"\n :before-close=\"beforeClose\"\n @close=\"handleClose\">\n <slot></slot>\n <template v-slot:footer>\n <slot name=\"footer\">\n <el-button v-if=\"showBtn\" size=\"small\" @click=\"handleCancel\">取消</el-button>\n <el-button v-if=\"showBtn\" size=\"small\" type=\"primary\" @click=\"handleConfirm\">确定</el-button>\n </slot>\n </template>\n</el-dialog>\n","<template>\r\n <el-dialog \r\n append-to-body \r\n :top=\"top\" \r\n :title=\"title\" \r\n :visible=\"visible\"\r\n :width=\"width\" \r\n :close-on-click-modal=\"closeOnClickModal\"\r\n :before-close=\"beforeClose\"\r\n @close=\"handleClose\">\r\n <slot></slot>\r\n <template v-slot:footer>\r\n <slot name=\"footer\">\r\n <el-button v-if=\"showBtn\" size=\"small\" @click=\"handleCancel\">取消</el-button>\r\n <el-button v-if=\"showBtn\" size=\"small\" type=\"primary\" @click=\"handleConfirm\">确定</el-button>\r\n </slot>\r\n </template>\r\n </el-dialog>\r\n</template>\r\n<script>\r\nexport default {\r\n name: 'ComDialog',\r\n props: {\r\n visible: {\r\n type: Boolean,\r\n default: false\r\n },\r\n title: {\r\n type: String,\r\n default: '标题'\r\n },\r\n width: {\r\n type: String,\r\n default: '600px'\r\n },\r\n top: {\r\n type: String,\r\n default: '50px'\r\n },\r\n closeOnClickModal: {\r\n type: Boolean,\r\n default: true\r\n },\r\n beforeClose: {\r\n type: Function,\r\n default(done) {\r\n done();\r\n }\r\n },\r\n showBtn: {\r\n type: Boolean,\r\n default: true\r\n }\r\n },\r\n data() {\r\n return {\r\n show: false\r\n }\r\n },\r\n methods: {\r\n handleClose() {\r\n this.$emit('close');\r\n this.$emit('update:visible', false);\r\n },\r\n\r\n handleConfirm() {\r\n this.$emit('confirm');\r\n },\r\n\r\n handleCancel() {\r\n this.$emit('cancel');\r\n this.$emit('update:visible', false);\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n/deep/ .el-dialog__header {\r\n border-bottom: 1px solid #ededed;\r\n\r\n .el-dialog__title {\r\n font-size: 16px;\r\n }\r\n}\r\n\r\n/deep/ .el-dialog__footer {\r\n border-top: 1px solid #ededed;\r\n}\r\n\r\n/deep/ .el-dialog__body {\r\n\r\n .el-form {\r\n .el-select {\r\n width: 240px;\r\n }\r\n\r\n .el-input {\r\n width: 240px;\r\n }\r\n\r\n .el-input-number {\r\n width: 240px;\r\n\r\n .el-input__inner {\r\n text-align: left;\r\n }\r\n }\r\n\r\n .ui-item__main {\r\n width: 100%;\r\n }\r\n\r\n .el-form-item__label {\r\n font-size: 12px;\r\n }\r\n\r\n .el-input--small .el-input__icon {\r\n height: 32px;\r\n }\r\n }\r\n}\r\n</style>","import Vue from 'vue';\r\nimport ComComponent from './src/index.vue';\r\n\r\ntype SFCWithInstall<T> = T & { install(app: typeof Vue): void }; // vue 安装\r\n\r\n// 安装\r\nComComponent.install = (app: typeof Vue) => {\r\n app.component(ComComponent.name, ComComponent);\r\n};\r\nconst InComComponent: SFCWithInstall<typeof ComComponent> = ComComponent; // 增加类型\r\nexport default InComComponent;","const datePickerCommonAttrs = {\r\n\t'range-separator': '至',\r\n\t'start-placeholder': '开始时间',\r\n\t'end-placeholder': '结束时间',\r\n};\r\nconst datetimerangeDefaultAttrs = {\r\n\t...datePickerCommonAttrs,\r\n\ttype: 'datetimerange',\r\n\t'default-time': ['00:00:00', '23:59:59'],\r\n\t'value-format': 'yyyy-MM-dd HH:mm:ss',\r\n\tformat: 'yyyy-MM-dd HH:mm:ss',\r\n};\r\nconst daterangeDefaultAttrs = {\r\n\t...datePickerCommonAttrs,\r\n\ttype: 'daterange',\r\n\t'value-format': 'yyyy-MM-dd',\r\n\tformat: 'yyyy-MM-dd',\r\n};\r\nconst datetimeDefaultAttrs = {\r\n\ttype: 'datetime',\r\n\t'default-time': '00:00:00',\r\n\tformat: 'yyyy-MM-dd HH:mm:ss',\r\n\t'value-format': 'yyyy-MM-dd HH:mm:ss',\r\n};\r\nconst dateDefaultAttrs = {\r\n\ttype: 'date',\r\n\tformat: 'yyyy-MM-dd',\r\n\t'value-format': 'yyyy-MM-dd',\r\n};\r\nexport const defaultAttrsMap = {\r\n\tinput: {\r\n\t\tsize: 'small',\r\n\t},\r\n\tselect: {\r\n\t\tsize: 'small',\r\n\t\tclearable: true,\r\n\t\tplaceholder: '请选择',\r\n\t},\r\n\ttextarea: {\r\n\t\tplaceholder: '请输入',\r\n\t\tsize: 'small',\r\n\t\trows: 4,\r\n\t},\r\n\t'input-number': {\r\n\t\t'controls-position': 'right',\r\n\t\tsize: 'small',\r\n\t},\r\n\tcascader: {\r\n\t\tsize: 'small',\r\n\t\tclearable: true,\r\n\t},\r\n\tdaterange: daterangeDefaultAttrs,\r\n\tdatetimerange: datetimerangeDefaultAttrs,\r\n\tdatetime: datetimeDefaultAttrs,\r\n\tdate: dateDefaultAttrs\r\n};\r\n","\n<div class=\"ui-form__item\" :style=\"staticStyle\" :class=\"`ui-form__item--${type}`\">\n\t<div>\n\t\t<slot name=\"label\">\n\t\t\t<div class=\"ui-item__label\" v-if=\"label\">\n\t\t\t\t<span>{{ label }}</span>\n\t\t\t</div>\n\t\t</slot>\n\t</div>\n\t<div class=\"ui-item__main\" :class=\"inlineLabel ? 'inline_form' : ''\">\n\t\t<template v-if=\"type === 'input' || type == 'password'\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<div class=\"flex\">\n\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.mprepend }\">\n\t\t\t\t\t<slot name=\"mprepend\"></slot>\n\t\t\t\t</div>\n\t\t\t\t<el-input \n\t\t\t\t\t:class=\"{ inline_content: inlineLabel }\" \n\t\t\t\t\t:ref=\"type\" \n\t\t\t\t\t:type=\"type\"\n\t\t\t\t\tv-on=\"$listeners\"\n\t\t\t\t\tv-model=\"modelForm\" \n\t\t\t\t\tv-bind=\"setDefaultAttrs(polyfillAttrs($attrs))\"\n\t\t\t\t\t@keyup.enter.native=\"handleEnter\">\n\t\t\t\t\t<template v-for=\"(item, key) in getComponentSlots($slots)\" v-slot:[key]>\n\t\t\t\t\t\t<slot :name=\"key\"></slot>\n\t\t\t\t\t</template>\n\t\t\t\t</el-input>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"type === 'select'\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<div class=\"flex\">\n\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\n\t\t\t\t\t<slot name=\"prepend\"></slot>\n\t\t\t\t</div>\n\t\t\t\t<el-select \n\t\t\t\t\t:class=\"{ inline_content: inlineLabel }\" \n\t\t\t\t\t:ref=\"type\" \n\t\t\t\t\t:multiple=\"multiple\" \n\t\t\t\t\t:collapseTags=\"collapseTags\" \n\t\t\t\t\t:filterable=\"filterable\" \n\t\t\t\t\t:remote=\"remote\" \n\t\t\t\t\t:reserve-keyword=\"reserveKeyword\" \n\t\t\t\t\t:remote-method=\"remoteMethod\" \n\t\t\t\t\t:filter-method=\"checkFilterMethod\"\n\t\t\t\t\t@visible-change=\"handleSetSelectOpeWidth\"\n\t\t\t\t\t:popper-class=\"multiple ? `ui-select__popper--${itemFlag}` : ''\"\n\t\t\t\t\tv-model=\"modelForm\" \n\t\t\t\t\tv-bind=\"setDefaultAttrs(polyfillAttrs($attrs))\" \n\t\t\t\t\tv-on=\"$listeners\">\n\t\t\t\t\t<div class=\"ui-select__ope\" v-if=\"multiple && filterOptions.length\">\n\t\t\t\t\t\t<el-button type=\"text\" @click=\"handleSelectCheck(true)\">全选</el-button>\n\t\t\t\t\t\t<el-button type=\"text\" @click=\"handleSelectCheck()\">反选</el-button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<el-option v-for=\"(item, index) in filterOptions\" :key=\"`${item.value}${index}`\" :value=\"item.value.toString()\" :label=\"item.label\"></el-option>\n\t\t\t\t\t<template v-for=\"(item, key) in getComponentSlots($slots)\" v-slot:[key]>\n\t\t\t\t\t\t<slot :name=\"key\"></slot>\n\t\t\t\t\t</template>\n\t\t\t\t</el-select>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"type === 'bigselect'\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<div class=\"flex\">\n\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\n\t\t\t\t\t<slot name=\"prepend\"></slot>\n\t\t\t\t</div>\n\t\t\t\t<el-select :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" :multiple=\"multiple\" :collapseTags=\"collapseTags\" :filterable=\"filterable\" :remote=\"remote\" :reserve-keyword=\"reserveKeyword\" :filter-method=\"bigFilterMethod\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs(polyfillAttrs($attrs))\" v-on=\"$listeners\">\n\t\t\t\t\t<el-option v-for=\"(item, index) in bigOptions\" :key=\"`${item.value}${index}`\" :value=\"item.value.toString()\" :label=\"item.label\"></el-option>\n\t\t\t\t\t<template v-for=\"(item, key) in getComponentSlots($slots)\" v-slot:[key]>\n\t\t\t\t\t\t<slot :name=\"key\"></slot>\n\t\t\t\t\t</template>\n\t\t\t\t</el-select>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"type === 'textarea'\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<div class=\"flex\">\n\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.mprepend }\">\n\t\t\t\t\t<slot name=\"mprepend\"></slot>\n\t\t\t\t</div>\n\t\t\t\t<el-input :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" type=\"textarea\" \n\t\t\t\t\tv-on=\"$listeners\" \n\t\t\t\t\tv-bind=\"setDefaultAttrs(polyfillAttrs($attrs))\" \n\t\t\t\t\t@keyup.enter.native=\"handleEnter\"></el-input>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"type === 'input-number'\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<div class=\"flex\">\n\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\n\t\t\t\t\t<slot name=\"prepend\"></slot>\n\t\t\t\t</div>\n\t\t\t\t<el-input-number :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\" @keyup.enter.native=\"handleEnter\"></el-input-number>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"type === 'cascader'\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<div class=\"flex\">\n\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\n\t\t\t\t\t<slot name=\"prepend\"></slot>\n\t\t\t\t</div>\n\t\t\t\t<el-cascader :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" :options=\"options\" :props=\"props\" :filterable=\"filterable\" :collapseTags=\"collapseTags\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\"></el-cascader>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"type === 'daterange'\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<div class=\"flex\">\n\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\n\t\t\t\t\t<slot name=\"prepend\"></slot>\n\t\t\t\t</div>\n\t\t\t\t<el-date-picker :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\">\n\t\t\t\t</el-date-picker>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"type === 'datetimerange'\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<div class=\"flex\">\n\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\n\t\t\t\t\t<slot name=\"prepend\"></slot>\n\t\t\t\t</div>\n\t\t\t\t<el-date-picker :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\">\n\t\t\t\t</el-date-picker>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"type === 'datetime'\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<div class=\"flex\">\n\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\n\t\t\t\t\t<slot name=\"prepend\"></slot>\n\t\t\t\t</div>\n\t\t\t\t<el-date-picker :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\">\n\t\t\t\t</el-date-picker>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"['date', 'month'].includes(type)\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<div class=\"flex\">\n\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\n\t\t\t\t\t<slot name=\"prepend\"></slot>\n\t\t\t\t</div>\n\t\t\t\t<el-date-picker :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" :type=\"type\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\">\n\t\t\t\t</el-date-picker>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"type === 'inputrange'\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<div class=\"ui-input__range\" :class=\"{ inline_content: inlineLabel }\">\n\t\t\t\t<slot name=\"prepend\"></slot>\n\t\t\t\t<el-input v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\" style=\"width: 50%\" v-model=\"modelForm[0]\" @keyup.enter.native=\"handleEnter\"></el-input>\n\t\t\t\t<span style=\"color: #dcdfe6\">-</span>\n\t\t\t\t<el-input v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\" style=\"width: 50%\" v-model=\"modelForm[1]\" @keyup.enter.native=\"handleEnter\"></el-input>\n\t\t\t</div>\n\t\t</template>\n\t\t<template v-else-if=\"type === 'radio'\">\n\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\n\t\t\t<el-radio-group v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\">\n\t\t\t\t<el-radio v-for=\"item in selectOption\" :key=\"item.value\" :label=\"item.value\">{{ item.label }}</el-radio>\n\t\t\t</el-radio-group>\n\t\t</template>\n\t</div>\n</div>\n","<template>\r\n\t<div class=\"ui-form__item\" :style=\"staticStyle\" :class=\"`ui-form__item--${type}`\">\r\n\t\t<div>\r\n\t\t\t<slot name=\"label\">\r\n\t\t\t\t<div class=\"ui-item__label\" v-if=\"label\">\r\n\t\t\t\t\t<span>{{ label }}</span>\r\n\t\t\t\t</div>\r\n\t\t\t</slot>\r\n\t\t</div>\r\n\t\t<div class=\"ui-item__main\" :class=\"inlineLabel ? 'inline_form' : ''\">\r\n\t\t\t<template v-if=\"type === 'input' || type == 'password'\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.mprepend }\">\r\n\t\t\t\t\t\t<slot name=\"mprepend\"></slot>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<el-input \r\n\t\t\t\t\t\t:class=\"{ inline_content: inlineLabel }\" \r\n\t\t\t\t\t\t:ref=\"type\" \r\n\t\t\t\t\t\t:type=\"type\"\r\n\t\t\t\t\t\tv-on=\"$listeners\"\r\n\t\t\t\t\t\tv-model=\"modelForm\" \r\n\t\t\t\t\t\tv-bind=\"setDefaultAttrs(polyfillAttrs($attrs))\"\r\n\t\t\t\t\t\t@keyup.enter.native=\"handleEnter\">\r\n\t\t\t\t\t\t<template v-for=\"(item, key) in getComponentSlots($slots)\" v-slot:[key]>\r\n\t\t\t\t\t\t\t<slot :name=\"key\"></slot>\r\n\t\t\t\t\t\t</template>\r\n\t\t\t\t\t</el-input>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t\t<template v-else-if=\"type === 'select'\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\r\n\t\t\t\t\t\t<slot name=\"prepend\"></slot>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<el-select \r\n\t\t\t\t\t\t:class=\"{ inline_content: inlineLabel }\" \r\n\t\t\t\t\t\t:ref=\"type\" \r\n\t\t\t\t\t\t:multiple=\"multiple\" \r\n\t\t\t\t\t\t:collapseTags=\"collapseTags\" \r\n\t\t\t\t\t\t:filterable=\"filterable\" \r\n\t\t\t\t\t\t:remote=\"remote\" \r\n\t\t\t\t\t\t:reserve-keyword=\"reserveKeyword\" \r\n\t\t\t\t\t\t:remote-method=\"remoteMethod\" \r\n\t\t\t\t\t\t:filter-method=\"checkFilterMethod\"\r\n\t\t\t\t\t\t@visible-change=\"handleSetSelectOpeWidth\"\r\n\t\t\t\t\t\t:popper-class=\"multiple ? `ui-select__popper--${itemFlag}` : ''\"\r\n\t\t\t\t\t\tv-model=\"modelForm\" \r\n\t\t\t\t\t\tv-bind=\"setDefaultAttrs(polyfillAttrs($attrs))\" \r\n\t\t\t\t\t\tv-on=\"$listeners\">\r\n\t\t\t\t\t\t<div class=\"ui-select__ope\" v-if=\"multiple && filterOptions.length\">\r\n\t\t\t\t\t\t\t<el-button type=\"text\" @click=\"handleSelectCheck(true)\">全选</el-button>\r\n\t\t\t\t\t\t\t<el-button type=\"text\" @click=\"handleSelectCheck()\">反选</el-button>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<el-option v-for=\"(item, index) in filterOptions\" :key=\"`${item.value}${index}`\" :value=\"item.value.toString()\" :label=\"item.label\"></el-option>\r\n\t\t\t\t\t\t<template v-for=\"(item, key) in getComponentSlots($slots)\" v-slot:[key]>\r\n\t\t\t\t\t\t\t<slot :name=\"key\"></slot>\r\n\t\t\t\t\t\t</template>\r\n\t\t\t\t\t</el-select>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t\t<template v-else-if=\"type === 'bigselect'\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\r\n\t\t\t\t\t\t<slot name=\"prepend\"></slot>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<el-select :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" :multiple=\"multiple\" :collapseTags=\"collapseTags\" :filterable=\"filterable\" :remote=\"remote\" :reserve-keyword=\"reserveKeyword\" :filter-method=\"bigFilterMethod\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs(polyfillAttrs($attrs))\" v-on=\"$listeners\">\r\n\t\t\t\t\t\t<el-option v-for=\"(item, index) in bigOptions\" :key=\"`${item.value}${index}`\" :value=\"item.value.toString()\" :label=\"item.label\"></el-option>\r\n\t\t\t\t\t\t<template v-for=\"(item, key) in getComponentSlots($slots)\" v-slot:[key]>\r\n\t\t\t\t\t\t\t<slot :name=\"key\"></slot>\r\n\t\t\t\t\t\t</template>\r\n\t\t\t\t\t</el-select>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t\t<template v-else-if=\"type === 'textarea'\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.mprepend }\">\r\n\t\t\t\t\t\t<slot name=\"mprepend\"></slot>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<el-input :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" type=\"textarea\" \r\n\t\t\t\t\t\tv-on=\"$listeners\" \r\n\t\t\t\t\t\tv-bind=\"setDefaultAttrs(polyfillAttrs($attrs))\" \r\n\t\t\t\t\t\t@keyup.enter.native=\"handleEnter\"></el-input>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t\t<template v-else-if=\"type === 'input-number'\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\r\n\t\t\t\t\t\t<slot name=\"prepend\"></slot>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<el-input-number :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\" @keyup.enter.native=\"handleEnter\"></el-input-number>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t\t<template v-else-if=\"type === 'cascader'\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\r\n\t\t\t\t\t\t<slot name=\"prepend\"></slot>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<el-cascader :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" :options=\"options\" :props=\"props\" :filterable=\"filterable\" :collapseTags=\"collapseTags\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\"></el-cascader>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t\t<template v-else-if=\"type === 'daterange'\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\r\n\t\t\t\t\t\t<slot name=\"prepend\"></slot>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<el-date-picker :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\">\r\n\t\t\t\t\t</el-date-picker>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t\t<template v-else-if=\"type === 'datetimerange'\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\r\n\t\t\t\t\t\t<slot name=\"prepend\"></slot>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<el-date-picker :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\">\r\n\t\t\t\t\t</el-date-picker>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t\t<template v-else-if=\"type === 'datetime'\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\r\n\t\t\t\t\t\t<slot name=\"prepend\"></slot>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<el-date-picker :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\">\r\n\t\t\t\t\t</el-date-picker>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t\t<template v-else-if=\"['date', 'month'].includes(type)\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t<div :class=\"{ 'ui-item-prepend': !!$slots.prepend }\">\r\n\t\t\t\t\t\t<slot name=\"prepend\"></slot>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<el-date-picker :class=\"{ inline_content: inlineLabel }\" :ref=\"type\" :type=\"type\" v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\">\r\n\t\t\t\t\t</el-date-picker>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t\t<template v-else-if=\"type === 'inputrange'\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<div class=\"ui-input__range\" :class=\"{ inline_content: inlineLabel }\">\r\n\t\t\t\t\t<slot name=\"prepend\"></slot>\r\n\t\t\t\t\t<el-input v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\" style=\"width: 50%\" v-model=\"modelForm[0]\" @keyup.enter.native=\"handleEnter\"></el-input>\r\n\t\t\t\t\t<span style=\"color: #dcdfe6\">-</span>\r\n\t\t\t\t\t<el-input v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\" style=\"width: 50%\" v-model=\"modelForm[1]\" @keyup.enter.native=\"handleEnter\"></el-input>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t\t<template v-else-if=\"type === 'radio'\">\r\n\t\t\t\t<span v-if=\"inlineLabel\" class=\"inline_label\" :style=\"{ width: labelWidth }\">{{ inlineLabel }}</span>\r\n\t\t\t\t<el-radio-group v-model=\"modelForm\" v-bind=\"setDefaultAttrs($attrs)\" v-on=\"$listeners\">\r\n\t\t\t\t\t<el-radio v-for=\"item in selectOption\" :key=\"item.value\" :label=\"item.value\">{{ item.label }}</el-radio>\r\n\t\t\t\t</el-radio-group>\r\n\t\t\t</template>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n<script>\r\nimport { defaultAttrsMap } from './defaultAttrsConfig';\r\nexport default {\r\n\tinheritAttrs: false,\r\n\tname: 'ComFormItem',\r\n\tmodel: {\r\n\t\tprop: 'model',\r\n\t\tevent: 'changes',\r\n\t},\r\n\tprops: {\r\n\t\tmodel: undefined,\r\n\r\n\t\t// 组件类型\r\n\t\ttype: {\r\n\t\t\ttype: String,\r\n\t\t\tdefault: 'input',\r\n\t\t},\r\n\t\t// item name\r\n\t\tlabel: {\r\n\t\t\ttype: String,\r\n\t\t\tdefault: '',\r\n\t\t},\r\n\r\n\t\t// 使用属性透传代替了此props,但原来的使用方式一样有效果\r\n\t\t// readonly: {\r\n\t\t// \ttype: Boolean,\r\n\t\t// \tdefault: false,\r\n\t\t// },\r\n\r\n\t\t// 选项\r\n\t\toptions: {\r\n\t\t\ttype: [Object, Array],\r\n\t\t\tdefault() {\r\n\t\t\t\treturn [];\r\n\t\t\t},\r\n\t\t},\r\n\r\n\t\t// 选项映射\r\n\t\tprops: {\r\n\t\t\ttype: Object,\r\n\t\t\tdefault() {\r\n\t\t\t\treturn { value: 'value', label: 'label' };\r\n\t\t\t},\r\n\t\t},\r\n\t\t// 加载条\r\n\t\tloading: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: false,\r\n\t\t},\r\n\r\n\t\tmultiple: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: false,\r\n\t\t},\r\n\r\n\t\tcollapseTags: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: true,\r\n\t\t},\r\n\r\n\t\tfilterable: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: true,\r\n\t\t},\r\n\r\n\t\tremote: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: false,\r\n\t\t},\r\n\r\n\t\treserveKeyword: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: false,\r\n\t\t},\r\n\r\n\t\tremoteMethod: {\r\n\t\t\ttype: Function\r\n\t\t},\r\n\r\n\t\t// 行内显示标签\r\n\t\tinlineLabel: {\r\n\t\t\ttype: String,\r\n\t\t\tdefault: '',\r\n\t\t},\r\n\t\t// 行内标签宽度\r\n\t\tlabelWidth: {\r\n\t\t\ttype: String,\r\n\t\t\tdefault: '120px',\r\n\t\t},\r\n\r\n\t\t// 最小宽度\r\n\t\tminWidth: {\r\n\t\t\ttype: [String, Number],\r\n\t\t\tdefault: ''\r\n\t\t}\r\n\t},\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tmodelForm: this.model,\r\n\t\t\tbigOptions: [],\r\n\r\n\t\t\t// 特殊处理时使用标识\r\n\t\t\titemFlag: Math.ceil(Math.random() * 10000),\r\n\r\n\t\t\tfilterOptions: []\r\n\t\t};\r\n\t},\r\n\tcomputed: {\r\n\t\tstaticStyle() {\r\n\t\t\tconst obj = {\r\n\r\n\t\t\t\t...(this.minWidth ? { minWidth: `${parseFloat(this.minWidth)}px` } : {})\r\n\t\t\t}\r\n\r\n\t\t\treturn obj;\r\n\t\t},\r\n\t\tselectOption() {\r\n\t\t\tlet tempArr = [];\r\n\t\t\tif (Array.isArray(this.options) && this.options.length && this.options[0][this.props.label] === undefined) {\r\n\t\t\t\tconst { label, value } = this.props;\r\n\t\t\t\ttempArr = this.options.map((item, index) => {\r\n\t\t\t\t\tconst obj = {\r\n\t\t\t\t\t\tlabel: item,\r\n\t\t\t\t\t\tvalue: index,\r\n\t\t\t\t\t};\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tlabel: obj[label],\r\n\t\t\t\t\t\tvalue: Number.isFinite(Number(obj[value])) ? obj[value].toString() : obj[value],\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t} else if (!Array.isArray(this.options)) {\r\n\t\t\t\ttempArr = Object.entries(this.options).map(([value, label]) => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tlabel,\r\n\t\t\t\t\t\tvalue: Number.isFinite(Number(value)) ? value.toString() : value,\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tlet options = [];\r\n\t\t\t\toptions.push(...this.options);\r\n\t\t\t\ttempArr = options.map((item) => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tlabel: item[this.props.label],\r\n\t\t\t\t\t\tvalue: Number.isFinite(Number(item[this.props.value])) ? item[this.props.value].toString() : item[this.props.value],\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\treturn tempArr;\r\n\t\t},\r\n\t},\r\n\tcreated() {\r\n\t\tthis.bigOptions = this.selectOption.slice(0, 150);\r\n\t\tthis.filterOptions = this.selectOption.slice(0);\r\n\t},\r\n\tmethods: {\r\n\r\n\t\t// 大数据查询\r\n\t\tbigFilterMethod(query) {\r\n\t\t\tlet tempOptions = [];\r\n\t\t\tif (query) {\r\n\t\t\t\ttempOptions = this.selectOption.filter(item => {\r\n\t\t\t\t\treturn item.label.toLowerCase().indexOf(query.toLowerCase()) > -1\r\n\t\t\t\t}).slice(0, 150);\r\n\t\t\t\t\r\n\t\t\t} else {\r\n\t\t\t\ttempOptions = JSON.parse(JSON.stringify(this.selectOption.slice(0, 150)));\r\n\t\t\t}\r\n\r\n\t\t\tconst posIndex = this.selectOption.findIndex(item => item.value == this.modelForm);\r\n\t\t\tif (posIndex < 150) {\r\n\t\t\t\tthis.bigOptions = tempOptions;\r\n\t\t\t} else {\r\n\t\t\t\tthis.bigOptions = [this.selectOption[posIndex], ...tempOptions];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// 获取需要透传到element组件的插槽\r\n\t\tgetComponentSlots(slots) {\r\n\t\t\tconst excludeSlots = ['label'];\r\n\t\t\tconst slots_ = {};\r\n\r\n\t\t\tObject.entries(slots).forEach(([key, value]) => {\r\n\t\t\t\tif (!excludeSlots.includes(key)) {\r\n\t\t\t\t\tslots_[key] = value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\treturn slots_;\r\n\t\t},\r\n\r\n\t\t// 获取当前element组件实例\r\n\t\tgetCurrentInstance() {\r\n\t\t\treturn this.$refs[this.type];\r\n\t\t},\r\n\r\n\t\t// 因使用属性透传而删除了以前定义的一些props,这里做一下兼容,让以前的使用方式不改变\r\n\t\tpolyfillAttrs(attrs) {\r\n\t\t\treturn {\r\n\t\t\t\t...attrs,\r\n\t\t\t\tdisabled: attrs.readonly || attrs.disabled,\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t// 获取配置项\r\n\t\tgetformItemConfig() {\r\n\t\t\tif (!this.$UICONFIG) return {};\r\n\t\t\tconst { formItemConfig } = this.$UICONFIG;\r\n\t\t\treturn formItemConfig || {};\r\n\t\t},\r\n\r\n\t\t// 设置elemenet组件默认属性\r\n\t\tsetDefaultAttrs(attrs) {\r\n\t\t\tconst { type } = this;\r\n\t\t\tconst formItemConfig = this.getformItemConfig();\r\n\t\t\tconst defaultAttrs = formItemConfig[type] || defaultAttrsMap[type] || {};\r\n\t\t\treturn {\r\n\t\t\t\t...defaultAttrs,\r\n\t\t\t\t...attrs,\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t// 回车\r\n\t\thandleEnter() {\r\n\t\t\tconst parent = this.$parent.$refs.Search ? this.$parent : this.$parent.$parent.$refs.Search ? this.$parent.$parent : null;\r\n\t\t\tif (parent) {\r\n\t\t\t\tparent.handleQuery();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// 设置Select类型 全选功能样式\r\n\t\tasync handleSetSelectOpeWidth(res) {\r\n\r\n\t\t\tif (!res) {\r\n\t\t\t\tthis.filterOptions = JSON.parse(JSON.stringify(this.selectOption));\r\n\t\t\t\treturn;\r\n\t\t\t};\r\n\r\n\t\t\tawait this.$nextTick();\r\n\t\t\tconst Eles = document.querySelector(`.ui-select__popper--${this.itemFlag}`);\r\n\r\n\t\t\tconst opeEle = Eles && Eles.querySelector('.ui-select__ope');\r\n\t\t\tif (opeEle) {\r\n\t\t\t\topeEle.style.width = `${Eles.offsetWidth - 2}px`;\r\n\t\t\t}\r\n\t\t},\r\n\t\thandleSelectCheck(isALL) {\r\n\t\t\tif (isALL) {\r\n\t\t\t\tthis.modelForm = this.filterOptions.map(item => item.value);\r\n\t\t\t} else {\r\n\t\t\t\tthis.modelForm = this.filterOptions.reduce((temp, item) => {\r\n\t\t\t\t\tif (!this.modelForm.includes(item.value)) {\r\n\t\t\t\t\t\treturn [...temp, item.value]\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn temp;\r\n\t\t\t\t\t}\r\n\t\t\t\t}, []);\r\n\t\t\t}\r\n\t\t},\r\n\t\tcheckFilterMethod(query) {\r\n\t\t\tlet tempOptions = [];\r\n\t\t\tif (query) {\r\n\t\t\t\ttempOptions = this.selectOption.filter(item => {\r\n\t\t\t\t\treturn item.label.toLowerCase().indexOf(query.toLowerCase()) > -1\r\n\t\t\t\t})\r\n\t\t\t} else {\r\n\t\t\t\ttempOptions = JSON.parse(JSON.stringify(this.selectOption));\r\n\t\t\t}\r\n\r\n\t\t\tthis.filterOptions = tempOptions;\r\n\t\t}\r\n\t},\r\n\twatch: {\r\n\t\tmodelForm(val) {\r\n\t\t\tthis.$emit('changes', val);\r\n\t\t},\r\n\t\tmodel(val) {\r\n\t\t\tthis.modelForm = val;\r\n\t\t},\r\n\t\tselectOption(val) {\r\n\t\t\tthis.bigOptions = val.slice(0, 200);\r\n\t\t\tthis.filterOptions = val.slice(0);\r\n\t\t}\r\n\t},\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n.ui-form__item {\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\tmargin-right: 15px;\r\n}\r\n\r\n.ui-item__label {\r\n\tmargin-right: 10px;\r\n\tfont-size: 12px;\r\n\twidth: 70px;\r\n\ttext-align: right;\r\n}\r\n\r\n// 使用远程搜索时箭头图标高亮显示\r\n::v-deep.el-select {\r\n\t.el-select__caret:first-child::before {\r\n\t\tcontent: '\\e6e1';\r\n\t}\r\n\r\n\t.is-focus {\r\n\t\t.el-select__caret:first-child {\r\n\t\t\ttransform: rotateZ(0deg);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.ui-input__range {\r\n\tmax-width: 240px;\r\n\tdisplay: flex;\r\n\r\n\t&>span {\r\n\t\tline-height: 28px;\r\n\t}\r\n}\r\n\r\n.el-date-editor {\r\n\twidth: 100% !important;\r\n}\r\n\r\n.inline_form {\r\n\tdisplay: flex;\r\n\tmargin-bottom: 10px;\r\n}\r\n\r\n.inline_label {\r\n\tdisplay: inline-block;\r\n\theight: 32px;\r\n\tline-height: 32px;\r\n\tfont-size: 12px;\r\n\ttext-align: right;\r\n\tpadding-right: 10px;\r\n}\r\n\r\n.inline_content {\r\n\tflex: 1;\r\n}\r\n</style>\r\n","import Vue from 'vue';\r\nimport ComComponent from './src/index.vue';\r\n\r\ntype SFCWithInstall<T> = T & { install(app: typeof Vue): void }; // vue 安装\r\n\r\n// 安装\r\nComComponent.install = (app: typeof Vue) => {\r\n app.component(ComComponent.name, ComComponent);\r\n};\r\nconst InComComponent: SFCWithInstall<typeof ComComponent> = ComComponent; // 增加类型\r\nexport default InComComponent;","\n<div>\n <template v-for=\"(item, index) in showItems\">\n <component\n size=\"mini\" \n btn-type=\"mock\"\n v-permit=\"{ value: item.$attrs.permit || 'break' }\"\n v-bind=\"$attrs\"\n :is=\"item.constructor\" \n :type=\"item.type == 'text' ? 'primary' : item.type\" \n :icon=\"item.icon\" \n v-on=\"item.$listeners\">\n {{ item.$slots.default[0].text }}\n </component>\n </template>\n</div>\n","<template>\r\n <div>\r\n <template v-for=\"(item, index) in showItems\">\r\n <component\r\n size=\"mini\" \r\n btn-type=\"mock\"\r\n v-permit=\"{ value: item.$attrs.permit || 'break' }\"\r\n v-bind=\"$attrs\"\r\n :is=\"item.constructor\" \r\n :type=\"item.type == 'text' ? 'primary' : item.type\" \r\n :icon=\"item.icon\" \r\n v-on=\"item.$listeners\">\r\n {{ item.$slots.default[0].text }}\r\n </component>\r\n </template>\r\n </div>\r\n</template>\r\n<script>\r\nexport default {\r\n props: {\r\n showItems: {\r\n type: Array,\r\n default() {\r\n return [];\r\n }\r\n }\r\n },\r\n created() {\r\n setTimeout(() => {\r\n console.log(this.showItems);\r\n }, 1000);\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n.el-button--mini {\r\n padding: 5px 8px;\r\n font-size: 12px !important;\r\n box-shadow: 0 0 5px 1px #b0ccf2;\r\n}\r\n</style>","\n<div class=\"ui-operation\">\n <slot></slot>\n <!-- <Items :show-items=\"showItems\"/> -->\n</div>\n","<template>\r\n <div class=\"ui-operation\">\r\n <slot></slot>\r\n <!-- <Items :show-items=\"showItems\"/> -->\r\n </div>\r\n</template>\r\n<script>\r\nimport Items from './Items.vue';\r\nexport default {\r\n name: 'ComOperation',\r\n components: {\r\n Items\r\n },\r\n prop: {\r\n type: String,\r\n default: 'main'\r\n },\r\n data() {\r\n return {\r\n isInit: false,\r\n listItems: []\r\n }\r\n },\r\n computed: {\r\n showItems() {\r\n return this.listItems.filter(item => item.$options._componentTag == 'el-button');\r\n }\r\n },\r\n mounted() {\r\n this.listItems = this.$children;\r\n },\r\n watch: {\r\n listItems(val) {\r\n if (val.length) {\r\n this.isInit = true;\r\n\r\n // console.log(this.$refs.TempArea);\r\n }\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n.ui-operation {\r\n padding: 5px 10px;\r\n}\r\n\r\n.el-button {\r\n padding: 5px 8px !important;\r\n font-size: 12px !important;\r\n box-shadow: 0 0 5px 1px #b0ccf2;\r\n}\r\n</style>","import Vue from 'vue';\r\nimport ComComponent from './src/index.vue';\r\n\r\ntype SFCWithInstall<T> = T & { install(app: typeof Vue): void }; // vue 安装\r\n\r\n// 安装\r\nComComponent.install = (app: typeof Vue) => {\r\n app.component(ComComponent.name, ComComponent);\r\n};\r\nconst InComComponent: SFCWithInstall<typeof ComComponent> = ComComponent; // 增加类型\r\nexport default InComComponent;","/**!\n * Sortable 1.10.2\n * @author\tRubaXa <trash@rubaxa.org>\n * @author\towenm <owen23355@gmail.com>\n * @license MIT\n */\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar version = \"1.10.2\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !!\n /*@__PURE__*/\n navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\n\n\nfunction getChild(el, childNum, options) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && children[i] !== Sortable.dragged && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread({}, extraEventProperties, PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, [\"evt\"]);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n if (lastChild(sortable)) return;\n var rect = getRect(sortable),\n threshold = sortable[expando].options.emptyInsertThreshold,\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (threshold && insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // assign target only if condition is true\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (rootEl.contains(dragEl) && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread({}, Sortable.utils, plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvt: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvt: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvt: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvt: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"sortablejs\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"sortablejs\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"vuedraggable\"] = factory(require(\"sortablejs\"));\n\telse\n\t\troot[\"vuedraggable\"] = factory(root[\"Sortable\"]);\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE_a352__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"01f9\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(\"2d00\");\nvar $export = __webpack_require__(\"5ca1\");\nvar redefine = __webpack_require__(\"2aba\");\nvar hide = __webpack_require__(\"32e9\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar $iterCreate = __webpack_require__(\"41a0\");\nvar setToStringTag = __webpack_require__(\"7f20\");\nvar getPrototypeOf = __webpack_require__(\"38fd\");\nvar ITERATOR = __webpack_require__(\"2b4c\")('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n/***/ }),\n\n/***/ \"02f4\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar defined = __webpack_require__(\"be13\");\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n\n\n/***/ }),\n\n/***/ \"0390\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar at = __webpack_require__(\"02f4\")(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n\n\n/***/ }),\n\n/***/ \"0bfb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = __webpack_require__(\"cb7c\");\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"0d58\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(\"ce10\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"1495\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar anObject = __webpack_require__(\"cb7c\");\nvar getKeys = __webpack_require__(\"0d58\");\n\nmodule.exports = __webpack_require__(\"9e1e\") ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"214f\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n__webpack_require__(\"b0c5\");\nvar redefine = __webpack_require__(\"2aba\");\nvar hide = __webpack_require__(\"32e9\");\nvar fails = __webpack_require__(\"79e5\");\nvar defined = __webpack_require__(\"be13\");\nvar wks = __webpack_require__(\"2b4c\");\nvar regexpExec = __webpack_require__(\"520a\");\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$<a>') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n\n\n/***/ }),\n\n/***/ \"230e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nvar document = __webpack_require__(\"7726\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"23c6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = __webpack_require__(\"2d95\");\nvar TAG = __webpack_require__(\"2b4c\")('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n/***/ }),\n\n/***/ \"2621\":\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"2aba\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar has = __webpack_require__(\"69a8\");\nvar SRC = __webpack_require__(\"ca5a\")('src');\nvar $toString = __webpack_require__(\"fa5b\");\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\n__webpack_require__(\"8378\").inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n\n\n/***/ }),\n\n/***/ \"2aeb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(\"cb7c\");\nvar dPs = __webpack_require__(\"1495\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(\"230e\")('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(\"fab2\").appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ \"2b4c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(\"5537\")('wks');\nvar uid = __webpack_require__(\"ca5a\");\nvar Symbol = __webpack_require__(\"7726\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n/***/ }),\n\n/***/ \"2d00\":\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ \"2d95\":\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"2fdb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n\nvar $export = __webpack_require__(\"5ca1\");\nvar context = __webpack_require__(\"d2c8\");\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * __webpack_require__(\"5147\")(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n\n/***/ }),\n\n/***/ \"32e9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar createDesc = __webpack_require__(\"4630\");\nmodule.exports = __webpack_require__(\"9e1e\") ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ \"38fd\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(\"69a8\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n/***/ }),\n\n/***/ \"41a0\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar create = __webpack_require__(\"2aeb\");\nvar descriptor = __webpack_require__(\"4630\");\nvar setToStringTag = __webpack_require__(\"7f20\");\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(\"32e9\")(IteratorPrototype, __webpack_require__(\"2b4c\")('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n/***/ }),\n\n/***/ \"456d\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(\"4bf8\");\nvar $keys = __webpack_require__(\"0d58\");\n\n__webpack_require__(\"5eda\")('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n\n\n/***/ }),\n\n/***/ \"4588\":\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n\n/***/ \"4630\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n\n/***/ \"4bf8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"5147\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar MATCH = __webpack_require__(\"2b4c\")('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n\n\n/***/ }),\n\n/***/ \"520a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar regexpFlags = __webpack_require__(\"0bfb\");\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n\n\n/***/ }),\n\n/***/ \"52a7\":\n/***/ (function(module, exports) {\n\nexports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"5537\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(\"8378\");\nvar global = __webpack_require__(\"7726\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(\"2d00\") ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"5ca1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar core = __webpack_require__(\"8378\");\nvar hide = __webpack_require__(\"32e9\");\nvar redefine = __webpack_require__(\"2aba\");\nvar ctx = __webpack_require__(\"9b43\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n/***/ }),\n\n/***/ \"5eda\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(\"5ca1\");\nvar core = __webpack_require__(\"8378\");\nvar fails = __webpack_require__(\"79e5\");\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n/***/ }),\n\n/***/ \"5f1b\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar classof = __webpack_require__(\"23c6\");\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n\n\n/***/ }),\n\n/***/ \"613b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(\"5537\")('keys');\nvar uid = __webpack_require__(\"ca5a\");\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"626a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(\"2d95\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n\n/***/ \"6762\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// https://github.com/tc39/Array.prototype.includes\nvar $export = __webpack_require__(\"5ca1\");\nvar $includes = __webpack_require__(\"c366\")(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n__webpack_require__(\"9c6c\")('includes');\n\n\n/***/ }),\n\n/***/ \"6821\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(\"626a\");\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"69a8\":\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"6a99\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(\"d3f4\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"7333\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(\"0d58\");\nvar gOPS = __webpack_require__(\"2621\");\nvar pIE = __webpack_require__(\"52a7\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar IObject = __webpack_require__(\"626a\");\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(\"79e5\")(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n\n\n/***/ }),\n\n/***/ \"7726\":\n/***/ (function(module, exports) {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"77f1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n\n/***/ \"79e5\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ \"7f20\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar def = __webpack_require__(\"86cc\").f;\nvar has = __webpack_require__(\"69a8\");\nvar TAG = __webpack_require__(\"2b4c\")('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n/***/ }),\n\n/***/ \"8378\":\n/***/ (function(module, exports) {\n\nvar core = module.exports = { version: '2.6.5' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"84f2\":\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"86cc\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"cb7c\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"c69a\");\nvar toPrimitive = __webpack_require__(\"6a99\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(\"9e1e\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"9b43\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(\"d8e8\");\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ \"9c6c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = __webpack_require__(\"2b4c\")('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(\"32e9\")(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n\n/***/ \"9def\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(\"4588\");\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"9e1e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(\"79e5\")(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"a352\":\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_a352__;\n\n/***/ }),\n\n/***/ \"a481\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar anObject = __webpack_require__(\"cb7c\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar toLength = __webpack_require__(\"9def\");\nvar toInteger = __webpack_require__(\"4588\");\nvar advanceStringIndex = __webpack_require__(\"0390\");\nvar regExpExec = __webpack_require__(\"5f1b\");\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\n__webpack_require__(\"214f\")('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative($replace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return $replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n\n\n/***/ }),\n\n/***/ \"aae3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.8 IsRegExp(argument)\nvar isObject = __webpack_require__(\"d3f4\");\nvar cof = __webpack_require__(\"2d95\");\nvar MATCH = __webpack_require__(\"2b4c\")('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ \"ac6a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $iterators = __webpack_require__(\"cadf\");\nvar getKeys = __webpack_require__(\"0d58\");\nvar redefine = __webpack_require__(\"2aba\");\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar wks = __webpack_require__(\"2b4c\");\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n\n\n/***/ }),\n\n/***/ \"b0c5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar regexpExec = __webpack_require__(\"520a\");\n__webpack_require__(\"5ca1\")({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n\n\n/***/ }),\n\n/***/ \"be13\":\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"c366\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(\"6821\");\nvar toLength = __webpack_require__(\"9def\");\nvar toAbsoluteIndex = __webpack_require__(\"77f1\");\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n/***/ }),\n\n/***/ \"c649\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return insertNodeAt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return camelize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return console; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return removeNode; });\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"a481\");\n/* harmony import */ var core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es6_regexp_replace__WEBPACK_IMPORTED_MODULE_0__);\n\n\nfunction getConsole() {\n if (typeof window !== \"undefined\") {\n return window.console;\n }\n\n return global.console;\n}\n\nvar console = getConsole();\n\nfunction cached(fn) {\n var cache = Object.create(null);\n return function cachedFn(str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str));\n };\n}\n\nvar regex = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(regex, function (_, c) {\n return c ? c.toUpperCase() : \"\";\n });\n});\n\nfunction removeNode(node) {\n if (node.parentElement !== null) {\n node.parentElement.removeChild(node);\n }\n}\n\nfunction insertNodeAt(fatherNode, node, position) {\n var refNode = position === 0 ? fatherNode.children[0] : fatherNode.children[position - 1].nextSibling;\n fatherNode.insertBefore(node, refNode);\n}\n\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"c8ba\")))\n\n/***/ }),\n\n/***/ \"c69a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(\"9e1e\") && !__webpack_require__(\"79e5\")(function () {\n return Object.defineProperty(__webpack_require__(\"230e\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"c8ba\":\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n\n/***/ \"ca5a\":\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n/***/ }),\n\n/***/ \"cadf\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar addToUnscopables = __webpack_require__(\"9c6c\");\nvar step = __webpack_require__(\"d53b\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar toIObject = __webpack_require__(\"6821\");\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(\"01f9\")(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n\n/***/ \"cb7c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"ce10\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"69a8\");\nvar toIObject = __webpack_require__(\"6821\");\nvar arrayIndexOf = __webpack_require__(\"c366\")(false);\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"d2c8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = __webpack_require__(\"aae3\");\nvar defined = __webpack_require__(\"be13\");\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n\n\n/***/ }),\n\n/***/ \"d3f4\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"d53b\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n\n\n/***/ }),\n\n/***/ \"d8e8\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"e11e\":\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n/***/ }),\n\n/***/ \"f559\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n\nvar $export = __webpack_require__(\"5ca1\");\nvar toLength = __webpack_require__(\"9def\");\nvar context = __webpack_require__(\"d2c8\");\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * __webpack_require__(\"5147\")(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n\n\n/***/ }),\n\n/***/ \"f6fd\":\n/***/ (function(module, exports) {\n\n// document.currentScript polyfill by Adam Miller\n\n// MIT license\n\n(function(document){\n var currentScript = \"currentScript\",\n scripts = document.getElementsByTagName('script'); // Live NodeList collection\n\n // If browser needs currentScript polyfill, add get currentScript() to the document object\n if (!(currentScript in document)) {\n Object.defineProperty(document, currentScript, {\n get: function(){\n\n // IE 6-10 supports script readyState\n // IE 10+ support stack trace\n try { throw new Error(); }\n catch (err) {\n\n // Find the second match for the \"at\" string to get file src url from stack.\n // Specifically works with the format of stack traces in IE.\n var i, res = ((/.*at [^\\(]*\\((.*):.+:.+\\)$/ig).exec(err.stack) || [false])[1];\n\n // For all scripts on the page, if src matches or if ready state is interactive, return the script tag\n for(i in scripts){\n if(scripts[i].src == res || scripts[i].readyState == \"interactive\"){\n return scripts[i];\n }\n }\n\n // If no match, return null\n return null;\n }\n }\n });\n }\n})(document);\n\n\n/***/ }),\n\n/***/ \"f751\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(\"5ca1\");\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(\"7333\") });\n\n\n/***/ }),\n\n/***/ \"fa5b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(\"5537\")('native-function-to-string', Function.toString);\n\n\n/***/ }),\n\n/***/ \"fab2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar document = __webpack_require__(\"7726\").document;\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n\n/***/ \"fb15\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n if (true) {\n __webpack_require__(\"f6fd\")\n }\n\n var setPublicPath_i\n if ((setPublicPath_i = window.document.currentScript) && (setPublicPath_i = setPublicPath_i.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/))) {\n __webpack_require__.p = setPublicPath_i[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\n/* harmony default export */ var setPublicPath = (null);\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.assign.js\nvar es6_object_assign = __webpack_require__(\"f751\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.starts-with.js\nvar es6_string_starts_with = __webpack_require__(\"f559\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom.iterable.js\nvar web_dom_iterable = __webpack_require__(\"ac6a\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.iterator.js\nvar es6_array_iterator = __webpack_require__(\"cadf\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.keys.js\nvar es6_object_keys = __webpack_require__(\"456d\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js\nfunction _nonIterableRest() {\n 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}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js\n\n\n\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es7.array.includes.js\nvar es7_array_includes = __webpack_require__(\"6762\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.includes.js\nvar es6_string_includes = __webpack_require__(\"2fdb\");\n\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArray.js\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\n\n\n\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n// EXTERNAL MODULE: external {\"commonjs\":\"sortablejs\",\"commonjs2\":\"sortablejs\",\"amd\":\"sortablejs\",\"root\":\"Sortable\"}\nvar external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_ = __webpack_require__(\"a352\");\nvar external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default = /*#__PURE__*/__webpack_require__.n(external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_);\n\n// EXTERNAL MODULE: ./src/util/helper.js\nvar helper = __webpack_require__(\"c649\");\n\n// CONCATENATED MODULE: ./src/vuedraggable.js\n\n\n\n\n\n\n\n\n\n\n\n\nfunction buildAttribute(object, propName, value) {\n if (value === undefined) {\n return object;\n }\n\n object = object || {};\n object[propName] = value;\n return object;\n}\n\nfunction computeVmIndex(vnodes, element) {\n return vnodes.map(function (elt) {\n return elt.elm;\n }).indexOf(element);\n}\n\nfunction _computeIndexes(slots, children, isTransition, footerOffset) {\n if (!slots) {\n return [];\n }\n\n var elmFromNodes = slots.map(function (elt) {\n return elt.elm;\n });\n var footerIndex = children.length - footerOffset;\n\n var rawIndexes = _toConsumableArray(children).map(function (elt, idx) {\n return idx >= footerIndex ? elmFromNodes.length : elmFromNodes.indexOf(elt);\n });\n\n return isTransition ? rawIndexes.filter(function (ind) {\n return ind !== -1;\n }) : rawIndexes;\n}\n\nfunction emit(evtName, evtData) {\n var _this = this;\n\n this.$nextTick(function () {\n return _this.$emit(evtName.toLowerCase(), evtData);\n });\n}\n\nfunction delegateAndEmit(evtName) {\n var _this2 = this;\n\n return function (evtData) {\n if (_this2.realList !== null) {\n _this2[\"onDrag\" + evtName](evtData);\n }\n\n emit.call(_this2, evtName, evtData);\n };\n}\n\nfunction isTransitionName(name) {\n return [\"transition-group\", \"TransitionGroup\"].includes(name);\n}\n\nfunction vuedraggable_isTransition(slots) {\n if (!slots || slots.length !== 1) {\n return false;\n }\n\n var _slots = _slicedToArray(slots, 1),\n componentOptions = _slots[0].componentOptions;\n\n if (!componentOptions) {\n return false;\n }\n\n return isTransitionName(componentOptions.tag);\n}\n\nfunction getSlot(slot, scopedSlot, key) {\n return slot[key] || (scopedSlot[key] ? scopedSlot[key]() : undefined);\n}\n\nfunction computeChildrenAndOffsets(children, slot, scopedSlot) {\n var headerOffset = 0;\n var footerOffset = 0;\n var header = getSlot(slot, scopedSlot, \"header\");\n\n if (header) {\n headerOffset = header.length;\n children = children ? [].concat(_toConsumableArray(header), _toConsumableArray(children)) : _toConsumableArray(header);\n }\n\n var footer = getSlot(slot, scopedSlot, \"footer\");\n\n if (footer) {\n footerOffset = footer.length;\n children = children ? [].concat(_toConsumableArray(children), _toConsumableArray(footer)) : _toConsumableArray(footer);\n }\n\n return {\n children: children,\n headerOffset: headerOffset,\n footerOffset: footerOffset\n };\n}\n\nfunction getComponentAttributes($attrs, componentData) {\n var attributes = null;\n\n var update = function update(name, value) {\n attributes = buildAttribute(attributes, name, value);\n };\n\n var attrs = Object.keys($attrs).filter(function (key) {\n return key === \"id\" || key.startsWith(\"data-\");\n }).reduce(function (res, key) {\n res[key] = $attrs[key];\n return res;\n }, {});\n update(\"attrs\", attrs);\n\n if (!componentData) {\n return attributes;\n }\n\n var on = componentData.on,\n props = componentData.props,\n componentDataAttrs = componentData.attrs;\n update(\"on\", on);\n update(\"props\", props);\n Object.assign(attributes.attrs, componentDataAttrs);\n return attributes;\n}\n\nvar eventsListened = [\"Start\", \"Add\", \"Remove\", \"Update\", \"End\"];\nvar eventsToEmit = [\"Choose\", \"Unchoose\", \"Sort\", \"Filter\", \"Clone\"];\nvar readonlyProperties = [\"Move\"].concat(eventsListened, eventsToEmit).map(function (evt) {\n return \"on\" + evt;\n});\nvar draggingElement = null;\nvar props = {\n options: Object,\n list: {\n type: Array,\n required: false,\n default: null\n },\n value: {\n type: Array,\n required: false,\n default: null\n },\n noTransitionOnDrag: {\n type: Boolean,\n default: false\n },\n clone: {\n type: Function,\n default: function _default(original) {\n return original;\n }\n },\n element: {\n type: String,\n default: \"div\"\n },\n tag: {\n type: String,\n default: null\n },\n move: {\n type: Function,\n default: null\n },\n componentData: {\n type: Object,\n required: false,\n default: null\n }\n};\nvar draggableComponent = {\n name: \"draggable\",\n inheritAttrs: false,\n props: props,\n data: function data() {\n return {\n transitionMode: false,\n noneFunctionalComponentMode: false\n };\n },\n render: function render(h) {\n var slots = this.$slots.default;\n this.transitionMode = vuedraggable_isTransition(slots);\n\n var _computeChildrenAndOf = computeChildrenAndOffsets(slots, this.$slots, this.$scopedSlots),\n children = _computeChildrenAndOf.children,\n headerOffset = _computeChildrenAndOf.headerOffset,\n footerOffset = _computeChildrenAndOf.footerOffset;\n\n this.headerOffset = headerOffset;\n this.footerOffset = footerOffset;\n var attributes = getComponentAttributes(this.$attrs, this.componentData);\n return h(this.getTag(), attributes, children);\n },\n created: function created() {\n if (this.list !== null && this.value !== null) {\n helper[\"b\" /* console */].error(\"Value and list props are mutually exclusive! Please set one or another.\");\n }\n\n if (this.element !== \"div\") {\n helper[\"b\" /* console */].warn(\"Element props is deprecated please use tag props instead. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#element-props\");\n }\n\n if (this.options !== undefined) {\n helper[\"b\" /* console */].warn(\"Options props is deprecated, add sortable options directly as vue.draggable item, or use v-bind. See https://github.com/SortableJS/Vue.Draggable/blob/master/documentation/migrate.md#options-props\");\n }\n },\n mounted: function mounted() {\n var _this3 = this;\n\n this.noneFunctionalComponentMode = this.getTag().toLowerCase() !== this.$el.nodeName.toLowerCase() && !this.getIsFunctional();\n\n if (this.noneFunctionalComponentMode && this.transitionMode) {\n throw new Error(\"Transition-group inside component is not supported. Please alter tag value or remove transition-group. Current tag value: \".concat(this.getTag()));\n }\n\n var optionsAdded = {};\n eventsListened.forEach(function (elt) {\n optionsAdded[\"on\" + elt] = delegateAndEmit.call(_this3, elt);\n });\n eventsToEmit.forEach(function (elt) {\n optionsAdded[\"on\" + elt] = emit.bind(_this3, elt);\n });\n var attributes = Object.keys(this.$attrs).reduce(function (res, key) {\n res[Object(helper[\"a\" /* camelize */])(key)] = _this3.$attrs[key];\n return res;\n }, {});\n var options = Object.assign({}, this.options, attributes, optionsAdded, {\n onMove: function onMove(evt, originalEvent) {\n return _this3.onDragMove(evt, originalEvent);\n }\n });\n !(\"draggable\" in options) && (options.draggable = \">*\");\n this._sortable = new external_commonjs_sortablejs_commonjs2_sortablejs_amd_sortablejs_root_Sortable_default.a(this.rootContainer, options);\n this.computeIndexes();\n },\n beforeDestroy: function beforeDestroy() {\n if (this._sortable !== undefined) this._sortable.destroy();\n },\n computed: {\n rootContainer: function rootContainer() {\n return this.transitionMode ? this.$el.children[0] : this.$el;\n },\n realList: function realList() {\n return this.list ? this.list : this.value;\n }\n },\n watch: {\n options: {\n handler: function handler(newOptionValue) {\n this.updateOptions(newOptionValue);\n },\n deep: true\n },\n $attrs: {\n handler: function handler(newOptionValue) {\n this.updateOptions(newOptionValue);\n },\n deep: true\n },\n realList: function realList() {\n this.computeIndexes();\n }\n },\n methods: {\n getIsFunctional: function getIsFunctional() {\n var fnOptions = this._vnode.fnOptions;\n return fnOptions && fnOptions.functional;\n },\n getTag: function getTag() {\n return this.tag || this.element;\n },\n updateOptions: function updateOptions(newOptionValue) {\n for (var property in newOptionValue) {\n var value = Object(helper[\"a\" /* camelize */])(property);\n\n if (readonlyProperties.indexOf(value) === -1) {\n this._sortable.option(value, newOptionValue[property]);\n }\n }\n },\n getChildrenNodes: function getChildrenNodes() {\n if (this.noneFunctionalComponentMode) {\n return this.$children[0].$slots.default;\n }\n\n var rawNodes = this.$slots.default;\n return this.transitionMode ? rawNodes[0].child.$slots.default : rawNodes;\n },\n computeIndexes: function computeIndexes() {\n var _this4 = this;\n\n this.$nextTick(function () {\n _this4.visibleIndexes = _computeIndexes(_this4.getChildrenNodes(), _this4.rootContainer.children, _this4.transitionMode, _this4.footerOffset);\n });\n },\n getUnderlyingVm: function getUnderlyingVm(htmlElt) {\n var index = computeVmIndex(this.getChildrenNodes() || [], htmlElt);\n\n if (index === -1) {\n //Edge case during move callback: related element might be\n //an element different from collection\n return null;\n }\n\n var element = this.realList[index];\n return {\n index: index,\n element: element\n };\n },\n getUnderlyingPotencialDraggableComponent: function getUnderlyingPotencialDraggableComponent(_ref) {\n var vue = _ref.__vue__;\n\n if (!vue || !vue.$options || !isTransitionName(vue.$options._componentTag)) {\n if (!(\"realList\" in vue) && vue.$children.length === 1 && \"realList\" in vue.$children[0]) return vue.$children[0];\n return vue;\n }\n\n return vue.$parent;\n },\n emitChanges: function emitChanges(evt) {\n var _this5 = this;\n\n this.$nextTick(function () {\n _this5.$emit(\"change\", evt);\n });\n },\n alterList: function alterList(onList) {\n if (this.list) {\n onList(this.list);\n return;\n }\n\n var newList = _toConsumableArray(this.value);\n\n onList(newList);\n this.$emit(\"input\", newList);\n },\n spliceList: function spliceList() {\n var _arguments = arguments;\n\n var spliceList = function spliceList(list) {\n return list.splice.apply(list, _toConsumableArray(_arguments));\n };\n\n this.alterList(spliceList);\n },\n updatePosition: function updatePosition(oldIndex, newIndex) {\n var updatePosition = function updatePosition(list) {\n return list.splice(newIndex, 0, list.splice(oldIndex, 1)[0]);\n };\n\n this.alterList(updatePosition);\n },\n getRelatedContextFromMoveEvent: function getRelatedContextFromMoveEvent(_ref2) {\n var to = _ref2.to,\n related = _ref2.related;\n var component = this.getUnderlyingPotencialDraggableComponent(to);\n\n if (!component) {\n return {\n component: component\n };\n }\n\n var list = component.realList;\n var context = {\n list: list,\n component: component\n };\n\n if (to !== related && list && component.getUnderlyingVm) {\n var destination = component.getUnderlyingVm(related);\n\n if (destination) {\n return Object.assign(destination, context);\n }\n }\n\n return context;\n },\n getVmIndex: function getVmIndex(domIndex) {\n var indexes = this.visibleIndexes;\n var numberIndexes = indexes.length;\n return domIndex > numberIndexes - 1 ? numberIndexes : indexes[domIndex];\n },\n getComponent: function getComponent() {\n return this.$slots.default[0].componentInstance;\n },\n resetTransitionData: function resetTransitionData(index) {\n if (!this.noTransitionOnDrag || !this.transitionMode) {\n return;\n }\n\n var nodes = this.getChildrenNodes();\n nodes[index].data = null;\n var transitionContainer = this.getComponent();\n transitionContainer.children = [];\n transitionContainer.kept = undefined;\n },\n onDragStart: function onDragStart(evt) {\n this.context = this.getUnderlyingVm(evt.item);\n evt.item._underlying_vm_ = this.clone(this.context.element);\n draggingElement = evt.item;\n },\n onDragAdd: function onDragAdd(evt) {\n var element = evt.item._underlying_vm_;\n\n if (element === undefined) {\n return;\n }\n\n Object(helper[\"d\" /* removeNode */])(evt.item);\n var newIndex = this.getVmIndex(evt.newIndex);\n this.spliceList(newIndex, 0, element);\n this.computeIndexes();\n var added = {\n element: element,\n newIndex: newIndex\n };\n this.emitChanges({\n added: added\n });\n },\n onDragRemove: function onDragRemove(evt) {\n Object(helper[\"c\" /* insertNodeAt */])(this.rootContainer, evt.item, evt.oldIndex);\n\n if (evt.pullMode === \"clone\") {\n Object(helper[\"d\" /* removeNode */])(evt.clone);\n return;\n }\n\n var oldIndex = this.context.index;\n this.spliceList(oldIndex, 1);\n var removed = {\n element: this.context.element,\n oldIndex: oldIndex\n };\n this.resetTransitionData(oldIndex);\n this.emitChanges({\n removed: removed\n });\n },\n onDragUpdate: function onDragUpdate(evt) {\n Object(helper[\"d\" /* removeNode */])(evt.item);\n Object(helper[\"c\" /* insertNodeAt */])(evt.from, evt.item, evt.oldIndex);\n var oldIndex = this.context.index;\n var newIndex = this.getVmIndex(evt.newIndex);\n this.updatePosition(oldIndex, newIndex);\n var moved = {\n element: this.context.element,\n oldIndex: oldIndex,\n newIndex: newIndex\n };\n this.emitChanges({\n moved: moved\n });\n },\n updateProperty: function updateProperty(evt, propertyName) {\n evt.hasOwnProperty(propertyName) && (evt[propertyName] += this.headerOffset);\n },\n computeFutureIndex: function computeFutureIndex(relatedContext, evt) {\n if (!relatedContext.element) {\n return 0;\n }\n\n var domChildren = _toConsumableArray(evt.to.children).filter(function (el) {\n return el.style[\"display\"] !== \"none\";\n });\n\n var currentDOMIndex = domChildren.indexOf(evt.related);\n var currentIndex = relatedContext.component.getVmIndex(currentDOMIndex);\n var draggedInList = domChildren.indexOf(draggingElement) !== -1;\n return draggedInList || !evt.willInsertAfter ? currentIndex : currentIndex + 1;\n },\n onDragMove: function onDragMove(evt, originalEvent) {\n var onMove = this.move;\n\n if (!onMove || !this.realList) {\n return true;\n }\n\n var relatedContext = this.getRelatedContextFromMoveEvent(evt);\n var draggedContext = this.context;\n var futureIndex = this.computeFutureIndex(relatedContext, evt);\n Object.assign(draggedContext, {\n futureIndex: futureIndex\n });\n var sendEvt = Object.assign({}, evt, {\n relatedContext: relatedContext,\n draggedContext: draggedContext\n });\n return onMove(sendEvt, originalEvent);\n },\n onDragEnd: function onDragEnd() {\n this.computeIndexes();\n draggingElement = null;\n }\n }\n};\n\nif (typeof window !== \"undefined\" && \"Vue\" in window) {\n window.Vue.component(\"draggable\", draggableComponent);\n}\n\n/* harmony default export */ var vuedraggable = (draggableComponent);\n// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js\n\n\n/* harmony default export */ var entry_lib = __webpack_exports__[\"default\"] = (vuedraggable);\n\n\n\n/***/ })\n\n/******/ })[\"default\"];\n});\n//# sourceMappingURL=vuedraggable.umd.js.map","\n<div class=\"ui-record\">\n <el-popover\n placement=\"bottom-start\"\n trigger=\"click\"\n popper-class=\"ui-search__popover\"\n width=\"600\" \n v-model=\"showPropover\"\n :offset=\"-172\">\n <div class=\"ui-record__list\">\n <div class=\"ui-record__saves\">\n <div class=\"ui-record__item\" \n v-for=\"(item, index) in recordData.saves\"\n :key=\"index\"\n :title=\"item.map(v => `${v.label}:${v.valueLabel || v.value}`).join(';')\"\n @click=\"handleShortcut(item)\">\n <span v-for=\"(v, index) in item\" :key=\"index\">{{v.label}}:{{v.valueLabel || v.value}}</span>\n <el-tooltip class=\"item\" effect=\"dark\" content=\"移除常用筛选\" placement=\"top-start\">\n <i class=\"el-icon-remove ui-flag--icon\" @click.stop=\"handleOperation(index, 'saves')\"></i>\n </el-tooltip>\n </div>\n </div>\n <div class=\"ui-record__temps\">\n <div class=\"ui-record__item\" \n v-for=\"(item, index) in recordData.temps\"\n :key=\"index\"\n :title=\"item.map(v => `${v.label}:${v.valueLabel || v.value}`).join(';')\" \n @click=\"handleShortcut(item)\">\n <span v-for=\"(v, i) in item\" :key=\"i\">{{v.label}}:{{v.valueLabel || v.value}}</span>\n <el-tooltip class=\"item\" effect=\"dark\" content=\"添加到常用筛选\" placement=\"top-start\">\n <i class=\"el-icon-circle-plus ui-flag--icon\" @click.stop=\"handleOperation(index, 'temps')\"></i>\n </el-tooltip>\n </div>\n </div>\n </div>\n <el-button slot=\"reference\" class=\"ui-search__button--more\" type=\"text\">筛选历史 <i class=\"el-icon-caret-right\"></i></el-button>\n </el-popover>\n</div>\n","<template>\r\n <div class=\"ui-record\">\r\n <el-popover\r\n placement=\"bottom-start\"\r\n trigger=\"click\"\r\n popper-class=\"ui-search__popover\"\r\n width=\"600\" \r\n v-model=\"showPropover\"\r\n :offset=\"-172\">\r\n <div class=\"ui-record__list\">\r\n <div class=\"ui-record__saves\">\r\n <div class=\"ui-record__item\" \r\n v-for=\"(item, index) in recordData.saves\"\r\n :key=\"index\"\r\n :title=\"item.map(v => `${v.label}:${v.valueLabel || v.value}`).join(';')\"\r\n @click=\"handleShortcut(item)\">\r\n <span v-for=\"(v, index) in item\" :key=\"index\">{{v.label}}:{{v.valueLabel || v.value}}</span>\r\n <el-tooltip class=\"item\" effect=\"dark\" content=\"移除常用筛选\" placement=\"top-start\">\r\n <i class=\"el-icon-remove ui-flag--icon\" @click.stop=\"handleOperation(index, 'saves')\"></i>\r\n </el-tooltip>\r\n </div>\r\n </div>\r\n <div class=\"ui-record__temps\">\r\n <div class=\"ui-record__item\" \r\n v-for=\"(item, index) in recordData.temps\"\r\n :key=\"index\"\r\n :title=\"item.map(v => `${v.label}:${v.valueLabel || v.value}`).join(';')\" \r\n @click=\"handleShortcut(item)\">\r\n <span v-for=\"(v, i) in item\" :key=\"i\">{{v.label}}:{{v.valueLabel || v.value}}</span>\r\n <el-tooltip class=\"item\" effect=\"dark\" content=\"添加到常用筛选\" placement=\"top-start\">\r\n <i class=\"el-icon-circle-plus ui-flag--icon\" @click.stop=\"handleOperation(index, 'temps')\"></i>\r\n </el-tooltip>\r\n </div>\r\n </div>\r\n </div>\r\n <el-button slot=\"reference\" class=\"ui-search__button--more\" type=\"text\">筛选历史 <i class=\"el-icon-caret-right\"></i></el-button>\r\n </el-popover>\r\n </div>\r\n</template>\r\n<script>\r\nexport default {\r\n props: {\r\n configKey: {\r\n type: String,\r\n default: ''\r\n },\r\n\r\n current: {\r\n type: Array,\r\n default() {\r\n return []\r\n }\r\n }\r\n },\r\n data() {\r\n return {\r\n showPropover: false,\r\n recordData: {\r\n saves: [],\r\n temps: []\r\n }\r\n }\r\n },\r\n created() {\r\n let locData = localStorage.getItem(`SaveRecord_${this.configKey}`);\r\n this.recordData = locData ? JSON.parse(locData) : {\r\n saves: [],\r\n temps: []\r\n }\r\n },\r\n methods: {\r\n handleOperation(index, type) {\r\n if (type == 'temps') {\r\n const addItem = this.recordData.temps[index];\r\n this.recordData.saves.unshift(addItem);\r\n } else {\r\n this.recordData.saves.splice(index, 1);\r\n }\r\n\r\n this.handelSaveRecord();\r\n },\r\n async handleShortcut(item) {\r\n this.$parent.$children.forEach(ref => {\r\n const findItem = item.find(v => v.label == ref.label);\r\n if (findItem) {\r\n ref.modelForm = findItem.value;\r\n } else if (ref.label) {\r\n // ref.modelForm = '';\r\n if (ref.$el.style.display !== 'none') {\r\n if (Array.isArray(ref.modelForm)) ref.modelForm = [];\r\n else if (typeof ref.modelForm == 'number') ref.modelForm = undefined;\r\n else ref.modelForm = '';\r\n }\r\n }\r\n })\r\n\r\n this.showPropover = false;\r\n await this.$nextTick();\r\n this.$parent.handleQuery();\r\n },\r\n\r\n // 保存缓存\r\n handelSaveRecord() {\r\n if (this.recordData.temps.length > 10) {\r\n this.recordData.temps.splice(10);\r\n }\r\n localStorage.setItem(`SaveRecord_${this.configKey}`, JSON.stringify(this.recordData));\r\n }\r\n },\r\n watch: {\r\n current: {\r\n handler(val) {\r\n if (val.length) {\r\n const findIndex = this.recordData.temps.findIndex(item => {\r\n\r\n // 先排序再对比\r\n const sortA = JSON.parse(JSON.stringify(item)).sort((v, nv) => v.label.localeCompare(nv.label));\r\n const sortB = JSON.parse(JSON.stringify(val)).sort((v, nv) => v.label.localeCompare(nv.label));\r\n\r\n return JSON.stringify(sortA) == JSON.stringify(sortB)\r\n });\r\n if (findIndex < 0) {\r\n this.recordData.temps.unshift(val);\r\n this.handelSaveRecord();\r\n }\r\n }\r\n },\r\n deep: true\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n\r\n.ui-record {\r\n align-self: flex-end;\r\n\r\n &__temps, &__saves {\r\n display: flex;\r\n flex-wrap: wrap;\r\n width: 100%;\r\n border: 1px solid #f1f1f1;\r\n border-radius: 4px;\r\n padding: 20px 10px 0 10px;\r\n position: relative;\r\n box-sizing: border-box;\r\n\r\n &::before {\r\n content: '历史筛选';\r\n display: block;\r\n position: absolute;\r\n top: -10px;\r\n left: 10px;\r\n background-color: #FFF;\r\n font-size: 12px;\r\n padding: 0 10px;\r\n color: #999;\r\n }\r\n }\r\n\r\n &__saves {\r\n margin-bottom: 20px;\r\n\r\n &::before {\r\n content: '常用筛选';\r\n }\r\n }\r\n\r\n &__item {\r\n font-size: 12px;\r\n margin-right: 8px;\r\n margin-bottom: 8px;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n border: 1px solid #f1f1f1;\r\n padding: 5px;\r\n background: #fefefe;\r\n border-radius: 4px;\r\n color: #666;\r\n align-self: flex-end;\r\n cursor: pointer;\r\n position: relative;\r\n\r\n span {\r\n background-color: #f1f1f1;\r\n padding: 2px 4px;\r\n margin-left: 5px;\r\n border-radius: 4px;\r\n\r\n &:first-child {\r\n margin-left: 0;\r\n }\r\n }\r\n\r\n &:hover {\r\n border-color: #b2d8ff;\r\n \r\n span {\r\n background-color: #b2d8ff;\r\n color: #FFF;\r\n }\r\n\r\n .ui-flag--icon {\r\n display: block;\r\n }\r\n }\r\n\r\n .ui-flag--icon {\r\n position: absolute;\r\n right: 5px;\r\n top: 50%;\r\n margin-top: -8px;\r\n font-size: 16px;\r\n color: #409EFF;\r\n display: none;\r\n background-color: #FFF;\r\n height: 18px;\r\n line-height: 18px;\r\n width: 18px;\r\n border-radius: 50%;\r\n text-align: center;\r\n box-shadow: 0 0 4px 1px #409EFF;\r\n }\r\n }\r\n}\r\n\r\n.ui-search__button {\r\n &--more {\r\n padding: 0 0 4px 0;\r\n vertical-align: bottom;\r\n border-bottom: 1px solid #409EFF !important;\r\n border-radius: 0;\r\n margin-right: 10px;\r\n align-self: flex-end;\r\n margin-bottom: 2px;\r\n }\r\n}\r\n</style>","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)\n * are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,\n * as-is, to `callback` when the throttled-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds\n * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed\n * one final time after the last throttled-function call. (After the throttled-function has not been called for\n * `delay` milliseconds, the internal counter is reset).\n * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback\n * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that\n * callback will never executed if both noLeading = true and noTrailing = true.\n * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is\n * false (at end), schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nfunction throttle (delay, callback, options) {\n var _ref = options || {},\n _ref$noTrailing = _ref.noTrailing,\n noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,\n _ref$noLeading = _ref.noLeading,\n noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,\n _ref$debounceMode = _ref.debounceMode,\n debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n\n\n var timeoutID;\n var cancelled = false; // Keep track of the last time `callback` was executed.\n\n var lastExec = 0; // Function to clear existing timeout\n\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n } // Function to cancel next exec\n\n\n function cancel(options) {\n var _ref2 = options || {},\n _ref2$upcomingOnly = _ref2.upcomingOnly,\n upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;\n\n clearExistingTimeout();\n cancelled = !upcomingOnly;\n }\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n\n\n function wrapper() {\n for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n arguments_[_key] = arguments[_key];\n }\n\n var self = this;\n var elapsed = Date.now() - lastExec;\n\n if (cancelled) {\n return;\n } // Execute `callback` and update the `lastExec` timestamp.\n\n\n function exec() {\n lastExec = Date.now();\n callback.apply(self, arguments_);\n }\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n\n\n function clear() {\n timeoutID = undefined;\n }\n\n if (!noLeading && debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`\n * and noLeading != true.\n */\n exec();\n }\n\n clearExistingTimeout();\n\n if (debounceMode === undefined && elapsed > delay) {\n if (noLeading) {\n /*\n * In throttle mode with noLeading, if `delay` time has\n * been exceeded, update `lastExec` and schedule `callback`\n * to execute after `delay` ms.\n */\n lastExec = Date.now();\n\n if (!noTrailing) {\n timeoutID = setTimeout(debounceMode ? clear : exec, delay);\n }\n } else {\n /*\n * In throttle mode without noLeading, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n }\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n\n wrapper.cancel = cancel; // Return the wrapper function.\n\n return wrapper;\n}\n\n/* eslint-disable no-undefined */\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n *\n * @returns {Function} A new, debounced function.\n */\n\nfunction debounce (delay, callback, options) {\n var _ref = options || {},\n _ref$atBegin = _ref.atBegin,\n atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;\n\n return throttle(delay, callback, {\n debounceMode: atBegin !== false\n });\n}\n\nexport { debounce, throttle };\n//# sourceMappingURL=index.js.map\n","\n<div class=\"ui-search\" ref=\"Search\" v-loading=\"loadSearch\">\n <div class=\"ui-search__main\">\n <slot v-if=\"!useConfig\"></slot>\n <div v-else v-show=\"false\"><slot></slot></div>\n <template v-if=\"!loadSearch && useConfig\">\n <DefaultItem v-for=\"(vnode, index) in childItems\" :key=\"index\" :vnode=\"vnode\"></DefaultItem>\n </template>\n </div>\n <div class=\"ui-search__footer\">\n <el-button size=\"small\" icon=\"el-icon-refresh\" @click=\"handleReset\">重置</el-button>\n <el-button style=\"margin-right: 10px;\" size=\"small\" icon=\"el-icon-search\" type=\"primary\" @click=\"handleQuery\">查询</el-button>\n <div style=\"align-self: flex-end;\">\n <el-popover\n placement=\"bottom-start\"\n trigger=\"click\"\n popper-class=\"ui-search__popover\"\n v-if=\"showMore\"\n :offset=\"-172\"\n :width=\"containerWidth\">\n <div class=\"ui-more__select\">\n <el-row>\n <el-col v-for=\"(vnode, index) in hideItems\" :key=\"index\" v-bind=\"{sm: 6, lg: 4, ...vnode.$attrs, ...vnode.$options.propsData }\">\n <template v-if=\"!loadSearch && useConfig\">\n <DefaultItem :vnode=\"vnode\"></DefaultItem>\n </template>\n <template v-else-if=\"!loadSearch\">\n <DefaultItem :vnode=\"vnode\"></DefaultItem>\n </template>\n </el-col>\n </el-row>\n </div>\n <el-button slot=\"reference\" class=\"ui-search__button--more\" type=\"text\">更多筛选 <i class=\"el-icon-caret-right\"></i></el-button>\n </el-popover>\n </div>\n <el-button v-if=\"useConfig\" @click=\"handleShowConfig\" class=\"ui-search__button--more\" type=\"text\">筛选配置 <i class=\"el-icon-setting\"></i></el-button>\n <Record :config-key=\"configKey\" :current=\"searchLoc\" />\n <slot name=\"footer\"></slot>\n <div class=\"ui-search__cache\" v-show=\"searchLoc.length\" :title=\"searchLoc.map(v => `${v.label}:${v.valueLabel || v.value}`).join(';')\">\n <span v-for=\"(item, index) in searchLoc\" :key=\"index\">{{item.label}}:{{item.valueLabel || item.value}}</span>\n </div>\n </div>\n <el-drawer\n title=\"筛选配置\"\n direction=\"btt\"\n size=\"100%\"\n :withHeader=\"false\"\n :modal=\"false\"\n :modal-append-to-body=\"false\"\n :visible.sync=\"showConfig\">\n <div class=\"ui-search--sort\">\n <div class=\"ui-sort__content\">\n <el-checkbox-group v-model=\"checkItems\" size=\"mini\">\n <draggable class=\"ui-draggable\" v-model=\"sortItems\"\n animation=\"100\" chosenClass=\"ui-dragmove\">\n <el-checkbox border :label=\"item\" v-for=\"(item, index) in sortItems\" :key=\"index\"></el-checkbox>\n </draggable>\n </el-checkbox-group>\n </div>\n <div class=\"ui-sort__footer\">\n <el-button type=\"primary\" size=\"mini\" @click=\"handleRenderConfig\">确认</el-button>\n <el-button size=\"mini\" @click=\"showConfig = !showConfig\">取消</el-button>\n </div>\n </div>\n </el-drawer>\n</div>\n","<template>\r\n <div class=\"ui-search\" ref=\"Search\" v-loading=\"loadSearch\">\r\n <div class=\"ui-search__main\">\r\n <slot v-if=\"!useConfig\"></slot>\r\n <div v-else v-show=\"false\"><slot></slot></div>\r\n <template v-if=\"!loadSearch && useConfig\">\r\n <DefaultItem v-for=\"(vnode, index) in childItems\" :key=\"index\" :vnode=\"vnode\"></DefaultItem>\r\n </template>\r\n </div>\r\n <div class=\"ui-search__footer\">\r\n <el-button size=\"small\" icon=\"el-icon-refresh\" @click=\"handleReset\">重置</el-button>\r\n <el-button style=\"margin-right: 10px;\" size=\"small\" icon=\"el-icon-search\" type=\"primary\" @click=\"handleQuery\">查询</el-button>\r\n <div style=\"align-self: flex-end;\">\r\n <el-popover\r\n placement=\"bottom-start\"\r\n trigger=\"click\"\r\n popper-class=\"ui-search__popover\"\r\n v-if=\"showMore\"\r\n :offset=\"-172\"\r\n :width=\"containerWidth\">\r\n <div class=\"ui-more__select\">\r\n <el-row>\r\n <el-col v-for=\"(vnode, index) in hideItems\" :key=\"index\" v-bind=\"{sm: 6, lg: 4, ...vnode.$attrs, ...vnode.$options.propsData }\">\r\n <template v-if=\"!loadSearch && useConfig\">\r\n <DefaultItem :vnode=\"vnode\"></DefaultItem>\r\n </template>\r\n <template v-else-if=\"!loadSearch\">\r\n <DefaultItem :vnode=\"vnode\"></DefaultItem>\r\n </template>\r\n </el-col>\r\n </el-row>\r\n </div>\r\n <el-button slot=\"reference\" class=\"ui-search__button--more\" type=\"text\">更多筛选 <i class=\"el-icon-caret-right\"></i></el-button>\r\n </el-popover>\r\n </div>\r\n <el-button v-if=\"useConfig\" @click=\"handleShowConfig\" class=\"ui-search__button--more\" type=\"text\">筛选配置 <i class=\"el-icon-setting\"></i></el-button>\r\n <Record :config-key=\"configKey\" :current=\"searchLoc\" />\r\n <slot name=\"footer\"></slot>\r\n <div class=\"ui-search__cache\" v-show=\"searchLoc.length\" :title=\"searchLoc.map(v => `${v.label}:${v.valueLabel || v.value}`).join(';')\">\r\n <span v-for=\"(item, index) in searchLoc\" :key=\"index\">{{item.label}}:{{item.valueLabel || item.value}}</span>\r\n </div>\r\n </div>\r\n <el-drawer\r\n title=\"筛选配置\"\r\n direction=\"btt\"\r\n size=\"100%\"\r\n :withHeader=\"false\"\r\n :modal=\"false\"\r\n :modal-append-to-body=\"false\"\r\n :visible.sync=\"showConfig\">\r\n <div class=\"ui-search--sort\">\r\n <div class=\"ui-sort__content\">\r\n <el-checkbox-group v-model=\"checkItems\" size=\"mini\">\r\n <draggable class=\"ui-draggable\" v-model=\"sortItems\"\r\n animation=\"100\" chosenClass=\"ui-dragmove\">\r\n <el-checkbox border :label=\"item\" v-for=\"(item, index) in sortItems\" :key=\"index\"></el-checkbox>\r\n </draggable>\r\n </el-checkbox-group>\r\n </div>\r\n <div class=\"ui-sort__footer\">\r\n <el-button type=\"primary\" size=\"mini\" @click=\"handleRenderConfig\">确认</el-button>\r\n <el-button size=\"mini\" @click=\"showConfig = !showConfig\">取消</el-button>\r\n </div>\r\n </div>\r\n </el-drawer>\r\n </div>\r\n</template>\r\n<script>\r\nimport draggable from 'vuedraggable';\r\nimport Record from './Record.vue';\r\nimport DefaultItem from './DefaultItem.vue';\r\nimport { debounce } from 'throttle-debounce';\r\nexport default {\r\n name: 'ComSearch',\r\n components: {\r\n draggable,\r\n Record,\r\n DefaultItem\r\n },\r\n props: {\r\n searchCfg: {\r\n type: Array,\r\n default() {\r\n return []\r\n }\r\n },\r\n \r\n // flagId 为空则取路由\r\n flagId: {\r\n type: String,\r\n default: ''\r\n },\r\n\r\n useConfig: {\r\n type: Boolean,\r\n default: true\r\n }\r\n },\r\n data() {\r\n return {\r\n containerWidth: '200px',\r\n hideItems: [],\r\n\r\n // 默认的搜索条件\r\n defaultVNode: [],\r\n defaultItems: [],\r\n showConfig: false,\r\n checkItems: [],\r\n sortItems: [],\r\n\r\n loadSearch: false,\r\n\r\n // 搜索缓存\r\n searchLoc: [],\r\n\r\n // 搜索items\r\n childItems: [],\r\n\r\n // 初始化\r\n initLoad: false,\r\n\r\n configKey: this.flagId || this.$route.path,\r\n\r\n handleWindowResize: null,\r\n\r\n\r\n waitTimeout: ''\r\n }\r\n },\r\n computed: {\r\n showMore() {\r\n return !!this.hideItems.length;\r\n }\r\n },\r\n methods: {\r\n handleQuery() {\r\n\r\n const empty = (value, type) => {\r\n if (value) {\r\n if (value instanceof Date) return false;\r\n\r\n if (Array.isArray(value) && type == 'inputrange') {\r\n return !value[0] && !value[1];\r\n } else {\r\n return value instanceof Object ? !Object.entries(value).length : false\r\n }\r\n } else if (typeof value === 'boolean') {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n this.searchLoc = this.$children.reduce((temp, item) => {\r\n if (item.label && !empty(item.modelForm, item.type)) {\r\n\r\n let valueLabel;\r\n if (item.options && Object.entries(item.options).length > 0) {\r\n if (Array.isArray(item.modelForm)) {\r\n valueLabel = item.modelForm.map(iv => item.selectOption.find(v => v.value == iv)?.label || iv)\r\n } else {\r\n valueLabel = item.selectOption.find(v => v.value == item.modelForm)?.label || item.modelForm\r\n }\r\n }\r\n\r\n return [\r\n ...temp,\r\n {\r\n label: item.label,\r\n value: item.modelForm,\r\n valueLabel\r\n }\r\n ]\r\n } else {\r\n return temp;\r\n }\r\n }, []);\r\n\r\n const queryFn = this.$parent.handleQuery;\r\n if (queryFn) {\r\n queryFn();\r\n } else {\r\n this.$emit('query');\r\n }\r\n },\r\n handleReset() {\r\n const resetFn = this.$parent.handleReset;\r\n if (resetFn) {\r\n resetFn();\r\n } else {\r\n this.$emit('reset');\r\n }\r\n },\r\n\r\n waitRenderItem() {\r\n return new Promise((resolve) => {\r\n clearTimeout(this.waitTimeout);\r\n const itemEls = this.$refs.Search.querySelectorAll('.ui-form__item');\r\n for (let i = 0; i < itemEls.length; i++) {\r\n const el = itemEls[i];\r\n if (el.getBoundingClientRect().right > 0) {\r\n return resolve(true);\r\n }\r\n }\r\n \r\n this.waitTimeout = setTimeout(async () => {\r\n resolve(await this.waitRenderItem());\r\n }, 100)\r\n })\r\n },\r\n\r\n async handleLayoutItem(renderEle = false) {\r\n \r\n await this.waitRenderItem();\r\n\r\n const containerEl = this.$refs.Search;\r\n const itemEls = containerEl.querySelectorAll('.ui-form__item');\r\n \r\n // 重置item 状态\r\n itemEls.forEach(ele => ele.className = ele.className.replace('ui-form__item--hide', ''))\r\n\r\n const { right: containerRight } = containerEl.getBoundingClientRect();\r\n this.containerWidth = containerEl.offsetWidth - 80;\r\n\r\n if (this.useConfig) {\r\n itemEls.forEach(ele => {\r\n try {\r\n const eleFlagLabel = ele.__vue__.label || ele.__vue__.$children[0].label;\r\n if (!this.checkItems.includes(eleFlagLabel)) {\r\n ele.style.display = 'none';\r\n } else {\r\n ele.style.display = 'block';\r\n }\r\n } catch(e) {\r\n console.log(ele.__vue__, ele);\r\n }\r\n }) \r\n }\r\n\r\n const hideEls = [];\r\n itemEls.forEach(ele => {\r\n const { right: itemRight } = ele.getBoundingClientRect();\r\n if (itemRight > containerRight) {\r\n ele.className = `${ele.className} ui-form__item--hide`;\r\n hideEls.push(ele);\r\n }\r\n })\r\n if (renderEle === true) return;\r\n\r\n if (this.useConfig) {\r\n this.hideItems = hideEls.map(item => {\r\n return this.childItems.find((v, i) => {\r\n const options = item.__vue__.vnode ? item.__vue__.vnode.$options : item.__vue__.$options;\r\n return v.$options.propsData.label == options.propsData.label;\r\n })\r\n }).filter(item => !!item);\r\n } else {\r\n this.hideItems = this.$children.filter(item => item.$el.className.indexOf('ui-form__item--hide') > -1);\r\n }\r\n this.loadSearch = false;\r\n },\r\n changeOptions(item) {\r\n this.$parent.changeOptions(item);\r\n },\r\n\r\n // 显示配置\r\n handleShowConfig() {\r\n this.showConfig = true;\r\n },\r\n\r\n // 渲染配置\r\n async handleRenderConfig() {\r\n\r\n // 配置存至缓存\r\n const saveConfig = {\r\n checkItems: this.checkItems,\r\n sortItems: this.sortItems\r\n }\r\n localStorage.setItem(`SearchCfg__${this.configKey}`, JSON.stringify(saveConfig));\r\n\r\n const sortItems = this.sortItems.map(item => {\r\n const findItem = this.childItems.find(v => v.$options.propsData.label == item);\r\n return findItem;\r\n })\r\n\r\n this.childItems = sortItems;\r\n\r\n await this.$nextTick();\r\n\r\n this.showConfig = false;\r\n this.handleLayoutItem();\r\n }\r\n },\r\n async mounted() {\r\n\r\n this.childItems = this.$slots.default.map(vnode => {\r\n return {\r\n componentOptions: vnode.componentOptions,\r\n $attrs: vnode.componentInstance.$attrs,\r\n constructor: vnode.componentInstance.constructor,\r\n $listeners: vnode.componentInstance.$listeners,\r\n $options: vnode.componentInstance.$options,\r\n $scopedSlots: vnode.componentInstance.$scopedSlots,\r\n $slots: vnode.componentInstance.$slots,\r\n staticStyle: vnode.data.staticStyle\r\n }\r\n });\r\n\r\n this.initLoad = true;\r\n await this.$nextTick();\r\n\r\n if (this.useConfig) {\r\n \r\n this.checkItems = this.childItems.map(item => item.$options.propsData.label);\r\n this.sortItems = this.childItems.map(item => item.$options.propsData.label);\r\n this.handleLayoutItem();\r\n\r\n \r\n // 读取缓存配置\r\n const locConfig = JSON.parse(localStorage.getItem(`SearchCfg__${this.configKey}`) || \"{}\");\r\n if (locConfig.checkItems) {\r\n await this.$nextTick();\r\n this.checkItems = locConfig.checkItems;\r\n this.sortItems = locConfig.sortItems;\r\n this.handleRenderConfig();\r\n }\r\n } else {\r\n this.loadSearch = false;\r\n this.handleLayoutItem();\r\n }\r\n\r\n this.handleWindowResize = debounce(100, this.handleLayoutItem);\r\n\r\n window.addEventListener('resize', this.handleWindowResize);\r\n },\r\n activated() {\r\n\t\tthis.handleLayoutItem();\r\n\t},\r\n beforeDestroy() {\r\n window.removeEventListener('resize', this.handleWindowResize);\r\n },\r\n watch: {\r\n childItems() {\r\n this.loadSearch = true;\r\n this.$nextTick().then(() => {\r\n this.loadSearch = false;\r\n })\r\n },\r\n hideItems(val, oldVal) {\r\n\r\n if (oldVal.length == val.length && oldVal.length == 0) return;\r\n\r\n this.loadSearch = true;\r\n this.$nextTick().then(async () => {\r\n this.loadSearch = false;\r\n\r\n await this.$nextTick();\r\n this.handleLayoutItem(true);\r\n })\r\n }\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n .ui-search {\r\n height: 138px;\r\n box-sizing: border-box;\r\n margin: 10px 10px 0 10px;\r\n padding: 20px;\r\n // box-shadow: 0 0 5px 2px #e7e7e7;\r\n background-color: #FFF;\r\n border: 1px solid @color-border;\r\n border-radius: 4px;\r\n box-shadow: 0 0 4px 2px #eee;\r\n position: relative;\r\n\r\n /deep/ .el-drawer__wrapper {\r\n position: absolute;\r\n }\r\n\r\n &__main {\r\n display: flex;\r\n }\r\n\r\n &__footer {\r\n display: flex;\r\n margin-top: 10px;\r\n align-items: center;\r\n }\r\n\r\n &__cache {\r\n font-size: 12px;\r\n // margin-left: auto;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n border: 1px solid #f1f1f1;\r\n padding: 5px;\r\n background: #fefefe;\r\n border-radius: 4px;\r\n color: #666;\r\n align-self: flex-end;\r\n cursor: pointer;\r\n\r\n span {\r\n background-color: #f1f1f1;\r\n padding: 2px 4px;\r\n margin-left: 5px;\r\n border-radius: 4px;\r\n\r\n &:first-child {\r\n margin-left: 0;\r\n }\r\n }\r\n }\r\n\r\n .ui-search__button {\r\n\r\n &--more {\r\n padding: 0 0 4px 0;\r\n vertical-align: bottom;\r\n border-bottom: 1px solid #409EFF;\r\n border-radius: 0;\r\n margin-right: 10px;\r\n align-self: flex-end;\r\n margin-bottom: 2px;\r\n }\r\n }\r\n\r\n /deep/ .ui-form__item {\r\n display: block;\r\n min-width: 150px;\r\n\r\n &--inputrange {\r\n min-width: 160px;\r\n }\r\n\r\n &--hide {\r\n display: none !important;\r\n }\r\n\r\n &--daterange {\r\n min-width: 200px;\r\n }\r\n }\r\n\r\n /deep/ .ui-item__label {\r\n width: unset;\r\n text-align: left;\r\n margin-bottom: 5px;\r\n }\r\n\r\n /deep/ .el-cascader .el-input {\r\n display: flex;\r\n }\r\n\r\n /deep/ .ui-input__range {\r\n max-width: unset;\r\n }\r\n\r\n &--sort {\r\n padding: 10px;\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n }\r\n\r\n .ui-sort__content {\r\n\r\n flex: 1;\r\n margin-bottom: 10px;\r\n border-bottom: 1px solid #f1f1f1;\r\n\r\n .el-checkbox {\r\n margin-right: 10px;\r\n margin-left: 0 !important;\r\n margin-bottom: 10px;\r\n }\r\n }\r\n\r\n .ui-sort__footer {\r\n // margin-top: auto;\r\n }\r\n }\r\n\r\n .ui-more__select {\r\n \r\n .el-col {\r\n margin-bottom: 10px;\r\n }\r\n\r\n /deep/ .ui-input__range {\r\n max-width: unset;\r\n }\r\n\r\n /deep/ .el-cascader .el-input {\r\n display: flex;\r\n }\r\n }\r\n\r\n .ui-dragmove {\r\n background-color: #FFF;\r\n }\r\n</style>","import Vue from 'vue';\r\nimport ComComponent from './src/index.vue';\r\n\r\ntype SFCWithInstall<T> = T & { install(app: typeof Vue): void }; // vue 安装\r\n\r\n// 安装\r\nComComponent.install = (app: typeof Vue) => {\r\n app.component(ComComponent.name, ComComponent);\r\n};\r\nconst InComComponent: SFCWithInstall<typeof ComComponent> = ComComponent; // 增加类型\r\nexport default InComComponent;","\r\n/**\r\n * 计算表格高度\r\n * staticNum { number } \r\n * @param isTable { boolean } 是否计算列表页表格\r\n * */\r\n export function countTableHeight(staticNum = 0, isTable = true, staticClass:any = null) {\r\n\r\n const pageCountEls:any = staticClass ? staticClass.map(str => document.querySelector(str)) : document.querySelectorAll('.ui-page__main:not(.v-leave) > div');\r\n const pageOtherEles:any = [];\r\n if (isTable) {\r\n const paginationEl:any = document.querySelector('.ui-pagination');\r\n const headerEl:any = document.querySelector('.ui-container__header');\r\n const tabsEl:any = headerEl?.querySelector('.ui-tabs') ? null : document.querySelector('.ui-tabs');\r\n const tableTab:any = document.querySelector('.ui-table__tab');\r\n\r\n pageOtherEles.push(...[\r\n paginationEl?.offsetHeight || 0,\r\n headerEl?.offsetHeight || 0,\r\n tabsEl?.offsetHeight || 0,\r\n tableTab?.offsetHeight || 0\r\n ].filter(item => !!item));\r\n }\r\n\r\n let tableHeight = staticNum + pageOtherEles.reduce((sum, num) => sum + num, 0);\r\n \r\n let userAgent = navigator.userAgent;\r\n for (let i = 0; i < pageCountEls.length; i++) {\r\n\r\n // 获取容器元素\r\n let ele = pageCountEls[i];\r\n if (!ele || ele.className.indexOf('ui-table') > -1) continue;\r\n tableHeight += ele.offsetHeight;\r\n\r\n let eleMargin, eleTBMargin;\r\n let eleCss:any = document?.defaultView?.getComputedStyle(ele);\r\n if (userAgent.indexOf('Firefox') > -1) {\r\n eleTBMargin = parseInt(eleCss['margin-top']) + parseInt(eleCss['margin-bottom']);\r\n } else if (userAgent.indexOf('compatible') > -1 && userAgent.indexOf(\"MSIE\") > -1 && !(userAgent.indexOf(\"Opera\") > -1)) {\r\n let ieCss = ele.currentStyle;\r\n eleTBMargin = parseInt(ieCss['marginTop']) + parseInt(ieCss['marginBottom']);\r\n } else {\r\n eleMargin = eleCss.margin.split(' ');\r\n\r\n if (eleMargin.length == 1) {\r\n eleTBMargin = parseInt(eleMargin[0]) * 2;\r\n } else {\r\n const [mt, mr, mb, ml] = eleMargin;\r\n eleTBMargin = parseInt(mb) ? parseInt(mt) + parseInt(mb) : parseInt(mt);\r\n }\r\n }\r\n\r\n tableHeight = eleTBMargin + tableHeight;\r\n }\r\n tableHeight = window.innerHeight - tableHeight;\r\n return tableHeight;\r\n }\r\n \r\n // 表格INX\r\n export function autoAddTableInx(inx) {\r\n let i = parseInt(inx) + 1 + '';\r\n let first = '0';\r\n return first.repeat(4 - i.length) + i\r\n }\r\n\r\n ","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","export default {}","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '&quot;');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n var valuesArray = split.call(String(obj), ',');\n var valuesJoined = '';\n for (var i = 0; i < valuesArray.length; ++i) {\n valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));\n }\n return [formatter(keyValue) + (commaRoundTrip && isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined];\n }\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('&#10003;'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","import qs from 'qs';\r\nconst separator = '@';\r\nexport const isPresetProp = (prop, separator) => {\r\n\tif (!separator) return false;\r\n\tlet propArr = prop?.split(separator);\r\n\treturn propArr?.length > 1;\r\n};\r\nexport const processPresetProp = (prop, separator) => {\r\n\tif (!isPresetProp(prop, separator)) return {};\r\n\tconst propArr = prop.split(separator);\r\n\tconst [field, typeArr] = propArr;\r\n\tconst [type, params_] = typeArr.split('?');\r\n\r\n\tlet params = params_ ? qs.parse(params_) : {};\r\n\treturn {\r\n\t\tfield,\r\n\t\ttype,\r\n\t\tparams,\r\n\t};\r\n};\r\nexport const presetPropMap = {\r\n\timage(row, { field, params }) {\r\n\t\tconst src = row[field].split('|');\r\n\t\tconst size = params.size || 59;\r\n\t\treturn ['com-image', { attrs: { src, size } }];\r\n\t},\r\n\tlink(row, { field, params }) {\r\n\t\tconst text = row[field];\r\n\t\tlet { target, href, type, underline } = params;\r\n\r\n\t\ttarget = target || '_blank';\r\n\t\thref = row[href] || text;\r\n\t\ttype = type || 'primary';\r\n\t\tunderline = !!underline;\r\n\t\treturn [\r\n\t\t\t'el-link',\r\n\t\t\t{\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\thref,\r\n\t\t\t\t\ttype,\r\n\t\t\t\t\tunderline,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\ttext,\r\n\t\t];\r\n\t},\r\n};\r\n","// import Vue from 'vue';\r\nimport { processPresetProp } from './presetConfig';\r\n// Vue.component('table-preset-prop', {\r\n// \tfunctional: true,\r\n// \tprops: {\r\n// \t\ttableProp: {},\r\n// \t\trow: {},\r\n// \t},\r\n// \trender: function (createElement, context) {\r\n// \t\tconst getCurrentComponent = (context) => {\r\n// \t\t\tconst { tableProp, row } = context.props;\r\n// \t\t\tconst { tablePreset } = context.parent.$UICONFIG;\r\n// \t\t\tconst { separator, presetPropMap } = tablePreset;\r\n// \t\t\tconst { field, type, params } = processPresetProp(tableProp, separator);\r\n// \t\t\treturn presetPropMap[type](row, { field, params });\r\n// \t\t};\r\n// \t\treturn createElement(...getCurrentComponent(context));\r\n// \t},\r\n// });\r\n\r\nexport const TablePresetProp = {\r\n\tfunctional: true,\r\n\tprops: {\r\n\t\ttableProp: {},\r\n\t\trow: {},\r\n\t},\r\n\trender: function (createElement, context) {\r\n\t\tconst getCurrentComponent = (context) => {\r\n\t\t\tconst { tableProp, row } = context.props;\r\n\t\t\tconst { tablePreset } = context.parent.$UICONFIG;\r\n\t\t\tconst { separator, presetPropMap } = tablePreset;\r\n\t\t\tconst { field, type, params } = processPresetProp(tableProp, separator);\r\n\t\t\treturn presetPropMap[type](row, { field, params, h: createElement });\r\n\t\t};\r\n\t\treturn createElement(...getCurrentComponent(context));\r\n\t},\r\n};\r\n","\n<div class=\"ui-table_config\">\n <span class=\"el-icon-s-operation\" @click=\"handleShowConfig\"></span>\n <el-drawer\n title=\"列表配置\"\n direction=\"rtl\"\n size=\"188px\"\n :modal-append-to-body=\"false\"\n :visible.sync=\"showConfig\">\n <div class=\"ui-search--sort\">\n <div class=\"ui-sort__content\" :style=\"{ maxHeight: height }\">\n <el-checkbox-group v-model=\"checkItems\" size=\"mini\">\n <draggable class=\"ui-draggable\" v-model=\"sortItems\"\n animation=\"100\" chosenClass=\"ui-dragmove\">\n <el-checkbox border :label=\"item.value\" v-for=\"item in sortItems\" :key=\"item.value\">{{item.label}}</el-checkbox>\n </draggable>\n </el-checkbox-group>\n </div>\n <div class=\"ui-sort__footer\">\n <el-button type=\"primary\" size=\"mini\" @click=\"handleRenderConfig\">确认</el-button>\n <el-button size=\"mini\" @click=\"showConfig = !showConfig\">取消</el-button>\n <el-button size=\"mini\" @click=\"handleReset\">重置</el-button>\n </div>\n </div>\n </el-drawer>\n</div>\n","<template>\r\n <div class=\"ui-table_config\">\r\n <span class=\"el-icon-s-operation\" @click=\"handleShowConfig\"></span>\r\n <el-drawer\r\n title=\"列表配置\"\r\n direction=\"rtl\"\r\n size=\"188px\"\r\n :modal-append-to-body=\"false\"\r\n :visible.sync=\"showConfig\">\r\n <div class=\"ui-search--sort\">\r\n <div class=\"ui-sort__content\" :style=\"{ maxHeight: height }\">\r\n <el-checkbox-group v-model=\"checkItems\" size=\"mini\">\r\n <draggable class=\"ui-draggable\" v-model=\"sortItems\"\r\n animation=\"100\" chosenClass=\"ui-dragmove\">\r\n <el-checkbox border :label=\"item.value\" v-for=\"item in sortItems\" :key=\"item.value\">{{item.label}}</el-checkbox>\r\n </draggable>\r\n </el-checkbox-group>\r\n </div>\r\n <div class=\"ui-sort__footer\">\r\n <el-button type=\"primary\" size=\"mini\" @click=\"handleRenderConfig\">确认</el-button>\r\n <el-button size=\"mini\" @click=\"showConfig = !showConfig\">取消</el-button>\r\n <el-button size=\"mini\" @click=\"handleReset\">重置</el-button>\r\n </div>\r\n </div>\r\n </el-drawer>\r\n </div>\r\n</template>\r\n<script>\r\nimport draggable from 'vuedraggable';\r\nexport default {\r\n components: {\r\n draggable\r\n },\r\n props: {\r\n tableName: {\r\n type: String,\r\n default: ''\r\n },\r\n options: {\r\n type: Object,\r\n default() {\r\n return {}\r\n }\r\n }\r\n },\r\n data() {\r\n return {\r\n showConfig: false,\r\n checkItems: [],\r\n sortItems: [],\r\n defaultOptions: {}\r\n }\r\n },\r\n computed: {\r\n configKey() {\r\n return `TableConfig_${this.tableName || this.$route.path}`;\r\n },\r\n height() {\r\n return `${parseInt(this.$parent.tableHeight) - 30}px`;\r\n },\r\n handleOptions() {\r\n const options = JSON.parse(JSON.stringify(this.options));\r\n if (options.index) {\r\n delete options.index;\r\n }\r\n\r\n if (options.rowLabelInx) {\r\n delete options.rowLabelInx;\r\n }\r\n return options;\r\n }\r\n },\r\n methods: {\r\n\r\n handleInit(render = true) {\r\n let locTableConfig = localStorage.getItem(this.configKey);\r\n locTableConfig = locTableConfig ? JSON.parse(locTableConfig) : null;\r\n\r\n if (locTableConfig) {\r\n this.sortItems = locTableConfig.sortItems;\r\n this.checkItems = locTableConfig.checkItems;\r\n\r\n render && this.handleRenderConfig();\r\n } else {\r\n this.sortItems = Object.entries(this.handleOptions).map(([value, label]) => ({\r\n label, value\r\n }))\r\n\r\n this.checkItems = Object.keys(this.handleOptions);\r\n }\r\n },\r\n\r\n handleShowConfig() {\r\n this.handleInit(false);\r\n this.showConfig = true;\r\n },\r\n\r\n // 渲染配置\r\n handleRenderConfig() {\r\n const rMap = this.sortItems.reduce((t, v) => ({ ...t, ...(this.checkItems.includes(v.value) ? { [v.value]: v.label } : {}) }), {});\r\n this.$emit('change', rMap)\r\n this.showConfig = false;\r\n \r\n localStorage.setItem(this.configKey, JSON.stringify({\r\n sortItems: this.sortItems, checkItems: this.checkItems\r\n }))\r\n },\r\n\r\n // 重置\r\n handleReset() {\r\n this.sortItems = Object.entries(this.defaultOptions).map(([value, label]) => {\r\n return {\r\n label, value\r\n }\r\n })\r\n this.checkItems = Object.keys(this.defaultOptions);\r\n }\r\n },\r\n created() {\r\n this.defaultOptions = JSON.parse(JSON.stringify(this.handleOptions));\r\n this.handleInit();\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n\r\n.ui-table_config {\r\n display: flex;\r\n align-items: center;\r\n // margin-left: auto;\r\n height: 32px;\r\n}\r\n\r\n.el-icon-s-operation {\r\n font-size: 18px;\r\n color: #333;\r\n cursor: pointer;\r\n border-left: 1px solid #dedede;\r\n padding-left: 5px;\r\n\r\n &:hover {\r\n color: #777;\r\n }\r\n}\r\n\r\n/deep/ .el-drawer__wrapper {\r\n position: absolute;\r\n}\r\n\r\n/deep/ .v-modal {\r\n position: absolute;\r\n}\r\n\r\n.ui-draggable {\r\n\r\n padding: 10px;\r\n box-sizing: border-box;\r\n\r\n .el-checkbox {\r\n margin: 0 0 5px 0 !important;\r\n width: 100%;\r\n\r\n &:hover {\r\n border-color: #9ccdff;\r\n }\r\n }\r\n}\r\n\r\n.ui-sort__footer {\r\n border-top: 1px solid #f1f1f1;\r\n padding: 10px;\r\n\r\n .el-button {\r\n padding-left: 10px;\r\n padding-right: 10px;\r\n }\r\n}\r\n\r\n.ui-sort__content {\r\n overflow: auto;\r\n}\r\n\r\n/deep/ .el-drawer__header {\r\n border-bottom: 1px solid #f1f1f1;\r\n padding: 10px;\r\n margin-bottom: 10px;\r\n}\r\n</style>","\n<div class=\"ui-table\" :class=\"{ 'remove-hover-css': !hoverStyle }\">\n\t<div class=\"ui-table__tab\" :style=\"{ height: showTab ? '32px' : 'unset' }\">\n\t\t<slot>\n\t\t\t<el-tabs\n\t\t\t\tv-if=\"tabList.length\"\n\t\t\t\tv-model=\"checkTab\"\n\t\t\t\ttype=\"card\"\n\t\t\t\tsize=\"mini\"\n\t\t\t\t@tab-click=\"(val) => $emit('tabChange', val)\"\n\t\t\t>\n\t\t\t\t<el-tab-pane v-for=\"item in tabList\" :key=\"item.value\" :name=\"item.value\">\n\t\t\t\t\t<template v-slot:label>\n\t\t\t\t\t\t<el-badge :value=\"item.num\" :max=\"999\">\n\t\t\t\t\t\t\t<span>{{ item.label }}</span>\n\t\t\t\t\t\t</el-badge>\n\t\t\t\t\t</template>\n\t\t\t\t</el-tab-pane>\n\t\t\t</el-tabs>\n\t\t\t<div class=\"ui-tab--loading\" v-if=\"showTab && !tabList.length\">\n\t\t\t\t<i class=\"el-icon-loading\"></i>\n\t\t\t\t<span>加载中...</span>\n\t\t\t</div>\n\t\t</slot>\n\t\t<div class=\"ui-top-right\">\n\t\t\t<slot name=\"top-right\"></slot>\n\t\t</div>\n\t\t<ColumnConfig v-if=\"showConfig\" :tableName=\"tableName\" :options=\"useMaps\" @change=\"handleMapChange\" />\n\t</div>\n\n\t<el-table\n\t\tref=\"myTable\"\n\t\t@select=\"manualSelectchange\"\n\t\tv-loading=\"renderLoading\"\n\t\tv-bind=\"{ highlightRow: true, border: true, stripe: true, ...$attrs }\"\n\t\tv-on=\"polyfillListeners($listeners)\"\n\t\t:data=\"tableData\"\n\t\t:[isBindHeight]=\"tableHeight\"\n\t\t:[isBindMaxHeight]=\"maxHeight\"\n\t\t:span-method=\"spanMethod\"\n\t\t:row-class-name=\"rowClassName\"\n\t\t@row-click=\"handleRowClick\"\n\t>\n\t\t<!-- :cell-class-name=\"cellClassName\" -->\n\t\t<el-table-column type=\"selection\" width=\"35\" v-if=\"showSelect\" :selectable=\"selectable\"></el-table-column>\n\t\t<slot name=\"column\"></slot>\n\t\t<el-table-column\n\t\t\tv-for=\"(item, index) in tableTitle\"\n\t\t\t:minWidth=\"tableColsMinWidth[index] || '60px'\"\n\t\t\t:label=\"item\"\n\t\t\t:fixed=\"fixedMap[tableProps[index]]\"\n\t\t\t:key=\"tableProps[index]\"\n\t\t\t:render-header=\"typeof item === 'function' ? item : null\"\n\t\t\t:show-overflow-tooltip=\"tooltips.includes(tableProps[index])\"\n\t\t\t:prop=\"tableProps[index]\"\n\t\t\t:width=\"tableProps[index] === 'index' ? '60px' : tableColsWidth[index] || ''\"\n\t\t\t:sortable=\"getSortable(tableProps[index])\"\n\t\t>\n\t\t\t<!-- 表头插槽 自定义表头-->\n\t\t\t<template v-slot:header=\"scope\">\n\t\t\t\t<slot :name=\"tableProps[index] + 'Title'\" :row=\"item\" :$index=\"scope.$index\">\n\t\t\t\t\t<span>{{ item }}</span>\n\t\t\t\t</slot>\n\t\t\t</template>\n\n\t\t\t<!-- 内容插槽 -->\n\t\t\t<template v-slot:default=\"scope\" v-if=\"!multiHeaderKey.includes(tableProps[index])\">\n\t\t\t\t<template v-if=\"isPresetProp(tableProps[index], $UICONFIG.tablePreset && $UICONFIG.tablePreset.separator)\">\n\t\t\t\t\t<table-preset-prop :tableProp=\"tableProps[index]\" :row=\"scope.row\"></table-preset-prop>\n\t\t\t\t</template>\n\t\t\t\t<slot v-else :name=\"tableProps[index]\" :row=\"scope.row\" :$index=\"scope.$index\">\n\t\t\t\t\t<span :class=\"{ 'text--number': tableProps[index] != 'index' && Number.isFinite(Number(scope.row[tableProps[index]])) }\">{{\n\t\t\t\t\t\ttableProps[index] === 'index' ? changeTableInx(scope.$index) : scope.row[tableProps[index]]\n\t\t\t\t\t}}</span>\n\t\t\t\t</slot>\n\t\t\t</template>\n\t\t\t<template v-if=\"multiHeaderKey.includes(tableProps[index])\">\n\t\t\t\t<slot :name=\"tableProps[index]\"></slot>\n\t\t\t</template>\n\t\t</el-table-column>\n\t\t<template v-slot:empty>\n\t\t\t<div v-if=\"!autoHeight\">\n\t\t\t\t<el-empty v-show=\"!tableData.length\" description=\"暂无数据\"></el-empty>\n\t\t\t</div>\n\t\t</template>\n\t</el-table>\n\t<div class=\"ui-pagination\" v-if=\"showPage\">\n\t\t<div class=\"ui-summary--data\">\n\t\t\t<!-- 兼容老槽位 -->\n\t\t\t<slot name=\"right_top\"></slot>\n\n\t\t\t<!-- 新汇总数据槽位 -->\n\t\t\t<slot name=\"summarydata\"></slot>\n\t\t</div>\n\t\t<el-pagination\n\t\t\tref=\"pageRef\"\n\t\t\tlayout=\"total, sizes, prev, pager, next, jumper\"\n\t\t\t:current-page=\"Number(pageData.offset)\"\n\t\t\t:page-sizes=\"pageSizes\"\n\t\t\t:page-size=\"Number(pageData.limit)\"\n\t\t\t:total=\"Number(pageData.total)\"\n\t\t\t@size-change=\"(val) => handlePageChange('limit', val)\"\n\t\t\t@current-change=\"(val) => handlePageChange('offset', val)\"\n\t\t>\n\t\t</el-pagination>\n\t</div>\n</div>\n","<template>\r\n\t<div class=\"ui-table\" :class=\"{ 'remove-hover-css': !hoverStyle }\">\r\n\t\t<div class=\"ui-table__tab\" :style=\"{ height: showTab ? '32px' : 'unset' }\">\r\n\t\t\t<slot>\r\n\t\t\t\t<el-tabs\r\n\t\t\t\t\tv-if=\"tabList.length\"\r\n\t\t\t\t\tv-model=\"checkTab\"\r\n\t\t\t\t\ttype=\"card\"\r\n\t\t\t\t\tsize=\"mini\"\r\n\t\t\t\t\t@tab-click=\"(val) => $emit('tabChange', val)\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<el-tab-pane v-for=\"item in tabList\" :key=\"item.value\" :name=\"item.value\">\r\n\t\t\t\t\t\t<template v-slot:label>\r\n\t\t\t\t\t\t\t<el-badge :value=\"item.num\" :max=\"999\">\r\n\t\t\t\t\t\t\t\t<span>{{ item.label }}</span>\r\n\t\t\t\t\t\t\t</el-badge>\r\n\t\t\t\t\t\t</template>\r\n\t\t\t\t\t</el-tab-pane>\r\n\t\t\t\t</el-tabs>\r\n\t\t\t\t<div class=\"ui-tab--loading\" v-if=\"showTab && !tabList.length\">\r\n\t\t\t\t\t<i class=\"el-icon-loading\"></i>\r\n\t\t\t\t\t<span>加载中...</span>\r\n\t\t\t\t</div>\r\n\t\t\t</slot>\r\n\t\t\t<div class=\"ui-top-right\">\r\n\t\t\t\t<slot name=\"top-right\"></slot>\r\n\t\t\t</div>\r\n\t\t\t<ColumnConfig v-if=\"showConfig\" :tableName=\"tableName\" :options=\"useMaps\" @change=\"handleMapChange\" />\r\n\t\t</div>\r\n\r\n\t\t<el-table\r\n\t\t\tref=\"myTable\"\r\n\t\t\t@select=\"manualSelectchange\"\r\n\t\t\tv-loading=\"renderLoading\"\r\n\t\t\tv-bind=\"{ highlightRow: true, border: true, stripe: true, ...$attrs }\"\r\n\t\t\tv-on=\"polyfillListeners($listeners)\"\r\n\t\t\t:data=\"tableData\"\r\n\t\t\t:[isBindHeight]=\"tableHeight\"\r\n\t\t\t:[isBindMaxHeight]=\"maxHeight\"\r\n\t\t\t:span-method=\"spanMethod\"\r\n\t\t\t:row-class-name=\"rowClassName\"\r\n\t\t\t@row-click=\"handleRowClick\"\r\n\t\t>\r\n\t\t\t<!-- :cell-class-name=\"cellClassName\" -->\r\n\t\t\t<el-table-column type=\"selection\" width=\"35\" v-if=\"showSelect\" :selectable=\"selectable\"></el-table-column>\r\n\t\t\t<slot name=\"column\"></slot>\r\n\t\t\t<el-table-column\r\n\t\t\t\tv-for=\"(item, index) in tableTitle\"\r\n\t\t\t\t:minWidth=\"tableColsMinWidth[index] || '60px'\"\r\n\t\t\t\t:label=\"item\"\r\n\t\t\t\t:fixed=\"fixedMap[tableProps[index]]\"\r\n\t\t\t\t:key=\"tableProps[index]\"\r\n\t\t\t\t:render-header=\"typeof item === 'function' ? item : null\"\r\n\t\t\t\t:show-overflow-tooltip=\"tooltips.includes(tableProps[index])\"\r\n\t\t\t\t:prop=\"tableProps[index]\"\r\n\t\t\t\t:width=\"tableProps[index] === 'index' ? '60px' : tableColsWidth[index] || ''\"\r\n\t\t\t\t:sortable=\"getSortable(tableProps[index])\"\r\n\t\t\t>\r\n\t\t\t\t<!-- 表头插槽 自定义表头-->\r\n\t\t\t\t<template v-slot:header=\"scope\">\r\n\t\t\t\t\t<slot :name=\"tableProps[index] + 'Title'\" :row=\"item\" :$index=\"scope.$index\">\r\n\t\t\t\t\t\t<span>{{ item }}</span>\r\n\t\t\t\t\t</slot>\r\n\t\t\t\t</template>\r\n\r\n\t\t\t\t<!-- 内容插槽 -->\r\n\t\t\t\t<template v-slot:default=\"scope\" v-if=\"!multiHeaderKey.includes(tableProps[index])\">\r\n\t\t\t\t\t<template v-if=\"isPresetProp(tableProps[index], $UICONFIG.tablePreset && $UICONFIG.tablePreset.separator)\">\r\n\t\t\t\t\t\t<table-preset-prop :tableProp=\"tableProps[index]\" :row=\"scope.row\"></table-preset-prop>\r\n\t\t\t\t\t</template>\r\n\t\t\t\t\t<slot v-else :name=\"tableProps[index]\" :row=\"scope.row\" :$index=\"scope.$index\">\r\n\t\t\t\t\t\t<span :class=\"{ 'text--number': tableProps[index] != 'index' && Number.isFinite(Number(scope.row[tableProps[index]])) }\">{{\r\n\t\t\t\t\t\t\ttableProps[index] === 'index' ? changeTableInx(scope.$index) : scope.row[tableProps[index]]\r\n\t\t\t\t\t\t}}</span>\r\n\t\t\t\t\t</slot>\r\n\t\t\t\t</template>\r\n\t\t\t\t<template v-if=\"multiHeaderKey.includes(tableProps[index])\">\r\n\t\t\t\t\t<slot :name=\"tableProps[index]\"></slot>\r\n\t\t\t\t</template>\r\n\t\t\t</el-table-column>\r\n\t\t\t<template v-slot:empty>\r\n\t\t\t\t<div v-if=\"!autoHeight\">\r\n\t\t\t\t\t<el-empty v-show=\"!tableData.length\" description=\"暂无数据\"></el-empty>\r\n\t\t\t\t</div>\r\n\t\t\t</template>\r\n\t\t</el-table>\r\n\t\t<div class=\"ui-pagination\" v-if=\"showPage\">\r\n\t\t\t<div class=\"ui-summary--data\">\r\n\t\t\t\t<!-- 兼容老槽位 -->\r\n\t\t\t\t<slot name=\"right_top\"></slot>\r\n\r\n\t\t\t\t<!-- 新汇总数据槽位 -->\r\n\t\t\t\t<slot name=\"summarydata\"></slot>\r\n\t\t\t</div>\r\n\t\t\t<el-pagination\r\n\t\t\t\tref=\"pageRef\"\r\n\t\t\t\tlayout=\"total, sizes, prev, pager, next, jumper\"\r\n\t\t\t\t:current-page=\"Number(pageData.offset)\"\r\n\t\t\t\t:page-sizes=\"pageSizes\"\r\n\t\t\t\t:page-size=\"Number(pageData.limit)\"\r\n\t\t\t\t:total=\"Number(pageData.total)\"\r\n\t\t\t\t@size-change=\"(val) => handlePageChange('limit', val)\"\r\n\t\t\t\t@current-change=\"(val) => handlePageChange('offset', val)\"\r\n\t\t\t>\r\n\t\t\t</el-pagination>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n<script>\r\nimport { countTableHeight } from '@/utils';\r\nimport { TablePresetProp } from './preset/functionalComponent';\r\nimport { isPresetProp } from './preset/presetConfig.js';\r\nimport { debounce } from 'throttle-debounce';\r\nimport ColumnConfig from './ColumnConfig.vue';\r\nexport default {\r\n\tname: 'ComTable',\r\n\tcomponents: {\r\n\t\tColumnConfig,\r\n\t\tTablePresetProp,\r\n\t},\r\n\tprops: {\r\n\t\t// 表格名称,作为表格唯一值储存配置,如不传则当前页面路由会作为表格的唯一值储存配置,如页面存在多个表格并走配置情况下必须要有名称\r\n\t\ttableName: String,\r\n\r\n\t\t// 是否显示勾选框\r\n\t\tshowSelect: { type: Boolean, default: false },\r\n\t\t// 勾选方法\r\n\t\tselectable: {\r\n\t\t\ttype: Function,\r\n\t\t\tdefault() {\r\n\t\t\t\treturn () => {};\r\n\t\t\t},\r\n\t\t},\r\n\r\n\t\t// 表格是否为单选\r\n\t\tisSingleSelection: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: false,\r\n\t\t},\r\n\r\n\t\tspanMethod: {\r\n\t\t\ttype: Function,\r\n\t\t},\r\n\t\t// 表格数据\r\n\t\ttableData: {\r\n\t\t\ttype: Array,\r\n\t\t\tdefault() {\r\n\t\t\t\treturn [];\r\n\t\t\t},\r\n\t\t},\r\n\r\n\t\t// 表头映射\r\n\t\ttableMap: {\r\n\t\t\ttype: Object,\r\n\t\t\tdefault() {\r\n\t\t\t\treturn { index: '序号' };\r\n\t\t\t},\r\n\t\t},\r\n\r\n\t\t// 列宽度\r\n\t\tcolsWidth: {\r\n\t\t\ttype: [Array, Object],\r\n\t\t\tdefault() {\r\n\t\t\t\treturn [];\r\n\t\t\t},\r\n\t\t},\r\n\r\n\t\t// 最小列宽度\r\n\t\tcolsMinWidth: {\r\n\t\t\ttype: [Array, Object],\r\n\t\t\tdefault() {\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// 分页对象\r\n\t\tpageData: {\r\n\t\t\ttype: Object,\r\n\t\t\tdefault() {\r\n\t\t\t\treturn {};\r\n\t\t\t},\r\n\t\t},\r\n\r\n\t\t// 是否显示分页\r\n\t\tshowPage: { type: Boolean, default: true },\r\n\r\n\t\t// 固定表格高度\r\n\t\theight: { type: String, default: '' },\r\n\r\n\t\t// 表格高度自适应\r\n\t\tautoHeight: { type: Boolean, default: false },\r\n\r\n\t\t// 最大高度\r\n\t\tmaxHeight: { type: String, default: '' },\r\n\r\n\t\t// 高度占位值 当有特殊情况表格高度需减少指定值\r\n\t\theightStatic: { type: Number, default: 0 },\r\n\r\n\t\t// 表格tab [ { label, value } ]\r\n\t\ttabList: {\r\n\t\t\ttype: Array,\r\n\t\t\tdefault() {\r\n\t\t\t\treturn [];\r\n\t\t\t},\r\n\t\t},\r\n\t\tdefaultTab: {\r\n\t\t\ttype: [String, Number],\r\n\t\t\tdefault: '',\r\n\t\t},\r\n\t\tshowTab: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: false,\r\n\t\t},\r\n\r\n\t\trowClassName: {\r\n\t\t\ttype: Function,\r\n\t\t\tdefault({ row }) {},\r\n\t\t},\r\n\t\ttooltips: {\r\n\t\t\ttype: Array,\r\n\t\t\tdefault() {\r\n\t\t\t\treturn [];\r\n\t\t\t},\r\n\t\t},\r\n\t\tmultiHeaderKey: {\r\n\t\t\ttype: Array,\r\n\t\t\tdefault() {\r\n\t\t\t\treturn [];\r\n\t\t\t},\r\n\t\t},\r\n\t\t// cellClassName: {\r\n\t\t// \ttype: Function\r\n\t\t// }\r\n\t\tshowConfig: { type: Boolean, default: true },\r\n\r\n\t\t//排序\r\n\t\tsortables: {\r\n\t\t\ttype: [Array, Object],\r\n\t\t\tdefault() {\r\n\t\t\t\treturn [];\r\n\t\t\t},\r\n\t\t},\r\n \r\n\t\tfixedMap: {\r\n\t\t\ttype: Object,\r\n\t\t\tdefault() {\r\n\t\t\t\treturn {};\r\n\t\t\t},\r\n\t\t},\r\n\r\n\t\t// 是否使用hover样式\r\n\t\thoverStyle: {\r\n\t\t\ttype: Boolean,\r\n\t\t\tdefault: true\r\n\t\t}\r\n\t},\r\n\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tisPresetProp,\r\n\t\t\tpageSizes: [20, 50, 100, 200, 500, 1000],\r\n\t\t\ttableHeight: '',\r\n\t\t\tcheckTab: '',\r\n\t\t\tuseMaps: {},\r\n\t\t\trenderLoading: false,\r\n\t\t\thandleWindowResize: null\r\n\t\t};\r\n\t},\r\n\tcomputed: {\r\n\t\ttableTitle() {\r\n\t\t\treturn JSON.stringify(this.useMaps) == '{}' ? [] : Object.values(this.useMaps);\r\n\t\t},\r\n\t\ttableProps() {\r\n\t\t\treturn JSON.stringify(this.useMaps) == '{}' ? [] : Object.keys(this.useMaps);\r\n\t\t},\r\n\t\ttableColsWidth() {\r\n\t\t\tif (Array.isArray(this.colsWidth)) {\r\n\t\t\t\treturn this.colsWidth.map((item) => `${parseInt(item)}px`);\r\n\t\t\t} else {\r\n\t\t\t\treturn this.tableProps.map((item) => (this.colsWidth[item] ? `${parseInt(this.colsWidth[item])}px` : ''));\r\n\t\t\t}\r\n\t\t},\r\n\t\ttableColsMinWidth() {\r\n\t\t\tif (Array.isArray(this.colsMinWidth)) {\r\n\t\t\t\treturn this.colsMinWidth.map((item) => `${parseInt(item)}px`);\r\n\t\t\t} else {\r\n\t\t\t\treturn this.tableProps.map((item) => (this.colsMinWidth[item] ? `${parseInt(this.colsMinWidth[item])}px` : ''));\r\n\t\t\t}\r\n\t\t},\r\n\t\tisBindHeight() {\r\n\t\t\treturn this.tableHeight ? 'height' : '';\r\n\t\t},\r\n\t\tisBindMaxHeight() {\r\n\t\t\treturn this.maxHeight ? 'max-height' : '';\r\n\t\t},\r\n\t},\r\n\tmethods: {\r\n\t\tchangeTableInx(inx) {\r\n\t\t\tlet i = parseInt(inx) + 1 + '';\r\n\t\t\tlet first = '0';\r\n\t\t\treturn first.repeat(4 - i.length) + i;\r\n\t\t},\r\n\r\n\t\t// 刷新表格高度\r\n\t\thandleRefreshHeight() {\r\n\r\n\t\t\t// 没设置表格高度 高度根据屏幕高度适应\r\n\t\t\tif (!this.autoHeight && !this.height) {\r\n\t\t\t\tthis.$nextTick().then(() => {\r\n\t\t\t\t\tthis.tableHeight = `${countTableHeight() - this.heightStatic}px`;\r\n\t\t\t\t\tthis.$refs['myTable'] && this.$refs['myTable'].doLayout();\r\n\t\t\t\t})\r\n\t\t\t} else if (this.height) {\r\n\t\t\t\tthis.tableHeight = this.height;\r\n\t\t\t\tthis.$refs['myTable'] && this.$refs['myTable'].doLayout();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// 分页切换\r\n\t\thandlePageChange(type = 'offset', val) {\r\n\t\t\tif (type === 'offset') {\r\n\t\t\t\tif (this.tempSize > this.pageData.total && this.pageData.offset > 1) return;\r\n\t\t\t\tthis.$emit('pageChange', type, val);\r\n\t\t\t} else {\r\n\t\t\t\tthis.tempSize = val;\r\n\t\t\t\tthis.$emit('pageChange', type, val);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// 兼容之前定义的事件名\r\n\t\tpolyfillListeners(listeners) {\r\n\t\t\tconst polyfillMap = {\r\n\t\t\t\tselectionChange: 'selection-change',\r\n\t\t\t};\r\n\t\t\treturn Object.entries(listeners).reduce((pre, [key, value]) => {\r\n\t\t\t\tconst listenerKey = polyfillMap[key];\r\n\t\t\t\tpre[listenerKey || key] = value;\r\n\t\t\t\treturn pre;\r\n\t\t\t}, {});\r\n\t\t},\r\n\r\n\t\t// 为单选模式时触发事件\r\n\t\tmanualSelectchange(selection, row) {\r\n\t\t\tif (!this.isSingleSelection) return;\r\n\t\t\tconst table = this.$refs.myTable;\r\n\t\t\ttable.clearSelection();\r\n\t\t\tthis.$nextTick(() => {\r\n\t\t\t\ttable.toggleRowSelection(row, true);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t// 配置map\r\n\t\thandleMapChange(val) {\r\n\t\t\tthis.useMaps = {};\r\n\t\t\tthis.renderLoading = true;\r\n\t\t\tthis.$nextTick().then(() => {\r\n\t\t\t\tthis.useMaps = val;\r\n\t\t\t\tthis.handleRefreshHeight();\r\n\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.renderLoading = false;\r\n\t\t\t\t}, 500);\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tgetSortable(key) {\r\n\t\t\tconst sortables = this.sortables;\r\n\t\t\tif (Array.isArray(sortables)) {\r\n\t\t\t\treturn sortables.includes(key);\r\n\t\t\t} else {\r\n\t\t\t\treturn sortables[key];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// 行点击\r\n\t\thandleRowClick(row, column, event) {\r\n\t\t\tconst ele = event.target;\r\n\t\t\tif (ele.className.indexOf('cell') > -1) {\r\n\t\t\t\tif (this.isSingleSelection) {\r\n\t\t\t\t\tthis.manualSelectchange(null, row);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.$refs.myTable.toggleRowSelection(row);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// const eleParent = ele.parentElement;\r\n\t\t\t// if (['BUTTON', 'IMG'].includes(ele.tagName) || ['BUTTON', 'IMG'].includes(eleParent.tagName)) return;\r\n\t\t\t// this.$refs.myTable.toggleRowSelection(row);\r\n\t\t}\r\n\t},\r\n\r\n\tcreated() {\r\n\t\t// 设置默认tab\r\n\t\tthis.checkTab = this.defaultTab;\r\n\r\n\t\t// 默认map\r\n\t\tthis.useMaps = JSON.parse(JSON.stringify(this.tableMap));\r\n\t},\r\n\r\n\tasync mounted() {\r\n\t\t\r\n\t\tawait this.$nextTick();\r\n\t\tthis.handleRefreshHeight();\r\n\r\n\t\t// 单选模式下,隐藏全选按钮\r\n\t\tif (this.isSingleSelection) {\r\n\t\t\tconst checkboxEl = this.$refs.myTable.$el.querySelector('.el-table__header-wrapper .el-checkbox');\r\n\t\t\tcheckboxEl.style = 'display:none';\r\n\t\t}\r\n\r\n\t\tthis.handleWindowResize = debounce(100, this.handleRefreshHeight);\r\n\t\twindow.addEventListener('resize', this.handleWindowResize);\r\n\t},\r\n\r\n\twatch: {\r\n\t\tasync useMaps() {\r\n\t\t\tawait this.$nextTick();\r\n\t\t\tthis.handleRefreshHeight();\r\n\t\t},\r\n\t\ttableMap(val) {\r\n\t\t\tthis.useMaps = JSON.parse(JSON.stringify(val));\r\n\t\t},\r\n\t},\r\n\tbeforeDestroy() {\r\n\t\twindow.removeEventListener('resize', this.handleWindowResize);\r\n\t},\r\n\r\n\tasync activated() {\r\n\t\tthis.handleRefreshHeight();\r\n\t},\r\n};\r\n</script>\r\n<style lang=\"less\" scoped>\r\n.ui-table {\r\n\tpadding: 0 10px;\r\n\tposition: relative;\r\n\r\n\t/deep/ .el-table-column--selection {\r\n\t\t.el-checkbox {\r\n\t\t\tdisplay: block;\r\n\t\t}\r\n\t}\r\n\r\n\t/deep/ .el-tabs__header {\r\n\t\tmargin-bottom: 0;\r\n\t\tborder-bottom: 0 none;\r\n\t\tbackground: #fff;\r\n\r\n\t\t.el-tabs__item {\r\n\t\t\theight: 32px;\r\n\t\t\tline-height: 32px;\r\n\t\t\tfont-size: 12px;\r\n\t\t}\r\n\t}\r\n\r\n\t/deep/ .el-tabs--card>.el-tabs__header .el-tabs__item {\r\n\t\tborder-bottom: 0 none;\r\n\t\tline-height: 28px;\r\n\t}\r\n\r\n\t/deep/ .el-tabs--card > .el-tabs__header .el-tabs__item.is-active {\r\n\t\t// background: linear-gradient(to right bottom, #cee3ff, #66a8ff) no-repeat;\r\n \t// color: #FFF;\r\n\t\tcolor: #FFF;\r\n\t\tbackground: #409eff;\r\n\t\tbox-shadow: 0 0 3px 1px #cee3ff;\r\n\t}\r\n\r\n\t/deep/ .el-tabs--card>.el-tabs__header .el-tabs__nav {\r\n\t\tborder: 0 none;\r\n\t\tbox-sizing: border-box;\r\n\t\ttop: 1px;\r\n\t\tborder-radius: unset;\r\n\t}\r\n}\r\n\r\n.ui-pagination {\r\n\ttext-align: right;\r\n\tpadding: 10px 0;\r\n\tdisplay: flex;\r\n}\r\n\r\n.ui-table__tab {\r\n\tbackground-color: #fff;\r\n\tdisplay: flex;\r\n}\r\n\r\n.ui-summary--data {\r\n\tmargin-right: auto;\r\n\tdisplay: flex;\r\n\tfont-size: 12px;\r\n\talign-items: center;\r\n}\r\n\r\n.ui-tab--loading {\r\n\tpadding-left: 10px;\r\n\theight: 32px;\r\n\tline-height: 32px;\r\n\r\n\tspan {\r\n\t\tfont-size: 12px;\r\n\t\tcolor: #999;\r\n\t\tdisplay: inline-block;\r\n\t\tmargin-left: 5px;\r\n\t}\r\n}\r\n\r\n/deep/ .el-table .cell {\r\n\tline-height: 16px;\r\n}\r\n\r\n/deep/ .el-tabs__nav-scroll {\r\n\toverflow: unset !important;\r\n}\r\n\r\n/deep/ .el-tabs__nav-wrap {\r\n\toverflow: unset !important;\r\n}\r\n\r\n/deep/ .el-badge__content.is-fixed {\r\n\tz-index: 1;\r\n}\r\n\r\n.ui-page__main > .ui-table {\r\n\tbackground: #FFF;\r\n box-shadow: 0 0 4px 1px #eee;\r\n margin-left: 10px;\r\n border-radius: 4px;\r\n\tpadding-left: 10px;\r\n\tmargin-right: 10px;\r\n}\r\n\r\n.ui-top-right {\r\n\tmargin-left: auto;\r\n\tmargin-right: 20px;\r\n\tdisplay: flex;\r\n\talign-items: center;\r\n\r\n\t/deep/ .el-radio__label {\r\n\t\tfont-size: 12px;\r\n\t}\r\n\r\n\t/deep/ .el-radio__inner {\r\n\t\twidth: 12px;\r\n\t\theight: 12px;\r\n\t}\r\n}\r\n\r\n.text--number {\r\n\tfloat: right;\r\n}\r\n</style>\r\n","import Vue from 'vue';\r\nimport ComComponent from './src/index.vue';\r\n\r\ntype SFCWithInstall<T> = T & { install(app: typeof Vue): void }; // vue 安装\r\n\r\n// 安装\r\nComComponent.install = (app: typeof Vue) => {\r\n app.component(ComComponent.name, ComComponent);\r\n};\r\nconst InComComponent: SFCWithInstall<typeof ComComponent> = ComComponent; // 增加类型\r\nexport default InComComponent;","\n<el-image ref=\"imageRef\"\n v-if=\"show\" \n scroll-container=\".el-table__body-wrapper\"\n :src=\"srcMain\" \n :style=\"{ width: sizeMain }\" \n :preview-src-list=\"previewList\" \n :lazy=\"lazy\">\n <template v-slot:placeholder>\n <div v-loading=\"true\" class=\"ui-image--loading\" :style=\"{ width: sizeMain, height }\"></div>\n </template>\n <template v-slot:error>\n <div class=\"ui-image--error\" :style=\"{ width: sizeMain, height, lineHeight: height, fontSize }\">\n <i class=\"el-icon-picture-outline\"></i>\n </div>\n </template>\n</el-image>\n","<template>\r\n <el-image ref=\"imageRef\"\r\n v-if=\"show\" \r\n scroll-container=\".el-table__body-wrapper\"\r\n :src=\"srcMain\" \r\n :style=\"{ width: sizeMain }\" \r\n :preview-src-list=\"previewList\" \r\n :lazy=\"lazy\">\r\n <template v-slot:placeholder>\r\n <div v-loading=\"true\" class=\"ui-image--loading\" :style=\"{ width: sizeMain, height }\"></div>\r\n </template>\r\n <template v-slot:error>\r\n <div class=\"ui-image--error\" :style=\"{ width: sizeMain, height, lineHeight: height, fontSize }\">\r\n <i class=\"el-icon-picture-outline\"></i>\r\n </div>\r\n </template>\r\n </el-image>\r\n</template>\r\n<script>\r\nexport default {\r\n name: 'ComImage',\r\n props: {\r\n size: {\r\n type: String,\r\n default: ''\r\n },\r\n src: {\r\n type: [String, Array],\r\n default() {\r\n return ''\r\n }\r\n },\r\n previewSrcList: {\r\n type: Array,\r\n default() {\r\n return []\r\n }\r\n },\r\n lazy: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data() {\r\n return {\r\n height: '',\r\n show: false\r\n }\r\n },\r\n computed: {\r\n previewList() {\r\n\r\n if (this.previewSrcList.length) return this.previewSrcList;\r\n\r\n if (Array.isArray(this.src)) {\r\n return this.src;\r\n } else {\r\n return [];\r\n }\r\n },\r\n srcMain() {\r\n if (Array.isArray(this.src)) {\r\n return this.src[0]\r\n } else {\r\n return this.src;\r\n }\r\n },\r\n fontSize() {\r\n return `${parseInt(this.height) - 30}px`; \r\n },\r\n sizeMain() {\r\n if (!this.size) return '100%';\r\n else if (Number(this.size)) return `${this.size}px`;\r\n else return this.size;\r\n }\r\n },\r\n async mounted() {\r\n setTimeout(async () => {\r\n this.show = true;\r\n await this.$nextTick();\r\n this.height = `${this.$refs.imageRef.$el.offsetWidth}px`;\r\n }, 300)\r\n }\r\n}\r\n</script>\r\n<style lang=\"less\" scoped>\r\n\r\n.ui-image {\r\n\r\n &--error {\r\n text-align: center;\r\n color: #999;\r\n background-color: #efefef;\r\n }\r\n}\r\n</style>","import Vue from 'vue';\r\nimport ComComponent from './src/index.vue';\r\n\r\ntype SFCWithInstall<T> = T & { install(app: typeof Vue): void }; // vue 安装\r\n\r\n// 安装\r\nComComponent.install = (app: typeof Vue) => {\r\n app.component(ComComponent.name, ComComponent);\r\n};\r\nconst InComComponent: SFCWithInstall<typeof ComComponent> = ComComponent; // 增加类型\r\nexport default InComComponent;","\n<el-scrollbar class=\"ui-scrollbar\" :style=\"{height: height, width: '100%'}\">\n <slot></slot>\n</el-scrollbar>\n","<template>\r\n <el-scrollbar class=\"ui-scrollbar\" :style=\"{height: height, width: '100%'}\">\r\n <slot></slot>\r\n </el-scrollbar>\r\n</template>\r\n\r\n<script>\r\nimport { countTableHeight } from '@/utils';\r\nimport { debounce } from 'throttle-debounce';\r\nexport default {\r\n name: \"ComContainer\",\r\n props: {\r\n staticClass: {\r\n type: Array,\r\n default() {\r\n return []\r\n }\r\n },\r\n staticNum: {\r\n type: Number,\r\n default: 0\r\n }\r\n },\r\n data() {\r\n return {\r\n height: 'unset'\r\n }\r\n },\r\n methods: {\r\n handleRefreshHeight() {\r\n this.$nextTick().then(() => {\r\n this.height = `${countTableHeight(this.staticNum, false, this.staticClass)}px`;\r\n })\r\n },\r\n\r\n handleWindowResize: debounce(100, function () {\r\n this.handleRefreshHeight();\r\n })\r\n },\r\n mounted() {\r\n this.handleRefreshHeight();\r\n window.addEventListener('resize', this.handleWindowResize);\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped lang=\"less\">\r\n\r\n.ui-scrollbar {\r\n /deep/ .el-scrollbar__wrap {\r\n overflow-x: hidden;\r\n }\r\n}\r\n</style>","import Vue from 'vue';\r\nimport ComContainer from './src/index.vue';\r\n\r\ntype SFCWithInstall<T> = T & { install(app: typeof Vue): void }; // vue 安装\r\n\r\n// 安装\r\nComContainer.install = (app: typeof Vue) => {\r\n app.component(ComContainer.name, ComContainer);\r\n};\r\nconst InComContainer: SFCWithInstall<typeof ComContainer> = ComContainer; // 增加类型\r\nexport default InComContainer;","\n<transition name=\"el-loading-fade\" @after-leave=\"handleAfterLeave\">\n <div\n v-show=\"visible\"\n class=\"el-loading-mask\"\n :style=\"{ backgroundColor: background || '' }\"\n :class=\"[customClass, { 'is-fullscreen': fullscreen }]\">\n <div class=\"el-loading-spinner\">\n <svg v-if=\"!spinner\" class=\"circular\" viewBox=\"25 25 50 50\">\n <circle class=\"path\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\"/>\n </svg>\n <i v-else :class=\"spinner\"></i>\n <p v-if=\"text\" class=\"el-loading-text\">{{ text }}</p>\n </div>\n </div>\n</transition>\n","<template>\n <transition name=\"el-loading-fade\" @after-leave=\"handleAfterLeave\">\n <div\n v-show=\"visible\"\n class=\"el-loading-mask\"\n :style=\"{ backgroundColor: background || '' }\"\n :class=\"[customClass, { 'is-fullscreen': fullscreen }]\">\n <div class=\"el-loading-spinner\">\n <svg v-if=\"!spinner\" class=\"circular\" viewBox=\"25 25 50 50\">\n <circle class=\"path\" cx=\"50\" cy=\"50\" r=\"20\" fill=\"none\"/>\n </svg>\n <i v-else :class=\"spinner\"></i>\n <p v-if=\"text\" class=\"el-loading-text\">{{ text }}</p>\n </div>\n </div>\n </transition>\n</template>\n\n<script>\n export default {\n data() {\n return {\n text: null,\n spinner: null,\n background: null,\n fullscreen: true,\n visible: false,\n customClass: ''\n };\n },\n\n methods: {\n handleAfterLeave() {\n this.$emit('after-leave');\n },\n setText(text) {\n this.text = text;\n }\n }\n };\n</script>\n","import Vue from 'vue';\r\nimport Loading from 'element-ui/packages/loading/src/loading.vue';\r\nconst Mask = Vue.extend(Loading);\r\n\r\nconst requestLoading:any = {\r\n bind(el:any, binding:any, { context }:any) {\r\n\r\n // 需在Store里配置才能使用\r\n if (!context.$store) return;\r\n\r\n const textExr = el.getAttribute('element-loading-text');\r\n const spinnerExr = el.getAttribute('element-loading-spinner');\r\n const backgroundExr = el.getAttribute('element-loading-background');\r\n const customClassExr = el.getAttribute('element-loading-custom-class');\r\n const mask = new Mask({\r\n el: document.createElement('div'),\r\n data: {\r\n text: textExr,\r\n spinner: spinnerExr,\r\n background: backgroundExr,\r\n customClass: customClassExr,\r\n fullscreen: false\r\n }\r\n });\r\n el.instance = mask;\r\n el.mask = mask.$el;\r\n el.maskStyle = {};\r\n el.flagId = `Loading_${new Date().getTime()}`;\r\n context.$store.commit('SAVE_HTTP_LOADINGS', {\r\n el,\r\n name: binding.arg,\r\n id: el.flagId\r\n });\r\n \r\n // if (binding.value !== false) {\r\n // binding.value = true;\r\n // binding.value && toggleLoading(el, binding);\r\n // Store.commit('SAVE_LOADING_STATE', { flag: binding.arg, status: true });\r\n // }\r\n },\r\n // unbing(el, binding) {\r\n // Store.commit('SAVE_HTTP_LOADINGS', {\r\n // el,\r\n // name: binding.arg,\r\n // id: el.flagId,\r\n // type: 'remove'\r\n // });\r\n // }\r\n}\r\n\r\nexport default {\r\n requestLoading\r\n}","\n<el-dialog :title=\"title\" :visible.sync=\"visible\" append-to-body>\n\t<div>\n\t\t<el-form :rules=\"formRules\" :model=\"formData\" :label-width=\"labelWidth\" ref=\"rulesForm\">\n\t\t\t<el-form-item v-for=\"(item, i) in items\" :label=\"item.label\" :key=\"i\" :prop=\"item.field\">\n\t\t\t\t<com-form-item\n\t\t\t\t\tv-if=\"item.type\"\n\t\t\t\t\t:type=\"item.type\"\n\t\t\t\t\tv-bind=\"item.attrs\"\n\t\t\t\t\tv-model=\"formData[item.field]\"\n\t\t\t\t></com-form-item>\n\t\t\t</el-form-item>\n\t\t</el-form>\n\t</div>\n\t<template v-slot:footer>\n\t\t<slot name=\"footer\">\n\t\t\t<el-button size=\"small\" :class=\"cancelButtonClass\" @click=\"handleClose\">{{ cancelButtonText }}</el-button>\n\t\t\t<el-button\n\t\t\t\tsize=\"small\"\n\t\t\t\ttype=\"primary\"\n\t\t\t\t:class=\"confirmButtonClass\"\n\t\t\t\t@click=\"handleConfirm\"\n\t\t\t\t:loading=\"buttonLoading\"\n\t\t\t>\n\t\t\t\t{{ confirmButtonText }}\n\t\t\t</el-button>\n\t\t</slot>\n\t</template>\n</el-dialog>\n","<template>\r\n\t<el-dialog :title=\"title\" :visible.sync=\"visible\" append-to-body>\r\n\t\t<div>\r\n\t\t\t<el-form :rules=\"formRules\" :model=\"formData\" :label-width=\"labelWidth\" ref=\"rulesForm\">\r\n\t\t\t\t<el-form-item v-for=\"(item, i) in items\" :label=\"item.label\" :key=\"i\" :prop=\"item.field\">\r\n\t\t\t\t\t<com-form-item\r\n\t\t\t\t\t\tv-if=\"item.type\"\r\n\t\t\t\t\t\t:type=\"item.type\"\r\n\t\t\t\t\t\tv-bind=\"item.attrs\"\r\n\t\t\t\t\t\tv-model=\"formData[item.field]\"\r\n\t\t\t\t\t></com-form-item>\r\n\t\t\t\t</el-form-item>\r\n\t\t\t</el-form>\r\n\t\t</div>\r\n\t\t<template v-slot:footer>\r\n\t\t\t<slot name=\"footer\">\r\n\t\t\t\t<el-button size=\"small\" :class=\"cancelButtonClass\" @click=\"handleClose\">{{ cancelButtonText }}</el-button>\r\n\t\t\t\t<el-button\r\n\t\t\t\t\tsize=\"small\"\r\n\t\t\t\t\ttype=\"primary\"\r\n\t\t\t\t\t:class=\"confirmButtonClass\"\r\n\t\t\t\t\t@click=\"handleConfirm\"\r\n\t\t\t\t\t:loading=\"buttonLoading\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{{ confirmButtonText }}\r\n\t\t\t\t</el-button>\r\n\t\t\t</slot>\r\n\t\t</template>\r\n\t</el-dialog>\r\n</template>\r\n\r\n<script>\r\nconst ACTION = {\r\n\tconfirm: 'confirm',\r\n\tcancel: 'cancel',\r\n};\r\nexport default {\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tvisible: false,\r\n\t\t\tbuttonLoading: false,\r\n\t\t\taction: '',\r\n\t\t\tlabelWidth: '120px',\r\n\t\t\tuid: 1,\r\n\t\t\ttitle: '',\r\n\t\t\tformData: {},\r\n\t\t\titems: [],\r\n\t\t\trules: {},\r\n\t\t\tconfirmButtonText: '确定',\r\n\t\t\tcancelButtonText: '取消',\r\n\t\t\tconfirmButtonClass: '',\r\n\t\t\tcancelButtonClass: '',\r\n\t\t\tresolve: () => {},\r\n\t\t\tbeforeConfirm: null,\r\n\t\t\tbeforeCancel: null,\r\n\t\t};\r\n\t},\r\n\tcomputed: {\r\n\t\t// sugar 规则里定义了message就不需要定义required了\r\n\t\tformRules() {\r\n\t\t\treturn Object.entries(this.rules).reduce((pre, [key, rule]) => {\r\n\t\t\t\tconst { required, message } = rule;\r\n\t\t\t\tpre[key] = { ...rule, required: !!(required || message) };\r\n\t\t\t\treturn pre;\r\n\t\t\t}, {});\r\n\t\t},\r\n\t},\r\n\twatch: {\r\n\t\tvisible(val) {\r\n\t\t\tif (val) {\r\n\t\t\t\tthis.uid++;\r\n\t\t\t\tthis.buttonLoading = false;\r\n\t\t\t\tthis.$nextTick(() => {\r\n\t\t\t\t\tthis.$refs.rulesForm.clearValidate();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\t},\r\n\tmethods: {\r\n\t\tgetSafeClose() {\r\n\t\t\tconst currentId = this.uid;\r\n\t\t\treturn () => {\r\n\t\t\t\tthis.$nextTick(() => {\r\n\t\t\t\t\tif (currentId === this.uid) this.doClose();\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t},\r\n\t\thandleClose() {\r\n\t\t\tthis.triggerCallBack(ACTION.cancel);\r\n\t\t},\r\n\t\ttriggerCallBack(action) {\r\n\t\t\tconst callBackMap = {\r\n\t\t\t\t[ACTION.confirm]: 'beforeConfirm',\r\n\t\t\t\t[ACTION.cancel]: 'beforeCancel',\r\n\t\t\t};\r\n\t\t\tconst callBack = this[callBackMap[action]];\r\n\t\t\tthis.action = action;\r\n\t\t\tif (callBack && typeof callBack === 'function') {\r\n\t\t\t\tthis.buttonLoading = action === ACTION.confirm;\r\n\t\t\t\tcallBack({\r\n\t\t\t\t\tformData: this.formData,\r\n\t\t\t\t\tdone: this.getSafeClose(),\r\n\t\t\t\t\tinstance: this,\r\n\t\t\t\t\tstopLoading: () => {\r\n\t\t\t\t\t\tthis.buttonLoading = false;\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.doClose();\r\n\t\t\t}\r\n\t\t},\r\n\t\thandleConfirm() {\r\n\t\t\tthis.$refs.rulesForm.validate((valid) => {\r\n\t\t\t\tif (valid) {\r\n\t\t\t\t\tthis.triggerCallBack(ACTION.confirm);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\t\tdoClose() {\r\n\t\t\tthis.visible = false;\r\n\t\t\tthis.buttonLoading = false;\r\n\t\t\tthis.resolve({ action: this.action });\r\n\t\t},\r\n\t},\r\n};\r\n</script>\r\n\r\n<style></style>\r\n","import Vue from 'vue';\r\nimport formDialogVue from './main.vue';\r\n\r\nconst defaults = {\r\n\ttitle: '',\r\n\titems: [],\r\n};\r\n\r\ninterface formItem {\r\n\tlabel: string;\r\n\tfield: string;\r\n\tattrs?: object;\r\n\ttype?: string;\r\n}\r\n\r\ninterface formConfig {\r\n\titems: formItem[];\r\n\trules?: object;\r\n\ttitle?: string;\r\n\tlabelWidth?: string;\r\n\tresolve?: any;\r\n\treject?: any;\r\n\tconfirmButtonText?: string;\r\n\tcancelButtonText?: string;\r\n\tconfirmButtonClass?: string;\r\n\tcancelButtonClass?: string;\r\n}\r\n\r\nconst FormDialogConstructor = Vue.extend(formDialogVue);\r\n\r\nlet currentDialog: formConfig | any, instance: any;\r\nlet dialogQueue: formConfig[] = [];\r\n\r\nconst initInstance = () => {\r\n\tinstance = new FormDialogConstructor({\r\n\t\tel: document.createElement('div'),\r\n\t});\r\n};\r\n\r\nconst buildFormData = (items: formItem[]): object => {\r\n\tlet formData: any = {};\r\n\titems.forEach((item: formItem) => {\r\n\t\tformData[item.field] = '';\r\n\t});\r\n\treturn formData;\r\n};\r\n\r\nconst showDialog = (options: formConfig) => {\r\n\tconst formData = buildFormData(options.items);\r\n\tObject.entries({ ...options, formData }).forEach(([key, value]) => {\r\n\t\tinstance[key] = value;\r\n\t});\r\n\tdocument.body.appendChild(instance.$el);\r\n\tVue.nextTick(() => {\r\n\t\tinstance.visible = true;\r\n\t});\r\n};\r\n\r\nconst showNextDialog = () => {\r\n\tif (!instance) {\r\n\t\tinitInstance();\r\n\t}\r\n\tif (dialogQueue.length > 0) {\r\n\t\tcurrentDialog = dialogQueue.shift();\r\n\t\tshowDialog(currentDialog);\r\n\t}\r\n};\r\n\r\nconst formDialog = (options: formConfig) => {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\tdialogQueue.push({ ...defaults, ...options, resolve, reject });\r\n\t\tshowNextDialog();\r\n\t});\r\n};\r\n\r\nexport default formDialog;\r\n","import './assets/less/index.less';\r\n\r\nimport ComTemplate from '../packages/template';\r\nimport ComMenu from '../packages/menu';\r\nimport ComTabs from '../packages/tabs';\r\nimport ComTool from '../packages/tool';\r\nimport ComDialog from '../packages/dialog';\r\nimport ComFormItem from '../packages/form-item';\r\nimport ComOperation from '../packages/operation';\r\nimport ComSearch from '../packages/search';\r\nimport ComTable from '../packages/table';\r\nimport ComImage from '../packages/image';\r\nimport ComContainer from '../packages/container';\r\n\r\nimport ComDirective from './directive';\r\nimport formDialog from '../packages/form-dialog';\r\n\r\nconst components: any[] = [\r\n ComTemplate,\r\n ComMenu,\r\n ComTabs,\r\n ComTool,\r\n ComDialog,\r\n ComFormItem,\r\n ComOperation,\r\n ComSearch,\r\n ComTable,\r\n ComImage,\r\n ComContainer\r\n];\r\n\r\n/**\r\n * @param { App }\r\n * @returns { Void }\r\n */\r\nconst install = (Vue: any, ops: any = { config: {} }) => {\r\n components.forEach(component => Vue.component(component.name, component));\r\n \r\n // 默认UI配置\r\n const UIDefaultConfig = {\r\n tablePreset: {\r\n separator: '@',\r\n presetPropMap: {\r\n image(row: any, { field, params }: any) {\r\n const src = row[field].split('|');\r\n const size = params.size || 59;\r\n return ['com-image', { attrs: { src, size, lazy: true } }];\r\n },\r\n link(row: any, { field, params }: any) {\r\n const text = row[field];\r\n let { target, href, type, underline } = params;\r\n\r\n target = target || '_blank';\r\n href = row[href] || text;\r\n type = type || 'primary';\r\n underline = !!underline;\r\n return [\r\n 'el-link',\r\n {\r\n attrs: {\r\n target,\r\n href,\r\n type,\r\n underline,\r\n },\r\n },\r\n text,\r\n ];\r\n },\r\n },\r\n },\r\n\r\n formItemConfig: {\r\n input: {\r\n placeholder: \"请输入\"\r\n },\r\n },\r\n }\r\n\r\n // 注册组件时可以带入UI库配置\r\n Vue.prototype.$UICONFIG = { ...UIDefaultConfig, ...ops.config };\r\n\r\n\r\n // 注册指令\r\n Object.entries(ComDirective).forEach(([key, value]) => {\r\n Vue.directive(key, value);\r\n })\r\n \r\n // 函数式调用表单弹窗组件\r\n Vue.prototype.$formDialog = formDialog;\r\n\r\n Vue.prototype.$jump = (url:string, type = '_blank') => {\r\n window.open(url, type);\r\n };\r\n}\r\n\r\n\r\nconst defaultConfig = {\r\n version: 'dev',\r\n install,\r\n ComTemplate,\r\n ComMenu,\r\n ComTabs,\r\n ComTool,\r\n ComDialog,\r\n ComFormItem,\r\n ComOperation,\r\n ComSearch,\r\n ComTable,\r\n ComImage,\r\n ComContainer\r\n};\r\n\r\ntry {\r\n defaultConfig.version = require('../package.json').version;\r\n} catch (e) {\r\n console.log('no require');\r\n}\r\n\r\nexport default defaultConfig;"],"names":["render","staticRenderFns","ComComponent","InComComponent","defaults","throttle","require$$0","this","hasSymbols","toStr","implementation","bind","undefined","$TypeError","require$$1","hasOwn","require$$2","$concat","$replace","GetIntrinsic","callBound","has","isArray","isRegExp","formats","utils","stringify","parse","qs","Vue","ComTemplate","ComMenu","ComTabs","ComTool","ComDialog","ComFormItem","ComOperation","ComSearch","ComTable","ComImage","ComContainer"],"mappings":"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"}