@taocompany/magic-grid 0.7.6 → 0.7.8

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.
Files changed (37) hide show
  1. package/README.md +10 -5
  2. package/dist/components/MagicGrid/MagicGrid.vue.d.ts +2 -2
  3. package/dist/core/api/gridApi.d.ts +51 -1
  4. package/dist/core/api/gridApi.d.ts.map +1 -1
  5. package/dist/core/event/projectGridEvent.d.ts.map +1 -1
  6. package/dist/core/grid/grid.d.ts +6 -0
  7. package/dist/core/grid/grid.d.ts.map +1 -1
  8. package/dist/core/row/getRowType.d.ts +9 -0
  9. package/dist/core/row/getRowType.d.ts.map +1 -0
  10. package/dist/core/row/getSiblingRowsByRowId.d.ts +33 -0
  11. package/dist/core/row/getSiblingRowsByRowId.d.ts.map +1 -0
  12. package/dist/core/row/resolveDisplayRowById.d.ts +9 -0
  13. package/dist/core/row/resolveDisplayRowById.d.ts.map +1 -0
  14. package/dist/core/types/events.d.ts +14 -8
  15. package/dist/core/types/events.d.ts.map +1 -1
  16. package/dist/core/types/index.d.ts +4 -2
  17. package/dist/core/types/index.d.ts.map +1 -1
  18. package/dist/core/types/selectedRowSnapshot.d.ts +41 -22
  19. package/dist/core/types/selectedRowSnapshot.d.ts.map +1 -1
  20. package/dist/getRowDragCommitHierarchy-Bdhm-T66.cjs +2 -0
  21. package/dist/getRowDragCommitHierarchy-Bdhm-T66.cjs.map +1 -0
  22. package/dist/{getRowDragCommitHierarchy-VyTB8COC.js → getRowDragCommitHierarchy-Bty3JIsM.js} +39 -34
  23. package/dist/getRowDragCommitHierarchy-Bty3JIsM.js.map +1 -0
  24. package/dist/index.cjs.js +4 -4
  25. package/dist/index.cjs.js.map +1 -1
  26. package/dist/index.d.ts +4 -2
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.es.js +3662 -3593
  29. package/dist/index.es.js.map +1 -1
  30. package/dist/types/core.cjs.js +1 -1
  31. package/dist/types/core.d.ts +137 -31
  32. package/dist/types/core.d.ts.map +1 -1
  33. package/dist/types/core.es.js +2 -2
  34. package/package.json +1 -1
  35. package/dist/getRowDragCommitHierarchy-Fzdob1zj.cjs +0 -2
  36. package/dist/getRowDragCommitHierarchy-Fzdob1zj.cjs.map +0 -1
  37. package/dist/getRowDragCommitHierarchy-VyTB8COC.js.map +0 -1
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../getRowDragCommitHierarchy-Fzdob1zj.cjs");exports.DEFAULT_CELL_EDITOR_CACHE_KEY=e.n,exports.generateSelectedRowIds=e._,exports.getRowDragCommitHierarchy=e.t;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../getRowDragCommitHierarchy-Bdhm-T66.cjs");exports.DEFAULT_CELL_EDITOR_CACHE_KEY=e.n,exports.generateFocusedRowIds=e._,exports.generateRowId=e.v,exports.generateSelectedRowIds=e.y,exports.getRowDragCommitHierarchy=e.t;
@@ -1227,23 +1227,49 @@ export declare interface FirstRenderedEvent {
1227
1227
  }
1228
1228
 
1229
1229
  /**
1230
- * 从行快照生成 `removeRows` / `moveRows` 可用的 id 列表。
1230
+ * 索引 focus `moveRows` 可用的 id 列表(规则同 {@link generateSelectedRowIds})。
1231
1231
  *
1232
1232
  * @example
1233
1233
  * ```ts
1234
- * // checkbox 删除
1235
- * await api.removeRows({ rowIds: generateSelectedRowIds(event.selectedRows) })
1234
+ * gridApi.on('indexFocusChanged', (event) => {
1235
+ * api.moveRows({ rowIds: generateFocusedRowIds(event.focusedRows), toIndex: 0 })
1236
+ * })
1237
+ * ```
1238
+ */
1239
+ export declare function generateFocusedRowIds(rows: SelectedRowSnapshot | readonly SelectedRowSnapshot[], options?: RowListOptions): RowId[];
1240
+
1241
+ /** 索引 focus:`generateFocusedRowIds` 入参(与 {@link GenerateSelectedRowIdsOptions} 相同) */
1242
+ export declare type GenerateFocusedRowIdsOptions = RowListOptions;
1243
+
1244
+ /**
1245
+ * 单行快照 → `removeRows` / `moveRows` / `getRowType` 等 API 可用的 id。
1246
+ *
1247
+ * - 持久化行 → 业务 `rowId`
1248
+ * - 临时行 → `internalRowId`(`__MG_TMP__::*`)
1236
1249
  *
1237
- * // 等价于 api.getIndexFocusedRowIds()(索引 focus 已在 Grid 内封装)
1238
- * generateSelectedRowIds(api.getIndexFocusedRows())
1250
+ * @example
1251
+ * ```ts
1252
+ * api.on('indexFocusChanged', (event) => {
1253
+ * const id = generateRowId(event.focusedRows[0])
1254
+ * api.getRowType(id)
1255
+ * })
1239
1256
  * ```
1240
1257
  */
1241
- export declare function generateSelectedRowIds(rows: SelectedRowSnapshot | readonly SelectedRowSnapshot[], options?: RowListOptions): RowId[];
1258
+ export declare function generateRowId(row: SelectedRowSnapshot): RowId;
1242
1259
 
1243
- /** @see RowListMode */
1244
- export declare type GenerateSelectedRowIdsMode = RowListMode;
1260
+ /**
1261
+ * checkbox 选中行 `removeRows` / `moveRows` 可用的 id 列表。
1262
+ *
1263
+ * @example
1264
+ * ```ts
1265
+ * gridApi.on('selectionChanged', async (event) => {
1266
+ * await api.removeRows({ rowIds: generateSelectedRowIds(event.selectedRows) })
1267
+ * })
1268
+ * ```
1269
+ */
1270
+ export declare function generateSelectedRowIds(rows: SelectedRowSnapshot | readonly SelectedRowSnapshot[], options?: RowListOptions): RowId[];
1245
1271
 
1246
- /** @see RowListOptions 与索引 focus API 共用同一 options 形状 */
1272
+ /** checkbox 选中:`generateSelectedRowIds` 入参 */
1247
1273
  export declare type GenerateSelectedRowIdsOptions = RowListOptions;
1248
1274
 
1249
1275
  export declare interface GetDataOptions {
@@ -1300,6 +1326,17 @@ export declare interface GetRowHeightParams {
1300
1326
  rowIndex: number;
1301
1327
  }
1302
1328
 
1329
+ export declare interface GetSiblingRowsByRowIdOptions<TData = RowData> {
1330
+ direction: SiblingRowDirection;
1331
+ /**
1332
+ * 最多取几条。默认 `1`。
1333
+ * `-1` = 该方向上全部可见相邻行(仍会被 `iterator` 提前截断)。
1334
+ */
1335
+ length?: number;
1336
+ /** 可选;入参为 {@link SelectedRowSnapshot};`false` 时停止,当前候选行不计入结果 */
1337
+ iterator?: SiblingRowIterator<TData>;
1338
+ }
1339
+
1303
1340
  /** Grid 验收阈值 */
1304
1341
  export declare interface GridAcceptanceThresholds {
1305
1342
  maxDomRows: number;
@@ -1467,6 +1504,54 @@ export declare interface GridApi extends RowMutationGridApi {
1467
1504
  * @param id 业务主键或内核 id(number / string);不存在时返回 `undefined`
1468
1505
  */
1469
1506
  getRowNode(id: RowId): RowNode | undefined;
1507
+ /**
1508
+ * 按行 id 获取相邻可见行的用户数据(`rowsToDisplay` 顺序,导出规则同 {@link getData})。
1509
+ *
1510
+ * | 选项 | 说明 |
1511
+ * |------|------|
1512
+ * | `direction` | `'prev'` 上一行 · `'next'` 下一行 |
1513
+ * | `length` | 默认 `1`;`-1` 取该方向全部 |
1514
+ * | `iterator` | `({ currentRow, row }) => boolean`;均为 {@link SelectedRowSnapshot};`false` 时停止且不含当前行 |
1515
+ *
1516
+ * **rowId** 支持业务 id 与内核 id(含临时行 `__MG_TMP__::*`)。锚点不可见时返回 `[]`。
1517
+ *
1518
+ * @example
1519
+ * ```ts
1520
+ * const [nextRow] = api.getSiblingRowsByRowId(2, { direction: 'next' })
1521
+ *
1522
+ * api.getSiblingRowsByRowId(5, { direction: 'prev', length: 3 })
1523
+ *
1524
+ * // 向上取同部门相邻行,遇到其他部门停止(不含该行)
1525
+ * api.getSiblingRowsByRowId(5, {
1526
+ * direction: 'prev',
1527
+ * length: -1,
1528
+ * iterator: ({ currentRow, row }) =>
1529
+ * String(currentRow.data.department) === String(row.data.department),
1530
+ * })
1531
+ * ```
1532
+ */
1533
+ getSiblingRowsByRowId(rowId: RowId, options: GetSiblingRowsByRowIdOptions): RowData[];
1534
+ /**
1535
+ * 解析行的展示类型。
1536
+ *
1537
+ * | 返回值 | 含义 |
1538
+ * |--------|------|
1539
+ * | `'BUSINESS'` | 用户业务数据行(含临时行) |
1540
+ * | `'GROUP_HEADER'` / `'GROUP_FOOTER'` / `'DETAIL'` | 合成展示行 |
1541
+ *
1542
+ * **rowId** 支持业务 id 与内核 id(含临时行 `__MG_TMP__::*`)。从快照取 id 时用 `generateRowId(row)`。行不存在时返回 `null`。
1543
+ *
1544
+ * @example
1545
+ * ```ts
1546
+ * import { generateRowId } from '@taocompany/magic-grid'
1547
+ *
1548
+ * api.on('indexFocusChanged', (event) => {
1549
+ * const row = event.focusedRows[0]
1550
+ * if (row) api.getRowType(generateRowId(row))
1551
+ * })
1552
+ * ```
1553
+ */
1554
+ getRowType(rowId: RowId): GridRowType | null;
1470
1555
  /**
1471
1556
  * 读取当前渲染与滚动指标(验收 / 调试用途)。
1472
1557
  *
@@ -1634,7 +1719,7 @@ export declare interface GridApi extends RowMutationGridApi {
1634
1719
  * | `'business'` | 仅持久化行业务 id |
1635
1720
  * | `'temp'` | 仅临时行 internalRowId |
1636
1721
  *
1637
- * > 勿用 `indexFocusChanged.focusedRowIds`(临时行 `null`)代替本方法。
1722
+ * > 也可在 `indexFocusChanged` 回调中用 `generateFocusedRowIds(focusedRows)`。
1638
1723
  */
1639
1724
  getIndexFocusedRowIds(options?: RowListOptions): RowId[];
1640
1725
  /**
@@ -1886,6 +1971,9 @@ export declare interface GridReadyEvent {
1886
1971
  /** 圆角:false/0 无圆角;true 跟随 size;number 自定义 px。默认 false */
1887
1972
  export declare type GridRounded = number | boolean;
1888
1973
 
1974
+ /** 行类型枚举(全大写) */
1975
+ export declare type GridRowType = 'BUSINESS' | 'GROUP_HEADER' | 'GROUP_FOOTER' | 'DETAIL';
1976
+
1889
1977
  /** 表格尺寸 preset(与 CSS `magic-grid--size-*` 对齐) */
1890
1978
  export declare type GridSize = 'mini' | 'small' | 'default' | 'large';
1891
1979
 
@@ -2045,13 +2133,19 @@ export declare interface IndexColumnOptions {
2045
2133
  *
2046
2134
  * 用于「当前高亮/定位到哪些行」,与 checkbox {@link SelectionChangedEvent} 独立。
2047
2135
  *
2048
- * **`focusedRowIds` 为业务投影**(临时行 `null`,仅适合展示)。
2049
- * - 读 focus 行数据 → `api.getIndexFocusedRows()`
2050
- * - 移动 focus 行 → `api.getIndexFocusedRowIds()`(勿直接用事件的 `focusedRowIds`)
2136
+ * ## 读取 focus 行
2137
+ *
2138
+ * - `focusedRowIds`:业务 id(临时行 `null`);仅适合简单展示。
2139
+ * - `focusedRows`:完整快照(含 `internalRowId`);**移动 / 展示推荐**。
2140
+ *
2141
+ * 移动:`api.getIndexFocusedRowIds()` 或
2142
+ * `api.moveRows({ rowIds: generateFocusedRowIds(focusedRows) })`。
2051
2143
  */
2052
- export declare interface IndexFocusChangedEvent {
2053
- /** 业务 id;临时行 `null`。展示用;mutation API 请用 getIndexFocusedRowIds / getIndexFocusedRows */
2144
+ export declare interface IndexFocusChangedEvent<TData = RowData> {
2145
+ /** 业务 id;临时行 `null` */
2054
2146
  focusedRowIds: BusinessRowId[];
2147
+ /** 完整行快照(含 internalRowId;推荐用于展示与 moveRows 入参) */
2148
+ focusedRows: SelectedRowSnapshot<TData>[];
2055
2149
  }
2056
2150
 
2057
2151
  export declare type InvalidEditValueMode = 'block' | 'revert' | 'keep';
@@ -3005,19 +3099,11 @@ export declare type RowIndexMode = 'source' | 'display';
3005
3099
 
3006
3100
  export declare type RowKind = 'data' | 'detail' | 'groupHeader' | 'groupFooter';
3007
3101
 
3008
- /**
3009
- * 行列表过滤模式——`getIndexFocusedRowIds`、`getIndexFocusedRows`、
3010
- * `generateSelectedRowIds` 共用。
3011
- */
3102
+ /** 行列表过滤模式(选中 / focus 共用) */
3012
3103
  export declare type RowListMode = 'all' | 'business' | 'temp';
3013
3104
 
3014
- /** {@link RowListMode} 的入参包装 */
3015
3105
  export declare interface RowListOptions {
3016
- /**
3017
- * - `'all'`(默认):持久化行 + 临时行
3018
- * - `'business'`:仅已有业务主键的行
3019
- * - `'temp'`:仅临时行
3020
- */
3106
+ /** @default 'all' */
3021
3107
  mode?: RowListMode;
3022
3108
  }
3023
3109
 
@@ -3363,15 +3449,18 @@ export declare interface SelectableParams {
3363
3449
  isTransient: boolean;
3364
3450
  }
3365
3451
 
3366
- /** 行快照:checkbox 选中(`getSelectedRows`)与索引 focus(`getIndexFocusedRows`)共用结构 */
3452
+ /**
3453
+ * 行快照——`getSelectedRows` / `getIndexFocusedRows` /
3454
+ * `selectionChanged.selectedRows` / `indexFocusChanged.focusedRows` 共用。
3455
+ */
3367
3456
  export declare interface SelectedRowSnapshot<TData = RowData> {
3368
3457
  /** 业务主键;临时行恒 `null` */
3369
3458
  rowId: BusinessRowId;
3370
- /** 内核 rowId;临时行为 `__MG_TMP__::*`,传给 `moveRows` / `removeRows` / `promoteRowId` 时使用 */
3459
+ /** 内核 rowId;临时行为 `__MG_TMP__::*` */
3371
3460
  internalRowId: string;
3372
3461
  isTransient: boolean;
3373
3462
  rowIndex: number;
3374
- /** 与 `getData()` 导出规则一致 */
3463
+ /** 与 `api.getData()` 导出规则一致 */
3375
3464
  data: TData;
3376
3465
  }
3377
3466
 
@@ -3382,10 +3471,10 @@ export declare interface SelectedRowSnapshot<TData = RowData> {
3382
3471
  *
3383
3472
  * ## 读取选中行
3384
3473
  *
3385
- * - `selectedRowIds`:业务 id(`data[rowKey]`);**临时行均为 `null`**,多个临时行无法区分。
3386
- * - `selectedRows`:完整快照,含 `internalRowId`(临时行 `__MG_TMP__::*`);**删除临时行请用此字段**。
3474
+ * - `selectedRowIds`:业务 id(临时行 `null`);仅适合简单展示。
3475
+ * - `selectedRows`:完整快照(含 `internalRowId`);**删除 / 展示推荐**。
3387
3476
  *
3388
- * 推荐删除方式:`api.removeSelectedRows()`,或
3477
+ * 删除:`api.removeSelectedRows()` 或
3389
3478
  * `api.removeRows({ rowIds: generateSelectedRowIds(selectedRows) })`。
3390
3479
  */
3391
3480
  export declare interface SelectionChangedEvent<TData = RowData> {
@@ -3451,6 +3540,23 @@ export declare interface SetRowHeightChange {
3451
3540
  height: number;
3452
3541
  }
3453
3542
 
3543
+ /** 相邻方向:按当前可见列表 `rowsToDisplay` 的上一行 / 下一行 */
3544
+ export declare type SiblingRowDirection = 'prev' | 'next';
3545
+
3546
+ /**
3547
+ * 逐条过滤候选相邻行。
3548
+ * 返回 `false` 时立即停止,且**不包含** `currentRow`。
3549
+ */
3550
+ export declare type SiblingRowIterator<TData = RowData> = (params: SiblingRowIteratorParams<TData>) => boolean;
3551
+
3552
+ /** `iterator` 回调入参(与 `getSelectedRows` / `focusedRows` 快照结构一致) */
3553
+ export declare interface SiblingRowIteratorParams<TData = RowData> {
3554
+ /** 当前正在考察的候选相邻行 */
3555
+ currentRow: SelectedRowSnapshot<TData>;
3556
+ /** 锚点行(即调用时传入的 `rowId` 对应行) */
3557
+ row: SelectedRowSnapshot<TData>;
3558
+ }
3559
+
3454
3560
  export declare interface SizeColumnsToContentColumnLimit {
3455
3561
  colId: string;
3456
3562
  minWidth?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { _ as e, n as t, t as n } from "../getRowDragCommitHierarchy-VyTB8COC.js";
2
- export { t as DEFAULT_CELL_EDITOR_CACHE_KEY, e as generateSelectedRowIds, n as getRowDragCommitHierarchy };
1
+ import { _ as e, n as t, t as n, v as r, y as i } from "../getRowDragCommitHierarchy-Bty3JIsM.js";
2
+ export { t as DEFAULT_CELL_EDITOR_CACHE_KEY, e as generateFocusedRowIds, r as generateRowId, i as generateSelectedRowIds, n as getRowDragCommitHierarchy };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taocompany/magic-grid",
3
- "version": "0.7.6",
3
+ "version": "0.7.8",
4
4
  "description": "A high-performance virtual table component library for Vue 3",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -1,2 +0,0 @@
1
- var e=`__index__`;function t(e){return Math.max(40,e??40)}function n(e={}){return{label:e.label??``,width:t(e.width),start:e.start??1,focusMode:e.focusMode===`single`?`single`:`multiple`,syncToSelectionColumn:e.syncToSelectionColumn??!1,showRowDragHandle:e.showRowDragHandle??!1,enableRowResizer:e.enableRowResizer??!1,headerAlign:e.headerAlign??`center`,headerValign:e.headerValign??`center`,align:e.align??`center`,valign:e.valign??`center`,footerAlign:e.footerAlign??`center`,footerValign:e.footerValign??`center`,index:e.index}}function r(e={}){return{showIndexColumn:e.showIndexColumn??!1,indexColumn:n(e.indexColumn)}}function i(t){return t===e}function a(e,t){return e.key??e.prop??`col_${t}`}function o(e){}function s(e){return e===!1?{mode:!1,groupSelectsChildren:!0}:e==null?{mode:`single`,groupSelectsChildren:!0}:typeof e==`string`?{mode:e===`multiple`?`multiple`:`single`,groupSelectsChildren:!0}:{mode:e.mode===`multiple`?`multiple`:`single`,groupSelectsChildren:e.groupSelectsChildren??!0}}var c=`__select__`;function l(e){return Math.max(40,e??40)}function u(e={}){return{width:l(e.width),selectAllLabel:e.selectAllLabel??`全选`,rowLabel:e.rowLabel,headerAlign:e.headerAlign??`center`,headerValign:e.headerValign??`center`,align:e.align??`center`,valign:e.valign??`center`,footerAlign:e.footerAlign??`center`,footerValign:e.footerValign??`center`}}function d(e={}){if(e.rowSelection==null)return{enabled:!1,mode:`single`,selectionColumn:u(e.selectionColumn)};let t=s(e.rowSelection),n=t.mode!==!1;return{enabled:n,mode:n&&t.mode!==!1?t.mode:`single`,selectionColumn:u(e.selectionColumn)}}function f(e){return e===c}function p(e){}var m=`__MG_TMP__::`,h=0;function g(){return h+=1,`${Date.now().toString(36)}_${h.toString(36)}`}function _(){return`${m}${typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():g()}`}function v(e){return e.startsWith(m)}function y(e){return e==null||e===``}function b(e){if(e.group)return!0;let t=e.rowKind;return t===`detail`||t===`groupHeader`||t===`groupFooter`}function x(e,t){if(e.isTransient)return null;let n=e.data[t];return!b(e)&&(typeof n==`number`||typeof n==`string`)?n:e.id}function S(e,t,n,r){if(r?.isTransient||v(n))return null;let i=e[t];return typeof i==`number`||typeof i==`string`?i:n}function C(e,t){if(v(e))return null;let n=t.getRowById(e);return n?x(n,t.rowKey):e}function w(e,t){return e.map(e=>C(e,t))}function T(e){return{fromNode:t=>x(t,e.rowKey),fromInternal:t=>C(t,e),fromInternalList:t=>w(t,e)}}function E(e,t){let n=T(t);return{...e,cellErrors:e.cellErrors.map(e=>({...e,rowId:n.fromInternal(String(e.rowId))}))}}function D(e,t){let n={...e.data};return e.isTransient&&(n[t]=null),n}function O(e,t){return e.map(e=>D(e,t))}function k(e,t){let n=T(t),r=[];for(let i of e){let e=t.getRowById(i);e&&r.push({rowId:n.fromNode(e),internalRowId:i,isTransient:e.isTransient===!0||v(i),rowIndex:e.rowIndex,data:D(e,t.rowKey)})}return r}function A(e){return Array.isArray(e)}function j(e){return A(e)?e:[e]}function M(e){return e!==null}function N(e,t){return t===`all`?[...e]:t===`business`?e.filter(e=>!e.isTransient&&M(e.rowId)):e.filter(e=>e.isTransient)}function P(e){let t=[];for(let n of e){if(n.isTransient){t.push(n.internalRowId);continue}M(n.rowId)&&t.push(n.rowId)}return t}function F(e,t={}){let n=t.mode??`all`;return P(N(j(e),n))}function I(e,t,n={}){return N(k(e,t),n.mode??`all`)}var L=`overlay`;function R(e){return e===`inline`?`inline`:L}function z(e,t){return i(e)||f(e)?L:R(t)}function B(e){return i(e.colId)||f(e.colId)||R(e.cellEditorMode)!==`inline`?!1:e.cellEditor!=null}function V(e,t){}function H(e,t){}var U=`default`;function W(e={}){let t=e.cellEditorCacheMaxEntries;return{enableCellEditorCache:e.enableCellEditorCache??!1,cellEditorCacheMaxEntries:t!=null&&Number.isFinite(t)&&t>0?Math.floor(t):void 0}}function G(e,t){return e===null?t?`\0${t}`:`\0transient`:String(e)}function K(e,t,n=U,r){return`${G(e,r?.internalRowId)}::${t}::${n}`}function q(e,t,n){return`${G(e,n?.internalRowId)}::${t}`}function J(e={}){let{userKey:t,columnCellEditorCache:n}=e,r=typeof n==`string`?n:void 0;return t!=null&&t!==``?r?`${r}::${t}`:t:r||U}function Y(e){return B({colId:e.colId,cellEditorMode:e.cellEditorMode,cellEditor:e.cellEditor})||e.columnCellEditorCache===!1?!1:e.columnCellEditorCache===!0||typeof e.columnCellEditorCache==`string`||e.enableCellEditorCache}function X(e){return e.previousParentRowId!==e.parentRowId||e.previousSiblingIndex!==e.siblingIndex}function Z(e,t=`default`){let n=e.hierarchyChanges??[];return t==="default"?[...n]:n.filter(X)}Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return`全选`}}),Object.defineProperty(exports,"B",{enumerable:!0,get:function(){return 40}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,"H",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,"L",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return 40}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,"R",{enumerable:!0,get:function(){return 1}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"U",{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,"V",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"W",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return G}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return 40}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return H}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return U}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return W}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return V}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return q}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Z}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,"z",{enumerable:!0,get:function(){return e}});
2
- //# sourceMappingURL=getRowDragCommitHierarchy-Fzdob1zj.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getRowDragCommitHierarchy-Fzdob1zj.cjs","names":[],"sources":["../src/core/types/indexColumn.ts","../src/core/types/rowSelectionOptions.ts","../src/core/types/selectionColumn.ts","../src/core/rowModel/transientRowId.ts","../src/core/types/businessRowId.ts","../src/core/rowModel/rowDataExport.ts","../src/core/types/selectedRowSnapshot.ts","../src/core/types/cellEditorMode.ts","../src/core/types/cellEditorCache.ts","../src/core/row/getRowDragCommitHierarchy.ts"],"sourcesContent":["import type { ColumnDef } from '@types'\r\nimport type { GridHorizontalAlign, GridVerticalAlign } from '@core/types/align'\r\n\r\n/** 系统索引列 colId;用户 columns 不得占用 */\r\nexport const INDEX_COLUMN_ID = '__index__'\r\n\r\n/** 索引列最小(默认)宽度 px */\r\nexport const INDEX_COLUMN_MIN_WIDTH = 40\r\n\r\n/** 索引列默认起始序号(1-based 展示 = rowIndex + start) */\r\nexport const DEFAULT_INDEX_COLUMN_START = 1\r\n\r\n/** 索引列配置 */\r\nexport interface IndexColumnOptions {\r\n /** 表头文案;默认空字符串 */\r\n label?: string\r\n /** 列宽 px;默认 40;小于 40 时钳制为 40 */\r\n width?: number\r\n /** 起始序号(1-based 展示 = rowIndex + start);默认 1 */\r\n start?: number\r\n /**\r\n * 辅助定位模式:single / multiple(multiple 支持 Ctrl/Shift/拖拉范围)\r\n * 默认 multiple(Excel 行号式交互)\r\n */\r\n focusMode?: 'single' | 'multiple'\r\n /**\r\n * 索引列定位是否单向同步到行选择列(业务选中);core 默认 false,MagicGrid 组件层默认 true。\r\n * 仅当 indexColumn.focusMode 与 rowSelection 同为 single 或同为 multiple 时生效。\r\n * 用户在索引列上操作(点击/拖选/再次点击取消)或 API `setIndexFocus`(`mode: 'default'`)时同步;\r\n * 点击其他区域清除索引定位、行删除 / rowId 迁移等不同步行选择列。\r\n */\r\n syncToSelectionColumn?: boolean\r\n /** 表头水平对齐;默认 center */\r\n headerAlign?: GridHorizontalAlign\r\n /** 表头垂直对齐;默认 center */\r\n headerValign?: GridVerticalAlign\r\n /** 表体水平对齐;默认 center */\r\n align?: GridHorizontalAlign\r\n /** 表体垂直对齐;默认 center */\r\n valign?: GridVerticalAlign\r\n /** footer 水平对齐;默认 center */\r\n footerAlign?: GridHorizontalAlign\r\n /** footer 垂直对齐;默认 center */\r\n footerValign?: GridVerticalAlign\r\n /**\r\n * 自定义序号展示;入参为 rowsToDisplay 下标。\r\n * 缺省:(rowIndex) => String(rowIndex + start)\r\n */\r\n index?: (rowIndex: number) => number | string\r\n /**\r\n * 在索引列 cell 内显示行拖拽把柄;默认 false。\r\n * 需配合 Grid `rowDragManaged` 或监听 `rowDragEnd` 自行改序。\r\n */\r\n showRowDragHandle?: boolean\r\n /**\r\n * 索引列底边可拖拽调整行高;默认 false。\r\n * 对标 AG Grid Row Numbers `enableRowResizer`。\r\n */\r\n enableRowResizer?: boolean\r\n}\r\n\r\n/** Grid 级索引列开关与配置(块 0 类型;块 1+ 消费) */\r\nexport interface IndexColumnGridOptions {\r\n /** 是否显示最左侧索引列;默认 false */\r\n showIndexColumn?: boolean\r\n /** 索引列配置;showIndexColumn=true 时生效 */\r\n indexColumn?: IndexColumnOptions\r\n}\r\n\r\nexport interface ResolvedIndexColumnOptions {\r\n label: string\r\n width: number\r\n start: number\r\n focusMode: 'single' | 'multiple'\r\n syncToSelectionColumn: boolean\r\n showRowDragHandle: boolean\r\n enableRowResizer: boolean\r\n headerAlign: GridHorizontalAlign\r\n headerValign: GridVerticalAlign\r\n align: GridHorizontalAlign\r\n valign: GridVerticalAlign\r\n footerAlign: GridHorizontalAlign\r\n footerValign: GridVerticalAlign\r\n index?: (rowIndex: number) => number | string\r\n}\r\n\r\nexport interface ResolvedIndexColumnGridOptions {\r\n showIndexColumn: boolean\r\n indexColumn: ResolvedIndexColumnOptions\r\n}\r\n\r\nexport function resolveIndexColumnWidth(width?: number): number {\r\n return Math.max(INDEX_COLUMN_MIN_WIDTH, width ?? INDEX_COLUMN_MIN_WIDTH)\r\n}\r\n\r\nexport function resolveIndexColumnOptions(\r\n options: IndexColumnOptions = {},\r\n): ResolvedIndexColumnOptions {\r\n return {\r\n label: options.label ?? '',\r\n width: resolveIndexColumnWidth(options.width),\r\n start: options.start ?? DEFAULT_INDEX_COLUMN_START,\r\n focusMode: options.focusMode === 'single' ? 'single' : 'multiple',\r\n syncToSelectionColumn: options.syncToSelectionColumn ?? false,\r\n showRowDragHandle: options.showRowDragHandle ?? false,\r\n enableRowResizer: options.enableRowResizer ?? false,\r\n headerAlign: options.headerAlign ?? 'center',\r\n headerValign: options.headerValign ?? 'center',\r\n align: options.align ?? 'center',\r\n valign: options.valign ?? 'center',\r\n footerAlign: options.footerAlign ?? 'center',\r\n footerValign: options.footerValign ?? 'center',\r\n index: options.index,\r\n }\r\n}\r\n\r\nexport function resolveIndexColumnGridOptions(\r\n options: IndexColumnGridOptions = {},\r\n): ResolvedIndexColumnGridOptions {\r\n return {\r\n showIndexColumn: options.showIndexColumn ?? false,\r\n indexColumn: resolveIndexColumnOptions(options.indexColumn),\r\n }\r\n}\r\n\r\nexport function isIndexColumn(colId: string): boolean {\r\n return colId === INDEX_COLUMN_ID\r\n}\r\n\r\n/** `setIndexFocus` 同步策略:default 跟随 grid 配置;manual 由调用方显式控制 */\r\nexport type SetIndexFocusMode = 'default' | 'manual'\r\n\r\n/** `GridApi.setIndexFocus` 可选参数 */\r\nexport interface SetIndexFocusOptions {\r\n /**\r\n * - `default`(默认):与用户点击索引列一致,按 `indexColumn.syncToSelectionColumn` 决定是否同步\r\n * - `manual`:由 `syncToSelectionColumn` 显式控制,可覆盖 grid 配置\r\n */\r\n mode?: SetIndexFocusMode\r\n /** `mode: 'manual'` 时生效;省略时视为 `false` */\r\n syncToSelectionColumn?: boolean\r\n}\r\n\r\nexport function resolveColumnDefColId(column: ColumnDef, index: number): string {\r\n return column.key ?? column.prop ?? `col_${index}`\r\n}\r\n\r\n/** 开发模式:用户 columns 占用系统索引列 colId 时告警 */\r\nexport function warnIfUserColumnsConflictWithIndexColumn(\r\n columns: readonly ColumnDef[],\r\n): void {\r\n if (!import.meta.env.DEV) {\r\n return\r\n }\r\n\r\n columns.forEach((column, index) => {\r\n const colId = resolveColumnDefColId(column, index)\r\n if (colId === INDEX_COLUMN_ID || column.key === INDEX_COLUMN_ID) {\r\n console.warn(\r\n `[magic-grid] Column \"${INDEX_COLUMN_ID}\" is reserved for the system index column. ` +\r\n 'Remove it from your columns definition or use showIndexColumn instead.',\r\n )\r\n }\r\n })\r\n}\r\n","export type RowSelectionMode = 'single' | 'multiple'\n\n/** 行选择配置(Phase 19 · groupSelectsChildren) */\nexport interface RowSelectionConfig {\n mode: RowSelectionMode\n /**\n * tree 模式下选中父节点是否级联选中子孙。默认 `true`。\n * 对标 AG Grid rowSelection.groupSelectsChildren。\n */\n groupSelectsChildren?: boolean\n}\n\nexport type RowSelectionInput =\n | RowSelectionMode\n | false\n | RowSelectionConfig\n\nexport interface ResolvedRowSelectionOptions {\n mode: RowSelectionMode | false\n groupSelectsChildren: boolean\n}\n\nexport function normalizeRowSelectionInput(\n input: RowSelectionInput | undefined,\n): ResolvedRowSelectionOptions {\n if (input === false) {\n return { mode: false, groupSelectsChildren: true }\n }\n\n if (input == null) {\n return { mode: 'single', groupSelectsChildren: true }\n }\n\n if (typeof input === 'string') {\n return {\n mode: input === 'multiple' ? 'multiple' : 'single',\n groupSelectsChildren: true,\n }\n }\n\n return {\n mode: input.mode === 'multiple' ? 'multiple' : 'single',\n groupSelectsChildren: input.groupSelectsChildren ?? true,\n }\n}\n\nexport function normalizeRowSelectionMode(\n resolved: ResolvedRowSelectionOptions,\n): RowSelectionMode | false {\n return resolved.mode\n}\n","import type { RowSelectionMode } from '@core/selection/selectionService'\r\nimport {\r\n normalizeRowSelectionInput,\r\n type RowSelectionInput,\r\n} from '@core/types/rowSelectionOptions'\r\n\r\nimport { resolveColumnDefColId } from './indexColumn'\r\nimport type { GridHorizontalAlign, GridVerticalAlign } from '@core/types/align'\r\nimport type { ColumnDef } from '@types'\r\n\r\n/** 系统行选择列 colId;用户 columns 不得占用 */\r\nexport const SELECTION_COLUMN_ID = '__select__'\r\n\r\n/** 行选择列最小宽度 px */\r\nexport const SELECTION_COLUMN_MIN_WIDTH = 40\r\n\r\n/** 行选择列默认宽度 px */\r\nexport const SELECTION_COLUMN_DEFAULT_WIDTH = 40\r\n\r\n/** 表头全选 checkbox 默认 aria-label */\r\nexport const DEFAULT_SELECTION_SELECT_ALL_LABEL = '全选'\r\n\r\n/** 行选择列配置 */\r\nexport interface SelectionColumnOptions {\r\n /** 列宽 px;默认 40;小于 40 时钳制为 40 */\r\n width?: number\r\n /** 表头全选 checkbox 的 aria-label;默认「全选」 */\r\n selectAllLabel?: string\r\n /** 行 checkbox 的 aria-label 工厂 */\r\n rowLabel?: (rowIndex: number) => string\r\n /** 表头水平对齐;默认 center */\r\n headerAlign?: GridHorizontalAlign\r\n /** 表头垂直对齐;默认 center */\r\n headerValign?: GridVerticalAlign\r\n /** 表体水平对齐;默认 center */\r\n align?: GridHorizontalAlign\r\n /** 表体垂直对齐;默认 center */\r\n valign?: GridVerticalAlign\r\n /** footer 水平对齐;默认 center */\r\n footerAlign?: GridHorizontalAlign\r\n /** footer 垂直对齐;默认 center */\r\n footerValign?: GridVerticalAlign\r\n}\r\n\r\n/** Grid 级行选择列配置(块 0 类型;块 1+ 消费) */\r\nexport interface SelectionColumnGridOptions {\r\n /** 行选择列配置;rowSelection !== false 时生效 */\r\n selectionColumn?: SelectionColumnOptions\r\n}\r\n\r\nexport interface ResolvedSelectionColumnOptions {\r\n width: number\r\n selectAllLabel: string\r\n rowLabel?: (rowIndex: number) => string\r\n headerAlign: GridHorizontalAlign\r\n headerValign: GridVerticalAlign\r\n align: GridHorizontalAlign\r\n valign: GridVerticalAlign\r\n footerAlign: GridHorizontalAlign\r\n footerValign: GridVerticalAlign\r\n}\r\n\r\nexport interface ResolvedSelectionColumnGridOptions {\r\n /** rowSelection !== false */\r\n enabled: boolean\r\n /** 行选模式;enabled=false 时为占位 single */\r\n mode: RowSelectionMode\r\n selectionColumn: ResolvedSelectionColumnOptions\r\n}\r\n\r\nexport function resolveSelectionColumnWidth(width?: number): number {\r\n return Math.max(SELECTION_COLUMN_MIN_WIDTH, width ?? SELECTION_COLUMN_DEFAULT_WIDTH)\r\n}\r\n\r\nexport function resolveSelectionColumnOptions(\r\n options: SelectionColumnOptions = {},\r\n): ResolvedSelectionColumnOptions {\r\n return {\r\n width: resolveSelectionColumnWidth(options.width),\r\n selectAllLabel: options.selectAllLabel ?? DEFAULT_SELECTION_SELECT_ALL_LABEL,\r\n rowLabel: options.rowLabel,\r\n headerAlign: options.headerAlign ?? 'center',\r\n headerValign: options.headerValign ?? 'center',\r\n align: options.align ?? 'center',\r\n valign: options.valign ?? 'center',\r\n footerAlign: options.footerAlign ?? 'center',\r\n footerValign: options.footerValign ?? 'center',\r\n }\r\n}\r\n\r\nexport function resolveSelectionColumnGridOptions(\r\n options: {\r\n rowSelection?: RowSelectionInput\r\n selectionColumn?: SelectionColumnOptions\r\n } = {},\r\n): ResolvedSelectionColumnGridOptions {\r\n // Grid 直建时缺省 rowSelection 仍不注入行选择列;MagicGrid 默认传 'single'。\r\n if (options.rowSelection == null) {\r\n return {\r\n enabled: false,\r\n mode: 'single',\r\n selectionColumn: resolveSelectionColumnOptions(options.selectionColumn),\r\n }\r\n }\r\n\r\n const resolved = normalizeRowSelectionInput(options.rowSelection)\r\n const enabled = resolved.mode !== false\r\n\r\n return {\r\n enabled,\r\n mode: enabled && resolved.mode !== false ? resolved.mode : 'single',\r\n selectionColumn: resolveSelectionColumnOptions(options.selectionColumn),\r\n }\r\n}\r\n\r\nexport function isSelectionColumn(colId: string): boolean {\r\n return colId === SELECTION_COLUMN_ID\r\n}\r\n\r\n/** 开发模式:用户 columns 占用系统行选择列 colId 时告警 */\r\nexport function warnIfUserColumnsConflictWithSelectionColumn(\r\n columns: readonly ColumnDef[],\r\n): void {\r\n if (!import.meta.env.DEV) {\r\n return\r\n }\r\n\r\n columns.forEach((column, index) => {\r\n const colId = resolveColumnDefColId(column, index)\r\n if (colId === SELECTION_COLUMN_ID || column.key === SELECTION_COLUMN_ID) {\r\n console.warn(\r\n `[magic-grid] Column \"${SELECTION_COLUMN_ID}\" is reserved for the system row selection column. ` +\r\n 'Remove it from your columns definition; use rowSelection instead.',\r\n )\r\n }\r\n })\r\n}\r\n","/**\n * 临时行(尚未分配业务主键的新增行)的内部 id 生成与识别。\n *\n * - **格式**:`__MG_TMP__::<uuid>`(例:`__MG_TMP__::550e8400-e29b-41d4-a716-446655440000`)\n * - **写入位置**:仅 `RowNode.id`;**不会**写入 `data[rowKey]`\n * - **对外暴露**:`getData()`、`selectedRowIds`、多数事件的 `rowId` 对临时行投影为 `null`\n * - **消费端获取内部 id**:`addRows` 返回的 `RowNode.id`、`getSelectedRows()` 的 `internalRowId`\n */\n/** 新增行内部临时 ID 前缀(不对用户 data[rowKey] 暴露) */\nexport const TRANSIENT_ROW_ID_PREFIX = '__MG_TMP__::' as const\n\nlet transientRowIdCounter = 0\n\nfunction createFallbackUuid(): string {\n transientRowIdCounter += 1\n return `${Date.now().toString(36)}_${transientRowIdCounter.toString(36)}`\n}\n\n/** 生成表格内部使用的临时 rowId */\nexport function createTransientRowId(): string {\n const uuid =\n typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function'\n ? crypto.randomUUID()\n : createFallbackUuid()\n\n return `${TRANSIENT_ROW_ID_PREFIX}${uuid}`\n}\n\n/** 判断 id 是否为内部临时 rowId */\nexport function isTransientRowId(id: string): boolean {\n return id.startsWith(TRANSIENT_ROW_ID_PREFIX)\n}\n\n/** 业务 rowKey 是否为空(视为尚未分配持久化主键) */\nexport function isMissingBusinessRowKey(value: unknown): boolean {\n return value === null || value === undefined || value === ''\n}\n","import { isTransientRowId } from '@core/rowModel/transientRowId'\nimport type { RowData } from '@types'\nimport type { RowNode } from '@core/types/rowNode'\nimport type { RowId } from '@core/types/rowId'\n\n/** 对外 API / 事件 rowId:与用户 data[rowKey] 同型;临时行无业务主键时为 null */\nexport type BusinessRowId = RowId | null\n\nexport interface BusinessRowIdContext {\n rowKey: string\n getRowById: (internalId: string) => RowNode | undefined\n}\n\n/** 无用户业务主键的合成行(分组头、detail 等) */\nexport function isSyntheticRow(rowNode: RowNode): boolean {\n if (rowNode.group) {\n return true\n }\n\n const kind = rowNode.rowKind\n return kind === 'detail' || kind === 'groupHeader' || kind === 'groupFooter'\n}\n\n/** RowNode → 业务 rowId */\nexport function toBusinessRowId(rowNode: RowNode, rowKey: string): BusinessRowId {\n if (rowNode.isTransient) {\n return null\n }\n\n const raw = rowNode.data[rowKey]\n if (!isSyntheticRow(rowNode) && (typeof raw === 'number' || typeof raw === 'string')) {\n return raw\n }\n\n return rowNode.id\n}\n\n/** 从导出的 row.data 快照解析业务 rowId(rowsRemoved 等行已不在模型中时) */\nexport function toBusinessRowIdFromExportedData(\n data: RowData,\n rowKey: string,\n internalId: string,\n options?: { isTransient?: boolean },\n): BusinessRowId {\n if (options?.isTransient || isTransientRowId(internalId)) {\n return null\n }\n\n const raw = data[rowKey]\n if (typeof raw === 'number' || typeof raw === 'string') {\n return raw\n }\n\n return internalId\n}\n\n/** 内核 rowId → 业务 rowId */\nexport function toBusinessRowIdFromInternal(\n internalId: string,\n ctx: BusinessRowIdContext,\n): BusinessRowId {\n if (isTransientRowId(internalId)) {\n return null\n }\n\n const rowNode = ctx.getRowById(internalId)\n if (rowNode) {\n return toBusinessRowId(rowNode, ctx.rowKey)\n }\n\n return internalId\n}\n\nexport function toBusinessRowIdsFromInternal(\n internalIds: readonly string[],\n ctx: BusinessRowIdContext,\n): BusinessRowId[] {\n return internalIds.map((id) => toBusinessRowIdFromInternal(id, ctx))\n}\n\nexport function createBusinessRowIdResolver(ctx: BusinessRowIdContext) {\n return {\n fromNode: (rowNode: RowNode) => toBusinessRowId(rowNode, ctx.rowKey),\n fromInternal: (internalId: string) => toBusinessRowIdFromInternal(internalId, ctx),\n fromInternalList: (internalIds: readonly string[]) =>\n toBusinessRowIdsFromInternal(internalIds, ctx),\n }\n}\n\nexport function projectValidationResult(\n result: import('@core/types/validation').GridValidationResult,\n ctx: BusinessRowIdContext,\n): import('@core/types/validation').GridValidationResult {\n const resolve = createBusinessRowIdResolver(ctx)\n return {\n ...result,\n cellErrors: result.cellErrors.map((error) => ({\n ...error,\n rowId: resolve.fromInternal(String(error.rowId)),\n })),\n }\n}\n","import type { RowNode } from '@core/types'\nimport type { RowData } from '@types'\n\n/** 将 RowNode 转为对外导出的行数据(浅拷贝) */\nexport function toUserRowData(rowNode: RowNode, rowKey: string): RowData {\n const exported: RowData = { ...rowNode.data }\n\n if (rowNode.isTransient) {\n exported[rowKey] = null\n }\n\n return exported\n}\n\n/** 批量导出 RowNode 数组为用户行数据 */\nexport function exportRowData(rows: readonly RowNode[], rowKey: string): RowData[] {\n return rows.map((row) => toUserRowData(row, rowKey))\n}\n","/**\n * 行「双 ID」投影:快照构建与 id 列表工具。\n *\n * ## 双 ID 速查\n *\n * | | 持久化行 | 临时行(`id` 为 null / 省略) |\n * |---|---------|---------------------------|\n * | 业务 id `rowId` | `data[rowKey]` | 恒 `null` |\n * | 内核 id `internalRowId` | ≈ `String(rowId)` | `__MG_TMP__::*` |\n *\n * ## 消费端 API 对照(索引 focus)\n *\n * | 目的 | 用法 |\n * |------|------|\n * | 展示 focus 行(含 `data`) | `api.getIndexFocusedRows()` |\n * | 传给 `moveRows`(含临时行) | `api.getIndexFocusedRowIds()` |\n * | 监听 focus 变化(仅展示) | `@index-focus-changed` → `focusedRowIds`(临时行 `null`) |\n *\n * ## 消费端 API 对照(checkbox 选中)\n *\n * | 目的 | 用法 |\n * |------|------|\n * | 读选中行快照 | `api.getSelectedRows()` / `event.selectedRows` |\n * | 传给 `removeRows` | `generateSelectedRowIds(rows)` 或 `api.removeSelectedRows()` |\n *\n * **`indexFocusChanged.focusedRowIds` 与 `getSelectedRowIds()` 同为业务投影**,\n * 不可直接传给 `moveRows` / `removeRows`(临时行会丢失定位)。\n */\nimport { toUserRowData } from '@core/rowModel/rowDataExport'\nimport { isTransientRowId } from '@core/rowModel/transientRowId'\nimport type { RowData } from '@types'\n\nimport {\n createBusinessRowIdResolver,\n type BusinessRowId,\n type BusinessRowIdContext,\n} from './businessRowId'\nimport type { RowId } from './rowId'\n\n/**\n * 行列表过滤模式——`getIndexFocusedRowIds`、`getIndexFocusedRows`、\n * `generateSelectedRowIds` 共用。\n */\nexport type RowListMode = 'all' | 'business' | 'temp'\n\n/** {@link RowListMode} 的入参包装 */\nexport interface RowListOptions {\n /**\n * - `'all'`(默认):持久化行 + 临时行\n * - `'business'`:仅已有业务主键的行\n * - `'temp'`:仅临时行\n */\n mode?: RowListMode\n}\n\n/** @see RowListOptions — 与索引 focus API 共用同一 options 形状 */\nexport type GenerateSelectedRowIdsOptions = RowListOptions\n\n/** @see RowListMode */\nexport type GenerateSelectedRowIdsMode = RowListMode\n\n/** 行快照:checkbox 选中(`getSelectedRows`)与索引 focus(`getIndexFocusedRows`)共用结构 */\nexport interface SelectedRowSnapshot<TData = RowData> {\n /** 业务主键;临时行恒 `null` */\n rowId: BusinessRowId\n /** 内核 rowId;临时行为 `__MG_TMP__::*`,传给 `moveRows` / `removeRows` / `promoteRowId` 时使用 */\n internalRowId: string\n isTransient: boolean\n rowIndex: number\n /** 与 `getData()` 导出规则一致 */\n data: TData\n}\n\n/** @internal checkbox 选中 & 索引 focus 共用:internal id → 快照 */\nexport function buildSelectedRowSnapshots(\n internalIds: readonly string[],\n ctx: BusinessRowIdContext,\n): SelectedRowSnapshot[] {\n const resolve = createBusinessRowIdResolver(ctx)\n const snapshots: SelectedRowSnapshot[] = []\n\n for (const internalRowId of internalIds) {\n const rowNode = ctx.getRowById(internalRowId)\n if (!rowNode) {\n continue\n }\n\n snapshots.push({\n rowId: resolve.fromNode(rowNode),\n internalRowId,\n isTransient: rowNode.isTransient === true || isTransientRowId(internalRowId),\n rowIndex: rowNode.rowIndex,\n data: toUserRowData(rowNode, ctx.rowKey),\n })\n }\n\n return snapshots\n}\n\nfunction isSnapshotArray(\n rows: SelectedRowSnapshot | readonly SelectedRowSnapshot[],\n): rows is readonly SelectedRowSnapshot[] {\n return Array.isArray(rows)\n}\n\nfunction normalizeSnapshots(\n rows: SelectedRowSnapshot | readonly SelectedRowSnapshot[],\n): readonly SelectedRowSnapshot[] {\n if (isSnapshotArray(rows)) {\n return rows\n }\n\n const singleRow: SelectedRowSnapshot = rows\n return [singleRow]\n}\n\nfunction isUsableBusinessRowId(rowId: BusinessRowId): rowId is RowId {\n return rowId !== null\n}\n\nfunction filterSnapshotsByMode(\n rows: readonly SelectedRowSnapshot[],\n mode: RowListMode,\n): SelectedRowSnapshot[] {\n if (mode === 'all') {\n return [...rows]\n }\n\n if (mode === 'business') {\n return rows.filter((row) => !row.isTransient && isUsableBusinessRowId(row.rowId))\n }\n\n return rows.filter((row) => row.isTransient)\n}\n\n/** 持久化行 → 业务 id;临时行 → internalRowId */\nfunction projectRowIdsFromSnapshots(rows: readonly SelectedRowSnapshot[]): RowId[] {\n const result: RowId[] = []\n\n for (const row of rows) {\n if (row.isTransient) {\n result.push(row.internalRowId)\n continue\n }\n\n if (isUsableBusinessRowId(row.rowId)) {\n result.push(row.rowId)\n }\n }\n\n return result\n}\n\n/**\n * 从行快照生成 `removeRows` / `moveRows` 可用的 id 列表。\n *\n * @example\n * ```ts\n * // checkbox 删除\n * await api.removeRows({ rowIds: generateSelectedRowIds(event.selectedRows) })\n *\n * // 等价于 api.getIndexFocusedRowIds()(索引 focus 已在 Grid 内封装)\n * generateSelectedRowIds(api.getIndexFocusedRows())\n * ```\n */\nexport function generateSelectedRowIds(\n rows: SelectedRowSnapshot | readonly SelectedRowSnapshot[],\n options: RowListOptions = {},\n): RowId[] {\n const mode = options.mode ?? 'all'\n const filtered = filterSnapshotsByMode(normalizeSnapshots(rows), mode)\n return projectRowIdsFromSnapshots(filtered)\n}\n\n/** @internal `getIndexFocusedRows` 实现 */\nexport function buildIndexFocusRowSnapshots(\n internalIds: readonly string[],\n ctx: BusinessRowIdContext,\n options: RowListOptions = {},\n): SelectedRowSnapshot[] {\n return filterSnapshotsByMode(\n buildSelectedRowSnapshots(internalIds, ctx),\n options.mode ?? 'all',\n )\n}\n","import { isIndexColumn } from '@core/types/indexColumn'\r\nimport { isSelectionColumn } from '@core/types/selectionColumn'\r\nimport { isBuiltInCellEditor } from '@core/types/cellEditor'\r\n\r\n/** 单元格编辑器呈现模式:overlay 进入编辑态;inline 常驻格内 */\r\nexport type CellEditorMode = 'overlay' | 'inline'\r\n\r\n/** 缺省 overlay,与 Phase 3 行为一致 */\r\nexport const DEFAULT_CELL_EDITOR_MODE: CellEditorMode = 'overlay'\r\n\r\n/** 解析列级 cellEditorMode;缺省 overlay */\r\nexport function resolveCellEditorMode(mode?: CellEditorMode): CellEditorMode {\r\n if (mode === 'inline') {\r\n return 'inline'\r\n }\r\n return DEFAULT_CELL_EDITOR_MODE\r\n}\r\n\r\n/** 系统列强制 overlay;用户列解析 cellEditorMode */\r\nexport function resolveColumnCellEditorMode(\r\n colId: string,\r\n mode?: CellEditorMode,\r\n): CellEditorMode {\r\n if (isIndexColumn(colId) || isSelectionColumn(colId)) {\r\n return DEFAULT_CELL_EDITOR_MODE\r\n }\r\n return resolveCellEditorMode(mode)\r\n}\r\n\r\n/** 是否为 inline 常驻编辑器列(须配置 cellEditor;系统列恒 false) */\r\nexport function isInlineEditorColumn(column: {\r\n colId: string\r\n cellEditorMode?: CellEditorMode\r\n cellEditor?: unknown\r\n}): boolean {\r\n if (isIndexColumn(column.colId) || isSelectionColumn(column.colId)) {\r\n return false\r\n }\r\n\r\n if (resolveCellEditorMode(column.cellEditorMode) !== 'inline') {\r\n return false\r\n }\r\n\r\n return column.cellEditor != null\r\n}\r\n\r\n/** 开发模式:inline 误配告警 */\r\nexport function warnIfInlineEditorMisconfigured(\r\n colId: string,\r\n options: {\r\n cellEditorMode?: CellEditorMode\r\n cellEditor?: unknown\r\n },\r\n): void {\r\n if (!import.meta.env.DEV) {\r\n return\r\n }\r\n\r\n const isSystem = isIndexColumn(colId) || isSelectionColumn(colId)\r\n\r\n if (isSystem && options.cellEditorMode === 'inline') {\r\n console.warn(\r\n `[magic-grid] Column \"${colId}\" is a system column and cannot use cellEditorMode: 'inline'. ` +\r\n 'Inline editors apply to user data columns only.',\r\n )\r\n return\r\n }\r\n\r\n if (options.cellEditorMode === 'inline' && options.cellEditor == null) {\r\n console.warn(\r\n `[magic-grid] Column \"${colId}\" has cellEditorMode: 'inline' but no cellEditor. ` +\r\n 'Configure cellEditor (e.g. \"checkbox\") or remove inline mode.',\r\n )\r\n }\r\n}\r\n\r\nconst INLINE_NATIVE_EDITORS = new Set(['text', 'number', 'checkbox', 'switch'])\r\n\r\n/** 开发模式:inline 列使用可能依赖 overlay/teleport 的编辑器时告警 */\r\nexport function warnIfInlineOverlayEditor(\r\n colId: string,\r\n options: {\r\n cellEditorMode?: CellEditorMode\r\n cellEditor?: unknown\r\n },\r\n): void {\r\n if (!import.meta.env.DEV || options.cellEditorMode !== 'inline') {\r\n return\r\n }\r\n\r\n const editor = options.cellEditor\r\n if (editor == null) {\r\n return\r\n }\r\n\r\n if (typeof editor === 'function') {\r\n console.warn(\r\n `[magic-grid] Column \"${colId}\" uses cellEditorMode: 'inline' with a custom editor function. ` +\r\n 'Inline editors must not use overlay/teleport; prefer checkbox, switch, text, or number.',\r\n )\r\n return\r\n }\r\n\r\n if (typeof editor === 'string' && !INLINE_NATIVE_EDITORS.has(editor) && !isBuiltInCellEditor(editor)) {\r\n console.warn(\r\n `[magic-grid] Column \"${colId}\" uses cellEditorMode: 'inline' with editor \"${editor}\" ` +\r\n 'which may require an overlay surface. Prefer \"checkbox\", \"switch\", \"text\", or \"number\" for inline columns.',\r\n )\r\n }\r\n}\r\n","/**\n * Cell Editor Cache — 类型与纯函数(Phase 42 / M35)\n *\n * 职责:Grid/列 opt-in 开关解析、存储键规则、是否向 overlay 列注入 API。\n * 可变状态与 LRU 在 {@link CellEditorCacheService}(`cellEditorCacheService.ts`)。\n *\n * 存储键:`${rowPart}::${colId}::${resolvedKey}`\n * - rowPart:业务 rowId 字符串;transient 行为 `\\0${internalRowId}`\n * - resolvedKey:消费方 key + 可选列级 namespace 前缀\n */\nimport type { BusinessRowId } from '@core/types/businessRowId'\nimport type { CellEditorMode } from '@core/types/cellEditorMode'\nimport { isInlineEditorColumn } from '@core/types/cellEditorMode'\n\n/** 消费方未传 key 且列无 string namespace 时的默认 slot */\nexport const DEFAULT_CELL_EDITOR_CACHE_KEY = 'default'\n\n/** 列级 flag:`true` 启用 · `string` 固定 namespace · `false` 全局开启时 opt-out */\nexport type CellEditorCacheColumnFlag = boolean | string\n\n/** Grid 级配置(MagicGrid `enableCellEditorCache` / `cellEditorCacheMaxEntries`) */\nexport interface CellEditorCacheGridOptions {\n /**\n * 为所有 overlay 列注入 get/set/clear API。\n * 默认 false(零开销);列级 `cellEditorCache: false` 可显式 opt-out。\n */\n enableCellEditorCache?: boolean\n\n /**\n * 会话 cache 最大 **cell bucket** 数 `(rowId,colId)`;超出 LRU 淘汰。\n * 默认不限。\n */\n cellEditorCacheMaxEntries?: number\n}\n\nexport interface ResolvedCellEditorCacheGridOptions {\n enableCellEditorCache: boolean\n cellEditorCacheMaxEntries: number | undefined\n}\n\nexport function resolveCellEditorCacheGridOptions(\n options: CellEditorCacheGridOptions = {},\n): ResolvedCellEditorCacheGridOptions {\n const maxEntries = options.cellEditorCacheMaxEntries\n return {\n enableCellEditorCache: options.enableCellEditorCache ?? false,\n cellEditorCacheMaxEntries:\n maxEntries != null && Number.isFinite(maxEntries) && maxEntries > 0\n ? Math.floor(maxEntries)\n : undefined,\n }\n}\n\n/**\n * 存储键 rowId 段。\n * transient 行业务 id 为 null,须传 internalRowId 以免多行新增互相覆盖。\n */\nexport function buildCellEditorCacheRowPart(\n rowId: BusinessRowId,\n internalRowId?: string,\n): string {\n if (rowId !== null) {\n return String(rowId)\n }\n if (internalRowId) {\n return `\\0${internalRowId}`\n }\n return '\\0transient'\n}\n\n/** 完整 Map 键:`rowPart::colId::key` */\nexport function buildCellEditorCacheStorageKey(\n rowId: BusinessRowId,\n colId: string,\n key: string = DEFAULT_CELL_EDITOR_CACHE_KEY,\n options?: { internalRowId?: string },\n): string {\n const rowPart = buildCellEditorCacheRowPart(rowId, options?.internalRowId)\n return `${rowPart}::${colId}::${key}`\n}\n\n/** LRU 粒度:同一格 `(rowId,colId)` 下所有 namespace key 共用一个 bucket */\nexport function buildCellEditorCacheBucketKey(\n rowId: BusinessRowId,\n colId: string,\n options?: { internalRowId?: string },\n): string {\n const rowPart = buildCellEditorCacheRowPart(rowId, options?.internalRowId)\n return `${rowPart}::${colId}`\n}\n\nexport interface ResolveCellEditorCacheKeyOptions {\n userKey?: string\n columnCellEditorCache?: CellEditorCacheColumnFlag\n}\n\n/**\n * 消费方 key → 存储层 key。\n * 列级 `cellEditorCache: 'part'` 时:`getCellCache()` → `part`;`getCellCache('options')` → `part::options`。\n */\nexport function resolveCellEditorCacheKey(\n options: ResolveCellEditorCacheKeyOptions = {},\n): string {\n const { userKey, columnCellEditorCache } = options\n const namespace =\n typeof columnCellEditorCache === 'string' ? columnCellEditorCache : undefined\n\n if (userKey != null && userKey !== '') {\n return namespace ? `${namespace}::${userKey}` : userKey\n }\n\n if (namespace) {\n return namespace\n }\n\n return DEFAULT_CELL_EDITOR_CACHE_KEY\n}\n\nexport interface ShouldInjectCellEditorCacheApiOptions {\n enableCellEditorCache: boolean\n colId: string\n cellEditorMode?: CellEditorMode\n cellEditor?: unknown\n columnCellEditorCache?: CellEditorCacheColumnFlag\n}\n\n/** inline 列、列级 false、或未开启全局开关 → 不注入(CellEditorParams 上无 cache 方法) */\nexport function shouldInjectCellEditorCacheApi(\n options: ShouldInjectCellEditorCacheApiOptions,\n): boolean {\n if (\n isInlineEditorColumn({\n colId: options.colId,\n cellEditorMode: options.cellEditorMode,\n cellEditor: options.cellEditor,\n })\n ) {\n return false\n }\n\n if (options.columnCellEditorCache === false) {\n return false\n }\n\n if (\n options.columnCellEditorCache === true ||\n typeof options.columnCellEditorCache === 'string'\n ) {\n return true\n }\n\n return options.enableCellEditorCache\n}\n","import type { RowDragCommitContext, RowHierarchyChange } from '@core/types/rowDrag'\n\n/** {@link getRowDragCommitHierarchy} 过滤模式 */\nexport type GetRowDragCommitHierarchyOption = 'default' | 'noLevel'\n\nfunction hasParentOrSiblingChange(change: RowHierarchyChange): boolean {\n return (\n change.previousParentRowId !== change.parentRowId ||\n change.previousSiblingIndex !== change.siblingIndex\n )\n}\n\n/**\n * 从 deferred row drag commit 上下文中提取树形层级变更列表。\n *\n * - `default`:返回 `context.hierarchyChanges` 的浅拷贝(含 `treeLevel` 及仅 level 变化的项)。\n * - `noLevel`:仅保留 **parentRowId 或 siblingIndex** 相对变更前发生变化的项,\n * 排除「parent / sibling 均未变、仅 treeLevel 不同」的条目。\n *\n * 对接后端 `parentId` + `order` 持久化时,通常使用 `noLevel`。\n *\n * @example\n * ```ts\n * import { getRowDragCommitHierarchy } from '@taocompany/magic-grid'\n *\n * const toPersist = getRowDragCommitHierarchy(context, 'noLevel')\n * for (const item of toPersist) {\n * await api.update({ id: item.rowId, parentId: item.parentRowId, order: item.siblingIndex })\n * }\n * ```\n */\nexport function getRowDragCommitHierarchy(\n context: RowDragCommitContext,\n option: GetRowDragCommitHierarchyOption = 'default',\n): RowHierarchyChange[] {\n const changes = context.hierarchyChanges ?? []\n\n if (option === 'default') {\n return [...changes]\n }\n\n return changes.filter(hasParentOrSiblingChange)\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getRowDragCommitHierarchy-VyTB8COC.js","names":[],"sources":["../src/core/types/indexColumn.ts","../src/core/types/rowSelectionOptions.ts","../src/core/types/selectionColumn.ts","../src/core/rowModel/transientRowId.ts","../src/core/types/businessRowId.ts","../src/core/rowModel/rowDataExport.ts","../src/core/types/selectedRowSnapshot.ts","../src/core/types/cellEditorMode.ts","../src/core/types/cellEditorCache.ts","../src/core/row/getRowDragCommitHierarchy.ts"],"sourcesContent":["import type { ColumnDef } from '@types'\r\nimport type { GridHorizontalAlign, GridVerticalAlign } from '@core/types/align'\r\n\r\n/** 系统索引列 colId;用户 columns 不得占用 */\r\nexport const INDEX_COLUMN_ID = '__index__'\r\n\r\n/** 索引列最小(默认)宽度 px */\r\nexport const INDEX_COLUMN_MIN_WIDTH = 40\r\n\r\n/** 索引列默认起始序号(1-based 展示 = rowIndex + start) */\r\nexport const DEFAULT_INDEX_COLUMN_START = 1\r\n\r\n/** 索引列配置 */\r\nexport interface IndexColumnOptions {\r\n /** 表头文案;默认空字符串 */\r\n label?: string\r\n /** 列宽 px;默认 40;小于 40 时钳制为 40 */\r\n width?: number\r\n /** 起始序号(1-based 展示 = rowIndex + start);默认 1 */\r\n start?: number\r\n /**\r\n * 辅助定位模式:single / multiple(multiple 支持 Ctrl/Shift/拖拉范围)\r\n * 默认 multiple(Excel 行号式交互)\r\n */\r\n focusMode?: 'single' | 'multiple'\r\n /**\r\n * 索引列定位是否单向同步到行选择列(业务选中);core 默认 false,MagicGrid 组件层默认 true。\r\n * 仅当 indexColumn.focusMode 与 rowSelection 同为 single 或同为 multiple 时生效。\r\n * 用户在索引列上操作(点击/拖选/再次点击取消)或 API `setIndexFocus`(`mode: 'default'`)时同步;\r\n * 点击其他区域清除索引定位、行删除 / rowId 迁移等不同步行选择列。\r\n */\r\n syncToSelectionColumn?: boolean\r\n /** 表头水平对齐;默认 center */\r\n headerAlign?: GridHorizontalAlign\r\n /** 表头垂直对齐;默认 center */\r\n headerValign?: GridVerticalAlign\r\n /** 表体水平对齐;默认 center */\r\n align?: GridHorizontalAlign\r\n /** 表体垂直对齐;默认 center */\r\n valign?: GridVerticalAlign\r\n /** footer 水平对齐;默认 center */\r\n footerAlign?: GridHorizontalAlign\r\n /** footer 垂直对齐;默认 center */\r\n footerValign?: GridVerticalAlign\r\n /**\r\n * 自定义序号展示;入参为 rowsToDisplay 下标。\r\n * 缺省:(rowIndex) => String(rowIndex + start)\r\n */\r\n index?: (rowIndex: number) => number | string\r\n /**\r\n * 在索引列 cell 内显示行拖拽把柄;默认 false。\r\n * 需配合 Grid `rowDragManaged` 或监听 `rowDragEnd` 自行改序。\r\n */\r\n showRowDragHandle?: boolean\r\n /**\r\n * 索引列底边可拖拽调整行高;默认 false。\r\n * 对标 AG Grid Row Numbers `enableRowResizer`。\r\n */\r\n enableRowResizer?: boolean\r\n}\r\n\r\n/** Grid 级索引列开关与配置(块 0 类型;块 1+ 消费) */\r\nexport interface IndexColumnGridOptions {\r\n /** 是否显示最左侧索引列;默认 false */\r\n showIndexColumn?: boolean\r\n /** 索引列配置;showIndexColumn=true 时生效 */\r\n indexColumn?: IndexColumnOptions\r\n}\r\n\r\nexport interface ResolvedIndexColumnOptions {\r\n label: string\r\n width: number\r\n start: number\r\n focusMode: 'single' | 'multiple'\r\n syncToSelectionColumn: boolean\r\n showRowDragHandle: boolean\r\n enableRowResizer: boolean\r\n headerAlign: GridHorizontalAlign\r\n headerValign: GridVerticalAlign\r\n align: GridHorizontalAlign\r\n valign: GridVerticalAlign\r\n footerAlign: GridHorizontalAlign\r\n footerValign: GridVerticalAlign\r\n index?: (rowIndex: number) => number | string\r\n}\r\n\r\nexport interface ResolvedIndexColumnGridOptions {\r\n showIndexColumn: boolean\r\n indexColumn: ResolvedIndexColumnOptions\r\n}\r\n\r\nexport function resolveIndexColumnWidth(width?: number): number {\r\n return Math.max(INDEX_COLUMN_MIN_WIDTH, width ?? INDEX_COLUMN_MIN_WIDTH)\r\n}\r\n\r\nexport function resolveIndexColumnOptions(\r\n options: IndexColumnOptions = {},\r\n): ResolvedIndexColumnOptions {\r\n return {\r\n label: options.label ?? '',\r\n width: resolveIndexColumnWidth(options.width),\r\n start: options.start ?? DEFAULT_INDEX_COLUMN_START,\r\n focusMode: options.focusMode === 'single' ? 'single' : 'multiple',\r\n syncToSelectionColumn: options.syncToSelectionColumn ?? false,\r\n showRowDragHandle: options.showRowDragHandle ?? false,\r\n enableRowResizer: options.enableRowResizer ?? false,\r\n headerAlign: options.headerAlign ?? 'center',\r\n headerValign: options.headerValign ?? 'center',\r\n align: options.align ?? 'center',\r\n valign: options.valign ?? 'center',\r\n footerAlign: options.footerAlign ?? 'center',\r\n footerValign: options.footerValign ?? 'center',\r\n index: options.index,\r\n }\r\n}\r\n\r\nexport function resolveIndexColumnGridOptions(\r\n options: IndexColumnGridOptions = {},\r\n): ResolvedIndexColumnGridOptions {\r\n return {\r\n showIndexColumn: options.showIndexColumn ?? false,\r\n indexColumn: resolveIndexColumnOptions(options.indexColumn),\r\n }\r\n}\r\n\r\nexport function isIndexColumn(colId: string): boolean {\r\n return colId === INDEX_COLUMN_ID\r\n}\r\n\r\n/** `setIndexFocus` 同步策略:default 跟随 grid 配置;manual 由调用方显式控制 */\r\nexport type SetIndexFocusMode = 'default' | 'manual'\r\n\r\n/** `GridApi.setIndexFocus` 可选参数 */\r\nexport interface SetIndexFocusOptions {\r\n /**\r\n * - `default`(默认):与用户点击索引列一致,按 `indexColumn.syncToSelectionColumn` 决定是否同步\r\n * - `manual`:由 `syncToSelectionColumn` 显式控制,可覆盖 grid 配置\r\n */\r\n mode?: SetIndexFocusMode\r\n /** `mode: 'manual'` 时生效;省略时视为 `false` */\r\n syncToSelectionColumn?: boolean\r\n}\r\n\r\nexport function resolveColumnDefColId(column: ColumnDef, index: number): string {\r\n return column.key ?? column.prop ?? `col_${index}`\r\n}\r\n\r\n/** 开发模式:用户 columns 占用系统索引列 colId 时告警 */\r\nexport function warnIfUserColumnsConflictWithIndexColumn(\r\n columns: readonly ColumnDef[],\r\n): void {\r\n if (!import.meta.env.DEV) {\r\n return\r\n }\r\n\r\n columns.forEach((column, index) => {\r\n const colId = resolveColumnDefColId(column, index)\r\n if (colId === INDEX_COLUMN_ID || column.key === INDEX_COLUMN_ID) {\r\n console.warn(\r\n `[magic-grid] Column \"${INDEX_COLUMN_ID}\" is reserved for the system index column. ` +\r\n 'Remove it from your columns definition or use showIndexColumn instead.',\r\n )\r\n }\r\n })\r\n}\r\n","export type RowSelectionMode = 'single' | 'multiple'\n\n/** 行选择配置(Phase 19 · groupSelectsChildren) */\nexport interface RowSelectionConfig {\n mode: RowSelectionMode\n /**\n * tree 模式下选中父节点是否级联选中子孙。默认 `true`。\n * 对标 AG Grid rowSelection.groupSelectsChildren。\n */\n groupSelectsChildren?: boolean\n}\n\nexport type RowSelectionInput =\n | RowSelectionMode\n | false\n | RowSelectionConfig\n\nexport interface ResolvedRowSelectionOptions {\n mode: RowSelectionMode | false\n groupSelectsChildren: boolean\n}\n\nexport function normalizeRowSelectionInput(\n input: RowSelectionInput | undefined,\n): ResolvedRowSelectionOptions {\n if (input === false) {\n return { mode: false, groupSelectsChildren: true }\n }\n\n if (input == null) {\n return { mode: 'single', groupSelectsChildren: true }\n }\n\n if (typeof input === 'string') {\n return {\n mode: input === 'multiple' ? 'multiple' : 'single',\n groupSelectsChildren: true,\n }\n }\n\n return {\n mode: input.mode === 'multiple' ? 'multiple' : 'single',\n groupSelectsChildren: input.groupSelectsChildren ?? true,\n }\n}\n\nexport function normalizeRowSelectionMode(\n resolved: ResolvedRowSelectionOptions,\n): RowSelectionMode | false {\n return resolved.mode\n}\n","import type { RowSelectionMode } from '@core/selection/selectionService'\r\nimport {\r\n normalizeRowSelectionInput,\r\n type RowSelectionInput,\r\n} from '@core/types/rowSelectionOptions'\r\n\r\nimport { resolveColumnDefColId } from './indexColumn'\r\nimport type { GridHorizontalAlign, GridVerticalAlign } from '@core/types/align'\r\nimport type { ColumnDef } from '@types'\r\n\r\n/** 系统行选择列 colId;用户 columns 不得占用 */\r\nexport const SELECTION_COLUMN_ID = '__select__'\r\n\r\n/** 行选择列最小宽度 px */\r\nexport const SELECTION_COLUMN_MIN_WIDTH = 40\r\n\r\n/** 行选择列默认宽度 px */\r\nexport const SELECTION_COLUMN_DEFAULT_WIDTH = 40\r\n\r\n/** 表头全选 checkbox 默认 aria-label */\r\nexport const DEFAULT_SELECTION_SELECT_ALL_LABEL = '全选'\r\n\r\n/** 行选择列配置 */\r\nexport interface SelectionColumnOptions {\r\n /** 列宽 px;默认 40;小于 40 时钳制为 40 */\r\n width?: number\r\n /** 表头全选 checkbox 的 aria-label;默认「全选」 */\r\n selectAllLabel?: string\r\n /** 行 checkbox 的 aria-label 工厂 */\r\n rowLabel?: (rowIndex: number) => string\r\n /** 表头水平对齐;默认 center */\r\n headerAlign?: GridHorizontalAlign\r\n /** 表头垂直对齐;默认 center */\r\n headerValign?: GridVerticalAlign\r\n /** 表体水平对齐;默认 center */\r\n align?: GridHorizontalAlign\r\n /** 表体垂直对齐;默认 center */\r\n valign?: GridVerticalAlign\r\n /** footer 水平对齐;默认 center */\r\n footerAlign?: GridHorizontalAlign\r\n /** footer 垂直对齐;默认 center */\r\n footerValign?: GridVerticalAlign\r\n}\r\n\r\n/** Grid 级行选择列配置(块 0 类型;块 1+ 消费) */\r\nexport interface SelectionColumnGridOptions {\r\n /** 行选择列配置;rowSelection !== false 时生效 */\r\n selectionColumn?: SelectionColumnOptions\r\n}\r\n\r\nexport interface ResolvedSelectionColumnOptions {\r\n width: number\r\n selectAllLabel: string\r\n rowLabel?: (rowIndex: number) => string\r\n headerAlign: GridHorizontalAlign\r\n headerValign: GridVerticalAlign\r\n align: GridHorizontalAlign\r\n valign: GridVerticalAlign\r\n footerAlign: GridHorizontalAlign\r\n footerValign: GridVerticalAlign\r\n}\r\n\r\nexport interface ResolvedSelectionColumnGridOptions {\r\n /** rowSelection !== false */\r\n enabled: boolean\r\n /** 行选模式;enabled=false 时为占位 single */\r\n mode: RowSelectionMode\r\n selectionColumn: ResolvedSelectionColumnOptions\r\n}\r\n\r\nexport function resolveSelectionColumnWidth(width?: number): number {\r\n return Math.max(SELECTION_COLUMN_MIN_WIDTH, width ?? SELECTION_COLUMN_DEFAULT_WIDTH)\r\n}\r\n\r\nexport function resolveSelectionColumnOptions(\r\n options: SelectionColumnOptions = {},\r\n): ResolvedSelectionColumnOptions {\r\n return {\r\n width: resolveSelectionColumnWidth(options.width),\r\n selectAllLabel: options.selectAllLabel ?? DEFAULT_SELECTION_SELECT_ALL_LABEL,\r\n rowLabel: options.rowLabel,\r\n headerAlign: options.headerAlign ?? 'center',\r\n headerValign: options.headerValign ?? 'center',\r\n align: options.align ?? 'center',\r\n valign: options.valign ?? 'center',\r\n footerAlign: options.footerAlign ?? 'center',\r\n footerValign: options.footerValign ?? 'center',\r\n }\r\n}\r\n\r\nexport function resolveSelectionColumnGridOptions(\r\n options: {\r\n rowSelection?: RowSelectionInput\r\n selectionColumn?: SelectionColumnOptions\r\n } = {},\r\n): ResolvedSelectionColumnGridOptions {\r\n // Grid 直建时缺省 rowSelection 仍不注入行选择列;MagicGrid 默认传 'single'。\r\n if (options.rowSelection == null) {\r\n return {\r\n enabled: false,\r\n mode: 'single',\r\n selectionColumn: resolveSelectionColumnOptions(options.selectionColumn),\r\n }\r\n }\r\n\r\n const resolved = normalizeRowSelectionInput(options.rowSelection)\r\n const enabled = resolved.mode !== false\r\n\r\n return {\r\n enabled,\r\n mode: enabled && resolved.mode !== false ? resolved.mode : 'single',\r\n selectionColumn: resolveSelectionColumnOptions(options.selectionColumn),\r\n }\r\n}\r\n\r\nexport function isSelectionColumn(colId: string): boolean {\r\n return colId === SELECTION_COLUMN_ID\r\n}\r\n\r\n/** 开发模式:用户 columns 占用系统行选择列 colId 时告警 */\r\nexport function warnIfUserColumnsConflictWithSelectionColumn(\r\n columns: readonly ColumnDef[],\r\n): void {\r\n if (!import.meta.env.DEV) {\r\n return\r\n }\r\n\r\n columns.forEach((column, index) => {\r\n const colId = resolveColumnDefColId(column, index)\r\n if (colId === SELECTION_COLUMN_ID || column.key === SELECTION_COLUMN_ID) {\r\n console.warn(\r\n `[magic-grid] Column \"${SELECTION_COLUMN_ID}\" is reserved for the system row selection column. ` +\r\n 'Remove it from your columns definition; use rowSelection instead.',\r\n )\r\n }\r\n })\r\n}\r\n","/**\n * 临时行(尚未分配业务主键的新增行)的内部 id 生成与识别。\n *\n * - **格式**:`__MG_TMP__::<uuid>`(例:`__MG_TMP__::550e8400-e29b-41d4-a716-446655440000`)\n * - **写入位置**:仅 `RowNode.id`;**不会**写入 `data[rowKey]`\n * - **对外暴露**:`getData()`、`selectedRowIds`、多数事件的 `rowId` 对临时行投影为 `null`\n * - **消费端获取内部 id**:`addRows` 返回的 `RowNode.id`、`getSelectedRows()` 的 `internalRowId`\n */\n/** 新增行内部临时 ID 前缀(不对用户 data[rowKey] 暴露) */\nexport const TRANSIENT_ROW_ID_PREFIX = '__MG_TMP__::' as const\n\nlet transientRowIdCounter = 0\n\nfunction createFallbackUuid(): string {\n transientRowIdCounter += 1\n return `${Date.now().toString(36)}_${transientRowIdCounter.toString(36)}`\n}\n\n/** 生成表格内部使用的临时 rowId */\nexport function createTransientRowId(): string {\n const uuid =\n typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function'\n ? crypto.randomUUID()\n : createFallbackUuid()\n\n return `${TRANSIENT_ROW_ID_PREFIX}${uuid}`\n}\n\n/** 判断 id 是否为内部临时 rowId */\nexport function isTransientRowId(id: string): boolean {\n return id.startsWith(TRANSIENT_ROW_ID_PREFIX)\n}\n\n/** 业务 rowKey 是否为空(视为尚未分配持久化主键) */\nexport function isMissingBusinessRowKey(value: unknown): boolean {\n return value === null || value === undefined || value === ''\n}\n","import { isTransientRowId } from '@core/rowModel/transientRowId'\nimport type { RowData } from '@types'\nimport type { RowNode } from '@core/types/rowNode'\nimport type { RowId } from '@core/types/rowId'\n\n/** 对外 API / 事件 rowId:与用户 data[rowKey] 同型;临时行无业务主键时为 null */\nexport type BusinessRowId = RowId | null\n\nexport interface BusinessRowIdContext {\n rowKey: string\n getRowById: (internalId: string) => RowNode | undefined\n}\n\n/** 无用户业务主键的合成行(分组头、detail 等) */\nexport function isSyntheticRow(rowNode: RowNode): boolean {\n if (rowNode.group) {\n return true\n }\n\n const kind = rowNode.rowKind\n return kind === 'detail' || kind === 'groupHeader' || kind === 'groupFooter'\n}\n\n/** RowNode → 业务 rowId */\nexport function toBusinessRowId(rowNode: RowNode, rowKey: string): BusinessRowId {\n if (rowNode.isTransient) {\n return null\n }\n\n const raw = rowNode.data[rowKey]\n if (!isSyntheticRow(rowNode) && (typeof raw === 'number' || typeof raw === 'string')) {\n return raw\n }\n\n return rowNode.id\n}\n\n/** 从导出的 row.data 快照解析业务 rowId(rowsRemoved 等行已不在模型中时) */\nexport function toBusinessRowIdFromExportedData(\n data: RowData,\n rowKey: string,\n internalId: string,\n options?: { isTransient?: boolean },\n): BusinessRowId {\n if (options?.isTransient || isTransientRowId(internalId)) {\n return null\n }\n\n const raw = data[rowKey]\n if (typeof raw === 'number' || typeof raw === 'string') {\n return raw\n }\n\n return internalId\n}\n\n/** 内核 rowId → 业务 rowId */\nexport function toBusinessRowIdFromInternal(\n internalId: string,\n ctx: BusinessRowIdContext,\n): BusinessRowId {\n if (isTransientRowId(internalId)) {\n return null\n }\n\n const rowNode = ctx.getRowById(internalId)\n if (rowNode) {\n return toBusinessRowId(rowNode, ctx.rowKey)\n }\n\n return internalId\n}\n\nexport function toBusinessRowIdsFromInternal(\n internalIds: readonly string[],\n ctx: BusinessRowIdContext,\n): BusinessRowId[] {\n return internalIds.map((id) => toBusinessRowIdFromInternal(id, ctx))\n}\n\nexport function createBusinessRowIdResolver(ctx: BusinessRowIdContext) {\n return {\n fromNode: (rowNode: RowNode) => toBusinessRowId(rowNode, ctx.rowKey),\n fromInternal: (internalId: string) => toBusinessRowIdFromInternal(internalId, ctx),\n fromInternalList: (internalIds: readonly string[]) =>\n toBusinessRowIdsFromInternal(internalIds, ctx),\n }\n}\n\nexport function projectValidationResult(\n result: import('@core/types/validation').GridValidationResult,\n ctx: BusinessRowIdContext,\n): import('@core/types/validation').GridValidationResult {\n const resolve = createBusinessRowIdResolver(ctx)\n return {\n ...result,\n cellErrors: result.cellErrors.map((error) => ({\n ...error,\n rowId: resolve.fromInternal(String(error.rowId)),\n })),\n }\n}\n","import type { RowNode } from '@core/types'\nimport type { RowData } from '@types'\n\n/** 将 RowNode 转为对外导出的行数据(浅拷贝) */\nexport function toUserRowData(rowNode: RowNode, rowKey: string): RowData {\n const exported: RowData = { ...rowNode.data }\n\n if (rowNode.isTransient) {\n exported[rowKey] = null\n }\n\n return exported\n}\n\n/** 批量导出 RowNode 数组为用户行数据 */\nexport function exportRowData(rows: readonly RowNode[], rowKey: string): RowData[] {\n return rows.map((row) => toUserRowData(row, rowKey))\n}\n","/**\n * 行「双 ID」投影:快照构建与 id 列表工具。\n *\n * ## 双 ID 速查\n *\n * | | 持久化行 | 临时行(`id` 为 null / 省略) |\n * |---|---------|---------------------------|\n * | 业务 id `rowId` | `data[rowKey]` | 恒 `null` |\n * | 内核 id `internalRowId` | ≈ `String(rowId)` | `__MG_TMP__::*` |\n *\n * ## 消费端 API 对照(索引 focus)\n *\n * | 目的 | 用法 |\n * |------|------|\n * | 展示 focus 行(含 `data`) | `api.getIndexFocusedRows()` |\n * | 传给 `moveRows`(含临时行) | `api.getIndexFocusedRowIds()` |\n * | 监听 focus 变化(仅展示) | `@index-focus-changed` → `focusedRowIds`(临时行 `null`) |\n *\n * ## 消费端 API 对照(checkbox 选中)\n *\n * | 目的 | 用法 |\n * |------|------|\n * | 读选中行快照 | `api.getSelectedRows()` / `event.selectedRows` |\n * | 传给 `removeRows` | `generateSelectedRowIds(rows)` 或 `api.removeSelectedRows()` |\n *\n * **`indexFocusChanged.focusedRowIds` 与 `getSelectedRowIds()` 同为业务投影**,\n * 不可直接传给 `moveRows` / `removeRows`(临时行会丢失定位)。\n */\nimport { toUserRowData } from '@core/rowModel/rowDataExport'\nimport { isTransientRowId } from '@core/rowModel/transientRowId'\nimport type { RowData } from '@types'\n\nimport {\n createBusinessRowIdResolver,\n type BusinessRowId,\n type BusinessRowIdContext,\n} from './businessRowId'\nimport type { RowId } from './rowId'\n\n/**\n * 行列表过滤模式——`getIndexFocusedRowIds`、`getIndexFocusedRows`、\n * `generateSelectedRowIds` 共用。\n */\nexport type RowListMode = 'all' | 'business' | 'temp'\n\n/** {@link RowListMode} 的入参包装 */\nexport interface RowListOptions {\n /**\n * - `'all'`(默认):持久化行 + 临时行\n * - `'business'`:仅已有业务主键的行\n * - `'temp'`:仅临时行\n */\n mode?: RowListMode\n}\n\n/** @see RowListOptions — 与索引 focus API 共用同一 options 形状 */\nexport type GenerateSelectedRowIdsOptions = RowListOptions\n\n/** @see RowListMode */\nexport type GenerateSelectedRowIdsMode = RowListMode\n\n/** 行快照:checkbox 选中(`getSelectedRows`)与索引 focus(`getIndexFocusedRows`)共用结构 */\nexport interface SelectedRowSnapshot<TData = RowData> {\n /** 业务主键;临时行恒 `null` */\n rowId: BusinessRowId\n /** 内核 rowId;临时行为 `__MG_TMP__::*`,传给 `moveRows` / `removeRows` / `promoteRowId` 时使用 */\n internalRowId: string\n isTransient: boolean\n rowIndex: number\n /** 与 `getData()` 导出规则一致 */\n data: TData\n}\n\n/** @internal checkbox 选中 & 索引 focus 共用:internal id → 快照 */\nexport function buildSelectedRowSnapshots(\n internalIds: readonly string[],\n ctx: BusinessRowIdContext,\n): SelectedRowSnapshot[] {\n const resolve = createBusinessRowIdResolver(ctx)\n const snapshots: SelectedRowSnapshot[] = []\n\n for (const internalRowId of internalIds) {\n const rowNode = ctx.getRowById(internalRowId)\n if (!rowNode) {\n continue\n }\n\n snapshots.push({\n rowId: resolve.fromNode(rowNode),\n internalRowId,\n isTransient: rowNode.isTransient === true || isTransientRowId(internalRowId),\n rowIndex: rowNode.rowIndex,\n data: toUserRowData(rowNode, ctx.rowKey),\n })\n }\n\n return snapshots\n}\n\nfunction isSnapshotArray(\n rows: SelectedRowSnapshot | readonly SelectedRowSnapshot[],\n): rows is readonly SelectedRowSnapshot[] {\n return Array.isArray(rows)\n}\n\nfunction normalizeSnapshots(\n rows: SelectedRowSnapshot | readonly SelectedRowSnapshot[],\n): readonly SelectedRowSnapshot[] {\n if (isSnapshotArray(rows)) {\n return rows\n }\n\n const singleRow: SelectedRowSnapshot = rows\n return [singleRow]\n}\n\nfunction isUsableBusinessRowId(rowId: BusinessRowId): rowId is RowId {\n return rowId !== null\n}\n\nfunction filterSnapshotsByMode(\n rows: readonly SelectedRowSnapshot[],\n mode: RowListMode,\n): SelectedRowSnapshot[] {\n if (mode === 'all') {\n return [...rows]\n }\n\n if (mode === 'business') {\n return rows.filter((row) => !row.isTransient && isUsableBusinessRowId(row.rowId))\n }\n\n return rows.filter((row) => row.isTransient)\n}\n\n/** 持久化行 → 业务 id;临时行 → internalRowId */\nfunction projectRowIdsFromSnapshots(rows: readonly SelectedRowSnapshot[]): RowId[] {\n const result: RowId[] = []\n\n for (const row of rows) {\n if (row.isTransient) {\n result.push(row.internalRowId)\n continue\n }\n\n if (isUsableBusinessRowId(row.rowId)) {\n result.push(row.rowId)\n }\n }\n\n return result\n}\n\n/**\n * 从行快照生成 `removeRows` / `moveRows` 可用的 id 列表。\n *\n * @example\n * ```ts\n * // checkbox 删除\n * await api.removeRows({ rowIds: generateSelectedRowIds(event.selectedRows) })\n *\n * // 等价于 api.getIndexFocusedRowIds()(索引 focus 已在 Grid 内封装)\n * generateSelectedRowIds(api.getIndexFocusedRows())\n * ```\n */\nexport function generateSelectedRowIds(\n rows: SelectedRowSnapshot | readonly SelectedRowSnapshot[],\n options: RowListOptions = {},\n): RowId[] {\n const mode = options.mode ?? 'all'\n const filtered = filterSnapshotsByMode(normalizeSnapshots(rows), mode)\n return projectRowIdsFromSnapshots(filtered)\n}\n\n/** @internal `getIndexFocusedRows` 实现 */\nexport function buildIndexFocusRowSnapshots(\n internalIds: readonly string[],\n ctx: BusinessRowIdContext,\n options: RowListOptions = {},\n): SelectedRowSnapshot[] {\n return filterSnapshotsByMode(\n buildSelectedRowSnapshots(internalIds, ctx),\n options.mode ?? 'all',\n )\n}\n","import { isIndexColumn } from '@core/types/indexColumn'\r\nimport { isSelectionColumn } from '@core/types/selectionColumn'\r\nimport { isBuiltInCellEditor } from '@core/types/cellEditor'\r\n\r\n/** 单元格编辑器呈现模式:overlay 进入编辑态;inline 常驻格内 */\r\nexport type CellEditorMode = 'overlay' | 'inline'\r\n\r\n/** 缺省 overlay,与 Phase 3 行为一致 */\r\nexport const DEFAULT_CELL_EDITOR_MODE: CellEditorMode = 'overlay'\r\n\r\n/** 解析列级 cellEditorMode;缺省 overlay */\r\nexport function resolveCellEditorMode(mode?: CellEditorMode): CellEditorMode {\r\n if (mode === 'inline') {\r\n return 'inline'\r\n }\r\n return DEFAULT_CELL_EDITOR_MODE\r\n}\r\n\r\n/** 系统列强制 overlay;用户列解析 cellEditorMode */\r\nexport function resolveColumnCellEditorMode(\r\n colId: string,\r\n mode?: CellEditorMode,\r\n): CellEditorMode {\r\n if (isIndexColumn(colId) || isSelectionColumn(colId)) {\r\n return DEFAULT_CELL_EDITOR_MODE\r\n }\r\n return resolveCellEditorMode(mode)\r\n}\r\n\r\n/** 是否为 inline 常驻编辑器列(须配置 cellEditor;系统列恒 false) */\r\nexport function isInlineEditorColumn(column: {\r\n colId: string\r\n cellEditorMode?: CellEditorMode\r\n cellEditor?: unknown\r\n}): boolean {\r\n if (isIndexColumn(column.colId) || isSelectionColumn(column.colId)) {\r\n return false\r\n }\r\n\r\n if (resolveCellEditorMode(column.cellEditorMode) !== 'inline') {\r\n return false\r\n }\r\n\r\n return column.cellEditor != null\r\n}\r\n\r\n/** 开发模式:inline 误配告警 */\r\nexport function warnIfInlineEditorMisconfigured(\r\n colId: string,\r\n options: {\r\n cellEditorMode?: CellEditorMode\r\n cellEditor?: unknown\r\n },\r\n): void {\r\n if (!import.meta.env.DEV) {\r\n return\r\n }\r\n\r\n const isSystem = isIndexColumn(colId) || isSelectionColumn(colId)\r\n\r\n if (isSystem && options.cellEditorMode === 'inline') {\r\n console.warn(\r\n `[magic-grid] Column \"${colId}\" is a system column and cannot use cellEditorMode: 'inline'. ` +\r\n 'Inline editors apply to user data columns only.',\r\n )\r\n return\r\n }\r\n\r\n if (options.cellEditorMode === 'inline' && options.cellEditor == null) {\r\n console.warn(\r\n `[magic-grid] Column \"${colId}\" has cellEditorMode: 'inline' but no cellEditor. ` +\r\n 'Configure cellEditor (e.g. \"checkbox\") or remove inline mode.',\r\n )\r\n }\r\n}\r\n\r\nconst INLINE_NATIVE_EDITORS = new Set(['text', 'number', 'checkbox', 'switch'])\r\n\r\n/** 开发模式:inline 列使用可能依赖 overlay/teleport 的编辑器时告警 */\r\nexport function warnIfInlineOverlayEditor(\r\n colId: string,\r\n options: {\r\n cellEditorMode?: CellEditorMode\r\n cellEditor?: unknown\r\n },\r\n): void {\r\n if (!import.meta.env.DEV || options.cellEditorMode !== 'inline') {\r\n return\r\n }\r\n\r\n const editor = options.cellEditor\r\n if (editor == null) {\r\n return\r\n }\r\n\r\n if (typeof editor === 'function') {\r\n console.warn(\r\n `[magic-grid] Column \"${colId}\" uses cellEditorMode: 'inline' with a custom editor function. ` +\r\n 'Inline editors must not use overlay/teleport; prefer checkbox, switch, text, or number.',\r\n )\r\n return\r\n }\r\n\r\n if (typeof editor === 'string' && !INLINE_NATIVE_EDITORS.has(editor) && !isBuiltInCellEditor(editor)) {\r\n console.warn(\r\n `[magic-grid] Column \"${colId}\" uses cellEditorMode: 'inline' with editor \"${editor}\" ` +\r\n 'which may require an overlay surface. Prefer \"checkbox\", \"switch\", \"text\", or \"number\" for inline columns.',\r\n )\r\n }\r\n}\r\n","/**\n * Cell Editor Cache — 类型与纯函数(Phase 42 / M35)\n *\n * 职责:Grid/列 opt-in 开关解析、存储键规则、是否向 overlay 列注入 API。\n * 可变状态与 LRU 在 {@link CellEditorCacheService}(`cellEditorCacheService.ts`)。\n *\n * 存储键:`${rowPart}::${colId}::${resolvedKey}`\n * - rowPart:业务 rowId 字符串;transient 行为 `\\0${internalRowId}`\n * - resolvedKey:消费方 key + 可选列级 namespace 前缀\n */\nimport type { BusinessRowId } from '@core/types/businessRowId'\nimport type { CellEditorMode } from '@core/types/cellEditorMode'\nimport { isInlineEditorColumn } from '@core/types/cellEditorMode'\n\n/** 消费方未传 key 且列无 string namespace 时的默认 slot */\nexport const DEFAULT_CELL_EDITOR_CACHE_KEY = 'default'\n\n/** 列级 flag:`true` 启用 · `string` 固定 namespace · `false` 全局开启时 opt-out */\nexport type CellEditorCacheColumnFlag = boolean | string\n\n/** Grid 级配置(MagicGrid `enableCellEditorCache` / `cellEditorCacheMaxEntries`) */\nexport interface CellEditorCacheGridOptions {\n /**\n * 为所有 overlay 列注入 get/set/clear API。\n * 默认 false(零开销);列级 `cellEditorCache: false` 可显式 opt-out。\n */\n enableCellEditorCache?: boolean\n\n /**\n * 会话 cache 最大 **cell bucket** 数 `(rowId,colId)`;超出 LRU 淘汰。\n * 默认不限。\n */\n cellEditorCacheMaxEntries?: number\n}\n\nexport interface ResolvedCellEditorCacheGridOptions {\n enableCellEditorCache: boolean\n cellEditorCacheMaxEntries: number | undefined\n}\n\nexport function resolveCellEditorCacheGridOptions(\n options: CellEditorCacheGridOptions = {},\n): ResolvedCellEditorCacheGridOptions {\n const maxEntries = options.cellEditorCacheMaxEntries\n return {\n enableCellEditorCache: options.enableCellEditorCache ?? false,\n cellEditorCacheMaxEntries:\n maxEntries != null && Number.isFinite(maxEntries) && maxEntries > 0\n ? Math.floor(maxEntries)\n : undefined,\n }\n}\n\n/**\n * 存储键 rowId 段。\n * transient 行业务 id 为 null,须传 internalRowId 以免多行新增互相覆盖。\n */\nexport function buildCellEditorCacheRowPart(\n rowId: BusinessRowId,\n internalRowId?: string,\n): string {\n if (rowId !== null) {\n return String(rowId)\n }\n if (internalRowId) {\n return `\\0${internalRowId}`\n }\n return '\\0transient'\n}\n\n/** 完整 Map 键:`rowPart::colId::key` */\nexport function buildCellEditorCacheStorageKey(\n rowId: BusinessRowId,\n colId: string,\n key: string = DEFAULT_CELL_EDITOR_CACHE_KEY,\n options?: { internalRowId?: string },\n): string {\n const rowPart = buildCellEditorCacheRowPart(rowId, options?.internalRowId)\n return `${rowPart}::${colId}::${key}`\n}\n\n/** LRU 粒度:同一格 `(rowId,colId)` 下所有 namespace key 共用一个 bucket */\nexport function buildCellEditorCacheBucketKey(\n rowId: BusinessRowId,\n colId: string,\n options?: { internalRowId?: string },\n): string {\n const rowPart = buildCellEditorCacheRowPart(rowId, options?.internalRowId)\n return `${rowPart}::${colId}`\n}\n\nexport interface ResolveCellEditorCacheKeyOptions {\n userKey?: string\n columnCellEditorCache?: CellEditorCacheColumnFlag\n}\n\n/**\n * 消费方 key → 存储层 key。\n * 列级 `cellEditorCache: 'part'` 时:`getCellCache()` → `part`;`getCellCache('options')` → `part::options`。\n */\nexport function resolveCellEditorCacheKey(\n options: ResolveCellEditorCacheKeyOptions = {},\n): string {\n const { userKey, columnCellEditorCache } = options\n const namespace =\n typeof columnCellEditorCache === 'string' ? columnCellEditorCache : undefined\n\n if (userKey != null && userKey !== '') {\n return namespace ? `${namespace}::${userKey}` : userKey\n }\n\n if (namespace) {\n return namespace\n }\n\n return DEFAULT_CELL_EDITOR_CACHE_KEY\n}\n\nexport interface ShouldInjectCellEditorCacheApiOptions {\n enableCellEditorCache: boolean\n colId: string\n cellEditorMode?: CellEditorMode\n cellEditor?: unknown\n columnCellEditorCache?: CellEditorCacheColumnFlag\n}\n\n/** inline 列、列级 false、或未开启全局开关 → 不注入(CellEditorParams 上无 cache 方法) */\nexport function shouldInjectCellEditorCacheApi(\n options: ShouldInjectCellEditorCacheApiOptions,\n): boolean {\n if (\n isInlineEditorColumn({\n colId: options.colId,\n cellEditorMode: options.cellEditorMode,\n cellEditor: options.cellEditor,\n })\n ) {\n return false\n }\n\n if (options.columnCellEditorCache === false) {\n return false\n }\n\n if (\n options.columnCellEditorCache === true ||\n typeof options.columnCellEditorCache === 'string'\n ) {\n return true\n }\n\n return options.enableCellEditorCache\n}\n","import type { RowDragCommitContext, RowHierarchyChange } from '@core/types/rowDrag'\n\n/** {@link getRowDragCommitHierarchy} 过滤模式 */\nexport type GetRowDragCommitHierarchyOption = 'default' | 'noLevel'\n\nfunction hasParentOrSiblingChange(change: RowHierarchyChange): boolean {\n return (\n change.previousParentRowId !== change.parentRowId ||\n change.previousSiblingIndex !== change.siblingIndex\n )\n}\n\n/**\n * 从 deferred row drag commit 上下文中提取树形层级变更列表。\n *\n * - `default`:返回 `context.hierarchyChanges` 的浅拷贝(含 `treeLevel` 及仅 level 变化的项)。\n * - `noLevel`:仅保留 **parentRowId 或 siblingIndex** 相对变更前发生变化的项,\n * 排除「parent / sibling 均未变、仅 treeLevel 不同」的条目。\n *\n * 对接后端 `parentId` + `order` 持久化时,通常使用 `noLevel`。\n *\n * @example\n * ```ts\n * import { getRowDragCommitHierarchy } from '@taocompany/magic-grid'\n *\n * const toPersist = getRowDragCommitHierarchy(context, 'noLevel')\n * for (const item of toPersist) {\n * await api.update({ id: item.rowId, parentId: item.parentRowId, order: item.siblingIndex })\n * }\n * ```\n */\nexport function getRowDragCommitHierarchy(\n context: RowDragCommitContext,\n option: GetRowDragCommitHierarchyOption = 'default',\n): RowHierarchyChange[] {\n const changes = context.hierarchyChanges ?? []\n\n if (option === 'default') {\n return [...changes]\n }\n\n return changes.filter(hasParentOrSiblingChange)\n}\n"],"mappings":"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"}