@agile-team/mach-table-vue 0.4.1 → 0.5.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 CHANGED
@@ -6,15 +6,28 @@
6
6
 
7
7
  Official Vue 3 adapter for MachTable. It provides `<MachTable>` / `<RobotGrid>`, `useMachTable`, Vue cell/detail renderer factories, reactive option updates and automatic lifecycle cleanup.
8
8
 
9
+ ## Install
10
+
9
11
  ```bash
10
12
  pnpm add @agile-team/mach-table-vue
11
13
  ```
12
14
 
15
+ Import the stylesheet once from your application entry:
16
+
17
+ ```ts
18
+ import "@agile-team/mach-table-vue/styles.css";
19
+ ```
20
+
21
+ ## Integration modes
22
+
23
+ ### Local, route-level import
24
+
25
+ Best when only a few routes use a grid. A lazy-loaded route naturally keeps MachTable in that route's chunk.
26
+
13
27
  ```vue
14
28
  <script setup lang="ts">
15
29
  import { ref } from "vue";
16
30
  import { MachTable, useMachTable, type ColDef } from "@agile-team/mach-table-vue";
17
- import "@agile-team/mach-table-vue/styles.css";
18
31
 
19
32
  interface Row { id: string; name: string }
20
33
  const grid = useMachTable<Row>();
@@ -35,7 +48,47 @@ const columns: ColDef<Row>[] = [{ field: "name", headerName: "Name", flex: 1 }];
35
48
  </template>
36
49
  ```
37
50
 
38
- The adapter installs the matching `@agile-team/mach-table` core automatically and re-exports its complete API and types. Only `vue >= 3.2` remains a peer dependency supplied by the host application.
51
+ ### Global synchronous plugin
52
+
53
+ Best when most screens render tables. Components are available in every template without page-level runtime imports.
54
+
55
+ ```ts
56
+ // main.ts
57
+ import { createApp } from "vue";
58
+ import { MachTablePlugin } from "@agile-team/mach-table-vue";
59
+ import "@agile-team/mach-table-vue/styles.css";
60
+ import App from "./App.vue";
61
+
62
+ createApp(App).use(MachTablePlugin).mount("#app");
63
+ ```
64
+
65
+ ### Global async plugin
66
+
67
+ Best for large admin or low-code applications. The plugin is registered at startup, while the component and Core stay in a separate chunk until the first `<MachTable>` is rendered.
68
+
69
+ ```ts
70
+ // main.ts
71
+ import { createApp } from "vue";
72
+ import AsyncMachTablePlugin, { preloadMachTable } from "@agile-team/mach-table-vue/async";
73
+ import "@agile-team/mach-table-vue/styles.css";
74
+ import App from "./App.vue";
75
+
76
+ createApp(App).use(AsyncMachTablePlugin).mount("#app");
77
+
78
+ // Optional route-hover prefetch; dynamic imports are cached and idempotent.
79
+ void preloadMachTable();
80
+ ```
81
+
82
+ After either global plugin is installed, pages can use `<MachTable>` or `<RobotGrid>` directly. Global component types are included for Volar and `vue-tsc`. A custom name and legacy alias policy are also supported:
83
+
84
+ ```ts
85
+ app.use(MachTablePlugin, {
86
+ componentName: "BusinessTable",
87
+ registerRobotGridAlias: false
88
+ });
89
+ ```
90
+
91
+ The adapter installs the matching `@agile-team/mach-table` core automatically and re-exports its complete API and types. Only `vue >= 3.2` remains a peer dependency supplied by the host application. Existing local imports remain fully supported.
39
92
 
40
93
  Documentation: [Vue guide](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/guide/vue.md) · [Enterprise integration](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/guide/enterprise-integration.md) · [Element Plus](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/guide/element-plus.md) · [Naive UI](https://github.com/ChenyCHENYU/MachTable/blob/main/docs/guide/naive-ui.md)
41
94
 
@@ -0,0 +1,7 @@
1
+ import {
2
+ RobotGrid
3
+ } from "./chunk-CHEQLQW4.js";
4
+ export {
5
+ RobotGrid
6
+ };
7
+ //# sourceMappingURL=RobotGrid-2KWWM4C4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,7 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkS3NR7DIGcjs = require('./chunk-S3NR7DIG.cjs');
4
+
5
+
6
+ exports.RobotGrid = _chunkS3NR7DIGcjs.RobotGrid;
7
+ //# sourceMappingURL=RobotGrid-LELHEO4W.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["d:\\office-project\\wl\\MachTable\\packages\\vue\\dist\\RobotGrid-LELHEO4W.cjs"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,gDAAC","file":"D:\\office-project\\wl\\MachTable\\packages\\vue\\dist\\RobotGrid-LELHEO4W.cjs"}
package/dist/async.cjs ADDED
@@ -0,0 +1,23 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }
2
+
3
+ var _chunk345ZEGIEcjs = require('./chunk-345ZEGIE.cjs');
4
+
5
+ // src/async.ts
6
+ var _vue = require('vue');
7
+ var preloadMachTable = () => Promise.resolve().then(() => _interopRequireWildcard(require("./RobotGrid-LELHEO4W.cjs"))).then(({ RobotGrid }) => RobotGrid);
8
+ var AsyncMachTable = _vue.defineAsyncComponent.call(void 0, {
9
+ loader: preloadMachTable
10
+ });
11
+ var AsyncMachTablePlugin = Object.freeze({
12
+ install(app, options = {}) {
13
+ _chunk345ZEGIEcjs.registerGlobalMachTable.call(void 0, app, AsyncMachTable, options);
14
+ }
15
+ });
16
+ var async_default = AsyncMachTablePlugin;
17
+
18
+
19
+
20
+
21
+
22
+ exports.AsyncMachTable = AsyncMachTable; exports.AsyncMachTablePlugin = AsyncMachTablePlugin; exports.default = async_default; exports.preloadMachTable = preloadMachTable;
23
+ //# sourceMappingURL=async.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["d:\\office-project\\wl\\MachTable\\packages\\vue\\dist\\async.cjs"],"names":[],"mappings":"AAAA;AACE;AACF,wDAA6B;AAC7B;AACA;AACA,0BAA0C;AAC1C,IAAI,iBAAiB,EAAE,CAAC,EAAE,GAAG,4DAAM,CAAC,0BAA0B,GAAC,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,GAAG,SAAS,CAAC;AAClG,IAAI,eAAe,EAAE,uCAAoB;AACzC,EAAE,MAAM,EAAE;AACV,CAAC,CAAC;AACF,IAAI,qBAAqB,EAAE,MAAM,CAAC,MAAM,CAAC;AACzC,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE;AAC7B,IAAI,uDAAuB,GAAI,EAAE,cAAc,EAAE,OAAO,CAAC;AACzD,EAAE;AACF,CAAC,CAAC;AACF,IAAI,cAAc,EAAE,oBAAoB;AACxC;AACE;AACA;AACA;AACA;AACF,2KAAC","file":"D:\\office-project\\wl\\MachTable\\packages\\vue\\dist\\async.cjs","sourcesContent":[null]}
@@ -0,0 +1,21 @@
1
+ import * as vue from 'vue';
2
+ import { App } from 'vue';
3
+ import { R as RobotGridVueProps, M as MachTablePluginOptions } from './globalRegistration-CQ2dTNzy.cjs';
4
+ import '@agile-team/mach-table';
5
+
6
+ /**
7
+ * Starts loading the Vue adapter ahead of first render. The browser and bundler
8
+ * cache the promise, so calling this on route hover is safe and idempotent.
9
+ */
10
+ declare const preloadMachTable: () => Promise<vue.DefineComponent<RobotGridVueProps<any>>>;
11
+ /** Async global component used by AsyncMachTablePlugin. */
12
+ declare const AsyncMachTable: vue.DefineComponent<RobotGridVueProps<any>>;
13
+ /**
14
+ * Registers `<MachTable>` globally while keeping the component and Core in a
15
+ * separate chunk until the first table is rendered.
16
+ */
17
+ declare const AsyncMachTablePlugin: Readonly<{
18
+ install(app: App, options?: MachTablePluginOptions): void;
19
+ }>;
20
+
21
+ export { AsyncMachTable, AsyncMachTablePlugin, MachTablePluginOptions, AsyncMachTablePlugin as default, preloadMachTable };
@@ -0,0 +1,21 @@
1
+ import * as vue from 'vue';
2
+ import { App } from 'vue';
3
+ import { R as RobotGridVueProps, M as MachTablePluginOptions } from './globalRegistration-CQ2dTNzy.js';
4
+ import '@agile-team/mach-table';
5
+
6
+ /**
7
+ * Starts loading the Vue adapter ahead of first render. The browser and bundler
8
+ * cache the promise, so calling this on route hover is safe and idempotent.
9
+ */
10
+ declare const preloadMachTable: () => Promise<vue.DefineComponent<RobotGridVueProps<any>>>;
11
+ /** Async global component used by AsyncMachTablePlugin. */
12
+ declare const AsyncMachTable: vue.DefineComponent<RobotGridVueProps<any>>;
13
+ /**
14
+ * Registers `<MachTable>` globally while keeping the component and Core in a
15
+ * separate chunk until the first table is rendered.
16
+ */
17
+ declare const AsyncMachTablePlugin: Readonly<{
18
+ install(app: App, options?: MachTablePluginOptions): void;
19
+ }>;
20
+
21
+ export { AsyncMachTable, AsyncMachTablePlugin, MachTablePluginOptions, AsyncMachTablePlugin as default, preloadMachTable };
package/dist/async.js ADDED
@@ -0,0 +1,23 @@
1
+ import {
2
+ registerGlobalMachTable
3
+ } from "./chunk-JJQDDIQU.js";
4
+
5
+ // src/async.ts
6
+ import { defineAsyncComponent } from "vue";
7
+ var preloadMachTable = () => import("./RobotGrid-2KWWM4C4.js").then(({ RobotGrid }) => RobotGrid);
8
+ var AsyncMachTable = defineAsyncComponent({
9
+ loader: preloadMachTable
10
+ });
11
+ var AsyncMachTablePlugin = Object.freeze({
12
+ install(app, options = {}) {
13
+ registerGlobalMachTable(app, AsyncMachTable, options);
14
+ }
15
+ });
16
+ var async_default = AsyncMachTablePlugin;
17
+ export {
18
+ AsyncMachTable,
19
+ AsyncMachTablePlugin,
20
+ async_default as default,
21
+ preloadMachTable
22
+ };
23
+ //# sourceMappingURL=async.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/async.ts"],"sourcesContent":["import { defineAsyncComponent, type App } from \"vue\";\nimport { registerGlobalMachTable, type MachTablePluginOptions } from \"./globalRegistration\";\n\n/**\n * Starts loading the Vue adapter ahead of first render. The browser and bundler\n * cache the promise, so calling this on route hover is safe and idempotent.\n */\nexport const preloadMachTable = () => import(\"./RobotGrid\").then(({ RobotGrid }) => RobotGrid);\n\n/** Async global component used by AsyncMachTablePlugin. */\nexport const AsyncMachTable = defineAsyncComponent({\n loader: preloadMachTable\n});\n\n/**\n * Registers `<MachTable>` globally while keeping the component and Core in a\n * separate chunk until the first table is rendered.\n */\nexport const AsyncMachTablePlugin = Object.freeze({\n install(app: App, options: MachTablePluginOptions = {}): void {\n registerGlobalMachTable(app, AsyncMachTable, options);\n }\n});\n\nexport type { MachTablePluginOptions } from \"./globalRegistration\";\nexport default AsyncMachTablePlugin;\n"],"mappings":";;;;;AAAA,SAAS,4BAAsC;AAOxC,IAAM,mBAAmB,MAAM,OAAO,yBAAa,EAAE,KAAK,CAAC,EAAE,UAAU,MAAM,SAAS;AAGtF,IAAM,iBAAiB,qBAAqB;AAAA,EACjD,QAAQ;AACV,CAAC;AAMM,IAAM,uBAAuB,OAAO,OAAO;AAAA,EAChD,QAAQ,KAAU,UAAkC,CAAC,GAAS;AAC5D,4BAAwB,KAAK,gBAAgB,OAAO;AAAA,EACtD;AACF,CAAC;AAGD,IAAO,gBAAQ;","names":[]}
@@ -0,0 +1,21 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }// src/globalRegistration.ts
2
+ function registerGlobalMachTable(app, component, options = {}) {
3
+ const componentName = _nullishCoalesce(options.componentName, () => ( "MachTable"));
4
+ if (!componentName.trim()) {
5
+ throw new Error("[MachTable] Global componentName must not be empty.");
6
+ }
7
+ const names = /* @__PURE__ */ new Set([componentName]);
8
+ if (options.registerRobotGridAlias !== false) names.add("RobotGrid");
9
+ for (const name of names) {
10
+ const existing = app.component(name);
11
+ if (existing && existing !== component) {
12
+ throw new Error(`[MachTable] Cannot register global component "${name}" because that name is already in use.`);
13
+ }
14
+ if (!existing) app.component(name, component);
15
+ }
16
+ }
17
+
18
+
19
+
20
+ exports.registerGlobalMachTable = registerGlobalMachTable;
21
+ //# sourceMappingURL=chunk-345ZEGIE.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["d:\\office-project\\wl\\MachTable\\packages\\vue\\dist\\chunk-345ZEGIE.cjs"],"names":[],"mappings":"AAAA;AACA,SAAS,uBAAuB,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE;AAC/D,EAAE,MAAM,cAAc,mBAAE,OAAO,CAAC,aAAc,UAAG,aAAW;AAC5D,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE;AAC7B,IAAI,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC;AAC1E,EAAE;AACF,EAAE,MAAM,MAAM,kBAAkB,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC;AACxD,EAAE,GAAG,CAAC,OAAO,CAAC,uBAAuB,IAAI,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;AACtE,EAAE,IAAI,CAAC,MAAM,KAAK,GAAG,KAAK,EAAE;AAC5B,IAAI,MAAM,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;AACxC,IAAI,GAAG,CAAC,SAAS,GAAG,SAAS,IAAI,SAAS,EAAE;AAC5C,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,8CAA8C,EAAE,IAAI,CAAC,sCAAsC,CAAC,CAAC;AACpH,IAAI;AACJ,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;AACjD,EAAE;AACF;AACA;AACA;AACE;AACF,0DAAC","file":"D:\\office-project\\wl\\MachTable\\packages\\vue\\dist\\chunk-345ZEGIE.cjs","sourcesContent":[null]}
@@ -0,0 +1,78 @@
1
+ // src/RobotGrid.ts
2
+ import { defineComponent, h, onBeforeUnmount, onMounted, ref, watch } from "vue";
3
+ import {
4
+ createGrid,
5
+ DIRECT_GRID_OPTION_KEYS,
6
+ EVENT_TYPES,
7
+ GRID_OPTION_KEYS,
8
+ GRID_OPTION_META
9
+ } from "@agile-team/mach-table";
10
+ var ADAPTER_OPTION_KEYS = GRID_OPTION_KEYS.filter((key) => key !== "className");
11
+ var DIRECT_OPTION_KEYS = DIRECT_GRID_OPTION_KEYS.filter((key) => key !== "className");
12
+ var runtimeProps = {};
13
+ for (const key of ADAPTER_OPTION_KEYS) {
14
+ const kind = GRID_OPTION_META[key].kind;
15
+ const type = kind === "boolean" ? Boolean : kind === "number" ? Number : kind === "array" ? Array : kind === "function" ? Function : kind === "boolean-object" ? [Boolean, Object] : kind === "object" ? Object : kind === "string" ? String : void 0;
16
+ runtimeProps[key] = { ...type ? { type } : {}, default: void 0 };
17
+ }
18
+ runtimeProps.className = { type: String, default: void 0 };
19
+ runtimeProps.gridClassName = { type: String, default: void 0 };
20
+ function handlerNameOf(eventType) {
21
+ return "on" + eventType.charAt(0).toUpperCase() + eventType.slice(1);
22
+ }
23
+ var RobotGridImpl = defineComponent({
24
+ name: "RobotGrid",
25
+ inheritAttrs: false,
26
+ props: runtimeProps,
27
+ emits: [...EVENT_TYPES],
28
+ setup(rawProps, { expose, attrs, emit }) {
29
+ const props = rawProps;
30
+ const host = ref(null);
31
+ let api = null;
32
+ onMounted(() => {
33
+ if (!host.value) return;
34
+ const options = {};
35
+ for (const key of ADAPTER_OPTION_KEYS) {
36
+ const value = props[key];
37
+ if (value !== void 0) options[key] = value;
38
+ }
39
+ if (props.gridClassName !== void 0) options.className = props.gridClassName;
40
+ for (const type of EVENT_TYPES) {
41
+ options[handlerNameOf(type)] = (event) => emit(type, event);
42
+ }
43
+ api = createGrid(host.value, options);
44
+ });
45
+ onBeforeUnmount(() => {
46
+ api?.destroy();
47
+ api = null;
48
+ });
49
+ watch(() => props.rowData, (value) => api?.setRowData(value));
50
+ watch(() => props.columnDefs, (value) => api?.setColumnDefs(value));
51
+ watch(() => props.quickFilterText, (value) => api?.setQuickFilter(value));
52
+ watch(() => props.gridClassName, (value) => api?.updateOptions({ className: value }));
53
+ watch(
54
+ () => DIRECT_OPTION_KEYS.map((key) => props[key]),
55
+ (values, previous) => {
56
+ if (!api) return;
57
+ const changed = {};
58
+ values.forEach((value, index) => {
59
+ if (!Object.is(value, previous[index])) changed[DIRECT_OPTION_KEYS[index]] = value;
60
+ });
61
+ if (Object.keys(changed).length > 0) api.updateOptions(changed);
62
+ }
63
+ );
64
+ expose({ getApi: () => api });
65
+ return () => h("div", {
66
+ ...attrs,
67
+ ref: host,
68
+ class: ["mach-vue-host", props.className, attrs.class].filter(Boolean),
69
+ style: attrs.style
70
+ });
71
+ }
72
+ });
73
+ var RobotGrid = RobotGridImpl;
74
+
75
+ export {
76
+ RobotGrid
77
+ };
78
+ //# sourceMappingURL=chunk-CHEQLQW4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/RobotGrid.ts"],"sourcesContent":["import { defineComponent, h, onBeforeUnmount, onMounted, ref, watch, type DefineComponent } from \"vue\";\nimport {\n createGrid,\n DIRECT_GRID_OPTION_KEYS,\n EVENT_TYPES,\n GRID_OPTION_KEYS,\n GRID_OPTION_META\n} from \"@agile-team/mach-table\";\nimport type { GridApi, GridOptions } from \"@agile-team/mach-table\";\n\nexport type RobotGridVueProps<TData = any> = Omit<GridOptions<TData>, \"className\"> & {\n /** CSS class applied to the Vue host element. */\n className?: string;\n /** CSS class forwarded to MachTable's inner grid root. */\n gridClassName?: string;\n};\n\nconst ADAPTER_OPTION_KEYS = GRID_OPTION_KEYS.filter((key) => key !== \"className\");\nconst DIRECT_OPTION_KEYS = DIRECT_GRID_OPTION_KEYS.filter((key) => key !== \"className\");\n\nconst runtimeProps: Record<string, { type?: any; default: undefined }> = {};\nfor (const key of ADAPTER_OPTION_KEYS) {\n const kind = GRID_OPTION_META[key].kind;\n const type = kind === \"boolean\"\n ? Boolean\n : kind === \"number\"\n ? Number\n : kind === \"array\"\n ? Array\n : kind === \"function\"\n ? Function\n : kind === \"boolean-object\"\n ? [Boolean, Object]\n : kind === \"object\"\n ? Object\n : kind === \"string\"\n ? String\n : undefined;\n runtimeProps[key] = { ...(type ? { type } : {}), default: undefined };\n}\nruntimeProps.className = { type: String, default: undefined };\nruntimeProps.gridClassName = { type: String, default: undefined };\n\nfunction handlerNameOf(eventType: string): string {\n return \"on\" + eventType.charAt(0).toUpperCase() + eventType.slice(1);\n}\n\nconst RobotGridImpl = defineComponent({\n name: \"RobotGrid\",\n inheritAttrs: false,\n props: runtimeProps,\n emits: [...EVENT_TYPES] as unknown as string[],\n setup(rawProps, { expose, attrs, emit }) {\n const props = rawProps as Readonly<Record<string, any>>;\n const host = ref<HTMLDivElement | null>(null);\n let api: GridApi | null = null;\n\n onMounted(() => {\n if (!host.value) return;\n const options: Record<string, unknown> = {};\n for (const key of ADAPTER_OPTION_KEYS) {\n const value = props[key];\n if (value !== undefined) options[key] = value;\n }\n if (props.gridClassName !== undefined) options.className = props.gridClassName;\n for (const type of EVENT_TYPES) {\n options[handlerNameOf(type)] = (event: unknown) => emit(type, event);\n }\n api = createGrid(host.value, options as GridOptions<any>);\n });\n\n onBeforeUnmount(() => {\n api?.destroy();\n api = null;\n });\n\n watch(() => props.rowData, (value) => api?.setRowData(value));\n watch(() => props.columnDefs, (value) => api?.setColumnDefs(value));\n watch(() => props.quickFilterText, (value) => api?.setQuickFilter(value));\n watch(() => props.gridClassName, (value) => api?.updateOptions({ className: value }));\n\n watch(\n () => DIRECT_OPTION_KEYS.map((key) => props[key]),\n (values, previous) => {\n if (!api) return;\n const changed: Record<string, unknown> = {};\n values.forEach((value, index) => {\n if (!Object.is(value, previous[index])) changed[DIRECT_OPTION_KEYS[index]] = value;\n });\n if (Object.keys(changed).length > 0) api.updateOptions(changed as Partial<GridOptions<any>>);\n }\n );\n\n expose({ getApi: (): GridApi | null => api });\n\n return () => h(\"div\", {\n ...attrs,\n ref: host,\n class: [\"mach-vue-host\", props.className, attrs.class].filter(Boolean),\n style: attrs.style\n });\n }\n});\n\nexport const RobotGrid = RobotGridImpl as unknown as DefineComponent<RobotGridVueProps<any>>;\n"],"mappings":"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","names":[]}
@@ -0,0 +1,21 @@
1
+ // src/globalRegistration.ts
2
+ function registerGlobalMachTable(app, component, options = {}) {
3
+ const componentName = options.componentName ?? "MachTable";
4
+ if (!componentName.trim()) {
5
+ throw new Error("[MachTable] Global componentName must not be empty.");
6
+ }
7
+ const names = /* @__PURE__ */ new Set([componentName]);
8
+ if (options.registerRobotGridAlias !== false) names.add("RobotGrid");
9
+ for (const name of names) {
10
+ const existing = app.component(name);
11
+ if (existing && existing !== component) {
12
+ throw new Error(`[MachTable] Cannot register global component "${name}" because that name is already in use.`);
13
+ }
14
+ if (!existing) app.component(name, component);
15
+ }
16
+ }
17
+
18
+ export {
19
+ registerGlobalMachTable
20
+ };
21
+ //# sourceMappingURL=chunk-JJQDDIQU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/globalRegistration.ts"],"sourcesContent":["import type { App, Component } from \"vue\";\nimport type { RobotGrid } from \"./RobotGrid\";\n\ndeclare module \"vue\" {\n export interface GlobalComponents {\n MachTable: typeof RobotGrid;\n RobotGrid: typeof RobotGrid;\n }\n}\n\nexport interface MachTablePluginOptions {\n /** Global component name. Defaults to `MachTable`. */\n componentName?: string;\n /** Also register the backwards-compatible `RobotGrid` name. Defaults to true. */\n registerRobotGridAlias?: boolean;\n}\n\nexport function registerGlobalMachTable(\n app: App,\n component: Component,\n options: MachTablePluginOptions = {}\n): void {\n const componentName = options.componentName ?? \"MachTable\";\n if (!componentName.trim()) {\n throw new Error(\"[MachTable] Global componentName must not be empty.\");\n }\n\n const names = new Set([componentName]);\n if (options.registerRobotGridAlias !== false) names.add(\"RobotGrid\");\n\n for (const name of names) {\n const existing = app.component(name);\n if (existing && existing !== component) {\n throw new Error(`[MachTable] Cannot register global component \\\"${name}\\\" because that name is already in use.`);\n }\n if (!existing) app.component(name, component);\n }\n}\n"],"mappings":";AAiBO,SAAS,wBACd,KACA,WACA,UAAkC,CAAC,GAC7B;AACN,QAAM,gBAAgB,QAAQ,iBAAiB;AAC/C,MAAI,CAAC,cAAc,KAAK,GAAG;AACzB,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACvE;AAEA,QAAM,QAAQ,oBAAI,IAAI,CAAC,aAAa,CAAC;AACrC,MAAI,QAAQ,2BAA2B,MAAO,OAAM,IAAI,WAAW;AAEnE,aAAW,QAAQ,OAAO;AACxB,UAAM,WAAW,IAAI,UAAU,IAAI;AACnC,QAAI,YAAY,aAAa,WAAW;AACtC,YAAM,IAAI,MAAM,iDAAkD,IAAI,wCAAyC;AAAA,IACjH;AACA,QAAI,CAAC,SAAU,KAAI,UAAU,MAAM,SAAS;AAAA,EAC9C;AACF;","names":[]}
@@ -0,0 +1,78 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/RobotGrid.ts
2
+ var _vue = require('vue');
3
+
4
+
5
+
6
+
7
+
8
+
9
+ var _machtable = require('@agile-team/mach-table');
10
+ var ADAPTER_OPTION_KEYS = _machtable.GRID_OPTION_KEYS.filter((key) => key !== "className");
11
+ var DIRECT_OPTION_KEYS = _machtable.DIRECT_GRID_OPTION_KEYS.filter((key) => key !== "className");
12
+ var runtimeProps = {};
13
+ for (const key of ADAPTER_OPTION_KEYS) {
14
+ const kind = _machtable.GRID_OPTION_META[key].kind;
15
+ const type = kind === "boolean" ? Boolean : kind === "number" ? Number : kind === "array" ? Array : kind === "function" ? Function : kind === "boolean-object" ? [Boolean, Object] : kind === "object" ? Object : kind === "string" ? String : void 0;
16
+ runtimeProps[key] = { ...type ? { type } : {}, default: void 0 };
17
+ }
18
+ runtimeProps.className = { type: String, default: void 0 };
19
+ runtimeProps.gridClassName = { type: String, default: void 0 };
20
+ function handlerNameOf(eventType) {
21
+ return "on" + eventType.charAt(0).toUpperCase() + eventType.slice(1);
22
+ }
23
+ var RobotGridImpl = _vue.defineComponent.call(void 0, {
24
+ name: "RobotGrid",
25
+ inheritAttrs: false,
26
+ props: runtimeProps,
27
+ emits: [..._machtable.EVENT_TYPES],
28
+ setup(rawProps, { expose, attrs, emit }) {
29
+ const props = rawProps;
30
+ const host = _vue.ref.call(void 0, null);
31
+ let api = null;
32
+ _vue.onMounted.call(void 0, () => {
33
+ if (!host.value) return;
34
+ const options = {};
35
+ for (const key of ADAPTER_OPTION_KEYS) {
36
+ const value = props[key];
37
+ if (value !== void 0) options[key] = value;
38
+ }
39
+ if (props.gridClassName !== void 0) options.className = props.gridClassName;
40
+ for (const type of _machtable.EVENT_TYPES) {
41
+ options[handlerNameOf(type)] = (event) => emit(type, event);
42
+ }
43
+ api = _machtable.createGrid.call(void 0, host.value, options);
44
+ });
45
+ _vue.onBeforeUnmount.call(void 0, () => {
46
+ _optionalChain([api, 'optionalAccess', _ => _.destroy, 'call', _2 => _2()]);
47
+ api = null;
48
+ });
49
+ _vue.watch.call(void 0, () => props.rowData, (value) => _optionalChain([api, 'optionalAccess', _3 => _3.setRowData, 'call', _4 => _4(value)]));
50
+ _vue.watch.call(void 0, () => props.columnDefs, (value) => _optionalChain([api, 'optionalAccess', _5 => _5.setColumnDefs, 'call', _6 => _6(value)]));
51
+ _vue.watch.call(void 0, () => props.quickFilterText, (value) => _optionalChain([api, 'optionalAccess', _7 => _7.setQuickFilter, 'call', _8 => _8(value)]));
52
+ _vue.watch.call(void 0, () => props.gridClassName, (value) => _optionalChain([api, 'optionalAccess', _9 => _9.updateOptions, 'call', _10 => _10({ className: value })]));
53
+ _vue.watch.call(void 0,
54
+ () => DIRECT_OPTION_KEYS.map((key) => props[key]),
55
+ (values, previous) => {
56
+ if (!api) return;
57
+ const changed = {};
58
+ values.forEach((value, index) => {
59
+ if (!Object.is(value, previous[index])) changed[DIRECT_OPTION_KEYS[index]] = value;
60
+ });
61
+ if (Object.keys(changed).length > 0) api.updateOptions(changed);
62
+ }
63
+ );
64
+ expose({ getApi: () => api });
65
+ return () => _vue.h.call(void 0, "div", {
66
+ ...attrs,
67
+ ref: host,
68
+ class: ["mach-vue-host", props.className, attrs.class].filter(Boolean),
69
+ style: attrs.style
70
+ });
71
+ }
72
+ });
73
+ var RobotGrid = RobotGridImpl;
74
+
75
+
76
+
77
+ exports.RobotGrid = RobotGrid;
78
+ //# sourceMappingURL=chunk-S3NR7DIG.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["d:\\office-project\\wl\\MachTable\\packages\\vue\\dist\\chunk-S3NR7DIG.cjs"],"names":[],"mappings":"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","file":"D:\\office-project\\wl\\MachTable\\packages\\vue\\dist\\chunk-S3NR7DIG.cjs","sourcesContent":[null]}
@@ -0,0 +1,25 @@
1
+ import { DefineComponent } from 'vue';
2
+ import { GridOptions } from '@agile-team/mach-table';
3
+
4
+ type RobotGridVueProps<TData = any> = Omit<GridOptions<TData>, "className"> & {
5
+ /** CSS class applied to the Vue host element. */
6
+ className?: string;
7
+ /** CSS class forwarded to MachTable's inner grid root. */
8
+ gridClassName?: string;
9
+ };
10
+ declare const RobotGrid: DefineComponent<RobotGridVueProps<any>>;
11
+
12
+ declare module "vue" {
13
+ interface GlobalComponents {
14
+ MachTable: typeof RobotGrid;
15
+ RobotGrid: typeof RobotGrid;
16
+ }
17
+ }
18
+ interface MachTablePluginOptions {
19
+ /** Global component name. Defaults to `MachTable`. */
20
+ componentName?: string;
21
+ /** Also register the backwards-compatible `RobotGrid` name. Defaults to true. */
22
+ registerRobotGridAlias?: boolean;
23
+ }
24
+
25
+ export { type MachTablePluginOptions as M, type RobotGridVueProps as R, RobotGrid as a };
@@ -0,0 +1,25 @@
1
+ import { DefineComponent } from 'vue';
2
+ import { GridOptions } from '@agile-team/mach-table';
3
+
4
+ type RobotGridVueProps<TData = any> = Omit<GridOptions<TData>, "className"> & {
5
+ /** CSS class applied to the Vue host element. */
6
+ className?: string;
7
+ /** CSS class forwarded to MachTable's inner grid root. */
8
+ gridClassName?: string;
9
+ };
10
+ declare const RobotGrid: DefineComponent<RobotGridVueProps<any>>;
11
+
12
+ declare module "vue" {
13
+ interface GlobalComponents {
14
+ MachTable: typeof RobotGrid;
15
+ RobotGrid: typeof RobotGrid;
16
+ }
17
+ }
18
+ interface MachTablePluginOptions {
19
+ /** Global component name. Defaults to `MachTable`. */
20
+ componentName?: string;
21
+ /** Also register the backwards-compatible `RobotGrid` name. Defaults to true. */
22
+ registerRobotGridAlias?: boolean;
23
+ }
24
+
25
+ export { type MachTablePluginOptions as M, type RobotGridVueProps as R, RobotGrid as a };
package/dist/index.cjs CHANGED
@@ -1,125 +1,40 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
19
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _createStarExport(obj) { Object.keys(obj) .filter((key) => key !== "default" && key !== "__esModule") .forEach((key) => { if (exports.hasOwnProperty(key)) { return; } Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]}); }); } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
20
2
 
21
- // src/index.ts
22
- var index_exports = {};
23
- __export(index_exports, {
24
- MachTable: () => RobotGrid,
25
- RobotGrid: () => RobotGrid,
26
- useMachTable: () => useMachTable,
27
- vueCellRenderer: () => vueCellRenderer,
28
- vueDetailRenderer: () => vueDetailRenderer
29
- });
30
- module.exports = __toCommonJS(index_exports);
31
-
32
- // src/RobotGrid.ts
33
- var import_vue = require("vue");
34
- var import_mach_table = require("@agile-team/mach-table");
35
- var ADAPTER_OPTION_KEYS = import_mach_table.GRID_OPTION_KEYS.filter((key) => key !== "className");
36
- var DIRECT_OPTION_KEYS = import_mach_table.DIRECT_GRID_OPTION_KEYS.filter((key) => key !== "className");
37
- var runtimeProps = {};
38
- for (const key of ADAPTER_OPTION_KEYS) {
39
- const kind = import_mach_table.GRID_OPTION_META[key].kind;
40
- const type = kind === "boolean" ? Boolean : kind === "number" ? Number : kind === "array" ? Array : kind === "function" ? Function : kind === "boolean-object" ? [Boolean, Object] : kind === "object" ? Object : kind === "string" ? String : void 0;
41
- runtimeProps[key] = { ...type ? { type } : {}, default: void 0 };
42
- }
43
- runtimeProps.className = { type: String, default: void 0 };
44
- runtimeProps.gridClassName = { type: String, default: void 0 };
45
- function handlerNameOf(eventType) {
46
- return "on" + eventType.charAt(0).toUpperCase() + eventType.slice(1);
47
- }
48
- var RobotGridImpl = (0, import_vue.defineComponent)({
49
- name: "RobotGrid",
50
- inheritAttrs: false,
51
- props: runtimeProps,
52
- emits: [...import_mach_table.EVENT_TYPES],
53
- setup(rawProps, { expose, attrs, emit }) {
54
- const props = rawProps;
55
- const host = (0, import_vue.ref)(null);
56
- let api = null;
57
- (0, import_vue.onMounted)(() => {
58
- if (!host.value) return;
59
- const options = {};
60
- for (const key of ADAPTER_OPTION_KEYS) {
61
- const value = props[key];
62
- if (value !== void 0) options[key] = value;
63
- }
64
- if (props.gridClassName !== void 0) options.className = props.gridClassName;
65
- for (const type of import_mach_table.EVENT_TYPES) {
66
- options[handlerNameOf(type)] = (event) => emit(type, event);
67
- }
68
- api = (0, import_mach_table.createGrid)(host.value, options);
69
- });
70
- (0, import_vue.onBeforeUnmount)(() => {
71
- api?.destroy();
72
- api = null;
73
- });
74
- (0, import_vue.watch)(() => props.rowData, (value) => api?.setRowData(value));
75
- (0, import_vue.watch)(() => props.columnDefs, (value) => api?.setColumnDefs(value));
76
- (0, import_vue.watch)(() => props.quickFilterText, (value) => api?.setQuickFilter(value));
77
- (0, import_vue.watch)(() => props.gridClassName, (value) => api?.updateOptions({ className: value }));
78
- (0, import_vue.watch)(
79
- () => DIRECT_OPTION_KEYS.map((key) => props[key]),
80
- (values, previous) => {
81
- if (!api) return;
82
- const changed = {};
83
- values.forEach((value, index) => {
84
- if (!Object.is(value, previous[index])) changed[DIRECT_OPTION_KEYS[index]] = value;
85
- });
86
- if (Object.keys(changed).length > 0) api.updateOptions(changed);
87
- }
88
- );
89
- expose({ getApi: () => api });
90
- return () => (0, import_vue.h)("div", {
91
- ...attrs,
92
- ref: host,
93
- class: ["mach-vue-host", props.className, attrs.class].filter(Boolean),
94
- style: attrs.style
95
- });
3
+ var _chunk345ZEGIEcjs = require('./chunk-345ZEGIE.cjs');
4
+
5
+
6
+ var _chunkS3NR7DIGcjs = require('./chunk-S3NR7DIG.cjs');
7
+
8
+ // src/plugin.ts
9
+ var MachTablePlugin = Object.freeze({
10
+ install(app, options = {}) {
11
+ _chunk345ZEGIEcjs.registerGlobalMachTable.call(void 0, app, _chunkS3NR7DIGcjs.RobotGrid, options);
96
12
  }
97
13
  });
98
- var RobotGrid = RobotGridImpl;
99
14
 
100
15
  // src/adapters.ts
101
- var import_vue2 = require("vue");
16
+ var _vue = require('vue');
102
17
  function resolveAppContext(explicit) {
103
18
  if (explicit) return explicit;
104
19
  try {
105
- return (0, import_vue2.getCurrentInstance)()?.appContext;
106
- } catch {
20
+ return _optionalChain([_vue.getCurrentInstance.call(void 0, ), 'optionalAccess', _ => _.appContext]);
21
+ } catch (e) {
107
22
  return void 0;
108
23
  }
109
24
  }
110
25
  function mountComponent(component, props, host, appContext) {
111
26
  if (appContext) {
112
- const vnode = (0, import_vue2.h)(component, props);
27
+ const vnode = _vue.h.call(void 0, component, props);
113
28
  vnode.appContext = appContext;
114
- (0, import_vue2.render)(vnode, host);
115
- return () => (0, import_vue2.render)(null, host);
29
+ _vue.render.call(void 0, vnode, host);
30
+ return () => _vue.render.call(void 0, null, host);
116
31
  }
117
- const app = (0, import_vue2.createApp)({ render: () => (0, import_vue2.h)(component, props) });
32
+ const app = _vue.createApp.call(void 0, { render: () => _vue.h.call(void 0, component, props) });
118
33
  app.mount(host);
119
34
  return () => app.unmount();
120
35
  }
121
36
  function vueCellRenderer(component, options) {
122
- const appContext = resolveAppContext(options?.appContext);
37
+ const appContext = resolveAppContext(_optionalChain([options, 'optionalAccess', _2 => _2.appContext]));
123
38
  return (params) => {
124
39
  const host = document.createElement("div");
125
40
  host.className = "mach-cell-vue";
@@ -137,7 +52,7 @@ function vueCellRenderer(component, options) {
137
52
  };
138
53
  }
139
54
  function vueDetailRenderer(component, options) {
140
- const appContext = resolveAppContext(options?.appContext);
55
+ const appContext = resolveAppContext(_optionalChain([options, 'optionalAccess', _3 => _3.appContext]));
141
56
  return (params) => {
142
57
  const host = document.createElement("div");
143
58
  host.style.height = "100%";
@@ -155,12 +70,12 @@ function vueDetailRenderer(component, options) {
155
70
  }
156
71
 
157
72
  // src/useMachTable.ts
158
- var import_vue3 = require("vue");
73
+
159
74
  function useMachTable() {
160
- const componentRef = (0, import_vue3.ref)(null);
161
- const api = (0, import_vue3.shallowRef)(null);
162
- const ready = (0, import_vue3.shallowRef)(false);
163
- (0, import_vue3.watch)(
75
+ const componentRef = _vue.ref.call(void 0, null);
76
+ const api = _vue.shallowRef.call(void 0, null);
77
+ const ready = _vue.shallowRef.call(void 0, false);
78
+ _vue.watch.call(void 0,
164
79
  componentRef,
165
80
  (comp) => {
166
81
  if (comp && typeof comp.getApi === "function") {
@@ -173,7 +88,7 @@ function useMachTable() {
173
88
  },
174
89
  { flush: "post" }
175
90
  );
176
- (0, import_vue3.onScopeDispose)(() => {
91
+ _vue.onScopeDispose.call(void 0, () => {
177
92
  componentRef.value = null;
178
93
  api.value = null;
179
94
  ready.value = false;
@@ -182,14 +97,15 @@ function useMachTable() {
182
97
  }
183
98
 
184
99
  // src/index.ts
185
- __reExport(index_exports, require("@agile-team/mach-table"), module.exports);
186
- // Annotate the CommonJS export names for ESM import in node:
187
- 0 && (module.exports = {
188
- MachTable,
189
- RobotGrid,
190
- useMachTable,
191
- vueCellRenderer,
192
- vueDetailRenderer,
193
- ...require("@agile-team/mach-table")
194
- });
100
+ var _machtable = require('@agile-team/mach-table'); _createStarExport(_machtable);
101
+ var src_default = MachTablePlugin;
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+ exports.MachTable = _chunkS3NR7DIGcjs.RobotGrid; exports.MachTablePlugin = MachTablePlugin; exports.RobotGrid = _chunkS3NR7DIGcjs.RobotGrid; exports.default = src_default; exports.useMachTable = useMachTable; exports.vueCellRenderer = vueCellRenderer; exports.vueDetailRenderer = vueDetailRenderer;
195
111
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/RobotGrid.ts","../src/adapters.ts","../src/useMachTable.ts"],"sourcesContent":["export { RobotGrid } from \"./RobotGrid\";\nexport { RobotGrid as MachTable } from \"./RobotGrid\";\nexport type { RobotGridVueProps } from \"./RobotGrid\";\nexport { vueCellRenderer, vueDetailRenderer } from \"./adapters\";\nexport { useMachTable } from \"./useMachTable\";\nexport type { UseMachTableReturn } from \"./useMachTable\";\nexport type { VueCellRendererProps } from \"./adapters\";\nexport * from \"@agile-team/mach-table\";\n","import { defineComponent, h, onBeforeUnmount, onMounted, ref, watch, type DefineComponent } from \"vue\";\nimport {\n createGrid,\n DIRECT_GRID_OPTION_KEYS,\n EVENT_TYPES,\n GRID_OPTION_KEYS,\n GRID_OPTION_META\n} from \"@agile-team/mach-table\";\nimport type { GridApi, GridOptions } from \"@agile-team/mach-table\";\n\nexport type RobotGridVueProps<TData = any> = Omit<GridOptions<TData>, \"className\"> & {\n /** CSS class applied to the Vue host element. */\n className?: string;\n /** CSS class forwarded to MachTable's inner grid root. */\n gridClassName?: string;\n};\n\nconst ADAPTER_OPTION_KEYS = GRID_OPTION_KEYS.filter((key) => key !== \"className\");\nconst DIRECT_OPTION_KEYS = DIRECT_GRID_OPTION_KEYS.filter((key) => key !== \"className\");\n\nconst runtimeProps: Record<string, { type?: any; default: undefined }> = {};\nfor (const key of ADAPTER_OPTION_KEYS) {\n const kind = GRID_OPTION_META[key].kind;\n const type = kind === \"boolean\"\n ? Boolean\n : kind === \"number\"\n ? Number\n : kind === \"array\"\n ? Array\n : kind === \"function\"\n ? Function\n : kind === \"boolean-object\"\n ? [Boolean, Object]\n : kind === \"object\"\n ? Object\n : kind === \"string\"\n ? String\n : undefined;\n runtimeProps[key] = { ...(type ? { type } : {}), default: undefined };\n}\nruntimeProps.className = { type: String, default: undefined };\nruntimeProps.gridClassName = { type: String, default: undefined };\n\nfunction handlerNameOf(eventType: string): string {\n return \"on\" + eventType.charAt(0).toUpperCase() + eventType.slice(1);\n}\n\nconst RobotGridImpl = defineComponent({\n name: \"RobotGrid\",\n inheritAttrs: false,\n props: runtimeProps,\n emits: [...EVENT_TYPES] as unknown as string[],\n setup(rawProps, { expose, attrs, emit }) {\n const props = rawProps as Readonly<Record<string, any>>;\n const host = ref<HTMLDivElement | null>(null);\n let api: GridApi | null = null;\n\n onMounted(() => {\n if (!host.value) return;\n const options: Record<string, unknown> = {};\n for (const key of ADAPTER_OPTION_KEYS) {\n const value = props[key];\n if (value !== undefined) options[key] = value;\n }\n if (props.gridClassName !== undefined) options.className = props.gridClassName;\n for (const type of EVENT_TYPES) {\n options[handlerNameOf(type)] = (event: unknown) => emit(type, event);\n }\n api = createGrid(host.value, options as GridOptions<any>);\n });\n\n onBeforeUnmount(() => {\n api?.destroy();\n api = null;\n });\n\n watch(() => props.rowData, (value) => api?.setRowData(value));\n watch(() => props.columnDefs, (value) => api?.setColumnDefs(value));\n watch(() => props.quickFilterText, (value) => api?.setQuickFilter(value));\n watch(() => props.gridClassName, (value) => api?.updateOptions({ className: value }));\n\n watch(\n () => DIRECT_OPTION_KEYS.map((key) => props[key]),\n (values, previous) => {\n if (!api) return;\n const changed: Record<string, unknown> = {};\n values.forEach((value, index) => {\n if (!Object.is(value, previous[index])) changed[DIRECT_OPTION_KEYS[index]] = value;\n });\n if (Object.keys(changed).length > 0) api.updateOptions(changed as Partial<GridOptions<any>>);\n }\n );\n\n expose({ getApi: (): GridApi | null => api });\n\n return () => h(\"div\", {\n ...attrs,\n ref: host,\n class: [\"mach-vue-host\", props.className, attrs.class].filter(Boolean),\n style: attrs.style\n });\n }\n});\n\nexport const RobotGrid = RobotGridImpl as unknown as DefineComponent<RobotGridVueProps<any>>;\n","import { createApp, h, render, getCurrentInstance, type AppContext, type Component } from \"vue\";\nimport type { CellRendererParams, CellRendererFn, DetailRowRendererParams } from \"@agile-team/mach-table\";\n\nexport type VueCellRendererProps<TData = any, TValue = any> = CellRendererParams<TData, TValue>;\n\n/**\n * 解析适配器可用的 appContext:\n * 1. 显式传入优先;\n * 2. 否则在 <script setup> 内同步调用工厂时自动捕获宿主组件上下文\n * (使单元格/明细内的 naive、EP 组件继承 ConfigProvider 的主题与国际化)。\n */\nfunction resolveAppContext(explicit?: AppContext): AppContext | undefined {\n if (explicit) return explicit;\n try {\n return getCurrentInstance()?.appContext;\n } catch {\n return undefined;\n }\n}\n\nfunction mountComponent(\n component: Component,\n props: Record<string, any>,\n host: HTMLElement,\n appContext?: AppContext\n): () => void {\n if (appContext) {\n const vnode = h(component, props);\n vnode.appContext = appContext;\n render(vnode, host);\n return () => render(null, host);\n }\n const app = createApp({ render: () => h(component, props) });\n app.mount(host);\n return () => app.unmount();\n}\n\nexport function vueCellRenderer<TData = any, TValue = any>(\n component: Component,\n options?: { appContext?: AppContext }\n): CellRendererFn {\n const appContext = resolveAppContext(options?.appContext);\n return (params: CellRendererParams<TData, TValue>) => {\n const host = document.createElement(\"div\");\n host.className = \"mach-cell-vue\";\n host.style.width = \"100%\";\n const unmount = mountComponent(component, params as Record<string, any>, host, appContext);\n let destroyed = false;\n return {\n el: host,\n destroy: () => {\n if (destroyed) return;\n destroyed = true;\n window.setTimeout(unmount, 0);\n }\n };\n };\n}\n\nexport function vueDetailRenderer<TData = any>(\n component: Component,\n options?: { appContext?: AppContext }\n): (params: DetailRowRendererParams<TData>) => { el: HTMLElement; destroy?: () => void } {\n const appContext = resolveAppContext(options?.appContext);\n return (params) => {\n const host = document.createElement(\"div\");\n host.style.height = \"100%\";\n const unmount = mountComponent(component, params as Record<string, any>, host, appContext);\n let destroyed = false;\n return {\n el: host,\n destroy: () => {\n if (destroyed) return;\n destroyed = true;\n unmount();\n }\n };\n };\n}\n","import { onScopeDispose, ref, shallowRef, watch, type Ref, type ShallowRef } from \"vue\";\nimport type { GridApi } from \"@agile-team/mach-table\";\n\nexport interface UseMachTableReturn<TData = any> {\n ref: Ref<any>;\n api: ShallowRef<GridApi<TData> | null>;\n ready: ShallowRef<boolean>;\n}\n\nexport function useMachTable<TData = any>(): UseMachTableReturn<TData> {\n const componentRef = ref<any>(null);\n const api = shallowRef<GridApi<TData> | null>(null);\n const ready = shallowRef(false);\n\n watch(\n componentRef,\n (comp) => {\n if (comp && typeof comp.getApi === \"function\") {\n api.value = comp.getApi();\n ready.value = api.value != null;\n } else {\n api.value = null;\n ready.value = false;\n }\n },\n { flush: \"post\" }\n );\n\n onScopeDispose(() => {\n componentRef.value = null;\n api.value = null;\n ready.value = false;\n });\n\n return { ref: componentRef, api, ready };\n}\n"],"mappings":"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","names":["import_vue","import_vue"]}
1
+ {"version":3,"sources":["d:\\office-project\\wl\\MachTable\\packages\\vue\\dist\\index.cjs"],"names":[],"mappings":"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","file":"D:\\office-project\\wl\\MachTable\\packages\\vue\\dist\\index.cjs","sourcesContent":[null]}
package/dist/index.d.cts CHANGED
@@ -1,14 +1,12 @@
1
- import { DefineComponent, Component, AppContext, Ref, ShallowRef } from 'vue';
2
- import { GridOptions, CellRendererParams, CellRendererFn, DetailRowRendererParams, GridApi } from '@agile-team/mach-table';
1
+ import { M as MachTablePluginOptions } from './globalRegistration-CQ2dTNzy.cjs';
2
+ export { a as MachTable, a as RobotGrid, R as RobotGridVueProps } from './globalRegistration-CQ2dTNzy.cjs';
3
+ import { App, Component, AppContext, Ref, ShallowRef } from 'vue';
4
+ import { CellRendererParams, CellRendererFn, DetailRowRendererParams, GridApi } from '@agile-team/mach-table';
3
5
  export * from '@agile-team/mach-table';
4
6
 
5
- type RobotGridVueProps<TData = any> = Omit<GridOptions<TData>, "className"> & {
6
- /** CSS class applied to the Vue host element. */
7
- className?: string;
8
- /** CSS class forwarded to MachTable's inner grid root. */
9
- gridClassName?: string;
10
- };
11
- declare const RobotGrid: DefineComponent<RobotGridVueProps<any>>;
7
+ declare const MachTablePlugin: Readonly<{
8
+ install(app: App, options?: MachTablePluginOptions): void;
9
+ }>;
12
10
 
13
11
  type VueCellRendererProps<TData = any, TValue = any> = CellRendererParams<TData, TValue>;
14
12
  declare function vueCellRenderer<TData = any, TValue = any>(component: Component, options?: {
@@ -28,4 +26,4 @@ interface UseMachTableReturn<TData = any> {
28
26
  }
29
27
  declare function useMachTable<TData = any>(): UseMachTableReturn<TData>;
30
28
 
31
- export { RobotGrid as MachTable, RobotGrid, type RobotGridVueProps, type UseMachTableReturn, type VueCellRendererProps, useMachTable, vueCellRenderer, vueDetailRenderer };
29
+ export { MachTablePlugin, MachTablePluginOptions, type UseMachTableReturn, type VueCellRendererProps, MachTablePlugin as default, useMachTable, vueCellRenderer, vueDetailRenderer };
package/dist/index.d.ts CHANGED
@@ -1,14 +1,12 @@
1
- import { DefineComponent, Component, AppContext, Ref, ShallowRef } from 'vue';
2
- import { GridOptions, CellRendererParams, CellRendererFn, DetailRowRendererParams, GridApi } from '@agile-team/mach-table';
1
+ import { M as MachTablePluginOptions } from './globalRegistration-CQ2dTNzy.js';
2
+ export { a as MachTable, a as RobotGrid, R as RobotGridVueProps } from './globalRegistration-CQ2dTNzy.js';
3
+ import { App, Component, AppContext, Ref, ShallowRef } from 'vue';
4
+ import { CellRendererParams, CellRendererFn, DetailRowRendererParams, GridApi } from '@agile-team/mach-table';
3
5
  export * from '@agile-team/mach-table';
4
6
 
5
- type RobotGridVueProps<TData = any> = Omit<GridOptions<TData>, "className"> & {
6
- /** CSS class applied to the Vue host element. */
7
- className?: string;
8
- /** CSS class forwarded to MachTable's inner grid root. */
9
- gridClassName?: string;
10
- };
11
- declare const RobotGrid: DefineComponent<RobotGridVueProps<any>>;
7
+ declare const MachTablePlugin: Readonly<{
8
+ install(app: App, options?: MachTablePluginOptions): void;
9
+ }>;
12
10
 
13
11
  type VueCellRendererProps<TData = any, TValue = any> = CellRendererParams<TData, TValue>;
14
12
  declare function vueCellRenderer<TData = any, TValue = any>(component: Component, options?: {
@@ -28,4 +26,4 @@ interface UseMachTableReturn<TData = any> {
28
26
  }
29
27
  declare function useMachTable<TData = any>(): UseMachTableReturn<TData>;
30
28
 
31
- export { RobotGrid as MachTable, RobotGrid, type RobotGridVueProps, type UseMachTableReturn, type VueCellRendererProps, useMachTable, vueCellRenderer, vueDetailRenderer };
29
+ export { MachTablePlugin, MachTablePluginOptions, type UseMachTableReturn, type VueCellRendererProps, MachTablePlugin as default, useMachTable, vueCellRenderer, vueDetailRenderer };
package/dist/index.js CHANGED
@@ -1,79 +1,19 @@
1
- // src/RobotGrid.ts
2
- import { defineComponent, h, onBeforeUnmount, onMounted, ref, watch } from "vue";
3
1
  import {
4
- createGrid,
5
- DIRECT_GRID_OPTION_KEYS,
6
- EVENT_TYPES,
7
- GRID_OPTION_KEYS,
8
- GRID_OPTION_META
9
- } from "@agile-team/mach-table";
10
- var ADAPTER_OPTION_KEYS = GRID_OPTION_KEYS.filter((key) => key !== "className");
11
- var DIRECT_OPTION_KEYS = DIRECT_GRID_OPTION_KEYS.filter((key) => key !== "className");
12
- var runtimeProps = {};
13
- for (const key of ADAPTER_OPTION_KEYS) {
14
- const kind = GRID_OPTION_META[key].kind;
15
- const type = kind === "boolean" ? Boolean : kind === "number" ? Number : kind === "array" ? Array : kind === "function" ? Function : kind === "boolean-object" ? [Boolean, Object] : kind === "object" ? Object : kind === "string" ? String : void 0;
16
- runtimeProps[key] = { ...type ? { type } : {}, default: void 0 };
17
- }
18
- runtimeProps.className = { type: String, default: void 0 };
19
- runtimeProps.gridClassName = { type: String, default: void 0 };
20
- function handlerNameOf(eventType) {
21
- return "on" + eventType.charAt(0).toUpperCase() + eventType.slice(1);
22
- }
23
- var RobotGridImpl = defineComponent({
24
- name: "RobotGrid",
25
- inheritAttrs: false,
26
- props: runtimeProps,
27
- emits: [...EVENT_TYPES],
28
- setup(rawProps, { expose, attrs, emit }) {
29
- const props = rawProps;
30
- const host = ref(null);
31
- let api = null;
32
- onMounted(() => {
33
- if (!host.value) return;
34
- const options = {};
35
- for (const key of ADAPTER_OPTION_KEYS) {
36
- const value = props[key];
37
- if (value !== void 0) options[key] = value;
38
- }
39
- if (props.gridClassName !== void 0) options.className = props.gridClassName;
40
- for (const type of EVENT_TYPES) {
41
- options[handlerNameOf(type)] = (event) => emit(type, event);
42
- }
43
- api = createGrid(host.value, options);
44
- });
45
- onBeforeUnmount(() => {
46
- api?.destroy();
47
- api = null;
48
- });
49
- watch(() => props.rowData, (value) => api?.setRowData(value));
50
- watch(() => props.columnDefs, (value) => api?.setColumnDefs(value));
51
- watch(() => props.quickFilterText, (value) => api?.setQuickFilter(value));
52
- watch(() => props.gridClassName, (value) => api?.updateOptions({ className: value }));
53
- watch(
54
- () => DIRECT_OPTION_KEYS.map((key) => props[key]),
55
- (values, previous) => {
56
- if (!api) return;
57
- const changed = {};
58
- values.forEach((value, index) => {
59
- if (!Object.is(value, previous[index])) changed[DIRECT_OPTION_KEYS[index]] = value;
60
- });
61
- if (Object.keys(changed).length > 0) api.updateOptions(changed);
62
- }
63
- );
64
- expose({ getApi: () => api });
65
- return () => h("div", {
66
- ...attrs,
67
- ref: host,
68
- class: ["mach-vue-host", props.className, attrs.class].filter(Boolean),
69
- style: attrs.style
70
- });
2
+ registerGlobalMachTable
3
+ } from "./chunk-JJQDDIQU.js";
4
+ import {
5
+ RobotGrid
6
+ } from "./chunk-CHEQLQW4.js";
7
+
8
+ // src/plugin.ts
9
+ var MachTablePlugin = Object.freeze({
10
+ install(app, options = {}) {
11
+ registerGlobalMachTable(app, RobotGrid, options);
71
12
  }
72
13
  });
73
- var RobotGrid = RobotGridImpl;
74
14
 
75
15
  // src/adapters.ts
76
- import { createApp, h as h2, render, getCurrentInstance } from "vue";
16
+ import { createApp, h, render, getCurrentInstance } from "vue";
77
17
  function resolveAppContext(explicit) {
78
18
  if (explicit) return explicit;
79
19
  try {
@@ -84,12 +24,12 @@ function resolveAppContext(explicit) {
84
24
  }
85
25
  function mountComponent(component, props, host, appContext) {
86
26
  if (appContext) {
87
- const vnode = h2(component, props);
27
+ const vnode = h(component, props);
88
28
  vnode.appContext = appContext;
89
29
  render(vnode, host);
90
30
  return () => render(null, host);
91
31
  }
92
- const app = createApp({ render: () => h2(component, props) });
32
+ const app = createApp({ render: () => h(component, props) });
93
33
  app.mount(host);
94
34
  return () => app.unmount();
95
35
  }
@@ -130,12 +70,12 @@ function vueDetailRenderer(component, options) {
130
70
  }
131
71
 
132
72
  // src/useMachTable.ts
133
- import { onScopeDispose, ref as ref2, shallowRef, watch as watch2 } from "vue";
73
+ import { onScopeDispose, ref, shallowRef, watch } from "vue";
134
74
  function useMachTable() {
135
- const componentRef = ref2(null);
75
+ const componentRef = ref(null);
136
76
  const api = shallowRef(null);
137
77
  const ready = shallowRef(false);
138
- watch2(
78
+ watch(
139
79
  componentRef,
140
80
  (comp) => {
141
81
  if (comp && typeof comp.getApi === "function") {
@@ -158,9 +98,12 @@ function useMachTable() {
158
98
 
159
99
  // src/index.ts
160
100
  export * from "@agile-team/mach-table";
101
+ var src_default = MachTablePlugin;
161
102
  export {
162
103
  RobotGrid as MachTable,
104
+ MachTablePlugin,
163
105
  RobotGrid,
106
+ src_default as default,
164
107
  useMachTable,
165
108
  vueCellRenderer,
166
109
  vueDetailRenderer
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/RobotGrid.ts","../src/adapters.ts","../src/useMachTable.ts","../src/index.ts"],"sourcesContent":["import { defineComponent, h, onBeforeUnmount, onMounted, ref, watch, type DefineComponent } from \"vue\";\nimport {\n createGrid,\n DIRECT_GRID_OPTION_KEYS,\n EVENT_TYPES,\n GRID_OPTION_KEYS,\n GRID_OPTION_META\n} from \"@agile-team/mach-table\";\nimport type { GridApi, GridOptions } from \"@agile-team/mach-table\";\n\nexport type RobotGridVueProps<TData = any> = Omit<GridOptions<TData>, \"className\"> & {\n /** CSS class applied to the Vue host element. */\n className?: string;\n /** CSS class forwarded to MachTable's inner grid root. */\n gridClassName?: string;\n};\n\nconst ADAPTER_OPTION_KEYS = GRID_OPTION_KEYS.filter((key) => key !== \"className\");\nconst DIRECT_OPTION_KEYS = DIRECT_GRID_OPTION_KEYS.filter((key) => key !== \"className\");\n\nconst runtimeProps: Record<string, { type?: any; default: undefined }> = {};\nfor (const key of ADAPTER_OPTION_KEYS) {\n const kind = GRID_OPTION_META[key].kind;\n const type = kind === \"boolean\"\n ? Boolean\n : kind === \"number\"\n ? Number\n : kind === \"array\"\n ? Array\n : kind === \"function\"\n ? Function\n : kind === \"boolean-object\"\n ? [Boolean, Object]\n : kind === \"object\"\n ? Object\n : kind === \"string\"\n ? String\n : undefined;\n runtimeProps[key] = { ...(type ? { type } : {}), default: undefined };\n}\nruntimeProps.className = { type: String, default: undefined };\nruntimeProps.gridClassName = { type: String, default: undefined };\n\nfunction handlerNameOf(eventType: string): string {\n return \"on\" + eventType.charAt(0).toUpperCase() + eventType.slice(1);\n}\n\nconst RobotGridImpl = defineComponent({\n name: \"RobotGrid\",\n inheritAttrs: false,\n props: runtimeProps,\n emits: [...EVENT_TYPES] as unknown as string[],\n setup(rawProps, { expose, attrs, emit }) {\n const props = rawProps as Readonly<Record<string, any>>;\n const host = ref<HTMLDivElement | null>(null);\n let api: GridApi | null = null;\n\n onMounted(() => {\n if (!host.value) return;\n const options: Record<string, unknown> = {};\n for (const key of ADAPTER_OPTION_KEYS) {\n const value = props[key];\n if (value !== undefined) options[key] = value;\n }\n if (props.gridClassName !== undefined) options.className = props.gridClassName;\n for (const type of EVENT_TYPES) {\n options[handlerNameOf(type)] = (event: unknown) => emit(type, event);\n }\n api = createGrid(host.value, options as GridOptions<any>);\n });\n\n onBeforeUnmount(() => {\n api?.destroy();\n api = null;\n });\n\n watch(() => props.rowData, (value) => api?.setRowData(value));\n watch(() => props.columnDefs, (value) => api?.setColumnDefs(value));\n watch(() => props.quickFilterText, (value) => api?.setQuickFilter(value));\n watch(() => props.gridClassName, (value) => api?.updateOptions({ className: value }));\n\n watch(\n () => DIRECT_OPTION_KEYS.map((key) => props[key]),\n (values, previous) => {\n if (!api) return;\n const changed: Record<string, unknown> = {};\n values.forEach((value, index) => {\n if (!Object.is(value, previous[index])) changed[DIRECT_OPTION_KEYS[index]] = value;\n });\n if (Object.keys(changed).length > 0) api.updateOptions(changed as Partial<GridOptions<any>>);\n }\n );\n\n expose({ getApi: (): GridApi | null => api });\n\n return () => h(\"div\", {\n ...attrs,\n ref: host,\n class: [\"mach-vue-host\", props.className, attrs.class].filter(Boolean),\n style: attrs.style\n });\n }\n});\n\nexport const RobotGrid = RobotGridImpl as unknown as DefineComponent<RobotGridVueProps<any>>;\n","import { createApp, h, render, getCurrentInstance, type AppContext, type Component } from \"vue\";\nimport type { CellRendererParams, CellRendererFn, DetailRowRendererParams } from \"@agile-team/mach-table\";\n\nexport type VueCellRendererProps<TData = any, TValue = any> = CellRendererParams<TData, TValue>;\n\n/**\n * 解析适配器可用的 appContext:\n * 1. 显式传入优先;\n * 2. 否则在 <script setup> 内同步调用工厂时自动捕获宿主组件上下文\n * (使单元格/明细内的 naive、EP 组件继承 ConfigProvider 的主题与国际化)。\n */\nfunction resolveAppContext(explicit?: AppContext): AppContext | undefined {\n if (explicit) return explicit;\n try {\n return getCurrentInstance()?.appContext;\n } catch {\n return undefined;\n }\n}\n\nfunction mountComponent(\n component: Component,\n props: Record<string, any>,\n host: HTMLElement,\n appContext?: AppContext\n): () => void {\n if (appContext) {\n const vnode = h(component, props);\n vnode.appContext = appContext;\n render(vnode, host);\n return () => render(null, host);\n }\n const app = createApp({ render: () => h(component, props) });\n app.mount(host);\n return () => app.unmount();\n}\n\nexport function vueCellRenderer<TData = any, TValue = any>(\n component: Component,\n options?: { appContext?: AppContext }\n): CellRendererFn {\n const appContext = resolveAppContext(options?.appContext);\n return (params: CellRendererParams<TData, TValue>) => {\n const host = document.createElement(\"div\");\n host.className = \"mach-cell-vue\";\n host.style.width = \"100%\";\n const unmount = mountComponent(component, params as Record<string, any>, host, appContext);\n let destroyed = false;\n return {\n el: host,\n destroy: () => {\n if (destroyed) return;\n destroyed = true;\n window.setTimeout(unmount, 0);\n }\n };\n };\n}\n\nexport function vueDetailRenderer<TData = any>(\n component: Component,\n options?: { appContext?: AppContext }\n): (params: DetailRowRendererParams<TData>) => { el: HTMLElement; destroy?: () => void } {\n const appContext = resolveAppContext(options?.appContext);\n return (params) => {\n const host = document.createElement(\"div\");\n host.style.height = \"100%\";\n const unmount = mountComponent(component, params as Record<string, any>, host, appContext);\n let destroyed = false;\n return {\n el: host,\n destroy: () => {\n if (destroyed) return;\n destroyed = true;\n unmount();\n }\n };\n };\n}\n","import { onScopeDispose, ref, shallowRef, watch, type Ref, type ShallowRef } from \"vue\";\nimport type { GridApi } from \"@agile-team/mach-table\";\n\nexport interface UseMachTableReturn<TData = any> {\n ref: Ref<any>;\n api: ShallowRef<GridApi<TData> | null>;\n ready: ShallowRef<boolean>;\n}\n\nexport function useMachTable<TData = any>(): UseMachTableReturn<TData> {\n const componentRef = ref<any>(null);\n const api = shallowRef<GridApi<TData> | null>(null);\n const ready = shallowRef(false);\n\n watch(\n componentRef,\n (comp) => {\n if (comp && typeof comp.getApi === \"function\") {\n api.value = comp.getApi();\n ready.value = api.value != null;\n } else {\n api.value = null;\n ready.value = false;\n }\n },\n { flush: \"post\" }\n );\n\n onScopeDispose(() => {\n componentRef.value = null;\n api.value = null;\n ready.value = false;\n });\n\n return { ref: componentRef, api, ready };\n}\n","export { RobotGrid } from \"./RobotGrid\";\nexport { RobotGrid as MachTable } from \"./RobotGrid\";\nexport type { RobotGridVueProps } from \"./RobotGrid\";\nexport { vueCellRenderer, vueDetailRenderer } from \"./adapters\";\nexport { useMachTable } from \"./useMachTable\";\nexport type { UseMachTableReturn } from \"./useMachTable\";\nexport type { VueCellRendererProps } from \"./adapters\";\nexport * from \"@agile-team/mach-table\";\n"],"mappings":"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","names":["h","ref","watch"]}
1
+ {"version":3,"sources":["../src/plugin.ts","../src/adapters.ts","../src/useMachTable.ts","../src/index.ts"],"sourcesContent":["import type { App } from \"vue\";\nimport { RobotGrid } from \"./RobotGrid\";\nimport { registerGlobalMachTable, type MachTablePluginOptions } from \"./globalRegistration\";\n\nexport const MachTablePlugin = Object.freeze({\n install(app: App, options: MachTablePluginOptions = {}): void {\n registerGlobalMachTable(app, RobotGrid, options);\n }\n});\n\nexport type { MachTablePluginOptions } from \"./globalRegistration\";\n","import { createApp, h, render, getCurrentInstance, type AppContext, type Component } from \"vue\";\nimport type { CellRendererParams, CellRendererFn, DetailRowRendererParams } from \"@agile-team/mach-table\";\n\nexport type VueCellRendererProps<TData = any, TValue = any> = CellRendererParams<TData, TValue>;\n\n/**\n * 解析适配器可用的 appContext:\n * 1. 显式传入优先;\n * 2. 否则在 <script setup> 内同步调用工厂时自动捕获宿主组件上下文\n * (使单元格/明细内的 naive、EP 组件继承 ConfigProvider 的主题与国际化)。\n */\nfunction resolveAppContext(explicit?: AppContext): AppContext | undefined {\n if (explicit) return explicit;\n try {\n return getCurrentInstance()?.appContext;\n } catch {\n return undefined;\n }\n}\n\nfunction mountComponent(\n component: Component,\n props: Record<string, any>,\n host: HTMLElement,\n appContext?: AppContext\n): () => void {\n if (appContext) {\n const vnode = h(component, props);\n vnode.appContext = appContext;\n render(vnode, host);\n return () => render(null, host);\n }\n const app = createApp({ render: () => h(component, props) });\n app.mount(host);\n return () => app.unmount();\n}\n\nexport function vueCellRenderer<TData = any, TValue = any>(\n component: Component,\n options?: { appContext?: AppContext }\n): CellRendererFn {\n const appContext = resolveAppContext(options?.appContext);\n return (params: CellRendererParams<TData, TValue>) => {\n const host = document.createElement(\"div\");\n host.className = \"mach-cell-vue\";\n host.style.width = \"100%\";\n const unmount = mountComponent(component, params as Record<string, any>, host, appContext);\n let destroyed = false;\n return {\n el: host,\n destroy: () => {\n if (destroyed) return;\n destroyed = true;\n window.setTimeout(unmount, 0);\n }\n };\n };\n}\n\nexport function vueDetailRenderer<TData = any>(\n component: Component,\n options?: { appContext?: AppContext }\n): (params: DetailRowRendererParams<TData>) => { el: HTMLElement; destroy?: () => void } {\n const appContext = resolveAppContext(options?.appContext);\n return (params) => {\n const host = document.createElement(\"div\");\n host.style.height = \"100%\";\n const unmount = mountComponent(component, params as Record<string, any>, host, appContext);\n let destroyed = false;\n return {\n el: host,\n destroy: () => {\n if (destroyed) return;\n destroyed = true;\n unmount();\n }\n };\n };\n}\n","import { onScopeDispose, ref, shallowRef, watch, type Ref, type ShallowRef } from \"vue\";\nimport type { GridApi } from \"@agile-team/mach-table\";\n\nexport interface UseMachTableReturn<TData = any> {\n ref: Ref<any>;\n api: ShallowRef<GridApi<TData> | null>;\n ready: ShallowRef<boolean>;\n}\n\nexport function useMachTable<TData = any>(): UseMachTableReturn<TData> {\n const componentRef = ref<any>(null);\n const api = shallowRef<GridApi<TData> | null>(null);\n const ready = shallowRef(false);\n\n watch(\n componentRef,\n (comp) => {\n if (comp && typeof comp.getApi === \"function\") {\n api.value = comp.getApi();\n ready.value = api.value != null;\n } else {\n api.value = null;\n ready.value = false;\n }\n },\n { flush: \"post\" }\n );\n\n onScopeDispose(() => {\n componentRef.value = null;\n api.value = null;\n ready.value = false;\n });\n\n return { ref: componentRef, api, ready };\n}\n","import { RobotGrid } from \"./RobotGrid\";\nimport { MachTablePlugin } from \"./plugin\";\n\nexport { RobotGrid };\nexport { RobotGrid as MachTable };\nexport type { RobotGridVueProps } from \"./RobotGrid\";\nexport { vueCellRenderer, vueDetailRenderer } from \"./adapters\";\nexport { useMachTable } from \"./useMachTable\";\nexport type { UseMachTableReturn } from \"./useMachTable\";\nexport type { VueCellRendererProps } from \"./adapters\";\nexport { MachTablePlugin } from \"./plugin\";\nexport type { MachTablePluginOptions } from \"./plugin\";\nexport * from \"@agile-team/mach-table\";\n\nexport default MachTablePlugin;\n"],"mappings":";;;;;;;;AAIO,IAAM,kBAAkB,OAAO,OAAO;AAAA,EAC3C,QAAQ,KAAU,UAAkC,CAAC,GAAS;AAC5D,4BAAwB,KAAK,WAAW,OAAO;AAAA,EACjD;AACF,CAAC;;;ACRD,SAAS,WAAW,GAAG,QAAQ,0BAA2D;AAW1F,SAAS,kBAAkB,UAA+C;AACxE,MAAI,SAAU,QAAO;AACrB,MAAI;AACF,WAAO,mBAAmB,GAAG;AAAA,EAC/B,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,eACP,WACA,OACA,MACA,YACY;AACZ,MAAI,YAAY;AACd,UAAM,QAAQ,EAAE,WAAW,KAAK;AAChC,UAAM,aAAa;AACnB,WAAO,OAAO,IAAI;AAClB,WAAO,MAAM,OAAO,MAAM,IAAI;AAAA,EAChC;AACA,QAAM,MAAM,UAAU,EAAE,QAAQ,MAAM,EAAE,WAAW,KAAK,EAAE,CAAC;AAC3D,MAAI,MAAM,IAAI;AACd,SAAO,MAAM,IAAI,QAAQ;AAC3B;AAEO,SAAS,gBACd,WACA,SACgB;AAChB,QAAM,aAAa,kBAAkB,SAAS,UAAU;AACxD,SAAO,CAAC,WAA8C;AACpD,UAAM,OAAO,SAAS,cAAc,KAAK;AACzC,SAAK,YAAY;AACjB,SAAK,MAAM,QAAQ;AACnB,UAAM,UAAU,eAAe,WAAW,QAA+B,MAAM,UAAU;AACzF,QAAI,YAAY;AAChB,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,SAAS,MAAM;AACb,YAAI,UAAW;AACf,oBAAY;AACZ,eAAO,WAAW,SAAS,CAAC;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,kBACd,WACA,SACuF;AACvF,QAAM,aAAa,kBAAkB,SAAS,UAAU;AACxD,SAAO,CAAC,WAAW;AACjB,UAAM,OAAO,SAAS,cAAc,KAAK;AACzC,SAAK,MAAM,SAAS;AACpB,UAAM,UAAU,eAAe,WAAW,QAA+B,MAAM,UAAU;AACzF,QAAI,YAAY;AAChB,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,SAAS,MAAM;AACb,YAAI,UAAW;AACf,oBAAY;AACZ,gBAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AACF;;;AC9EA,SAAS,gBAAgB,KAAK,YAAY,aAAwC;AAS3E,SAAS,eAAuD;AACrE,QAAM,eAAe,IAAS,IAAI;AAClC,QAAM,MAAM,WAAkC,IAAI;AAClD,QAAM,QAAQ,WAAW,KAAK;AAE9B;AAAA,IACE;AAAA,IACA,CAAC,SAAS;AACR,UAAI,QAAQ,OAAO,KAAK,WAAW,YAAY;AAC7C,YAAI,QAAQ,KAAK,OAAO;AACxB,cAAM,QAAQ,IAAI,SAAS;AAAA,MAC7B,OAAO;AACL,YAAI,QAAQ;AACZ,cAAM,QAAQ;AAAA,MAChB;AAAA,IACF;AAAA,IACA,EAAE,OAAO,OAAO;AAAA,EAClB;AAEA,iBAAe,MAAM;AACnB,iBAAa,QAAQ;AACrB,QAAI,QAAQ;AACZ,UAAM,QAAQ;AAAA,EAChB,CAAC;AAED,SAAO,EAAE,KAAK,cAAc,KAAK,MAAM;AACzC;;;ACvBA,cAAc;AAEd,IAAO,cAAQ;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agile-team/mach-table-vue",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "description": "Official Vue 3 adapter for the MachTable enterprise data grid",
5
5
  "keywords": [
6
6
  "vue",
@@ -42,6 +42,16 @@
42
42
  "default": "./dist/index.cjs"
43
43
  }
44
44
  },
45
+ "./async": {
46
+ "import": {
47
+ "types": "./dist/async.d.ts",
48
+ "default": "./dist/async.js"
49
+ },
50
+ "require": {
51
+ "types": "./dist/async.d.cts",
52
+ "default": "./dist/async.cjs"
53
+ }
54
+ },
45
55
  "./styles.css": {
46
56
  "types": "./dist/mach-table.css.d.ts",
47
57
  "default": "./dist/mach-table.css"
@@ -58,7 +68,7 @@
58
68
  "**/*.css"
59
69
  ],
60
70
  "dependencies": {
61
- "@agile-team/mach-table": "0.4.1"
71
+ "@agile-team/mach-table": "0.5.0"
62
72
  },
63
73
  "peerDependencies": {
64
74
  "vue": ">=3.2.0"