@agile-team/mach-table 0.31.2 → 0.32.0
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 +27 -1
- package/dist/adapter.cjs +1 -1
- package/dist/adapter.d.cts +20 -3
- package/dist/adapter.d.ts +20 -3
- package/dist/adapter.js +1 -1
- package/dist/analysis.cjs +3 -0
- package/dist/analysis.d.cts +60 -0
- package/dist/analysis.d.ts +60 -0
- package/dist/analysis.js +3 -0
- package/dist/{options-Bi_m5kXL.d.cts → api-pOhyuSQk.d.cts} +780 -754
- package/dist/{options-Bi_m5kXL.d.ts → api-pOhyuSQk.d.ts} +780 -754
- package/dist/{configuration-C9KYeIy1.d.ts → configuration-SYWVjGft.d.ts} +1 -1
- package/dist/{configuration-Bj_JwdTd.d.cts → configuration-gAE1eZuB.d.cts} +1 -1
- package/dist/index.cjs +6 -6
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +6 -6
- package/dist/mach-table.css +1 -1
- package/dist/multi-range.cjs +4 -0
- package/dist/multi-range.d.cts +13 -0
- package/dist/multi-range.d.ts +13 -0
- package/dist/multi-range.js +4 -0
- package/dist/ordering.cjs +1 -0
- package/dist/ordering.d.cts +93 -0
- package/dist/ordering.d.ts +93 -0
- package/dist/ordering.js +1 -0
- package/dist/preferences.cjs +1 -0
- package/dist/preferences.d.cts +71 -0
- package/dist/preferences.d.ts +71 -0
- package/dist/preferences.js +1 -0
- package/dist/server-side.cjs +1 -0
- package/dist/server-side.css +1 -0
- package/dist/server-side.css.d.ts +2 -0
- package/dist/server-side.d.cts +132 -0
- package/dist/server-side.d.ts +132 -0
- package/dist/server-side.js +1 -0
- package/dist/shared-Bi8hAuzn.d.cts +12 -0
- package/dist/shared-Bn77TiBm.d.ts +12 -0
- package/dist/workbench.cjs +1 -0
- package/dist/workbench.css +1 -0
- package/dist/workbench.css.d.ts +2 -0
- package/dist/workbench.d.cts +72 -0
- package/dist/workbench.d.ts +72 -0
- package/dist/workbench.js +1 -0
- package/dist/worker.d.cts +2 -2
- package/dist/worker.d.ts +2 -2
- package/package.json +72 -5
- /package/{styles → dist}/mach-table.css.d.ts +0 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { b as GridApi } from './api-pOhyuSQk.js';
|
|
2
|
+
|
|
3
|
+
interface WorkbenchHandle {
|
|
4
|
+
refresh(): void;
|
|
5
|
+
destroy(): void;
|
|
6
|
+
}
|
|
7
|
+
interface WorkbenchOptions<TData = any> {
|
|
8
|
+
api: GridApi<TData>;
|
|
9
|
+
onClose?: () => void;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export type { WorkbenchOptions as W, WorkbenchHandle as a };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var S=Object.defineProperty;var Z=Object.getOwnPropertyDescriptor;var ee=Object.getOwnPropertyNames;var te=Object.prototype.hasOwnProperty;var ne=(n,e)=>{for(var t in e)S(n,t,{get:e[t],enumerable:!0})},re=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ee(e))!te.call(n,o)&&o!==t&&S(n,o,{get:()=>e[o],enumerable:!(r=Z(e,o))||r.enumerable});return n};var oe=n=>re(S({},"__esModule",{value:!0}),n);var He={};ne(He,{inspectGridRow:()=>R,mountAdvancedFilterBuilder:()=>U,mountChangeReview:()=>X,mountDiagnostics:()=>Y});module.exports=oe(He);var ie=new Set(["contains","notContains","equals","notEquals","startsWith","endsWith","blank","notBlank"]),se=new Set(["equals","notEquals","lessThan","lessThanOrEqual","greaterThan","greaterThanOrEqual","inRange","blank","notBlank"]),ae=new Set(["equals","notEquals","lessThan","greaterThan","inRange","blank","notBlank"]);function le(n){return n==null||typeof n=="string"||typeof n=="number"&&Number.isFinite(n)}function de(n){return n==="text"?ie:n==="number"?se:ae}function ce(n,e,t){if(n==null||typeof n!="object")return null;let r=n;return typeof r.match!="string"||!t.has(r.match)?null:{match:r.match,...ue(r,e)}}function ue(n,e){let t=e==="number"?B(n.value):typeof n.value=="string"?n.value:void 0,r=e==="number"?B(n.value2):typeof n.value2=="string"?n.value2:void 0;return{...t!==void 0?{value:t}:{},...r!==void 0?{value2:r}:{}}}function B(n){return typeof n=="number"&&Number.isFinite(n)?n:void 0}function pe(n,e){let t=[],r=de(e);for(let o of n.slice(0,20)){let i=ce(o,e,r);i&&t.push(i)}return t}function fe(n){if(n==null||typeof n!="object")return null;let e=n;return e.type==="set"?Array.isArray(e.values)?{type:"set",values:e.values.filter(le).slice(0,2e3)}:null:e.type!=="text"&&e.type!=="number"&&e.type!=="date"||!Array.isArray(e.conditions)?null:{type:e.type,...e.operator==="or"||e.operator==="and"?{operator:e.operator}:{},conditions:pe(e.conditions,e.type)}}function he(n,e){if(typeof n.colId!="string"||!n.colId.trim())return null;let t=n.colId.trim();if(e.validColumnIds?.has(t)===!1)return null;let r=fe(n.filter);return r?{kind:"condition",colId:t,filter:r}:null}function me(n,e,t){if(!Array.isArray(n.children))return null;let r=[];for(let o of n.children){let i=P(o,e+1,t);i&&r.push(i)}return r.length===0?null:{kind:"group",operator:n.operator==="or"?"or":"and",children:r,...n.not===!0?{not:!0}:{}}}function ge(n,e,t){return e<=16&&t.nodes<512&&n!=null&&typeof n=="object"}function P(n,e,t){if(!ge(n,e,t)||t.ancestors.has(n))return null;t.ancestors.add(n),t.nodes++;let r=n,o=r.kind==="condition"?he(r,t):r.kind==="group"?me(r,e,t):null;return t.ancestors.delete(n),o}function k(n,e){if(n==null||typeof n!="object")return null;let t=n;if(t.version!==1||t.root==null)return null;let r=P(t.root,0,{ancestors:new WeakSet,nodes:0,validColumnIds:e});return r?{version:1,root:r}:null}var ye=["--mach-font-family","--mach-font-size","--mach-font-size-sm","--mach-header-font-weight","--mach-cell-padding","--mach-header-h","--mach-primary","--mach-primary-weak","--mach-success","--mach-warning","--mach-danger","--mach-info","--mach-border-color","--mach-border-width","--mach-header-bg","--mach-header-fg","--mach-body-bg","--mach-body-fg","--mach-row-hover-bg","--mach-radius-sm","--mach-radius","--mach-radius-lg","--mach-shadow-sm","--mach-shadow","--mach-transition","--mach-z-popup","--mach-z-menu"];function W(n,e){if(n.classList.add("mach-portal"),!e)return;let t=window.getComputedStyle(e);for(let r of ye){let o=t.getPropertyValue(r).trim();o&&n.style.setProperty(r,o)}n.style.colorScheme=t.colorScheme}function l(n,e,t){let r=document.createElement(n);return e&&(r.className=e),t!=null&&(r.textContent=t),r}function p(n,e,t=""){let r=l("button",`mach-workbench__button ${t}`.trim(),n);return r.type="button",r.addEventListener("click",e),r}function T(n,e,t,r){let o=l("select","mach-workbench__input");o.setAttribute("aria-label",n);for(let i of e){let s=l("option",void 0,i.label);s.value=i.value,o.append(s)}return o.value=t,o.addEventListener("change",()=>r(o.value)),o}function C(n,e){let t=[...n.querySelectorAll("button,select,input")].filter(o=>!o.disabled);(t.find(o=>o.getAttribute("aria-label")===e||o.textContent===e)??t[0])?.focus()}function E(n,e,t,r){let o=document.activeElement,i=l("section","mach-workbench");i.setAttribute("aria-label",e),i.tabIndex=-1;let s=l("header","mach-workbench__header");s.append(l("h2","mach-workbench__title",e),p("\u5173\u95ED",t));let a=l("div","mach-workbench__body"),c=l("p","mach-workbench__status");c.setAttribute("role","status"),c.setAttribute("aria-live","polite");let u=l("footer","mach-workbench__footer");i.append(s,a,c,u);let g=m=>{m.key!=="Escape"||m.isComposing||(m.preventDefault(),m.stopPropagation(),t())};i.addEventListener("keydown",g);let h=!1,y=r.view.getRoot(),f=()=>{h||(i.dataset.theme=y?.classList.contains("mach-theme-dark")?"dark":"light",W(i,y))},d=null;try{f(),y&&(d=new MutationObserver(f),d.observe(y,{attributes:!0,attributeFilter:["class","style"]})),n.append(i)}catch(m){throw d?.disconnect(),i.remove(),m}return{root:i,body:a,status:c,footer:u,syncTheme:f,destroy(){if(h)return;h=!0,d?.disconnect();let m=i.contains(document.activeElement);i.removeEventListener("keydown",g),i.remove(),m&&o?.isConnected&&o.focus()}}}function b(n){try{return n instanceof Error?n.message:String(n)}catch{return"\u65E0\u6CD5\u8BFB\u53D6\u5F02\u5E38\u4FE1\u606F"}}var ve=new Set(["__proto__","prototype","constructor"]);function be(n){return typeof n!="string"||n.length===0?!1:n.split(".").every(t=>t.length>0&&!ve.has(t))}function I(n,e){if(n==null||!be(e))return;if(e.indexOf(".")<0)return n[e];let r=n,o=0;for(;o<e.length;){if(r==null)return;let i=e.indexOf(".",o);if(i<0){r=r[e.slice(o)];break}r=r[e.slice(o,i)],o=i+1}return r}function*D(n){for(let e of n)"children"in e?yield*D(e.children):yield e}function M(n,e){let t=[],r=new Set(n.columns.getState().map(i=>i.colId)),o=n.getOption("defaultColDef");for(let i of D(n.columns.getDefinitions()??[])){let s={...o,...i},a=s.colId??s.field;a&&r.has(a)&&i.filter!==!1&&t.push(we(s,a,n))}return e?e.filter(i=>r.has(i.colId)).map(i=>{let s=t.find(a=>a.colId===i.colId);return{label:i.colId,type:"text",...s,...i}}):t}function we(n,e,t){let r=Te(n)??De(n,t),o=n.field?I(t.rows.getAt(0)?.data,n.field):void 0,i=n.cellEditor==="number"||typeof o=="number"?"number":"text",s=typeof n.filter=="string"?n.filter:r?"set":n.cellEditor==="date"?"date":i;return{colId:e,label:n.headerName??e,type:s,...r?{options:r}:{}}}function Te(n){return n.cellEditorParams?.options??(n.filterParams?.values??n.cellEditorParams?.values)?.map(e=>({label:String(e??"\u7A7A\u503C"),value:e}))}function De(n,e){if(n.filter!=="set"||!n.field)return;let t=new Map;for(let r=0;r<Math.min(e.rows.getCount(),2e3);r++){let o=e.rows.getAt(r);if(!o||o.data==null||o.isGroup||o.isDetail)continue;let i=I(o.data,n.field);if(i!==null&&typeof i!="string"&&typeof i!="number"||typeof i=="number"&&!Number.isFinite(i))continue;let s=JSON.stringify([typeof i,i]);t.set(s,{label:String(i??"\u7A7A\u503C"),value:i})}return[...t.values()]}var z={text:["contains","notContains","equals","notEquals","startsWith","endsWith","blank","notBlank"],number:["equals","notEquals","lessThan","lessThanOrEqual","greaterThan","greaterThanOrEqual","inRange","blank","notBlank"],date:["equals","notEquals","lessThan","greaterThan","inRange","blank","notBlank"]},j={contains:"\u5305\u542B",notContains:"\u4E0D\u5305\u542B",equals:"\u7B49\u4E8E",notEquals:"\u4E0D\u7B49\u4E8E",startsWith:"\u5F00\u5934\u4E3A",endsWith:"\u7ED3\u5C3E\u4E3A",blank:"\u4E3A\u7A7A",notBlank:"\u4E0D\u4E3A\u7A7A",lessThan:"\u5C0F\u4E8E",lessThanOrEqual:"\u5C0F\u4E8E\u6216\u7B49\u4E8E",greaterThan:"\u5927\u4E8E",greaterThanOrEqual:"\u5927\u4E8E\u6216\u7B49\u4E8E",inRange:"\u4ECB\u4E8E"};function q(n){return JSON.stringify(n,(e,t)=>{if(!(e==="not"&&t===!1))return!t||typeof t!="object"||Array.isArray(t)?t:Object.fromEntries(Object.entries(t).sort(([r],[o])=>r.localeCompare(o)))})}function A(n){if(n===null)return null;let e=k(n);if(!e||q(n)!==q(e))throw new TypeError("\u7B5B\u9009\u8868\u8FBE\u5F0F\u65E0\u6548\u6216\u8D85\u8FC7\u9650\u5236\uFF0C\u8349\u7A3F\u672A\u88AB\u66FF\u6362");return e}function _(n){let e=n?.type??"text";return e==="set"?{type:e,values:[]}:e==="text"?{type:e,conditions:[{match:"contains",value:""}]}:{type:e,conditions:[{match:"equals"}]}}function V(n,e){if(!n)return[];let t=[],r=new Map(e.map(s=>[s.colId,s])),o=0,i=(s,a)=>{if(o++,a>16||o>512){t.push("\u6700\u591A\u652F\u6301 16 \u5C42\u3001512 \u4E2A\u6761\u4EF6\u8282\u70B9");return}if(s.kind==="group"){s.children.length||t.push("\u6761\u4EF6\u7EC4\u4E0D\u80FD\u4E3A\u7A7A");for(let u of s.children)i(u,a+1);return}let c=r.get(s.colId);if(!c){t.push(`\u5B57\u6BB5\u5DF2\u79FB\u9664\u6216\u4E0D\u53EF\u7B5B\u9009\uFF1A${s.colId}`);return}c.type!==s.filter.type&&t.push(`${c.label} \u7684\u5B57\u6BB5\u7C7B\u578B\u5DF2\u6539\u53D8\uFF0C\u8BF7\u91CD\u7F6E\u6761\u4EF6`),t.push(...Ee(s.filter,c.label))};return i(n.root,0),[...new Set(t)]}function Ee(n,e){return n.type==="set"?[]:n.conditions.length?n.conditions.length>20?[`${e} \u6700\u591A\u652F\u6301 20 \u4E2A\u6761\u4EF6`]:n.conditions.flatMap(t=>{if(t.match==="blank"||t.match==="notBlank")return[];let r=t.match==="inRange"?[t.value,t.value2]:[t.value];return r.some(o=>!Ae(o,n.type))?[`\u8BF7\u586B\u5199 ${e} \u7684\u6709\u6548\u7B5B\u9009\u503C`]:r.length===2&&r[0]>r[1]?[`${e} \u7684\u533A\u95F4\u8D77\u70B9\u4E0D\u80FD\u5927\u4E8E\u7EC8\u70B9`]:[]}):[`${e} \u81F3\u5C11\u9700\u8981\u4E00\u4E2A\u6761\u4EF6`]}function Ae(n,e){return e==="number"?typeof n=="number"&&Number.isFinite(n):typeof n!="string"||!n.trim()?!1:e!=="date"||/^\d{4}-\d{2}-\d{2}$/.test(n)&&!Number.isNaN(Date.parse(n))&&new Date(n).toISOString().slice(0,10)===n}function F(n){return n.kind==="group"?1+n.children.reduce((e,t)=>e+F(t),0):1}function U(n,e){return new O(n,e)}var O=class{constructor(e,t){this.options=t;this.fields=[];this.u=0;this.changed=!1;this.external=!1;this.destroyed=!1;this.controls=new Map;this.o=[];if(t.api.isDestroyed())throw new Error("Cannot mount a workbench on a destroyed grid");this.draft=A(t.api.filtering.getAdvancedModel()),this.e=E(e,"\u9AD8\u7EA7\u7B5B\u9009",()=>this.close(),t.api),this.l=p("\u5E94\u7528\u7B5B\u9009",()=>{this.apply()},"mach-workbench__button--primary"),this.e.footer.append(p("\u6E05\u7A7A\u8349\u7A3F",()=>this.n(()=>{this.draft=null})),p("\u53D6\u6D88",()=>this.close()),this.l),this.o=[t.api.on("gridDestroyed",()=>this.destroy()),t.api.on("displayedColumnsChanged",()=>this.refresh()),t.api.on("filterChanged",()=>{this.changed?this.external=!0:this.draft=A(t.api.filtering.getAdvancedModel()),this.refresh()})],this.refresh(),this.e.root.focus()}getDraft(){return this.draft==null?null:JSON.parse(JSON.stringify(this.draft))}setDraft(e){this.t()&&(this.draft=A(e),this.changed=!0,this.refresh())}apply(){if(!this.t())return!1;if(this.fields=M(this.options.api,this.options.fields),this.i().length)return this.e.status.focus(),!1;let e=this.draft==null?null:k(this.draft,new Set(this.fields.map(t=>t.colId)));return this.changed=!1,this.external=!1,this.options.api.filtering.setAdvancedModel(e),this.draft=A(this.options.api.filtering.getAdvancedModel()),this.refresh(),this.e.status.textContent="\u7B5B\u9009\u5DF2\u5E94\u7528",!0}cancel(){this.t()&&(this.draft=A(this.options.api.filtering.getAdvancedModel()),this.changed=!1,this.external=!1,this.refresh())}refresh(){if(this.t()){if(this.fields=M(this.options.api,this.options.fields),this.e.syncTheme(),this.controls.clear(),this.u=this.draft?F(this.draft.root):0,this.e.body.replaceChildren(),this.draft)this.e.body.append(this.p(this.draft.root,"root",0,()=>{this.draft=null}));else{let e=l("div","mach-workbench__empty","\u5C1A\u65E0\u9AD8\u7EA7\u7B5B\u9009\uFF1B\u6DFB\u52A0\u6761\u4EF6\u540E\u5E94\u7528\u3002");e.append(this.s("\u6DFB\u52A0\u6761\u4EF6",()=>{this.draft={version:1,root:this.condition()}}),this.s("\u6DFB\u52A0\u6761\u4EF6\u7EC4",()=>{this.draft={version:1,root:{kind:"group",operator:"and",children:[]}}})),this.e.body.append(e)}this.e.status.tabIndex=-1,this.i()}}destroy(){if(!this.destroyed){this.destroyed=!0;for(let e of this.o.splice(0))e();this.e.destroy(),this.controls.clear()}}close(){this.destroyed||(this.destroy(),this.options.onClose?.())}t(){return!this.destroyed&&!this.options.api.isDestroyed()}i(){let e=V(this.draft,this.fields);return this.e.status.textContent=e.length?e.join("\uFF1B"):this.external?"\u7B5B\u9009\u5DF2\u5916\u90E8\u66F4\u65B0\uFF1B\u5F53\u524D\u8349\u7A3F\u5DF2\u4FDD\u7559\uFF0C\u53D6\u6D88\u53EF\u91CD\u8F7D\u3002":"AND / OR \u7EC4\u5408\u6761\u4EF6\uFF0CNOT \u6392\u9664\u6574\u7EC4\u3002",this.e.status.classList.toggle("mach-workbench__status--error",e.length>0),this.e.status.setAttribute("role",e.length?"alert":"status"),this.l.disabled=e.length>0,e}condition(){return{kind:"condition",colId:this.fields[0]?.colId??"",filter:_(this.fields[0])}}n(e,t){this.t()&&(e(),this.changed=!0,this.refresh(),(t?this.controls.get(t):this.e.body.querySelector("button,select,input"))?.focus())}d(e,t){return this.controls.set(t,e),e}s(e,t){let r=p(e,()=>this.n(t));return r.disabled=!this.fields.length||this.u>=512,r}p(e,t,r,o){return e.kind==="group"?this.m(e,t,r,o):this.g(e,t,o)}m(e,t,r,o){let i=l("fieldset","mach-workbench__group");i.append(l("legend",void 0,`\u6761\u4EF6\u7EC4 ${r+1}`));let s=l("div","mach-workbench__tools");s.append(this.d(T("\u6761\u4EF6\u7EC4\u5173\u7CFB",[{value:"and",label:"\u5168\u90E8\u6EE1\u8DB3 AND"},{value:"or",label:"\u4EFB\u4E00\u6EE1\u8DB3 OR"}],e.operator,g=>this.n(()=>{e.operator=g},`${t}.operator`)),`${t}.operator`));let a=l("input");a.type="checkbox",a.checked=e.not===!0,a.addEventListener("change",()=>{e.not=a.checked,this.changed=!0,this.i()});let c=l("label","mach-workbench__check","\u6392\u9664\u6574\u7EC4 NOT");c.prepend(a),s.append(c,p("\u5220\u9664\u6761\u4EF6\u7EC4",()=>this.n(o))),i.append(s),e.children.forEach((g,h)=>i.append(this.p(g,`${t}.${h}`,r+1,()=>{e.children.splice(h,1)})));let u=this.s("\u6DFB\u52A0\u5B50\u7EC4",()=>{e.children.push({kind:"group",operator:"and",children:[]})});return u.disabled||(u.disabled=r>=15),i.append(this.s("\u6DFB\u52A0\u6761\u4EF6",()=>{e.children.push(this.condition())}),u),i}g(e,t,r){let o=l("div","mach-workbench__condition"),i=this.fields.find(a=>a.colId===e.colId),s=this.fields.map(a=>({value:a.colId,label:a.label}));return i||s.unshift({value:e.colId,label:`\u5DF2\u79FB\u9664\u5B57\u6BB5\uFF1A${e.colId}`}),o.append(this.d(T("\u7B5B\u9009\u5B57\u6BB5",s,e.colId,a=>this.n(()=>{e.colId=a,e.filter=_(this.fields.find(c=>c.colId===a))},`${t}.field`)),`${t}.field`)),o.append(p("\u5220\u9664\u6761\u4EF6",()=>this.n(r))),i&&i.type!==e.filter.type&&o.append(p("\u91CD\u7F6E\u5B57\u6BB5\u6761\u4EF6",()=>this.n(()=>{e.filter=_(i)}))),e.filter.type==="set"?this.y(o,e.filter,i):this.v(o,e.filter,t),o}y(e,t,r){let o=[...r?.options??[]];for(let s of t.values)o.some(a=>Object.is(a.value,s))||o.push({value:s,label:`${String(s??"\u7A7A\u503C")}\uFF08\u5F53\u524D\u5B57\u5178\u5916\uFF09`});let i=l("select","mach-workbench__input mach-workbench__dictionary");i.multiple=!0,i.setAttribute("aria-label","\u5B57\u5178\u9009\u9879\uFF08\u652F\u6301\u591A\u9009\uFF09"),o.forEach((s,a)=>{let c=l("option",void 0,s.label);c.value=String(a),c.selected=t.values.some(u=>Object.is(u,s.value)),i.append(c)}),i.addEventListener("change",()=>{t.values=[...i.selectedOptions].map(s=>o[Number(s.value)].value),this.changed=!0,this.i()}),e.append(i,l("small","mach-workbench__hint",o.length?"\u53EF\u591A\u9009\uFF1B\u672A\u9009\u62E9\u65F6\u4E0D\u4F1A\u5339\u914D\u4EFB\u4F55\u8BB0\u5F55\u3002":"\u8BF7\u5728\u5217\u5B9A\u4E49\u6216 fields.options \u914D\u7F6E\u5B57\u5178\u3002"))}v(e,t,r){t.conditions.length>1&&e.append(T("\u5B57\u6BB5\u6761\u4EF6\u5173\u7CFB",[{value:"and",label:"\u5E76\u4E14 AND"},{value:"or",label:"\u6216\u8005 OR"}],t.operator??"and",i=>{t.operator=i,this.changed=!0})),t.conditions.forEach((i,s)=>{let a=l("div","mach-workbench__values");a.append(this.d(T("\u5339\u914D\u65B9\u5F0F",z[t.type].map(c=>({value:c,label:j[c]})),i.match,c=>this.n(()=>{i.match=c},`${r}.${s}.match`)),`${r}.${s}.match`)),this.b(a,i,t.type),t.conditions.length>1&&a.append(p("\u5220\u9664\u5B57\u6BB5\u6761\u4EF6",()=>this.n(()=>{t.conditions.splice(s,1)}))),e.append(a)});let o=p("\u6DFB\u52A0\u5B57\u6BB5\u6761\u4EF6",()=>this.n(()=>{t.conditions.push({match:t.type==="text"?"contains":"equals"})}));o.disabled=t.conditions.length>=20,e.append(o)}b(e,t,r){if(t.match==="blank"||t.match==="notBlank")return;let o=t,i=t.match==="inRange"?["value","value2"]:["value"];for(let s of i){let a=l("input","mach-workbench__input");a.type=r==="text"?"text":r,r==="number"&&(a.step="any"),a.setAttribute("aria-label",s==="value2"?"\u533A\u95F4\u7EC8\u70B9":"\u7B5B\u9009\u503C"),a.value=o[s]==null?"":String(o[s]),a.addEventListener("input",()=>{a.value?o[s]=r==="number"?a.valueAsNumber:a.value:delete o[s],this.changed=!0,this.i()}),e.append(a)}}};function Ce(n,e){if(e.serverData===void 0)return null;let t=n.rows.getById(e.rowId);if(!t||t.data==null)return null;let r=n.getOption("rowKey");if(r){let s=typeof r=="function"?r(e.serverData):I(e.serverData,r);return String(s)===e.rowId?{data:e.serverData,mergeIntoCurrent:!1}:null}let o=t.data;return o!=null&&e.serverData!=null&&typeof o=="object"&&typeof e.serverData=="object"?{data:o,mergeIntoCurrent:!0}:null}function G(n,e,t){if(n.isDestroyed())return!1;if(t==="keepLocal")return!0;let r=Ce(n,e);return r?(n.editing.rollback([e.rowId]),r.mergeIntoCurrent&&Object.assign(r.data,e.serverData),n.rows.transact({update:[r.data]}),n.editing.markSaved([e.rowId]),!0):!1}function X(n,e){return new L(n,e)}var L=class{constructor(e,t){this.options=t;this.destroyed=!1;this.busy=!1;this.c=!1;this.page=0;this.r=new Map;this.issues=new Map;this.labels=new Map;if(t.api.isDestroyed())throw new Error("Cannot mount review on a destroyed grid");this.e=E(e,"\u4FEE\u6539\u5BA1\u9605",()=>{this.destroyed||(this.destroy(),t.onClose?.())},t.api),this.o=[t.api.on("dirtyStateChanged",()=>this.w()),t.api.on("gridDestroyed",()=>this.destroy())],this.refresh(),this.e.root.focus()}refresh(){if(!this.t())return;let e=this.options.api.editing.getChanges();this.labels=Ie(this.options.api.columns.getDefinitions()??[]);let t=new Set(e.map(r=>r.rowId));for(let[r,o]of this.issues)(!t.has(r)||!this.a(o))&&this.issues.delete(r);for(let r of this.r.keys())t.has(r)||this.r.delete(r);this.page=Math.min(this.page,Math.max(0,Math.ceil(e.length/20)-1)),this.e.syncTheme(),this.e.root.setAttribute("aria-busy",String(this.busy)),this.e.body.replaceChildren(),e.length||this.e.body.append(l("p","mach-workbench__empty","\u5F53\u524D\u6CA1\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539\u3002"));for(let r of e.slice(this.page*20,(this.page+1)*20))this.e.body.append(this.T(r));this.D(e.length),this.busy?this.e.status.textContent="\u6B63\u5728\u4FDD\u5B58\uFF1B\u65B0\u4FEE\u6539\u4F1A\u4FDD\u7559\uFF0C\u5173\u95ED\u4E0D\u53D6\u6D88\u8BF7\u6C42\u3002":this.options.save?this.e.status.textContent=`${e.length} \u884C\u5F85\u4FDD\u5B58 \xB7 ${this.issues.size} \u884C\u5B58\u5728\u5931\u8D25\u6216\u51B2\u7A81\u3002`:this.e.status.textContent="\u5C1A\u672A\u63D0\u4F9B\u4FDD\u5B58\u5904\u7406\u5668\uFF0C\u53EF\u67E5\u770B\u3001\u5B9A\u4F4D\u6216\u64A4\u9500\u3002"}destroy(){this.destroyed||(this.destroyed=!0,this.o.splice(0).forEach(e=>e()),this.e.destroy(),this.issues.clear(),this.r.clear())}t(){return!this.destroyed&&!this.options.api.isDestroyed()}w(){this.c||!this.t()||(this.c=!0,queueMicrotask(()=>{this.c=!1,this.t()&&this.refresh()}))}a(e){let t=this.options.api.rows.getById(e.detail.rowId);return t===e.node&&t?.data===e.data}async save(e){if(!this.t()||this.busy||!this.options.save)return;let t=e?new Set(e):null,r=this.options.api.editing.getChanges().filter(i=>!t||t.has(i.rowId));if(!r.length)return;let o=new Map(r.map(i=>{let s=this.options.api.rows.getById(i.rowId);return[i.rowId,{node:s,data:s?.data}]}));this.busy=!0,this.refresh();try{let i=await this.options.api.editing.save(this.options.save,e);if(!this.t())return;this.E(r,o,i)}catch(i){if(!this.t())return;for(let s of r){let a=this.f(s.rowId,o);a&&this.issues.set(s.rowId,{kind:"\u5931\u8D25",detail:{rowId:s.rowId,retryable:!0,message:b(i)},node:a,data:a.data})}}finally{this.t()&&(this.busy=!1,this.refresh())}}f(e,t){let r=t.get(e);return r?.node===this.options.api.rows.getById(e)&&r?.node?.data===r?.data?r?.node:void 0}E(e,t,r){let o=new Map(r.conflicts.map(s=>[s.rowId,s])),i=new Map(r.failures.map(s=>[s.rowId,s]));for(let s of e){let a=this.f(s.rowId,t);if(!a)continue;this.issues.delete(s.rowId);let c=o.get(s.rowId),u=c??i.get(s.rowId);u&&this.issues.set(s.rowId,{kind:c?"\u51B2\u7A81":"\u5931\u8D25",detail:u,node:a,data:a.data})}}rollback(e){!this.t()||this.busy||(this.options.api.editing.rollback(e),this.refresh())}h(){return[...this.issues].filter(([,e])=>e.detail.retryable!==!1&&this.a(e)).map(([e])=>e)}D(e){this.e.footer.replaceChildren();let t=p("\u4FDD\u5B58\u5168\u90E8\u4FEE\u6539",()=>{this.save()},"mach-workbench__button--primary");t.disabled=this.busy||!this.options.save||!e;let r=p("\u4EC5\u91CD\u8BD5\u5931\u8D25\u4E0E\u51B2\u7A81",()=>{this.save(this.h())});r.disabled=this.busy||!this.options.save||!this.h().length;let o=p("\u64A4\u9500\u5168\u90E8\u4FEE\u6539",()=>this.rollback());o.disabled=this.busy||!e;let i=l("nav","mach-workbench__tools");i.setAttribute("aria-label","\u4FEE\u6539\u8BB0\u5F55\u5206\u9875");let s=p("\u4E0A\u4E00\u9875",()=>{this.page--,this.refresh(),C(this.e.footer,"\u4E0A\u4E00\u9875")}),a=p("\u4E0B\u4E00\u9875",()=>{this.page++,this.refresh(),C(this.e.footer,"\u4E0B\u4E00\u9875")});s.disabled=this.page<=0,a.disabled=(this.page+1)*20>=e,i.append(s,l("span",void 0,`\u7B2C ${this.page+1} / ${Math.max(1,Math.ceil(e/20))} \u9875`),a),this.e.footer.append(i,o,r,t)}T(e){let t=l("article","mach-review__row");t.dataset.rowId=e.rowId;let r=l("div","mach-workbench__tools");r.append(l("h3","mach-review__title",`\u8BB0\u5F55 ${e.rowId} \xB7 ${e.cells.length} \u5904\u4FEE\u6539`));let o=p("\u64A4\u9500\u672C\u884C",()=>this.rollback([e.rowId]));o.disabled=this.busy,r.append(o);let i=this.issues.get(e.rowId);i&&this.A(t,i),t.prepend(r);let s=l("table","mach-review__table");s.setAttribute("aria-label",`\u8BB0\u5F55 ${e.rowId} \u7684\u4FEE\u6539\u660E\u7EC6`);let a=l("thead"),c=l("tr");for(let h of["\u5B57\u6BB5","\u539F\u503C","\u65B0\u503C","\u5B9A\u4F4D"]){let y=l("th",void 0,h);y.scope="col",c.append(y)}a.append(c);let u=l("tbody"),g=Math.min(this.r.get(e.rowId)??0,Math.max(0,Math.ceil(e.cells.length/20)-1));for(let h of e.cells.slice(g*20,(g+1)*20)){let y=l("tr"),f=i?.detail.colIds?.includes(h.colId);f&&y.classList.add("mach-review__cell--issue");let d=l("th",void 0,this.labels.get(h.colId)??h.colId);d.title=h.colId,f&&d.append(l("small","mach-workbench__hint"," \xB7 \u95EE\u9898\u5B57\u6BB5")),d.scope="row";let m=l("td");m.append(p("\u5B9A\u4F4D\u5B57\u6BB5",()=>this.C(e.rowId,h.colId))),y.append(d,l("td","mach-review__old",N(h.originalValue)),l("td","mach-review__new",N(h.value)),m),u.append(y)}return s.append(a,u),t.append(s),e.cells.length>20&&t.append(this.I(e,g)),t}A(e,t){let r=l("p","mach-review__issue",`${t.kind}${t.detail.code?` [${t.detail.code}]`:""}\uFF1A${t.detail.message}`);r.setAttribute("role","alert");let o=t.detail;if(o.serverVersion!=null&&r.append(l("span","mach-workbench__hint",` \xB7 \u670D\u52A1\u7AEF\u7248\u672C ${o.serverVersion}`)),t.detail.retryable===!1&&r.append(l("span","mach-workbench__hint"," \xB7 \u65E0\u6CD5\u76F4\u63A5\u91CD\u8BD5\uFF0C\u8BF7\u5148\u4FEE\u6B63\u6570\u636E\u3002")),e.append(r),o.serverData!=null){let i=l("details","mach-review__server");i.append(l("summary",void 0,"\u67E5\u770B\u670D\u52A1\u7AEF\u8BB0\u5F55"),l("pre",void 0,N(o.serverData))),e.append(i)}if(t.kind==="\u51B2\u7A81"){let i=p("\u4FDD\u7559\u672C\u5730\u5E76\u91CD\u8BD5",()=>{!this.t()||this.busy||!this.a(t)||G(this.options.api,o,"keepLocal")&&this.save([o.rowId])});i.disabled=this.busy||!this.options.save||o.retryable===!1;let s=p("\u91C7\u7528\u670D\u52A1\u7AEF\u8BB0\u5F55",()=>{!this.t()||this.busy||!this.a(t)||this.acceptServer(o)});s.disabled=this.busy||o.serverData==null,e.append(i,s)}}acceptServer(e){try{if(G(this.options.api,e,"acceptServer")){this.issues.delete(e.rowId),this.refresh();return}this.e.status.textContent="\u670D\u52A1\u7AEF\u8BB0\u5F55\u7F3A\u5931\u6216\u884C\u6807\u8BC6\u4E0D\u4E00\u81F4\uFF0C\u65E0\u6CD5\u91C7\u7528\uFF1B\u672C\u5730\u4FEE\u6539\u5DF2\u4FDD\u7559\u3002"}catch(t){this.e.status.textContent=b(t)}this.e.status.setAttribute("role","alert")}I(e,t){let r=l("div","mach-workbench__tools"),o=p("\u4E0A\u4E00\u7EC4\u5B57\u6BB5",()=>{this.r.set(e.rowId,t-1),this.refresh()}),i=p("\u4E0B\u4E00\u7EC4\u5B57\u6BB5",()=>{this.r.set(e.rowId,t+1),this.refresh()});return o.disabled=t===0,i.disabled=(t+1)*20>=e.cells.length,r.append(o,l("span",void 0,`\u5B57\u6BB5\u7B2C ${t*20+1}\u2013${Math.min((t+1)*20,e.cells.length)} / ${e.cells.length}`),i),r}C(e,t){let r=this.options.api.rows.getById(e);if(!r||r.rowIndex<0){this.e.status.textContent="\u8BB0\u5F55\u672A\u5728\u5F53\u524D\u89C6\u56FE\uFF0C\u8BF7\u8C03\u6574\u7B5B\u9009\u6216\u5206\u9875\u540E\u5B9A\u4F4D\u3002";return}this.options.api.view.scrollToRow(r.rowIndex,"nearest");let o=this.options.api.view.getRoot(),s=[...o?.querySelectorAll(`.mach-row[data-index="${r.rowIndex}"] .mach-cell`)??[]].find(a=>a.dataset.colId===t);s?.dispatchEvent(new MouseEvent("mousedown",{bubbles:!0,button:0})),window.dispatchEvent(new MouseEvent("mouseup")),s||(this.e.status.textContent=`\u5DF2\u5B9A\u4F4D\u8BB0\u5F55\uFF1B\u5B57\u6BB5 ${t} \u672A\u663E\u793A\uFF0C\u8BF7\u8C03\u6574\u5217\u663E\u793A\u6216\u6A2A\u5411\u6EDA\u52A8\u3002`),o?.focus()}};function N(n){if(n===null)return"\u7A7A\u503C";if(n===void 0)return"\u672A\u8BBE\u7F6E";if(typeof n=="string")return n||"\u7A7A\u5B57\u7B26\u4E32";if(typeof n=="function")return"[\u51FD\u6570]";if(typeof n=="number"||typeof n=="boolean"||typeof n=="bigint"||typeof n=="symbol")return String(n);try{return JSON.stringify(n)??"\u672A\u8BBE\u7F6E"}catch{return"[\u65E0\u6CD5\u5E8F\u5217\u5316\u7684\u503C]"}}function Ie(n){let e=new Map;for(let t of D(n)){let r=t.colId??t.field;r&&e.set(r,t.headerName??r)}return e}function ke(n){let e=n.getOption("defaultColDef")?.rowGroup;for(let t of D(n.columns.getDefinitions()??[]))if((t.rowGroup??e)===!0)return!0;return!1}function _e(n,e){let t=n.rows.isRemote(),r=!!n.getOption("dataProcessor"),i=r&&!e&&!n.getOption("treeData")&&!n.getOption("masterDetail")?"client-or-processor":"client";return{sorting:t?"datasource":n.getOption("manualSorting")?"host":i,filtering:t?"datasource":n.getOption("manualFiltering")?"host":i,sortActive:n.sorting.getModel().length>0,filterActive:n.filtering.isPresent(),processorConfigured:r}}function H(n,e){let t=e?{code:"GRID_DESTROYED",message:"\u8868\u683C\u5DF2\u9500\u6BC1\uFF0C\u4E0D\u80FD\u68C0\u67E5\u6216\u53D1\u8D77\u62D6\u62FD\u3002"}:{code:"ROW_UNAVAILABLE",message:"\u5F53\u524D\u6A21\u578B\u65E0\u6B64 ID\uFF1A\u53EF\u80FD\u672A\u52A0\u8F7D\u3001\u5DF2\u79FB\u9664\u6216\u67E5\u8BE2\u4E0D\u540C\uFF1B\u68C0\u67E5\u4E0D\u8BF7\u6C42\u6570\u636E\u3002"};return{rowId:n,availability:e?"destroyed":"missing",visibility:"unknown",rowIndex:null,rendered:!1,drag:{allowed:!1,policyEvaluated:!1,reasons:[t]},execution:null,notes:[t]}}function Re(n,e,t,r){let o=[],i=(s,a)=>{o.push({code:s,message:a})};return(e.data==null||e.isGroup||e.isDetail)&&i("STRUCTURAL_ROW","\u5206\u7EC4\u3001\u660E\u7EC6\u3001\u65E0\u6570\u636E\u884C\u4E0D\u53EF\u62D6\u62FD\u3002"),(e.loading||e.treeLoading)&&i("ROW_LOADING","\u8BE5\u884C\u6B63\u5728\u52A0\u8F7D\uFF0C\u4E0D\u80FD\u62D6\u62FD\u3002"),(n.editing.isRowActive()||n.view.getRoot()?.querySelector(".mach-cell--editing"))&&i("EDITING_ACTIVE","\u5B58\u5728\u6D3B\u52A8\u7F16\u8F91\uFF0C\u8BF7\u5148\u4FDD\u5B58\u6216\u53D6\u6D88\u3002"),t&&i("GROUPING_ACTIVE","\u81EA\u52A8\u5206\u7EC4\u6A21\u5F0F\u4E0D\u652F\u6301\u884C\u62D6\u62FD\u3002"),xe(n,r,o),o}function xe(n,e,t){if(n.getOption("applyRowDrag")===!1)return;let r=(o,i)=>{t.push({code:o,message:i})};n.getOption("treeData")&&r("MANAGED_TREE","\u6258\u7BA1\u91CD\u6392\u4EC5\u652F\u6301\u6241\u5E73\u6570\u636E\uFF1B\u5C42\u7EA7\u6392\u5E8F\u9700\u975E\u6258\u7BA1\u7B56\u7565\u3002"),n.rows.isRemote()&&r("MANAGED_DATASOURCE","datasource \u4E0D\u5141\u8BB8\u9ED8\u8BA4\u6258\u7BA1\u91CD\u6392\uFF0C\u8BF7\u63D0\u4EA4\u7A33\u5B9A ID \u6392\u5E8F\u610F\u56FE\u3002"),e.processorConfigured&&r("MANAGED_PROCESSOR","dataProcessor \u4E0D\u652F\u6301\u6258\u7BA1\u91CD\u6392\u3002"),e.sortActive&&r("MANAGED_SORT","\u5217\u6392\u5E8F\u4F1A\u8986\u76D6\u4E1A\u52A1\u987A\u5E8F\uFF0C\u8BF7\u6E05\u9664\u6392\u5E8F\u6216\u4F7F\u7528\u975E\u6258\u7BA1\u7B56\u7565\u3002")}function Se(n,e,t){if(t.length)return!1;try{let r=n.getOption("rowDragPolicy");if(!r?.canDrag)return!1;let o=r.canDrag({api:n,node:e})??!0;o!==!0&&t.push({code:"POLICY_REJECTED",message:typeof o=="string"?o:"\u4E1A\u52A1 canDrag \u5224\u5B9A\u62D2\u7EDD\u62D6\u62FD\u3002"})}catch(r){t.push({code:"POLICY_ERROR",message:`\u4E1A\u52A1 canDrag \u5224\u5B9A\u5F02\u5E38\uFF1A${b(r)}`})}return!0}function Me(n,e){let t=e.rowIndex>=0&&n.rows.getAt(e.rowIndex)===e,o=[...n.view.getRoot()?.querySelectorAll(".mach-row[data-id]")??[]].find(i=>i.dataset.id===e.id);return{displayed:t,rendered:!!o,handle:o?.querySelector(".mach-row-drag-handle")}}function Fe(n){return n.displayed?n.rendered?[]:[{code:"OUTSIDE_RENDER_WINDOW",message:"\u663E\u793A\u6A21\u578B\u5185\u672A\u6E32\u67D3 DOM\uFF1A\u53EF\u80FD\u4F4D\u4E8E\u865A\u62DF\u7A97\u53E3\u5916\uFF0C\u4E0D\u80FD\u5224\u5B9A\u4E3A\u88AB\u8FC7\u6EE4\u3002"}]:[{code:"ROW_NOT_DISPLAYED",message:"\u5DF2\u52A0\u8F7D\u4F46\u672A\u663E\u793A\uFF1A\u53EF\u80FD\u88AB\u8FC7\u6EE4\u3001\u7236\u9879\u6298\u53E0\u3001\u5206\u9875\u6216\u4FDD\u7559\u8349\u7A3F\uFF0C\u5177\u4F53\u539F\u56E0\u672A\u516C\u5F00\u3002"}]}function Oe(n,e,t){return t?null:n.length?!1:e?!e.disabled:null}function R(n,e){if(n.isDestroyed())return H(e,!0);let t=ke(n),r=_e(n,t),o=n.rows.getById(e);if(!o)return{...H(e,!1),execution:r};let i=o.data,s=Me(n,o),a=Re(n,o,t,r),c=Se(n,o,a);if(n.isDestroyed())return H(e,!0);let u=Fe(s);s.handle?.disabled&&!a.length&&a.push({code:"HANDLE_DISABLED",message:"\u624B\u67C4\u5DF2\u7981\u7528\uFF0C\u5177\u4F53\u539F\u56E0\u672A\u516C\u5F00\uFF1B\u670D\u52A1\u7AEF\u5206\u9875\u7B49\u573A\u666F\u4E0D\u652F\u6301\u6258\u7BA1\u91CD\u6392\u3002"});let g=n.rows.getById(e)!==o||o.data!==i;return g&&u.push({code:"INSPECTION_CHANGED",message:"\u4E1A\u52A1\u5224\u5B9A\u671F\u95F4\u8BB0\u5F55\u88AB\u66FF\u6362\uFF0C\u7ED3\u679C\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u68C0\u67E5\u3002"}),{rowId:e,availability:"loaded",visibility:s.displayed?"displayed":"not-displayed",rowIndex:s.displayed?o.rowIndex:null,rendered:s.rendered,execution:r,notes:u,drag:{allowed:Oe(a,s.handle,g),policyEvaluated:c,reasons:a}}}var Ge=["theme","size","columnLayout","editType","pagination","rowSelection","applyRowDrag","rowStyleRules","persistence","maxBlocksInCache"];function Y(n,e){let t=!1,r="theme",o="",i=null,s=null,a=E(n,"\u8868\u683C\u8BCA\u65AD",()=>{t||(u.destroy(),e.onClose?.())},e.api),c=()=>!t&&!e.api.isDestroyed(),u={refresh(){if(!c())return;let f=a.body.contains(document.activeElement)?document.activeElement:null;a.syncTheme(),a.body.replaceChildren();let d=e.api.diagnostics.get(),m=l("dl","mach-diagnostics__overview");for(let[v,$]of Object.entries({\u7248\u672C:d.version,\u603B\u884C\u6570:d.rowCount,\u5DF2\u6E32\u67D3\u884C\u6570:d.renderedRowCount,\u5217\u6570:d.columnCount,\u5DF2\u9009\u884C:d.selectedRowCount,\u5F85\u4FDD\u5B58\u884C:d.dirtyRowCount,\u6570\u636E\u6A21\u5F0F:d.infinite?"\u8FDC\u7A0B":"\u672C\u5730"}))m.append(l("dt",void 0,v),l("dd",void 0,String($)));a.body.append(m,K("\u6D3B\u52A8\u6269\u5C55",d.activeFeatures.length?x(d.activeFeatures):"\u65E0\u6D3B\u52A8\u6269\u5C55"),K("\u6027\u80FD\u4E0E\u8C03\u5EA6\u5FEB\u7167",x({performance:d.performance,updates:d.updates}))),g(),h();let w=l("section","mach-diagnostics__section");w.append(l("h3",void 0,`\u6700\u8FD1\u9519\u8BEF\uFF08${d.recentErrors.length}\uFF09`));for(let v of d.recentErrors)w.append(l("p","mach-review__issue",`${v.code} \xB7 ${v.source} \xB7 ${v.message}`));if(d.recentErrors.length||w.append(l("p","mach-workbench__hint","\u5C1A\u65E0\u5DF2\u8BB0\u5F55\u9519\u8BEF\u3002")),a.body.append(w),a.status.textContent="\u516C\u5F00\u8BCA\u65AD API \u624B\u52A8\u5FEB\u7167\uFF1B\u672A\u63D0\u4F9B\u6765\u6E90\u65F6\u663E\u793A\u672A\u77E5\u3002",f&&document.activeElement===document.body){let v=f.getAttribute("aria-label");((a.body.contains(f)?f:v?[...a.body.querySelectorAll("[aria-label]")].find(Q=>Q.getAttribute("aria-label")===v):null)??a.root).focus()}},destroy(){t||(t=!0,y(),a.destroy(),i=null,s=null)}};function g(){let f=l("section","mach-diagnostics__section");f.append(l("h3",void 0,"\u914D\u7F6E\u6765\u6E90"),T("\u914D\u7F6E\u9879",Ge.map(d=>({value:d,label:d})),r,d=>{r=d,u.refresh(),C(a.body,"\u914D\u7F6E\u9879")}));try{let d=e.explain?.(r),m=d?d.value:e.api.getOption(r);if(f.append(l("p",void 0,`\u5F53\u524D\u503C\uFF1A${x(m)}`),l("p",void 0,`\u6765\u6E90\uFF1A${d?.source??"\u672A\u77E5\uFF08\u672A\u4F20\u5165\u914D\u7F6E\u89E3\u6790\u5668\u7684 explain\uFF09"}`)),d){let w=l("ol");for(let v of d.layers)w.append(l("li",void 0,`${v.name}: ${x(v.value)}`));f.append(w)}}catch(d){f.append(l("p","mach-review__issue",b(d)))}a.body.append(f)}function h(){let f=l("section","mach-diagnostics__section");f.append(l("h3",void 0,"\u8BB0\u5F55\u884C\u4E3A\u4E0E\u6761\u4EF6\u884C\u6837\u5F0F\u89E3\u91CA"));let d=l("input","mach-workbench__input");d.setAttribute("aria-label","\u68C0\u67E5\u8BB0\u5F55 ID"),d.value=o,d.placeholder="\u8F93\u5165\u7A33\u5B9A\u884C ID",d.addEventListener("input",()=>{o=d.value}),f.append(d,p("\u68C0\u67E5\u8BB0\u5F55",()=>{i=R(e.api,o),s=Le(e,o),u.refresh(),a.body.querySelector(".mach-diagnostics__rules")?.focus()}),l("p","mach-workbench__hint","\u4EC5\u68C0\u67E5\u6B64\u884C canDrag \u548C\u6837\u5F0F\u6761\u4EF6\uFF0C\u53EF\u80FD\u4EA7\u751F\u4E1A\u52A1\u526F\u4F5C\u7528\u3002\u5F02\u5E38\u9694\u79BB\uFF0C\u4E0D\u626B\u63CF\u5168\u8868\u6216\u8BF7\u6C42\u8FDC\u7A0B\u6570\u636E\u3002\u7ED3\u679C\u4E3A\u4E0A\u6B21\u5FEB\u7167\uFF0C\u89C4\u5219\u6309\u5E8F\u9996\u6761\u547D\u4E2D\u3002")),i&&f.append(Ne(i)),s&&f.append(s),a.body.append(f)}if(e.api.isDestroyed())throw a.destroy(),new Error("Cannot mount diagnostics on a destroyed grid");let y=e.api.on("gridDestroyed",()=>u.destroy());return a.footer.append(p("\u5237\u65B0\u8BCA\u65AD",()=>u.refresh())),u.refresh(),a.root.focus(),u}var J={client:"\u5BA2\u6237\u7AEF\u6267\u884C",host:"\u5BBF\u4E3B\u624B\u52A8\u5904\u7406",datasource:"datasource \u8FDC\u7A0B\u5904\u7406","client-or-processor":"\u5BA2\u6237\u7AEF\u6216 dataProcessor\uFF08\u5B9E\u9645\u5206\u652F\u672A\u516C\u5F00\uFF09"};function Ne(n){let e=l("section","mach-diagnostics__inspection");e.append(l("h4",void 0,`\u8BB0\u5F55 ${n.rowId} \u7684\u68C0\u67E5\u5FEB\u7167`),l("p",void 0,`\u6A21\u578B\uFF1A${n.availability} \xB7 \u663E\u793A\uFF1A${n.visibility} \xB7 DOM\uFF1A${n.rendered?"\u5DF2\u6E32\u67D3":"\u672A\u6E32\u67D3"}`),l("p",void 0,`\u62D6\u62FD\uFF1A${n.drag.allowed===null?"\u65E0\u6CD5\u786E\u8BA4\uFF0C\u53EF\u80FD\u672A\u6E32\u67D3\u624B\u67C4":n.drag.allowed?"\u5F53\u524D\u624B\u67C4\u53EF\u7528":"\u4E0D\u53EF\u7528"} \xB7 \u4E1A\u52A1\u5224\u5B9A\uFF1A${n.drag.policyEvaluated?"\u5DF2\u6267\u884C":"\u672A\u6267\u884C"}`));for(let r of[...n.drag.reasons,...n.notes])e.append(l("p","mach-workbench__hint",`${r.code} \xB7 ${r.message}`));let t=n.execution;return t&&e.append(l("p",void 0,`\u6392\u5E8F\uFF1A${J[t.sorting]}\uFF08${t.sortActive?"\u6709\u6761\u4EF6":"\u65E0\u6761\u4EF6"}\uFF09\uFF1B\u8FC7\u6EE4\uFF1A${J[t.filtering]}\uFF08${t.filterActive?"\u6709\u6761\u4EF6":"\u65E0\u6761\u4EF6"}\uFF09\u3002`)),e}function K(n,e){let t=l("section","mach-diagnostics__section");return t.append(l("h3",void 0,n),l("pre",void 0,e)),t}function x(n){if(typeof n=="function")return"[\u51FD\u6570]";let e=new WeakSet;try{return(JSON.stringify(n,(t,r)=>{if(typeof r=="function")return"[\u51FD\u6570]";if(r&&typeof r=="object"){if(e.has(r))return"[\u91CD\u590D\u6216\u5FAA\u73AF\u5F15\u7528]";e.add(r)}return r},2)??"\u672A\u8BBE\u7F6E").slice(0,6e3)}catch{return"[\u65E0\u6CD5\u5E8F\u5217\u5316]"}}function Le(n,e){let t=l("ol","mach-diagnostics__rules");t.tabIndex=-1;let r=n.api.rows.getById(e);if(r?.data==null||r.isGroup||r.isDetail||r.loading)return t.append(l("li",void 0,"\u8BB0\u5F55\u4E0D\u5B58\u5728\u6216\u4E0D\u9002\u7528\u6761\u4EF6\u884C\u6837\u5F0F\u3002")),t;let o=!1;for(let[i,s]of(n.api.getOption("rowStyleRules")??[]).entries()){let a="\u672A\u8FD0\u884C\uFF08\u524D\u5E8F\u89C4\u5219\u5DF2\u547D\u4E2D\uFF09";if(!o)try{o=s.when({data:r.data,node:r,api:n.api,rowPinned:null})===!0,a=o?"\u547D\u4E2D":"\u672A\u547D\u4E2D"}catch(u){a=`\u6761\u4EF6\u51FD\u6570\u5F02\u5E38\uFF1A${b(u)}`}let c=[s.tone,s.backgroundColor,s.color].filter(Boolean).join(" / ")||"\u672A\u6307\u5B9A\u989C\u8272";t.append(l("li",void 0,`\u89C4\u5219 ${i+1} \xB7 ${c} \xB7 ${a}`))}return t.children.length||t.append(l("li",void 0,"\u672A\u914D\u7F6E\u6761\u4EF6\u884C\u6837\u5F0F\u89C4\u5219\u3002")),t}0&&(module.exports={inspectGridRow,mountAdvancedFilterBuilder,mountChangeReview,mountDiagnostics});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.mach-workbench{--wb-bg: var(--mach-body-bg, #fff);--wb-fg: var(--mach-body-fg, #26303f);--wb-muted: var(--mach-header-fg, #475467);--wb-border: var(--mach-border-color, #e6eaf0);--wb-soft: var(--mach-header-bg, #f4f7fb);--wb-primary: var(--mach-primary, #2563eb);--wb-danger: var(--mach-danger, #b42318);display:flex;flex-direction:column;gap:12px;max-height:min(760px,80vh);min-width:0;padding:18px;border:1px solid var(--wb-border);border-radius:var(--mach-radius-lg, 8px);background:var(--wb-bg);color:var(--wb-fg);box-shadow:var(--mach-shadow-sm, 0 2px 12px #0f172a0d);font:var(--mach-font-size, 13px)/1.6 var(--mach-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", sans-serif);color-scheme:light}.mach-workbench[data-theme=dark]{--wb-bg: var(--mach-body-bg, #0d1526);--wb-fg: var(--mach-body-fg, #dbe4f0);--wb-muted: var(--mach-header-fg, #c3cee0);--wb-border: var(--mach-border-color, #33415e);--wb-soft: var(--mach-header-bg, #16213a);--wb-primary: var(--mach-primary, #60a5fa);--wb-danger: var(--mach-danger, #f87171);color-scheme:dark}.mach-workbench,.mach-workbench *{box-sizing:border-box}.mach-workbench__header,.mach-workbench__footer,.mach-workbench__tools,.mach-workbench__values{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.mach-workbench__header{justify-content:space-between;padding-bottom:12px;border-bottom:1px solid var(--wb-border)}.mach-workbench__title{margin:0;font-size:15px;font-weight:650;letter-spacing:.015em}.mach-workbench__body{min-height:100px;overflow:auto;padding:2px;overscroll-behavior:contain}.mach-workbench__footer{justify-content:flex-end;padding-top:12px;border-top:1px solid var(--wb-border)}.mach-workbench__button,.mach-workbench__input{min-height:34px;max-width:100%;margin:0;padding:6px 10px;border:1px solid var(--wb-border);border-radius:var(--mach-radius, 6px);color:var(--wb-fg);background:var(--wb-bg);font:inherit}.mach-workbench__button{cursor:pointer;white-space:nowrap}.mach-workbench__button:hover:not(:disabled){border-color:var(--wb-primary);background:var(--wb-soft)}.mach-workbench__button:disabled{cursor:default;opacity:.5}.mach-workbench__button--primary{border-color:var(--wb-primary);background:var(--wb-primary);color:var(--wb-bg);font-weight:600}.mach-workbench__button--primary:hover:not(:disabled){background:var(--wb-primary);filter:brightness(.94)}.mach-workbench :is(button,input,select,a):focus-visible{outline:2px solid var(--wb-primary);outline-offset:2px}.mach-workbench__input{width:auto;min-width:min(160px,100%)}.mach-workbench__input[type=number],.mach-workbench__input[type=date]{width:170px}.mach-workbench__input[type=text]{flex:1;min-width:min(200px,100%)}.mach-workbench__group{margin:10px 0;padding:12px;border:1px solid var(--wb-border);border-left:3px solid var(--wb-primary);border-radius:6px;min-width:0}.mach-workbench__group legend{padding:0 6px;color:var(--wb-muted);font-weight:600}.mach-workbench__group>.mach-workbench__button{margin-right:8px}.mach-workbench__condition{display:flex;flex-wrap:wrap;align-items:start;gap:8px;margin:12px 0;padding:12px;background:var(--wb-soft);border:1px solid var(--wb-border);border-radius:6px}.mach-workbench__values{flex:1 1 100%}.mach-workbench__dictionary{flex:1 1 100%;min-height:96px}.mach-workbench__check{display:inline-flex;gap:6px;align-items:center;white-space:nowrap}.mach-workbench__hint{flex:1 1 100%;color:var(--wb-muted)}.mach-workbench__status{min-height:24px;margin:0;color:var(--wb-muted)}.mach-workbench__status{white-space:pre-line}.mach-review__row{margin-bottom:14px;padding:12px;border:1px solid var(--wb-border);border-radius:6px;overflow:auto}.mach-review__title{flex:1;margin:0;font-size:13px;font-weight:650}.mach-review__table{width:100%;border-collapse:collapse;margin:10px 0}.mach-review__table th,.mach-review__table td{padding:7px 10px;text-align:left;border-bottom:1px solid var(--wb-border);max-width:300px;overflow-wrap:anywhere}.mach-review__table thead{background:var(--wb-soft)}.mach-review__old{color:var(--wb-muted)}.mach-review__new{font-weight:600}.mach-review__issue{color:var(--wb-danger);overflow-wrap:anywhere}.mach-review__cell--issue{border-left:3px solid var(--wb-danger)}.mach-review__server pre{overflow:auto;max-height:180px;white-space:pre-wrap}.mach-diagnostics__overview{display:grid;grid-template-columns:max-content 1fr;gap:6px 16px}.mach-diagnostics__overview dt{color:var(--wb-muted)}.mach-diagnostics__overview dd{margin:0;font-variant-numeric:tabular-nums}.mach-diagnostics__section{padding:12px 0;border-top:1px solid var(--wb-border)}.mach-diagnostics__section h3{margin:0 0 10px;font-size:13px}.mach-diagnostics__section pre{max-height:240px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0}.mach-diagnostics__rules{padding-left:22px}.mach-diagnostics__rules li{margin:6px 0}.mach-cell.mach-cell--multi-range{background-image:linear-gradient(color-mix(in srgb,var(--mach-primary, #2563eb) 10%,transparent),color-mix(in srgb,var(--mach-primary, #2563eb) 10%,transparent));outline:1px solid var(--mach-cell-focus-color, #2563eb);outline-offset:-1px}.mach-analysis__settings{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.mach-analysis__settings>fieldset{grid-column:1 / -1;margin:0}.mach-analysis__dimension{display:flex;flex-direction:column;gap:6px;font-weight:600}.mach-analysis__dimension select{min-height:110px;width:100%;font-weight:400}.mach-analysis__dimension small{font-weight:400}.mach-analysis__settings .mach-workbench__values{margin-bottom:8px}.mach-analysis__results{margin-top:20px;display:grid;gap:12px}.mach-analysis__chart{margin:0;padding:12px;border:1px solid var(--wb-border);border-radius:6px;background:var(--wb-bg)}.mach-analysis__chart svg{display:block;width:100%;max-height:300px;color:var(--wb-primary)}.mach-analysis__chart figcaption{margin-top:8px}.mach-analysis__table-wrap{overflow:auto;max-height:420px;border:1px solid var(--wb-border);border-radius:6px}.mach-analysis__table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums}.mach-analysis__table caption{padding:8px;text-align:left;color:var(--wb-muted)}.mach-analysis__table th,.mach-analysis__table td{padding:8px 12px;border-bottom:1px solid var(--wb-border);white-space:nowrap;text-align:right}.mach-analysis__table th:first-child{text-align:left}.mach-analysis__table thead,.mach-analysis__table tfoot{background:var(--wb-soft);font-weight:600}.mach-analysis__table thead th{position:sticky;top:0;background:var(--wb-soft)}.mach-workbench__status--error{color:var(--wb-danger)}.mach-workbench__empty{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:28px 12px;color:var(--wb-muted)}@media(max-width:560px){.mach-workbench{padding:12px}.mach-workbench__group{padding:8px}.mach-workbench__values>.mach-workbench__input{flex:1 1 100%;width:100%}.mach-analysis__settings{grid-template-columns:minmax(0,1fr)}}@media(forced-colors:active){.mach-workbench,.mach-workbench[data-theme]{--wb-bg: Canvas;--wb-fg: CanvasText;--wb-muted: CanvasText;--wb-border: CanvasText;--wb-soft: Canvas;--wb-primary: Highlight;--wb-danger: CanvasText;box-shadow:none}.mach-workbench__button--primary{color:HighlightText;background:Highlight}.mach-workbench__status--error{border-left:3px solid CanvasText;padding-left:8px}.mach-cell.mach-cell--multi-range{background-image:none;outline:2px solid Highlight;outline-offset:-2px}}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { F as FilterType, A as AdvancedFilterModel, j as SaveChangesHandler, c as GridOptions, b as GridApi } from './api-pOhyuSQk.cjs';
|
|
2
|
+
import { a as WorkbenchHandle, W as WorkbenchOptions } from './shared-Bi8hAuzn.cjs';
|
|
3
|
+
import { M as MachTableOptionExplanation } from './configuration-gAE1eZuB.cjs';
|
|
4
|
+
|
|
5
|
+
interface FilterField {
|
|
6
|
+
colId: string;
|
|
7
|
+
label?: string;
|
|
8
|
+
type?: FilterType;
|
|
9
|
+
options?: readonly {
|
|
10
|
+
label: string;
|
|
11
|
+
value: string | number | null;
|
|
12
|
+
}[];
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
interface AdvancedFilterBuilderOptions<TData = any> extends WorkbenchOptions<TData> {
|
|
16
|
+
/** Usually inferred from column definitions; provide only ambiguous/schema-specific fields. */
|
|
17
|
+
fields?: readonly FilterField[];
|
|
18
|
+
}
|
|
19
|
+
interface AdvancedFilterBuilder extends WorkbenchHandle {
|
|
20
|
+
getDraft(): AdvancedFilterModel | null;
|
|
21
|
+
setDraft(model: AdvancedFilterModel | null): void;
|
|
22
|
+
apply(): boolean;
|
|
23
|
+
cancel(): void;
|
|
24
|
+
}
|
|
25
|
+
/** Owns drafts only. Filtering, server requests and persistence remain in the existing GridApi. */
|
|
26
|
+
declare function mountAdvancedFilterBuilder<TData>(host: HTMLElement, options: AdvancedFilterBuilderOptions<TData>): AdvancedFilterBuilder;
|
|
27
|
+
|
|
28
|
+
interface ChangeReviewOptions<TData = any> extends WorkbenchOptions<TData> {
|
|
29
|
+
save?: SaveChangesHandler<TData>;
|
|
30
|
+
}
|
|
31
|
+
/** Save/rollback semantics belong to GridApi; this panel only owns presentation and retry selection. */
|
|
32
|
+
declare function mountChangeReview<TData>(host: HTMLElement, options: ChangeReviewOptions<TData>): WorkbenchHandle;
|
|
33
|
+
|
|
34
|
+
interface DiagnosticsOptions<TData = any> extends WorkbenchOptions<TData> {
|
|
35
|
+
/** Supply the configuration resolver's explain function; absent sources are reported as unknown. */
|
|
36
|
+
explain?: (key: keyof GridOptions<TData> | string) => MachTableOptionExplanation;
|
|
37
|
+
}
|
|
38
|
+
/** Manual snapshots only: no polling, mutation or automatic full-table rule evaluation. */
|
|
39
|
+
declare function mountDiagnostics<TData>(host: HTMLElement, options: DiagnosticsOptions<TData>): WorkbenchHandle;
|
|
40
|
+
|
|
41
|
+
type GridRowDiagnosticCode = "GRID_DESTROYED" | "ROW_UNAVAILABLE" | "ROW_NOT_DISPLAYED" | "OUTSIDE_RENDER_WINDOW" | "ROW_LOADING" | "STRUCTURAL_ROW" | "EDITING_ACTIVE" | "GROUPING_ACTIVE" | "MANAGED_TREE" | "MANAGED_DATASOURCE" | "MANAGED_PROCESSOR" | "MANAGED_SORT" | "HANDLE_DISABLED" | "POLICY_REJECTED" | "POLICY_ERROR" | "INSPECTION_CHANGED";
|
|
42
|
+
interface GridRowDiagnostic {
|
|
43
|
+
code: GridRowDiagnosticCode;
|
|
44
|
+
message: string;
|
|
45
|
+
}
|
|
46
|
+
type GridExecutionMode = "client" | "host" | "datasource" | "client-or-processor";
|
|
47
|
+
interface GridExecutionInspection {
|
|
48
|
+
sorting: GridExecutionMode;
|
|
49
|
+
filtering: GridExecutionMode;
|
|
50
|
+
sortActive: boolean;
|
|
51
|
+
filterActive: boolean;
|
|
52
|
+
processorConfigured: boolean;
|
|
53
|
+
}
|
|
54
|
+
interface GridRowInspection {
|
|
55
|
+
rowId: string;
|
|
56
|
+
availability: "loaded" | "missing" | "destroyed";
|
|
57
|
+
visibility: "displayed" | "not-displayed" | "unknown";
|
|
58
|
+
rowIndex: number | null;
|
|
59
|
+
rendered: boolean;
|
|
60
|
+
/** null means eligibility cannot be established without a current rendered handle. */
|
|
61
|
+
drag: {
|
|
62
|
+
allowed: boolean | null;
|
|
63
|
+
policyEvaluated: boolean;
|
|
64
|
+
reasons: GridRowDiagnostic[];
|
|
65
|
+
};
|
|
66
|
+
execution: GridExecutionInspection | null;
|
|
67
|
+
notes: GridRowDiagnostic[];
|
|
68
|
+
}
|
|
69
|
+
/** Explicit diagnostic only. Calls a meaningful row's canDrag policy; never enumerates rows or fetches data. */
|
|
70
|
+
declare function inspectGridRow<T>(api: GridApi<T>, rowId: string): GridRowInspection;
|
|
71
|
+
|
|
72
|
+
export { type AdvancedFilterBuilder, type AdvancedFilterBuilderOptions, type ChangeReviewOptions, type DiagnosticsOptions, type FilterField, type GridExecutionInspection, type GridExecutionMode, type GridRowDiagnostic, type GridRowDiagnosticCode, type GridRowInspection, WorkbenchHandle, WorkbenchOptions, inspectGridRow, mountAdvancedFilterBuilder, mountChangeReview, mountDiagnostics };
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { F as FilterType, A as AdvancedFilterModel, j as SaveChangesHandler, c as GridOptions, b as GridApi } from './api-pOhyuSQk.js';
|
|
2
|
+
import { a as WorkbenchHandle, W as WorkbenchOptions } from './shared-Bn77TiBm.js';
|
|
3
|
+
import { M as MachTableOptionExplanation } from './configuration-SYWVjGft.js';
|
|
4
|
+
|
|
5
|
+
interface FilterField {
|
|
6
|
+
colId: string;
|
|
7
|
+
label?: string;
|
|
8
|
+
type?: FilterType;
|
|
9
|
+
options?: readonly {
|
|
10
|
+
label: string;
|
|
11
|
+
value: string | number | null;
|
|
12
|
+
}[];
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
interface AdvancedFilterBuilderOptions<TData = any> extends WorkbenchOptions<TData> {
|
|
16
|
+
/** Usually inferred from column definitions; provide only ambiguous/schema-specific fields. */
|
|
17
|
+
fields?: readonly FilterField[];
|
|
18
|
+
}
|
|
19
|
+
interface AdvancedFilterBuilder extends WorkbenchHandle {
|
|
20
|
+
getDraft(): AdvancedFilterModel | null;
|
|
21
|
+
setDraft(model: AdvancedFilterModel | null): void;
|
|
22
|
+
apply(): boolean;
|
|
23
|
+
cancel(): void;
|
|
24
|
+
}
|
|
25
|
+
/** Owns drafts only. Filtering, server requests and persistence remain in the existing GridApi. */
|
|
26
|
+
declare function mountAdvancedFilterBuilder<TData>(host: HTMLElement, options: AdvancedFilterBuilderOptions<TData>): AdvancedFilterBuilder;
|
|
27
|
+
|
|
28
|
+
interface ChangeReviewOptions<TData = any> extends WorkbenchOptions<TData> {
|
|
29
|
+
save?: SaveChangesHandler<TData>;
|
|
30
|
+
}
|
|
31
|
+
/** Save/rollback semantics belong to GridApi; this panel only owns presentation and retry selection. */
|
|
32
|
+
declare function mountChangeReview<TData>(host: HTMLElement, options: ChangeReviewOptions<TData>): WorkbenchHandle;
|
|
33
|
+
|
|
34
|
+
interface DiagnosticsOptions<TData = any> extends WorkbenchOptions<TData> {
|
|
35
|
+
/** Supply the configuration resolver's explain function; absent sources are reported as unknown. */
|
|
36
|
+
explain?: (key: keyof GridOptions<TData> | string) => MachTableOptionExplanation;
|
|
37
|
+
}
|
|
38
|
+
/** Manual snapshots only: no polling, mutation or automatic full-table rule evaluation. */
|
|
39
|
+
declare function mountDiagnostics<TData>(host: HTMLElement, options: DiagnosticsOptions<TData>): WorkbenchHandle;
|
|
40
|
+
|
|
41
|
+
type GridRowDiagnosticCode = "GRID_DESTROYED" | "ROW_UNAVAILABLE" | "ROW_NOT_DISPLAYED" | "OUTSIDE_RENDER_WINDOW" | "ROW_LOADING" | "STRUCTURAL_ROW" | "EDITING_ACTIVE" | "GROUPING_ACTIVE" | "MANAGED_TREE" | "MANAGED_DATASOURCE" | "MANAGED_PROCESSOR" | "MANAGED_SORT" | "HANDLE_DISABLED" | "POLICY_REJECTED" | "POLICY_ERROR" | "INSPECTION_CHANGED";
|
|
42
|
+
interface GridRowDiagnostic {
|
|
43
|
+
code: GridRowDiagnosticCode;
|
|
44
|
+
message: string;
|
|
45
|
+
}
|
|
46
|
+
type GridExecutionMode = "client" | "host" | "datasource" | "client-or-processor";
|
|
47
|
+
interface GridExecutionInspection {
|
|
48
|
+
sorting: GridExecutionMode;
|
|
49
|
+
filtering: GridExecutionMode;
|
|
50
|
+
sortActive: boolean;
|
|
51
|
+
filterActive: boolean;
|
|
52
|
+
processorConfigured: boolean;
|
|
53
|
+
}
|
|
54
|
+
interface GridRowInspection {
|
|
55
|
+
rowId: string;
|
|
56
|
+
availability: "loaded" | "missing" | "destroyed";
|
|
57
|
+
visibility: "displayed" | "not-displayed" | "unknown";
|
|
58
|
+
rowIndex: number | null;
|
|
59
|
+
rendered: boolean;
|
|
60
|
+
/** null means eligibility cannot be established without a current rendered handle. */
|
|
61
|
+
drag: {
|
|
62
|
+
allowed: boolean | null;
|
|
63
|
+
policyEvaluated: boolean;
|
|
64
|
+
reasons: GridRowDiagnostic[];
|
|
65
|
+
};
|
|
66
|
+
execution: GridExecutionInspection | null;
|
|
67
|
+
notes: GridRowDiagnostic[];
|
|
68
|
+
}
|
|
69
|
+
/** Explicit diagnostic only. Calls a meaningful row's canDrag policy; never enumerates rows or fetches data. */
|
|
70
|
+
declare function inspectGridRow<T>(api: GridApi<T>, rowId: string): GridRowInspection;
|
|
71
|
+
|
|
72
|
+
export { type AdvancedFilterBuilder, type AdvancedFilterBuilderOptions, type ChangeReviewOptions, type DiagnosticsOptions, type FilterField, type GridExecutionInspection, type GridExecutionMode, type GridRowDiagnostic, type GridRowDiagnosticCode, type GridRowInspection, WorkbenchHandle, WorkbenchOptions, inspectGridRow, mountAdvancedFilterBuilder, mountChangeReview, mountDiagnostics };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var J=new Set(["contains","notContains","equals","notEquals","startsWith","endsWith","blank","notBlank"]),K=new Set(["equals","notEquals","lessThan","lessThanOrEqual","greaterThan","greaterThanOrEqual","inRange","blank","notBlank"]),Y=new Set(["equals","notEquals","lessThan","greaterThan","inRange","blank","notBlank"]);function Q(n){return n==null||typeof n=="string"||typeof n=="number"&&Number.isFinite(n)}function Z(n){return n==="text"?J:n==="number"?K:Y}function ee(n,e,t){if(n==null||typeof n!="object")return null;let r=n;return typeof r.match!="string"||!t.has(r.match)?null:{match:r.match,...te(r,e)}}function te(n,e){let t=e==="number"?$(n.value):typeof n.value=="string"?n.value:void 0,r=e==="number"?$(n.value2):typeof n.value2=="string"?n.value2:void 0;return{...t!==void 0?{value:t}:{},...r!==void 0?{value2:r}:{}}}function $(n){return typeof n=="number"&&Number.isFinite(n)?n:void 0}function ne(n,e){let t=[],r=Z(e);for(let o of n.slice(0,20)){let i=ee(o,e,r);i&&t.push(i)}return t}function re(n){if(n==null||typeof n!="object")return null;let e=n;return e.type==="set"?Array.isArray(e.values)?{type:"set",values:e.values.filter(Q).slice(0,2e3)}:null:e.type!=="text"&&e.type!=="number"&&e.type!=="date"||!Array.isArray(e.conditions)?null:{type:e.type,...e.operator==="or"||e.operator==="and"?{operator:e.operator}:{},conditions:ne(e.conditions,e.type)}}function oe(n,e){if(typeof n.colId!="string"||!n.colId.trim())return null;let t=n.colId.trim();if(e.validColumnIds?.has(t)===!1)return null;let r=re(n.filter);return r?{kind:"condition",colId:t,filter:r}:null}function ie(n,e,t){if(!Array.isArray(n.children))return null;let r=[];for(let o of n.children){let i=B(o,e+1,t);i&&r.push(i)}return r.length===0?null:{kind:"group",operator:n.operator==="or"?"or":"and",children:r,...n.not===!0?{not:!0}:{}}}function se(n,e,t){return e<=16&&t.nodes<512&&n!=null&&typeof n=="object"}function B(n,e,t){if(!se(n,e,t)||t.ancestors.has(n))return null;t.ancestors.add(n),t.nodes++;let r=n,o=r.kind==="condition"?oe(r,t):r.kind==="group"?ie(r,e,t):null;return t.ancestors.delete(n),o}function k(n,e){if(n==null||typeof n!="object")return null;let t=n;if(t.version!==1||t.root==null)return null;let r=B(t.root,0,{ancestors:new WeakSet,nodes:0,validColumnIds:e});return r?{version:1,root:r}:null}var ae=["--mach-font-family","--mach-font-size","--mach-font-size-sm","--mach-header-font-weight","--mach-cell-padding","--mach-header-h","--mach-primary","--mach-primary-weak","--mach-success","--mach-warning","--mach-danger","--mach-info","--mach-border-color","--mach-border-width","--mach-header-bg","--mach-header-fg","--mach-body-bg","--mach-body-fg","--mach-row-hover-bg","--mach-radius-sm","--mach-radius","--mach-radius-lg","--mach-shadow-sm","--mach-shadow","--mach-transition","--mach-z-popup","--mach-z-menu"];function P(n,e){if(n.classList.add("mach-portal"),!e)return;let t=window.getComputedStyle(e);for(let r of ae){let o=t.getPropertyValue(r).trim();o&&n.style.setProperty(r,o)}n.style.colorScheme=t.colorScheme}function l(n,e,t){let r=document.createElement(n);return e&&(r.className=e),t!=null&&(r.textContent=t),r}function p(n,e,t=""){let r=l("button",`mach-workbench__button ${t}`.trim(),n);return r.type="button",r.addEventListener("click",e),r}function T(n,e,t,r){let o=l("select","mach-workbench__input");o.setAttribute("aria-label",n);for(let i of e){let s=l("option",void 0,i.label);s.value=i.value,o.append(s)}return o.value=t,o.addEventListener("change",()=>r(o.value)),o}function C(n,e){let t=[...n.querySelectorAll("button,select,input")].filter(o=>!o.disabled);(t.find(o=>o.getAttribute("aria-label")===e||o.textContent===e)??t[0])?.focus()}function E(n,e,t,r){let o=document.activeElement,i=l("section","mach-workbench");i.setAttribute("aria-label",e),i.tabIndex=-1;let s=l("header","mach-workbench__header");s.append(l("h2","mach-workbench__title",e),p("\u5173\u95ED",t));let a=l("div","mach-workbench__body"),c=l("p","mach-workbench__status");c.setAttribute("role","status"),c.setAttribute("aria-live","polite");let u=l("footer","mach-workbench__footer");i.append(s,a,c,u);let g=m=>{m.key!=="Escape"||m.isComposing||(m.preventDefault(),m.stopPropagation(),t())};i.addEventListener("keydown",g);let h=!1,y=r.view.getRoot(),f=()=>{h||(i.dataset.theme=y?.classList.contains("mach-theme-dark")?"dark":"light",P(i,y))},d=null;try{f(),y&&(d=new MutationObserver(f),d.observe(y,{attributes:!0,attributeFilter:["class","style"]})),n.append(i)}catch(m){throw d?.disconnect(),i.remove(),m}return{root:i,body:a,status:c,footer:u,syncTheme:f,destroy(){if(h)return;h=!0,d?.disconnect();let m=i.contains(document.activeElement);i.removeEventListener("keydown",g),i.remove(),m&&o?.isConnected&&o.focus()}}}function b(n){try{return n instanceof Error?n.message:String(n)}catch{return"\u65E0\u6CD5\u8BFB\u53D6\u5F02\u5E38\u4FE1\u606F"}}var le=new Set(["__proto__","prototype","constructor"]);function de(n){return typeof n!="string"||n.length===0?!1:n.split(".").every(t=>t.length>0&&!le.has(t))}function I(n,e){if(n==null||!de(e))return;if(e.indexOf(".")<0)return n[e];let r=n,o=0;for(;o<e.length;){if(r==null)return;let i=e.indexOf(".",o);if(i<0){r=r[e.slice(o)];break}r=r[e.slice(o,i)],o=i+1}return r}function*D(n){for(let e of n)"children"in e?yield*D(e.children):yield e}function x(n,e){let t=[],r=new Set(n.columns.getState().map(i=>i.colId)),o=n.getOption("defaultColDef");for(let i of D(n.columns.getDefinitions()??[])){let s={...o,...i},a=s.colId??s.field;a&&r.has(a)&&i.filter!==!1&&t.push(ce(s,a,n))}return e?e.filter(i=>r.has(i.colId)).map(i=>{let s=t.find(a=>a.colId===i.colId);return{label:i.colId,type:"text",...s,...i}}):t}function ce(n,e,t){let r=ue(n)??pe(n,t),o=n.field?I(t.rows.getAt(0)?.data,n.field):void 0,i=n.cellEditor==="number"||typeof o=="number"?"number":"text",s=typeof n.filter=="string"?n.filter:r?"set":n.cellEditor==="date"?"date":i;return{colId:e,label:n.headerName??e,type:s,...r?{options:r}:{}}}function ue(n){return n.cellEditorParams?.options??(n.filterParams?.values??n.cellEditorParams?.values)?.map(e=>({label:String(e??"\u7A7A\u503C"),value:e}))}function pe(n,e){if(n.filter!=="set"||!n.field)return;let t=new Map;for(let r=0;r<Math.min(e.rows.getCount(),2e3);r++){let o=e.rows.getAt(r);if(!o||o.data==null||o.isGroup||o.isDetail)continue;let i=I(o.data,n.field);if(i!==null&&typeof i!="string"&&typeof i!="number"||typeof i=="number"&&!Number.isFinite(i))continue;let s=JSON.stringify([typeof i,i]);t.set(s,{label:String(i??"\u7A7A\u503C"),value:i})}return[...t.values()]}var q={text:["contains","notContains","equals","notEquals","startsWith","endsWith","blank","notBlank"],number:["equals","notEquals","lessThan","lessThanOrEqual","greaterThan","greaterThanOrEqual","inRange","blank","notBlank"],date:["equals","notEquals","lessThan","greaterThan","inRange","blank","notBlank"]},z={contains:"\u5305\u542B",notContains:"\u4E0D\u5305\u542B",equals:"\u7B49\u4E8E",notEquals:"\u4E0D\u7B49\u4E8E",startsWith:"\u5F00\u5934\u4E3A",endsWith:"\u7ED3\u5C3E\u4E3A",blank:"\u4E3A\u7A7A",notBlank:"\u4E0D\u4E3A\u7A7A",lessThan:"\u5C0F\u4E8E",lessThanOrEqual:"\u5C0F\u4E8E\u6216\u7B49\u4E8E",greaterThan:"\u5927\u4E8E",greaterThanOrEqual:"\u5927\u4E8E\u6216\u7B49\u4E8E",inRange:"\u4ECB\u4E8E"};function W(n){return JSON.stringify(n,(e,t)=>{if(!(e==="not"&&t===!1))return!t||typeof t!="object"||Array.isArray(t)?t:Object.fromEntries(Object.entries(t).sort(([r],[o])=>r.localeCompare(o)))})}function A(n){if(n===null)return null;let e=k(n);if(!e||W(n)!==W(e))throw new TypeError("\u7B5B\u9009\u8868\u8FBE\u5F0F\u65E0\u6548\u6216\u8D85\u8FC7\u9650\u5236\uFF0C\u8349\u7A3F\u672A\u88AB\u66FF\u6362");return e}function _(n){let e=n?.type??"text";return e==="set"?{type:e,values:[]}:e==="text"?{type:e,conditions:[{match:"contains",value:""}]}:{type:e,conditions:[{match:"equals"}]}}function j(n,e){if(!n)return[];let t=[],r=new Map(e.map(s=>[s.colId,s])),o=0,i=(s,a)=>{if(o++,a>16||o>512){t.push("\u6700\u591A\u652F\u6301 16 \u5C42\u3001512 \u4E2A\u6761\u4EF6\u8282\u70B9");return}if(s.kind==="group"){s.children.length||t.push("\u6761\u4EF6\u7EC4\u4E0D\u80FD\u4E3A\u7A7A");for(let u of s.children)i(u,a+1);return}let c=r.get(s.colId);if(!c){t.push(`\u5B57\u6BB5\u5DF2\u79FB\u9664\u6216\u4E0D\u53EF\u7B5B\u9009\uFF1A${s.colId}`);return}c.type!==s.filter.type&&t.push(`${c.label} \u7684\u5B57\u6BB5\u7C7B\u578B\u5DF2\u6539\u53D8\uFF0C\u8BF7\u91CD\u7F6E\u6761\u4EF6`),t.push(...fe(s.filter,c.label))};return i(n.root,0),[...new Set(t)]}function fe(n,e){return n.type==="set"?[]:n.conditions.length?n.conditions.length>20?[`${e} \u6700\u591A\u652F\u6301 20 \u4E2A\u6761\u4EF6`]:n.conditions.flatMap(t=>{if(t.match==="blank"||t.match==="notBlank")return[];let r=t.match==="inRange"?[t.value,t.value2]:[t.value];return r.some(o=>!he(o,n.type))?[`\u8BF7\u586B\u5199 ${e} \u7684\u6709\u6548\u7B5B\u9009\u503C`]:r.length===2&&r[0]>r[1]?[`${e} \u7684\u533A\u95F4\u8D77\u70B9\u4E0D\u80FD\u5927\u4E8E\u7EC8\u70B9`]:[]}):[`${e} \u81F3\u5C11\u9700\u8981\u4E00\u4E2A\u6761\u4EF6`]}function he(n,e){return e==="number"?typeof n=="number"&&Number.isFinite(n):typeof n!="string"||!n.trim()?!1:e!=="date"||/^\d{4}-\d{2}-\d{2}$/.test(n)&&!Number.isNaN(Date.parse(n))&&new Date(n).toISOString().slice(0,10)===n}function S(n){return n.kind==="group"?1+n.children.reduce((e,t)=>e+S(t),0):1}function me(n,e){return new M(n,e)}var M=class{constructor(e,t){this.options=t;this.fields=[];this.u=0;this.changed=!1;this.external=!1;this.destroyed=!1;this.controls=new Map;this.o=[];if(t.api.isDestroyed())throw new Error("Cannot mount a workbench on a destroyed grid");this.draft=A(t.api.filtering.getAdvancedModel()),this.e=E(e,"\u9AD8\u7EA7\u7B5B\u9009",()=>this.close(),t.api),this.l=p("\u5E94\u7528\u7B5B\u9009",()=>{this.apply()},"mach-workbench__button--primary"),this.e.footer.append(p("\u6E05\u7A7A\u8349\u7A3F",()=>this.n(()=>{this.draft=null})),p("\u53D6\u6D88",()=>this.close()),this.l),this.o=[t.api.on("gridDestroyed",()=>this.destroy()),t.api.on("displayedColumnsChanged",()=>this.refresh()),t.api.on("filterChanged",()=>{this.changed?this.external=!0:this.draft=A(t.api.filtering.getAdvancedModel()),this.refresh()})],this.refresh(),this.e.root.focus()}getDraft(){return this.draft==null?null:JSON.parse(JSON.stringify(this.draft))}setDraft(e){this.t()&&(this.draft=A(e),this.changed=!0,this.refresh())}apply(){if(!this.t())return!1;if(this.fields=x(this.options.api,this.options.fields),this.i().length)return this.e.status.focus(),!1;let e=this.draft==null?null:k(this.draft,new Set(this.fields.map(t=>t.colId)));return this.changed=!1,this.external=!1,this.options.api.filtering.setAdvancedModel(e),this.draft=A(this.options.api.filtering.getAdvancedModel()),this.refresh(),this.e.status.textContent="\u7B5B\u9009\u5DF2\u5E94\u7528",!0}cancel(){this.t()&&(this.draft=A(this.options.api.filtering.getAdvancedModel()),this.changed=!1,this.external=!1,this.refresh())}refresh(){if(this.t()){if(this.fields=x(this.options.api,this.options.fields),this.e.syncTheme(),this.controls.clear(),this.u=this.draft?S(this.draft.root):0,this.e.body.replaceChildren(),this.draft)this.e.body.append(this.p(this.draft.root,"root",0,()=>{this.draft=null}));else{let e=l("div","mach-workbench__empty","\u5C1A\u65E0\u9AD8\u7EA7\u7B5B\u9009\uFF1B\u6DFB\u52A0\u6761\u4EF6\u540E\u5E94\u7528\u3002");e.append(this.s("\u6DFB\u52A0\u6761\u4EF6",()=>{this.draft={version:1,root:this.condition()}}),this.s("\u6DFB\u52A0\u6761\u4EF6\u7EC4",()=>{this.draft={version:1,root:{kind:"group",operator:"and",children:[]}}})),this.e.body.append(e)}this.e.status.tabIndex=-1,this.i()}}destroy(){if(!this.destroyed){this.destroyed=!0;for(let e of this.o.splice(0))e();this.e.destroy(),this.controls.clear()}}close(){this.destroyed||(this.destroy(),this.options.onClose?.())}t(){return!this.destroyed&&!this.options.api.isDestroyed()}i(){let e=j(this.draft,this.fields);return this.e.status.textContent=e.length?e.join("\uFF1B"):this.external?"\u7B5B\u9009\u5DF2\u5916\u90E8\u66F4\u65B0\uFF1B\u5F53\u524D\u8349\u7A3F\u5DF2\u4FDD\u7559\uFF0C\u53D6\u6D88\u53EF\u91CD\u8F7D\u3002":"AND / OR \u7EC4\u5408\u6761\u4EF6\uFF0CNOT \u6392\u9664\u6574\u7EC4\u3002",this.e.status.classList.toggle("mach-workbench__status--error",e.length>0),this.e.status.setAttribute("role",e.length?"alert":"status"),this.l.disabled=e.length>0,e}condition(){return{kind:"condition",colId:this.fields[0]?.colId??"",filter:_(this.fields[0])}}n(e,t){this.t()&&(e(),this.changed=!0,this.refresh(),(t?this.controls.get(t):this.e.body.querySelector("button,select,input"))?.focus())}d(e,t){return this.controls.set(t,e),e}s(e,t){let r=p(e,()=>this.n(t));return r.disabled=!this.fields.length||this.u>=512,r}p(e,t,r,o){return e.kind==="group"?this.m(e,t,r,o):this.g(e,t,o)}m(e,t,r,o){let i=l("fieldset","mach-workbench__group");i.append(l("legend",void 0,`\u6761\u4EF6\u7EC4 ${r+1}`));let s=l("div","mach-workbench__tools");s.append(this.d(T("\u6761\u4EF6\u7EC4\u5173\u7CFB",[{value:"and",label:"\u5168\u90E8\u6EE1\u8DB3 AND"},{value:"or",label:"\u4EFB\u4E00\u6EE1\u8DB3 OR"}],e.operator,g=>this.n(()=>{e.operator=g},`${t}.operator`)),`${t}.operator`));let a=l("input");a.type="checkbox",a.checked=e.not===!0,a.addEventListener("change",()=>{e.not=a.checked,this.changed=!0,this.i()});let c=l("label","mach-workbench__check","\u6392\u9664\u6574\u7EC4 NOT");c.prepend(a),s.append(c,p("\u5220\u9664\u6761\u4EF6\u7EC4",()=>this.n(o))),i.append(s),e.children.forEach((g,h)=>i.append(this.p(g,`${t}.${h}`,r+1,()=>{e.children.splice(h,1)})));let u=this.s("\u6DFB\u52A0\u5B50\u7EC4",()=>{e.children.push({kind:"group",operator:"and",children:[]})});return u.disabled||(u.disabled=r>=15),i.append(this.s("\u6DFB\u52A0\u6761\u4EF6",()=>{e.children.push(this.condition())}),u),i}g(e,t,r){let o=l("div","mach-workbench__condition"),i=this.fields.find(a=>a.colId===e.colId),s=this.fields.map(a=>({value:a.colId,label:a.label}));return i||s.unshift({value:e.colId,label:`\u5DF2\u79FB\u9664\u5B57\u6BB5\uFF1A${e.colId}`}),o.append(this.d(T("\u7B5B\u9009\u5B57\u6BB5",s,e.colId,a=>this.n(()=>{e.colId=a,e.filter=_(this.fields.find(c=>c.colId===a))},`${t}.field`)),`${t}.field`)),o.append(p("\u5220\u9664\u6761\u4EF6",()=>this.n(r))),i&&i.type!==e.filter.type&&o.append(p("\u91CD\u7F6E\u5B57\u6BB5\u6761\u4EF6",()=>this.n(()=>{e.filter=_(i)}))),e.filter.type==="set"?this.y(o,e.filter,i):this.v(o,e.filter,t),o}y(e,t,r){let o=[...r?.options??[]];for(let s of t.values)o.some(a=>Object.is(a.value,s))||o.push({value:s,label:`${String(s??"\u7A7A\u503C")}\uFF08\u5F53\u524D\u5B57\u5178\u5916\uFF09`});let i=l("select","mach-workbench__input mach-workbench__dictionary");i.multiple=!0,i.setAttribute("aria-label","\u5B57\u5178\u9009\u9879\uFF08\u652F\u6301\u591A\u9009\uFF09"),o.forEach((s,a)=>{let c=l("option",void 0,s.label);c.value=String(a),c.selected=t.values.some(u=>Object.is(u,s.value)),i.append(c)}),i.addEventListener("change",()=>{t.values=[...i.selectedOptions].map(s=>o[Number(s.value)].value),this.changed=!0,this.i()}),e.append(i,l("small","mach-workbench__hint",o.length?"\u53EF\u591A\u9009\uFF1B\u672A\u9009\u62E9\u65F6\u4E0D\u4F1A\u5339\u914D\u4EFB\u4F55\u8BB0\u5F55\u3002":"\u8BF7\u5728\u5217\u5B9A\u4E49\u6216 fields.options \u914D\u7F6E\u5B57\u5178\u3002"))}v(e,t,r){t.conditions.length>1&&e.append(T("\u5B57\u6BB5\u6761\u4EF6\u5173\u7CFB",[{value:"and",label:"\u5E76\u4E14 AND"},{value:"or",label:"\u6216\u8005 OR"}],t.operator??"and",i=>{t.operator=i,this.changed=!0})),t.conditions.forEach((i,s)=>{let a=l("div","mach-workbench__values");a.append(this.d(T("\u5339\u914D\u65B9\u5F0F",q[t.type].map(c=>({value:c,label:z[c]})),i.match,c=>this.n(()=>{i.match=c},`${r}.${s}.match`)),`${r}.${s}.match`)),this.b(a,i,t.type),t.conditions.length>1&&a.append(p("\u5220\u9664\u5B57\u6BB5\u6761\u4EF6",()=>this.n(()=>{t.conditions.splice(s,1)}))),e.append(a)});let o=p("\u6DFB\u52A0\u5B57\u6BB5\u6761\u4EF6",()=>this.n(()=>{t.conditions.push({match:t.type==="text"?"contains":"equals"})}));o.disabled=t.conditions.length>=20,e.append(o)}b(e,t,r){if(t.match==="blank"||t.match==="notBlank")return;let o=t,i=t.match==="inRange"?["value","value2"]:["value"];for(let s of i){let a=l("input","mach-workbench__input");a.type=r==="text"?"text":r,r==="number"&&(a.step="any"),a.setAttribute("aria-label",s==="value2"?"\u533A\u95F4\u7EC8\u70B9":"\u7B5B\u9009\u503C"),a.value=o[s]==null?"":String(o[s]),a.addEventListener("input",()=>{a.value?o[s]=r==="number"?a.valueAsNumber:a.value:delete o[s],this.changed=!0,this.i()}),e.append(a)}}};function ge(n,e){if(e.serverData===void 0)return null;let t=n.rows.getById(e.rowId);if(!t||t.data==null)return null;let r=n.getOption("rowKey");if(r){let s=typeof r=="function"?r(e.serverData):I(e.serverData,r);return String(s)===e.rowId?{data:e.serverData,mergeIntoCurrent:!1}:null}let o=t.data;return o!=null&&e.serverData!=null&&typeof o=="object"&&typeof e.serverData=="object"?{data:o,mergeIntoCurrent:!0}:null}function F(n,e,t){if(n.isDestroyed())return!1;if(t==="keepLocal")return!0;let r=ge(n,e);return r?(n.editing.rollback([e.rowId]),r.mergeIntoCurrent&&Object.assign(r.data,e.serverData),n.rows.transact({update:[r.data]}),n.editing.markSaved([e.rowId]),!0):!1}function ye(n,e){return new G(n,e)}var G=class{constructor(e,t){this.options=t;this.destroyed=!1;this.busy=!1;this.c=!1;this.page=0;this.r=new Map;this.issues=new Map;this.labels=new Map;if(t.api.isDestroyed())throw new Error("Cannot mount review on a destroyed grid");this.e=E(e,"\u4FEE\u6539\u5BA1\u9605",()=>{this.destroyed||(this.destroy(),t.onClose?.())},t.api),this.o=[t.api.on("dirtyStateChanged",()=>this.w()),t.api.on("gridDestroyed",()=>this.destroy())],this.refresh(),this.e.root.focus()}refresh(){if(!this.t())return;let e=this.options.api.editing.getChanges();this.labels=ve(this.options.api.columns.getDefinitions()??[]);let t=new Set(e.map(r=>r.rowId));for(let[r,o]of this.issues)(!t.has(r)||!this.a(o))&&this.issues.delete(r);for(let r of this.r.keys())t.has(r)||this.r.delete(r);this.page=Math.min(this.page,Math.max(0,Math.ceil(e.length/20)-1)),this.e.syncTheme(),this.e.root.setAttribute("aria-busy",String(this.busy)),this.e.body.replaceChildren(),e.length||this.e.body.append(l("p","mach-workbench__empty","\u5F53\u524D\u6CA1\u6709\u672A\u4FDD\u5B58\u7684\u4FEE\u6539\u3002"));for(let r of e.slice(this.page*20,(this.page+1)*20))this.e.body.append(this.T(r));this.D(e.length),this.busy?this.e.status.textContent="\u6B63\u5728\u4FDD\u5B58\uFF1B\u65B0\u4FEE\u6539\u4F1A\u4FDD\u7559\uFF0C\u5173\u95ED\u4E0D\u53D6\u6D88\u8BF7\u6C42\u3002":this.options.save?this.e.status.textContent=`${e.length} \u884C\u5F85\u4FDD\u5B58 \xB7 ${this.issues.size} \u884C\u5B58\u5728\u5931\u8D25\u6216\u51B2\u7A81\u3002`:this.e.status.textContent="\u5C1A\u672A\u63D0\u4F9B\u4FDD\u5B58\u5904\u7406\u5668\uFF0C\u53EF\u67E5\u770B\u3001\u5B9A\u4F4D\u6216\u64A4\u9500\u3002"}destroy(){this.destroyed||(this.destroyed=!0,this.o.splice(0).forEach(e=>e()),this.e.destroy(),this.issues.clear(),this.r.clear())}t(){return!this.destroyed&&!this.options.api.isDestroyed()}w(){this.c||!this.t()||(this.c=!0,queueMicrotask(()=>{this.c=!1,this.t()&&this.refresh()}))}a(e){let t=this.options.api.rows.getById(e.detail.rowId);return t===e.node&&t?.data===e.data}async save(e){if(!this.t()||this.busy||!this.options.save)return;let t=e?new Set(e):null,r=this.options.api.editing.getChanges().filter(i=>!t||t.has(i.rowId));if(!r.length)return;let o=new Map(r.map(i=>{let s=this.options.api.rows.getById(i.rowId);return[i.rowId,{node:s,data:s?.data}]}));this.busy=!0,this.refresh();try{let i=await this.options.api.editing.save(this.options.save,e);if(!this.t())return;this.E(r,o,i)}catch(i){if(!this.t())return;for(let s of r){let a=this.f(s.rowId,o);a&&this.issues.set(s.rowId,{kind:"\u5931\u8D25",detail:{rowId:s.rowId,retryable:!0,message:b(i)},node:a,data:a.data})}}finally{this.t()&&(this.busy=!1,this.refresh())}}f(e,t){let r=t.get(e);return r?.node===this.options.api.rows.getById(e)&&r?.node?.data===r?.data?r?.node:void 0}E(e,t,r){let o=new Map(r.conflicts.map(s=>[s.rowId,s])),i=new Map(r.failures.map(s=>[s.rowId,s]));for(let s of e){let a=this.f(s.rowId,t);if(!a)continue;this.issues.delete(s.rowId);let c=o.get(s.rowId),u=c??i.get(s.rowId);u&&this.issues.set(s.rowId,{kind:c?"\u51B2\u7A81":"\u5931\u8D25",detail:u,node:a,data:a.data})}}rollback(e){!this.t()||this.busy||(this.options.api.editing.rollback(e),this.refresh())}h(){return[...this.issues].filter(([,e])=>e.detail.retryable!==!1&&this.a(e)).map(([e])=>e)}D(e){this.e.footer.replaceChildren();let t=p("\u4FDD\u5B58\u5168\u90E8\u4FEE\u6539",()=>{this.save()},"mach-workbench__button--primary");t.disabled=this.busy||!this.options.save||!e;let r=p("\u4EC5\u91CD\u8BD5\u5931\u8D25\u4E0E\u51B2\u7A81",()=>{this.save(this.h())});r.disabled=this.busy||!this.options.save||!this.h().length;let o=p("\u64A4\u9500\u5168\u90E8\u4FEE\u6539",()=>this.rollback());o.disabled=this.busy||!e;let i=l("nav","mach-workbench__tools");i.setAttribute("aria-label","\u4FEE\u6539\u8BB0\u5F55\u5206\u9875");let s=p("\u4E0A\u4E00\u9875",()=>{this.page--,this.refresh(),C(this.e.footer,"\u4E0A\u4E00\u9875")}),a=p("\u4E0B\u4E00\u9875",()=>{this.page++,this.refresh(),C(this.e.footer,"\u4E0B\u4E00\u9875")});s.disabled=this.page<=0,a.disabled=(this.page+1)*20>=e,i.append(s,l("span",void 0,`\u7B2C ${this.page+1} / ${Math.max(1,Math.ceil(e/20))} \u9875`),a),this.e.footer.append(i,o,r,t)}T(e){let t=l("article","mach-review__row");t.dataset.rowId=e.rowId;let r=l("div","mach-workbench__tools");r.append(l("h3","mach-review__title",`\u8BB0\u5F55 ${e.rowId} \xB7 ${e.cells.length} \u5904\u4FEE\u6539`));let o=p("\u64A4\u9500\u672C\u884C",()=>this.rollback([e.rowId]));o.disabled=this.busy,r.append(o);let i=this.issues.get(e.rowId);i&&this.A(t,i),t.prepend(r);let s=l("table","mach-review__table");s.setAttribute("aria-label",`\u8BB0\u5F55 ${e.rowId} \u7684\u4FEE\u6539\u660E\u7EC6`);let a=l("thead"),c=l("tr");for(let h of["\u5B57\u6BB5","\u539F\u503C","\u65B0\u503C","\u5B9A\u4F4D"]){let y=l("th",void 0,h);y.scope="col",c.append(y)}a.append(c);let u=l("tbody"),g=Math.min(this.r.get(e.rowId)??0,Math.max(0,Math.ceil(e.cells.length/20)-1));for(let h of e.cells.slice(g*20,(g+1)*20)){let y=l("tr"),f=i?.detail.colIds?.includes(h.colId);f&&y.classList.add("mach-review__cell--issue");let d=l("th",void 0,this.labels.get(h.colId)??h.colId);d.title=h.colId,f&&d.append(l("small","mach-workbench__hint"," \xB7 \u95EE\u9898\u5B57\u6BB5")),d.scope="row";let m=l("td");m.append(p("\u5B9A\u4F4D\u5B57\u6BB5",()=>this.C(e.rowId,h.colId))),y.append(d,l("td","mach-review__old",O(h.originalValue)),l("td","mach-review__new",O(h.value)),m),u.append(y)}return s.append(a,u),t.append(s),e.cells.length>20&&t.append(this.I(e,g)),t}A(e,t){let r=l("p","mach-review__issue",`${t.kind}${t.detail.code?` [${t.detail.code}]`:""}\uFF1A${t.detail.message}`);r.setAttribute("role","alert");let o=t.detail;if(o.serverVersion!=null&&r.append(l("span","mach-workbench__hint",` \xB7 \u670D\u52A1\u7AEF\u7248\u672C ${o.serverVersion}`)),t.detail.retryable===!1&&r.append(l("span","mach-workbench__hint"," \xB7 \u65E0\u6CD5\u76F4\u63A5\u91CD\u8BD5\uFF0C\u8BF7\u5148\u4FEE\u6B63\u6570\u636E\u3002")),e.append(r),o.serverData!=null){let i=l("details","mach-review__server");i.append(l("summary",void 0,"\u67E5\u770B\u670D\u52A1\u7AEF\u8BB0\u5F55"),l("pre",void 0,O(o.serverData))),e.append(i)}if(t.kind==="\u51B2\u7A81"){let i=p("\u4FDD\u7559\u672C\u5730\u5E76\u91CD\u8BD5",()=>{!this.t()||this.busy||!this.a(t)||F(this.options.api,o,"keepLocal")&&this.save([o.rowId])});i.disabled=this.busy||!this.options.save||o.retryable===!1;let s=p("\u91C7\u7528\u670D\u52A1\u7AEF\u8BB0\u5F55",()=>{!this.t()||this.busy||!this.a(t)||this.acceptServer(o)});s.disabled=this.busy||o.serverData==null,e.append(i,s)}}acceptServer(e){try{if(F(this.options.api,e,"acceptServer")){this.issues.delete(e.rowId),this.refresh();return}this.e.status.textContent="\u670D\u52A1\u7AEF\u8BB0\u5F55\u7F3A\u5931\u6216\u884C\u6807\u8BC6\u4E0D\u4E00\u81F4\uFF0C\u65E0\u6CD5\u91C7\u7528\uFF1B\u672C\u5730\u4FEE\u6539\u5DF2\u4FDD\u7559\u3002"}catch(t){this.e.status.textContent=b(t)}this.e.status.setAttribute("role","alert")}I(e,t){let r=l("div","mach-workbench__tools"),o=p("\u4E0A\u4E00\u7EC4\u5B57\u6BB5",()=>{this.r.set(e.rowId,t-1),this.refresh()}),i=p("\u4E0B\u4E00\u7EC4\u5B57\u6BB5",()=>{this.r.set(e.rowId,t+1),this.refresh()});return o.disabled=t===0,i.disabled=(t+1)*20>=e.cells.length,r.append(o,l("span",void 0,`\u5B57\u6BB5\u7B2C ${t*20+1}\u2013${Math.min((t+1)*20,e.cells.length)} / ${e.cells.length}`),i),r}C(e,t){let r=this.options.api.rows.getById(e);if(!r||r.rowIndex<0){this.e.status.textContent="\u8BB0\u5F55\u672A\u5728\u5F53\u524D\u89C6\u56FE\uFF0C\u8BF7\u8C03\u6574\u7B5B\u9009\u6216\u5206\u9875\u540E\u5B9A\u4F4D\u3002";return}this.options.api.view.scrollToRow(r.rowIndex,"nearest");let o=this.options.api.view.getRoot(),s=[...o?.querySelectorAll(`.mach-row[data-index="${r.rowIndex}"] .mach-cell`)??[]].find(a=>a.dataset.colId===t);s?.dispatchEvent(new MouseEvent("mousedown",{bubbles:!0,button:0})),window.dispatchEvent(new MouseEvent("mouseup")),s||(this.e.status.textContent=`\u5DF2\u5B9A\u4F4D\u8BB0\u5F55\uFF1B\u5B57\u6BB5 ${t} \u672A\u663E\u793A\uFF0C\u8BF7\u8C03\u6574\u5217\u663E\u793A\u6216\u6A2A\u5411\u6EDA\u52A8\u3002`),o?.focus()}};function O(n){if(n===null)return"\u7A7A\u503C";if(n===void 0)return"\u672A\u8BBE\u7F6E";if(typeof n=="string")return n||"\u7A7A\u5B57\u7B26\u4E32";if(typeof n=="function")return"[\u51FD\u6570]";if(typeof n=="number"||typeof n=="boolean"||typeof n=="bigint"||typeof n=="symbol")return String(n);try{return JSON.stringify(n)??"\u672A\u8BBE\u7F6E"}catch{return"[\u65E0\u6CD5\u5E8F\u5217\u5316\u7684\u503C]"}}function ve(n){let e=new Map;for(let t of D(n)){let r=t.colId??t.field;r&&e.set(r,t.headerName??r)}return e}function be(n){let e=n.getOption("defaultColDef")?.rowGroup;for(let t of D(n.columns.getDefinitions()??[]))if((t.rowGroup??e)===!0)return!0;return!1}function we(n,e){let t=n.rows.isRemote(),r=!!n.getOption("dataProcessor"),i=r&&!e&&!n.getOption("treeData")&&!n.getOption("masterDetail")?"client-or-processor":"client";return{sorting:t?"datasource":n.getOption("manualSorting")?"host":i,filtering:t?"datasource":n.getOption("manualFiltering")?"host":i,sortActive:n.sorting.getModel().length>0,filterActive:n.filtering.isPresent(),processorConfigured:r}}function N(n,e){let t=e?{code:"GRID_DESTROYED",message:"\u8868\u683C\u5DF2\u9500\u6BC1\uFF0C\u4E0D\u80FD\u68C0\u67E5\u6216\u53D1\u8D77\u62D6\u62FD\u3002"}:{code:"ROW_UNAVAILABLE",message:"\u5F53\u524D\u6A21\u578B\u65E0\u6B64 ID\uFF1A\u53EF\u80FD\u672A\u52A0\u8F7D\u3001\u5DF2\u79FB\u9664\u6216\u67E5\u8BE2\u4E0D\u540C\uFF1B\u68C0\u67E5\u4E0D\u8BF7\u6C42\u6570\u636E\u3002"};return{rowId:n,availability:e?"destroyed":"missing",visibility:"unknown",rowIndex:null,rendered:!1,drag:{allowed:!1,policyEvaluated:!1,reasons:[t]},execution:null,notes:[t]}}function Te(n,e,t,r){let o=[],i=(s,a)=>{o.push({code:s,message:a})};return(e.data==null||e.isGroup||e.isDetail)&&i("STRUCTURAL_ROW","\u5206\u7EC4\u3001\u660E\u7EC6\u3001\u65E0\u6570\u636E\u884C\u4E0D\u53EF\u62D6\u62FD\u3002"),(e.loading||e.treeLoading)&&i("ROW_LOADING","\u8BE5\u884C\u6B63\u5728\u52A0\u8F7D\uFF0C\u4E0D\u80FD\u62D6\u62FD\u3002"),(n.editing.isRowActive()||n.view.getRoot()?.querySelector(".mach-cell--editing"))&&i("EDITING_ACTIVE","\u5B58\u5728\u6D3B\u52A8\u7F16\u8F91\uFF0C\u8BF7\u5148\u4FDD\u5B58\u6216\u53D6\u6D88\u3002"),t&&i("GROUPING_ACTIVE","\u81EA\u52A8\u5206\u7EC4\u6A21\u5F0F\u4E0D\u652F\u6301\u884C\u62D6\u62FD\u3002"),De(n,r,o),o}function De(n,e,t){if(n.getOption("applyRowDrag")===!1)return;let r=(o,i)=>{t.push({code:o,message:i})};n.getOption("treeData")&&r("MANAGED_TREE","\u6258\u7BA1\u91CD\u6392\u4EC5\u652F\u6301\u6241\u5E73\u6570\u636E\uFF1B\u5C42\u7EA7\u6392\u5E8F\u9700\u975E\u6258\u7BA1\u7B56\u7565\u3002"),n.rows.isRemote()&&r("MANAGED_DATASOURCE","datasource \u4E0D\u5141\u8BB8\u9ED8\u8BA4\u6258\u7BA1\u91CD\u6392\uFF0C\u8BF7\u63D0\u4EA4\u7A33\u5B9A ID \u6392\u5E8F\u610F\u56FE\u3002"),e.processorConfigured&&r("MANAGED_PROCESSOR","dataProcessor \u4E0D\u652F\u6301\u6258\u7BA1\u91CD\u6392\u3002"),e.sortActive&&r("MANAGED_SORT","\u5217\u6392\u5E8F\u4F1A\u8986\u76D6\u4E1A\u52A1\u987A\u5E8F\uFF0C\u8BF7\u6E05\u9664\u6392\u5E8F\u6216\u4F7F\u7528\u975E\u6258\u7BA1\u7B56\u7565\u3002")}function Ee(n,e,t){if(t.length)return!1;try{let r=n.getOption("rowDragPolicy");if(!r?.canDrag)return!1;let o=r.canDrag({api:n,node:e})??!0;o!==!0&&t.push({code:"POLICY_REJECTED",message:typeof o=="string"?o:"\u4E1A\u52A1 canDrag \u5224\u5B9A\u62D2\u7EDD\u62D6\u62FD\u3002"})}catch(r){t.push({code:"POLICY_ERROR",message:`\u4E1A\u52A1 canDrag \u5224\u5B9A\u5F02\u5E38\uFF1A${b(r)}`})}return!0}function Ae(n,e){let t=e.rowIndex>=0&&n.rows.getAt(e.rowIndex)===e,o=[...n.view.getRoot()?.querySelectorAll(".mach-row[data-id]")??[]].find(i=>i.dataset.id===e.id);return{displayed:t,rendered:!!o,handle:o?.querySelector(".mach-row-drag-handle")}}function Ce(n){return n.displayed?n.rendered?[]:[{code:"OUTSIDE_RENDER_WINDOW",message:"\u663E\u793A\u6A21\u578B\u5185\u672A\u6E32\u67D3 DOM\uFF1A\u53EF\u80FD\u4F4D\u4E8E\u865A\u62DF\u7A97\u53E3\u5916\uFF0C\u4E0D\u80FD\u5224\u5B9A\u4E3A\u88AB\u8FC7\u6EE4\u3002"}]:[{code:"ROW_NOT_DISPLAYED",message:"\u5DF2\u52A0\u8F7D\u4F46\u672A\u663E\u793A\uFF1A\u53EF\u80FD\u88AB\u8FC7\u6EE4\u3001\u7236\u9879\u6298\u53E0\u3001\u5206\u9875\u6216\u4FDD\u7559\u8349\u7A3F\uFF0C\u5177\u4F53\u539F\u56E0\u672A\u516C\u5F00\u3002"}]}function Ie(n,e,t){return t?null:n.length?!1:e?!e.disabled:null}function L(n,e){if(n.isDestroyed())return N(e,!0);let t=be(n),r=we(n,t),o=n.rows.getById(e);if(!o)return{...N(e,!1),execution:r};let i=o.data,s=Ae(n,o),a=Te(n,o,t,r),c=Ee(n,o,a);if(n.isDestroyed())return N(e,!0);let u=Ce(s);s.handle?.disabled&&!a.length&&a.push({code:"HANDLE_DISABLED",message:"\u624B\u67C4\u5DF2\u7981\u7528\uFF0C\u5177\u4F53\u539F\u56E0\u672A\u516C\u5F00\uFF1B\u670D\u52A1\u7AEF\u5206\u9875\u7B49\u573A\u666F\u4E0D\u652F\u6301\u6258\u7BA1\u91CD\u6392\u3002"});let g=n.rows.getById(e)!==o||o.data!==i;return g&&u.push({code:"INSPECTION_CHANGED",message:"\u4E1A\u52A1\u5224\u5B9A\u671F\u95F4\u8BB0\u5F55\u88AB\u66FF\u6362\uFF0C\u7ED3\u679C\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u68C0\u67E5\u3002"}),{rowId:e,availability:"loaded",visibility:s.displayed?"displayed":"not-displayed",rowIndex:s.displayed?o.rowIndex:null,rendered:s.rendered,execution:r,notes:u,drag:{allowed:Ie(a,s.handle,g),policyEvaluated:c,reasons:a}}}var ke=["theme","size","columnLayout","editType","pagination","rowSelection","applyRowDrag","rowStyleRules","persistence","maxBlocksInCache"];function _e(n,e){let t=!1,r="theme",o="",i=null,s=null,a=E(n,"\u8868\u683C\u8BCA\u65AD",()=>{t||(u.destroy(),e.onClose?.())},e.api),c=()=>!t&&!e.api.isDestroyed(),u={refresh(){if(!c())return;let f=a.body.contains(document.activeElement)?document.activeElement:null;a.syncTheme(),a.body.replaceChildren();let d=e.api.diagnostics.get(),m=l("dl","mach-diagnostics__overview");for(let[v,H]of Object.entries({\u7248\u672C:d.version,\u603B\u884C\u6570:d.rowCount,\u5DF2\u6E32\u67D3\u884C\u6570:d.renderedRowCount,\u5217\u6570:d.columnCount,\u5DF2\u9009\u884C:d.selectedRowCount,\u5F85\u4FDD\u5B58\u884C:d.dirtyRowCount,\u6570\u636E\u6A21\u5F0F:d.infinite?"\u8FDC\u7A0B":"\u672C\u5730"}))m.append(l("dt",void 0,v),l("dd",void 0,String(H)));a.body.append(m,U("\u6D3B\u52A8\u6269\u5C55",d.activeFeatures.length?R(d.activeFeatures):"\u65E0\u6D3B\u52A8\u6269\u5C55"),U("\u6027\u80FD\u4E0E\u8C03\u5EA6\u5FEB\u7167",R({performance:d.performance,updates:d.updates}))),g(),h();let w=l("section","mach-diagnostics__section");w.append(l("h3",void 0,`\u6700\u8FD1\u9519\u8BEF\uFF08${d.recentErrors.length}\uFF09`));for(let v of d.recentErrors)w.append(l("p","mach-review__issue",`${v.code} \xB7 ${v.source} \xB7 ${v.message}`));if(d.recentErrors.length||w.append(l("p","mach-workbench__hint","\u5C1A\u65E0\u5DF2\u8BB0\u5F55\u9519\u8BEF\u3002")),a.body.append(w),a.status.textContent="\u516C\u5F00\u8BCA\u65AD API \u624B\u52A8\u5FEB\u7167\uFF1B\u672A\u63D0\u4F9B\u6765\u6E90\u65F6\u663E\u793A\u672A\u77E5\u3002",f&&document.activeElement===document.body){let v=f.getAttribute("aria-label");((a.body.contains(f)?f:v?[...a.body.querySelectorAll("[aria-label]")].find(X=>X.getAttribute("aria-label")===v):null)??a.root).focus()}},destroy(){t||(t=!0,y(),a.destroy(),i=null,s=null)}};function g(){let f=l("section","mach-diagnostics__section");f.append(l("h3",void 0,"\u914D\u7F6E\u6765\u6E90"),T("\u914D\u7F6E\u9879",ke.map(d=>({value:d,label:d})),r,d=>{r=d,u.refresh(),C(a.body,"\u914D\u7F6E\u9879")}));try{let d=e.explain?.(r),m=d?d.value:e.api.getOption(r);if(f.append(l("p",void 0,`\u5F53\u524D\u503C\uFF1A${R(m)}`),l("p",void 0,`\u6765\u6E90\uFF1A${d?.source??"\u672A\u77E5\uFF08\u672A\u4F20\u5165\u914D\u7F6E\u89E3\u6790\u5668\u7684 explain\uFF09"}`)),d){let w=l("ol");for(let v of d.layers)w.append(l("li",void 0,`${v.name}: ${R(v.value)}`));f.append(w)}}catch(d){f.append(l("p","mach-review__issue",b(d)))}a.body.append(f)}function h(){let f=l("section","mach-diagnostics__section");f.append(l("h3",void 0,"\u8BB0\u5F55\u884C\u4E3A\u4E0E\u6761\u4EF6\u884C\u6837\u5F0F\u89E3\u91CA"));let d=l("input","mach-workbench__input");d.setAttribute("aria-label","\u68C0\u67E5\u8BB0\u5F55 ID"),d.value=o,d.placeholder="\u8F93\u5165\u7A33\u5B9A\u884C ID",d.addEventListener("input",()=>{o=d.value}),f.append(d,p("\u68C0\u67E5\u8BB0\u5F55",()=>{i=L(e.api,o),s=xe(e,o),u.refresh(),a.body.querySelector(".mach-diagnostics__rules")?.focus()}),l("p","mach-workbench__hint","\u4EC5\u68C0\u67E5\u6B64\u884C canDrag \u548C\u6837\u5F0F\u6761\u4EF6\uFF0C\u53EF\u80FD\u4EA7\u751F\u4E1A\u52A1\u526F\u4F5C\u7528\u3002\u5F02\u5E38\u9694\u79BB\uFF0C\u4E0D\u626B\u63CF\u5168\u8868\u6216\u8BF7\u6C42\u8FDC\u7A0B\u6570\u636E\u3002\u7ED3\u679C\u4E3A\u4E0A\u6B21\u5FEB\u7167\uFF0C\u89C4\u5219\u6309\u5E8F\u9996\u6761\u547D\u4E2D\u3002")),i&&f.append(Re(i)),s&&f.append(s),a.body.append(f)}if(e.api.isDestroyed())throw a.destroy(),new Error("Cannot mount diagnostics on a destroyed grid");let y=e.api.on("gridDestroyed",()=>u.destroy());return a.footer.append(p("\u5237\u65B0\u8BCA\u65AD",()=>u.refresh())),u.refresh(),a.root.focus(),u}var V={client:"\u5BA2\u6237\u7AEF\u6267\u884C",host:"\u5BBF\u4E3B\u624B\u52A8\u5904\u7406",datasource:"datasource \u8FDC\u7A0B\u5904\u7406","client-or-processor":"\u5BA2\u6237\u7AEF\u6216 dataProcessor\uFF08\u5B9E\u9645\u5206\u652F\u672A\u516C\u5F00\uFF09"};function Re(n){let e=l("section","mach-diagnostics__inspection");e.append(l("h4",void 0,`\u8BB0\u5F55 ${n.rowId} \u7684\u68C0\u67E5\u5FEB\u7167`),l("p",void 0,`\u6A21\u578B\uFF1A${n.availability} \xB7 \u663E\u793A\uFF1A${n.visibility} \xB7 DOM\uFF1A${n.rendered?"\u5DF2\u6E32\u67D3":"\u672A\u6E32\u67D3"}`),l("p",void 0,`\u62D6\u62FD\uFF1A${n.drag.allowed===null?"\u65E0\u6CD5\u786E\u8BA4\uFF0C\u53EF\u80FD\u672A\u6E32\u67D3\u624B\u67C4":n.drag.allowed?"\u5F53\u524D\u624B\u67C4\u53EF\u7528":"\u4E0D\u53EF\u7528"} \xB7 \u4E1A\u52A1\u5224\u5B9A\uFF1A${n.drag.policyEvaluated?"\u5DF2\u6267\u884C":"\u672A\u6267\u884C"}`));for(let r of[...n.drag.reasons,...n.notes])e.append(l("p","mach-workbench__hint",`${r.code} \xB7 ${r.message}`));let t=n.execution;return t&&e.append(l("p",void 0,`\u6392\u5E8F\uFF1A${V[t.sorting]}\uFF08${t.sortActive?"\u6709\u6761\u4EF6":"\u65E0\u6761\u4EF6"}\uFF09\uFF1B\u8FC7\u6EE4\uFF1A${V[t.filtering]}\uFF08${t.filterActive?"\u6709\u6761\u4EF6":"\u65E0\u6761\u4EF6"}\uFF09\u3002`)),e}function U(n,e){let t=l("section","mach-diagnostics__section");return t.append(l("h3",void 0,n),l("pre",void 0,e)),t}function R(n){if(typeof n=="function")return"[\u51FD\u6570]";let e=new WeakSet;try{return(JSON.stringify(n,(t,r)=>{if(typeof r=="function")return"[\u51FD\u6570]";if(r&&typeof r=="object"){if(e.has(r))return"[\u91CD\u590D\u6216\u5FAA\u73AF\u5F15\u7528]";e.add(r)}return r},2)??"\u672A\u8BBE\u7F6E").slice(0,6e3)}catch{return"[\u65E0\u6CD5\u5E8F\u5217\u5316]"}}function xe(n,e){let t=l("ol","mach-diagnostics__rules");t.tabIndex=-1;let r=n.api.rows.getById(e);if(r?.data==null||r.isGroup||r.isDetail||r.loading)return t.append(l("li",void 0,"\u8BB0\u5F55\u4E0D\u5B58\u5728\u6216\u4E0D\u9002\u7528\u6761\u4EF6\u884C\u6837\u5F0F\u3002")),t;let o=!1;for(let[i,s]of(n.api.getOption("rowStyleRules")??[]).entries()){let a="\u672A\u8FD0\u884C\uFF08\u524D\u5E8F\u89C4\u5219\u5DF2\u547D\u4E2D\uFF09";if(!o)try{o=s.when({data:r.data,node:r,api:n.api,rowPinned:null})===!0,a=o?"\u547D\u4E2D":"\u672A\u547D\u4E2D"}catch(u){a=`\u6761\u4EF6\u51FD\u6570\u5F02\u5E38\uFF1A${b(u)}`}let c=[s.tone,s.backgroundColor,s.color].filter(Boolean).join(" / ")||"\u672A\u6307\u5B9A\u989C\u8272";t.append(l("li",void 0,`\u89C4\u5219 ${i+1} \xB7 ${c} \xB7 ${a}`))}return t.children.length||t.append(l("li",void 0,"\u672A\u914D\u7F6E\u6761\u4EF6\u884C\u6837\u5F0F\u89C4\u5219\u3002")),t}export{L as inspectGridRow,me as mountAdvancedFilterBuilder,ye as mountChangeReview,_e as mountDiagnostics};
|
package/dist/worker.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
1
|
+
import { aj as GridDataProcessorRequest, ah as GridDataProcessor, ak as GridDataProcessorResult } from './api-pOhyuSQk.cjs';
|
|
2
|
+
export { ai as GridDataProcessorColumn, al as GridDataProcessorRow } from './api-pOhyuSQk.cjs';
|
|
3
3
|
|
|
4
4
|
type GridDataProcessorPayload<TData = any> = Omit<GridDataProcessorRequest<TData>, "signal">;
|
|
5
5
|
interface GridWorkerProcessMessage<TData = any> {
|
package/dist/worker.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
1
|
+
import { aj as GridDataProcessorRequest, ah as GridDataProcessor, ak as GridDataProcessorResult } from './api-pOhyuSQk.js';
|
|
2
|
+
export { ai as GridDataProcessorColumn, al as GridDataProcessorRow } from './api-pOhyuSQk.js';
|
|
3
3
|
|
|
4
4
|
type GridDataProcessorPayload<TData = any> = Omit<GridDataProcessorRequest<TData>, "signal">;
|
|
5
5
|
interface GridWorkerProcessMessage<TData = any> {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agile-team/mach-table",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.32.0",
|
|
4
4
|
"description": "Enterprise-grade, framework-agnostic TypeScript data grid with virtualization, editing, grouping and extensibility",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"data-grid",
|
|
@@ -64,13 +64,80 @@
|
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
66
|
"./styles/mach-table.css": {
|
|
67
|
-
"types": "./
|
|
67
|
+
"types": "./dist/mach-table.css.d.ts",
|
|
68
68
|
"default": "./dist/mach-table.css"
|
|
69
|
+
},
|
|
70
|
+
"./workbench": {
|
|
71
|
+
"import": {
|
|
72
|
+
"types": "./dist/workbench.d.ts",
|
|
73
|
+
"default": "./dist/workbench.js"
|
|
74
|
+
},
|
|
75
|
+
"require": {
|
|
76
|
+
"types": "./dist/workbench.d.cts",
|
|
77
|
+
"default": "./dist/workbench.cjs"
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"./preferences": {
|
|
81
|
+
"import": {
|
|
82
|
+
"types": "./dist/preferences.d.ts",
|
|
83
|
+
"default": "./dist/preferences.js"
|
|
84
|
+
},
|
|
85
|
+
"require": {
|
|
86
|
+
"types": "./dist/preferences.d.cts",
|
|
87
|
+
"default": "./dist/preferences.cjs"
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"./ordering": {
|
|
91
|
+
"import": {
|
|
92
|
+
"types": "./dist/ordering.d.ts",
|
|
93
|
+
"default": "./dist/ordering.js"
|
|
94
|
+
},
|
|
95
|
+
"require": {
|
|
96
|
+
"types": "./dist/ordering.d.cts",
|
|
97
|
+
"default": "./dist/ordering.cjs"
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"./server-side": {
|
|
101
|
+
"import": {
|
|
102
|
+
"types": "./dist/server-side.d.ts",
|
|
103
|
+
"default": "./dist/server-side.js"
|
|
104
|
+
},
|
|
105
|
+
"require": {
|
|
106
|
+
"types": "./dist/server-side.d.cts",
|
|
107
|
+
"default": "./dist/server-side.cjs"
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"./analysis": {
|
|
111
|
+
"import": {
|
|
112
|
+
"types": "./dist/analysis.d.ts",
|
|
113
|
+
"default": "./dist/analysis.js"
|
|
114
|
+
},
|
|
115
|
+
"require": {
|
|
116
|
+
"types": "./dist/analysis.d.cts",
|
|
117
|
+
"default": "./dist/analysis.cjs"
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"./multi-range": {
|
|
121
|
+
"import": {
|
|
122
|
+
"types": "./dist/multi-range.d.ts",
|
|
123
|
+
"default": "./dist/multi-range.js"
|
|
124
|
+
},
|
|
125
|
+
"require": {
|
|
126
|
+
"types": "./dist/multi-range.d.cts",
|
|
127
|
+
"default": "./dist/multi-range.cjs"
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
"./styles/workbench.css": {
|
|
131
|
+
"types": "./dist/workbench.css.d.ts",
|
|
132
|
+
"default": "./dist/workbench.css"
|
|
133
|
+
},
|
|
134
|
+
"./styles/server-side.css": {
|
|
135
|
+
"types": "./dist/server-side.css.d.ts",
|
|
136
|
+
"default": "./dist/server-side.css"
|
|
69
137
|
}
|
|
70
138
|
},
|
|
71
139
|
"files": [
|
|
72
|
-
"dist"
|
|
73
|
-
"styles/mach-table.css.d.ts"
|
|
140
|
+
"dist"
|
|
74
141
|
],
|
|
75
142
|
"sideEffects": [
|
|
76
143
|
"**/*.css"
|
|
@@ -81,5 +148,5 @@
|
|
|
81
148
|
"test": "vitest run",
|
|
82
149
|
"test:coverage": "vitest run --coverage"
|
|
83
150
|
},
|
|
84
|
-
"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\n\nMachTable 0.
|
|
151
|
+
"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\n\nMachTable 0.32.0 的框架无关 TypeScript Core:零运行时依赖,提供行列双虚拟化、领域化 API、单元格/整行编辑、树与分组、随机访问远程数据、区段隔离状态持久化和可诊断扩展系统。本版增加六个按需高级子入口,完善内部资源所有权、框架生命周期与缓存操作边界。\n\n```bash\npnpm add @agile-team/mach-table\n```\n\n```ts\nimport { createGrid, indexColumn } from \"@agile-team/mach-table\";\nimport \"@agile-team/mach-table/styles/mach-table.css\";\n\nconst api = createGrid(document.querySelector(\"#grid\")!, {\n columnDefs: [\n indexColumn({ headerName: \"序号\" }),\n { field: \"id\", headerName: \"ID\", width: 120 },\n { field: \"name\", headerName: \"名称\", flex: 1, editable: true }\n ],\n rowData: [{ id: \"1\", name: \"MachTable\" }],\n rowKey: \"id\",\n enableColumnResize: true,\n persistence: { key: \"tenant:user:customers\", sections: [\"columns\"] }\n});\n\napi.batch((grid) => {\n grid.rows.transact({ update: [{ id: \"1\", name: \"Updated\" }] });\n grid.columns.setVisible(\"internalNote\", false);\n grid.view.refreshCells({ rowIds: [\"1\"] });\n});\n\nconst saved = await api.editing.save(orderApi.saveChanges);\nconsole.table(saved.conflicts);\nconsole.info(api.diagnostics.get());\n\n// 原生宿主卸载时必须销毁;Vue/React 适配器会自动处理。\napi.destroy();\n```\n\n`persistence.sections` 同时约束进入 store 的数据与恢复范围;异步 store 写入有序,晚到加载不会覆盖加载期间的用户操作。\n\n单元格编辑通过内置对勾/取消控件显式结束,普通鼠标和焦点变化不会误提交;Enter、Escape、Tab 仍提供完整键盘路径。筛选、列设置、上下文菜单和操作菜单会继承所属表格实例的主题变量,不受宿主页面全局样式影响。\n\n编辑、粘贴、清空和填充共用已有列校验与整行校验,批量输入按行提交并合并撤销记录,异步校验不会写回已替换的数据。随机块缓存淘汰后,未保存行仍可通过编辑 API 保存或回滚;完整替换数据与重新查询会清理旧作用域的状态。\n\n`loading: true` 默认展示轻量表格骨架与本地化状态文案,空数据默认展示内置插画;需要品牌化时再通过 `overlayLoadingTemplate`、`overlayNoRowsTemplate` 覆盖,基础页面无需重复实现 loading/empty DOM。\n\n公共命令按 `rows`、`columns`、`selection`、`editing`、`filtering`、`sorting`、`pagination`、`hierarchy`、`view`、`state`、`io`、`diagnostics` 划分。完整签名见 [GridApi](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/api/grid-api.md)。\n\n大型本地数据 Worker 使用独立入口:\n\n```ts\nimport { createWorkerDataProcessor } from \"@agile-team/mach-table/worker\";\n```\n\nVue/React 项目请只安装对应适配包,它会自动安装并重导出 Core:\n\n- [@agile-team/mach-table-vue](https://www.npmjs.com/package/@agile-team/mach-table-vue)\n- [@agile-team/mach-table-react](https://www.npmjs.com/package/@agile-team/mach-table-react)\n\n## 行拖拽与条件整行颜色\n\n```ts\nimport { dragColumn, type GridOptions } from \"@agile-team/mach-table\";\n\ninterface Plan { id: string; name: string; status: string }\nconst options: GridOptions<Plan> = {\n rowKey: \"id\",\n columnDefs: [dragColumn(), { field: \"name\" }, { field: \"status\" }],\n rowStyleRules: [\n { when: ({ data }) => data.status === \"pending\", tone: \"warning\" },\n { when: ({ data }) => data.status === \"failed\", tone: \"danger\" },\n { when: ({ data }) => data.status === \"done\", tone: \"success\" }\n ]\n};\n```\n\n状态码由应用定义,包内不识别业务状态。颜色规则取第一条命中结果,未命中时沿用默认样式;支持自定义背景/文字颜色、固定列、明暗主题、选择和虚拟行复用。拖拽提供主题手柄、落点线、位置浮层、边缘滚动、Esc 取消和 Alt + ↑/↓ 移动。扁平外部数据设置 `applyRowDrag: false`,由 `onRowDragEnd` 处理持久化;自动模式先完成移动再发出事件,使用 `targetIndex` 读取最终下标。树、分组及排序等自动模式限制见[完整配方](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/recipes/row-presentation.md)。\n\n文档:[快速开始](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/guide/getting-started.md) · [企业接入](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/guide/enterprise-integration.md) · [API](https://github.com/ChenyCHENYU/MachTable/tree/main/docs/api)\n\n## 按需高级入口(0.32)\n\n仍从本包导入,无需另装高级功能包。普通根入口不加载这些实现或附加 CSS。\n\n| 子路径 | 功能 |\n| --- | --- |\n| `/workbench` | 高级过滤草稿与应用、修改差异/部分保存/冲突审阅、手动诊断 |\n| `/preferences` | 复合身份隔离、CAS、有序写入、历史版本及列 ID/类型迁移报告 |\n| `/ordering` | 多行/树移动、防环与业务约束、失败回滚、持久化撤销/重做 |\n| `/server-side` | 服务端分组/聚合、route 分页、缓存/刷新/事务及层级选择 |\n| `/multi-range` | Ctrl/Cmd 追加范围、格式化复制、校验清空及撤销 |\n| `/analysis` | Pivot、安全公式、柱/折线图和数据表回退 |\n\n```ts\nimport { mountAdvancedFilterBuilder } from \"@agile-team/mach-table/workbench\";\nimport \"@agile-team/mach-table/styles/workbench.css\";\n\nconst filters = mountAdvancedFilterBuilder(host, { api });\n// 宿主卸载时调用;表格销毁也会释放工作台。\nfilters.destroy();\n```\n\n服务端分组控件使用 `/styles/server-side.css`,分析与多范围使用 `/styles/workbench.css`。排序、偏好和纯分析计算无需附加 CSS。服务端 Store 按 route 分页,不提供全树任意显示 offset;分析只处理当前已加载数据并显示范围。排序 undo/redo 的 transport 必须一次 CAS 保存 `context.operations` 的完整批次或 `context.plan.after`,只保存首参数无法完整恢复非连续/跨父级位置。\n\n完整示例与限制:[工作台](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/recipes/workbench.md) · [排序](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/recipes/row-presentation.md) · [企业偏好](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/recipes/enterprise-preferences.md) · [服务端 Store](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/recipes/server-side-store.md) · [多范围](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/recipes/multi-range.md) · [分析](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/recipes/analysis.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"
|
|
85
152
|
}
|
|
File without changes
|