@agile-team/mach-table-vue 0.28.0 → 0.29.1

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/dist/ui.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _vue = require('vue');var f={search:!0,refresh:!0,columns:!0,density:!0,export:!0,undoRedo:!1,fullscreen:!1},s= exports.MachTableToolbar =_vue.defineComponent.call(void 0, {name:"MachTableToolbar",props:{api:{type:Object,default:null},commands:{type:Object,default:null},modelValue:{type:String,default:""},loading:{type:Boolean,default:!1},selectedCount:{type:Number,default:0},searchPlaceholder:{type:String,default:"\u641C\u7D22\u5F53\u524D\u7ED3\u679C"},exportFilename:{type:String,default:"mach-table.csv"},features:{type:Object,default:()=>({})}},emits:["update:modelValue","refresh","clearSelection"],setup(e,{emit:d,slots:r}){let c=a=>_nullishCoalesce(e.features[a], () => (f[a])),t=(a,...n)=>{let l=e.commands?Reflect.get(e.commands,a):void 0;return typeof l=="function"&&e.commands?Reflect.apply(l,e.commands,n):void 0},i=(a,n,l,h=!1)=>_vue.h.call(void 0, "button",{type:"button",class:"mach-toolbar__button",title:a,"aria-label":a,disabled:h,onClick:l},n),u=()=>{let a=[..._nullishCoalesce(_optionalChain([r, 'access', _ => _.start, 'optionalCall', _2 => _2()]), () => ([]))];return c("search")&&a.push(_vue.h.call(void 0, "label",{class:"mach-toolbar__search"},[_vue.h.call(void 0, "span",{class:"mach-sr-only"},e.searchPlaceholder),_vue.h.call(void 0, "span",{"aria-hidden":"true"},"\u2315"),_vue.h.call(void 0, "input",{value:e.modelValue,type:"search",placeholder:e.searchPlaceholder,onInput:n=>{let l=n.target.value;d("update:modelValue",l),e.commands?t("search",l||null):_optionalChain([e, 'access', _3 => _3.api, 'optionalAccess', _4 => _4.filtering, 'access', _5 => _5.setQuickText, 'call', _6 => _6(l||null)])}})])),c("refresh")&&a.push(i("\u5237\u65B0",e.loading?"\u2026":"\u21BB",()=>{d("refresh"),e.commands?t("refresh"):_optionalChain([e, 'access', _7 => _7.api, 'optionalAccess', _8 => _8.rows, 'access', _9 => _9.isRemote, 'call', _10 => _10()])?e.api.rows.reload():_optionalChain([e, 'access', _11 => _11.api, 'optionalAccess', _12 => _12.view, 'access', _13 => _13.refreshCells, 'call', _14 => _14()])},e.loading)),c("columns")&&a.push(i("\u5217\u8BBE\u7F6E","\u2637",n=>{let l=n.currentTarget;l instanceof HTMLElement&&(e.commands?t("openColumns",l):_optionalChain([e, 'access', _15 => _15.api, 'optionalAccess', _16 => _16.columns, 'access', _17 => _17.openWorkbench, 'call', _18 => _18(l)]))})),c("density")&&a.push(_vue.h.call(void 0, "select",{class:"mach-toolbar__select",value:_nullishCoalesce(_optionalChain([e, 'access', _19 => _19.api, 'optionalAccess', _20 => _20.getOption, 'call', _21 => _21("size")]), () => ("normal")),"aria-label":"\u8868\u683C\u5BC6\u5EA6",onChange:n=>{let l=n.target.value;e.commands?t("setDensity",l):_optionalChain([e, 'access', _22 => _22.api, 'optionalAccess', _23 => _23.updateOptions, 'call', _24 => _24({size:l})])}},[_vue.h.call(void 0, "option",{value:"compact"},"\u7D27\u51D1"),_vue.h.call(void 0, "option",{value:"normal"},"\u6807\u51C6"),_vue.h.call(void 0, "option",{value:"large"},"\u5BBD\u677E")])),a.push(..._nullishCoalesce(_optionalChain([r, 'access', _25 => _25.default, 'optionalCall', _26 => _26()]), () => ([]))),_vue.h.call(void 0, "div",{class:"mach-toolbar__main"},a)},m=()=>{let a=[];return e.selectedCount>0&&a.push(_vue.h.call(void 0, "button",{type:"button",class:"mach-toolbar__selection",onClick:()=>d("clearSelection")},`\u5DF2\u9009 ${e.selectedCount} \u9879 \xD7`)),c("undoRedo")&&(a.push(i("\u64A4\u9500","\u21B6",()=>{e.commands?t("undo"):_optionalChain([e, 'access', _27 => _27.api, 'optionalAccess', _28 => _28.editing, 'access', _29 => _29.undo, 'call', _30 => _30()])},e.commands?!e.commands.canUndo():!_optionalChain([e, 'access', _31 => _31.api, 'optionalAccess', _32 => _32.editing, 'access', _33 => _33.canUndo, 'call', _34 => _34()]))),a.push(i("\u91CD\u505A","\u21B7",()=>{e.commands?t("redo"):_optionalChain([e, 'access', _35 => _35.api, 'optionalAccess', _36 => _36.editing, 'access', _37 => _37.redo, 'call', _38 => _38()])},e.commands?!e.commands.canRedo():!_optionalChain([e, 'access', _39 => _39.api, 'optionalAccess', _40 => _40.editing, 'access', _41 => _41.canRedo, 'call', _42 => _42()])))),c("export")&&a.push(i("\u5BFC\u51FA CSV","\u21E9",()=>{e.commands&&t("exportCsv",e.exportFilename)},!e.commands)),c("fullscreen")&&a.push(i("\u5168\u5C4F","\u26F6",()=>{t("toggleFullscreen")},!e.commands)),a.push(..._nullishCoalesce(_optionalChain([r, 'access', _43 => _43.end, 'optionalCall', _44 => _44()]), () => ([]))),_vue.h.call(void 0, "div",{class:"mach-toolbar__aside"},a)};return()=>_vue.h.call(void 0, "div",{class:"mach-toolbar",role:"toolbar","aria-label":"\u8868\u683C\u5DE5\u5177\u680F"},[u(),m()])}});var T={install(e){e.component("MachTableToolbar")||e.component("MachTableToolbar",s)}};var p=T;exports.MachTableToolbar = s; exports.MachTableUiPlugin = T; exports.default = p;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _vue = require('vue');var _adapter = require('@agile-team/mach-table/adapter');var M={search:!0,refresh:!0,columns:!0,density:!0,export:!0,undoRedo:!1,fullscreen:!1},g=_vue.defineComponent.call(void 0, {name:"MachTableDensitySelect",props:{value:{type:String,required:!0},onSelectDensity:{type:Function,required:!0}},setup(e){let i=_vue.ref.call(void 0, null),c=null;return _vue.onMounted.call(void 0, ()=>{c=_adapter.createSelectControl.call(void 0, {ariaLabel:"\u8868\u683C\u5BC6\u5EA6",options:[{value:"compact",label:"\u7D27\u51D1"},{value:"normal",label:"\u6807\u51C6"},{value:"large",label:"\u5BBD\u677E"}],value:e.value,classNames:{root:"mach-toolbar__select-control",native:"mach-toolbar__select"},onChange:o=>e.onSelectDensity(o)}),_optionalChain([i, 'access', _ => _.value, 'optionalAccess', _2 => _2.appendChild, 'call', _3 => _3(c.el)])}),_vue.watch.call(void 0, ()=>e.value,o=>_optionalChain([c, 'optionalAccess', _4 => _4.setValue, 'call', _5 => _5(o)])),_vue.onBeforeUnmount.call(void 0, ()=>_optionalChain([c, 'optionalAccess', _6 => _6.destroy, 'call', _7 => _7()])),()=>_vue.h.call(void 0, "div",{ref:i,class:"mach-toolbar__select-host"})}}),u= exports.MachTableToolbar =_vue.defineComponent.call(void 0, {name:"MachTableToolbar",props:{api:{type:Object,default:null},commands:{type:Object,default:null},modelValue:{type:String,default:""},loading:{type:Boolean,default:!1},selectedCount:{type:Number,default:0},searchPlaceholder:{type:String,default:"\u641C\u7D22\u5F53\u524D\u7ED3\u679C"},exportFilename:{type:String,default:"mach-table.csv"},features:{type:Object,default:()=>({})}},emits:["update:modelValue","refresh","clearSelection"],setup(e,{emit:i,slots:c}){let o=a=>_nullishCoalesce(e.features[a], () => (M[a])),r=(a,...n)=>{let l=e.commands?Reflect.get(e.commands,a):void 0;return typeof l=="function"&&e.commands?Reflect.apply(l,e.commands,n):void 0},d=(a,n,l,b=!1)=>_vue.h.call(void 0, "button",{type:"button",class:"mach-toolbar__button",title:a,"aria-label":a,disabled:b,onClick:l},n),m=()=>{let a=[..._nullishCoalesce(_optionalChain([c, 'access', _8 => _8.start, 'optionalCall', _9 => _9()]), () => ([]))];return o("search")&&a.push(_vue.h.call(void 0, "label",{class:"mach-toolbar__search"},[_vue.h.call(void 0, "span",{class:"mach-sr-only"},e.searchPlaceholder),_vue.h.call(void 0, "span",{"aria-hidden":"true"},"\u2315"),_vue.h.call(void 0, "input",{value:e.modelValue,type:"search",placeholder:e.searchPlaceholder,onInput:n=>{let l=n.target.value;i("update:modelValue",l),e.commands?r("search",l||null):_optionalChain([e, 'access', _10 => _10.api, 'optionalAccess', _11 => _11.filtering, 'access', _12 => _12.setQuickText, 'call', _13 => _13(l||null)])}})])),o("refresh")&&a.push(d("\u5237\u65B0",e.loading?"\u2026":"\u21BB",()=>{i("refresh"),e.commands?r("refresh"):_optionalChain([e, 'access', _14 => _14.api, 'optionalAccess', _15 => _15.rows, 'access', _16 => _16.isRemote, 'call', _17 => _17()])?e.api.rows.reload():_optionalChain([e, 'access', _18 => _18.api, 'optionalAccess', _19 => _19.view, 'access', _20 => _20.refreshCells, 'call', _21 => _21()])},e.loading)),o("columns")&&a.push(d("\u5217\u8BBE\u7F6E","\u2637",n=>{let l=n.currentTarget;l instanceof HTMLElement&&(e.commands?r("openColumns",l):_optionalChain([e, 'access', _22 => _22.api, 'optionalAccess', _23 => _23.columns, 'access', _24 => _24.openWorkbench, 'call', _25 => _25(l)]))})),o("density")&&a.push(_vue.h.call(void 0, g,{value:_nullishCoalesce(_optionalChain([e, 'access', _26 => _26.api, 'optionalAccess', _27 => _27.getOption, 'call', _28 => _28("size")]), () => ("normal")),onSelectDensity:n=>{e.commands?r("setDensity",n):_optionalChain([e, 'access', _29 => _29.api, 'optionalAccess', _30 => _30.updateOptions, 'call', _31 => _31({size:n})])}})),a.push(..._nullishCoalesce(_optionalChain([c, 'access', _32 => _32.default, 'optionalCall', _33 => _33()]), () => ([]))),_vue.h.call(void 0, "div",{class:"mach-toolbar__main"},a)},h=()=>{let a=[];return e.selectedCount>0&&a.push(_vue.h.call(void 0, "button",{type:"button",class:"mach-toolbar__selection",onClick:()=>i("clearSelection")},`\u5DF2\u9009 ${e.selectedCount} \u9879 \xD7`)),o("undoRedo")&&(a.push(d("\u64A4\u9500","\u21B6",()=>{e.commands?r("undo"):_optionalChain([e, 'access', _34 => _34.api, 'optionalAccess', _35 => _35.editing, 'access', _36 => _36.undo, 'call', _37 => _37()])},e.commands?!e.commands.canUndo():!_optionalChain([e, 'access', _38 => _38.api, 'optionalAccess', _39 => _39.editing, 'access', _40 => _40.canUndo, 'call', _41 => _41()]))),a.push(d("\u91CD\u505A","\u21B7",()=>{e.commands?r("redo"):_optionalChain([e, 'access', _42 => _42.api, 'optionalAccess', _43 => _43.editing, 'access', _44 => _44.redo, 'call', _45 => _45()])},e.commands?!e.commands.canRedo():!_optionalChain([e, 'access', _46 => _46.api, 'optionalAccess', _47 => _47.editing, 'access', _48 => _48.canRedo, 'call', _49 => _49()])))),o("export")&&a.push(d("\u5BFC\u51FA CSV","\u21E9",()=>{e.commands&&r("exportCsv",e.exportFilename)},!e.commands)),o("fullscreen")&&a.push(d("\u5168\u5C4F","\u26F6",()=>{r("toggleFullscreen")},!e.commands)),a.push(..._nullishCoalesce(_optionalChain([c, 'access', _50 => _50.end, 'optionalCall', _51 => _51()]), () => ([]))),_vue.h.call(void 0, "div",{class:"mach-toolbar__aside"},a)};return()=>_vue.h.call(void 0, "div",{class:"mach-toolbar",role:"toolbar","aria-label":"\u8868\u683C\u5DE5\u5177\u680F"},[m(),h()])}});var C={install(e){e.component("MachTableToolbar")||e.component("MachTableToolbar",u)}};var V=C;exports.MachTableToolbar = u; exports.MachTableUiPlugin = C; exports.default = V;
package/dist/ui.d.cts CHANGED
@@ -84,8 +84,8 @@ declare const MachTableToolbar: vue.DefineComponent<vue.ExtractPropTypes<{
84
84
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
85
85
  onClearSelection?: ((...args: any[]) => any) | undefined;
86
86
  }>, {
87
- loading: boolean;
88
87
  features: MachTableToolbarFeatures;
88
+ loading: boolean;
89
89
  selectedCount: number;
90
90
  api: GridApi<any> | null;
91
91
  commands: MachTableCommands | null;
package/dist/ui.d.ts CHANGED
@@ -84,8 +84,8 @@ declare const MachTableToolbar: vue.DefineComponent<vue.ExtractPropTypes<{
84
84
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
85
85
  onClearSelection?: ((...args: any[]) => any) | undefined;
86
86
  }>, {
87
- loading: boolean;
88
87
  features: MachTableToolbarFeatures;
88
+ loading: boolean;
89
89
  selectedCount: number;
90
90
  api: GridApi<any> | null;
91
91
  commands: MachTableCommands | null;
package/dist/ui.js CHANGED
@@ -1 +1 @@
1
- import{defineComponent as b,h as o}from"vue";var f={search:!0,refresh:!0,columns:!0,density:!0,export:!0,undoRedo:!1,fullscreen:!1},s=b({name:"MachTableToolbar",props:{api:{type:Object,default:null},commands:{type:Object,default:null},modelValue:{type:String,default:""},loading:{type:Boolean,default:!1},selectedCount:{type:Number,default:0},searchPlaceholder:{type:String,default:"\u641C\u7D22\u5F53\u524D\u7ED3\u679C"},exportFilename:{type:String,default:"mach-table.csv"},features:{type:Object,default:()=>({})}},emits:["update:modelValue","refresh","clearSelection"],setup(e,{emit:d,slots:r}){let c=a=>e.features[a]??f[a],t=(a,...n)=>{let l=e.commands?Reflect.get(e.commands,a):void 0;return typeof l=="function"&&e.commands?Reflect.apply(l,e.commands,n):void 0},i=(a,n,l,h=!1)=>o("button",{type:"button",class:"mach-toolbar__button",title:a,"aria-label":a,disabled:h,onClick:l},n),u=()=>{let a=[...r.start?.()??[]];return c("search")&&a.push(o("label",{class:"mach-toolbar__search"},[o("span",{class:"mach-sr-only"},e.searchPlaceholder),o("span",{"aria-hidden":"true"},"\u2315"),o("input",{value:e.modelValue,type:"search",placeholder:e.searchPlaceholder,onInput:n=>{let l=n.target.value;d("update:modelValue",l),e.commands?t("search",l||null):e.api?.filtering.setQuickText(l||null)}})])),c("refresh")&&a.push(i("\u5237\u65B0",e.loading?"\u2026":"\u21BB",()=>{d("refresh"),e.commands?t("refresh"):e.api?.rows.isRemote()?e.api.rows.reload():e.api?.view.refreshCells()},e.loading)),c("columns")&&a.push(i("\u5217\u8BBE\u7F6E","\u2637",n=>{let l=n.currentTarget;l instanceof HTMLElement&&(e.commands?t("openColumns",l):e.api?.columns.openWorkbench(l))})),c("density")&&a.push(o("select",{class:"mach-toolbar__select",value:e.api?.getOption("size")??"normal","aria-label":"\u8868\u683C\u5BC6\u5EA6",onChange:n=>{let l=n.target.value;e.commands?t("setDensity",l):e.api?.updateOptions({size:l})}},[o("option",{value:"compact"},"\u7D27\u51D1"),o("option",{value:"normal"},"\u6807\u51C6"),o("option",{value:"large"},"\u5BBD\u677E")])),a.push(...r.default?.()??[]),o("div",{class:"mach-toolbar__main"},a)},m=()=>{let a=[];return e.selectedCount>0&&a.push(o("button",{type:"button",class:"mach-toolbar__selection",onClick:()=>d("clearSelection")},`\u5DF2\u9009 ${e.selectedCount} \u9879 \xD7`)),c("undoRedo")&&(a.push(i("\u64A4\u9500","\u21B6",()=>{e.commands?t("undo"):e.api?.editing.undo()},e.commands?!e.commands.canUndo():!e.api?.editing.canUndo())),a.push(i("\u91CD\u505A","\u21B7",()=>{e.commands?t("redo"):e.api?.editing.redo()},e.commands?!e.commands.canRedo():!e.api?.editing.canRedo()))),c("export")&&a.push(i("\u5BFC\u51FA CSV","\u21E9",()=>{e.commands&&t("exportCsv",e.exportFilename)},!e.commands)),c("fullscreen")&&a.push(i("\u5168\u5C4F","\u26F6",()=>{t("toggleFullscreen")},!e.commands)),a.push(...r.end?.()??[]),o("div",{class:"mach-toolbar__aside"},a)};return()=>o("div",{class:"mach-toolbar",role:"toolbar","aria-label":"\u8868\u683C\u5DE5\u5177\u680F"},[u(),m()])}});var T={install(e){e.component("MachTableToolbar")||e.component("MachTableToolbar",s)}};var p=T;export{s as MachTableToolbar,T as MachTableUiPlugin,p as default};
1
+ import{defineComponent as s,h as t,onBeforeUnmount as f,onMounted as T,ref as y,watch as v}from"vue";import{createSelectControl as p}from"@agile-team/mach-table/adapter";var M={search:!0,refresh:!0,columns:!0,density:!0,export:!0,undoRedo:!1,fullscreen:!1},g=s({name:"MachTableDensitySelect",props:{value:{type:String,required:!0},onSelectDensity:{type:Function,required:!0}},setup(e){let i=y(null),c=null;return T(()=>{c=p({ariaLabel:"\u8868\u683C\u5BC6\u5EA6",options:[{value:"compact",label:"\u7D27\u51D1"},{value:"normal",label:"\u6807\u51C6"},{value:"large",label:"\u5BBD\u677E"}],value:e.value,classNames:{root:"mach-toolbar__select-control",native:"mach-toolbar__select"},onChange:o=>e.onSelectDensity(o)}),i.value?.appendChild(c.el)}),v(()=>e.value,o=>c?.setValue(o)),f(()=>c?.destroy()),()=>t("div",{ref:i,class:"mach-toolbar__select-host"})}}),u=s({name:"MachTableToolbar",props:{api:{type:Object,default:null},commands:{type:Object,default:null},modelValue:{type:String,default:""},loading:{type:Boolean,default:!1},selectedCount:{type:Number,default:0},searchPlaceholder:{type:String,default:"\u641C\u7D22\u5F53\u524D\u7ED3\u679C"},exportFilename:{type:String,default:"mach-table.csv"},features:{type:Object,default:()=>({})}},emits:["update:modelValue","refresh","clearSelection"],setup(e,{emit:i,slots:c}){let o=a=>e.features[a]??M[a],r=(a,...n)=>{let l=e.commands?Reflect.get(e.commands,a):void 0;return typeof l=="function"&&e.commands?Reflect.apply(l,e.commands,n):void 0},d=(a,n,l,b=!1)=>t("button",{type:"button",class:"mach-toolbar__button",title:a,"aria-label":a,disabled:b,onClick:l},n),m=()=>{let a=[...c.start?.()??[]];return o("search")&&a.push(t("label",{class:"mach-toolbar__search"},[t("span",{class:"mach-sr-only"},e.searchPlaceholder),t("span",{"aria-hidden":"true"},"\u2315"),t("input",{value:e.modelValue,type:"search",placeholder:e.searchPlaceholder,onInput:n=>{let l=n.target.value;i("update:modelValue",l),e.commands?r("search",l||null):e.api?.filtering.setQuickText(l||null)}})])),o("refresh")&&a.push(d("\u5237\u65B0",e.loading?"\u2026":"\u21BB",()=>{i("refresh"),e.commands?r("refresh"):e.api?.rows.isRemote()?e.api.rows.reload():e.api?.view.refreshCells()},e.loading)),o("columns")&&a.push(d("\u5217\u8BBE\u7F6E","\u2637",n=>{let l=n.currentTarget;l instanceof HTMLElement&&(e.commands?r("openColumns",l):e.api?.columns.openWorkbench(l))})),o("density")&&a.push(t(g,{value:e.api?.getOption("size")??"normal",onSelectDensity:n=>{e.commands?r("setDensity",n):e.api?.updateOptions({size:n})}})),a.push(...c.default?.()??[]),t("div",{class:"mach-toolbar__main"},a)},h=()=>{let a=[];return e.selectedCount>0&&a.push(t("button",{type:"button",class:"mach-toolbar__selection",onClick:()=>i("clearSelection")},`\u5DF2\u9009 ${e.selectedCount} \u9879 \xD7`)),o("undoRedo")&&(a.push(d("\u64A4\u9500","\u21B6",()=>{e.commands?r("undo"):e.api?.editing.undo()},e.commands?!e.commands.canUndo():!e.api?.editing.canUndo())),a.push(d("\u91CD\u505A","\u21B7",()=>{e.commands?r("redo"):e.api?.editing.redo()},e.commands?!e.commands.canRedo():!e.api?.editing.canRedo()))),o("export")&&a.push(d("\u5BFC\u51FA CSV","\u21E9",()=>{e.commands&&r("exportCsv",e.exportFilename)},!e.commands)),o("fullscreen")&&a.push(d("\u5168\u5C4F","\u26F6",()=>{r("toggleFullscreen")},!e.commands)),a.push(...c.end?.()??[]),t("div",{class:"mach-toolbar__aside"},a)};return()=>t("div",{class:"mach-toolbar",role:"toolbar","aria-label":"\u8868\u683C\u5DE5\u5177\u680F"},[m(),h()])}});var C={install(e){e.component("MachTableToolbar")||e.component("MachTableToolbar",u)}};var V=C;export{u as MachTableToolbar,C as MachTableUiPlugin,V as default};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkEGEQGM3Dcjs = require('./chunk-EGEQGM3D.cjs');var _vue = require('vue');var _machtable = require('@agile-team/mach-table');function j(a,n={}){let p=_vue.shallowRef.call(void 0, []),o=_vue.ref.call(void 0, []),d=_vue.ref.call(void 0, !1),h=_vue.shallowRef.call(void 0, null),v=_vue.shallowRef.call(void 0, null),S=_vue.computed.call(void 0, ()=>o.value.length>0),D=_vue.computed.call(void 0, ()=>[..._nullishCoalesce(_optionalChain([v, 'access', _2 => _2.value, 'optionalAccess', _3 => _3.failures]), () => ([])),..._nullishCoalesce(_optionalChain([v, 'access', _4 => _4.value, 'optionalAccess', _5 => _5.conflicts]), () => ([]))]),C=_vue.computed.call(void 0, ()=>[...new Set(D.value.map(r=>r.rowId))]),w=null,m=()=>{let r=a.api.value;if(!r||r.isDestroyed()){o.value=[],p.value=[];return}o.value=r.editing.getDirtyRowIds(),p.value=r.editing.getChanges()};_vue.watch.call(void 0, a.api,r=>{_optionalChain([w, 'optionalCall', _6 => _6()]),w=null,m(),!(!r||r.isDestroyed())&&(w=r.on("dirtyStateChanged",m))},{immediate:!0});let g=async(r,s)=>{let f=a.api.value;if(!f||f.isDestroyed())throw new Error("[MachTable] Cannot save before the grid is ready.");if(d.value)throw new Error("[MachTable] A save operation is already in progress.");d.value=!0,h.value=null,v.value=null;try{let c=await f.editing.save(r,s);return v.value=c,m(),_optionalChain([n, 'access', _7 => _7.onSaveSuccess, 'optionalCall', _8 => _8(c.saved)]),_optionalChain([n, 'access', _9 => _9.onSaveResult, 'optionalCall', _10 => _10(c)]),c}catch(c){throw h.value=c,_optionalChain([n, 'access', _11 => _11.onSaveError, 'optionalCall', _12 => _12(c)]),c}finally{d.value=!1}},T=async(r,s)=>(await g(r,s)).saved,l=()=>{v.value=null},x=(r,s)=>{let f=v.value,c=_optionalChain([f, 'optionalAccess', _13 => _13.conflicts, 'access', _14 => _14.find, 'call', _15 => _15(b=>b.rowId===r)]),y=a.api.value;return!f||!c||!y||!_machtable.resolveSaveConflict.call(void 0, y,c,s)?!1:(v.value={...f,failures:f.failures,conflicts:f.conflicts.filter(b=>b.rowId!==r)},m(),!0)},z=r=>{let s=_nullishCoalesce(_optionalChain([a, 'access', _16 => _16.api, 'access', _17 => _17.value, 'optionalAccess', _18 => _18.editing, 'access', _19 => _19.rollback, 'call', _20 => _20(r)]), () => (!1));return m(),s},E=r=>{_optionalChain([a, 'access', _21 => _21.api, 'access', _22 => _22.value, 'optionalAccess', _23 => _23.editing, 'access', _24 => _24.markSaved, 'call', _25 => _25(r)]),m()},M=(r,s,f=!1)=>{let c=a.api.value,y=_optionalChain([c, 'optionalAccess', _26 => _26.rows, 'access', _27 => _27.getById, 'call', _28 => _28(r)]);return!c||!y||y.rowIndex<0?!1:(c.view.scrollToRow(y.rowIndex,"middle"),s&&f?c.editing.startCell({rowIndex:y.rowIndex,colId:s}):!0)},I=r=>{if(!S.value)return;let s=_nullishCoalesce(n.beforeUnloadMessage, () => ("\u5B58\u5728\u672A\u4FDD\u5B58\u7684\u8868\u683C\u4FEE\u6539\u3002"));return r.preventDefault(),r.returnValue=s,s};return n.guardBeforeUnload&&typeof window<"u"&&window.addEventListener("beforeunload",I),_vue.onScopeDispose.call(void 0, ()=>{_optionalChain([w, 'optionalCall', _29 => _29()]),w=null,n.guardBeforeUnload&&typeof window<"u"&&window.removeEventListener("beforeunload",I)}),{changes:p,dirtyRowIds:o,dirty:S,saving:d,saveError:h,lastSaveResult:v,saveIssues:D,failedRowIds:C,save:T,saveDetailed:g,clearSaveIssues:l,resolveConflict:x,rollback:z,markSaved:E,reveal:M,refresh:m}}function re(a){return typeof a=="function"?a():_vue.isRef.call(void 0, a)?a.value:a}function W(a,n){return typeof a=="number"&&Number.isFinite(a)&&a>0?Math.floor(a):n}function De(a){return(a instanceof DOMException||typeof a=="object"&&a!=null&&"name"in a)&&a.name==="AbortError"}function X(a){let n=_vue.shallowRef.call(void 0, []),p=_vue.ref.call(void 0, !1),o=_vue.shallowRef.call(void 0, null),d=_vue.ref.call(void 0, W(a.initialPage,1)),h=_vue.ref.call(void 0, W(a.pageSize,20)),v=_vue.ref.call(void 0, 0),S=_vue.shallowRef.call(void 0, []),D=_vue.shallowRef.call(void 0, {}),C=_vue.shallowRef.call(void 0, null),w=_vue.ref.call(void 0, []),m=_vue.shallowRef.call(void 0, []),g=new Set,T=new Set,l=new Map,x=_nullishCoalesce(a.quickFilterText, () => (_vue.ref.call(void 0, null))),z=_nullishCoalesce(a.selectionScope, () => ("preserve")),E=a.mode!=="manual",M=_vue.ref.call(void 0, !1),I=_vue.ref.call(void 0, 0),r=[...new Set((_nullishCoalesce(a.pageSizeOptions, () => ([10,20,50,100]))).map(e=>W(e,0)).filter(Boolean))];r.includes(h.value)||r.push(h.value),r.sort((e,t)=>e-t);let s=null,f=null,c=0,y=null,b=!1,q=!1,B=!1,R=e=>{let t=typeof a.rowKey=="function"?a.rowKey(e):_machtable.getByPath.call(void 0, e,a.rowKey);if(t==null||String(t).length===0)throw new Error(`[MachTable] useMachTableQuery rowKey "${String(a.rowKey)}" returned an empty value.`);return String(t)},P=()=>{B=!0,w.value=M.value?[]:[...g],B=!1;let e=M.value?[...l.keys()]:[...g];m.value=e.flatMap(t=>{let i=l.get(t);return i===void 0||T.has(t)?[]:[i]}),I.value++},L=e=>M.value?!T.has(e):g.has(e),F=()=>{if(!s||s.isDestroyed())return;let e=n.value.filter(t=>L(R(t)));q=!0;try{s.selection.setRows(e,!0)}finally{q=!1}},Z=()=>{c++,_optionalChain([f, 'optionalAccess', _30 => _30.abort, 'call', _31 => _31()]),f=null,y!=null&&clearTimeout(y),y=null,p.value=!1},_=(e,t)=>e.signal.aborted||t!==c,ne=e=>{if(!e||!Array.isArray(e.rows)||!Number.isFinite(e.total)||e.total<0)throw new TypeError("[MachTable] Remote request must resolve to { rows: TData[], total: non-negative number }.")},oe=async(e,t,i)=>{if(_(t,i))return;ne(e);let u=[...e.rows];for(let U of u)R(U);n.value=u,v.value=Math.floor(e.total);for(let U of n.value){let H=R(U);L(H)?l.set(H,U):l.delete(H)}P(),_optionalChain([a, 'access', _32 => _32.onSuccess, 'optionalCall', _33 => _33(e)]),await _vue.nextTick.call(void 0, ),F()},ie=(e,t,i)=>{_(t,i)||De(e)||(o.value=_nullishCoalesce(e, () => (new Error)),_optionalChain([a, 'access', _34 => _34.onError, 'optionalCall', _35 => _35(o.value)]))},k=async()=>{y!=null&&clearTimeout(y),y=null,_optionalChain([f, 'optionalAccess', _36 => _36.abort, 'call', _37 => _37()]);let e=new AbortController;f=e;let t=++c;p.value=!0,o.value=null,a.keepPreviousData===!1&&(n.value=[]);try{let i=await a.request({page:d.value,pageSize:h.value,query:re(a.query),sortModel:S.value.map(u=>({...u})),filterModel:{...D.value},advancedFilterModel:_machtable.normalizeAdvancedFilterModel.call(void 0, C.value),quickFilterText:x.value,signal:e.signal});await oe(i,e,t)}catch(i){ie(i,e,t)}finally{t===c&&(p.value=!1,f===e&&(f=null))}},K=e=>{e&&(d.value=1),y!=null&&clearTimeout(y),f&&(c++,f.abort(),f=null,p.value=!1);let t=Math.max(0,_nullishCoalesce(a.debounceMs, () => (0)));if(t===0){k();return}y=setTimeout(()=>{k()},t)},se=e=>{s=e.api,_vue.nextTick.call(void 0, F)},ue=e=>{b||e.page===d.value&&e.pageSize===h.value||(d.value=e.page,h.value=e.pageSize,E&&k())},ce=e=>{b||(S.value=e.sortModel.map(t=>({...t})),E?K(!0):d.value=1)},de=e=>{if(b)return;D.value={...e.filterModel},C.value=_machtable.normalizeAdvancedFilterModel.call(void 0, e.advancedFilterModel);let t=e.api.filtering.getQuickText();if(x.value!==t){b=!0;try{x.value=t}finally{b=!1}}a.clearSelectionOnQueryChange!==!1&&A(),E?K(!0):d.value=1},fe=e=>{if(q)return;let t=new Set(n.value.map(R)),i=new Set(e.selectedRows.map(R));if(M.value){for(let u of t)i.has(u)?T.delete(u):(T.add(u),l.delete(u));for(let u of e.selectedRows)l.set(R(u),u);P();return}if(z==="page")g.clear(),l.clear();else for(let u of t)g.delete(u),l.delete(u);for(let u of e.selectedRows){let U=R(u);g.add(U),l.set(U,u)}P()},ve=_vue.computed.call(void 0, ()=>({rowData:n.value,loading:p.value,rowKey:R,manualSorting:!0,manualFiltering:!0,advancedFilterModel:C.value,quickFilterText:x.value,error:o.value,overlayErrorTemplate:o.value?()=>_nullishCoalesce(_optionalChain([a, 'access', _38 => _38.errorOverlay, 'optionalCall', _39 => _39({error:o.value,retry:k})]), () => ("Remote request failed. Please retry.")):void 0,overlayNoRowsTemplate:a.emptyOverlay,pagination:{mode:"server",page:d.value,pageSize:h.value,pageSizeOptions:r,total:v.value,showTotal:!0,showPageSizeSelector:!0},onGridReady:se,onPaginationChanged:ue,onSortChanged:ce,onFilterChanged:de,onSelectionChanged:fe})),ge=async(e={})=>{e.resetPage&&(d.value=1),await k()},ye=async()=>{b=!0;try{d.value=1,S.value=[],D.value={},C.value=null,x.value=null,A(),_optionalChain([s, 'optionalAccess', _40 => _40.sorting, 'access', _41 => _41.setModel, 'call', _42 => _42(null)]),_optionalChain([s, 'optionalAccess', _43 => _43.filtering, 'access', _44 => _44.setModel, 'call', _45 => _45(null)]),_optionalChain([s, 'optionalAccess', _46 => _46.filtering, 'access', _47 => _47.setAdvancedModel, 'call', _48 => _48(null)]),_optionalChain([s, 'optionalAccess', _49 => _49.filtering, 'access', _50 => _50.setQuickText, 'call', _51 => _51(null)]),await _vue.nextTick.call(void 0, )}finally{b=!1}await k()},A=()=>{M.value=!1,g.clear(),T.clear(),l.clear(),P(),q=!0;try{_optionalChain([s, 'optionalAccess', _52 => _52.selection, 'access', _53 => _53.clear, 'call', _54 => _54()])}finally{q=!1}},he=()=>{M.value=!0,g.clear(),T.clear(),l.clear();for(let e of n.value)l.set(R(e),e);P(),F()},pe=e=>{g.clear(),T.clear(),l.clear(),M.value=e.mode==="allMatching";let t=e.mode==="allMatching"?e.excludedKeys:e.selectedKeys;for(let i of t.map(String))e.mode==="allMatching"?T.add(i):g.add(i);for(let i of n.value){let u=R(i);L(u)&&l.set(u,i)}P(),F()},Te=_vue.computed.call(void 0, ()=>(I.value,M.value?{mode:"allMatching",excludedKeys:[...T]}:{mode:"explicit",selectedKeys:[...g]}));return _vue.watch.call(void 0, ()=>re(a.query),()=>{a.clearSelectionOnQueryChange!==!1&&A(),E?K(!0):d.value=1},{deep:!0,immediate:E&&a.immediate!==!1}),_vue.watch.call(void 0, x,()=>{b||(a.clearSelectionOnQueryChange!==!1&&A(),E?K(!0):d.value=1)},{flush:"sync"}),_vue.watch.call(void 0, w,e=>{if(B)return;M.value=!1,T.clear();let t=new Set(e.map(String));g.clear();for(let i of t)g.add(i);for(let i of[...l.keys()])t.has(i)||l.delete(i);for(let i of n.value){let u=R(i);t.has(u)&&l.set(u,i)}F(),P()},{deep:!0,flush:"sync"}),_vue.onScopeDispose.call(void 0, ()=>{Z(),s=null}),{rows:n,loading:p,error:o,page:d,pageSize:h,total:v,sortModel:S,filterModel:D,advancedFilterModel:C,selectedKeys:w,selectedRows:m,selectionState:Te,bindings:ve,reload:ge,retry:k,reset:ye,abort:Z,clearSelection:A,selectAllMatching:he,applySelectionState:pe}}function Pe(a={}){let n=_chunkEGEQGM3Dcjs.a.call(void 0, ),p=_vue.ref.call(void 0, _nullishCoalesce(a.initialSearch, () => (""))),o=a.query?X({...a.query,quickFilterText:_nullishCoalesce(a.query.quickFilterText, () => (_vue.computed.call(void 0, ()=>p.value||null)))}):null,d=j(n,a.editing),h=_vue.shallowRef.call(void 0, []),v=null,S=()=>{h.value=_nullishCoalesce(_nullishCoalesce(_optionalChain([o, 'optionalAccess', _55 => _55.selectedRows, 'access', _56 => _56.value]), () => (_optionalChain([n, 'access', _57 => _57.api, 'access', _58 => _58.value, 'optionalAccess', _59 => _59.selection, 'access', _60 => _60.getRows, 'call', _61 => _61()]))), () => ([]))};_vue.watch.call(void 0, n.api,l=>{_optionalChain([v, 'optionalCall', _62 => _62()]),v=null,l&&!l.isDestroyed()&&(v=l.on("selectionChanged",S)),S()},{immediate:!0}),o&&_vue.watch.call(void 0, o.selectedRows,S,{deep:!1});let D=async()=>{if(o)await o.reload();else{let l=n.api.value;_optionalChain([l, 'optionalAccess', _63 => _63.rows, 'access', _64 => _64.isRemote, 'call', _65 => _65()])?await l.rows.reload():_optionalChain([l, 'optionalAccess', _66 => _66.view, 'access', _67 => _67.refreshCells, 'call', _68 => _68()])}},C=_machtable.createMachTableCommands.call(void 0, {getApi:()=>n.api.value,reload:D}),w=_vue.computed.call(void 0, ()=>_nullishCoalesce(_optionalChain([o, 'optionalAccess', _69 => _69.bindings, 'access', _70 => _70.value]), () => ({}))),m=_vue.computed.call(void 0, ()=>{if(!o)return h.value.length;let l=o.selectionState.value;return l.mode==="allMatching"?Math.max(0,o.total.value-l.excludedKeys.length):l.selectedKeys.length}),g=_vue.computed.call(void 0, ()=>_optionalChain([o, 'optionalAccess', _71 => _71.loading, 'access', _72 => _72.value])===!0||d.saving.value),T=_vue.computed.call(void 0, ()=>_nullishCoalesce(_nullishCoalesce(_optionalChain([o, 'optionalAccess', _73 => _73.error, 'access', _74 => _74.value]), () => (d.saveError.value)), () => (null)));return _vue.watch.call(void 0, p,l=>{o||C.search(l||null)}),_vue.onScopeDispose.call(void 0, ()=>{_optionalChain([v, 'optionalCall', _75 => _75()]),v=null}),{table:n,query:o,editing:d,bindings:w,search:p,selectedRows:h,selectedCount:m,busy:g,error:T,commands:C,reload:D}}exports.useMachTableController = Pe; exports.useMachTableEditing = j; exports.useMachTableQuery = X;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkEGEQGM3Dcjs = require('./chunk-EGEQGM3D.cjs');var _vue = require('vue');var _machtable = require('@agile-team/mach-table');function $(e,r={}){let h=_vue.shallowRef.call(void 0, []),o=_vue.ref.call(void 0, []),c=_vue.ref.call(void 0, !1),y=_vue.shallowRef.call(void 0, null),v=_vue.shallowRef.call(void 0, null),M=_vue.computed.call(void 0, ()=>o.value.length>0),E=_vue.computed.call(void 0, ()=>[..._nullishCoalesce(_optionalChain([v, 'access', _2 => _2.value, 'optionalAccess', _3 => _3.failures]), () => ([])),..._nullishCoalesce(_optionalChain([v, 'access', _4 => _4.value, 'optionalAccess', _5 => _5.conflicts]), () => ([]))]),x=_vue.computed.call(void 0, ()=>[...new Set(E.value.map(n=>n.rowId))]),w=null,m=()=>{let n=e.api.value;if(!n||n.isDestroyed()){o.value=[],h.value=[];return}o.value=n.editing.getDirtyRowIds(),h.value=n.editing.getChanges()};_vue.watch.call(void 0, e.api,n=>{_optionalChain([w, 'optionalCall', _6 => _6()]),w=null,m(),!(!n||n.isDestroyed())&&(w=n.on("dirtyStateChanged",m))},{immediate:!0});let g=async(n,s)=>{let f=e.api.value;if(!f||f.isDestroyed())throw new Error("[MachTable] Cannot save before the grid is ready.");if(c.value)throw new Error("[MachTable] A save operation is already in progress.");c.value=!0,y.value=null,v.value=null;try{let d=await f.editing.save(n,s);return v.value=d,m(),_optionalChain([r, 'access', _7 => _7.onSaveSuccess, 'optionalCall', _8 => _8(d.saved)]),_optionalChain([r, 'access', _9 => _9.onSaveResult, 'optionalCall', _10 => _10(d)]),d}catch(d){throw y.value=d,_optionalChain([r, 'access', _11 => _11.onSaveError, 'optionalCall', _12 => _12(d)]),d}finally{c.value=!1}},p=async(n,s)=>(await g(n,s)).saved,t=()=>{v.value=null},R=(n,s)=>{let f=v.value,d=_optionalChain([f, 'optionalAccess', _13 => _13.conflicts, 'access', _14 => _14.find, 'call', _15 => _15(S=>S.rowId===n)]),T=e.api.value;return!f||!d||!T||!_machtable.resolveSaveConflict.call(void 0, T,d,s)?!1:(v.value={...f,failures:f.failures,conflicts:f.conflicts.filter(S=>S.rowId!==n)},m(),!0)},U=n=>{let s=_nullishCoalesce(_optionalChain([e, 'access', _16 => _16.api, 'access', _17 => _17.value, 'optionalAccess', _18 => _18.editing, 'access', _19 => _19.rollback, 'call', _20 => _20(n)]), () => (!1));return m(),s},b=n=>{_optionalChain([e, 'access', _21 => _21.api, 'access', _22 => _22.value, 'optionalAccess', _23 => _23.editing, 'access', _24 => _24.markSaved, 'call', _25 => _25(n)]),m()},D=(n,s,f=!1)=>{let d=e.api.value,T=_optionalChain([d, 'optionalAccess', _26 => _26.rows, 'access', _27 => _27.getById, 'call', _28 => _28(n)]);return!d||!T||T.rowIndex<0?!1:(d.view.scrollToRow(T.rowIndex,"middle"),s&&f?d.editing.startCell({rowIndex:T.rowIndex,colId:s}):!0)},F=n=>{if(!M.value)return;let s=_nullishCoalesce(r.beforeUnloadMessage, () => ("\u5B58\u5728\u672A\u4FDD\u5B58\u7684\u8868\u683C\u4FEE\u6539\u3002"));return n.preventDefault(),n.returnValue=s,s};return r.guardBeforeUnload&&typeof window<"u"&&window.addEventListener("beforeunload",F),_vue.onScopeDispose.call(void 0, ()=>{_optionalChain([w, 'optionalCall', _29 => _29()]),w=null,r.guardBeforeUnload&&typeof window<"u"&&window.removeEventListener("beforeunload",F)}),{changes:h,dirtyRowIds:o,dirty:M,saving:c,saveError:y,lastSaveResult:v,saveIssues:E,failedRowIds:x,save:p,saveDetailed:g,clearSaveIssues:t,resolveConflict:R,rollback:U,markSaved:b,reveal:D,refresh:m}}function re(e){return typeof e=="function"?e():_vue.isRef.call(void 0, e)?e.value:e}function X(e,r){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):r}function Ce(e){return(e instanceof DOMException||typeof e=="object"&&e!=null&&"name"in e)&&e.name==="AbortError"}function Y(e){let r=_vue.shallowRef.call(void 0, []),h=_vue.ref.call(void 0, !1),o=_vue.shallowRef.call(void 0, null),c=_vue.ref.call(void 0, X(e.initialPage,1)),y=_vue.ref.call(void 0, X(e.pageSize,20)),v=_vue.ref.call(void 0, 0),M=_vue.shallowRef.call(void 0, []),E=_vue.shallowRef.call(void 0, {}),x=_vue.shallowRef.call(void 0, null),w=_vue.ref.call(void 0, []),m=_vue.shallowRef.call(void 0, []),g=new Set,p=new Set,t=new Map,R=_nullishCoalesce(e.quickFilterText, () => (_vue.ref.call(void 0, null))),U=_nullishCoalesce(e.selectionScope, () => ("preserve")),b=e.mode!=="manual",D=_vue.ref.call(void 0, !1),F=_vue.ref.call(void 0, 0),n=[...new Set((_nullishCoalesce(e.pageSizeOptions, () => ([10,20,50,100]))).map(a=>X(a,0)).filter(Boolean))];n.includes(y.value)||n.push(y.value),n.sort((a,l)=>a-l);let s=null,f=null,d=0,T=null,S=!1,I=!1,V=!1,C=a=>{let l=typeof e.rowKey=="function"?e.rowKey(a):_machtable.getByPath.call(void 0, a,e.rowKey);if(l==null||String(l).length===0)throw new Error(`[MachTable] useMachTableQuery rowKey "${String(e.rowKey)}" returned an empty value.`);return String(l)},k=()=>{V=!0,w.value=D.value?[]:[...g],V=!1;let a=D.value?[...t.keys()]:[...g];m.value=a.flatMap(l=>{let i=t.get(l);return i===void 0||p.has(l)?[]:[i]}),F.value++},L=a=>D.value?!p.has(a):g.has(a),G=()=>{if(!s||s.isDestroyed())return;let a=r.value.filter(l=>L(C(l)));I=!0;try{s.selection.setRows(a,!0)}finally{I=!1}},_=()=>{d++,_optionalChain([f, 'optionalAccess', _30 => _30.abort, 'call', _31 => _31()]),f=null,T!=null&&clearTimeout(T),T=null,h.value=!1},ee=(a,l)=>a.signal.aborted||l!==d,oe=a=>{if(!a||!Array.isArray(a.rows)||!Number.isFinite(a.total)||a.total<0)throw new TypeError("[MachTable] Remote request must resolve to { rows: TData[], total: non-negative number }.")},ie=async(a,l,i)=>{if(ee(l,i))return;oe(a);let u=[...a.rows];for(let O of u)C(O);r.value=u,v.value=Math.floor(a.total);for(let O of r.value){let H=C(O);L(H)?t.set(H,O):t.delete(H)}k(),_optionalChain([e, 'access', _32 => _32.onSuccess, 'optionalCall', _33 => _33(a)]),await _vue.nextTick.call(void 0, ),G()},se=(a,l,i)=>{ee(l,i)||Ce(a)||(o.value=_nullishCoalesce(a, () => (new Error)),_optionalChain([e, 'access', _34 => _34.onError, 'optionalCall', _35 => _35(o.value)]))},Q=async()=>{T!=null&&clearTimeout(T),T=null,_optionalChain([f, 'optionalAccess', _36 => _36.abort, 'call', _37 => _37()]);let a=new AbortController;f=a;let l=++d;h.value=!0,o.value=null,e.keepPreviousData===!1&&(r.value=[]);try{let i=await e.request({page:c.value,pageSize:y.value,query:re(e.query),sortModel:M.value.map(u=>({...u})),filterModel:{...E.value},advancedFilterModel:_machtable.normalizeAdvancedFilterModel.call(void 0, x.value),quickFilterText:R.value,signal:a.signal});await ie(i,a,l)}catch(i){se(i,a,l)}finally{l===d&&(h.value=!1,f===a&&(f=null))}},K=a=>{a&&(c.value=1),T!=null&&clearTimeout(T),f&&(d++,f.abort(),f=null,h.value=!1);let l=Math.max(0,_nullishCoalesce(e.debounceMs, () => (0)));if(l===0){Q();return}T=setTimeout(()=>{Q()},l)},ue=a=>{s=a.api,_vue.nextTick.call(void 0, G)},de=a=>{S||a.page===c.value&&a.pageSize===y.value||(c.value=a.page,y.value=a.pageSize,b&&Q())},ce=a=>{S||(M.value=a.sortModel.map(l=>({...l})),b?K(!0):c.value=1)},fe=a=>{if(S)return;E.value={...a.filterModel},x.value=_machtable.normalizeAdvancedFilterModel.call(void 0, a.advancedFilterModel);let l=a.api.filtering.getQuickText();if(R.value!==l){S=!0;try{R.value=l}finally{S=!1}}e.clearSelectionOnQueryChange!==!1&&A(),b?K(!0):c.value=1},ve=a=>{if(I)return;let l=new Set(r.value.map(C)),i=new Set(a.selectedRows.map(C));if(D.value){for(let u of l)i.has(u)?p.delete(u):(p.add(u),t.delete(u));for(let u of a.selectedRows)t.set(C(u),u);k();return}if(U==="page")g.clear(),t.clear();else for(let u of l)g.delete(u),t.delete(u);for(let u of a.selectedRows){let O=C(u);g.add(O),t.set(O,u)}k()},ge=_vue.computed.call(void 0, ()=>({rowData:r.value,loading:h.value,rowKey:C,manualSorting:!0,manualFiltering:!0,advancedFilterModel:x.value,quickFilterText:R.value,error:o.value,overlayErrorTemplate:o.value?()=>_nullishCoalesce(_optionalChain([e, 'access', _38 => _38.errorOverlay, 'optionalCall', _39 => _39({error:o.value,retry:Q})]), () => ("Remote request failed. Please retry.")):void 0,overlayNoRowsTemplate:e.emptyOverlay,pagination:{mode:"server",page:c.value,pageSize:y.value,pageSizeOptions:n,total:v.value,showTotal:!0,showPageSizeSelector:!0},onGridReady:ue,onPaginationChanged:de,onSortChanged:ce,onFilterChanged:fe,onSelectionChanged:ve})),Te=async(a={})=>{a.resetPage&&(c.value=1),await Q()},he=async()=>{S=!0;try{c.value=1,M.value=[],E.value={},x.value=null,R.value=null,A(),_optionalChain([s, 'optionalAccess', _40 => _40.sorting, 'access', _41 => _41.setModel, 'call', _42 => _42(null)]),_optionalChain([s, 'optionalAccess', _43 => _43.filtering, 'access', _44 => _44.setModel, 'call', _45 => _45(null)]),_optionalChain([s, 'optionalAccess', _46 => _46.filtering, 'access', _47 => _47.setAdvancedModel, 'call', _48 => _48(null)]),_optionalChain([s, 'optionalAccess', _49 => _49.filtering, 'access', _50 => _50.setQuickText, 'call', _51 => _51(null)]),await _vue.nextTick.call(void 0, )}finally{S=!1}await Q()},A=()=>{D.value=!1,g.clear(),p.clear(),t.clear(),k(),I=!0;try{_optionalChain([s, 'optionalAccess', _52 => _52.selection, 'access', _53 => _53.clear, 'call', _54 => _54()])}finally{I=!1}},ye=()=>{D.value=!0,g.clear(),p.clear(),t.clear();for(let a of r.value)t.set(C(a),a);k(),G()},pe=a=>{g.clear(),p.clear(),t.clear(),D.value=a.mode==="allMatching";let l=a.mode==="allMatching"?a.excludedKeys:a.selectedKeys;for(let i of l.map(String))a.mode==="allMatching"?p.add(i):g.add(i);for(let i of r.value){let u=C(i);L(u)&&t.set(u,i)}k(),G()},me=_vue.computed.call(void 0, ()=>(F.value,D.value?{mode:"allMatching",excludedKeys:[...p]}:{mode:"explicit",selectedKeys:[...g]}));return _vue.watch.call(void 0, ()=>re(e.query),()=>{e.clearSelectionOnQueryChange!==!1&&A(),b?K(!0):c.value=1},{deep:!0,immediate:b&&e.immediate!==!1}),_vue.watch.call(void 0, R,()=>{S||(e.clearSelectionOnQueryChange!==!1&&A(),b?K(!0):c.value=1)},{flush:"sync"}),_vue.watch.call(void 0, w,a=>{if(V)return;D.value=!1,p.clear();let l=new Set(a.map(String));g.clear();for(let i of l)g.add(i);for(let i of[...t.keys()])l.has(i)||t.delete(i);for(let i of r.value){let u=C(i);l.has(u)&&t.set(u,i)}G(),k()},{deep:!0,flush:"sync"}),_vue.onScopeDispose.call(void 0, ()=>{_(),s=null}),{rows:r,loading:h,error:o,page:c,pageSize:y,total:v,sortModel:M,filterModel:E,advancedFilterModel:x,selectedKeys:w,selectedRows:m,selectionState:me,bindings:ge,reload:Te,retry:Q,reset:he,abort:_,clearSelection:A,selectAllMatching:ye,applySelectionState:pe}}function Oe(e={}){let r=_chunkEGEQGM3Dcjs.a.call(void 0, ),h=_vue.ref.call(void 0, _nullishCoalesce(_nullishCoalesce(e.initialSearch, () => (_optionalChain([e, 'access', _55 => _55.config, 'optionalAccess', _56 => _56.quickFilterText]))), () => (""))),o=e.query?Y({...e.query,quickFilterText:_nullishCoalesce(e.query.quickFilterText, () => (_vue.computed.call(void 0, ()=>h.value||null)))}):null,c=$(r,e.editing),y=_vue.shallowRef.call(void 0, []),v=null,M=()=>{y.value=_nullishCoalesce(_nullishCoalesce(_optionalChain([o, 'optionalAccess', _57 => _57.selectedRows, 'access', _58 => _58.value]), () => (_optionalChain([r, 'access', _59 => _59.api, 'access', _60 => _60.value, 'optionalAccess', _61 => _61.selection, 'access', _62 => _62.getRows, 'call', _63 => _63()]))), () => ([]))};_vue.watch.call(void 0, r.api,t=>{_optionalChain([v, 'optionalCall', _64 => _64()]),v=null,t&&!t.isDestroyed()&&(v=t.on("selectionChanged",M)),M()},{immediate:!0}),o&&_vue.watch.call(void 0, o.selectedRows,M,{deep:!1});let E=async()=>{if(o)await o.reload();else{let t=r.api.value;_optionalChain([t, 'optionalAccess', _65 => _65.rows, 'access', _66 => _66.isRemote, 'call', _67 => _67()])?await t.rows.reload():_optionalChain([t, 'optionalAccess', _68 => _68.view, 'access', _69 => _69.refreshCells, 'call', _70 => _70()])}},x=_machtable.createMachTableCommands.call(void 0, {getApi:()=>r.api.value,reload:E}),w=_vue.computed.call(void 0, ()=>{let t={...e.config,..._nullishCoalesce(_optionalChain([o, 'optionalAccess', _71 => _71.bindings, 'access', _72 => _72.value]), () => ({})),quickFilterText:h.value||null},R=z(e.loading),U=z(e.theme),b=z(e.editMode);return R!==void 0&&(t.loading=R),U!==void 0&&(t.theme=U),b!==void 0&&(t.editType=b==="row"?"fullRow":"cell",t.editableIndicator=b==="cell"?"hover":"none"),e.onCellValueChanged&&(t.onCellValueChanged=e.onCellValueChanged),e.onRowEditingStopped&&(t.onRowEditingStopped=e.onRowEditingStopped),e.onGridError&&(t.onGridError=e.onGridError),t}),m=_vue.computed.call(void 0, ()=>{if(!o)return y.value.length;let t=o.selectionState.value;return t.mode==="allMatching"?Math.max(0,o.total.value-t.excludedKeys.length):t.selectedKeys.length}),g=_vue.computed.call(void 0, ()=>z(e.loading)===!0||_optionalChain([o, 'optionalAccess', _73 => _73.loading, 'access', _74 => _74.value])===!0||c.saving.value),p=_vue.computed.call(void 0, ()=>_nullishCoalesce(_nullishCoalesce(_optionalChain([o, 'optionalAccess', _75 => _75.error, 'access', _76 => _76.value]), () => (c.saveError.value)), () => (null)));return _vue.watch.call(void 0, h,t=>{o||x.search(t||null)}),_vue.onScopeDispose.call(void 0, ()=>{_optionalChain([v, 'optionalCall', _77 => _77()]),v=null}),{table:r,query:o,editing:c,bindings:w,search:h,selectedRows:y,selectedCount:m,busy:g,error:p,commands:x,reload:E}}function z(e){return typeof e=="function"?e():_vue.isRef.call(void 0, e)?e.value:e}exports.useMachTableController = Oe; exports.useMachTableEditing = $; exports.useMachTableQuery = Y;
@@ -1,7 +1,7 @@
1
1
  import { ShallowRef, Ref, ComputedRef } from 'vue';
2
2
  import { GridChange, GridBatchSaveResult, SaveChangeIssue, SaveChangeConflict, SaveChangesHandler, SortModel, FilterModel, AdvancedFilterModel, OverlayContent, OverlayTemplate, GridOptions, MachTableCommands } from '@agile-team/mach-table';
3
3
  import { U as UseMachTableReturn } from './useMachTable-YH4Xj6dS.cjs';
4
- import './MachTable-jS92BIXm.cjs';
4
+ import { c as MachTableVueProps } from './MachTable-jS92BIXm.cjs';
5
5
  import '@agile-team/mach-table/adapter';
6
6
 
7
7
  interface UseMachTableEditingOptions<TData = any> {
@@ -114,17 +114,29 @@ interface UseMachTableQueryReturn<TData> {
114
114
  */
115
115
  declare function useMachTableQuery<TData, TQuery = Record<string, unknown>>(options: UseMachTableQueryOptions<TData, TQuery>): UseMachTableQueryReturn<TData>;
116
116
 
117
+ type MachTableBindingSource<T> = T | Readonly<{
118
+ value: T;
119
+ }> | (() => T);
120
+ type MachTableEditMode = "none" | "cell" | "row";
117
121
  interface UseMachTableControllerOptions<TData, TQuery = Record<string, unknown>> {
122
+ /** Stable table props. Dynamic state below is bridged into `bindings` automatically. */
123
+ config?: MachTableVueProps<TData>;
118
124
  /** Omit for local rowData; provide for a complete remote table workflow. */
119
125
  query?: UseMachTableQueryOptions<TData, TQuery>;
120
126
  editing?: UseMachTableEditingOptions<TData>;
121
127
  initialSearch?: string;
128
+ loading?: MachTableBindingSource<boolean>;
129
+ theme?: MachTableBindingSource<NonNullable<GridOptions<TData>["theme"]>>;
130
+ editMode?: MachTableBindingSource<MachTableEditMode>;
131
+ onCellValueChanged?: GridOptions<TData>["onCellValueChanged"];
132
+ onRowEditingStopped?: GridOptions<TData>["onRowEditingStopped"];
133
+ onGridError?: GridOptions<TData>["onGridError"];
122
134
  }
123
135
  interface UseMachTableControllerReturn<TData> {
124
136
  table: UseMachTableReturn<TData>;
125
137
  query: UseMachTableQueryReturn<TData> | null;
126
138
  editing: UseMachTableEditingReturn<TData>;
127
- bindings: ComputedRef<GridOptions<TData>>;
139
+ bindings: ComputedRef<MachTableVueProps<TData>>;
128
140
  search: Ref<string>;
129
141
  selectedRows: ShallowRef<TData[]>;
130
142
  selectedCount: ComputedRef<number>;
@@ -136,4 +148,4 @@ interface UseMachTableControllerReturn<TData> {
136
148
  /** One cohesive controller for API readiness, query, selection, editing and toolbar commands. */
137
149
  declare function useMachTableController<TData, TQuery = Record<string, unknown>>(options?: UseMachTableControllerOptions<TData, TQuery>): UseMachTableControllerReturn<TData>;
138
150
 
139
- export { type MachTablePageRequest, type MachTablePageResult, type MachTableQuerySource, type MachTableRemoteSelectionState, type UseMachTableControllerOptions, type UseMachTableControllerReturn, type UseMachTableEditingOptions, type UseMachTableEditingReturn, type UseMachTableQueryOptions, type UseMachTableQueryReturn, useMachTableController, useMachTableEditing, useMachTableQuery };
151
+ export { type MachTableBindingSource, type MachTableEditMode, type MachTablePageRequest, type MachTablePageResult, type MachTableQuerySource, type MachTableRemoteSelectionState, type UseMachTableControllerOptions, type UseMachTableControllerReturn, type UseMachTableEditingOptions, type UseMachTableEditingReturn, type UseMachTableQueryOptions, type UseMachTableQueryReturn, useMachTableController, useMachTableEditing, useMachTableQuery };
@@ -1,7 +1,7 @@
1
1
  import { ShallowRef, Ref, ComputedRef } from 'vue';
2
2
  import { GridChange, GridBatchSaveResult, SaveChangeIssue, SaveChangeConflict, SaveChangesHandler, SortModel, FilterModel, AdvancedFilterModel, OverlayContent, OverlayTemplate, GridOptions, MachTableCommands } from '@agile-team/mach-table';
3
3
  import { U as UseMachTableReturn } from './useMachTable-DXGZxgIJ.js';
4
- import './MachTable-jS92BIXm.js';
4
+ import { c as MachTableVueProps } from './MachTable-jS92BIXm.js';
5
5
  import '@agile-team/mach-table/adapter';
6
6
 
7
7
  interface UseMachTableEditingOptions<TData = any> {
@@ -114,17 +114,29 @@ interface UseMachTableQueryReturn<TData> {
114
114
  */
115
115
  declare function useMachTableQuery<TData, TQuery = Record<string, unknown>>(options: UseMachTableQueryOptions<TData, TQuery>): UseMachTableQueryReturn<TData>;
116
116
 
117
+ type MachTableBindingSource<T> = T | Readonly<{
118
+ value: T;
119
+ }> | (() => T);
120
+ type MachTableEditMode = "none" | "cell" | "row";
117
121
  interface UseMachTableControllerOptions<TData, TQuery = Record<string, unknown>> {
122
+ /** Stable table props. Dynamic state below is bridged into `bindings` automatically. */
123
+ config?: MachTableVueProps<TData>;
118
124
  /** Omit for local rowData; provide for a complete remote table workflow. */
119
125
  query?: UseMachTableQueryOptions<TData, TQuery>;
120
126
  editing?: UseMachTableEditingOptions<TData>;
121
127
  initialSearch?: string;
128
+ loading?: MachTableBindingSource<boolean>;
129
+ theme?: MachTableBindingSource<NonNullable<GridOptions<TData>["theme"]>>;
130
+ editMode?: MachTableBindingSource<MachTableEditMode>;
131
+ onCellValueChanged?: GridOptions<TData>["onCellValueChanged"];
132
+ onRowEditingStopped?: GridOptions<TData>["onRowEditingStopped"];
133
+ onGridError?: GridOptions<TData>["onGridError"];
122
134
  }
123
135
  interface UseMachTableControllerReturn<TData> {
124
136
  table: UseMachTableReturn<TData>;
125
137
  query: UseMachTableQueryReturn<TData> | null;
126
138
  editing: UseMachTableEditingReturn<TData>;
127
- bindings: ComputedRef<GridOptions<TData>>;
139
+ bindings: ComputedRef<MachTableVueProps<TData>>;
128
140
  search: Ref<string>;
129
141
  selectedRows: ShallowRef<TData[]>;
130
142
  selectedCount: ComputedRef<number>;
@@ -136,4 +148,4 @@ interface UseMachTableControllerReturn<TData> {
136
148
  /** One cohesive controller for API readiness, query, selection, editing and toolbar commands. */
137
149
  declare function useMachTableController<TData, TQuery = Record<string, unknown>>(options?: UseMachTableControllerOptions<TData, TQuery>): UseMachTableControllerReturn<TData>;
138
150
 
139
- export { type MachTablePageRequest, type MachTablePageResult, type MachTableQuerySource, type MachTableRemoteSelectionState, type UseMachTableControllerOptions, type UseMachTableControllerReturn, type UseMachTableEditingOptions, type UseMachTableEditingReturn, type UseMachTableQueryOptions, type UseMachTableQueryReturn, useMachTableController, useMachTableEditing, useMachTableQuery };
151
+ export { type MachTableBindingSource, type MachTableEditMode, type MachTablePageRequest, type MachTablePageResult, type MachTableQuerySource, type MachTableRemoteSelectionState, type UseMachTableControllerOptions, type UseMachTableControllerReturn, type UseMachTableEditingOptions, type UseMachTableEditingReturn, type UseMachTableQueryOptions, type UseMachTableQueryReturn, useMachTableController, useMachTableEditing, useMachTableQuery };
package/dist/workflows.js CHANGED
@@ -1 +1 @@
1
- import{a as ee}from"./chunk-YTEW56VQ.js";import{computed as N,onScopeDispose as me,ref as ae,shallowRef as V,watch as be}from"vue";import{resolveSaveConflict as Se}from"@agile-team/mach-table";function j(a,n={}){let p=V([]),o=ae([]),d=ae(!1),h=V(null),v=V(null),S=N(()=>o.value.length>0),D=N(()=>[...v.value?.failures??[],...v.value?.conflicts??[]]),C=N(()=>[...new Set(D.value.map(r=>r.rowId))]),w=null,m=()=>{let r=a.api.value;if(!r||r.isDestroyed()){o.value=[],p.value=[];return}o.value=r.editing.getDirtyRowIds(),p.value=r.editing.getChanges()};be(a.api,r=>{w?.(),w=null,m(),!(!r||r.isDestroyed())&&(w=r.on("dirtyStateChanged",m))},{immediate:!0});let g=async(r,s)=>{let f=a.api.value;if(!f||f.isDestroyed())throw new Error("[MachTable] Cannot save before the grid is ready.");if(d.value)throw new Error("[MachTable] A save operation is already in progress.");d.value=!0,h.value=null,v.value=null;try{let c=await f.editing.save(r,s);return v.value=c,m(),n.onSaveSuccess?.(c.saved),n.onSaveResult?.(c),c}catch(c){throw h.value=c,n.onSaveError?.(c),c}finally{d.value=!1}},T=async(r,s)=>(await g(r,s)).saved,l=()=>{v.value=null},x=(r,s)=>{let f=v.value,c=f?.conflicts.find(b=>b.rowId===r),y=a.api.value;return!f||!c||!y||!Se(y,c,s)?!1:(v.value={...f,failures:f.failures,conflicts:f.conflicts.filter(b=>b.rowId!==r)},m(),!0)},z=r=>{let s=a.api.value?.editing.rollback(r)??!1;return m(),s},E=r=>{a.api.value?.editing.markSaved(r),m()},M=(r,s,f=!1)=>{let c=a.api.value,y=c?.rows.getById(r);return!c||!y||y.rowIndex<0?!1:(c.view.scrollToRow(y.rowIndex,"middle"),s&&f?c.editing.startCell({rowIndex:y.rowIndex,colId:s}):!0)},I=r=>{if(!S.value)return;let s=n.beforeUnloadMessage??"\u5B58\u5728\u672A\u4FDD\u5B58\u7684\u8868\u683C\u4FEE\u6539\u3002";return r.preventDefault(),r.returnValue=s,s};return n.guardBeforeUnload&&typeof window<"u"&&window.addEventListener("beforeunload",I),me(()=>{w?.(),w=null,n.guardBeforeUnload&&typeof window<"u"&&window.removeEventListener("beforeunload",I)}),{changes:p,dirtyRowIds:o,dirty:S,saving:d,saveError:h,lastSaveResult:v,saveIssues:D,failedRowIds:C,save:T,saveDetailed:g,clearSaveIssues:l,resolveConflict:x,rollback:z,markSaved:E,reveal:M,refresh:m}}import{computed as te,isRef as we,nextTick as $,onScopeDispose as Me,ref as Q,shallowRef as O,watch as J}from"vue";import{getByPath as Re,normalizeAdvancedFilterModel as le}from"@agile-team/mach-table";function re(a){return typeof a=="function"?a():we(a)?a.value:a}function W(a,n){return typeof a=="number"&&Number.isFinite(a)&&a>0?Math.floor(a):n}function De(a){return(a instanceof DOMException||typeof a=="object"&&a!=null&&"name"in a)&&a.name==="AbortError"}function X(a){let n=O([]),p=Q(!1),o=O(null),d=Q(W(a.initialPage,1)),h=Q(W(a.pageSize,20)),v=Q(0),S=O([]),D=O({}),C=O(null),w=Q([]),m=O([]),g=new Set,T=new Set,l=new Map,x=a.quickFilterText??Q(null),z=a.selectionScope??"preserve",E=a.mode!=="manual",M=Q(!1),I=Q(0),r=[...new Set((a.pageSizeOptions??[10,20,50,100]).map(e=>W(e,0)).filter(Boolean))];r.includes(h.value)||r.push(h.value),r.sort((e,t)=>e-t);let s=null,f=null,c=0,y=null,b=!1,q=!1,B=!1,R=e=>{let t=typeof a.rowKey=="function"?a.rowKey(e):Re(e,a.rowKey);if(t==null||String(t).length===0)throw new Error(`[MachTable] useMachTableQuery rowKey "${String(a.rowKey)}" returned an empty value.`);return String(t)},P=()=>{B=!0,w.value=M.value?[]:[...g],B=!1;let e=M.value?[...l.keys()]:[...g];m.value=e.flatMap(t=>{let i=l.get(t);return i===void 0||T.has(t)?[]:[i]}),I.value++},L=e=>M.value?!T.has(e):g.has(e),F=()=>{if(!s||s.isDestroyed())return;let e=n.value.filter(t=>L(R(t)));q=!0;try{s.selection.setRows(e,!0)}finally{q=!1}},Z=()=>{c++,f?.abort(),f=null,y!=null&&clearTimeout(y),y=null,p.value=!1},_=(e,t)=>e.signal.aborted||t!==c,ne=e=>{if(!e||!Array.isArray(e.rows)||!Number.isFinite(e.total)||e.total<0)throw new TypeError("[MachTable] Remote request must resolve to { rows: TData[], total: non-negative number }.")},oe=async(e,t,i)=>{if(_(t,i))return;ne(e);let u=[...e.rows];for(let U of u)R(U);n.value=u,v.value=Math.floor(e.total);for(let U of n.value){let H=R(U);L(H)?l.set(H,U):l.delete(H)}P(),a.onSuccess?.(e),await $(),F()},ie=(e,t,i)=>{_(t,i)||De(e)||(o.value=e??new Error,a.onError?.(o.value))},k=async()=>{y!=null&&clearTimeout(y),y=null,f?.abort();let e=new AbortController;f=e;let t=++c;p.value=!0,o.value=null,a.keepPreviousData===!1&&(n.value=[]);try{let i=await a.request({page:d.value,pageSize:h.value,query:re(a.query),sortModel:S.value.map(u=>({...u})),filterModel:{...D.value},advancedFilterModel:le(C.value),quickFilterText:x.value,signal:e.signal});await oe(i,e,t)}catch(i){ie(i,e,t)}finally{t===c&&(p.value=!1,f===e&&(f=null))}},K=e=>{e&&(d.value=1),y!=null&&clearTimeout(y),f&&(c++,f.abort(),f=null,p.value=!1);let t=Math.max(0,a.debounceMs??0);if(t===0){k();return}y=setTimeout(()=>{k()},t)},se=e=>{s=e.api,$(F)},ue=e=>{b||e.page===d.value&&e.pageSize===h.value||(d.value=e.page,h.value=e.pageSize,E&&k())},ce=e=>{b||(S.value=e.sortModel.map(t=>({...t})),E?K(!0):d.value=1)},de=e=>{if(b)return;D.value={...e.filterModel},C.value=le(e.advancedFilterModel);let t=e.api.filtering.getQuickText();if(x.value!==t){b=!0;try{x.value=t}finally{b=!1}}a.clearSelectionOnQueryChange!==!1&&A(),E?K(!0):d.value=1},fe=e=>{if(q)return;let t=new Set(n.value.map(R)),i=new Set(e.selectedRows.map(R));if(M.value){for(let u of t)i.has(u)?T.delete(u):(T.add(u),l.delete(u));for(let u of e.selectedRows)l.set(R(u),u);P();return}if(z==="page")g.clear(),l.clear();else for(let u of t)g.delete(u),l.delete(u);for(let u of e.selectedRows){let U=R(u);g.add(U),l.set(U,u)}P()},ve=te(()=>({rowData:n.value,loading:p.value,rowKey:R,manualSorting:!0,manualFiltering:!0,advancedFilterModel:C.value,quickFilterText:x.value,error:o.value,overlayErrorTemplate:o.value?()=>a.errorOverlay?.({error:o.value,retry:k})??"Remote request failed. Please retry.":void 0,overlayNoRowsTemplate:a.emptyOverlay,pagination:{mode:"server",page:d.value,pageSize:h.value,pageSizeOptions:r,total:v.value,showTotal:!0,showPageSizeSelector:!0},onGridReady:se,onPaginationChanged:ue,onSortChanged:ce,onFilterChanged:de,onSelectionChanged:fe})),ge=async(e={})=>{e.resetPage&&(d.value=1),await k()},ye=async()=>{b=!0;try{d.value=1,S.value=[],D.value={},C.value=null,x.value=null,A(),s?.sorting.setModel(null),s?.filtering.setModel(null),s?.filtering.setAdvancedModel(null),s?.filtering.setQuickText(null),await $()}finally{b=!1}await k()},A=()=>{M.value=!1,g.clear(),T.clear(),l.clear(),P(),q=!0;try{s?.selection.clear()}finally{q=!1}},he=()=>{M.value=!0,g.clear(),T.clear(),l.clear();for(let e of n.value)l.set(R(e),e);P(),F()},pe=e=>{g.clear(),T.clear(),l.clear(),M.value=e.mode==="allMatching";let t=e.mode==="allMatching"?e.excludedKeys:e.selectedKeys;for(let i of t.map(String))e.mode==="allMatching"?T.add(i):g.add(i);for(let i of n.value){let u=R(i);L(u)&&l.set(u,i)}P(),F()},Te=te(()=>(I.value,M.value?{mode:"allMatching",excludedKeys:[...T]}:{mode:"explicit",selectedKeys:[...g]}));return J(()=>re(a.query),()=>{a.clearSelectionOnQueryChange!==!1&&A(),E?K(!0):d.value=1},{deep:!0,immediate:E&&a.immediate!==!1}),J(x,()=>{b||(a.clearSelectionOnQueryChange!==!1&&A(),E?K(!0):d.value=1)},{flush:"sync"}),J(w,e=>{if(B)return;M.value=!1,T.clear();let t=new Set(e.map(String));g.clear();for(let i of t)g.add(i);for(let i of[...l.keys()])t.has(i)||l.delete(i);for(let i of n.value){let u=R(i);t.has(u)&&l.set(u,i)}F(),P()},{deep:!0,flush:"sync"}),Me(()=>{Z(),s=null}),{rows:n,loading:p,error:o,page:d,pageSize:h,total:v,sortModel:S,filterModel:D,advancedFilterModel:C,selectedKeys:w,selectedRows:m,selectionState:Te,bindings:ve,reload:ge,retry:k,reset:ye,abort:Z,clearSelection:A,selectAllMatching:he,applySelectionState:pe}}import{computed as G,onScopeDispose as Ce,ref as xe,shallowRef as Ee,watch as Y}from"vue";import{createMachTableCommands as Qe}from"@agile-team/mach-table";function Pe(a={}){let n=ee(),p=xe(a.initialSearch??""),o=a.query?X({...a.query,quickFilterText:a.query.quickFilterText??G(()=>p.value||null)}):null,d=j(n,a.editing),h=Ee([]),v=null,S=()=>{h.value=o?.selectedRows.value??n.api.value?.selection.getRows()??[]};Y(n.api,l=>{v?.(),v=null,l&&!l.isDestroyed()&&(v=l.on("selectionChanged",S)),S()},{immediate:!0}),o&&Y(o.selectedRows,S,{deep:!1});let D=async()=>{if(o)await o.reload();else{let l=n.api.value;l?.rows.isRemote()?await l.rows.reload():l?.view.refreshCells()}},C=Qe({getApi:()=>n.api.value,reload:D}),w=G(()=>o?.bindings.value??{}),m=G(()=>{if(!o)return h.value.length;let l=o.selectionState.value;return l.mode==="allMatching"?Math.max(0,o.total.value-l.excludedKeys.length):l.selectedKeys.length}),g=G(()=>o?.loading.value===!0||d.saving.value),T=G(()=>o?.error.value??d.saveError.value??null);return Y(p,l=>{o||C.search(l||null)}),Ce(()=>{v?.(),v=null}),{table:n,query:o,editing:d,bindings:w,search:p,selectedRows:h,selectedCount:m,busy:g,error:T,commands:C,reload:D}}export{Pe as useMachTableController,j as useMachTableEditing,X as useMachTableQuery};
1
+ import{a as ae}from"./chunk-YTEW56VQ.js";import{computed as N,onScopeDispose as be,ref as te,shallowRef as j,watch as Se}from"vue";import{resolveSaveConflict as Me}from"@agile-team/mach-table";function $(e,r={}){let h=j([]),o=te([]),c=te(!1),y=j(null),v=j(null),M=N(()=>o.value.length>0),E=N(()=>[...v.value?.failures??[],...v.value?.conflicts??[]]),x=N(()=>[...new Set(E.value.map(n=>n.rowId))]),w=null,m=()=>{let n=e.api.value;if(!n||n.isDestroyed()){o.value=[],h.value=[];return}o.value=n.editing.getDirtyRowIds(),h.value=n.editing.getChanges()};Se(e.api,n=>{w?.(),w=null,m(),!(!n||n.isDestroyed())&&(w=n.on("dirtyStateChanged",m))},{immediate:!0});let g=async(n,s)=>{let f=e.api.value;if(!f||f.isDestroyed())throw new Error("[MachTable] Cannot save before the grid is ready.");if(c.value)throw new Error("[MachTable] A save operation is already in progress.");c.value=!0,y.value=null,v.value=null;try{let d=await f.editing.save(n,s);return v.value=d,m(),r.onSaveSuccess?.(d.saved),r.onSaveResult?.(d),d}catch(d){throw y.value=d,r.onSaveError?.(d),d}finally{c.value=!1}},p=async(n,s)=>(await g(n,s)).saved,t=()=>{v.value=null},R=(n,s)=>{let f=v.value,d=f?.conflicts.find(S=>S.rowId===n),T=e.api.value;return!f||!d||!T||!Me(T,d,s)?!1:(v.value={...f,failures:f.failures,conflicts:f.conflicts.filter(S=>S.rowId!==n)},m(),!0)},U=n=>{let s=e.api.value?.editing.rollback(n)??!1;return m(),s},b=n=>{e.api.value?.editing.markSaved(n),m()},D=(n,s,f=!1)=>{let d=e.api.value,T=d?.rows.getById(n);return!d||!T||T.rowIndex<0?!1:(d.view.scrollToRow(T.rowIndex,"middle"),s&&f?d.editing.startCell({rowIndex:T.rowIndex,colId:s}):!0)},F=n=>{if(!M.value)return;let s=r.beforeUnloadMessage??"\u5B58\u5728\u672A\u4FDD\u5B58\u7684\u8868\u683C\u4FEE\u6539\u3002";return n.preventDefault(),n.returnValue=s,s};return r.guardBeforeUnload&&typeof window<"u"&&window.addEventListener("beforeunload",F),be(()=>{w?.(),w=null,r.guardBeforeUnload&&typeof window<"u"&&window.removeEventListener("beforeunload",F)}),{changes:h,dirtyRowIds:o,dirty:M,saving:c,saveError:y,lastSaveResult:v,saveIssues:E,failedRowIds:x,save:p,saveDetailed:g,clearSaveIssues:t,resolveConflict:R,rollback:U,markSaved:b,reveal:D,refresh:m}}import{computed as le,isRef as we,nextTick as J,onScopeDispose as Re,ref as P,shallowRef as q,watch as W}from"vue";import{getByPath as De,normalizeAdvancedFilterModel as ne}from"@agile-team/mach-table";function re(e){return typeof e=="function"?e():we(e)?e.value:e}function X(e,r){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.floor(e):r}function Ce(e){return(e instanceof DOMException||typeof e=="object"&&e!=null&&"name"in e)&&e.name==="AbortError"}function Y(e){let r=q([]),h=P(!1),o=q(null),c=P(X(e.initialPage,1)),y=P(X(e.pageSize,20)),v=P(0),M=q([]),E=q({}),x=q(null),w=P([]),m=q([]),g=new Set,p=new Set,t=new Map,R=e.quickFilterText??P(null),U=e.selectionScope??"preserve",b=e.mode!=="manual",D=P(!1),F=P(0),n=[...new Set((e.pageSizeOptions??[10,20,50,100]).map(a=>X(a,0)).filter(Boolean))];n.includes(y.value)||n.push(y.value),n.sort((a,l)=>a-l);let s=null,f=null,d=0,T=null,S=!1,I=!1,V=!1,C=a=>{let l=typeof e.rowKey=="function"?e.rowKey(a):De(a,e.rowKey);if(l==null||String(l).length===0)throw new Error(`[MachTable] useMachTableQuery rowKey "${String(e.rowKey)}" returned an empty value.`);return String(l)},k=()=>{V=!0,w.value=D.value?[]:[...g],V=!1;let a=D.value?[...t.keys()]:[...g];m.value=a.flatMap(l=>{let i=t.get(l);return i===void 0||p.has(l)?[]:[i]}),F.value++},L=a=>D.value?!p.has(a):g.has(a),G=()=>{if(!s||s.isDestroyed())return;let a=r.value.filter(l=>L(C(l)));I=!0;try{s.selection.setRows(a,!0)}finally{I=!1}},_=()=>{d++,f?.abort(),f=null,T!=null&&clearTimeout(T),T=null,h.value=!1},ee=(a,l)=>a.signal.aborted||l!==d,oe=a=>{if(!a||!Array.isArray(a.rows)||!Number.isFinite(a.total)||a.total<0)throw new TypeError("[MachTable] Remote request must resolve to { rows: TData[], total: non-negative number }.")},ie=async(a,l,i)=>{if(ee(l,i))return;oe(a);let u=[...a.rows];for(let O of u)C(O);r.value=u,v.value=Math.floor(a.total);for(let O of r.value){let H=C(O);L(H)?t.set(H,O):t.delete(H)}k(),e.onSuccess?.(a),await J(),G()},se=(a,l,i)=>{ee(l,i)||Ce(a)||(o.value=a??new Error,e.onError?.(o.value))},Q=async()=>{T!=null&&clearTimeout(T),T=null,f?.abort();let a=new AbortController;f=a;let l=++d;h.value=!0,o.value=null,e.keepPreviousData===!1&&(r.value=[]);try{let i=await e.request({page:c.value,pageSize:y.value,query:re(e.query),sortModel:M.value.map(u=>({...u})),filterModel:{...E.value},advancedFilterModel:ne(x.value),quickFilterText:R.value,signal:a.signal});await ie(i,a,l)}catch(i){se(i,a,l)}finally{l===d&&(h.value=!1,f===a&&(f=null))}},K=a=>{a&&(c.value=1),T!=null&&clearTimeout(T),f&&(d++,f.abort(),f=null,h.value=!1);let l=Math.max(0,e.debounceMs??0);if(l===0){Q();return}T=setTimeout(()=>{Q()},l)},ue=a=>{s=a.api,J(G)},de=a=>{S||a.page===c.value&&a.pageSize===y.value||(c.value=a.page,y.value=a.pageSize,b&&Q())},ce=a=>{S||(M.value=a.sortModel.map(l=>({...l})),b?K(!0):c.value=1)},fe=a=>{if(S)return;E.value={...a.filterModel},x.value=ne(a.advancedFilterModel);let l=a.api.filtering.getQuickText();if(R.value!==l){S=!0;try{R.value=l}finally{S=!1}}e.clearSelectionOnQueryChange!==!1&&A(),b?K(!0):c.value=1},ve=a=>{if(I)return;let l=new Set(r.value.map(C)),i=new Set(a.selectedRows.map(C));if(D.value){for(let u of l)i.has(u)?p.delete(u):(p.add(u),t.delete(u));for(let u of a.selectedRows)t.set(C(u),u);k();return}if(U==="page")g.clear(),t.clear();else for(let u of l)g.delete(u),t.delete(u);for(let u of a.selectedRows){let O=C(u);g.add(O),t.set(O,u)}k()},ge=le(()=>({rowData:r.value,loading:h.value,rowKey:C,manualSorting:!0,manualFiltering:!0,advancedFilterModel:x.value,quickFilterText:R.value,error:o.value,overlayErrorTemplate:o.value?()=>e.errorOverlay?.({error:o.value,retry:Q})??"Remote request failed. Please retry.":void 0,overlayNoRowsTemplate:e.emptyOverlay,pagination:{mode:"server",page:c.value,pageSize:y.value,pageSizeOptions:n,total:v.value,showTotal:!0,showPageSizeSelector:!0},onGridReady:ue,onPaginationChanged:de,onSortChanged:ce,onFilterChanged:fe,onSelectionChanged:ve})),Te=async(a={})=>{a.resetPage&&(c.value=1),await Q()},he=async()=>{S=!0;try{c.value=1,M.value=[],E.value={},x.value=null,R.value=null,A(),s?.sorting.setModel(null),s?.filtering.setModel(null),s?.filtering.setAdvancedModel(null),s?.filtering.setQuickText(null),await J()}finally{S=!1}await Q()},A=()=>{D.value=!1,g.clear(),p.clear(),t.clear(),k(),I=!0;try{s?.selection.clear()}finally{I=!1}},ye=()=>{D.value=!0,g.clear(),p.clear(),t.clear();for(let a of r.value)t.set(C(a),a);k(),G()},pe=a=>{g.clear(),p.clear(),t.clear(),D.value=a.mode==="allMatching";let l=a.mode==="allMatching"?a.excludedKeys:a.selectedKeys;for(let i of l.map(String))a.mode==="allMatching"?p.add(i):g.add(i);for(let i of r.value){let u=C(i);L(u)&&t.set(u,i)}k(),G()},me=le(()=>(F.value,D.value?{mode:"allMatching",excludedKeys:[...p]}:{mode:"explicit",selectedKeys:[...g]}));return W(()=>re(e.query),()=>{e.clearSelectionOnQueryChange!==!1&&A(),b?K(!0):c.value=1},{deep:!0,immediate:b&&e.immediate!==!1}),W(R,()=>{S||(e.clearSelectionOnQueryChange!==!1&&A(),b?K(!0):c.value=1)},{flush:"sync"}),W(w,a=>{if(V)return;D.value=!1,p.clear();let l=new Set(a.map(String));g.clear();for(let i of l)g.add(i);for(let i of[...t.keys()])l.has(i)||t.delete(i);for(let i of r.value){let u=C(i);l.has(u)&&t.set(u,i)}G(),k()},{deep:!0,flush:"sync"}),Re(()=>{_(),s=null}),{rows:r,loading:h,error:o,page:c,pageSize:y,total:v,sortModel:M,filterModel:E,advancedFilterModel:x,selectedKeys:w,selectedRows:m,selectionState:me,bindings:ge,reload:Te,retry:Q,reset:he,abort:_,clearSelection:A,selectAllMatching:ye,applySelectionState:pe}}import{computed as B,isRef as Ee,onScopeDispose as xe,ref as Pe,shallowRef as ke,watch as Z}from"vue";import{createMachTableCommands as Qe}from"@agile-team/mach-table";function Oe(e={}){let r=ae(),h=Pe(e.initialSearch??e.config?.quickFilterText??""),o=e.query?Y({...e.query,quickFilterText:e.query.quickFilterText??B(()=>h.value||null)}):null,c=$(r,e.editing),y=ke([]),v=null,M=()=>{y.value=o?.selectedRows.value??r.api.value?.selection.getRows()??[]};Z(r.api,t=>{v?.(),v=null,t&&!t.isDestroyed()&&(v=t.on("selectionChanged",M)),M()},{immediate:!0}),o&&Z(o.selectedRows,M,{deep:!1});let E=async()=>{if(o)await o.reload();else{let t=r.api.value;t?.rows.isRemote()?await t.rows.reload():t?.view.refreshCells()}},x=Qe({getApi:()=>r.api.value,reload:E}),w=B(()=>{let t={...e.config,...o?.bindings.value??{},quickFilterText:h.value||null},R=z(e.loading),U=z(e.theme),b=z(e.editMode);return R!==void 0&&(t.loading=R),U!==void 0&&(t.theme=U),b!==void 0&&(t.editType=b==="row"?"fullRow":"cell",t.editableIndicator=b==="cell"?"hover":"none"),e.onCellValueChanged&&(t.onCellValueChanged=e.onCellValueChanged),e.onRowEditingStopped&&(t.onRowEditingStopped=e.onRowEditingStopped),e.onGridError&&(t.onGridError=e.onGridError),t}),m=B(()=>{if(!o)return y.value.length;let t=o.selectionState.value;return t.mode==="allMatching"?Math.max(0,o.total.value-t.excludedKeys.length):t.selectedKeys.length}),g=B(()=>z(e.loading)===!0||o?.loading.value===!0||c.saving.value),p=B(()=>o?.error.value??c.saveError.value??null);return Z(h,t=>{o||x.search(t||null)}),xe(()=>{v?.(),v=null}),{table:r,query:o,editing:c,bindings:w,search:h,selectedRows:y,selectedCount:m,busy:g,error:p,commands:x,reload:E}}function z(e){return typeof e=="function"?e():Ee(e)?e.value:e}export{Oe as useMachTableController,$ as useMachTableEditing,Y as useMachTableQuery};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agile-team/mach-table-vue",
3
- "version": "0.28.0",
3
+ "version": "0.29.1",
4
4
  "description": "Official Vue 3 adapter for the MachTable enterprise data grid",
5
5
  "keywords": [
6
6
  "vue",
@@ -117,20 +117,19 @@
117
117
  "sideEffects": [
118
118
  "**/*.css"
119
119
  ],
120
+ "scripts": {
121
+ "build": "tsup && node ../../scripts/copy-adapter-style.mjs vue",
122
+ "typecheck": "tsc --noEmit",
123
+ "test": "vitest run",
124
+ "test:coverage": "vitest run --coverage"
125
+ },
120
126
  "dependencies": {
121
- "@agile-team/mach-table": "0.28.0"
127
+ "@agile-team/mach-table": "workspace:*"
122
128
  },
123
129
  "peerDependencies": {
124
130
  "vue": ">=3.2.0"
125
131
  },
126
132
  "devDependencies": {
127
133
  "vue": "^3.5.13"
128
- },
129
- "scripts": {
130
- "build": "tsup && node ../../scripts/copy-adapter-style.mjs vue",
131
- "typecheck": "tsc --noEmit",
132
- "test": "vitest run",
133
- "test:coverage": "vitest run --coverage"
134
- },
135
- "readme": "<p align=\"center\">\n <img src=\"https://raw.githubusercontent.com/ChenyCHENYU/MachTable/main/assets/mach-table-logo.svg\" alt=\"MachTable\" width=\"760\" />\n</p>\n\n# @agile-team/mach-table-vue\n\nMachTable 0.28 的官方 Vue 3 适配包。一个依赖即可获得 Core、泛型 `<MachTable>`、原生 slots、应用/路由配置、按需工作流、异步组件边界和自动生命周期清理。\n\n```bash\npnpm add @agile-team/mach-table-vue\n```\n\n应用入口只引入一次样式:\n\n```ts\nimport \"@agile-team/mach-table-vue/styles.css\";\n```\n\n## 局部接入\n\n```vue\n<script setup lang=\"ts\">\nimport { ref } from \"vue\";\nimport { MachTable, useMachTable, type ColDef } from \"@agile-team/mach-table-vue\";\n\ninterface Row { id: string; name: string }\nconst table = useMachTable<Row>();\nconst rows = ref<Row[]>([{ id: \"1\", name: \"MachTable\" }]);\nconst columns: ColDef<Row>[] = [{ field: \"name\", flex: 1, editable: true }];\n</script>\n\n<template>\n <div style=\"height: 520px\">\n <MachTable\n :ref=\"table.ref\"\n :row-data=\"rows\"\n :column-defs=\"columns\"\n row-key=\"id\"\n enable-column-resize\n :persistence=\"{ key: 'customers:list', sections: ['columns'] }\"\n />\n </div>\n</template>\n```\n\n## 全局接入\n\n表格页面较多时,全局注册一次,页面模板直接使用 `<MachTable>`:\n\n```ts\nimport { createApp } from \"vue\";\nimport { MachTablePlugin } from \"@agile-team/mach-table-vue\";\nimport machTableConfig from \"@/config/mach-table.config\";\n\ncreateApp(App).use(MachTablePlugin, machTableConfig).mount(\"#app\");\n```\n\n需要减少首屏代码时改用异步全局插件:\n\n```ts\nimport AsyncMachTablePlugin, { preloadMachTable } from \"@agile-team/mach-table-vue/async\";\n\napp.use(AsyncMachTablePlugin, machTableConfig);\nvoid preloadMachTable(); // 可选:路由 hover 时预取\n```\n\n推荐把约定集中到独立文件:\n\n```ts\n// src/config/mach-table.config.ts\nimport { defineMachTableConfig, defineMachTablePreset } from \"@agile-team/mach-table-vue\";\n\nexport default defineMachTableConfig({\n defaults: {\n size: \"compact\",\n columnLayout: \"fit\",\n enableColumnResize: true,\n defaultColDef: { sortable: true, filter: true, resizable: true }\n },\n defaultPreset: \"list\",\n presets: {\n list: defineMachTablePreset({ stripedRows: true }),\n crud: defineMachTablePreset({ rowSelection: \"multiple\", editType: \"fullRow\" })\n }\n});\n```\n\n布局或路由可用响应式 `provideMachTableConfig()` 叠加配置,表格 props 始终拥有最高优先级。\n\n## 按需子入口\n\n```ts\nimport { useMachTableQuery, useMachTableEditing } from \"@agile-team/mach-table-vue/workflows\";\nimport { MachTableToolbar } from \"@agile-team/mach-table-vue/ui\";\nimport { vueCellRenderer } from \"@agile-team/mach-table-vue/adapters\";\nimport { createElementPlusEditors } from \"@agile-team/mach-table-vue/editors\";\nimport { createWorkerDataProcessor } from \"@agile-team/mach-table-vue/worker\";\n```\n\n- `/workflows`:请求取消、防过期覆盖、服务端分页、跨页选择、脏数据和冲突保存;`reset()` 清空全部表格过滤且只请求一次。\n- `/ui`:可选标准工具栏;需要全局组件时另行 `app.use(MachTableUiPlugin)`,其全局组件类型也只在导入该子入口后生效。\n- `/adapters`:自定义 Vue renderer/editor/detail/overlay 桥接。\n- `/editors`:可选 Element Plus 编辑器,Element Plus 由宿主注入。\n- `/worker`:大型本地过滤/排序的独立 Worker 能力。\n\n该包自动依赖 `@agile-team/mach-table` 并重导出 Core 类型;宿主只需提供 `vue >= 3.2`。\n\n文档:[Vue 指南](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/guide/vue.md) · [企业接入](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/guide/enterprise-integration.md) · [配置中心](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/guide/configuration.md)\n\nSource-available © ChenyCHENYU (Agile Team). 任何使用均须事先取得书面授权。详见 [LICENSE](https://github.com/ChenyCHENYU/MachTable/blob/main/LICENSE) 与[授权流程](https://github.com/ChenyCHENYU/MachTable/blob/main/LICENSING.md)。\n"
136
- }
134
+ }
135
+ }
@@ -1 +0,0 @@
1
- import{a}from"./chunk-2ANGCJOO.js";import"./chunk-7MRR4IDI.js";import"./chunk-SQVY5G55.js";export{a as MachTable};
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkJ3SALTBKcjs = require('./chunk-J3SALTBK.cjs');require('./chunk-7LXDVLDD.cjs');require('./chunk-XECIDGIZ.cjs');exports.MachTable = _chunkJ3SALTBKcjs.a;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _machtable = require('@agile-team/mach-table');var _adapter = require('@agile-team/mach-table/adapter');var _vue = require('vue');var o=Symbol("mach-table-config"),f=_adapter.normalizeMachTableConfig.call(void 0, );function g(e){return typeof e=="function"?e():_vue.isRef.call(void 0, e)?e.value:e}function u(e){return _vue.shallowRef.call(void 0, _adapter.normalizeMachTableConfig.call(void 0, e))}function y(e){let c=_vue.inject.call(void 0, o,_vue.shallowRef.call(void 0, f)),i=_vue.computed.call(void 0, ()=>_adapter.mergeMachTableConfig.call(void 0, c.value,g(e)));return _vue.provide.call(void 0, o,i),i}function s(){return _vue.inject.call(void 0, o,_vue.shallowRef.call(void 0, f))}exports.a = _adapter.resolveMachTableGridOptions; exports.b = o; exports.c = u; exports.d = y; exports.e = s;
@@ -1 +0,0 @@
1
- import{defineMachTableConfig as p}from"@agile-team/mach-table";import{mergeMachTableConfig as t,normalizeMachTableConfig as a,resolveMachTableGridOptions as R}from"@agile-team/mach-table/adapter";import{computed as r,inject as l,isRef as b,provide as h,shallowRef as n}from"vue";var o=Symbol("mach-table-config"),f=a();function g(e){return typeof e=="function"?e():b(e)?e.value:e}function u(e){return n(a(e))}function y(e){let c=l(o,n(f)),i=r(()=>t(c.value,g(e)));return h(o,i),i}function s(){return l(o,n(f))}export{R as a,o as b,u as c,y as d,s as e};
@@ -1 +0,0 @@
1
- import{h as m,render as p,renderSlot as P,getCurrentInstance as g,shallowReactive as C}from"vue";function s(t){if(t)return t;try{return g()?.appContext}catch{return}}function R(t,e,n,r){let o=m({setup:()=>()=>m(t,{...e})});return r&&(o.appContext=r),p(o,n),()=>p(null,n)}function c(t,e,n,r,a=!0){let d=m({name:"MachTableSlot",setup:()=>()=>P({default:t},"default",e())});r&&(d.appContext=r);let l=!1,u=()=>{l||p(d,n)};return a?queueMicrotask(u):u(),()=>{l=!0,p(null,n)}}function E(t,e){let n=s(e?.appContext);return r=>{let a=document.createElement("div");a.className="mach-cell-vue",a.style.width="100%";let o=C({...r}),d=R(t,o,a,n),l=!1;return{el:a,refresh:u=>(Object.assign(o,u),!0),destroy:()=>{l||(l=!0,window.setTimeout(d,0))}}}}function A(t,e){let n=s(e?.appContext);return r=>{let a=document.createElement("div");a.style.height="100%";let o=R(t,r,a,n),d=!1;return{el:a,destroy:()=>{d||(d=!0,o())}}}}function x(t,e){let n=s(e?.appContext);return r=>{let a=document.createElement("div");a.className="mach-cell-vue mach-cell-vue--slot",a.style.width="100%";let o=C({...r}),d=c(t,()=>o,a,n);return{el:a,refresh:l=>(Object.assign(o,l),!0),destroy:d}}}function h(t,e){let n=s(e?.appContext);return r=>{let a=document.createElement("div");a.className="mach-header-vue-slot";let o=c(t,()=>r,a,n);return{el:a,destroy:o}}}function S(t,e){let n=s(e?.appContext);return r=>{let a=C({value:r.value}),o=document.createElement("div");o.className="mach-cell-vue mach-cell-vue--editor";let l=c(t,()=>({...r,value:a.value,setValue:u=>{a.value=u},commit:()=>{r.api.editing.stop()},cancel:()=>{r.api.editing.stop({cancel:!0})}}),o,n,!1);return{el:o,getValue:()=>a.value,focus:()=>{o.querySelector("input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex]:not([tabindex='-1'])")?.focus()},destroy:l}}}function D(t,e){let n=s(e?.appContext);return r=>{let a=document.createElement("div");a.className="mach-detail-vue-slot",a.style.height="100%";let o=c(t,()=>r,a,n);return{el:a,destroy:o}}}function i(t,e){let n=s(e?.appContext);return()=>{let r=document.createElement("div");r.className="mach-overlay-vue-slot";let a=c(t,()=>({}),r,n);return{el:r,destroy:a}}}function T(t,e,n){return t[`${e}-${n}`]??t[`${e}-${n.replace(/[.\s]+/g,"-")}`]}function y(t,e,n){return t.map((r,a)=>{if(Array.isArray(r.children)){let v=r;return{...v,children:y(v.children,e,n)}}let o=r,d=o.colId??o.field??`col_${a}`,l=T(e,"cell",d)??(d==="op"?e.actions:void 0)??e.cell,u=T(e,"header",d)??e.header,f=T(e,"editor",d)??e.editor;return{...o,...l?{cellRenderer:x(l,{appContext:n})}:{},...u?{headerComponent:h(u,{appContext:n})}:{},...f?{cellEditor:S(f,{appContext:n})}:{}}})}function O(t,e,n){let r=t.columnDefs?y(t.columnDefs,e,n):t.columnDefs;return{...t,columnDefs:r,...e.detail&&!t.detailRowRenderer?{detailRowRenderer:D(e.detail,{appContext:n})}:{},...e.loading?{overlayLoadingTemplate:i(e.loading,{appContext:n})}:{},...e.empty?{overlayNoRowsTemplate:i(e.empty,{appContext:n})}:{}}}function G(t,e){let n,r,a=t.detail?D(t.detail,{appContext:e}):void 0,o=t.loading?i(t.loading,{appContext:e}):void 0,d=t.empty?i(t.empty,{appContext:e}):void 0;return l=>(l.columnDefs!==n&&(n=l.columnDefs,r=l.columnDefs?y(l.columnDefs,t,e):l.columnDefs),{...l,columnDefs:r,...a&&!l.detailRowRenderer?{detailRowRenderer:a}:{},...o?{overlayLoadingTemplate:o}:{},...d?{overlayNoRowsTemplate:d}:{}})}export{E as a,A as b,x as c,h as d,S as e,D as f,i as g,O as h,G as i};
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _vue = require('vue');function s(t){if(t)return t;try{return _optionalChain([_vue.getCurrentInstance.call(void 0, ), 'optionalAccess', _ => _.appContext])}catch (e2){return}}function R(t,e,n,r){let o=_vue.h.call(void 0, {setup:()=>()=>_vue.h.call(void 0, t,{...e})});return r&&(o.appContext=r),_vue.render.call(void 0, o,n),()=>_vue.render.call(void 0, null,n)}function c(t,e,n,r,a=!0){let d=_vue.h.call(void 0, {name:"MachTableSlot",setup:()=>()=>_vue.renderSlot.call(void 0, {default:t},"default",e())});r&&(d.appContext=r);let l=!1,u=()=>{l||_vue.render.call(void 0, d,n)};return a?queueMicrotask(u):u(),()=>{l=!0,_vue.render.call(void 0, null,n)}}function E(t,e){let n=s(_optionalChain([e, 'optionalAccess', _2 => _2.appContext]));return r=>{let a=document.createElement("div");a.className="mach-cell-vue",a.style.width="100%";let o=_vue.shallowReactive.call(void 0, {...r}),d=R(t,o,a,n),l=!1;return{el:a,refresh:u=>(Object.assign(o,u),!0),destroy:()=>{l||(l=!0,window.setTimeout(d,0))}}}}function A(t,e){let n=s(_optionalChain([e, 'optionalAccess', _3 => _3.appContext]));return r=>{let a=document.createElement("div");a.style.height="100%";let o=R(t,r,a,n),d=!1;return{el:a,destroy:()=>{d||(d=!0,o())}}}}function x(t,e){let n=s(_optionalChain([e, 'optionalAccess', _4 => _4.appContext]));return r=>{let a=document.createElement("div");a.className="mach-cell-vue mach-cell-vue--slot",a.style.width="100%";let o=_vue.shallowReactive.call(void 0, {...r}),d=c(t,()=>o,a,n);return{el:a,refresh:l=>(Object.assign(o,l),!0),destroy:d}}}function h(t,e){let n=s(_optionalChain([e, 'optionalAccess', _5 => _5.appContext]));return r=>{let a=document.createElement("div");a.className="mach-header-vue-slot";let o=c(t,()=>r,a,n);return{el:a,destroy:o}}}function S(t,e){let n=s(_optionalChain([e, 'optionalAccess', _6 => _6.appContext]));return r=>{let a=_vue.shallowReactive.call(void 0, {value:r.value}),o=document.createElement("div");o.className="mach-cell-vue mach-cell-vue--editor";let l=c(t,()=>({...r,value:a.value,setValue:u=>{a.value=u},commit:()=>{r.api.editing.stop()},cancel:()=>{r.api.editing.stop({cancel:!0})}}),o,n,!1);return{el:o,getValue:()=>a.value,focus:()=>{_optionalChain([o, 'access', _7 => _7.querySelector, 'call', _8 => _8("input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex]:not([tabindex='-1'])"), 'optionalAccess', _9 => _9.focus, 'call', _10 => _10()])},destroy:l}}}function D(t,e){let n=s(_optionalChain([e, 'optionalAccess', _11 => _11.appContext]));return r=>{let a=document.createElement("div");a.className="mach-detail-vue-slot",a.style.height="100%";let o=c(t,()=>r,a,n);return{el:a,destroy:o}}}function i(t,e){let n=s(_optionalChain([e, 'optionalAccess', _12 => _12.appContext]));return()=>{let r=document.createElement("div");r.className="mach-overlay-vue-slot";let a=c(t,()=>({}),r,n);return{el:r,destroy:a}}}function T(t,e,n){return _nullishCoalesce(t[`${e}-${n}`], () => (t[`${e}-${n.replace(/[.\s]+/g,"-")}`]))}function y(t,e,n){return t.map((r,a)=>{if(Array.isArray(r.children)){let v=r;return{...v,children:y(v.children,e,n)}}let o=r,d=_nullishCoalesce(_nullishCoalesce(o.colId, () => (o.field)), () => (`col_${a}`)),l=_nullishCoalesce(_nullishCoalesce(T(e,"cell",d), () => ((d==="op"?e.actions:void 0))), () => (e.cell)),u=_nullishCoalesce(T(e,"header",d), () => (e.header)),f=_nullishCoalesce(T(e,"editor",d), () => (e.editor));return{...o,...l?{cellRenderer:x(l,{appContext:n})}:{},...u?{headerComponent:h(u,{appContext:n})}:{},...f?{cellEditor:S(f,{appContext:n})}:{}}})}function O(t,e,n){let r=t.columnDefs?y(t.columnDefs,e,n):t.columnDefs;return{...t,columnDefs:r,...e.detail&&!t.detailRowRenderer?{detailRowRenderer:D(e.detail,{appContext:n})}:{},...e.loading?{overlayLoadingTemplate:i(e.loading,{appContext:n})}:{},...e.empty?{overlayNoRowsTemplate:i(e.empty,{appContext:n})}:{}}}function G(t,e){let n,r,a=t.detail?D(t.detail,{appContext:e}):void 0,o=t.loading?i(t.loading,{appContext:e}):void 0,d=t.empty?i(t.empty,{appContext:e}):void 0;return l=>(l.columnDefs!==n&&(n=l.columnDefs,r=l.columnDefs?y(l.columnDefs,t,e):l.columnDefs),{...l,columnDefs:r,...a&&!l.detailRowRenderer?{detailRowRenderer:a}:{},...o?{overlayLoadingTemplate:o}:{},...d?{overlayNoRowsTemplate:d}:{}})}exports.a = E; exports.b = A; exports.c = x; exports.d = h; exports.e = S; exports.f = D; exports.g = i; exports.h = O; exports.i = G;