xiaodao-spreader 0.1.37 → 0.1.41

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 (41) hide show
  1. package/README.ZH.md +121 -48
  2. package/README.md +126 -54
  3. package/dist/style.css +1 -1
  4. package/dist/types/components/spreader/components/dropdown.vue.d.ts +3 -1
  5. package/dist/types/components/spreader/components/note-overlay.vue.d.ts +47 -0
  6. package/dist/types/components/spreader/components/pickers/border-picker.vue.d.ts +16 -2
  7. package/dist/types/components/spreader/components/pickers/calc-picker.vue.d.ts +1 -1
  8. package/dist/types/components/spreader/components/pickers/color-palette.vue.d.ts +17 -0
  9. package/dist/types/components/spreader/components/pickers/color-picker.vue.d.ts +1 -1
  10. package/dist/types/components/spreader/components/pickers/data-validation-dropdown.vue.d.ts +1 -1
  11. package/dist/types/components/spreader/components/pickers/insert-function-dialog.vue.d.ts +1 -1
  12. package/dist/types/components/spreader/components/pickers/merge-picker.vue.d.ts +1 -1
  13. package/dist/types/components/spreader/components/pickers/number-format-dialog.vue.d.ts +1 -1
  14. package/dist/types/components/spreader/components/pickers/outline-picker.vue.d.ts +1 -1
  15. package/dist/types/components/spreader/components/pickers/sort-confirm-dialog.vue.d.ts +1 -1
  16. package/dist/types/components/spreader/components/pickers/sort-picker.vue.d.ts +1 -1
  17. package/dist/types/components/spreader/components/spreader.vue.d.ts +17 -5
  18. package/dist/types/components/spreader/components/toolbar.vue.d.ts +10 -2
  19. package/dist/types/components/spreader/composables/borders-merge.d.ts +19 -3
  20. package/dist/types/components/spreader/composables/core-state.d.ts +28 -2
  21. package/dist/types/components/spreader/composables/find-replace.d.ts +5 -0
  22. package/dist/types/components/spreader/composables/interactions.d.ts +26 -0
  23. package/dist/types/components/spreader/composables/sheets-ops.d.ts +5 -0
  24. package/dist/types/components/spreader/composables/undo-styles.d.ts +5 -0
  25. package/dist/types/components/spreader/core/border-color.d.ts +138 -0
  26. package/dist/types/components/spreader/core/border-icon.d.ts +43 -0
  27. package/dist/types/components/spreader/core/border-pool.d.ts +1 -1
  28. package/dist/types/components/spreader/core/border-resolve.d.ts +12 -3
  29. package/dist/types/components/spreader/core/border-style.d.ts +24 -0
  30. package/dist/types/components/spreader/core/constants.d.ts +3 -2
  31. package/dist/types/components/spreader/core/model-dims.d.ts +19 -0
  32. package/dist/types/components/spreader/core/notes.d.ts +51 -0
  33. package/dist/types/components/spreader/core/sort-icon.d.ts +25 -0
  34. package/dist/types/components/spreader/core/style-pool.d.ts +1 -1
  35. package/dist/types/components/spreader/core/theme.d.ts +5 -0
  36. package/dist/types/components/spreader/core/types.d.ts +38 -4
  37. package/dist/xiaodao-spreader.es.js +8665 -7712
  38. package/dist/xiaodao-spreader.umd.js +9 -9
  39. package/package.json +1 -1
  40. /package/dist/types/components/spreader/components/{data-validation-input-message.vue.d.ts → pickers/data-validation-input-message.vue.d.ts} +0 -0
  41. /package/dist/types/components/spreader/composables/{useFloatMenuPosition.d.ts → float-menu-position.d.ts} +0 -0
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Sort Icon - 排序图标的单一数据源。
3
+ *
4
+ * toolbar 触发按钮与 sort-picker 下拉项渲染的是同一套排序图标
5
+ * (左侧三条渐宽横线 + 右侧方向箭头,viewBox 0 0 1024 1024),
6
+ * 此前两处各维护一份 SORT_BARS / SORT_ARROW_PATHS,靠注释「保持一致」约束。
7
+ * 现统一收敛到此模块,两处都从这里取,杜绝不同步。
8
+ */
9
+ import type { SortOrder } from './sort-core';
10
+ /** 左侧三条渐宽横线 */
11
+ export interface SortBar {
12
+ name: string;
13
+ x1: number;
14
+ y1: number;
15
+ x2: number;
16
+ y2: number;
17
+ }
18
+ export declare const SORT_BARS: SortBar[];
19
+ /** 右侧方向箭头路径 */
20
+ export declare const SORT_ARROW_PATHS: Record<SortOrder, string>;
21
+ /** 下拉菜单选项顺序 */
22
+ export declare const SORT_OPTIONS: {
23
+ key: SortOrder;
24
+ i18nKey: string;
25
+ }[];
@@ -1,5 +1,5 @@
1
1
  /**
2
- * StylePool — 样式池,用于减少重复样式数据的存储体积。
2
+ * StylePool - 样式池,用于减少重复样式数据的存储体积。
3
3
  *
4
4
  * 核心思路:
5
5
  * - 每个 Sheet 维护一个 styles: CellStyle[] 数组,styles[0] 始终为默认空样式 {}。
@@ -1,3 +1,8 @@
1
+ /**
2
+ * 主题 CSS 变量组装:把 light / dark 的 ThemeColors 平铺成 --sp-* 自定义属性,
3
+ * 由外层容器注入;Teleport 到 body 的浮层通过 documentElement 级变量继承主题
4
+ * (见 spreader.vue 的 applyGlobalThemeVars)。
5
+ */
1
6
  import { type ComputedRef } from 'vue';
2
7
  import type { ThemeColors } from './types';
3
8
  export declare function useTheme(theme: ComputedRef<'light' | 'dark'>): ComputedRef<ThemeColors>;
@@ -13,6 +13,14 @@ export interface BorderSide {
13
13
  width?: number;
14
14
  color?: string;
15
15
  style?: string;
16
+ /**
17
+ * 渲染优先级标记(可选):该边由一次边框操作「显式写入」时置为 true。
18
+ * 作用:相邻公共边解析(resolveSharedBorder)中,若仅一侧带 owner,则该侧优先,
19
+ * 用于修复「选区外框/上边框/左边框被相邻单元格旧 border 覆盖」的问题。
20
+ * 属于持久化数据(随 BorderPool 一起序列化);旧数据缺省视为 undefined(非 owner)。
21
+ * 不表示跨单元格同步;A.right 与 B.left 仍各自独立存储。
22
+ */
23
+ owner?: boolean;
16
24
  }
17
25
  /** 四边边框组合 */
18
26
  export interface BorderStyle {
@@ -59,6 +67,26 @@ export interface CellStyle {
59
67
  export interface CellData {
60
68
  value: string;
61
69
  styleId?: number;
70
+ /** 批注引用:指向 Sheet 级 notes 池中的一个 CellNote;与 value/style 完全独立 */
71
+ noteId?: string;
72
+ }
73
+ /**
74
+ * 批注是绑定到 Cell 的独立附加元数据,不属于 cell.value / formula / style。
75
+ * 采用「Note Pool」存储:Sheet 级 notes 池按 id 存放,cell 只保存 noteId 引用,
76
+ * 便于扩展 Threaded Comment,且多个操作(排序/插入删除)移动 cell 时 noteId 随数据移动。
77
+ * 第一阶段实现与多人协作 Threaded Comment 无关。
78
+ */
79
+ export interface CellNote {
80
+ /** 稳定唯一 ID(不可用数组 index) */
81
+ id: string;
82
+ /** 批注正文(多行文本,含换行) */
83
+ text: string;
84
+ /** 作者信息(可选) */
85
+ author?: string;
86
+ /** 创建时间(epoch ms) */
87
+ createdAt: number;
88
+ /** 最近修改时间(epoch ms) */
89
+ updatedAt: number;
62
90
  }
63
91
  /** 搜索范围:当前工作表 / 整个工作簿 / 当前选区 */
64
92
  export type FindScope = 'sheet' | 'workbook' | 'selection';
@@ -280,10 +308,6 @@ export interface SheetModelData {
280
308
  merges?: Record<string, SelectionRange>;
281
309
  colWidths?: Record<number, number>;
282
310
  rowHeights?: Record<number, number>;
283
- /** 工作表逻辑有效列数(0-based exclusive)。缺失时回退到默认 26 */
284
- colCount?: number;
285
- /** 工作表逻辑有效行数(0-based exclusive)。缺失时回退到默认 200 */
286
- rowCount?: number;
287
311
  /** 冻结窗格状态;缺省视为未冻结 { rows: 0, cols: 0 } */
288
312
  freeze?: FreezePane;
289
313
  /** 数据筛选状态;缺省视为未启用筛选 */
@@ -296,6 +320,8 @@ export interface SheetModelData {
296
320
  rowOutlines?: DimensionOutline[];
297
321
  /** 列分组集合;旧数据缺省视为无分组 */
298
322
  columnOutlines?: DimensionOutline[];
323
+ /** 单元格批注池:按 noteId 存放,cell.noteId 引用之;与 cell value/style 完全独立 */
324
+ notes?: Record<string, CellNote>;
299
325
  }
300
326
  export interface SheetState {
301
327
  id: string;
@@ -328,6 +354,8 @@ export interface SheetState {
328
354
  rowOutlines: DimensionOutline[];
329
355
  /** 列分组集合;缺省为空数组 */
330
356
  columnOutlines: DimensionOutline[];
357
+ /** 单元格批注池:按 noteId 存放,cell.noteId 引用之 */
358
+ notes: Record<string, CellNote>;
331
359
  }
332
360
  /** 视口区域:冻结窗格将画布划分为四个独立滚动区域 */
333
361
  export interface ViewportRegion {
@@ -409,6 +437,12 @@ export interface ThemeColors {
409
437
  toolbarBtnHoverBg: string;
410
438
  toolbarBtnDisabledColor: string;
411
439
  toolbarBtnActiveColor: string;
440
+ /** 次级文本(如对话框 label),light #666 / dark #aaa */
441
+ toolbarTextSecondary: string;
442
+ /** 弱化文本(如空状态提示),light #999 / dark #888 */
443
+ toolbarTextMuted: string;
444
+ /** 下拉/右键菜单选中项底色,light #e5f1fb / dark 半透明蓝(配 toolbarBtnActiveColor 文字色) */
445
+ toolbarItemActiveBg: string;
412
446
  findMatchBg: string;
413
447
  findActiveBg: string;
414
448
  }