hazo_collab_forms 5.7.0 → 6.0.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 +115 -0
- package/README.md +203 -111
- package/dist/audit/built_in_actions.d.ts +6 -0
- package/dist/audit/built_in_actions.d.ts.map +1 -0
- package/dist/audit/built_in_actions.js +23 -0
- package/dist/audit/built_in_actions.js.map +1 -0
- package/dist/audit/intent_emitter.d.ts +4 -0
- package/dist/audit/intent_emitter.d.ts.map +1 -0
- package/dist/audit/intent_emitter.js +25 -0
- package/dist/audit/intent_emitter.js.map +1 -0
- package/dist/audit/lazy_audit_icon.d.ts +8 -0
- package/dist/audit/lazy_audit_icon.d.ts.map +1 -0
- package/dist/audit/lazy_audit_icon.js +20 -0
- package/dist/audit/lazy_audit_icon.js.map +1 -0
- package/dist/components/_internal_form_set.d.ts +6 -0
- package/dist/components/_internal_form_set.d.ts.map +1 -1
- package/dist/components/_internal_form_set.js +48 -51
- package/dist/components/_internal_form_set.js.map +1 -1
- package/dist/components/clarification/clarification_item_body.d.ts +1 -1
- package/dist/components/clarification/clarification_item_body.d.ts.map +1 -1
- package/dist/components/clarification/resolution_status_strip.d.ts +1 -1
- package/dist/components/clarification/resolution_status_strip.d.ts.map +1 -1
- package/dist/components/field_audit/auditor.d.ts +30 -0
- package/dist/components/field_audit/auditor.d.ts.map +1 -0
- package/dist/components/field_audit/auditor.js +91 -0
- package/dist/components/field_audit/auditor.js.map +1 -0
- package/dist/components/field_audit/context.d.ts +29 -0
- package/dist/components/field_audit/context.d.ts.map +1 -0
- package/dist/components/field_audit/context.js +123 -0
- package/dist/components/field_audit/context.js.map +1 -0
- package/dist/components/field_audit/field_audit_icon.d.ts +12 -0
- package/dist/components/field_audit/field_audit_icon.d.ts.map +1 -0
- package/dist/components/field_audit/field_audit_icon.js +23 -0
- package/dist/components/field_audit/field_audit_icon.js.map +1 -0
- package/dist/components/field_audit/field_audit_panel.d.ts +9 -0
- package/dist/components/field_audit/field_audit_panel.d.ts.map +1 -0
- package/dist/components/field_audit/field_audit_panel.js +54 -0
- package/dist/components/field_audit/field_audit_panel.js.map +1 -0
- package/dist/components/field_audit/index.d.ts +33 -0
- package/dist/components/field_audit/index.d.ts.map +1 -0
- package/dist/components/field_audit/index.js +29 -0
- package/dist/components/field_audit/index.js.map +1 -0
- package/dist/components/field_audit/types.d.ts +75 -0
- package/dist/components/field_audit/types.d.ts.map +1 -0
- package/dist/components/field_audit/types.js +10 -0
- package/dist/components/field_audit/types.js.map +1 -0
- package/dist/components/field_audit/with_field_audit.d.ts +32 -0
- package/dist/components/field_audit/with_field_audit.d.ts.map +1 -0
- package/dist/components/field_audit/with_field_audit.js +42 -0
- package/dist/components/field_audit/with_field_audit.js.map +1 -0
- package/dist/components/hazo_collab_form_checkbox.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_checkbox.js +3 -1
- package/dist/components/hazo_collab_form_checkbox.js.map +1 -1
- package/dist/components/hazo_collab_form_doc.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_doc.js +4 -1
- package/dist/components/hazo_collab_form_doc.js.map +1 -1
- package/dist/components/hazo_collab_form_radio.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_radio.js +4 -2
- package/dist/components/hazo_collab_form_radio.js.map +1 -1
- package/dist/components/hazo_collab_form_view/context.d.ts +7 -0
- package/dist/components/hazo_collab_form_view/context.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_view/context.js +46 -0
- package/dist/components/hazo_collab_form_view/context.js.map +1 -1
- package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.d.ts +8 -1
- package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.js +4 -2
- package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.js.map +1 -1
- package/dist/components/hazo_collab_form_view/index.d.ts +1 -1
- package/dist/components/hazo_collab_form_view/index.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_view/index.js +59 -3
- package/dist/components/hazo_collab_form_view/index.js.map +1 -1
- package/dist/components/hazo_collab_form_view/types.d.ts +134 -0
- package/dist/components/hazo_collab_form_view/types.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_view/views/approval_view.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_view/views/approval_view.js +3 -1
- package/dist/components/hazo_collab_form_view/views/approval_view.js.map +1 -1
- package/dist/components/hazo_collab_form_view/views/edit_view.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_view/views/edit_view.js +8 -3
- package/dist/components/hazo_collab_form_view/views/edit_view.js.map +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/print_view.js +3 -1
- package/dist/components/hazo_collab_form_view/views/print_view.js.map +1 -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 +4 -2
- package/dist/components/hazo_collab_form_view/views/summary_view.js.map +1 -1
- package/dist/components/hazo_data_form/group_renderer.d.ts +8 -2
- package/dist/components/hazo_data_form/group_renderer.d.ts.map +1 -1
- package/dist/components/hazo_data_form/group_renderer.js +3 -3
- package/dist/components/hazo_data_form/group_renderer.js.map +1 -1
- package/dist/components/hazo_data_form/hazo_data_form.d.ts +2 -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 +47 -6
- package/dist/components/hazo_data_form/hazo_data_form.js.map +1 -1
- package/dist/components/hazo_data_form/section_renderer.d.ts +4 -2
- 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_field_layout.d.ts +4 -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_field_layout.js +34 -8
- package/dist/components/hazo_data_form/shared/data_form_field_layout.js.map +1 -1
- package/dist/components/hazo_data_form/types.d.ts +56 -1
- package/dist/components/hazo_data_form/types.d.ts.map +1 -1
- package/dist/components/index.d.ts +5 -5
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +4 -4
- package/dist/components/index.js.map +1 -1
- package/dist/components/shared/base_field_layout.d.ts.map +1 -1
- package/dist/components/shared/base_field_layout.js +5 -1
- package/dist/components/shared/base_field_layout.js.map +1 -1
- package/dist/components/shared/field_action_array_slot.d.ts +10 -0
- package/dist/components/shared/field_action_array_slot.d.ts.map +1 -0
- package/dist/components/shared/field_action_array_slot.js +33 -0
- package/dist/components/shared/field_action_array_slot.js.map +1 -0
- package/dist/components/shared/field_action_slot.d.ts +22 -0
- package/dist/components/shared/field_action_slot.d.ts.map +1 -0
- package/dist/components/shared/field_action_slot.js +20 -0
- package/dist/components/shared/field_action_slot.js.map +1 -0
- package/dist/components/shared/ihelp_icon.d.ts +1 -1
- package/dist/components/shared/ihelp_icon.js +1 -1
- package/dist/components/shared/rule_result_card.js +1 -1
- package/dist/components/shared/rule_result_card.js.map +1 -1
- package/dist/components/shared/use_field_action_slot.d.ts +37 -0
- package/dist/components/shared/use_field_action_slot.d.ts.map +1 -0
- package/dist/components/shared/use_field_action_slot.js +77 -0
- package/dist/components/shared/use_field_action_slot.js.map +1 -0
- package/dist/components/thread_form/components/key_info_drawer.d.ts +7 -1
- package/dist/components/thread_form/components/key_info_drawer.d.ts.map +1 -1
- package/dist/components/thread_form/components/key_info_drawer.js +2 -2
- package/dist/components/thread_form/components/key_info_drawer.js.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/hooks/use_file_pipeline.d.ts +1 -1
- package/dist/components/thread_form/hooks/use_file_pipeline.d.ts.map +1 -1
- package/dist/components/thread_form/hooks/use_file_pipeline.js +1 -1
- package/dist/components/thread_form/hooks/use_file_pipeline.js.map +1 -1
- package/dist/components/thread_form/index.d.ts +1 -1
- package/dist/components/thread_form/index.d.ts.map +1 -1
- package/dist/components/thread_form/index.js.map +1 -1
- package/dist/components/thread_form/thread_form.d.ts.map +1 -1
- package/dist/components/thread_form/thread_form.js +3 -3
- package/dist/components/thread_form/thread_form.js.map +1 -1
- package/dist/components/thread_form/types.d.ts +32 -4
- package/dist/components/thread_form/types.d.ts.map +1 -1
- package/dist/components/thread_form/types.js.map +1 -1
- package/dist/lib/index.d.ts +0 -2
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +0 -2
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/resolution_handler.d.ts +1 -1
- package/dist/lib/resolution_handler.d.ts.map +1 -1
- package/dist/lib/resolve_variable.d.ts +1 -1
- package/dist/lib/resolve_variable.d.ts.map +1 -1
- package/dist/types/clarification.d.ts +1 -1
- package/dist/types/clarification.d.ts.map +1 -1
- package/dist/types/field_action.d.ts +25 -0
- package/dist/types/field_action.d.ts.map +1 -0
- package/dist/types/field_action.js +8 -0
- package/dist/types/field_action.js.map +1 -0
- package/dist/types/index.d.ts +3 -6
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -3
- package/dist/types/index.js.map +1 -1
- package/dist/types/{fb_form_data.d.ts → shared_data.d.ts} +1 -3
- package/dist/types/shared_data.d.ts.map +1 -0
- package/dist/types/{fb_form_data.js → shared_data.js} +1 -2
- package/dist/types/shared_data.js.map +1 -0
- package/dist/utils/dev_file_manager.d.ts +1 -1
- package/dist/utils/dev_file_manager.js +1 -1
- package/dist/{components/hazo_fb_form/shared → utils}/format.d.ts +2 -2
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/{components/hazo_fb_form/shared → utils}/format.js +1 -1
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/index.d.ts +1 -9
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -15
- package/dist/utils/index.js.map +1 -1
- package/package.json +6 -1
- package/dist/components/hazo_fb_form/components/backoffice_run_button.d.ts +0 -18
- package/dist/components/hazo_fb_form/components/backoffice_run_button.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/components/backoffice_run_button.js +0 -23
- package/dist/components/hazo_fb_form/components/backoffice_run_button.js.map +0 -1
- package/dist/components/hazo_fb_form/components/draft_clarification_card.d.ts +0 -39
- package/dist/components/hazo_fb_form/components/draft_clarification_card.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/components/draft_clarification_card.js +0 -94
- package/dist/components/hazo_fb_form/components/draft_clarification_card.js.map +0 -1
- package/dist/components/hazo_fb_form/components/fb_document_type_editor.d.ts +0 -11
- package/dist/components/hazo_fb_form/components/fb_document_type_editor.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/components/fb_document_type_editor.js +0 -82
- package/dist/components/hazo_fb_form/components/fb_document_type_editor.js.map +0 -1
- package/dist/components/hazo_fb_form/components/fb_tag_editor.d.ts +0 -11
- package/dist/components/hazo_fb_form/components/fb_tag_editor.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/components/fb_tag_editor.js +0 -107
- package/dist/components/hazo_fb_form/components/fb_tag_editor.js.map +0 -1
- package/dist/components/hazo_fb_form/components/front_office_stepper.d.ts +0 -15
- package/dist/components/hazo_fb_form/components/front_office_stepper.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/components/front_office_stepper.js +0 -21
- package/dist/components/hazo_fb_form/components/front_office_stepper.js.map +0 -1
- package/dist/components/hazo_fb_form/components/instance_sidebar.d.ts +0 -21
- package/dist/components/hazo_fb_form/components/instance_sidebar.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/components/instance_sidebar.js +0 -58
- package/dist/components/hazo_fb_form/components/instance_sidebar.js.map +0 -1
- package/dist/components/hazo_fb_form/components/reject_clarification_dialog.d.ts +0 -15
- package/dist/components/hazo_fb_form/components/reject_clarification_dialog.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/components/reject_clarification_dialog.js +0 -26
- package/dist/components/hazo_fb_form/components/reject_clarification_dialog.js.map +0 -1
- package/dist/components/hazo_fb_form/components/run_button.d.ts +0 -19
- package/dist/components/hazo_fb_form/components/run_button.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/components/run_button.js +0 -38
- package/dist/components/hazo_fb_form/components/run_button.js.map +0 -1
- package/dist/components/hazo_fb_form/components/run_details_dialog.d.ts +0 -17
- package/dist/components/hazo_fb_form/components/run_details_dialog.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/components/run_details_dialog.js +0 -35
- package/dist/components/hazo_fb_form/components/run_details_dialog.js.map +0 -1
- package/dist/components/hazo_fb_form/components/sent_clarification_group.d.ts +0 -30
- package/dist/components/hazo_fb_form/components/sent_clarification_group.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/components/sent_clarification_group.js +0 -76
- package/dist/components/hazo_fb_form/components/sent_clarification_group.js.map +0 -1
- package/dist/components/hazo_fb_form/components/tag_pill.d.ts +0 -15
- package/dist/components/hazo_fb_form/components/tag_pill.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/components/tag_pill.js +0 -15
- package/dist/components/hazo_fb_form/components/tag_pill.js.map +0 -1
- package/dist/components/hazo_fb_form/context.d.ts +0 -135
- package/dist/components/hazo_fb_form/context.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/context.js +0 -13
- package/dist/components/hazo_fb_form/context.js.map +0 -1
- package/dist/components/hazo_fb_form/hazo_fb_form.d.ts +0 -13
- package/dist/components/hazo_fb_form/hazo_fb_form.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/hazo_fb_form.js +0 -1188
- package/dist/components/hazo_fb_form/hazo_fb_form.js.map +0 -1
- package/dist/components/hazo_fb_form/hooks/use_fb_form_state.d.ts +0 -58
- package/dist/components/hazo_fb_form/hooks/use_fb_form_state.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/hooks/use_fb_form_state.js +0 -919
- package/dist/components/hazo_fb_form/hooks/use_fb_form_state.js.map +0 -1
- package/dist/components/hazo_fb_form/hooks/use_llm_run.d.ts +0 -52
- package/dist/components/hazo_fb_form/hooks/use_llm_run.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/hooks/use_llm_run.js +0 -1863
- package/dist/components/hazo_fb_form/hooks/use_llm_run.js.map +0 -1
- package/dist/components/hazo_fb_form/index.d.ts +0 -29
- package/dist/components/hazo_fb_form/index.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/index.js +0 -19
- package/dist/components/hazo_fb_form/index.js.map +0 -1
- package/dist/components/hazo_fb_form/shared/agent_stepper.d.ts +0 -9
- package/dist/components/hazo_fb_form/shared/agent_stepper.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/shared/agent_stepper.js +0 -17
- package/dist/components/hazo_fb_form/shared/agent_stepper.js.map +0 -1
- package/dist/components/hazo_fb_form/shared/clarification_helpers.d.ts +0 -15
- package/dist/components/hazo_fb_form/shared/clarification_helpers.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/shared/clarification_helpers.js +0 -23
- package/dist/components/hazo_fb_form/shared/clarification_helpers.js.map +0 -1
- package/dist/components/hazo_fb_form/shared/file_status_accordion.d.ts +0 -9
- package/dist/components/hazo_fb_form/shared/file_status_accordion.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/shared/file_status_accordion.js +0 -39
- package/dist/components/hazo_fb_form/shared/file_status_accordion.js.map +0 -1
- package/dist/components/hazo_fb_form/shared/file_utils.d.ts +0 -9
- package/dist/components/hazo_fb_form/shared/file_utils.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/shared/file_utils.js +0 -31
- package/dist/components/hazo_fb_form/shared/file_utils.js.map +0 -1
- package/dist/components/hazo_fb_form/shared/format.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/shared/format.js.map +0 -1
- package/dist/components/hazo_fb_form/shared/group_debug_icon.d.ts +0 -15
- package/dist/components/hazo_fb_form/shared/group_debug_icon.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/shared/group_debug_icon.js +0 -48
- package/dist/components/hazo_fb_form/shared/group_debug_icon.js.map +0 -1
- package/dist/components/hazo_fb_form/shared/index.d.ts +0 -10
- package/dist/components/hazo_fb_form/shared/index.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/shared/index.js +0 -9
- package/dist/components/hazo_fb_form/shared/index.js.map +0 -1
- package/dist/components/hazo_fb_form/shared/pdf_side_panel.d.ts +0 -22
- package/dist/components/hazo_fb_form/shared/pdf_side_panel.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/shared/pdf_side_panel.js +0 -10
- package/dist/components/hazo_fb_form/shared/pdf_side_panel.js.map +0 -1
- package/dist/components/hazo_fb_form/shared/send_back_item_card.d.ts +0 -44
- package/dist/components/hazo_fb_form/shared/send_back_item_card.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/shared/send_back_item_card.js +0 -80
- package/dist/components/hazo_fb_form/shared/send_back_item_card.js.map +0 -1
- package/dist/components/hazo_fb_form/shared/use_pdf_viewer.d.ts +0 -28
- package/dist/components/hazo_fb_form/shared/use_pdf_viewer.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/shared/use_pdf_viewer.js +0 -46
- package/dist/components/hazo_fb_form/shared/use_pdf_viewer.js.map +0 -1
- package/dist/components/hazo_fb_form/types.d.ts +0 -372
- package/dist/components/hazo_fb_form/types.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/types.js +0 -5
- package/dist/components/hazo_fb_form/types.js.map +0 -1
- package/dist/components/hazo_fb_form/views/back_office_view.d.ts +0 -7
- package/dist/components/hazo_fb_form/views/back_office_view.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/views/back_office_view.js +0 -425
- package/dist/components/hazo_fb_form/views/back_office_view.js.map +0 -1
- package/dist/components/hazo_fb_form/views/clarifications_view.d.ts +0 -16
- package/dist/components/hazo_fb_form/views/clarifications_view.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/views/clarifications_view.js +0 -291
- package/dist/components/hazo_fb_form/views/clarifications_view.js.map +0 -1
- package/dist/components/hazo_fb_form/views/client_data_view.d.ts +0 -6
- package/dist/components/hazo_fb_form/views/client_data_view.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/views/client_data_view.js +0 -39
- package/dist/components/hazo_fb_form/views/client_data_view.js.map +0 -1
- package/dist/components/hazo_fb_form/views/front_office_view.d.ts +0 -6
- package/dist/components/hazo_fb_form/views/front_office_view.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/views/front_office_view.js +0 -1351
- package/dist/components/hazo_fb_form/views/front_office_view.js.map +0 -1
- package/dist/components/hazo_fb_form/views/interim_view.d.ts +0 -8
- package/dist/components/hazo_fb_form/views/interim_view.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/views/interim_view.js +0 -535
- package/dist/components/hazo_fb_form/views/interim_view.js.map +0 -1
- package/dist/components/hazo_fb_form/views/review_queue_view.d.ts +0 -14
- package/dist/components/hazo_fb_form/views/review_queue_view.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/views/review_queue_view.js +0 -230
- package/dist/components/hazo_fb_form/views/review_queue_view.js.map +0 -1
- package/dist/components/hazo_fb_form/views/send_back_view.d.ts +0 -13
- package/dist/components/hazo_fb_form/views/send_back_view.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/views/send_back_view.js +0 -258
- package/dist/components/hazo_fb_form/views/send_back_view.js.map +0 -1
- package/dist/components/hazo_fb_form/views/summary_review_view.d.ts +0 -17
- package/dist/components/hazo_fb_form/views/summary_review_view.d.ts.map +0 -1
- package/dist/components/hazo_fb_form/views/summary_review_view.js +0 -258
- package/dist/components/hazo_fb_form/views/summary_review_view.js.map +0 -1
- package/dist/components/shared/json_data_panel/index.d.ts +0 -3
- package/dist/components/shared/json_data_panel/index.d.ts.map +0 -1
- package/dist/components/shared/json_data_panel/index.js +0 -2
- package/dist/components/shared/json_data_panel/index.js.map +0 -1
- package/dist/components/shared/json_data_panel/json_data_panel.d.ts +0 -28
- package/dist/components/shared/json_data_panel/json_data_panel.d.ts.map +0 -1
- package/dist/components/shared/json_data_panel/json_data_panel.js +0 -156
- package/dist/components/shared/json_data_panel/json_data_panel.js.map +0 -1
- package/dist/lib/fb_form_handler.d.ts +0 -63
- package/dist/lib/fb_form_handler.d.ts.map +0 -1
- package/dist/lib/fb_form_handler.js +0 -425
- package/dist/lib/fb_form_handler.js.map +0 -1
- package/dist/types/fb_form_data.d.ts.map +0 -1
- package/dist/types/fb_form_data.js.map +0 -1
- package/dist/types/fb_form_data_v1.d.ts +0 -250
- package/dist/types/fb_form_data_v1.d.ts.map +0 -1
- package/dist/types/fb_form_data_v1.js +0 -117
- package/dist/types/fb_form_data_v1.js.map +0 -1
- package/dist/types/fb_form_instance.d.ts +0 -49
- package/dist/types/fb_form_instance.d.ts.map +0 -1
- package/dist/types/fb_form_instance.js +0 -10
- package/dist/types/fb_form_instance.js.map +0 -1
- package/dist/utils/fb_data_adapter.d.ts +0 -33
- package/dist/utils/fb_data_adapter.d.ts.map +0 -1
- package/dist/utils/fb_data_adapter.js +0 -436
- package/dist/utils/fb_data_adapter.js.map +0 -1
- package/dist/utils/fb_data_adapter_v2.d.ts +0 -17
- package/dist/utils/fb_data_adapter_v2.d.ts.map +0 -1
- package/dist/utils/fb_data_adapter_v2.js +0 -483
- package/dist/utils/fb_data_adapter_v2.js.map +0 -1
- package/dist/utils/fb_data_helpers.d.ts +0 -86
- package/dist/utils/fb_data_helpers.d.ts.map +0 -1
- package/dist/utils/fb_data_helpers.js +0 -269
- package/dist/utils/fb_data_helpers.js.map +0 -1
- package/dist/utils/fb_data_mutations.d.ts +0 -43
- package/dist/utils/fb_data_mutations.d.ts.map +0 -1
- package/dist/utils/fb_data_mutations.js +0 -379
- package/dist/utils/fb_data_mutations.js.map +0 -1
- package/dist/utils/fb_data_mutations_v2.d.ts +0 -46
- package/dist/utils/fb_data_mutations_v2.d.ts.map +0 -1
- package/dist/utils/fb_data_mutations_v2.js +0 -341
- package/dist/utils/fb_data_mutations_v2.js.map +0 -1
- package/dist/utils/fb_data_queries.d.ts +0 -81
- package/dist/utils/fb_data_queries.d.ts.map +0 -1
- package/dist/utils/fb_data_queries.js +0 -354
- package/dist/utils/fb_data_queries.js.map +0 -1
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FormDataAuditor — invisible component that diffs `form_data` between
|
|
3
|
+
* renders and records each changed field as a `manual` audit entry.
|
|
4
|
+
*
|
|
5
|
+
* Coalescing strategy: controlled inputs fire on every keystroke, which
|
|
6
|
+
* would produce one audit entry per character. Instead, we debounce per
|
|
7
|
+
* field — when a field changes we (re)start a per-field timer, and once
|
|
8
|
+
* the user has been idle for `debounce_ms` we record ONE entry whose
|
|
9
|
+
* `prev_value` is the last committed value and whose `new_value` is the
|
|
10
|
+
* latest current value. The result is one entry per typing burst.
|
|
11
|
+
*
|
|
12
|
+
* On unmount any pending timers are flushed so we don't lose unfinished
|
|
13
|
+
* edits. Internal keys prefixed with `__` (file attachments,
|
|
14
|
+
* clarification storage, etc.) are ignored.
|
|
15
|
+
*
|
|
16
|
+
* Renders nothing.
|
|
17
|
+
*/
|
|
18
|
+
'use client';
|
|
19
|
+
import { useEffect, useRef } from 'react';
|
|
20
|
+
import { useFieldAuditOptional } from './context.js';
|
|
21
|
+
export function FormDataAuditor({ form_data, current_user, debounce_ms = 750, }) {
|
|
22
|
+
const audit = useFieldAuditOptional();
|
|
23
|
+
// Last committed values — what we'll use as `prev_value` when the next
|
|
24
|
+
// debounced entry fires. Starts at the initial form_data so we don't
|
|
25
|
+
// emit a synthetic "everything changed" entry on first mount.
|
|
26
|
+
const committed_ref = useRef({ ...(form_data ?? {}) });
|
|
27
|
+
// Live form_data, kept fresh via render so the debounced timer reads
|
|
28
|
+
// the latest value at fire time (not the value at the time we set the timer).
|
|
29
|
+
const live_ref = useRef(form_data ?? {});
|
|
30
|
+
live_ref.current = form_data ?? {};
|
|
31
|
+
// Per-field debounce state. `current_user` is captured into the closure.
|
|
32
|
+
const pending_ref = useRef(new Map());
|
|
33
|
+
// Diff each render and schedule audit entries.
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
if (!audit)
|
|
36
|
+
return;
|
|
37
|
+
const prev = committed_ref.current;
|
|
38
|
+
const curr = form_data ?? {};
|
|
39
|
+
const pending = pending_ref.current;
|
|
40
|
+
const keys = new Set([...Object.keys(prev), ...Object.keys(curr)]);
|
|
41
|
+
for (const key of keys) {
|
|
42
|
+
if (key.startsWith('__'))
|
|
43
|
+
continue;
|
|
44
|
+
const baseline = pending.get(key)?.baseline ?? prev[key];
|
|
45
|
+
const after = curr[key];
|
|
46
|
+
// If the value is back at the baseline (e.g. user typed then erased),
|
|
47
|
+
// cancel any pending entry and forget the field.
|
|
48
|
+
if (Object.is(baseline, after)) {
|
|
49
|
+
const existing = pending.get(key);
|
|
50
|
+
if (existing) {
|
|
51
|
+
clearTimeout(existing.timer);
|
|
52
|
+
pending.delete(key);
|
|
53
|
+
}
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
// Restart the per-field debounce.
|
|
57
|
+
const existing = pending.get(key);
|
|
58
|
+
if (existing) {
|
|
59
|
+
clearTimeout(existing.timer);
|
|
60
|
+
}
|
|
61
|
+
const timer = setTimeout(() => {
|
|
62
|
+
const latest = live_ref.current[key];
|
|
63
|
+
const prev_value = pending.get(key)?.baseline ?? prev[key];
|
|
64
|
+
pending.delete(key);
|
|
65
|
+
if (Object.is(prev_value, latest))
|
|
66
|
+
return;
|
|
67
|
+
audit.record_change({
|
|
68
|
+
field_id: key,
|
|
69
|
+
source: 'manual',
|
|
70
|
+
prev_value,
|
|
71
|
+
new_value: latest,
|
|
72
|
+
user: current_user,
|
|
73
|
+
});
|
|
74
|
+
committed_ref.current = { ...committed_ref.current, [key]: latest };
|
|
75
|
+
}, debounce_ms);
|
|
76
|
+
pending.set(key, { baseline, timer });
|
|
77
|
+
}
|
|
78
|
+
}, [form_data, audit, current_user, debounce_ms]);
|
|
79
|
+
// Flush any pending timers on unmount.
|
|
80
|
+
useEffect(() => {
|
|
81
|
+
return () => {
|
|
82
|
+
const pending = pending_ref.current;
|
|
83
|
+
for (const [, entry] of pending) {
|
|
84
|
+
clearTimeout(entry.timer);
|
|
85
|
+
}
|
|
86
|
+
pending.clear();
|
|
87
|
+
};
|
|
88
|
+
}, []);
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=auditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auditor.js","sourceRoot":"","sources":["../../../src/components/field_audit/auditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FieldAuditProvider — owns the in-session audit history.
|
|
3
|
+
*
|
|
4
|
+
* State lives in React state, so it dies with the component tree. Persistence
|
|
5
|
+
* is intentionally out of scope for this release; consuming apps that need
|
|
6
|
+
* durable audit logs can keep their own copy by subscribing to record_change
|
|
7
|
+
* via the imperative API.
|
|
8
|
+
*/
|
|
9
|
+
import React from 'react';
|
|
10
|
+
import type { ReactNode } from 'react';
|
|
11
|
+
import type { FieldAuditContextValue } from './types.js';
|
|
12
|
+
declare const FieldAuditContext: React.Context<FieldAuditContextValue | undefined>;
|
|
13
|
+
/**
|
|
14
|
+
* Hook for consumers that *must* run inside a provider. Throws otherwise.
|
|
15
|
+
*/
|
|
16
|
+
export declare function useFieldAudit(): FieldAuditContextValue;
|
|
17
|
+
/**
|
|
18
|
+
* Hook for components that may render with or without an audit provider.
|
|
19
|
+
* `FieldAuditIcon` and `FieldAuditPanel` use this so they can be dropped
|
|
20
|
+
* into a slot whether or not audit is enabled — when no provider is mounted
|
|
21
|
+
* they silently render nothing.
|
|
22
|
+
*/
|
|
23
|
+
export declare function useFieldAuditOptional(): FieldAuditContextValue | undefined;
|
|
24
|
+
export interface FieldAuditProviderProps {
|
|
25
|
+
children: ReactNode;
|
|
26
|
+
}
|
|
27
|
+
export declare function FieldAuditProvider({ children }: FieldAuditProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
export { FieldAuditContext };
|
|
29
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/components/field_audit/context.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAON,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAEV,sBAAsB,EAEvB,MAAM,YAAY,CAAC;AAEpB,QAAA,MAAM,iBAAiB,mDAEtB,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,IAAI,sBAAsB,CAMtD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,sBAAsB,GAAG,SAAS,CAE1E;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,SAAS,CAAC;CACrB;AAMD,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,EAAE,uBAAuB,2CAuGvE;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FieldAuditProvider — owns the in-session audit history.
|
|
3
|
+
*
|
|
4
|
+
* State lives in React state, so it dies with the component tree. Persistence
|
|
5
|
+
* is intentionally out of scope for this release; consuming apps that need
|
|
6
|
+
* durable audit logs can keep their own copy by subscribing to record_change
|
|
7
|
+
* via the imperative API.
|
|
8
|
+
*/
|
|
9
|
+
'use client';
|
|
10
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
+
import { createContext, useCallback, useContext, useMemo, useRef, useState, } from 'react';
|
|
12
|
+
const FieldAuditContext = createContext(undefined);
|
|
13
|
+
/**
|
|
14
|
+
* Hook for consumers that *must* run inside a provider. Throws otherwise.
|
|
15
|
+
*/
|
|
16
|
+
export function useFieldAudit() {
|
|
17
|
+
const ctx = useContext(FieldAuditContext);
|
|
18
|
+
if (!ctx) {
|
|
19
|
+
throw new Error('useFieldAudit must be used inside <FieldAuditProvider>');
|
|
20
|
+
}
|
|
21
|
+
return ctx;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Hook for components that may render with or without an audit provider.
|
|
25
|
+
* `FieldAuditIcon` and `FieldAuditPanel` use this so they can be dropped
|
|
26
|
+
* into a slot whether or not audit is enabled — when no provider is mounted
|
|
27
|
+
* they silently render nothing.
|
|
28
|
+
*/
|
|
29
|
+
export function useFieldAuditOptional() {
|
|
30
|
+
return useContext(FieldAuditContext);
|
|
31
|
+
}
|
|
32
|
+
function make_id(field_id) {
|
|
33
|
+
return `${field_id}_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
|
|
34
|
+
}
|
|
35
|
+
export function FieldAuditProvider({ children }) {
|
|
36
|
+
const [entries, set_entries] = useState(() => new Map());
|
|
37
|
+
const [expanded, set_expanded] = useState(() => new Set());
|
|
38
|
+
// Mirror entries in a ref so the auto-watcher (FormDataAuditor) can read
|
|
39
|
+
// the live state without re-binding to setState and creating stale closures.
|
|
40
|
+
const entries_ref = useRef(entries);
|
|
41
|
+
entries_ref.current = entries;
|
|
42
|
+
const record_change = useCallback((input) => {
|
|
43
|
+
set_entries((prev) => {
|
|
44
|
+
const existing = prev.get(input.field_id) ?? [];
|
|
45
|
+
const last = existing[0];
|
|
46
|
+
const window_ms = input.dedup_window_ms ?? 500;
|
|
47
|
+
// Dedup against a recent entry with the same new value.
|
|
48
|
+
if (last &&
|
|
49
|
+
Object.is(last.new_value, input.new_value) &&
|
|
50
|
+
Date.now() - last.at < window_ms) {
|
|
51
|
+
// The auto-watcher fires `manual` on every form_data change; an
|
|
52
|
+
// explicit caller may classify the same change as `clarification`
|
|
53
|
+
// before/around the watcher fires. Always promote the existing
|
|
54
|
+
// entry to the more specific source.
|
|
55
|
+
if (last.source === 'manual' && input.source !== 'manual') {
|
|
56
|
+
const promoted = {
|
|
57
|
+
...last,
|
|
58
|
+
source: input.source,
|
|
59
|
+
user: input.user ?? last.user,
|
|
60
|
+
};
|
|
61
|
+
const next = new Map(prev);
|
|
62
|
+
next.set(input.field_id, [promoted, ...existing.slice(1)]);
|
|
63
|
+
return next;
|
|
64
|
+
}
|
|
65
|
+
// Otherwise treat as a duplicate and keep the existing entry.
|
|
66
|
+
return prev;
|
|
67
|
+
}
|
|
68
|
+
const entry = {
|
|
69
|
+
id: make_id(input.field_id),
|
|
70
|
+
field_id: input.field_id,
|
|
71
|
+
source: input.source,
|
|
72
|
+
at: Date.now(),
|
|
73
|
+
prev_value: input.prev_value !== undefined ? input.prev_value : last?.new_value,
|
|
74
|
+
new_value: input.new_value,
|
|
75
|
+
user: input.user,
|
|
76
|
+
};
|
|
77
|
+
const next = new Map(prev);
|
|
78
|
+
next.set(input.field_id, [entry, ...existing]);
|
|
79
|
+
return next;
|
|
80
|
+
});
|
|
81
|
+
}, []);
|
|
82
|
+
const toggle_expanded = useCallback((field_id) => {
|
|
83
|
+
set_expanded((prev) => {
|
|
84
|
+
const next = new Set(prev);
|
|
85
|
+
if (next.has(field_id))
|
|
86
|
+
next.delete(field_id);
|
|
87
|
+
else
|
|
88
|
+
next.add(field_id);
|
|
89
|
+
return next;
|
|
90
|
+
});
|
|
91
|
+
}, []);
|
|
92
|
+
const clear_field = useCallback((field_id) => {
|
|
93
|
+
set_entries((prev) => {
|
|
94
|
+
if (!prev.has(field_id))
|
|
95
|
+
return prev;
|
|
96
|
+
const next = new Map(prev);
|
|
97
|
+
next.delete(field_id);
|
|
98
|
+
return next;
|
|
99
|
+
});
|
|
100
|
+
set_expanded((prev) => {
|
|
101
|
+
if (!prev.has(field_id))
|
|
102
|
+
return prev;
|
|
103
|
+
const next = new Set(prev);
|
|
104
|
+
next.delete(field_id);
|
|
105
|
+
return next;
|
|
106
|
+
});
|
|
107
|
+
}, []);
|
|
108
|
+
const clear_all = useCallback(() => {
|
|
109
|
+
set_entries(new Map());
|
|
110
|
+
set_expanded(new Set());
|
|
111
|
+
}, []);
|
|
112
|
+
const value = useMemo(() => ({
|
|
113
|
+
entries,
|
|
114
|
+
expanded,
|
|
115
|
+
record_change,
|
|
116
|
+
toggle_expanded,
|
|
117
|
+
clear_field,
|
|
118
|
+
clear_all,
|
|
119
|
+
}), [entries, expanded, record_change, toggle_expanded, clear_field, clear_all]);
|
|
120
|
+
return (_jsx(FieldAuditContext.Provider, { value: value, children: children }));
|
|
121
|
+
}
|
|
122
|
+
export { FieldAuditContext };
|
|
123
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/components/field_audit/context.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FieldAuditIcon — designed to be dropped into the
|
|
3
|
+
* `field_action_components.row_end` slot. Renders a small clock toggle that
|
|
4
|
+
* opens/closes the audit history panel for the field.
|
|
5
|
+
*
|
|
6
|
+
* Visible whenever the field has at least one recorded entry. Hidden when
|
|
7
|
+
* the audit provider is absent (so it can sit safely in a shared slot).
|
|
8
|
+
*/
|
|
9
|
+
import React from 'react';
|
|
10
|
+
import type { FieldActionContext } from '../hazo_collab_form_view/types.js';
|
|
11
|
+
export declare function FieldAuditIcon({ field }: FieldActionContext): React.ReactElement | null;
|
|
12
|
+
//# sourceMappingURL=field_audit_icon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field_audit_icon.d.ts","sourceRoot":"","sources":["../../../src/components/field_audit/field_audit_icon.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAE5E,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,EAAE,kBAAkB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAiDvF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FieldAuditIcon — designed to be dropped into the
|
|
3
|
+
* `field_action_components.row_end` slot. Renders a small clock toggle that
|
|
4
|
+
* opens/closes the audit history panel for the field.
|
|
5
|
+
*
|
|
6
|
+
* Visible whenever the field has at least one recorded entry. Hidden when
|
|
7
|
+
* the audit provider is absent (so it can sit safely in a shared slot).
|
|
8
|
+
*/
|
|
9
|
+
'use client';
|
|
10
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
+
import { useFieldAuditOptional } from './context.js';
|
|
12
|
+
export function FieldAuditIcon({ field }) {
|
|
13
|
+
const audit = useFieldAuditOptional();
|
|
14
|
+
if (!audit)
|
|
15
|
+
return null;
|
|
16
|
+
const list = audit.entries.get(field.id) ?? [];
|
|
17
|
+
if (list.length === 0)
|
|
18
|
+
return null;
|
|
19
|
+
const is_open = audit.expanded.has(field.id);
|
|
20
|
+
const count = list.length;
|
|
21
|
+
return (_jsxs("button", { type: "button", "data-testid": `field_audit_icon_${field.id}`, "data-state": is_open ? 'open' : 'closed', "aria-expanded": is_open, "aria-label": `Show ${count} audit ${count === 1 ? 'entry' : 'entries'} for ${field.id}`, title: `${count} change${count === 1 ? '' : 's'} recorded`, onClick: () => audit.toggle_expanded(field.id), className: "cls_field_audit_icon inline-flex items-center justify-center gap-1 h-7 px-2 rounded-md text-[11px] font-medium text-amber-700 hover:bg-amber-50 hover:text-amber-900 transition-colors", children: [_jsxs("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: "h-3.5 w-3.5", children: [_jsx("circle", { cx: "12", cy: "12", r: "9" }), _jsx("polyline", { points: "12 7 12 12 15 14" })] }), _jsx("span", { className: "font-mono", children: count }), _jsx("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: `h-3 w-3 transition-transform ${is_open ? 'rotate-180' : ''}`, children: _jsx("polyline", { points: "6 9 12 15 18 9" }) })] }));
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=field_audit_icon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field_audit_icon.js","sourceRoot":"","sources":["../../../src/components/field_audit/field_audit_icon.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,CAAC;;AAGb,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAGrD,MAAM,UAAU,cAAc,CAAC,EAAE,KAAK,EAAsB;IAC1D,MAAM,KAAK,GAAG,qBAAqB,EAAE,CAAC;IACtC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IAC/C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEnC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;IAE1B,OAAO,CACL,kBACE,IAAI,EAAC,QAAQ,iBACA,oBAAoB,KAAK,CAAC,EAAE,EAAE,gBAC/B,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,mBACxB,OAAO,gBACV,QAAQ,KAAK,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,QAAQ,KAAK,CAAC,EAAE,EAAE,EACtF,KAAK,EAAE,GAAG,KAAK,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,WAAW,EAC1D,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,EAC9C,SAAS,EAAC,wLAAwL,aAElM,8BACc,MAAM,EAClB,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,SAAS,EAAC,aAAa,aAEvB,iBAAQ,EAAE,EAAC,IAAI,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,GAAG,GAAG,EAChC,mBAAU,MAAM,EAAC,kBAAkB,GAAG,IAClC,EACN,eAAM,SAAS,EAAC,WAAW,YAAE,KAAK,GAAQ,EAC1C,6BACc,MAAM,EAClB,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,SAAS,EAAE,gCAAgC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,YAExE,mBAAU,MAAM,EAAC,gBAAgB,GAAG,GAChC,IACC,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FieldAuditPanel — designed to be dropped into the
|
|
3
|
+
* `field_action_components.row_below` slot. Renders the per-field history
|
|
4
|
+
* list when the icon is toggled open.
|
|
5
|
+
*/
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import type { FieldActionContext } from '../hazo_collab_form_view/types.js';
|
|
8
|
+
export declare function FieldAuditPanel({ field }: FieldActionContext): React.ReactElement | null;
|
|
9
|
+
//# sourceMappingURL=field_audit_panel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field_audit_panel.d.ts","sourceRoot":"","sources":["../../../src/components/field_audit/field_audit_panel.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAsD5E,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE,kBAAkB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAiCxF"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FieldAuditPanel — designed to be dropped into the
|
|
3
|
+
* `field_action_components.row_below` slot. Renders the per-field history
|
|
4
|
+
* list when the icon is toggled open.
|
|
5
|
+
*/
|
|
6
|
+
'use client';
|
|
7
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
import { useFieldAuditOptional } from './context.js';
|
|
9
|
+
function format_value(value) {
|
|
10
|
+
if (value === undefined)
|
|
11
|
+
return '—';
|
|
12
|
+
if (value === null)
|
|
13
|
+
return 'null';
|
|
14
|
+
if (typeof value === 'string')
|
|
15
|
+
return value === '' ? '""' : `"${value}"`;
|
|
16
|
+
if (typeof value === 'number' || typeof value === 'boolean')
|
|
17
|
+
return String(value);
|
|
18
|
+
try {
|
|
19
|
+
return JSON.stringify(value);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return String(value);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function format_time(at) {
|
|
26
|
+
const date = new Date(at);
|
|
27
|
+
const hh = String(date.getHours()).padStart(2, '0');
|
|
28
|
+
const mm = String(date.getMinutes()).padStart(2, '0');
|
|
29
|
+
const ss = String(date.getSeconds()).padStart(2, '0');
|
|
30
|
+
return `${hh}:${mm}:${ss}`;
|
|
31
|
+
}
|
|
32
|
+
function source_label(source) {
|
|
33
|
+
switch (source) {
|
|
34
|
+
case 'manual':
|
|
35
|
+
return 'edit';
|
|
36
|
+
case 'clarification':
|
|
37
|
+
return 'clarification';
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function EntryRow({ entry }) {
|
|
41
|
+
return (_jsxs("li", { className: "cls_field_audit_entry flex items-baseline gap-2 px-2 py-1 text-[11px] font-mono", children: [_jsx("span", { className: "text-amber-700/70 shrink-0", children: format_time(entry.at) }), _jsx("span", { className: "text-amber-900 shrink-0 uppercase tracking-wide text-[10px]", children: source_label(entry.source) }), entry.user && (_jsx("span", { className: "text-slate-600 shrink-0", children: entry.user })), _jsxs("span", { className: "text-slate-500 truncate", children: [format_value(entry.prev_value), " ", _jsx("span", { "aria-hidden": true, children: "\u2192" }), ' ', _jsx("span", { className: "text-emerald-700", children: format_value(entry.new_value) })] })] }));
|
|
42
|
+
}
|
|
43
|
+
export function FieldAuditPanel({ field }) {
|
|
44
|
+
const audit = useFieldAuditOptional();
|
|
45
|
+
if (!audit)
|
|
46
|
+
return null;
|
|
47
|
+
if (!audit.expanded.has(field.id))
|
|
48
|
+
return null;
|
|
49
|
+
const list = audit.entries.get(field.id) ?? [];
|
|
50
|
+
if (list.length === 0)
|
|
51
|
+
return null;
|
|
52
|
+
return (_jsxs("div", { "data-testid": `field_audit_panel_${field.id}`, className: "cls_field_audit_panel mx-3 mb-2 rounded-md border border-amber-200 bg-amber-50/60", children: [_jsxs("div", { className: "flex items-center justify-between px-2 py-1 border-b border-amber-200/60", children: [_jsxs("span", { className: "text-[10px] uppercase tracking-wide text-amber-800", children: ["Field audit \u00B7 ", list.length, " change", list.length === 1 ? '' : 's'] }), _jsx("button", { type: "button", onClick: () => audit.clear_field(field.id), "aria-label": `Clear audit history for ${field.id}`, className: "text-[10px] text-amber-700/70 hover:text-red-600", children: "Clear" })] }), _jsx("ol", { className: "divide-y divide-amber-100", children: list.map((entry) => (_jsx(EntryRow, { entry: entry }, entry.id))) })] }));
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=field_audit_panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field_audit_panel.js","sourceRoot":"","sources":["../../../src/components/field_audit/field_audit_panel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @deprecated The in-session FieldAudit module is deprecated as of v5.10.0.
|
|
3
|
+
* Install hazo_audit and use the `field_audit` prop on HazoCollabFormView or
|
|
4
|
+
* HazoDataForm instead. This module will be removed in a future major.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* FieldAudit — in-session per-field change history.
|
|
8
|
+
*
|
|
9
|
+
* Exports:
|
|
10
|
+
* - `FieldAuditProvider` — wraps your form and holds the entries map.
|
|
11
|
+
* - `FormDataAuditor` — invisible component that auto-records changes to
|
|
12
|
+
* `form_data` as `manual` entries.
|
|
13
|
+
* - `FieldAuditIcon` — designed for the `row_end` action slot.
|
|
14
|
+
* - `FieldAuditPanel` — designed for the `row_below` action slot.
|
|
15
|
+
* - `useFieldAudit` / `useFieldAuditOptional` — context hooks (use the
|
|
16
|
+
* imperative API from inside the provider to record non-manual sources
|
|
17
|
+
* such as `clarification`).
|
|
18
|
+
*
|
|
19
|
+
* The form view components (`HazoCollabFormView`, `HazoDataForm`,
|
|
20
|
+
* `ThreadForm`) accept an `enable_field_audit?: boolean` convenience flag
|
|
21
|
+
* that mounts the provider, the auditor, and merges the icon/panel into
|
|
22
|
+
* `field_action_components` for you.
|
|
23
|
+
*/
|
|
24
|
+
export { FieldAuditProvider, FieldAuditContext, useFieldAudit, useFieldAuditOptional, } from './context.js';
|
|
25
|
+
export type { FieldAuditProviderProps } from './context.js';
|
|
26
|
+
export { FormDataAuditor } from './auditor.js';
|
|
27
|
+
export type { FormDataAuditorProps } from './auditor.js';
|
|
28
|
+
export { FieldAuditIcon } from './field_audit_icon.js';
|
|
29
|
+
export { FieldAuditPanel } from './field_audit_panel.js';
|
|
30
|
+
export { useFieldAuditWiring } from './with_field_audit.js';
|
|
31
|
+
export type { FieldAuditWiring, UseFieldAuditWiringOptions, } from './with_field_audit.js';
|
|
32
|
+
export type { AuditEntry, AuditSource, FieldAuditContextValue, RecordChangeInput, } from './types.js';
|
|
33
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/field_audit/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EACV,gBAAgB,EAChB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,UAAU,EACV,WAAW,EACX,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @deprecated The in-session FieldAudit module is deprecated as of v5.10.0.
|
|
3
|
+
* Install hazo_audit and use the `field_audit` prop on HazoCollabFormView or
|
|
4
|
+
* HazoDataForm instead. This module will be removed in a future major.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* FieldAudit — in-session per-field change history.
|
|
8
|
+
*
|
|
9
|
+
* Exports:
|
|
10
|
+
* - `FieldAuditProvider` — wraps your form and holds the entries map.
|
|
11
|
+
* - `FormDataAuditor` — invisible component that auto-records changes to
|
|
12
|
+
* `form_data` as `manual` entries.
|
|
13
|
+
* - `FieldAuditIcon` — designed for the `row_end` action slot.
|
|
14
|
+
* - `FieldAuditPanel` — designed for the `row_below` action slot.
|
|
15
|
+
* - `useFieldAudit` / `useFieldAuditOptional` — context hooks (use the
|
|
16
|
+
* imperative API from inside the provider to record non-manual sources
|
|
17
|
+
* such as `clarification`).
|
|
18
|
+
*
|
|
19
|
+
* The form view components (`HazoCollabFormView`, `HazoDataForm`,
|
|
20
|
+
* `ThreadForm`) accept an `enable_field_audit?: boolean` convenience flag
|
|
21
|
+
* that mounts the provider, the auditor, and merges the icon/panel into
|
|
22
|
+
* `field_action_components` for you.
|
|
23
|
+
*/
|
|
24
|
+
export { FieldAuditProvider, FieldAuditContext, useFieldAudit, useFieldAuditOptional, } from './context.js';
|
|
25
|
+
export { FormDataAuditor } from './auditor.js';
|
|
26
|
+
export { FieldAuditIcon } from './field_audit_icon.js';
|
|
27
|
+
export { FieldAuditPanel } from './field_audit_panel.js';
|
|
28
|
+
export { useFieldAuditWiring } from './with_field_audit.js';
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/field_audit/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for the FieldAudit module.
|
|
3
|
+
*
|
|
4
|
+
* FieldAudit records per-field value changes inside a form session and
|
|
5
|
+
* exposes them as a clickable history panel next to each field row. It
|
|
6
|
+
* pairs with the `field_action_components` slot machinery — `FieldAuditIcon`
|
|
7
|
+
* goes into `row_end` and `FieldAuditPanel` into `row_below`.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Origin of an audit entry.
|
|
11
|
+
*
|
|
12
|
+
* - `manual` — Direct user edit picked up by the auto-watcher.
|
|
13
|
+
* - `clarification` — A clarification flow resolved into a value update.
|
|
14
|
+
* The clarification handler must call `record_change()` explicitly so the
|
|
15
|
+
* auto-watcher's manual entry gets reclassified (see dedup below).
|
|
16
|
+
*/
|
|
17
|
+
export type AuditSource = 'manual' | 'clarification';
|
|
18
|
+
/**
|
|
19
|
+
* A single entry in the per-field audit history.
|
|
20
|
+
*/
|
|
21
|
+
export interface AuditEntry {
|
|
22
|
+
/** Unique id (used as React key). */
|
|
23
|
+
id: string;
|
|
24
|
+
/** The field that changed. */
|
|
25
|
+
field_id: string;
|
|
26
|
+
/** Where the change came from. */
|
|
27
|
+
source: AuditSource;
|
|
28
|
+
/** Wall-clock timestamp (ms since epoch) at the moment the entry was recorded. */
|
|
29
|
+
at: number;
|
|
30
|
+
/** Value immediately before the change. */
|
|
31
|
+
prev_value: unknown;
|
|
32
|
+
/** Value immediately after the change. */
|
|
33
|
+
new_value: unknown;
|
|
34
|
+
/** Optional human-readable label for the actor that made the change. */
|
|
35
|
+
user?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Input shape for `record_change()`.
|
|
39
|
+
*/
|
|
40
|
+
export interface RecordChangeInput {
|
|
41
|
+
field_id: string;
|
|
42
|
+
source: AuditSource;
|
|
43
|
+
new_value: unknown;
|
|
44
|
+
/** Falls back to the most recent recorded value if omitted. */
|
|
45
|
+
prev_value?: unknown;
|
|
46
|
+
user?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Dedup window in ms. If the most-recent entry for this field has the
|
|
49
|
+
* same new value within the window, the call is treated as a duplicate
|
|
50
|
+
* of the existing entry.
|
|
51
|
+
*
|
|
52
|
+
* When the call carries a more specific source (`'clarification'`) than
|
|
53
|
+
* the existing entry (`'manual'` from the auto-watcher), the existing
|
|
54
|
+
* entry is reclassified instead of duplicated.
|
|
55
|
+
*/
|
|
56
|
+
dedup_window_ms?: number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Context value exposed by `<FieldAuditProvider>`.
|
|
60
|
+
*/
|
|
61
|
+
export interface FieldAuditContextValue {
|
|
62
|
+
/** Per-field history, most-recent-first. */
|
|
63
|
+
entries: Map<string, AuditEntry[]>;
|
|
64
|
+
/** Field ids whose history panel is currently expanded. */
|
|
65
|
+
expanded: Set<string>;
|
|
66
|
+
/** Record a change. Auto-watcher uses this with `source='manual'`. */
|
|
67
|
+
record_change: (input: RecordChangeInput) => void;
|
|
68
|
+
/** Toggle the row_below history panel for one field. */
|
|
69
|
+
toggle_expanded: (field_id: string) => void;
|
|
70
|
+
/** Drop history for one field (and collapse it). */
|
|
71
|
+
clear_field: (field_id: string) => void;
|
|
72
|
+
/** Drop history for every field. */
|
|
73
|
+
clear_all: () => void;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/field_audit/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,eAAe,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,qCAAqC;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,MAAM,EAAE,WAAW,CAAC;IACpB,kFAAkF;IAClF,EAAE,EAAE,MAAM,CAAC;IACX,2CAA2C;IAC3C,UAAU,EAAE,OAAO,CAAC;IACpB,0CAA0C;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,+DAA+D;IAC/D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,4CAA4C;IAC5C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACnC,2DAA2D;IAC3D,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,sEAAsE;IACtE,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAClD,wDAAwD;IACxD,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,oDAAoD;IACpD,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,oCAAoC;IACpC,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for the FieldAudit module.
|
|
3
|
+
*
|
|
4
|
+
* FieldAudit records per-field value changes inside a form session and
|
|
5
|
+
* exposes them as a clickable history panel next to each field row. It
|
|
6
|
+
* pairs with the `field_action_components` slot machinery — `FieldAuditIcon`
|
|
7
|
+
* goes into `row_end` and `FieldAuditPanel` into `row_below`.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/field_audit/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* with_field_audit — internal helper that wires the FieldAudit feature into
|
|
3
|
+
* a form view when `enable_field_audit` is true.
|
|
4
|
+
*
|
|
5
|
+
* Returns:
|
|
6
|
+
* - `wrap(children)` — wraps the children in a FieldAuditProvider + a
|
|
7
|
+
* FormDataAuditor that watches the current `form_data`.
|
|
8
|
+
* - `merged_components` — the `field_action_components` value to feed into
|
|
9
|
+
* the form's context. Consumer-supplied slots win on collision so they
|
|
10
|
+
* can be combined with the audit overlay.
|
|
11
|
+
*
|
|
12
|
+
* When `enable_field_audit` is false this helper is a no-op: `wrap` returns
|
|
13
|
+
* its children unchanged and `merged_components` is the original prop.
|
|
14
|
+
*/
|
|
15
|
+
import type { ReactNode } from 'react';
|
|
16
|
+
import type { FieldActionComponents } from '../hazo_collab_form_view/types.js';
|
|
17
|
+
export interface UseFieldAuditWiringOptions {
|
|
18
|
+
enable_field_audit?: boolean;
|
|
19
|
+
field_action_components?: FieldActionComponents;
|
|
20
|
+
form_data: Record<string, unknown> | undefined;
|
|
21
|
+
current_user?: string;
|
|
22
|
+
/** Forwarded to FormDataAuditor — defaults to 750ms. */
|
|
23
|
+
audit_debounce_ms?: number;
|
|
24
|
+
}
|
|
25
|
+
export interface FieldAuditWiring {
|
|
26
|
+
/** Final `field_action_components` to pass into the form view's context. */
|
|
27
|
+
merged_components: FieldActionComponents | undefined;
|
|
28
|
+
/** Wraps the form view's children with the audit provider + watcher. */
|
|
29
|
+
wrap: (children: ReactNode) => ReactNode;
|
|
30
|
+
}
|
|
31
|
+
export declare function useFieldAuditWiring(options: UseFieldAuditWiringOptions): FieldAuditWiring;
|
|
32
|
+
//# sourceMappingURL=with_field_audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with_field_audit.d.ts","sourceRoot":"","sources":["../../../src/components/field_audit/with_field_audit.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAM/E,MAAM,WAAW,0BAA0B;IACzC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,uBAAuB,CAAC,EAAE,qBAAqB,CAAC;IAChD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,4EAA4E;IAC5E,iBAAiB,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACrD,wEAAwE;IACxE,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,SAAS,CAAC;CAC1C;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,gBAAgB,CAoCzF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* with_field_audit — internal helper that wires the FieldAudit feature into
|
|
3
|
+
* a form view when `enable_field_audit` is true.
|
|
4
|
+
*
|
|
5
|
+
* Returns:
|
|
6
|
+
* - `wrap(children)` — wraps the children in a FieldAuditProvider + a
|
|
7
|
+
* FormDataAuditor that watches the current `form_data`.
|
|
8
|
+
* - `merged_components` — the `field_action_components` value to feed into
|
|
9
|
+
* the form's context. Consumer-supplied slots win on collision so they
|
|
10
|
+
* can be combined with the audit overlay.
|
|
11
|
+
*
|
|
12
|
+
* When `enable_field_audit` is false this helper is a no-op: `wrap` returns
|
|
13
|
+
* its children unchanged and `merged_components` is the original prop.
|
|
14
|
+
*/
|
|
15
|
+
'use client';
|
|
16
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
|
+
import { useMemo } from 'react';
|
|
18
|
+
import { FieldAuditProvider } from './context.js';
|
|
19
|
+
import { FormDataAuditor } from './auditor.js';
|
|
20
|
+
import { FieldAuditIcon } from './field_audit_icon.js';
|
|
21
|
+
import { FieldAuditPanel } from './field_audit_panel.js';
|
|
22
|
+
export function useFieldAuditWiring(options) {
|
|
23
|
+
const { enable_field_audit, field_action_components, form_data, current_user, audit_debounce_ms, } = options;
|
|
24
|
+
const merged_components = useMemo(() => {
|
|
25
|
+
if (!enable_field_audit)
|
|
26
|
+
return field_action_components;
|
|
27
|
+
return {
|
|
28
|
+
row_end: field_action_components?.row_end ?? FieldAuditIcon,
|
|
29
|
+
row_below: field_action_components?.row_below ?? FieldAuditPanel,
|
|
30
|
+
};
|
|
31
|
+
}, [enable_field_audit, field_action_components]);
|
|
32
|
+
const wrap = useMemo(() => {
|
|
33
|
+
if (!enable_field_audit) {
|
|
34
|
+
return (children) => children;
|
|
35
|
+
}
|
|
36
|
+
return (children) => (_jsxs(FieldAuditProvider, { children: [_jsx(FormDataAuditor, { form_data: form_data, current_user: current_user, debounce_ms: audit_debounce_ms }), children] }));
|
|
37
|
+
// form_data identity must be allowed to refresh the watcher; current_user
|
|
38
|
+
// typically stable.
|
|
39
|
+
}, [enable_field_audit, form_data, current_user, audit_debounce_ms]);
|
|
40
|
+
return { merged_components, wrap };
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=with_field_audit.js.map
|