hazo_collab_forms 3.0.18 → 3.1.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 (139) hide show
  1. package/CHANGE_LOG.md +66 -0
  2. package/README.md +15 -0
  3. package/dist/components/clarification/clarification_card.d.ts.map +1 -1
  4. package/dist/components/clarification/clarification_card.js +5 -4
  5. package/dist/components/clarification/clarification_card.js.map +1 -1
  6. package/dist/components/clarification/clarification_doc_reference.d.ts +7 -0
  7. package/dist/components/clarification/clarification_doc_reference.d.ts.map +1 -1
  8. package/dist/components/clarification/clarification_doc_reference.js +2 -2
  9. package/dist/components/clarification/clarification_doc_reference.js.map +1 -1
  10. package/dist/components/clarification/clarification_group_card.js +2 -2
  11. package/dist/components/clarification/clarification_group_card.js.map +1 -1
  12. package/dist/components/clarification/clarification_item_body.d.ts +1 -7
  13. package/dist/components/clarification/clarification_item_body.d.ts.map +1 -1
  14. package/dist/components/clarification/clarification_item_body.js +6 -8
  15. package/dist/components/clarification/clarification_item_body.js.map +1 -1
  16. package/dist/components/clarification/clarification_response_form.d.ts +1 -3
  17. package/dist/components/clarification/clarification_response_form.d.ts.map +1 -1
  18. package/dist/components/clarification/clarification_response_form.js +31 -95
  19. package/dist/components/clarification/clarification_response_form.js.map +1 -1
  20. package/dist/components/clarification/clarification_status_config.d.ts.map +1 -1
  21. package/dist/components/clarification/clarification_status_config.js +12 -8
  22. package/dist/components/clarification/clarification_status_config.js.map +1 -1
  23. package/dist/components/clarification/clarification_thread.d.ts +3 -1
  24. package/dist/components/clarification/clarification_thread.d.ts.map +1 -1
  25. package/dist/components/clarification/clarification_thread.js +7 -7
  26. package/dist/components/clarification/clarification_thread.js.map +1 -1
  27. package/dist/components/clarification/use_response_files.d.ts +27 -0
  28. package/dist/components/clarification/use_response_files.d.ts.map +1 -0
  29. package/dist/components/clarification/use_response_files.js +98 -0
  30. package/dist/components/clarification/use_response_files.js.map +1 -0
  31. package/dist/components/hazo_collab_form_file_textbox/file_textbox_panel.js +1 -1
  32. package/dist/components/hazo_collab_form_file_textbox/file_textbox_panel.js.map +1 -1
  33. package/dist/components/hazo_fb_form/context.d.ts +5 -0
  34. package/dist/components/hazo_fb_form/context.d.ts.map +1 -1
  35. package/dist/components/hazo_fb_form/context.js.map +1 -1
  36. package/dist/components/hazo_fb_form/hazo_fb_form.d.ts.map +1 -1
  37. package/dist/components/hazo_fb_form/hazo_fb_form.js +188 -17
  38. package/dist/components/hazo_fb_form/hazo_fb_form.js.map +1 -1
  39. package/dist/components/hazo_fb_form/hooks/use_fb_form_state.js +1 -1
  40. package/dist/components/hazo_fb_form/hooks/use_fb_form_state.js.map +1 -1
  41. package/dist/components/hazo_fb_form/shared/send_back_item_card.d.ts +8 -1
  42. package/dist/components/hazo_fb_form/shared/send_back_item_card.d.ts.map +1 -1
  43. package/dist/components/hazo_fb_form/shared/send_back_item_card.js +38 -2
  44. package/dist/components/hazo_fb_form/shared/send_back_item_card.js.map +1 -1
  45. package/dist/components/hazo_fb_form/types.d.ts +12 -0
  46. package/dist/components/hazo_fb_form/types.d.ts.map +1 -1
  47. package/dist/components/hazo_fb_form/views/front_office_view.d.ts.map +1 -1
  48. package/dist/components/hazo_fb_form/views/front_office_view.js +163 -34
  49. package/dist/components/hazo_fb_form/views/front_office_view.js.map +1 -1
  50. package/dist/components/hazo_fb_form/views/review_queue_view.d.ts.map +1 -1
  51. package/dist/components/hazo_fb_form/views/review_queue_view.js +69 -18
  52. package/dist/components/hazo_fb_form/views/review_queue_view.js.map +1 -1
  53. package/dist/components/hazo_fb_form/views/send_back_view.d.ts.map +1 -1
  54. package/dist/components/hazo_fb_form/views/send_back_view.js +58 -3
  55. package/dist/components/hazo_fb_form/views/send_back_view.js.map +1 -1
  56. package/dist/components/hazo_rfi_box/hazo_rfi_box.d.ts +55 -0
  57. package/dist/components/hazo_rfi_box/hazo_rfi_box.d.ts.map +1 -0
  58. package/dist/components/hazo_rfi_box/hazo_rfi_box.js +54 -0
  59. package/dist/components/hazo_rfi_box/hazo_rfi_box.js.map +1 -0
  60. package/dist/components/hazo_rfi_box/index.d.ts +9 -0
  61. package/dist/components/hazo_rfi_box/index.d.ts.map +1 -0
  62. package/dist/components/hazo_rfi_box/index.js +5 -0
  63. package/dist/components/hazo_rfi_box/index.js.map +1 -0
  64. package/dist/components/hazo_rfi_box/rfi_option_tag_selector.d.ts +21 -0
  65. package/dist/components/hazo_rfi_box/rfi_option_tag_selector.d.ts.map +1 -0
  66. package/dist/components/hazo_rfi_box/rfi_option_tag_selector.js +47 -0
  67. package/dist/components/hazo_rfi_box/rfi_option_tag_selector.js.map +1 -0
  68. package/dist/components/hazo_rfi_box/rfi_review_actions.d.ts +11 -0
  69. package/dist/components/hazo_rfi_box/rfi_review_actions.d.ts.map +1 -0
  70. package/dist/components/hazo_rfi_box/rfi_review_actions.js +10 -0
  71. package/dist/components/hazo_rfi_box/rfi_review_actions.js.map +1 -0
  72. package/dist/components/hazo_rfi_box/rfi_send_back_form.d.ts +23 -0
  73. package/dist/components/hazo_rfi_box/rfi_send_back_form.d.ts.map +1 -0
  74. package/dist/components/hazo_rfi_box/rfi_send_back_form.js +22 -0
  75. package/dist/components/hazo_rfi_box/rfi_send_back_form.js.map +1 -0
  76. package/dist/components/hazo_validation_rule_editor/components/clarification_settings.d.ts +4 -1
  77. package/dist/components/hazo_validation_rule_editor/components/clarification_settings.d.ts.map +1 -1
  78. package/dist/components/hazo_validation_rule_editor/components/clarification_settings.js +15 -3
  79. package/dist/components/hazo_validation_rule_editor/components/clarification_settings.js.map +1 -1
  80. package/dist/components/hazo_validation_rule_editor/components/rule_editor.d.ts.map +1 -1
  81. package/dist/components/hazo_validation_rule_editor/components/rule_editor.js +2 -2
  82. package/dist/components/hazo_validation_rule_editor/components/rule_editor.js.map +1 -1
  83. package/dist/components/hazo_validation_rule_editor/context.d.ts +3 -1
  84. package/dist/components/hazo_validation_rule_editor/context.d.ts.map +1 -1
  85. package/dist/components/hazo_validation_rule_editor/context.js +5 -2
  86. package/dist/components/hazo_validation_rule_editor/context.js.map +1 -1
  87. package/dist/components/hazo_validation_rule_editor/types.d.ts +5 -0
  88. package/dist/components/hazo_validation_rule_editor/types.d.ts.map +1 -1
  89. package/dist/components/hazo_validation_rule_editor/validation_rule_editor.d.ts +1 -1
  90. package/dist/components/hazo_validation_rule_editor/validation_rule_editor.d.ts.map +1 -1
  91. package/dist/components/hazo_validation_rule_editor/validation_rule_editor.js +2 -2
  92. package/dist/components/hazo_validation_rule_editor/validation_rule_editor.js.map +1 -1
  93. package/dist/components/index.d.ts +4 -0
  94. package/dist/components/index.d.ts.map +1 -1
  95. package/dist/components/index.js +3 -0
  96. package/dist/components/index.js.map +1 -1
  97. package/dist/lib/fb_form_handler.d.ts.map +1 -1
  98. package/dist/lib/fb_form_handler.js +148 -0
  99. package/dist/lib/fb_form_handler.js.map +1 -1
  100. package/dist/types/clarification.d.ts +11 -1
  101. package/dist/types/clarification.d.ts.map +1 -1
  102. package/dist/types/fb_form_data.d.ts +216 -0
  103. package/dist/types/fb_form_data.d.ts.map +1 -0
  104. package/dist/types/fb_form_data.js +117 -0
  105. package/dist/types/fb_form_data.js.map +1 -0
  106. package/dist/types/fb_form_instance.d.ts +9 -4
  107. package/dist/types/fb_form_instance.d.ts.map +1 -1
  108. package/dist/types/fb_form_instance.js.map +1 -1
  109. package/dist/types/fb_response_types.d.ts +23 -0
  110. package/dist/types/fb_response_types.d.ts.map +1 -0
  111. package/dist/types/fb_response_types.js +5 -0
  112. package/dist/types/fb_response_types.js.map +1 -0
  113. package/dist/types/index.d.ts +3 -0
  114. package/dist/types/index.d.ts.map +1 -1
  115. package/dist/types/index.js +1 -0
  116. package/dist/types/index.js.map +1 -1
  117. package/dist/types/validation.d.ts +2 -0
  118. package/dist/types/validation.d.ts.map +1 -1
  119. package/dist/utils/fb_data_adapter.d.ts +28 -0
  120. package/dist/utils/fb_data_adapter.d.ts.map +1 -0
  121. package/dist/utils/fb_data_adapter.js +385 -0
  122. package/dist/utils/fb_data_adapter.js.map +1 -0
  123. package/dist/utils/fb_data_helpers.d.ts +86 -0
  124. package/dist/utils/fb_data_helpers.d.ts.map +1 -0
  125. package/dist/utils/fb_data_helpers.js +269 -0
  126. package/dist/utils/fb_data_helpers.js.map +1 -0
  127. package/dist/utils/fb_data_mutations.d.ts +43 -0
  128. package/dist/utils/fb_data_mutations.d.ts.map +1 -0
  129. package/dist/utils/fb_data_mutations.js +379 -0
  130. package/dist/utils/fb_data_mutations.js.map +1 -0
  131. package/dist/utils/index.d.ts +5 -0
  132. package/dist/utils/index.d.ts.map +1 -1
  133. package/dist/utils/index.js +8 -0
  134. package/dist/utils/index.js.map +1 -1
  135. package/dist/utils/resolve_response_set.d.ts +8 -0
  136. package/dist/utils/resolve_response_set.d.ts.map +1 -0
  137. package/dist/utils/resolve_response_set.js +37 -0
  138. package/dist/utils/resolve_response_set.js.map +1 -0
  139. package/package.json +1 -1
@@ -0,0 +1,269 @@
1
+ /**
2
+ * Read helpers for the hierarchical FB form data model.
3
+ *
4
+ * These functions walk the data[] tree and extract flat views
5
+ * that existing components and views can consume.
6
+ */
7
+ /**
8
+ * Walk all processed_data nodes in the tree, calling the visitor for each.
9
+ * Handles both root entries and nested clarification blocks recursively.
10
+ */
11
+ function walk_processed_data(data, visitor) {
12
+ const walk_client_inputs = (inputs, entry_index, form_instance) => {
13
+ const input_list = Array.isArray(inputs) ? inputs : [inputs];
14
+ for (const input of input_list) {
15
+ if (input.processed_data) {
16
+ for (const pd of input.processed_data) {
17
+ visitor(pd, entry_index, form_instance);
18
+ // Recurse into activities that have nested clarifications
19
+ if (pd.activities) {
20
+ for (const act of pd.activities) {
21
+ if (act.clarification?.client_data) {
22
+ for (const cdi of act.clarification.client_data) {
23
+ walk_client_inputs(cdi.client_input, entry_index, act.clarification.question?.form_instance);
24
+ }
25
+ }
26
+ }
27
+ }
28
+ }
29
+ }
30
+ }
31
+ };
32
+ for (let i = 0; i < data.length; i++) {
33
+ const entry = data[i];
34
+ const form_instance = entry.question?.form_instance ?? entry.clarification?.question?.form_instance;
35
+ // Walk root-level client_data
36
+ if (entry.client_data) {
37
+ for (const cdi of entry.client_data) {
38
+ walk_client_inputs(cdi.client_input, i, form_instance);
39
+ }
40
+ }
41
+ // Walk clarification-level client_data
42
+ if (entry.clarification?.client_data) {
43
+ for (const cdi of entry.clarification.client_data) {
44
+ walk_client_inputs(cdi.client_input, i, form_instance);
45
+ }
46
+ }
47
+ }
48
+ }
49
+ /**
50
+ * Walk all activities in the tree, calling the visitor for each.
51
+ */
52
+ function walk_activities(data, visitor) {
53
+ walk_processed_data(data, (pd, entry_index, form_instance) => {
54
+ if (pd.activities) {
55
+ for (const act of pd.activities) {
56
+ visitor(act, pd, entry_index, form_instance);
57
+ }
58
+ }
59
+ });
60
+ }
61
+ // ========================================
62
+ // Filtering by instance
63
+ // ========================================
64
+ /** Get all data entries for a specific form instance */
65
+ export function get_entries_for_instance(data, form_instance) {
66
+ return data.filter((entry) => {
67
+ const inst = entry.question?.form_instance ?? entry.clarification?.question?.form_instance;
68
+ return inst === form_instance;
69
+ });
70
+ }
71
+ // ========================================
72
+ // Validation access
73
+ // ========================================
74
+ /** Get all validations across the entire data tree */
75
+ export function get_all_validations(data) {
76
+ const results = [];
77
+ walk_activities(data, (act, pd, entry_index) => {
78
+ if (act.validations) {
79
+ for (const val of act.validations) {
80
+ results.push({ validation: val, activity: act, processed_data: pd, entry_index });
81
+ }
82
+ }
83
+ });
84
+ return results;
85
+ }
86
+ /** Get all failed validations */
87
+ export function get_failed_validations(data) {
88
+ return get_all_validations(data).filter((v) => v.validation.validation_status === 'failed');
89
+ }
90
+ // ========================================
91
+ // RFI / Clarification access
92
+ // ========================================
93
+ /** Get all activities of type 'client_question' (RFIs) */
94
+ export function get_all_rfis(data) {
95
+ const results = [];
96
+ walk_activities(data, (act, pd, entry_index) => {
97
+ if (act.activity_info.activity_type === 'client_question' && act.clarification) {
98
+ results.push({ clarification: act.clarification, activity: act, processed_data: pd, entry_index });
99
+ }
100
+ });
101
+ return results;
102
+ }
103
+ /** Get RFIs that have been issued but not yet responded to */
104
+ export function get_pending_rfis(data) {
105
+ return get_all_rfis(data).filter((r) => {
106
+ const status = r.clarification.rfi?.rfi_status ?? '';
107
+ return status.includes('issued') && !status.includes('responded');
108
+ });
109
+ }
110
+ /** Get RFIs where the client has responded */
111
+ export function get_responded_rfis(data) {
112
+ return get_all_rfis(data).filter((r) => {
113
+ const status = r.clarification.rfi?.rfi_status ?? '';
114
+ return status.includes('responded');
115
+ });
116
+ }
117
+ // ========================================
118
+ // Review & send-back access
119
+ // ========================================
120
+ /** Get all activities with type 'review_client_input' */
121
+ export function get_review_items(data) {
122
+ const results = [];
123
+ walk_activities(data, (act, pd, entry_index, form_instance) => {
124
+ if (act.activity_info.activity_type === 'review_client_input') {
125
+ results.push({ activity: act, processed_data: pd, entry_index, form_instance });
126
+ }
127
+ });
128
+ return results;
129
+ }
130
+ /** Get all activities with type 'send_back_to_client' */
131
+ export function get_send_back_items(data) {
132
+ const results = [];
133
+ walk_activities(data, (act, pd, entry_index, form_instance) => {
134
+ if (act.activity_info.activity_type === 'send_back_to_client') {
135
+ results.push({ activity: act, processed_data: pd, entry_index, form_instance });
136
+ }
137
+ });
138
+ return results;
139
+ }
140
+ // ========================================
141
+ // Lookup by ID
142
+ // ========================================
143
+ /** Find an activity by its activity_no anywhere in the tree */
144
+ export function find_by_activity_no(data, act_no) {
145
+ let result = null;
146
+ walk_activities(data, (act, pd, entry_index, form_instance) => {
147
+ if (act.activity_info.activity_no === act_no && !result) {
148
+ result = { activity: act, processed_data: pd, entry_index, form_instance };
149
+ }
150
+ });
151
+ return result;
152
+ }
153
+ /** Find a processed_data node by its processed_data_id */
154
+ export function find_by_pd_id(data, pd_id) {
155
+ let result = null;
156
+ walk_processed_data(data, (pd, entry_index) => {
157
+ if (pd.processed_data_id === pd_id && !result) {
158
+ result = { pd, entry_index };
159
+ }
160
+ });
161
+ return result;
162
+ }
163
+ /** Find a validation by its validation_id */
164
+ export function find_by_validation_id(data, val_id) {
165
+ const all = get_all_validations(data);
166
+ return all.find((v) => v.validation.validation_id === val_id) ?? null;
167
+ }
168
+ /** Find a client data item by its input_elt_id */
169
+ export function find_by_ie_id(data, ie_id) {
170
+ const find_in_client_data = (items) => {
171
+ if (!items)
172
+ return null;
173
+ for (const item of items) {
174
+ if (item.input_elt_id === ie_id)
175
+ return item;
176
+ }
177
+ return null;
178
+ };
179
+ for (const entry of data) {
180
+ const found = find_in_client_data(entry.client_data) ??
181
+ find_in_client_data(entry.clarification?.client_data);
182
+ if (found)
183
+ return found;
184
+ }
185
+ return null;
186
+ }
187
+ /** Extract a classification summary from all processed_data nodes */
188
+ export function get_classification_summary(data) {
189
+ const results = [];
190
+ walk_processed_data(data, (pd) => {
191
+ if (pd.tags || pd.processed_data_category || pd.processed_data_nature) {
192
+ results.push({
193
+ processed_data_id: pd.processed_data_id,
194
+ tags: pd.tags ?? [],
195
+ category: pd.processed_data_category ?? [],
196
+ nature: pd.processed_data_nature ?? [],
197
+ source_text: pd.processed_data_text,
198
+ source_file: pd.processed_data_files ? {
199
+ file_id: pd.processed_data_files.file_id,
200
+ file_name: pd.processed_data_files.file_name,
201
+ } : undefined,
202
+ });
203
+ }
204
+ });
205
+ return results;
206
+ }
207
+ /** Extract per-file validation summaries from data[] */
208
+ export function get_file_validation_summary(data) {
209
+ const file_map = new Map();
210
+ walk_processed_data(data, (pd) => {
211
+ if (pd.processed_data_type !== 'file' || !pd.processed_data_files)
212
+ return;
213
+ const file_id = pd.processed_data_files.file_id;
214
+ const existing = file_map.get(file_id) ?? {
215
+ file_id,
216
+ file_name: pd.processed_data_files.file_name,
217
+ validations: [],
218
+ has_failures: false,
219
+ all_passed: true,
220
+ };
221
+ if (pd.activities) {
222
+ for (const act of pd.activities) {
223
+ if (act.validations) {
224
+ for (const val of act.validations) {
225
+ existing.validations.push(val);
226
+ if (val.validation_status === 'failed') {
227
+ existing.has_failures = true;
228
+ existing.all_passed = false;
229
+ }
230
+ }
231
+ }
232
+ }
233
+ }
234
+ file_map.set(file_id, existing);
235
+ });
236
+ return file_map;
237
+ }
238
+ /** Get all activities filtered by type */
239
+ export function get_activities_by_type(data, type) {
240
+ const results = [];
241
+ walk_activities(data, (act, pd, entry_index, form_instance) => {
242
+ if (act.activity_info.activity_type === type) {
243
+ results.push({ activity: act, processed_data: pd, entry_index, form_instance });
244
+ }
245
+ });
246
+ return results;
247
+ }
248
+ /** Count data entries by form_instance */
249
+ export function count_entries_by_instance(data) {
250
+ const counts = new Map();
251
+ for (const entry of data) {
252
+ const inst = entry.question?.form_instance ?? entry.clarification?.question?.form_instance;
253
+ if (inst != null) {
254
+ counts.set(inst, (counts.get(inst) ?? 0) + 1);
255
+ }
256
+ }
257
+ return counts;
258
+ }
259
+ /** Get the highest form_instance number in the data */
260
+ export function get_max_form_instance(data) {
261
+ let max = 0;
262
+ for (const entry of data) {
263
+ const inst = entry.question?.form_instance ?? entry.clarification?.question?.form_instance;
264
+ if (inst != null && inst > max)
265
+ max = inst;
266
+ }
267
+ return max;
268
+ }
269
+ //# sourceMappingURL=fb_data_helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fb_data_helpers.js","sourceRoot":"","sources":["../../src/utils/fb_data_helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Immutable mutation helpers for the hierarchical FB form data model.
3
+ *
4
+ * All functions return new arrays (never mutate in place) to work
5
+ * correctly with React state updates.
6
+ */
7
+ import type { FbDataEntry, FbClientDataItem, FbProcessedData, FbActivity, FbValidation, FbQuestion, FbRfiDraft } from '../types/fb_form_data.js';
8
+ /** Append a new data entry to the data array */
9
+ export declare function add_data_entry(data: FbDataEntry[], entry: FbDataEntry): FbDataEntry[];
10
+ /** Remove a data entry by index */
11
+ export declare function remove_data_entry(data: FbDataEntry[], entry_index: number): FbDataEntry[];
12
+ /** Update a data entry at a specific index */
13
+ export declare function update_data_entry(data: FbDataEntry[], entry_index: number, updater: (entry: FbDataEntry) => FbDataEntry): FbDataEntry[];
14
+ /** Add a client_data item to a root-level data entry */
15
+ export declare function add_client_data(data: FbDataEntry[], entry_index: number, item: FbClientDataItem): FbDataEntry[];
16
+ /** Add a client_data item to a clarification block within an entry */
17
+ export declare function add_clarification_client_data(data: FbDataEntry[], entry_index: number, item: FbClientDataItem): FbDataEntry[];
18
+ /**
19
+ * Add processed_data items to a specific client input identified by input_elt_id.
20
+ * Searches both root client_data and clarification client_data.
21
+ */
22
+ export declare function add_processed_data(data: FbDataEntry[], ie_id: string, pd_items: FbProcessedData[]): FbDataEntry[];
23
+ /**
24
+ * Append an activity to a specific processed_data node identified by pd_id.
25
+ * Recursively searches the entire tree.
26
+ */
27
+ export declare function append_activity(data: FbDataEntry[], pd_id: string, activity: FbActivity): FbDataEntry[];
28
+ /** Update a validation's status by validation_id */
29
+ export declare function update_validation(data: FbDataEntry[], val_id: string, updates: Partial<Pick<FbValidation, 'validation_status' | 'validation_details'>>): FbDataEntry[];
30
+ /** Set the review decision on an activity identified by activity_no */
31
+ export declare function set_review_decision(data: FbDataEntry[], act_no: string, decision: 'accept' | 'send_back'): FbDataEntry[];
32
+ /** Add client response data to an RFI clarification within an activity */
33
+ export declare function add_rfi_response(data: FbDataEntry[], act_no: string, client_data_item: FbClientDataItem): FbDataEntry[];
34
+ /**
35
+ * Create a new top-level clarification entry for a send-back.
36
+ * This represents a new clarification question in the next form instance.
37
+ */
38
+ export declare function create_send_back_entry(data: FbDataEntry[], source_act_no: string, form_instance: number, rfi_draft: FbRfiDraft): FbDataEntry[];
39
+ /**
40
+ * Create a new root question entry for a form instance.
41
+ */
42
+ export declare function create_question_entry(data: FbDataEntry[], question: FbQuestion): FbDataEntry[];
43
+ //# sourceMappingURL=fb_data_mutations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fb_data_mutations.d.ts","sourceRoot":"","sources":["../../src/utils/fb_data_mutations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,EAEX,gBAAgB,EAEhB,eAAe,EACf,UAAU,EACV,YAAY,EACZ,UAAU,EACV,UAAU,EAEX,MAAM,0BAA0B,CAAC;AAMlC,gDAAgD;AAChD,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,WAAW,EAAE,CAErF;AAED,mCAAmC;AACnC,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,WAAW,EAAE,CAEzF;AAED,8CAA8C;AAC9C,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,WAAW,EAAE,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,WAAW,GAC3C,WAAW,EAAE,CAEf;AAMD,wDAAwD;AACxD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,WAAW,EAAE,EACnB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,gBAAgB,GACrB,WAAW,EAAE,CAKf;AAED,sEAAsE;AACtE,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,WAAW,EAAE,EACnB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,gBAAgB,GACrB,WAAW,EAAE,CAWf;AAMD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,WAAW,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,eAAe,EAAE,GAC1B,WAAW,EAAE,CAqBf;AAmCD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,WAAW,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,UAAU,GACnB,WAAW,EAAE,CAQf;AAkFD,oDAAoD;AACpD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,WAAW,EAAE,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,mBAAmB,GAAG,oBAAoB,CAAC,CAAC,GAC/E,WAAW,EAAE,CASf;AAMD,uEAAuE;AACvE,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,WAAW,EAAE,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GAAG,WAAW,GAC/B,WAAW,EAAE,CAKf;AAMD,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,WAAW,EAAE,EACnB,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,gBAAgB,GACjC,WAAW,EAAE,CAef;AAMD;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,WAAW,EAAE,EACnB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,UAAU,GACpB,WAAW,EAAE,CAsBf;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,WAAW,EAAE,EACnB,QAAQ,EAAE,UAAU,GACnB,WAAW,EAAE,CAEf"}