hazo_collab_forms 6.2.0 → 6.5.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/CHANGE_LOG.md +108 -0
- package/README.md +73 -3
- package/dist/audit/lazy_audit_icon.d.ts +2 -1
- 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/autofill_dropzone/autofill_dropzone.d.ts +2 -1
- package/dist/components/autofill_dropzone/autofill_dropzone.d.ts.map +1 -1
- package/dist/components/autofill_dropzone/overwrite_confirm_dialog.d.ts +2 -1
- package/dist/components/autofill_dropzone/overwrite_confirm_dialog.d.ts.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/clarification/clarification_thread.d.ts +2 -1
- package/dist/components/clarification/clarification_thread.d.ts.map +1 -1
- package/dist/components/clarification/resolution_status_strip.d.ts +2 -1
- package/dist/components/clarification/resolution_status_strip.d.ts.map +1 -1
- package/dist/components/collab_form_file_upload.d.ts +1 -1
- package/dist/components/collab_form_file_upload.d.ts.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.d.ts +1 -1
- package/dist/components/data_ok_multi_state.d.ts.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/field_audit/context.d.ts +1 -1
- package/dist/components/field_audit/context.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_base.d.ts +15 -15
- package/dist/components/hazo_collab_form_base.d.ts.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/file_chip.d.ts +2 -1
- package/dist/components/hazo_collab_form_file_textbox/file_chip.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_file_textbox/file_group.d.ts +2 -1
- package/dist/components/hazo_collab_form_file_textbox/file_group.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_file_textbox/file_textbox_panel.d.ts +2 -1
- package/dist/components/hazo_collab_form_file_textbox/file_textbox_panel.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_file_textbox/file_upload_zone.d.ts +2 -1
- package/dist/components/hazo_collab_form_file_textbox/file_upload_zone.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_file_textbox/tag_pills.d.ts +2 -1
- package/dist/components/hazo_collab_form_file_textbox/tag_pills.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_file_textbox/validation_dialog.d.ts +2 -1
- package/dist/components/hazo_collab_form_file_textbox/validation_dialog.d.ts.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_split_amount.d.ts +2 -1
- package/dist/components/hazo_collab_form_split_amount.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_view/context.d.ts +1 -1
- package/dist/components/hazo_collab_form_view/context.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_view/views/approval_view.d.ts +2 -1
- package/dist/components/hazo_collab_form_view/views/approval_view.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_view/views/edit_view.d.ts +2 -1
- package/dist/components/hazo_collab_form_view/views/edit_view.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_view/views/print_view.d.ts +1 -1
- package/dist/components/hazo_collab_form_view/views/print_view.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_view/views/summary_data_table.d.ts +2 -1
- package/dist/components/hazo_collab_form_view/views/summary_data_table.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_view/views/summary_view.d.ts +2 -1
- package/dist/components/hazo_collab_form_view/views/summary_view.d.ts.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/field_renderers/boolean_field.d.ts +2 -1
- package/dist/components/hazo_data_form/field_renderers/boolean_field.d.ts.map +1 -1
- package/dist/components/hazo_data_form/field_renderers/computed_field.d.ts +2 -1
- package/dist/components/hazo_data_form/field_renderers/computed_field.d.ts.map +1 -1
- package/dist/components/hazo_data_form/field_renderers/currency_field.d.ts +2 -1
- package/dist/components/hazo_data_form/field_renderers/currency_field.d.ts.map +1 -1
- package/dist/components/hazo_data_form/field_renderers/date_field.d.ts +2 -1
- package/dist/components/hazo_data_form/field_renderers/date_field.d.ts.map +1 -1
- package/dist/components/hazo_data_form/field_renderers/email_field.d.ts +2 -1
- package/dist/components/hazo_data_form/field_renderers/email_field.d.ts.map +1 -1
- package/dist/components/hazo_data_form/field_renderers/index.d.ts +1 -1
- package/dist/components/hazo_data_form/field_renderers/index.d.ts.map +1 -1
- package/dist/components/hazo_data_form/field_renderers/masked_field.d.ts +2 -1
- package/dist/components/hazo_data_form/field_renderers/masked_field.d.ts.map +1 -1
- package/dist/components/hazo_data_form/field_renderers/number_field.d.ts +2 -1
- package/dist/components/hazo_data_form/field_renderers/number_field.d.ts.map +1 -1
- package/dist/components/hazo_data_form/field_renderers/option_field.d.ts +2 -1
- package/dist/components/hazo_data_form/field_renderers/option_field.d.ts.map +1 -1
- package/dist/components/hazo_data_form/field_renderers/percentage_field.d.ts +2 -1
- package/dist/components/hazo_data_form/field_renderers/percentage_field.d.ts.map +1 -1
- package/dist/components/hazo_data_form/field_renderers/static_text_field.d.ts +2 -1
- package/dist/components/hazo_data_form/field_renderers/static_text_field.d.ts.map +1 -1
- package/dist/components/hazo_data_form/field_renderers/summary_row_field.d.ts +2 -1
- package/dist/components/hazo_data_form/field_renderers/summary_row_field.d.ts.map +1 -1
- package/dist/components/hazo_data_form/field_renderers/table_field.d.ts +2 -1
- package/dist/components/hazo_data_form/field_renderers/table_field.d.ts.map +1 -1
- package/dist/components/hazo_data_form/field_renderers/table_reference_accordion.d.ts +2 -1
- package/dist/components/hazo_data_form/field_renderers/table_reference_accordion.d.ts.map +1 -1
- package/dist/components/hazo_data_form/field_renderers/tel_field.d.ts +2 -1
- package/dist/components/hazo_data_form/field_renderers/tel_field.d.ts.map +1 -1
- package/dist/components/hazo_data_form/field_renderers/text_field.d.ts +2 -1
- package/dist/components/hazo_data_form/field_renderers/text_field.d.ts.map +1 -1
- package/dist/components/hazo_data_form/field_renderers/textarea_field.d.ts +2 -1
- package/dist/components/hazo_data_form/field_renderers/textarea_field.d.ts.map +1 -1
- package/dist/components/hazo_data_form/file_manager_button.d.ts +2 -1
- package/dist/components/hazo_data_form/file_manager_button.d.ts.map +1 -1
- package/dist/components/hazo_data_form/ghost_form_panel.d.ts +1 -1
- package/dist/components/hazo_data_form/ghost_form_panel.d.ts.map +1 -1
- package/dist/components/hazo_data_form/group_renderer.d.ts +4 -1
- package/dist/components/hazo_data_form/group_renderer.d.ts.map +1 -1
- package/dist/components/hazo_data_form/group_renderer.js +6 -4
- package/dist/components/hazo_data_form/group_renderer.js.map +1 -1
- package/dist/components/hazo_data_form/hazo_data_form.d.ts +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 +5 -7
- package/dist/components/hazo_data_form/hazo_data_form.js.map +1 -1
- package/dist/components/hazo_data_form/pdf_panel.d.ts +2 -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_data_form/section_renderer.d.ts +4 -1
- package/dist/components/hazo_data_form/section_renderer.d.ts.map +1 -1
- package/dist/components/hazo_data_form/section_renderer.js +2 -2
- package/dist/components/hazo_data_form/section_renderer.js.map +1 -1
- package/dist/components/hazo_data_form/shared/data_form_badge.d.ts +2 -1
- package/dist/components/hazo_data_form/shared/data_form_badge.d.ts.map +1 -1
- package/dist/components/hazo_data_form/shared/data_form_field_layout.d.ts +1 -1
- package/dist/components/hazo_data_form/shared/data_form_field_layout.d.ts.map +1 -1
- package/dist/components/hazo_data_form/shared/data_form_file_column.d.ts +2 -1
- package/dist/components/hazo_data_form/shared/data_form_file_column.d.ts.map +1 -1
- package/dist/components/hazo_data_form/shared/data_form_help_tooltip.d.ts +2 -1
- package/dist/components/hazo_data_form/shared/data_form_help_tooltip.d.ts.map +1 -1
- package/dist/components/hazo_data_form/shared/data_form_label.d.ts +2 -1
- package/dist/components/hazo_data_form/shared/data_form_label.d.ts.map +1 -1
- package/dist/components/hazo_data_form/shared/data_form_reference_value.d.ts +2 -1
- package/dist/components/hazo_data_form/shared/data_form_reference_value.d.ts.map +1 -1
- package/dist/components/hazo_data_form/types.d.ts +10 -0
- package/dist/components/hazo_data_form/types.d.ts.map +1 -1
- package/dist/components/hazo_field_library/components/area_combobox.d.ts +5 -1
- package/dist/components/hazo_field_library/components/area_combobox.d.ts.map +1 -1
- package/dist/components/hazo_field_library/components/element_editor.d.ts +5 -1
- package/dist/components/hazo_field_library/components/element_editor.d.ts.map +1 -1
- package/dist/components/hazo_field_library/components/element_list.d.ts +5 -1
- package/dist/components/hazo_field_library/components/element_list.d.ts.map +1 -1
- package/dist/components/hazo_field_library/components/import_export_dialog.d.ts +6 -1
- package/dist/components/hazo_field_library/components/import_export_dialog.d.ts.map +1 -1
- package/dist/components/hazo_field_library/components/raw_json_viewer.d.ts +5 -1
- package/dist/components/hazo_field_library/components/raw_json_viewer.d.ts.map +1 -1
- package/dist/components/hazo_field_library/components/reference_picker.d.ts +6 -1
- package/dist/components/hazo_field_library/components/reference_picker.d.ts.map +1 -1
- package/dist/components/hazo_field_library/components/template_loader_dialog.d.ts +5 -1
- package/dist/components/hazo_field_library/components/template_loader_dialog.d.ts.map +1 -1
- package/dist/components/hazo_field_library/components/toolbar.d.ts +5 -1
- package/dist/components/hazo_field_library/components/toolbar.d.ts.map +1 -1
- package/dist/components/hazo_field_library/context.d.ts +1 -1
- package/dist/components/hazo_field_library/context.d.ts.map +1 -1
- package/dist/components/hazo_field_library/field_library.d.ts +6 -1
- package/dist/components/hazo_field_library/field_library.d.ts.map +1 -1
- package/dist/components/hazo_field_library/field_library_with_loader.d.ts +6 -1
- package/dist/components/hazo_field_library/field_library_with_loader.d.ts.map +1 -1
- package/dist/components/hazo_field_selector_dialog/components/field_autocomplete.d.ts +2 -1
- package/dist/components/hazo_field_selector_dialog/components/field_autocomplete.d.ts.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/section_sidebar.d.ts +2 -1
- package/dist/components/hazo_field_selector_dialog/components/section_sidebar.d.ts.map +1 -1
- package/dist/components/hazo_field_selector_dialog/components/selected_fields_panel.d.ts +2 -1
- package/dist/components/hazo_field_selector_dialog/components/selected_fields_panel.d.ts.map +1 -1
- package/dist/components/hazo_field_selector_dialog/components/sortable_field_item.d.ts +2 -1
- package/dist/components/hazo_field_selector_dialog/components/sortable_field_item.d.ts.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/hazo_field_selector_dialog/components/sortable_field_list.d.ts +2 -1
- package/dist/components/hazo_field_selector_dialog/components/sortable_field_list.d.ts.map +1 -1
- package/dist/components/hazo_field_selector_dialog/hazo_field_selector_dialog.d.ts +2 -1
- package/dist/components/hazo_field_selector_dialog/hazo_field_selector_dialog.d.ts.map +1 -1
- package/dist/components/hazo_rfi_box/hazo_rfi_box.d.ts +2 -1
- package/dist/components/hazo_rfi_box/hazo_rfi_box.d.ts.map +1 -1
- package/dist/components/hazo_rfi_box/rfi_option_tag_selector.d.ts +2 -1
- package/dist/components/hazo_rfi_box/rfi_option_tag_selector.d.ts.map +1 -1
- package/dist/components/hazo_rfi_box/rfi_review_actions.d.ts +2 -1
- package/dist/components/hazo_rfi_box/rfi_review_actions.d.ts.map +1 -1
- package/dist/components/hazo_rfi_box/rfi_send_back_form.d.ts +2 -1
- package/dist/components/hazo_rfi_box/rfi_send_back_form.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/field_editor.d.ts +6 -1
- package/dist/components/hazo_template_generator/components/field_editor.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/preview_dialog.d.ts +7 -1
- package/dist/components/hazo_template_generator/components/preview_dialog.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/preview_panel.d.ts +7 -1
- package/dist/components/hazo_template_generator/components/preview_panel.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/section_tree.d.ts +8 -1
- package/dist/components/hazo_template_generator/components/section_tree.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/tabs/basic_tab.d.ts +5 -1
- package/dist/components/hazo_template_generator/components/tabs/basic_tab.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/tabs/conditional_tab.d.ts +5 -1
- package/dist/components/hazo_template_generator/components/tabs/conditional_tab.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/tabs/controls_tab.d.ts +11 -1
- package/dist/components/hazo_template_generator/components/tabs/controls_tab.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/tabs/icons_behaviour_tab.d.ts +7 -1
- package/dist/components/hazo_template_generator/components/tabs/icons_behaviour_tab.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/tabs/section_tab.d.ts +5 -1
- package/dist/components/hazo_template_generator/components/tabs/section_tab.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/tabs/type_tab.d.ts +5 -1
- package/dist/components/hazo_template_generator/components/tabs/type_tab.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/tabs/validation_tab.d.ts +5 -1
- package/dist/components/hazo_template_generator/components/tabs/validation_tab.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/toolbar.d.ts +6 -1
- package/dist/components/hazo_template_generator/components/toolbar.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/type_editors/data_table_editor.d.ts +5 -1
- package/dist/components/hazo_template_generator/components/type_editors/data_table_editor.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/type_editors/input_options_editor.d.ts +5 -1
- package/dist/components/hazo_template_generator/components/type_editors/input_options_editor.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/ui/resizable.d.ts +2 -2
- package/dist/components/hazo_template_generator/components/ui/resizable.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/context.d.ts +1 -1
- package/dist/components/hazo_template_generator/context.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/template_generator.d.ts +7 -1
- package/dist/components/hazo_template_generator/template_generator.d.ts.map +1 -1
- package/dist/components/hazo_validation_rule_editor/components/clarification_settings.d.ts +6 -1
- package/dist/components/hazo_validation_rule_editor/components/clarification_settings.d.ts.map +1 -1
- package/dist/components/hazo_validation_rule_editor/components/prompt_editor.d.ts +10 -1
- package/dist/components/hazo_validation_rule_editor/components/prompt_editor.d.ts.map +1 -1
- package/dist/components/hazo_validation_rule_editor/components/rule_editor.d.ts +6 -1
- package/dist/components/hazo_validation_rule_editor/components/rule_editor.d.ts.map +1 -1
- package/dist/components/hazo_validation_rule_editor/components/rule_list.d.ts +5 -1
- package/dist/components/hazo_validation_rule_editor/components/rule_list.d.ts.map +1 -1
- package/dist/components/hazo_validation_rule_editor/components/variable_chain_input.d.ts +2 -1
- package/dist/components/hazo_validation_rule_editor/components/variable_chain_input.d.ts.map +1 -1
- package/dist/components/hazo_validation_rule_editor/context.d.ts +1 -1
- package/dist/components/hazo_validation_rule_editor/context.d.ts.map +1 -1
- package/dist/components/hazo_validation_rule_editor/validation_rule_editor.d.ts +12 -1
- package/dist/components/hazo_validation_rule_editor/validation_rule_editor.d.ts.map +1 -1
- package/dist/components/multi_state_radio.d.ts +2 -1
- package/dist/components/multi_state_radio.d.ts.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/base_field_layout.d.ts +1 -1
- package/dist/components/shared/base_field_layout.d.ts.map +1 -1
- package/dist/components/shared/description_with_ihelp.d.ts +2 -1
- package/dist/components/shared/description_with_ihelp.d.ts.map +1 -1
- package/dist/components/shared/dialog/dialog.d.ts +2 -2
- package/dist/components/shared/document_type_editor.d.ts +2 -1
- package/dist/components/shared/document_type_editor.d.ts.map +1 -1
- package/dist/components/shared/editor_theme/components.d.ts +7 -7
- package/dist/components/shared/editor_theme/components.d.ts.map +1 -1
- package/dist/components/shared/editor_theme/context.d.ts +1 -1
- package/dist/components/shared/editor_theme/context.d.ts.map +1 -1
- package/dist/components/shared/field_accordion.d.ts +1 -1
- package/dist/components/shared/field_accordion.d.ts.map +1 -1
- package/dist/components/shared/field_action_array_slot.d.ts +2 -1
- package/dist/components/shared/field_action_array_slot.d.ts.map +1 -1
- package/dist/components/shared/field_tooltip/field_tooltip.d.ts +2 -1
- package/dist/components/shared/field_tooltip/field_tooltip.d.ts.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/file_bar/file_bar.d.ts +2 -1
- package/dist/components/shared/file_bar/file_bar.d.ts.map +1 -1
- package/dist/components/shared/file_bar/file_bar_tag.d.ts +2 -1
- package/dist/components/shared/file_bar/file_bar_tag.d.ts.map +1 -1
- package/dist/components/shared/file_bar/file_bar_validation.d.ts +2 -1
- package/dist/components/shared/file_bar/file_bar_validation.d.ts.map +1 -1
- package/dist/components/shared/file_bar/file_bar_validation_dialog.d.ts +2 -1
- package/dist/components/shared/file_bar/file_bar_validation_dialog.d.ts.map +1 -1
- package/dist/components/shared/file_bar/file_validation_issues_dialog.d.ts +2 -1
- package/dist/components/shared/file_bar/file_validation_issues_dialog.d.ts.map +1 -1
- package/dist/components/shared/file_status_icon.d.ts +1 -1
- package/dist/components/shared/file_status_icon.d.ts.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/shared/rule_result_card.d.ts +2 -1
- package/dist/components/shared/rule_result_card.d.ts.map +1 -1
- package/dist/components/thread_form/components/add_question_dialog.d.ts +1 -1
- package/dist/components/thread_form/components/add_question_dialog.d.ts.map +1 -1
- package/dist/components/thread_form/components/agent_compose_dialog.d.ts +1 -1
- package/dist/components/thread_form/components/agent_compose_dialog.d.ts.map +1 -1
- package/dist/components/thread_form/components/clarification.d.ts +1 -1
- package/dist/components/thread_form/components/clarification.d.ts.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/components/coverage_card.d.ts +1 -1
- package/dist/components/thread_form/components/coverage_card.d.ts.map +1 -1
- package/dist/components/thread_form/components/file_bar.d.ts +1 -1
- package/dist/components/thread_form/components/file_bar.d.ts.map +1 -1
- package/dist/components/thread_form/components/file_info_dialog.d.ts +1 -1
- package/dist/components/thread_form/components/file_info_dialog.d.ts.map +1 -1
- package/dist/components/thread_form/components/issue_group_tree.d.ts +1 -1
- package/dist/components/thread_form/components/issue_group_tree.d.ts.map +1 -1
- package/dist/components/thread_form/components/pdf_side_panel.d.ts +1 -1
- package/dist/components/thread_form/components/pdf_side_panel.d.ts.map +1 -1
- package/dist/components/thread_form/components/rule_decision_row.d.ts +1 -1
- package/dist/components/thread_form/components/rule_decision_row.d.ts.map +1 -1
- package/dist/components/thread_form/components/send_back_message.d.ts +1 -1
- package/dist/components/thread_form/components/send_back_message.d.ts.map +1 -1
- package/dist/components/thread_form/components/shared.d.ts +6 -6
- package/dist/components/thread_form/components/shared.d.ts.map +1 -1
- package/dist/components/thread_form/components/task_card.d.ts +1 -1
- package/dist/components/thread_form/components/task_card.d.ts.map +1 -1
- package/dist/components/thread_form/components/text_doc_check.d.ts +1 -1
- package/dist/components/thread_form/components/text_doc_check.d.ts.map +1 -1
- package/dist/components/thread_form/components/text_extraction.d.ts +1 -1
- package/dist/components/thread_form/components/text_extraction.d.ts.map +1 -1
- package/dist/components/thread_form/components/thread_composer.d.ts +1 -1
- package/dist/components/thread_form/components/thread_composer.d.ts.map +1 -1
- package/dist/components/thread_form/components/thread_timeline.d.ts +1 -1
- package/dist/components/thread_form/components/thread_timeline.d.ts.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/dist/logger/context.d.ts +2 -2
- package/dist/logger/context.d.ts.map +1 -1
- package/package.json +24 -15
|
@@ -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"}
|
|
@@ -0,0 +1,172 @@
|
|
|
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 { is_safe_http_url } from './build_export_sheets.js';
|
|
12
|
+
const GIS_SRC = 'https://accounts.google.com/gsi/client';
|
|
13
|
+
const DRIVE_FILE_SCOPE = 'https://www.googleapis.com/auth/drive.file';
|
|
14
|
+
const SHEETS_CREATE_URL = 'https://sheets.googleapis.com/v4/spreadsheets';
|
|
15
|
+
let gis_load_promise = null;
|
|
16
|
+
// In-memory token cache + reused token client, keyed by client_id. The browser
|
|
17
|
+
// implicit-token flow can't issue refresh tokens, so the token still expires
|
|
18
|
+
// (~1h) and is never persisted across reloads — but within a session this means
|
|
19
|
+
// repeated exports reuse one grant instead of popping consent every time.
|
|
20
|
+
const TOKEN_EXPIRY_BUFFER_MS = 60000; // refresh a minute before actual expiry
|
|
21
|
+
let token_client = null;
|
|
22
|
+
let token_client_id = null;
|
|
23
|
+
let cached_token = null;
|
|
24
|
+
/** Inject the GIS client script once and resolve when it's ready. */
|
|
25
|
+
function load_gis() {
|
|
26
|
+
if (typeof window === 'undefined') {
|
|
27
|
+
return Promise.reject(new Error('Google Sheets export requires a browser environment.'));
|
|
28
|
+
}
|
|
29
|
+
if (window.google?.accounts?.oauth2)
|
|
30
|
+
return Promise.resolve();
|
|
31
|
+
if (gis_load_promise)
|
|
32
|
+
return gis_load_promise;
|
|
33
|
+
gis_load_promise = new Promise((resolve, reject) => {
|
|
34
|
+
const existing = document.querySelector(`script[src="${GIS_SRC}"]`);
|
|
35
|
+
if (existing) {
|
|
36
|
+
existing.addEventListener('load', () => resolve());
|
|
37
|
+
existing.addEventListener('error', () => reject(new Error('Failed to load Google Identity Services.')));
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const script = document.createElement('script');
|
|
41
|
+
script.src = GIS_SRC;
|
|
42
|
+
script.async = true;
|
|
43
|
+
script.defer = true;
|
|
44
|
+
script.onload = () => resolve();
|
|
45
|
+
script.onerror = () => {
|
|
46
|
+
gis_load_promise = null;
|
|
47
|
+
reject(new Error('Failed to load Google Identity Services.'));
|
|
48
|
+
};
|
|
49
|
+
document.head.appendChild(script);
|
|
50
|
+
});
|
|
51
|
+
return gis_load_promise;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Resolve a `drive.file` access token, reusing a cached one while it's valid so
|
|
55
|
+
* repeated exports don't re-prompt. Only acquires a fresh token (with `prompt:
|
|
56
|
+
* ''`, which reuses a prior grant silently when possible) once the cache lapses.
|
|
57
|
+
*/
|
|
58
|
+
async function request_access_token(client_id) {
|
|
59
|
+
// Reuse a still-valid token — no popup, no network round-trip to Google.
|
|
60
|
+
if (cached_token && cached_token.expires_at - TOKEN_EXPIRY_BUFFER_MS > Date.now()) {
|
|
61
|
+
return cached_token.value;
|
|
62
|
+
}
|
|
63
|
+
await load_gis();
|
|
64
|
+
const oauth2 = window.google?.accounts?.oauth2;
|
|
65
|
+
if (!oauth2)
|
|
66
|
+
throw new Error('Google Identity Services unavailable.');
|
|
67
|
+
// Reuse one token client per client_id; its callback is rebound per request.
|
|
68
|
+
if (!token_client || token_client_id !== client_id) {
|
|
69
|
+
token_client = oauth2.initTokenClient({
|
|
70
|
+
client_id,
|
|
71
|
+
scope: DRIVE_FILE_SCOPE,
|
|
72
|
+
callback: () => { },
|
|
73
|
+
});
|
|
74
|
+
token_client_id = client_id;
|
|
75
|
+
}
|
|
76
|
+
const client = token_client;
|
|
77
|
+
return new Promise((resolve, reject) => {
|
|
78
|
+
client.callback = (resp) => {
|
|
79
|
+
if (resp.error || !resp.access_token) {
|
|
80
|
+
reject(new Error(resp.error || 'Google authorization was cancelled.'));
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
cached_token = {
|
|
84
|
+
value: resp.access_token,
|
|
85
|
+
expires_at: Date.now() + (resp.expires_in ?? 3600) * 1000,
|
|
86
|
+
};
|
|
87
|
+
resolve(resp.access_token);
|
|
88
|
+
};
|
|
89
|
+
// prompt: '' → don't force the consent screen when a grant already exists.
|
|
90
|
+
client.requestAccessToken({ prompt: '' });
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/** Map a SheetSpec[] to a Sheets API `Spreadsheet` resource (header row + data). */
|
|
94
|
+
function build_spreadsheet_resource(sheets, title) {
|
|
95
|
+
return {
|
|
96
|
+
properties: { title },
|
|
97
|
+
sheets: sheets.map((sheet) => ({
|
|
98
|
+
properties: { title: sheet.sheet_name },
|
|
99
|
+
data: [
|
|
100
|
+
{
|
|
101
|
+
startRow: 0,
|
|
102
|
+
startColumn: 0,
|
|
103
|
+
rowData: [
|
|
104
|
+
{ values: sheet.columns.map((c) => ({ userEnteredValue: { stringValue: c.label } })) },
|
|
105
|
+
...sheet.rows.map((row) => ({
|
|
106
|
+
values: row.map((cell) => to_cell_value(cell)),
|
|
107
|
+
})),
|
|
108
|
+
],
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
})),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Returns a full Sheets API CellData object for a SheetCell.
|
|
116
|
+
* LinkCells use textFormatRuns (native Sheets hyperlink) rather than =HYPERLINK() formula,
|
|
117
|
+
* which is more reliable across locales and API creation vs edit contexts.
|
|
118
|
+
*/
|
|
119
|
+
export function to_cell_value(cell) {
|
|
120
|
+
if (cell === null)
|
|
121
|
+
return { userEnteredValue: {} };
|
|
122
|
+
if (typeof cell === 'number')
|
|
123
|
+
return { userEnteredValue: { numberValue: cell } };
|
|
124
|
+
if (typeof cell === 'object') {
|
|
125
|
+
if (is_safe_http_url(cell.url)) {
|
|
126
|
+
return {
|
|
127
|
+
userEnteredValue: { stringValue: cell.text },
|
|
128
|
+
textFormatRuns: [
|
|
129
|
+
{ startIndex: 0, format: { link: { uri: cell.url } } },
|
|
130
|
+
],
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
return { userEnteredValue: { stringValue: cell.text } };
|
|
134
|
+
}
|
|
135
|
+
return { userEnteredValue: { stringValue: cell } };
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Create the spreadsheet and return its URL. Throws on auth cancellation or API
|
|
139
|
+
* failure (the caller surfaces a toast).
|
|
140
|
+
*/
|
|
141
|
+
export async function export_sheets_to_google(sheets, options) {
|
|
142
|
+
if (!sheets.length)
|
|
143
|
+
throw new Error('Nothing to export.');
|
|
144
|
+
if (!options.client_id)
|
|
145
|
+
throw new Error('Missing Google client ID.');
|
|
146
|
+
const access_token = await request_access_token(options.client_id);
|
|
147
|
+
const res = await fetch(SHEETS_CREATE_URL, {
|
|
148
|
+
method: 'POST',
|
|
149
|
+
headers: {
|
|
150
|
+
Authorization: `Bearer ${access_token}`,
|
|
151
|
+
'Content-Type': 'application/json',
|
|
152
|
+
},
|
|
153
|
+
body: JSON.stringify(build_spreadsheet_resource(sheets, options.filename)),
|
|
154
|
+
});
|
|
155
|
+
if (!res.ok) {
|
|
156
|
+
let message = `Google Sheets API error (${res.status}).`;
|
|
157
|
+
try {
|
|
158
|
+
const body = (await res.json());
|
|
159
|
+
if (body.error?.message)
|
|
160
|
+
message = body.error.message;
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
/* keep default message */
|
|
164
|
+
}
|
|
165
|
+
throw new Error(message);
|
|
166
|
+
}
|
|
167
|
+
const data = (await res.json());
|
|
168
|
+
if (!data.spreadsheetUrl)
|
|
169
|
+
throw new Error('Google Sheets API returned no spreadsheet URL.');
|
|
170
|
+
return { url: data.spreadsheetUrl };
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=export_sheets_to_google.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export_sheets_to_google.js","sourceRoot":"","sources":["../../../../src/components/thread_form/lib/export_sheets_to_google.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread_form.d.ts","sourceRoot":"","sources":["../../../src/components/thread_form/thread_form.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAuI,aAAa,EAAE,MAAM,YAAY,CAAC;AA2BtM,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"thread_form.d.ts","sourceRoot":"","sources":["../../../src/components/thread_form/thread_form.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAuI,aAAa,EAAE,MAAM,YAAY,CAAC;AA2BtM,eAAO,MAAM,UAAU,2GAgvDrB,CAAC"}
|
|
@@ -26,7 +26,7 @@ function normalize_file_mime(file_type, file_name) {
|
|
|
26
26
|
return file_type;
|
|
27
27
|
return infer_mime_type(file_name);
|
|
28
28
|
}
|
|
29
|
-
export const ThreadForm = forwardRef(function ThreadForm({ data, role, current_user, on_form_change, on_task_update, on_message_add, on_message_edit, on_message_delete, on_selection_change, on_send_form, on_close_form, on_export_data, on_request_analysis, on_request_reanalysis, file_manager, pdf_viewer, show_json_viewer, classification_api_url, validation_api_url, validation_rules_api_url, content_gate_api_url, resolution_api_url, response_extraction_api_url, available_document_types, available_tags, on_update_content_item, on_log, view_button_variant, show_info_icon, show_extracted_fields, render_collected_item_details, collected_data_locale, collected_data_currency_code, collected_data_truncate_chars, on_request_reextraction,
|
|
29
|
+
export const ThreadForm = forwardRef(function ThreadForm({ data, role, current_user, on_form_change, on_task_update, on_message_add, on_message_edit, on_message_delete, on_selection_change, on_send_form, on_close_form, on_export_data, on_request_analysis, on_request_reanalysis, file_manager, pdf_viewer, show_json_viewer, classification_api_url, validation_api_url, validation_rules_api_url, content_gate_api_url, resolution_api_url, response_extraction_api_url, available_document_types, available_tags, on_update_content_item, on_log, view_button_variant, show_info_icon, show_extracted_fields, render_collected_item_details, collected_data_locale, collected_data_currency_code, collected_data_truncate_chars, on_request_reextraction, enable_export, export_filename, google_client_id, export_file_links, get_external_links,
|
|
30
30
|
// ── Key-Info drawer (H.7) ──
|
|
31
31
|
key_info_sections, key_info_form_data, on_key_info_form_data_change, field_metadata, on_metadata_change, show_confirm_action, key_info_title, key_info_default_expanded, field_action_components, enable_field_audit, audit_debounce_ms, key_info_field_columns, key_info_highlight_empty_required, task_number_offset, }, forwarded_ref) {
|
|
32
32
|
const [expanded_tasks, set_expanded_tasks] = useState(() => {
|
|
@@ -1405,6 +1405,6 @@ key_info_sections, key_info_form_data, on_key_info_form_data_change, field_metad
|
|
|
1405
1405
|
else
|
|
1406
1406
|
next.add(task.task_id);
|
|
1407
1407
|
return next;
|
|
1408
|
-
}), on_toggle_complete: handle_toggle_complete, on_delete_task: handle_delete_task, on_approve_task: handle_approve_task, on_reopen_task: handle_reopen_task, on_rename_task: handle_rename_task, on_send: handle_send, on_send_comment: handle_send_comment, on_add_question: handle_add_question, on_view_file: handle_view_file, on_remove_file: handle_remove_file, on_accept: handle_accept, on_edit_message: handle_edit_message, on_delete_message: handle_delete_message, upload_file: handle_upload_file, on_dismiss: handle_dismiss, on_send_to_client: handle_send_to_client, on_send_back_issues: handle_send_back_issues, on_submit_decisions: handle_submit_decisions, on_update_content_item: handle_update_content_item, file_statuses: pipeline.file_statuses, classification_results: pipeline.classification_results, validation_results: pipeline.validation_results, file_manager: file_manager?.callbacks, on_replacement_files: handle_replacement_files, view_button_variant: view_button_variant, show_info_icon: show_info_icon, sent_back_resolved_ids: sent_back_resolved_ids, resolving: resolution_running.has(task.task_id), available_document_types: available_document_types, on_change_document_type: handle_change_document_type, keep_selections: keep_selections_effective, on_keep_change: handle_selection_change, on_reply_to_issue: handle_reply_to_issue }, task.task_id))), active_tab === 'review' && review_tasks.length > 0 && (_jsxs("div", { className: "flex items-center gap-3 pt-4", children: [_jsx("button", { className: "text-xs text-[#2563EB] hover:underline cursor-pointer", children: "Accept all passed" }), _jsx("button", { className: "text-xs text-[#2563EB] hover:underline cursor-pointer", children: "Send all issues" })] }))] })), active_tab === 'collected' && (_jsx(CollectedDataView, { data: data, classification_results: pipeline.classification_results, on_selection_change: handle_selection_change, on_export: on_export_data, on_view_file: handle_view_file, show_extracted_fields: show_extracted_fields, render_item_details: render_collected_item_details, document_types: available_document_types, locale: collected_data_locale, currency_code: collected_data_currency_code, truncate_chars: collected_data_truncate_chars, role: role, on_request_reextraction: on_request_reextraction }))] }), viewed_item && (_jsx(ThreadPdfSidePanel, { item: viewed_item, file_url: viewed_file_url, PdfViewer: pdf_viewer || null, on_close: handle_close_pdf }))] }), show_json && (_jsxs("div", { className: "fixed right-0 top-0 bottom-0 w-[500px] bg-white border-l shadow-lg z-50 flex flex-col", children: [_jsxs("div", { className: "flex items-center justify-between px-4 py-3 border-b", children: [_jsx("span", { className: "text-sm font-medium", children: "JSON" }), _jsx("button", { onClick: () => set_show_json(false), className: "text-gray-400 hover:text-gray-600 cursor-pointer", children: "\u2715" })] }), _jsx("pre", { className: "flex-1 overflow-auto p-4 text-xs font-mono bg-gray-50", children: JSON.stringify(data, null, 2) })] })), _jsx(AddQuestionDialog, { open: show_add_question, on_close: () => set_show_add_question(false), on_add: handle_add_task, agent_id: current_user.id }), _jsx(AgentComposeDialog, { open: !!compose_context, context: compose_context || undefined, on_close: () => set_compose_context(null), on_send: handle_compose_send, agent_name: current_user.name })] }));
|
|
1408
|
+
}), on_toggle_complete: handle_toggle_complete, on_delete_task: handle_delete_task, on_approve_task: handle_approve_task, on_reopen_task: handle_reopen_task, on_rename_task: handle_rename_task, on_send: handle_send, on_send_comment: handle_send_comment, on_add_question: handle_add_question, on_view_file: handle_view_file, on_remove_file: handle_remove_file, on_accept: handle_accept, on_edit_message: handle_edit_message, on_delete_message: handle_delete_message, upload_file: handle_upload_file, on_dismiss: handle_dismiss, on_send_to_client: handle_send_to_client, on_send_back_issues: handle_send_back_issues, on_submit_decisions: handle_submit_decisions, on_update_content_item: handle_update_content_item, file_statuses: pipeline.file_statuses, classification_results: pipeline.classification_results, validation_results: pipeline.validation_results, file_manager: file_manager?.callbacks, on_replacement_files: handle_replacement_files, view_button_variant: view_button_variant, show_info_icon: show_info_icon, sent_back_resolved_ids: sent_back_resolved_ids, resolving: resolution_running.has(task.task_id), available_document_types: available_document_types, on_change_document_type: handle_change_document_type, keep_selections: keep_selections_effective, on_keep_change: handle_selection_change, on_reply_to_issue: handle_reply_to_issue }, task.task_id))), active_tab === 'review' && review_tasks.length > 0 && (_jsxs("div", { className: "flex items-center gap-3 pt-4", children: [_jsx("button", { className: "text-xs text-[#2563EB] hover:underline cursor-pointer", children: "Accept all passed" }), _jsx("button", { className: "text-xs text-[#2563EB] hover:underline cursor-pointer", children: "Send all issues" })] }))] })), active_tab === 'collected' && (_jsx(CollectedDataView, { data: data, classification_results: pipeline.classification_results, on_selection_change: handle_selection_change, on_export: on_export_data, on_view_file: handle_view_file, show_extracted_fields: show_extracted_fields, render_item_details: render_collected_item_details, document_types: available_document_types, locale: collected_data_locale, currency_code: collected_data_currency_code, truncate_chars: collected_data_truncate_chars, role: role, on_request_reextraction: on_request_reextraction, enable_export: enable_export, export_filename: export_filename, google_client_id: google_client_id, export_file_links: export_file_links, get_external_links: get_external_links }))] }), viewed_item && (_jsx(ThreadPdfSidePanel, { item: viewed_item, file_url: viewed_file_url, PdfViewer: pdf_viewer || null, on_close: handle_close_pdf }))] }), show_json && (_jsxs("div", { className: "fixed right-0 top-0 bottom-0 w-[500px] bg-white border-l shadow-lg z-50 flex flex-col", children: [_jsxs("div", { className: "flex items-center justify-between px-4 py-3 border-b", children: [_jsx("span", { className: "text-sm font-medium", children: "JSON" }), _jsx("button", { onClick: () => set_show_json(false), className: "text-gray-400 hover:text-gray-600 cursor-pointer", children: "\u2715" })] }), _jsx("pre", { className: "flex-1 overflow-auto p-4 text-xs font-mono bg-gray-50", children: JSON.stringify(data, null, 2) })] })), _jsx(AddQuestionDialog, { open: show_add_question, on_close: () => set_show_add_question(false), on_add: handle_add_task, agent_id: current_user.id }), _jsx(AgentComposeDialog, { open: !!compose_context, context: compose_context || undefined, on_close: () => set_compose_context(null), on_send: handle_compose_send, agent_name: current_user.name })] }));
|
|
1409
1409
|
});
|
|
1410
1410
|
//# sourceMappingURL=thread_form.js.map
|