hazo_collab_forms 6.2.0 → 6.4.1
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/CHANGE_LOG.md +91 -0
- package/README.md +73 -3
- package/dist/audit/lazy_audit_icon.d.ts.map +1 -1
- package/dist/audit/lazy_audit_icon.js +1 -2
- package/dist/audit/lazy_audit_icon.js.map +1 -1
- package/dist/components/clarification/clarification_dialog.js +1 -2
- package/dist/components/clarification/clarification_dialog.js.map +1 -1
- package/dist/components/collab_form_file_upload.js +2 -3
- package/dist/components/collab_form_file_upload.js.map +1 -1
- package/dist/components/data_ok_multi_state.js +1 -2
- package/dist/components/data_ok_multi_state.js.map +1 -1
- package/dist/components/hazo_collab_form_base.js +4 -5
- package/dist/components/hazo_collab_form_base.js.map +1 -1
- package/dist/components/hazo_collab_form_combo.js +2 -3
- package/dist/components/hazo_collab_form_combo.js.map +1 -1
- package/dist/components/hazo_collab_form_data_table.js +3 -4
- package/dist/components/hazo_collab_form_data_table.js.map +1 -1
- package/dist/components/hazo_collab_form_date.js +3 -4
- package/dist/components/hazo_collab_form_date.js.map +1 -1
- package/dist/components/hazo_collab_form_file_textbox/validation_dialog.js +1 -2
- package/dist/components/hazo_collab_form_file_textbox/validation_dialog.js.map +1 -1
- package/dist/components/hazo_collab_form_view/views/summary_view.js +1 -2
- package/dist/components/hazo_collab_form_view/views/summary_view.js.map +1 -1
- package/dist/components/hazo_data_form/hazo_data_form.d.ts.map +1 -1
- package/dist/components/hazo_data_form/hazo_data_form.js +3 -5
- package/dist/components/hazo_data_form/hazo_data_form.js.map +1 -1
- package/dist/components/hazo_data_form/pdf_panel.d.ts.map +1 -1
- package/dist/components/hazo_data_form/pdf_panel.js +2 -7
- package/dist/components/hazo_data_form/pdf_panel.js.map +1 -1
- package/dist/components/hazo_field_selector_dialog/components/field_autocomplete.js +1 -2
- package/dist/components/hazo_field_selector_dialog/components/field_autocomplete.js.map +1 -1
- package/dist/components/hazo_field_selector_dialog/components/sortable_field_item.js +1 -2
- package/dist/components/hazo_field_selector_dialog/components/sortable_field_item.js.map +1 -1
- package/dist/components/multi_state_radio.js +1 -2
- package/dist/components/multi_state_radio.js.map +1 -1
- package/dist/components/shared/field_tooltip/field_tooltip.js +1 -2
- package/dist/components/shared/field_tooltip/field_tooltip.js.map +1 -1
- package/dist/components/shared/ihelp_icon.js +1 -2
- package/dist/components/shared/ihelp_icon.js.map +1 -1
- package/dist/components/thread_form/components/collected_data_view.d.ts +15 -1
- package/dist/components/thread_form/components/collected_data_view.d.ts.map +1 -1
- package/dist/components/thread_form/components/collected_data_view.js +95 -2
- package/dist/components/thread_form/components/collected_data_view.js.map +1 -1
- package/dist/components/thread_form/index.d.ts +6 -0
- package/dist/components/thread_form/index.d.ts.map +1 -1
- package/dist/components/thread_form/index.js +4 -0
- package/dist/components/thread_form/index.js.map +1 -1
- package/dist/components/thread_form/lib/build_export_sheets.d.ts +47 -0
- package/dist/components/thread_form/lib/build_export_sheets.d.ts.map +1 -0
- package/dist/components/thread_form/lib/build_export_sheets.js +149 -0
- package/dist/components/thread_form/lib/build_export_sheets.js.map +1 -0
- package/dist/components/thread_form/lib/export_sheets_to_file.d.ts +21 -0
- package/dist/components/thread_form/lib/export_sheets_to_file.d.ts.map +1 -0
- package/dist/components/thread_form/lib/export_sheets_to_file.js +81 -0
- package/dist/components/thread_form/lib/export_sheets_to_file.js.map +1 -0
- package/dist/components/thread_form/lib/export_sheets_to_google.d.ts +60 -0
- package/dist/components/thread_form/lib/export_sheets_to_google.d.ts.map +1 -0
- package/dist/components/thread_form/lib/export_sheets_to_google.js +172 -0
- package/dist/components/thread_form/lib/export_sheets_to_google.js.map +1 -0
- package/dist/components/thread_form/thread_form.d.ts.map +1 -1
- package/dist/components/thread_form/thread_form.js +2 -2
- package/dist/components/thread_form/thread_form.js.map +1 -1
- package/dist/components/thread_form/types.d.ts +31 -0
- package/dist/components/thread_form/types.d.ts.map +1 -1
- package/dist/components/thread_form/types.js.map +1 -1
- package/package.json +13 -8
|
@@ -5,9 +5,15 @@
|
|
|
5
5
|
'use client';
|
|
6
6
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
7
|
import { useState } from 'react';
|
|
8
|
+
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
9
|
+
import { Download, FileSpreadsheet, FileText, Sheet, Loader2 } from 'lucide-react';
|
|
10
|
+
import { toast } from 'sonner';
|
|
8
11
|
import { ExtractedFieldsInline } from './extracted_fields_inline.js';
|
|
9
12
|
import { FileInfoDialog } from './file_info_dialog.js';
|
|
10
13
|
import { PdfIcon } from './shared.js';
|
|
14
|
+
import { build_export_sheets } from '../lib/build_export_sheets.js';
|
|
15
|
+
import { export_sheets_to_file } from '../lib/export_sheets_to_file.js';
|
|
16
|
+
import { export_sheets_to_google } from '../lib/export_sheets_to_google.js';
|
|
11
17
|
/** Inline info-icon button that opens FileInfoDialog. Agent-only by default. */
|
|
12
18
|
function FileInfoButton({ item, classification_results, }) {
|
|
13
19
|
const [open, set_open] = useState(false);
|
|
@@ -104,7 +110,7 @@ function is_item_selected(item, selections) {
|
|
|
104
110
|
const explicit = selections[item.content_id];
|
|
105
111
|
return explicit === undefined ? default_selected(item) : explicit;
|
|
106
112
|
}
|
|
107
|
-
export function CollectedDataView({ data, classification_results, on_selection_change, on_export, on_view_file, render_item_details, show_extracted_fields, document_types, locale, currency_code, truncate_chars, role, on_request_reextraction, }) {
|
|
113
|
+
export function CollectedDataView({ data, classification_results, on_selection_change, on_export, on_view_file, render_item_details, show_extracted_fields, document_types, locale, currency_code, truncate_chars, role, on_request_reextraction, enable_export, export_filename, google_client_id, export_file_links, get_external_links, }) {
|
|
108
114
|
const categories = gather_categories(data, classification_results);
|
|
109
115
|
const selections = data.collected_data_selections || {};
|
|
110
116
|
// Per-row accordion state. Default: all collapsed. Set membership = expanded.
|
|
@@ -141,7 +147,94 @@ export function CollectedDataView({ data, classification_results, on_selection_c
|
|
|
141
147
|
.flat()
|
|
142
148
|
.filter(item => is_item_selected(item, selections)).length;
|
|
143
149
|
const total_items = Array.from(categories.values()).flat().length;
|
|
144
|
-
|
|
150
|
+
// ── Export menu (Excel / CSV / Google Sheets) ──
|
|
151
|
+
const [exporting, set_exporting] = useState(false);
|
|
152
|
+
const [export_menu_open, set_export_menu_open] = useState(false);
|
|
153
|
+
const get_selected_file_items = () => {
|
|
154
|
+
const out = [];
|
|
155
|
+
for (const [, items] of categories) {
|
|
156
|
+
for (const item of items) {
|
|
157
|
+
if (item.type === 'file' && is_item_selected(item, selections))
|
|
158
|
+
out.push(item);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return out;
|
|
162
|
+
};
|
|
163
|
+
const resolve_file_links = async (items) => {
|
|
164
|
+
if (!export_file_links || !get_external_links)
|
|
165
|
+
return undefined;
|
|
166
|
+
const ids = items.map((i) => i.file?.file_id).filter((x) => !!x);
|
|
167
|
+
if (ids.length === 0)
|
|
168
|
+
return undefined;
|
|
169
|
+
try {
|
|
170
|
+
const map = await get_external_links(ids);
|
|
171
|
+
const out = new Map();
|
|
172
|
+
for (const [id, v] of Object.entries(map))
|
|
173
|
+
if (v?.url)
|
|
174
|
+
out.set(id, v.url);
|
|
175
|
+
return out;
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
toast.error('Could not resolve file links — exporting without them');
|
|
179
|
+
return undefined;
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
const run_file_export = async (format) => {
|
|
183
|
+
const items = get_selected_file_items();
|
|
184
|
+
set_exporting(true);
|
|
185
|
+
const file_links = await resolve_file_links(items);
|
|
186
|
+
const sheets = build_export_sheets(items, document_types, classification_results, file_links);
|
|
187
|
+
if (sheets.length === 0) {
|
|
188
|
+
toast.info('No file data to export');
|
|
189
|
+
set_exporting(false);
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
try {
|
|
193
|
+
const ok = await export_sheets_to_file(sheets, { format, filename: export_filename || 'collected-data' });
|
|
194
|
+
if (ok)
|
|
195
|
+
toast.success(format === 'xlsx' ? 'Excel file downloaded' : 'CSV file downloaded');
|
|
196
|
+
else
|
|
197
|
+
toast.error('Export unavailable — the "xlsx" package is not installed');
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
toast.error('Export failed');
|
|
201
|
+
}
|
|
202
|
+
finally {
|
|
203
|
+
set_exporting(false);
|
|
204
|
+
set_export_menu_open(false);
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
const run_google_export = async () => {
|
|
208
|
+
if (!google_client_id)
|
|
209
|
+
return;
|
|
210
|
+
const items = get_selected_file_items();
|
|
211
|
+
set_exporting(true);
|
|
212
|
+
const file_links = await resolve_file_links(items);
|
|
213
|
+
const sheets = build_export_sheets(items, document_types, classification_results, file_links);
|
|
214
|
+
if (sheets.length === 0) {
|
|
215
|
+
toast.info('No file data to export');
|
|
216
|
+
set_exporting(false);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
try {
|
|
220
|
+
const { url } = await export_sheets_to_google(sheets, {
|
|
221
|
+
client_id: google_client_id,
|
|
222
|
+
filename: export_filename || 'collected-data',
|
|
223
|
+
});
|
|
224
|
+
window.open(url, '_blank', 'noopener');
|
|
225
|
+
toast.success('Opened in Google Sheets');
|
|
226
|
+
}
|
|
227
|
+
catch (err) {
|
|
228
|
+
toast.error(err instanceof Error ? err.message : 'Google Sheets export failed');
|
|
229
|
+
}
|
|
230
|
+
finally {
|
|
231
|
+
set_exporting(false);
|
|
232
|
+
set_export_menu_open(false);
|
|
233
|
+
}
|
|
234
|
+
};
|
|
235
|
+
return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "flex items-center justify-between text-[13px] text-[#64748B]", children: [_jsxs("span", { children: [total_selected, " of ", total_items, " items selected"] }), _jsxs("div", { className: "flex items-center gap-3", children: [enable_export && (_jsxs(PopoverPrimitive.Root, { open: export_menu_open, onOpenChange: set_export_menu_open, modal: true, children: [_jsx(PopoverPrimitive.Trigger, { asChild: true, children: _jsxs("button", { type: "button", disabled: total_selected === 0 || exporting, title: total_selected === 0 ? 'No items selected' : `Export ${total_selected} selected items`, className: "text-xs font-medium px-3 py-1.5 rounded border border-[#CBD5E1] bg-white hover:bg-[#F8FAFC] text-[#0F172A] flex items-center gap-1.5 cursor-pointer disabled:opacity-40 disabled:cursor-not-allowed", children: [exporting
|
|
236
|
+
? _jsx(Loader2, { className: "w-3.5 h-3.5 animate-spin" })
|
|
237
|
+
: _jsx(Download, { className: "w-3.5 h-3.5" }), "Export (", total_selected, ")"] }) }), _jsx(PopoverPrimitive.Portal, { children: _jsxs(PopoverPrimitive.Content, { align: "end", sideOffset: 4, collisionPadding: 16, className: "z-50 min-w-[200px] rounded-md border border-[#E2E8F0] bg-white p-1 shadow-md", children: [_jsxs("button", { type: "button", onClick: () => run_file_export('xlsx'), className: "w-full flex items-center gap-2 px-3 py-2 text-[13px] text-[#0F172A] rounded hover:bg-[#F1F5F9] cursor-pointer text-left", children: [_jsx(FileSpreadsheet, { className: "w-4 h-4 text-[#16A34A]" }), " Excel (.xlsx)"] }), _jsxs("button", { type: "button", onClick: () => run_file_export('csv'), className: "w-full flex items-center gap-2 px-3 py-2 text-[13px] text-[#0F172A] rounded hover:bg-[#F1F5F9] cursor-pointer text-left", children: [_jsx(FileText, { className: "w-4 h-4 text-[#64748B]" }), " CSV (.csv)"] }), google_client_id && (_jsxs("button", { type: "button", onClick: run_google_export, className: "w-full flex items-center gap-2 px-3 py-2 text-[13px] text-[#0F172A] rounded hover:bg-[#F1F5F9] cursor-pointer text-left", children: [_jsx(Sheet, { className: "w-4 h-4 text-[#0F9D58]" }), " Open in Google Sheets"] }))] }) })] })), _jsx("button", { type: "button", onClick: all_expanded ? collapse_all : expand_all, className: "text-[12px] text-[#2563EB] hover:text-[#1D4ED8] font-medium cursor-pointer", children: all_expanded ? 'Collapse all' : 'Expand all' })] })] }), Array.from(categories.entries()).map(([cat, items]) => {
|
|
145
238
|
const sel_count = items.filter(i => is_item_selected(i, selections)).length;
|
|
146
239
|
const sorted = sort_with_replacement_chains(items);
|
|
147
240
|
return (_jsxs("div", { className: "rounded-md border border-[#E2E8F0] overflow-hidden border-l-[3px] border-l-[#94A3B8]", children: [_jsxs("div", { className: "flex items-center justify-between px-4 py-2.5 bg-[#F8FAFC] border-b border-[#E2E8F0]", children: [_jsx("span", { className: "text-[13px] font-medium text-[#0F172A]", children: cat }), _jsxs("span", { className: "text-[11px] text-[#94A3B8]", children: [sel_count, "/", items.length, " selected"] })] }), _jsx("div", { className: "p-2 space-y-1.5 bg-[#FAFBFC]", children: sorted.map(({ item, depth }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collected_data_view.js","sourceRoot":"","sources":["../../../../src/components/thread_form/components/collected_data_view.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"collected_data_view.js","sourceRoot":"","sources":["../../../../src/components/thread_form/components/collected_data_view.tsx"],"names":[],"mappings":"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"}
|
|
@@ -36,5 +36,11 @@ export { use_file_pipeline } from './hooks/use_file_pipeline.js';
|
|
|
36
36
|
export type { UseFilePipelineOptions, UseFilePipelineReturn, FileStatus as PipelineFileStatus, FileStatusEntry } from './hooks/use_file_pipeline.js';
|
|
37
37
|
export { format_extracted_field, prettify_key, is_iso_date, CURRENCY_KEY_REGEX, } from './utils/format_extracted_field.js';
|
|
38
38
|
export type { FormatOptions as FormatExtractedFieldOptions } from './utils/format_extracted_field.js';
|
|
39
|
+
export { build_export_sheets, safe_cell, sanitize_sheet_name, is_safe_http_url, } from './lib/build_export_sheets.js';
|
|
40
|
+
export type { SheetSpec, ColumnSpec, LinkCell, SheetCell } from './lib/build_export_sheets.js';
|
|
41
|
+
export { export_sheets_to_file, cell_value } from './lib/export_sheets_to_file.js';
|
|
42
|
+
export type { ExportFormat, ExportOptions } from './lib/export_sheets_to_file.js';
|
|
43
|
+
export { export_sheets_to_google, to_cell_value } from './lib/export_sheets_to_google.js';
|
|
44
|
+
export type { GoogleSheetsExportOptions } from './lib/export_sheets_to_google.js';
|
|
39
45
|
export { SAMPLE_THREAD_FORM } from './sample_data.js';
|
|
40
46
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/thread_form/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAG5F,YAAY,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,eAAe,EACf,OAAO,EACP,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AAIpB,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAG9E,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAC9H,YAAY,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,YAAY,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAG1F,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAE5F,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,UAAU,IAAI,kBAAkB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAGrJ,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,WAAW,EACX,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAC3C,YAAY,EAAE,aAAa,IAAI,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAGtG,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/thread_form/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,10 @@ export { use_thread_form } from './hooks/use_thread_form.js';
|
|
|
29
29
|
export { use_file_pipeline } from './hooks/use_file_pipeline.js';
|
|
30
30
|
// Utilities
|
|
31
31
|
export { format_extracted_field, prettify_key, is_iso_date, CURRENCY_KEY_REGEX, } from './utils/format_extracted_field.js';
|
|
32
|
+
// Export helpers (Collected Data → Excel / CSV / Google Sheets)
|
|
33
|
+
export { build_export_sheets, safe_cell, sanitize_sheet_name, is_safe_http_url, } from './lib/build_export_sheets.js';
|
|
34
|
+
export { export_sheets_to_file, cell_value } from './lib/export_sheets_to_file.js';
|
|
35
|
+
export { export_sheets_to_google, to_cell_value } from './lib/export_sheets_to_google.js';
|
|
32
36
|
// Sample data (for testing/demos)
|
|
33
37
|
export { SAMPLE_THREAD_FORM } from './sample_data.js';
|
|
34
38
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/thread_form/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AA6ChE,YAAY;AACZ,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE9E,8CAA8C;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAE9H,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAGhF,QAAQ;AACR,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGjE,YAAY;AACZ,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,WAAW,EACX,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAG3C,kCAAkC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/thread_form/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AA6ChE,YAAY;AACZ,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE9E,8CAA8C;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAE9H,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAGhF,QAAQ;AACR,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAG7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGjE,YAAY;AACZ,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,WAAW,EACX,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAG3C,gEAAgE;AAChE,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAEnF,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAG1F,kCAAkC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* build_export_sheets — turn selected Collected-Data ContentItems into a
|
|
3
|
+
* spreadsheet spec (one sheet per category, columns = File Name + extracted
|
|
4
|
+
* fields). Pure and client-safe; shared by the xlsx/csv download and the
|
|
5
|
+
* Google Sheets export. Ported from taxclientdocs's lib/collected-data-excel.ts,
|
|
6
|
+
* adapted to the package's own category grouping (mirrors `gather_categories`
|
|
7
|
+
* in collected_data_view.tsx).
|
|
8
|
+
*/
|
|
9
|
+
import type { ContentItem, ClassificationResult, ClassificationDocumentType } from '../types.js';
|
|
10
|
+
export interface ColumnSpec {
|
|
11
|
+
key: string;
|
|
12
|
+
label: string;
|
|
13
|
+
}
|
|
14
|
+
/** A clickable cell: shown as `text`, linking to `url`. */
|
|
15
|
+
export interface LinkCell {
|
|
16
|
+
text: string;
|
|
17
|
+
url: string;
|
|
18
|
+
}
|
|
19
|
+
export type SheetCell = string | number | null | LinkCell;
|
|
20
|
+
export interface SheetSpec {
|
|
21
|
+
/** Display category label (matches the Collected Data tab header). */
|
|
22
|
+
category: string;
|
|
23
|
+
/** Excel-safe, ≤31-char, de-duplicated worksheet name. */
|
|
24
|
+
sheet_name: string;
|
|
25
|
+
columns: ColumnSpec[];
|
|
26
|
+
rows: SheetCell[][];
|
|
27
|
+
}
|
|
28
|
+
/** Only absolute http(s) URLs may be embedded in an exported sheet (defence in depth). */
|
|
29
|
+
export declare function is_safe_http_url(url: string): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Neutralize formula injection: Excel/CSV treats cells starting with =, +, -, @,
|
|
32
|
+
* tab, or CR as formulas. Prefix with a single quote to force literal text.
|
|
33
|
+
* Strip ASCII control characters (except normal whitespace) as defence-in-depth.
|
|
34
|
+
*/
|
|
35
|
+
export declare function safe_cell(v: string): string;
|
|
36
|
+
/** Strip Excel-invalid chars and clamp to 31 chars. Falls back to "Sheet". */
|
|
37
|
+
export declare function sanitize_sheet_name(name: string): string;
|
|
38
|
+
/**
|
|
39
|
+
* Build one SheetSpec per document category from the given (already-selected)
|
|
40
|
+
* items. Only file-type items are included. Columns = File Name + the union of
|
|
41
|
+
* extracted_fields keys in the bucket, ordered by the matching document type's
|
|
42
|
+
* expected_fields when available.
|
|
43
|
+
*/
|
|
44
|
+
export declare function build_export_sheets(items: ContentItem[], document_types?: ClassificationDocumentType[], classification_results?: Map<string, ClassificationResult>,
|
|
45
|
+
/** file_id → absolute URL. When present, the File Name cell becomes a clickable LinkCell. */
|
|
46
|
+
file_links?: Map<string, string>): SheetSpec[];
|
|
47
|
+
//# sourceMappingURL=build_export_sheets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build_export_sheets.d.ts","sourceRoot":"","sources":["../../../../src/components/thread_form/lib/build_export_sheets.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAGjG,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,2DAA2D;AAC3D,MAAM,WAAW,QAAQ;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;CAAE;AACxD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,QAAQ,CAAC;AAE1D,MAAM,WAAW,SAAS;IACxB,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;CACrB;AAED,0FAA0F;AAC1F,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAI3C;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIxD;AA0CD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,WAAW,EAAE,EACpB,cAAc,GAAE,0BAA0B,EAAO,EACjD,sBAAsB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC;AAC1D,6FAA6F;AAC7F,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,SAAS,EAAE,CAwEb"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* build_export_sheets — turn selected Collected-Data ContentItems into a
|
|
3
|
+
* spreadsheet spec (one sheet per category, columns = File Name + extracted
|
|
4
|
+
* fields). Pure and client-safe; shared by the xlsx/csv download and the
|
|
5
|
+
* Google Sheets export. Ported from taxclientdocs's lib/collected-data-excel.ts,
|
|
6
|
+
* adapted to the package's own category grouping (mirrors `gather_categories`
|
|
7
|
+
* in collected_data_view.tsx).
|
|
8
|
+
*/
|
|
9
|
+
import { prettify_key } from '../utils/format_extracted_field.js';
|
|
10
|
+
/** Only absolute http(s) URLs may be embedded in an exported sheet (defence in depth). */
|
|
11
|
+
export function is_safe_http_url(url) {
|
|
12
|
+
return /^https?:\/\//i.test(url);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Neutralize formula injection: Excel/CSV treats cells starting with =, +, -, @,
|
|
16
|
+
* tab, or CR as formulas. Prefix with a single quote to force literal text.
|
|
17
|
+
* Strip ASCII control characters (except normal whitespace) as defence-in-depth.
|
|
18
|
+
*/
|
|
19
|
+
export function safe_cell(v) {
|
|
20
|
+
// eslint-disable-next-line no-control-regex
|
|
21
|
+
const stripped = v.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, '');
|
|
22
|
+
return /^[=+\-@\t\r]/.test(stripped) ? `'${stripped}` : stripped;
|
|
23
|
+
}
|
|
24
|
+
/** Strip Excel-invalid chars and clamp to 31 chars. Falls back to "Sheet". */
|
|
25
|
+
export function sanitize_sheet_name(name) {
|
|
26
|
+
// Excel disallows: [ ] : * ? / \
|
|
27
|
+
const stripped = name.replace(/[[\]:*?/\\]/g, '').trim();
|
|
28
|
+
return stripped.slice(0, 31) || 'Sheet';
|
|
29
|
+
}
|
|
30
|
+
/** Title Case a snake_case / space-separated doc type (mirrors gather_categories). */
|
|
31
|
+
function title_case(s) {
|
|
32
|
+
return s.replace(/_/g, ' ').replace(/\b\w/g, (c) => c.toUpperCase());
|
|
33
|
+
}
|
|
34
|
+
/** Resolve the display category label for a file item (matches the tab UI). */
|
|
35
|
+
function category_label_for(item, classification_results) {
|
|
36
|
+
if (item.category_label)
|
|
37
|
+
return item.category_label;
|
|
38
|
+
if (item.classification_result)
|
|
39
|
+
return title_case(item.classification_result.document_type);
|
|
40
|
+
const cr = classification_results?.get(item.content_id);
|
|
41
|
+
if (cr)
|
|
42
|
+
return title_case(cr.document_type);
|
|
43
|
+
return 'Uploaded Files';
|
|
44
|
+
}
|
|
45
|
+
/** Raw document_type (the type_id used to look up expected_fields), if any. */
|
|
46
|
+
function raw_doc_type_for(item, classification_results) {
|
|
47
|
+
return (item.classification_result?.document_type ??
|
|
48
|
+
classification_results?.get(item.content_id)?.document_type);
|
|
49
|
+
}
|
|
50
|
+
/** Extracted fields for a file item, from the item or the pipeline result map. */
|
|
51
|
+
function extracted_fields_for(item, classification_results) {
|
|
52
|
+
return (item.classification_result?.extracted_fields ??
|
|
53
|
+
classification_results?.get(item.content_id)?.extracted_fields ??
|
|
54
|
+
{});
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Build one SheetSpec per document category from the given (already-selected)
|
|
58
|
+
* items. Only file-type items are included. Columns = File Name + the union of
|
|
59
|
+
* extracted_fields keys in the bucket, ordered by the matching document type's
|
|
60
|
+
* expected_fields when available.
|
|
61
|
+
*/
|
|
62
|
+
export function build_export_sheets(items, document_types = [], classification_results,
|
|
63
|
+
/** file_id → absolute URL. When present, the File Name cell becomes a clickable LinkCell. */
|
|
64
|
+
file_links) {
|
|
65
|
+
const doctype_map = new Map(document_types.map((d) => [d.type_id, d]));
|
|
66
|
+
// Bucket file items by display category, preserving first-appearance order.
|
|
67
|
+
const buckets = new Map();
|
|
68
|
+
for (const item of items) {
|
|
69
|
+
if (item.type !== 'file')
|
|
70
|
+
continue;
|
|
71
|
+
const label = category_label_for(item, classification_results);
|
|
72
|
+
let bucket = buckets.get(label);
|
|
73
|
+
if (!bucket) {
|
|
74
|
+
bucket = { items: [], raw_doc_type: undefined };
|
|
75
|
+
buckets.set(label, bucket);
|
|
76
|
+
}
|
|
77
|
+
bucket.items.push(item);
|
|
78
|
+
if (!bucket.raw_doc_type)
|
|
79
|
+
bucket.raw_doc_type = raw_doc_type_for(item, classification_results);
|
|
80
|
+
}
|
|
81
|
+
const used_names = new Set();
|
|
82
|
+
const sheets = [];
|
|
83
|
+
for (const [label, bucket] of buckets) {
|
|
84
|
+
const spec = bucket.raw_doc_type ? doctype_map.get(bucket.raw_doc_type) : undefined;
|
|
85
|
+
// Union of all extracted_fields keys in this bucket.
|
|
86
|
+
const key_set = new Set();
|
|
87
|
+
for (const item of bucket.items) {
|
|
88
|
+
for (const k of Object.keys(extracted_fields_for(item, classification_results))) {
|
|
89
|
+
key_set.add(k);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// Order: expected_fields order first, then any remaining keys.
|
|
93
|
+
const ordered = [];
|
|
94
|
+
if (spec?.expected_fields) {
|
|
95
|
+
for (const ef of spec.expected_fields)
|
|
96
|
+
if (key_set.has(ef.key))
|
|
97
|
+
ordered.push(ef.key);
|
|
98
|
+
}
|
|
99
|
+
for (const k of key_set)
|
|
100
|
+
if (!ordered.includes(k))
|
|
101
|
+
ordered.push(k);
|
|
102
|
+
const columns = [
|
|
103
|
+
{ key: '__file_name', label: 'File Name' },
|
|
104
|
+
...ordered.map((k) => {
|
|
105
|
+
const ef_spec = spec?.expected_fields?.find((e) => e.key === k);
|
|
106
|
+
return { key: k, label: ef_spec?.label ?? prettify_key(k) };
|
|
107
|
+
}),
|
|
108
|
+
];
|
|
109
|
+
const rows = bucket.items.map((item) => {
|
|
110
|
+
const ef = extracted_fields_for(item, classification_results);
|
|
111
|
+
const file_name = safe_cell(item.file?.file_name ?? '');
|
|
112
|
+
const link_url = item.file?.file_id ? file_links?.get(item.file.file_id) : undefined;
|
|
113
|
+
const name_cell = link_url && is_safe_http_url(link_url) ? { text: file_name, url: link_url } : file_name;
|
|
114
|
+
const row = [name_cell];
|
|
115
|
+
for (const col of columns.slice(1)) {
|
|
116
|
+
const val = ef[col.key];
|
|
117
|
+
if (val === undefined || val === null)
|
|
118
|
+
row.push(null);
|
|
119
|
+
else if (typeof val === 'number')
|
|
120
|
+
row.push(val);
|
|
121
|
+
else if (Array.isArray(val) || typeof val === 'object')
|
|
122
|
+
row.push(safe_cell(JSON.stringify(val)));
|
|
123
|
+
else
|
|
124
|
+
row.push(safe_cell(String(val)));
|
|
125
|
+
}
|
|
126
|
+
return row;
|
|
127
|
+
});
|
|
128
|
+
sheets.push({
|
|
129
|
+
category: label,
|
|
130
|
+
sheet_name: dedupe_sheet_name(sanitize_sheet_name(label), used_names),
|
|
131
|
+
columns,
|
|
132
|
+
rows,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
return sheets;
|
|
136
|
+
}
|
|
137
|
+
/** Ensure a unique, ≤31-char sheet name by appending " (2)", " (3)", … on collision. */
|
|
138
|
+
function dedupe_sheet_name(base, used) {
|
|
139
|
+
let name = base;
|
|
140
|
+
let n = 2;
|
|
141
|
+
while (used.has(name)) {
|
|
142
|
+
const suffix = ` (${n})`;
|
|
143
|
+
name = base.slice(0, 31 - suffix.length) + suffix;
|
|
144
|
+
n++;
|
|
145
|
+
}
|
|
146
|
+
used.add(name);
|
|
147
|
+
return name;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=build_export_sheets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build_export_sheets.js","sourceRoot":"","sources":["../../../../src/components/thread_form/lib/build_export_sheets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* export_sheets_to_file — generate an .xlsx or .csv file from a SheetSpec[] and
|
|
3
|
+
* trigger a browser download. Uses SheetJS, loaded via dynamic import as an
|
|
4
|
+
* OPTIONAL peer dependency: if `xlsx` is not installed the call is a no-op
|
|
5
|
+
* (returns false) so consumers who don't export never pay the bundle cost.
|
|
6
|
+
*/
|
|
7
|
+
import { type SheetSpec, type SheetCell } from './build_export_sheets.js';
|
|
8
|
+
/** The plain value an aoa cell carries (LinkCell → its display text). */
|
|
9
|
+
export declare function cell_value(cell: SheetCell): string | number | null;
|
|
10
|
+
export type ExportFormat = 'xlsx' | 'csv';
|
|
11
|
+
export interface ExportOptions {
|
|
12
|
+
format: ExportFormat;
|
|
13
|
+
/** Base filename WITHOUT extension. */
|
|
14
|
+
filename: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Returns true when a file was generated and the download was triggered;
|
|
18
|
+
* false when there was nothing to export or the optional `xlsx` peer is absent.
|
|
19
|
+
*/
|
|
20
|
+
export declare function export_sheets_to_file(sheets: SheetSpec[], options: ExportOptions): Promise<boolean>;
|
|
21
|
+
//# sourceMappingURL=export_sheets_to_file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export_sheets_to_file.d.ts","sourceRoot":"","sources":["../../../../src/components/thread_form/lib/export_sheets_to_file.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE5F,yEAAyE;AACzE,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAElE;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,CAAC;AAE1C,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,SAAS,EAAE,EACnB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,OAAO,CAAC,CA4ClB"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* export_sheets_to_file — generate an .xlsx or .csv file from a SheetSpec[] and
|
|
3
|
+
* trigger a browser download. Uses SheetJS, loaded via dynamic import as an
|
|
4
|
+
* OPTIONAL peer dependency: if `xlsx` is not installed the call is a no-op
|
|
5
|
+
* (returns false) so consumers who don't export never pay the bundle cost.
|
|
6
|
+
*/
|
|
7
|
+
import { is_safe_http_url } from './build_export_sheets.js';
|
|
8
|
+
/** The plain value an aoa cell carries (LinkCell → its display text). */
|
|
9
|
+
export function cell_value(cell) {
|
|
10
|
+
return cell && typeof cell === 'object' ? cell.text : cell;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Returns true when a file was generated and the download was triggered;
|
|
14
|
+
* false when there was nothing to export or the optional `xlsx` peer is absent.
|
|
15
|
+
*/
|
|
16
|
+
export async function export_sheets_to_file(sheets, options) {
|
|
17
|
+
if (!sheets.length)
|
|
18
|
+
return false;
|
|
19
|
+
let XLSX;
|
|
20
|
+
try {
|
|
21
|
+
XLSX = await import('xlsx');
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// eslint-disable-next-line no-console
|
|
25
|
+
console.warn('[hazo_collab_forms] Export skipped: optional peer dependency "xlsx" is not installed.');
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
if (options.format === 'csv') {
|
|
29
|
+
const csv = build_csv(XLSX, sheets);
|
|
30
|
+
// Prepend a UTF-8 BOM so Excel opens it with the correct encoding.
|
|
31
|
+
download_blob(`${csv}`, `${options.filename}.csv`, 'text/csv;charset=utf-8');
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
const wb = XLSX.utils.book_new();
|
|
35
|
+
for (const sheet of sheets) {
|
|
36
|
+
const aoa = [sheet.columns.map((c) => c.label), ...sheet.rows.map((row) => row.map(cell_value))];
|
|
37
|
+
const ws = XLSX.utils.aoa_to_sheet(aoa);
|
|
38
|
+
// Apply hyperlinks for LinkCells (data rows start at r=1; r=0 is the header).
|
|
39
|
+
sheet.rows.forEach((row, ri) => {
|
|
40
|
+
row.forEach((cell, ci) => {
|
|
41
|
+
if (cell && typeof cell === 'object' && is_safe_http_url(cell.url)) {
|
|
42
|
+
const addr = XLSX.utils.encode_cell({ r: ri + 1, c: ci });
|
|
43
|
+
const target = ws[addr];
|
|
44
|
+
if (target)
|
|
45
|
+
target.l = { Target: cell.url };
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
XLSX.utils.book_append_sheet(wb, ws, sheet.sheet_name);
|
|
50
|
+
}
|
|
51
|
+
const buffer = XLSX.write(wb, { bookType: 'xlsx', type: 'array' });
|
|
52
|
+
download_blob(buffer, `${options.filename}.xlsx`, 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Multi-sheet CSV: one file, each category preceded by a `# <Category>` banner,
|
|
57
|
+
* sections separated by a blank line. Per-category column sets differ, so a
|
|
58
|
+
* single flat header would be wrong — the banner keeps each block self-describing.
|
|
59
|
+
*/
|
|
60
|
+
function build_csv(XLSX, sheets) {
|
|
61
|
+
const parts = [];
|
|
62
|
+
for (const sheet of sheets) {
|
|
63
|
+
const aoa = [sheet.columns.map((c) => c.label), ...sheet.rows.map((row) => row.map(cell_value))];
|
|
64
|
+
const ws = XLSX.utils.aoa_to_sheet(aoa);
|
|
65
|
+
parts.push(`# ${sheet.category}`);
|
|
66
|
+
parts.push(XLSX.utils.sheet_to_csv(ws));
|
|
67
|
+
}
|
|
68
|
+
return parts.join('\n');
|
|
69
|
+
}
|
|
70
|
+
function download_blob(data, filename, mime) {
|
|
71
|
+
const blob = new Blob([data], { type: mime });
|
|
72
|
+
const url = URL.createObjectURL(blob);
|
|
73
|
+
const a = document.createElement('a');
|
|
74
|
+
a.href = url;
|
|
75
|
+
a.download = filename;
|
|
76
|
+
document.body.appendChild(a);
|
|
77
|
+
a.click();
|
|
78
|
+
document.body.removeChild(a);
|
|
79
|
+
URL.revokeObjectURL(url);
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=export_sheets_to_file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export_sheets_to_file.js","sourceRoot":"","sources":["../../../../src/components/thread_form/lib/export_sheets_to_file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* export_sheets_to_google — create a populated Google Sheet from a SheetSpec[]
|
|
3
|
+
* entirely in the browser. Uses Google Identity Services (GIS) to pop up a
|
|
4
|
+
* consent dialog and obtain a short-lived `drive.file` access token, then
|
|
5
|
+
* creates a multi-tab spreadsheet via the Sheets REST API.
|
|
6
|
+
*
|
|
7
|
+
* No server route, no stored credentials. The consumer supplies a Google OAuth
|
|
8
|
+
* Web client ID (whose authorized JS origins include the consuming app's
|
|
9
|
+
* domain) and enables the Sheets API in their Google Cloud project.
|
|
10
|
+
*/
|
|
11
|
+
import { type SheetSpec, type SheetCell } from './build_export_sheets.js';
|
|
12
|
+
export interface GoogleSheetsExportOptions {
|
|
13
|
+
/** Google OAuth Web client ID (public; configured in Google Cloud console). */
|
|
14
|
+
client_id: string;
|
|
15
|
+
/** Spreadsheet title. */
|
|
16
|
+
filename: string;
|
|
17
|
+
}
|
|
18
|
+
interface TokenResponse {
|
|
19
|
+
access_token?: string;
|
|
20
|
+
/** Lifetime in seconds (GIS returns ~3600). Used to cache the token. */
|
|
21
|
+
expires_in?: number;
|
|
22
|
+
error?: string;
|
|
23
|
+
}
|
|
24
|
+
interface TokenClient {
|
|
25
|
+
callback: (resp: TokenResponse) => void;
|
|
26
|
+
requestAccessToken: (overrides?: {
|
|
27
|
+
prompt?: string;
|
|
28
|
+
}) => void;
|
|
29
|
+
}
|
|
30
|
+
interface GisOAuth2 {
|
|
31
|
+
initTokenClient: (config: {
|
|
32
|
+
client_id: string;
|
|
33
|
+
scope: string;
|
|
34
|
+
callback: (resp: TokenResponse) => void;
|
|
35
|
+
}) => TokenClient;
|
|
36
|
+
}
|
|
37
|
+
declare global {
|
|
38
|
+
interface Window {
|
|
39
|
+
google?: {
|
|
40
|
+
accounts?: {
|
|
41
|
+
oauth2?: GisOAuth2;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Returns a full Sheets API CellData object for a SheetCell.
|
|
48
|
+
* LinkCells use textFormatRuns (native Sheets hyperlink) rather than =HYPERLINK() formula,
|
|
49
|
+
* which is more reliable across locales and API creation vs edit contexts.
|
|
50
|
+
*/
|
|
51
|
+
export declare function to_cell_value(cell: SheetCell): Record<string, unknown>;
|
|
52
|
+
/**
|
|
53
|
+
* Create the spreadsheet and return its URL. Throws on auth cancellation or API
|
|
54
|
+
* failure (the caller surfaces a toast).
|
|
55
|
+
*/
|
|
56
|
+
export declare function export_sheets_to_google(sheets: SheetSpec[], options: GoogleSheetsExportOptions): Promise<{
|
|
57
|
+
url: string;
|
|
58
|
+
}>;
|
|
59
|
+
export {};
|
|
60
|
+
//# sourceMappingURL=export_sheets_to_google.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export_sheets_to_google.d.ts","sourceRoot":"","sources":["../../../../src/components/thread_form/lib/export_sheets_to_google.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAM5F,MAAM,WAAW,yBAAyB;IACxC,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAGD,UAAU,aAAa;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AACD,UAAU,WAAW;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACxC,kBAAkB,EAAE,CAAC,SAAS,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC/D;AACD,UAAU,SAAS;IACjB,eAAe,EAAE,CAAC,MAAM,EAAE;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;KACzC,KAAK,WAAW,CAAC;CACnB;AACD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,MAAM,CAAC,EAAE;YAAE,QAAQ,CAAC,EAAE;gBAAE,MAAM,CAAC,EAAE,SAAS,CAAA;aAAE,CAAA;SAAE,CAAC;KAChD;CACF;AA2GD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAetE;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,SAAS,EAAE,EACnB,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CA6B1B"}
|