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.
Files changed (362) hide show
  1. package/CHANGE_LOG.md +115 -0
  2. package/README.md +203 -111
  3. package/dist/audit/built_in_actions.d.ts +6 -0
  4. package/dist/audit/built_in_actions.d.ts.map +1 -0
  5. package/dist/audit/built_in_actions.js +23 -0
  6. package/dist/audit/built_in_actions.js.map +1 -0
  7. package/dist/audit/intent_emitter.d.ts +4 -0
  8. package/dist/audit/intent_emitter.d.ts.map +1 -0
  9. package/dist/audit/intent_emitter.js +25 -0
  10. package/dist/audit/intent_emitter.js.map +1 -0
  11. package/dist/audit/lazy_audit_icon.d.ts +8 -0
  12. package/dist/audit/lazy_audit_icon.d.ts.map +1 -0
  13. package/dist/audit/lazy_audit_icon.js +20 -0
  14. package/dist/audit/lazy_audit_icon.js.map +1 -0
  15. package/dist/components/_internal_form_set.d.ts +6 -0
  16. package/dist/components/_internal_form_set.d.ts.map +1 -1
  17. package/dist/components/_internal_form_set.js +48 -51
  18. package/dist/components/_internal_form_set.js.map +1 -1
  19. package/dist/components/clarification/clarification_item_body.d.ts +1 -1
  20. package/dist/components/clarification/clarification_item_body.d.ts.map +1 -1
  21. package/dist/components/clarification/resolution_status_strip.d.ts +1 -1
  22. package/dist/components/clarification/resolution_status_strip.d.ts.map +1 -1
  23. package/dist/components/field_audit/auditor.d.ts +30 -0
  24. package/dist/components/field_audit/auditor.d.ts.map +1 -0
  25. package/dist/components/field_audit/auditor.js +91 -0
  26. package/dist/components/field_audit/auditor.js.map +1 -0
  27. package/dist/components/field_audit/context.d.ts +29 -0
  28. package/dist/components/field_audit/context.d.ts.map +1 -0
  29. package/dist/components/field_audit/context.js +123 -0
  30. package/dist/components/field_audit/context.js.map +1 -0
  31. package/dist/components/field_audit/field_audit_icon.d.ts +12 -0
  32. package/dist/components/field_audit/field_audit_icon.d.ts.map +1 -0
  33. package/dist/components/field_audit/field_audit_icon.js +23 -0
  34. package/dist/components/field_audit/field_audit_icon.js.map +1 -0
  35. package/dist/components/field_audit/field_audit_panel.d.ts +9 -0
  36. package/dist/components/field_audit/field_audit_panel.d.ts.map +1 -0
  37. package/dist/components/field_audit/field_audit_panel.js +54 -0
  38. package/dist/components/field_audit/field_audit_panel.js.map +1 -0
  39. package/dist/components/field_audit/index.d.ts +33 -0
  40. package/dist/components/field_audit/index.d.ts.map +1 -0
  41. package/dist/components/field_audit/index.js +29 -0
  42. package/dist/components/field_audit/index.js.map +1 -0
  43. package/dist/components/field_audit/types.d.ts +75 -0
  44. package/dist/components/field_audit/types.d.ts.map +1 -0
  45. package/dist/components/field_audit/types.js +10 -0
  46. package/dist/components/field_audit/types.js.map +1 -0
  47. package/dist/components/field_audit/with_field_audit.d.ts +32 -0
  48. package/dist/components/field_audit/with_field_audit.d.ts.map +1 -0
  49. package/dist/components/field_audit/with_field_audit.js +42 -0
  50. package/dist/components/field_audit/with_field_audit.js.map +1 -0
  51. package/dist/components/hazo_collab_form_checkbox.d.ts.map +1 -1
  52. package/dist/components/hazo_collab_form_checkbox.js +3 -1
  53. package/dist/components/hazo_collab_form_checkbox.js.map +1 -1
  54. package/dist/components/hazo_collab_form_doc.d.ts.map +1 -1
  55. package/dist/components/hazo_collab_form_doc.js +4 -1
  56. package/dist/components/hazo_collab_form_doc.js.map +1 -1
  57. package/dist/components/hazo_collab_form_radio.d.ts.map +1 -1
  58. package/dist/components/hazo_collab_form_radio.js +4 -2
  59. package/dist/components/hazo_collab_form_radio.js.map +1 -1
  60. package/dist/components/hazo_collab_form_view/context.d.ts +7 -0
  61. package/dist/components/hazo_collab_form_view/context.d.ts.map +1 -1
  62. package/dist/components/hazo_collab_form_view/context.js +46 -0
  63. package/dist/components/hazo_collab_form_view/context.js.map +1 -1
  64. package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.d.ts +8 -1
  65. package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.d.ts.map +1 -1
  66. package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.js +4 -2
  67. package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.js.map +1 -1
  68. package/dist/components/hazo_collab_form_view/index.d.ts +1 -1
  69. package/dist/components/hazo_collab_form_view/index.d.ts.map +1 -1
  70. package/dist/components/hazo_collab_form_view/index.js +59 -3
  71. package/dist/components/hazo_collab_form_view/index.js.map +1 -1
  72. package/dist/components/hazo_collab_form_view/types.d.ts +134 -0
  73. package/dist/components/hazo_collab_form_view/types.d.ts.map +1 -1
  74. package/dist/components/hazo_collab_form_view/views/approval_view.d.ts.map +1 -1
  75. package/dist/components/hazo_collab_form_view/views/approval_view.js +3 -1
  76. package/dist/components/hazo_collab_form_view/views/approval_view.js.map +1 -1
  77. package/dist/components/hazo_collab_form_view/views/edit_view.d.ts.map +1 -1
  78. package/dist/components/hazo_collab_form_view/views/edit_view.js +8 -3
  79. package/dist/components/hazo_collab_form_view/views/edit_view.js.map +1 -1
  80. package/dist/components/hazo_collab_form_view/views/print_view.d.ts.map +1 -1
  81. package/dist/components/hazo_collab_form_view/views/print_view.js +3 -1
  82. package/dist/components/hazo_collab_form_view/views/print_view.js.map +1 -1
  83. package/dist/components/hazo_collab_form_view/views/summary_view.d.ts.map +1 -1
  84. package/dist/components/hazo_collab_form_view/views/summary_view.js +4 -2
  85. package/dist/components/hazo_collab_form_view/views/summary_view.js.map +1 -1
  86. package/dist/components/hazo_data_form/group_renderer.d.ts +8 -2
  87. package/dist/components/hazo_data_form/group_renderer.d.ts.map +1 -1
  88. package/dist/components/hazo_data_form/group_renderer.js +3 -3
  89. package/dist/components/hazo_data_form/group_renderer.js.map +1 -1
  90. package/dist/components/hazo_data_form/hazo_data_form.d.ts +2 -1
  91. package/dist/components/hazo_data_form/hazo_data_form.d.ts.map +1 -1
  92. package/dist/components/hazo_data_form/hazo_data_form.js +47 -6
  93. package/dist/components/hazo_data_form/hazo_data_form.js.map +1 -1
  94. package/dist/components/hazo_data_form/section_renderer.d.ts +4 -2
  95. package/dist/components/hazo_data_form/section_renderer.d.ts.map +1 -1
  96. package/dist/components/hazo_data_form/section_renderer.js +2 -2
  97. package/dist/components/hazo_data_form/section_renderer.js.map +1 -1
  98. package/dist/components/hazo_data_form/shared/data_form_field_layout.d.ts +4 -1
  99. package/dist/components/hazo_data_form/shared/data_form_field_layout.d.ts.map +1 -1
  100. package/dist/components/hazo_data_form/shared/data_form_field_layout.js +34 -8
  101. package/dist/components/hazo_data_form/shared/data_form_field_layout.js.map +1 -1
  102. package/dist/components/hazo_data_form/types.d.ts +56 -1
  103. package/dist/components/hazo_data_form/types.d.ts.map +1 -1
  104. package/dist/components/index.d.ts +5 -5
  105. package/dist/components/index.d.ts.map +1 -1
  106. package/dist/components/index.js +4 -4
  107. package/dist/components/index.js.map +1 -1
  108. package/dist/components/shared/base_field_layout.d.ts.map +1 -1
  109. package/dist/components/shared/base_field_layout.js +5 -1
  110. package/dist/components/shared/base_field_layout.js.map +1 -1
  111. package/dist/components/shared/field_action_array_slot.d.ts +10 -0
  112. package/dist/components/shared/field_action_array_slot.d.ts.map +1 -0
  113. package/dist/components/shared/field_action_array_slot.js +33 -0
  114. package/dist/components/shared/field_action_array_slot.js.map +1 -0
  115. package/dist/components/shared/field_action_slot.d.ts +22 -0
  116. package/dist/components/shared/field_action_slot.d.ts.map +1 -0
  117. package/dist/components/shared/field_action_slot.js +20 -0
  118. package/dist/components/shared/field_action_slot.js.map +1 -0
  119. package/dist/components/shared/ihelp_icon.d.ts +1 -1
  120. package/dist/components/shared/ihelp_icon.js +1 -1
  121. package/dist/components/shared/rule_result_card.js +1 -1
  122. package/dist/components/shared/rule_result_card.js.map +1 -1
  123. package/dist/components/shared/use_field_action_slot.d.ts +37 -0
  124. package/dist/components/shared/use_field_action_slot.d.ts.map +1 -0
  125. package/dist/components/shared/use_field_action_slot.js +77 -0
  126. package/dist/components/shared/use_field_action_slot.js.map +1 -0
  127. package/dist/components/thread_form/components/key_info_drawer.d.ts +7 -1
  128. package/dist/components/thread_form/components/key_info_drawer.d.ts.map +1 -1
  129. package/dist/components/thread_form/components/key_info_drawer.js +2 -2
  130. package/dist/components/thread_form/components/key_info_drawer.js.map +1 -1
  131. package/dist/components/thread_form/components/send_back_message.d.ts +1 -1
  132. package/dist/components/thread_form/components/send_back_message.d.ts.map +1 -1
  133. package/dist/components/thread_form/hooks/use_file_pipeline.d.ts +1 -1
  134. package/dist/components/thread_form/hooks/use_file_pipeline.d.ts.map +1 -1
  135. package/dist/components/thread_form/hooks/use_file_pipeline.js +1 -1
  136. package/dist/components/thread_form/hooks/use_file_pipeline.js.map +1 -1
  137. package/dist/components/thread_form/index.d.ts +1 -1
  138. package/dist/components/thread_form/index.d.ts.map +1 -1
  139. package/dist/components/thread_form/index.js.map +1 -1
  140. package/dist/components/thread_form/thread_form.d.ts.map +1 -1
  141. package/dist/components/thread_form/thread_form.js +3 -3
  142. package/dist/components/thread_form/thread_form.js.map +1 -1
  143. package/dist/components/thread_form/types.d.ts +32 -4
  144. package/dist/components/thread_form/types.d.ts.map +1 -1
  145. package/dist/components/thread_form/types.js.map +1 -1
  146. package/dist/lib/index.d.ts +0 -2
  147. package/dist/lib/index.d.ts.map +1 -1
  148. package/dist/lib/index.js +0 -2
  149. package/dist/lib/index.js.map +1 -1
  150. package/dist/lib/resolution_handler.d.ts +1 -1
  151. package/dist/lib/resolution_handler.d.ts.map +1 -1
  152. package/dist/lib/resolve_variable.d.ts +1 -1
  153. package/dist/lib/resolve_variable.d.ts.map +1 -1
  154. package/dist/types/clarification.d.ts +1 -1
  155. package/dist/types/clarification.d.ts.map +1 -1
  156. package/dist/types/field_action.d.ts +25 -0
  157. package/dist/types/field_action.d.ts.map +1 -0
  158. package/dist/types/field_action.js +8 -0
  159. package/dist/types/field_action.js.map +1 -0
  160. package/dist/types/index.d.ts +3 -6
  161. package/dist/types/index.d.ts.map +1 -1
  162. package/dist/types/index.js +1 -3
  163. package/dist/types/index.js.map +1 -1
  164. package/dist/types/{fb_form_data.d.ts → shared_data.d.ts} +1 -3
  165. package/dist/types/shared_data.d.ts.map +1 -0
  166. package/dist/types/{fb_form_data.js → shared_data.js} +1 -2
  167. package/dist/types/shared_data.js.map +1 -0
  168. package/dist/utils/dev_file_manager.d.ts +1 -1
  169. package/dist/utils/dev_file_manager.js +1 -1
  170. package/dist/{components/hazo_fb_form/shared → utils}/format.d.ts +2 -2
  171. package/dist/utils/format.d.ts.map +1 -0
  172. package/dist/{components/hazo_fb_form/shared → utils}/format.js +1 -1
  173. package/dist/utils/format.js.map +1 -0
  174. package/dist/utils/index.d.ts +1 -9
  175. package/dist/utils/index.d.ts.map +1 -1
  176. package/dist/utils/index.js +3 -15
  177. package/dist/utils/index.js.map +1 -1
  178. package/package.json +6 -1
  179. package/dist/components/hazo_fb_form/components/backoffice_run_button.d.ts +0 -18
  180. package/dist/components/hazo_fb_form/components/backoffice_run_button.d.ts.map +0 -1
  181. package/dist/components/hazo_fb_form/components/backoffice_run_button.js +0 -23
  182. package/dist/components/hazo_fb_form/components/backoffice_run_button.js.map +0 -1
  183. package/dist/components/hazo_fb_form/components/draft_clarification_card.d.ts +0 -39
  184. package/dist/components/hazo_fb_form/components/draft_clarification_card.d.ts.map +0 -1
  185. package/dist/components/hazo_fb_form/components/draft_clarification_card.js +0 -94
  186. package/dist/components/hazo_fb_form/components/draft_clarification_card.js.map +0 -1
  187. package/dist/components/hazo_fb_form/components/fb_document_type_editor.d.ts +0 -11
  188. package/dist/components/hazo_fb_form/components/fb_document_type_editor.d.ts.map +0 -1
  189. package/dist/components/hazo_fb_form/components/fb_document_type_editor.js +0 -82
  190. package/dist/components/hazo_fb_form/components/fb_document_type_editor.js.map +0 -1
  191. package/dist/components/hazo_fb_form/components/fb_tag_editor.d.ts +0 -11
  192. package/dist/components/hazo_fb_form/components/fb_tag_editor.d.ts.map +0 -1
  193. package/dist/components/hazo_fb_form/components/fb_tag_editor.js +0 -107
  194. package/dist/components/hazo_fb_form/components/fb_tag_editor.js.map +0 -1
  195. package/dist/components/hazo_fb_form/components/front_office_stepper.d.ts +0 -15
  196. package/dist/components/hazo_fb_form/components/front_office_stepper.d.ts.map +0 -1
  197. package/dist/components/hazo_fb_form/components/front_office_stepper.js +0 -21
  198. package/dist/components/hazo_fb_form/components/front_office_stepper.js.map +0 -1
  199. package/dist/components/hazo_fb_form/components/instance_sidebar.d.ts +0 -21
  200. package/dist/components/hazo_fb_form/components/instance_sidebar.d.ts.map +0 -1
  201. package/dist/components/hazo_fb_form/components/instance_sidebar.js +0 -58
  202. package/dist/components/hazo_fb_form/components/instance_sidebar.js.map +0 -1
  203. package/dist/components/hazo_fb_form/components/reject_clarification_dialog.d.ts +0 -15
  204. package/dist/components/hazo_fb_form/components/reject_clarification_dialog.d.ts.map +0 -1
  205. package/dist/components/hazo_fb_form/components/reject_clarification_dialog.js +0 -26
  206. package/dist/components/hazo_fb_form/components/reject_clarification_dialog.js.map +0 -1
  207. package/dist/components/hazo_fb_form/components/run_button.d.ts +0 -19
  208. package/dist/components/hazo_fb_form/components/run_button.d.ts.map +0 -1
  209. package/dist/components/hazo_fb_form/components/run_button.js +0 -38
  210. package/dist/components/hazo_fb_form/components/run_button.js.map +0 -1
  211. package/dist/components/hazo_fb_form/components/run_details_dialog.d.ts +0 -17
  212. package/dist/components/hazo_fb_form/components/run_details_dialog.d.ts.map +0 -1
  213. package/dist/components/hazo_fb_form/components/run_details_dialog.js +0 -35
  214. package/dist/components/hazo_fb_form/components/run_details_dialog.js.map +0 -1
  215. package/dist/components/hazo_fb_form/components/sent_clarification_group.d.ts +0 -30
  216. package/dist/components/hazo_fb_form/components/sent_clarification_group.d.ts.map +0 -1
  217. package/dist/components/hazo_fb_form/components/sent_clarification_group.js +0 -76
  218. package/dist/components/hazo_fb_form/components/sent_clarification_group.js.map +0 -1
  219. package/dist/components/hazo_fb_form/components/tag_pill.d.ts +0 -15
  220. package/dist/components/hazo_fb_form/components/tag_pill.d.ts.map +0 -1
  221. package/dist/components/hazo_fb_form/components/tag_pill.js +0 -15
  222. package/dist/components/hazo_fb_form/components/tag_pill.js.map +0 -1
  223. package/dist/components/hazo_fb_form/context.d.ts +0 -135
  224. package/dist/components/hazo_fb_form/context.d.ts.map +0 -1
  225. package/dist/components/hazo_fb_form/context.js +0 -13
  226. package/dist/components/hazo_fb_form/context.js.map +0 -1
  227. package/dist/components/hazo_fb_form/hazo_fb_form.d.ts +0 -13
  228. package/dist/components/hazo_fb_form/hazo_fb_form.d.ts.map +0 -1
  229. package/dist/components/hazo_fb_form/hazo_fb_form.js +0 -1188
  230. package/dist/components/hazo_fb_form/hazo_fb_form.js.map +0 -1
  231. package/dist/components/hazo_fb_form/hooks/use_fb_form_state.d.ts +0 -58
  232. package/dist/components/hazo_fb_form/hooks/use_fb_form_state.d.ts.map +0 -1
  233. package/dist/components/hazo_fb_form/hooks/use_fb_form_state.js +0 -919
  234. package/dist/components/hazo_fb_form/hooks/use_fb_form_state.js.map +0 -1
  235. package/dist/components/hazo_fb_form/hooks/use_llm_run.d.ts +0 -52
  236. package/dist/components/hazo_fb_form/hooks/use_llm_run.d.ts.map +0 -1
  237. package/dist/components/hazo_fb_form/hooks/use_llm_run.js +0 -1863
  238. package/dist/components/hazo_fb_form/hooks/use_llm_run.js.map +0 -1
  239. package/dist/components/hazo_fb_form/index.d.ts +0 -29
  240. package/dist/components/hazo_fb_form/index.d.ts.map +0 -1
  241. package/dist/components/hazo_fb_form/index.js +0 -19
  242. package/dist/components/hazo_fb_form/index.js.map +0 -1
  243. package/dist/components/hazo_fb_form/shared/agent_stepper.d.ts +0 -9
  244. package/dist/components/hazo_fb_form/shared/agent_stepper.d.ts.map +0 -1
  245. package/dist/components/hazo_fb_form/shared/agent_stepper.js +0 -17
  246. package/dist/components/hazo_fb_form/shared/agent_stepper.js.map +0 -1
  247. package/dist/components/hazo_fb_form/shared/clarification_helpers.d.ts +0 -15
  248. package/dist/components/hazo_fb_form/shared/clarification_helpers.d.ts.map +0 -1
  249. package/dist/components/hazo_fb_form/shared/clarification_helpers.js +0 -23
  250. package/dist/components/hazo_fb_form/shared/clarification_helpers.js.map +0 -1
  251. package/dist/components/hazo_fb_form/shared/file_status_accordion.d.ts +0 -9
  252. package/dist/components/hazo_fb_form/shared/file_status_accordion.d.ts.map +0 -1
  253. package/dist/components/hazo_fb_form/shared/file_status_accordion.js +0 -39
  254. package/dist/components/hazo_fb_form/shared/file_status_accordion.js.map +0 -1
  255. package/dist/components/hazo_fb_form/shared/file_utils.d.ts +0 -9
  256. package/dist/components/hazo_fb_form/shared/file_utils.d.ts.map +0 -1
  257. package/dist/components/hazo_fb_form/shared/file_utils.js +0 -31
  258. package/dist/components/hazo_fb_form/shared/file_utils.js.map +0 -1
  259. package/dist/components/hazo_fb_form/shared/format.d.ts.map +0 -1
  260. package/dist/components/hazo_fb_form/shared/format.js.map +0 -1
  261. package/dist/components/hazo_fb_form/shared/group_debug_icon.d.ts +0 -15
  262. package/dist/components/hazo_fb_form/shared/group_debug_icon.d.ts.map +0 -1
  263. package/dist/components/hazo_fb_form/shared/group_debug_icon.js +0 -48
  264. package/dist/components/hazo_fb_form/shared/group_debug_icon.js.map +0 -1
  265. package/dist/components/hazo_fb_form/shared/index.d.ts +0 -10
  266. package/dist/components/hazo_fb_form/shared/index.d.ts.map +0 -1
  267. package/dist/components/hazo_fb_form/shared/index.js +0 -9
  268. package/dist/components/hazo_fb_form/shared/index.js.map +0 -1
  269. package/dist/components/hazo_fb_form/shared/pdf_side_panel.d.ts +0 -22
  270. package/dist/components/hazo_fb_form/shared/pdf_side_panel.d.ts.map +0 -1
  271. package/dist/components/hazo_fb_form/shared/pdf_side_panel.js +0 -10
  272. package/dist/components/hazo_fb_form/shared/pdf_side_panel.js.map +0 -1
  273. package/dist/components/hazo_fb_form/shared/send_back_item_card.d.ts +0 -44
  274. package/dist/components/hazo_fb_form/shared/send_back_item_card.d.ts.map +0 -1
  275. package/dist/components/hazo_fb_form/shared/send_back_item_card.js +0 -80
  276. package/dist/components/hazo_fb_form/shared/send_back_item_card.js.map +0 -1
  277. package/dist/components/hazo_fb_form/shared/use_pdf_viewer.d.ts +0 -28
  278. package/dist/components/hazo_fb_form/shared/use_pdf_viewer.d.ts.map +0 -1
  279. package/dist/components/hazo_fb_form/shared/use_pdf_viewer.js +0 -46
  280. package/dist/components/hazo_fb_form/shared/use_pdf_viewer.js.map +0 -1
  281. package/dist/components/hazo_fb_form/types.d.ts +0 -372
  282. package/dist/components/hazo_fb_form/types.d.ts.map +0 -1
  283. package/dist/components/hazo_fb_form/types.js +0 -5
  284. package/dist/components/hazo_fb_form/types.js.map +0 -1
  285. package/dist/components/hazo_fb_form/views/back_office_view.d.ts +0 -7
  286. package/dist/components/hazo_fb_form/views/back_office_view.d.ts.map +0 -1
  287. package/dist/components/hazo_fb_form/views/back_office_view.js +0 -425
  288. package/dist/components/hazo_fb_form/views/back_office_view.js.map +0 -1
  289. package/dist/components/hazo_fb_form/views/clarifications_view.d.ts +0 -16
  290. package/dist/components/hazo_fb_form/views/clarifications_view.d.ts.map +0 -1
  291. package/dist/components/hazo_fb_form/views/clarifications_view.js +0 -291
  292. package/dist/components/hazo_fb_form/views/clarifications_view.js.map +0 -1
  293. package/dist/components/hazo_fb_form/views/client_data_view.d.ts +0 -6
  294. package/dist/components/hazo_fb_form/views/client_data_view.d.ts.map +0 -1
  295. package/dist/components/hazo_fb_form/views/client_data_view.js +0 -39
  296. package/dist/components/hazo_fb_form/views/client_data_view.js.map +0 -1
  297. package/dist/components/hazo_fb_form/views/front_office_view.d.ts +0 -6
  298. package/dist/components/hazo_fb_form/views/front_office_view.d.ts.map +0 -1
  299. package/dist/components/hazo_fb_form/views/front_office_view.js +0 -1351
  300. package/dist/components/hazo_fb_form/views/front_office_view.js.map +0 -1
  301. package/dist/components/hazo_fb_form/views/interim_view.d.ts +0 -8
  302. package/dist/components/hazo_fb_form/views/interim_view.d.ts.map +0 -1
  303. package/dist/components/hazo_fb_form/views/interim_view.js +0 -535
  304. package/dist/components/hazo_fb_form/views/interim_view.js.map +0 -1
  305. package/dist/components/hazo_fb_form/views/review_queue_view.d.ts +0 -14
  306. package/dist/components/hazo_fb_form/views/review_queue_view.d.ts.map +0 -1
  307. package/dist/components/hazo_fb_form/views/review_queue_view.js +0 -230
  308. package/dist/components/hazo_fb_form/views/review_queue_view.js.map +0 -1
  309. package/dist/components/hazo_fb_form/views/send_back_view.d.ts +0 -13
  310. package/dist/components/hazo_fb_form/views/send_back_view.d.ts.map +0 -1
  311. package/dist/components/hazo_fb_form/views/send_back_view.js +0 -258
  312. package/dist/components/hazo_fb_form/views/send_back_view.js.map +0 -1
  313. package/dist/components/hazo_fb_form/views/summary_review_view.d.ts +0 -17
  314. package/dist/components/hazo_fb_form/views/summary_review_view.d.ts.map +0 -1
  315. package/dist/components/hazo_fb_form/views/summary_review_view.js +0 -258
  316. package/dist/components/hazo_fb_form/views/summary_review_view.js.map +0 -1
  317. package/dist/components/shared/json_data_panel/index.d.ts +0 -3
  318. package/dist/components/shared/json_data_panel/index.d.ts.map +0 -1
  319. package/dist/components/shared/json_data_panel/index.js +0 -2
  320. package/dist/components/shared/json_data_panel/index.js.map +0 -1
  321. package/dist/components/shared/json_data_panel/json_data_panel.d.ts +0 -28
  322. package/dist/components/shared/json_data_panel/json_data_panel.d.ts.map +0 -1
  323. package/dist/components/shared/json_data_panel/json_data_panel.js +0 -156
  324. package/dist/components/shared/json_data_panel/json_data_panel.js.map +0 -1
  325. package/dist/lib/fb_form_handler.d.ts +0 -63
  326. package/dist/lib/fb_form_handler.d.ts.map +0 -1
  327. package/dist/lib/fb_form_handler.js +0 -425
  328. package/dist/lib/fb_form_handler.js.map +0 -1
  329. package/dist/types/fb_form_data.d.ts.map +0 -1
  330. package/dist/types/fb_form_data.js.map +0 -1
  331. package/dist/types/fb_form_data_v1.d.ts +0 -250
  332. package/dist/types/fb_form_data_v1.d.ts.map +0 -1
  333. package/dist/types/fb_form_data_v1.js +0 -117
  334. package/dist/types/fb_form_data_v1.js.map +0 -1
  335. package/dist/types/fb_form_instance.d.ts +0 -49
  336. package/dist/types/fb_form_instance.d.ts.map +0 -1
  337. package/dist/types/fb_form_instance.js +0 -10
  338. package/dist/types/fb_form_instance.js.map +0 -1
  339. package/dist/utils/fb_data_adapter.d.ts +0 -33
  340. package/dist/utils/fb_data_adapter.d.ts.map +0 -1
  341. package/dist/utils/fb_data_adapter.js +0 -436
  342. package/dist/utils/fb_data_adapter.js.map +0 -1
  343. package/dist/utils/fb_data_adapter_v2.d.ts +0 -17
  344. package/dist/utils/fb_data_adapter_v2.d.ts.map +0 -1
  345. package/dist/utils/fb_data_adapter_v2.js +0 -483
  346. package/dist/utils/fb_data_adapter_v2.js.map +0 -1
  347. package/dist/utils/fb_data_helpers.d.ts +0 -86
  348. package/dist/utils/fb_data_helpers.d.ts.map +0 -1
  349. package/dist/utils/fb_data_helpers.js +0 -269
  350. package/dist/utils/fb_data_helpers.js.map +0 -1
  351. package/dist/utils/fb_data_mutations.d.ts +0 -43
  352. package/dist/utils/fb_data_mutations.d.ts.map +0 -1
  353. package/dist/utils/fb_data_mutations.js +0 -379
  354. package/dist/utils/fb_data_mutations.js.map +0 -1
  355. package/dist/utils/fb_data_mutations_v2.d.ts +0 -46
  356. package/dist/utils/fb_data_mutations_v2.d.ts.map +0 -1
  357. package/dist/utils/fb_data_mutations_v2.js +0 -341
  358. package/dist/utils/fb_data_mutations_v2.js.map +0 -1
  359. package/dist/utils/fb_data_queries.d.ts +0 -81
  360. package/dist/utils/fb_data_queries.d.ts.map +0 -1
  361. package/dist/utils/fb_data_queries.js +0 -354
  362. 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