@dxos/plugin-sheet 0.8.2-main.f081794 → 0.8.2-main.fbd8ed0

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 (139) hide show
  1. package/dist/lib/browser/{SheetContainer-7DK3ZZUT.mjs → SheetContainer-UV7RMPXS.mjs} +88 -86
  2. package/dist/lib/browser/SheetContainer-UV7RMPXS.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-HRTIOTK7.mjs → chunk-N2FOQHUH.mjs} +49 -48
  4. package/dist/lib/browser/chunk-N2FOQHUH.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-IE42HBFC.mjs → chunk-TN7LTDHU.mjs} +86 -75
  6. package/dist/lib/browser/chunk-TN7LTDHU.mjs.map +7 -0
  7. package/dist/lib/browser/{compute-graph-registry-WEJLJJ6T.mjs → compute-graph-registry-MBJKPAHX.mjs} +2 -2
  8. package/dist/lib/browser/compute-graph-registry-MBJKPAHX.mjs.map +7 -0
  9. package/dist/lib/browser/index.mjs +6 -6
  10. package/dist/lib/browser/{intent-resolver-OMXW6BDZ.mjs → intent-resolver-DN7JXDAV.mjs} +2 -2
  11. package/dist/lib/browser/{markdown-DR4RDEEY.mjs → markdown-57MKY5WB.mjs} +2 -2
  12. package/dist/lib/browser/markdown-57MKY5WB.mjs.map +7 -0
  13. package/dist/lib/browser/meta.json +1 -1
  14. package/dist/lib/browser/{react-surface-RTQDRQ4X.mjs → react-surface-NQU63B63.mjs} +3 -3
  15. package/dist/lib/browser/{thread-HV32Z27A.mjs → thread-WU64QL2A.mjs} +2 -2
  16. package/dist/lib/browser/types/index.mjs +1 -1
  17. package/dist/lib/node/{SheetContainer-6RPY4P7E.cjs → SheetContainer-GR2KDOAE.cjs} +106 -102
  18. package/dist/lib/node/SheetContainer-GR2KDOAE.cjs.map +7 -0
  19. package/dist/lib/node/{chunk-UXSU6W7E.cjs → chunk-CN7OBGYV.cjs} +95 -84
  20. package/dist/lib/node/chunk-CN7OBGYV.cjs.map +7 -0
  21. package/dist/lib/node/{chunk-C3Q4GSES.cjs → chunk-HLSQVT3C.cjs} +65 -64
  22. package/dist/lib/node/chunk-HLSQVT3C.cjs.map +7 -0
  23. package/dist/lib/node/{compute-graph-registry-VVSRJUGS.cjs → compute-graph-registry-EBBDN6ZX.cjs} +5 -5
  24. package/dist/lib/node/compute-graph-registry-EBBDN6ZX.cjs.map +7 -0
  25. package/dist/lib/node/index.cjs +12 -12
  26. package/dist/lib/node/{intent-resolver-KI5DG7LR.cjs → intent-resolver-OPF56TAL.cjs} +9 -9
  27. package/dist/lib/node/{markdown-E7OUIMZO.cjs → markdown-Q3RXYPHQ.cjs} +5 -5
  28. package/dist/lib/node/markdown-Q3RXYPHQ.cjs.map +7 -0
  29. package/dist/lib/node/meta.json +1 -1
  30. package/dist/lib/node/{react-surface-ZDOTWZ4Q.cjs → react-surface-7SAA5DX3.cjs} +11 -11
  31. package/dist/lib/node/{thread-NVEWN3H2.cjs → thread-E7YPGR5T.cjs} +7 -7
  32. package/dist/lib/node/types/index.cjs +29 -29
  33. package/dist/lib/node/types/index.cjs.map +1 -1
  34. package/dist/lib/node-esm/{SheetContainer-QQUB22WF.mjs → SheetContainer-XW7B2AJI.mjs} +88 -86
  35. package/dist/lib/node-esm/SheetContainer-XW7B2AJI.mjs.map +7 -0
  36. package/dist/lib/node-esm/{chunk-JSVXC3QP.mjs → chunk-3JJ7ETTJ.mjs} +86 -75
  37. package/dist/lib/node-esm/chunk-3JJ7ETTJ.mjs.map +7 -0
  38. package/dist/lib/node-esm/{chunk-SWRUEW6J.mjs → chunk-LYZV4Q4C.mjs} +49 -48
  39. package/dist/lib/node-esm/chunk-LYZV4Q4C.mjs.map +7 -0
  40. package/dist/lib/node-esm/{compute-graph-registry-PBQ52KH6.mjs → compute-graph-registry-TVG6RN2J.mjs} +2 -2
  41. package/dist/lib/node-esm/compute-graph-registry-TVG6RN2J.mjs.map +7 -0
  42. package/dist/lib/node-esm/index.mjs +6 -6
  43. package/dist/lib/node-esm/{intent-resolver-3FVOBB3K.mjs → intent-resolver-7AN5CN4R.mjs} +2 -2
  44. package/dist/lib/node-esm/{markdown-BPKS2TNG.mjs → markdown-ACHAWUOE.mjs} +2 -2
  45. package/dist/lib/node-esm/markdown-ACHAWUOE.mjs.map +7 -0
  46. package/dist/lib/node-esm/meta.json +1 -1
  47. package/dist/lib/node-esm/{react-surface-T4OVUZY2.mjs → react-surface-BPNN7RSE.mjs} +3 -3
  48. package/dist/lib/node-esm/{thread-DTWGGMW4.mjs → thread-ULESW6IX.mjs} +2 -2
  49. package/dist/lib/node-esm/types/index.mjs +1 -1
  50. package/dist/types/src/capabilities/compute-graph-registry.d.ts +2 -2
  51. package/dist/types/src/capabilities/compute-graph-registry.d.ts.map +1 -1
  52. package/dist/types/src/capabilities/index.d.ts +2 -2
  53. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  54. package/dist/types/src/capabilities/markdown.d.ts +2 -2
  55. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  56. package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts.map +1 -1
  57. package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -1
  58. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +1 -1
  59. package/dist/types/src/components/GridSheet/util.d.ts.map +1 -1
  60. package/dist/types/src/components/RangeList/RangeList.d.ts.map +1 -1
  61. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts +3 -2
  62. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts.map +1 -1
  63. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
  64. package/dist/types/src/components/SheetContext/SheetContext.d.ts.map +1 -1
  65. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts.map +1 -1
  66. package/dist/types/src/components/SheetToolbar/align.d.ts +4 -1
  67. package/dist/types/src/components/SheetToolbar/align.d.ts.map +1 -1
  68. package/dist/types/src/components/SheetToolbar/comment.d.ts +3 -1
  69. package/dist/types/src/components/SheetToolbar/comment.d.ts.map +1 -1
  70. package/dist/types/src/components/SheetToolbar/style.d.ts +3 -1
  71. package/dist/types/src/components/SheetToolbar/style.d.ts.map +1 -1
  72. package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts.map +1 -1
  73. package/dist/types/src/components/index.d.ts +1 -6
  74. package/dist/types/src/components/index.d.ts.map +1 -1
  75. package/dist/types/src/extensions/compute.d.ts.map +1 -1
  76. package/dist/types/src/extensions/editor/extension.d.ts.map +1 -1
  77. package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
  78. package/dist/types/src/model/testing.d.ts.map +1 -1
  79. package/dist/types/src/model/useSheetModel.d.ts.map +1 -1
  80. package/dist/types/src/testing/data.d.ts.map +1 -1
  81. package/dist/types/src/testing/testing.d.ts.map +1 -1
  82. package/dist/types/src/translations.d.ts +2 -54
  83. package/dist/types/src/translations.d.ts.map +1 -1
  84. package/dist/types/src/types/schema.d.ts +239 -144
  85. package/dist/types/src/types/schema.d.ts.map +1 -1
  86. package/dist/types/src/types/sheet-range-types.d.ts.map +1 -1
  87. package/dist/types/src/types/types.d.ts +36 -36
  88. package/dist/types/src/types/types.d.ts.map +1 -1
  89. package/dist/types/src/types/util.d.ts.map +1 -1
  90. package/dist/types/tsconfig.tsbuildinfo +1 -1
  91. package/package.json +53 -47
  92. package/src/capabilities/compute-graph-registry.ts +3 -3
  93. package/src/capabilities/markdown.ts +3 -3
  94. package/src/components/ComputeGraph/compute-graph.stories.tsx +2 -2
  95. package/src/components/FunctionEditor/FunctionEditor.tsx +1 -1
  96. package/src/components/GridSheet/GridSheet.stories.tsx +5 -2
  97. package/src/components/GridSheet/GridSheet.tsx +18 -12
  98. package/src/components/GridSheet/SheetCellEditor.stories.tsx +2 -2
  99. package/src/components/GridSheet/util.ts +7 -2
  100. package/src/components/RangeList/RangeList.tsx +2 -2
  101. package/src/components/SheetContainer/SheetContainer.stories.tsx +1 -5
  102. package/src/components/SheetContainer/SheetContainer.tsx +4 -7
  103. package/src/components/SheetToolbar/SheetToolbar.stories.tsx +1 -1
  104. package/src/components/SheetToolbar/SheetToolbar.tsx +33 -8
  105. package/src/components/SheetToolbar/align.ts +44 -14
  106. package/src/components/SheetToolbar/comment.ts +39 -11
  107. package/src/components/SheetToolbar/style.ts +48 -12
  108. package/src/integrations/thread-ranges.ts +2 -3
  109. package/src/model/sheet-model.test.ts +1 -1
  110. package/src/sanity.test.ts +1 -1
  111. package/src/types/schema.ts +21 -19
  112. package/src/types/types.ts +25 -25
  113. package/dist/lib/browser/SheetContainer-7DK3ZZUT.mjs.map +0 -7
  114. package/dist/lib/browser/chunk-HRTIOTK7.mjs.map +0 -7
  115. package/dist/lib/browser/chunk-IE42HBFC.mjs.map +0 -7
  116. package/dist/lib/browser/compute-graph-registry-WEJLJJ6T.mjs.map +0 -7
  117. package/dist/lib/browser/markdown-DR4RDEEY.mjs.map +0 -7
  118. package/dist/lib/node/SheetContainer-6RPY4P7E.cjs.map +0 -7
  119. package/dist/lib/node/chunk-C3Q4GSES.cjs.map +0 -7
  120. package/dist/lib/node/chunk-UXSU6W7E.cjs.map +0 -7
  121. package/dist/lib/node/compute-graph-registry-VVSRJUGS.cjs.map +0 -7
  122. package/dist/lib/node/markdown-E7OUIMZO.cjs.map +0 -7
  123. package/dist/lib/node-esm/SheetContainer-QQUB22WF.mjs.map +0 -7
  124. package/dist/lib/node-esm/chunk-JSVXC3QP.mjs.map +0 -7
  125. package/dist/lib/node-esm/chunk-SWRUEW6J.mjs.map +0 -7
  126. package/dist/lib/node-esm/compute-graph-registry-PBQ52KH6.mjs.map +0 -7
  127. package/dist/lib/node-esm/markdown-BPKS2TNG.mjs.map +0 -7
  128. package/dist/types/src/components/SheetToolbar/useToolbarAction.d.ts +0 -8
  129. package/dist/types/src/components/SheetToolbar/useToolbarAction.d.ts.map +0 -1
  130. package/src/components/SheetToolbar/useToolbarAction.ts +0 -87
  131. /package/dist/lib/browser/{intent-resolver-OMXW6BDZ.mjs.map → intent-resolver-DN7JXDAV.mjs.map} +0 -0
  132. /package/dist/lib/browser/{react-surface-RTQDRQ4X.mjs.map → react-surface-NQU63B63.mjs.map} +0 -0
  133. /package/dist/lib/browser/{thread-HV32Z27A.mjs.map → thread-WU64QL2A.mjs.map} +0 -0
  134. /package/dist/lib/node/{intent-resolver-KI5DG7LR.cjs.map → intent-resolver-OPF56TAL.cjs.map} +0 -0
  135. /package/dist/lib/node/{react-surface-ZDOTWZ4Q.cjs.map → react-surface-7SAA5DX3.cjs.map} +0 -0
  136. /package/dist/lib/node/{thread-NVEWN3H2.cjs.map → thread-E7YPGR5T.cjs.map} +0 -0
  137. /package/dist/lib/node-esm/{intent-resolver-3FVOBB3K.mjs.map → intent-resolver-7AN5CN4R.mjs.map} +0 -0
  138. /package/dist/lib/node-esm/{react-surface-T4OVUZY2.mjs.map → react-surface-BPNN7RSE.mjs.map} +0 -0
  139. /package/dist/lib/node-esm/{thread-DTWGGMW4.mjs.map → thread-ULESW6IX.mjs.map} +0 -0
@@ -1,4 +1,4 @@
1
- import { S } from '@dxos/echo-schema';
1
+ import { Schema } from 'effect';
2
2
  import { type CellValue, SheetType } from './schema';
3
3
  import { SheetModel } from '../model';
4
4
  export type SheetSize = {
@@ -10,59 +10,59 @@ export type CreateSheetOptions = {
10
10
  cells?: Record<string, CellValue>;
11
11
  } & Partial<SheetSize>;
12
12
  export declare namespace SheetAction {
13
- const Create_base: S.TaggedClass<Create, "dxos.org/plugin/sheet/action/create", {
14
- readonly _tag: S.tag<"dxos.org/plugin/sheet/action/create">;
13
+ const Create_base: Schema.TaggedClass<Create, "dxos.org/plugin/sheet/action/create", {
14
+ readonly _tag: Schema.tag<"dxos.org/plugin/sheet/action/create">;
15
15
  } & {
16
- input: S.Struct<{
17
- name: S.optional<typeof S.String>;
16
+ input: Schema.Struct<{
17
+ name: Schema.optional<typeof Schema.String>;
18
18
  }>;
19
- output: S.Struct<{
19
+ output: Schema.Struct<{
20
20
  object: typeof SheetType;
21
21
  }>;
22
22
  }>;
23
23
  export class Create extends Create_base {
24
24
  }
25
- const InsertAxis_base: S.TaggedClass<InsertAxis, "dxos.org/plugin/sheet/action/axis-insert", {
26
- readonly _tag: S.tag<"dxos.org/plugin/sheet/action/axis-insert">;
25
+ const InsertAxis_base: Schema.TaggedClass<InsertAxis, "dxos.org/plugin/sheet/action/axis-insert", {
26
+ readonly _tag: Schema.tag<"dxos.org/plugin/sheet/action/axis-insert">;
27
27
  } & {
28
- input: S.Struct<{
29
- model: S.Schema<SheetModel>;
30
- axis: S.Union<[S.Literal<["row"]>, S.Literal<["col"]>]>;
31
- index: typeof S.Number;
32
- count: S.optional<typeof S.Number>;
28
+ input: Schema.Struct<{
29
+ model: Schema.Schema<SheetModel>;
30
+ axis: Schema.Union<[Schema.Literal<["row"]>, Schema.Literal<["col"]>]>;
31
+ index: typeof Schema.Number;
32
+ count: Schema.optional<typeof Schema.Number>;
33
33
  }>;
34
- output: typeof S.Void;
34
+ output: typeof Schema.Void;
35
35
  }>;
36
36
  export class InsertAxis extends InsertAxis_base {
37
37
  }
38
- export const RestoreAxis: S.Struct<{
39
- axis: S.Union<[S.Literal<["row"]>, S.Literal<["col"]>]>;
40
- axisIndex: typeof S.String;
41
- index: typeof S.Number;
42
- axisMeta: S.Struct<{
43
- size: S.optional<typeof S.Number>;
38
+ export const RestoreAxis: Schema.Struct<{
39
+ axis: Schema.Union<[Schema.Literal<["row"]>, Schema.Literal<["col"]>]>;
40
+ axisIndex: typeof Schema.String;
41
+ index: typeof Schema.Number;
42
+ axisMeta: Schema.Struct<{
43
+ size: Schema.optional<typeof Schema.Number>;
44
44
  }>;
45
- values: S.Array$<typeof S.Any>;
45
+ values: Schema.Array$<typeof Schema.Any>;
46
46
  }>;
47
- export type RestoreAxis = S.Schema.Type<typeof RestoreAxis>;
48
- const DropAxis_base: S.TaggedClass<DropAxis, "dxos.org/plugin/sheet/action/axis-drop", {
49
- readonly _tag: S.tag<"dxos.org/plugin/sheet/action/axis-drop">;
47
+ export type RestoreAxis = Schema.Schema.Type<typeof RestoreAxis>;
48
+ const DropAxis_base: Schema.TaggedClass<DropAxis, "dxos.org/plugin/sheet/action/axis-drop", {
49
+ readonly _tag: Schema.tag<"dxos.org/plugin/sheet/action/axis-drop">;
50
50
  } & {
51
- input: S.Struct<{
52
- model: S.Schema<SheetModel>;
53
- axis: S.Union<[S.Literal<["row"]>, S.Literal<["col"]>]>;
54
- axisIndex: typeof S.String;
55
- deletionData: S.optional<S.Struct<{
56
- axis: S.Union<[S.Literal<["row"]>, S.Literal<["col"]>]>;
57
- axisIndex: typeof S.String;
58
- index: typeof S.Number;
59
- axisMeta: S.Struct<{
60
- size: S.optional<typeof S.Number>;
51
+ input: Schema.Struct<{
52
+ model: Schema.Schema<SheetModel>;
53
+ axis: Schema.Union<[Schema.Literal<["row"]>, Schema.Literal<["col"]>]>;
54
+ axisIndex: typeof Schema.String;
55
+ deletionData: Schema.optional<Schema.Struct<{
56
+ axis: Schema.Union<[Schema.Literal<["row"]>, Schema.Literal<["col"]>]>;
57
+ axisIndex: typeof Schema.String;
58
+ index: typeof Schema.Number;
59
+ axisMeta: Schema.Struct<{
60
+ size: Schema.optional<typeof Schema.Number>;
61
61
  }>;
62
- values: S.Array$<typeof S.Any>;
62
+ values: Schema.Array$<typeof Schema.Any>;
63
63
  }>>;
64
64
  }>;
65
- output: typeof S.Void;
65
+ output: typeof Schema.Void;
66
66
  }>;
67
67
  export class DropAxis extends DropAxis_base {
68
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAEtC,OAAO,EAAE,KAAK,SAAS,EAAiB,SAAS,EAAE,MAAM,UAAU,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,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;AAEvB,yBAAiB,WAAW,CAAC;;;;;;;;;;;IAG3B,MAAM,OAAO,MAAO,SAAQ,WAO1B;KAAG;;;;;mBAQsE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;;;;;;;IAH/F,MAAM,OAAO,UAAW,SAAQ,eAS9B;KAAG;IAEL,MAAM,CAAC,MAAM,WAAW;;;;;;;;MAMtB,CAAC;IAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,WAAW,CAAC,CAAC;;;;;mBAKe,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;;;;;;;;;;;;;;;IAH/F,MAAM,OAAO,QAAS,SAAQ,aAS5B;KAAG;;CACN"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,KAAK,SAAS,EAAiB,SAAS,EAAE,MAAM,UAAU,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,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;AAEvB,yBAAiB,WAAW,CAAC;;;;;;;;;;;IAG3B,MAAM,OAAO,MAAO,SAAQ,WAO1B;KAAG;;;;;mBAQgF,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;;;;;;;IAH9G,MAAM,OAAO,UAAW,SAAQ,eAS9B;KAAG;IAEL,MAAM,CAAC,MAAM,WAAW;;;;;;;;MAMtB,CAAC;IAEH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,WAAW,CAAC,CAAC;;;;;mBAKoB,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;;;;;;;;;;;;;;;IAH9G,MAAM,OAAO,QAAS,SAAQ,aAS5B;KAAG;;CACN"}
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/types/util.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,iBAAiB,EACvB,MAAM,eAAe,CAAC;AAKvB,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE9E,eAAO,MAAM,QAAQ,MAAM,CAAC;AAC5B,eAAO,MAAM,QAAQ,MAAM,CAAC;AAE5B,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,YAAY,KAAK,CAAC;AAG/B,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,sBACiC,OAAO,CAAC,SAAS,CAAC,SAQpE,CAAC;AAEF,eAAO,MAAM,WAAW,8BAA8B,kBAAkB,KAAQ,SA0B/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;AAIF;;GAEG;AACH,eAAO,MAAM,uBAAuB,UAAW,SAAS,WAAW,MAAM,KAAG,MAK3E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,UAAW,SAAS,WAAW,MAAM,KAAG,MAK3E,CAAC"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/types/util.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,iBAAiB,EACvB,MAAM,eAAe,CAAC;AAKvB,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE9E,eAAO,MAAM,QAAQ,MAAM,CAAC;AAC5B,eAAO,MAAM,QAAQ,MAAM,CAAC;AAE5B,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,eAAO,MAAM,YAAY,KAAK,CAAC;AAG/B,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,GAAI,eAAU,KAAG,MAKxC,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,KAAG,MAAM,EAAqD,CAAC;AAE3G,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,KAAK,MAAM,aAQjF,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,OAAO,SAAS,EAChB,oBAAiD,OAAO,CAAC,SAAS,CAAM,SAQzE,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,2BAA0B,kBAAuB,KAAG,SA0B/E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,SAAS,EAAE,MAAM,WAAW,KAAG,MAEpE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,SAAS,EAAE,KAAK,MAAM,KAAG,WAMhE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,SAAS,EAAE,OAAO,SAAS,KAAG,MAEjE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,SAAS,EAAE,KAAK,MAAM,KAAG,iBAG9D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,OAAO,SAAS,EAAE,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,MAUxF,CAAC;AAIF;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAAI,OAAO,SAAS,EAAE,SAAS,MAAM,KAAG,MAK3E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAAI,OAAO,SAAS,EAAE,SAAS,MAAM,KAAG,MAK3E,CAAC"}
@@ -1 +1 @@
1
- {"version":"5.7.3"}
1
+ {"version":"5.8.3"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-sheet",
3
- "version": "0.8.2-main.f081794",
3
+ "version": "0.8.2-main.fbd8ed0",
4
4
  "description": "Braneframe sketch plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -53,67 +53,73 @@
53
53
  "re-resizable": "^6.9.17",
54
54
  "react-markdown": "^8.0.5",
55
55
  "react-resize-detector": "^11.0.1",
56
- "@dxos/app-framework": "0.8.2-main.f081794",
57
- "@dxos/async": "0.8.2-main.f081794",
58
- "@dxos/client": "0.8.2-main.f081794",
59
- "@dxos/compute": "0.8.2-main.f081794",
60
- "@dxos/crypto": "0.8.2-main.f081794",
61
- "@dxos/context": "0.8.2-main.f081794",
62
- "@dxos/debug": "0.8.2-main.f081794",
63
- "@dxos/echo-schema": "0.8.2-main.f081794",
64
- "@dxos/invariant": "0.8.2-main.f081794",
65
- "@dxos/functions": "0.8.2-main.f081794",
66
- "@dxos/keys": "0.8.2-main.f081794",
67
- "@dxos/live-object": "0.8.2-main.f081794",
68
- "@dxos/log": "0.8.2-main.f081794",
69
- "@dxos/plugin-attention": "0.8.2-main.f081794",
70
- "@dxos/plugin-graph": "0.8.2-main.f081794",
71
- "@dxos/plugin-client": "0.8.2-main.f081794",
72
- "@dxos/plugin-script": "0.8.2-main.f081794",
73
- "@dxos/plugin-markdown": "0.8.2-main.f081794",
74
- "@dxos/plugin-deck": "0.8.2-main.f081794",
75
- "@dxos/plugin-space": "0.8.2-main.f081794",
76
- "@dxos/plugin-stack": "0.8.2-main.f081794",
77
- "@dxos/plugin-thread": "0.8.2-main.f081794",
78
- "@dxos/react-hooks": "0.8.2-main.f081794",
79
- "@dxos/react-ui-attention": "0.8.2-main.f081794",
80
- "@dxos/react-ui-editor": "0.8.2-main.f081794",
81
- "@dxos/react-ui-form": "0.8.2-main.f081794",
82
- "@dxos/react-client": "0.8.2-main.f081794",
83
- "@dxos/react-ui-list": "0.8.2-main.f081794",
84
- "@dxos/react-ui-grid": "0.8.2-main.f081794",
85
- "@dxos/react-ui-menu": "0.8.2-main.f081794",
86
- "@dxos/react-ui-stack": "0.8.2-main.f081794",
87
- "@dxos/schema": "0.8.2-main.f081794",
88
- "@dxos/util": "0.8.2-main.f081794"
56
+ "@dxos/app-framework": "0.8.2-main.fbd8ed0",
57
+ "@dxos/client": "0.8.2-main.fbd8ed0",
58
+ "@dxos/async": "0.8.2-main.fbd8ed0",
59
+ "@dxos/compute": "0.8.2-main.fbd8ed0",
60
+ "@dxos/debug": "0.8.2-main.fbd8ed0",
61
+ "@dxos/context": "0.8.2-main.fbd8ed0",
62
+ "@dxos/echo": "0.8.2-main.fbd8ed0",
63
+ "@dxos/crypto": "0.8.2-main.fbd8ed0",
64
+ "@dxos/functions": "0.8.2-main.fbd8ed0",
65
+ "@dxos/echo-schema": "0.8.2-main.fbd8ed0",
66
+ "@dxos/invariant": "0.8.2-main.fbd8ed0",
67
+ "@dxos/keys": "0.8.2-main.fbd8ed0",
68
+ "@dxos/lit-grid": "0.8.2-main.fbd8ed0",
69
+ "@dxos/live-object": "0.8.2-main.fbd8ed0",
70
+ "@dxos/plugin-client": "0.8.2-main.fbd8ed0",
71
+ "@dxos/plugin-attention": "0.8.2-main.fbd8ed0",
72
+ "@dxos/log": "0.8.2-main.fbd8ed0",
73
+ "@dxos/plugin-deck": "0.8.2-main.fbd8ed0",
74
+ "@dxos/plugin-markdown": "0.8.2-main.fbd8ed0",
75
+ "@dxos/plugin-graph": "0.8.2-main.fbd8ed0",
76
+ "@dxos/plugin-script": "0.8.2-main.fbd8ed0",
77
+ "@dxos/plugin-space": "0.8.2-main.fbd8ed0",
78
+ "@dxos/plugin-thread": "0.8.2-main.fbd8ed0",
79
+ "@dxos/plugin-stack": "0.8.2-main.fbd8ed0",
80
+ "@dxos/react-client": "0.8.2-main.fbd8ed0",
81
+ "@dxos/react-hooks": "0.8.2-main.fbd8ed0",
82
+ "@dxos/react-ui-form": "0.8.2-main.fbd8ed0",
83
+ "@dxos/react-ui-attention": "0.8.2-main.fbd8ed0",
84
+ "@dxos/react-ui-editor": "0.8.2-main.fbd8ed0",
85
+ "@dxos/react-ui-grid": "0.8.2-main.fbd8ed0",
86
+ "@dxos/react-ui-menu": "0.8.2-main.fbd8ed0",
87
+ "@dxos/react-ui-list": "0.8.2-main.fbd8ed0",
88
+ "@dxos/react-ui-stack": "0.8.2-main.fbd8ed0",
89
+ "@dxos/schema": "0.8.2-main.fbd8ed0",
90
+ "@dxos/util": "0.8.2-main.fbd8ed0"
89
91
  },
90
92
  "devDependencies": {
93
+ "@effect-rx/rx-react": "^0.34.1",
94
+ "@effect/platform": "0.80.12",
91
95
  "@lezer/generator": "^1.7.1",
92
96
  "@tldraw/indices": "^2.0.0-alpha.14",
93
97
  "@types/lodash.defaultsdeep": "^4.6.6",
94
98
  "@types/react": "~18.2.0",
95
99
  "@types/react-dom": "~18.2.0",
96
100
  "@types/react-window": "^1.8.8",
97
- "effect": "3.13.3",
101
+ "effect": "3.14.21",
98
102
  "react": "~18.2.0",
99
103
  "react-dom": "~18.2.0",
100
104
  "vite": "5.4.7",
101
- "@dxos/lit-grid": "0.8.2-main.f081794",
102
- "@dxos/echo-generator": "0.8.2-main.f081794",
103
- "@dxos/random": "0.8.2-main.f081794",
104
- "@dxos/react-ui": "0.8.2-main.f081794",
105
- "@dxos/react-ui-syntax-highlighter": "0.8.2-main.f081794",
106
- "@dxos/react-ui-types": "0.8.2-main.f081794",
107
- "@dxos/storybook-utils": "0.8.2-main.f081794",
108
- "@dxos/test-utils": "0.8.2-main.f081794",
109
- "@dxos/react-ui-theme": "0.8.2-main.f081794"
105
+ "@dxos/lit-grid": "0.8.2-main.fbd8ed0",
106
+ "@dxos/echo-generator": "0.8.2-main.fbd8ed0",
107
+ "@dxos/react-ui": "0.8.2-main.fbd8ed0",
108
+ "@dxos/random": "0.8.2-main.fbd8ed0",
109
+ "@dxos/react-ui-theme": "0.8.2-main.fbd8ed0",
110
+ "@dxos/react-ui-syntax-highlighter": "0.8.2-main.fbd8ed0",
111
+ "@dxos/storybook-utils": "0.8.2-main.fbd8ed0",
112
+ "@dxos/react-ui-types": "0.8.2-main.fbd8ed0",
113
+ "@dxos/test-utils": "0.8.2-main.fbd8ed0"
110
114
  },
111
115
  "peerDependencies": {
112
- "effect": "3.13.3",
116
+ "@effect-rx/rx-react": "^0.34.1",
117
+ "@effect/platform": "0.80.12",
118
+ "effect": "^3.13.3",
113
119
  "react": "~18.2.0",
114
120
  "react-dom": "~18.2.0",
115
- "@dxos/react-ui": "0.8.2-main.f081794",
116
- "@dxos/react-ui-theme": "0.8.2-main.f081794"
121
+ "@dxos/react-ui": "0.8.2-main.fbd8ed0",
122
+ "@dxos/react-ui-theme": "0.8.2-main.fbd8ed0"
117
123
  },
118
124
  "publishConfig": {
119
125
  "access": "public"
@@ -2,7 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { contributes, type PluginsContext } from '@dxos/app-framework';
5
+ import { contributes, type PluginContext } from '@dxos/app-framework';
6
6
  import { ClientCapabilities } from '@dxos/plugin-client';
7
7
 
8
8
  import { SheetCapabilities } from './capabilities';
@@ -11,8 +11,8 @@ const isSecure = (protocol: string) => {
11
11
  return protocol === 'https:' || protocol === 'wss:';
12
12
  };
13
13
 
14
- export default async (context: PluginsContext) => {
15
- const client = context.requestCapability(ClientCapabilities.Client);
14
+ export default async (context: PluginContext) => {
15
+ const client = context.getCapability(ClientCapabilities.Client);
16
16
  let remoteFunctionUrl: string | undefined;
17
17
  if (client.config.values.runtime?.services?.edge?.url) {
18
18
  const url = new URL('/functions', client.config.values.runtime?.services?.edge?.url);
@@ -2,17 +2,17 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { contributes, type PluginsContext } from '@dxos/app-framework';
5
+ import { contributes, type PluginContext } from '@dxos/app-framework';
6
6
  import { getSpace } from '@dxos/client/echo';
7
7
  import { MarkdownCapabilities } from '@dxos/plugin-markdown';
8
8
 
9
9
  import { SheetCapabilities } from './capabilities';
10
10
  import { computeGraphFacet } from '../extensions';
11
11
 
12
- export default (context: PluginsContext) =>
12
+ export default (context: PluginContext) =>
13
13
  contributes(MarkdownCapabilities.Extensions, [
14
14
  ({ document: doc }) => {
15
- const computeGraphRegistry = context.requestCapability(SheetCapabilities.ComputeGraphRegistry);
15
+ const computeGraphRegistry = context.getCapability(SheetCapabilities.ComputeGraphRegistry);
16
16
  const space = getSpace(doc);
17
17
  if (space) {
18
18
  const computeGraph = computeGraphRegistry.getOrCreateGraph(space);
@@ -8,7 +8,7 @@ import { type Meta } from '@storybook/react';
8
8
  import React, { useEffect, useRef, useState } from 'react';
9
9
 
10
10
  import { testFunctionPlugins } from '@dxos/compute/testing';
11
- import { FunctionType } from '@dxos/functions/types';
11
+ import { FunctionType } from '@dxos/functions';
12
12
  import { live, useSpace, Filter } from '@dxos/react-client/echo';
13
13
  import { withClientProvider } from '@dxos/react-client/testing';
14
14
  import { Toolbar, Button, Input } from '@dxos/react-ui';
@@ -51,7 +51,7 @@ const Story = () => {
51
51
  const inputRef = useRef<HTMLInputElement | null>(null);
52
52
  const handleTest = async () => {
53
53
  if (space && graph) {
54
- const { objects } = await space.db.query(Filter.schema(FunctionType)).run();
54
+ const { objects } = await space.db.query(Filter.type(FunctionType)).run();
55
55
  const mapped = graph.mapFunctionBindingToId(text);
56
56
  const unmapped = graph.mapFunctionBindingFromId(mapped);
57
57
  const internal = graph.mapFormulaToNative(text);
@@ -26,7 +26,7 @@ export const FunctionEditor = () => {
26
26
  }
27
27
 
28
28
  return (
29
- <div className='flex shrink-0 justify-between items-center px-4 py-1 text-sm attention-surface border-bs !border-separator'>
29
+ <div className='flex shrink-0 justify-between items-center px-4 py-1 text-sm bg-toolbarSurface border-bs !border-separator'>
30
30
  <div className='flex gap-4 items-center'>
31
31
  <div className='flex w-16 items-center font-mono'>
32
32
  {(range && rangeToA1Notation(range)) || (cursor && addressToA1Notation(cursor))}
@@ -7,6 +7,7 @@ import '@dxos-theme';
7
7
  import { type Meta } from '@storybook/react';
8
8
  import React from 'react';
9
9
 
10
+ import { IntentPlugin } from '@dxos/app-framework';
10
11
  import { withPluginManager } from '@dxos/app-framework/testing';
11
12
  import { useSpace } from '@dxos/react-client/echo';
12
13
  import { withClientProvider } from '@dxos/react-client/testing';
@@ -41,8 +42,10 @@ const meta: Meta = {
41
42
  withClientProvider({ types: [SheetType], createSpace: true }),
42
43
  withComputeGraphDecorator(),
43
44
  withTheme,
44
- withLayout({ fullscreen: true, tooltips: true, classNames: 'grid' }),
45
- withPluginManager(),
45
+ withLayout({ fullscreen: true, classNames: 'grid' }),
46
+ withPluginManager({
47
+ plugins: [IntentPlugin()],
48
+ }),
46
49
  ],
47
50
  parameters: { translations },
48
51
  };
@@ -6,21 +6,22 @@ import React, {
6
6
  useCallback,
7
7
  useMemo,
8
8
  useRef,
9
+ useState,
9
10
  type FocusEvent,
10
11
  type KeyboardEvent,
11
12
  type WheelEvent,
12
13
  type MouseEvent,
13
- useState,
14
14
  } from 'react';
15
15
 
16
16
  import { createIntent, useIntentDispatcher } from '@dxos/app-framework';
17
17
  import { rangeToA1Notation, type CellRange } from '@dxos/compute';
18
+ import { defaultColSize, defaultRowSize } from '@dxos/lit-grid';
18
19
  import { DropdownMenu, Icon, useTranslation } from '@dxos/react-ui';
19
20
  import { useAttention } from '@dxos/react-ui-attention';
20
21
  import {
21
22
  closestCell,
22
- defaultSizeRow,
23
23
  editorKeys,
24
+ parseCellIndex,
24
25
  Grid,
25
26
  GridCellEditor,
26
27
  type DxGridElement,
@@ -29,7 +30,6 @@ import {
29
30
  type EditorKeyHandler,
30
31
  type EditorBlurHandler,
31
32
  type GridContentProps,
32
- parseCellIndex,
33
33
  } from '@dxos/react-ui-grid';
34
34
 
35
35
  import { colLabelCell, rowLabelCell, useSheetModelDxGridProps } from './util';
@@ -58,18 +58,21 @@ const frozen = {
58
58
  frozenRowsStart: 1,
59
59
  };
60
60
 
61
+ const sheetColDefault = {
62
+ frozenColsStart: { size: 48, readonly: true },
63
+ grid: { size: defaultColSize, resizeable: true },
64
+ };
61
65
  const sheetRowDefault = {
62
- frozenRowsStart: { size: defaultSizeRow, readonly: true },
63
- grid: { size: defaultSizeRow, resizeable: true },
66
+ frozenRowsStart: { size: defaultRowSize, readonly: true },
67
+ grid: { size: defaultRowSize, resizeable: true },
64
68
  };
65
- const sheetColDefault = { frozenColsStart: { size: 48, readonly: true }, grid: { size: 180, resizeable: true } };
66
69
 
67
70
  export const GridSheet = () => {
68
71
  const { t } = useTranslation(SHEET_PLUGIN);
69
72
  const { id, model, editing, setCursor, setRange, cursor, cursorFallbackRange, activeRefs, ignoreAttention } =
70
73
  useSheetContext();
71
74
  // NOTE(thure): using `useState` instead of `useRef` works with refs provided by `@lit/react` and gives us
72
- // a reliable dependency for `useEffect` whereas `useLayoutEffect` does not guarantee the element will be defined.
75
+ // a reliable dependency for `useEffect` whereas `useLayoutEffect` does not guarantee the element will be defined.
73
76
  const [dxGrid, setDxGrid] = useState<DxGridElement | null>(null);
74
77
  const [extraplanarFocus, setExtraplanarFocus] = useState<DxGridPosition | null>(null);
75
78
  const { dispatchPromise: dispatch } = useIntentDispatcher();
@@ -152,6 +155,7 @@ export const GridSheet = () => {
152
155
  },
153
156
  [editing],
154
157
  );
158
+
155
159
  const handleWheel = useCallback(
156
160
  (event: WheelEvent) => {
157
161
  if (!ignoreAttention && !hasAttention) {
@@ -302,7 +306,8 @@ export const GridSheet = () => {
302
306
  useSelectThreadOnCellFocus();
303
307
 
304
308
  return (
305
- <div role='none' className='relative min-bs-0'>
309
+ // TODO(thure): Why are Table’s and Sheet’s editor boxes off by 1px?
310
+ <div role='none' className='relative min-bs-0 [&_.cm-editor]:!border-lb [&_.cm-editor]:!border-transparent '>
306
311
  <GridCellEditor getCellContent={getCellContent} extension={extension} onBlur={handleBlur} />
307
312
  <Grid.Content
308
313
  initialCells={initialCells}
@@ -310,18 +315,19 @@ export const GridSheet = () => {
310
315
  limitRows={DEFAULT_ROWS}
311
316
  columns={columns}
312
317
  rows={rows}
313
- onAxisResize={handleAxisResize}
314
- onSelect={handleSelect}
315
- rowDefault={sheetRowDefault}
318
+ // TODO(burdon): `col` vs. `column`?
316
319
  columnDefault={sheetColDefault}
320
+ rowDefault={sheetRowDefault}
317
321
  frozen={frozen}
322
+ onAxisResize={handleAxisResize}
323
+ onSelect={handleSelect}
318
324
  onFocus={handleFocus}
319
325
  onWheelCapture={handleWheel}
320
326
  onKeyDown={handleKeyDown}
321
327
  onContextMenu={handleContextMenu}
322
328
  onClick={handleClick}
323
329
  overscroll='trap'
324
- className='[--dx-grid-base:var(--surface-bg)] [&_.dx-grid]:border-bs [&_.dx-grid]:absolute [&_.dx-grid]:inset-0 [&_.dx-grid]:border-separator'
330
+ className='[--dx-grid-base:var(--baseSurface)] [&_.dx-grid]:border-bs [&_.dx-grid]:border-be [&_.dx-grid]:absolute [&_.dx-grid]:inset-0 [&_.dx-grid]:border-separator'
325
331
  activeRefs={activeRefs}
326
332
  ref={setDxGrid}
327
333
  />
@@ -8,7 +8,7 @@ import { type Meta } from '@storybook/react';
8
8
  import React, { useEffect, useMemo, useState } from 'react';
9
9
 
10
10
  import { Client } from '@dxos/client';
11
- import { createDocAccessor, type ReactiveEchoObject } from '@dxos/client/echo';
11
+ import { createDocAccessor, type AnyLiveObject } from '@dxos/client/echo';
12
12
  import { defaultFunctions } from '@dxos/compute';
13
13
  import { getRegisteredFunctionNames } from '@dxos/compute/testing';
14
14
  import { automerge } from '@dxos/react-ui-editor';
@@ -32,7 +32,7 @@ const Story = ({ value, ...props }: StoryProps) => {
32
32
 
33
33
  const AutomergeStory = ({ value, ...props }: StoryProps) => {
34
34
  const cell = 'A1';
35
- const [object, setObject] = useState<ReactiveEchoObject<SheetType>>();
35
+ const [object, setObject] = useState<AnyLiveObject<SheetType>>();
36
36
  useEffect(() => {
37
37
  setTimeout(async () => {
38
38
  const client = new Client({ types: [SheetType] });
@@ -89,13 +89,13 @@ const gridCellGetter = (model: SheetModel) => {
89
89
 
90
90
  export const rowLabelCell = (row: number) => ({
91
91
  value: rowToA1Notation(row),
92
- className: 'text-end pie-1 text-subdued',
92
+ className: '!bg-toolbarSurface text-subdued text-end pie-1',
93
93
  resizeHandle: 'row',
94
94
  });
95
95
 
96
96
  export const colLabelCell = (col: number) => ({
97
97
  value: colToA1Notation(col),
98
- className: 'text-subdued',
98
+ className: '!bg-toolbarSurface text-subdued',
99
99
  resizeHandle: 'col',
100
100
  });
101
101
 
@@ -105,6 +105,11 @@ const cellGetter = (model: SheetModel) => {
105
105
  switch (plane) {
106
106
  case 'grid':
107
107
  return getGridCells(nextBounds);
108
+ case 'fixedStartStart': {
109
+ return {
110
+ '0,0': { className: '!bg-toolbarSurface' },
111
+ };
112
+ }
108
113
  case 'frozenColsStart':
109
114
  return [...Array(nextBounds.end.row - nextBounds.start.row)].reduce((acc, _, r0) => {
110
115
  const r = nextBounds.start.row + r0;
@@ -2,10 +2,10 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
+ import { Schema } from 'effect';
5
6
  import React, { useCallback } from 'react';
6
7
 
7
8
  import { rangeToA1Notation } from '@dxos/compute';
8
- import { S } from '@dxos/echo-schema';
9
9
  import { useTranslation } from '@dxos/react-ui';
10
10
  import { List } from '@dxos/react-ui-list';
11
11
  import { ghostHover } from '@dxos/react-ui-theme';
@@ -32,7 +32,7 @@ export const RangeList = ({ sheet }: RangeListProps) => {
32
32
  return (
33
33
  <>
34
34
  <h2 className='p-2 text-sm font-semibold'>{t('range list heading')}</h2>
35
- <List.Root<Range> items={sheet.ranges} isItem={S.is(Range)}>
35
+ <List.Root<Range> items={sheet.ranges} isItem={Schema.is(Range)}>
36
36
  {({ items: ranges }) =>
37
37
  ranges.map((range, i) => (
38
38
  <List.Item key={i} item={range} classNames={['p-2', ghostHover]}>
@@ -64,11 +64,7 @@ const meta: Meta = {
64
64
  withClientProvider({ types: [SheetType], createSpace: true }),
65
65
  withComputeGraphDecorator(),
66
66
  withTheme,
67
- withLayout({
68
- fullscreen: true,
69
- tooltips: true,
70
- classNames: 'grid',
71
- }),
67
+ withLayout({ fullscreen: true, classNames: 'grid' }),
72
68
  withAttention,
73
69
  // TODO(wittjosiah): Consider whether we should refactor component so story doesn't need to depend on intents.
74
70
  withPluginManager({
@@ -14,17 +14,14 @@ import { GridSheet } from '../GridSheet';
14
14
  import { SheetProvider } from '../SheetContext';
15
15
  import { SheetToolbar } from '../SheetToolbar';
16
16
 
17
- export const SheetContainer = ({
18
- space,
19
- sheet,
20
- role,
21
- ignoreAttention,
22
- }: {
17
+ export type SheetContainerProps = {
23
18
  space: Space;
24
19
  sheet: SheetType;
25
20
  role?: string;
26
21
  ignoreAttention?: boolean;
27
- }) => {
22
+ };
23
+
24
+ export const SheetContainer = ({ space, sheet, role, ignoreAttention }: SheetContainerProps) => {
28
25
  const graph = useComputeGraph(space);
29
26
 
30
27
  return graph ? (
@@ -23,7 +23,7 @@ const meta: Meta = {
23
23
  title: 'plugins/plugin-sheet/Toolbar',
24
24
  component: SheetToolbar,
25
25
  render: DefaultStory,
26
- decorators: [withTheme, withLayout({ tooltips: true })],
26
+ decorators: [withTheme, withLayout()],
27
27
  parameters: { translations, layout: 'fullscreen' },
28
28
  };
29
29
 
@@ -4,14 +4,18 @@
4
4
 
5
5
  import React, { type PropsWithChildren, useCallback } from 'react';
6
6
 
7
+ import { createIntent, useIntentDispatcher } from '@dxos/app-framework';
8
+ import { type CompleteCellRange } from '@dxos/compute';
9
+ import { ThreadAction } from '@dxos/plugin-thread/types';
7
10
  import { type ThemedClassName } from '@dxos/react-ui';
8
11
  import { createGapSeparator, MenuProvider, ToolbarMenu, useMenuActions } from '@dxos/react-ui-menu';
9
12
 
10
13
  import { createAlign, useAlignState } from './align';
11
14
  import { createComment, useCommentState } from './comment';
12
15
  import { createStyle, useStyleState } from './style';
13
- import { useToolbarAction } from './useToolbarAction';
14
16
  import { type ToolbarState, useToolbarState } from './useToolbarState';
17
+ import { type SheetModel } from '../../model';
18
+ import { useSheetContext } from '../SheetContext';
15
19
 
16
20
  //
17
21
  // Root
@@ -19,11 +23,16 @@ import { type ToolbarState, useToolbarState } from './useToolbarState';
19
23
 
20
24
  export type SheetToolbarProps = ThemedClassName<PropsWithChildren<{ attendableId?: string }>>;
21
25
 
22
- const createToolbarActions = (state: ToolbarState) => {
23
- const align = createAlign(state);
24
- const style = createStyle(state);
26
+ const createToolbarActions = (
27
+ model: SheetModel,
28
+ state: ToolbarState,
29
+ onComment: (cellContent: string, cursor: string) => void,
30
+ cursorFallbackRange?: CompleteCellRange,
31
+ ) => {
32
+ const align = createAlign(model, state, cursorFallbackRange);
33
+ const style = createStyle(model, state, cursorFallbackRange);
25
34
  const gap = createGapSeparator();
26
- const comment = createComment(state);
35
+ const comment = createComment(model, state, onComment, cursorFallbackRange);
27
36
  return {
28
37
  nodes: [...align.nodes, ...style.nodes, ...gap.nodes, ...comment.nodes],
29
38
  edges: [...align.edges, ...style.edges, ...gap.edges, ...comment.edges],
@@ -31,17 +40,33 @@ const createToolbarActions = (state: ToolbarState) => {
31
40
  };
32
41
 
33
42
  export const SheetToolbar = ({ attendableId, classNames }: SheetToolbarProps) => {
43
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
44
+ const { model, cursorFallbackRange } = useSheetContext();
34
45
  const state = useToolbarState({});
35
46
  useAlignState(state);
36
47
  useStyleState(state);
37
48
  useCommentState(state);
38
49
 
39
- const actionsCreator = useCallback(() => createToolbarActions(state), [state]);
50
+ const handleComment = useCallback(
51
+ (name: string, cursor: string) =>
52
+ dispatch(
53
+ createIntent(ThreadAction.Create, {
54
+ cursor,
55
+ name,
56
+ subject: model.sheet,
57
+ }),
58
+ ),
59
+ [model.sheet, dispatch],
60
+ );
61
+
62
+ const actionsCreator = useCallback(
63
+ () => createToolbarActions(model, state, handleComment, cursorFallbackRange),
64
+ [model, state, handleComment, cursorFallbackRange],
65
+ );
40
66
  const menu = useMenuActions(actionsCreator);
41
- const handleAction = useToolbarAction(state);
42
67
 
43
68
  return (
44
- <MenuProvider {...menu} attendableId={attendableId} onAction={handleAction}>
69
+ <MenuProvider {...menu} attendableId={attendableId}>
45
70
  <ToolbarMenu classNames={classNames} />
46
71
  </MenuProvider>
47
72
  );