@dxos/plugin-sheet 0.6.14-main.8b352a0 → 0.6.14-staging.3e2eaca

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 (109) hide show
  1. package/dist/lib/browser/{SheetContainer-R65IDJHN.mjs → SheetContainer-P3NF5KEI.mjs} +49 -43
  2. package/dist/lib/browser/SheetContainer-P3NF5KEI.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-I2DKJ72A.mjs → chunk-4LKIURJA.mjs} +283 -84
  4. package/dist/lib/browser/chunk-4LKIURJA.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-5KVQ5IPW.mjs → chunk-BVUN7SHF.mjs} +4 -2
  6. package/dist/lib/browser/chunk-BVUN7SHF.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-D3QTX46O.mjs → chunk-RABELMEQ.mjs} +3 -2
  8. package/dist/lib/browser/{chunk-D3QTX46O.mjs.map → chunk-RABELMEQ.mjs.map} +3 -3
  9. package/dist/lib/browser/{chunk-KCYJSOFB.mjs → chunk-VMSX6Z4X.mjs} +51 -17
  10. package/dist/lib/browser/chunk-VMSX6Z4X.mjs.map +7 -0
  11. package/dist/lib/browser/{compute-graph-SJT67236.mjs → compute-graph-GGWUX644.mjs} +4 -4
  12. package/dist/lib/browser/index.mjs +38 -10
  13. package/dist/lib/browser/index.mjs.map +3 -3
  14. package/dist/lib/browser/meta.json +1 -1
  15. package/dist/lib/browser/meta.mjs +1 -1
  16. package/dist/lib/browser/types.mjs +2 -2
  17. package/dist/lib/node/{SheetContainer-6BO4C5X2.cjs → SheetContainer-MPFKXY26.cjs} +67 -62
  18. package/dist/lib/node/SheetContainer-MPFKXY26.cjs.map +7 -0
  19. package/dist/lib/node/{chunk-QIFIGEKV.cjs → chunk-2ZVZI2KJ.cjs} +6 -5
  20. package/dist/lib/node/{chunk-QIFIGEKV.cjs.map → chunk-2ZVZI2KJ.cjs.map} +3 -3
  21. package/dist/lib/node/{chunk-2XJ5I4UF.cjs → chunk-AWKOWDMI.cjs} +8 -6
  22. package/dist/lib/node/chunk-AWKOWDMI.cjs.map +7 -0
  23. package/dist/lib/node/{chunk-JF5XNTF3.cjs → chunk-O7XR4R7Y.cjs} +61 -26
  24. package/dist/lib/node/chunk-O7XR4R7Y.cjs.map +7 -0
  25. package/dist/lib/node/{chunk-DEPJHN47.cjs → chunk-OO24XJBV.cjs} +318 -120
  26. package/dist/lib/node/chunk-OO24XJBV.cjs.map +7 -0
  27. package/dist/lib/node/{compute-graph-AQBDL7HO.cjs → compute-graph-KGWA2QLE.cjs} +21 -21
  28. package/dist/lib/node/{compute-graph-AQBDL7HO.cjs.map → compute-graph-KGWA2QLE.cjs.map} +2 -2
  29. package/dist/lib/node/index.cjs +66 -38
  30. package/dist/lib/node/index.cjs.map +3 -3
  31. package/dist/lib/node/meta.cjs +3 -3
  32. package/dist/lib/node/meta.cjs.map +1 -1
  33. package/dist/lib/node/meta.json +1 -1
  34. package/dist/lib/node/types.cjs +7 -7
  35. package/dist/lib/node/types.cjs.map +1 -1
  36. package/dist/lib/node-esm/{SheetContainer-MJXC5E3P.mjs → SheetContainer-22IOAW3B.mjs} +49 -43
  37. package/dist/lib/node-esm/SheetContainer-22IOAW3B.mjs.map +7 -0
  38. package/dist/lib/node-esm/{chunk-VCYJWE3O.mjs → chunk-BM2Q3FFC.mjs} +3 -2
  39. package/dist/lib/node-esm/{chunk-VCYJWE3O.mjs.map → chunk-BM2Q3FFC.mjs.map} +3 -3
  40. package/dist/lib/node-esm/{chunk-25V7WY4R.mjs → chunk-BW36PM2Y.mjs} +283 -84
  41. package/dist/lib/node-esm/chunk-BW36PM2Y.mjs.map +7 -0
  42. package/dist/lib/node-esm/{chunk-XBEHKYO7.mjs → chunk-CR4K75EL.mjs} +51 -17
  43. package/dist/lib/node-esm/chunk-CR4K75EL.mjs.map +7 -0
  44. package/dist/lib/node-esm/{chunk-5TXLF6PL.mjs → chunk-UIBWRHW7.mjs} +4 -2
  45. package/dist/lib/node-esm/chunk-UIBWRHW7.mjs.map +7 -0
  46. package/dist/lib/node-esm/{compute-graph-FRCKXEYK.mjs → compute-graph-2SCZT7N5.mjs} +4 -4
  47. package/dist/lib/node-esm/index.mjs +38 -10
  48. package/dist/lib/node-esm/index.mjs.map +3 -3
  49. package/dist/lib/node-esm/meta.json +1 -1
  50. package/dist/lib/node-esm/meta.mjs +1 -1
  51. package/dist/lib/node-esm/types.mjs +2 -2
  52. package/dist/types/src/SheetPlugin.d.ts.map +1 -1
  53. package/dist/types/src/components/FunctionEditor/FunctionEditor.d.ts.map +1 -1
  54. package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -1
  55. package/dist/types/src/components/GridSheet/util.d.ts +1 -0
  56. package/dist/types/src/components/GridSheet/util.d.ts.map +1 -1
  57. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts.map +1 -1
  58. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
  59. package/dist/types/src/components/Toolbar/Toolbar.d.ts +5 -2
  60. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  61. package/dist/types/src/components/index.d.ts.map +1 -1
  62. package/dist/types/src/compute-graph/compute-graph.d.ts +2 -2
  63. package/dist/types/src/compute-graph/compute-graph.d.ts.map +1 -1
  64. package/dist/types/src/compute-graph/functions/async-function.d.ts.map +1 -1
  65. package/dist/types/src/compute-graph/functions/edge-function.d.ts.map +1 -1
  66. package/dist/types/src/defs/sheet-range-types.d.ts +1 -1
  67. package/dist/types/src/defs/sheet-range-types.d.ts.map +1 -1
  68. package/dist/types/src/defs/util.d.ts +1 -1
  69. package/dist/types/src/defs/util.d.ts.map +1 -1
  70. package/dist/types/src/meta.d.ts +1 -0
  71. package/dist/types/src/meta.d.ts.map +1 -1
  72. package/dist/types/src/model/sheet-model.d.ts +12 -5
  73. package/dist/types/src/model/sheet-model.d.ts.map +1 -1
  74. package/dist/types/src/translations.d.ts +10 -5
  75. package/dist/types/src/translations.d.ts.map +1 -1
  76. package/dist/types/src/types.d.ts +33 -3
  77. package/dist/types/src/types.d.ts.map +1 -1
  78. package/package.json +37 -36
  79. package/src/SheetPlugin.tsx +20 -0
  80. package/src/components/FunctionEditor/FunctionEditor.tsx +1 -5
  81. package/src/components/GridSheet/GridSheet.tsx +102 -38
  82. package/src/components/GridSheet/util.ts +19 -9
  83. package/src/components/SheetContainer/SheetContainer.stories.tsx +2 -0
  84. package/src/components/SheetContainer/SheetContainer.tsx +9 -8
  85. package/src/components/Toolbar/Toolbar.tsx +62 -53
  86. package/src/compute-graph/compute-graph.ts +22 -7
  87. package/src/compute-graph/functions/async-function.ts +1 -0
  88. package/src/compute-graph/functions/edge-function.ts +5 -3
  89. package/src/defs/sheet-range-types.ts +4 -2
  90. package/src/defs/util.ts +1 -0
  91. package/src/meta.ts +1 -0
  92. package/src/model/sheet-model.test.ts +5 -3
  93. package/src/model/sheet-model.ts +93 -21
  94. package/src/translations.ts +10 -5
  95. package/src/types.ts +20 -0
  96. package/dist/lib/browser/SheetContainer-R65IDJHN.mjs.map +0 -7
  97. package/dist/lib/browser/chunk-5KVQ5IPW.mjs.map +0 -7
  98. package/dist/lib/browser/chunk-I2DKJ72A.mjs.map +0 -7
  99. package/dist/lib/browser/chunk-KCYJSOFB.mjs.map +0 -7
  100. package/dist/lib/node/SheetContainer-6BO4C5X2.cjs.map +0 -7
  101. package/dist/lib/node/chunk-2XJ5I4UF.cjs.map +0 -7
  102. package/dist/lib/node/chunk-DEPJHN47.cjs.map +0 -7
  103. package/dist/lib/node/chunk-JF5XNTF3.cjs.map +0 -7
  104. package/dist/lib/node-esm/SheetContainer-MJXC5E3P.mjs.map +0 -7
  105. package/dist/lib/node-esm/chunk-25V7WY4R.mjs.map +0 -7
  106. package/dist/lib/node-esm/chunk-5TXLF6PL.mjs.map +0 -7
  107. package/dist/lib/node-esm/chunk-XBEHKYO7.mjs.map +0 -7
  108. /package/dist/lib/browser/{compute-graph-SJT67236.mjs.map → compute-graph-GGWUX644.mjs.map} +0 -0
  109. /package/dist/lib/node-esm/{compute-graph-FRCKXEYK.mjs.map → compute-graph-2SCZT7N5.mjs.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/defs/util.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,iBAAiB,EAKvB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG9E,qBAAa,QAAS,SAAQ,KAAK;CAAG;AAEtC,qBAAa,iBAAkB,SAAQ,QAAQ;CAAG;AAElD,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,CAAC,EAAE,MAAM;CAGtB;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,uBAAiB,MAKxC,CAAC;AAEF,eAAO,MAAM,aAAa,WAAY,MAAM,KAAG,MAAM,EAAqD,CAAC;AAE3G,eAAO,MAAM,aAAa,YAAa,MAAM,EAAE,KAAK,MAAM,KAAK,MAAM,OAAO,MAAM,SAOjF,CAAC;AAEF,eAAO,MAAM,UAAU,UACd,SAAS,sBACoC,OAAO,CAAC,SAAS,CAAC,SAQvE,CAAC;AAEF,eAAO,MAAM,WAAW,8BAA8B,kBAAkB,KAAQ,SAsB/E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,UAAW,SAAS,QAAQ,WAAW,KAAG,MAEpE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,UAAW,SAAS,OAAO,MAAM,KAAG,WAMhE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,UAAW,SAAS,SAAS,SAAS,KAAG,MAEjE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,UAAW,SAAS,OAAO,MAAM,KAAG,iBAG9D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,UAAW,SAAS,UAAU,MAAM,UAAU,MAAM,KAAG,MAUxF,CAAC"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/defs/util.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,iBAAiB,EAKvB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG9E,qBAAa,QAAS,SAAQ,KAAK;CAAG;AAEtC,qBAAa,iBAAkB,SAAQ,QAAQ;CAAG;AAElD,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,CAAC,EAAE,MAAM;CAGtB;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,uBAAiB,MAKxC,CAAC;AAEF,eAAO,MAAM,aAAa,WAAY,MAAM,KAAG,MAAM,EAAqD,CAAC;AAE3G,eAAO,MAAM,aAAa,YAAa,MAAM,EAAE,KAAK,MAAM,KAAK,MAAM,OAAO,MAAM,aAQjF,CAAC;AAEF,eAAO,MAAM,UAAU,UACd,SAAS,sBACoC,OAAO,CAAC,SAAS,CAAC,SAQvE,CAAC;AAEF,eAAO,MAAM,WAAW,8BAA8B,kBAAkB,KAAQ,SAsB/E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,UAAW,SAAS,QAAQ,WAAW,KAAG,MAEpE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,UAAW,SAAS,OAAO,MAAM,KAAG,WAMhE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,UAAW,SAAS,SAAS,SAAS,KAAG,MAEjE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,UAAW,SAAS,OAAO,MAAM,KAAG,iBAG9D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,UAAW,SAAS,UAAU,MAAM,UAAU,MAAM,KAAG,MAUxF,CAAC"}
@@ -4,6 +4,7 @@ declare const _default: {
4
4
  name: string;
5
5
  description: string;
6
6
  icon: string;
7
+ source: string;
7
8
  };
8
9
  export default _default;
9
10
  //# sourceMappingURL=meta.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/meta.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,YAAY,0BAA0B,CAAC;;;;;;;AAEpD,wBAKuB"}
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../../src/meta.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,YAAY,0BAA0B,CAAC;;;;;;;;AAEpD,wBAMuB"}
@@ -1,10 +1,10 @@
1
1
  import { type SimpleDate, type SimpleDateTime } from 'hyperformula/typings/DateTimeHelper';
2
2
  import { Event } from '@dxos/async';
3
3
  import { Resource } from '@dxos/context';
4
- import { FieldValueType } from '@dxos/schema';
4
+ import { FormatEnum, TypeEnum } from '@dxos/echo-schema';
5
5
  import { type ComputeGraph, type ComputeNodeEvent } from '../compute-graph';
6
6
  import { type CellAddress, type CellRange } from '../defs';
7
- import { type CellScalarValue, type CellValue, type SheetType } from '../types';
7
+ import { type CellScalarValue, type CellValue, type SheetType, type RestoreAxis } from '../types';
8
8
  export type SheetModelOptions = {
9
9
  readonly?: boolean;
10
10
  };
@@ -45,8 +45,12 @@ export declare class SheetModel extends Resource {
45
45
  * @deprecated
46
46
  */
47
47
  recalculate(): void;
48
- insertRows(i: number, n?: number): void;
49
- insertColumns(i: number, n?: number): void;
48
+ insertRows(i: number, n?: number): string[];
49
+ insertColumns(i: number, n?: number): string[];
50
+ dropRow(rowIndex: string): RestoreAxis;
51
+ dropColumn(colIndex: string): RestoreAxis;
52
+ restoreRow({ index, axisIndex, axisMeta, values }: RestoreAxis): void;
53
+ restoreColumn({ index, axisIndex, axisMeta, values }: RestoreAxis): void;
50
54
  /**
51
55
  * Clear range of values.
52
56
  */
@@ -75,7 +79,10 @@ export declare class SheetModel extends Resource {
75
79
  /**
76
80
  * Get value type.
77
81
  */
78
- getValueType(cell: CellAddress): FieldValueType;
82
+ getValueDescription(cell: CellAddress): {
83
+ type: TypeEnum;
84
+ format?: FormatEnum;
85
+ } | undefined;
79
86
  /**
80
87
  * Sets the value, updating the sheet and engine.
81
88
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sheet-model.d.ts","sourceRoot":"","sources":["../../../../src/model/sheet-model.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAE3F,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAKzC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,EAAE,KAAK,YAAY,EAAoB,KAAK,gBAAgB,EAAmB,MAAM,kBAAkB,CAAC;AAC/G,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,SAAS,EAOf,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AA6BhF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;GAIG;AAEH,qBAAa,UAAW,SAAQ,QAAQ;IASpC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAV3B,SAAgB,EAAE,SAA4C;IAG9D,SAAgB,MAAM,0BAAiC;IAEvD,OAAO,CAAC,KAAK,CAAC,CAAc;gBAGT,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,SAAS,EACjB,QAAQ,GAAE,iBAAsB;IAKnD,IAAI,KAAK,iBAER;IAED,IAAI,KAAK,cAER;IAED,IAAI,QAAQ,wBAEX;IAED,IAAI,MAAM;;;MAKT;IAED;;OAEG;cACsB,KAAK;IAe9B;;;;OAIG;IACH,KAAK;IAgBL;;;;;OAKG;IAEH,WAAW;IAIX,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,SAAI;IAK3B,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,SAAI;IAU9B;;OAEG;IACH,KAAK,CAAC,KAAK,EAAE,SAAS;IAWtB,GAAG,CAAC,KAAK,EAAE,SAAS;IASpB,IAAI,CAAC,KAAK,EAAE,SAAS;IAKrB,KAAK,CAAC,IAAI,EAAE,WAAW;IAevB,IAAI;IAQJ,IAAI;IAQJ;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,eAAe;IAKhD;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS;IAalD;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,eAAe,EAAE,EAAE;IAIpD;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,eAAe;IAW5C;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,cAAc;IAO/C;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe;IAwClD;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;IAM3C;;OAEG;IACH,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAOhD;;OAEG;IACH,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAWhD;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAK9B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc;IAKvC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;IAK/B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU;CAIhC"}
1
+ {"version":3,"file":"sheet-model.d.ts","sourceRoot":"","sources":["../../../../src/model/sheet-model.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,13 @@ declare const _default: readonly [{
7
7
  readonly 'create sheet section label': "Create sheet";
8
8
  readonly 'cell placeholder': "Cell value...";
9
9
  readonly 'range key alignment label': "Align";
10
- readonly 'range value start label': "left";
11
- readonly 'range value center label': "center";
12
- readonly 'range value end label': "right";
13
- readonly 'toolbar action label': "{{key}} {{value}}";
10
+ readonly 'range key style label': "Style";
11
+ readonly 'range value start label': "Align left";
12
+ readonly 'range value center label': "Align center";
13
+ readonly 'range value end label': "Align right";
14
+ readonly 'range value softwrap label': "Wrap text";
15
+ readonly 'range value highlight label': "Highlight";
16
+ readonly 'toolbar action label': "{{value}}";
14
17
  readonly 'selection overlaps existing comment label': "Selected cell already has a comment";
15
18
  readonly 'comment label': "Add comment";
16
19
  readonly 'comment ranges not supported label': "Commenting on ranges is not yet supported";
@@ -23,7 +26,9 @@ declare const _default: readonly [{
23
26
  readonly 'add row after label': "Add row after";
24
27
  readonly 'delete row label': "Delete row";
25
28
  readonly 'range list heading': "Ranges";
26
- readonly 'range title': "{{position}} — {{key}}: {{value}}";
29
+ readonly 'range title': "{{position}} — {{value}}";
30
+ readonly 'col dropped label': "Deleted a column";
31
+ readonly 'row dropped label': "Deleted a row";
27
32
  };
28
33
  };
29
34
  }];
@@ -1 +1 @@
1
- {"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../../src/translations.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,wBA8BW"}
1
+ {"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../../src/translations.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,wBAmCW"}
@@ -1,11 +1,41 @@
1
- import type { GraphBuilderProvides, IntentResolverProvides, MetadataRecordsProvides, SurfaceProvides, TranslationsProvides } from '@dxos/app-framework';
1
+ import type { GraphBuilderProvides, IntentResolverProvides, MetadataRecordsProvides, SurfaceProvides, TranslationsProvides, IntentData } from '@dxos/app-framework';
2
2
  import { ref, S } from '@dxos/echo-schema';
3
3
  import { type SchemaProvides } from '@dxos/plugin-client';
4
4
  import { type MarkdownExtensionProvides } from '@dxos/plugin-markdown';
5
5
  import { type SpaceInitProvides } from '@dxos/plugin-space';
6
6
  import { type StackProvides } from '@dxos/plugin-stack';
7
+ import { type DxGridAxis } from '@dxos/react-ui-grid';
8
+ import { type SheetModel } from './model';
7
9
  export declare enum SheetAction {
8
- CREATE = "dxos.org/plugin/sheet/action/create"
10
+ CREATE = "dxos.org/plugin/sheet/action/create",
11
+ INSERT_AXIS = "dxos.org/plugin/sheet/action/axis-insert",
12
+ DROP_AXIS = "dxos.org/plugin/sheet/action/axis-drop"
13
+ }
14
+ export type RestoreAxis = {
15
+ axis: DxGridAxis;
16
+ axisIndex: string;
17
+ index: number;
18
+ axisMeta?: S.Schema.Type<typeof RowColumnMeta>;
19
+ values: CellScalarValue[];
20
+ };
21
+ export declare namespace SheetAction {
22
+ type Create = IntentData<{
23
+ sheet: SheetType;
24
+ }>;
25
+ type InsertAxis = IntentData<{
26
+ model: SheetModel;
27
+ axis: DxGridAxis;
28
+ index: number;
29
+ count?: number;
30
+ }>;
31
+ type DropAxis = IntentData<{
32
+ model: SheetModel;
33
+ axis: DxGridAxis;
34
+ axisIndex: string;
35
+ }>;
36
+ type DropAxisRestore = IntentData<RestoreAxis & {
37
+ model: SheetModel;
38
+ }>;
9
39
  }
10
40
  type ThreadProvides<T> = {
11
41
  thread: {
@@ -48,9 +78,9 @@ declare const SheetType_base: import("@dxos/echo-schema").AbstractTypedObject<{
48
78
  };
49
79
  };
50
80
  ranges: {
81
+ readonly key: string;
51
82
  readonly value: string;
52
83
  readonly range: string;
53
- readonly key: string;
54
84
  }[];
55
85
  threads?: import("@dxos/echo-schema").Ref<{
56
86
  name?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,eAAe,EACf,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,CAAC,EAAe,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMxD,oBAAY,WAAW;IACrB,MAAM,wCAA2B;CAClC;AAKD,KAAK,cAAc,CAAC,CAAC,IAAI;IACvB,MAAM,EAAE;QACN,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC;QAClC,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,CAAC;KAC9F,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAC/C,sBAAsB,GACtB,oBAAoB,GACpB,yBAAyB,GACzB,uBAAuB,GACvB,oBAAoB,GACpB,cAAc,GACd,iBAAiB,GACjB,aAAa,GACb,cAAc,CAAC,SAAS,CAAC,CAAC;AAE5B,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAE/D,eAAO,MAAM,SAAS;;EAKpB,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,SAAS,CAAC,CAAC;AAGxD,eAAO,MAAM,KAAK;;;;EAIhB,CAAC;AAEH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC;AAGhD,eAAO,MAAM,aAAa;;EAExB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqCgR,CAAC;;oBAA8D,CAAC;uBAAyC,CAAC;wBAAwD,CAAC;;;;;;;;2BAAsP,CAAC;qBAAuC,CAAC;;iBAA8C,CAAC;sBAA4E,CAAC;;;mBAAwE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAvoB,CAAC;;oBAA8D,CAAC;uBAAyC,CAAC;wBAAwD,CAAC;;;;;;;;2BAAsP,CAAC;qBAAuC,CAAC;;iBAA8C,CAAC;sBAA4E,CAAC;;;mBAAwE,CAAC;;;;;;;;AAlC15B,qBAAa,SAAU,SAAQ,cAuB7B;CAAG;AAEL,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACnC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-sheet",
3
- "version": "0.6.14-main.8b352a0",
3
+ "version": "0.6.14-staging.3e2eaca",
4
4
  "description": "Braneframe sketch plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -69,32 +69,33 @@
69
69
  "re-resizable": "^6.9.17",
70
70
  "react-markdown": "^8.0.5",
71
71
  "react-resize-detector": "^11.0.1",
72
- "@dxos/app-framework": "0.6.14-main.8b352a0",
73
- "@dxos/async": "0.6.14-main.8b352a0",
74
- "@dxos/client": "0.6.14-main.8b352a0",
75
- "@dxos/crypto": "0.6.14-main.8b352a0",
76
- "@dxos/context": "0.6.14-main.8b352a0",
77
- "@dxos/debug": "0.6.14-main.8b352a0",
78
- "@dxos/echo-schema": "0.6.14-main.8b352a0",
79
- "@dxos/invariant": "0.6.14-main.8b352a0",
80
- "@dxos/keys": "0.6.14-main.8b352a0",
81
- "@dxos/log": "0.6.14-main.8b352a0",
82
- "@dxos/plugin-attention": "0.6.14-main.8b352a0",
83
- "@dxos/plugin-client": "0.6.14-main.8b352a0",
84
- "@dxos/plugin-graph": "0.6.14-main.8b352a0",
85
- "@dxos/plugin-markdown": "0.6.14-main.8b352a0",
86
- "@dxos/plugin-space": "0.6.14-main.8b352a0",
87
- "@dxos/plugin-script": "0.6.14-main.8b352a0",
88
- "@dxos/plugin-stack": "0.6.14-main.8b352a0",
89
- "@dxos/react-client": "0.6.14-main.8b352a0",
90
- "@dxos/react-hooks": "0.6.14-main.8b352a0",
91
- "@dxos/react-ui-attention": "0.6.14-main.8b352a0",
92
- "@dxos/react-ui-editor": "0.6.14-main.8b352a0",
93
- "@dxos/react-ui-data": "0.6.14-main.8b352a0",
94
- "@dxos/react-ui-grid": "0.6.14-main.8b352a0",
95
- "@dxos/schema": "0.6.14-main.8b352a0",
96
- "@dxos/util": "0.6.14-main.8b352a0",
97
- "@dxos/react-ui-list": "0.6.14-main.8b352a0"
72
+ "@dxos/app-framework": "0.6.14-staging.3e2eaca",
73
+ "@dxos/async": "0.6.14-staging.3e2eaca",
74
+ "@dxos/client": "0.6.14-staging.3e2eaca",
75
+ "@dxos/context": "0.6.14-staging.3e2eaca",
76
+ "@dxos/crypto": "0.6.14-staging.3e2eaca",
77
+ "@dxos/debug": "0.6.14-staging.3e2eaca",
78
+ "@dxos/echo-schema": "0.6.14-staging.3e2eaca",
79
+ "@dxos/invariant": "0.6.14-staging.3e2eaca",
80
+ "@dxos/keys": "0.6.14-staging.3e2eaca",
81
+ "@dxos/log": "0.6.14-staging.3e2eaca",
82
+ "@dxos/plugin-attention": "0.6.14-staging.3e2eaca",
83
+ "@dxos/plugin-client": "0.6.14-staging.3e2eaca",
84
+ "@dxos/plugin-graph": "0.6.14-staging.3e2eaca",
85
+ "@dxos/plugin-markdown": "0.6.14-staging.3e2eaca",
86
+ "@dxos/plugin-script": "0.6.14-staging.3e2eaca",
87
+ "@dxos/plugin-space": "0.6.14-staging.3e2eaca",
88
+ "@dxos/react-client": "0.6.14-staging.3e2eaca",
89
+ "@dxos/plugin-stack": "0.6.14-staging.3e2eaca",
90
+ "@dxos/react-hooks": "0.6.14-staging.3e2eaca",
91
+ "@dxos/react-ui-attention": "0.6.14-staging.3e2eaca",
92
+ "@dxos/react-ui-data": "0.6.14-staging.3e2eaca",
93
+ "@dxos/react-ui-editor": "0.6.14-staging.3e2eaca",
94
+ "@dxos/react-ui-grid": "0.6.14-staging.3e2eaca",
95
+ "@dxos/react-ui-stack": "0.6.14-staging.3e2eaca",
96
+ "@dxos/schema": "0.6.14-staging.3e2eaca",
97
+ "@dxos/react-ui-list": "0.6.14-staging.3e2eaca",
98
+ "@dxos/util": "0.6.14-staging.3e2eaca"
98
99
  },
99
100
  "devDependencies": {
100
101
  "@lezer/generator": "^1.7.1",
@@ -106,19 +107,19 @@
106
107
  "react": "~18.2.0",
107
108
  "react-dom": "~18.2.0",
108
109
  "vite": "5.4.7",
109
- "@dxos/echo-generator": "0.6.14-main.8b352a0",
110
- "@dxos/random": "0.6.14-main.8b352a0",
111
- "@dxos/react-ui-syntax-highlighter": "0.6.14-main.8b352a0",
112
- "@dxos/react-ui": "0.6.14-main.8b352a0",
113
- "@dxos/react-ui-theme": "0.6.14-main.8b352a0",
114
- "@dxos/storybook-utils": "0.6.14-main.8b352a0",
115
- "@dxos/react-ui-types": "0.6.14-main.8b352a0"
110
+ "@dxos/echo-generator": "0.6.14-staging.3e2eaca",
111
+ "@dxos/react-ui": "0.6.14-staging.3e2eaca",
112
+ "@dxos/random": "0.6.14-staging.3e2eaca",
113
+ "@dxos/react-ui-syntax-highlighter": "0.6.14-staging.3e2eaca",
114
+ "@dxos/react-ui-theme": "0.6.14-staging.3e2eaca",
115
+ "@dxos/react-ui-types": "0.6.14-staging.3e2eaca",
116
+ "@dxos/storybook-utils": "0.6.14-staging.3e2eaca"
116
117
  },
117
118
  "peerDependencies": {
118
119
  "react": "~18.2.0",
119
120
  "react-dom": "~18.2.0",
120
- "@dxos/react-ui": "0.6.14-main.8b352a0",
121
- "@dxos/react-ui-theme": "0.6.14-main.8b352a0"
121
+ "@dxos/react-ui": "0.6.14-staging.3e2eaca",
122
+ "@dxos/react-ui-theme": "0.6.14-staging.3e2eaca"
122
123
  },
123
124
  "publishConfig": {
124
125
  "access": "public"
@@ -175,6 +175,26 @@ export const SheetPlugin = (): PluginDefinition<SheetPluginProvides> => {
175
175
  case SheetAction.CREATE: {
176
176
  return { data: createSheet() };
177
177
  }
178
+ case SheetAction.INSERT_AXIS: {
179
+ const { model, axis, index, count } = intent.data as SheetAction.InsertAxis;
180
+ const _indices = model[axis === 'col' ? 'insertColumns' : 'insertRows'](index, count);
181
+ return;
182
+ }
183
+ case SheetAction.DROP_AXIS: {
184
+ if (!intent.undo) {
185
+ const { model, axis, axisIndex } = intent.data as SheetAction.DropAxis;
186
+ const undoData = model[axis === 'col' ? 'dropColumn' : 'dropRow'](axisIndex);
187
+ return {
188
+ undoable: {
189
+ message: translations[0]['en-US'][SHEET_PLUGIN][`${axis} dropped label`],
190
+ data: { ...undoData, model },
191
+ },
192
+ };
193
+ } else {
194
+ const { model, ...undoData } = intent.data as SheetAction.DropAxisRestore;
195
+ model[undoData.axis === 'col' ? 'restoreColumn' : 'restoreRow'](undoData);
196
+ }
197
+ }
178
198
  }
179
199
  },
180
200
  },
@@ -26,11 +26,7 @@ export const FunctionEditor = () => {
26
26
  }
27
27
 
28
28
  return (
29
- <div
30
- className={mx(
31
- 'flex shrink-0 justify-between items-center px-4 py-1 text-sm border-bs !border-separator attention-surface',
32
- )}
33
- >
29
+ <div className={mx('flex shrink-0 justify-between items-center px-4 py-1 text-sm attention-surface')}>
34
30
  <div className='flex gap-4 items-center'>
35
31
  <div className='flex w-16 items-center font-mono'>
36
32
  {(range && rangeToA1Notation(range)) || (cursor && addressToA1Notation(cursor))}
@@ -13,15 +13,18 @@ import React, {
13
13
  useState,
14
14
  } from 'react';
15
15
 
16
+ import { useIntentDispatcher } from '@dxos/app-framework';
16
17
  import { DropdownMenu, Icon, useTranslation } from '@dxos/react-ui';
17
18
  import { useAttention } from '@dxos/react-ui-attention';
18
19
  import {
19
20
  closestCell,
21
+ defaultSizeRow,
20
22
  editorKeys,
21
23
  Grid,
22
24
  GridCellEditor,
23
25
  type DxGridElement,
24
- type EditorKeysProps,
26
+ type EditorKeyHandler,
27
+ type EditorBlurHandler,
25
28
  type GridContentProps,
26
29
  type DxGridPosition,
27
30
  } from '@dxos/react-ui-grid';
@@ -31,6 +34,7 @@ import { DEFAULT_COLUMNS, DEFAULT_ROWS, rangeToA1Notation, type CellRange } from
31
34
  import { rangeExtension, sheetExtension, type RangeController } from '../../extensions';
32
35
  import { useSelectThreadOnCellFocus, useUpdateFocusedCellOnThreadSelection } from '../../integrations';
33
36
  import { SHEET_PLUGIN } from '../../meta';
37
+ import { SheetAction } from '../../types';
34
38
  import { useSheetContext } from '../SheetContext';
35
39
 
36
40
  const inertPosition: DxGridPosition = { plane: 'grid', col: 0, row: 0 };
@@ -52,15 +56,20 @@ const frozen = {
52
56
  frozenRowsStart: 1,
53
57
  };
54
58
 
55
- const sheetRowDefault = { frozenRowsStart: { size: 32, readonly: true }, grid: { size: 32, resizeable: true } };
59
+ const sheetRowDefault = {
60
+ frozenRowsStart: { size: defaultSizeRow, readonly: true },
61
+ grid: { size: defaultSizeRow, resizeable: true },
62
+ };
56
63
  const sheetColDefault = { frozenColsStart: { size: 48, readonly: true }, grid: { size: 180, resizeable: true } };
57
64
 
58
65
  export const GridSheet = () => {
59
66
  const { t } = useTranslation(SHEET_PLUGIN);
60
- const { id, model, editing, setEditing, setCursor, setRange, cursor, cursorFallbackRange, activeRefs } =
61
- useSheetContext();
62
- // NOTE(thure): using `useState` instead of `useRef` works with refs provided by `@lit/react` and gives us a reliable dependency for `useEffect` whereas `useLayoutEffect` does not guarantee the element will be defined.
67
+ const { id, model, editing, setCursor, setRange, cursor, cursorFallbackRange, activeRefs } = useSheetContext();
68
+ // NOTE(thure): using `useState` instead of `useRef` works with refs provided by `@lit/react` and gives us
69
+ // a reliable dependency for `useEffect` whereas `useLayoutEffect` does not guarantee the element will be defined.
63
70
  const [dxGrid, setDxGrid] = useState<DxGridElement | null>(null);
71
+ const [extraplanarFocus, setExtraplanarFocus] = useState<DxGridPosition | null>(null);
72
+ const dispatch = useIntentDispatcher();
64
73
  const rangeController = useRef<RangeController>();
65
74
  const { hasAttention } = useAttention(id);
66
75
 
@@ -68,8 +77,15 @@ export const GridSheet = () => {
68
77
  (event: FocusEvent) => {
69
78
  if (!editing) {
70
79
  const cell = closestCell(event.target);
71
- if (cell && cell.plane === 'grid') {
72
- setCursor({ col: cell.col, row: cell.row });
80
+ if (cell) {
81
+ if (cell.plane === 'grid') {
82
+ setCursor({ col: cell.col, row: cell.row });
83
+ setExtraplanarFocus(null);
84
+ } else {
85
+ setExtraplanarFocus(cell);
86
+ }
87
+ } else {
88
+ setExtraplanarFocus(null);
73
89
  }
74
90
  }
75
91
  },
@@ -77,29 +93,27 @@ export const GridSheet = () => {
77
93
  );
78
94
 
79
95
  // TODO(burdon): Validate formula before closing: hf.validateFormula();
80
- const handleClose = useCallback<NonNullable<EditorKeysProps['onClose']> | NonNullable<EditorKeysProps['onNav']>>(
81
- (value, { key, shift }) => {
82
- if (value !== undefined) {
83
- model.setValue(dxGridCellIndexToSheetCellAddress(editing!.index), value);
96
+ const handleClose = useCallback<EditorKeyHandler>(
97
+ (_value, event) => {
98
+ if (event) {
99
+ const { key, shift } = event;
100
+ const axis = ['Enter', 'ArrowUp', 'ArrowDown'].includes(key)
101
+ ? 'row'
102
+ : ['Tab', 'ArrowLeft', 'ArrowRight'].includes(key)
103
+ ? 'col'
104
+ : undefined;
105
+ const delta = key.startsWith('Arrow') ? (['ArrowUp', 'ArrowLeft'].includes(key) ? -1 : 1) : shift ? -1 : 1;
106
+ dxGrid?.refocus(axis, delta);
84
107
  }
85
- setEditing(null);
86
- const axis = ['Enter', 'ArrowUp', 'ArrowDown'].includes(key)
87
- ? 'row'
88
- : ['Tab', 'ArrowLeft', 'ArrowRight'].includes(key)
89
- ? 'col'
90
- : undefined;
91
- const delta = key.startsWith('Arrow') ? (['ArrowUp', 'ArrowLeft'].includes(key) ? -1 : 1) : shift ? -1 : 1;
92
- dxGrid?.refocus(axis, delta);
93
108
  },
94
109
  [model, editing, dxGrid],
95
110
  );
96
111
 
97
- const handleBlur = useCallback(
98
- (value?: string) => {
112
+ const handleBlur = useCallback<EditorBlurHandler>(
113
+ (value) => {
99
114
  if (value !== undefined) {
100
115
  model.setValue(dxGridCellIndexToSheetCellAddress(editing!.index), value);
101
116
  }
102
- setEditing(null);
103
117
  },
104
118
  [model, editing],
105
119
  );
@@ -144,6 +158,34 @@ export const GridSheet = () => {
144
158
  [hasAttention],
145
159
  );
146
160
 
161
+ const selectEntireAxis = useCallback(
162
+ (pos: DxGridPosition) => {
163
+ switch (pos.plane) {
164
+ case 'frozenRowsStart':
165
+ return dxGrid?.setSelection({
166
+ start: { col: pos.col, row: 0, plane: 'grid' },
167
+ end: { col: pos.col, row: model.sheet.rows.length - 1, plane: 'grid' },
168
+ });
169
+ case 'frozenColsStart':
170
+ return dxGrid?.setSelection({
171
+ start: { row: pos.row, col: 0, plane: 'grid' },
172
+ end: { row: pos.row, col: model.sheet.columns.length - 1, plane: 'grid' },
173
+ });
174
+ }
175
+ },
176
+ [dxGrid, model.sheet],
177
+ );
178
+
179
+ const handleClick = useCallback(
180
+ (event: MouseEvent) => {
181
+ const cell = closestCell(event.target);
182
+ if (cell) {
183
+ selectEntireAxis(cell);
184
+ }
185
+ },
186
+ [selectEntireAxis],
187
+ );
188
+
147
189
  const handleKeyDown = useCallback(
148
190
  (event: KeyboardEvent) => {
149
191
  switch (event.key) {
@@ -151,6 +193,16 @@ export const GridSheet = () => {
151
193
  case 'Delete':
152
194
  event.preventDefault();
153
195
  return cursorFallbackRange && model.clear(cursorFallbackRange);
196
+ case 'Enter':
197
+ case 'Space':
198
+ if (dxGrid && extraplanarFocus) {
199
+ switch (extraplanarFocus.plane) {
200
+ case 'frozenRowsStart':
201
+ case 'frozenColsStart':
202
+ event.preventDefault();
203
+ return selectEntireAxis(extraplanarFocus);
204
+ }
205
+ }
154
206
  }
155
207
  if (event.metaKey || event.ctrlKey) {
156
208
  switch (event.key) {
@@ -176,7 +228,7 @@ export const GridSheet = () => {
176
228
  }
177
229
  }
178
230
  },
179
- [cursorFallbackRange, model, cursor],
231
+ [cursorFallbackRange, model, cursor, extraplanarFocus, selectEntireAxis],
180
232
  );
181
233
 
182
234
  const contextMenuAnchorRef = useRef<HTMLButtonElement | null>(null);
@@ -193,20 +245,31 @@ export const GridSheet = () => {
193
245
  }, []);
194
246
 
195
247
  const handleAxisMenuAction = useCallback(
196
- (operation: 'add-before' | 'add-after' | 'remove') => {
248
+ (operation: 'insert-before' | 'insert-after' | 'drop') => {
197
249
  switch (operation) {
198
- case 'add-before':
199
- case 'add-after':
200
- model[contextMenuAxis === 'col' ? 'insertColumns' : 'insertRows'](
201
- contextMenuOpen![contextMenuAxis] + (operation === 'add-before' ? 0 : 1),
202
- 1,
203
- );
250
+ case 'insert-before':
251
+ case 'insert-after':
252
+ return dispatch({
253
+ action: SheetAction.INSERT_AXIS,
254
+ data: {
255
+ model,
256
+ axis: contextMenuAxis,
257
+ index: contextMenuOpen![contextMenuAxis] + (operation === 'insert-before' ? 0 : 1),
258
+ } satisfies SheetAction.InsertAxis,
259
+ });
204
260
  break;
205
- case 'remove':
206
- // console.warn('[model does not implement]');
261
+ case 'drop':
262
+ return dispatch({
263
+ action: SheetAction.DROP_AXIS,
264
+ data: {
265
+ model,
266
+ axis: contextMenuAxis,
267
+ axisIndex: model.sheet[contextMenuAxis === 'row' ? 'rows' : 'columns'][contextMenuOpen![contextMenuAxis]],
268
+ } satisfies SheetAction.DropAxis,
269
+ });
207
270
  }
208
271
  },
209
- [contextMenuAxis, contextMenuOpen, model],
272
+ [contextMenuAxis, contextMenuOpen, model, dispatch],
210
273
  );
211
274
 
212
275
  const { columns, rows } = useSheetModelDxGridProps(dxGrid, model);
@@ -257,8 +320,9 @@ export const GridSheet = () => {
257
320
  onWheelCapture={handleWheel}
258
321
  onKeyDown={handleKeyDown}
259
322
  onContextMenu={handleContextMenu}
260
- overscroll='inline'
261
- className='[--dx-grid-base:var(--surface-bg)]'
323
+ onClick={handleClick}
324
+ overscroll='trap'
325
+ className='[--dx-grid-base:var(--surface-bg)] [&_.dx-grid]:border-bs [&_.dx-grid]:border-separator'
262
326
  activeRefs={activeRefs}
263
327
  ref={setDxGrid}
264
328
  />
@@ -270,21 +334,21 @@ export const GridSheet = () => {
270
334
  <DropdownMenu.VirtualTrigger virtualRef={contextMenuAnchorRef} />
271
335
  <DropdownMenu.Content side={contextMenuAxis === 'col' ? 'bottom' : 'right'} sideOffset={4} collisionPadding={8}>
272
336
  <DropdownMenu.Viewport>
273
- <DropdownMenu.Item onClick={() => handleAxisMenuAction('add-before')}>
337
+ <DropdownMenu.Item onClick={() => handleAxisMenuAction('insert-before')}>
274
338
  <Icon
275
339
  size={5}
276
340
  icon={contextMenuAxis === 'col' ? 'ph--columns-plus-left--regular' : 'ph--rows-plus-top--regular'}
277
341
  />
278
342
  <span>{t(`add ${contextMenuAxis} before label`)}</span>
279
343
  </DropdownMenu.Item>
280
- <DropdownMenu.Item onClick={() => handleAxisMenuAction('add-after')}>
344
+ <DropdownMenu.Item onClick={() => handleAxisMenuAction('insert-after')}>
281
345
  <Icon
282
346
  size={5}
283
347
  icon={contextMenuAxis === 'col' ? 'ph--columns-plus-right--regular' : 'ph--rows-plus-bottom--regular'}
284
348
  />
285
349
  <span>{t(`add ${contextMenuAxis} after label`)}</span>
286
350
  </DropdownMenu.Item>
287
- <DropdownMenu.Item disabled onClick={() => handleAxisMenuAction('remove')}>
351
+ <DropdownMenu.Item onClick={() => handleAxisMenuAction('drop')}>
288
352
  <Icon size={5} icon='ph--backspace--regular' />
289
353
  <span>{t(`delete ${contextMenuAxis} label`)}</span>
290
354
  </DropdownMenu.Item>
@@ -67,16 +67,18 @@ const projectCellProps = (model: SheetModel, col: number, row: number): DxGridCe
67
67
  })
68
68
  .map((thread) => fullyQualifiedId(thread!))
69
69
  .join(' ');
70
- const type = model.getValueType(address);
70
+
71
+ const description = model.getValueDescription(address);
72
+ const type = description?.type;
73
+ const format = description?.format;
71
74
  const classNames = ranges?.map(cellClassNameForRange).reverse();
72
75
 
73
76
  return {
74
- value: parseValue(type, rawValue),
75
- className: mx(cellClassesForFieldType(type), threadRefs && commentedClassName, classNames),
77
+ value: parseValue({ type, format, value: rawValue }),
78
+ className: mx(cellClassesForFieldType({ type, format }), threadRefs && commentedClassName, classNames),
76
79
  dataRefs: threadRefs,
77
80
  };
78
81
  };
79
-
80
82
  const gridCellGetter = (model: SheetModel) => {
81
83
  // TODO(thure): Actually use the cache.
82
84
  const cachedGridCells: DxGridPlaneCells = {};
@@ -94,11 +96,15 @@ const gridCellGetter = (model: SheetModel) => {
94
96
 
95
97
  export const rowLabelCell = (row: number) => ({
96
98
  value: rowToA1Notation(row),
97
- className: 'text-end !pie-1',
99
+ className: 'text-end !pie-1 text-subdued',
98
100
  resizeHandle: 'row',
99
101
  });
100
102
 
101
- export const colLabelCell = (col: number) => ({ value: colToA1Notation(col), resizeHandle: 'col' });
103
+ export const colLabelCell = (col: number) => ({
104
+ value: colToA1Notation(col),
105
+ className: 'text-subdued',
106
+ resizeHandle: 'col',
107
+ });
102
108
 
103
109
  const cellGetter = (model: SheetModel) => {
104
110
  const getGridCells = gridCellGetter(model);
@@ -129,7 +135,7 @@ export const useSheetModelDxGridProps = (
129
135
  model: SheetModel,
130
136
  ): Pick<GridContentProps, 'columns' | 'rows'> => {
131
137
  const [columns, setColumns] = useState<DxGridAxisMeta>(createDxGridColumns(model));
132
- const [rows, setRows] = useState<DxGridAxisMeta>(createDxGridColumns(model));
138
+ const [rows, setRows] = useState<DxGridAxisMeta>(createDxGridRows(model));
133
139
 
134
140
  useEffect(() => {
135
141
  const cellsAccessor = createDocAccessor(model.sheet, ['cells']);
@@ -140,7 +146,11 @@ export const useSheetModelDxGridProps = (
140
146
  dxGrid?.requestUpdate('initialCells');
141
147
  };
142
148
  cellsAccessor.handle.addListener('change', handleCellsUpdate);
143
- return () => cellsAccessor.handle.removeListener('change', handleCellsUpdate);
149
+ const unsubscribe = model.graph.update.on(handleCellsUpdate);
150
+ return () => {
151
+ cellsAccessor.handle.removeListener('change', handleCellsUpdate);
152
+ unsubscribe();
153
+ };
144
154
  }, [model, dxGrid]);
145
155
 
146
156
  useEffect(() => {
@@ -158,7 +168,7 @@ export const useSheetModelDxGridProps = (
158
168
  columnMetaAccessor.handle.removeListener('change', handleColumnMetaUpdate);
159
169
  rowMetaAccessor.handle.removeListener('change', handleRowMetaUpdate);
160
170
  };
161
- }, [model]);
171
+ }, [model, dxGrid]);
162
172
 
163
173
  return { columns, rows };
164
174
  };