@dxos/plugin-sheet 0.8.1-main.ba2dec9 → 0.8.1-staging.5be625a

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 (96) hide show
  1. package/dist/lib/browser/{SheetContainer-EDJA5L2H.mjs → SheetContainer-45IMNPCA.mjs} +5 -5
  2. package/dist/lib/browser/SheetContainer-45IMNPCA.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-OOSRC36N.mjs → chunk-4UDNLWW7.mjs} +2 -2
  4. package/dist/lib/browser/{chunk-GAFHJBCU.mjs → chunk-D3G4UGEK.mjs} +1 -1
  5. package/dist/lib/browser/chunk-D3G4UGEK.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-UGSCCRPW.mjs → chunk-DLSDEQ2V.mjs} +4 -4
  7. package/dist/lib/browser/{chunk-LXHRT3CC.mjs → chunk-EMSCNWEK.mjs} +2 -2
  8. package/dist/lib/browser/{compute-graph-registry-EGPD4HEX.mjs → compute-graph-registry-FW7GRR5X.mjs} +3 -3
  9. package/dist/lib/browser/index.mjs +10 -18
  10. package/dist/lib/browser/index.mjs.map +3 -3
  11. package/dist/lib/browser/{intent-resolver-6S2RMLQF.mjs → intent-resolver-ZLZZSOJB.mjs} +3 -3
  12. package/dist/lib/browser/{markdown-EJU2M7EE.mjs → markdown-D6MQR2SL.mjs} +3 -3
  13. package/dist/lib/browser/meta.json +1 -1
  14. package/dist/lib/browser/{react-surface-24GOYR7J.mjs → react-surface-WBHKNFTW.mjs} +8 -7
  15. package/dist/lib/browser/react-surface-WBHKNFTW.mjs.map +7 -0
  16. package/dist/lib/browser/{thread-7ZWW5EA7.mjs → thread-DWC3EEZF.mjs} +3 -3
  17. package/dist/lib/browser/types/index.mjs +2 -2
  18. package/dist/lib/node/{SheetContainer-B77HHBOC.cjs → SheetContainer-WGATRGMV.cjs} +37 -37
  19. package/dist/lib/node/SheetContainer-WGATRGMV.cjs.map +7 -0
  20. package/dist/lib/node/{chunk-VMJK5QN4.cjs → chunk-BNTA7BX7.cjs} +19 -19
  21. package/dist/lib/node/{chunk-MLU6KRQN.cjs → chunk-JSIDCZHB.cjs} +4 -4
  22. package/dist/lib/node/chunk-JSIDCZHB.cjs.map +7 -0
  23. package/dist/lib/node/{chunk-ZV2RS3QH.cjs → chunk-O2FOEUYB.cjs} +6 -6
  24. package/dist/lib/node/{chunk-4LSYTNS4.cjs → chunk-TRMVOTUW.cjs} +6 -6
  25. package/dist/lib/node/{compute-graph-registry-GJK5H264.cjs → compute-graph-registry-GRIJY7HC.cjs} +7 -7
  26. package/dist/lib/node/index.cjs +29 -37
  27. package/dist/lib/node/index.cjs.map +3 -3
  28. package/dist/lib/node/{intent-resolver-I25V7SBT.cjs → intent-resolver-FNEVXUYN.cjs} +11 -11
  29. package/dist/lib/node/{markdown-SQHC4EGJ.cjs → markdown-2JV7CLN4.cjs} +7 -7
  30. package/dist/lib/node/meta.json +1 -1
  31. package/dist/lib/node/{react-surface-6BJQU2XB.cjs → react-surface-S67AU3L7.cjs} +17 -16
  32. package/dist/lib/node/react-surface-S67AU3L7.cjs.map +7 -0
  33. package/dist/lib/node/{thread-DRNYTR6M.cjs → thread-BRLYEK44.cjs} +8 -8
  34. package/dist/lib/node/types/index.cjs +30 -30
  35. package/dist/lib/node/types/index.cjs.map +1 -1
  36. package/dist/lib/node-esm/{SheetContainer-KXWIQCP4.mjs → SheetContainer-MGLGBHZU.mjs} +5 -5
  37. package/dist/lib/node-esm/SheetContainer-MGLGBHZU.mjs.map +7 -0
  38. package/dist/lib/node-esm/{chunk-SX3S7UKU.mjs → chunk-76T5X4VP.mjs} +2 -2
  39. package/dist/lib/node-esm/{chunk-3PA7XGUK.mjs → chunk-AXJBBZWW.mjs} +4 -4
  40. package/dist/lib/node-esm/{chunk-RTZXXOS2.mjs → chunk-Y6ND5HWX.mjs} +1 -1
  41. package/dist/lib/node-esm/chunk-Y6ND5HWX.mjs.map +7 -0
  42. package/dist/lib/node-esm/{chunk-HPAMZ6SP.mjs → chunk-ZSOBPK4C.mjs} +2 -2
  43. package/dist/lib/node-esm/{compute-graph-registry-3F5JCYEN.mjs → compute-graph-registry-7QPVVG3V.mjs} +3 -3
  44. package/dist/lib/node-esm/index.mjs +10 -18
  45. package/dist/lib/node-esm/index.mjs.map +3 -3
  46. package/dist/lib/node-esm/{intent-resolver-IPRSINII.mjs → intent-resolver-YGXHQQWI.mjs} +3 -3
  47. package/dist/lib/node-esm/{markdown-UXKP45S3.mjs → markdown-JOT6YWLG.mjs} +3 -3
  48. package/dist/lib/node-esm/meta.json +1 -1
  49. package/dist/lib/node-esm/{react-surface-YGNWYLVN.mjs → react-surface-FXMZK7ZZ.mjs} +8 -7
  50. package/dist/lib/node-esm/react-surface-FXMZK7ZZ.mjs.map +7 -0
  51. package/dist/lib/node-esm/{thread-6T5VXPAF.mjs → thread-3XAKFPK5.mjs} +3 -3
  52. package/dist/lib/node-esm/types/index.mjs +2 -2
  53. package/dist/types/src/SheetPlugin.d.ts.map +1 -1
  54. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  55. package/dist/types/src/meta.d.ts +2 -8
  56. package/dist/types/src/meta.d.ts.map +1 -1
  57. package/dist/types/src/translations.d.ts +2 -9
  58. package/dist/types/src/translations.d.ts.map +1 -1
  59. package/dist/types/src/types/schema.d.ts +88 -28
  60. package/dist/types/src/types/schema.d.ts.map +1 -1
  61. package/package.json +44 -44
  62. package/src/SheetPlugin.tsx +1 -2
  63. package/src/capabilities/react-surface.tsx +4 -2
  64. package/src/components/SheetToolbar/comment.ts +1 -1
  65. package/src/meta.ts +2 -2
  66. package/src/translations.ts +1 -3
  67. package/dist/lib/browser/SheetContainer-EDJA5L2H.mjs.map +0 -7
  68. package/dist/lib/browser/chunk-GAFHJBCU.mjs.map +0 -7
  69. package/dist/lib/browser/react-surface-24GOYR7J.mjs.map +0 -7
  70. package/dist/lib/node/SheetContainer-B77HHBOC.cjs.map +0 -7
  71. package/dist/lib/node/chunk-MLU6KRQN.cjs.map +0 -7
  72. package/dist/lib/node/react-surface-6BJQU2XB.cjs.map +0 -7
  73. package/dist/lib/node-esm/SheetContainer-KXWIQCP4.mjs.map +0 -7
  74. package/dist/lib/node-esm/chunk-RTZXXOS2.mjs.map +0 -7
  75. package/dist/lib/node-esm/react-surface-YGNWYLVN.mjs.map +0 -7
  76. /package/dist/lib/browser/{chunk-OOSRC36N.mjs.map → chunk-4UDNLWW7.mjs.map} +0 -0
  77. /package/dist/lib/browser/{chunk-UGSCCRPW.mjs.map → chunk-DLSDEQ2V.mjs.map} +0 -0
  78. /package/dist/lib/browser/{chunk-LXHRT3CC.mjs.map → chunk-EMSCNWEK.mjs.map} +0 -0
  79. /package/dist/lib/browser/{compute-graph-registry-EGPD4HEX.mjs.map → compute-graph-registry-FW7GRR5X.mjs.map} +0 -0
  80. /package/dist/lib/browser/{intent-resolver-6S2RMLQF.mjs.map → intent-resolver-ZLZZSOJB.mjs.map} +0 -0
  81. /package/dist/lib/browser/{markdown-EJU2M7EE.mjs.map → markdown-D6MQR2SL.mjs.map} +0 -0
  82. /package/dist/lib/browser/{thread-7ZWW5EA7.mjs.map → thread-DWC3EEZF.mjs.map} +0 -0
  83. /package/dist/lib/node/{chunk-VMJK5QN4.cjs.map → chunk-BNTA7BX7.cjs.map} +0 -0
  84. /package/dist/lib/node/{chunk-ZV2RS3QH.cjs.map → chunk-O2FOEUYB.cjs.map} +0 -0
  85. /package/dist/lib/node/{chunk-4LSYTNS4.cjs.map → chunk-TRMVOTUW.cjs.map} +0 -0
  86. /package/dist/lib/node/{compute-graph-registry-GJK5H264.cjs.map → compute-graph-registry-GRIJY7HC.cjs.map} +0 -0
  87. /package/dist/lib/node/{intent-resolver-I25V7SBT.cjs.map → intent-resolver-FNEVXUYN.cjs.map} +0 -0
  88. /package/dist/lib/node/{markdown-SQHC4EGJ.cjs.map → markdown-2JV7CLN4.cjs.map} +0 -0
  89. /package/dist/lib/node/{thread-DRNYTR6M.cjs.map → thread-BRLYEK44.cjs.map} +0 -0
  90. /package/dist/lib/node-esm/{chunk-SX3S7UKU.mjs.map → chunk-76T5X4VP.mjs.map} +0 -0
  91. /package/dist/lib/node-esm/{chunk-3PA7XGUK.mjs.map → chunk-AXJBBZWW.mjs.map} +0 -0
  92. /package/dist/lib/node-esm/{chunk-HPAMZ6SP.mjs.map → chunk-ZSOBPK4C.mjs.map} +0 -0
  93. /package/dist/lib/node-esm/{compute-graph-registry-3F5JCYEN.mjs.map → compute-graph-registry-7QPVVG3V.mjs.map} +0 -0
  94. /package/dist/lib/node-esm/{intent-resolver-IPRSINII.mjs.map → intent-resolver-YGXHQQWI.mjs.map} +0 -0
  95. /package/dist/lib/node-esm/{markdown-UXKP45S3.mjs.map → markdown-JOT6YWLG.mjs.map} +0 -0
  96. /package/dist/lib/node-esm/{thread-6T5VXPAF.mjs.map → thread-3XAKFPK5.mjs.map} +0 -0
@@ -35,24 +35,54 @@ declare const SheetType_base: import("@dxos/echo-schema").TypedObjectPrototype<i
35
35
  anchor: S.optional<typeof S.String>;
36
36
  status: S.optional<S.Union<[S.Literal<["staged"]>, S.Literal<["active"]>, S.Literal<["resolved"]>]>>;
37
37
  messages: S.mutable<S.Array$<import("@dxos/echo-schema").Ref$<import("@dxos/echo-schema").TypedObjectFields<{
38
- timestamp: typeof S.String;
39
- state: S.optional<S.Enums<typeof import("@dxos/plugin-space/types").MessageState>>;
40
- sender: S.mutable<S.Struct<{
41
- contact: S.optional<import("@dxos/echo-schema").Ref$<import("@dxos/echo-schema").TypedObjectFields<{
42
- name: S.optional<typeof S.String>;
43
- identifiers: S.mutable<S.Array$<S.Struct<{
44
- type: typeof S.String;
45
- value: typeof S.String;
46
- }>>>;
47
- }, import("@dxos/echo-schema").TypedObjectOptions>>>;
38
+ id: import("@dxos/echo-schema").ObjectIdClass;
39
+ created: S.SchemaClass<string, string, never>;
40
+ sender: S.Struct<{
41
+ contact: S.optional<import("@dxos/echo-schema").Ref$<{
42
+ readonly id: string;
43
+ name?: string | undefined;
44
+ identifiers: {
45
+ readonly value: string;
46
+ readonly type: string;
47
+ }[];
48
+ }>>;
48
49
  identityKey: S.optional<typeof S.String>;
49
50
  email: S.optional<typeof S.String>;
50
51
  name: S.optional<typeof S.String>;
51
- }>>;
52
- text: typeof S.String;
53
- parts: S.optional<S.mutable<S.Array$<import("@dxos/echo-schema").Ref$<import("@dxos/echo-schema").Expando>>>>;
52
+ role: S.optional<S.Literal<["user", "assistant"]>>;
53
+ }>;
54
+ blocks: S.Array$<S.Union<[S.mutable<S.extend<S.Struct<{
55
+ pending: S.optional<typeof S.Boolean>;
56
+ }>, S.Struct<{
57
+ type: S.Literal<["text"]>;
58
+ disposition: S.optional<typeof S.String>;
59
+ text: typeof S.String;
60
+ }>>>, S.mutable<S.extend<S.Struct<{
61
+ pending: S.optional<typeof S.Boolean>;
62
+ }>, S.Struct<{
63
+ type: S.Literal<["json"]>;
64
+ disposition: S.optional<typeof S.String>;
65
+ data: typeof S.String;
66
+ }>>>, S.mutable<S.extend<S.Struct<{
67
+ pending: S.optional<typeof S.Boolean>;
68
+ }>, S.Struct<{
69
+ type: S.Literal<["image"]>;
70
+ id: S.optional<typeof S.String>;
71
+ source: S.optional<S.Union<[S.mutable<S.Struct<{
72
+ type: S.Literal<["base64"]>;
73
+ mediaType: typeof S.String;
74
+ data: typeof S.String;
75
+ }>>, S.mutable<S.Struct<{
76
+ type: S.Literal<["http"]>;
77
+ url: typeof S.String;
78
+ }>>]>>;
79
+ }>>>, S.mutable<S.extend<S.Struct<{
80
+ pending: S.optional<typeof S.Boolean>;
81
+ }>, S.Struct<{
82
+ type: S.Literal<["reference"]>;
83
+ reference: import("@dxos/echo-schema").Ref$<import("@dxos/echo-schema").Expando>;
84
+ }>>>]>>;
54
85
  properties: S.optional<S.mutable<S.Record$<typeof S.String, typeof S.Any>>>;
55
- context: S.optional<import("@dxos/echo-schema").Ref$<import("@dxos/echo-schema").Expando>>;
56
86
  }, import("@dxos/echo-schema").TypedObjectOptions>>>>;
57
87
  }, import("@dxos/echo-schema").TypedObjectOptions>>>>>;
58
88
  }, import("@dxos/echo-schema").TypedObjectOptions>, S.Struct.Encoded<{
@@ -78,24 +108,54 @@ declare const SheetType_base: import("@dxos/echo-schema").TypedObjectPrototype<i
78
108
  anchor: S.optional<typeof S.String>;
79
109
  status: S.optional<S.Union<[S.Literal<["staged"]>, S.Literal<["active"]>, S.Literal<["resolved"]>]>>;
80
110
  messages: S.mutable<S.Array$<import("@dxos/echo-schema").Ref$<import("@dxos/echo-schema").TypedObjectFields<{
81
- timestamp: typeof S.String;
82
- state: S.optional<S.Enums<typeof import("@dxos/plugin-space/types").MessageState>>;
83
- sender: S.mutable<S.Struct<{
84
- contact: S.optional<import("@dxos/echo-schema").Ref$<import("@dxos/echo-schema").TypedObjectFields<{
85
- name: S.optional<typeof S.String>;
86
- identifiers: S.mutable<S.Array$<S.Struct<{
87
- type: typeof S.String;
88
- value: typeof S.String;
89
- }>>>;
90
- }, import("@dxos/echo-schema").TypedObjectOptions>>>;
111
+ id: import("@dxos/echo-schema").ObjectIdClass;
112
+ created: S.SchemaClass<string, string, never>;
113
+ sender: S.Struct<{
114
+ contact: S.optional<import("@dxos/echo-schema").Ref$<{
115
+ readonly id: string;
116
+ name?: string | undefined;
117
+ identifiers: {
118
+ readonly value: string;
119
+ readonly type: string;
120
+ }[];
121
+ }>>;
91
122
  identityKey: S.optional<typeof S.String>;
92
123
  email: S.optional<typeof S.String>;
93
124
  name: S.optional<typeof S.String>;
94
- }>>;
95
- text: typeof S.String;
96
- parts: S.optional<S.mutable<S.Array$<import("@dxos/echo-schema").Ref$<import("@dxos/echo-schema").Expando>>>>;
125
+ role: S.optional<S.Literal<["user", "assistant"]>>;
126
+ }>;
127
+ blocks: S.Array$<S.Union<[S.mutable<S.extend<S.Struct<{
128
+ pending: S.optional<typeof S.Boolean>;
129
+ }>, S.Struct<{
130
+ type: S.Literal<["text"]>;
131
+ disposition: S.optional<typeof S.String>;
132
+ text: typeof S.String;
133
+ }>>>, S.mutable<S.extend<S.Struct<{
134
+ pending: S.optional<typeof S.Boolean>;
135
+ }>, S.Struct<{
136
+ type: S.Literal<["json"]>;
137
+ disposition: S.optional<typeof S.String>;
138
+ data: typeof S.String;
139
+ }>>>, S.mutable<S.extend<S.Struct<{
140
+ pending: S.optional<typeof S.Boolean>;
141
+ }>, S.Struct<{
142
+ type: S.Literal<["image"]>;
143
+ id: S.optional<typeof S.String>;
144
+ source: S.optional<S.Union<[S.mutable<S.Struct<{
145
+ type: S.Literal<["base64"]>;
146
+ mediaType: typeof S.String;
147
+ data: typeof S.String;
148
+ }>>, S.mutable<S.Struct<{
149
+ type: S.Literal<["http"]>;
150
+ url: typeof S.String;
151
+ }>>]>>;
152
+ }>>>, S.mutable<S.extend<S.Struct<{
153
+ pending: S.optional<typeof S.Boolean>;
154
+ }>, S.Struct<{
155
+ type: S.Literal<["reference"]>;
156
+ reference: import("@dxos/echo-schema").Ref$<import("@dxos/echo-schema").Expando>;
157
+ }>>>]>>;
97
158
  properties: S.optional<S.mutable<S.Record$<typeof S.String, typeof S.Any>>>;
98
- context: S.optional<import("@dxos/echo-schema").Ref$<import("@dxos/echo-schema").Expando>>;
99
159
  }, import("@dxos/echo-schema").TypedObjectOptions>>>>;
100
160
  }, import("@dxos/echo-schema").TypedObjectOptions>>>>>;
101
161
  }>>;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/types/schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAO,CAAC,EAAe,MAAM,mBAAmB,CAAC;AAGxD,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;;;;;;;;;;;;;;;;;;;;cA4BmiF,EAAG,QAAQ,QAAO,EAAG,MAAM;gBAAqD,EAAG,QAAQ,QAAO,EAAG,MAAM;gBAAc,EAAG,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,cAAa,EAAG,OAAO,cAAa,EAAG,OAAO;kBAAgC,EAAG,OAAO,CAAC,EAAE,MAAM,QAAQ,mBAAmB,cAAc,mBAAmB;8BAAyG,EAAG,MAAM;mBAA8C,EAAG,QAAQ,CAAC,EAAE,KAAK;oBAAsF,EAAG,OAAO,CAAC,EAAE,MAAM;yBAAuB,EAAG,QAAQ,QAAQ,mBAAmB,cAAc,mBAAmB;0BAA2C,EAAG,QAAQ,QAAO,EAAG,MAAM;iCAA+B,EAAG,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM;qCAAmC,EAAG,MAAM;sCAAmC,EAAG,MAAM;;0BAA8C,mBAAmB;6BAAiD,EAAG,QAAQ,QAAO,EAAG,MAAM;uBAAqB,EAAG,QAAQ,QAAO,EAAG,MAAM;sBAAoB,EAAG,QAAQ,QAAO,EAAG,MAAM;;yBAAgF,EAAG,MAAM;mBAA+F,EAAG,QAAQ,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,QAAQ,mBAAmB;wBAAsI,EAAG,QAAQ,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,QAAO,EAAG,MAAM,SAAQ,EAAG,GAAG;qBAAyF,EAAG,QAAQ,QAAQ,mBAAmB;kBAAgC,mBAAmB;;;;;;;;;;;;;;;;;;;;;cAAztD,EAAG,QAAQ,QAAO,EAAG,MAAM;gBAAqD,EAAG,QAAQ,QAAO,EAAG,MAAM;gBAAc,EAAG,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,cAAa,EAAG,OAAO,cAAa,EAAG,OAAO;kBAAgC,EAAG,OAAO,CAAC,EAAE,MAAM,QAAQ,mBAAmB,cAAc,mBAAmB;8BAAyG,EAAG,MAAM;mBAA8C,EAAG,QAAQ,CAAC,EAAE,KAAK;oBAAsF,EAAG,OAAO,CAAC,EAAE,MAAM;yBAAuB,EAAG,QAAQ,QAAQ,mBAAmB,cAAc,mBAAmB;0BAA2C,EAAG,QAAQ,QAAO,EAAG,MAAM;iCAA+B,EAAG,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM;qCAAmC,EAAG,MAAM;sCAAmC,EAAG,MAAM;;0BAA8C,mBAAmB;6BAAiD,EAAG,QAAQ,QAAO,EAAG,MAAM;uBAAqB,EAAG,QAAQ,QAAO,EAAG,MAAM;sBAAoB,EAAG,QAAQ,QAAO,EAAG,MAAM;;yBAAgF,EAAG,MAAM;mBAA+F,EAAG,QAAQ,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,QAAQ,mBAAmB;wBAAsI,EAAG,QAAQ,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,QAAO,EAAG,MAAM,SAAQ,EAAG,GAAG;qBAAyF,EAAG,QAAQ,QAAQ,mBAAmB;kBAAgC,mBAAmB;;;AAxB/vI,qBAAa,SAAU,SAAQ,cAuB7B;CAAG"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/types/schema.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.8.1-main.ba2dec9",
3
+ "version": "0.8.1-staging.5be625a",
4
4
  "description": "Braneframe sketch plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -54,38 +54,38 @@
54
54
  "re-resizable": "^6.9.17",
55
55
  "react-markdown": "^8.0.5",
56
56
  "react-resize-detector": "^11.0.1",
57
- "@dxos/app-framework": "0.8.1-main.ba2dec9",
58
- "@dxos/compute": "0.8.1-main.ba2dec9",
59
- "@dxos/client": "0.8.1-main.ba2dec9",
60
- "@dxos/context": "0.8.1-main.ba2dec9",
61
- "@dxos/crypto": "0.8.1-main.ba2dec9",
62
- "@dxos/echo-schema": "0.8.1-main.ba2dec9",
63
- "@dxos/debug": "0.8.1-main.ba2dec9",
64
- "@dxos/functions": "0.8.1-main.ba2dec9",
65
- "@dxos/invariant": "0.8.1-main.ba2dec9",
66
- "@dxos/keys": "0.8.1-main.ba2dec9",
67
- "@dxos/live-object": "0.8.1-main.ba2dec9",
68
- "@dxos/async": "0.8.1-main.ba2dec9",
69
- "@dxos/plugin-attention": "0.8.1-main.ba2dec9",
70
- "@dxos/plugin-client": "0.8.1-main.ba2dec9",
71
- "@dxos/log": "0.8.1-main.ba2dec9",
72
- "@dxos/plugin-graph": "0.8.1-main.ba2dec9",
73
- "@dxos/plugin-markdown": "0.8.1-main.ba2dec9",
74
- "@dxos/plugin-script": "0.8.1-main.ba2dec9",
75
- "@dxos/plugin-space": "0.8.1-main.ba2dec9",
76
- "@dxos/plugin-stack": "0.8.1-main.ba2dec9",
77
- "@dxos/plugin-thread": "0.8.1-main.ba2dec9",
78
- "@dxos/react-client": "0.8.1-main.ba2dec9",
79
- "@dxos/react-hooks": "0.8.1-main.ba2dec9",
80
- "@dxos/react-ui-editor": "0.8.1-main.ba2dec9",
81
- "@dxos/react-ui-attention": "0.8.1-main.ba2dec9",
82
- "@dxos/react-ui-grid": "0.8.1-main.ba2dec9",
83
- "@dxos/react-ui-form": "0.8.1-main.ba2dec9",
84
- "@dxos/react-ui-menu": "0.8.1-main.ba2dec9",
85
- "@dxos/react-ui-list": "0.8.1-main.ba2dec9",
86
- "@dxos/react-ui-stack": "0.8.1-main.ba2dec9",
87
- "@dxos/schema": "0.8.1-main.ba2dec9",
88
- "@dxos/util": "0.8.1-main.ba2dec9"
57
+ "@dxos/app-framework": "0.8.1-staging.5be625a",
58
+ "@dxos/async": "0.8.1-staging.5be625a",
59
+ "@dxos/client": "0.8.1-staging.5be625a",
60
+ "@dxos/compute": "0.8.1-staging.5be625a",
61
+ "@dxos/context": "0.8.1-staging.5be625a",
62
+ "@dxos/debug": "0.8.1-staging.5be625a",
63
+ "@dxos/crypto": "0.8.1-staging.5be625a",
64
+ "@dxos/echo-schema": "0.8.1-staging.5be625a",
65
+ "@dxos/functions": "0.8.1-staging.5be625a",
66
+ "@dxos/invariant": "0.8.1-staging.5be625a",
67
+ "@dxos/keys": "0.8.1-staging.5be625a",
68
+ "@dxos/live-object": "0.8.1-staging.5be625a",
69
+ "@dxos/log": "0.8.1-staging.5be625a",
70
+ "@dxos/plugin-attention": "0.8.1-staging.5be625a",
71
+ "@dxos/plugin-client": "0.8.1-staging.5be625a",
72
+ "@dxos/plugin-graph": "0.8.1-staging.5be625a",
73
+ "@dxos/plugin-script": "0.8.1-staging.5be625a",
74
+ "@dxos/plugin-markdown": "0.8.1-staging.5be625a",
75
+ "@dxos/plugin-space": "0.8.1-staging.5be625a",
76
+ "@dxos/plugin-stack": "0.8.1-staging.5be625a",
77
+ "@dxos/plugin-thread": "0.8.1-staging.5be625a",
78
+ "@dxos/react-client": "0.8.1-staging.5be625a",
79
+ "@dxos/react-hooks": "0.8.1-staging.5be625a",
80
+ "@dxos/react-ui-attention": "0.8.1-staging.5be625a",
81
+ "@dxos/react-ui-form": "0.8.1-staging.5be625a",
82
+ "@dxos/react-ui-grid": "0.8.1-staging.5be625a",
83
+ "@dxos/react-ui-list": "0.8.1-staging.5be625a",
84
+ "@dxos/react-ui-editor": "0.8.1-staging.5be625a",
85
+ "@dxos/react-ui-menu": "0.8.1-staging.5be625a",
86
+ "@dxos/react-ui-stack": "0.8.1-staging.5be625a",
87
+ "@dxos/util": "0.8.1-staging.5be625a",
88
+ "@dxos/schema": "0.8.1-staging.5be625a"
89
89
  },
90
90
  "devDependencies": {
91
91
  "@lezer/generator": "^1.7.1",
@@ -97,21 +97,21 @@
97
97
  "react": "~18.2.0",
98
98
  "react-dom": "~18.2.0",
99
99
  "vite": "5.4.7",
100
- "@dxos/lit-grid": "0.8.1-main.ba2dec9",
101
- "@dxos/random": "0.8.1-main.ba2dec9",
102
- "@dxos/react-ui": "0.8.1-main.ba2dec9",
103
- "@dxos/echo-generator": "0.8.1-main.ba2dec9",
104
- "@dxos/react-ui-syntax-highlighter": "0.8.1-main.ba2dec9",
105
- "@dxos/react-ui-theme": "0.8.1-main.ba2dec9",
106
- "@dxos/test-utils": "0.8.1-main.ba2dec9",
107
- "@dxos/storybook-utils": "0.8.1-main.ba2dec9",
108
- "@dxos/react-ui-types": "0.8.1-main.ba2dec9"
100
+ "@dxos/echo-generator": "0.8.1-staging.5be625a",
101
+ "@dxos/random": "0.8.1-staging.5be625a",
102
+ "@dxos/react-ui": "0.8.1-staging.5be625a",
103
+ "@dxos/lit-grid": "0.8.1-staging.5be625a",
104
+ "@dxos/react-ui-syntax-highlighter": "0.8.1-staging.5be625a",
105
+ "@dxos/react-ui-theme": "0.8.1-staging.5be625a",
106
+ "@dxos/react-ui-types": "0.8.1-staging.5be625a",
107
+ "@dxos/test-utils": "0.8.1-staging.5be625a",
108
+ "@dxos/storybook-utils": "0.8.1-staging.5be625a"
109
109
  },
110
110
  "peerDependencies": {
111
111
  "react": "~18.2.0",
112
112
  "react-dom": "~18.2.0",
113
- "@dxos/react-ui": "0.8.1-main.ba2dec9",
114
- "@dxos/react-ui-theme": "0.8.1-main.ba2dec9"
113
+ "@dxos/react-ui": "0.8.1-staging.5be625a",
114
+ "@dxos/react-ui-theme": "0.8.1-staging.5be625a"
115
115
  },
116
116
  "publishConfig": {
117
117
  "access": "public"
@@ -9,7 +9,7 @@ import { SpaceCapabilities, ThreadEvents } from '@dxos/plugin-space';
9
9
  import { defineObjectForm } from '@dxos/plugin-space/types';
10
10
 
11
11
  import { Markdown, Thread, ReactSurface, IntentResolver, ComputeGraphRegistry } from './capabilities';
12
- import { meta, SHEET_PLUGIN } from './meta';
12
+ import { meta } from './meta';
13
13
  import { serializer } from './serializer';
14
14
  import translations from './translations';
15
15
  import { SheetAction, SheetType } from './types';
@@ -34,7 +34,6 @@ export const SheetPlugin = () =>
34
34
  id: SheetType.typename,
35
35
  metadata: {
36
36
  label: (object: any) => (object instanceof SheetType ? object.name : undefined),
37
- placeholder: ['sheet title placeholder', { ns: SHEET_PLUGIN }],
38
37
  icon: 'ph--grid-nine--regular',
39
38
  serializer,
40
39
  },
@@ -5,6 +5,7 @@
5
5
  import React from 'react';
6
6
 
7
7
  import { Capabilities, contributes, createSurface, useCapability } from '@dxos/app-framework';
8
+ import { isInstanceOf } from '@dxos/echo-schema';
8
9
  import { getSpace } from '@dxos/react-client/echo';
9
10
 
10
11
  import { SheetCapabilities } from './capabilities';
@@ -17,7 +18,8 @@ export default () =>
17
18
  createSurface({
18
19
  id: `${SHEET_PLUGIN}/sheet`,
19
20
  role: ['article', 'section'],
20
- filter: (data): data is { subject: SheetType } => data.subject instanceof SheetType && !!getSpace(data.subject),
21
+ filter: (data): data is { subject: SheetType } =>
22
+ isInstanceOf(SheetType, data.subject) && !!getSpace(data.subject),
21
23
  component: ({ data, role }) => {
22
24
  const computeGraphRegistry = useCapability(SheetCapabilities.ComputeGraphRegistry);
23
25
 
@@ -31,7 +33,7 @@ export default () =>
31
33
  createSurface({
32
34
  id: `${SHEET_PLUGIN}/settings`,
33
35
  role: 'complementary--settings',
34
- filter: (data): data is { subject: SheetType } => data.subject instanceof SheetType,
36
+ filter: (data): data is { subject: SheetType } => isInstanceOf(SheetType, data.subject),
35
37
  component: ({ data }) => <RangeList sheet={data.subject} />,
36
38
  }),
37
39
  ]);
@@ -21,7 +21,7 @@ export const useCommentState = (state: Partial<CommentState>) => {
21
21
  // TODO(thure): Can this O(n) call be memoized?
22
22
  const overlapsCommentAnchor = useMemo(
23
23
  () =>
24
- RefArray.allResolvedTargets(model.sheet.threads ?? [])
24
+ RefArray.targets(model.sheet.threads ?? [])
25
25
  .filter((thread) => thread.status !== 'resolved')
26
26
  .some((thread) => {
27
27
  if (!cursorFallbackRange) {
package/src/meta.ts CHANGED
@@ -6,7 +6,7 @@ import { type PluginMeta } from '@dxos/app-framework';
6
6
 
7
7
  export const SHEET_PLUGIN = 'dxos.org/plugin/sheet';
8
8
 
9
- export const meta = {
9
+ export const meta: PluginMeta = {
10
10
  id: SHEET_PLUGIN,
11
11
  name: 'Sheet',
12
12
  description:
@@ -14,4 +14,4 @@ export const meta = {
14
14
  icon: 'ph--grid-nine--regular',
15
15
  source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-sheet',
16
16
  screenshots: ['https://dxos.network/plugin-details-sheet-dark.png'],
17
- } satisfies PluginMeta;
17
+ };
@@ -10,12 +10,10 @@ export default [
10
10
  'en-US': {
11
11
  [SheetType.typename]: {
12
12
  'typename label': 'Sheet',
13
+ 'object name placeholder': 'New sheet',
13
14
  },
14
15
  [SHEET_PLUGIN]: {
15
16
  'plugin name': 'Sheets',
16
- 'sheet title placeholder': 'New sheet',
17
- 'create sheet label': 'Create sheet',
18
- 'create sheet section label': 'Create sheet',
19
17
  'cell placeholder': 'Cell value...',
20
18
  'range key alignment label': 'Align',
21
19
  'range key style label': 'Style',
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/SheetContainer/SheetContainer.tsx", "../../../src/components/FunctionEditor/FunctionEditor.tsx", "../../../src/components/SheetToolbar/SheetToolbar.tsx", "../../../src/components/SheetToolbar/align.ts", "../../../src/components/SheetToolbar/comment.ts", "../../../src/components/SheetToolbar/style.ts", "../../../src/components/SheetToolbar/useToolbarAction.ts", "../../../src/components/SheetToolbar/useToolbarState.ts", "../../../src/components/SheetContainer/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { fullyQualifiedId, type Space } from '@dxos/react-client/echo';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { type SheetType } from '../../types';\nimport { useComputeGraph } from '../ComputeGraph';\nimport { FunctionEditor } from '../FunctionEditor';\nimport { GridSheet } from '../GridSheet';\nimport { SheetProvider } from '../SheetContext';\nimport { SheetToolbar } from '../SheetToolbar';\n\nexport const SheetContainer = ({\n space,\n sheet,\n role,\n ignoreAttention,\n}: {\n space: Space;\n sheet: SheetType;\n role?: string;\n ignoreAttention?: boolean;\n}) => {\n const graph = useComputeGraph(space);\n\n return graph ? (\n <SheetProvider sheet={sheet} graph={graph} ignoreAttention={ignoreAttention}>\n <StackItem.Content toolbar statusbar {...(role === 'section' && { classNames: 'aspect-video' })}>\n <SheetToolbar attendableId={fullyQualifiedId(sheet)} />\n <GridSheet />\n <FunctionEditor />\n </StackItem.Content>\n </SheetProvider>\n ) : null;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { addressToA1Notation, isFormula, rangeToA1Notation } from '@dxos/compute';\nimport { Icon } from '@dxos/react-ui';\n\nimport { mapFormulaIndicesToRefs } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nexport const FunctionEditor = () => {\n const { model, cursor, range } = useSheetContext();\n\n let value;\n let formula = false;\n if (cursor) {\n value = model.getCellValue(cursor);\n if (isFormula(value)) {\n value = model.graph.mapFunctionBindingFromId(mapFormulaIndicesToRefs(model.sheet, value));\n formula = true;\n } else if (value != null) {\n value = String(value);\n }\n }\n\n return (\n <div className='flex shrink-0 justify-between items-center px-4 py-1 text-sm attention-surface border-bs !border-separator'>\n <div className='flex gap-4 items-center'>\n <div className='flex w-16 items-center font-mono'>\n {(range && rangeToA1Notation(range)) || (cursor && addressToA1Notation(cursor))}\n </div>\n <div className='flex gap-2 items-center'>\n <Icon icon='ph--function--regular' classNames={['text-greenText', formula ? 'visible' : 'invisible']} />\n <span className='font-mono'>{value}</span>\n </div>\n </div>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type PropsWithChildren, useCallback } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { createGapSeparator, MenuProvider, ToolbarMenu, useMenuActions } from '@dxos/react-ui-menu';\n\nimport { createAlign, useAlignState } from './align';\nimport { createComment, useCommentState } from './comment';\nimport { createStyle, useStyleState } from './style';\nimport { useToolbarAction } from './useToolbarAction';\nimport { type ToolbarState, useToolbarState } from './useToolbarState';\n\n//\n// Root\n//\n\nexport type SheetToolbarProps = ThemedClassName<PropsWithChildren<{ attendableId?: string }>>;\n\nconst createToolbarActions = (state: ToolbarState) => {\n const align = createAlign(state);\n const style = createStyle(state);\n const gap = createGapSeparator();\n const comment = createComment(state);\n return {\n nodes: [...align.nodes, ...style.nodes, ...gap.nodes, ...comment.nodes],\n edges: [...align.edges, ...style.edges, ...gap.edges, ...comment.edges],\n };\n};\n\nexport const SheetToolbar = ({ attendableId, classNames }: SheetToolbarProps) => {\n const state = useToolbarState({});\n useAlignState(state);\n useStyleState(state);\n useCommentState(state);\n\n const actionsCreator = useCallback(() => createToolbarActions(state), [state]);\n const menu = useMenuActions(actionsCreator);\n const handleAction = useToolbarAction(state);\n\n return (\n <MenuProvider {...menu} attendableId={attendableId} onAction={handleAction}>\n <ToolbarMenu classNames={classNames} />\n </MenuProvider>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { inRange } from '@dxos/compute';\nimport { createMenuAction, createMenuItemGroup, type ToolbarMenuActionGroupProperties } from '@dxos/react-ui-menu';\n\nimport { SHEET_PLUGIN } from '../../meta';\nimport { type AlignKey, alignKey, type AlignValue, rangeFromIndex } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nexport type AlignAction = { key: AlignKey; value: AlignValue };\n\nexport type AlignState = { [alignKey]: AlignValue | undefined };\n\nconst aligns: Record<AlignValue, string> = {\n start: 'ph--text-align-left--regular',\n center: 'ph--text-align-center--regular',\n end: 'ph--text-align-right--regular',\n};\n\nexport const useAlignState = (state: Partial<AlignState>) => {\n const { cursor, model } = useSheetContext();\n useEffect(() => {\n // TODO(thure): Can this O(n) call be memoized?\n state[alignKey] = (\n cursor\n ? model.sheet.ranges?.findLast(\n ({ range, key }) => key === alignKey && inRange(rangeFromIndex(model.sheet, range), cursor),\n )?.value\n : undefined\n ) as AlignValue | undefined;\n }, [cursor, model.sheet]);\n};\n\nconst createAlignGroupAction = (value?: AlignValue) =>\n createMenuItemGroup('align', {\n label: ['align label', { ns: SHEET_PLUGIN }],\n variant: 'toggleGroup',\n selectCardinality: 'single',\n value: `${alignKey}--${value}`,\n } as ToolbarMenuActionGroupProperties);\n\nconst createAlignActions = (value?: AlignValue) =>\n Object.entries(aligns).map(([alignValue, icon]) => {\n return createMenuAction<AlignAction>(`${alignKey}--${alignValue}`, {\n key: alignKey,\n value: alignValue as AlignValue,\n checked: value === alignValue,\n label: [`range value ${alignValue} label`, { ns: SHEET_PLUGIN }],\n icon,\n testId: `grid.toolbar.${alignKey}.${alignValue}`,\n });\n });\n\nexport const createAlign = ({ [alignKey]: alignValue }: Partial<AlignState>) => {\n const alignGroup = createAlignGroupAction(alignValue);\n const alignActions = createAlignActions(alignValue);\n return {\n nodes: [alignGroup, ...alignActions],\n edges: [\n { source: 'root', target: 'align' },\n ...alignActions.map(({ id }) => ({ source: alignGroup.id, target: id })),\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useMemo } from 'react';\n\nimport { RefArray } from '@dxos/live-object';\nimport { createMenuAction } from '@dxos/react-ui-menu';\n\nimport { SHEET_PLUGIN } from '../../meta';\nimport { commentKey, type CommentKey, type CommentValue, rangeToIndex } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nexport type CommentAction = { key: CommentKey; value: CommentValue; cellContent?: string };\n\nexport type CommentState = { commentEnabled: 'comment' | 'no cursor' | 'selection overlaps existing comment' };\n\nexport const useCommentState = (state: Partial<CommentState>) => {\n const { cursorFallbackRange, model } = useSheetContext();\n\n // TODO(thure): Can this O(n) call be memoized?\n const overlapsCommentAnchor = useMemo(\n () =>\n RefArray.allResolvedTargets(model.sheet.threads ?? [])\n .filter((thread) => thread.status !== 'resolved')\n .some((thread) => {\n if (!cursorFallbackRange) {\n return false;\n }\n return rangeToIndex(model.sheet, cursorFallbackRange) === thread.anchor;\n }),\n [cursorFallbackRange, model.sheet],\n );\n\n useEffect(() => {\n state.commentEnabled = !cursorFallbackRange\n ? 'no cursor'\n : overlapsCommentAnchor\n ? 'selection overlaps existing comment'\n : 'comment';\n }, [overlapsCommentAnchor, cursorFallbackRange]);\n};\n\nconst createCommentAction = (state: Partial<CommentState>) =>\n createMenuAction<Pick<CommentAction, 'key'>>('comment', {\n key: commentKey,\n testId: 'editor.toolbar.comment',\n icon: 'ph--chat-text--regular',\n label: [`${state.commentEnabled} label`, { ns: SHEET_PLUGIN }],\n disabled: state.commentEnabled !== 'comment',\n });\n\nexport const createComment = (state: Partial<CommentState>) => ({\n nodes: [createCommentAction(state)],\n edges: [{ source: 'root', target: 'comment' }],\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { inRange } from '@dxos/compute';\nimport { createMenuAction, createMenuItemGroup, type ToolbarMenuActionGroupProperties } from '@dxos/react-ui-menu';\n\nimport { SHEET_PLUGIN } from '../../meta';\nimport { rangeFromIndex, type StyleKey, type StyleValue } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nexport type StyleState = Partial<Record<StyleValue, boolean>>;\n\nexport type StyleAction = { key: StyleKey; value: StyleValue };\n\nconst styles: Record<StyleValue, string> = {\n highlight: 'ph--highlighter--regular',\n softwrap: 'ph--paragraph--regular',\n};\n\nexport const useStyleState = (state: StyleState) => {\n const { cursorFallbackRange, model } = useSheetContext();\n\n useEffect(() => {\n state.highlight = false;\n state.softwrap = false;\n if (cursorFallbackRange && model.sheet.ranges) {\n model.sheet.ranges\n .filter(\n ({ range, key }) => key === 'style' && inRange(rangeFromIndex(model.sheet, range), cursorFallbackRange.from),\n )\n .forEach(({ value }) => {\n state[value as StyleValue] = true;\n });\n }\n }, [cursorFallbackRange, model.sheet]);\n};\n\nconst createStyleGroup = (state: StyleState) => {\n return createMenuItemGroup('style', {\n variant: 'toggleGroup',\n selectCardinality: 'multiple',\n value: Object.keys(styles)\n .filter((key) => !!state[key as StyleValue])\n .map((styleValue) => `style--${styleValue}`),\n } as ToolbarMenuActionGroupProperties);\n};\n\nconst createStyleActions = (state: StyleState) =>\n Object.entries(styles).map(([styleValue, icon]) => {\n return createMenuAction<StyleAction>(`style--${styleValue}`, {\n key: 'style',\n value: styleValue as StyleValue,\n icon,\n label: [`range value ${styleValue} label`, { ns: SHEET_PLUGIN }],\n checked: !!state[styleValue as StyleValue],\n });\n });\n\nexport const createStyle = (state: StyleState) => {\n const styleGroupAction = createStyleGroup(state);\n const styleActions = createStyleActions(state);\n return {\n nodes: [styleGroupAction, ...styleActions],\n edges: [\n { source: 'root', target: 'style' },\n ...styleActions.map(({ id }) => ({ source: styleGroupAction.id, target: id })),\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { inRange } from '@dxos/compute';\nimport { ThreadAction } from '@dxos/plugin-thread/types';\nimport type { MenuAction, MenuActionHandler } from '@dxos/react-ui-menu';\n\nimport { type AlignAction } from './align';\nimport { type CommentAction } from './comment';\nimport { type StyleAction } from './style';\nimport { type ToolbarState } from './useToolbarState';\nimport { completeCellRangeToThreadCursor } from '../../integrations';\nimport { alignKey, rangeFromIndex, rangeToIndex } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nexport type ToolbarAction = StyleAction | AlignAction | CommentAction;\n\nexport const useToolbarAction = (state: ToolbarState) => {\n const { model, cursorFallbackRange, cursor } = useSheetContext();\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n // TODO(Zan): Externalize the toolbar action handler. E.g., Toolbar/keys should both fire events.\n return useCallback(\n (action: MenuAction<ToolbarAction>) => {\n const { key, value } = action.properties;\n if (cursorFallbackRange) {\n const index =\n model.sheet.ranges?.findIndex(\n (range) => range.key === key && inRange(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from),\n ) ?? -1;\n const nextRangeEntity = {\n range: rangeToIndex(model.sheet, cursorFallbackRange),\n key,\n value,\n };\n switch (key) {\n case 'alignment':\n if (index < 0) {\n model.sheet.ranges?.push(nextRangeEntity);\n state[alignKey] = value;\n } else if (model.sheet.ranges![index].value === value) {\n model.sheet.ranges?.splice(index, 1);\n state[alignKey] = undefined;\n } else {\n model.sheet.ranges?.splice(index, 1, nextRangeEntity);\n state[alignKey] = value;\n }\n break;\n case 'style':\n if (\n model.sheet.ranges\n .filter(\n ({ range, key: rangeKey }) =>\n rangeKey === 'style' && inRange(rangeFromIndex(model.sheet, range), cursorFallbackRange.from),\n )\n .some(({ value: rangeValue }) => rangeValue === value)\n ) {\n // this value should be unset\n if (index >= 0) {\n model.sheet.ranges?.splice(index, 1);\n }\n state[value] = false;\n } else {\n model.sheet.ranges?.push(nextRangeEntity);\n state[value] = true;\n }\n break;\n case 'comment': {\n const cellContent = model.getCellText(cursorFallbackRange.from);\n void dispatch(\n createIntent(ThreadAction.Create, {\n cursor: completeCellRangeToThreadCursor(cursorFallbackRange),\n name: cellContent,\n subject: model.sheet,\n }),\n );\n }\n }\n }\n },\n [model.sheet, cursorFallbackRange, cursor, dispatch],\n ) as MenuActionHandler;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { create } from '@dxos/live-object';\n\nimport { type AlignState } from './align';\nimport { type CommentState } from './comment';\nimport { type StyleState } from './style';\n\nexport type ToolbarState = Partial<StyleState & AlignState & CommentState>;\n\nexport const useToolbarState = (initialState: ToolbarState = {}) => {\n return useMemo(() => create<ToolbarState>(initialState), []);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { SheetContainer } from './SheetContainer';\n\nexport default SheetContainer;\n"],
5
- "mappings": "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",
6
- "names": ["React", "fullyQualifiedId", "StackItem", "React", "addressToA1Notation", "isFormula", "rangeToA1Notation", "Icon", "FunctionEditor", "model", "cursor", "range", "useSheetContext", "value", "formula", "getCellValue", "isFormula", "graph", "mapFunctionBindingFromId", "mapFormulaIndicesToRefs", "sheet", "String", "div", "className", "rangeToA1Notation", "addressToA1Notation", "Icon", "icon", "classNames", "span", "React", "useCallback", "createGapSeparator", "MenuProvider", "ToolbarMenu", "useMenuActions", "useEffect", "inRange", "createMenuAction", "createMenuItemGroup", "aligns", "start", "center", "end", "useAlignState", "state", "cursor", "model", "useSheetContext", "useEffect", "alignKey", "sheet", "ranges", "findLast", "range", "key", "inRange", "rangeFromIndex", "value", "undefined", "createAlignGroupAction", "createMenuItemGroup", "label", "ns", "SHEET_PLUGIN", "variant", "selectCardinality", "createAlignActions", "Object", "entries", "map", "alignValue", "icon", "createMenuAction", "checked", "testId", "createAlign", "alignGroup", "alignActions", "nodes", "edges", "source", "target", "id", "useEffect", "useMemo", "RefArray", "createMenuAction", "useCommentState", "state", "cursorFallbackRange", "model", "useSheetContext", "overlapsCommentAnchor", "useMemo", "RefArray", "allResolvedTargets", "sheet", "threads", "filter", "thread", "status", "some", "rangeToIndex", "anchor", "useEffect", "commentEnabled", "createCommentAction", "createMenuAction", "key", "commentKey", "testId", "icon", "label", "ns", "SHEET_PLUGIN", "disabled", "createComment", "nodes", "edges", "source", "target", "useEffect", "inRange", "createMenuAction", "createMenuItemGroup", "styles", "highlight", "softwrap", "useStyleState", "state", "cursorFallbackRange", "model", "useSheetContext", "useEffect", "sheet", "ranges", "filter", "range", "key", "inRange", "rangeFromIndex", "from", "forEach", "value", "createStyleGroup", "createMenuItemGroup", "variant", "selectCardinality", "Object", "keys", "map", "styleValue", "createStyleActions", "entries", "icon", "createMenuAction", "label", "ns", "SHEET_PLUGIN", "checked", "createStyle", "styleGroupAction", "styleActions", "nodes", "edges", "source", "target", "id", "useCallback", "createIntent", "useIntentDispatcher", "inRange", "ThreadAction", "useToolbarAction", "state", "model", "cursorFallbackRange", "cursor", "useSheetContext", "dispatchPromise", "dispatch", "useIntentDispatcher", "useCallback", "action", "key", "value", "properties", "index", "sheet", "ranges", "findIndex", "range", "inRange", "rangeFromIndex", "from", "nextRangeEntity", "rangeToIndex", "push", "alignKey", "splice", "undefined", "filter", "rangeKey", "some", "rangeValue", "cellContent", "getCellText", "createIntent", "ThreadAction", "Create", "completeCellRangeToThreadCursor", "name", "subject", "useMemo", "create", "useToolbarState", "initialState", "useMemo", "create", "createToolbarActions", "state", "align", "createAlign", "style", "createStyle", "gap", "createGapSeparator", "comment", "createComment", "nodes", "edges", "SheetToolbar", "attendableId", "classNames", "useToolbarState", "useAlignState", "useStyleState", "useCommentState", "actionsCreator", "useCallback", "menu", "useMenuActions", "handleAction", "useToolbarAction", "React", "MenuProvider", "onAction", "ToolbarMenu", "SheetContainer", "space", "sheet", "role", "ignoreAttention", "graph", "useComputeGraph", "React", "SheetProvider", "StackItem", "Content", "toolbar", "statusbar", "classNames", "SheetToolbar", "attendableId", "fullyQualifiedId", "GridSheet", "FunctionEditor", "SheetContainer"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/meta.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const SHEET_PLUGIN = 'dxos.org/plugin/sheet';\n\nexport const meta = {\n id: SHEET_PLUGIN,\n name: 'Sheet',\n description:\n 'Sheets in Composer are simple spreadsheets which allow you to leverage custom functions inside of cell grids. Leverage more than 400 pre-built formulas like Sum, Average, Count, Max, Min along with many others. You can also deploy your own custom functions using the Scripts plugin. ',\n icon: 'ph--grid-nine--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-sheet',\n screenshots: ['https://dxos.network/plugin-details-sheet-dark.png'],\n} satisfies PluginMeta;\n"],
5
- "mappings": ";AAMO,IAAMA,eAAe;AAErB,IAAMC,OAAO;EAClBC,IAAIF;EACJG,MAAM;EACNC,aACE;EACFC,MAAM;EACNC,QAAQ;EACRC,aAAa;IAAC;;AAChB;",
6
- "names": ["SHEET_PLUGIN", "meta", "id", "name", "description", "icon", "source", "screenshots"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/react-surface.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, contributes, createSurface, useCapability } from '@dxos/app-framework';\nimport { getSpace } from '@dxos/react-client/echo';\n\nimport { SheetCapabilities } from './capabilities';\nimport { ComputeGraphContextProvider, RangeList, SheetContainer } from '../components';\nimport { SHEET_PLUGIN } from '../meta';\nimport { SheetType } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${SHEET_PLUGIN}/sheet`,\n role: ['article', 'section'],\n filter: (data): data is { subject: SheetType } => data.subject instanceof SheetType && !!getSpace(data.subject),\n component: ({ data, role }) => {\n const computeGraphRegistry = useCapability(SheetCapabilities.ComputeGraphRegistry);\n\n return (\n <ComputeGraphContextProvider registry={computeGraphRegistry}>\n <SheetContainer space={getSpace(data.subject)!} sheet={data.subject} role={role} />\n </ComputeGraphContextProvider>\n );\n },\n }),\n createSurface({\n id: `${SHEET_PLUGIN}/settings`,\n role: 'complementary--settings',\n filter: (data): data is { subject: SheetType } => data.subject instanceof SheetType,\n component: ({ data }) => <RangeList sheet={data.subject} />,\n }),\n ]);\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,cAAcC,aAAaC,eAAeC,qBAAqB;AACxE,SAASC,gBAAgB;AAOzB,IAAA,wBAAe,MACbC,YAAYC,aAAaC,cAAc;EACrCC,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;MAAC;MAAW;;IAClBC,QAAQ,CAACC,SAAyCA,KAAKC,mBAAmBC,aAAa,CAAC,CAACC,SAASH,KAAKC,OAAO;IAC9GG,WAAW,CAAC,EAAEJ,MAAMF,KAAI,MAAE;AACxB,YAAMO,uBAAuBC,cAAcC,kBAAkBC,oBAAoB;AAEjF,aACE,sBAAA,cAACC,6BAAAA;QAA4BC,UAAUL;SACrC,sBAAA,cAACM,gBAAAA;QAAeC,OAAOT,SAASH,KAAKC,OAAO;QAAIY,OAAOb,KAAKC;QAASH;;IAG3E;EACF,CAAA;EACAH,cAAc;IACZC,IAAI,GAAGC,YAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAAyCA,KAAKC,mBAAmBC;IAC1EE,WAAW,CAAC,EAAEJ,KAAI,MAAO,sBAAA,cAACc,WAAAA;MAAUD,OAAOb,KAAKC;;EAClD,CAAA;CACD;",
6
- "names": ["React", "Capabilities", "contributes", "createSurface", "useCapability", "getSpace", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "SHEET_PLUGIN", "role", "filter", "data", "subject", "SheetType", "getSpace", "component", "computeGraphRegistry", "useCapability", "SheetCapabilities", "ComputeGraphRegistry", "ComputeGraphContextProvider", "registry", "SheetContainer", "space", "sheet", "RangeList"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/SheetContainer/SheetContainer.tsx", "../../../src/components/FunctionEditor/FunctionEditor.tsx", "../../../src/components/SheetToolbar/SheetToolbar.tsx", "../../../src/components/SheetToolbar/align.ts", "../../../src/components/SheetToolbar/comment.ts", "../../../src/components/SheetToolbar/style.ts", "../../../src/components/SheetToolbar/useToolbarAction.ts", "../../../src/components/SheetToolbar/useToolbarState.ts", "../../../src/components/SheetContainer/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { fullyQualifiedId, type Space } from '@dxos/react-client/echo';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { type SheetType } from '../../types';\nimport { useComputeGraph } from '../ComputeGraph';\nimport { FunctionEditor } from '../FunctionEditor';\nimport { GridSheet } from '../GridSheet';\nimport { SheetProvider } from '../SheetContext';\nimport { SheetToolbar } from '../SheetToolbar';\n\nexport const SheetContainer = ({\n space,\n sheet,\n role,\n ignoreAttention,\n}: {\n space: Space;\n sheet: SheetType;\n role?: string;\n ignoreAttention?: boolean;\n}) => {\n const graph = useComputeGraph(space);\n\n return graph ? (\n <SheetProvider sheet={sheet} graph={graph} ignoreAttention={ignoreAttention}>\n <StackItem.Content toolbar statusbar {...(role === 'section' && { classNames: 'aspect-video' })}>\n <SheetToolbar attendableId={fullyQualifiedId(sheet)} />\n <GridSheet />\n <FunctionEditor />\n </StackItem.Content>\n </SheetProvider>\n ) : null;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { addressToA1Notation, isFormula, rangeToA1Notation } from '@dxos/compute';\nimport { Icon } from '@dxos/react-ui';\n\nimport { mapFormulaIndicesToRefs } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nexport const FunctionEditor = () => {\n const { model, cursor, range } = useSheetContext();\n\n let value;\n let formula = false;\n if (cursor) {\n value = model.getCellValue(cursor);\n if (isFormula(value)) {\n value = model.graph.mapFunctionBindingFromId(mapFormulaIndicesToRefs(model.sheet, value));\n formula = true;\n } else if (value != null) {\n value = String(value);\n }\n }\n\n return (\n <div className='flex shrink-0 justify-between items-center px-4 py-1 text-sm attention-surface border-bs !border-separator'>\n <div className='flex gap-4 items-center'>\n <div className='flex w-16 items-center font-mono'>\n {(range && rangeToA1Notation(range)) || (cursor && addressToA1Notation(cursor))}\n </div>\n <div className='flex gap-2 items-center'>\n <Icon icon='ph--function--regular' classNames={['text-greenText', formula ? 'visible' : 'invisible']} />\n <span className='font-mono'>{value}</span>\n </div>\n </div>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type PropsWithChildren, useCallback } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { createGapSeparator, MenuProvider, ToolbarMenu, useMenuActions } from '@dxos/react-ui-menu';\n\nimport { createAlign, useAlignState } from './align';\nimport { createComment, useCommentState } from './comment';\nimport { createStyle, useStyleState } from './style';\nimport { useToolbarAction } from './useToolbarAction';\nimport { type ToolbarState, useToolbarState } from './useToolbarState';\n\n//\n// Root\n//\n\nexport type SheetToolbarProps = ThemedClassName<PropsWithChildren<{ attendableId?: string }>>;\n\nconst createToolbarActions = (state: ToolbarState) => {\n const align = createAlign(state);\n const style = createStyle(state);\n const gap = createGapSeparator();\n const comment = createComment(state);\n return {\n nodes: [...align.nodes, ...style.nodes, ...gap.nodes, ...comment.nodes],\n edges: [...align.edges, ...style.edges, ...gap.edges, ...comment.edges],\n };\n};\n\nexport const SheetToolbar = ({ attendableId, classNames }: SheetToolbarProps) => {\n const state = useToolbarState({});\n useAlignState(state);\n useStyleState(state);\n useCommentState(state);\n\n const actionsCreator = useCallback(() => createToolbarActions(state), [state]);\n const menu = useMenuActions(actionsCreator);\n const handleAction = useToolbarAction(state);\n\n return (\n <MenuProvider {...menu} attendableId={attendableId} onAction={handleAction}>\n <ToolbarMenu classNames={classNames} />\n </MenuProvider>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { inRange } from '@dxos/compute';\nimport { createMenuAction, createMenuItemGroup, type ToolbarMenuActionGroupProperties } from '@dxos/react-ui-menu';\n\nimport { SHEET_PLUGIN } from '../../meta';\nimport { type AlignKey, alignKey, type AlignValue, rangeFromIndex } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nexport type AlignAction = { key: AlignKey; value: AlignValue };\n\nexport type AlignState = { [alignKey]: AlignValue | undefined };\n\nconst aligns: Record<AlignValue, string> = {\n start: 'ph--text-align-left--regular',\n center: 'ph--text-align-center--regular',\n end: 'ph--text-align-right--regular',\n};\n\nexport const useAlignState = (state: Partial<AlignState>) => {\n const { cursor, model } = useSheetContext();\n useEffect(() => {\n // TODO(thure): Can this O(n) call be memoized?\n state[alignKey] = (\n cursor\n ? model.sheet.ranges?.findLast(\n ({ range, key }) => key === alignKey && inRange(rangeFromIndex(model.sheet, range), cursor),\n )?.value\n : undefined\n ) as AlignValue | undefined;\n }, [cursor, model.sheet]);\n};\n\nconst createAlignGroupAction = (value?: AlignValue) =>\n createMenuItemGroup('align', {\n label: ['align label', { ns: SHEET_PLUGIN }],\n variant: 'toggleGroup',\n selectCardinality: 'single',\n value: `${alignKey}--${value}`,\n } as ToolbarMenuActionGroupProperties);\n\nconst createAlignActions = (value?: AlignValue) =>\n Object.entries(aligns).map(([alignValue, icon]) => {\n return createMenuAction<AlignAction>(`${alignKey}--${alignValue}`, {\n key: alignKey,\n value: alignValue as AlignValue,\n checked: value === alignValue,\n label: [`range value ${alignValue} label`, { ns: SHEET_PLUGIN }],\n icon,\n testId: `grid.toolbar.${alignKey}.${alignValue}`,\n });\n });\n\nexport const createAlign = ({ [alignKey]: alignValue }: Partial<AlignState>) => {\n const alignGroup = createAlignGroupAction(alignValue);\n const alignActions = createAlignActions(alignValue);\n return {\n nodes: [alignGroup, ...alignActions],\n edges: [\n { source: 'root', target: 'align' },\n ...alignActions.map(({ id }) => ({ source: alignGroup.id, target: id })),\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useMemo } from 'react';\n\nimport { RefArray } from '@dxos/live-object';\nimport { createMenuAction } from '@dxos/react-ui-menu';\n\nimport { SHEET_PLUGIN } from '../../meta';\nimport { commentKey, type CommentKey, type CommentValue, rangeToIndex } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nexport type CommentAction = { key: CommentKey; value: CommentValue; cellContent?: string };\n\nexport type CommentState = { commentEnabled: 'comment' | 'no cursor' | 'selection overlaps existing comment' };\n\nexport const useCommentState = (state: Partial<CommentState>) => {\n const { cursorFallbackRange, model } = useSheetContext();\n\n // TODO(thure): Can this O(n) call be memoized?\n const overlapsCommentAnchor = useMemo(\n () =>\n RefArray.allResolvedTargets(model.sheet.threads ?? [])\n .filter((thread) => thread.status !== 'resolved')\n .some((thread) => {\n if (!cursorFallbackRange) {\n return false;\n }\n return rangeToIndex(model.sheet, cursorFallbackRange) === thread.anchor;\n }),\n [cursorFallbackRange, model.sheet],\n );\n\n useEffect(() => {\n state.commentEnabled = !cursorFallbackRange\n ? 'no cursor'\n : overlapsCommentAnchor\n ? 'selection overlaps existing comment'\n : 'comment';\n }, [overlapsCommentAnchor, cursorFallbackRange]);\n};\n\nconst createCommentAction = (state: Partial<CommentState>) =>\n createMenuAction<Pick<CommentAction, 'key'>>('comment', {\n key: commentKey,\n testId: 'editor.toolbar.comment',\n icon: 'ph--chat-text--regular',\n label: [`${state.commentEnabled} label`, { ns: SHEET_PLUGIN }],\n disabled: state.commentEnabled !== 'comment',\n });\n\nexport const createComment = (state: Partial<CommentState>) => ({\n nodes: [createCommentAction(state)],\n edges: [{ source: 'root', target: 'comment' }],\n});\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { inRange } from '@dxos/compute';\nimport { createMenuAction, createMenuItemGroup, type ToolbarMenuActionGroupProperties } from '@dxos/react-ui-menu';\n\nimport { SHEET_PLUGIN } from '../../meta';\nimport { rangeFromIndex, type StyleKey, type StyleValue } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nexport type StyleState = Partial<Record<StyleValue, boolean>>;\n\nexport type StyleAction = { key: StyleKey; value: StyleValue };\n\nconst styles: Record<StyleValue, string> = {\n highlight: 'ph--highlighter--regular',\n softwrap: 'ph--paragraph--regular',\n};\n\nexport const useStyleState = (state: StyleState) => {\n const { cursorFallbackRange, model } = useSheetContext();\n\n useEffect(() => {\n state.highlight = false;\n state.softwrap = false;\n if (cursorFallbackRange && model.sheet.ranges) {\n model.sheet.ranges\n .filter(\n ({ range, key }) => key === 'style' && inRange(rangeFromIndex(model.sheet, range), cursorFallbackRange.from),\n )\n .forEach(({ value }) => {\n state[value as StyleValue] = true;\n });\n }\n }, [cursorFallbackRange, model.sheet]);\n};\n\nconst createStyleGroup = (state: StyleState) => {\n return createMenuItemGroup('style', {\n variant: 'toggleGroup',\n selectCardinality: 'multiple',\n value: Object.keys(styles)\n .filter((key) => !!state[key as StyleValue])\n .map((styleValue) => `style--${styleValue}`),\n } as ToolbarMenuActionGroupProperties);\n};\n\nconst createStyleActions = (state: StyleState) =>\n Object.entries(styles).map(([styleValue, icon]) => {\n return createMenuAction<StyleAction>(`style--${styleValue}`, {\n key: 'style',\n value: styleValue as StyleValue,\n icon,\n label: [`range value ${styleValue} label`, { ns: SHEET_PLUGIN }],\n checked: !!state[styleValue as StyleValue],\n });\n });\n\nexport const createStyle = (state: StyleState) => {\n const styleGroupAction = createStyleGroup(state);\n const styleActions = createStyleActions(state);\n return {\n nodes: [styleGroupAction, ...styleActions],\n edges: [\n { source: 'root', target: 'style' },\n ...styleActions.map(({ id }) => ({ source: styleGroupAction.id, target: id })),\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback } from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { inRange } from '@dxos/compute';\nimport { ThreadAction } from '@dxos/plugin-thread/types';\nimport type { MenuAction, MenuActionHandler } from '@dxos/react-ui-menu';\n\nimport { type AlignAction } from './align';\nimport { type CommentAction } from './comment';\nimport { type StyleAction } from './style';\nimport { type ToolbarState } from './useToolbarState';\nimport { completeCellRangeToThreadCursor } from '../../integrations';\nimport { alignKey, rangeFromIndex, rangeToIndex } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nexport type ToolbarAction = StyleAction | AlignAction | CommentAction;\n\nexport const useToolbarAction = (state: ToolbarState) => {\n const { model, cursorFallbackRange, cursor } = useSheetContext();\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n // TODO(Zan): Externalize the toolbar action handler. E.g., Toolbar/keys should both fire events.\n return useCallback(\n (action: MenuAction<ToolbarAction>) => {\n const { key, value } = action.properties;\n if (cursorFallbackRange) {\n const index =\n model.sheet.ranges?.findIndex(\n (range) => range.key === key && inRange(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from),\n ) ?? -1;\n const nextRangeEntity = {\n range: rangeToIndex(model.sheet, cursorFallbackRange),\n key,\n value,\n };\n switch (key) {\n case 'alignment':\n if (index < 0) {\n model.sheet.ranges?.push(nextRangeEntity);\n state[alignKey] = value;\n } else if (model.sheet.ranges![index].value === value) {\n model.sheet.ranges?.splice(index, 1);\n state[alignKey] = undefined;\n } else {\n model.sheet.ranges?.splice(index, 1, nextRangeEntity);\n state[alignKey] = value;\n }\n break;\n case 'style':\n if (\n model.sheet.ranges\n .filter(\n ({ range, key: rangeKey }) =>\n rangeKey === 'style' && inRange(rangeFromIndex(model.sheet, range), cursorFallbackRange.from),\n )\n .some(({ value: rangeValue }) => rangeValue === value)\n ) {\n // this value should be unset\n if (index >= 0) {\n model.sheet.ranges?.splice(index, 1);\n }\n state[value] = false;\n } else {\n model.sheet.ranges?.push(nextRangeEntity);\n state[value] = true;\n }\n break;\n case 'comment': {\n const cellContent = model.getCellText(cursorFallbackRange.from);\n void dispatch(\n createIntent(ThreadAction.Create, {\n cursor: completeCellRangeToThreadCursor(cursorFallbackRange),\n name: cellContent,\n subject: model.sheet,\n }),\n );\n }\n }\n }\n },\n [model.sheet, cursorFallbackRange, cursor, dispatch],\n ) as MenuActionHandler;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { create } from '@dxos/live-object';\n\nimport { type AlignState } from './align';\nimport { type CommentState } from './comment';\nimport { type StyleState } from './style';\n\nexport type ToolbarState = Partial<StyleState & AlignState & CommentState>;\n\nexport const useToolbarState = (initialState: ToolbarState = {}) => {\n return useMemo(() => create<ToolbarState>(initialState), []);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { SheetContainer } from './SheetContainer';\n\nexport default SheetContainer;\n"],
5
- "mappings": "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",
6
- "names": ["import_react", "import_compute", "import_react_ui_menu", "import_live_object", "FunctionEditor", "model", "cursor", "range", "useSheetContext", "value", "formula", "getCellValue", "isFormula", "graph", "mapFunctionBindingFromId", "mapFormulaIndicesToRefs", "sheet", "String", "React", "div", "className", "rangeToA1Notation", "addressToA1Notation", "Icon", "icon", "classNames", "span", "aligns", "start", "center", "end", "useAlignState", "state", "useEffect", "alignKey", "ranges", "findLast", "key", "inRange", "rangeFromIndex", "undefined", "createAlignGroupAction", "createMenuItemGroup", "label", "ns", "SHEET_PLUGIN", "variant", "selectCardinality", "createAlignActions", "Object", "entries", "map", "alignValue", "createMenuAction", "checked", "testId", "createAlign", "alignGroup", "alignActions", "nodes", "edges", "source", "target", "id", "useCommentState", "cursorFallbackRange", "overlapsCommentAnchor", "useMemo", "RefArray", "allResolvedTargets", "threads", "filter", "thread", "status", "some", "rangeToIndex", "anchor", "commentEnabled", "createCommentAction", "commentKey", "disabled", "createComment", "styles", "highlight", "softwrap", "useStyleState", "from", "forEach", "createStyleGroup", "keys", "styleValue", "createStyleActions", "createStyle", "styleGroupAction", "styleActions", "useToolbarAction", "dispatchPromise", "dispatch", "useIntentDispatcher", "useCallback", "action", "properties", "index", "findIndex", "nextRangeEntity", "push", "splice", "rangeKey", "rangeValue", "cellContent", "getCellText", "createIntent", "ThreadAction", "Create", "completeCellRangeToThreadCursor", "name", "subject", "useToolbarState", "initialState", "create", "createToolbarActions", "align", "style", "gap", "createGapSeparator", "comment", "SheetToolbar", "attendableId", "actionsCreator", "menu", "useMenuActions", "handleAction", "MenuProvider", "onAction", "ToolbarMenu", "SheetContainer", "space", "role", "ignoreAttention", "useComputeGraph", "SheetProvider", "StackItem", "Content", "toolbar", "statusbar", "fullyQualifiedId", "GridSheet"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/meta.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const SHEET_PLUGIN = 'dxos.org/plugin/sheet';\n\nexport const meta = {\n id: SHEET_PLUGIN,\n name: 'Sheet',\n description:\n 'Sheets in Composer are simple spreadsheets which allow you to leverage custom functions inside of cell grids. Leverage more than 400 pre-built formulas like Sum, Average, Count, Max, Min along with many others. You can also deploy your own custom functions using the Scripts plugin. ',\n icon: 'ph--grid-nine--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-sheet',\n screenshots: ['https://dxos.network/plugin-details-sheet-dark.png'],\n} satisfies PluginMeta;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAMO,IAAMA,eAAe;AAErB,IAAMC,OAAO;EAClBC,IAAIF;EACJG,MAAM;EACNC,aACE;EACFC,MAAM;EACNC,QAAQ;EACRC,aAAa;IAAC;;AAChB;",
6
- "names": ["SHEET_PLUGIN", "meta", "id", "name", "description", "icon", "source", "screenshots"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/react-surface.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, contributes, createSurface, useCapability } from '@dxos/app-framework';\nimport { getSpace } from '@dxos/react-client/echo';\n\nimport { SheetCapabilities } from './capabilities';\nimport { ComputeGraphContextProvider, RangeList, SheetContainer } from '../components';\nimport { SHEET_PLUGIN } from '../meta';\nimport { SheetType } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${SHEET_PLUGIN}/sheet`,\n role: ['article', 'section'],\n filter: (data): data is { subject: SheetType } => data.subject instanceof SheetType && !!getSpace(data.subject),\n component: ({ data, role }) => {\n const computeGraphRegistry = useCapability(SheetCapabilities.ComputeGraphRegistry);\n\n return (\n <ComputeGraphContextProvider registry={computeGraphRegistry}>\n <SheetContainer space={getSpace(data.subject)!} sheet={data.subject} role={role} />\n </ComputeGraphContextProvider>\n );\n },\n }),\n createSurface({\n id: `${SHEET_PLUGIN}/settings`,\n role: 'complementary--settings',\n filter: (data): data is { subject: SheetType } => data.subject instanceof SheetType,\n component: ({ data }) => <RangeList sheet={data.subject} />,\n }),\n ]);\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,mBAAkB;AAElB,2BAAwE;AACxE,kBAAyB;AAOzB,IAAA,wBAAe,UACbA,kCAAYC,kCAAaC,cAAc;MACrCC,oCAAc;IACZC,IAAI,GAAGC,kCAAAA;IACPC,MAAM;MAAC;MAAW;;IAClBC,QAAQ,CAACC,SAAyCA,KAAKC,mBAAmBC,mCAAa,CAAC,KAACC,sBAASH,KAAKC,OAAO;IAC9GG,WAAW,CAAC,EAAEJ,MAAMF,KAAI,MAAE;AACxB,YAAMO,2BAAuBC,oCAAcC,wCAAkBC,oBAAoB;AAEjF,aACE,6BAAAC,QAAA,cAACC,mDAAAA;QAA4BC,UAAUN;SACrC,6BAAAI,QAAA,cAACG,sCAAAA;QAAeC,WAAOV,sBAASH,KAAKC,OAAO;QAAIa,OAAOd,KAAKC;QAASH;;IAG3E;EACF,CAAA;MACAH,oCAAc;IACZC,IAAI,GAAGC,kCAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAAyCA,KAAKC,mBAAmBC;IAC1EE,WAAW,CAAC,EAAEJ,KAAI,MAAO,6BAAAS,QAAA,cAACM,iCAAAA;MAAUD,OAAOd,KAAKC;;EAClD,CAAA;CACD;",
6
- "names": ["contributes", "Capabilities", "ReactSurface", "createSurface", "id", "SHEET_PLUGIN", "role", "filter", "data", "subject", "SheetType", "getSpace", "component", "computeGraphRegistry", "useCapability", "SheetCapabilities", "ComputeGraphRegistry", "React", "ComputeGraphContextProvider", "registry", "SheetContainer", "space", "sheet", "RangeList"]
7
- }