@univerjs/sheets 0.10.3 → 0.10.4

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.
@@ -0,0 +1,18 @@
1
+ import { Disposable, ICommandService, IUniverInstanceService } from '@univerjs/core';
2
+ import { SheetRangeThemeModel } from '../model/range-theme-model';
3
+ export declare class ZebraCrossingCacheController extends Disposable {
4
+ private readonly _commandService;
5
+ private readonly _sheetRangeThemeModel;
6
+ private readonly _univerInstanceService;
7
+ private _zebraCacheUpdateSubject;
8
+ constructor(_commandService: ICommandService, _sheetRangeThemeModel: SheetRangeThemeModel, _univerInstanceService: IUniverInstanceService);
9
+ private _init;
10
+ /**
11
+ * Update the zebra crossing cache for a specific unit and sub-unit.
12
+ * @param {string} unitId - The ID of the unit.
13
+ * @param {string} subUnitId - The ID of the sub-unit.
14
+ */
15
+ updateZebraCrossingCache(unitId: string, subUnitId: string): void;
16
+ private _initializeCommandListener;
17
+ private _initTriggerCacheUpdateListener;
18
+ }
@@ -161,6 +161,7 @@ export { getAddMergeMutationRangeByType } from './controllers/merge-cell.control
161
161
  export { MERGE_CELL_INTERCEPTOR_CHECK, MergeCellController } from './controllers/merge-cell.controller';
162
162
  export { SheetPermissionCheckController } from './controllers/permission/sheet-permission-check.controller';
163
163
  export { SheetPermissionInitController } from './controllers/permission/sheet-permission-init.controller';
164
+ export { ZebraCrossingCacheController } from './controllers/zebar-crossing.controller';
164
165
  export { type ICellPermission, RangeProtectionRenderModel } from './model/range-protection-render.model';
165
166
  export { EditStateEnum, type IModel, type IObjectModel, type IRangeProtectionRule, RangeProtectionRuleModel, ViewStateEnum } from './model/range-protection-rule.model';
166
167
  export { RangeProtectionCache } from './model/range-protection.cache';
@@ -1,4 +1,4 @@
1
- import { IRange, Nullable, Disposable, IResourceManagerService } from '@univerjs/core';
1
+ import { IRange, Nullable, Disposable, IResourceManagerService, IUniverInstanceService } from '@univerjs/core';
2
2
  import { IRangeThemeStyleItem, IRangeThemeStyleJSON, RangeThemeStyle } from './range-theme-util';
3
3
  import { SheetInterceptorService } from '../services/sheet-interceptor/sheet-interceptor.service';
4
4
  export interface IRangeThemeRangeInfo {
@@ -17,22 +17,32 @@ interface ISheetRangeThemeModelJSON {
17
17
  export declare class SheetRangeThemeModel extends Disposable {
18
18
  private _sheetInterceptorService;
19
19
  private _resourceManagerService;
20
+ private readonly _univerInstanceService;
20
21
  private _rangeThemeStyleMap;
21
22
  private _rangeThemeStyleRuleMap;
22
23
  private _rTreeCollection;
23
24
  private _defaultRangeThemeMap;
25
+ /**
26
+ * This map is used to cache zebra crossing toggle ranges for each unitId and subUnitId, IRangeThemeStyleRule id
27
+ */
28
+ private _zebraCrossingCacheMap;
29
+ private _rowVisibleFuncSet;
24
30
  private _rangeThemeMapChanged$;
25
31
  rangeThemeMapChange$: import('rxjs').Observable<{
26
32
  type: "add" | "remove";
27
33
  styleName: string;
28
34
  }>;
29
- constructor(_sheetInterceptorService: SheetInterceptorService, _resourceManagerService: IResourceManagerService);
35
+ constructor(_sheetInterceptorService: SheetInterceptorService, _resourceManagerService: IResourceManagerService, _univerInstanceService: IUniverInstanceService);
30
36
  private _initDefaultTheme;
31
37
  private _ensureRangeThemeStyleMap;
32
38
  private _ensureRangeThemeStyleRuleMap;
33
39
  private _ensureRTreeCollection;
34
40
  getDefaultRangeThemeStyle(name: string): RangeThemeStyle;
35
41
  getCustomRangeThemeStyle(unitId: string, name: string): RangeThemeStyle | undefined;
42
+ private _getSheetRowVisibleFuncSet;
43
+ private _getSheetRowVisibleHasInit;
44
+ refreshSheetRowVisibleFuncSet(unitId: string, subUnitId: string): void;
45
+ private _ensureZebraCrossingCache;
36
46
  /**
37
47
  * Register range theme styles
38
48
  * @param {string} themeName
@@ -40,6 +50,7 @@ export declare class SheetRangeThemeModel extends Disposable {
40
50
  */
41
51
  registerRangeThemeRule(themeName: string, rangeInfo: IRangeThemeRangeInfo): void;
42
52
  getRegisteredRangeThemeStyle(rangeInfo: IRangeThemeRangeInfo): string | undefined;
53
+ refreshZebraCrossingCacheBySheet(unitId: string, subUnitId: string): void;
43
54
  removeRangeThemeRule(themeName: string, rangeInfo: IRangeThemeRangeInfo): void;
44
55
  registerDefaultRangeTheme(rangeThemeStyle: RangeThemeStyle): void;
45
56
  unRegisterDefaultRangeTheme(themeName: string): void;
@@ -88,7 +88,7 @@ export declare class RangeThemeStyle {
88
88
  setHeaderRowStyle(style: Nullable<IRangeThemeStyleItem>): void;
89
89
  getHeaderColumnStyle(): Nullable<IRangeThemeStyleItem>;
90
90
  setHeaderColumnStyle(style: Nullable<IRangeThemeStyleItem>): void;
91
- getStyle(offsetRow: number, offsetCol: number, isLastRow: boolean, isLastCol: boolean): IRangeThemeStyleItem | null;
91
+ getStyle(offsetRow: number, offsetCol: number, isLastRow: boolean, isLastCol: boolean, isToggled: boolean): IRangeThemeStyleItem | null;
92
92
  private _getMergeStyle;
93
93
  private _mergeStyle;
94
94
  private _resetStyleCache;
@@ -0,0 +1,42 @@
1
+ import { IRange } from '@univerjs/core';
2
+ type IVisibleFunc = (row: number) => boolean;
3
+ type IToggleRange = [number, number];
4
+ /**
5
+ * This class is used for caching zebra crossing toggle ranges.
6
+ * `toggleRanges` represents the ranges within the visible area where the original odd/even row state is reversed due to hidden rows.
7
+ * Based on the following rules:
8
+ * 1. If there is an odd number of hidden rows before a certain row, the odd/even state of that row will be reversed.
9
+ * 2. If there is an even number of hidden rows before a certain row, the odd/even state of that row will not be reversed.
10
+ * 3. If there are no hidden rows before a certain row, the odd/even state of that row will not be reversed.
11
+ *
12
+ * Example:
13
+ * Given rows 1 to 10, where rows 3 and 7 are hidden:
14
+ * - Rows 1 and 2 remain in their original odd/even state.
15
+ * - Row 4's state is reversed because there is 1 hidden row (odd) before it.
16
+ * - Row 8's state is reversed because there are 2 hidden rows (even) before it.
17
+ * - Rows 9 and 10 remain in their original odd/even state.
18
+ */
19
+ export declare class ZebraCrossingCache {
20
+ private _toggleRanges;
21
+ /**
22
+ * Refresh the cache based on the given range and visibility function.
23
+ * This method calculates toggle ranges for rows that are visible within the specified range.
24
+ * Hidden rows are excluded from the toggle calculation.
25
+ * @param range The range of rows to refresh (startRow and endRow are required).
26
+ * @param visibleFunc A function to determine if a row is visible.
27
+ */
28
+ refresh(range: IRange, visibleFunc: IVisibleFunc): void;
29
+ /**
30
+ * This function returns the toggle ranges. Only for testing purposes. In production, you should use `getIsToggled` to check if a row is toggled.
31
+ * @returns [IToggleRange[]] The toggle ranges calculated by the last refresh.
32
+ */
33
+ getToggleRanges(): IToggleRange[];
34
+ /**
35
+ * Check if the given row is toggled (odd/even state).
36
+ * This method uses binary search to efficiently determine if the row is within a toggle range.
37
+ * @param row The row to check.
38
+ * @returns True if the row is toggled (odd), false otherwise (even or hidden).
39
+ */
40
+ getIsToggled(row: number): boolean;
41
+ }
42
+ export {};