realreport 1.11.28 → 1.11.30

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.
@@ -1,6 +1,6 @@
1
1
  /**
2
- * RealReport v1.11.28
3
- * commit dcd6502
2
+ * RealReport v1.11.30
3
+ * commit 4bbbdd1
4
4
 
5
5
  * {@link https://real-report.com}
6
6
  * Copyright (C) 2013-2026 WooriTech Inc.
@@ -8,10 +8,10 @@
8
8
  */
9
9
 
10
10
  /**
11
- * RealReport Core v1.11.28
11
+ * RealReport Core v1.11.30
12
12
  * Copyright (C) 2013-2026 WooriTech Inc.
13
13
  * All Rights Reserved.
14
- * commit 2114a67120e80520c9fc49538a54060cc7c15f79
14
+ * commit 88edcd3d8d4b3d9b29e2a6d346b0efc3e445566d
15
15
  */
16
16
  type ConfigObject$2 = {
17
17
  [key: string]: any;
@@ -382,7 +382,7 @@ declare class DragTracker$1 extends Base$1 {
382
382
  activate(): void;
383
383
  deactivate(): void;
384
384
  start(eventTarget: HTMLElement, x: number, y: number, shift: boolean, alt: boolean): boolean;
385
- drag(eventTarget: HTMLElement, x: number, y: number, meta: boolean): boolean;
385
+ drag(eventTarget: HTMLElement, x: number, y: number, meta: boolean, shift?: boolean): boolean;
386
386
  cancel(): void;
387
387
  drop(eventTarget: HTMLElement, x: number, y: number): void;
388
388
  end(): void;
@@ -398,7 +398,7 @@ declare class DragTracker$1 extends Base$1 {
398
398
  protected _doActivate(): void;
399
399
  protected _doDeactivate(): void;
400
400
  protected _doStart(eventTarget: HTMLElement, x: number, y: number, shfit: boolean, alt: boolean): boolean;
401
- protected _doDrag(eventTarget: HTMLElement, x: number, y: number, meta: boolean): boolean;
401
+ protected _doDrag(eventTarget: HTMLElement, x: number, y: number, meta: boolean, shift?: boolean): boolean;
402
402
  protected _doCanceled(x: number, y: number): void;
403
403
  protected _canAccept(eventTarget: HTMLElement, x: number, y: number): boolean;
404
404
  protected _doCompleted(eventTarget: HTMLElement, x: number, y: number): void;
@@ -1283,6 +1283,7 @@ interface IPropertySource {
1283
1283
  canPropAdoptDragSource(prop: IPropInfo, source: any): boolean;
1284
1284
  adoptPropDragSource(prop: IPropInfo, source: any): IDropResult;
1285
1285
  getCollapsedPropCategories?: () => string[];
1286
+ getPropertyCategoryLabel?: (category: string) => string;
1286
1287
  isCollectionProp(): boolean;
1287
1288
  isEditableCollection(): boolean;
1288
1289
  isCollectionItem(): boolean;
@@ -1334,6 +1335,7 @@ declare enum PropCategory {
1334
1335
  MARKER = "marker",
1335
1336
  LEGEND = "legend",
1336
1337
  SHEET = "sheet",
1338
+ COLUMN_HEADER = "columnHeader",
1337
1339
  GRID = "grid",
1338
1340
  LINE = "line",
1339
1341
  TICK = "tick",
@@ -2111,6 +2113,7 @@ declare class DataBandCollection extends ReportGroupItem {
2111
2113
  canContainsBand(): boolean;
2112
2114
  canContainsBandGroup(): boolean;
2113
2115
  canSized(): boolean;
2116
+ canResize(_dir: ResizeDirection): boolean;
2114
2117
  protected _doItemAdded(item: ReportItem, index: number): void;
2115
2118
  }
2116
2119
 
@@ -2685,6 +2688,177 @@ declare abstract class TableColumnCollectionBase<T extends ReportGroupItem, C ex
2685
2688
  private $_columnChanged;
2686
2689
  }
2687
2690
 
2691
+ declare class TableBandRowGroupCollection extends ReportItemCollection<TableBandRowGroup> {
2692
+ static readonly $_ctor: string;
2693
+ private _band;
2694
+ private _groups;
2695
+ constructor(band?: TableBand);
2696
+ get outlineParent(): IOutlineSource;
2697
+ get outlineLabel(): string;
2698
+ get outlineExpandable(): boolean;
2699
+ get outlineItems(): IOutlineSource[];
2700
+ getSaveType(): string;
2701
+ get owner(): ReportItem;
2702
+ /** band */
2703
+ get band(): TableBand;
2704
+ /** count */
2705
+ get count(): number;
2706
+ get items(): ReportPageItem[];
2707
+ get visibleCount(): number;
2708
+ /** groups */
2709
+ get groups(): TableBandRowGroup[];
2710
+ load(loader: IReportLoader, src: any): void;
2711
+ save(target: any): void;
2712
+ get(index: number): TableBandRowGroup;
2713
+ indexOf(group: TableBandRowGroup): number;
2714
+ add(group: TableBandRowGroup | ConfigObject$2, index?: number): TableBandRowGroup;
2715
+ addAll(groups: (TableBandRowGroup | ConfigObject$2)[], index?: number): boolean;
2716
+ removeAt(index: number): boolean;
2717
+ remove(group: TableBandRowGroup): boolean;
2718
+ clear(): boolean;
2719
+ getValidGroups(data: IBandData): TableBandRowGroup[];
2720
+ removeCols(index: number, count: number): void;
2721
+ resetCells(): void;
2722
+ get page(): ReportPageBase;
2723
+ get displayPath(): string;
2724
+ get level(): number;
2725
+ isAncestorOf(item: ReportPageItem): boolean;
2726
+ protected _doMoveItem(from: number, to: number): boolean;
2727
+ private $_add;
2728
+ private $_invalidateGroups;
2729
+ private $_groupChanged;
2730
+ }
2731
+
2732
+ /**
2733
+ * 특정 속성 카테고리에서 자식 스타일 정보를 하위로 생성해야할 때 사용
2734
+ */
2735
+ declare abstract class ReportItemObject<T extends ReportItem> extends ReportPageItem implements ReportObject {
2736
+ static readonly PROPINFOS: IPropInfo[];
2737
+ static readonly STYLE_PROPS: any[];
2738
+ private _item;
2739
+ private _styles;
2740
+ constructor(item: T);
2741
+ get outlineParent(): IOutlineSource;
2742
+ get outlineExpandable(): boolean;
2743
+ get outlineLabel(): string;
2744
+ getSaveType(): string;
2745
+ canRemoveFrom(): boolean;
2746
+ abstract getSaveLabel(): string;
2747
+ getEditProps(): IPropInfo[];
2748
+ getStyleProps(): IPropInfo[];
2749
+ getSubStyleProps(prop: string): IPropInfo[];
2750
+ getPlaceHolder(prop: IPropInfo): string;
2751
+ getPropDomain(prop: IPropInfo): any[];
2752
+ setItemsProperty(sources: IPropertySource[], prop: string, value: any): void;
2753
+ getStyle(style: string): string;
2754
+ setStyle(style: string, value: string): void;
2755
+ getStyleProperty(prop: string): any;
2756
+ setStyleProperty(prop: string, value: any): void;
2757
+ isChildProp(prop: string): boolean;
2758
+ getSubStyleProperty(prop: string, style: string): any;
2759
+ setSubStyleProperty(prop: string, style: string, value: any): void;
2760
+ setItemsSubStyleProperty(sources: IPropertySource[], prop: string, style: string, value: any): void;
2761
+ canPropAdoptDragSource(prop: IPropInfo, source: any): boolean;
2762
+ adoptPropDragSource(prop: IPropInfo, source: any): IDropResult;
2763
+ get item(): T;
2764
+ get page(): ReportPageBase;
2765
+ get report(): ReportBase;
2766
+ get styles(): Styles;
2767
+ set styles(value: Styles);
2768
+ defaultInit(): void;
2769
+ load(loader: IReportLoader, source: ReportSource): void;
2770
+ save(target: ReportTarget): boolean;
2771
+ isCollection(): boolean;
2772
+ protected _doDefaultInit(): void;
2773
+ protected _doLoad(loader: IReportLoader, source: ReportSource): void;
2774
+ protected _doSave(target: ReportTarget): void;
2775
+ protected _getEditProps(): IPropInfo[];
2776
+ protected _getStyleProps(): string[];
2777
+ protected _getSubStyle(prop: string, style: string): any;
2778
+ protected _setSubStyle(prop: string, style: string, value: any): void;
2779
+ protected _changed(prop: string, newValue: unknown, oldValue: unknown): void;
2780
+ }
2781
+
2782
+ declare class GroupRowColumnHeaderObject<T extends ReportGroupItem> extends ReportItemObject<T> {
2783
+ static readonly PROP_WIDTH = "width";
2784
+ static readonly PROP_TEXT = "text";
2785
+ static readonly PROPINFOS: IPropInfo[];
2786
+ private static readonly STYLES;
2787
+ private _text;
2788
+ constructor(groupRow: T);
2789
+ get pathLabel(): string;
2790
+ get displayPath(): string;
2791
+ get text(): string | undefined;
2792
+ set text(value: string | undefined);
2793
+ get level(): number;
2794
+ getSaveLabel(): string;
2795
+ protected _doLoad(loader: IReportLoader, source: ReportSource): void;
2796
+ protected _doSave(target: ReportTarget): void;
2797
+ _getEditProps(): IPropInfo[];
2798
+ _getStyleProps(): string[];
2799
+ getPropDomain(prop: IPropInfo): any[];
2800
+ }
2801
+
2802
+ declare class TableBandRowGroupRow extends ReportGroupItem {
2803
+ static readonly $_ctor: string;
2804
+ static readonly PROPINFOS: IPropInfo[];
2805
+ static readonly STYLE_PROPS: string[];
2806
+ private _group;
2807
+ private _columnHeader;
2808
+ constructor(group: TableBandRowGroup);
2809
+ /** columnHeader */
2810
+ get columnHeader(): GroupRowColumnHeaderObject<TableBandRowGroupRow>;
2811
+ isEmpty(): boolean;
2812
+ get outlineLabel(): string;
2813
+ get pathLabel(): string;
2814
+ canDelete(): boolean;
2815
+ protected _getEditProps(): IPropInfo[];
2816
+ protected _getStyleProps(): string[];
2817
+ canResize(dir: ResizeDirection): boolean;
2818
+ getDesignText(): string;
2819
+ protected _doLoad(loader: IReportLoader, src: any): void;
2820
+ protected _doSave(target: object): void;
2821
+ }
2822
+
2823
+ declare class TableBandRowGroup extends DataBandRowGroup {
2824
+ static readonly PROPINFOS: IPropInfo[];
2825
+ private _merged;
2826
+ private _collection;
2827
+ private _header;
2828
+ private _row;
2829
+ private _footer;
2830
+ constructor(collection: TableBandRowGroupCollection);
2831
+ get outlineParent(): IOutlineSource;
2832
+ get marqueeParent(): ReportItem;
2833
+ getEditProps(): IPropInfo[];
2834
+ getCollectionLabel(): string;
2835
+ /** header */
2836
+ get header(): TableBandRowGroupHeader;
2837
+ /** rowGroup – 그룹 데이터 행 영역 (rowGroupMerged 활성화 시 렌더링) */
2838
+ get rowGroup(): TableBandRowGroupRow;
2839
+ /** footer */
2840
+ get footer(): TableBandRowGroupFooter;
2841
+ /** band */
2842
+ get band(): TableBand;
2843
+ getWidth(domain: number): number;
2844
+ get page(): ReportPageBase;
2845
+ get report(): ReportBase;
2846
+ get collection(): TableBandRowGroupCollection;
2847
+ get dataParent(): ReportGroupItem;
2848
+ get outlineLabel(): string;
2849
+ get displayPath(): string;
2850
+ protected _ignoreItems(): boolean;
2851
+ protected _doLoad(loader: IReportLoader, src: any): void;
2852
+ protected _doSave(target: object): void;
2853
+ /**
2854
+ * 그룹 섹션(header / rowGroup / footer)을 로드한다.
2855
+ * 키가 없는 구 JSON과의 역호환: load가 호출되지 않더라도
2856
+ * cells 그리드는 반드시 초기화해야 렌더러 접근 시 오류가 발생하지 않는다.
2857
+ */
2858
+ private $_loadGroupSection;
2859
+ protected _changed(prop: string, newValue: any, oldValue: any): void;
2860
+ }
2861
+
2688
2862
  declare class TableBandColumn extends TableColumnBase {
2689
2863
  constructor(collection: TableBandColumnCollection, src?: any);
2690
2864
  getCollectionLabel(): string;
@@ -2744,22 +2918,13 @@ declare class TableBandHeader extends TableBandSection {
2744
2918
  constructor(band: TableBand, pageSection?: boolean);
2745
2919
  get outlineLabel(): string;
2746
2920
  get pathLabel(): string;
2921
+ protected _getEditProps(): IPropInfo[];
2747
2922
  }
2748
2923
  declare class TableBandFooter extends TableBandSection {
2749
- static readonly PROP_ATTACH_TO_BODY = "attachToBody";
2750
2924
  static readonly PROPINFOS: IPropInfo[];
2751
2925
  static readonly $_ctor: string;
2752
- private _attachToBody;
2753
2926
  private _pageSection;
2754
2927
  constructor(band: TableBand, pageSection?: boolean);
2755
- /**
2756
- * true면 multi column 모드일 때 마지막 컬럼의 마지막 행에 붙여서 출력하고,
2757
- * false면 모든 컬럼의 가장 아래쪽에 붙여서 출력한다.
2758
- *
2759
- * @default false
2760
- */
2761
- get attachToBody(): boolean;
2762
- set attachToBody(value: boolean);
2763
2928
  get outlineLabel(): string;
2764
2929
  get pathLabel(): string;
2765
2930
  protected _getEditProps(): IPropInfo[];
@@ -2773,6 +2938,7 @@ declare class TableBandFooter extends TableBandSection {
2773
2938
  declare class TableBandDataRow extends TableBandSection {
2774
2939
  static readonly PROP_EQUAL_BLANK = "equalBlank";
2775
2940
  static readonly PROP_BLANK_FIELDS = "blankFields";
2941
+ static readonly PROP_EQUAL_BLANK_ACROSS_PAGE = "equalBlankAcrossPage";
2776
2942
  static readonly PROP_MERGED_IN_GROUP = "mergedInGroup";
2777
2943
  static readonly PROP_PARAGRAPH_FLOW = "paragraphFlow";
2778
2944
  static readonly PROPINFOS: IPropInfo[];
@@ -2848,75 +3014,6 @@ declare class TableBandRowGroupFooter extends TableBandRowGroupSection {
2848
3014
  protected _doLoad(loader: IReportLoader, src: any): void;
2849
3015
  protected _doSave(target: object): void;
2850
3016
  }
2851
- declare class TableBandRowGroup extends DataBandRowGroup {
2852
- static readonly PROPINFOS: IPropInfo[];
2853
- private _merged;
2854
- private _collection;
2855
- private _header;
2856
- private _footer;
2857
- constructor(collection: TableBandRowGroupCollection);
2858
- get outlineParent(): IOutlineSource;
2859
- get marqueeParent(): ReportItem;
2860
- getEditProps(): IPropInfo[];
2861
- getCollectionLabel(): string;
2862
- /** header */
2863
- get header(): TableBandRowGroupHeader;
2864
- /** footer */
2865
- get footer(): TableBandRowGroupFooter;
2866
- /** band */
2867
- get band(): TableBand;
2868
- get page(): ReportPageBase;
2869
- get report(): ReportBase;
2870
- get collection(): TableBandRowGroupCollection;
2871
- get dataParent(): ReportGroupItem;
2872
- get outlineLabel(): string;
2873
- get displayPath(): string;
2874
- protected _ignoreItems(): boolean;
2875
- protected _doLoad(loader: IReportLoader, src: any): void;
2876
- protected _doSave(target: object): void;
2877
- protected _getStyleProps(): string[];
2878
- protected _changed(prop: string, newValue: any, oldValue: any): void;
2879
- }
2880
- declare class TableBandRowGroupCollection extends ReportItemCollection<TableBandRowGroup> {
2881
- static readonly $_ctor: string;
2882
- private _band;
2883
- private _groups;
2884
- constructor(band?: TableBand);
2885
- get outlineParent(): IOutlineSource;
2886
- get outlineLabel(): string;
2887
- get outlineExpandable(): boolean;
2888
- get outlineItems(): IOutlineSource[];
2889
- getSaveType(): string;
2890
- get owner(): ReportItem;
2891
- /** band */
2892
- get band(): TableBand;
2893
- /** count */
2894
- get count(): number;
2895
- get items(): ReportPageItem[];
2896
- get visibleCount(): number;
2897
- /** groups */
2898
- get groups(): TableBandRowGroup[];
2899
- load(loader: IReportLoader, src: any): void;
2900
- save(target: any): void;
2901
- get(index: number): TableBandRowGroup;
2902
- indexOf(group: TableBandRowGroup): number;
2903
- add(group: TableBandRowGroup | ConfigObject$2, index?: number): TableBandRowGroup;
2904
- addAll(groups: (TableBandRowGroup | ConfigObject$2)[], index?: number): boolean;
2905
- removeAt(index: number): boolean;
2906
- remove(group: TableBandRowGroup): boolean;
2907
- clear(): boolean;
2908
- getValidGroups(data: IBandData): TableBandRowGroup[];
2909
- removeCols(index: number, count: number): void;
2910
- resetCells(): void;
2911
- get page(): ReportPageBase;
2912
- get displayPath(): string;
2913
- get level(): number;
2914
- isAncestorOf(item: ReportPageItem): boolean;
2915
- protected _doMoveItem(from: number, to: number): boolean;
2916
- private $_add;
2917
- private $_invalidateGroups;
2918
- private $_groupChanged;
2919
- }
2920
3017
  /**
2921
3018
  * 페이지를 넘어갈 수 있다.
2922
3019
  * 한 row는 페이지를 넘어갈 수 없다.
@@ -2925,10 +3022,13 @@ declare class TableBandRowGroupCollection extends ReportItemCollection<TableBand
2925
3022
  * design-time에는 section마다 별도의 table로 표시되지만 printing 시에는 하나의 table element로 구현한다.
2926
3023
  */
2927
3024
  declare class TableBand extends TableLikeBand {
3025
+ static readonly PARAGRAPH_FLOW_ROW = "paragraphFlowRow";
3026
+ static readonly PARAGRAPH_FLOW_REPEAT_CELL = "paragraphFlowRepeatCell";
2928
3027
  static readonly PROP_COL_COUNT = "colCount";
2929
3028
  static readonly PROP_COLUMNS = "columns";
2930
3029
  static readonly PROP_GROUPS = "groups";
2931
3030
  static readonly PROP_END_ROW_MERGED = "endRowMerged";
3031
+ static readonly PROP_ROW_GROUP_MERGED = "rowGroupMerged";
2932
3032
  static readonly PROPINFOS: IPropInfo[];
2933
3033
  static readonly STYLE_PROPS: string[];
2934
3034
  static readonly DEFAULT_COL_COUNT = 5;
@@ -2936,6 +3036,7 @@ declare class TableBand extends TableLikeBand {
2936
3036
  static readonly ITEM_TYPE: string;
2937
3037
  private _colCount;
2938
3038
  private _endRowMerged;
3039
+ private _rowGroupMerged;
2939
3040
  private _columns;
2940
3041
  private _groups;
2941
3042
  private _header;
@@ -2956,6 +3057,14 @@ declare class TableBand extends TableLikeBand {
2956
3057
  */
2957
3058
  get endRowMerged(): boolean;
2958
3059
  set endRowMerged(value: boolean);
3060
+ /**
3061
+ * true이면 모든 섹션(header, dataRow, footer)의 내부 table element 너비를
3062
+ * '100%'가 아닌 컬럼 너비들의 합으로 고정한다.
3063
+ */
3064
+ get fixed(): boolean;
3065
+ set fixed(value: boolean);
3066
+ get rowGroupMerged(): boolean;
3067
+ set rowGroupMerged(value: boolean);
2959
3068
  /** columns */
2960
3069
  get columns(): TableBandColumnCollection;
2961
3070
  /** groups */
@@ -3138,6 +3247,7 @@ declare class SimpleBandFooter extends SimpleBandSection {
3138
3247
  declare class SimpleBandRow extends SimpleBandSection {
3139
3248
  static readonly PROP_EQUAL_BLANK = "equalBlank";
3140
3249
  static readonly PROP_BLANK_FIELDS = "blankFields";
3250
+ static readonly PROP_EQUAL_BLANK_ACROSS_PAGE = "equalBlankAcrossPage";
3141
3251
  static readonly CHILD_PROPS: IPropInfo[];
3142
3252
  static readonly $_ctor: string;
3143
3253
  private _blankItems;
@@ -3377,6 +3487,7 @@ declare class BandGroup extends ReportGroupItem {
3377
3487
  protected _doLoad(loader: IReportLoader, src: any): void;
3378
3488
  protected _doSave(target: object): void;
3379
3489
  canAdd(item: ReportItem): boolean;
3490
+ canResize(dir: ResizeDirection): boolean;
3380
3491
  private $_resetCells;
3381
3492
  }
3382
3493
 
@@ -3668,6 +3779,11 @@ declare abstract class TableElement<T extends TableBase> extends ReportGroupItem
3668
3779
  static readonly CLASS_NAME = "rr-table";
3669
3780
  static readonly INHERITED_CELL_ITEM_STYLES: string[];
3670
3781
  static setTableStyle(table: HTMLTableElement, fill?: boolean): void;
3782
+ /**
3783
+ * model.fixed가 true일 때 print table의 너비를 컬럼 너비 합계로 고정한다.
3784
+ * setTableStyle 호출 후에 사용한다.
3785
+ */
3786
+ static applyFixedWidth(table: HTMLTableElement, colGroup: HTMLTableColElement): void;
3671
3787
  static getTable(elt: VisualElement$1): TableElement<any>;
3672
3788
  private _masterView;
3673
3789
  private _table;
@@ -5722,56 +5838,6 @@ declare class PageItemContainer extends BoundedContainer {
5722
5838
  protected _getEditProps(): IPropInfo[];
5723
5839
  }
5724
5840
 
5725
- /**
5726
- * 특정 속성 카테고리에서 자식 스타일 정보를 하위로 생성해야할 때 사용
5727
- */
5728
- declare abstract class ReportItemObject<T extends ReportItem> extends ReportPageItem implements ReportObject {
5729
- static readonly PROPINFOS: IPropInfo[];
5730
- static readonly STYLE_PROPS: any[];
5731
- private _item;
5732
- private _styles;
5733
- constructor(item: T);
5734
- get outlineParent(): IOutlineSource;
5735
- get outlineExpandable(): boolean;
5736
- get outlineLabel(): string;
5737
- getSaveType(): string;
5738
- canRemoveFrom(): boolean;
5739
- abstract getSaveLabel(): string;
5740
- getEditProps(): IPropInfo[];
5741
- getStyleProps(): IPropInfo[];
5742
- getSubStyleProps(prop: string): IPropInfo[];
5743
- getPlaceHolder(prop: IPropInfo): string;
5744
- getPropDomain(prop: IPropInfo): any[];
5745
- setItemsProperty(sources: IPropertySource[], prop: string, value: any): void;
5746
- getStyle(style: string): string;
5747
- setStyle(style: string, value: string): void;
5748
- getStyleProperty(prop: string): any;
5749
- setStyleProperty(prop: string, value: any): void;
5750
- isChildProp(prop: string): boolean;
5751
- getSubStyleProperty(prop: string, style: string): any;
5752
- setSubStyleProperty(prop: string, style: string, value: any): void;
5753
- setItemsSubStyleProperty(sources: IPropertySource[], prop: string, style: string, value: any): void;
5754
- canPropAdoptDragSource(prop: IPropInfo, source: any): boolean;
5755
- adoptPropDragSource(prop: IPropInfo, source: any): IDropResult;
5756
- get item(): T;
5757
- get page(): ReportPageBase;
5758
- get report(): ReportBase;
5759
- get styles(): Styles;
5760
- set styles(value: Styles);
5761
- defaultInit(): void;
5762
- load(loader: IReportLoader, source: ReportSource): void;
5763
- save(target: ReportTarget): boolean;
5764
- isCollection(): boolean;
5765
- protected _doDefaultInit(): void;
5766
- protected _doLoad(loader: IReportLoader, source: ReportSource): void;
5767
- protected _doSave(target: ReportTarget): void;
5768
- protected _getEditProps(): IPropInfo[];
5769
- protected _getStyleProps(): string[];
5770
- protected _getSubStyle(prop: string, style: string): any;
5771
- protected _setSubStyle(prop: string, style: string, value: any): void;
5772
- protected _changed(prop: string, newValue: unknown, oldValue: unknown): void;
5773
- }
5774
-
5775
5841
  /**
5776
5842
  * 다국어 관련 속성 구현
5777
5843
  */
@@ -6611,6 +6677,12 @@ declare class DesignSheet extends Sheet {
6611
6677
  private _maxRow;
6612
6678
  private _minRow;
6613
6679
  get minRow(): number;
6680
+ /**
6681
+ * 아이템이 배치된 마지막 열의 exclusive upper bound.
6682
+ * 내부 _maxCol은 c + colSpan + 1로 계산되므로 -1 보정해서 반환한다.
6683
+ * 합산 시 0 ~ itemMaxCol-1 범위를 사용한다.
6684
+ */
6685
+ get itemMaxCol(): number;
6614
6686
  getColumn(col: number, create?: boolean): SheetColumn;
6615
6687
  getRow(row: number, create?: boolean): SheetRow;
6616
6688
  /**
@@ -9424,10 +9496,104 @@ interface ITableMarquee {
9424
9496
  hideSizeFeedbacks(): void;
9425
9497
  }
9426
9498
 
9499
+ /** @internal */
9500
+ declare class TableBandCellElement extends TableCellElementBase {
9501
+ constructor(doc: Document, table: TableElement<TableBase>, model: TableCellItem);
9502
+ }
9503
+
9504
+ declare class TableBandGroupSectionElement<T extends TableBandRowGroupSection> extends TableElement<T> {
9505
+ constructor(doc: Document, model: T);
9506
+ applyGroupStyles(tr: HTMLTableRowElement): void;
9507
+ protected _needDesignBox(): boolean;
9508
+ protected _createCellElement(doc: Document, cell: TableCellItem): TableCellElementBase;
9509
+ protected _doMeasure(ctx: PrintContext$1, dom: HTMLElement, hintWidth: number, hintHeight: number): Size$1;
9510
+ protected _doAfterMeasure(ctx: PrintContext$1, dom: HTMLElement, hintWidth: number, hintHeight: number, sz: Size$1): void;
9511
+ }
9512
+
9513
+ /** @internal */
9514
+ declare class TableBandGroupElement extends ReportGroupItemElement<TableBandRowGroup> {
9515
+ private _masterView;
9516
+ private _header;
9517
+ private _row;
9518
+ private _footer;
9519
+ private _headerHead;
9520
+ private _rowHead;
9521
+ private _footerHead;
9522
+ headIndent: number;
9523
+ constructor(doc: Document, model: TableBandRowGroup);
9524
+ get header(): TableBandGroupHeaderElement;
9525
+ get row(): TableBandGroupRowElement;
9526
+ get footer(): TableBandGroupFooterElement;
9527
+ protected _getCssSelector(): string;
9528
+ protected _needDesignBox(): boolean;
9529
+ protected _doSetStyles(model: ReportItem, dom: HTMLElement): void;
9530
+ protected _doMeasure(ctx: PrintContext$1, dom: HTMLElement, hintWidth: number, hintHeight: number): Size$1;
9531
+ protected _doAfterMeasure(ctx: PrintContext$1, dom: HTMLElement, hintWidth: number, hintHeight: number, sz: Size$1): void;
9532
+ protected _doLayoutContent(ctx: PrintContext$1): void;
9533
+ $_setMasterView(view: TableElement<any>): void;
9534
+ }
9535
+ declare class TableBandGroupHeaderElement extends TableBandGroupSectionElement<TableBandRowGroupHeader> {
9536
+ constructor(doc: Document, model: TableBandRowGroupHeader);
9537
+ protected _getCssSelector(): string;
9538
+ protected _setTableStyles(table: HTMLTableElement): void;
9539
+ }
9540
+ declare class TableBandGroupFooterElement extends TableBandGroupSectionElement<TableBandRowGroupFooter> {
9541
+ constructor(doc: Document, model: TableBandRowGroupFooter);
9542
+ protected _getCssSelector(): string;
9543
+ protected _setTableStyles(table: HTMLTableElement): void;
9544
+ }
9545
+ /**
9546
+ * rowGroupMerged 행 병합 그룹핑이 적용될 시 행병합된 셀의 스타일을 설정하고 표현하기 위해 따로 작성
9547
+ */
9548
+ declare class TableBandGroupRowElement<T extends TableBandRowGroupRow = TableBandRowGroupRow> extends ReportGroupItemElement<T> {
9549
+ static readonly GROUP_ROW_CLASS = "rr-tableband-group-row";
9550
+ private _view;
9551
+ constructor(doc: Document, model: T);
9552
+ protected _getCssSelector(): string;
9553
+ /**
9554
+ * _view는 addDom()으로 추가된 raw DOM이라 VisualElement children에 등록되지 않는다.
9555
+ * containsDom()으로 _view 영역 클릭도 자기 자신으로 인식하도록 override한다.
9556
+ */
9557
+ findElementOf(dom: HTMLElement): ReportGroupItemElement<T>;
9558
+ protected _doMeasure(ctx: PrintContextBase, dom: HTMLElement, hintWidth: number, hintHeight: number): Size$1;
9559
+ protected _doLayoutContent(ctx: PrintContextBase): void;
9560
+ }
9561
+
9562
+ /** 행 타입 구분 ('data' | 'groupHeader' | 'groupFooter') */
9563
+ type GroupRowType = 'data' | 'groupHeader' | 'groupFooter';
9564
+ /**
9565
+ * RowGroupMerger의 핵심 행위들을 추상화한 인터페이스.
9566
+ * rowGroupMerged 모드가 활성 상태(RowGroupMerger)이거나 비활성 상태(NullRowGroupMerger)일 때
9567
+ * 동일한 방식으로 호출할 수 있도록 정의합니다.
9568
+ */
9569
+ interface IRowGroupMerger {
9570
+ /** 그룹 뷰 개수 */
9571
+ readonly groupCount: number;
9572
+ /** 그룹 열들의 총 너비 (px) */
9573
+ readonly totalWidth: number;
9574
+ /** 새 테이블 시작 시 병합 상태를 초기화한다. */
9575
+ resetState(): void;
9576
+ /** 데이터/그룹헤더/푸터 행에 그룹 레벨별 td를 삽입하고 병합(rowspan)을 처리한다. */
9577
+ applyGroupTds(doc: Document, trs: HTMLTableRowElement[], rowType: GroupRowType, group: IBandRowGroup | null): void;
9578
+ /** 그룹 헤더/푸터의 콘텐츠 측정 너비를 계산하여 반환한다. */
9579
+ getContentWidth(pageWidth: number, group: IBandRowGroup | null): number;
9580
+ /** 밴드 헤더 행 앞에 그룹 열 헤더 td를 삽입한다. */
9581
+ applyBandHeaderTds(doc: Document, tbody: HTMLTableSectionElement, rowsBefore: number): void;
9582
+ /** 밴드 푸터 행 앞에 그룹 열 td를 삽입한다. */
9583
+ applyBandFooterTds(doc: Document, tbody: HTMLTableSectionElement, rowsBefore: number): void;
9584
+ /** 그룹 열을 포함한 colGroup 요소를 생성한다. */
9585
+ createColGroup(doc: Document, width: number, dataColGroupCreator: (doc: Document, width: number) => HTMLTableColElement): HTMLTableColElement;
9586
+ /** 그룹 헤더 처리 후 그룹 정보를 보관한다. (페이지 복원에 사용) */
9587
+ savePrevGroupHeader(group: IBandRowGroup): void;
9588
+ /** 새 페이지 시작 시 이전 페이지의 그룹 헤더 상태를 복원한다. */
9589
+ restorePrevGroupHeader(doc: Document, trs: HTMLTableRowElement[]): void;
9590
+ }
9591
+
9427
9592
  /** @internal */
9428
9593
  declare class TableBodyLine {
9429
9594
  protected _rows: HTMLTableRowElement[];
9430
9595
  private _height;
9596
+ static readonly GLC_FIXED_HEIGHT_KEY = "$_glcFixedHeight";
9431
9597
  constructor(trows: HTMLTableRowElement[], row: number, nRow: number);
9432
9598
  get count(): number;
9433
9599
  get height(): number;
@@ -9451,10 +9617,6 @@ declare class TableBodyLine {
9451
9617
  fitHeight(src: TableBodyLine): void;
9452
9618
  }
9453
9619
  /** @internal */
9454
- declare class TableBandCellElement extends TableCellElementBase {
9455
- constructor(doc: Document, table: TableElement<TableBase>, model: TableCellItem);
9456
- }
9457
- /** @internal */
9458
9620
  declare abstract class TableBandSectionElement<T extends TableBandSection> extends TableElement<T> {
9459
9621
  constructor(doc: Document, model: T, styleName: string);
9460
9622
  get debugLabel(): string;
@@ -9475,52 +9637,76 @@ declare class TableBandFooterElement extends TableBandSectionElement<TableBandFo
9475
9637
  declare class TableBandDataRowElement extends TableBandSectionElement<TableBandDataRow> {
9476
9638
  private _styles;
9477
9639
  private _cellStyles;
9640
+ /**
9641
+ * border-collapse 테이블의 셀 콘텐츠 주정 너비를 계산한다.
9642
+ *
9643
+ * [border-collapse 에서의 getBoundingClientRect() 특성]
9644
+ * td.getBoundingClientRect().width = content + padding + (borderLeft + borderRight) / 2
9645
+ * 단, 첫번째/마지막 셀 위치에 관계없이 항상 border/2 이다.
9646
+ *
9647
+ * rr-table-cell div는 td content area 안에 위치하므로 padding을 항상 제거해야 한다.
9648
+ * Math.floor는 중간 계산이 아닌 최종 결과에만 적용하여 소수점 정밀도 손실를 방지한다.
9649
+ *
9650
+ * @param tdWidth td의 실제 렌더링 너비 (px, 호입자가 별도로 결정)
9651
+ * @param td border/padding 스타일 읽기용 td 요소. 없으면 1px 보정만 적용
9652
+ * @returns 측정에 사용할 너비 (px, 소수점 버림)
9653
+ */
9654
+ private static _calcCellContentWidth;
9478
9655
  applyCellStyles(ctx: PrintContext$1, band: TableBand, tr: HTMLTableRowElement, trow: number, dynRowStyles: any): void;
9479
9656
  $_refreshRowCells(ctx: PrintContext$1, hintWidth: number, hintHeight: number, force?: boolean, tableRows?: HTMLTableRowElement[]): void;
9480
9657
  protected _setTableStyles(table: HTMLTableElement): void;
9481
9658
  protected _setRowStyles(tr: HTMLTableRowElement, row: number): void;
9482
9659
  private $_getCellStyleCallback;
9483
9660
  }
9484
- declare class TableBandGroupSectionElement<T extends TableBandRowGroupSection> extends TableElement<T> {
9485
- constructor(doc: Document, model: T);
9486
- applyGroupStyles(tr: HTMLTableRowElement): void;
9487
- protected _needDesignBox(): boolean;
9488
- protected _createCellElement(doc: Document, cell: TableCellItem): TableCellElementBase;
9489
- protected _doMeasure(ctx: PrintContext$1, dom: HTMLElement, hintWidth: number, hintHeight: number): Size$1;
9490
- protected _doAfterMeasure(ctx: PrintContext$1, dom: HTMLElement, hintWidth: number, hintHeight: number, sz: Size$1): void;
9491
- }
9492
- declare class TableBandGroupHeaderElement extends TableBandGroupSectionElement<TableBandRowGroupHeader> {
9493
- constructor(doc: Document, model: TableBandRowGroupHeader);
9494
- protected _getCssSelector(): string;
9495
- protected _setTableStyles(table: HTMLTableElement): void;
9496
- }
9497
- declare class TableBandGroupFooterElement extends TableBandGroupSectionElement<TableBandRowGroupFooter> {
9498
- constructor(doc: Document, model: TableBandRowGroupFooter);
9499
- protected _getCssSelector(): string;
9500
- protected _setTableStyles(table: HTMLTableElement): void;
9501
- }
9502
- /** @internal */
9503
- declare class TableBandGroupElement extends ReportGroupItemElement<TableBandRowGroup> {
9504
- private _masterView;
9505
- private _header;
9506
- private _footer;
9507
- private _headerHead;
9508
- private _footerHead;
9509
- headIndent: number;
9510
- constructor(doc: Document, model: TableBandRowGroup);
9511
- get header(): TableBandGroupHeaderElement;
9512
- get footer(): TableBandGroupFooterElement;
9513
- protected _getCssSelector(): string;
9514
- protected _needDesignBox(): boolean;
9515
- protected _doMeasure(ctx: PrintContext$1, dom: HTMLElement, hintWidth: number, hintHeight: number): Size$1;
9516
- protected _doLayoutContent(ctx: PrintContext$1): void;
9517
- $_setMasterView(view: TableElement<any>): void;
9518
- }
9519
9661
  interface ITableGroupPrintInfo extends IGroupPrintInfo {
9520
- view: TableBandGroupSectionElement<TableBandRowGroupHeader | TableBandRowGroupFooter>;
9662
+ view: TableBandGroupSectionElement<TableBandRowGroupHeader | TableBandRowGroupFooter> | null;
9521
9663
  needNextPage: boolean;
9522
9664
  }
9523
9665
  type TableBandPrintRow = BandPrintRow | ITableGroupPrintInfo;
9666
+ /**
9667
+ * ParagraphFlow 모드의 상태 정보.
9668
+ * 페이지 분할 시 텍스트 라인, 병합 상태, 이미지 정보 등을 추적한다.
9669
+ */
9670
+ interface ParagraphFlowState {
9671
+ /** 현재 처리 중인 row의 텍스트 라인들 [컬럼인덱스][라인인덱스] */
9672
+ currentRowColumnTextLines: {
9673
+ r: IRect;
9674
+ line: string;
9675
+ }[][];
9676
+ /** 현재 처리 중인 DataRow 내 행 인덱스 (Row Count가 2이상인 경우) */
9677
+ rowIndex: number;
9678
+ /** 모든 row의 텍스트 라인들 [행인덱스][컬럼인덱스][라인인덱스] */
9679
+ allRowColumnTextLines: {
9680
+ r: IRect;
9681
+ line: string;
9682
+ }[][][];
9683
+ /** 각 행의 각 컬럼별 원본 텍스트 (repeat 속성용) [행인덱스][컬럼인덱스] */
9684
+ originalTexts: string[][];
9685
+ /** 각 행의 각 컬럼별 한 페이지 출력 가능 여부 (repeat 적용 조건) [행인덱스][컬럼인덱스] */
9686
+ canRepeat: boolean[][];
9687
+ /** 각 행의 각 컬럼별 상하 패딩 합 [행인덱스][컬럼인덱스] */
9688
+ columnPaddings: number[][];
9689
+ /** 각 행의 각 컬럼별 rich 텍스트 여부 [행인덱스][컬럼인덱스] */
9690
+ isRichCell: boolean[][];
9691
+ /** 각 행의 각 컬럼별 image 아이템 여부 [행인덱스][컬럼인덱스] */
9692
+ isImageCell: boolean[][];
9693
+ /** 각 행의 image 셀 중 최대 높이 [행인덱스] */
9694
+ maxImageHeights: number[];
9695
+ /** 각 행의 image 출력 여부 [행인덱스] */
9696
+ imageRendered: boolean[];
9697
+ /** 각 행의 각 컬럼별 rowspan에 의해 hidden된 셀 여부 [행인덱스][컬럼인덱스] */
9698
+ rowspanHidden: boolean[][];
9699
+ /** rowspan hidden 셀의 원본 셀 스타일 (td.style.cssText) [행인덱스][컬럼인덱스] */
9700
+ rowspanOriginStyles: string[][];
9701
+ /** rowspan hidden 셀의 원본 셀 innerHTML [행인덱스][컬럼인덱스] */
9702
+ rowspanOriginInnerHTML: string[][];
9703
+ /**
9704
+ * 현재 페이지(tbody)에서 rowspan 복원된 셀 추적.
9705
+ * 같은 rowspan 그룹 내 후속 행은 이 셀의 rowSpan을 연장하고 hidden을 유지한다.
9706
+ * 키: 컬럼 인덱스, 값: 복원된 td 요소
9707
+ */
9708
+ rowspanRestoredCells: Map<number, HTMLTableCellElement>;
9709
+ }
9524
9710
  declare class TableBandPrintInfo extends BandPrintInfo<TableBand> {
9525
9711
  bandView: TableBandElement;
9526
9712
  headerView: TableBandHeaderElement;
@@ -9540,40 +9726,42 @@ declare class TableBandPrintInfo extends BandPrintInfo<TableBand> {
9540
9726
  detailRows: number[];
9541
9727
  };
9542
9728
  prevGroupPageBreak: PageBreakMode;
9729
+ /** rowGroupMerged 모드에서 그룹 열 병합을 전담하는 헬퍼 (비활성 시 NullRowGroupMerger) */
9730
+ groupMerger: IRowGroupMerger;
9543
9731
  /** paragraphFlow 모드 상태 */
9544
- paragraphFlowState: {
9545
- /** 현재 처리 중인 row의 텍스트 라인들 [컬럼인덱스][라인인덱스] */
9546
- currentRowColumnTextLines: {
9547
- r: IRect;
9548
- line: string;
9549
- }[][];
9550
- /** 현재 처리 중인 DataRow 내 행 인덱스 (Row Count가 2이상인 경우) */
9551
- rowIndex: number;
9552
- /** 모든 row의 텍스트 라인들 [행인덱스][컬럼인덱스][라인인덱스] */
9553
- allRowColumnTextLines: {
9554
- r: IRect;
9555
- line: string;
9556
- }[][][];
9557
- /** 각 행의 각 컬럼별 원본 텍스트 (repeat 속성용) [행인덱스][컬럼인덱스] */
9558
- originalTexts: string[][];
9559
- /** 각 행의 각 컬럼별 한 페이지 출력 가능 여부 (repeat 적용 조건) [행인덱스][컬럼인덱스] */
9560
- canRepeat: boolean[][];
9561
- /** 각 행의 각 컬럼별 상하 패딩 합 [행인덱스][컬럼인덱스] */
9562
- columnPaddings: number[][];
9563
- /** 각 행의 각 컬럼별 rich 텍스트 여부 [행인덱스][컬럼인덱스] */
9564
- isRichCell: boolean[][];
9565
- /** 각 행의 각 컬럼별 image 아이템 여부 [행인덱스][컬럼인덱스] */
9566
- isImageCell: boolean[][];
9567
- /** 각 행의 image 셀 중 최대 높이 [행인덱스] */
9568
- maxImageHeights: number[];
9569
- /** 각 행의 image 출력 여부 [행인덱스] */
9570
- imageRendered: boolean[];
9571
- } | null;
9732
+ paragraphFlowState: ParagraphFlowState | null;
9572
9733
  isEnded(): boolean;
9573
9734
  getRows(): any[];
9574
9735
  resetRowIndex(): void;
9575
9736
  rollback(page: HTMLDivElement): void;
9576
9737
  getNextPage(doc: Document, ctx: PrintContext$1, pageWidth: number, parent: HTMLDivElement): HTMLDivElement | null;
9738
+ /**
9739
+ * ParagraphFlow에서 rowspan 병합 상태를 복원한다.
9740
+ *
9741
+ * ParagraphFlow는 한 행(tr)씩 출력하므로, 원본 테이블의 rowspan 구조가
9742
+ * 페이지 분할 시 깨질 수 있다. 이 메서드는 세 가지 케이스를 처리한다:
9743
+ *
9744
+ * 1) 같은 페이지에서 이미 복원된 셀이 있는 경우 → rowSpan만 연장
9745
+ * 2) hidden 셀을 새로 복원해야 하는 경우 → visible로 전환 후 추적 등록
9746
+ * 3) 원본 rowspan 시작 셀(hidden이 아닌 셀) → rowSpan=1로 리셋 후 추적 등록
9747
+ *
9748
+ * @param trs 현재 출력할 행 배열
9749
+ * @param tbody 현재 페이지의 tbody 요소
9750
+ * @param state ParagraphFlow 상태
9751
+ * @param rowIndex 현재 행 인덱스
9752
+ */
9753
+ private $_restoreParagraphFlowRowspan;
9754
+ /**
9755
+ * rowspan에 의해 hidden된 셀을 복원하거나, 기존 복원 셀의 rowSpan을 연장한다.
9756
+ *
9757
+ * 우선순위:
9758
+ * 1) rowspanRestoredCells에 이미 복원된 셀이 있으면 → rowSpan만 연장
9759
+ * (주의: originInTbody보다 먼저 체크해야 한다.
9760
+ * 복원 셀의 rowSpan이 2 이상이면 originInTbody에서 원본 시작 셀로 오인하기 때문)
9761
+ * 2) 원본 rowspan 시작 행이 현재 tbody에 있으면 → 복원 불필요 (스킵)
9762
+ * 3) 위 조건에 해당하지 않으면 → hidden 셀을 visible로 전환하고 추적 등록
9763
+ */
9764
+ private $_restoreHiddenRowspanCell;
9577
9765
  /**
9578
9766
  * paragraphFlowLines에서 현재 페이지에 맞는 라인들을 추출하여 trs에 적용
9579
9767
  * @returns 출력된 경우 { itemHeight, linesRemaining }, 출력할 라인이 없으면 null
@@ -9654,7 +9842,11 @@ declare class TableBandElement extends BandElement<TableBand> implements ITable
9654
9842
  static readonly ROW_CLASS = "-rrp-tableband-row";
9655
9843
  static readonly DUMMY_CLASS = "-rrp-tableband-dummy";
9656
9844
  static readonly DUMMY_GROUP_FOOTER = "_dummy_group_footer_";
9657
- static checkBlanks(band: TableBand, r: number, rows: TableBodyLine): void;
9845
+ static checkBlanks(band: TableBand, r: number, rows: TableBodyLine, isFirstRow?: boolean): void;
9846
+ /**
9847
+ * ParagraphFlow 상태일 경우에 처리
9848
+ */
9849
+ static paragraphFlowMakeBlank(band: TableBand, printRow: number, rows: TableBodyLine, isFirstRow?: boolean): void;
9658
9850
  private _headerView;
9659
9851
  private _footerView;
9660
9852
  private _rowView;
@@ -10175,6 +10367,7 @@ declare class BandGroupMarquee extends EditMarquee<BandGroupElement> {
10175
10367
  private static readonly STYLE_NAME;
10176
10368
  private static readonly W_ITEM;
10177
10369
  private static readonly H_ITEM;
10370
+ private static readonly H_GROUP_LABEL;
10178
10371
  static $_isContainer(dom: HTMLElement): boolean;
10179
10372
  static getTarget(target: ReportItem, dom: HTMLElement): IEditMarqueeTarget;
10180
10373
  private _tableItem;
@@ -13027,6 +13220,7 @@ declare class PageBodyItems extends ColumnBoxContainer {
13027
13220
  protected _getStyleProps(): string[];
13028
13221
  canAdoptDragSource(source: any): boolean;
13029
13222
  adoptDragSource(source: any): IDropResult;
13223
+ protected _getEditProps(): IPropInfo[];
13030
13224
  }
13031
13225
  /**
13032
13226
  * Report header/footer, Page header/footer를 제외한 리포트 페이지 영역.
@@ -13196,6 +13390,7 @@ declare class PageBodyElement extends ReportElement {
13196
13390
  */
13197
13391
  getLine(index: number): ReportItemView;
13198
13392
  getLines(): ReportItemView[];
13393
+ isPrintable(ctx: PrintContext$1): boolean;
13199
13394
  prepareAsync(doc: Document, ctx: PrintContext$1): PrintLine[];
13200
13395
  itemOfDom(dom: Element): ReportItem;
13201
13396
  protected _getCssSelector(): string;
@@ -14731,6 +14926,13 @@ declare abstract class ReportItem extends ReportPageItem {
14731
14926
  * 이 속성을 지정하지 않으면 value에 지정된 필드의 값으로 비교한다.
14732
14927
  */
14733
14928
  get blankFields(): string;
14929
+ /**
14930
+ * TableBandRow / SimpleBandRow.
14931
+ * equalBlank가 true일 때, 페이지가 넘어가도 이전 페이지 마지막 행과 값을 비교하여
14932
+ * 동일하면 blank 처리를 계속 적용한다.
14933
+ * false(기본값)이면 페이지 내부에서만 equalBlank를 처리한다.
14934
+ */
14935
+ get equalBlankAcrossPage(): boolean;
14734
14936
  /**
14735
14937
  * true로 지정되면 값과 상관 없이 leaf group 내의 모든 셀을 merge한다.
14736
14938
  * 또, 둘 이상의 table row로 출력되는 경우에도 이 아이템이 속한 컬럼 셀들을 모두 병합한다.
@@ -49947,6 +50149,7 @@ declare abstract class ReportViewBase {
49947
50149
  get page(): number;
49948
50150
  set page(v: number);
49949
50151
  get reportHtml(): string;
50152
+ get editableItems(): ReportEditableItem[];
49950
50153
  getHtml(): string;
49951
50154
  first(): void;
49952
50155
  prev(): void;
@@ -50072,16 +50275,21 @@ interface GridReportOptions$1 extends ReportOptions {
50072
50275
  layout?: GridReportLayout;
50073
50276
  }
50074
50277
  /**
50075
- * GridreportViewer
50278
+ * GridReportViewer
50279
+ *
50280
+ * RealGrid 그리드 뷰의 데이터를 리포트로 변환하여
50281
+ * 미리보기, 인쇄, 내보내기를 제공한다.
50282
+ *
50283
+ * 내부 구성 (Composition):
50284
+ * - {@link GridReportTableBuilder}: TableBand 구성
50285
+ * - {@link GridReportGroupBuilder}: mergeMode 행 그룹 병합
50286
+ * - {@link GridReportStyleApplier}: 스타일 적용
50076
50287
  */
50077
50288
  declare class GridReportViewer extends ReportViewer {
50078
- static readonly HEADER_ITEM_STYLES: string[];
50079
- static readonly HEADER_STYLES: string[];
50080
- static readonly CELL_STYLES: string[];
50081
50289
  static readonly PAPER_SIZES: string[];
50082
50290
  private _grid;
50291
+ private _gridCore;
50083
50292
  private _gridValues;
50084
- private _gridTable;
50085
50293
  protected _options: GridReportOptions$1;
50086
50294
  constructor(container: string | HTMLDivElement, grid: GridView, options?: GridReportOptions$1);
50087
50295
  /**
@@ -50090,7 +50298,7 @@ declare class GridReportViewer extends ReportViewer {
50090
50298
  get startColIdx(): number;
50091
50299
  set options(options: GridReportOptions$1);
50092
50300
  /**
50093
- * 컨테이너에 미리보기 랜더링
50301
+ * 컨테이너에 미리보기 렌더링
50094
50302
  */
50095
50303
  preview(options?: PreviewOptions): Promise<void>;
50096
50304
  /**
@@ -50105,72 +50313,95 @@ declare class GridReportViewer extends ReportViewer {
50105
50313
  private $_initReport;
50106
50314
  /**
50107
50315
  * 타이틀 또는 서브 타이틀 추가
50108
- * @param title GridReportTitle 객체
50109
- * @returns
50110
50316
  */
50111
- private _addTitle;
50317
+ private $_addTitle;
50112
50318
  /**
50113
50319
  * 그리드 윗쪽 헤더 추가
50114
- * @param header GridReportHeader 객체
50115
- * @returns
50116
50320
  */
50117
- private _addGridHeader;
50321
+ private $_addGridHeader;
50118
50322
  /**
50119
- * 페이지 헤더 추가.
50120
- * @param header PageHeader 객체
50121
- * @returns
50323
+ * 페이지 헤더 추가
50122
50324
  */
50123
- private _addPageHeader;
50325
+ private $_addPageHeader;
50124
50326
  /**
50125
50327
  * 페이지 푸터 추가
50126
- * @param footer PageFooter 객체
50127
- * @returns
50128
50328
  */
50129
- private _addPageFooter;
50329
+ private $_addPageFooter;
50130
50330
  /**
50131
- * Layout 정보
50132
- * - visibleCount: number
50133
- * - getDataColumns(): DataColumn[]
50134
- * - headerRows: number
50331
+ * 그리드 테이블 밴드를 구성하여 리포트에 추가한다.
50332
+ *
50333
+ * {@link GridReportTableBuilder}에게 테이블 구성을 위임하고,
50334
+ * mergeMode 그룹핑이 활성화된 경우 {@link GridReportGroupBuilder}에게 그룹 구성을 위임한다.
50135
50335
  */
50136
- private _addGridTable;
50137
- private _prepare;
50336
+ private $_addGridTable;
50337
+ /**
50338
+ * 미리보기/인쇄 전 리포트 항목들을 구성한다.
50339
+ */
50340
+ private $_prepare;
50138
50341
  /**
50139
50342
  * 강제로 그리드 뷰 렌더링
50140
- * @param grid GridView
50141
50343
  */
50142
50344
  private $_forceGridViewRender;
50143
50345
  /**
50144
- * 리얼리포트 테이블밴드 헤더 영역 스타일을 지정한다.
50145
- * 리얼그리드 특성상 로우 인디케이터 영역이 따로 존재하기 때문에 해당 영역은 추가로 따로 설정할 수 있다.
50346
+ * 그리드 헤더 DOM에서 기본 셀 스타일(padding, color, fontSize, fontWeight, textAlign, verticalAlign)을 추출한다.
50347
+ * 그룹 헤더/푸터/rowGroup columnHeader 병합된 rowGroup 행에 그리드와 일관된 스타일을 반영하기 위해 사용된다.
50348
+ *
50349
+ * 패딩 값이 없거나 0px인 경우 좌우 4px를 기본값으로 적용한다.
50146
50350
  */
50147
- private $_applyHeaderSectionStyles;
50351
+ private $_extractGridCellStyles;
50148
50352
  /**
50149
- * 헤더 섹션 아이템들에 대한 스타일 적용 처리
50353
+ * 컬럼의 groupFooter 스타일을 숨겨진 더미 DOM 방식으로 추출한다.
50354
+ *
50355
+ * 리얼그리드는 내부적으로 `.rg-rowgroup-footer-cell` 클래스에
50356
+ * 컬럼의 `styleName`을 합성하여 렌더링한다.
50357
+ * 우리도 동일한 방식으로 더미 div를 만들어
50358
+ * computedStyle로 스타일을 추출한 다 즉시 제거한다.
50359
+ *
50360
+ * 우선순위: groupFooter.styleName → column.styleName
50361
+ *
50362
+ * @param dataColumns visible한 DataColumn 목록
50363
+ * @returns fieldName → GridExtractedCellStyle 맵
50150
50364
  */
50151
- private $_applyHeaderItemStyles;
50365
+ private $_extractGroupFooterCellStyles;
50152
50366
  /**
50153
- * 테이블영역에 스타일 지정
50154
- * @param table
50155
- * @param cell
50156
- * @param styles
50157
- * @returns
50367
+ * 숨겨진 더미 DOM에서 그리드 스타일을 추출한다.
50368
+ *
50369
+ * 리얼그리드의 실제 렌더링 구조(`<td class="baseClass styleName"><div>텍스트</div></td>`)를
50370
+ * 재현하기 위해 부모(baseClass + styleName) + 자식(div) 2단 구조의 더미 DOM을 생성한다.
50371
+ * 이를 통해 `.styleName > div { text-align: right }` 같은 자식 셀렉터 기반 CSS도
50372
+ * 정확히 매칭되어 computedStyle로 추출할 수 있다.
50373
+ *
50374
+ * 추출 후 DOM에서 즉시 제거하여 부작용을 방지한다.
50375
+ *
50376
+ * 사용 예시:
50377
+ * - 그룹 푸터 셀: baseClass='rg-rowgroup-footer-cell'
50378
+ * - 데이터 셀: baseClass='rg-data-cell'
50379
+ *
50380
+ * @param mountTarget 더미 DOM을 붙일 부모 요소 (그리드 body DOM 권장)
50381
+ * @param baseClass 리얼그리드 기본 셀 CSS 클래스명
50382
+ * @param styleName 적용할 추가 CSS 클래스명 (column.styleName). 비어있으면 baseClass만 적용.
50383
+ * @returns 추출된 스타일 객체. 모두 기본값이면 undefined 반환.
50158
50384
  */
50159
- private $_applyCellItemStyles;
50160
- private $_applyItemStyles;
50385
+ private $_extractStyleFromDummyDom;
50161
50386
  /**
50162
- * 옵션으로 지정한 CellStyleCallback을 지정한다.
50163
- * @param cell 데이터 로우 셀 영역
50387
+ * 컬럼의 데이터 셀 스타일을 숨겨진 더미 DOM 방식으로 추출한다.
50388
+ *
50389
+ * 리얼그리드는 데이터 셀에 `.rg-data-cell` 클래스를 기본으로 적용하고,
50390
+ * 컬럼의 `styleName`을 합성하여 렌더링한다.
50391
+ * styleName이 없는 컬럼도 `.rg-data-cell` 기본 클래스로
50392
+ * textAlign / verticalAlign 정렬값을 추출하여 데이터 행 정렬을 정확히 반영한다.
50393
+ *
50394
+ * @returns fieldName → GridExtractedCellStyle 맵 (모두 기본값인 컬럼은 제외)
50164
50395
  */
50165
- private $_applyCellStyleCallback;
50166
- private $_getMathcedColumn;
50167
- private $_applyColumnHeaderOptions;
50396
+ private $_extractDataCellStyles;
50168
50397
  /**
50169
- * 컬럼 옵션 스타일을 적용한다.
50398
+ * CSS 텍스트 정렬값을 리얼리포트가 지원하는 물리값으로 정규화한다.
50399
+ * 브라우저는 getComputedStyle().textAlign에서 start/end를 반환할 수 있다.
50400
+ * start → left, end → right로 변환하며, 그 외 지원하지 않는 값은 undefined를 반환한다.
50170
50401
  */
50171
- private $_applyColumnOptions;
50402
+ private $_normalizeTextAlign;
50172
50403
  /**
50173
- *
50404
+ * 종이 크기 문자열을 PaperSize 타입으로 변환한다.
50174
50405
  */
50175
50406
  private $_getPaperSize;
50176
50407
  }
@@ -50264,6 +50495,10 @@ type ReportFormSet = {
50264
50495
  dataSet?: ReportDataSet;
50265
50496
  };
50266
50497
  type ReportFormSets = ReportFormSet[];
50498
+ type ReportEditableItem = {
50499
+ name: string;
50500
+ value: unknown;
50501
+ };
50267
50502
 
50268
50503
  type CommonStyleName = 'color' | 'backgroundColor' | 'fontSize' | 'fontWeight' | 'textAlign' | 'padding' | 'paddingLeft' | 'paddingRightt' | 'paddingTop' | 'paddingBottom';
50269
50504
  type CommonStyles = {
@@ -50518,4 +50753,4 @@ declare const IMG_EXPORT_DEFAULT_OPTIONS: ImageExportOptions;
50518
50753
  */
50519
50754
  declare const ZOOM_ERROR_MESSAGE = "\uD398\uC774\uC9C0 \uBC30\uC728 \uAC12\uC774 100%\uC778 \uACBD\uC6B0\uB9CC \uB0B4\uBCF4\uB0B4\uAE30\uAC00 \uAC00\uB2A5\uD569\uB2C8\uB2E4. \uD398\uC774\uC9C0 \uBC30\uC728 \uAC12\uC774 100%\uC778\uC9C0 \uD655\uC778\uD574 \uC8FC\uC138\uC694.";
50520
50755
 
50521
- export { DOC_EXPORT_DEFAULT_OPTIONS, DocumentExportBlobOptions, DocumentExportOptions, DocumentsExportFromDataOptions, ExportImageOptions, FontStore, GridReportHeader, GridReportItemSource, GridReportLayout, GridReportLayoutHeader, GridReportOptions, GridReportSaveOptions, GridReportTitle, GridReportViewer, IMG_EXPORT_DEFAULT_OPTIONS, ImageExportBlobOptions, ImageExportOptions, LayoutColumn, PDFExportBlobOptions, PDFExportOptions, PreviewOptions, PrintOptions, ReportCompositeViewer, ReportData, ReportDataSet, ReportForm, ReportFormSet, ReportFormSets, ReportOptions, ReportViewer, ZOOM_ERROR_MESSAGE, getVersion, setLicenseKey };
50756
+ export { DOC_EXPORT_DEFAULT_OPTIONS, DocumentExportBlobOptions, DocumentExportOptions, DocumentsExportFromDataOptions, ExportImageOptions, FontStore, GridReportHeader, GridReportItemSource, GridReportLayout, GridReportLayoutHeader, GridReportOptions, GridReportSaveOptions, GridReportTitle, GridReportViewer, IMG_EXPORT_DEFAULT_OPTIONS, ImageExportBlobOptions, ImageExportOptions, LayoutColumn, PDFExportBlobOptions, PDFExportOptions, PreviewOptions, PrintOptions, ReportCompositeViewer, ReportData, ReportDataSet, ReportEditableItem, ReportForm, ReportFormSet, ReportFormSets, ReportOptions, ReportViewer, ZOOM_ERROR_MESSAGE, getVersion, setLicenseKey };