@agile-team/mach-table 0.25.0 → 0.28.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 +1 -1
- package/dist/adapter.cjs +1 -1
- package/dist/adapter.js +1 -1
- package/dist/index.cjs +6 -6
- package/dist/index.js +6 -6
- package/dist/worker.cjs +1 -1
- package/dist/worker.js +1 -1
- package/package.json +2 -2
package/dist/worker.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var b=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var W=Object.getOwnPropertyNames;var R=Object.prototype.hasOwnProperty;var x=(e,r)=>{for(var t in r)b(e,t,{get:r[t],enumerable:!0})},I=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of W(r))!R.call(e,n)&&n!==t&&b(e,n,{get:()=>r[n],enumerable:!(o=C(r,n))||o.enumerable});return e};var S=e=>I(b({},"__esModule",{value:!0}),e);var V={};x(V,{createWorkerDataProcessor:()=>N,installGridDataWorker:()=>M,processFieldDataRequest:()=>k});module.exports=S(V);var O=new Set(["__proto__","prototype","constructor"]);function L(e){return typeof e!="string"||e.length===0?!1:e.split(".").every(t=>t.length>0&&!O.has(t))}function f(e,r){if(e==null||!L(r))return;if(r.indexOf(".")<0)return e[r];let o=e,n=0;for(;n<r.length;){if(o==null)return;let a=r.indexOf(".",n);if(a<0){o=o[r.slice(n)];break}o=o[r.slice(n,a)],n=a+1}return o}var T=typeof Intl<"u"?new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"}):null;function q(e,r){let t=e==null||e==="",o=r==null||r==="";return!t&&!o?null:t&&o?0:t?1:-1}function _(e,r){let t=Number.isNaN(e),o=Number.isNaN(r);return t||o?t===o?0:t?1:-1:e-r}function A(e,r){return e===r?0:e?1:-1}function v(e,r){let t=q(e,r);if(t!==null)return t;if(typeof e=="number"&&typeof r=="number")return _(e,r);if(e instanceof Date&&r instanceof Date)return e.getTime()-r.getTime();if(typeof e=="boolean"&&typeof r=="boolean")return A(e,r);let o=String(e),n=String(r);return T?T.compare(o,n):o.localeCompare(n)}function B(e){return e==null?"":String(e).toLowerCase()}function j(e,r,t){let o=B(e),n=r.map(a=>{let s=(a.value??"").toLowerCase();switch(a.match){case"contains":return o.includes(s);case"notContains":return!o.includes(s);case"equals":return o===s;case"notEquals":return o!==s;case"startsWith":return o.startsWith(s);case"endsWith":return o.endsWith(s);case"blank":return o==="";case"notBlank":return o!=="";default:return!0}});return n.length===0?!0:t==="or"?n.some(Boolean):n.every(Boolean)}function H(e,r,t){switch(t.match){case"equals":return e===r;case"notEquals":return e!==r;case"lessThan":return e<r;case"lessThanOrEqual":return e<=r;case"greaterThan":return e>r;case"greaterThanOrEqual":return e>=r;case"inRange":return e>=r&&e<=(t.value2??r);default:return!0}}function Q(e,r){let t=e==null||e==="";if(r.match==="blank")return t;if(r.match==="notBlank")return!t;if(t)return!1;let o=typeof e=="number"?e:Number(e);if(Number.isNaN(o))return!1;let n=r.value;return n==null||Number.isNaN(n)?!1:H(o,n,r)}function U(e,r,t){let o=r.map(n=>Q(e,n));return o.length===0?!0:t==="or"?o.some(Boolean):o.every(Boolean)}function p(e){if(e==null||e==="")return null;if(e instanceof Date)return isNaN(e.getTime())?null:e.getTime();if(typeof e=="number")return e;let r=Date.parse(String(e));return isNaN(r)?null:r}function z(e,r,t){let o=r.map(n=>{let a=p(e)==null;if(n.match==="blank")return a;if(n.match==="notBlank")return!a;if(a)return!1;let s=p(e),c=n.value!=null?p(n.value):null;if(c==null)return!1;switch(n.match){case"equals":return s===c;case"notEquals":return s!==c;case"lessThan":return s<c;case"greaterThan":return s>c;case"inRange":{let d=n.value2!=null?p(n.value2):null;return d!=null?s>=c&&s<=d:s>=c}default:return!0}});return o.length===0?!0:t==="or"?o.some(Boolean):o.every(Boolean)}function J(e,r){return r.length===0?!0:r.some(t=>t==null&&e==null||t===e)}function D(e,r){let t=r.type!=="set"&&r.operator==="or"?"or":"and";switch(r.type){case"text":return j(e,r.conditions,t);case"number":return U(e,r.conditions,t);case"date":return z(e,r.conditions,t);case"set":return J(e,r.values);default:return!0}}function w(e,r,t){if(e.kind==="condition"){let n=t.get(e.colId);return n==null||D(f(r,n),e.filter)}let o=e.operator==="or"?e.children.some(n=>w(n,r,t)):e.children.every(n=>w(n,r,t));return e.not?!o:o}function K(e,r,t){for(let[o,n]of Object.entries(r.filterModel)){let a=t.get(o);if(a!=null&&!D(f(e,a),n))return!1}return!0}function X(e,r,t){return t.every(o=>r.columns.some(n=>{let a=n.field==null?null:f(e,n.field);return String(a??"").toLowerCase().includes(o)}))}function Y(e,r,t,o){return!K(e,r,t)||r.advancedFilterModel&&!w(r.advancedFilterModel.root,e,t)?!1:X(e,r,o)}function Z(e,r,t){r.sortModel.length!==0&&e.sort((o,n)=>{for(let a of r.sortModel){let s=t.get(a.colId);if(!s)continue;let c=v(f(o.data,s),f(n.data,s));if(c!==0)return a.direction==="desc"?-c:c}return o.order-n.order})}function $(e){if(!e?.())return;let r=new Error("Data processing aborted");throw r.name="AbortError",r}async function k(e,r={}){let t=new Map(e.columns.flatMap(s=>s.field?[[s.colId,s.field]]:[])),o=e.quickFilterText?.trim().toLowerCase().split(/\s+/).filter(Boolean)??[],n=Math.max(100,Math.trunc(r.yieldEvery??2e3)),a=[];for(let s=0;s<e.rows.length;s++){$(r.isCancelled),s>0&&s%n===0&&await new Promise(d=>setTimeout(d,0));let c=e.rows[s];Y(c.data,e,t,o)&&a.push({id:c.id,data:c.data,order:s})}return Z(a,e,t),{rowIds:a.map(s=>s.id)}}function M(e){let r=new Set;e.addEventListener("message",t=>{let o=t.data;if(o.type==="mach-table:cancel"){r.add(o.requestId);return}let{requestId:n}=o;r.delete(n),k(o.payload,{isCancelled:()=>r.has(n)}).then(a=>{r.has(n)||e.postMessage({type:"mach-table:result",requestId:n,rowIds:a.rowIds})}).catch(a=>{r.has(n)||e.postMessage({type:"mach-table:error",requestId:n,message:a instanceof Error?a.message:String(a)})}).finally(()=>r.delete(n))})}function h(e){if(e instanceof Error)return e;let r=new Error(typeof e=="string"?e:"Data processing aborted");return r.name="AbortError",r}function N(e,r={}){let t=null,o=0,n=!1,a=new Map,s=l=>{for(let i of a.values())i.signal.removeEventListener("abort",i.abort),i.reject(l);a.clear()},c=l=>{let i=l.data;if(!i||i.type!=="mach-table:result"&&i.type!=="mach-table:error")return;let u=a.get(i.requestId);u&&(a.delete(i.requestId),u.signal.removeEventListener("abort",u.abort),i.type==="mach-table:result"?u.resolve({rowIds:i.rowIds}):u.reject(new Error(i.message)))},d=l=>{l.removeEventListener("message",c),l.removeEventListener("error",P)},P=l=>{let i=t;t=null,i&&(d(i),i.terminate()),s(l.error??new Error(l.message||"Grid data worker failed"))},G=()=>{if(t)return t;if(n)throw new Error("Worker data processor has been destroyed");return t=e(),t.addEventListener("message",c),t.addEventListener("error",P),t};return{process(l){if(l.signal.aborted)return Promise.reject(h(l.signal.reason));let i=++o;return new Promise((u,y)=>{let g=()=>{a.get(i)&&(a.delete(i),t?.postMessage({type:"mach-table:cancel",requestId:i}),y(h(l.signal.reason)))};a.set(i,{resolve:u,reject:y,signal:l.signal,abort:g}),l.signal.addEventListener("abort",g,{once:!0});let{signal:E,...F}=l;try{G().postMessage({type:"mach-table:process",requestId:i,payload:F})}catch(m){a.delete(i),l.signal.removeEventListener("abort",g),y(m instanceof Error?m:new Error(String(m)))}})},destroy(){if(!n){if(n=!0,s(h("Worker data processor destroyed")),t){let l=t;d(l),r.terminateOnDestroy!==!1&&l.terminate()}t=null}}}}0&&(module.exports={createWorkerDataProcessor,installGridDataWorker,processFieldDataRequest});
|
package/dist/worker.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var G=new Set(["__proto__","prototype","constructor"]);function E(e){return typeof e!="string"||e.length===0?!1:e.split(".").every(t=>t.length>0&&!G.has(t))}function f(e,r){if(e==null||!E(r))return;if(r.indexOf(".")<0)return e[r];let n=e,o=0;for(;o<r.length;){if(n==null)return;let a=r.indexOf(".",o);if(a<0){n=n[r.slice(o)];break}n=n[r.slice(o,a)],o=a+1}return n}var k=typeof Intl<"u"?new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"}):null;function F(e,r){let t=e==null||e==="",n=r==null||r==="";return!t&&!n?null:t&&n?0:t?1:-1}function C(e,r){let t=Number.isNaN(e),n=Number.isNaN(r);return t||n?t===n?0:t?1:-1:e-r}function W(e,r){return e===r?0:e?1:-1}function P(e,r){let t=F(e,r);if(t!==null)return t;if(typeof e=="number"&&typeof r=="number")return C(e,r);if(e instanceof Date&&r instanceof Date)return e.getTime()-r.getTime();if(typeof e=="boolean"&&typeof r=="boolean")return W(e,r);let n=String(e),o=String(r);return k?k.compare(n,o):n.localeCompare(o)}function R(e){return e==null?"":String(e).toLowerCase()}function x(e,r,t){let n=R(e),o=r.map(a=>{let s=(a.value??"").toLowerCase();switch(a.match){case"contains":return n.includes(s);case"notContains":return!n.includes(s);case"equals":return n===s;case"notEquals":return n!==s;case"startsWith":return n.startsWith(s);case"endsWith":return n.endsWith(s);case"blank":return n==="";case"notBlank":return n!=="";default:return!0}});return o.length===0?!0:t==="or"?o.some(Boolean):o.every(Boolean)}function I(e,r,t){switch(t.match){case"equals":return e===r;case"notEquals":return e!==r;case"lessThan":return e<r;case"lessThanOrEqual":return e<=r;case"greaterThan":return e>r;case"greaterThanOrEqual":return e>=r;case"inRange":return e>=r&&e<=(t.value2??r);default:return!0}}function S(e,r){let t=e==null||e==="";if(r.match==="blank")return t;if(r.match==="notBlank")return!t;if(t)return!1;let n=typeof e=="number"?e:Number(e);if(Number.isNaN(n))return!1;let o=r.value;return o==null||Number.isNaN(o)?!1:I(n,o,r)}function O(e,r,t){let n=r.map(o=>S(e,o));return n.length===0?!0:t==="or"?n.some(Boolean):n.every(Boolean)}function p(e){if(e==null||e==="")return null;if(e instanceof Date)return isNaN(e.getTime())?null:e.getTime();if(typeof e=="number")return e;let r=Date.parse(String(e));return isNaN(r)?null:r}function L(e,r,t){let n=r.map(o=>{let a=p(e)==null;if(o.match==="blank")return a;if(o.match==="notBlank")return!a;if(a)return!1;let s=p(e),c=o.value!=null?p(o.value):null;if(c==null)return!1;switch(o.match){case"equals":return s===c;case"notEquals":return s!==c;case"lessThan":return s<c;case"greaterThan":return s>c;case"inRange":{let d=o.value2!=null?p(o.value2):null;return d!=null?s>=c&&s<=d:s>=c}default:return!0}});return n.length===0?!0:t==="or"?n.some(Boolean):n.every(Boolean)}function q(e,r){return r.length===0?!0:r.some(t=>t==null&&e==null||t===e)}function b(e,r){let t=r.type!=="set"&&r.operator==="or"?"or":"and";switch(r.type){case"text":return x(e,r.conditions,t);case"number":return O(e,r.conditions,t);case"date":return L(e,r.conditions,t);case"set":return q(e,r.values);default:return!0}}function h(e,r,t){if(e.kind==="condition"){let o=t.get(e.colId);return o==null||b(f(r,o),e.filter)}let n=e.operator==="or"?e.children.some(o=>h(o,r,t)):e.children.every(o=>h(o,r,t));return e.not?!n:n}function _(e,r,t){for(let[n,o]of Object.entries(r.filterModel)){let a=t.get(n);if(a!=null&&!b(f(e,a),o))return!1}return!0}function A(e,r,t){return t.every(n=>r.columns.some(o=>{let a=o.field==null?null:f(e,o.field);return String(a??"").toLowerCase().includes(n)}))}function B(e,r,t,n){return!_(e,r,t)||r.advancedFilterModel&&!h(r.advancedFilterModel.root,e,t)?!1:A(e,r,n)}function j(e,r,t){r.sortModel.length!==0&&e.sort((n,o)=>{for(let a of r.sortModel){let s=t.get(a.colId);if(!s)continue;let c=P(f(n.data,s),f(o.data,s));if(c!==0)return a.direction==="desc"?-c:c}return n.order-o.order})}function H(e){if(!e?.())return;let r=new Error("Data processing aborted");throw r.name="AbortError",r}async function T(e,r={}){let t=new Map(e.columns.flatMap(s=>s.field?[[s.colId,s.field]]:[])),n=e.quickFilterText?.trim().toLowerCase().split(/\s+/).filter(Boolean)??[],o=Math.max(100,Math.trunc(r.yieldEvery??2e3)),a=[];for(let s=0;s<e.rows.length;s++){H(r.isCancelled),s>0&&s%o===0&&await new Promise(d=>setTimeout(d,0));let c=e.rows[s];B(c.data,e,t,n)&&a.push({id:c.id,data:c.data,order:s})}return j(a,e,t),{rowIds:a.map(s=>s.id)}}function Q(e){let r=new Set;e.addEventListener("message",t=>{let n=t.data;if(n.type==="mach-table:cancel"){r.add(n.requestId);return}let{requestId:o}=n;r.delete(o),T(n.payload,{isCancelled:()=>r.has(o)}).then(a=>{r.has(o)||e.postMessage({type:"mach-table:result",requestId:o,rowIds:a.rowIds})}).catch(a=>{r.has(o)||e.postMessage({type:"mach-table:error",requestId:o,message:a instanceof Error?a.message:String(a)})}).finally(()=>r.delete(o))})}function D(e){if(e instanceof Error)return e;let r=new Error(typeof e=="string"?e:"Data processing aborted");return r.name="AbortError",r}function U(e,r={}){let t=null,n=0,o=!1,a=new Map,s=l=>{for(let i of a.values())i.signal.removeEventListener("abort",i.abort),i.reject(l);a.clear()},c=l=>{let i=l.data;if(!i||i.type!=="mach-table:result"&&i.type!=="mach-table:error")return;let u=a.get(i.requestId);u&&(a.delete(i.requestId),u.signal.removeEventListener("abort",u.abort),i.type==="mach-table:result"?u.resolve({rowIds:i.rowIds}):u.reject(new Error(i.message)))},d=l=>{l.removeEventListener("message",c),l.removeEventListener("error",w)},w=l=>{let i=t;t=null,i&&(d(i),i.terminate()),s(l.error??new Error(l.message||"Grid data worker failed"))},v=()=>{if(t)return t;if(o)throw new Error("Worker data processor has been destroyed");return t=e(),t.addEventListener("message",c),t.addEventListener("error",w),t};return{process(l){if(l.signal.aborted)return Promise.reject(D(l.signal.reason));let i=++n;return new Promise((u,y)=>{let g=()=>{a.get(i)&&(a.delete(i),t?.postMessage({type:"mach-table:cancel",requestId:i}),y(D(l.signal.reason)))};a.set(i,{resolve:u,reject:y,signal:l.signal,abort:g}),l.signal.addEventListener("abort",g,{once:!0});let{signal:M,...N}=l;try{v().postMessage({type:"mach-table:process",requestId:i,payload:N})}catch(m){a.delete(i),l.signal.removeEventListener("abort",g),y(m instanceof Error?m:new Error(String(m)))}})},destroy(){if(!o){if(o=!0,s(D("Worker data processor destroyed")),t){let l=t;d(l),r.terminateOnDestroy!==!1&&l.terminate()}t=null}}}}export{U as createWorkerDataProcessor,Q as installGridDataWorker,T as processFieldDataRequest};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agile-team/mach-table",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.28.0",
|
|
4
4
|
"description": "Enterprise-grade, framework-agnostic TypeScript data grid with virtualization, editing, grouping and extensibility",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"data-grid",
|
|
@@ -81,5 +81,5 @@
|
|
|
81
81
|
"test": "vitest run",
|
|
82
82
|
"test:coverage": "vitest run --coverage"
|
|
83
83
|
},
|
|
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.
|
|
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.28 的框架无关 TypeScript Core:零运行时依赖,提供行列双虚拟化、领域化 API、单元格/整行编辑、树与分组、随机访问远程数据、区段隔离状态持久化和可诊断扩展系统。0.28 保持公共 API 不变并清零历史复杂度豁免。\n\n```bash\npnpm add @agile-team/mach-table\n```\n\n```ts\nimport { createGrid } from \"@agile-team/mach-table\";\nimport \"@agile-team/mach-table/styles/mach-table.css\";\n\nconst api = createGrid(document.querySelector(\"#grid\")!, {\n columnDefs: [\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公共命令按 `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文档:[快速开始](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\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
85
|
}
|