hazo_collab_forms 1.9.0 → 1.9.2
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 +25 -0
- package/README.md +157 -44
- package/dist/components/_internal_form_set.d.ts +30 -30
- package/dist/components/_internal_form_set.d.ts.map +1 -1
- package/dist/components/_internal_form_set.js +31 -12
- package/dist/components/_internal_form_set.js.map +1 -1
- package/dist/components/collab_form_file_upload.d.ts +40 -74
- package/dist/components/collab_form_file_upload.d.ts.map +1 -1
- package/dist/components/collab_form_file_upload.js +191 -275
- package/dist/components/collab_form_file_upload.js.map +1 -1
- package/dist/components/hazo_add_field_dialog/components/pending_field_item.d.ts +1 -1
- package/dist/components/hazo_add_field_dialog/components/pending_field_item.js +2 -2
- package/dist/components/hazo_add_field_dialog/components/pending_field_item.js.map +1 -1
- package/dist/components/hazo_add_field_dialog/components/pending_field_list.d.ts +1 -1
- package/dist/components/hazo_add_field_dialog/hazo_add_field_dialog.js +7 -7
- package/dist/components/hazo_add_field_dialog/hazo_add_field_dialog.js.map +1 -1
- package/dist/components/hazo_add_field_dialog/types.d.ts +4 -4
- package/dist/components/hazo_add_field_dialog/types.d.ts.map +1 -1
- package/dist/components/hazo_add_field_dialog/utils/library_to_pending.js +2 -2
- package/dist/components/hazo_add_field_dialog/utils/library_to_pending.js.map +1 -1
- package/dist/components/hazo_add_group_dialog/hazo_add_group_dialog.js +6 -6
- package/dist/components/hazo_add_group_dialog/hazo_add_group_dialog.js.map +1 -1
- package/dist/components/hazo_collab_form_base.d.ts +26 -20
- package/dist/components/hazo_collab_form_base.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_base.js +22 -13
- package/dist/components/hazo_collab_form_base.js.map +1 -1
- package/dist/components/hazo_collab_form_checkbox.d.ts +1 -24
- package/dist/components/hazo_collab_form_checkbox.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_checkbox.js +15 -141
- package/dist/components/hazo_collab_form_checkbox.js.map +1 -1
- package/dist/components/hazo_collab_form_combo.d.ts +0 -44
- package/dist/components/hazo_collab_form_combo.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_combo.js +24 -199
- package/dist/components/hazo_collab_form_combo.js.map +1 -1
- package/dist/components/hazo_collab_form_data_table.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_data_table.js +2 -1
- package/dist/components/hazo_collab_form_data_table.js.map +1 -1
- package/dist/components/hazo_collab_form_date.d.ts +1 -59
- package/dist/components/hazo_collab_form_date.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_date.js +34 -194
- package/dist/components/hazo_collab_form_date.js.map +1 -1
- package/dist/components/hazo_collab_form_doc.d.ts +8 -11
- package/dist/components/hazo_collab_form_doc.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_doc.js +15 -12
- package/dist/components/hazo_collab_form_doc.js.map +1 -1
- package/dist/components/hazo_collab_form_group.d.ts +4 -3
- package/dist/components/hazo_collab_form_group.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_group.js +5 -5
- package/dist/components/hazo_collab_form_group.js.map +1 -1
- package/dist/components/hazo_collab_form_inputbox.d.ts +0 -17
- package/dist/components/hazo_collab_form_inputbox.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_inputbox.js +25 -148
- package/dist/components/hazo_collab_form_inputbox.js.map +1 -1
- package/dist/components/hazo_collab_form_radio.d.ts +1 -36
- package/dist/components/hazo_collab_form_radio.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_radio.js +18 -143
- package/dist/components/hazo_collab_form_radio.js.map +1 -1
- package/dist/components/hazo_collab_form_textarea.d.ts +0 -17
- package/dist/components/hazo_collab_form_textarea.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_textarea.js +14 -141
- package/dist/components/hazo_collab_form_textarea.js.map +1 -1
- package/dist/components/hazo_collab_form_view/context.d.ts.map +1 -1
- package/dist/components/hazo_collab_form_view/context.js +4 -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 +36 -0
- package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.d.ts.map +1 -0
- package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.js +82 -0
- package/dist/components/hazo_collab_form_view/hooks/use_view_callbacks.js.map +1 -0
- 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.map +1 -1
- package/dist/components/hazo_collab_form_view/types.d.ts +18 -12
- package/dist/components/hazo_collab_form_view/types.d.ts.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 +11 -81
- package/dist/components/hazo_collab_form_view/views/edit_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 +58 -278
- package/dist/components/hazo_collab_form_view/views/summary_view.js.map +1 -1
- package/dist/components/hazo_edit_field_dialog/hazo_edit_field_dialog.js +8 -8
- package/dist/components/hazo_edit_field_dialog/hazo_edit_field_dialog.js.map +1 -1
- package/dist/components/hazo_edit_field_dialog/types.d.ts +4 -4
- package/dist/components/hazo_edit_field_dialog/types.d.ts.map +1 -1
- package/dist/components/hazo_edit_group_dialog/hazo_edit_group_dialog.js +15 -15
- package/dist/components/hazo_edit_group_dialog/hazo_edit_group_dialog.js.map +1 -1
- package/dist/components/hazo_edit_group_dialog/types.d.ts +4 -4
- package/dist/components/hazo_edit_group_dialog/types.d.ts.map +1 -1
- package/dist/components/hazo_field_library/hooks/use_elements.d.ts.map +1 -1
- package/dist/components/hazo_field_library/hooks/use_elements.js +2 -1
- package/dist/components/hazo_field_library/hooks/use_elements.js.map +1 -1
- package/dist/components/hazo_field_selector_dialog/utils.d.ts.map +1 -1
- package/dist/components/hazo_field_selector_dialog/utils.js +2 -1
- package/dist/components/hazo_field_selector_dialog/utils.js.map +1 -1
- package/dist/components/hazo_template_generator/components/section_tree.js +1 -1
- package/dist/components/hazo_template_generator/components/section_tree.js.map +1 -1
- package/dist/components/hazo_template_generator/components/tabs/basic_tab.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/tabs/basic_tab.js +6 -3
- package/dist/components/hazo_template_generator/components/tabs/basic_tab.js.map +1 -1
- package/dist/components/hazo_template_generator/components/tabs/section_tab.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/components/tabs/section_tab.js +8 -4
- package/dist/components/hazo_template_generator/components/tabs/section_tab.js.map +1 -1
- package/dist/components/hazo_template_generator/types.d.ts.map +1 -1
- package/dist/components/hazo_template_generator/types.js +6 -3
- package/dist/components/hazo_template_generator/types.js.map +1 -1
- package/dist/components/hazo_template_generator/utils/validation.js +1 -1
- package/dist/components/hazo_template_generator/utils/validation.js.map +1 -1
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/shared/base_field_layout.d.ts +40 -0
- package/dist/components/shared/base_field_layout.d.ts.map +1 -0
- package/dist/components/shared/base_field_layout.js +34 -0
- package/dist/components/shared/base_field_layout.js.map +1 -0
- package/dist/components/shared/file_settings/file_settings_checkboxes.d.ts +13 -13
- package/dist/components/shared/file_settings/file_settings_checkboxes.d.ts.map +1 -1
- package/dist/components/shared/file_settings/file_settings_checkboxes.js +8 -25
- package/dist/components/shared/file_settings/file_settings_checkboxes.js.map +1 -1
- package/dist/components/shared/row_color_utils.d.ts +16 -0
- package/dist/components/shared/row_color_utils.d.ts.map +1 -0
- package/dist/components/shared/row_color_utils.js +21 -0
- package/dist/components/shared/row_color_utils.js.map +1 -0
- package/dist/components/shared/strip_base_props.d.ts +16 -0
- package/dist/components/shared/strip_base_props.d.ts.map +1 -0
- package/dist/components/shared/strip_base_props.js +91 -0
- package/dist/components/shared/strip_base_props.js.map +1 -0
- package/dist/components/shared/summary_files/summary_files.d.ts +10 -5
- package/dist/components/shared/summary_files/summary_files.d.ts.map +1 -1
- package/dist/components/shared/summary_files/summary_files.js +35 -14
- package/dist/components/shared/summary_files/summary_files.js.map +1 -1
- package/dist/components/shared/summary_utils/file_helpers.d.ts +16 -0
- package/dist/components/shared/summary_utils/file_helpers.d.ts.map +1 -0
- package/dist/components/shared/summary_utils/file_helpers.js +26 -0
- package/dist/components/shared/summary_utils/file_helpers.js.map +1 -0
- package/dist/components/shared/summary_utils/index.d.ts +1 -0
- package/dist/components/shared/summary_utils/index.d.ts.map +1 -1
- package/dist/components/shared/summary_utils/index.js +1 -0
- package/dist/components/shared/summary_utils/index.js.map +1 -1
- package/dist/components/shared/unified_field_controls/index.d.ts +1 -0
- package/dist/components/shared/unified_field_controls/index.d.ts.map +1 -1
- package/dist/components/shared/unified_field_controls/index.js +2 -1
- package/dist/components/shared/unified_field_controls/index.js.map +1 -1
- package/dist/components/shared/unified_field_controls/use_field_control_props.d.ts +68 -0
- package/dist/components/shared/unified_field_controls/use_field_control_props.d.ts.map +1 -0
- package/dist/components/shared/unified_field_controls/use_field_control_props.js +105 -0
- package/dist/components/shared/unified_field_controls/use_field_control_props.js.map +1 -0
- package/dist/components/shared/use_base_form_field.d.ts +193 -0
- package/dist/components/shared/use_base_form_field.d.ts.map +1 -0
- package/dist/components/shared/use_base_form_field.js +265 -0
- package/dist/components/shared/use_base_form_field.js.map +1 -0
- package/dist/config/api_endpoints.d.ts +19 -0
- package/dist/config/api_endpoints.d.ts.map +1 -0
- package/dist/config/api_endpoints.js +19 -0
- package/dist/config/api_endpoints.js.map +1 -0
- package/dist/config/defaults.d.ts +17 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +17 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +3 -0
- package/dist/config/index.js.map +1 -0
- package/dist/types/file_attachment.d.ts +55 -0
- package/dist/types/file_attachment.d.ts.map +1 -0
- package/dist/types/file_attachment.js +54 -0
- package/dist/types/file_attachment.js.map +1 -0
- package/dist/types/file_manager.d.ts +60 -0
- package/dist/types/file_manager.d.ts.map +1 -0
- package/dist/types/file_manager.js +8 -0
- package/dist/types/file_manager.js.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/utils/filter_dom_props.d.ts.map +1 -1
- package/dist/utils/filter_dom_props.js +2 -1
- package/dist/utils/filter_dom_props.js.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/use_chat_messages_check.d.ts.map +1 -1
- package/dist/utils/use_chat_messages_check.js +4 -2
- package/dist/utils/use_chat_messages_check.js.map +1 -1
- package/dist/utils/use_collab_chat.d.ts.map +1 -1
- package/dist/utils/use_collab_chat.js +2 -1
- package/dist/utils/use_collab_chat.js.map +1 -1
- package/dist/utils/use_field_chat_status.d.ts.map +1 -1
- package/dist/utils/use_field_chat_status.js +5 -3
- package/dist/utils/use_field_chat_status.js.map +1 -1
- package/dist/utils/use_file_status.d.ts +29 -0
- package/dist/utils/use_file_status.d.ts.map +1 -0
- package/dist/utils/use_file_status.js +68 -0
- package/dist/utils/use_file_status.js.map +1 -0
- package/package.json +4 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* SummaryFiles component
|
|
3
|
-
* Renders a list of files with download links
|
|
3
|
+
* Renders a list of files with download links.
|
|
4
|
+
* Supports both FormFileAttachment (new) and FileData (legacy) shapes.
|
|
4
5
|
*/
|
|
5
6
|
'use client';
|
|
6
7
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -16,8 +17,8 @@ function get_file_extension(filename) {
|
|
|
16
17
|
/**
|
|
17
18
|
* Get file type category for icon display
|
|
18
19
|
*/
|
|
19
|
-
function get_file_type_category(
|
|
20
|
-
const mime =
|
|
20
|
+
function get_file_type_category(mime_type, filename) {
|
|
21
|
+
const mime = mime_type.toLowerCase();
|
|
21
22
|
const ext = get_file_extension(filename);
|
|
22
23
|
if (mime.startsWith('image/'))
|
|
23
24
|
return 'image';
|
|
@@ -39,7 +40,6 @@ function get_file_type_category(file_type, filename) {
|
|
|
39
40
|
}
|
|
40
41
|
/**
|
|
41
42
|
* Format file size for display
|
|
42
|
-
* Returns human-readable string like "1.5 MB"
|
|
43
43
|
*/
|
|
44
44
|
function format_file_size(bytes) {
|
|
45
45
|
if (bytes === 0)
|
|
@@ -52,8 +52,8 @@ function format_file_size(bytes) {
|
|
|
52
52
|
/**
|
|
53
53
|
* Get icon component for file type
|
|
54
54
|
*/
|
|
55
|
-
function get_file_icon(
|
|
56
|
-
const category = get_file_type_category(
|
|
55
|
+
function get_file_icon(attachment) {
|
|
56
|
+
const category = get_file_type_category(attachment.mime_type, attachment.file_name);
|
|
57
57
|
const icon_class = 'h-5 w-5';
|
|
58
58
|
switch (category) {
|
|
59
59
|
case 'image':
|
|
@@ -70,27 +70,48 @@ function get_file_icon(file) {
|
|
|
70
70
|
return _jsx(IoDocument, { className: cn(icon_class, 'text-muted-foreground') });
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Status badge for non-active files
|
|
75
|
+
*/
|
|
76
|
+
function StatusBadge({ status }) {
|
|
77
|
+
if (!status || status === 'active')
|
|
78
|
+
return null;
|
|
79
|
+
const config = {
|
|
80
|
+
missing: { label: 'Missing', className: 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-300' },
|
|
81
|
+
soft_deleted: { label: 'Deleted', className: 'bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300' },
|
|
82
|
+
orphaned: { label: 'Orphaned', className: 'bg-orange-100 text-orange-800 dark:bg-orange-900/30 dark:text-orange-300' },
|
|
83
|
+
};
|
|
84
|
+
const cfg = config[status];
|
|
85
|
+
if (!cfg)
|
|
86
|
+
return null;
|
|
87
|
+
return (_jsx("span", { className: cn('text-[10px] px-1 py-0.5 rounded font-medium', cfg.className), children: cfg.label }));
|
|
88
|
+
}
|
|
73
89
|
/**
|
|
74
90
|
* Single file item component
|
|
75
91
|
*/
|
|
76
|
-
function FileItem({
|
|
77
|
-
// Build download URL
|
|
78
|
-
const download_url =
|
|
79
|
-
?
|
|
80
|
-
:
|
|
81
|
-
|
|
92
|
+
function FileItem({ attachment, is_private, get_download_url, show_file_status, }) {
|
|
93
|
+
// Build download URL — prefer callback, fall back to file_path
|
|
94
|
+
const download_url = get_download_url
|
|
95
|
+
? get_download_url(attachment.file_id, is_private ? 'private' : 'public')
|
|
96
|
+
: attachment.file_path
|
|
97
|
+
? (is_private
|
|
98
|
+
? `/api/collab-forms/private-files/${encodeURIComponent(attachment.file_path)}`
|
|
99
|
+
: `/api/collab-forms/files/${encodeURIComponent(attachment.file_path)}`)
|
|
100
|
+
: '#';
|
|
101
|
+
const is_missing = attachment.status === 'missing';
|
|
102
|
+
return (_jsxs("a", { href: download_url, target: "_blank", rel: "noopener noreferrer", className: cn("cls_summary_file_item flex items-center gap-3 p-2 rounded-md hover:bg-muted transition-colors group", is_missing && "opacity-60"), title: `Download ${attachment.file_name}`, children: [_jsx("div", { className: "cls_summary_file_icon flex-shrink-0", children: get_file_icon(attachment) }), _jsxs("div", { className: "cls_summary_file_info flex-1 min-w-0", children: [_jsxs("div", { className: "cls_summary_file_name text-sm font-medium truncate flex items-center gap-1.5", children: [attachment.file_name, show_file_status && _jsx(StatusBadge, { status: attachment.status })] }), _jsx("div", { className: "cls_summary_file_size text-xs text-muted-foreground", children: format_file_size(attachment.file_size) })] }), is_private && (_jsx("div", { className: "cls_summary_file_private flex-shrink-0", title: "Private file", children: _jsx(IoLockClosed, { className: "h-4 w-4 text-yellow-600" }) })), _jsx("div", { className: "cls_summary_file_download flex-shrink-0 opacity-0 group-hover:opacity-100 transition-opacity", children: _jsx(IoDownload, { className: "h-4 w-4 text-muted-foreground" }) })] }));
|
|
82
103
|
}
|
|
83
104
|
/**
|
|
84
105
|
* SummaryFiles component
|
|
85
106
|
* Renders public and private files in separate sections
|
|
86
107
|
*/
|
|
87
|
-
export function SummaryFiles({ files, private_files, field_id, class_name, }) {
|
|
108
|
+
export function SummaryFiles({ files, private_files, field_id, class_name, get_download_url, show_file_status, }) {
|
|
88
109
|
const has_public_files = files && files.length > 0;
|
|
89
110
|
const has_private_files = private_files && private_files.length > 0;
|
|
90
111
|
if (!has_public_files && !has_private_files) {
|
|
91
112
|
return null;
|
|
92
113
|
}
|
|
93
|
-
return (_jsxs("div", { className: cn('cls_summary_files', class_name), "data-field-id": field_id, children: [has_public_files && (_jsxs("div", { className: "cls_summary_files_public", children: [has_private_files && (_jsx("div", { className: "cls_summary_files_section_header text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1", children: "Public Files" })), _jsx("div", { className: "cls_summary_files_list space-y-1", children: files.map((
|
|
114
|
+
return (_jsxs("div", { className: cn('cls_summary_files', class_name), "data-field-id": field_id, children: [has_public_files && (_jsxs("div", { className: "cls_summary_files_public", children: [has_private_files && (_jsx("div", { className: "cls_summary_files_section_header text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1", children: "Public Files" })), _jsx("div", { className: "cls_summary_files_list space-y-1", children: files.map((attachment, index) => (_jsx(FileItem, { attachment: attachment, get_download_url: get_download_url, show_file_status: show_file_status }, attachment.file_id || index))) })] })), has_private_files && (_jsxs("div", { className: cn('cls_summary_files_private', has_public_files && 'mt-3'), children: [_jsxs("div", { className: "cls_summary_files_section_header text-xs font-medium text-muted-foreground uppercase tracking-wider mb-1 flex items-center gap-1", children: [_jsx(IoLockClosed, { className: "h-3 w-3" }), "Private Files"] }), _jsx("div", { className: "cls_summary_files_list space-y-1", children: private_files.map((attachment, index) => (_jsx(FileItem, { attachment: attachment, is_private: true, get_download_url: get_download_url, show_file_status: show_file_status }, attachment.file_id || index))) })] }))] }));
|
|
94
115
|
}
|
|
95
116
|
export default SummaryFiles;
|
|
96
117
|
//# sourceMappingURL=summary_files.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summary_files.js","sourceRoot":"","sources":["../../../../src/components/shared/summary_files/summary_files.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"summary_files.js","sourceRoot":"","sources":["../../../../src/components/shared/summary_files/summary_files.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared file extraction helpers for reading field-level files from form_data.
|
|
3
|
+
* Used by summary_view, print_view, approval_view, and any other view that
|
|
4
|
+
* reads files stored at __files_${field_id} / __private_files_${field_id}.
|
|
5
|
+
*/
|
|
6
|
+
import type { FileData } from '../../hazo_collab_form_base.js';
|
|
7
|
+
import type { FormFileAttachment } from '../../../types/file_attachment.js';
|
|
8
|
+
/** Extract public files for a field from form_data (legacy FileData shape) */
|
|
9
|
+
export declare function get_field_files(form_data: Record<string, unknown>, field_id: string): FileData[];
|
|
10
|
+
/** Extract private files for a field from form_data (legacy FileData shape) */
|
|
11
|
+
export declare function get_field_private_files(form_data: Record<string, unknown>, field_id: string): FileData[];
|
|
12
|
+
/** Extract public attachments for a field from form_data (FormFileAttachment shape) */
|
|
13
|
+
export declare function get_field_attachments(form_data: Record<string, unknown>, field_id: string): FormFileAttachment[];
|
|
14
|
+
/** Extract private attachments for a field from form_data (FormFileAttachment shape) */
|
|
15
|
+
export declare function get_field_private_attachments(form_data: Record<string, unknown>, field_id: string): FormFileAttachment[];
|
|
16
|
+
//# sourceMappingURL=file_helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file_helpers.d.ts","sourceRoot":"","sources":["../../../../src/components/shared/summary_utils/file_helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAE5E,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,CAGhG;AAED,+EAA+E;AAC/E,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,CAGxG;AAED,uFAAuF;AACvF,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAGhH;AAED,wFAAwF;AACxF,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAGxH"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared file extraction helpers for reading field-level files from form_data.
|
|
3
|
+
* Used by summary_view, print_view, approval_view, and any other view that
|
|
4
|
+
* reads files stored at __files_${field_id} / __private_files_${field_id}.
|
|
5
|
+
*/
|
|
6
|
+
/** Extract public files for a field from form_data (legacy FileData shape) */
|
|
7
|
+
export function get_field_files(form_data, field_id) {
|
|
8
|
+
const files = form_data[`__files_${field_id}`];
|
|
9
|
+
return Array.isArray(files) ? files : [];
|
|
10
|
+
}
|
|
11
|
+
/** Extract private files for a field from form_data (legacy FileData shape) */
|
|
12
|
+
export function get_field_private_files(form_data, field_id) {
|
|
13
|
+
const files = form_data[`__private_files_${field_id}`];
|
|
14
|
+
return Array.isArray(files) ? files : [];
|
|
15
|
+
}
|
|
16
|
+
/** Extract public attachments for a field from form_data (FormFileAttachment shape) */
|
|
17
|
+
export function get_field_attachments(form_data, field_id) {
|
|
18
|
+
const files = form_data[`__files_${field_id}`];
|
|
19
|
+
return Array.isArray(files) ? files : [];
|
|
20
|
+
}
|
|
21
|
+
/** Extract private attachments for a field from form_data (FormFileAttachment shape) */
|
|
22
|
+
export function get_field_private_attachments(form_data, field_id) {
|
|
23
|
+
const files = form_data[`__private_files_${field_id}`];
|
|
24
|
+
return Array.isArray(files) ? files : [];
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=file_helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file_helpers.js","sourceRoot":"","sources":["../../../../src/components/shared/summary_utils/file_helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,8EAA8E;AAC9E,MAAM,UAAU,eAAe,CAAC,SAAkC,EAAE,QAAgB;IAClF,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,uBAAuB,CAAC,SAAkC,EAAE,QAAgB;IAC1F,MAAM,KAAK,GAAG,SAAS,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,qBAAqB,CAAC,SAAkC,EAAE,QAAgB;IACxF,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAA6B,CAAC,CAAC,CAAC,EAAE,CAAC;AACnE,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,6BAA6B,CAAC,SAAkC,EAAE,QAAgB;IAChG,MAAM,KAAK,GAAG,SAAS,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAA6B,CAAC,CAAC,CAAC,EAAE,CAAC;AACnE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/shared/summary_utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/shared/summary_utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/shared/summary_utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/shared/summary_utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
export { UnifiedFieldControls } from './unified_field_controls.js';
|
|
41
41
|
export { KebabMenu } from './kebab_menu.js';
|
|
42
42
|
export { use_control_resolution } from './use_control_resolution.js';
|
|
43
|
+
export { use_field_control_props, type UseFieldControlPropsInput } from './use_field_control_props.js';
|
|
43
44
|
export { resolve_field_controls, controls_to_fallback_visibility, type ControlEnableSettings, type ResolvedControlSettings, } from './resolve_field_controls.js';
|
|
44
45
|
export { build_control_props, type FieldControlConfig, type FormControlContext, type FormControlCallbacks, } from './build_control_props.js';
|
|
45
46
|
export type { UnifiedFieldControlsProps, ControlMetadata, ControlCallbacks, ControlConfig, FallbackSettings, DataOkAutoActions, ResolvedControlState, ControlResolutionResult, KebabMenuProps, IconsBehaviour, ControlName, DataOkState, ChatStatus, NoteEntry, } from './types.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/shared/unified_field_controls/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/shared/unified_field_controls/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,KAAK,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAGvG,OAAO,EACL,sBAAsB,EACtB,+BAA+B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,GAC7B,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EACV,yBAAyB,EACzB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,WAAW,EACX,WAAW,EACX,UAAU,EACV,SAAS,GACV,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,2BAA2B,EAC3B,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC"}
|
|
@@ -41,8 +41,9 @@
|
|
|
41
41
|
export { UnifiedFieldControls } from './unified_field_controls.js';
|
|
42
42
|
// Sub-components
|
|
43
43
|
export { KebabMenu } from './kebab_menu.js';
|
|
44
|
-
//
|
|
44
|
+
// Hooks
|
|
45
45
|
export { use_control_resolution } from './use_control_resolution.js';
|
|
46
|
+
export { use_field_control_props } from './use_field_control_props.js';
|
|
46
47
|
// Field-level control resolution
|
|
47
48
|
export { resolve_field_controls, controls_to_fallback_visibility, } from './resolve_field_controls.js';
|
|
48
49
|
// Prop building utilities
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/shared/unified_field_controls/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,iBAAiB;AACjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,iBAAiB;AACjB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/shared/unified_field_controls/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,iBAAiB;AACjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,iBAAiB;AACjB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,QAAQ;AACR,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAkC,MAAM,8BAA8B,CAAC;AAEvG,iCAAiC;AACjC,OAAO,EACL,sBAAsB,EACtB,+BAA+B,GAGhC,MAAM,6BAA6B,CAAC;AAErC,0BAA0B;AAC1B,OAAO,EACL,mBAAmB,GAIpB,MAAM,0BAA0B,CAAC;AAoBlC,YAAY;AACZ,OAAO,EACL,YAAY,EACZ,eAAe,EACf,2BAA2B,EAC3B,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared hook for building UnifiedFieldControls props.
|
|
3
|
+
*
|
|
4
|
+
* Summary view duplicates these 6 useMemo blocks identically in both
|
|
5
|
+
* SummaryGroup and SummaryField. This hook consolidates them into one call.
|
|
6
|
+
*/
|
|
7
|
+
import type { ControlMetadata, ControlCallbacks, ControlConfig, FallbackSettings } from './types.js';
|
|
8
|
+
import type { FieldMetadataInput } from '../field_state/types.js';
|
|
9
|
+
/** Inputs for the hook */
|
|
10
|
+
export interface UseFieldControlPropsInput {
|
|
11
|
+
/** Whether show_icons is enabled for this field/group */
|
|
12
|
+
has_controls: boolean;
|
|
13
|
+
/** Field ID */
|
|
14
|
+
field_id: string;
|
|
15
|
+
/** Field label (used in control_config) */
|
|
16
|
+
field_label: string;
|
|
17
|
+
/** Entity type: 'group' | 'field' */
|
|
18
|
+
entity_type: 'group' | 'field';
|
|
19
|
+
/** icons_behaviour from context */
|
|
20
|
+
icons_behaviour: any;
|
|
21
|
+
/** Active role from settings */
|
|
22
|
+
active_role: string | undefined;
|
|
23
|
+
/** Field metadata from context */
|
|
24
|
+
metadata: FieldMetadataInput | undefined;
|
|
25
|
+
/** Settings from context */
|
|
26
|
+
settings: {
|
|
27
|
+
data_ok_mode?: 'checkbox' | 'multi_state';
|
|
28
|
+
data_ok_hidden_states?: any[];
|
|
29
|
+
notes_panel_style?: any;
|
|
30
|
+
notes_background_color?: string;
|
|
31
|
+
notes_save_mode?: any;
|
|
32
|
+
notes_mode?: 'controlled' | 'api';
|
|
33
|
+
on_data_ok_hidden?: any;
|
|
34
|
+
on_data_ok_protected?: any;
|
|
35
|
+
};
|
|
36
|
+
/** Chat config from context */
|
|
37
|
+
chat_config: {
|
|
38
|
+
group_id?: string;
|
|
39
|
+
api_base_url?: string;
|
|
40
|
+
timezone?: string;
|
|
41
|
+
read_only?: boolean;
|
|
42
|
+
log_polling?: boolean;
|
|
43
|
+
} | undefined;
|
|
44
|
+
/** Current user from context */
|
|
45
|
+
current_user: any;
|
|
46
|
+
/** Callbacks from context */
|
|
47
|
+
callbacks: {
|
|
48
|
+
on_data_ok_change?: (field_id: string, value: any) => void;
|
|
49
|
+
on_notes_change?: (field_id: string, notes: any) => void;
|
|
50
|
+
on_visibility_change?: (field_id: string, visibility: 'visible' | 'hidden') => void;
|
|
51
|
+
on_lock_change?: (field_id: string, locked: boolean) => void;
|
|
52
|
+
on_delete?: (field_id: string) => void;
|
|
53
|
+
on_skip_change?: (field_id: string, skipped: boolean) => void;
|
|
54
|
+
on_edit_elements?: (field_id: string, entity_type: 'field' | 'group') => void;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Build all props needed by UnifiedFieldControls for a field or group.
|
|
59
|
+
*/
|
|
60
|
+
export declare function use_field_control_props(input: UseFieldControlPropsInput): {
|
|
61
|
+
role_controls: Record<import("./types.js").ControlName, import("../../hazo_template_generator/types.js").RoleControlBehaviour> | null;
|
|
62
|
+
fallback_visibility: FallbackSettings;
|
|
63
|
+
fallback_enabled: FallbackSettings;
|
|
64
|
+
control_metadata: ControlMetadata;
|
|
65
|
+
control_callbacks: ControlCallbacks;
|
|
66
|
+
control_config: ControlConfig;
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=use_field_control_props.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use_field_control_props.d.ts","sourceRoot":"","sources":["../../../../src/components/shared/unified_field_controls/use_field_control_props.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACrG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,0BAA0B;AAC1B,MAAM,WAAW,yBAAyB;IACxC,yDAAyD;IACzD,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC;IAC/B,mCAAmC;IACnC,eAAe,EAAE,GAAG,CAAC;IACrB,gCAAgC;IAChC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,kCAAkC;IAClC,QAAQ,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACzC,4BAA4B;IAC5B,QAAQ,EAAE;QACR,YAAY,CAAC,EAAE,UAAU,GAAG,aAAa,CAAC;QAC1C,qBAAqB,CAAC,EAAE,GAAG,EAAE,CAAC;QAC9B,iBAAiB,CAAC,EAAE,GAAG,CAAC;QACxB,sBAAsB,CAAC,EAAE,MAAM,CAAC;QAChC,eAAe,CAAC,EAAE,GAAG,CAAC;QACtB,UAAU,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC;QAClC,iBAAiB,CAAC,EAAE,GAAG,CAAC;QACxB,oBAAoB,CAAC,EAAE,GAAG,CAAC;KAC5B,CAAC;IACF,+BAA+B;IAC/B,WAAW,EAAE;QACX,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,GAAG,SAAS,CAAC;IACd,gCAAgC;IAChC,YAAY,EAAE,GAAG,CAAC;IAClB,6BAA6B;IAC7B,SAAS,EAAE;QACT,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;QAC3D,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;QACzD,oBAAoB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,GAAG,QAAQ,KAAK,IAAI,CAAC;QACpF,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QAC7D,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QACvC,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;QAC9D,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,KAAK,IAAI,CAAC;KAC/E,CAAC;CACH;AAaD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,yBAAyB;;;;;;;EAyFvE"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared hook for building UnifiedFieldControls props.
|
|
3
|
+
*
|
|
4
|
+
* Summary view duplicates these 6 useMemo blocks identically in both
|
|
5
|
+
* SummaryGroup and SummaryField. This hook consolidates them into one call.
|
|
6
|
+
*/
|
|
7
|
+
'use client';
|
|
8
|
+
import { useMemo } from 'react';
|
|
9
|
+
import { resolve_role_controls } from '../role_utils/index.js';
|
|
10
|
+
/** The empty fallback settings (all false) */
|
|
11
|
+
const EMPTY_FALLBACK = {
|
|
12
|
+
data_ok: false,
|
|
13
|
+
skip: false,
|
|
14
|
+
notes: false,
|
|
15
|
+
chat: false,
|
|
16
|
+
visibility: false,
|
|
17
|
+
lock: false,
|
|
18
|
+
delete: false,
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Build all props needed by UnifiedFieldControls for a field or group.
|
|
22
|
+
*/
|
|
23
|
+
export function use_field_control_props(input) {
|
|
24
|
+
const { has_controls, field_id, field_label, entity_type, icons_behaviour, active_role, metadata, settings, chat_config, current_user, callbacks, } = input;
|
|
25
|
+
const role_controls = useMemo(() => {
|
|
26
|
+
if (!has_controls)
|
|
27
|
+
return null;
|
|
28
|
+
return resolve_role_controls(icons_behaviour, active_role);
|
|
29
|
+
}, [has_controls, icons_behaviour, active_role]);
|
|
30
|
+
const fallback_visibility = useMemo(() => {
|
|
31
|
+
if (!role_controls)
|
|
32
|
+
return EMPTY_FALLBACK;
|
|
33
|
+
return {
|
|
34
|
+
data_ok: role_controls.control_data_ok.visible,
|
|
35
|
+
skip: role_controls.control_skip.visible,
|
|
36
|
+
notes: role_controls.control_notes.visible,
|
|
37
|
+
chat: role_controls.control_chat.visible,
|
|
38
|
+
visibility: role_controls.control_visibility.visible,
|
|
39
|
+
lock: role_controls.control_lock.visible,
|
|
40
|
+
delete: role_controls.control_delete.visible,
|
|
41
|
+
};
|
|
42
|
+
}, [role_controls]);
|
|
43
|
+
const fallback_enabled = useMemo(() => {
|
|
44
|
+
if (!role_controls)
|
|
45
|
+
return EMPTY_FALLBACK;
|
|
46
|
+
return {
|
|
47
|
+
data_ok: role_controls.control_data_ok.enabled,
|
|
48
|
+
skip: role_controls.control_skip.enabled,
|
|
49
|
+
notes: role_controls.control_notes.enabled,
|
|
50
|
+
chat: role_controls.control_chat.enabled,
|
|
51
|
+
visibility: role_controls.control_visibility.enabled,
|
|
52
|
+
lock: role_controls.control_lock.enabled,
|
|
53
|
+
delete: role_controls.control_delete.enabled,
|
|
54
|
+
};
|
|
55
|
+
}, [role_controls]);
|
|
56
|
+
const control_metadata = useMemo(() => ({
|
|
57
|
+
data_ok: metadata?.data_ok,
|
|
58
|
+
locked: metadata?.locked,
|
|
59
|
+
deleted: metadata?.deleted,
|
|
60
|
+
visibility: metadata?.visibility,
|
|
61
|
+
skipped: metadata?.skipped,
|
|
62
|
+
notes: metadata?.notes,
|
|
63
|
+
has_chat_messages: metadata?.has_chat_messages,
|
|
64
|
+
chat_status: metadata?.chat_status,
|
|
65
|
+
}), [metadata]);
|
|
66
|
+
const control_callbacks = useMemo(() => ({
|
|
67
|
+
on_data_ok_change: (value) => callbacks.on_data_ok_change?.(field_id, value),
|
|
68
|
+
on_notes_change: (notes) => callbacks.on_notes_change?.(field_id, notes),
|
|
69
|
+
on_chat_click: () => { },
|
|
70
|
+
on_visibility_change: (visibility) => callbacks.on_visibility_change?.(field_id, visibility),
|
|
71
|
+
on_lock_change: (locked) => callbacks.on_lock_change?.(field_id, locked),
|
|
72
|
+
on_delete: () => callbacks.on_delete?.(field_id),
|
|
73
|
+
on_skip_change: (skipped) => callbacks.on_skip_change?.(field_id, skipped),
|
|
74
|
+
on_edit_elements: () => callbacks.on_edit_elements?.(field_id, entity_type),
|
|
75
|
+
}), [field_id, entity_type, callbacks]);
|
|
76
|
+
const control_config = useMemo(() => ({
|
|
77
|
+
data_ok_mode: settings.data_ok_mode,
|
|
78
|
+
data_ok_hidden_states: settings.data_ok_hidden_states,
|
|
79
|
+
chat_group_id: chat_config?.group_id,
|
|
80
|
+
chat_api_base_url: chat_config?.api_base_url,
|
|
81
|
+
chat_timezone: chat_config?.timezone,
|
|
82
|
+
chat_read_only: chat_config?.read_only,
|
|
83
|
+
chat_log_polling: chat_config?.log_polling,
|
|
84
|
+
current_user: current_user,
|
|
85
|
+
field_data_id: field_id,
|
|
86
|
+
label: field_label || field_id,
|
|
87
|
+
notes_panel_style: settings.notes_panel_style,
|
|
88
|
+
notes_background_color: settings.notes_background_color,
|
|
89
|
+
notes_save_mode: settings.notes_save_mode,
|
|
90
|
+
notes_mode: settings.notes_mode,
|
|
91
|
+
auto_actions: {
|
|
92
|
+
on_data_ok_hidden: settings.on_data_ok_hidden,
|
|
93
|
+
on_data_ok_protected: settings.on_data_ok_protected,
|
|
94
|
+
},
|
|
95
|
+
}), [settings, chat_config, current_user, field_id, field_label]);
|
|
96
|
+
return {
|
|
97
|
+
role_controls,
|
|
98
|
+
fallback_visibility,
|
|
99
|
+
fallback_enabled,
|
|
100
|
+
control_metadata,
|
|
101
|
+
control_callbacks,
|
|
102
|
+
control_config,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=use_field_control_props.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use_field_control_props.js","sourceRoot":"","sources":["../../../../src/components/shared/unified_field_controls/use_field_control_props.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared hook that extracts ALL common setup logic from form field components.
|
|
3
|
+
*
|
|
4
|
+
* Every form component (inputbox, textarea, checkbox, combo, radio, date)
|
|
5
|
+
* duplicates ~200 lines of identical setup: file state, validation,
|
|
6
|
+
* chat hook, visibility check, disabled state, additional entry logic,
|
|
7
|
+
* error merging, data_ok handler, and imperative handle.
|
|
8
|
+
*
|
|
9
|
+
* This hook consolidates all of that into a single reusable hook.
|
|
10
|
+
*/
|
|
11
|
+
import React from 'react';
|
|
12
|
+
import { CollabFormFieldContainer, type CollabFormFieldBaseProps, type NoteEntry } from '../hazo_collab_form_base.js';
|
|
13
|
+
import type { FormFileAttachment } from '../../types/file_attachment.js';
|
|
14
|
+
import type { FileManagerCallbacks } from '../../types/file_manager.js';
|
|
15
|
+
import type { DataOkState } from '../data_ok_multi_state.js';
|
|
16
|
+
/** Props type for CollabFormFieldContainer (excluding children) */
|
|
17
|
+
type ContainerPropsType = Omit<Parameters<typeof CollabFormFieldContainer>[0], 'children'>;
|
|
18
|
+
/**
|
|
19
|
+
* Result returned by use_base_form_field
|
|
20
|
+
*/
|
|
21
|
+
export interface BaseFormFieldResult {
|
|
22
|
+
/** Ref for the underlying DOM element (input, textarea, button, etc.) */
|
|
23
|
+
component_ref: React.RefObject<any>;
|
|
24
|
+
/** Current files (controlled or internal) */
|
|
25
|
+
current_files: FormFileAttachment[];
|
|
26
|
+
/** Internal file setter (for controlled/uncontrolled file state) */
|
|
27
|
+
set_internal_files: React.Dispatch<React.SetStateAction<FormFileAttachment[]>>;
|
|
28
|
+
/** Combined display error (external error || validation error) */
|
|
29
|
+
display_error: string | undefined;
|
|
30
|
+
/** Setter for internal validation error */
|
|
31
|
+
set_validation_error: React.Dispatch<React.SetStateAction<string | null>>;
|
|
32
|
+
/** Whether the field should be disabled (chat active || locked || skipped) */
|
|
33
|
+
is_field_disabled: boolean;
|
|
34
|
+
/** Whether visibility === 'hidden' */
|
|
35
|
+
is_hidden: boolean;
|
|
36
|
+
/** Whether to return null (responder + hidden) */
|
|
37
|
+
should_hide: boolean;
|
|
38
|
+
/** Whether to show the add entry button */
|
|
39
|
+
show_add_entry: boolean;
|
|
40
|
+
/** Unified handler for data_ok changes (both checkbox and multi-state) */
|
|
41
|
+
handle_data_ok_unified_change: (value: boolean | DataOkState) => void;
|
|
42
|
+
/** Stable callback for files change (handles internal/controlled state) */
|
|
43
|
+
handle_files_change: (new_files: FormFileAttachment[]) => void;
|
|
44
|
+
/** Final computed field ID */
|
|
45
|
+
field_id_final: string;
|
|
46
|
+
/** Chat icon click handler */
|
|
47
|
+
handle_chat_icon_click: () => void;
|
|
48
|
+
/** Chat close handler */
|
|
49
|
+
handle_chat_close: () => void;
|
|
50
|
+
/** Whether chat is currently open */
|
|
51
|
+
chat_is_open: boolean;
|
|
52
|
+
/** Whether chat is effectively disabled (hidden field, etc.) */
|
|
53
|
+
is_chat_effectively_disabled: boolean;
|
|
54
|
+
/** Container props for CollabFormFieldContainer */
|
|
55
|
+
container_props: ContainerPropsType;
|
|
56
|
+
/** Label props for CollabFormFieldLabel */
|
|
57
|
+
label_props: {
|
|
58
|
+
field_id_final: string;
|
|
59
|
+
label: string;
|
|
60
|
+
tooltip: any;
|
|
61
|
+
label_class_name?: string;
|
|
62
|
+
required?: boolean;
|
|
63
|
+
visibility?: 'visible' | 'hidden';
|
|
64
|
+
locked?: boolean;
|
|
65
|
+
label_actions?: React.ReactNode;
|
|
66
|
+
};
|
|
67
|
+
/** Controls props for UnifiedFieldControls */
|
|
68
|
+
controls_props: {
|
|
69
|
+
field_id: string;
|
|
70
|
+
icons_behaviour: any;
|
|
71
|
+
active_role: any;
|
|
72
|
+
metadata: {
|
|
73
|
+
data_ok: any;
|
|
74
|
+
skipped: boolean;
|
|
75
|
+
locked: boolean;
|
|
76
|
+
deleted: boolean;
|
|
77
|
+
visibility: 'visible' | 'hidden';
|
|
78
|
+
notes: NoteEntry[] | undefined;
|
|
79
|
+
chat_status: any;
|
|
80
|
+
};
|
|
81
|
+
callbacks: {
|
|
82
|
+
on_data_ok_change: (value: boolean | DataOkState) => void;
|
|
83
|
+
on_skip_change: ((skipped: boolean) => void) | undefined;
|
|
84
|
+
on_notes_change: ((notes: NoteEntry[]) => void) | undefined;
|
|
85
|
+
on_chat_click: () => void;
|
|
86
|
+
on_visibility_change: ((visibility: 'visible' | 'hidden') => void) | undefined;
|
|
87
|
+
on_lock_change: ((locked: boolean) => void) | undefined;
|
|
88
|
+
on_delete: (() => void) | undefined;
|
|
89
|
+
};
|
|
90
|
+
config: {
|
|
91
|
+
data_ok_mode: 'checkbox' | 'multi_state';
|
|
92
|
+
data_ok_hidden_states: DataOkState[] | undefined;
|
|
93
|
+
chat_group_id: string | undefined;
|
|
94
|
+
current_user: any;
|
|
95
|
+
field_data_id: string;
|
|
96
|
+
label: string;
|
|
97
|
+
chat_api_base_url: string | undefined;
|
|
98
|
+
chat_timezone: string | undefined;
|
|
99
|
+
chat_read_only: boolean | undefined;
|
|
100
|
+
notes_panel_style: any;
|
|
101
|
+
notes_background_color: string | undefined;
|
|
102
|
+
notes_save_mode: any;
|
|
103
|
+
};
|
|
104
|
+
fallback_visibility: {
|
|
105
|
+
data_ok: boolean;
|
|
106
|
+
skip: boolean;
|
|
107
|
+
notes: boolean;
|
|
108
|
+
chat: boolean;
|
|
109
|
+
visibility: boolean;
|
|
110
|
+
lock: boolean;
|
|
111
|
+
delete: boolean;
|
|
112
|
+
};
|
|
113
|
+
fallback_enabled: {
|
|
114
|
+
data_ok: boolean;
|
|
115
|
+
skip: boolean;
|
|
116
|
+
notes: boolean;
|
|
117
|
+
chat: boolean;
|
|
118
|
+
visibility: boolean;
|
|
119
|
+
lock: boolean;
|
|
120
|
+
delete: boolean;
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
/** File upload section props */
|
|
124
|
+
file_upload_props: {
|
|
125
|
+
field_id_final: string;
|
|
126
|
+
accept_files_public: boolean;
|
|
127
|
+
accept_files_private: boolean;
|
|
128
|
+
files_dir?: string;
|
|
129
|
+
max_size?: number;
|
|
130
|
+
min_files?: number;
|
|
131
|
+
max_files?: number;
|
|
132
|
+
file_accept?: string;
|
|
133
|
+
file_processor?: any;
|
|
134
|
+
file_validator?: any;
|
|
135
|
+
file_manager?: FileManagerCallbacks;
|
|
136
|
+
files: FormFileAttachment[];
|
|
137
|
+
on_files_change: (new_files: FormFileAttachment[]) => void;
|
|
138
|
+
component_ref: React.RefObject<any>;
|
|
139
|
+
private_files_permission?: string;
|
|
140
|
+
can_access_private_files?: boolean;
|
|
141
|
+
private_files?: FormFileAttachment[];
|
|
142
|
+
on_private_files_change?: (files: FormFileAttachment[]) => void;
|
|
143
|
+
};
|
|
144
|
+
/** Reference tag props */
|
|
145
|
+
reference_tag_props: {
|
|
146
|
+
reference_value: any;
|
|
147
|
+
reference_label: string | undefined;
|
|
148
|
+
reference_tag_background_color: string | undefined;
|
|
149
|
+
};
|
|
150
|
+
/** Error display props */
|
|
151
|
+
error_props: {
|
|
152
|
+
field_id_final: string;
|
|
153
|
+
error: string | undefined;
|
|
154
|
+
error_class_name: string | undefined;
|
|
155
|
+
};
|
|
156
|
+
/** Additional entry props */
|
|
157
|
+
entry_props: {
|
|
158
|
+
show_add_entry: boolean;
|
|
159
|
+
label: string;
|
|
160
|
+
field_id: string;
|
|
161
|
+
on_add_entry: ((field_id: string) => void) | undefined;
|
|
162
|
+
is_additional_entry: boolean | undefined;
|
|
163
|
+
on_delete_entry: ((field_id: string) => void) | undefined;
|
|
164
|
+
action_buttons_borderless: boolean | undefined;
|
|
165
|
+
};
|
|
166
|
+
/** User role */
|
|
167
|
+
user_role: 'author' | 'responder';
|
|
168
|
+
/** Width class name for field container */
|
|
169
|
+
field_width_class_name: string | undefined;
|
|
170
|
+
/** Whether field is locked */
|
|
171
|
+
locked: boolean;
|
|
172
|
+
/** Whether field is skipped */
|
|
173
|
+
skipped: boolean;
|
|
174
|
+
/** Class name */
|
|
175
|
+
className: string | undefined;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Hook that consolidates all common form field component setup.
|
|
179
|
+
*
|
|
180
|
+
* @param props - The full component props (extends CollabFormFieldBaseProps)
|
|
181
|
+
* @param ref - The forwarded ref
|
|
182
|
+
* @param element_type_name - Used for display name / typing context only
|
|
183
|
+
*/
|
|
184
|
+
export declare function use_base_form_field<TRef>(props: CollabFormFieldBaseProps & {
|
|
185
|
+
disabled?: boolean;
|
|
186
|
+
className?: string;
|
|
187
|
+
id?: string;
|
|
188
|
+
files?: FormFileAttachment[];
|
|
189
|
+
on_files_change?: (files: FormFileAttachment[]) => void;
|
|
190
|
+
[key: string]: any;
|
|
191
|
+
}, ref: React.ForwardedRef<TRef>): BaseFormFieldResult;
|
|
192
|
+
export {};
|
|
193
|
+
//# sourceMappingURL=use_base_form_field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use_base_form_field.d.ts","sourceRoot":"","sources":["../../../src/components/shared/use_base_form_field.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAEL,wBAAwB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,SAAS,EACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG7D,mEAAmE;AACnE,KAAK,kBAAkB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AAE3F;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACpC,6CAA6C;IAC7C,aAAa,EAAE,kBAAkB,EAAE,CAAC;IACpC,oEAAoE;IACpE,kBAAkB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAC/E,kEAAkE;IAClE,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,2CAA2C;IAC3C,oBAAoB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IAC1E,8EAA8E;IAC9E,iBAAiB,EAAE,OAAO,CAAC;IAC3B,sCAAsC;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,kDAAkD;IAClD,WAAW,EAAE,OAAO,CAAC;IACrB,2CAA2C;IAC3C,cAAc,EAAE,OAAO,CAAC;IACxB,0EAA0E;IAC1E,6BAA6B,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,KAAK,IAAI,CAAC;IACtE,2EAA2E;IAC3E,mBAAmB,EAAE,CAAC,SAAS,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;IAC/D,8BAA8B;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,8BAA8B;IAC9B,sBAAsB,EAAE,MAAM,IAAI,CAAC;IACnC,yBAAyB;IACzB,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,qCAAqC;IACrC,YAAY,EAAE,OAAO,CAAC;IACtB,gEAAgE;IAChE,4BAA4B,EAAE,OAAO,CAAC;IAItC,mDAAmD;IACnD,eAAe,EAAE,kBAAkB,CAAC;IACpC,2CAA2C;IAC3C,WAAW,EAAE;QACX,cAAc,EAAE,MAAM,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,GAAG,CAAC;QACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;QAClC,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KACjC,CAAC;IACF,8CAA8C;IAC9C,cAAc,EAAE;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,eAAe,EAAE,GAAG,CAAC;QACrB,WAAW,EAAE,GAAG,CAAC;QACjB,QAAQ,EAAE;YACR,OAAO,EAAE,GAAG,CAAC;YACb,OAAO,EAAE,OAAO,CAAC;YACjB,MAAM,EAAE,OAAO,CAAC;YAChB,OAAO,EAAE,OAAO,CAAC;YACjB,UAAU,EAAE,SAAS,GAAG,QAAQ,CAAC;YACjC,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;YAC/B,WAAW,EAAE,GAAG,CAAC;SAClB,CAAC;QACF,SAAS,EAAE;YACT,iBAAiB,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,KAAK,IAAI,CAAC;YAC1D,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;YACzD,eAAe,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;YAC5D,aAAa,EAAE,MAAM,IAAI,CAAC;YAC1B,oBAAoB,EAAE,CAAC,CAAC,UAAU,EAAE,SAAS,GAAG,QAAQ,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;YAC/E,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;YACxD,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;SACrC,CAAC;QACF,MAAM,EAAE;YACN,YAAY,EAAE,UAAU,GAAG,aAAa,CAAC;YACzC,qBAAqB,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;YACjD,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;YAClC,YAAY,EAAE,GAAG,CAAC;YAClB,aAAa,EAAE,MAAM,CAAC;YACtB,KAAK,EAAE,MAAM,CAAC;YACd,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;YACtC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;YAClC,cAAc,EAAE,OAAO,GAAG,SAAS,CAAC;YACpC,iBAAiB,EAAE,GAAG,CAAC;YACvB,sBAAsB,EAAE,MAAM,GAAG,SAAS,CAAC;YAC3C,eAAe,EAAE,GAAG,CAAC;SACtB,CAAC;QACF,mBAAmB,EAAE;YACnB,OAAO,EAAE,OAAO,CAAC;YACjB,IAAI,EAAE,OAAO,CAAC;YACd,KAAK,EAAE,OAAO,CAAC;YACf,IAAI,EAAE,OAAO,CAAC;YACd,UAAU,EAAE,OAAO,CAAC;YACpB,IAAI,EAAE,OAAO,CAAC;YACd,MAAM,EAAE,OAAO,CAAC;SACjB,CAAC;QACF,gBAAgB,EAAE;YAChB,OAAO,EAAE,OAAO,CAAC;YACjB,IAAI,EAAE,OAAO,CAAC;YACd,KAAK,EAAE,OAAO,CAAC;YACf,IAAI,EAAE,OAAO,CAAC;YACd,UAAU,EAAE,OAAO,CAAC;YACpB,IAAI,EAAE,OAAO,CAAC;YACd,MAAM,EAAE,OAAO,CAAC;SACjB,CAAC;KACH,CAAC;IACF,gCAAgC;IAChC,iBAAiB,EAAE;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,mBAAmB,EAAE,OAAO,CAAC;QAC7B,oBAAoB,EAAE,OAAO,CAAC;QAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,GAAG,CAAC;QACrB,cAAc,CAAC,EAAE,GAAG,CAAC;QACrB,YAAY,CAAC,EAAE,oBAAoB,CAAC;QACpC,KAAK,EAAE,kBAAkB,EAAE,CAAC;QAC5B,eAAe,EAAE,CAAC,SAAS,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;QAC3D,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACpC,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAClC,wBAAwB,CAAC,EAAE,OAAO,CAAC;QACnC,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;QACrC,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;KACjE,CAAC;IACF,0BAA0B;IAC1B,mBAAmB,EAAE;QACnB,eAAe,EAAE,GAAG,CAAC;QACrB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;QACpC,8BAA8B,EAAE,MAAM,GAAG,SAAS,CAAC;KACpD,CAAC;IACF,0BAA0B;IAC1B,WAAW,EAAE;QACX,cAAc,EAAE,MAAM,CAAC;QACvB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;KACtC,CAAC;IACF,6BAA6B;IAC7B,WAAW,EAAE;QACX,cAAc,EAAE,OAAO,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,YAAY,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;QACvD,mBAAmB,EAAE,OAAO,GAAG,SAAS,CAAC;QACzC,eAAe,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;QAC1D,yBAAyB,EAAE,OAAO,GAAG,SAAS,CAAC;KAChD,CAAC;IACF,gBAAgB;IAChB,SAAS,EAAE,QAAQ,GAAG,WAAW,CAAC;IAClC,2CAA2C;IAC3C,sBAAsB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,8BAA8B;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,+BAA+B;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB;IACjB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EACtC,KAAK,EAAE,wBAAwB,GAAG;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC7B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;IACxD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,EACD,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAC5B,mBAAmB,CAsWrB"}
|