@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.
- package/dist/lib/browser/{SheetContainer-EDJA5L2H.mjs → SheetContainer-B3A5443Z.mjs} +6 -6
- package/dist/lib/browser/SheetContainer-B3A5443Z.mjs.map +7 -0
- package/dist/lib/browser/{chunk-DN6QF7VV.mjs → chunk-AT5ZK6JD.mjs} +1 -1
- package/dist/lib/browser/chunk-AT5ZK6JD.mjs.map +7 -0
- package/dist/lib/browser/{chunk-UGSCCRPW.mjs → chunk-CHMPICA6.mjs} +14 -7
- package/dist/lib/browser/chunk-CHMPICA6.mjs.map +7 -0
- package/dist/lib/browser/{chunk-GAFHJBCU.mjs → chunk-D3G4UGEK.mjs} +1 -1
- package/dist/lib/browser/chunk-D3G4UGEK.mjs.map +7 -0
- package/dist/lib/browser/{chunk-LXHRT3CC.mjs → chunk-EMSCNWEK.mjs} +2 -2
- package/dist/lib/browser/{chunk-OOSRC36N.mjs → chunk-ZOKEQL2K.mjs} +3 -3
- package/dist/lib/browser/{chunk-OOSRC36N.mjs.map → chunk-ZOKEQL2K.mjs.map} +2 -2
- package/dist/lib/browser/{compute-graph-registry-EGPD4HEX.mjs → compute-graph-registry-WEJLJJ6T.mjs} +7 -4
- package/dist/lib/browser/compute-graph-registry-WEJLJJ6T.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +10 -18
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-6S2RMLQF.mjs → intent-resolver-6OUEM3IG.mjs} +3 -3
- package/dist/lib/browser/{markdown-EJU2M7EE.mjs → markdown-DR4RDEEY.mjs} +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-24GOYR7J.mjs → react-surface-ECKBP3UZ.mjs} +11 -10
- package/dist/lib/browser/react-surface-ECKBP3UZ.mjs.map +7 -0
- package/dist/lib/browser/{thread-7ZWW5EA7.mjs → thread-76MK2FMV.mjs} +3 -3
- package/dist/lib/browser/types/index.mjs +2 -2
- package/dist/lib/node/{SheetContainer-B77HHBOC.cjs → SheetContainer-LGRD3TTQ.cjs} +38 -38
- package/dist/lib/node/SheetContainer-LGRD3TTQ.cjs.map +7 -0
- package/dist/lib/node/{chunk-VMJK5QN4.cjs → chunk-AEH3L5QZ.cjs} +31 -24
- package/dist/lib/node/chunk-AEH3L5QZ.cjs.map +7 -0
- package/dist/lib/node/{chunk-4LSYTNS4.cjs → chunk-D4MOMCEU.cjs} +7 -7
- package/dist/lib/node/{chunk-4LSYTNS4.cjs.map → chunk-D4MOMCEU.cjs.map} +2 -2
- package/dist/lib/node/{chunk-MLU6KRQN.cjs → chunk-JSIDCZHB.cjs} +4 -4
- package/dist/lib/node/chunk-JSIDCZHB.cjs.map +7 -0
- package/dist/lib/node/{chunk-SQZEJPZ7.cjs → chunk-LEV7OSTK.cjs} +4 -4
- package/dist/lib/node/chunk-LEV7OSTK.cjs.map +7 -0
- package/dist/lib/node/{chunk-ZV2RS3QH.cjs → chunk-O2FOEUYB.cjs} +6 -6
- package/dist/lib/node/{compute-graph-registry-GJK5H264.cjs → compute-graph-registry-VVSRJUGS.cjs} +11 -8
- package/dist/lib/node/compute-graph-registry-VVSRJUGS.cjs.map +7 -0
- package/dist/lib/node/index.cjs +29 -37
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/{intent-resolver-I25V7SBT.cjs → intent-resolver-ICHNDL6F.cjs} +11 -11
- package/dist/lib/node/{markdown-SQHC4EGJ.cjs → markdown-E7OUIMZO.cjs} +9 -9
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-surface-6BJQU2XB.cjs → react-surface-6PBWE75L.cjs} +19 -18
- package/dist/lib/node/react-surface-6PBWE75L.cjs.map +7 -0
- package/dist/lib/node/{thread-DRNYTR6M.cjs → thread-WP43BC4N.cjs} +8 -8
- package/dist/lib/node/types/index.cjs +30 -30
- package/dist/lib/node/types/index.cjs.map +1 -1
- package/dist/lib/node-esm/{SheetContainer-KXWIQCP4.mjs → SheetContainer-4FNTLG5R.mjs} +6 -6
- package/dist/lib/node-esm/SheetContainer-4FNTLG5R.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-HPAMZ6SP.mjs → chunk-6NB67Y6X.mjs} +3 -3
- package/dist/lib/node-esm/{chunk-HPAMZ6SP.mjs.map → chunk-6NB67Y6X.mjs.map} +2 -2
- package/dist/lib/node-esm/{chunk-SX3S7UKU.mjs → chunk-76T5X4VP.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-7TL2H7LA.mjs → chunk-HXBUY5ET.mjs} +1 -1
- package/dist/lib/node-esm/chunk-HXBUY5ET.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-3PA7XGUK.mjs → chunk-WQHYR4WD.mjs} +14 -7
- package/dist/lib/node-esm/chunk-WQHYR4WD.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-RTZXXOS2.mjs → chunk-Y6ND5HWX.mjs} +1 -1
- package/dist/lib/node-esm/chunk-Y6ND5HWX.mjs.map +7 -0
- package/dist/lib/node-esm/{compute-graph-registry-3F5JCYEN.mjs → compute-graph-registry-PBQ52KH6.mjs} +7 -4
- package/dist/lib/node-esm/compute-graph-registry-PBQ52KH6.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +10 -18
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-IPRSINII.mjs → intent-resolver-2JNQCFCI.mjs} +3 -3
- package/dist/lib/node-esm/{markdown-UXKP45S3.mjs → markdown-BPKS2TNG.mjs} +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-YGNWYLVN.mjs → react-surface-UM2Y3ZWZ.mjs} +11 -10
- package/dist/lib/node-esm/react-surface-UM2Y3ZWZ.mjs.map +7 -0
- package/dist/lib/node-esm/{thread-6T5VXPAF.mjs → thread-4NCPE5FK.mjs} +3 -3
- package/dist/lib/node-esm/types/index.mjs +2 -2
- package/dist/types/src/SheetPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/compute-graph-registry.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +2 -8
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +2 -9
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/schema.d.ts +90 -28
- package/dist/types/src/types/schema.d.ts.map +1 -1
- package/package.json +47 -45
- package/src/SheetPlugin.tsx +1 -2
- package/src/capabilities/compute-graph-registry.ts +5 -2
- package/src/capabilities/react-surface.tsx +6 -4
- package/src/components/SheetToolbar/comment.ts +1 -1
- package/src/extensions/compute.ts +2 -2
- package/src/integrations/thread-ranges.ts +9 -1
- package/src/meta.ts +2 -2
- package/src/model/sheet-model.ts +1 -1
- package/src/translations.ts +1 -3
- package/dist/lib/browser/SheetContainer-EDJA5L2H.mjs.map +0 -7
- package/dist/lib/browser/chunk-DN6QF7VV.mjs.map +0 -7
- package/dist/lib/browser/chunk-GAFHJBCU.mjs.map +0 -7
- package/dist/lib/browser/chunk-UGSCCRPW.mjs.map +0 -7
- package/dist/lib/browser/compute-graph-registry-EGPD4HEX.mjs.map +0 -7
- package/dist/lib/browser/react-surface-24GOYR7J.mjs.map +0 -7
- package/dist/lib/node/SheetContainer-B77HHBOC.cjs.map +0 -7
- package/dist/lib/node/chunk-MLU6KRQN.cjs.map +0 -7
- package/dist/lib/node/chunk-SQZEJPZ7.cjs.map +0 -7
- package/dist/lib/node/chunk-VMJK5QN4.cjs.map +0 -7
- package/dist/lib/node/compute-graph-registry-GJK5H264.cjs.map +0 -7
- package/dist/lib/node/react-surface-6BJQU2XB.cjs.map +0 -7
- package/dist/lib/node-esm/SheetContainer-KXWIQCP4.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-3PA7XGUK.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-7TL2H7LA.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-RTZXXOS2.mjs.map +0 -7
- package/dist/lib/node-esm/compute-graph-registry-3F5JCYEN.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-YGNWYLVN.mjs.map +0 -7
- /package/dist/lib/browser/{chunk-LXHRT3CC.mjs.map → chunk-EMSCNWEK.mjs.map} +0 -0
- /package/dist/lib/browser/{intent-resolver-6S2RMLQF.mjs.map → intent-resolver-6OUEM3IG.mjs.map} +0 -0
- /package/dist/lib/browser/{markdown-EJU2M7EE.mjs.map → markdown-DR4RDEEY.mjs.map} +0 -0
- /package/dist/lib/browser/{thread-7ZWW5EA7.mjs.map → thread-76MK2FMV.mjs.map} +0 -0
- /package/dist/lib/node/{chunk-ZV2RS3QH.cjs.map → chunk-O2FOEUYB.cjs.map} +0 -0
- /package/dist/lib/node/{intent-resolver-I25V7SBT.cjs.map → intent-resolver-ICHNDL6F.cjs.map} +0 -0
- /package/dist/lib/node/{markdown-SQHC4EGJ.cjs.map → markdown-E7OUIMZO.cjs.map} +0 -0
- /package/dist/lib/node/{thread-DRNYTR6M.cjs.map → thread-WP43BC4N.cjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-SX3S7UKU.mjs.map → chunk-76T5X4VP.mjs.map} +0 -0
- /package/dist/lib/node-esm/{intent-resolver-IPRSINII.mjs.map → intent-resolver-2JNQCFCI.mjs.map} +0 -0
- /package/dist/lib/node-esm/{markdown-UXKP45S3.mjs.map → markdown-BPKS2TNG.mjs.map} +0 -0
- /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
|
-
|
|
39
|
-
|
|
40
|
-
sender: S.
|
|
41
|
-
contact: S.optional<import("@dxos/echo-schema").Ref$<
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
value:
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
|
|
53
|
-
|
|
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
|
-
|
|
82
|
-
|
|
83
|
-
sender: S.
|
|
84
|
-
contact: S.optional<import("@dxos/echo-schema").Ref$<
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
value:
|
|
89
|
-
|
|
90
|
-
|
|
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
|
-
|
|
96
|
-
|
|
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;;;;;;;;;;;;;;;;;;;;
|
|
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.
|
|
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/
|
|
58
|
-
"@dxos/
|
|
59
|
-
"@dxos/
|
|
60
|
-
"@dxos/
|
|
61
|
-
"@dxos/context": "0.8.1-staging.
|
|
62
|
-
"@dxos/crypto": "0.8.1-staging.
|
|
63
|
-
"@dxos/debug": "0.8.1-staging.
|
|
64
|
-
"@dxos/
|
|
65
|
-
"@dxos/
|
|
66
|
-
"@dxos/invariant": "0.8.1-staging.
|
|
67
|
-
"@dxos/
|
|
68
|
-
"@dxos/live-object": "0.8.1-staging.
|
|
69
|
-
"@dxos/
|
|
70
|
-
"@dxos/
|
|
71
|
-
"@dxos/plugin-graph": "0.8.1-staging.
|
|
72
|
-
"@dxos/plugin-
|
|
73
|
-
"@dxos/plugin-
|
|
74
|
-
"@dxos/plugin-
|
|
75
|
-
"@dxos/plugin-
|
|
76
|
-
"@dxos/plugin-
|
|
77
|
-
"@dxos/plugin-
|
|
78
|
-
"@dxos/
|
|
79
|
-
"@dxos/react-
|
|
80
|
-
"@dxos/react-
|
|
81
|
-
"@dxos/react-ui-
|
|
82
|
-
"@dxos/react-ui-editor": "0.8.1-staging.
|
|
83
|
-
"@dxos/react-ui-grid": "0.8.1-staging.
|
|
84
|
-
"@dxos/react-ui-
|
|
85
|
-
"@dxos/react-ui-
|
|
86
|
-
"@dxos/
|
|
87
|
-
"@dxos/
|
|
88
|
-
"@dxos/
|
|
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.
|
|
101
|
-
"@dxos/lit-grid": "0.8.1-staging.
|
|
102
|
-
"@dxos/random": "0.8.1-staging.
|
|
103
|
-
"@dxos/react-ui": "0.8.1-staging.
|
|
104
|
-
"@dxos/react-ui-syntax-highlighter": "0.8.1-staging.
|
|
105
|
-
"@dxos/react-ui-
|
|
106
|
-
"@dxos/
|
|
107
|
-
"@dxos/
|
|
108
|
-
"@dxos/test-utils": "0.8.1-staging.
|
|
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.
|
|
114
|
-
"@dxos/react-ui-theme": "0.8.1-staging.
|
|
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"
|
package/src/SheetPlugin.tsx
CHANGED
|
@@ -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
|
|
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 } =>
|
|
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: '
|
|
34
|
-
filter: (data): data is { subject: SheetType } => data.subject
|
|
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.
|
|
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
|
|
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?:
|
|
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
|
-
|
|
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
|
-
}
|
|
17
|
+
};
|
package/src/model/sheet-model.ts
CHANGED
|
@@ -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.
|
|
351
|
+
log.warn('cell error', { cell, error: value });
|
|
352
352
|
return value.toString();
|
|
353
353
|
}
|
|
354
354
|
|
package/src/translations.ts
CHANGED
|
@@ -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
|
-
}
|