@ai-matrx/office 0.0.0 → 0.2.0
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/CHANGELOG.md +21 -0
- package/README.md +27 -1
- package/dist/core-page-setup-apply.cjs +121 -0
- package/dist/core-page-setup-apply.cjs.map +1 -0
- package/dist/core-page-setup-apply.d.cts +21 -0
- package/dist/core-page-setup-apply.d.ts +21 -0
- package/dist/core-page-setup-apply.js +100 -0
- package/dist/core-page-setup-apply.js.map +1 -0
- package/dist/core.cjs +487 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.d.cts +397 -0
- package/dist/core.d.ts +397 -0
- package/dist/core.js +454 -0
- package/dist/core.js.map +1 -0
- package/dist/document-page-style-BFLrgdLI.d.cts +109 -0
- package/dist/document-page-style-BFLrgdLI.d.ts +109 -0
- package/dist/univer-history.cjs +61 -0
- package/dist/univer-history.cjs.map +1 -0
- package/dist/univer-history.d.cts +32 -0
- package/dist/univer-history.d.ts +32 -0
- package/dist/univer-history.js +40 -0
- package/dist/univer-history.js.map +1 -0
- package/dist/univer.cjs +333 -0
- package/dist/univer.cjs.map +1 -0
- package/dist/univer.d.cts +320 -0
- package/dist/univer.d.ts +320 -0
- package/dist/univer.js +317 -0
- package/dist/univer.js.map +1 -0
- package/package.json +130 -1
package/dist/core.d.ts
ADDED
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
import { ComponentType, ReactNode } from 'react';
|
|
2
|
+
export { D as DEFAULT_DOCUMENT_PAGE_STYLE, a as DEFAULT_PAGE_COLOR, P as PAGE_COLORS, b as PAGE_COLOR_KEY, c as PAPER_SIZES, d as PX_PER_INCH, e as PageSetupValues, f as PaperSizeName, g as defaultDocumentPageStyle, i as isLegacySqueezedPageStyle, p as pageSetupCommandParams, h as pageSetupFromStyle } from './document-page-style-BFLrgdLI.js';
|
|
3
|
+
import '@univerjs/core';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The editor chrome's command model — ONE data tree per editor that the menu
|
|
7
|
+
* bar, the "Menus" search and the keyboard bindings all read. A row exists
|
|
8
|
+
* only when it runs a real editor command; nothing here is decorative.
|
|
9
|
+
*
|
|
10
|
+
* Pure (no React, no DOM beyond KeyboardEvent shape) so the command mapping is
|
|
11
|
+
* testable with a fake editor port.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/** A keyboard shortcut. `mod` is Cmd on a Mac and Ctrl elsewhere. */
|
|
15
|
+
type EditorShortcut = {
|
|
16
|
+
key: string;
|
|
17
|
+
mod?: boolean;
|
|
18
|
+
shift?: boolean;
|
|
19
|
+
alt?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* true: the chrome binds this key itself (the editor engine does not).
|
|
22
|
+
* false/absent: the engine already binds it; the label only tells the truth.
|
|
23
|
+
*/
|
|
24
|
+
bind?: boolean;
|
|
25
|
+
};
|
|
26
|
+
type IconType$1 = ComponentType<{
|
|
27
|
+
className?: string;
|
|
28
|
+
}>;
|
|
29
|
+
type EditorMenuAction = {
|
|
30
|
+
kind: "action";
|
|
31
|
+
id: string;
|
|
32
|
+
label: string;
|
|
33
|
+
icon?: IconType$1;
|
|
34
|
+
shortcut?: EditorShortcut;
|
|
35
|
+
/** Extra words the Menus search matches (e.g. "freeze" for "1 row"). */
|
|
36
|
+
keywords?: string[];
|
|
37
|
+
run: () => unknown;
|
|
38
|
+
checked?: () => boolean;
|
|
39
|
+
/** Only for edit gates (a viewer); never "not built". */
|
|
40
|
+
disabled?: () => boolean;
|
|
41
|
+
/**
|
|
42
|
+
* A Google menu row we cannot run yet: the registered Coming Soon id it announces
|
|
43
|
+
* (`lib/coming-soon/editor-menus.ts`). Drawn in muted ink; `run` announces the promise.
|
|
44
|
+
*/
|
|
45
|
+
soon?: string;
|
|
46
|
+
};
|
|
47
|
+
type EditorMenuSubmenu = {
|
|
48
|
+
kind: "submenu";
|
|
49
|
+
id: string;
|
|
50
|
+
label: string;
|
|
51
|
+
icon?: IconType$1;
|
|
52
|
+
keywords?: string[];
|
|
53
|
+
items: EditorMenuEntry[];
|
|
54
|
+
};
|
|
55
|
+
type EditorMenuSeparator = {
|
|
56
|
+
kind: "separator";
|
|
57
|
+
};
|
|
58
|
+
type EditorMenuEntry = EditorMenuAction | EditorMenuSubmenu | EditorMenuSeparator;
|
|
59
|
+
type EditorMenu = {
|
|
60
|
+
id: string;
|
|
61
|
+
label: string;
|
|
62
|
+
items: EditorMenuEntry[];
|
|
63
|
+
};
|
|
64
|
+
/** One runnable row as the Menus search sees it: the action plus its path. */
|
|
65
|
+
type FlatEditorAction = EditorMenuAction & {
|
|
66
|
+
path: string[];
|
|
67
|
+
};
|
|
68
|
+
declare function flattenMenus(menus: EditorMenu[]): FlatEditorAction[];
|
|
69
|
+
/** Search the flattened commands: every word must hit the label, path or keywords. */
|
|
70
|
+
declare function searchActions(actions: FlatEditorAction[], query: string, limit?: number): FlatEditorAction[];
|
|
71
|
+
declare function isMacPlatform(): boolean;
|
|
72
|
+
/** "⌘⇧1" on a Mac, "Ctrl+Shift+1" elsewhere — Google's notation. */
|
|
73
|
+
declare function formatShortcut(s: EditorShortcut, mac?: boolean): string;
|
|
74
|
+
declare function matchesShortcut(e: Pick<KeyboardEvent, "key" | "code" | "metaKey" | "ctrlKey" | "shiftKey" | "altKey">, s: EditorShortcut, mac?: boolean): boolean;
|
|
75
|
+
/** The actions whose shortcut the chrome binds itself. */
|
|
76
|
+
declare function boundActions(menus: EditorMenu[]): FlatEditorAction[];
|
|
77
|
+
type ToolbarIconType = ComponentType<{
|
|
78
|
+
className?: string;
|
|
79
|
+
}>;
|
|
80
|
+
/** One control in an editor's toolbar row (moved unchanged from EditorToolbar.tsx; pure data). */
|
|
81
|
+
type EditorToolbarItem = {
|
|
82
|
+
kind: "button";
|
|
83
|
+
id: string;
|
|
84
|
+
label: string;
|
|
85
|
+
icon: ToolbarIconType;
|
|
86
|
+
run: () => unknown;
|
|
87
|
+
shortcut?: EditorShortcut;
|
|
88
|
+
active?: boolean;
|
|
89
|
+
disabled?: boolean;
|
|
90
|
+
} | {
|
|
91
|
+
kind: "separator";
|
|
92
|
+
id: string;
|
|
93
|
+
} | {
|
|
94
|
+
kind: "menu";
|
|
95
|
+
id: string;
|
|
96
|
+
label: string;
|
|
97
|
+
icon?: ToolbarIconType;
|
|
98
|
+
/** Text shown on the trigger (e.g. "100%", "Arial"). */
|
|
99
|
+
text?: string;
|
|
100
|
+
/** Trigger width class for text triggers (keeps the row still as text changes). */
|
|
101
|
+
widthClass?: string;
|
|
102
|
+
items: EditorMenuEntry[];
|
|
103
|
+
disabled?: boolean;
|
|
104
|
+
} | {
|
|
105
|
+
kind: "node";
|
|
106
|
+
id: string;
|
|
107
|
+
node: ReactNode;
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* The Microsoft 365 look's ribbon — a SECOND PRESENTATION of the editor's ONE command map.
|
|
112
|
+
*
|
|
113
|
+
* A ribbon layout is pure data: tabs → groups → controls, where each control names something that
|
|
114
|
+
* already exists in the editor's model by id —
|
|
115
|
+
* - a toolbar item (`tb.bold`, `tb.font`, …) from the same `EditorToolbarItem[]` the Google
|
|
116
|
+
* toolbar draws,
|
|
117
|
+
* - a menu row (`view.freeze`, `data.filter`, …) from the same `EditorMenu[]` the Google menu
|
|
118
|
+
* bar draws (an action runs; a submenu opens as a dropdown),
|
|
119
|
+
* - a whole menu (`menu:help`) as one dropdown.
|
|
120
|
+
* Nothing here runs anything itself, so the two looks cannot drift: `ribbonCoverage` proves every
|
|
121
|
+
* command of the model is reachable from the ribbon (forcing test per editor).
|
|
122
|
+
*
|
|
123
|
+
* Pure (no React) so the mapping is testable with a fake editor host.
|
|
124
|
+
*/
|
|
125
|
+
|
|
126
|
+
type IconType = ComponentType<{
|
|
127
|
+
className?: string;
|
|
128
|
+
}>;
|
|
129
|
+
/**
|
|
130
|
+
* - `large`: icon over a label, a whole column (Office's Paste, Freeze Panes).
|
|
131
|
+
* - `small`: icon + label in a row, three stacked per column.
|
|
132
|
+
* - `icon`: an icon (or value dropdown) in a row of tools (Office's Font group).
|
|
133
|
+
*/
|
|
134
|
+
type RibbonSize = "large" | "small" | "icon";
|
|
135
|
+
type RibbonControlSpec = {
|
|
136
|
+
/** A toolbar item id, a menu entry id, or `menu:<menuId>` for a whole menu. */
|
|
137
|
+
ref: string;
|
|
138
|
+
size?: RibbonSize;
|
|
139
|
+
/** Office's own word for the same command ("Freeze Panes" for Freeze). */
|
|
140
|
+
label?: string;
|
|
141
|
+
/** An icon for a row that has none in the model (a large control needs one). */
|
|
142
|
+
icon?: IconType;
|
|
143
|
+
};
|
|
144
|
+
type RibbonGroupSpec = {
|
|
145
|
+
id: string;
|
|
146
|
+
label: string;
|
|
147
|
+
controls: Array<string | RibbonControlSpec>;
|
|
148
|
+
/** Icon rows hold this many tools before wrapping to the next row (default 6). */
|
|
149
|
+
perRow?: number;
|
|
150
|
+
};
|
|
151
|
+
type RibbonTabSpec = {
|
|
152
|
+
id: string;
|
|
153
|
+
label: string;
|
|
154
|
+
groups: RibbonGroupSpec[];
|
|
155
|
+
};
|
|
156
|
+
/** Menu rows (or whole submenus) the Microsoft ribbon deliberately does not place, with the reason. */
|
|
157
|
+
type GoogleOnlyRows = Record<string, string>;
|
|
158
|
+
type ResolvedRibbonControl = {
|
|
159
|
+
kind: "toolbar";
|
|
160
|
+
key: string;
|
|
161
|
+
size: RibbonSize;
|
|
162
|
+
label?: string | undefined;
|
|
163
|
+
icon?: IconType | undefined;
|
|
164
|
+
item: Exclude<EditorToolbarItem, {
|
|
165
|
+
kind: "separator";
|
|
166
|
+
}>;
|
|
167
|
+
} | {
|
|
168
|
+
kind: "action";
|
|
169
|
+
key: string;
|
|
170
|
+
size: RibbonSize;
|
|
171
|
+
label?: string | undefined;
|
|
172
|
+
icon?: IconType | undefined;
|
|
173
|
+
action: EditorMenuAction;
|
|
174
|
+
} | {
|
|
175
|
+
kind: "submenu";
|
|
176
|
+
key: string;
|
|
177
|
+
size: RibbonSize;
|
|
178
|
+
label?: string | undefined;
|
|
179
|
+
icon?: IconType | undefined;
|
|
180
|
+
submenu: Pick<EditorMenuSubmenu, "id" | "label" | "icon" | "items">;
|
|
181
|
+
};
|
|
182
|
+
type ResolvedRibbonGroup = {
|
|
183
|
+
id: string;
|
|
184
|
+
label: string;
|
|
185
|
+
perRow: number;
|
|
186
|
+
controls: ResolvedRibbonControl[];
|
|
187
|
+
};
|
|
188
|
+
type ResolvedRibbonTab = {
|
|
189
|
+
id: string;
|
|
190
|
+
label: string;
|
|
191
|
+
groups: ResolvedRibbonGroup[];
|
|
192
|
+
};
|
|
193
|
+
type Indexed = {
|
|
194
|
+
kind: "toolbar";
|
|
195
|
+
item: Exclude<EditorToolbarItem, {
|
|
196
|
+
kind: "separator";
|
|
197
|
+
}>;
|
|
198
|
+
} | {
|
|
199
|
+
kind: "action";
|
|
200
|
+
action: EditorMenuAction;
|
|
201
|
+
} | {
|
|
202
|
+
kind: "submenu";
|
|
203
|
+
submenu: Pick<EditorMenuSubmenu, "id" | "label" | "icon" | "items">;
|
|
204
|
+
};
|
|
205
|
+
/** Every addressable command of one editor: toolbar ids, menu entry ids, `menu:<id>`. */
|
|
206
|
+
declare function indexCommands(menus: EditorMenu[], toolbar: EditorToolbarItem[]): Map<string, Indexed>;
|
|
207
|
+
/**
|
|
208
|
+
* The layout bound to the live model. A control whose id the model does not hold right now (a
|
|
209
|
+
* row that exists only in some states, e.g. "Remove image") is left out; empty groups and tabs go.
|
|
210
|
+
*/
|
|
211
|
+
declare function resolveRibbon(tabs: RibbonTabSpec[], menus: EditorMenu[], toolbar: EditorToolbarItem[]): ResolvedRibbonTab[];
|
|
212
|
+
/**
|
|
213
|
+
* What the ribbon can reach vs. what the model holds. `missingActions`: menu rows no ribbon
|
|
214
|
+
* control leads to; `missingToolbar`: toolbar tools absent from the ribbon; `unknownRefs`: layout
|
|
215
|
+
* ids the model does not have (a typo, or a renamed command).
|
|
216
|
+
*/
|
|
217
|
+
declare function ribbonCoverage(tabs: RibbonTabSpec[], menus: EditorMenu[], toolbar: EditorToolbarItem[], googleOnly?: GoogleOnlyRows): {
|
|
218
|
+
missingActions: string[];
|
|
219
|
+
badGoogleOnly: string[];
|
|
220
|
+
wholeMenuRefs: string[];
|
|
221
|
+
missingToolbar: string[];
|
|
222
|
+
unknownRefs: string[];
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Google parity rows the three editors share: a Coming Soon row (`soon`), Google's Extensions
|
|
227
|
+
* menu, and the head of Google's Help menu. Pure data (the announce module loads on click), so
|
|
228
|
+
* the menu builders stay testable without React.
|
|
229
|
+
*/
|
|
230
|
+
|
|
231
|
+
declare const sep: EditorMenuEntry;
|
|
232
|
+
/** A Google row we cannot run yet: muted, and clicking it announces the registered promise. */
|
|
233
|
+
declare function soon(id: string, label: string, promise: string, opts?: {
|
|
234
|
+
icon?: ComponentType<{
|
|
235
|
+
className?: string;
|
|
236
|
+
}>;
|
|
237
|
+
keywords?: string[];
|
|
238
|
+
shortcut?: EditorShortcut;
|
|
239
|
+
}): EditorMenuAction;
|
|
240
|
+
type GoogleProduct = "sheets" | "docs" | "slides";
|
|
241
|
+
/** Google's Extensions menu (the host's own tools follow these rows). */
|
|
242
|
+
declare function googleExtensionsMenu(product: GoogleProduct, built?: {
|
|
243
|
+
macros?: EditorMenuEntry;
|
|
244
|
+
}): EditorMenu;
|
|
245
|
+
/** The head of Google's Help menu; the editor's own rows (shortcuts, function list) follow. */
|
|
246
|
+
declare function googleHelpHead(opts?: {
|
|
247
|
+
sendFeedback?: () => void;
|
|
248
|
+
}): EditorMenuEntry[];
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* The Microsoft look's homes for the Google parity rows every editor shares (`google-parity.ts`):
|
|
252
|
+
* the Help group's head and the Automate tab (add-ins, scripts). Spread into each editor's
|
|
253
|
+
* ribbon so the shared rows are placed once, the same way.
|
|
254
|
+
*/
|
|
255
|
+
|
|
256
|
+
declare const HELP_HEAD_CONTROLS: RibbonControlSpec[];
|
|
257
|
+
declare const AUTOMATE_TAB: RibbonTabSpec;
|
|
258
|
+
|
|
259
|
+
/** The product-neutral page setup every Office editor's Page setup dialog reads and writes. */
|
|
260
|
+
interface PageSetup {
|
|
261
|
+
size: "letter" | "legal" | "a4" | "a3" | {
|
|
262
|
+
w: number;
|
|
263
|
+
h: number;
|
|
264
|
+
unit: "in" | "mm";
|
|
265
|
+
};
|
|
266
|
+
orientation: "portrait" | "landscape";
|
|
267
|
+
/** Inches. */
|
|
268
|
+
margins: {
|
|
269
|
+
top: number;
|
|
270
|
+
right: number;
|
|
271
|
+
bottom: number;
|
|
272
|
+
left: number;
|
|
273
|
+
};
|
|
274
|
+
headerFooter?: {
|
|
275
|
+
header?: string;
|
|
276
|
+
footer?: string;
|
|
277
|
+
pageNumbers?: boolean;
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* Where each Office product lives. The map is CONFIGURATION, not a constant: the app passes its own
|
|
283
|
+
* (production `https://sheets.aimatrx.com`, development `http://sheets.localhost:5190`), so links
|
|
284
|
+
* generated here always match the app that is running.
|
|
285
|
+
*
|
|
286
|
+
* The routes are the same on every host: `/` the product's File Home, `/templates`,
|
|
287
|
+
* `/new?template=<id>`, `/f/<id>` an item.
|
|
288
|
+
*/
|
|
289
|
+
type OfficeProduct = "sheets" | "docs" | "slides" | "bases" | "boards" | "pdf";
|
|
290
|
+
declare const OFFICE_PRODUCTS: readonly OfficeProduct[];
|
|
291
|
+
type OfficeHostMap = Record<OfficeProduct, string>;
|
|
292
|
+
/** Set the product → origin map (an origin such as `https://sheets.aimatrx.com`, no trailing slash needed). Call once at start-up. */
|
|
293
|
+
declare function configureOfficeHosts(map: OfficeHostMap): void;
|
|
294
|
+
/** The configured origin of a product. Throws when the app never configured the hosts. */
|
|
295
|
+
declare function officeOrigin(product: OfficeProduct): string;
|
|
296
|
+
/**
|
|
297
|
+
* An absolute link into a product: no id is its File Home, an id opens that item (`/f/<id>`).
|
|
298
|
+
* `sub` appends a path segment (`officeHref("docs", undefined, { sub: "templates" })` is the Templates page).
|
|
299
|
+
*/
|
|
300
|
+
declare function officeHref(product: OfficeProduct, id?: string, o?: {
|
|
301
|
+
sub?: string;
|
|
302
|
+
}): string;
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* The Office record rows: the workbook and document rows and their snapshots, exactly as the
|
|
306
|
+
* `workbench` schema returns them (moved from matrx-frontend `features/data-tables/types`, W1-G1a).
|
|
307
|
+
* Written out here because a package cannot import an app's generated database types; the app proves
|
|
308
|
+
* the two agree with a compile-time check against its generated `Database` type.
|
|
309
|
+
*
|
|
310
|
+
* `Json` columns are `unknown`: a reader narrows what it reads, nothing is assumed.
|
|
311
|
+
*/
|
|
312
|
+
type WorkbookSource = "created" | "imported_xlsx" | "imported_gsheet" | "imported_csv" | "linked_gsheet";
|
|
313
|
+
type DocumentSource = "created" | "imported_docx" | "imported_md" | "imported_txt" | "linked_gdoc";
|
|
314
|
+
/** `platform.shown_to`. */
|
|
315
|
+
type ShownTo = "only_me" | "my_team" | "everyone" | "everyone_on_ai_matrx";
|
|
316
|
+
/** `platform.visibility`. */
|
|
317
|
+
type Visibility = "personal" | "internal" | "link" | "public";
|
|
318
|
+
/** A row of `workbench.udt_workbooks`. */
|
|
319
|
+
interface Workbook {
|
|
320
|
+
created_at: string;
|
|
321
|
+
created_by: string;
|
|
322
|
+
custom_fields: unknown;
|
|
323
|
+
deleted_at: string | null;
|
|
324
|
+
description: string | null;
|
|
325
|
+
id: string;
|
|
326
|
+
is_public: boolean;
|
|
327
|
+
metadata: unknown;
|
|
328
|
+
organization_id: string;
|
|
329
|
+
original_file_id: string | null;
|
|
330
|
+
project_id: string | null;
|
|
331
|
+
published_to_web: boolean;
|
|
332
|
+
published_to_web_at: string | null;
|
|
333
|
+
published_to_web_by: string | null;
|
|
334
|
+
shown_to: ShownTo | null;
|
|
335
|
+
source: WorkbookSource;
|
|
336
|
+
task_id: string | null;
|
|
337
|
+
updated_at: string;
|
|
338
|
+
updated_by: string | null;
|
|
339
|
+
user_id: string;
|
|
340
|
+
version: number;
|
|
341
|
+
visibility: Visibility;
|
|
342
|
+
workbook_name: string;
|
|
343
|
+
}
|
|
344
|
+
/** A row of `workbench.udt_workbook_snapshots`. */
|
|
345
|
+
interface WorkbookSnapshot {
|
|
346
|
+
created_at: string;
|
|
347
|
+
created_by: string | null;
|
|
348
|
+
custom_fields: unknown;
|
|
349
|
+
id: string;
|
|
350
|
+
label: string | null;
|
|
351
|
+
metadata: unknown;
|
|
352
|
+
organization_id: string;
|
|
353
|
+
/** Free text in the database; "autosave" | "manual" | "imported" | "restored" by convention. */
|
|
354
|
+
origin: string;
|
|
355
|
+
snapshot: unknown;
|
|
356
|
+
workbook_id: string;
|
|
357
|
+
}
|
|
358
|
+
/** A row of `workbench.udt_documents`. */
|
|
359
|
+
interface DocumentRow {
|
|
360
|
+
created_at: string;
|
|
361
|
+
created_by: string;
|
|
362
|
+
custom_fields: unknown;
|
|
363
|
+
deleted_at: string | null;
|
|
364
|
+
description: string | null;
|
|
365
|
+
document_name: string;
|
|
366
|
+
id: string;
|
|
367
|
+
is_public: boolean;
|
|
368
|
+
metadata: unknown;
|
|
369
|
+
organization_id: string | null;
|
|
370
|
+
original_file_id: string | null;
|
|
371
|
+
project_id: string | null;
|
|
372
|
+
published_to_web: boolean;
|
|
373
|
+
published_to_web_at: string | null;
|
|
374
|
+
published_to_web_by: string | null;
|
|
375
|
+
shown_to: ShownTo | null;
|
|
376
|
+
source: DocumentSource;
|
|
377
|
+
task_id: string | null;
|
|
378
|
+
updated_at: string;
|
|
379
|
+
updated_by: string | null;
|
|
380
|
+
user_id: string;
|
|
381
|
+
version: number;
|
|
382
|
+
visibility: Visibility;
|
|
383
|
+
}
|
|
384
|
+
/** A row of `workbench.udt_document_snapshots`. */
|
|
385
|
+
interface DocumentSnapshot {
|
|
386
|
+
created_at: string;
|
|
387
|
+
created_by: string | null;
|
|
388
|
+
custom_fields: unknown;
|
|
389
|
+
document_id: string;
|
|
390
|
+
id: string;
|
|
391
|
+
label: string | null;
|
|
392
|
+
metadata: unknown;
|
|
393
|
+
origin: string;
|
|
394
|
+
snapshot: unknown;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
export { AUTOMATE_TAB, type DocumentRow, type DocumentSnapshot, type DocumentSource, type EditorMenu, type EditorMenuAction, type EditorMenuEntry, type EditorMenuSeparator, type EditorMenuSubmenu, type EditorShortcut, type EditorToolbarItem, type FlatEditorAction, type GoogleOnlyRows, type GoogleProduct, HELP_HEAD_CONTROLS, OFFICE_PRODUCTS, type OfficeHostMap, type OfficeProduct, type PageSetup, type ResolvedRibbonControl, type ResolvedRibbonGroup, type ResolvedRibbonTab, type RibbonControlSpec, type RibbonGroupSpec, type RibbonSize, type RibbonTabSpec, type ShownTo, type Visibility, type Workbook, type WorkbookSnapshot, type WorkbookSource, boundActions, configureOfficeHosts, flattenMenus, formatShortcut, googleExtensionsMenu, googleHelpHead, indexCommands, isMacPlatform, matchesShortcut, officeHref, officeOrigin, resolveRibbon, ribbonCoverage, searchActions, sep, soon };
|