@dxos/plugin-sheet 0.8.1-staging.391c573 → 0.8.1-staging.97aedb1

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 (117) hide show
  1. package/dist/lib/browser/{SheetContainer-EDJA5L2H.mjs → SheetContainer-B3A5443Z.mjs} +6 -6
  2. package/dist/lib/browser/SheetContainer-B3A5443Z.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-DN6QF7VV.mjs → chunk-AT5ZK6JD.mjs} +1 -1
  4. package/dist/lib/browser/chunk-AT5ZK6JD.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-UGSCCRPW.mjs → chunk-CHMPICA6.mjs} +14 -7
  6. package/dist/lib/browser/chunk-CHMPICA6.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-GAFHJBCU.mjs → chunk-D3G4UGEK.mjs} +1 -1
  8. package/dist/lib/browser/chunk-D3G4UGEK.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-LXHRT3CC.mjs → chunk-EMSCNWEK.mjs} +2 -2
  10. package/dist/lib/browser/{chunk-OOSRC36N.mjs → chunk-ZOKEQL2K.mjs} +3 -3
  11. package/dist/lib/browser/{chunk-OOSRC36N.mjs.map → chunk-ZOKEQL2K.mjs.map} +2 -2
  12. package/dist/lib/browser/{compute-graph-registry-EGPD4HEX.mjs → compute-graph-registry-WEJLJJ6T.mjs} +7 -4
  13. package/dist/lib/browser/compute-graph-registry-WEJLJJ6T.mjs.map +7 -0
  14. package/dist/lib/browser/index.mjs +10 -18
  15. package/dist/lib/browser/index.mjs.map +3 -3
  16. package/dist/lib/browser/{intent-resolver-6S2RMLQF.mjs → intent-resolver-6OUEM3IG.mjs} +3 -3
  17. package/dist/lib/browser/{markdown-EJU2M7EE.mjs → markdown-DR4RDEEY.mjs} +4 -4
  18. package/dist/lib/browser/meta.json +1 -1
  19. package/dist/lib/browser/{react-surface-24GOYR7J.mjs → react-surface-ECKBP3UZ.mjs} +11 -10
  20. package/dist/lib/browser/react-surface-ECKBP3UZ.mjs.map +7 -0
  21. package/dist/lib/browser/{thread-7ZWW5EA7.mjs → thread-76MK2FMV.mjs} +3 -3
  22. package/dist/lib/browser/types/index.mjs +2 -2
  23. package/dist/lib/node/{SheetContainer-B77HHBOC.cjs → SheetContainer-LGRD3TTQ.cjs} +38 -38
  24. package/dist/lib/node/SheetContainer-LGRD3TTQ.cjs.map +7 -0
  25. package/dist/lib/node/{chunk-VMJK5QN4.cjs → chunk-AEH3L5QZ.cjs} +31 -24
  26. package/dist/lib/node/chunk-AEH3L5QZ.cjs.map +7 -0
  27. package/dist/lib/node/{chunk-4LSYTNS4.cjs → chunk-D4MOMCEU.cjs} +7 -7
  28. package/dist/lib/node/{chunk-4LSYTNS4.cjs.map → chunk-D4MOMCEU.cjs.map} +2 -2
  29. package/dist/lib/node/{chunk-MLU6KRQN.cjs → chunk-JSIDCZHB.cjs} +4 -4
  30. package/dist/lib/node/chunk-JSIDCZHB.cjs.map +7 -0
  31. package/dist/lib/node/{chunk-SQZEJPZ7.cjs → chunk-LEV7OSTK.cjs} +4 -4
  32. package/dist/lib/node/chunk-LEV7OSTK.cjs.map +7 -0
  33. package/dist/lib/node/{chunk-ZV2RS3QH.cjs → chunk-O2FOEUYB.cjs} +6 -6
  34. package/dist/lib/node/{compute-graph-registry-GJK5H264.cjs → compute-graph-registry-VVSRJUGS.cjs} +11 -8
  35. package/dist/lib/node/compute-graph-registry-VVSRJUGS.cjs.map +7 -0
  36. package/dist/lib/node/index.cjs +29 -37
  37. package/dist/lib/node/index.cjs.map +3 -3
  38. package/dist/lib/node/{intent-resolver-I25V7SBT.cjs → intent-resolver-ICHNDL6F.cjs} +11 -11
  39. package/dist/lib/node/{markdown-SQHC4EGJ.cjs → markdown-E7OUIMZO.cjs} +9 -9
  40. package/dist/lib/node/meta.json +1 -1
  41. package/dist/lib/node/{react-surface-6BJQU2XB.cjs → react-surface-6PBWE75L.cjs} +19 -18
  42. package/dist/lib/node/react-surface-6PBWE75L.cjs.map +7 -0
  43. package/dist/lib/node/{thread-DRNYTR6M.cjs → thread-WP43BC4N.cjs} +8 -8
  44. package/dist/lib/node/types/index.cjs +30 -30
  45. package/dist/lib/node/types/index.cjs.map +1 -1
  46. package/dist/lib/node-esm/{SheetContainer-KXWIQCP4.mjs → SheetContainer-4FNTLG5R.mjs} +6 -6
  47. package/dist/lib/node-esm/SheetContainer-4FNTLG5R.mjs.map +7 -0
  48. package/dist/lib/node-esm/{chunk-HPAMZ6SP.mjs → chunk-6NB67Y6X.mjs} +3 -3
  49. package/dist/lib/node-esm/{chunk-HPAMZ6SP.mjs.map → chunk-6NB67Y6X.mjs.map} +2 -2
  50. package/dist/lib/node-esm/{chunk-SX3S7UKU.mjs → chunk-76T5X4VP.mjs} +2 -2
  51. package/dist/lib/node-esm/{chunk-7TL2H7LA.mjs → chunk-HXBUY5ET.mjs} +1 -1
  52. package/dist/lib/node-esm/chunk-HXBUY5ET.mjs.map +7 -0
  53. package/dist/lib/node-esm/{chunk-3PA7XGUK.mjs → chunk-WQHYR4WD.mjs} +14 -7
  54. package/dist/lib/node-esm/chunk-WQHYR4WD.mjs.map +7 -0
  55. package/dist/lib/node-esm/{chunk-RTZXXOS2.mjs → chunk-Y6ND5HWX.mjs} +1 -1
  56. package/dist/lib/node-esm/chunk-Y6ND5HWX.mjs.map +7 -0
  57. package/dist/lib/node-esm/{compute-graph-registry-3F5JCYEN.mjs → compute-graph-registry-PBQ52KH6.mjs} +7 -4
  58. package/dist/lib/node-esm/compute-graph-registry-PBQ52KH6.mjs.map +7 -0
  59. package/dist/lib/node-esm/index.mjs +10 -18
  60. package/dist/lib/node-esm/index.mjs.map +3 -3
  61. package/dist/lib/node-esm/{intent-resolver-IPRSINII.mjs → intent-resolver-2JNQCFCI.mjs} +3 -3
  62. package/dist/lib/node-esm/{markdown-UXKP45S3.mjs → markdown-BPKS2TNG.mjs} +4 -4
  63. package/dist/lib/node-esm/meta.json +1 -1
  64. package/dist/lib/node-esm/{react-surface-YGNWYLVN.mjs → react-surface-UM2Y3ZWZ.mjs} +11 -10
  65. package/dist/lib/node-esm/react-surface-UM2Y3ZWZ.mjs.map +7 -0
  66. package/dist/lib/node-esm/{thread-6T5VXPAF.mjs → thread-4NCPE5FK.mjs} +3 -3
  67. package/dist/lib/node-esm/types/index.mjs +2 -2
  68. package/dist/types/src/SheetPlugin.d.ts.map +1 -1
  69. package/dist/types/src/capabilities/compute-graph-registry.d.ts.map +1 -1
  70. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  71. package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
  72. package/dist/types/src/meta.d.ts +2 -8
  73. package/dist/types/src/meta.d.ts.map +1 -1
  74. package/dist/types/src/translations.d.ts +2 -9
  75. package/dist/types/src/translations.d.ts.map +1 -1
  76. package/dist/types/src/types/schema.d.ts +90 -28
  77. package/dist/types/src/types/schema.d.ts.map +1 -1
  78. package/package.json +47 -45
  79. package/src/SheetPlugin.tsx +1 -2
  80. package/src/capabilities/compute-graph-registry.ts +5 -2
  81. package/src/capabilities/react-surface.tsx +6 -4
  82. package/src/components/SheetToolbar/comment.ts +1 -1
  83. package/src/extensions/compute.ts +2 -2
  84. package/src/integrations/thread-ranges.ts +9 -1
  85. package/src/meta.ts +2 -2
  86. package/src/model/sheet-model.ts +1 -1
  87. package/src/translations.ts +1 -3
  88. package/dist/lib/browser/SheetContainer-EDJA5L2H.mjs.map +0 -7
  89. package/dist/lib/browser/chunk-DN6QF7VV.mjs.map +0 -7
  90. package/dist/lib/browser/chunk-GAFHJBCU.mjs.map +0 -7
  91. package/dist/lib/browser/chunk-UGSCCRPW.mjs.map +0 -7
  92. package/dist/lib/browser/compute-graph-registry-EGPD4HEX.mjs.map +0 -7
  93. package/dist/lib/browser/react-surface-24GOYR7J.mjs.map +0 -7
  94. package/dist/lib/node/SheetContainer-B77HHBOC.cjs.map +0 -7
  95. package/dist/lib/node/chunk-MLU6KRQN.cjs.map +0 -7
  96. package/dist/lib/node/chunk-SQZEJPZ7.cjs.map +0 -7
  97. package/dist/lib/node/chunk-VMJK5QN4.cjs.map +0 -7
  98. package/dist/lib/node/compute-graph-registry-GJK5H264.cjs.map +0 -7
  99. package/dist/lib/node/react-surface-6BJQU2XB.cjs.map +0 -7
  100. package/dist/lib/node-esm/SheetContainer-KXWIQCP4.mjs.map +0 -7
  101. package/dist/lib/node-esm/chunk-3PA7XGUK.mjs.map +0 -7
  102. package/dist/lib/node-esm/chunk-7TL2H7LA.mjs.map +0 -7
  103. package/dist/lib/node-esm/chunk-RTZXXOS2.mjs.map +0 -7
  104. package/dist/lib/node-esm/compute-graph-registry-3F5JCYEN.mjs.map +0 -7
  105. package/dist/lib/node-esm/react-surface-YGNWYLVN.mjs.map +0 -7
  106. /package/dist/lib/browser/{chunk-LXHRT3CC.mjs.map → chunk-EMSCNWEK.mjs.map} +0 -0
  107. /package/dist/lib/browser/{intent-resolver-6S2RMLQF.mjs.map → intent-resolver-6OUEM3IG.mjs.map} +0 -0
  108. /package/dist/lib/browser/{markdown-EJU2M7EE.mjs.map → markdown-DR4RDEEY.mjs.map} +0 -0
  109. /package/dist/lib/browser/{thread-7ZWW5EA7.mjs.map → thread-76MK2FMV.mjs.map} +0 -0
  110. /package/dist/lib/node/{chunk-ZV2RS3QH.cjs.map → chunk-O2FOEUYB.cjs.map} +0 -0
  111. /package/dist/lib/node/{intent-resolver-I25V7SBT.cjs.map → intent-resolver-ICHNDL6F.cjs.map} +0 -0
  112. /package/dist/lib/node/{markdown-SQHC4EGJ.cjs.map → markdown-E7OUIMZO.cjs.map} +0 -0
  113. /package/dist/lib/node/{thread-DRNYTR6M.cjs.map → thread-WP43BC4N.cjs.map} +0 -0
  114. /package/dist/lib/node-esm/{chunk-SX3S7UKU.mjs.map → chunk-76T5X4VP.mjs.map} +0 -0
  115. /package/dist/lib/node-esm/{intent-resolver-IPRSINII.mjs.map → intent-resolver-2JNQCFCI.mjs.map} +0 -0
  116. /package/dist/lib/node-esm/{markdown-UXKP45S3.mjs.map → markdown-BPKS2TNG.mjs.map} +0 -0
  117. /package/dist/lib/node-esm/{thread-6T5VXPAF.mjs.map → thread-4NCPE5FK.mjs.map} +0 -0
@@ -35,24 +35,55 @@ 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
+ }>>;
49
+ identityDid: S.optional<typeof S.String>;
48
50
  identityKey: S.optional<typeof S.String>;
49
51
  email: S.optional<typeof S.String>;
50
52
  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>>>>;
53
+ role: S.optional<S.Literal<["user", "assistant"]>>;
54
+ }>;
55
+ blocks: S.Array$<S.Union<[S.mutable<S.extend<S.Struct<{
56
+ pending: S.optional<typeof S.Boolean>;
57
+ }>, S.Struct<{
58
+ type: S.Literal<["text"]>;
59
+ disposition: S.optional<typeof S.String>;
60
+ text: typeof S.String;
61
+ }>>>, S.mutable<S.extend<S.Struct<{
62
+ pending: S.optional<typeof S.Boolean>;
63
+ }>, S.Struct<{
64
+ type: S.Literal<["json"]>;
65
+ disposition: S.optional<typeof S.String>;
66
+ data: typeof S.String;
67
+ }>>>, S.mutable<S.extend<S.Struct<{
68
+ pending: S.optional<typeof S.Boolean>;
69
+ }>, S.Struct<{
70
+ type: S.Literal<["image"]>;
71
+ id: S.optional<typeof S.String>;
72
+ source: S.optional<S.Union<[S.mutable<S.Struct<{
73
+ type: S.Literal<["base64"]>;
74
+ mediaType: typeof S.String;
75
+ data: typeof S.String;
76
+ }>>, S.mutable<S.Struct<{
77
+ type: S.Literal<["http"]>;
78
+ url: typeof S.String;
79
+ }>>]>>;
80
+ }>>>, S.mutable<S.extend<S.Struct<{
81
+ pending: S.optional<typeof S.Boolean>;
82
+ }>, S.Struct<{
83
+ type: S.Literal<["reference"]>;
84
+ reference: import("@dxos/echo-schema").Ref$<import("@dxos/echo-schema").Expando>;
85
+ }>>>]>>;
54
86
  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
87
  }, import("@dxos/echo-schema").TypedObjectOptions>>>>;
57
88
  }, import("@dxos/echo-schema").TypedObjectOptions>>>>>;
58
89
  }, import("@dxos/echo-schema").TypedObjectOptions>, S.Struct.Encoded<{
@@ -78,24 +109,55 @@ declare const SheetType_base: import("@dxos/echo-schema").TypedObjectPrototype<i
78
109
  anchor: S.optional<typeof S.String>;
79
110
  status: S.optional<S.Union<[S.Literal<["staged"]>, S.Literal<["active"]>, S.Literal<["resolved"]>]>>;
80
111
  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>>>;
112
+ id: import("@dxos/echo-schema").ObjectIdClass;
113
+ created: S.SchemaClass<string, string, never>;
114
+ sender: S.Struct<{
115
+ contact: S.optional<import("@dxos/echo-schema").Ref$<{
116
+ readonly id: string;
117
+ name?: string | undefined;
118
+ identifiers: {
119
+ readonly value: string;
120
+ readonly type: string;
121
+ }[];
122
+ }>>;
123
+ identityDid: S.optional<typeof S.String>;
91
124
  identityKey: S.optional<typeof S.String>;
92
125
  email: S.optional<typeof S.String>;
93
126
  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>>>>;
127
+ role: S.optional<S.Literal<["user", "assistant"]>>;
128
+ }>;
129
+ blocks: S.Array$<S.Union<[S.mutable<S.extend<S.Struct<{
130
+ pending: S.optional<typeof S.Boolean>;
131
+ }>, S.Struct<{
132
+ type: S.Literal<["text"]>;
133
+ disposition: S.optional<typeof S.String>;
134
+ text: typeof S.String;
135
+ }>>>, S.mutable<S.extend<S.Struct<{
136
+ pending: S.optional<typeof S.Boolean>;
137
+ }>, S.Struct<{
138
+ type: S.Literal<["json"]>;
139
+ disposition: S.optional<typeof S.String>;
140
+ data: typeof S.String;
141
+ }>>>, S.mutable<S.extend<S.Struct<{
142
+ pending: S.optional<typeof S.Boolean>;
143
+ }>, S.Struct<{
144
+ type: S.Literal<["image"]>;
145
+ id: S.optional<typeof S.String>;
146
+ source: S.optional<S.Union<[S.mutable<S.Struct<{
147
+ type: S.Literal<["base64"]>;
148
+ mediaType: typeof S.String;
149
+ data: typeof S.String;
150
+ }>>, S.mutable<S.Struct<{
151
+ type: S.Literal<["http"]>;
152
+ url: typeof S.String;
153
+ }>>]>>;
154
+ }>>>, S.mutable<S.extend<S.Struct<{
155
+ pending: S.optional<typeof S.Boolean>;
156
+ }>, S.Struct<{
157
+ type: S.Literal<["reference"]>;
158
+ reference: import("@dxos/echo-schema").Ref$<import("@dxos/echo-schema").Expando>;
159
+ }>>>]>>;
97
160
  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
161
  }, import("@dxos/echo-schema").TypedObjectOptions>>>>;
100
162
  }, import("@dxos/echo-schema").TypedObjectOptions>>>>>;
101
163
  }>>;
@@ -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-staging.391c573",
3
+ "version": "0.8.1-staging.97aedb1",
4
4
  "description": "Braneframe sketch plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -47,45 +47,45 @@
47
47
  "@lezer/lr": "^1.4.2",
48
48
  "@preact/signals-core": "^1.6.0",
49
49
  "@radix-ui/react-context": "1.1.1",
50
- "@tanstack/react-virtual": "^3.9.0",
51
50
  "codemirror-lang-spreadsheet": "^1.3.0",
52
51
  "date-fns": "^3.3.1",
53
52
  "lodash.defaultsdeep": "^4.6.1",
54
53
  "re-resizable": "^6.9.17",
55
54
  "react-markdown": "^8.0.5",
56
55
  "react-resize-detector": "^11.0.1",
57
- "@dxos/async": "0.8.1-staging.391c573",
58
- "@dxos/app-framework": "0.8.1-staging.391c573",
59
- "@dxos/client": "0.8.1-staging.391c573",
60
- "@dxos/compute": "0.8.1-staging.391c573",
61
- "@dxos/context": "0.8.1-staging.391c573",
62
- "@dxos/crypto": "0.8.1-staging.391c573",
63
- "@dxos/debug": "0.8.1-staging.391c573",
64
- "@dxos/echo-schema": "0.8.1-staging.391c573",
65
- "@dxos/functions": "0.8.1-staging.391c573",
66
- "@dxos/invariant": "0.8.1-staging.391c573",
67
- "@dxos/keys": "0.8.1-staging.391c573",
68
- "@dxos/live-object": "0.8.1-staging.391c573",
69
- "@dxos/log": "0.8.1-staging.391c573",
70
- "@dxos/plugin-client": "0.8.1-staging.391c573",
71
- "@dxos/plugin-graph": "0.8.1-staging.391c573",
72
- "@dxos/plugin-attention": "0.8.1-staging.391c573",
73
- "@dxos/plugin-script": "0.8.1-staging.391c573",
74
- "@dxos/plugin-stack": "0.8.1-staging.391c573",
75
- "@dxos/plugin-markdown": "0.8.1-staging.391c573",
76
- "@dxos/plugin-thread": "0.8.1-staging.391c573",
77
- "@dxos/plugin-space": "0.8.1-staging.391c573",
78
- "@dxos/react-client": "0.8.1-staging.391c573",
79
- "@dxos/react-ui-attention": "0.8.1-staging.391c573",
80
- "@dxos/react-hooks": "0.8.1-staging.391c573",
81
- "@dxos/react-ui-form": "0.8.1-staging.391c573",
82
- "@dxos/react-ui-editor": "0.8.1-staging.391c573",
83
- "@dxos/react-ui-grid": "0.8.1-staging.391c573",
84
- "@dxos/react-ui-list": "0.8.1-staging.391c573",
85
- "@dxos/react-ui-stack": "0.8.1-staging.391c573",
86
- "@dxos/schema": "0.8.1-staging.391c573",
87
- "@dxos/util": "0.8.1-staging.391c573",
88
- "@dxos/react-ui-menu": "0.8.1-staging.391c573"
56
+ "@dxos/app-framework": "0.8.1-staging.97aedb1",
57
+ "@dxos/async": "0.8.1-staging.97aedb1",
58
+ "@dxos/compute": "0.8.1-staging.97aedb1",
59
+ "@dxos/client": "0.8.1-staging.97aedb1",
60
+ "@dxos/context": "0.8.1-staging.97aedb1",
61
+ "@dxos/crypto": "0.8.1-staging.97aedb1",
62
+ "@dxos/debug": "0.8.1-staging.97aedb1",
63
+ "@dxos/functions": "0.8.1-staging.97aedb1",
64
+ "@dxos/keys": "0.8.1-staging.97aedb1",
65
+ "@dxos/invariant": "0.8.1-staging.97aedb1",
66
+ "@dxos/echo-schema": "0.8.1-staging.97aedb1",
67
+ "@dxos/live-object": "0.8.1-staging.97aedb1",
68
+ "@dxos/plugin-attention": "0.8.1-staging.97aedb1",
69
+ "@dxos/log": "0.8.1-staging.97aedb1",
70
+ "@dxos/plugin-graph": "0.8.1-staging.97aedb1",
71
+ "@dxos/plugin-deck": "0.8.1-staging.97aedb1",
72
+ "@dxos/plugin-client": "0.8.1-staging.97aedb1",
73
+ "@dxos/plugin-script": "0.8.1-staging.97aedb1",
74
+ "@dxos/plugin-space": "0.8.1-staging.97aedb1",
75
+ "@dxos/plugin-stack": "0.8.1-staging.97aedb1",
76
+ "@dxos/plugin-markdown": "0.8.1-staging.97aedb1",
77
+ "@dxos/plugin-thread": "0.8.1-staging.97aedb1",
78
+ "@dxos/react-hooks": "0.8.1-staging.97aedb1",
79
+ "@dxos/react-client": "0.8.1-staging.97aedb1",
80
+ "@dxos/react-ui-attention": "0.8.1-staging.97aedb1",
81
+ "@dxos/react-ui-editor": "0.8.1-staging.97aedb1",
82
+ "@dxos/react-ui-grid": "0.8.1-staging.97aedb1",
83
+ "@dxos/react-ui-form": "0.8.1-staging.97aedb1",
84
+ "@dxos/react-ui-menu": "0.8.1-staging.97aedb1",
85
+ "@dxos/react-ui-stack": "0.8.1-staging.97aedb1",
86
+ "@dxos/react-ui-list": "0.8.1-staging.97aedb1",
87
+ "@dxos/schema": "0.8.1-staging.97aedb1",
88
+ "@dxos/util": "0.8.1-staging.97aedb1"
89
89
  },
90
90
  "devDependencies": {
91
91
  "@lezer/generator": "^1.7.1",
@@ -94,24 +94,26 @@
94
94
  "@types/react": "~18.2.0",
95
95
  "@types/react-dom": "~18.2.0",
96
96
  "@types/react-window": "^1.8.8",
97
+ "effect": "3.13.3",
97
98
  "react": "~18.2.0",
98
99
  "react-dom": "~18.2.0",
99
100
  "vite": "5.4.7",
100
- "@dxos/echo-generator": "0.8.1-staging.391c573",
101
- "@dxos/lit-grid": "0.8.1-staging.391c573",
102
- "@dxos/random": "0.8.1-staging.391c573",
103
- "@dxos/react-ui": "0.8.1-staging.391c573",
104
- "@dxos/react-ui-syntax-highlighter": "0.8.1-staging.391c573",
105
- "@dxos/react-ui-theme": "0.8.1-staging.391c573",
106
- "@dxos/storybook-utils": "0.8.1-staging.391c573",
107
- "@dxos/react-ui-types": "0.8.1-staging.391c573",
108
- "@dxos/test-utils": "0.8.1-staging.391c573"
101
+ "@dxos/echo-generator": "0.8.1-staging.97aedb1",
102
+ "@dxos/lit-grid": "0.8.1-staging.97aedb1",
103
+ "@dxos/random": "0.8.1-staging.97aedb1",
104
+ "@dxos/react-ui": "0.8.1-staging.97aedb1",
105
+ "@dxos/react-ui-syntax-highlighter": "0.8.1-staging.97aedb1",
106
+ "@dxos/react-ui-types": "0.8.1-staging.97aedb1",
107
+ "@dxos/react-ui-theme": "0.8.1-staging.97aedb1",
108
+ "@dxos/storybook-utils": "0.8.1-staging.97aedb1",
109
+ "@dxos/test-utils": "0.8.1-staging.97aedb1"
109
110
  },
110
111
  "peerDependencies": {
112
+ "effect": "3.13.3",
111
113
  "react": "~18.2.0",
112
114
  "react-dom": "~18.2.0",
113
- "@dxos/react-ui": "0.8.1-staging.391c573",
114
- "@dxos/react-ui-theme": "0.8.1-staging.391c573"
115
+ "@dxos/react-ui": "0.8.1-staging.97aedb1",
116
+ "@dxos/react-ui-theme": "0.8.1-staging.97aedb1"
115
117
  },
116
118
  "publishConfig": {
117
119
  "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
  },
@@ -7,12 +7,16 @@ import { ClientCapabilities } from '@dxos/plugin-client';
7
7
 
8
8
  import { SheetCapabilities } from './capabilities';
9
9
 
10
+ const isSecure = (protocol: string) => {
11
+ return protocol === 'https:' || protocol === 'wss:';
12
+ };
13
+
10
14
  export default async (context: PluginsContext) => {
11
15
  const client = context.requestCapability(ClientCapabilities.Client);
12
16
  let remoteFunctionUrl: string | undefined;
13
17
  if (client.config.values.runtime?.services?.edge?.url) {
14
18
  const url = new URL('/functions', client.config.values.runtime?.services?.edge?.url);
15
- url.protocol = 'https';
19
+ url.protocol = isSecure(url.protocol) ? 'https' : 'http';
16
20
  remoteFunctionUrl = url.toString();
17
21
  }
18
22
 
@@ -20,6 +24,5 @@ export default async (context: PluginsContext) => {
20
24
  // Async import removes direct dependency on hyperformula.
21
25
  const { defaultPlugins, ComputeGraphRegistry } = await import('@dxos/compute');
22
26
  const computeGraphRegistry = new ComputeGraphRegistry({ plugins: defaultPlugins, remoteFunctionUrl });
23
-
24
27
  return contributes(SheetCapabilities.ComputeGraphRegistry, computeGraphRegistry);
25
28
  };
@@ -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
 
@@ -29,9 +31,9 @@ export default () =>
29
31
  },
30
32
  }),
31
33
  createSurface({
32
- id: `${SHEET_PLUGIN}/settings`,
33
- role: 'complementary--settings',
34
- filter: (data): data is { subject: SheetType } => data.subject instanceof SheetType,
34
+ id: `${SHEET_PLUGIN}/object-settings`,
35
+ role: 'object-settings',
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) {
@@ -14,7 +14,7 @@ import {
14
14
  } from '@codemirror/state';
15
15
  import { Decoration, EditorView, ViewPlugin, WidgetType } from '@codemirror/view';
16
16
 
17
- import { type UnsubscribeCallback, debounce } from '@dxos/async';
17
+ import { type CleanupFn, debounce } from '@dxos/async';
18
18
  import {
19
19
  createSheetName,
20
20
  type CellAddress,
@@ -92,7 +92,7 @@ export const compute = (options: ComputeOptions = {}): Extension => {
92
92
  ViewPlugin.fromClass(
93
93
  class {
94
94
  // Graph subscription.
95
- private _subscription?: UnsubscribeCallback;
95
+ private _subscription?: CleanupFn;
96
96
  constructor(view: EditorView) {
97
97
  const id = view.state.facet(documentId);
98
98
  const computeGraph = view.state.facet(computeGraphFacet);
@@ -2,6 +2,7 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
+ import { pipe } from 'effect';
5
6
  import { useCallback, useEffect, useMemo } from 'react';
6
7
 
7
8
  import {
@@ -10,10 +11,12 @@ import {
10
11
  LayoutAction,
11
12
  useIntentResolver,
12
13
  useIntentDispatcher,
14
+ chain,
13
15
  } from '@dxos/app-framework';
14
16
  import { debounce } from '@dxos/async';
15
17
  import { type CellAddress, type CompleteCellRange, inRange } from '@dxos/compute';
16
18
  import { S } from '@dxos/echo-schema';
19
+ import { ATTENDABLE_PATH_SEPARATOR, DeckAction } from '@dxos/plugin-deck/types';
17
20
  import { ThreadAction } from '@dxos/plugin-thread/types';
18
21
  import { fullyQualifiedId } from '@dxos/react-client/echo';
19
22
  import { type DxGridElement, type DxGridPosition, type GridContentProps } from '@dxos/react-ui-grid';
@@ -99,7 +102,12 @@ export const useSelectThreadOnCellFocus = () => {
99
102
  });
100
103
 
101
104
  if (closestThread) {
102
- void dispatch(createIntent(ThreadAction.Select, { current: fullyQualifiedId(closestThread) }));
105
+ const primary = fullyQualifiedId(model.sheet);
106
+ const intent = pipe(
107
+ createIntent(ThreadAction.Select, { current: fullyQualifiedId(closestThread) }),
108
+ chain(DeckAction.ChangeCompanion, { primary, companion: `${primary}${ATTENDABLE_PATH_SEPARATOR}comments` }),
109
+ );
110
+ void dispatch(intent);
103
111
  }
104
112
  },
105
113
  [dispatch, threads],
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
+ };
@@ -348,7 +348,7 @@ export class SheetModel extends Resource {
348
348
  const value = this._node.graph.hf.getCellValue(address);
349
349
  if (value instanceof DetailedCellError) {
350
350
  // TODO(wittjosiah): Error details should be shown in cell `title`.
351
- log.info('cell error', { cell, error: value });
351
+ log.warn('cell error', { cell, error: value });
352
352
  return value.toString();
353
353
  }
354
354
 
@@ -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/extensions/compute.ts", "../../../src/extensions/editor/extension.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport {\n type EditorState,\n type Extension,\n type RangeSet,\n RangeSetBuilder,\n StateEffect,\n StateField,\n type Transaction,\n} from '@codemirror/state';\nimport { Decoration, EditorView, ViewPlugin, WidgetType } from '@codemirror/view';\n\nimport { type UnsubscribeCallback, debounce } from '@dxos/async';\nimport {\n createSheetName,\n type CellAddress,\n type CellScalarValue,\n type ComputeGraph,\n type ComputeNode,\n} from '@dxos/compute';\nimport { invariant } from '@dxos/invariant';\nimport { documentId, singleValueFacet } from '@dxos/react-ui-editor';\n\nconst LANGUAGE_TAG = 'dx';\n\n// TODO(burdon): Create marker just for our decorator?\nconst updateAllDecorations = StateEffect.define<void>();\n\nexport const computeGraphFacet = singleValueFacet<ComputeGraph>();\n\nexport type ComputeOptions = {};\n\nexport const compute = (options: ComputeOptions = {}): Extension => {\n let computeNode: ComputeNode | undefined;\n\n const update = (state: EditorState, current?: RangeSet<Decoration>) => {\n const builder = new RangeSetBuilder<Decoration>();\n if (computeNode) {\n computeNode.clear();\n syntaxTree(state).iterate({\n enter: (node) => {\n switch (node.name) {\n case 'FencedCode': {\n const cursor = state.selection.main.head;\n if (state.readOnly || cursor < node.from || cursor > node.to) {\n const info = node.node.getChild('CodeInfo');\n if (info) {\n const type = state.sliceDoc(info.from, info.to);\n const text = node.node.getChild('CodeText');\n if (type === LANGUAGE_TAG && text) {\n const formula = state.sliceDoc(text.from, text.to);\n\n const iter = current?.iter(node.node.from);\n if (iter?.value && iter?.value.spec.formula === formula) {\n // Add existing widget.\n builder.add(node.from, node.to, iter.value);\n } else {\n // TODO(burdon): Create ordered list of cells on each decoration run.\n const cell: CellAddress = { col: node.node.from, row: 0 };\n invariant(computeNode);\n // NOTE: This triggers re-render (below).\n computeNode.setValue(cell, formula);\n const value = computeNode.getValue(cell);\n builder.add(\n node.from,\n node.to,\n Decoration.replace({\n widget: new ComputeWidget(formula, value),\n formula,\n }),\n );\n }\n }\n }\n }\n\n break;\n }\n }\n },\n });\n }\n\n return builder.finish();\n };\n\n return [\n ViewPlugin.fromClass(\n class {\n // Graph subscription.\n private _subscription?: UnsubscribeCallback;\n constructor(view: EditorView) {\n const id = view.state.facet(documentId);\n const computeGraph = view.state.facet(computeGraphFacet);\n if (id && computeGraph) {\n queueMicrotask(async () => {\n computeNode = computeGraph.getOrCreateNode(createSheetName({ type: '', id }));\n await computeNode.open();\n\n // Trigger re-render if values updated.\n // TODO(burdon): Trigger only if formula value updated (currently triggered during render).\n this._subscription = computeNode.update.on(\n debounce(({ type, ...rest }) => {\n if (type === 'valuesUpdated') {\n view.dispatch({\n effects: updateAllDecorations.of(),\n });\n }\n }, 250),\n );\n });\n }\n }\n\n destroy() {\n this._subscription?.();\n void computeNode?.close();\n computeNode = undefined;\n }\n },\n ),\n\n StateField.define<RangeSet<Decoration>>({\n create: (state) => update(state),\n update: (rangeSet: RangeSet<Decoration>, tr: Transaction) => update(tr.state, rangeSet),\n provide: (field) => EditorView.decorations.from(field),\n }),\n ];\n};\n\n// TODO(burdon): Click to edit.\nclass ComputeWidget extends WidgetType {\n constructor(\n private readonly formula: string,\n private readonly value: CellScalarValue,\n ) {\n super();\n }\n\n override toDOM(_view: EditorView) {\n const div = document.createElement('div');\n div.setAttribute('title', this.formula);\n div.innerText = String(this.value);\n return div;\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport {\n type Completion,\n type CompletionContext,\n type CompletionResult,\n acceptCompletion,\n autocompletion,\n completionStatus,\n startCompletion,\n} from '@codemirror/autocomplete';\nimport { HighlightStyle, type Language, syntaxHighlighting } from '@codemirror/language';\nimport { type Extension } from '@codemirror/state';\nimport { type EditorView, ViewPlugin, type ViewUpdate, keymap } from '@codemirror/view';\nimport { type SyntaxNode } from '@lezer/common';\nimport { tags } from '@lezer/highlight';\nimport { spreadsheet } from 'codemirror-lang-spreadsheet';\n\nimport { type FunctionDefinition } from '@dxos/compute';\nimport { RANGE_NOTATION } from '@dxos/compute';\nimport { singleValueFacet } from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\n/**\n * https://codemirror.net/examples/styling\n * https://lezer.codemirror.net/docs/ref/#highlight\n * https://github.com/luizzappa/codemirror-lang-spreadsheet/blob/main/src/index.ts#L28 (mapping)\n */\n// TODO(burdon): Define light/dark.\nconst highlightStyles = HighlightStyle.define([\n // Function.\n {\n tag: tags.name,\n class: 'text-accentText',\n },\n // Range.\n {\n tag: tags.tagName,\n class: 'text-pinkText',\n },\n // Values.\n {\n tag: tags.number,\n class: 'text-tealText',\n },\n {\n tag: tags.bool,\n class: 'text-tealText',\n },\n {\n tag: tags.string,\n class: 'text-tealText',\n },\n // Error.\n {\n tag: tags.invalid,\n class: 'text-unAccent',\n },\n]);\n\nconst languageFacet = singleValueFacet<Language>();\n\nexport type SheetExtensionOptions = {\n debug?: boolean;\n functions?: FunctionDefinition[];\n};\n\n/**\n * Spreadsheet formula extension and parser.\n * https://github.com/luizzappa/codemirror-lang-spreadsheet\n * https://github.com/luizzappa/codemirror-app-spreadsheet/blob/master/src/editor.ts\n * https://github.com/codemirror/lang-example\n * https://hyperformula.handsontable.com/guide/key-concepts.html#grammar\n */\nexport const sheetExtension = ({ debug, functions = [] }: SheetExtensionOptions): Extension => {\n const { extension, language } = spreadsheet({ idiom: 'en-US', decimalSeparator: '.' });\n\n const createCompletion = (name: string) => {\n const { section = 'Custom', description, syntax } = functions.find((value) => value.name === name) ?? {};\n\n return {\n section,\n label: name,\n info: () => {\n if (!description && !syntax) {\n return null;\n }\n\n // TODO(burdon): Standardize color styles.\n const root = document.createElement('div');\n root.className = 'flex flex-col gap-2 text-sm';\n\n const title = document.createElement('h2');\n title.innerText = name;\n title.className = 'text-lg font-mono text-accentText';\n root.appendChild(title);\n\n if (description) {\n const info = document.createElement('p');\n info.innerText = description;\n info.className = 'text-subdued';\n root.appendChild(info);\n }\n\n if (syntax) {\n const detail = document.createElement('pre');\n detail.innerText = syntax;\n detail.className = 'whitespace-pre-wrap text-greenText';\n root.appendChild(detail);\n }\n\n return root;\n },\n apply: (view, completion, from, to) => {\n const insertParens = to === view.state.doc.toString().length;\n view.dispatch(\n view.state.update({\n changes: {\n from,\n to,\n insert: completion.label + (insertParens ? '()' : ''),\n },\n selection: {\n anchor: from + completion.label.length + 1,\n },\n }),\n );\n },\n } satisfies Completion;\n };\n\n return [\n extension,\n languageFacet.of(language),\n language.data.of({\n autocomplete: (context: CompletionContext): CompletionResult | null => {\n if (context.state.doc.toString()[0] !== '=') {\n return null;\n }\n const match = context.matchBefore(/\\w*/);\n if (!match || match.from === match.to) {\n return null;\n }\n\n const text = match.text.toUpperCase();\n if (!context.explicit && match.text.length < 2) {\n return null;\n }\n\n return {\n from: match.from,\n options:\n functions?.filter(({ name }) => name.startsWith(text)).map(({ name }) => createCompletion(name)) ?? [],\n };\n },\n }),\n\n syntaxHighlighting(highlightStyles),\n autocompletion({\n aboveCursor: false,\n defaultKeymap: true,\n activateOnTyping: true,\n closeOnBlur: !debug,\n icons: false,\n tooltipClass: () =>\n mx(\n '!-left-[1px] !top-[33px] !-m-0 border !border-t-0 [&>ul]:!min-w-[198px]',\n '[&>ul>li[aria-selected]]:!bg-accentSurface',\n 'border-separator',\n ),\n }),\n keymap.of([\n {\n key: 'Tab',\n run: (view) => {\n return completionStatus(view.state) === 'active' ? acceptCompletion(view) : startCompletion(view);\n },\n },\n ]),\n\n // Parsing.\n // StateField.define({\n // create: (state) => {},\n // update: (value, tr) => {\n // log.info('update');\n // syntaxTree(tr.state).iterate({\n // enter: ({ type, from, to }) => {\n // log.info('node', { type: type.name, from, to });\n // },\n // });\n // },\n // }),\n ];\n};\n\nexport type SelectionRange = { from: number; to: number };\n\nexport interface RangeController {\n setRange(range: string): void;\n}\n\nexport type RangeExtensionOptions = {\n /**\n * Provides controller callback when extension is initialized.\n */\n onInit?: (controller: RangeController) => void;\n /**\n * Called when the active range changes.\n * @param state The current state.\n * @param state.activeRange undefined if no range is active, otherwise a possibly partially defined range.\n */\n onStateChange?: (state: { activeRange: string | undefined }) => void;\n};\n\n/**\n * Tracks the currently active cell within a formula and provides a callback to modify it.\n */\nexport const rangeExtension = ({ onInit, onStateChange }: RangeExtensionOptions): Extension => {\n let view: EditorView;\n let activeRange: SelectionRange | undefined;\n\n // Called externally to provide current range.\n const notifier: RangeController = {\n setRange: (range: string) => {\n if (activeRange) {\n view.dispatch(\n view.state.update({\n changes: { ...activeRange, insert: range.toString() },\n selection: { anchor: activeRange.from + range.length },\n }),\n );\n }\n\n view.focus();\n },\n };\n\n return ViewPlugin.fromClass(\n class {\n constructor(_view: EditorView) {\n view = _view;\n onInit?.(notifier);\n }\n\n update(view: ViewUpdate) {\n const { anchor } = view.state.selection.ranges[0];\n\n // Find first Range or cell at cursor.\n activeRange = undefined;\n const language = view.state.facet(languageFacet);\n const { topNode } = language.parser.parse(view.state.doc.toString());\n visitTree(topNode, ({ type, from, to }) => {\n if (from <= anchor && to >= anchor) {\n switch (type.name) {\n case 'Function':\n // Mark but keep looking.\n activeRange = { from: to, to };\n break;\n\n case 'CloseParen':\n // Mark but keep looking.\n activeRange = { from, to: from };\n break;\n\n case 'RangeToken':\n case 'CellToken':\n activeRange = { from, to };\n return true;\n }\n }\n\n return false;\n });\n\n // Allow start of formula.\n if (!activeRange && view.state.doc.toString()[0] === '=') {\n const str = view.state.doc.sliceString(1);\n if (RANGE_NOTATION.test(str)) {\n activeRange = { from: 1, to: str.length + 1 };\n } else {\n activeRange = { from: str.length + 1, to: str.length + 1 };\n }\n }\n\n onStateChange?.({\n activeRange: activeRange ? view.state.doc.sliceString(activeRange.from, activeRange.to) : undefined,\n });\n }\n },\n );\n};\n\n/**\n * Lezer parse result visitor.\n */\nconst visitTree = (node: SyntaxNode, callback: (node: SyntaxNode) => boolean): boolean => {\n if (callback(node)) {\n return true;\n }\n\n for (let child = node.firstChild; child !== null; child = child.nextSibling) {\n if (visitTree(child, callback)) {\n return true;\n }\n }\n\n return false;\n};\n"],
5
- "mappings": "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",
6
- "names": ["syntaxTree", "RangeSetBuilder", "StateEffect", "StateField", "Decoration", "EditorView", "ViewPlugin", "WidgetType", "debounce", "createSheetName", "invariant", "documentId", "singleValueFacet", "updateAllDecorations", "StateEffect", "define", "computeGraphFacet", "singleValueFacet", "acceptCompletion", "autocompletion", "completionStatus", "startCompletion", "HighlightStyle", "syntaxHighlighting", "ViewPlugin", "keymap", "tags", "spreadsheet", "RANGE_NOTATION", "singleValueFacet", "mx", "highlightStyles", "HighlightStyle", "define", "tag", "tags", "name", "class", "tagName", "number", "bool", "string", "invalid", "languageFacet", "singleValueFacet", "sheetExtension", "debug", "functions", "extension", "language", "spreadsheet", "idiom", "decimalSeparator", "createCompletion", "section", "description", "syntax", "find", "value", "label", "info", "root", "document", "createElement", "className", "title", "innerText", "appendChild", "detail", "apply", "view", "completion", "from", "to", "insertParens", "state", "doc", "toString", "length", "dispatch", "update", "changes", "insert", "selection", "anchor", "of", "data", "autocomplete", "context", "match", "matchBefore", "text", "toUpperCase", "explicit", "options", "filter", "startsWith", "map", "syntaxHighlighting", "autocompletion", "aboveCursor", "defaultKeymap", "activateOnTyping", "closeOnBlur", "icons", "tooltipClass", "mx", "keymap", "key", "run", "completionStatus", "acceptCompletion", "startCompletion", "rangeExtension", "onInit", "onStateChange", "activeRange", "notifier", "setRange", "range", "focus", "ViewPlugin", "fromClass", "constructor", "_view", "ranges", "undefined", "facet", "topNode", "parser", "parse", "visitTree", "type", "str", "sliceString", "RANGE_NOTATION", "test", "node", "callback", "child", "firstChild", "nextSibling"]
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
- }