@gct-paas/word 0.1.32 → 0.1.34

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 (47) hide show
  1. package/dist/base/input/src/input.vue.d.ts +1 -1
  2. package/dist/base/input/src/text-area.vue.d.ts +1 -1
  3. package/dist/base/table/src/table.vue.d.ts +1 -1
  4. package/dist/core/command/commands/InsertField.d.ts +22 -2
  5. package/dist/core/data/DataManager.d.ts +40 -12
  6. package/dist/core/layout/handlers/fields/FieldBaseHandler.d.ts +1 -0
  7. package/dist/core/layout/linkSubTableLayout.d.ts +27 -0
  8. package/dist/core/layout/providers/TableInfoProvider.d.ts +2 -3
  9. package/dist/core/model/DocModel.d.ts +9 -0
  10. package/dist/core/model/document/Wtbl/RegionManager.d.ts +47 -10
  11. package/dist/core/model/document/Wtc.d.ts +20 -15
  12. package/dist/core/model/document/wtcRegionRef.d.ts +20 -0
  13. package/dist/core/model/logic/{Region.d.ts → base/Region.d.ts} +2 -5
  14. package/dist/core/model/logic/{SubTableHeaderRegion.d.ts → header/SubTableHeaderRegion.d.ts} +3 -6
  15. package/dist/core/model/logic/{TableHeaderRegion.d.ts → header/TableHeaderRegion.d.ts} +3 -3
  16. package/dist/core/model/logic/index.d.ts +18 -22
  17. package/dist/core/model/logic/{BoundedItemRegion.d.ts → subtable/bounded/BoundedItemRegion.d.ts} +5 -1
  18. package/dist/core/model/logic/{BoundedRegion.d.ts → subtable/bounded/BoundedRegion.d.ts} +7 -9
  19. package/dist/core/model/logic/subtable/link/CheckTableRegion.d.ts +11 -0
  20. package/dist/core/model/logic/subtable/link/DataGroup2DRegion.d.ts +15 -0
  21. package/dist/core/model/logic/subtable/link/LinkSubTableRegion.d.ts +48 -0
  22. package/dist/core/model/logic/subtable/link/_2DTableRegion.d.ts +11 -0
  23. package/dist/core/model/logic/{RepeatingRegion.d.ts → subtable/repeating/RepeatingRegion.d.ts} +7 -9
  24. package/dist/core/model/logic/subtable/shared/dataGroupSlotCount.d.ts +18 -0
  25. package/dist/core/model/logic/subtable/shared/itemRegionOps.d.ts +11 -0
  26. package/dist/core/model/logic/subtable/shared/regionValuePath.d.ts +8 -0
  27. package/dist/core/model/logic/types.d.ts +10 -0
  28. package/dist/core/utils/expand.d.ts +49 -18
  29. package/dist/core/view/TableCell.d.ts +3 -7
  30. package/dist/core/view/runs/ImageWidget.d.ts +6 -0
  31. package/dist/core/view/runs/TextWidget.d.ts +6 -0
  32. package/dist/index.es.js +1968 -1254
  33. package/dist/runtime/canvas/table/utils/index.d.ts +2 -2
  34. package/dist/runtime/factories/createDesignWidgetFactory.d.ts +17 -0
  35. package/dist/runtime/factories/{useRenderData.d.ts → useWidgetRenderData.d.ts} +18 -6
  36. package/dist/runtime/renderer/dropdowns/components/tables/rdo-table-dropdown.vue.d.ts +3 -3
  37. package/dist/runtime/renderer/dropdowns/components/tables/table-dropdown.vue.d.ts +3 -3
  38. package/dist/utils/func/core.d.ts +62 -18
  39. package/dist/utils/func/render.d.ts +4 -1
  40. package/dist/word.css +153 -153
  41. package/package.json +1 -1
  42. package/dist/core/model/logic/CheckTableRegion.d.ts +0 -44
  43. package/dist/core/model/logic/DataGroup2DRegion.d.ts +0 -12
  44. package/dist/core/model/logic/_2DTableRegion.d.ts +0 -44
  45. package/dist/runtime/factories/createFieldToWidgetFactory.d.ts +0 -13
  46. package/dist/runtime/factories/createPaperWidgetToWidgetFactory.d.ts +0 -13
  47. package/dist/runtime/factories/usePwRenderData.d.ts +0 -13
@@ -44,7 +44,6 @@ declare const __VLS_component: import('vue').DefineComponent<GctInputProps, {
44
44
  name: string;
45
45
  type: import('./types').InputType;
46
46
  id: string;
47
- rows: number;
48
47
  readonly: boolean;
49
48
  disabled: boolean;
50
49
  size: import('./types').InputSize;
@@ -60,6 +59,7 @@ declare const __VLS_component: import('vue').DefineComponent<GctInputProps, {
60
59
  maxLength: number;
61
60
  autofocus: boolean;
62
61
  autocomplete: string;
62
+ rows: number;
63
63
  bordered: boolean;
64
64
  showSearchButton: boolean;
65
65
  spellcheck: boolean;
@@ -40,7 +40,6 @@ declare const __VLS_component: import('vue').DefineComponent<GctInputProps, {
40
40
  onPressEnter?: ((event: KeyboardEvent) => any) | undefined;
41
41
  }>, {
42
42
  name: string;
43
- rows: number;
44
43
  readonly: boolean;
45
44
  disabled: boolean;
46
45
  placeholder: string;
@@ -50,6 +49,7 @@ declare const __VLS_component: import('vue').DefineComponent<GctInputProps, {
50
49
  maxLength: number;
51
50
  autofocus: boolean;
52
51
  autocomplete: string;
52
+ rows: number;
53
53
  bordered: boolean;
54
54
  spellcheck: boolean;
55
55
  customStyle: Record<string, string | number>;
@@ -31,10 +31,10 @@ declare const __VLS_component: import('vue').DefineComponent<TableProps, {}, {},
31
31
  onSelect?: ((keys: string[]) => any) | undefined;
32
32
  "onRow-click"?: ((row: TableRow) => any) | undefined;
33
33
  }>, {
34
- columns: TableColumn[];
35
34
  size: "small" | "middle" | "large";
36
35
  multiple: boolean;
37
36
  loading: boolean;
37
+ columns: TableColumn[];
38
38
  stripe: boolean;
39
39
  selectable: boolean;
40
40
  selectedKeys: string[];
@@ -2,6 +2,7 @@ import { CommandBase, PostCommandContext } from '../base/CommandBase';
2
2
  import { Doc } from '../../view/Doc';
3
3
  import { CommandPayloadMap } from '../types';
4
4
  import { Wp } from '../../model/document';
5
+ import { WidgetMeta } from '../../widget/widget-meta';
5
6
  type InsertFieldCommandOptions = CommandPayloadMap['insertField'];
6
7
  export declare class InsertField extends CommandBase<'insertField'> {
7
8
  constructor(doc: Doc, payload: InsertFieldCommandOptions);
@@ -15,7 +16,6 @@ export declare class InsertField extends CommandBase<'insertField'> {
15
16
  */
16
17
  private handleSelectionText;
17
18
  protected isRootField(valuePath?: string): boolean;
18
- protected isNestedTableField(valuePath?: string): boolean;
19
19
  /**
20
20
  * 判断两个 valuePath 是否连续(父子关系)
21
21
  * @param parentPath 父路径,如 "$.a[n]"
@@ -44,6 +44,26 @@ export declare class InsertField extends CommandBase<'insertField'> {
44
44
  * isFieldPathCompatible("$.a[n].b", "$.a[n].b[n].c") // false - 去掉开头 [n] 后 .c 实际上应该检查原逻辑
45
45
  */
46
46
  protected isFieldPathCompatible(parentPath: string, childPath: string): boolean;
47
- protected validateFieldPath(valuePath: string | undefined, node: Wp): boolean;
47
+ private getLayoutTableCellFromCursor;
48
+ private getModelCellFromCursor;
49
+ /** 二维表/检验表:用当前单元格 subRenderer 分区 valuePath 作为父路径 */
50
+ private getSubTableZoneParentPath;
51
+ private resolveInsertFieldPayload;
52
+ /**
53
+ * 根据拖拽时 palette 传入的 subFieldKey 判断字段属于关联侧还是二维表/检验表主体侧。
54
+ * - 仅 linkFieldKey:动态关联 palette(f_ewblink)
55
+ * - 仅 subFieldKey:横向区 palette(f_ewb)
56
+ * - sub:link:交叉区 palette 拖入的主体字段(f_ewb:f_ewblink)
57
+ */
58
+ private getDraggedFieldSide;
59
+ private validateLinkSubTableFieldPath;
60
+ /** 数据关联区向上/下扩充、超出子表主体行范围的模板行 */
61
+ private isDataGroup2DExpansionCell;
62
+ private getLinkSubTableRegionFromLayout;
63
+ /**
64
+ * 校验字段是否可插入当前位置
65
+ * @returns 校验通过返回 null,失败返回提示文案
66
+ */
67
+ protected validateFieldPath(valuePath: string | undefined, node: Wp, widgetMeta?: WidgetMeta): string | null;
48
68
  }
49
69
  export {};
@@ -47,22 +47,38 @@ export declare class DataManager {
47
47
  * @returns 指定路径的标签值或原值,不存在返回 undefined
48
48
  */
49
49
  getLabel<T = any>(path: JsonPath): T | undefined;
50
+ private assignField;
50
51
  /**
51
52
  * 根据 jsonpath 设置数据
52
53
  * @param path jsonpath 路径
53
54
  * @param value 要设置的值
54
- * @param x
55
- * @param y
56
55
  * @returns 是否设置成功
57
56
  */
58
- set2D(path: JsonPath, value: any, x: number, y: number, source?: 'user' | 'dependency'): boolean;
57
+ set(path: JsonPath, value: any, source?: 'user' | 'dependency'): boolean;
59
58
  /**
60
- * 根据 jsonpath 设置数据
61
- * @param path jsonpath 路径
62
- * @param value 要设置的值
63
- * @returns 是否设置成功
59
+ * 从带数字下标的 path 推断二维坐标(供 setMultiple / patch / 业务回填等无 modelRef 的场景)
60
+ * - 单轴:$.f_ewb[0].f_name y=0;$.f_ewblink[1].x → x=1(需能从 rawData 的交叉 key 识别轴,或命中 link 命名启发)
61
+ * - 交叉:$.f_ewb:f_ewblink[0][1].f_value → y=0,x=1
62
+ * 不会处理 [n] 通配符;普通子表(如 $.b[0].c)不推断,避免破坏原有语义。
64
63
  */
65
- set(path: JsonPath, value: any, source?: 'user' | 'dependency'): boolean;
64
+ private infer2DPathAndCoords;
65
+ /**
66
+ * rawData 尚无交叉 key 时,用命名约定推测轴(避免误判普通子表 $.b[0])
67
+ * 须先于「f_ewb 主体」判断:f_ewblink 也以 f_ewb 开头。
68
+ */
69
+ private guessLinkSubTableAxis;
70
+ private parse2DPath;
71
+ private getCrossKeys;
72
+ private resolveAxisByTableKey;
73
+ private ensureAxisRowAndUid;
74
+ private getFieldFromRow;
75
+ /**
76
+ * 按 y/x 坐标读取二维表数据(与 set2DByCoords 对称)
77
+ * 交叉区在 rawData 中按 __gw_y_uid / __gw_x_uid 稀疏存储,不能直接用 [y][x] 下标 getByPath。
78
+ */
79
+ private get2DByCoords;
80
+ private set2DByCoords;
81
+ private cleanupCrossByAxisUid;
66
82
  /**
67
83
  * 将一个部分值对象合进整体
68
84
  */
@@ -137,6 +153,19 @@ export declare class DataManager {
137
153
  * 这样可以保证:参数映射(`[n]`)先铺好默认值,自定义数据源(真实下标)再精确覆盖。
138
154
  */
139
155
  applyInitData(initDataMap: Record<string, any>): void;
156
+ private applyInitDataCrossWildcard;
157
+ /**
158
+ * 解析子表初始化行数:接口已有行数、版面数据分组槽位。
159
+ * layoutRows 为 0(如二维表纵向 f_ewb)时不按分组扩行,仅保证至少 1 行可绑定。
160
+ */
161
+ private resolveInitRowCount;
162
+ /**
163
+ * 将子表数组补齐到指定行数。
164
+ * @param asPlaceholder true:push/insert 用的系统占位行(带 __gw_default);false:applyInitData 物化行(空对象)
165
+ */
166
+ private ensureSubTableRowCount;
167
+ /** 行已写入业务数据后去掉占位标记,避免提交/对比时被当成空行 */
168
+ private clearPlaceholderFlag;
140
169
  private applyInitDataWildcard;
141
170
  /**
142
171
  * 内部方法:根据路径获取值
@@ -203,10 +232,9 @@ export declare class DataManager {
203
232
  */
204
233
  getDefault<T = any>(path: JsonPath): T | undefined;
205
234
  /**
206
- * 将路径中的具体数组索引转换为通配符
207
- * 例如: "items[0].name" -> "items[n].name"
208
- * @param path 原始路径
209
- * @returns 转换后的路径
235
+ * 将路径中的具体数组索引转换为默认值通配符
236
+ * - 普通子表: items[0].name -> items[n].name
237
+ * - 二维交叉区: $.f_ewb:f_ewblink[0][1].f_value -> $.f_ewb:f_ewblink[n_y][n_x].f_value
210
238
  */
211
239
  private convertPathToWildcard;
212
240
  private formatRuntimeValue;
@@ -6,6 +6,7 @@ import { HandlerContext } from '../../types';
6
6
  type ValueType = string | number | undefined | null;
7
7
  export declare class FieldBaseHandler {
8
8
  static hasValue(value: ValueType): boolean;
9
+ static getSubTableRunIndex(context: LayoutContext): number | undefined;
9
10
  static getId(context: LayoutContext, wr: WrText): string;
10
11
  static get2DInfo(context: LayoutContext): {
11
12
  xDataIndex: number | undefined;
@@ -0,0 +1,27 @@
1
+ import { LinkSubTableRegion } from '../model/logic';
2
+ export type LinkSubTableCellZone = 'cross' | 'horizontal' | 'vertical';
3
+ export type LinkSubTableLayoutType = '2d-table' | 'check-table';
4
+ /** 二维表 / 检验表(LinkSubTable 布局体系) */
5
+ export declare function isLinkSubTableType(type?: string): type is LinkSubTableLayoutType;
6
+ /** 渲染端子表主体范围(交叉区 + 横向区,不含纵向铺砖带) */
7
+ export declare function isLinkSubTableSubScopeZone(cellZone?: string): cellZone is Exclude<LinkSubTableCellZone, 'vertical'>;
8
+ export type LinkSubTableCellIndexMap = Map<string, {
9
+ dataIndex?: number;
10
+ }>;
11
+ export type ResolveLinkSubTableCellZoneOptions = {
12
+ /** 数据关联向右铺砖的最右列(由 computeDataIndexMap 结果推算,交叉/纵向共用) */
13
+ fillEndCol?: number;
14
+ };
15
+ /**
16
+ * 数据关联区(含向上/下扩充行)向右铺砖的最右列,与固定表 computeDataIndexMap 一致
17
+ */
18
+ export declare function getDataGroup2DFillEndCol(region: LinkSubTableRegion, cellDataIndexMap: LinkSubTableCellIndexMap): number;
19
+ /**
20
+ * 按模板坐标判定二维表/检验表单元格分区。
21
+ * - cross:交叉行 ∩ [关联列, 铺砖最右列](与固定表相同向右铺砖,非无限延伸)
22
+ * - vertical:关联行带内、不在交叉行,关联列起向右铺砖至 fillEndCol(与固定表一致)
23
+ * - horizontal:子表主体内、关联列左侧,或交叉行上铺砖范围之外的列
24
+ */
25
+ export declare function resolveLinkSubTableCellZone(row: number, col: number, region: LinkSubTableRegion, options?: ResolveLinkSubTableCellZoneOptions): LinkSubTableCellZone | undefined;
26
+ export declare function resolveLinkSubTableValuePath(region: LinkSubTableRegion, cellZone: LinkSubTableCellZone): string;
27
+ export declare function isInLinkSubTableLayoutScope(row: number, col: number, region: LinkSubTableRegion, options?: ResolveLinkSubTableCellZoneOptions): boolean;
@@ -1,7 +1,6 @@
1
1
  import { Wtbl, Wtc, Wtr } from '../../model/document';
2
- import { TableExpander, CellFragment, TableRange } from '../../utils/expand';
2
+ import { TableExpander, CellFragment } from '../../utils/expand';
3
3
  import { SubRenderer } from '../../view/TableCell';
4
- import { _2DTableRegion, CheckTableRegion } from '../../model/logic';
5
4
  export declare class TableInfoProvider {
6
5
  wtbl: Wtbl;
7
6
  tableExpander: TableExpander;
@@ -20,7 +19,7 @@ export declare class TableInfoProvider {
20
19
  getCellModelRef(cell: any): {
21
20
  id: string;
22
21
  };
23
- getDataGroup2DAreaRange(region: CheckTableRegion | _2DTableRegion): TableRange | undefined;
22
+ private buildLinkSubTableSubRenderer;
24
23
  getCellSubRenderer(cell: CellFragment): SubRenderer | undefined;
25
24
  /**
26
25
  * 获取当前行是都能分割
@@ -65,6 +65,15 @@ export declare class DocModel {
65
65
  name: string;
66
66
  subType: string;
67
67
  }[];
68
+ /**
69
+ * 根据版面数据分组 / 动态关联铺砖,计算子表字段在 rawData 中应初始化的行数。
70
+ *
71
+ * - 固定表:槽位归 subFieldKey(bounded + itemRegion)
72
+ * - 二维表 / 检验表:动态分组铺砖在关联轴,槽位归 linkFieldKey(如 f_ewblink);
73
+ * 纵向 subFieldKey(如 f_ewb)不由 itemRegion 撑行,返回 0
74
+ * - 其它子表无分组:返回 1
75
+ */
76
+ getSubTableLayoutSlotCount(subFieldKey: string): number;
68
77
  /** 根据 pageIndex 获取页眉实例 */
69
78
  getHeader(pageIndex: number, section: Section): import('./headers/Wheader').Wheader | null;
70
79
  /** 根据 pageIndex 获取页脚实例 */
@@ -1,36 +1,73 @@
1
1
  import { BoundedRegionOptions, CheckTableRegionOptions, RepeatingRegionOptions, TableRegion, TableHeaderRegionOptions, SubTableHeaderRegionOptions, _2DTableRegionOptions, BoundedRegion, CheckTableRegion, RepeatingRegion, TableHeaderRegion, SubTableHeaderRegion, _2DTableRegion } from '../../logic';
2
2
  import { Wtbl } from '../Wtbl';
3
+ /** 矩形区域边界(行/列起止索引) */
4
+ type RegionBounds = Pick<TableRegion, 'start' | 'end'>;
3
5
  /**
4
- * 表格区域管理功能类
5
- * 提供设置重复区域和有界区域的功能
6
+ * 表格区域管理器
7
+ *
8
+ * 负责在 {@link Wtbl} 上注册、查询、删除各类 {@link TableRegion},
9
+ * 并同步维护 region 覆盖范围内单元格上的子表 / 表头 / 区域引用标记。
6
10
  */
7
11
  export declare class WtblRegionManager {
8
12
  /**
9
- * 根据 region id 查找对应的 region
13
+ * id 查找 region
10
14
  */
11
15
  static findRegionById(table: Wtbl, regionId: string): TableRegion | undefined;
12
- static findCrossRegion(table: Wtbl, options: Pick<TableRegion, 'start' | 'end'>): TableRegion | undefined;
13
- static findCrossRegions(table: Wtbl, options: Pick<TableRegion, 'start' | 'end'>): TableRegion[];
14
16
  /**
15
- * 根据 region id 删除对应的 region
17
+ * 查找与给定矩形范围相交的第一个 region(含边界接触)
18
+ */
19
+ static findCrossRegion(table: Wtbl, bounds: RegionBounds): TableRegion | undefined;
20
+ /**
21
+ * 查找与给定矩形范围相交的全部 region
22
+ */
23
+ static findCrossRegions(table: Wtbl, bounds: RegionBounds): TableRegion[];
24
+ /**
25
+ * 按 id 删除 region,并清除其覆盖范围内单元格上的关联标记
16
26
  */
17
27
  static deleteRegionById(table: Wtbl, regionId: string): void;
18
28
  /**
19
- * 设置重复区域
29
+ * 设置重复区域(子表体)
20
30
  */
21
31
  static setRepeating(table: Wtbl, options: Omit<RepeatingRegionOptions, 'table'>): RepeatingRegion;
22
32
  /**
23
- * 设置二维表
33
+ * 设置二维表区域
24
34
  */
25
35
  static set2DTable(table: Wtbl, options: Omit<_2DTableRegionOptions, 'table'>): _2DTableRegion;
26
36
  /**
27
- * 设置有界区域
37
+ * 设置有界区域(子表体)
28
38
  */
29
39
  static setBounded(table: Wtbl, options: Omit<BoundedRegionOptions, 'table'>): BoundedRegion;
30
40
  /**
31
- * 设置检验表
41
+ * 设置检验表区域
32
42
  */
33
43
  static setCheckTable(table: Wtbl, options: Omit<CheckTableRegionOptions, 'table'>): CheckTableRegion;
44
+ /**
45
+ * 设置表头区域(主表表头)
46
+ */
34
47
  static setTableHeader(table: Wtbl, options: Omit<TableHeaderRegionOptions, 'table'>): TableHeaderRegion;
48
+ /**
49
+ * 设置子表表头区域
50
+ */
35
51
  static setSubTableHeader(table: Wtbl, options: Omit<SubTableHeaderRegionOptions, 'table'>): SubTableHeaderRegion;
52
+ /**
53
+ * 判断两个矩形区域是否相交(含边界恰好相贴的情况)
54
+ */
55
+ private static regionsIntersect;
56
+ /**
57
+ * 遍历 region 覆盖范围内的所有单元格
58
+ */
59
+ private static forEachCellInRegion;
60
+ /**
61
+ * 将 region 加入 table.regions,并同步标记覆盖范围内的单元格
62
+ */
63
+ private static registerRegion;
64
+ /**
65
+ * 删除 region 时,按类型清除单元格上的关联数据
66
+ *
67
+ * - 子表类:清除字段 runs + 子表 / 子表项引用
68
+ * - 表头类:清除字段 runs + 表头引用
69
+ * - 其他:仅清除对应 region 的引用
70
+ */
71
+ private static clearCellRegionMarks;
36
72
  }
73
+ export {};
@@ -3,7 +3,9 @@ import { Wtr } from './Wtr';
3
3
  import { Wp } from './Wp';
4
4
  import { ModelGroup, ModelGroupOptions } from '../base';
5
5
  import { Wtbl } from './Wtbl';
6
- export declare const WTC_REF_KEYS: string[];
6
+ import { SubTableBodyType, SubTableItemType, TableHeaderRefType, WtcHeaderRef, WtcSubTableItemRef, WtcSubTableRef } from './wtcRegionRef';
7
+ /** 单元格上需随行列复制同步的引用字段 */
8
+ export declare const WTC_REF_KEYS: readonly ["mergeId", "subTable", "subTableItem", "header"];
7
9
  /**
8
10
  * w:tc 表格单元格
9
11
  */
@@ -17,13 +19,12 @@ export declare class Wtc extends ModelGroup {
17
19
  backgroundColor?: string;
18
20
  mergeFromId?: string;
19
21
  mergeId?: string;
20
- repeatingId?: string;
21
- _2DTableId?: string;
22
- boundedId?: string;
23
- boundedItemId?: string;
24
- checkTableId?: string;
25
- dataGroup2DId?: string;
26
- headerId?: string;
22
+ /** 子表主体(动态表 / 固定表 / 二维表 / 检验表) */
23
+ subTable?: WtcSubTableRef;
24
+ /** 子表内数据分组或数据关联 */
25
+ subTableItem?: WtcSubTableItemRef;
26
+ /** 表头 / 子表表头 */
27
+ header?: WtcHeaderRef;
27
28
  vMergeType?: 'restart' | 'continue';
28
29
  tempMergeId?: string;
29
30
  constructor(options: ModelGroupOptions & {
@@ -32,13 +33,9 @@ export declare class Wtc extends ModelGroup {
32
33
  rowspan?: number;
33
34
  mergeFromId?: string;
34
35
  mergeId?: string;
35
- repeatingId?: string;
36
- _2DTableId?: string;
37
- boundedId?: string;
38
- boundedItemId?: string;
39
- checkTableId?: string;
40
- dataGroup2DId?: string;
41
- headerId?: string;
36
+ subTable?: WtcSubTableRef;
37
+ subTableItem?: WtcSubTableItemRef;
38
+ header?: WtcHeaderRef;
42
39
  backgroundColor?: string;
43
40
  vMergeType?: 'restart' | 'continue';
44
41
  tempMergeId?: string;
@@ -79,6 +76,14 @@ export declare class Wtc extends ModelGroup {
79
76
  */
80
77
  isRoot: boolean;
81
78
  };
79
+ setSubTable(type: SubTableBodyType, regionId: string): void;
80
+ clearSubTable(): void;
81
+ setSubTableItem(type: SubTableItemType, regionId: string): void;
82
+ clearSubTableItem(): void;
83
+ setHeaderRef(type: TableHeaderRefType, regionId: string): void;
84
+ clearHeaderRef(): void;
85
+ /** 按 regionId 清除单元格上的子表 / 表头引用 */
86
+ clearRegionRef(regionId: string): void;
82
87
  /**
83
88
  * 查找当前单元格对应的区域
84
89
  * @returns
@@ -0,0 +1,20 @@
1
+ /** 子表主体类型(repeating 在 layout 层映射为 dynamic-table) */
2
+ export type SubTableBodyType = 'repeating' | 'bounded' | '2d-table' | 'check-table';
3
+ /** 子表内数据分组 / 数据关联 */
4
+ export type SubTableItemType = 'bounded-item' | 'data-group-2d';
5
+ export type TableHeaderRefType = 'table-header' | 'sub-table-header';
6
+ export type WtcSubTableRef = {
7
+ type: SubTableBodyType;
8
+ regionId: string;
9
+ };
10
+ export type WtcSubTableItemRef = {
11
+ type: SubTableItemType;
12
+ regionId: string;
13
+ };
14
+ export type WtcHeaderRef = {
15
+ type: TableHeaderRefType;
16
+ regionId: string;
17
+ };
18
+ export type LayoutSubTableType = 'dynamic-table' | 'fixed-table' | '2d-table' | 'check-table' | 'table-header';
19
+ export declare function bodyTypeToLayoutType(type: SubTableBodyType): LayoutSubTableType;
20
+ export declare function headerTypeToLayoutType(type: TableHeaderRefType): 'table-header';
@@ -1,5 +1,5 @@
1
- import { Wtbl } from '../document';
2
- import { RegionJson } from '../types';
1
+ import { Wtbl } from '../../document';
2
+ import { RegionJson } from '../../types';
3
3
  export type CellPos = {
4
4
  row: number;
5
5
  col: number;
@@ -25,9 +25,6 @@ export declare abstract class Region {
25
25
  constructor(options: RegionOptions);
26
26
  /**
27
27
  * 检查指定的行列位置是否在当前区域内
28
- * @param row 行号
29
- * @param col 列号
30
- * @returns 是否在区域内
31
28
  */
32
29
  contains(row: number, col: number): boolean;
33
30
  toJSON(): RegionJson;
@@ -1,6 +1,6 @@
1
- import { Wtbl } from '../document';
2
- import { Region, RegionOptions } from './Region';
3
- import { RegionJson } from '../types';
1
+ import { Wtbl } from '../../document';
2
+ import { Region, RegionOptions } from '../base/Region';
3
+ import { RegionJson } from '../../types';
4
4
  export type SubTableHeaderRegionOptions = RegionOptions & {
5
5
  name: string;
6
6
  subTableId: string;
@@ -14,9 +14,6 @@ export declare class SubTableHeaderRegion extends Region {
14
14
  name: string;
15
15
  subTableId: SubTableHeaderRegionOptions['subTableId'];
16
16
  constructor(options: SubTableHeaderRegionOptions);
17
- /**
18
- * 序列化为 JSON 对象
19
- */
20
17
  toJSON(): SubTableRegionJson;
21
18
  static fromJSON(json: SubTableRegionJson, table: Wtbl): SubTableHeaderRegion;
22
19
  }
@@ -1,6 +1,6 @@
1
- import { Wtbl } from '../document';
2
- import { Region, RegionOptions } from './Region';
3
- import { RegionJson } from '../types';
1
+ import { Wtbl } from '../../document';
2
+ import { Region, RegionOptions } from '../base/Region';
3
+ import { RegionJson } from '../../types';
4
4
  export type TableHeaderRegionOptions = RegionOptions & {
5
5
  name: string;
6
6
  };
@@ -1,22 +1,18 @@
1
- import { RepeatingRegion } from './RepeatingRegion';
2
- import { BoundedRegion } from './BoundedRegion';
3
- import { CheckTableRegion } from './CheckTableRegion';
4
- import { TableHeaderRegion } from './TableHeaderRegion';
5
- import { SubTableHeaderRegion } from './SubTableHeaderRegion';
6
- import { _2DTableRegion } from './_2DTableRegion';
7
- export { Region } from './Region';
8
- export { RepeatingRegion } from './RepeatingRegion';
9
- export { _2DTableRegion } from './_2DTableRegion';
10
- export { BoundedRegion } from './BoundedRegion';
11
- export { CheckTableRegion } from './CheckTableRegion';
12
- export { TableHeaderRegion } from './TableHeaderRegion';
13
- export { SubTableHeaderRegion } from './SubTableHeaderRegion';
14
- export type { RegionOptions, CellPos } from './Region';
15
- export type { RepeatingRegionOptions } from './RepeatingRegion';
16
- export type { _2DTableRegionOptions } from './_2DTableRegion';
17
- export type { BoundedRegionOptions } from './BoundedRegion';
18
- export type { CheckTableRegionOptions } from './CheckTableRegion';
19
- export type { TableHeaderRegionOptions } from './TableHeaderRegion';
20
- export type { SubTableHeaderRegionOptions } from './SubTableHeaderRegion';
21
- export type TableRegion = RepeatingRegion | _2DTableRegion | BoundedRegion | CheckTableRegion | TableHeaderRegion | SubTableHeaderRegion;
22
- export type SubTableRegion = RepeatingRegion | BoundedRegion;
1
+ export { Region } from './base/Region';
2
+ export type { RegionOptions, CellPos } from './base/Region';
3
+ export { TableHeaderRegion } from './header/TableHeaderRegion';
4
+ export { SubTableHeaderRegion } from './header/SubTableHeaderRegion';
5
+ export type { TableHeaderRegionOptions } from './header/TableHeaderRegion';
6
+ export type { SubTableHeaderRegionOptions } from './header/SubTableHeaderRegion';
7
+ export { RepeatingRegion } from './subtable/repeating/RepeatingRegion';
8
+ export type { RepeatingRegionOptions, RepeatingWidgetMeta } from './subtable/repeating/RepeatingRegion';
9
+ export { BoundedRegion } from './subtable/bounded/BoundedRegion';
10
+ export { BoundedItemRegion } from './subtable/bounded/BoundedItemRegion';
11
+ export type { BoundedRegionOptions, BoundedWidgetMeta } from './subtable/bounded/BoundedRegion';
12
+ export { LinkSubTableRegion } from './subtable/link/LinkSubTableRegion';
13
+ export { DataGroup2DRegion } from './subtable/link/DataGroup2DRegion';
14
+ export { _2DTableRegion } from './subtable/link/_2DTableRegion';
15
+ export { CheckTableRegion } from './subtable/link/CheckTableRegion';
16
+ export type { _2DTableRegionOptions, _2DTableWidgetMeta } from './subtable/link/_2DTableRegion';
17
+ export type { CheckTableRegionOptions, CheckTableWidgetMeta } from './subtable/link/CheckTableRegion';
18
+ export type { TableRegion, SubTableRegion } from './types';
@@ -1,4 +1,4 @@
1
- import { Region, RegionOptions } from './Region';
1
+ import { Region, RegionOptions } from '../../base/Region';
2
2
  import { BoundedRegion } from './BoundedRegion';
3
3
  export type BoundedItemRegionOptions = RegionOptions & {
4
4
  parent?: BoundedRegion;
@@ -7,5 +7,9 @@ export declare class BoundedItemRegion extends Region {
7
7
  type: "boundedItem";
8
8
  parent?: BoundedRegion;
9
9
  constructor(options: BoundedItemRegionOptions);
10
+ get subFieldKey(): string;
11
+ get linkFieldKey(): string;
12
+ get subValuePath(): string;
13
+ get linkValuePath(): string;
10
14
  remove(): void;
11
15
  }
@@ -1,6 +1,6 @@
1
- import { Wtbl } from '../document';
2
- import { Region, RegionOptions } from './Region';
3
- import { RegionJson } from '../types';
1
+ import { Wtbl } from '../../../document';
2
+ import { Region, RegionOptions } from '../../base/Region';
3
+ import { RegionJson } from '../../../types';
4
4
  import { BoundedItemRegion, BoundedItemRegionOptions } from './BoundedItemRegion';
5
5
  export type BoundedWidgetPropsMeta = {
6
6
  /** 引用填充(撑满固定表)*/
@@ -35,13 +35,11 @@ export declare class BoundedRegion extends Region {
35
35
  widgetMeta: BoundedWidgetMeta;
36
36
  itemRegion?: BoundedItemRegion;
37
37
  constructor(options: BoundedRegionOptions);
38
- /**
39
- * 序列化为 JSON 对象
40
- */
38
+ get subFieldKey(): string;
39
+ get linkFieldKey(): string;
40
+ get subValuePath(): string;
41
+ get linkValuePath(): string;
41
42
  toJSON(): BoundedRegionJson;
42
- /**
43
- * 从 JSON 对象还原
44
- */
45
43
  static fromJSON(json: BoundedRegionJson, table: Wtbl): BoundedRegion;
46
44
  setItemRegion(options: Omit<BoundedItemRegionOptions, 'table'>): BoundedItemRegion;
47
45
  removeItemRegion(): void;
@@ -0,0 +1,11 @@
1
+ import { Wtbl } from '../../../document';
2
+ import { LinkSubTableRegion, LinkSubTableRegionJson, LinkSubTableRegionOptions, LinkSubTableWidgetMeta } from './LinkSubTableRegion';
3
+ export type CheckTableWidgetPropsMeta = LinkSubTableWidgetMeta['props'];
4
+ export type CheckTableWidgetMeta = LinkSubTableWidgetMeta;
5
+ export type CheckTableRegionOptions = LinkSubTableRegionOptions;
6
+ export type CheckTableRegionJson = LinkSubTableRegionJson;
7
+ export declare class CheckTableRegion extends LinkSubTableRegion {
8
+ type: "check-table";
9
+ toJSON(): CheckTableRegionJson;
10
+ static fromJSON(json: CheckTableRegionJson, table: Wtbl): CheckTableRegion;
11
+ }
@@ -0,0 +1,15 @@
1
+ import { Region, RegionOptions } from '../../base/Region';
2
+ import { LinkSubTableRegion } from './LinkSubTableRegion';
3
+ export type DataGroup2DRegionOptions = RegionOptions & {
4
+ parent?: LinkSubTableRegion;
5
+ };
6
+ export declare class DataGroup2DRegion extends Region {
7
+ type: "dataGroup2D";
8
+ parent?: LinkSubTableRegion;
9
+ constructor(options: DataGroup2DRegionOptions);
10
+ get subFieldKey(): string;
11
+ get linkFieldKey(): string;
12
+ get subValuePath(): string;
13
+ get linkValuePath(): string;
14
+ remove(): void;
15
+ }
@@ -0,0 +1,48 @@
1
+ import { Wtbl } from '../../../document';
2
+ import { Region, RegionOptions } from '../../base/Region';
3
+ import { RegionJson } from '../../../types';
4
+ import { DataGroup2DRegion, DataGroup2DRegionOptions } from './DataGroup2DRegion';
5
+ export type LinkSubTableWidgetPropsMeta = {
6
+ /** 引用填充(撑满固定表)*/
7
+ autoFill: boolean;
8
+ /** 关联主键 */
9
+ refColField: string | undefined;
10
+ /** 动态表关联关系建立 */
11
+ refRowField: string | undefined;
12
+ [key: string]: any;
13
+ };
14
+ export type LinkSubTableWidgetMeta = {
15
+ props: LinkSubTableWidgetPropsMeta;
16
+ };
17
+ export type LinkSubTableRegionOptions = RegionOptions & {
18
+ name: string;
19
+ valuePath: string;
20
+ widgetMeta: LinkSubTableWidgetMeta;
21
+ itemRegion?: DataGroup2DRegion;
22
+ };
23
+ export type LinkSubTableRegionJson = RegionJson & {
24
+ name: string;
25
+ valuePath: string;
26
+ widgetMeta: LinkSubTableWidgetMeta;
27
+ itemRegion?: any;
28
+ };
29
+ /**
30
+ * 带「主字段:关联字段」valuePath 的子表基类(二维表、检验表共用)
31
+ */
32
+ export declare abstract class LinkSubTableRegion extends Region {
33
+ name: string;
34
+ valuePath: string;
35
+ widgetMeta: LinkSubTableWidgetMeta;
36
+ itemRegion?: DataGroup2DRegion;
37
+ constructor(options: LinkSubTableRegionOptions);
38
+ get subFieldKey(): string;
39
+ get linkFieldKey(): string;
40
+ get subValuePath(): string;
41
+ get linkValuePath(): string;
42
+ protected toLinkSubTableJSON(): LinkSubTableRegionJson;
43
+ protected static restoreItemRegion(region: LinkSubTableRegion, json: LinkSubTableRegionJson, table: Wtbl): void;
44
+ /** 从 JSON 还原关联子表(二维表 / 检验表子类共用) */
45
+ protected static fromLinkSubTableJSON<T extends LinkSubTableRegion>(Ctor: new (options: LinkSubTableRegionOptions) => T, json: LinkSubTableRegionJson, table: Wtbl): T;
46
+ setItemRegion(options: Omit<DataGroup2DRegionOptions, 'table'>): DataGroup2DRegion;
47
+ removeItemRegion(): void;
48
+ }
@@ -0,0 +1,11 @@
1
+ import { Wtbl } from '../../../document';
2
+ import { LinkSubTableRegion, LinkSubTableRegionJson, LinkSubTableRegionOptions, LinkSubTableWidgetMeta } from './LinkSubTableRegion';
3
+ export type _2DTableWidgetPropsMeta = LinkSubTableWidgetMeta['props'];
4
+ export type _2DTableWidgetMeta = LinkSubTableWidgetMeta;
5
+ export type _2DTableRegionOptions = LinkSubTableRegionOptions;
6
+ export type _2DTableRegionJson = LinkSubTableRegionJson;
7
+ export declare class _2DTableRegion extends LinkSubTableRegion {
8
+ type: "2d-table";
9
+ toJSON(): _2DTableRegionJson;
10
+ static fromJSON(json: _2DTableRegionJson, table: Wtbl): _2DTableRegion;
11
+ }