@tmagic/table 1.0.0-beta.11 → 1.0.0-beta.14

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.
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # [文档](https://tencent.github.io/tmagic-editor/docs/)
@@ -74,6 +74,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
74
74
  }
75
75
  };
76
76
  const actionHandler = async (action, row, index) => {
77
+ await action.before?.(row);
77
78
  if (action.type === "delete") {
78
79
  await deleteAction(action, row);
79
80
  } else if (action.type === "copy") {
@@ -82,8 +83,8 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
82
83
  props.editState[index] = row;
83
84
  } else {
84
85
  await action.handler?.(row);
85
- action.after?.();
86
86
  }
87
+ action.after?.(row);
87
88
  };
88
89
  const save = async (index, config) => {
89
90
  const action = config.actions?.find((item) => item.type === "edit")?.action;
@@ -1 +1 @@
1
- {"version":3,"file":"tmagic-table.es.js","sources":["../src/ActionsColumn.vue","../plugin-vue:export-helper","../src/ExpandColumn.vue","../src/utils.ts","../src/PopoverColumn.vue","../src/TextColumn.vue","../src/Table.vue","../src/index.ts"],"sourcesContent":["<template>\n <el-table-column :label=\"config.label\" :width=\"config.width\" :fixed=\"config.fixed\">\n <template v-slot=\"scope\">\n <el-button\n v-for=\"(action, actionIndex) in config.actions\"\n v-show=\"display(action.display, scope.row) && !editState[scope.$index]\"\n v-html=\"action.text\"\n class=\"action-btn\"\n type=\"text\"\n size=\"small\"\n :key=\"actionIndex\"\n @click=\"actionHandler(action, scope.row, scope.$index)\"\n ></el-button>\n <el-button\n class=\"action-btn\"\n v-show=\"editState[scope.$index]\"\n type=\"text\"\n size=\"small\"\n @click=\"save(scope.$index, config)\"\n >保存</el-button\n >\n <el-button\n class=\"action-btn\"\n v-show=\"editState[scope.$index]\"\n type=\"text\"\n size=\"small\"\n @click=\"editState[scope.$index] = undefined\"\n >取消</el-button\n >\n </template>\n </el-table-column>\n</template>\n\n<script lang=\"ts\">\nimport { PropType } from 'vue';\nimport { ElMessage, ElMessageBox } from 'element-plus';\n\nimport { ColumnActionConfig, ColumnConfig } from './schema';\n</script>\n\n<script lang=\"ts\" setup>\nconst props = defineProps({\n columns: {\n type: Array as PropType<any[]>,\n require: true,\n default: () => [],\n },\n\n config: {\n type: Object as PropType<ColumnConfig>,\n require: true,\n default: () => {},\n },\n\n rowkeyName: {\n type: String,\n default: 'c_id',\n },\n\n editState: {\n type: Object,\n default: () => {},\n },\n});\n\nconst emit = defineEmits(['afterAction']);\n\nconst display = (fuc: boolean | Function | undefined, row: any) => {\n if (typeof fuc === 'function') {\n return fuc.call(this, this, row);\n }\n return true;\n};\n\nconst success = (msg: string, action: ColumnActionConfig) => {\n ElMessage.success(msg);\n action.after?.();\n};\n\nconst error = (msg: string) => ElMessage.error(msg);\n\nconst deleteAction = async (action: ColumnActionConfig, row: any) => {\n await ElMessageBox.confirm(`确认删除${row[action.name || 'c_name']}(${row[props.rowkeyName]})?`, '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning',\n });\n\n const res = await action.handler?.(row);\n\n if (res.ret === 0) {\n success('删除成功!', action);\n } else {\n error(res.msg || '删除失败');\n }\n};\n\nconst copyHandler = async (action: ColumnActionConfig, row: any) => {\n await ElMessageBox.confirm(`确定复制${row[action.name || 'c_name']}(${row.c_id})?`, '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning',\n });\n\n try {\n const res = await action.handler?.(row);\n\n if (res.ret === 0) {\n success('复制成功!', action);\n } else {\n error(`复制失败!${res.msg}`);\n }\n } catch (e) {\n error('复制失败!');\n }\n};\n\nconst actionHandler = async (action: ColumnActionConfig, row: any, index: number) => {\n if (action.type === 'delete') {\n await deleteAction(action, row);\n } else if (action.type === 'copy') {\n await copyHandler(action, row);\n } else if (action.type === 'edit') {\n props.editState[index] = row;\n } else {\n await action.handler?.(row);\n action.after?.();\n }\n};\n\nconst save = async (index: number, config: ColumnConfig) => {\n const action = config.actions?.find((item) => item.type === 'edit')?.action;\n if (!action) return;\n\n const data: any = {};\n const row = props.editState[index];\n props.columns\n .filter((item) => item.type)\n .forEach((column) => {\n data[column.prop] = row[column.prop];\n });\n\n const res: any = await action({\n data,\n });\n\n if (res) {\n if (res.ret === 0) {\n ElMessage.success('保存成功');\n props.editState[index] = undefined;\n emit('afterAction');\n } else {\n ElMessage.error({\n duration: 10000,\n showClose: true,\n dangerouslyUseHTMLString: true,\n message: res.msg || '保存失败',\n });\n }\n } else {\n props.editState[index] = undefined;\n emit('afterAction');\n }\n};\n</script>\n","\nexport default (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n}\n","<template>\n <el-table-column type=\"expand\">\n <template #default=\"scope\">\n <m-table\n v-if=\"config.table\"\n :show-header=\"false\"\n :columns=\"config.table\"\n :data=\"scope.row[config.prop]\"\n ></m-table>\n <m-form\n v-if=\"config.form\"\n :config=\"config.form\"\n :init-values=\"config.values || scope.row[config.prop] || {}\"\n ></m-form>\n </template>\n </el-table-column>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue';\n\nimport { MForm } from '@tmagic/form';\n\nimport { ColumnConfig } from './schema';\n\nexport default defineComponent({\n components: { MForm },\n\n props: {\n config: {\n type: Object as PropType<ColumnConfig>,\n default: () => ({}),\n required: true,\n },\n },\n});\n</script>\n","/*\n * Tencent is pleased to support the open source community by making TMagicEditor available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { datetimeFormatter } from '@tmagic/utils';\n\nimport { ColumnConfig } from './schema';\n\nexport const formatter = (item: ColumnConfig, row: any) => {\n if (item.formatter) {\n if (item.formatter === 'datetime') {\n // eslint-disable-next-line no-param-reassign\n item.formatter = (value: string) => datetimeFormatter(value);\n }\n try {\n return item.formatter(row[item.prop], row);\n } catch (e) {\n return row[item.prop];\n }\n } else {\n return row[item.prop];\n }\n};\n","<template>\n <el-table-column :label=\"config.label\" :width=\"config.width\" :fixed=\"config.fixed\">\n <template v-slot=\"scope\">\n <el-popover :placement=\"config.popover.placement\" :width=\"config.popover.width\" :trigger=\"config.popover.trigger\">\n <m-table\n v-if=\"config.popover.tableEmbed\"\n :show-header=\"config.showHeader\"\n :columns=\"config.table\"\n :data=\"scope.row[config.prop]\"\n ></m-table>\n <template #reference>\n <el-button type=\"text\"> {{ config.text || formatter(config, scope.row) }}</el-button>\n </template>\n </el-popover>\n </template>\n </el-table-column>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue';\n\nimport { ColumnConfig } from './schema';\nimport { formatter } from './utils';\n\nexport default defineComponent({\n props: {\n config: {\n type: Object as PropType<ColumnConfig>,\n default: () => ({}),\n required: true,\n },\n },\n\n setup() {\n return {\n formatter,\n };\n },\n});\n</script>\n","<template>\n <el-table-column\n show-overflow-tooltip\n :label=\"config.label\"\n :width=\"config.width\"\n :fixed=\"config.fixed\"\n :sortable=\"config.sortable\"\n :prop=\"config.prop\"\n >\n <template v-slot=\"scope\">\n <el-form v-if=\"config.type && editState[scope.$index]\" label-width=\"0\" :model=\"editState[scope.$index]\">\n <m-form-container\n :prop=\"config.prop\"\n :rules=\"config.rules\"\n :config=\"config\"\n :name=\"config.prop\"\n :model=\"editState[scope.$index]\"\n ></m-form-container>\n </el-form>\n\n <el-button v-else-if=\"config.action === 'actionLink'\" type=\"text\" @click=\"config.handler(scope.row)\">\n {{ formatter(config, scope.row) }}\n </el-button>\n\n <a v-else-if=\"config.action === 'img'\" target=\"_blank\" :href=\"scope.row[config.prop]\"\n ><img :src=\"scope.row[config.prop]\" height=\"50\"\n /></a>\n\n <a v-else-if=\"config.action === 'link'\" target=\"_blank\" :href=\"scope.row[config.prop]\" class=\"keep-all\">{{\n scope.row[config.prop]\n }}</a>\n\n <el-tooltip v-else-if=\"config.action === 'tip'\" placement=\"left\">\n <template #content>\n <div>{{ formatter(config, scope.row) }}</div>\n </template>\n <el-button type=\"text\">扩展配置</el-button>\n </el-tooltip>\n\n <el-tag\n v-else-if=\"config.action === 'tag'\"\n :type=\"typeof config.type === 'function' ? config.type(scope.row[config.prop], scope.row) : config.type\"\n close-transition\n >{{ formatter(config, scope.row) }}</el-tag\n >\n <div v-else v-html=\"formatter(config, scope.row)\"></div>\n </template>\n </el-table-column>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue';\n\nimport { ColumnConfig } from './schema';\nimport { formatter } from './utils';\n\nexport default defineComponent({\n props: {\n config: {\n type: Object as PropType<ColumnConfig>,\n default: () => ({}),\n required: true,\n },\n\n editState: {\n type: Object,\n default: () => {},\n },\n },\n\n setup() {\n return {\n formatter,\n };\n },\n});\n</script>\n","<template>\n <el-table\n :data=\"tableData\"\n :show-header=\"showHeader\"\n :max-height=\"bodyHeight\"\n tooltip-effect=\"dark\"\n class=\"m-table\"\n ref=\"table\"\n :default-expand-all=\"defaultExpandAll\"\n :border=\"hasBorder\"\n :row-key=\"rowkeyName || 'c_id'\"\n :tree-props=\"{ children: 'children' }\"\n :empty-text=\"emptyText || '暂无数据'\"\n :span-method=\"objectSpanMethod\"\n @sort-change=\"sortChange\"\n @select=\"selectHandler\"\n @select-all=\"selectAllHandler\"\n @selection-change=\"selectionChangeHandler\"\n >\n <template v-for=\"(item, columnIndex) in columns\">\n <template v-if=\"item.type === 'expand'\">\n <expand-column :config=\"item\" :key=\"columnIndex\"></expand-column>\n </template>\n\n <template v-else-if=\"item.selection\">\n <el-table-column type=\"selection\" :key=\"columnIndex\" width=\"40\" :selectable=\"item.selectable\"></el-table-column>\n </template>\n\n <template v-else-if=\"item.actions\">\n <actions-column\n :columns=\"columns\"\n :config=\"item\"\n :rowkey-name=\"rowkeyName\"\n :edit-state=\"editState\"\n :key=\"columnIndex\"\n @afterAction=\"$emit('afterAction')\"\n ></actions-column>\n </template>\n\n <template v-else-if=\"item.type === 'popover'\">\n <popover-column :key=\"columnIndex\" :config=\"item\"></popover-column>\n </template>\n\n <template v-else>\n <text-column :key=\"columnIndex\" :config=\"item\" :edit-state=\"editState\"></text-column>\n </template>\n </template>\n </el-table>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue';\nimport { ElTable } from 'element-plus';\nimport { cloneDeep } from 'lodash-es';\n\nimport ActionsColumn from './ActionsColumn.vue';\nimport ExpandColumn from './ExpandColumn.vue';\nimport PopoverColumn from './PopoverColumn.vue';\nimport TextColumn from './TextColumn.vue';\n\nexport default defineComponent({\n name: 'm-table',\n\n components: { ExpandColumn, ActionsColumn, PopoverColumn, TextColumn },\n\n props: {\n data: {\n type: Array,\n require: true,\n },\n\n columns: {\n type: Array as PropType<any[]>,\n require: true,\n default: () => [],\n },\n\n /** 合并行或列的计算方法 */\n spanMethod: {\n type: Function as PropType<\n (data: { row: any; column: any; rowIndex: number; columnIndex: number }) => [number, number]\n >,\n },\n\n fetch: {\n type: Boolean,\n default: false,\n },\n\n /** Table 的最大高度。合法的值为数字或者单位为 px 的高度 */\n bodyHeight: {\n type: [String, Number],\n },\n\n /** 是否显示表头 */\n showHeader: {\n type: Boolean,\n default: true,\n },\n\n /** 空数据时显示的文本内容 */\n emptyText: {\n type: String,\n },\n\n /** 是否默认展开所有行,当 Table 包含展开行存在或者为树形表格时有效 */\n defaultExpandAll: {\n type: Boolean,\n default: false,\n },\n\n rowkeyName: {\n type: String,\n },\n\n /** 是否带有纵向边框 */\n border: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: ['sort-change', 'afterAction', 'select', 'select-all', 'selection-change'],\n\n data(): {\n editState: any[];\n } {\n return {\n editState: [],\n };\n },\n\n computed: {\n tableData() {\n if (this.selectionColumn) {\n return this.data || [];\n }\n\n return cloneDeep(this.data) || [];\n },\n\n selectionColumn() {\n const column = this.columns.filter((item) => item.selection);\n return column.length ? column[0] : null;\n },\n\n hasBorder() {\n return typeof this.border !== 'undefined' ? this.border : true;\n },\n },\n\n methods: {\n sortChange(data: any) {\n this.$emit('sort-change', data);\n },\n\n selectHandler(selection: any, row: any) {\n const column = this.selectionColumn;\n if (!column) {\n return;\n }\n\n if (column.selection === 'single') {\n // this.clearSelection()\n // this.toggleRowSelection(row, true)\n }\n this.$emit('select', selection, row);\n },\n\n selectAllHandler(selection: any) {\n this.$emit('select-all', selection);\n },\n\n selectionChangeHandler(selection: any) {\n this.$emit('selection-change', selection);\n },\n\n toggleRowSelection(row: any, selected: boolean) {\n const table = this.$refs.table as InstanceType<typeof ElTable>;\n table.toggleRowSelection.bind(table)(row, selected);\n },\n\n toggleRowExpansion(row: any, expanded: boolean) {\n const table = this.$refs.table as InstanceType<typeof ElTable>;\n table.toggleRowExpansion.bind(table)(row, expanded);\n },\n\n clearSelection() {\n const table = this.$refs.table as InstanceType<typeof ElTable>;\n table.clearSelection.bind(table)();\n },\n\n objectSpanMethod(data: any) {\n if (typeof this.spanMethod === 'function') {\n return this.spanMethod(data);\n }\n return () => ({\n rowspan: 0,\n colspan: 0,\n });\n },\n },\n});\n</script>\n\n<style lang=\"scss\">\n.m-table {\n .el-button.action-btn {\n margin-right: 10px;\n }\n .el-button.action-btn + .el-button.action-btn {\n margin-left: 0;\n }\n .keep-all {\n word-break: keep-all;\n }\n .el-table .cell > div {\n display: inline-block;\n vertical-align: middle;\n }\n .el-table__row.el-table__row--level-1 {\n color: #999;\n }\n}\n</style>\n","/*\n * Tencent is pleased to support the open source community by making TMagicEditor available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { App } from 'vue';\n\nimport Table from './Table.vue';\n\nexport { default as MagicTable } from './Table.vue';\n\nconst components = [Table];\n\nexport default {\n install(app: App) {\n components.forEach((component) => {\n app.component(component.name, component);\n });\n },\n};\n"],"names":["_sfc_main","_openBlock","_createBlock","_withCtx","_createCommentVNode","_toDisplayString","ActionsColumn","_createElementBlock"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmEA,UAAM,UAAU,CAAC,KAAqC,QAAa;AACjE,UAAI,OAAO,QAAQ,YAAY;AAC7B,eAAO,IAAI,KAAK,MAAM,MAAM;AAAA;AAE9B,aAAO;AAAA;AAGT,UAAM,UAAU,CAAC,KAAa,WAA+B;AAC3D,gBAAU,QAAQ;AAClB,aAAO;AAAA;AAGT,UAAM,QAAQ,CAAC,QAAgB,UAAU,MAAM;AAE/C,UAAM,eAAe,OAAO,QAA4B,QAAa;AACnE,YAAM,aAAa,QAAQ,2BAAO,IAAI,OAAO,QAAQ,aAAa,IAAI,MAAM,iBAAiB,gBAAM;AAAA,QACjG,mBAAmB;AAAA,QACnB,kBAAkB;AAAA,QAClB,MAAM;AAAA;AAGR,YAAM,MAAM,MAAM,OAAO,UAAU;AAEnC,UAAI,IAAI,QAAQ,GAAG;AACjB,gBAAQ,6BAAS;AAAA,aACZ;AACL,cAAM,IAAI,OAAO;AAAA;AAAA;AAIrB,UAAM,cAAc,OAAO,QAA4B,QAAa;AAClE,YAAM,aAAa,QAAQ,2BAAO,IAAI,OAAO,QAAQ,aAAa,IAAI,UAAU,gBAAM;AAAA,QACpF,mBAAmB;AAAA,QACnB,kBAAkB;AAAA,QAClB,MAAM;AAAA;AAGR,UAAI;AACF,cAAM,MAAM,MAAM,OAAO,UAAU;AAEnC,YAAI,IAAI,QAAQ,GAAG;AACjB,kBAAQ,6BAAS;AAAA,eACZ;AACL,gBAAM,4BAAQ,IAAI;AAAA;AAAA,eAEb,GAAP;AACA,cAAM;AAAA;AAAA;AAIV,UAAM,gBAAgB,OAAO,QAA4B,KAAU,UAAkB;AACnF,UAAI,OAAO,SAAS,UAAU;AAC5B,cAAM,aAAa,QAAQ;AAAA,iBAClB,OAAO,SAAS,QAAQ;AACjC,cAAM,YAAY,QAAQ;AAAA,iBACjB,OAAO,SAAS,QAAQ;AACjC,cAAM,UAAU,SAAS;AAAA,aACpB;AACL,cAAM,OAAO,UAAU;AACvB,eAAO;AAAA;AAAA;AAIX,UAAM,OAAO,OAAO,OAAe,WAAyB;AAC1D,YAAM,SAAS,OAAO,SAAS,KAAK,CAAC,SAAS,KAAK,SAAS,SAAS;AACrE,UAAI,CAAC;AAAQ;AAEb,YAAM,OAAY;AAClB,YAAM,MAAM,MAAM,UAAU;AAC5B,YAAM,QACH,OAAO,CAAC,SAAS,KAAK,MACtB,QAAQ,CAAC,WAAW;AACnB,aAAK,OAAO,QAAQ,IAAI,OAAO;AAAA;AAGnC,YAAM,MAAW,MAAM,OAAO;AAAA,QAC5B;AAAA;AAGF,UAAI,KAAK;AACP,YAAI,IAAI,QAAQ,GAAG;AACjB,oBAAU,QAAQ;AAClB,gBAAM,UAAU,SAAS;AACzB,eAAK;AAAA,eACA;AACL,oBAAU,MAAM;AAAA,YACd,UAAU;AAAA,YACV,WAAW;AAAA,YACX,0BAA0B;AAAA,YAC1B,SAAS,IAAI,OAAO;AAAA;AAAA;AAAA,aAGnB;AACL,cAAM,UAAU,SAAS;AACzB,aAAK;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChKT,kBAAe,CAAC,GAAG,EAAE,KAAK,KAAK;AAC/B,EAAE,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC;AACtC,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE;AAClC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACtB,GAAG;AACH,EAAE,OAAO,MAAM,CAAC;AAChB;;ACkBA,MAAKA,cAAa,gBAAa;AAAA,EAC7B,YAAY,EAAE;AAAA,EAEd,OAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAO,MAChB,UAAU;AAAA;AAAA;AAAA;;;;;SA9BDC,aAMEC,YANY;AAAA,aAEfC,QAAO,WAAK;AAAA;QACjB;AAAA,QACA,eAAS;AAAA,QACT,SAAM,KAAM,OAAI;AAAA;0CAGXC,mBAAW;AAAA;QAChB;AAAA,QACA,aAAW,OAAE;AAAA;;;;;;;;MCUT,YAAY,CAAC,MAAoB,QAAa;AACzD,MAAI,KAAK,WAAW;AAClB,QAAI,KAAK,cAAc,YAAY;AAEjC,WAAK,YAAY,CAAC,UAAkB,kBAAkB;AAAA;AAExD,QAAI;AACF,aAAO,KAAK,UAAU,IAAI,KAAK,OAAO;AAAA,aAC/B,GAAP;AACA,aAAO,IAAI,KAAK;AAAA;AAAA,SAEb;AACL,WAAO,IAAI,KAAK;AAAA;AAAA;;ACVpB,MAAKJ,cAAa,gBAAa;AAAA,EAC7B,OAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAO,MAChB,UAAU;AAAA;AAAA;AAAA,EAId,QAAQ;AACN,WAAO;AAAA,MACL;AAAA;AAAA;AAAA;;;;;;SAlCmBC,aAASC,YAAK;AAAA,IAAG,OAAO,YAAO;AAAA,IAAQ,OAAO,YAAO;AAAA;;aAExEC,QAUa;AAAA,kBAVW,uBAAe;AAAA,QAAY,WAAO,YAAO,QAAQ;AAAA,QAAQ,OAAO,KAAE,eAAO;AAAA;SAOpF;AAAA,mBACTA,QAAqF;AAAA,4CAAZ;AAAA;;;;;;iBANnEA,QAAO,MAAQ;AAAA,8BADvB;YAEG;AAAA,YACA,eAAS,KAAM,OAAM;AAAA,YACrB,SAAM,KAAM,OAAI;AAAA;;;;;;;;;;;ACgD3B,MAAKH,cAAa,gBAAa;AAAA,EAC7B,OAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAO,MAChB,UAAU;AAAA;AAAA,IAGZ,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS,MAAM;AAAA;AAAA;AAAA;AAAA,EAInB,QAAQ;AACN,WAAO;AAAA,MACL;AAAA;AAAA;AAAA;;;;;;;;;;;;;SAtEFC,yBAAqB;AAAA,IACpB,yBAAmB;AAAA,IACnB,OAAO,YAAO;AAAA,IACd,OAAO,YAAO;AAAA,IACd,YAAU;AAAA,IACV,UAAM,YAAW;AAAA;;aAGDE,QAAO,CAAI,UAAI;AAAA,0BAA9B,eAQU;QAR6C;AAAA,QAAiB,eAAO;AAAA;;iBAC7EA,QAMoB;AAAA,sBALX,6BAAW;AAAA,YACjB,MAAK,KAAE,OAAM;AAAA,YACb,OAAM,KAAE,OAAM;AAAA,YACd,QAAM;AAAA,YACN,MAAK,KAAE;AAAA;;;;SAIU,2CAAtB;QAAsD,KAAI;AAAA,QAAS;AAAA;;;;;;SAIrD,6CAAd;QAAuC;AAAA,QAAiB,QAAM;AAAA;SAC3D;AAAA,2BAAqB;AAAA,UAAc,WAAO,IAAI;AAAA;;SAGnC,yCAAd;QAAwC;AAAA,QAAiB,QAAM;AAAA,QAAwB,MAAK,MAAC,SAAU;AAAA;SAIhFE,gBAAa,uEAApC;QAAgD;AAAA;SACnC;AAAA,iBACTF,cAA6C;AAAA;;iBAE/CA,QAAuC;AAAA,4CAAZ;AAAA;;;;;;;SAIhB,gCADb;QAEG,KAAI;AAAA,QACL,kBAAgB;AAAA;;;;;;;QAGN;AAAA;;;;;;;;;;ACelB,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EAEN,YAAY,EAAE,6BAAcG,aAAe,eAAe;AAAA,EAE1D,OAAO;AAAA,IACL,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAGX,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS,MAAM;AAAA;AAAA,IAIjB,YAAY;AAAA,MACV,MAAM;AAAA;AAAA,IAKR,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAIX,YAAY;AAAA,MACV,MAAM,CAAC,QAAQ;AAAA;AAAA,IAIjB,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAIX,WAAW;AAAA,MACT,MAAM;AAAA;AAAA,IAIR,kBAAkB;AAAA,MAChB,MAAM;AAAA,MACN,SAAS;AAAA;AAAA,IAGX,YAAY;AAAA,MACV,MAAM;AAAA;AAAA,IAIR,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA,EAIb,OAAO,CAAC,eAAe,eAAe,UAAU,cAAc;AAAA,EAE9D,OAEE;AACA,WAAO;AAAA,MACL,WAAW;AAAA;AAAA;AAAA,EAIf,UAAU;AAAA,IACR,YAAY;AACV,UAAI,KAAK,iBAAiB;AACxB,eAAO,KAAK,QAAQ;AAAA;AAGtB,aAAO,UAAU,KAAK,SAAS;AAAA;AAAA,IAGjC,kBAAkB;AAChB,YAAM,SAAS,KAAK,QAAQ,OAAO,CAAC,SAAS,KAAK;AAClD,aAAO,OAAO,SAAS,OAAO,KAAK;AAAA;AAAA,IAGrC,YAAY;AACV,aAAO,OAAO,KAAK,WAAW,cAAc,KAAK,SAAS;AAAA;AAAA;AAAA,EAI9D,SAAS;AAAA,IACP,WAAW,MAAW;AACpB,WAAK,MAAM,eAAe;AAAA;AAAA,IAG5B,cAAc,WAAgB,KAAU;AACtC,YAAM,SAAS,KAAK;AACpB,UAAI,CAAC,QAAQ;AACX;AAAA;AAGF,UAAI,OAAO,cAAc,UAAU;AAInC,WAAK,MAAM,UAAU,WAAW;AAAA;AAAA,IAGlC,iBAAiB,WAAgB;AAC/B,WAAK,MAAM,cAAc;AAAA;AAAA,IAG3B,uBAAuB,WAAgB;AACrC,WAAK,MAAM,oBAAoB;AAAA;AAAA,IAGjC,mBAAmB,KAAU,UAAmB;AAC9C,YAAM,QAAQ,KAAK,MAAM;AACzB,YAAM,mBAAmB,KAAK,OAAO,KAAK;AAAA;AAAA,IAG5C,mBAAmB,KAAU,UAAmB;AAC9C,YAAM,QAAQ,KAAK,MAAM;AACzB,YAAM,mBAAmB,KAAK,OAAO,KAAK;AAAA;AAAA,IAG5C,iBAAiB;AACf,YAAM,QAAQ,KAAK,MAAM;AACzB,YAAM,eAAe,KAAK;AAAA;AAAA,IAG5B,iBAAiB,MAAW;AAC1B,UAAI,OAAO,KAAK,eAAe,YAAY;AACzC,eAAO,KAAK,WAAW;AAAA;AAEzB,aAAO;AAAO,QACZ,SAAS;AAAA,QACT,SAAS;AAAA;AAAA;AAAA;AAAA;;;;;;;;SApMNL,aAASC;AAAA,IACf;AAAA,IACA,eAAY;AAAA,IACb,mBAAe;AAAA,IACf,kBAAe;AAAA,IACf,OAAI;AAAA,IACH;AAAA,IACA,sBAAiB;AAAA,IACjB,aAAS;AAAA,IACT,gBAAY;AAAA,IACZ,cAAY;AAAA,IACZ,cAAW,KAAE;AAAA,IACb,eAAa;AAAA,IACb,cAAQ;AAAA,IACR,eAAY;AAAA,IACZ,kBAAgB;AAAA;;2BAEjB;AAAA;eACuBD,aAAIM;AAAA,iDACKL;AAAA,YAAG,QAAK;AAAA;aAGjB,MAAK,iDACFA,YAAW;AAAA,YAAE,MAAK;AAAA,YAAa,KAAK;AAAA,YAAO;AAAA;aAG9C,MAAK,IAAO,+CAEnBA,YAAO;AAAA,YAChB,SAAQ,KAAI;AAAA,YACZ;AAAA,YACA,eAAY;AAAA,YACZ,cAAK,KAAW;AAAA,YAChB;AAAA;aAIgB,MAAK,GAAI,+FACNA,YAAW;AAAA,YAAG;AAAA;mDAIjBA,YAAW;AAAA,YAAG;AAAA,YAAe;AAAA;;;;;;;;;;ACpBxD,MAAM,aAAa,CAAC;AAEpB,YAAe;AAAA,EACb,QAAQ,KAAU;AAChB,eAAW,QAAQ,CAAC,cAAc;AAChC,UAAI,UAAU,UAAU,MAAM;AAAA;AAAA;AAAA;;;;"}
1
+ {"version":3,"file":"tmagic-table.es.js","sources":["../src/ActionsColumn.vue","../plugin-vue:export-helper","../src/ExpandColumn.vue","../src/utils.ts","../src/PopoverColumn.vue","../src/TextColumn.vue","../src/Table.vue","../src/index.ts"],"sourcesContent":["<template>\n <el-table-column :label=\"config.label\" :width=\"config.width\" :fixed=\"config.fixed\">\n <template v-slot=\"scope\">\n <el-button\n v-for=\"(action, actionIndex) in config.actions\"\n v-show=\"display(action.display, scope.row) && !editState[scope.$index]\"\n v-html=\"action.text\"\n class=\"action-btn\"\n type=\"text\"\n size=\"small\"\n :key=\"actionIndex\"\n @click=\"actionHandler(action, scope.row, scope.$index)\"\n ></el-button>\n <el-button\n class=\"action-btn\"\n v-show=\"editState[scope.$index]\"\n type=\"text\"\n size=\"small\"\n @click=\"save(scope.$index, config)\"\n >保存</el-button\n >\n <el-button\n class=\"action-btn\"\n v-show=\"editState[scope.$index]\"\n type=\"text\"\n size=\"small\"\n @click=\"editState[scope.$index] = undefined\"\n >取消</el-button\n >\n </template>\n </el-table-column>\n</template>\n\n<script lang=\"ts\">\nimport { PropType } from 'vue';\nimport { ElMessage, ElMessageBox } from 'element-plus';\n\nimport { ColumnActionConfig, ColumnConfig } from './schema';\n</script>\n\n<script lang=\"ts\" setup>\nconst props = defineProps({\n columns: {\n type: Array as PropType<any[]>,\n require: true,\n default: () => [],\n },\n\n config: {\n type: Object as PropType<ColumnConfig>,\n require: true,\n default: () => {},\n },\n\n rowkeyName: {\n type: String,\n default: 'c_id',\n },\n\n editState: {\n type: Object,\n default: () => {},\n },\n});\n\nconst emit = defineEmits(['afterAction']);\n\nconst display = (fuc: boolean | Function | undefined, row: any) => {\n if (typeof fuc === 'function') {\n return fuc.call(this, this, row);\n }\n return true;\n};\n\nconst success = (msg: string, action: ColumnActionConfig) => {\n ElMessage.success(msg);\n action.after?.();\n};\n\nconst error = (msg: string) => ElMessage.error(msg);\n\nconst deleteAction = async (action: ColumnActionConfig, row: any) => {\n await ElMessageBox.confirm(`确认删除${row[action.name || 'c_name']}(${row[props.rowkeyName]})?`, '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning',\n });\n\n const res = await action.handler?.(row);\n\n if (res.ret === 0) {\n success('删除成功!', action);\n } else {\n error(res.msg || '删除失败');\n }\n};\n\nconst copyHandler = async (action: ColumnActionConfig, row: any) => {\n await ElMessageBox.confirm(`确定复制${row[action.name || 'c_name']}(${row.c_id})?`, '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning',\n });\n\n try {\n const res = await action.handler?.(row);\n\n if (res.ret === 0) {\n success('复制成功!', action);\n } else {\n error(`复制失败!${res.msg}`);\n }\n } catch (e) {\n error('复制失败!');\n }\n};\n\nconst actionHandler = async (action: ColumnActionConfig, row: any, index: number) => {\n await action.before?.(row);\n if (action.type === 'delete') {\n await deleteAction(action, row);\n } else if (action.type === 'copy') {\n await copyHandler(action, row);\n } else if (action.type === 'edit') {\n props.editState[index] = row;\n } else {\n await action.handler?.(row);\n }\n action.after?.(row);\n};\n\nconst save = async (index: number, config: ColumnConfig) => {\n const action = config.actions?.find((item) => item.type === 'edit')?.action;\n if (!action) return;\n\n const data: any = {};\n const row = props.editState[index];\n props.columns\n .filter((item) => item.type)\n .forEach((column) => {\n data[column.prop] = row[column.prop];\n });\n\n const res: any = await action({\n data,\n });\n\n if (res) {\n if (res.ret === 0) {\n ElMessage.success('保存成功');\n props.editState[index] = undefined;\n emit('afterAction');\n } else {\n ElMessage.error({\n duration: 10000,\n showClose: true,\n dangerouslyUseHTMLString: true,\n message: res.msg || '保存失败',\n });\n }\n } else {\n props.editState[index] = undefined;\n emit('afterAction');\n }\n};\n</script>\n","\nexport default (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n}\n","<template>\n <el-table-column type=\"expand\">\n <template #default=\"scope\">\n <m-table\n v-if=\"config.table\"\n :show-header=\"false\"\n :columns=\"config.table\"\n :data=\"scope.row[config.prop]\"\n ></m-table>\n <m-form\n v-if=\"config.form\"\n :config=\"config.form\"\n :init-values=\"config.values || scope.row[config.prop] || {}\"\n ></m-form>\n </template>\n </el-table-column>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue';\n\nimport { MForm } from '@tmagic/form';\n\nimport { ColumnConfig } from './schema';\n\nexport default defineComponent({\n components: { MForm },\n\n props: {\n config: {\n type: Object as PropType<ColumnConfig>,\n default: () => ({}),\n required: true,\n },\n },\n});\n</script>\n","/*\n * Tencent is pleased to support the open source community by making TMagicEditor available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { datetimeFormatter } from '@tmagic/utils';\n\nimport { ColumnConfig } from './schema';\n\nexport const formatter = (item: ColumnConfig, row: any) => {\n if (item.formatter) {\n if (item.formatter === 'datetime') {\n // eslint-disable-next-line no-param-reassign\n item.formatter = (value: string) => datetimeFormatter(value);\n }\n try {\n return item.formatter(row[item.prop], row);\n } catch (e) {\n return row[item.prop];\n }\n } else {\n return row[item.prop];\n }\n};\n","<template>\n <el-table-column :label=\"config.label\" :width=\"config.width\" :fixed=\"config.fixed\">\n <template v-slot=\"scope\">\n <el-popover :placement=\"config.popover.placement\" :width=\"config.popover.width\" :trigger=\"config.popover.trigger\">\n <m-table\n v-if=\"config.popover.tableEmbed\"\n :show-header=\"config.showHeader\"\n :columns=\"config.table\"\n :data=\"scope.row[config.prop]\"\n ></m-table>\n <template #reference>\n <el-button type=\"text\"> {{ config.text || formatter(config, scope.row) }}</el-button>\n </template>\n </el-popover>\n </template>\n </el-table-column>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue';\n\nimport { ColumnConfig } from './schema';\nimport { formatter } from './utils';\n\nexport default defineComponent({\n props: {\n config: {\n type: Object as PropType<ColumnConfig>,\n default: () => ({}),\n required: true,\n },\n },\n\n setup() {\n return {\n formatter,\n };\n },\n});\n</script>\n","<template>\n <el-table-column\n show-overflow-tooltip\n :label=\"config.label\"\n :width=\"config.width\"\n :fixed=\"config.fixed\"\n :sortable=\"config.sortable\"\n :prop=\"config.prop\"\n >\n <template v-slot=\"scope\">\n <el-form v-if=\"config.type && editState[scope.$index]\" label-width=\"0\" :model=\"editState[scope.$index]\">\n <m-form-container\n :prop=\"config.prop\"\n :rules=\"config.rules\"\n :config=\"config\"\n :name=\"config.prop\"\n :model=\"editState[scope.$index]\"\n ></m-form-container>\n </el-form>\n\n <el-button v-else-if=\"config.action === 'actionLink'\" type=\"text\" @click=\"config.handler(scope.row)\">\n {{ formatter(config, scope.row) }}\n </el-button>\n\n <a v-else-if=\"config.action === 'img'\" target=\"_blank\" :href=\"scope.row[config.prop]\"\n ><img :src=\"scope.row[config.prop]\" height=\"50\"\n /></a>\n\n <a v-else-if=\"config.action === 'link'\" target=\"_blank\" :href=\"scope.row[config.prop]\" class=\"keep-all\">{{\n scope.row[config.prop]\n }}</a>\n\n <el-tooltip v-else-if=\"config.action === 'tip'\" placement=\"left\">\n <template #content>\n <div>{{ formatter(config, scope.row) }}</div>\n </template>\n <el-button type=\"text\">扩展配置</el-button>\n </el-tooltip>\n\n <el-tag\n v-else-if=\"config.action === 'tag'\"\n :type=\"typeof config.type === 'function' ? config.type(scope.row[config.prop], scope.row) : config.type\"\n close-transition\n >{{ formatter(config, scope.row) }}</el-tag\n >\n <div v-else v-html=\"formatter(config, scope.row)\"></div>\n </template>\n </el-table-column>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue';\n\nimport { ColumnConfig } from './schema';\nimport { formatter } from './utils';\n\nexport default defineComponent({\n props: {\n config: {\n type: Object as PropType<ColumnConfig>,\n default: () => ({}),\n required: true,\n },\n\n editState: {\n type: Object,\n default: () => {},\n },\n },\n\n setup() {\n return {\n formatter,\n };\n },\n});\n</script>\n","<template>\n <el-table\n :data=\"tableData\"\n :show-header=\"showHeader\"\n :max-height=\"bodyHeight\"\n tooltip-effect=\"dark\"\n class=\"m-table\"\n ref=\"table\"\n :default-expand-all=\"defaultExpandAll\"\n :border=\"hasBorder\"\n :row-key=\"rowkeyName || 'c_id'\"\n :tree-props=\"{ children: 'children' }\"\n :empty-text=\"emptyText || '暂无数据'\"\n :span-method=\"objectSpanMethod\"\n @sort-change=\"sortChange\"\n @select=\"selectHandler\"\n @select-all=\"selectAllHandler\"\n @selection-change=\"selectionChangeHandler\"\n >\n <template v-for=\"(item, columnIndex) in columns\">\n <template v-if=\"item.type === 'expand'\">\n <expand-column :config=\"item\" :key=\"columnIndex\"></expand-column>\n </template>\n\n <template v-else-if=\"item.selection\">\n <el-table-column type=\"selection\" :key=\"columnIndex\" width=\"40\" :selectable=\"item.selectable\"></el-table-column>\n </template>\n\n <template v-else-if=\"item.actions\">\n <actions-column\n :columns=\"columns\"\n :config=\"item\"\n :rowkey-name=\"rowkeyName\"\n :edit-state=\"editState\"\n :key=\"columnIndex\"\n @afterAction=\"$emit('afterAction')\"\n ></actions-column>\n </template>\n\n <template v-else-if=\"item.type === 'popover'\">\n <popover-column :key=\"columnIndex\" :config=\"item\"></popover-column>\n </template>\n\n <template v-else>\n <text-column :key=\"columnIndex\" :config=\"item\" :edit-state=\"editState\"></text-column>\n </template>\n </template>\n </el-table>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue';\nimport { ElTable } from 'element-plus';\nimport { cloneDeep } from 'lodash-es';\n\nimport ActionsColumn from './ActionsColumn.vue';\nimport ExpandColumn from './ExpandColumn.vue';\nimport PopoverColumn from './PopoverColumn.vue';\nimport TextColumn from './TextColumn.vue';\n\nexport default defineComponent({\n name: 'm-table',\n\n components: { ExpandColumn, ActionsColumn, PopoverColumn, TextColumn },\n\n props: {\n data: {\n type: Array,\n require: true,\n },\n\n columns: {\n type: Array as PropType<any[]>,\n require: true,\n default: () => [],\n },\n\n /** 合并行或列的计算方法 */\n spanMethod: {\n type: Function as PropType<\n (data: { row: any; column: any; rowIndex: number; columnIndex: number }) => [number, number]\n >,\n },\n\n fetch: {\n type: Boolean,\n default: false,\n },\n\n /** Table 的最大高度。合法的值为数字或者单位为 px 的高度 */\n bodyHeight: {\n type: [String, Number],\n },\n\n /** 是否显示表头 */\n showHeader: {\n type: Boolean,\n default: true,\n },\n\n /** 空数据时显示的文本内容 */\n emptyText: {\n type: String,\n },\n\n /** 是否默认展开所有行,当 Table 包含展开行存在或者为树形表格时有效 */\n defaultExpandAll: {\n type: Boolean,\n default: false,\n },\n\n rowkeyName: {\n type: String,\n },\n\n /** 是否带有纵向边框 */\n border: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: ['sort-change', 'afterAction', 'select', 'select-all', 'selection-change'],\n\n data(): {\n editState: any[];\n } {\n return {\n editState: [],\n };\n },\n\n computed: {\n tableData() {\n if (this.selectionColumn) {\n return this.data || [];\n }\n\n return cloneDeep(this.data) || [];\n },\n\n selectionColumn() {\n const column = this.columns.filter((item) => item.selection);\n return column.length ? column[0] : null;\n },\n\n hasBorder() {\n return typeof this.border !== 'undefined' ? this.border : true;\n },\n },\n\n methods: {\n sortChange(data: any) {\n this.$emit('sort-change', data);\n },\n\n selectHandler(selection: any, row: any) {\n const column = this.selectionColumn;\n if (!column) {\n return;\n }\n\n if (column.selection === 'single') {\n // this.clearSelection()\n // this.toggleRowSelection(row, true)\n }\n this.$emit('select', selection, row);\n },\n\n selectAllHandler(selection: any) {\n this.$emit('select-all', selection);\n },\n\n selectionChangeHandler(selection: any) {\n this.$emit('selection-change', selection);\n },\n\n toggleRowSelection(row: any, selected: boolean) {\n const table = this.$refs.table as InstanceType<typeof ElTable>;\n table.toggleRowSelection.bind(table)(row, selected);\n },\n\n toggleRowExpansion(row: any, expanded: boolean) {\n const table = this.$refs.table as InstanceType<typeof ElTable>;\n table.toggleRowExpansion.bind(table)(row, expanded);\n },\n\n clearSelection() {\n const table = this.$refs.table as InstanceType<typeof ElTable>;\n table.clearSelection.bind(table)();\n },\n\n objectSpanMethod(data: any) {\n if (typeof this.spanMethod === 'function') {\n return this.spanMethod(data);\n }\n return () => ({\n rowspan: 0,\n colspan: 0,\n });\n },\n },\n});\n</script>\n\n<style lang=\"scss\">\n.m-table {\n .el-button.action-btn {\n margin-right: 10px;\n }\n .el-button.action-btn + .el-button.action-btn {\n margin-left: 0;\n }\n .keep-all {\n word-break: keep-all;\n }\n .el-table .cell > div {\n display: inline-block;\n vertical-align: middle;\n }\n .el-table__row.el-table__row--level-1 {\n color: #999;\n }\n}\n</style>\n","/*\n * Tencent is pleased to support the open source community by making TMagicEditor available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { App } from 'vue';\n\nimport Table from './Table.vue';\n\nexport { default as MagicTable } from './Table.vue';\n\nconst components = [Table];\n\nexport default {\n install(app: App) {\n components.forEach((component) => {\n app.component(component.name, component);\n });\n },\n};\n"],"names":["_sfc_main","_openBlock","_createBlock","_withCtx","_createCommentVNode","_createVNode","_createElementBlock","_createElementVNode","_toDisplayString","ActionsColumn","_Fragment","_renderList"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmEA,IAAM,MAAA,OAAA,GAAU,CAAC,GAAA,EAAqC,GAAa,KAAA;AACjE,MAAI,IAAA,OAAO,QAAQ,UAAY,EAAA;AAC7B,QAAA,OAAO,GAAI,CAAA,IAAA,CAAK,IAAM,EAAA,IAAA,EAAM,GAAG,CAAA,CAAA;AAAA,OACjC;AACA,MAAO,OAAA,IAAA,CAAA;AAAA,KACT,CAAA;AAEA,IAAM,MAAA,OAAA,GAAU,CAAC,GAAA,EAAa,MAA+B,KAAA;AAC3D,MAAA,SAAA,CAAU,QAAQ,GAAG,CAAA,CAAA;AACrB,MAAA,MAAA,CAAO,KAAQ,IAAA,CAAA;AAAA,KACjB,CAAA;AAEA,IAAA,MAAM,KAAQ,GAAA,CAAC,GAAgB,KAAA,SAAA,CAAU,MAAM,GAAG,CAAA,CAAA;AAElD,IAAM,MAAA,YAAA,GAAe,OAAO,MAAA,EAA4B,GAAa,KAAA;AACnE,MAAM,MAAA,YAAA,CAAa,OAAQ,CAAA,CAAA,wBAAA,EAAO,GAAI,CAAA,MAAA,CAAO,QAAQ,QAAa,CAAA,CAAA,CAAA,EAAA,GAAA,CAAI,KAAM,CAAA,UAAA,CAAA,CAAA,EAAA,CAAA,EAAiB,cAAM,EAAA;AAAA,QACjG,iBAAmB,EAAA,cAAA;AAAA,QACnB,gBAAkB,EAAA,cAAA;AAAA,QAClB,IAAM,EAAA,SAAA;AAAA,OACP,CAAA,CAAA;AAED,MAAA,MAAM,GAAM,GAAA,MAAM,MAAO,CAAA,OAAA,GAAU,GAAG,CAAA,CAAA;AAEtC,MAAI,IAAA,GAAA,CAAI,QAAQ,CAAG,EAAA;AACjB,QAAA,OAAA,CAAQ,6BAAS,MAAM,CAAA,CAAA;AAAA,OAClB,MAAA;AACL,QAAM,KAAA,CAAA,GAAA,CAAI,OAAO,0BAAM,CAAA,CAAA;AAAA,OACzB;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,WAAA,GAAc,OAAO,MAAA,EAA4B,GAAa,KAAA;AAClE,MAAM,MAAA,YAAA,CAAa,QAAQ,CAAO,wBAAA,EAAA,GAAA,CAAI,OAAO,IAAQ,IAAA,QAAA,CAAA,CAAA,CAAA,EAAa,GAAI,CAAA,IAAA,CAAA,EAAA,CAAA,EAAU,cAAM,EAAA;AAAA,QACpF,iBAAmB,EAAA,cAAA;AAAA,QACnB,gBAAkB,EAAA,cAAA;AAAA,QAClB,IAAM,EAAA,SAAA;AAAA,OACP,CAAA,CAAA;AAED,MAAI,IAAA;AACF,QAAA,MAAM,GAAM,GAAA,MAAM,MAAO,CAAA,OAAA,GAAU,GAAG,CAAA,CAAA;AAEtC,QAAI,IAAA,GAAA,CAAI,QAAQ,CAAG,EAAA;AACjB,UAAA,OAAA,CAAQ,6BAAS,MAAM,CAAA,CAAA;AAAA,SAClB,MAAA;AACL,UAAM,KAAA,CAAA,CAAA,yBAAA,EAAQ,IAAI,GAAK,CAAA,CAAA,CAAA,CAAA;AAAA,SACzB;AAAA,eACO,CAAP,EAAA;AACA,QAAA,KAAA,CAAM,2BAAO,CAAA,CAAA;AAAA,OACf;AAAA,KACF,CAAA;AAEA,IAAA,MAAM,aAAgB,GAAA,OAAO,MAA4B,EAAA,GAAA,EAAU,KAAkB,KAAA;AACnF,MAAM,MAAA,MAAA,CAAO,SAAS,GAAG,CAAA,CAAA;AACzB,MAAI,IAAA,MAAA,CAAO,SAAS,QAAU,EAAA;AAC5B,QAAM,MAAA,YAAA,CAAa,QAAQ,GAAG,CAAA,CAAA;AAAA,OAChC,MAAA,IAAW,MAAO,CAAA,IAAA,KAAS,MAAQ,EAAA;AACjC,QAAM,MAAA,WAAA,CAAY,QAAQ,GAAG,CAAA,CAAA;AAAA,OAC/B,MAAA,IAAW,MAAO,CAAA,IAAA,KAAS,MAAQ,EAAA;AACjC,QAAA,KAAA,CAAM,UAAU,KAAS,CAAA,GAAA,GAAA,CAAA;AAAA,OACpB,MAAA;AACL,QAAM,MAAA,MAAA,CAAO,UAAU,GAAG,CAAA,CAAA;AAAA,OAC5B;AACA,MAAA,MAAA,CAAO,QAAQ,GAAG,CAAA,CAAA;AAAA,KACpB,CAAA;AAEA,IAAM,MAAA,IAAA,GAAO,OAAO,KAAA,EAAe,MAAyB,KAAA;AAC1D,MAAM,MAAA,MAAA,GAAS,OAAO,OAAS,EAAA,IAAA,CAAK,CAAC,IAAS,KAAA,IAAA,CAAK,IAAS,KAAA,MAAM,CAAG,EAAA,MAAA,CAAA;AACrE,MAAA,IAAI,CAAC,MAAA;AAAQ,QAAA,OAAA;AAEb,MAAA,MAAM,OAAY,EAAC,CAAA;AACnB,MAAM,MAAA,GAAA,GAAM,MAAM,SAAU,CAAA,KAAA,CAAA,CAAA;AAC5B,MAAM,KAAA,CAAA,OAAA,CACH,OAAO,CAAC,IAAA,KAAS,KAAK,IAAI,CAAA,CAC1B,OAAQ,CAAA,CAAC,MAAW,KAAA;AACnB,QAAK,IAAA,CAAA,MAAA,CAAO,IAAQ,CAAA,GAAA,GAAA,CAAI,MAAO,CAAA,IAAA,CAAA,CAAA;AAAA,OAChC,CAAA,CAAA;AAEH,MAAM,MAAA,GAAA,GAAW,MAAM,MAAO,CAAA;AAAA,QAC5B,IAAA;AAAA,OACD,CAAA,CAAA;AAED,MAAA,IAAI,GAAK,EAAA;AACP,QAAI,IAAA,GAAA,CAAI,QAAQ,CAAG,EAAA;AACjB,UAAA,SAAA,CAAU,QAAQ,0BAAM,CAAA,CAAA;AACxB,UAAA,KAAA,CAAM,UAAU,KAAS,CAAA,GAAA,KAAA,CAAA,CAAA;AACzB,UAAA,IAAA,CAAK,aAAa,CAAA,CAAA;AAAA,SACb,MAAA;AACL,UAAA,SAAA,CAAU,KAAM,CAAA;AAAA,YACd,QAAU,EAAA,GAAA;AAAA,YACV,SAAW,EAAA,IAAA;AAAA,YACX,wBAA0B,EAAA,IAAA;AAAA,YAC1B,OAAA,EAAS,IAAI,GAAO,IAAA,0BAAA;AAAA,WACrB,CAAA,CAAA;AAAA,SACH;AAAA,OACK,MAAA;AACL,QAAA,KAAA,CAAM,UAAU,KAAS,CAAA,GAAA,KAAA,CAAA,CAAA;AACzB,QAAA,IAAA,CAAK,aAAa,CAAA,CAAA;AAAA,OACpB;AAAA,KACF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnKA,kBAAe,CAAC,GAAG,EAAE,KAAK,KAAK;AAC/B,EAAE,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC;AACtC,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE;AAClC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AACtB,GAAG;AACH,EAAE,OAAO,MAAM,CAAC;AAChB;;ACkBA,MAAKA,cAAa,eAAa,CAAA;AAAA,EAC7B,UAAA,EAAY,EAAE,KAAM,EAAA;AAAA,EAEpB,KAAO,EAAA;AAAA,IACL,MAAQ,EAAA;AAAA,MACN,IAAM,EAAA,MAAA;AAAA,MACN,OAAA,EAAS,OAAQ,EAAA,CAAA;AAAA,MACjB,QAAU,EAAA,IAAA;AAAA,KACZ;AAAA,GACF;AACF,CAAC,CAAA,CAAA;;;;;AAjCc,EAAA,OAAAC,SAAA,IAMEC,WANY,CAAA,0BAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA;AAAA,IAAA,OAAA,EAEfC,QAAO,CAAK,KAAA,KAAA;AAAA,MAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAAF,SAAA,EAAA,EAAAC,WAAA,CAAA,kBAAA,EAAA;AACjB,QAAA,GAAA,EAAA,CAAA;AAAA,QACA,aAAS,EAAA,KAAA;AAAA,QACT,OAAA,EAAM,KAAM,MAAI,CAAA,KAAA;AAAA,QAAA,IAAA,EAAA,KAAA,CAAA,GAAA,CAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA;0CAGXE,kBAAW,CAAA,EAAA,EAAA,IAAA,CAAA;AAAA,MAAA,IAAA,CAAA,MAAA,CAAA,IAAA,IAAAH,SAAA,EAAA,EAAAC,WAAA,CAAA,iBAAA,EAAA;AAChB,QAAA,GAAA,EAAA,CAAA;AAAA,QACA,aAAW,MAAE,CAAA,IAAA;AAAA,QAAA,aAAA,EAAA,IAAA,CAAA,MAAA,CAAA,MAAA,IAAA,KAAA,CAAA,GAAA,CAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAA;;;;;;;;ACUT,MAAA,SAAA,GAAY,CAAC,IAAA,EAAoB,GAAa,KAAA;AACzD,EAAA,IAAI,KAAK,SAAW,EAAA;AAClB,IAAI,IAAA,IAAA,CAAK,cAAc,UAAY,EAAA;AAEjC,MAAA,IAAA,CAAK,SAAY,GAAA,CAAC,KAAkB,KAAA,iBAAA,CAAkB,KAAK,CAAA,CAAA;AAAA,KAC7D;AACA,IAAI,IAAA;AACF,MAAA,OAAO,IAAK,CAAA,SAAA,CAAU,GAAI,CAAA,IAAA,CAAK,OAAO,GAAG,CAAA,CAAA;AAAA,aAClC,CAAP,EAAA;AACA,MAAA,OAAO,IAAI,IAAK,CAAA,IAAA,CAAA,CAAA;AAAA,KAClB;AAAA,GACK,MAAA;AACL,IAAA,OAAO,IAAI,IAAK,CAAA,IAAA,CAAA,CAAA;AAAA,GAClB;AACF,CAAA;;ACZA,MAAKF,cAAa,eAAa,CAAA;AAAA,EAC7B,KAAO,EAAA;AAAA,IACL,MAAQ,EAAA;AAAA,MACN,IAAM,EAAA,MAAA;AAAA,MACN,OAAA,EAAS,OAAQ,EAAA,CAAA;AAAA,MACjB,QAAU,EAAA,IAAA;AAAA,KACZ;AAAA,GACF;AAAA,EAEA,KAAQ,GAAA;AACN,IAAO,OAAA;AAAA,MACL,SAAA;AAAA,KACF,CAAA;AAAA,GACF;AACF,CAAC,CAAA,CAAA;;;;;;AArCwB,EAAA,OAAAC,SAAA,IAASC,WAAK,CAAA,0BAAA,EAAA;AAAA,IAAG,OAAO,IAAO,CAAA,MAAA,CAAA,KAAA;AAAA,IAAQ,OAAO,IAAO,CAAA,MAAA,CAAA,KAAA;AAAA,IAAA,KAAA,EAAA,IAAA,CAAA,MAAA,CAAA,KAAA;;aAExEC,OAUa,CAAA,CAAA,KAAA,KAAA;AAAA,MAAAE,WAAA,CAVW,qBAAe,EAAA;AAAA,QAAY,SAAA,EAAO,YAAO,OAAQ,CAAA,SAAA;AAAA,QAAQ,KAAA,EAAO,KAAE,MAAO,CAAA,OAAA,CAAA,KAAA;AAAA,QAAA,OAAA,EAAA,IAAA,CAAA,MAAA,CAAA,OAAA,CAAA,OAAA;AAOpF,OAAA,EAAA;AAAA,QAAA,SAAA,EACTF,OAAqF,CAAA,MAAA;AAAA,UAAZE,WAAA,CAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA;AAAA,YAAA,OAAA,EAAAF,OAAA,CAAA,MAAA;;;;;;AANnE,QAAA,OAAA,EAAAA,OAAA,CAAO,MAAQ;AAAA,UADvB,IAAA,CAAA,MAAA,CAAA,OAAA,CAAA,UAAA,IAAAF,SAAA,EAAA,EAAAC,WAAA,CAAA,kBAAA,EAAA;AAEG,YAAA,GAAA,EAAA,CAAA;AAAA,YACA,aAAA,EAAS,KAAM,MAAM,CAAA,UAAA;AAAA,YACrB,OAAA,EAAM,KAAM,MAAI,CAAA,KAAA;AAAA,YAAA,IAAA,EAAA,KAAA,CAAA,GAAA,CAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA;;;;;;;;;;;ACgD3B,MAAKF,cAAa,eAAa,CAAA;AAAA,EAC7B,KAAO,EAAA;AAAA,IACL,MAAQ,EAAA;AAAA,MACN,IAAM,EAAA,MAAA;AAAA,MACN,OAAA,EAAS,OAAQ,EAAA,CAAA;AAAA,MACjB,QAAU,EAAA,IAAA;AAAA,KACZ;AAAA,IAEA,SAAW,EAAA;AAAA,MACT,IAAM,EAAA,MAAA;AAAA,MACN,SAAS,MAAM;AAAA,OAAC;AAAA,KAClB;AAAA,GACF;AAAA,EAEA,KAAQ,GAAA;AACN,IAAO,OAAA;AAAA,MACL,SAAA;AAAA,KACF,CAAA;AAAA,GACF;AACF,CAAC,CAAA,CAAA;;;;;;;;;;;;;SAzEGC,SAAqB,EAAA,EAAAC,WAAA,CAAA,0BAAA,EAAA;AAAA,IACpB,uBAAmB,EAAA,EAAA;AAAA,IACnB,OAAO,IAAO,CAAA,MAAA,CAAA,KAAA;AAAA,IACd,OAAO,IAAO,CAAA,MAAA,CAAA,KAAA;AAAA,IACd,KAAU,EAAA,IAAA,CAAA,MAAA,CAAA,KAAA;AAAA,IACV,UAAM,IAAW,CAAA,MAAA,CAAA,QAAA;AAAA,IAAA,IAAA,EAAA,IAAA,CAAA,MAAA,CAAA,IAAA;;AAGD,IAAA,OAAA,EAAAC,OAAA,CAAO,CAAI,KAAI,KAAA;AAAA,MAAA,IAAA,CAAA,MAAA,CAAA,IAAA,IAA9B,IAQU,CAAA,SAAA,CAAA,KAAA,CAAA,MAAA,CAAA,IAAAF,SAAA,EAAA,EAAAC,WAAA,CAAA,kBAAA,EAAA;AAR6C,QAAA,GAAA,EAAA,CAAA;AAAA,QAAiB,aAAO,EAAA,GAAA;AAAA,QAAA,KAAA,EAAA,IAAA,CAAA,SAAA,CAAA,KAAA,CAAA,MAAA,CAAA;;iBAC7EC,OAMoB,CAAA,MAAA;AAAA,UAAAE,WAAA,CALX,2BAAW,EAAA;AAAA,YACjB,IAAA,EAAK,KAAE,MAAM,CAAA,IAAA;AAAA,YACb,KAAA,EAAM,KAAE,MAAM,CAAA,KAAA;AAAA,YACd,MAAM,EAAA,IAAA,CAAA,MAAA;AAAA,YACN,MAAK,IAAE,CAAA,MAAA,CAAA,IAAA;AAAA,YAAA,KAAA,EAAA,IAAA,CAAA,SAAA,CAAA,KAAA,CAAA,MAAA,CAAA;;;;AAIU,OAAA,EAAA,IAAA,EAAA,CAAA,OAAO,CAA7B,CAAA,IAAA,IAAA,CAAA,MAAA,CAAA,MAAA,KAAA,YAAA,IAAAJ,SAAA,EAAA,EAAAC,WAAA,CAAA,oBAAA,EAAA;QAAsD,GAAI,EAAA,CAAA;AAAA,QAAS,IAAA,EAAA,MAAA;AAAA,QAAA,OAAA,EAAA,CAAA,MAAA,KAAA,IAAA,CAAA,MAAA,CAAA,OAAA,CAAA,KAAA,CAAA,GAAA,CAAA;;;;;;AAIrD,OAAA,EAAA,IAAA,EAAA,CAAA,SAAa,CAA3B,CAAA,IAAA,IAAA,CAAA,MAAA,CAAA,MAAA,KAAA,KAAA,IAAAD,SAAA,EAAA,EAAAK,kBAAA,CAAA,GAAA,EAAA;AAAuC,QAAA,GAAA,EAAA,CAAA;AAAA,QAAiB,MAAM,EAAA,QAAA;AAAA,QAAA,IAAA,EAAA,KAAA,CAAA,GAAA,CAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA;AAC3D,OAAA,EAAA;AAAA,QAAqBC,kBAAA,CAAA,KAAA,EAAA;AAAA,UAAc,WAAO,GAAI,CAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA;AAAA,UAAA,MAAA,EAAA,IAAA;;AAGnC,OAAA,EAAA,CAAA,EAAA,UAAO,CAArB,IAAA,IAAA,CAAA,MAAA,CAAA,MAAA,KAAA,MAAA,IAAAN,SAAA,EAAA,EAAAK,kBAAA,CAAA,GAAA,EAAA;AAAwC,QAAA,GAAA,EAAA,CAAA;AAAA,QAAiB,MAAM,EAAA,QAAA;AAAA,QAAwB,IAAA,EAAK,MAAC,GAAU,CAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA;AAAA,QAAA,KAAA,EAAA,UAAA;AAIhF,OAAA,EAAAE,eAAA,CAAa,KAApC,CAAA,GAAA,CAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA,CAAA,EAAA,CAAA,EAAA,UAAA,CAAA,IAAA,IAAA,CAAA,MAAA,CAAA,MAAA,KAAA,KAAA,IAAAP,SAAA,EAAA,EAAAC,WAAA,CAAA,qBAAA,EAAA;AAAgD,QAAA,GAAA,EAAA,CAAA;AAAA,QAAA,SAAA,EAAA,MAAA;AACnC,OAAA,EAAA;AAAA,QAAA,OAAA,EACTC,OAA6C,CAAA,MAAA;AAAA,UAAAI,kBAAA,CAAA,KAAA,EAAA,IAAA,EAAAC,eAAA,CAAA,IAAA,CAAA,SAAA,CAAA,IAAA,CAAA,MAAA,EAAA,KAAA,CAAA,GAAA,CAAA,CAAA,EAAA,CAAA,CAAA;;iBAE/CL,OAAuC,CAAA,MAAA;AAAA,UAAZE,WAAA,CAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA;AAAA,YAAA,OAAA,EAAAF,OAAA,CAAA,MAAA;;;;;;;SAIhB,IADb,CAAA,IAAA,IAAA,CAAA,MAAA,CAAA,MAAA,KAAA,KAAA,IAAAF,SAAA,EAAA,EAAAC,WAAA,CAAA,iBAAA,EAAA;QAEG,GAAI,EAAA,CAAA;AAAA,QACL,IAAgB,EAAA,OAAA,IAAA,CAAA,MAAA,CAAA,IAAA,KAAA,UAAA,GAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA,KAAA,CAAA,GAAA,CAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA,EAAA,KAAA,CAAA,GAAA,CAAA,GAAA,IAAA,CAAA,MAAA,CAAA,IAAA;AAAA,QAAA,kBAAA,EAAA,EAAA;;;;;;AAGlB,OAAA,EAAA,IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,KAAAD,SAAA,EAAA,EAAAK,kBAAA,CAAA,KAAA,EAAA;AAAY,QAAA,GAAA,EAAA,CAAA;AAAA,QAAA,SAAA,EAAA,IAAA,CAAA,SAAA,CAAA,IAAA,CAAA,MAAA,EAAA,KAAA,CAAA,GAAA,CAAA;;;;;;;;;;ACelB,MAAK,YAAa,eAAa,CAAA;AAAA,EAC7B,IAAM,EAAA,SAAA;AAAA,EAEN,UAAY,EAAA,EAAE,YAAc,iBAAAG,WAAA,EAAe,eAAe,UAAW,EAAA;AAAA,EAErE,KAAO,EAAA;AAAA,IACL,IAAM,EAAA;AAAA,MACJ,IAAM,EAAA,KAAA;AAAA,MACN,OAAS,EAAA,IAAA;AAAA,KACX;AAAA,IAEA,OAAS,EAAA;AAAA,MACP,IAAM,EAAA,KAAA;AAAA,MACN,OAAS,EAAA,IAAA;AAAA,MACT,OAAA,EAAS,MAAM,EAAC;AAAA,KAClB;AAAA,IAGA,UAAY,EAAA;AAAA,MACV,IAAM,EAAA,QAAA;AAAA,KAGR;AAAA,IAEA,KAAO,EAAA;AAAA,MACL,IAAM,EAAA,OAAA;AAAA,MACN,OAAS,EAAA,KAAA;AAAA,KACX;AAAA,IAGA,UAAY,EAAA;AAAA,MACV,IAAA,EAAM,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,KACvB;AAAA,IAGA,UAAY,EAAA;AAAA,MACV,IAAM,EAAA,OAAA;AAAA,MACN,OAAS,EAAA,IAAA;AAAA,KACX;AAAA,IAGA,SAAW,EAAA;AAAA,MACT,IAAM,EAAA,MAAA;AAAA,KACR;AAAA,IAGA,gBAAkB,EAAA;AAAA,MAChB,IAAM,EAAA,OAAA;AAAA,MACN,OAAS,EAAA,KAAA;AAAA,KACX;AAAA,IAEA,UAAY,EAAA;AAAA,MACV,IAAM,EAAA,MAAA;AAAA,KACR;AAAA,IAGA,MAAQ,EAAA;AAAA,MACN,IAAM,EAAA,OAAA;AAAA,MACN,OAAS,EAAA,KAAA;AAAA,KACX;AAAA,GACF;AAAA,EAEA,OAAO,CAAC,aAAA,EAAe,aAAe,EAAA,QAAA,EAAU,cAAc,kBAAkB,CAAA;AAAA,EAEhF,IAEE,GAAA;AACA,IAAO,OAAA;AAAA,MACL,WAAW,EAAC;AAAA,KACd,CAAA;AAAA,GACF;AAAA,EAEA,QAAU,EAAA;AAAA,IACR,SAAY,GAAA;AACV,MAAA,IAAI,KAAK,eAAiB,EAAA;AACxB,QAAO,OAAA,IAAA,CAAK,QAAQ,EAAC,CAAA;AAAA,OACvB;AAEA,MAAA,OAAO,SAAU,CAAA,IAAA,CAAK,IAAI,CAAA,IAAK,EAAC,CAAA;AAAA,KAClC;AAAA,IAEA,eAAkB,GAAA;AAChB,MAAA,MAAM,SAAS,IAAK,CAAA,OAAA,CAAQ,OAAO,CAAC,IAAA,KAAS,KAAK,SAAS,CAAA,CAAA;AAC3D,MAAO,OAAA,MAAA,CAAO,MAAS,GAAA,MAAA,CAAO,CAAK,CAAA,GAAA,IAAA,CAAA;AAAA,KACrC;AAAA,IAEA,SAAY,GAAA;AACV,MAAA,OAAO,OAAO,IAAA,CAAK,MAAW,KAAA,WAAA,GAAc,KAAK,MAAS,GAAA,IAAA,CAAA;AAAA,KAC5D;AAAA,GACF;AAAA,EAEA,OAAS,EAAA;AAAA,IACP,WAAW,IAAW,EAAA;AACpB,MAAK,IAAA,CAAA,KAAA,CAAM,eAAe,IAAI,CAAA,CAAA;AAAA,KAChC;AAAA,IAEA,aAAA,CAAc,WAAgB,GAAU,EAAA;AACtC,MAAA,MAAM,SAAS,IAAK,CAAA,eAAA,CAAA;AACpB,MAAA,IAAI,CAAC,MAAQ,EAAA;AACX,QAAA,OAAA;AAAA,OACF;AAEA,MAAI,IAAA,MAAA,CAAO,cAAc,QAAU,EAAA,CAGnC;AACA,MAAK,IAAA,CAAA,KAAA,CAAM,QAAU,EAAA,SAAA,EAAW,GAAG,CAAA,CAAA;AAAA,KACrC;AAAA,IAEA,iBAAiB,SAAgB,EAAA;AAC/B,MAAK,IAAA,CAAA,KAAA,CAAM,cAAc,SAAS,CAAA,CAAA;AAAA,KACpC;AAAA,IAEA,uBAAuB,SAAgB,EAAA;AACrC,MAAK,IAAA,CAAA,KAAA,CAAM,oBAAoB,SAAS,CAAA,CAAA;AAAA,KAC1C;AAAA,IAEA,kBAAA,CAAmB,KAAU,QAAmB,EAAA;AAC9C,MAAM,MAAA,KAAA,GAAQ,KAAK,KAAM,CAAA,KAAA,CAAA;AACzB,MAAA,KAAA,CAAM,kBAAmB,CAAA,IAAA,CAAK,KAAK,CAAA,CAAE,KAAK,QAAQ,CAAA,CAAA;AAAA,KACpD;AAAA,IAEA,kBAAA,CAAmB,KAAU,QAAmB,EAAA;AAC9C,MAAM,MAAA,KAAA,GAAQ,KAAK,KAAM,CAAA,KAAA,CAAA;AACzB,MAAA,KAAA,CAAM,kBAAmB,CAAA,IAAA,CAAK,KAAK,CAAA,CAAE,KAAK,QAAQ,CAAA,CAAA;AAAA,KACpD;AAAA,IAEA,cAAiB,GAAA;AACf,MAAM,MAAA,KAAA,GAAQ,KAAK,KAAM,CAAA,KAAA,CAAA;AACzB,MAAM,KAAA,CAAA,cAAA,CAAe,IAAK,CAAA,KAAK,CAAE,EAAA,CAAA;AAAA,KACnC;AAAA,IAEA,iBAAiB,IAAW,EAAA;AAC1B,MAAI,IAAA,OAAO,IAAK,CAAA,UAAA,KAAe,UAAY,EAAA;AACzC,QAAO,OAAA,IAAA,CAAK,WAAW,IAAI,CAAA,CAAA;AAAA,OAC7B;AACA,MAAA,OAAO,OAAO;AAAA,QACZ,OAAS,EAAA,CAAA;AAAA,QACT,OAAS,EAAA,CAAA;AAAA,OACX,CAAA,CAAA;AAAA,KACF;AAAA,GACF;AACF,CAAC,CAAA,CAAA;;;;;;;;SAxMUR,SAAS,EAAA,EAAAC,WAAA,CAAA,mBAAA,EAAA;AAAA,IACf,IAAA,EAAA,IAAA,CAAA,SAAA;AAAA,IACA,aAAY,EAAA,IAAA,CAAA,UAAA;AAAA,IACb,YAAe,EAAA,IAAA,CAAA,UAAA;AAAA,IACf,gBAAe,EAAA,MAAA;AAAA,IACf,KAAI,EAAA,SAAA;AAAA,IACH,GAAA,EAAA,OAAA;AAAA,IACA,oBAAiB,EAAA,IAAA,CAAA,gBAAA;AAAA,IACjB,MAAS,EAAA,IAAA,CAAA,SAAA;AAAA,IACT,SAAY,EAAA,IAAA,CAAA,UAAA,IAAA,MAAA;AAAA,IACZ,cAAY,EAAS,QAAA,EAAA,UAAA,EAAA;AAAA,IACrB,cAAW,IAAE,CAAA,SAAA,IAAA,0BAAA;AAAA,IACb,aAAa,EAAA,IAAA,CAAA,gBAAA;AAAA,IACb,YAAQ,EAAA,IAAA,CAAA,UAAA;AAAA,IACR,QAAY,EAAA,IAAA,CAAA,aAAA;AAAA,IACZ,WAAgB,EAAA,IAAA,CAAA,gBAAA;AAAA,IAAA,iBAAA,EAAA,IAAA,CAAA,sBAAA;;AAEjB,IAAA,OAAA,EAAAC,OAAA,CAAA,MAAA;AAAA,OAAAF,SAAA,CAAA,IAAA,CAAA,EAAAK,kBAAA,CAAAI,QAAA,EAAA,IAAA,EAAAC,UAAA,CAAA,IAAA,CAAA,OAAA,EAAA,CAAA,IAAA,EAAA,WAAA,KAAA;eACuBV,SAAI,EAAA,EAAAK,kBAAA,CAAAI,QAAA,EAAA,IAAA,EAAA;AAAA,UAAA,IAAA,CAAA,IAAA,KAAA,QAAA,IAAAT,SAAA,EACK,EAAAC,WAAA,CAAA,wBAAA,EAAA;AAAA,YAAG,MAAK,EAAA,IAAA;AAAA,YAAA,GAAA,EAAA,WAAA;aAGjB,IAAK,EAAA,CAAA,EAAA,CAAA,QAAS,mCACA,EAAAA,WAAA,CAAA,0BAAA,EAAA;AAAA,YAAE,IAAK,EAAA,WAAA;AAAA,YAAa,GAAK,EAAA,WAAA;AAAA,YAAO,KAAA,EAAA,IAAA;AAAA,YAAA,UAAA,EAAA,IAAA,CAAA,UAAA;aAG9C,IAAK,EAAA,CAAA,EAAA,CAAO,6CAEZ,EAAAA,WAAA,CAAA,yBAAA,EAAA;AAAA,YAChB,SAAQ,IAAI,CAAA,OAAA;AAAA,YACZ,MAAA,EAAA,IAAA;AAAA,YACA,aAAY,EAAA,IAAA,CAAA,UAAA;AAAA,YACZ,cAAK,IAAW,CAAA,SAAA;AAAA,YAChB,GAAA,EAAA,WAAA;AAAA,YAAA,aAAA,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,MAAA,KAAA,IAAA,CAAA,KAAA,CAAA,aAAA,CAAA,CAAA;aAIgB,IAAK,EAAA,CAAA,EAAI,6FACK,EAAAA,WAAA,CAAA,yBAAA,EAAA;AAAA,YAAG,GAAA,EAAA,WAAA;AAAA,YAAA,MAAA,EAAA,IAAA;AAIpC,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,KAAAD,SAAA,EAA8B,EAAAC,WAAA,CAAA,sBAAA,EAAA;AAAA,YAAG,GAAA,EAAA,WAAA;AAAA,YAAe,MAAA,EAAA,IAAA;AAAA,YAAA,YAAA,EAAA,IAAA,CAAA,SAAA;;;;;;;;;;ACpBxD,MAAM,UAAA,GAAa,CAAC,KAAK,CAAA,CAAA;AAEzB,YAAe;AAAA,EACb,QAAQ,GAAU,EAAA;AAChB,IAAW,UAAA,CAAA,OAAA,CAAQ,CAAC,SAAc,KAAA;AAChC,MAAI,GAAA,CAAA,SAAA,CAAU,SAAU,CAAA,IAAA,EAAM,SAAS,CAAA,CAAA;AAAA,KACxC,CAAA,CAAA;AAAA,GACH;AACF,CAAA;;;;"}
@@ -74,6 +74,7 @@
74
74
  }
75
75
  };
76
76
  const actionHandler = async (action, row, index) => {
77
+ await action.before?.(row);
77
78
  if (action.type === "delete") {
78
79
  await deleteAction(action, row);
79
80
  } else if (action.type === "copy") {
@@ -82,8 +83,8 @@
82
83
  props.editState[index] = row;
83
84
  } else {
84
85
  await action.handler?.(row);
85
- action.after?.();
86
86
  }
87
+ action.after?.(row);
87
88
  };
88
89
  const save = async (index, config) => {
89
90
  const action = config.actions?.find((item) => item.type === "edit")?.action;
@@ -569,8 +570,7 @@
569
570
  exports.MagicTable = Table;
570
571
  exports["default"] = index;
571
572
 
572
- Object.defineProperty(exports, '__esModule', { value: true });
573
- exports[Symbol.toStringTag] = 'Module';
573
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
574
574
 
575
575
  }));
576
576
  //# sourceMappingURL=tmagic-table.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tmagic-table.umd.js","sources":["../src/ActionsColumn.vue","../plugin-vue:export-helper","../src/ExpandColumn.vue","../src/utils.ts","../src/PopoverColumn.vue","../src/TextColumn.vue","../src/Table.vue","../src/index.ts"],"sourcesContent":["<template>\n <el-table-column :label=\"config.label\" :width=\"config.width\" :fixed=\"config.fixed\">\n <template v-slot=\"scope\">\n <el-button\n v-for=\"(action, actionIndex) in config.actions\"\n v-show=\"display(action.display, scope.row) && !editState[scope.$index]\"\n v-html=\"action.text\"\n class=\"action-btn\"\n type=\"text\"\n size=\"small\"\n :key=\"actionIndex\"\n @click=\"actionHandler(action, scope.row, scope.$index)\"\n ></el-button>\n <el-button\n class=\"action-btn\"\n v-show=\"editState[scope.$index]\"\n type=\"text\"\n size=\"small\"\n @click=\"save(scope.$index, config)\"\n >保存</el-button\n >\n <el-button\n class=\"action-btn\"\n v-show=\"editState[scope.$index]\"\n type=\"text\"\n size=\"small\"\n @click=\"editState[scope.$index] = undefined\"\n >取消</el-button\n >\n </template>\n </el-table-column>\n</template>\n\n<script lang=\"ts\">\nimport { PropType } from 'vue';\nimport { ElMessage, ElMessageBox } from 'element-plus';\n\nimport { ColumnActionConfig, ColumnConfig } from './schema';\n</script>\n\n<script lang=\"ts\" setup>\nconst props = defineProps({\n columns: {\n type: Array as PropType<any[]>,\n require: true,\n default: () => [],\n },\n\n config: {\n type: Object as PropType<ColumnConfig>,\n require: true,\n default: () => {},\n },\n\n rowkeyName: {\n type: String,\n default: 'c_id',\n },\n\n editState: {\n type: Object,\n default: () => {},\n },\n});\n\nconst emit = defineEmits(['afterAction']);\n\nconst display = (fuc: boolean | Function | undefined, row: any) => {\n if (typeof fuc === 'function') {\n return fuc.call(this, this, row);\n }\n return true;\n};\n\nconst success = (msg: string, action: ColumnActionConfig) => {\n ElMessage.success(msg);\n action.after?.();\n};\n\nconst error = (msg: string) => ElMessage.error(msg);\n\nconst deleteAction = async (action: ColumnActionConfig, row: any) => {\n await ElMessageBox.confirm(`确认删除${row[action.name || 'c_name']}(${row[props.rowkeyName]})?`, '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning',\n });\n\n const res = await action.handler?.(row);\n\n if (res.ret === 0) {\n success('删除成功!', action);\n } else {\n error(res.msg || '删除失败');\n }\n};\n\nconst copyHandler = async (action: ColumnActionConfig, row: any) => {\n await ElMessageBox.confirm(`确定复制${row[action.name || 'c_name']}(${row.c_id})?`, '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning',\n });\n\n try {\n const res = await action.handler?.(row);\n\n if (res.ret === 0) {\n success('复制成功!', action);\n } else {\n error(`复制失败!${res.msg}`);\n }\n } catch (e) {\n error('复制失败!');\n }\n};\n\nconst actionHandler = async (action: ColumnActionConfig, row: any, index: number) => {\n if (action.type === 'delete') {\n await deleteAction(action, row);\n } else if (action.type === 'copy') {\n await copyHandler(action, row);\n } else if (action.type === 'edit') {\n props.editState[index] = row;\n } else {\n await action.handler?.(row);\n action.after?.();\n }\n};\n\nconst save = async (index: number, config: ColumnConfig) => {\n const action = config.actions?.find((item) => item.type === 'edit')?.action;\n if (!action) return;\n\n const data: any = {};\n const row = props.editState[index];\n props.columns\n .filter((item) => item.type)\n .forEach((column) => {\n data[column.prop] = row[column.prop];\n });\n\n const res: any = await action({\n data,\n });\n\n if (res) {\n if (res.ret === 0) {\n ElMessage.success('保存成功');\n props.editState[index] = undefined;\n emit('afterAction');\n } else {\n ElMessage.error({\n duration: 10000,\n showClose: true,\n dangerouslyUseHTMLString: true,\n message: res.msg || '保存失败',\n });\n }\n } else {\n props.editState[index] = undefined;\n emit('afterAction');\n }\n};\n</script>\n","\nexport default (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n}\n","<template>\n <el-table-column type=\"expand\">\n <template #default=\"scope\">\n <m-table\n v-if=\"config.table\"\n :show-header=\"false\"\n :columns=\"config.table\"\n :data=\"scope.row[config.prop]\"\n ></m-table>\n <m-form\n v-if=\"config.form\"\n :config=\"config.form\"\n :init-values=\"config.values || scope.row[config.prop] || {}\"\n ></m-form>\n </template>\n </el-table-column>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue';\n\nimport { MForm } from '@tmagic/form';\n\nimport { ColumnConfig } from './schema';\n\nexport default defineComponent({\n components: { MForm },\n\n props: {\n config: {\n type: Object as PropType<ColumnConfig>,\n default: () => ({}),\n required: true,\n },\n },\n});\n</script>\n","/*\n * Tencent is pleased to support the open source community by making TMagicEditor available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { datetimeFormatter } from '@tmagic/utils';\n\nimport { ColumnConfig } from './schema';\n\nexport const formatter = (item: ColumnConfig, row: any) => {\n if (item.formatter) {\n if (item.formatter === 'datetime') {\n // eslint-disable-next-line no-param-reassign\n item.formatter = (value: string) => datetimeFormatter(value);\n }\n try {\n return item.formatter(row[item.prop], row);\n } catch (e) {\n return row[item.prop];\n }\n } else {\n return row[item.prop];\n }\n};\n","<template>\n <el-table-column :label=\"config.label\" :width=\"config.width\" :fixed=\"config.fixed\">\n <template v-slot=\"scope\">\n <el-popover :placement=\"config.popover.placement\" :width=\"config.popover.width\" :trigger=\"config.popover.trigger\">\n <m-table\n v-if=\"config.popover.tableEmbed\"\n :show-header=\"config.showHeader\"\n :columns=\"config.table\"\n :data=\"scope.row[config.prop]\"\n ></m-table>\n <template #reference>\n <el-button type=\"text\"> {{ config.text || formatter(config, scope.row) }}</el-button>\n </template>\n </el-popover>\n </template>\n </el-table-column>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue';\n\nimport { ColumnConfig } from './schema';\nimport { formatter } from './utils';\n\nexport default defineComponent({\n props: {\n config: {\n type: Object as PropType<ColumnConfig>,\n default: () => ({}),\n required: true,\n },\n },\n\n setup() {\n return {\n formatter,\n };\n },\n});\n</script>\n","<template>\n <el-table-column\n show-overflow-tooltip\n :label=\"config.label\"\n :width=\"config.width\"\n :fixed=\"config.fixed\"\n :sortable=\"config.sortable\"\n :prop=\"config.prop\"\n >\n <template v-slot=\"scope\">\n <el-form v-if=\"config.type && editState[scope.$index]\" label-width=\"0\" :model=\"editState[scope.$index]\">\n <m-form-container\n :prop=\"config.prop\"\n :rules=\"config.rules\"\n :config=\"config\"\n :name=\"config.prop\"\n :model=\"editState[scope.$index]\"\n ></m-form-container>\n </el-form>\n\n <el-button v-else-if=\"config.action === 'actionLink'\" type=\"text\" @click=\"config.handler(scope.row)\">\n {{ formatter(config, scope.row) }}\n </el-button>\n\n <a v-else-if=\"config.action === 'img'\" target=\"_blank\" :href=\"scope.row[config.prop]\"\n ><img :src=\"scope.row[config.prop]\" height=\"50\"\n /></a>\n\n <a v-else-if=\"config.action === 'link'\" target=\"_blank\" :href=\"scope.row[config.prop]\" class=\"keep-all\">{{\n scope.row[config.prop]\n }}</a>\n\n <el-tooltip v-else-if=\"config.action === 'tip'\" placement=\"left\">\n <template #content>\n <div>{{ formatter(config, scope.row) }}</div>\n </template>\n <el-button type=\"text\">扩展配置</el-button>\n </el-tooltip>\n\n <el-tag\n v-else-if=\"config.action === 'tag'\"\n :type=\"typeof config.type === 'function' ? config.type(scope.row[config.prop], scope.row) : config.type\"\n close-transition\n >{{ formatter(config, scope.row) }}</el-tag\n >\n <div v-else v-html=\"formatter(config, scope.row)\"></div>\n </template>\n </el-table-column>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue';\n\nimport { ColumnConfig } from './schema';\nimport { formatter } from './utils';\n\nexport default defineComponent({\n props: {\n config: {\n type: Object as PropType<ColumnConfig>,\n default: () => ({}),\n required: true,\n },\n\n editState: {\n type: Object,\n default: () => {},\n },\n },\n\n setup() {\n return {\n formatter,\n };\n },\n});\n</script>\n","<template>\n <el-table\n :data=\"tableData\"\n :show-header=\"showHeader\"\n :max-height=\"bodyHeight\"\n tooltip-effect=\"dark\"\n class=\"m-table\"\n ref=\"table\"\n :default-expand-all=\"defaultExpandAll\"\n :border=\"hasBorder\"\n :row-key=\"rowkeyName || 'c_id'\"\n :tree-props=\"{ children: 'children' }\"\n :empty-text=\"emptyText || '暂无数据'\"\n :span-method=\"objectSpanMethod\"\n @sort-change=\"sortChange\"\n @select=\"selectHandler\"\n @select-all=\"selectAllHandler\"\n @selection-change=\"selectionChangeHandler\"\n >\n <template v-for=\"(item, columnIndex) in columns\">\n <template v-if=\"item.type === 'expand'\">\n <expand-column :config=\"item\" :key=\"columnIndex\"></expand-column>\n </template>\n\n <template v-else-if=\"item.selection\">\n <el-table-column type=\"selection\" :key=\"columnIndex\" width=\"40\" :selectable=\"item.selectable\"></el-table-column>\n </template>\n\n <template v-else-if=\"item.actions\">\n <actions-column\n :columns=\"columns\"\n :config=\"item\"\n :rowkey-name=\"rowkeyName\"\n :edit-state=\"editState\"\n :key=\"columnIndex\"\n @afterAction=\"$emit('afterAction')\"\n ></actions-column>\n </template>\n\n <template v-else-if=\"item.type === 'popover'\">\n <popover-column :key=\"columnIndex\" :config=\"item\"></popover-column>\n </template>\n\n <template v-else>\n <text-column :key=\"columnIndex\" :config=\"item\" :edit-state=\"editState\"></text-column>\n </template>\n </template>\n </el-table>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue';\nimport { ElTable } from 'element-plus';\nimport { cloneDeep } from 'lodash-es';\n\nimport ActionsColumn from './ActionsColumn.vue';\nimport ExpandColumn from './ExpandColumn.vue';\nimport PopoverColumn from './PopoverColumn.vue';\nimport TextColumn from './TextColumn.vue';\n\nexport default defineComponent({\n name: 'm-table',\n\n components: { ExpandColumn, ActionsColumn, PopoverColumn, TextColumn },\n\n props: {\n data: {\n type: Array,\n require: true,\n },\n\n columns: {\n type: Array as PropType<any[]>,\n require: true,\n default: () => [],\n },\n\n /** 合并行或列的计算方法 */\n spanMethod: {\n type: Function as PropType<\n (data: { row: any; column: any; rowIndex: number; columnIndex: number }) => [number, number]\n >,\n },\n\n fetch: {\n type: Boolean,\n default: false,\n },\n\n /** Table 的最大高度。合法的值为数字或者单位为 px 的高度 */\n bodyHeight: {\n type: [String, Number],\n },\n\n /** 是否显示表头 */\n showHeader: {\n type: Boolean,\n default: true,\n },\n\n /** 空数据时显示的文本内容 */\n emptyText: {\n type: String,\n },\n\n /** 是否默认展开所有行,当 Table 包含展开行存在或者为树形表格时有效 */\n defaultExpandAll: {\n type: Boolean,\n default: false,\n },\n\n rowkeyName: {\n type: String,\n },\n\n /** 是否带有纵向边框 */\n border: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: ['sort-change', 'afterAction', 'select', 'select-all', 'selection-change'],\n\n data(): {\n editState: any[];\n } {\n return {\n editState: [],\n };\n },\n\n computed: {\n tableData() {\n if (this.selectionColumn) {\n return this.data || [];\n }\n\n return cloneDeep(this.data) || [];\n },\n\n selectionColumn() {\n const column = this.columns.filter((item) => item.selection);\n return column.length ? column[0] : null;\n },\n\n hasBorder() {\n return typeof this.border !== 'undefined' ? this.border : true;\n },\n },\n\n methods: {\n sortChange(data: any) {\n this.$emit('sort-change', data);\n },\n\n selectHandler(selection: any, row: any) {\n const column = this.selectionColumn;\n if (!column) {\n return;\n }\n\n if (column.selection === 'single') {\n // this.clearSelection()\n // this.toggleRowSelection(row, true)\n }\n this.$emit('select', selection, row);\n },\n\n selectAllHandler(selection: any) {\n this.$emit('select-all', selection);\n },\n\n selectionChangeHandler(selection: any) {\n this.$emit('selection-change', selection);\n },\n\n toggleRowSelection(row: any, selected: boolean) {\n const table = this.$refs.table as InstanceType<typeof ElTable>;\n table.toggleRowSelection.bind(table)(row, selected);\n },\n\n toggleRowExpansion(row: any, expanded: boolean) {\n const table = this.$refs.table as InstanceType<typeof ElTable>;\n table.toggleRowExpansion.bind(table)(row, expanded);\n },\n\n clearSelection() {\n const table = this.$refs.table as InstanceType<typeof ElTable>;\n table.clearSelection.bind(table)();\n },\n\n objectSpanMethod(data: any) {\n if (typeof this.spanMethod === 'function') {\n return this.spanMethod(data);\n }\n return () => ({\n rowspan: 0,\n colspan: 0,\n });\n },\n },\n});\n</script>\n\n<style lang=\"scss\">\n.m-table {\n .el-button.action-btn {\n margin-right: 10px;\n }\n .el-button.action-btn + .el-button.action-btn {\n margin-left: 0;\n }\n .keep-all {\n word-break: keep-all;\n }\n .el-table .cell > div {\n display: inline-block;\n vertical-align: middle;\n }\n .el-table__row.el-table__row--level-1 {\n color: #999;\n }\n}\n</style>\n","/*\n * Tencent is pleased to support the open source community by making TMagicEditor available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { App } from 'vue';\n\nimport Table from './Table.vue';\n\nexport { default as MagicTable } from './Table.vue';\n\nconst components = [Table];\n\nexport default {\n install(app: App) {\n components.forEach((component) => {\n app.component(component.name, component);\n });\n },\n};\n"],"names":["ElMessage","ElMessageBox","_sfc_main","defineComponent","MForm","_openBlock","_createBlock","_withCtx","_createCommentVNode","datetimeFormatter","_toDisplayString","ActionsColumn","cloneDeep","_createElementBlock"],"mappings":"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"}
1
+ {"version":3,"file":"tmagic-table.umd.js","sources":["../src/ActionsColumn.vue","../plugin-vue:export-helper","../src/ExpandColumn.vue","../src/utils.ts","../src/PopoverColumn.vue","../src/TextColumn.vue","../src/Table.vue","../src/index.ts"],"sourcesContent":["<template>\n <el-table-column :label=\"config.label\" :width=\"config.width\" :fixed=\"config.fixed\">\n <template v-slot=\"scope\">\n <el-button\n v-for=\"(action, actionIndex) in config.actions\"\n v-show=\"display(action.display, scope.row) && !editState[scope.$index]\"\n v-html=\"action.text\"\n class=\"action-btn\"\n type=\"text\"\n size=\"small\"\n :key=\"actionIndex\"\n @click=\"actionHandler(action, scope.row, scope.$index)\"\n ></el-button>\n <el-button\n class=\"action-btn\"\n v-show=\"editState[scope.$index]\"\n type=\"text\"\n size=\"small\"\n @click=\"save(scope.$index, config)\"\n >保存</el-button\n >\n <el-button\n class=\"action-btn\"\n v-show=\"editState[scope.$index]\"\n type=\"text\"\n size=\"small\"\n @click=\"editState[scope.$index] = undefined\"\n >取消</el-button\n >\n </template>\n </el-table-column>\n</template>\n\n<script lang=\"ts\">\nimport { PropType } from 'vue';\nimport { ElMessage, ElMessageBox } from 'element-plus';\n\nimport { ColumnActionConfig, ColumnConfig } from './schema';\n</script>\n\n<script lang=\"ts\" setup>\nconst props = defineProps({\n columns: {\n type: Array as PropType<any[]>,\n require: true,\n default: () => [],\n },\n\n config: {\n type: Object as PropType<ColumnConfig>,\n require: true,\n default: () => {},\n },\n\n rowkeyName: {\n type: String,\n default: 'c_id',\n },\n\n editState: {\n type: Object,\n default: () => {},\n },\n});\n\nconst emit = defineEmits(['afterAction']);\n\nconst display = (fuc: boolean | Function | undefined, row: any) => {\n if (typeof fuc === 'function') {\n return fuc.call(this, this, row);\n }\n return true;\n};\n\nconst success = (msg: string, action: ColumnActionConfig) => {\n ElMessage.success(msg);\n action.after?.();\n};\n\nconst error = (msg: string) => ElMessage.error(msg);\n\nconst deleteAction = async (action: ColumnActionConfig, row: any) => {\n await ElMessageBox.confirm(`确认删除${row[action.name || 'c_name']}(${row[props.rowkeyName]})?`, '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning',\n });\n\n const res = await action.handler?.(row);\n\n if (res.ret === 0) {\n success('删除成功!', action);\n } else {\n error(res.msg || '删除失败');\n }\n};\n\nconst copyHandler = async (action: ColumnActionConfig, row: any) => {\n await ElMessageBox.confirm(`确定复制${row[action.name || 'c_name']}(${row.c_id})?`, '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning',\n });\n\n try {\n const res = await action.handler?.(row);\n\n if (res.ret === 0) {\n success('复制成功!', action);\n } else {\n error(`复制失败!${res.msg}`);\n }\n } catch (e) {\n error('复制失败!');\n }\n};\n\nconst actionHandler = async (action: ColumnActionConfig, row: any, index: number) => {\n await action.before?.(row);\n if (action.type === 'delete') {\n await deleteAction(action, row);\n } else if (action.type === 'copy') {\n await copyHandler(action, row);\n } else if (action.type === 'edit') {\n props.editState[index] = row;\n } else {\n await action.handler?.(row);\n }\n action.after?.(row);\n};\n\nconst save = async (index: number, config: ColumnConfig) => {\n const action = config.actions?.find((item) => item.type === 'edit')?.action;\n if (!action) return;\n\n const data: any = {};\n const row = props.editState[index];\n props.columns\n .filter((item) => item.type)\n .forEach((column) => {\n data[column.prop] = row[column.prop];\n });\n\n const res: any = await action({\n data,\n });\n\n if (res) {\n if (res.ret === 0) {\n ElMessage.success('保存成功');\n props.editState[index] = undefined;\n emit('afterAction');\n } else {\n ElMessage.error({\n duration: 10000,\n showClose: true,\n dangerouslyUseHTMLString: true,\n message: res.msg || '保存失败',\n });\n }\n } else {\n props.editState[index] = undefined;\n emit('afterAction');\n }\n};\n</script>\n","\nexport default (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n}\n","<template>\n <el-table-column type=\"expand\">\n <template #default=\"scope\">\n <m-table\n v-if=\"config.table\"\n :show-header=\"false\"\n :columns=\"config.table\"\n :data=\"scope.row[config.prop]\"\n ></m-table>\n <m-form\n v-if=\"config.form\"\n :config=\"config.form\"\n :init-values=\"config.values || scope.row[config.prop] || {}\"\n ></m-form>\n </template>\n </el-table-column>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue';\n\nimport { MForm } from '@tmagic/form';\n\nimport { ColumnConfig } from './schema';\n\nexport default defineComponent({\n components: { MForm },\n\n props: {\n config: {\n type: Object as PropType<ColumnConfig>,\n default: () => ({}),\n required: true,\n },\n },\n});\n</script>\n","/*\n * Tencent is pleased to support the open source community by making TMagicEditor available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { datetimeFormatter } from '@tmagic/utils';\n\nimport { ColumnConfig } from './schema';\n\nexport const formatter = (item: ColumnConfig, row: any) => {\n if (item.formatter) {\n if (item.formatter === 'datetime') {\n // eslint-disable-next-line no-param-reassign\n item.formatter = (value: string) => datetimeFormatter(value);\n }\n try {\n return item.formatter(row[item.prop], row);\n } catch (e) {\n return row[item.prop];\n }\n } else {\n return row[item.prop];\n }\n};\n","<template>\n <el-table-column :label=\"config.label\" :width=\"config.width\" :fixed=\"config.fixed\">\n <template v-slot=\"scope\">\n <el-popover :placement=\"config.popover.placement\" :width=\"config.popover.width\" :trigger=\"config.popover.trigger\">\n <m-table\n v-if=\"config.popover.tableEmbed\"\n :show-header=\"config.showHeader\"\n :columns=\"config.table\"\n :data=\"scope.row[config.prop]\"\n ></m-table>\n <template #reference>\n <el-button type=\"text\"> {{ config.text || formatter(config, scope.row) }}</el-button>\n </template>\n </el-popover>\n </template>\n </el-table-column>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue';\n\nimport { ColumnConfig } from './schema';\nimport { formatter } from './utils';\n\nexport default defineComponent({\n props: {\n config: {\n type: Object as PropType<ColumnConfig>,\n default: () => ({}),\n required: true,\n },\n },\n\n setup() {\n return {\n formatter,\n };\n },\n});\n</script>\n","<template>\n <el-table-column\n show-overflow-tooltip\n :label=\"config.label\"\n :width=\"config.width\"\n :fixed=\"config.fixed\"\n :sortable=\"config.sortable\"\n :prop=\"config.prop\"\n >\n <template v-slot=\"scope\">\n <el-form v-if=\"config.type && editState[scope.$index]\" label-width=\"0\" :model=\"editState[scope.$index]\">\n <m-form-container\n :prop=\"config.prop\"\n :rules=\"config.rules\"\n :config=\"config\"\n :name=\"config.prop\"\n :model=\"editState[scope.$index]\"\n ></m-form-container>\n </el-form>\n\n <el-button v-else-if=\"config.action === 'actionLink'\" type=\"text\" @click=\"config.handler(scope.row)\">\n {{ formatter(config, scope.row) }}\n </el-button>\n\n <a v-else-if=\"config.action === 'img'\" target=\"_blank\" :href=\"scope.row[config.prop]\"\n ><img :src=\"scope.row[config.prop]\" height=\"50\"\n /></a>\n\n <a v-else-if=\"config.action === 'link'\" target=\"_blank\" :href=\"scope.row[config.prop]\" class=\"keep-all\">{{\n scope.row[config.prop]\n }}</a>\n\n <el-tooltip v-else-if=\"config.action === 'tip'\" placement=\"left\">\n <template #content>\n <div>{{ formatter(config, scope.row) }}</div>\n </template>\n <el-button type=\"text\">扩展配置</el-button>\n </el-tooltip>\n\n <el-tag\n v-else-if=\"config.action === 'tag'\"\n :type=\"typeof config.type === 'function' ? config.type(scope.row[config.prop], scope.row) : config.type\"\n close-transition\n >{{ formatter(config, scope.row) }}</el-tag\n >\n <div v-else v-html=\"formatter(config, scope.row)\"></div>\n </template>\n </el-table-column>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue';\n\nimport { ColumnConfig } from './schema';\nimport { formatter } from './utils';\n\nexport default defineComponent({\n props: {\n config: {\n type: Object as PropType<ColumnConfig>,\n default: () => ({}),\n required: true,\n },\n\n editState: {\n type: Object,\n default: () => {},\n },\n },\n\n setup() {\n return {\n formatter,\n };\n },\n});\n</script>\n","<template>\n <el-table\n :data=\"tableData\"\n :show-header=\"showHeader\"\n :max-height=\"bodyHeight\"\n tooltip-effect=\"dark\"\n class=\"m-table\"\n ref=\"table\"\n :default-expand-all=\"defaultExpandAll\"\n :border=\"hasBorder\"\n :row-key=\"rowkeyName || 'c_id'\"\n :tree-props=\"{ children: 'children' }\"\n :empty-text=\"emptyText || '暂无数据'\"\n :span-method=\"objectSpanMethod\"\n @sort-change=\"sortChange\"\n @select=\"selectHandler\"\n @select-all=\"selectAllHandler\"\n @selection-change=\"selectionChangeHandler\"\n >\n <template v-for=\"(item, columnIndex) in columns\">\n <template v-if=\"item.type === 'expand'\">\n <expand-column :config=\"item\" :key=\"columnIndex\"></expand-column>\n </template>\n\n <template v-else-if=\"item.selection\">\n <el-table-column type=\"selection\" :key=\"columnIndex\" width=\"40\" :selectable=\"item.selectable\"></el-table-column>\n </template>\n\n <template v-else-if=\"item.actions\">\n <actions-column\n :columns=\"columns\"\n :config=\"item\"\n :rowkey-name=\"rowkeyName\"\n :edit-state=\"editState\"\n :key=\"columnIndex\"\n @afterAction=\"$emit('afterAction')\"\n ></actions-column>\n </template>\n\n <template v-else-if=\"item.type === 'popover'\">\n <popover-column :key=\"columnIndex\" :config=\"item\"></popover-column>\n </template>\n\n <template v-else>\n <text-column :key=\"columnIndex\" :config=\"item\" :edit-state=\"editState\"></text-column>\n </template>\n </template>\n </el-table>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, PropType } from 'vue';\nimport { ElTable } from 'element-plus';\nimport { cloneDeep } from 'lodash-es';\n\nimport ActionsColumn from './ActionsColumn.vue';\nimport ExpandColumn from './ExpandColumn.vue';\nimport PopoverColumn from './PopoverColumn.vue';\nimport TextColumn from './TextColumn.vue';\n\nexport default defineComponent({\n name: 'm-table',\n\n components: { ExpandColumn, ActionsColumn, PopoverColumn, TextColumn },\n\n props: {\n data: {\n type: Array,\n require: true,\n },\n\n columns: {\n type: Array as PropType<any[]>,\n require: true,\n default: () => [],\n },\n\n /** 合并行或列的计算方法 */\n spanMethod: {\n type: Function as PropType<\n (data: { row: any; column: any; rowIndex: number; columnIndex: number }) => [number, number]\n >,\n },\n\n fetch: {\n type: Boolean,\n default: false,\n },\n\n /** Table 的最大高度。合法的值为数字或者单位为 px 的高度 */\n bodyHeight: {\n type: [String, Number],\n },\n\n /** 是否显示表头 */\n showHeader: {\n type: Boolean,\n default: true,\n },\n\n /** 空数据时显示的文本内容 */\n emptyText: {\n type: String,\n },\n\n /** 是否默认展开所有行,当 Table 包含展开行存在或者为树形表格时有效 */\n defaultExpandAll: {\n type: Boolean,\n default: false,\n },\n\n rowkeyName: {\n type: String,\n },\n\n /** 是否带有纵向边框 */\n border: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: ['sort-change', 'afterAction', 'select', 'select-all', 'selection-change'],\n\n data(): {\n editState: any[];\n } {\n return {\n editState: [],\n };\n },\n\n computed: {\n tableData() {\n if (this.selectionColumn) {\n return this.data || [];\n }\n\n return cloneDeep(this.data) || [];\n },\n\n selectionColumn() {\n const column = this.columns.filter((item) => item.selection);\n return column.length ? column[0] : null;\n },\n\n hasBorder() {\n return typeof this.border !== 'undefined' ? this.border : true;\n },\n },\n\n methods: {\n sortChange(data: any) {\n this.$emit('sort-change', data);\n },\n\n selectHandler(selection: any, row: any) {\n const column = this.selectionColumn;\n if (!column) {\n return;\n }\n\n if (column.selection === 'single') {\n // this.clearSelection()\n // this.toggleRowSelection(row, true)\n }\n this.$emit('select', selection, row);\n },\n\n selectAllHandler(selection: any) {\n this.$emit('select-all', selection);\n },\n\n selectionChangeHandler(selection: any) {\n this.$emit('selection-change', selection);\n },\n\n toggleRowSelection(row: any, selected: boolean) {\n const table = this.$refs.table as InstanceType<typeof ElTable>;\n table.toggleRowSelection.bind(table)(row, selected);\n },\n\n toggleRowExpansion(row: any, expanded: boolean) {\n const table = this.$refs.table as InstanceType<typeof ElTable>;\n table.toggleRowExpansion.bind(table)(row, expanded);\n },\n\n clearSelection() {\n const table = this.$refs.table as InstanceType<typeof ElTable>;\n table.clearSelection.bind(table)();\n },\n\n objectSpanMethod(data: any) {\n if (typeof this.spanMethod === 'function') {\n return this.spanMethod(data);\n }\n return () => ({\n rowspan: 0,\n colspan: 0,\n });\n },\n },\n});\n</script>\n\n<style lang=\"scss\">\n.m-table {\n .el-button.action-btn {\n margin-right: 10px;\n }\n .el-button.action-btn + .el-button.action-btn {\n margin-left: 0;\n }\n .keep-all {\n word-break: keep-all;\n }\n .el-table .cell > div {\n display: inline-block;\n vertical-align: middle;\n }\n .el-table__row.el-table__row--level-1 {\n color: #999;\n }\n}\n</style>\n","/*\n * Tencent is pleased to support the open source community by making TMagicEditor available.\n *\n * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { App } from 'vue';\n\nimport Table from './Table.vue';\n\nexport { default as MagicTable } from './Table.vue';\n\nconst components = [Table];\n\nexport default {\n install(app: App) {\n components.forEach((component) => {\n app.component(component.name, component);\n });\n },\n};\n"],"names":["ElMessage","ElMessageBox","_sfc_main","defineComponent","MForm","_openBlock","_createBlock","_withCtx","_createCommentVNode","datetimeFormatter","_createVNode","_createElementBlock","_createElementVNode","_toDisplayString","ActionsColumn","cloneDeep","_Fragment","_renderList"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmEA,IAAM,MAAA,OAAA,GAAU,CAAC,GAAA,EAAqC,GAAa,KAAA;EACjE,MAAI,IAAA,OAAO,QAAQ,UAAY,EAAA;EAC7B,QAAA,OAAO,GAAI,CAAA,IAAA,CAAK,IAAM,EAAA,IAAA,EAAM,GAAG,CAAA,CAAA;EAAA,OACjC;EACA,MAAO,OAAA,IAAA,CAAA;EAAA,KACT,CAAA;EAEA,IAAM,MAAA,OAAA,GAAU,CAAC,GAAA,EAAa,MAA+B,KAAA;EAC3D,MAAAA,qBAAA,CAAU,QAAQ,GAAG,CAAA,CAAA;EACrB,MAAA,MAAA,CAAO,KAAQ,IAAA,CAAA;EAAA,KACjB,CAAA;EAEA,IAAA,MAAM,KAAQ,GAAA,CAAC,GAAgB,KAAAA,qBAAA,CAAU,MAAM,GAAG,CAAA,CAAA;EAElD,IAAM,MAAA,YAAA,GAAe,OAAO,MAAA,EAA4B,GAAa,KAAA;EACnE,MAAM,MAAAC,wBAAA,CAAa,OAAQ,CAAA,CAAA,wBAAA,EAAO,GAAI,CAAA,MAAA,CAAO,QAAQ,QAAa,CAAA,CAAA,CAAA,EAAA,GAAA,CAAI,KAAM,CAAA,UAAA,CAAA,CAAA,EAAA,CAAA,EAAiB,cAAM,EAAA;EAAA,QACjG,iBAAmB,EAAA,cAAA;EAAA,QACnB,gBAAkB,EAAA,cAAA;EAAA,QAClB,IAAM,EAAA,SAAA;EAAA,OACP,CAAA,CAAA;EAED,MAAA,MAAM,GAAM,GAAA,MAAM,MAAO,CAAA,OAAA,GAAU,GAAG,CAAA,CAAA;EAEtC,MAAI,IAAA,GAAA,CAAI,QAAQ,CAAG,EAAA;EACjB,QAAA,OAAA,CAAQ,6BAAS,MAAM,CAAA,CAAA;EAAA,OAClB,MAAA;EACL,QAAM,KAAA,CAAA,GAAA,CAAI,OAAO,0BAAM,CAAA,CAAA;EAAA,OACzB;EAAA,KACF,CAAA;EAEA,IAAM,MAAA,WAAA,GAAc,OAAO,MAAA,EAA4B,GAAa,KAAA;EAClE,MAAM,MAAAA,wBAAA,CAAa,QAAQ,CAAO,wBAAA,EAAA,GAAA,CAAI,OAAO,IAAQ,IAAA,QAAA,CAAA,CAAA,CAAA,EAAa,GAAI,CAAA,IAAA,CAAA,EAAA,CAAA,EAAU,cAAM,EAAA;EAAA,QACpF,iBAAmB,EAAA,cAAA;EAAA,QACnB,gBAAkB,EAAA,cAAA;EAAA,QAClB,IAAM,EAAA,SAAA;EAAA,OACP,CAAA,CAAA;EAED,MAAI,IAAA;EACF,QAAA,MAAM,GAAM,GAAA,MAAM,MAAO,CAAA,OAAA,GAAU,GAAG,CAAA,CAAA;EAEtC,QAAI,IAAA,GAAA,CAAI,QAAQ,CAAG,EAAA;EACjB,UAAA,OAAA,CAAQ,6BAAS,MAAM,CAAA,CAAA;EAAA,SAClB,MAAA;EACL,UAAM,KAAA,CAAA,CAAA,yBAAA,EAAQ,IAAI,GAAK,CAAA,CAAA,CAAA,CAAA;EAAA,SACzB;EAAA,eACO,CAAP,EAAA;EACA,QAAA,KAAA,CAAM,2BAAO,CAAA,CAAA;EAAA,OACf;EAAA,KACF,CAAA;EAEA,IAAA,MAAM,aAAgB,GAAA,OAAO,MAA4B,EAAA,GAAA,EAAU,KAAkB,KAAA;EACnF,MAAM,MAAA,MAAA,CAAO,SAAS,GAAG,CAAA,CAAA;EACzB,MAAI,IAAA,MAAA,CAAO,SAAS,QAAU,EAAA;EAC5B,QAAM,MAAA,YAAA,CAAa,QAAQ,GAAG,CAAA,CAAA;EAAA,OAChC,MAAA,IAAW,MAAO,CAAA,IAAA,KAAS,MAAQ,EAAA;EACjC,QAAM,MAAA,WAAA,CAAY,QAAQ,GAAG,CAAA,CAAA;EAAA,OAC/B,MAAA,IAAW,MAAO,CAAA,IAAA,KAAS,MAAQ,EAAA;EACjC,QAAA,KAAA,CAAM,UAAU,KAAS,CAAA,GAAA,GAAA,CAAA;EAAA,OACpB,MAAA;EACL,QAAM,MAAA,MAAA,CAAO,UAAU,GAAG,CAAA,CAAA;EAAA,OAC5B;EACA,MAAA,MAAA,CAAO,QAAQ,GAAG,CAAA,CAAA;EAAA,KACpB,CAAA;EAEA,IAAM,MAAA,IAAA,GAAO,OAAO,KAAA,EAAe,MAAyB,KAAA;EAC1D,MAAM,MAAA,MAAA,GAAS,OAAO,OAAS,EAAA,IAAA,CAAK,CAAC,IAAS,KAAA,IAAA,CAAK,IAAS,KAAA,MAAM,CAAG,EAAA,MAAA,CAAA;EACrE,MAAA,IAAI,CAAC,MAAA;EAAQ,QAAA,OAAA;EAEb,MAAA,MAAM,OAAY,EAAC,CAAA;EACnB,MAAM,MAAA,GAAA,GAAM,MAAM,SAAU,CAAA,KAAA,CAAA,CAAA;EAC5B,MAAM,KAAA,CAAA,OAAA,CACH,OAAO,CAAC,IAAA,KAAS,KAAK,IAAI,CAAA,CAC1B,OAAQ,CAAA,CAAC,MAAW,KAAA;EACnB,QAAK,IAAA,CAAA,MAAA,CAAO,IAAQ,CAAA,GAAA,GAAA,CAAI,MAAO,CAAA,IAAA,CAAA,CAAA;EAAA,OAChC,CAAA,CAAA;EAEH,MAAM,MAAA,GAAA,GAAW,MAAM,MAAO,CAAA;EAAA,QAC5B,IAAA;EAAA,OACD,CAAA,CAAA;EAED,MAAA,IAAI,GAAK,EAAA;EACP,QAAI,IAAA,GAAA,CAAI,QAAQ,CAAG,EAAA;EACjB,UAAAD,qBAAA,CAAU,QAAQ,0BAAM,CAAA,CAAA;EACxB,UAAA,KAAA,CAAM,UAAU,KAAS,CAAA,GAAA,KAAA,CAAA,CAAA;EACzB,UAAA,IAAA,CAAK,aAAa,CAAA,CAAA;EAAA,SACb,MAAA;EACL,UAAAA,qBAAA,CAAU,KAAM,CAAA;EAAA,YACd,QAAU,EAAA,GAAA;EAAA,YACV,SAAW,EAAA,IAAA;EAAA,YACX,wBAA0B,EAAA,IAAA;EAAA,YAC1B,OAAA,EAAS,IAAI,GAAO,IAAA,0BAAA;EAAA,WACrB,CAAA,CAAA;EAAA,SACH;EAAA,OACK,MAAA;EACL,QAAA,KAAA,CAAM,UAAU,KAAS,CAAA,GAAA,KAAA,CAAA,CAAA;EACzB,QAAA,IAAA,CAAK,aAAa,CAAA,CAAA;EAAA,OACpB;EAAA,KACF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnKA,oBAAe,CAAC,GAAG,EAAE,KAAK,KAAK;EAC/B,EAAE,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC;EACtC,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE;EAClC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;EACtB,GAAG;EACH,EAAE,OAAO,MAAM,CAAC;EAChB;;ECkBA,MAAKE,cAAaC,mBAAa,CAAA;EAAA,EAC7B,UAAA,EAAY,SAAEC,UAAM,EAAA;EAAA,EAEpB,KAAO,EAAA;EAAA,IACL,MAAQ,EAAA;EAAA,MACN,IAAM,EAAA,MAAA;EAAA,MACN,OAAA,EAAS,OAAQ,EAAA,CAAA;EAAA,MACjB,QAAU,EAAA,IAAA;EAAA,KACZ;EAAA,GACF;EACF,CAAC,CAAA,CAAA;;;;;EAjCc,EAAA,OAAAC,aAAA,IAMEC,eANY,CAAA,0BAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA;EAAA,IAAA,OAAA,EAEfC,YAAO,CAAK,KAAA,KAAA;EAAA,MAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAAF,aAAA,EAAA,EAAAC,eAAA,CAAA,kBAAA,EAAA;EACjB,QAAA,GAAA,EAAA,CAAA;EAAA,QACA,aAAS,EAAA,KAAA;EAAA,QACT,OAAA,EAAM,KAAM,MAAI,CAAA,KAAA;EAAA,QAAA,IAAA,EAAA,KAAA,CAAA,GAAA,CAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA;4CAGXE,sBAAW,CAAA,EAAA,EAAA,IAAA,CAAA;EAAA,MAAA,IAAA,CAAA,MAAA,CAAA,IAAA,IAAAH,aAAA,EAAA,EAAAC,eAAA,CAAA,iBAAA,EAAA;EAChB,QAAA,GAAA,EAAA,CAAA;EAAA,QACA,aAAW,MAAE,CAAA,IAAA;EAAA,QAAA,aAAA,EAAA,IAAA,CAAA,MAAA,CAAA,MAAA,IAAA,KAAA,CAAA,GAAA,CAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAA;;;;;;;;ECUT,MAAA,SAAA,GAAY,CAAC,IAAA,EAAoB,GAAa,KAAA;EACzD,EAAA,IAAI,KAAK,SAAW,EAAA;EAClB,IAAI,IAAA,IAAA,CAAK,cAAc,UAAY,EAAA;EAEjC,MAAA,IAAA,CAAK,SAAY,GAAA,CAAC,KAAkB,KAAAG,uBAAA,CAAkB,KAAK,CAAA,CAAA;EAAA,KAC7D;EACA,IAAI,IAAA;EACF,MAAA,OAAO,IAAK,CAAA,SAAA,CAAU,GAAI,CAAA,IAAA,CAAK,OAAO,GAAG,CAAA,CAAA;EAAA,aAClC,CAAP,EAAA;EACA,MAAA,OAAO,IAAI,IAAK,CAAA,IAAA,CAAA,CAAA;EAAA,KAClB;EAAA,GACK,MAAA;EACL,IAAA,OAAO,IAAI,IAAK,CAAA,IAAA,CAAA,CAAA;EAAA,GAClB;EACF,CAAA;;ECZA,MAAKP,cAAaC,mBAAa,CAAA;EAAA,EAC7B,KAAO,EAAA;EAAA,IACL,MAAQ,EAAA;EAAA,MACN,IAAM,EAAA,MAAA;EAAA,MACN,OAAA,EAAS,OAAQ,EAAA,CAAA;EAAA,MACjB,QAAU,EAAA,IAAA;EAAA,KACZ;EAAA,GACF;EAAA,EAEA,KAAQ,GAAA;EACN,IAAO,OAAA;EAAA,MACL,SAAA;EAAA,KACF,CAAA;EAAA,GACF;EACF,CAAC,CAAA,CAAA;;;;;;EArCwB,EAAA,OAAAE,aAAA,IAASC,eAAK,CAAA,0BAAA,EAAA;EAAA,IAAG,OAAO,IAAO,CAAA,MAAA,CAAA,KAAA;EAAA,IAAQ,OAAO,IAAO,CAAA,MAAA,CAAA,KAAA;EAAA,IAAA,KAAA,EAAA,IAAA,CAAA,MAAA,CAAA,KAAA;;eAExEC,WAUa,CAAA,CAAA,KAAA,KAAA;EAAA,MAAAG,eAAA,CAVW,qBAAe,EAAA;EAAA,QAAY,SAAA,EAAO,YAAO,OAAQ,CAAA,SAAA;EAAA,QAAQ,KAAA,EAAO,KAAE,MAAO,CAAA,OAAA,CAAA,KAAA;EAAA,QAAA,OAAA,EAAA,IAAA,CAAA,MAAA,CAAA,OAAA,CAAA,OAAA;EAOpF,OAAA,EAAA;EAAA,QAAA,SAAA,EACTH,WAAqF,CAAA,MAAA;EAAA,UAAZG,eAAA,CAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA;EAAA,YAAA,OAAA,EAAAH,WAAA,CAAA,MAAA;;;;;;EANnE,QAAA,OAAA,EAAAA,WAAA,CAAO,MAAQ;EAAA,UADvB,IAAA,CAAA,MAAA,CAAA,OAAA,CAAA,UAAA,IAAAF,aAAA,EAAA,EAAAC,eAAA,CAAA,kBAAA,EAAA;EAEG,YAAA,GAAA,EAAA,CAAA;EAAA,YACA,aAAA,EAAS,KAAM,MAAM,CAAA,UAAA;EAAA,YACrB,OAAA,EAAM,KAAM,MAAI,CAAA,KAAA;EAAA,YAAA,IAAA,EAAA,KAAA,CAAA,GAAA,CAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA;;;;;;;;;;;ECgD3B,MAAKJ,cAAaC,mBAAa,CAAA;EAAA,EAC7B,KAAO,EAAA;EAAA,IACL,MAAQ,EAAA;EAAA,MACN,IAAM,EAAA,MAAA;EAAA,MACN,OAAA,EAAS,OAAQ,EAAA,CAAA;EAAA,MACjB,QAAU,EAAA,IAAA;EAAA,KACZ;EAAA,IAEA,SAAW,EAAA;EAAA,MACT,IAAM,EAAA,MAAA;EAAA,MACN,SAAS,MAAM;EAAA,OAAC;EAAA,KAClB;EAAA,GACF;EAAA,EAEA,KAAQ,GAAA;EACN,IAAO,OAAA;EAAA,MACL,SAAA;EAAA,KACF,CAAA;EAAA,GACF;EACF,CAAC,CAAA,CAAA;;;;;;;;;;;;;WAzEGE,aAAqB,EAAA,EAAAC,eAAA,CAAA,0BAAA,EAAA;EAAA,IACpB,uBAAmB,EAAA,EAAA;EAAA,IACnB,OAAO,IAAO,CAAA,MAAA,CAAA,KAAA;EAAA,IACd,OAAO,IAAO,CAAA,MAAA,CAAA,KAAA;EAAA,IACd,KAAU,EAAA,IAAA,CAAA,MAAA,CAAA,KAAA;EAAA,IACV,UAAM,IAAW,CAAA,MAAA,CAAA,QAAA;EAAA,IAAA,IAAA,EAAA,IAAA,CAAA,MAAA,CAAA,IAAA;;EAGD,IAAA,OAAA,EAAAC,WAAA,CAAO,CAAI,KAAI,KAAA;EAAA,MAAA,IAAA,CAAA,MAAA,CAAA,IAAA,IAA9B,IAQU,CAAA,SAAA,CAAA,KAAA,CAAA,MAAA,CAAA,IAAAF,aAAA,EAAA,EAAAC,eAAA,CAAA,kBAAA,EAAA;EAR6C,QAAA,GAAA,EAAA,CAAA;EAAA,QAAiB,aAAO,EAAA,GAAA;EAAA,QAAA,KAAA,EAAA,IAAA,CAAA,SAAA,CAAA,KAAA,CAAA,MAAA,CAAA;;mBAC7EC,WAMoB,CAAA,MAAA;EAAA,UAAAG,eAAA,CALX,2BAAW,EAAA;EAAA,YACjB,IAAA,EAAK,KAAE,MAAM,CAAA,IAAA;EAAA,YACb,KAAA,EAAM,KAAE,MAAM,CAAA,KAAA;EAAA,YACd,MAAM,EAAA,IAAA,CAAA,MAAA;EAAA,YACN,MAAK,IAAE,CAAA,MAAA,CAAA,IAAA;EAAA,YAAA,KAAA,EAAA,IAAA,CAAA,SAAA,CAAA,KAAA,CAAA,MAAA,CAAA;;;;EAIU,OAAA,EAAA,IAAA,EAAA,CAAA,OAAO,CAA7B,CAAA,IAAA,IAAA,CAAA,MAAA,CAAA,MAAA,KAAA,YAAA,IAAAL,aAAA,EAAA,EAAAC,eAAA,CAAA,oBAAA,EAAA;UAAsD,GAAI,EAAA,CAAA;EAAA,QAAS,IAAA,EAAA,MAAA;EAAA,QAAA,OAAA,EAAA,CAAA,MAAA,KAAA,IAAA,CAAA,MAAA,CAAA,OAAA,CAAA,KAAA,CAAA,GAAA,CAAA;;;;;;EAIrD,OAAA,EAAA,IAAA,EAAA,CAAA,SAAa,CAA3B,CAAA,IAAA,IAAA,CAAA,MAAA,CAAA,MAAA,KAAA,KAAA,IAAAD,aAAA,EAAA,EAAAM,sBAAA,CAAA,GAAA,EAAA;EAAuC,QAAA,GAAA,EAAA,CAAA;EAAA,QAAiB,MAAM,EAAA,QAAA;EAAA,QAAA,IAAA,EAAA,KAAA,CAAA,GAAA,CAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA;EAC3D,OAAA,EAAA;EAAA,QAAqBC,sBAAA,CAAA,KAAA,EAAA;EAAA,UAAc,WAAO,GAAI,CAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA;EAAA,UAAA,MAAA,EAAA,IAAA;;EAGnC,OAAA,EAAA,CAAA,EAAA,UAAO,CAArB,IAAA,IAAA,CAAA,MAAA,CAAA,MAAA,KAAA,MAAA,IAAAP,aAAA,EAAA,EAAAM,sBAAA,CAAA,GAAA,EAAA;EAAwC,QAAA,GAAA,EAAA,CAAA;EAAA,QAAiB,MAAM,EAAA,QAAA;EAAA,QAAwB,IAAA,EAAK,MAAC,GAAU,CAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA;EAAA,QAAA,KAAA,EAAA,UAAA;EAIhF,OAAA,EAAAE,mBAAA,CAAa,KAApC,CAAA,GAAA,CAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA,CAAA,EAAA,CAAA,EAAA,UAAA,CAAA,IAAA,IAAA,CAAA,MAAA,CAAA,MAAA,KAAA,KAAA,IAAAR,aAAA,EAAA,EAAAC,eAAA,CAAA,qBAAA,EAAA;EAAgD,QAAA,GAAA,EAAA,CAAA;EAAA,QAAA,SAAA,EAAA,MAAA;EACnC,OAAA,EAAA;EAAA,QAAA,OAAA,EACTC,WAA6C,CAAA,MAAA;EAAA,UAAAK,sBAAA,CAAA,KAAA,EAAA,IAAA,EAAAC,mBAAA,CAAA,IAAA,CAAA,SAAA,CAAA,IAAA,CAAA,MAAA,EAAA,KAAA,CAAA,GAAA,CAAA,CAAA,EAAA,CAAA,CAAA;;mBAE/CN,WAAuC,CAAA,MAAA;EAAA,UAAZG,eAAA,CAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA;EAAA,YAAA,OAAA,EAAAH,WAAA,CAAA,MAAA;;;;;;;WAIhB,IADb,CAAA,IAAA,IAAA,CAAA,MAAA,CAAA,MAAA,KAAA,KAAA,IAAAF,aAAA,EAAA,EAAAC,eAAA,CAAA,iBAAA,EAAA;UAEG,GAAI,EAAA,CAAA;EAAA,QACL,IAAgB,EAAA,OAAA,IAAA,CAAA,MAAA,CAAA,IAAA,KAAA,UAAA,GAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA,KAAA,CAAA,GAAA,CAAA,IAAA,CAAA,MAAA,CAAA,IAAA,CAAA,EAAA,KAAA,CAAA,GAAA,CAAA,GAAA,IAAA,CAAA,MAAA,CAAA,IAAA;EAAA,QAAA,kBAAA,EAAA,EAAA;;;;;;EAGlB,OAAA,EAAA,IAAA,EAAA,CAAA,MAAA,CAAA,CAAA,KAAAD,aAAA,EAAA,EAAAM,sBAAA,CAAA,KAAA,EAAA;EAAY,QAAA,GAAA,EAAA,CAAA;EAAA,QAAA,SAAA,EAAA,IAAA,CAAA,SAAA,CAAA,IAAA,CAAA,MAAA,EAAA,KAAA,CAAA,GAAA,CAAA;;;;;;;;;;ECelB,MAAK,YAAaR,mBAAa,CAAA;EAAA,EAC7B,IAAM,EAAA,SAAA;EAAA,EAEN,UAAY,EAAA,EAAE,YAAc,iBAAAW,WAAA,EAAe,eAAe,UAAW,EAAA;EAAA,EAErE,KAAO,EAAA;EAAA,IACL,IAAM,EAAA;EAAA,MACJ,IAAM,EAAA,KAAA;EAAA,MACN,OAAS,EAAA,IAAA;EAAA,KACX;EAAA,IAEA,OAAS,EAAA;EAAA,MACP,IAAM,EAAA,KAAA;EAAA,MACN,OAAS,EAAA,IAAA;EAAA,MACT,OAAA,EAAS,MAAM,EAAC;EAAA,KAClB;EAAA,IAGA,UAAY,EAAA;EAAA,MACV,IAAM,EAAA,QAAA;EAAA,KAGR;EAAA,IAEA,KAAO,EAAA;EAAA,MACL,IAAM,EAAA,OAAA;EAAA,MACN,OAAS,EAAA,KAAA;EAAA,KACX;EAAA,IAGA,UAAY,EAAA;EAAA,MACV,IAAA,EAAM,CAAC,MAAA,EAAQ,MAAM,CAAA;EAAA,KACvB;EAAA,IAGA,UAAY,EAAA;EAAA,MACV,IAAM,EAAA,OAAA;EAAA,MACN,OAAS,EAAA,IAAA;EAAA,KACX;EAAA,IAGA,SAAW,EAAA;EAAA,MACT,IAAM,EAAA,MAAA;EAAA,KACR;EAAA,IAGA,gBAAkB,EAAA;EAAA,MAChB,IAAM,EAAA,OAAA;EAAA,MACN,OAAS,EAAA,KAAA;EAAA,KACX;EAAA,IAEA,UAAY,EAAA;EAAA,MACV,IAAM,EAAA,MAAA;EAAA,KACR;EAAA,IAGA,MAAQ,EAAA;EAAA,MACN,IAAM,EAAA,OAAA;EAAA,MACN,OAAS,EAAA,KAAA;EAAA,KACX;EAAA,GACF;EAAA,EAEA,OAAO,CAAC,aAAA,EAAe,aAAe,EAAA,QAAA,EAAU,cAAc,kBAAkB,CAAA;EAAA,EAEhF,IAEE,GAAA;EACA,IAAO,OAAA;EAAA,MACL,WAAW,EAAC;EAAA,KACd,CAAA;EAAA,GACF;EAAA,EAEA,QAAU,EAAA;EAAA,IACR,SAAY,GAAA;EACV,MAAA,IAAI,KAAK,eAAiB,EAAA;EACxB,QAAO,OAAA,IAAA,CAAK,QAAQ,EAAC,CAAA;EAAA,OACvB;EAEA,MAAA,OAAOC,kBAAU,CAAA,IAAA,CAAK,IAAI,CAAA,IAAK,EAAC,CAAA;EAAA,KAClC;EAAA,IAEA,eAAkB,GAAA;EAChB,MAAA,MAAM,SAAS,IAAK,CAAA,OAAA,CAAQ,OAAO,CAAC,IAAA,KAAS,KAAK,SAAS,CAAA,CAAA;EAC3D,MAAO,OAAA,MAAA,CAAO,MAAS,GAAA,MAAA,CAAO,CAAK,CAAA,GAAA,IAAA,CAAA;EAAA,KACrC;EAAA,IAEA,SAAY,GAAA;EACV,MAAA,OAAO,OAAO,IAAA,CAAK,MAAW,KAAA,WAAA,GAAc,KAAK,MAAS,GAAA,IAAA,CAAA;EAAA,KAC5D;EAAA,GACF;EAAA,EAEA,OAAS,EAAA;EAAA,IACP,WAAW,IAAW,EAAA;EACpB,MAAK,IAAA,CAAA,KAAA,CAAM,eAAe,IAAI,CAAA,CAAA;EAAA,KAChC;EAAA,IAEA,aAAA,CAAc,WAAgB,GAAU,EAAA;EACtC,MAAA,MAAM,SAAS,IAAK,CAAA,eAAA,CAAA;EACpB,MAAA,IAAI,CAAC,MAAQ,EAAA;EACX,QAAA,OAAA;EAAA,OACF;EAEA,MAAI,IAAA,MAAA,CAAO,cAAc,QAAU,EAAA,CAGnC;EACA,MAAK,IAAA,CAAA,KAAA,CAAM,QAAU,EAAA,SAAA,EAAW,GAAG,CAAA,CAAA;EAAA,KACrC;EAAA,IAEA,iBAAiB,SAAgB,EAAA;EAC/B,MAAK,IAAA,CAAA,KAAA,CAAM,cAAc,SAAS,CAAA,CAAA;EAAA,KACpC;EAAA,IAEA,uBAAuB,SAAgB,EAAA;EACrC,MAAK,IAAA,CAAA,KAAA,CAAM,oBAAoB,SAAS,CAAA,CAAA;EAAA,KAC1C;EAAA,IAEA,kBAAA,CAAmB,KAAU,QAAmB,EAAA;EAC9C,MAAM,MAAA,KAAA,GAAQ,KAAK,KAAM,CAAA,KAAA,CAAA;EACzB,MAAA,KAAA,CAAM,kBAAmB,CAAA,IAAA,CAAK,KAAK,CAAA,CAAE,KAAK,QAAQ,CAAA,CAAA;EAAA,KACpD;EAAA,IAEA,kBAAA,CAAmB,KAAU,QAAmB,EAAA;EAC9C,MAAM,MAAA,KAAA,GAAQ,KAAK,KAAM,CAAA,KAAA,CAAA;EACzB,MAAA,KAAA,CAAM,kBAAmB,CAAA,IAAA,CAAK,KAAK,CAAA,CAAE,KAAK,QAAQ,CAAA,CAAA;EAAA,KACpD;EAAA,IAEA,cAAiB,GAAA;EACf,MAAM,MAAA,KAAA,GAAQ,KAAK,KAAM,CAAA,KAAA,CAAA;EACzB,MAAM,KAAA,CAAA,cAAA,CAAe,IAAK,CAAA,KAAK,CAAE,EAAA,CAAA;EAAA,KACnC;EAAA,IAEA,iBAAiB,IAAW,EAAA;EAC1B,MAAI,IAAA,OAAO,IAAK,CAAA,UAAA,KAAe,UAAY,EAAA;EACzC,QAAO,OAAA,IAAA,CAAK,WAAW,IAAI,CAAA,CAAA;EAAA,OAC7B;EACA,MAAA,OAAO,OAAO;EAAA,QACZ,OAAS,EAAA,CAAA;EAAA,QACT,OAAS,EAAA,CAAA;EAAA,OACX,CAAA,CAAA;EAAA,KACF;EAAA,GACF;EACF,CAAC,CAAA,CAAA;;;;;;;;WAxMUV,aAAS,EAAA,EAAAC,eAAA,CAAA,mBAAA,EAAA;EAAA,IACf,IAAA,EAAA,IAAA,CAAA,SAAA;EAAA,IACA,aAAY,EAAA,IAAA,CAAA,UAAA;EAAA,IACb,YAAe,EAAA,IAAA,CAAA,UAAA;EAAA,IACf,gBAAe,EAAA,MAAA;EAAA,IACf,KAAI,EAAA,SAAA;EAAA,IACH,GAAA,EAAA,OAAA;EAAA,IACA,oBAAiB,EAAA,IAAA,CAAA,gBAAA;EAAA,IACjB,MAAS,EAAA,IAAA,CAAA,SAAA;EAAA,IACT,SAAY,EAAA,IAAA,CAAA,UAAA,IAAA,MAAA;EAAA,IACZ,cAAY,EAAS,QAAA,EAAA,UAAA,EAAA;EAAA,IACrB,cAAW,IAAE,CAAA,SAAA,IAAA,0BAAA;EAAA,IACb,aAAa,EAAA,IAAA,CAAA,gBAAA;EAAA,IACb,YAAQ,EAAA,IAAA,CAAA,UAAA;EAAA,IACR,QAAY,EAAA,IAAA,CAAA,aAAA;EAAA,IACZ,WAAgB,EAAA,IAAA,CAAA,gBAAA;EAAA,IAAA,iBAAA,EAAA,IAAA,CAAA,sBAAA;;EAEjB,IAAA,OAAA,EAAAC,WAAA,CAAA,MAAA;EAAA,OAAAF,aAAA,CAAA,IAAA,CAAA,EAAAM,sBAAA,CAAAK,YAAA,EAAA,IAAA,EAAAC,cAAA,CAAA,IAAA,CAAA,OAAA,EAAA,CAAA,IAAA,EAAA,WAAA,KAAA;iBACuBZ,aAAI,EAAA,EAAAM,sBAAA,CAAAK,YAAA,EAAA,IAAA,EAAA;EAAA,UAAA,IAAA,CAAA,IAAA,KAAA,QAAA,IAAAX,aAAA,EACK,EAAAC,eAAA,CAAA,wBAAA,EAAA;EAAA,YAAG,MAAK,EAAA,IAAA;EAAA,YAAA,GAAA,EAAA,WAAA;eAGjB,IAAK,EAAA,CAAA,EAAA,CAAA,QAAS,uCACA,EAAAA,eAAA,CAAA,0BAAA,EAAA;EAAA,YAAE,IAAK,EAAA,WAAA;EAAA,YAAa,GAAK,EAAA,WAAA;EAAA,YAAO,KAAA,EAAA,IAAA;EAAA,YAAA,UAAA,EAAA,IAAA,CAAA,UAAA;eAG9C,IAAK,EAAA,CAAA,EAAA,CAAO,iDAEZ,EAAAA,eAAA,CAAA,yBAAA,EAAA;EAAA,YAChB,SAAQ,IAAI,CAAA,OAAA;EAAA,YACZ,MAAA,EAAA,IAAA;EAAA,YACA,aAAY,EAAA,IAAA,CAAA,UAAA;EAAA,YACZ,cAAK,IAAW,CAAA,SAAA;EAAA,YAChB,GAAA,EAAA,WAAA;EAAA,YAAA,aAAA,EAAA,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAA,MAAA,KAAA,IAAA,CAAA,KAAA,CAAA,aAAA,CAAA,CAAA;eAIgB,IAAK,EAAA,CAAA,EAAI,iGACK,EAAAA,eAAA,CAAA,yBAAA,EAAA;EAAA,YAAG,GAAA,EAAA,WAAA;EAAA,YAAA,MAAA,EAAA,IAAA;EAIpC,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,QAAA,CAAA,CAAA,KAAAD,aAAA,EAA8B,EAAAC,eAAA,CAAA,sBAAA,EAAA;EAAA,YAAG,GAAA,EAAA,WAAA;EAAA,YAAe,MAAA,EAAA,IAAA;EAAA,YAAA,YAAA,EAAA,IAAA,CAAA,SAAA;;;;;;;;;;ECpBxD,MAAM,UAAA,GAAa,CAAC,KAAK,CAAA,CAAA;AAEzB,cAAe;EAAA,EACb,QAAQ,GAAU,EAAA;EAChB,IAAW,UAAA,CAAA,OAAA,CAAQ,CAAC,SAAc,KAAA;EAChC,MAAI,GAAA,CAAA,SAAA,CAAU,SAAU,CAAA,IAAA,EAAM,SAAS,CAAA,CAAA;EAAA,KACxC,CAAA,CAAA;EAAA,GACH;EACF,CAAA;;;;;;;;;;;"}
@@ -5,7 +5,8 @@ export interface ColumnActionConfig {
5
5
  text: string;
6
6
  name: string;
7
7
  handler?: (row: any) => Promise<any> | any;
8
- after?: () => void;
8
+ before?: (row: any) => void;
9
+ after?: (row: any) => void;
9
10
  action?: (data: {
10
11
  data: any;
11
12
  }) => void;
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.0.0-beta.11",
2
+ "version": "1.0.0-beta.14",
3
3
  "name": "@tmagic/table",
4
4
  "sideEffects": false,
5
5
  "main": "dist/tmagic-table.umd.js",
@@ -15,6 +15,7 @@
15
15
  "require": "./dist/style.css"
16
16
  }
17
17
  },
18
+ "license": "Apache-2.0",
18
19
  "scripts": {
19
20
  "build": "vite build"
20
21
  },
@@ -26,7 +27,7 @@
26
27
  "url": "https://github.com/Tencent/tmagic-editor.git"
27
28
  },
28
29
  "dependencies": {
29
- "@tmagic/form": "^1.0.0-beta.11",
30
+ "@tmagic/form": "^1.0.0-beta.14",
30
31
  "element-plus": "^2.1.7",
31
32
  "lodash-es": "^4.17.21",
32
33
  "vue": "^3.2.0"
@@ -37,12 +38,12 @@
37
38
  "@types/node": "^15.12.4",
38
39
  "@vitejs/plugin-vue": "^1.2.3",
39
40
  "@vue/compiler-sfc": "^3.2.0",
40
- "@vue/test-utils": "^2.0.0-rc.12",
41
+ "@vue/test-utils": "^2.0.0-rc.20",
41
42
  "sass": "^1.35.1",
42
43
  "typescript": "^4.3.4",
43
44
  "vite": "^2.3.7",
44
45
  "vite-plugin-dts": "^0.9.6",
45
46
  "vue-tsc": "^0.0.24"
46
47
  },
47
- "gitHead": "db274d495f44030a788dee585f7fba53b6a3407e"
48
+ "gitHead": "02dd9fa31c856c6a4812af156bed0e1839c46599"
48
49
  }
@@ -116,6 +116,7 @@ const copyHandler = async (action: ColumnActionConfig, row: any) => {
116
116
  };
117
117
 
118
118
  const actionHandler = async (action: ColumnActionConfig, row: any, index: number) => {
119
+ await action.before?.(row);
119
120
  if (action.type === 'delete') {
120
121
  await deleteAction(action, row);
121
122
  } else if (action.type === 'copy') {
@@ -124,8 +125,8 @@ const actionHandler = async (action: ColumnActionConfig, row: any, index: number
124
125
  props.editState[index] = row;
125
126
  } else {
126
127
  await action.handler?.(row);
127
- action.after?.();
128
128
  }
129
+ action.after?.(row);
129
130
  };
130
131
 
131
132
  const save = async (index: number, config: ColumnConfig) => {
package/src/schema.ts CHANGED
@@ -24,7 +24,8 @@ export interface ColumnActionConfig {
24
24
  text: string;
25
25
  name: string;
26
26
  handler?: (row: any) => Promise<any> | any;
27
- after?: () => void;
27
+ before?: (row: any) => void;
28
+ after?: (row: any) => void;
28
29
  action?: (data: { data: any }) => void;
29
30
  }
30
31
 
package/tsconfig.json DELETED
@@ -1,9 +0,0 @@
1
- {
2
- "extends": "../../tsconfig.json",
3
- "compilerOptions": {
4
- "baseUrl": "../..",
5
- },
6
- "exclude": [
7
- "**/dist/**/*"
8
- ],
9
- }
package/vite.config.ts DELETED
@@ -1,27 +0,0 @@
1
- /*
2
- * Tencent is pleased to support the open source community by making TMagicEditor available.
3
- *
4
- * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved.
5
- *
6
- * Licensed under the Apache License, Version 2.0 (the "License");
7
- * you may not use this file except in compliance with the License.
8
- * You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing, software
13
- * distributed under the License is distributed on an "AS IS" BASIS,
14
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- * See the License for the specific language governing permissions and
16
- * limitations under the License.
17
- */
18
-
19
- import { defineConfig } from 'vite';
20
-
21
- import { getBaseConfig } from '../vite-config';
22
-
23
- import pkg from './package.json';
24
-
25
- const deps = Object.keys(pkg.dependencies);
26
-
27
- export default defineConfig(getBaseConfig(deps, 'TMagicTable'));