@openg2p/registry-widgets 0.1.5 → 0.1.7

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/dist/index.esm.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { createSlice, configureStore } from '@reduxjs/toolkit';
2
- import React, { useContext, useRef, useEffect, useMemo, useCallback, createContext, useState } from 'react';
3
- import { useDispatch, useSelector, Provider, useStore } from 'react-redux';
2
+ import React, { useContext, createContext, useMemo, useEffect, useRef, useCallback, useState } from 'react';
3
+ import { Provider, useDispatch, useSelector, useStore } from 'react-redux';
4
4
  import { z } from 'zod';
5
5
  import { createPortal } from 'react-dom';
6
6
  import { JsonEditor } from 'json-edit-react';
@@ -919,700 +919,6 @@ const useWidgetEventBus = () => {
919
919
  return useContext(WidgetEventBusContext);
920
920
  };
921
921
 
922
- // Define stable empty arrays to avoid selector reference issues
923
- const EMPTY_ERRORS = [];
924
- const EMPTY_DATA_SOURCE$1 = [];
925
- const useBaseWidget = (options) => {
926
- const { config, dataSourceRequestHandler, schemaData, onValueChange } = options;
927
- const dispatch = useDispatch();
928
- const eventBus = useWidgetEventBus();
929
- const widgetId = config['widget-id'];
930
- // Get state from Redux
931
- const values = useSelector((state) => state.widget.values);
932
- const errors = useSelector((state) => state.widget.errors[widgetId] ?? EMPTY_ERRORS);
933
- const touched = useSelector((state) => state.widget.touched[widgetId] || false);
934
- const loading = useSelector((state) => state.widget.loading[widgetId] || false);
935
- const dataSourceOptions = useSelector((state) => state.widget.dataSources[widgetId] ?? EMPTY_DATA_SOURCE$1);
936
- // Skip value handling for layout widgets (they don't store data values)
937
- // Infer layout from widget-type
938
- const isLayoutWidget = config['widget-type'] === 'layout';
939
- // Track if user has explicitly set a value to prevent default from overwriting
940
- const userHasSetValueRef = useRef(false);
941
- // Use ref for values to avoid stale closures in handleChange
942
- const valuesRef = useRef(values);
943
- useEffect(() => {
944
- valuesRef.current = values;
945
- }, [values]);
946
- // Track last dispatched value to prevent duplicate dispatches
947
- const lastDispatchedValueRef = useRef(null);
948
- // Get current value
949
- const currentValue = useMemo(() => {
950
- if (isLayoutWidget) {
951
- return undefined; // Layout widgets don't have values
952
- }
953
- // Helper to extract displayable value from object (especially geo hierarchy objects)
954
- const extractValueFromObject = (obj) => {
955
- if (!obj || typeof obj !== 'object' || Array.isArray(obj)) {
956
- return obj;
957
- }
958
- // Check for geo hierarchy structure first
959
- if ('geo_code_hierarchy_json' in obj || 'geo_lowest_level_value_id' in obj) {
960
- if ('geo_lowest_level_value_id' in obj) {
961
- return obj.geo_lowest_level_value_id;
962
- }
963
- // If it's a geo hierarchy object but no extractable ID, return undefined to avoid rendering object
964
- return undefined;
965
- }
966
- // Try common value fields
967
- if ('value' in obj) {
968
- return obj.value;
969
- }
970
- if ('id' in obj) {
971
- return obj.id;
972
- }
973
- if ('label' in obj) {
974
- return obj.label;
975
- }
976
- if ('name' in obj) {
977
- return obj.name;
978
- }
979
- // If no extractable value found, return undefined to avoid rendering object as React child
980
- // This prevents "Objects are not valid as a React child" errors
981
- return undefined;
982
- };
983
- // Try to get value from widgetId first (this should have the actual selected value)
984
- // For geo widgets with dataPath, widgetId stores the actual ID, while dataPath stores the hierarchy object
985
- let value = values[widgetId];
986
- // Extract value if it's an object (handles geo hierarchy objects stored in widgetId)
987
- if (value !== null && value !== undefined && typeof value === 'object' && !Array.isArray(value)) {
988
- value = extractValueFromObject(value);
989
- }
990
- // If widgetId doesn't have a value, try dataPath
991
- if (value === undefined && config['widget-data-path']) {
992
- value = getWidgetValue(values, config['widget-data-path'], widgetId);
993
- // Extract value if it's an object (handles geo hierarchy objects from dataPath)
994
- if (value !== null && value !== undefined && typeof value === 'object' && !Array.isArray(value)) {
995
- value = extractValueFromObject(value);
996
- }
997
- }
998
- // If value is still undefined and user has set a value, try reading from widgetId as backup
999
- // This handles cases where dataPath lookup might fail temporarily
1000
- if (value === undefined && userHasSetValueRef.current && values[widgetId] !== undefined) {
1001
- value = values[widgetId];
1002
- // Extract value if it's an object (handles geo hierarchy objects)
1003
- if (value !== null && value !== undefined && typeof value === 'object' && !Array.isArray(value)) {
1004
- value = extractValueFromObject(value);
1005
- }
1006
- }
1007
- // Final safety check: if value is still an object, extract displayable value
1008
- if (value !== null && value !== undefined && typeof value === 'object' && !Array.isArray(value)) {
1009
- value = extractValueFromObject(value);
1010
- }
1011
- // If user has explicitly set a value, always return it (even if undefined/null)
1012
- // This prevents the default from overwriting user selections
1013
- if (userHasSetValueRef.current) {
1014
- return value;
1015
- }
1016
- // Only fall back to default if user hasn't set a value yet
1017
- // But check if value is explicitly null (user cleared it) vs undefined (never set)
1018
- if (value === null) {
1019
- return null; // User explicitly cleared it, don't use default
1020
- }
1021
- return value !== undefined ? value : config['widget-data-default'];
1022
- }, [values, config, widgetId, isLayoutWidget]);
1023
- // Initialize default value only once on mount (skip for layout widgets)
1024
- useEffect(() => {
1025
- if (isLayoutWidget) {
1026
- return;
1027
- }
1028
- // Only initialize default if value is undefined and user hasn't set a value yet
1029
- if (!userHasSetValueRef.current && config['widget-data-default'] !== undefined && currentValue === undefined) {
1030
- handleChange(config['widget-data-default'], false);
1031
- }
1032
- // eslint-disable-next-line react-hooks/exhaustive-deps
1033
- }, [isLayoutWidget]); // Only run once on mount
1034
- // Handle value change
1035
- // CRITICAL: Don't include 'values' in dependency array - it causes the callback to be recreated
1036
- // every time values change, which can lead to stale closures and double dispatches
1037
- const handleChange = useCallback((newValue, validate = true) => {
1038
- // Use valuesRef to get the latest values, not the stale closure value
1039
- const currentValues = valuesRef.current;
1040
- const currentValue = currentValues[widgetId] || getWidgetValue(currentValues, config['widget-data-path'], widgetId);
1041
- // CRITICAL: Prevent setting the same value (avoids unnecessary dispatches and potential loops)
1042
- if (currentValue === newValue) {
1043
- return;
1044
- }
1045
- // Mark that user has set a value (unless this is the default initialization)
1046
- if (newValue !== config['widget-data-default'] || userHasSetValueRef.current) {
1047
- userHasSetValueRef.current = true;
1048
- }
1049
- // CRITICAL FIX: If there's no dataPath, just set the value directly
1050
- // If there's a dataPath, we need to update both the widgetId and the dataPath
1051
- if (!config['widget-data-path']) {
1052
- // No dataPath: just set the value directly by widgetId
1053
- // CRITICAL: Check if we just dispatched this value to prevent duplicate dispatches
1054
- if (lastDispatchedValueRef.current === newValue) {
1055
- return;
1056
- }
1057
- lastDispatchedValueRef.current = newValue;
1058
- dispatch(setValue({ widgetId, value: newValue }));
1059
- }
1060
- else {
1061
- // Has dataPath: update both widgetId and dataPath
1062
- // CRITICAL: Create updated values object with newValue already set
1063
- // This prevents setWidgetValue from reading stale values
1064
- const currentValuesWithUpdate = {
1065
- ...valuesRef.current,
1066
- [widgetId]: newValue, // Ensure widgetId has the new value
1067
- };
1068
- const updatedValues = setWidgetValue(currentValuesWithUpdate, config['widget-data-path'], widgetId, newValue);
1069
- // setWidgetValue returns the complete updated structure with all existing data preserved
1070
- // Use setValues to update the entire state with deep merge
1071
- dispatch(setValues(updatedValues));
1072
- }
1073
- // Validate if needed
1074
- if (validate) {
1075
- const validationErrors = validateWidget(newValue, config['widget-data-validation'], config['widget-required']);
1076
- dispatch(setError({ widgetId, errors: validationErrors }));
1077
- }
1078
- // Call custom onChange if provided
1079
- if (onValueChange) {
1080
- onValueChange(widgetId, newValue);
1081
- }
1082
- // Publish widget:change event
1083
- // Skip publishing for last-level geo widgets (no child widgets waiting)
1084
- const geoConfig = config['widget-geo-config'];
1085
- const isLastLevelGeo = geoConfig?.isLastLevel === true;
1086
- if (eventBus && !isLastLevelGeo) {
1087
- eventBus.publish({
1088
- type: 'widget:change',
1089
- widgetId,
1090
- value: newValue,
1091
- timestamp: Date.now(),
1092
- });
1093
- }
1094
- }, [config, widgetId, dispatch, onValueChange, eventBus] // Removed 'values' to prevent stale closures
1095
- );
1096
- // Handle blur
1097
- const handleBlur = useCallback(() => {
1098
- dispatch(setTouched({ widgetId, touched: true }));
1099
- // Validate on blur
1100
- const validationErrors = validateWidget(currentValue, config['widget-data-validation'], config['widget-required']);
1101
- dispatch(setError({ widgetId, errors: validationErrors }));
1102
- // Publish widget:blur event
1103
- if (eventBus) {
1104
- eventBus.publish({
1105
- type: 'widget:blur',
1106
- widgetId,
1107
- value: currentValue,
1108
- timestamp: Date.now(),
1109
- });
1110
- }
1111
- }, [currentValue, config, widgetId, dispatch, eventBus]);
1112
- // Get field value helper
1113
- const getFieldValue = useCallback((path) => {
1114
- return getWidgetValue(values, path, '');
1115
- }, [values]);
1116
- // Conditional visibility and enablement
1117
- const isVisible = useMemo(() => {
1118
- // Layout widgets are always visible unless explicitly hidden
1119
- if (isLayoutWidget && !config['widget-data-options']?.condition) {
1120
- return true;
1121
- }
1122
- return shouldShowWidget(config['widget-data-options'], values);
1123
- }, [config['widget-data-options'], values, isLayoutWidget]);
1124
- const isEnabled = useMemo(() => {
1125
- // Layout widgets are always enabled (they don't have input state)
1126
- if (isLayoutWidget) {
1127
- return true;
1128
- }
1129
- if (config['widget-readonly']) {
1130
- return false;
1131
- }
1132
- return shouldEnableWidget(config['widget-data-options'], values);
1133
- }, [config['widget-readonly'], config['widget-data-options'], values, isLayoutWidget]);
1134
- // Format value for display
1135
- const formattedValue = useMemo(() => {
1136
- if (!config['widget-data-format']) {
1137
- return currentValue;
1138
- }
1139
- return formatValue(currentValue, config['widget-data-format'], config.widget);
1140
- }, [currentValue, config]);
1141
- // Track readonly state explicitly to detect changes
1142
- // Use JSON.stringify to create a stable reference for the dependency array
1143
- const isReadonly = config['widget-readonly'] ?? false;
1144
- const dataSource = config['widget-data-source'];
1145
- const geoConfig = config['widget-geo-config'];
1146
- // Use ref to store handler to avoid stale closures
1147
- const handlerRef = useRef(dataSourceRequestHandler);
1148
- useEffect(() => {
1149
- handlerRef.current = dataSourceRequestHandler;
1150
- }, [dataSourceRequestHandler]);
1151
- // Create a stable key for the config to detect changes
1152
- // This ensures the effect runs when widget-readonly changes
1153
- const apiService = dataSource?.type === 'api' ? dataSource.service : '';
1154
- const apiEndpoint = dataSource?.type === 'api' ? dataSource.endpoint : '';
1155
- const configKey = `${widgetId}-${isReadonly}-${dataSource?.type || 'none'}-${apiService}-${apiEndpoint}`;
1156
- // Handle data source loading
1157
- useEffect(() => {
1158
- if (!dataSource) {
1159
- return;
1160
- }
1161
- // For API data sources, check if widget is readonly
1162
- // According to PRD: "Level 1 geo widgets load on widget mount or when entering edit mode"
1163
- // So we should only load API data sources when widget is NOT readonly
1164
- if (dataSource.type === 'api' && isReadonly) {
1165
- return;
1166
- }
1167
- // For widgets with dependencies, check if dependency value exists
1168
- if (dataSource.type === 'api' && dataSource.dependsOn) {
1169
- // Check if dependency value exists
1170
- let depValue = null;
1171
- if (dataSource.dependsOn.includes('.')) {
1172
- depValue = getWidgetValue(values, dataSource.dependsOn, '');
1173
- }
1174
- else {
1175
- depValue = values[dataSource.dependsOn];
1176
- }
1177
- // If dependency is empty, don't load (will load when dependency has value)
1178
- if (depValue === null || depValue === undefined || depValue === '') {
1179
- return;
1180
- }
1181
- }
1182
- const loadDataSource = async () => {
1183
- // Get current handler from ref to avoid stale closures
1184
- // Also check prop directly as fallback (for initial render or when ref not updated yet)
1185
- const currentHandler = handlerRef.current || dataSourceRequestHandler;
1186
- // Only check for handler when we actually need it (inside the async function)
1187
- // This avoids false errors during React Strict Mode double-invocation
1188
- // If handler isn't available yet, silently skip - React will retry when it's ready
1189
- try {
1190
- if (dataSource.type === 'api' && !currentHandler) {
1191
- // Silently skip if handler isn't available yet (common during React Strict Mode double-invocation)
1192
- // React will call this effect again when the handler is ready
1193
- return;
1194
- }
1195
- dispatch(setLoading({ widgetId, loading: true }));
1196
- let data = [];
1197
- if (dataSource.type === 'static') {
1198
- data = getStaticDataSource(dataSource);
1199
- }
1200
- else if (dataSource.type === 'api') {
1201
- if (!currentHandler) {
1202
- // Silently skip if handler isn't available yet
1203
- dispatch(setLoading({ widgetId, loading: false }));
1204
- dispatch(setDataSource({ widgetId, data: [] }));
1205
- return;
1206
- }
1207
- // Extract level_id from widget-geo-config.level if available
1208
- const levelId = geoConfig?.level;
1209
- data = await getApiDataSource(dataSource, values, currentHandler, levelId);
1210
- }
1211
- else if (dataSource.type === 'schema') {
1212
- data = getSchemaDataSource(dataSource, schemaData || {});
1213
- }
1214
- // Transform to { value, label } format
1215
- // For geo widgets, default to level_value_id and level_value_mnemonic
1216
- let valueKey;
1217
- let labelKey;
1218
- if (dataSource.type === 'static') {
1219
- valueKey = undefined;
1220
- labelKey = undefined;
1221
- }
1222
- else if (geoConfig) {
1223
- // Geo widgets: default to level_value_id and level_value_mnemonic
1224
- valueKey = dataSource.valueKey || 'level_value_id';
1225
- labelKey = dataSource.labelKey || 'level_value_mnemonic';
1226
- }
1227
- else {
1228
- // Non-geo widgets: use specified keys or undefined
1229
- valueKey = dataSource.valueKey;
1230
- labelKey = dataSource.labelKey;
1231
- }
1232
- const transformed = transformDataSourceOptions(data, valueKey, labelKey);
1233
- dispatch(setDataSource({ widgetId, data: transformed }));
1234
- }
1235
- catch (error) {
1236
- console.error(`[useBaseWidget] ERROR loading data source for ${widgetId}:`, error);
1237
- dispatch(setDataSource({ widgetId, data: [] }));
1238
- }
1239
- finally {
1240
- dispatch(setLoading({ widgetId, loading: false }));
1241
- }
1242
- };
1243
- loadDataSource();
1244
- // Use configKey to ensure effect runs when readonly state changes
1245
- // eslint-disable-next-line react-hooks/exhaustive-deps
1246
- }, [configKey, values, dataSourceRequestHandler, schemaData, widgetId, dispatch]);
1247
- return {
1248
- widgetId,
1249
- value: currentValue,
1250
- formattedValue,
1251
- error: errors,
1252
- touched,
1253
- loading,
1254
- isVisible,
1255
- isEnabled,
1256
- onChange: handleChange,
1257
- onBlur: handleBlur,
1258
- setError: (errors) => dispatch(setError({ widgetId, errors })),
1259
- getFieldValue,
1260
- dataSourceOptions,
1261
- config,
1262
- };
1263
- };
1264
-
1265
- /**
1266
- * Hook for general widget cascade functionality
1267
- * Handles listening to parent widget changes and reloading data sources
1268
- */
1269
- const useWidgetCascade = (options) => {
1270
- const { config, dataSourceRequestHandler, values } = options;
1271
- const dispatch = useDispatch();
1272
- const eventBus = useWidgetEventBus();
1273
- const widgetId = config['widget-id'];
1274
- const cascadeConfig = config['widget-cascade'];
1275
- const dataSource = config['widget-data-source'];
1276
- const valuesRef = useRef(values);
1277
- const handlerRef = useRef(dataSourceRequestHandler);
1278
- // Keep refs updated
1279
- useEffect(() => {
1280
- valuesRef.current = values;
1281
- handlerRef.current = dataSourceRequestHandler;
1282
- }, [values, dataSourceRequestHandler]);
1283
- useEffect(() => {
1284
- if (!cascadeConfig || !eventBus || !dataSource || dataSource.type !== 'api') {
1285
- return;
1286
- }
1287
- const { listenTo, onEvent = 'widget:change', clearOnChange = true, reloadOnChange = true, debounce, throttle } = cascadeConfig;
1288
- if (listenTo.length === 0) {
1289
- return;
1290
- }
1291
- const handleEvent = async (event) => {
1292
- // Check if this event is from a parent we're listening to
1293
- if (!listenTo.includes(event.widgetId)) {
1294
- return;
1295
- }
1296
- const currentValues = valuesRef.current;
1297
- const currentHandler = handlerRef.current;
1298
- // Clear value if configured
1299
- if (clearOnChange) {
1300
- dispatch(setValue({ widgetId, value: undefined }));
1301
- }
1302
- // Reload data source if configured
1303
- if (reloadOnChange && currentHandler) {
1304
- try {
1305
- const data = await getApiDataSource(dataSource, currentValues, currentHandler);
1306
- // Transform to { value, label } format
1307
- const valueKey = dataSource.valueKey;
1308
- const labelKey = dataSource.labelKey;
1309
- const transformed = transformDataSourceOptions(data, valueKey, labelKey);
1310
- dispatch(setDataSource({ widgetId, data: transformed }));
1311
- }
1312
- catch (error) {
1313
- console.error('Error reloading data source in cascade:', error);
1314
- dispatch(setDataSource({ widgetId, data: [] }));
1315
- }
1316
- }
1317
- };
1318
- // Subscribe to events
1319
- const unsubscribe = eventBus.subscribe(onEvent, handleEvent, { debounce, throttle });
1320
- return () => {
1321
- unsubscribe();
1322
- };
1323
- }, [cascadeConfig, eventBus, dataSource, widgetId, dispatch]);
1324
- };
1325
-
1326
- /**
1327
- * Geo Hierarchy Builder
1328
- * Manages geo hierarchy state and builds hierarchy JSON structure
1329
- */
1330
- class GeoHierarchyBuilder {
1331
- constructor() {
1332
- this.hierarchies = new Map();
1333
- }
1334
- /**
1335
- * Get or create hierarchy state for a group
1336
- */
1337
- getHierarchy(groupId = 'default') {
1338
- if (!this.hierarchies.has(groupId)) {
1339
- this.hierarchies.set(groupId, {
1340
- levels: new Map(),
1341
- order: [],
1342
- });
1343
- }
1344
- return this.hierarchies.get(groupId);
1345
- }
1346
- /**
1347
- * Add a level to the hierarchy
1348
- */
1349
- addLevel(level, level_value_id, level_value_mnemonic, groupId = 'default') {
1350
- const hierarchy = this.getHierarchy(groupId);
1351
- // If level already exists, remove it and everything after it
1352
- const existingIndex = hierarchy.order.indexOf(level);
1353
- if (existingIndex >= 0) {
1354
- // Remove this level and all subsequent levels
1355
- const levelsToRemove = hierarchy.order.slice(existingIndex);
1356
- levelsToRemove.forEach((l) => {
1357
- hierarchy.levels.delete(l);
1358
- hierarchy.order = hierarchy.order.filter((o) => o !== l);
1359
- });
1360
- }
1361
- // Add new level
1362
- hierarchy.levels.set(level, {
1363
- level,
1364
- level_value_id,
1365
- level_value_mnemonic,
1366
- });
1367
- hierarchy.order.push(level);
1368
- }
1369
- /**
1370
- * Remove a level and all levels below it
1371
- */
1372
- removeLevelAndBelow(level, groupId = 'default') {
1373
- const hierarchy = this.getHierarchy(groupId);
1374
- const index = hierarchy.order.indexOf(level);
1375
- if (index >= 0) {
1376
- // Remove this level and all subsequent levels
1377
- const levelsToRemove = hierarchy.order.slice(index);
1378
- levelsToRemove.forEach((l) => {
1379
- hierarchy.levels.delete(l);
1380
- hierarchy.order = hierarchy.order.filter((o) => o !== l);
1381
- });
1382
- }
1383
- }
1384
- /**
1385
- * Build hierarchy JSON structure
1386
- */
1387
- buildHierarchyJson(groupId = 'default') {
1388
- const hierarchy = this.getHierarchy(groupId);
1389
- if (hierarchy.order.length === 0) {
1390
- return null;
1391
- }
1392
- const hierarchyArray = hierarchy.order.map((level) => {
1393
- const data = hierarchy.levels.get(level);
1394
- return {
1395
- level: data.level,
1396
- level_value_id: data.level_value_id,
1397
- level_value_mnemonic: data.level_value_mnemonic,
1398
- };
1399
- });
1400
- const lowestLevel = hierarchy.order[hierarchy.order.length - 1];
1401
- const lowestLevelData = hierarchy.levels.get(lowestLevel);
1402
- return {
1403
- geo_lowest_level_value_id: lowestLevelData.level_value_id,
1404
- geo_code_hierarchy_json: {
1405
- hierarchy: hierarchyArray,
1406
- lowest_level_value_id: lowestLevelData.level_value_id,
1407
- },
1408
- };
1409
- }
1410
- /**
1411
- * Clear hierarchy for a group
1412
- */
1413
- clear(groupId = 'default') {
1414
- this.hierarchies.delete(groupId);
1415
- }
1416
- /**
1417
- * Clear all hierarchies
1418
- */
1419
- clearAll() {
1420
- this.hierarchies.clear();
1421
- }
1422
- /**
1423
- * Get current levels for a group
1424
- */
1425
- getLevels(groupId = 'default') {
1426
- const hierarchy = this.getHierarchy(groupId);
1427
- return hierarchy.order.map((level) => hierarchy.levels.get(level));
1428
- }
1429
- }
1430
- // Singleton instance
1431
- const geoHierarchyBuilder = new GeoHierarchyBuilder();
1432
-
1433
- // Define stable empty array to avoid selector reference issues
1434
- const EMPTY_DATA_SOURCE = [];
1435
- /**
1436
- * Hook for geo widget cascade functionality
1437
- * Handles geo hierarchy building and cascade behavior
1438
- */
1439
- const useGeoWidgetCascade = (options) => {
1440
- const { config, dataSourceRequestHandler, values } = options;
1441
- const dispatch = useDispatch();
1442
- const eventBus = useWidgetEventBus();
1443
- const widgetId = config['widget-id'];
1444
- const geoConfig = config['widget-geo-config'];
1445
- const dataSource = config['widget-data-source'];
1446
- const dataPath = config['widget-data-path'];
1447
- const valuesRef = useRef(values);
1448
- const handlerRef = useRef(dataSourceRequestHandler);
1449
- // Keep refs updated
1450
- useEffect(() => {
1451
- valuesRef.current = values;
1452
- handlerRef.current = dataSourceRequestHandler;
1453
- }, [values, dataSourceRequestHandler]);
1454
- // Get current value and data source options
1455
- const currentValue = useSelector((state) => {
1456
- if (!dataPath) {
1457
- return state.widget.values[widgetId];
1458
- }
1459
- return getWidgetValue(state.widget.values, dataPath, widgetId);
1460
- });
1461
- // Memoize selector to avoid returning new array reference
1462
- const dataSourceOptions = useSelector((state) => state.widget.dataSources[widgetId] ?? EMPTY_DATA_SOURCE);
1463
- useEffect(() => {
1464
- if (!geoConfig || !eventBus || !dataSource || dataSource.type !== 'api') {
1465
- return;
1466
- }
1467
- const { level, isLastLevel, parentWidgetId } = geoConfig;
1468
- // Listen to parent widget changes
1469
- if (parentWidgetId) {
1470
- const handleParentChange = async (event) => {
1471
- if (event.widgetId !== parentWidgetId) {
1472
- return;
1473
- }
1474
- // CRITICAL: Use a small delay to ensure Redux state has been updated
1475
- // This prevents reading stale values from valuesRef
1476
- await new Promise(resolve => setTimeout(resolve, 0));
1477
- const currentValues = valuesRef.current;
1478
- const currentHandler = handlerRef.current;
1479
- // CRITICAL: Get the parent value from Redux state, not from the event
1480
- // The event.value might be stale, but Redux state is always current
1481
- const parentValue = currentValues[parentWidgetId];
1482
- // Remove this level and all below from hierarchy
1483
- geoHierarchyBuilder.removeLevelAndBelow(level);
1484
- // Clear this widget's value
1485
- // CRITICAL: Only dispatch setValue for THIS widget, not for parent or other widgets
1486
- // setWidgetValue returns the entire updated state, but we only want to update this widget
1487
- if (dataPath) {
1488
- const updatedValues = setWidgetValue(currentValues, dataPath, widgetId, undefined);
1489
- // Only dispatch setValue for this widget's widgetId, not for parent or other widgets
1490
- // This prevents accidentally overwriting the parent widget's value
1491
- // The setWidgetValue function updates the nested structure, but we only want to
1492
- // update the top-level widgetId key, not other keys that might be in updatedValues
1493
- const newWidgetValue = updatedValues[widgetId];
1494
- if (newWidgetValue !== undefined) {
1495
- dispatch(setValue({ widgetId, value: newWidgetValue }));
1496
- }
1497
- else {
1498
- // If widgetId is not in updatedValues, the value was set in a nested path
1499
- // In this case, we need to use setValues to update the entire structure
1500
- // But we need to be careful not to overwrite the parent widget's value
1501
- // Only update keys that are related to this widget's dataPath
1502
- const dataPathStr = typeof dataPath === 'string' ? dataPath : '';
1503
- if (dataPathStr && !dataPathStr.startsWith(parentWidgetId + '.')) {
1504
- // Only update if dataPath doesn't start with parentWidgetId
1505
- // This ensures we don't accidentally overwrite the parent widget's value
1506
- dispatch(setValue({ widgetId, value: undefined }));
1507
- }
1508
- }
1509
- }
1510
- else {
1511
- dispatch(setValue({ widgetId, value: undefined }));
1512
- }
1513
- // Reload data source with new parent value
1514
- // CRITICAL: Use parentValue from Redux, not event.value
1515
- if (currentHandler && parentValue !== null && parentValue !== undefined) {
1516
- try {
1517
- // Merge the new parent value into current values for the API call
1518
- // This ensures getApiDataSource can find the dependency value
1519
- const updatedValues = {
1520
- ...currentValues,
1521
- [parentWidgetId]: parentValue, // Use Redux value, not event.value
1522
- };
1523
- // Extract level_id from widget-geo-config.level
1524
- const levelId = geoConfig.level;
1525
- const data = await getApiDataSource(dataSource, updatedValues, currentHandler, levelId);
1526
- // Transform to { value, label } format
1527
- const valueKey = dataSource.valueKey || 'level_value_id';
1528
- const labelKey = dataSource.labelKey || 'level_value_mnemonic';
1529
- const transformed = transformDataSourceOptions(data, valueKey, labelKey);
1530
- dispatch(setDataSource({ widgetId, data: transformed }));
1531
- }
1532
- catch (error) {
1533
- console.error('Error reloading geo data source:', error);
1534
- dispatch(setDataSource({ widgetId, data: [] }));
1535
- }
1536
- }
1537
- else {
1538
- // If parent value is cleared, clear the data source
1539
- dispatch(setDataSource({ widgetId, data: [] }));
1540
- }
1541
- };
1542
- const unsubscribe = eventBus.subscribe('widget:change', handleParentChange);
1543
- return () => {
1544
- unsubscribe();
1545
- };
1546
- }
1547
- }, [geoConfig, eventBus, dataSource, widgetId, dataPath, dispatch]);
1548
- // Handle value changes to build hierarchy
1549
- useEffect(() => {
1550
- if (!geoConfig) {
1551
- return;
1552
- }
1553
- // Skip if value is empty/null (but allow 0 and false)
1554
- if (currentValue === null || currentValue === undefined || currentValue === '') {
1555
- // If value was cleared, remove this level and below from hierarchy
1556
- const { level } = geoConfig;
1557
- geoHierarchyBuilder.removeLevelAndBelow(level);
1558
- return;
1559
- }
1560
- const { level, isLastLevel } = geoConfig;
1561
- // For last level, check if hierarchy is already built to prevent endless loops
1562
- if (isLastLevel && dataPath) {
1563
- const currentHierarchy = getWidgetValue(valuesRef.current, dataPath, widgetId);
1564
- // If hierarchy JSON is already set and matches current value, skip rebuilding
1565
- if (currentHierarchy && typeof currentHierarchy === 'object' && currentHierarchy.geo_code_hierarchy_json) {
1566
- // Check if the lowest level value matches
1567
- const currentLevelValue = typeof currentValue === 'object'
1568
- ? (currentValue.level_value_id || currentValue.id || currentValue.value)
1569
- : currentValue;
1570
- if (currentHierarchy.geo_lowest_level_value_id === currentLevelValue) {
1571
- return; // Hierarchy already built for this value, skip
1572
- }
1573
- }
1574
- }
1575
- // Extract level_value_id and level_value_mnemonic from current value
1576
- // The value could be the ID itself or an object with id/name
1577
- let level_value_id;
1578
- let level_value_mnemonic;
1579
- if (typeof currentValue === 'string' || typeof currentValue === 'number') {
1580
- // Value is just the ID, need to find mnemonic from data source
1581
- level_value_id = String(currentValue);
1582
- // Try to get mnemonic from data source options
1583
- const option = dataSourceOptions.find((opt) => opt.value === currentValue);
1584
- level_value_mnemonic = option?.label || String(currentValue);
1585
- }
1586
- else if (currentValue && typeof currentValue === 'object') {
1587
- level_value_id = currentValue.level_value_id || currentValue.id || currentValue.value;
1588
- level_value_mnemonic = currentValue.level_value_mnemonic || currentValue.name || currentValue.label;
1589
- }
1590
- else {
1591
- return;
1592
- }
1593
- // When a widget's own value changes, remove this level and all below from hierarchy first
1594
- // This ensures that when level 1 changes, we clear the hierarchy and rebuild from scratch
1595
- // The addLevel method already handles removing existing levels, but we explicitly clear to be safe
1596
- geoHierarchyBuilder.removeLevelAndBelow(level);
1597
- // Add level to hierarchy
1598
- geoHierarchyBuilder.addLevel(level, level_value_id, level_value_mnemonic);
1599
- // If this is the last level, build and store hierarchy JSON
1600
- if (isLastLevel && dataPath) {
1601
- const hierarchyJson = geoHierarchyBuilder.buildHierarchyJson();
1602
- if (hierarchyJson) {
1603
- // Store both geo_lowest_level_value_id and geo_code_hierarchy_json
1604
- const updatedValues = setWidgetValue(valuesRef.current, dataPath, widgetId, {
1605
- geo_lowest_level_value_id: hierarchyJson.geo_lowest_level_value_id,
1606
- geo_code_hierarchy_json: hierarchyJson.geo_code_hierarchy_json,
1607
- });
1608
- Object.entries(updatedValues).forEach(([key, value]) => {
1609
- dispatch(setValue({ widgetId: key, value }));
1610
- });
1611
- }
1612
- }
1613
- }, [geoConfig, currentValue, widgetId, dataPath, dispatch, dataSourceOptions]);
1614
- };
1615
-
1616
922
  var jsxRuntime = {exports: {}};
1617
923
 
1618
924
  var reactJsxRuntime_production = {};
@@ -2021,19 +1327,882 @@ function requireReactJsxRuntime_development () {
2021
1327
 
2022
1328
  var hasRequiredJsxRuntime;
2023
1329
 
2024
- function requireJsxRuntime () {
2025
- if (hasRequiredJsxRuntime) return jsxRuntime.exports;
2026
- hasRequiredJsxRuntime = 1;
1330
+ function requireJsxRuntime () {
1331
+ if (hasRequiredJsxRuntime) return jsxRuntime.exports;
1332
+ hasRequiredJsxRuntime = 1;
1333
+
1334
+ if (process.env.NODE_ENV === 'production') {
1335
+ jsxRuntime.exports = requireReactJsxRuntime_production();
1336
+ } else {
1337
+ jsxRuntime.exports = requireReactJsxRuntime_development();
1338
+ }
1339
+ return jsxRuntime.exports;
1340
+ }
1341
+
1342
+ var jsxRuntimeExports = requireJsxRuntime();
1343
+
1344
+ /**
1345
+ * Widget Event Bus
1346
+ * Provides a publish/subscribe mechanism for widget communication
1347
+ * Supports debounce and throttle for performance optimization
1348
+ */
1349
+ class WidgetEventBus {
1350
+ constructor() {
1351
+ this.subscriptions = new Map();
1352
+ this.throttleTimers = new Map();
1353
+ }
1354
+ /**
1355
+ * Subscribe to an event type
1356
+ * @param eventType The type of event to listen to
1357
+ * @param handler The handler function
1358
+ * @param options Debounce/throttle options
1359
+ * @returns Unsubscribe function
1360
+ */
1361
+ subscribe(eventType, handler, options) {
1362
+ if (!this.subscriptions.has(eventType)) {
1363
+ this.subscriptions.set(eventType, new Map());
1364
+ }
1365
+ const eventSubscriptions = this.subscriptions.get(eventType);
1366
+ const subscriptionId = `${Date.now()}-${Math.random()}`;
1367
+ const subscription = {
1368
+ handler,
1369
+ debounce: options?.debounce,
1370
+ throttle: options?.throttle,
1371
+ };
1372
+ if (!eventSubscriptions.has(subscriptionId)) {
1373
+ eventSubscriptions.set(subscriptionId, []);
1374
+ }
1375
+ eventSubscriptions.get(subscriptionId).push(subscription);
1376
+ // Return unsubscribe function
1377
+ return () => {
1378
+ const subs = eventSubscriptions.get(subscriptionId);
1379
+ if (subs) {
1380
+ const index = subs.indexOf(subscription);
1381
+ if (index > -1) {
1382
+ subs.splice(index, 1);
1383
+ if (subs.length === 0) {
1384
+ eventSubscriptions.delete(subscriptionId);
1385
+ }
1386
+ }
1387
+ }
1388
+ };
1389
+ }
1390
+ /**
1391
+ * Publish an event
1392
+ * @param event The event to publish
1393
+ */
1394
+ publish(event) {
1395
+ const eventSubscriptions = this.subscriptions.get(event.type);
1396
+ if (!eventSubscriptions) {
1397
+ return;
1398
+ }
1399
+ eventSubscriptions.forEach((subscriptions) => {
1400
+ subscriptions.forEach((subscription) => {
1401
+ this.executeHandler(subscription, event);
1402
+ });
1403
+ });
1404
+ }
1405
+ /**
1406
+ * Execute handler with debounce/throttle support
1407
+ */
1408
+ executeHandler(subscription, event) {
1409
+ const { handler, debounce, throttle } = subscription;
1410
+ // Clear existing debounce timer if any
1411
+ if (subscription.debounceTimer) {
1412
+ clearTimeout(subscription.debounceTimer);
1413
+ }
1414
+ // Handle throttle
1415
+ if (throttle && throttle > 0) {
1416
+ const throttleKey = `${event.type}-${event.widgetId}`;
1417
+ const now = Date.now();
1418
+ const lastCallTime = subscription.lastCallTime || 0;
1419
+ if (now - lastCallTime < throttle) {
1420
+ // Still in throttle period, schedule for later
1421
+ if (this.throttleTimers.has(throttleKey)) {
1422
+ return; // Already scheduled
1423
+ }
1424
+ const remainingTime = throttle - (now - lastCallTime);
1425
+ const timer = setTimeout(() => {
1426
+ subscription.lastCallTime = Date.now();
1427
+ handler(event);
1428
+ this.throttleTimers.delete(throttleKey);
1429
+ }, remainingTime);
1430
+ this.throttleTimers.set(throttleKey, timer);
1431
+ return;
1432
+ }
1433
+ subscription.lastCallTime = now;
1434
+ }
1435
+ // Handle debounce
1436
+ if (debounce && debounce > 0) {
1437
+ subscription.debounceTimer = setTimeout(() => {
1438
+ handler(event);
1439
+ subscription.debounceTimer = undefined;
1440
+ }, debounce);
1441
+ return;
1442
+ }
1443
+ // Execute immediately if no debounce/throttle
1444
+ handler(event);
1445
+ }
1446
+ /**
1447
+ * Clear all subscriptions
1448
+ */
1449
+ clear() {
1450
+ // Clear all timers
1451
+ this.subscriptions.forEach((eventSubscriptions) => {
1452
+ eventSubscriptions.forEach((subscriptions) => {
1453
+ subscriptions.forEach((sub) => {
1454
+ if (sub.debounceTimer) {
1455
+ clearTimeout(sub.debounceTimer);
1456
+ }
1457
+ });
1458
+ });
1459
+ });
1460
+ this.throttleTimers.forEach((timer) => clearTimeout(timer));
1461
+ this.throttleTimers.clear();
1462
+ this.subscriptions.clear();
1463
+ }
1464
+ }
1465
+
1466
+ const WidgetContext = createContext({
1467
+ dataSourceRequestHandler: undefined,
1468
+ schemaData: undefined,
1469
+ translate: undefined,
1470
+ });
1471
+ const useWidgetContext = () => {
1472
+ return useContext(WidgetContext);
1473
+ };
1474
+ const WidgetProvider = ({ store, dataSourceRequestHandler, schemaData, translate, children, }) => {
1475
+ const widgetStore = useMemo(() => store || createWidgetStore(), [store]);
1476
+ // Create event bus instance (one per provider)
1477
+ const eventBus = useMemo(() => new WidgetEventBus(), []);
1478
+ // Memoize context value to prevent unnecessary re-renders
1479
+ const contextValue = useMemo(() => ({
1480
+ dataSourceRequestHandler,
1481
+ schemaData,
1482
+ translate,
1483
+ }), [dataSourceRequestHandler, schemaData, translate]);
1484
+ // Warn if dataSourceRequestHandler is missing (will cause issues with API data sources)
1485
+ useEffect(() => {
1486
+ if (!dataSourceRequestHandler) {
1487
+ console.warn('[WidgetProvider] dataSourceRequestHandler is not provided. ' +
1488
+ 'Widgets with API data sources will not be able to load data. ' +
1489
+ 'Please provide dataSourceRequestHandler prop to WidgetProvider.');
1490
+ }
1491
+ }, [dataSourceRequestHandler]);
1492
+ // Cleanup event bus on unmount
1493
+ useEffect(() => {
1494
+ return () => {
1495
+ eventBus.clear();
1496
+ };
1497
+ }, [eventBus]);
1498
+ // Initialize schemaData to Redux store (only on mount)
1499
+ // This prevents overwriting user changes when schemaData prop changes
1500
+ useEffect(() => {
1501
+ if (schemaData) {
1502
+ widgetStore.dispatch(setValues(schemaData));
1503
+ }
1504
+ // eslint-disable-next-line react-hooks/exhaustive-deps
1505
+ }, [schemaData, widgetStore]); // Only run on mount
1506
+ const content = (jsxRuntimeExports.jsx(Provider, { store: widgetStore, children: jsxRuntimeExports.jsx(WidgetContext.Provider, { value: contextValue, children: jsxRuntimeExports.jsx(WidgetEventBusContext.Provider, { value: eventBus, children: children }) }) }));
1507
+ return content;
1508
+ };
1509
+
1510
+ // Define stable empty arrays to avoid selector reference issues
1511
+ const EMPTY_ERRORS = [];
1512
+ const EMPTY_DATA_SOURCE$1 = [];
1513
+ const useBaseWidget = (options) => {
1514
+ const { config, dataSourceRequestHandler: propHandler, schemaData, onValueChange } = options;
1515
+ const dispatch = useDispatch();
1516
+ const context = useWidgetContext();
1517
+ const eventBus = useWidgetEventBus();
1518
+ const widgetId = config['widget-id'];
1519
+ // Fall back to WidgetContext for dataSourceRequestHandler
1520
+ const dataSourceRequestHandler = propHandler || context.dataSourceRequestHandler;
1521
+ // Get state from Redux
1522
+ const values = useSelector((state) => state.widget.values);
1523
+ const errors = useSelector((state) => state.widget.errors[widgetId] ?? EMPTY_ERRORS);
1524
+ const touched = useSelector((state) => state.widget.touched[widgetId] || false);
1525
+ const loading = useSelector((state) => state.widget.loading[widgetId] || false);
1526
+ const dataSourceOptions = useSelector((state) => state.widget.dataSources[widgetId] ?? EMPTY_DATA_SOURCE$1);
1527
+ // Skip value handling for layout widgets (they don't store data values)
1528
+ // Infer layout from widget-type
1529
+ const isLayoutWidget = config['widget-type'] === 'layout';
1530
+ // Track if user has explicitly set a value to prevent default from overwriting
1531
+ const userHasSetValueRef = useRef(false);
1532
+ // Use ref for values to avoid stale closures in handleChange
1533
+ const valuesRef = useRef(values);
1534
+ useEffect(() => {
1535
+ valuesRef.current = values;
1536
+ }, [values]);
1537
+ // Track last dispatched value to prevent duplicate dispatches
1538
+ const lastDispatchedValueRef = useRef(null);
1539
+ // Get current value
1540
+ const currentValue = useMemo(() => {
1541
+ if (isLayoutWidget) {
1542
+ return undefined; // Layout widgets don't have values
1543
+ }
1544
+ // Helper to extract displayable value from object (especially geo hierarchy objects)
1545
+ const extractValueFromObject = (obj) => {
1546
+ if (!obj || typeof obj !== 'object' || Array.isArray(obj)) {
1547
+ return obj;
1548
+ }
1549
+ // Check for geo hierarchy structure first
1550
+ if ('geo_code_hierarchy_json' in obj || 'geo_lowest_level_value_id' in obj) {
1551
+ if ('geo_lowest_level_value_id' in obj) {
1552
+ return obj.geo_lowest_level_value_id;
1553
+ }
1554
+ // If it's a geo hierarchy object but no extractable ID, return undefined to avoid rendering object
1555
+ return undefined;
1556
+ }
1557
+ // Try common value fields
1558
+ if ('value' in obj) {
1559
+ return obj.value;
1560
+ }
1561
+ if ('id' in obj) {
1562
+ return obj.id;
1563
+ }
1564
+ if ('label' in obj) {
1565
+ return obj.label;
1566
+ }
1567
+ if ('name' in obj) {
1568
+ return obj.name;
1569
+ }
1570
+ // If no extractable value found, return undefined to avoid rendering object as React child
1571
+ // This prevents "Objects are not valid as a React child" errors
1572
+ return undefined;
1573
+ };
1574
+ // Try to get value from widgetId first (this should have the actual selected value)
1575
+ // For geo widgets with dataPath, widgetId stores the actual ID, while dataPath stores the hierarchy object
1576
+ let value = values[widgetId];
1577
+ // Extract value if it's an object (handles geo hierarchy objects stored in widgetId)
1578
+ if (value !== null && value !== undefined && typeof value === 'object' && !Array.isArray(value)) {
1579
+ value = extractValueFromObject(value);
1580
+ }
1581
+ // If widgetId doesn't have a value, try dataPath
1582
+ if (value === undefined && config['widget-data-path']) {
1583
+ value = getWidgetValue(values, config['widget-data-path'], widgetId);
1584
+ // Extract value if it's an object (handles geo hierarchy objects from dataPath)
1585
+ if (value !== null && value !== undefined && typeof value === 'object' && !Array.isArray(value)) {
1586
+ value = extractValueFromObject(value);
1587
+ }
1588
+ }
1589
+ // If value is still undefined and user has set a value, try reading from widgetId as backup
1590
+ // This handles cases where dataPath lookup might fail temporarily
1591
+ if (value === undefined && userHasSetValueRef.current && values[widgetId] !== undefined) {
1592
+ value = values[widgetId];
1593
+ // Extract value if it's an object (handles geo hierarchy objects)
1594
+ if (value !== null && value !== undefined && typeof value === 'object' && !Array.isArray(value)) {
1595
+ value = extractValueFromObject(value);
1596
+ }
1597
+ }
1598
+ // Final safety check: if value is still an object, extract displayable value
1599
+ if (value !== null && value !== undefined && typeof value === 'object' && !Array.isArray(value)) {
1600
+ value = extractValueFromObject(value);
1601
+ }
1602
+ // If user has explicitly set a value, always return it (even if undefined/null)
1603
+ // This prevents the default from overwriting user selections
1604
+ if (userHasSetValueRef.current) {
1605
+ return value;
1606
+ }
1607
+ // Only fall back to default if user hasn't set a value yet
1608
+ // But check if value is explicitly null (user cleared it) vs undefined (never set)
1609
+ if (value === null) {
1610
+ return null; // User explicitly cleared it, don't use default
1611
+ }
1612
+ return value !== undefined ? value : config['widget-data-default'];
1613
+ }, [values, config, widgetId, isLayoutWidget]);
1614
+ // Initialize default value only once on mount (skip for layout widgets)
1615
+ useEffect(() => {
1616
+ if (isLayoutWidget) {
1617
+ return;
1618
+ }
1619
+ // Only initialize default if value is undefined and user hasn't set a value yet
1620
+ if (!userHasSetValueRef.current && config['widget-data-default'] !== undefined && currentValue === undefined) {
1621
+ handleChange(config['widget-data-default'], false);
1622
+ }
1623
+ // eslint-disable-next-line react-hooks/exhaustive-deps
1624
+ }, [isLayoutWidget]); // Only run once on mount
1625
+ // Handle value change
1626
+ // CRITICAL: Don't include 'values' in dependency array - it causes the callback to be recreated
1627
+ // every time values change, which can lead to stale closures and double dispatches
1628
+ const handleChange = useCallback((newValue, validate = true) => {
1629
+ // Use valuesRef to get the latest values, not the stale closure value
1630
+ const currentValues = valuesRef.current;
1631
+ const currentValue = currentValues[widgetId] || getWidgetValue(currentValues, config['widget-data-path'], widgetId);
1632
+ // CRITICAL: Prevent setting the same value (avoids unnecessary dispatches and potential loops)
1633
+ if (currentValue === newValue) {
1634
+ return;
1635
+ }
1636
+ // Mark that user has set a value (unless this is the default initialization)
1637
+ if (newValue !== config['widget-data-default'] || userHasSetValueRef.current) {
1638
+ userHasSetValueRef.current = true;
1639
+ }
1640
+ // CRITICAL FIX: If there's no dataPath, just set the value directly
1641
+ // If there's a dataPath, we need to update both the widgetId and the dataPath
1642
+ if (!config['widget-data-path']) {
1643
+ // No dataPath: just set the value directly by widgetId
1644
+ // CRITICAL: Check if we just dispatched this value to prevent duplicate dispatches
1645
+ if (lastDispatchedValueRef.current === newValue) {
1646
+ return;
1647
+ }
1648
+ lastDispatchedValueRef.current = newValue;
1649
+ dispatch(setValue({ widgetId, value: newValue }));
1650
+ }
1651
+ else {
1652
+ // Has dataPath: update both widgetId and dataPath
1653
+ // CRITICAL: Create updated values object with newValue already set
1654
+ // This prevents setWidgetValue from reading stale values
1655
+ const currentValuesWithUpdate = {
1656
+ ...valuesRef.current,
1657
+ [widgetId]: newValue, // Ensure widgetId has the new value
1658
+ };
1659
+ const updatedValues = setWidgetValue(currentValuesWithUpdate, config['widget-data-path'], widgetId, newValue);
1660
+ // setWidgetValue returns the complete updated structure with all existing data preserved
1661
+ // Use setValues to update the entire state with deep merge
1662
+ dispatch(setValues(updatedValues));
1663
+ }
1664
+ // Validate if needed
1665
+ if (validate) {
1666
+ const validationErrors = validateWidget(newValue, config['widget-data-validation'], config['widget-required']);
1667
+ dispatch(setError({ widgetId, errors: validationErrors }));
1668
+ }
1669
+ // Call custom onChange if provided
1670
+ if (onValueChange) {
1671
+ onValueChange(widgetId, newValue);
1672
+ }
1673
+ // Publish widget:change event
1674
+ // Skip publishing for last-level geo widgets (no child widgets waiting)
1675
+ const geoConfig = config['widget-geo-config'];
1676
+ const isLastLevelGeo = geoConfig?.isLastLevel === true;
1677
+ if (eventBus && !isLastLevelGeo) {
1678
+ eventBus.publish({
1679
+ type: 'widget:change',
1680
+ widgetId,
1681
+ value: newValue,
1682
+ timestamp: Date.now(),
1683
+ });
1684
+ }
1685
+ }, [config, widgetId, dispatch, onValueChange, eventBus] // Removed 'values' to prevent stale closures
1686
+ );
1687
+ // Handle blur
1688
+ const handleBlur = useCallback(() => {
1689
+ dispatch(setTouched({ widgetId, touched: true }));
1690
+ // Validate on blur
1691
+ const validationErrors = validateWidget(currentValue, config['widget-data-validation'], config['widget-required']);
1692
+ dispatch(setError({ widgetId, errors: validationErrors }));
1693
+ // Publish widget:blur event
1694
+ if (eventBus) {
1695
+ eventBus.publish({
1696
+ type: 'widget:blur',
1697
+ widgetId,
1698
+ value: currentValue,
1699
+ timestamp: Date.now(),
1700
+ });
1701
+ }
1702
+ }, [currentValue, config, widgetId, dispatch, eventBus]);
1703
+ // Get field value helper
1704
+ const getFieldValue = useCallback((path) => {
1705
+ return getWidgetValue(values, path, '');
1706
+ }, [values]);
1707
+ // Conditional visibility and enablement
1708
+ const isVisible = useMemo(() => {
1709
+ // Layout widgets are always visible unless explicitly hidden
1710
+ if (isLayoutWidget && !config['widget-data-options']?.condition) {
1711
+ return true;
1712
+ }
1713
+ return shouldShowWidget(config['widget-data-options'], values);
1714
+ }, [config['widget-data-options'], values, isLayoutWidget]);
1715
+ const isEnabled = useMemo(() => {
1716
+ // Layout widgets are always enabled (they don't have input state)
1717
+ if (isLayoutWidget) {
1718
+ return true;
1719
+ }
1720
+ if (config['widget-readonly']) {
1721
+ return false;
1722
+ }
1723
+ return shouldEnableWidget(config['widget-data-options'], values);
1724
+ }, [config['widget-readonly'], config['widget-data-options'], values, isLayoutWidget]);
1725
+ // Format value for display
1726
+ const formattedValue = useMemo(() => {
1727
+ if (!config['widget-data-format']) {
1728
+ return currentValue;
1729
+ }
1730
+ return formatValue(currentValue, config['widget-data-format'], config.widget);
1731
+ }, [currentValue, config]);
1732
+ // Track readonly state explicitly to detect changes
1733
+ // Use JSON.stringify to create a stable reference for the dependency array
1734
+ const isReadonly = config['widget-readonly'] ?? false;
1735
+ const dataSource = config['widget-data-source'];
1736
+ const geoConfig = config['widget-geo-config'];
1737
+ // Use ref to store handler to avoid stale closures
1738
+ const handlerRef = useRef(dataSourceRequestHandler);
1739
+ useEffect(() => {
1740
+ handlerRef.current = dataSourceRequestHandler;
1741
+ }, [dataSourceRequestHandler]);
1742
+ // Create a stable key for the config to detect changes
1743
+ // This ensures the effect runs when widget-readonly changes
1744
+ const apiService = dataSource?.type === 'api' ? dataSource.service : '';
1745
+ const apiEndpoint = dataSource?.type === 'api' ? dataSource.endpoint : '';
1746
+ const configKey = `${widgetId}-${isReadonly}-${dataSource?.type || 'none'}-${apiService}-${apiEndpoint}`;
1747
+ // Handle data source loading
1748
+ useEffect(() => {
1749
+ if (!dataSource) {
1750
+ return;
1751
+ }
1752
+ // For API data sources, check if widget is readonly
1753
+ // According to PRD: "Level 1 geo widgets load on widget mount or when entering edit mode"
1754
+ // So we should only load API data sources when widget is NOT readonly
1755
+ if (dataSource.type === 'api' && isReadonly) {
1756
+ return;
1757
+ }
1758
+ // For widgets with dependencies, check if dependency value exists
1759
+ if (dataSource.type === 'api' && dataSource.dependsOn) {
1760
+ // Check if dependency value exists
1761
+ let depValue = null;
1762
+ if (dataSource.dependsOn.includes('.')) {
1763
+ depValue = getWidgetValue(values, dataSource.dependsOn, '');
1764
+ }
1765
+ else {
1766
+ depValue = values[dataSource.dependsOn];
1767
+ }
1768
+ // If dependency is empty, don't load (will load when dependency has value)
1769
+ if (depValue === null || depValue === undefined || depValue === '') {
1770
+ return;
1771
+ }
1772
+ }
1773
+ const loadDataSource = async () => {
1774
+ // Get current handler from ref to avoid stale closures
1775
+ // Also check prop directly as fallback (for initial render or when ref not updated yet)
1776
+ const currentHandler = handlerRef.current || dataSourceRequestHandler;
1777
+ // Only check for handler when we actually need it (inside the async function)
1778
+ // This avoids false errors during React Strict Mode double-invocation
1779
+ // If handler isn't available yet, silently skip - React will retry when it's ready
1780
+ try {
1781
+ if (dataSource.type === 'api' && !currentHandler) {
1782
+ // Silently skip if handler isn't available yet (common during React Strict Mode double-invocation)
1783
+ // React will call this effect again when the handler is ready
1784
+ return;
1785
+ }
1786
+ dispatch(setLoading({ widgetId, loading: true }));
1787
+ let data = [];
1788
+ if (dataSource.type === 'static') {
1789
+ data = getStaticDataSource(dataSource);
1790
+ }
1791
+ else if (dataSource.type === 'api') {
1792
+ if (!currentHandler) {
1793
+ // Silently skip if handler isn't available yet
1794
+ dispatch(setLoading({ widgetId, loading: false }));
1795
+ dispatch(setDataSource({ widgetId, data: [] }));
1796
+ return;
1797
+ }
1798
+ // Extract level_id from widget-geo-config.level if available
1799
+ const levelId = geoConfig?.level;
1800
+ data = await getApiDataSource(dataSource, values, currentHandler, levelId);
1801
+ }
1802
+ else if (dataSource.type === 'schema') {
1803
+ data = getSchemaDataSource(dataSource, schemaData || {});
1804
+ }
1805
+ // Transform to { value, label } format
1806
+ // For geo widgets, default to level_value_id and level_value_mnemonic
1807
+ let valueKey;
1808
+ let labelKey;
1809
+ if (dataSource.type === 'static') {
1810
+ valueKey = undefined;
1811
+ labelKey = undefined;
1812
+ }
1813
+ else if (geoConfig) {
1814
+ // Geo widgets: default to level_value_id and level_value_mnemonic
1815
+ valueKey = dataSource.valueKey || 'level_value_id';
1816
+ labelKey = dataSource.labelKey || 'level_value_mnemonic';
1817
+ }
1818
+ else {
1819
+ // Non-geo widgets: use specified keys or undefined
1820
+ valueKey = dataSource.valueKey;
1821
+ labelKey = dataSource.labelKey;
1822
+ }
1823
+ const transformed = transformDataSourceOptions(data, valueKey, labelKey);
1824
+ dispatch(setDataSource({ widgetId, data: transformed }));
1825
+ }
1826
+ catch (error) {
1827
+ console.error(`[useBaseWidget] ERROR loading data source for ${widgetId}:`, error);
1828
+ dispatch(setDataSource({ widgetId, data: [] }));
1829
+ }
1830
+ finally {
1831
+ dispatch(setLoading({ widgetId, loading: false }));
1832
+ }
1833
+ };
1834
+ loadDataSource();
1835
+ // Use configKey to ensure effect runs when readonly state changes
1836
+ // eslint-disable-next-line react-hooks/exhaustive-deps
1837
+ }, [configKey, values, dataSourceRequestHandler, schemaData, widgetId, dispatch]);
1838
+ return {
1839
+ widgetId,
1840
+ value: currentValue,
1841
+ formattedValue,
1842
+ error: errors,
1843
+ touched,
1844
+ loading,
1845
+ isVisible,
1846
+ isEnabled,
1847
+ onChange: handleChange,
1848
+ onBlur: handleBlur,
1849
+ setError: (errors) => dispatch(setError({ widgetId, errors })),
1850
+ getFieldValue,
1851
+ dataSourceOptions,
1852
+ config,
1853
+ };
1854
+ };
1855
+
1856
+ /**
1857
+ * Hook for general widget cascade functionality
1858
+ * Handles listening to parent widget changes and reloading data sources
1859
+ */
1860
+ const useWidgetCascade = (options) => {
1861
+ const { config, dataSourceRequestHandler, values } = options;
1862
+ const dispatch = useDispatch();
1863
+ const eventBus = useWidgetEventBus();
1864
+ const widgetId = config['widget-id'];
1865
+ const cascadeConfig = config['widget-cascade'];
1866
+ const dataSource = config['widget-data-source'];
1867
+ const valuesRef = useRef(values);
1868
+ const handlerRef = useRef(dataSourceRequestHandler);
1869
+ // Keep refs updated
1870
+ useEffect(() => {
1871
+ valuesRef.current = values;
1872
+ handlerRef.current = dataSourceRequestHandler;
1873
+ }, [values, dataSourceRequestHandler]);
1874
+ useEffect(() => {
1875
+ if (!cascadeConfig || !eventBus || !dataSource || dataSource.type !== 'api') {
1876
+ return;
1877
+ }
1878
+ const { listenTo, onEvent = 'widget:change', clearOnChange = true, reloadOnChange = true, debounce, throttle } = cascadeConfig;
1879
+ if (listenTo.length === 0) {
1880
+ return;
1881
+ }
1882
+ const handleEvent = async (event) => {
1883
+ // Check if this event is from a parent we're listening to
1884
+ if (!listenTo.includes(event.widgetId)) {
1885
+ return;
1886
+ }
1887
+ const currentValues = valuesRef.current;
1888
+ const currentHandler = handlerRef.current;
1889
+ // Clear value if configured
1890
+ if (clearOnChange) {
1891
+ dispatch(setValue({ widgetId, value: undefined }));
1892
+ }
1893
+ // Reload data source if configured
1894
+ if (reloadOnChange && currentHandler) {
1895
+ try {
1896
+ const data = await getApiDataSource(dataSource, currentValues, currentHandler);
1897
+ // Transform to { value, label } format
1898
+ const valueKey = dataSource.valueKey;
1899
+ const labelKey = dataSource.labelKey;
1900
+ const transformed = transformDataSourceOptions(data, valueKey, labelKey);
1901
+ dispatch(setDataSource({ widgetId, data: transformed }));
1902
+ }
1903
+ catch (error) {
1904
+ console.error('Error reloading data source in cascade:', error);
1905
+ dispatch(setDataSource({ widgetId, data: [] }));
1906
+ }
1907
+ }
1908
+ };
1909
+ // Subscribe to events
1910
+ const unsubscribe = eventBus.subscribe(onEvent, handleEvent, { debounce, throttle });
1911
+ return () => {
1912
+ unsubscribe();
1913
+ };
1914
+ }, [cascadeConfig, eventBus, dataSource, widgetId, dispatch]);
1915
+ };
2027
1916
 
2028
- if (process.env.NODE_ENV === 'production') {
2029
- jsxRuntime.exports = requireReactJsxRuntime_production();
2030
- } else {
2031
- jsxRuntime.exports = requireReactJsxRuntime_development();
2032
- }
2033
- return jsxRuntime.exports;
1917
+ /**
1918
+ * Geo Hierarchy Builder
1919
+ * Manages geo hierarchy state and builds hierarchy JSON structure
1920
+ */
1921
+ class GeoHierarchyBuilder {
1922
+ constructor() {
1923
+ this.hierarchies = new Map();
1924
+ }
1925
+ /**
1926
+ * Get or create hierarchy state for a group
1927
+ */
1928
+ getHierarchy(groupId = 'default') {
1929
+ if (!this.hierarchies.has(groupId)) {
1930
+ this.hierarchies.set(groupId, {
1931
+ levels: new Map(),
1932
+ order: [],
1933
+ });
1934
+ }
1935
+ return this.hierarchies.get(groupId);
1936
+ }
1937
+ /**
1938
+ * Add a level to the hierarchy
1939
+ */
1940
+ addLevel(level, level_value_id, level_value_mnemonic, groupId = 'default') {
1941
+ const hierarchy = this.getHierarchy(groupId);
1942
+ // If level already exists, remove it and everything after it
1943
+ const existingIndex = hierarchy.order.indexOf(level);
1944
+ if (existingIndex >= 0) {
1945
+ // Remove this level and all subsequent levels
1946
+ const levelsToRemove = hierarchy.order.slice(existingIndex);
1947
+ levelsToRemove.forEach((l) => {
1948
+ hierarchy.levels.delete(l);
1949
+ hierarchy.order = hierarchy.order.filter((o) => o !== l);
1950
+ });
1951
+ }
1952
+ // Add new level
1953
+ hierarchy.levels.set(level, {
1954
+ level,
1955
+ level_value_id,
1956
+ level_value_mnemonic,
1957
+ });
1958
+ hierarchy.order.push(level);
1959
+ }
1960
+ /**
1961
+ * Remove a level and all levels below it
1962
+ */
1963
+ removeLevelAndBelow(level, groupId = 'default') {
1964
+ const hierarchy = this.getHierarchy(groupId);
1965
+ const index = hierarchy.order.indexOf(level);
1966
+ if (index >= 0) {
1967
+ // Remove this level and all subsequent levels
1968
+ const levelsToRemove = hierarchy.order.slice(index);
1969
+ levelsToRemove.forEach((l) => {
1970
+ hierarchy.levels.delete(l);
1971
+ hierarchy.order = hierarchy.order.filter((o) => o !== l);
1972
+ });
1973
+ }
1974
+ }
1975
+ /**
1976
+ * Build hierarchy JSON structure
1977
+ */
1978
+ buildHierarchyJson(groupId = 'default') {
1979
+ const hierarchy = this.getHierarchy(groupId);
1980
+ if (hierarchy.order.length === 0) {
1981
+ return null;
1982
+ }
1983
+ const hierarchyArray = hierarchy.order.map((level) => {
1984
+ const data = hierarchy.levels.get(level);
1985
+ return {
1986
+ level: data.level,
1987
+ level_value_id: data.level_value_id,
1988
+ level_value_mnemonic: data.level_value_mnemonic,
1989
+ };
1990
+ });
1991
+ const lowestLevel = hierarchy.order[hierarchy.order.length - 1];
1992
+ const lowestLevelData = hierarchy.levels.get(lowestLevel);
1993
+ return {
1994
+ geo_lowest_level_value_id: lowestLevelData.level_value_id,
1995
+ geo_code_hierarchy_json: {
1996
+ hierarchy: hierarchyArray,
1997
+ lowest_level_value_id: lowestLevelData.level_value_id,
1998
+ },
1999
+ };
2000
+ }
2001
+ /**
2002
+ * Clear hierarchy for a group
2003
+ */
2004
+ clear(groupId = 'default') {
2005
+ this.hierarchies.delete(groupId);
2006
+ }
2007
+ /**
2008
+ * Clear all hierarchies
2009
+ */
2010
+ clearAll() {
2011
+ this.hierarchies.clear();
2012
+ }
2013
+ /**
2014
+ * Get current levels for a group
2015
+ */
2016
+ getLevels(groupId = 'default') {
2017
+ const hierarchy = this.getHierarchy(groupId);
2018
+ return hierarchy.order.map((level) => hierarchy.levels.get(level));
2019
+ }
2034
2020
  }
2021
+ // Singleton instance
2022
+ const geoHierarchyBuilder = new GeoHierarchyBuilder();
2035
2023
 
2036
- var jsxRuntimeExports = requireJsxRuntime();
2024
+ // Define stable empty array to avoid selector reference issues
2025
+ const EMPTY_DATA_SOURCE = [];
2026
+ /**
2027
+ * Hook for geo widget cascade functionality
2028
+ * Handles geo hierarchy building and cascade behavior
2029
+ */
2030
+ const useGeoWidgetCascade = (options) => {
2031
+ const { config, dataSourceRequestHandler, values } = options;
2032
+ const dispatch = useDispatch();
2033
+ const eventBus = useWidgetEventBus();
2034
+ const widgetId = config['widget-id'];
2035
+ const geoConfig = config['widget-geo-config'];
2036
+ const dataSource = config['widget-data-source'];
2037
+ const dataPath = config['widget-data-path'];
2038
+ const valuesRef = useRef(values);
2039
+ const handlerRef = useRef(dataSourceRequestHandler);
2040
+ // Keep refs updated
2041
+ useEffect(() => {
2042
+ valuesRef.current = values;
2043
+ handlerRef.current = dataSourceRequestHandler;
2044
+ }, [values, dataSourceRequestHandler]);
2045
+ // Get current value and data source options
2046
+ const currentValue = useSelector((state) => {
2047
+ if (!dataPath) {
2048
+ return state.widget.values[widgetId];
2049
+ }
2050
+ return getWidgetValue(state.widget.values, dataPath, widgetId);
2051
+ });
2052
+ // Memoize selector to avoid returning new array reference
2053
+ const dataSourceOptions = useSelector((state) => state.widget.dataSources[widgetId] ?? EMPTY_DATA_SOURCE);
2054
+ useEffect(() => {
2055
+ if (!geoConfig || !eventBus || !dataSource || dataSource.type !== 'api') {
2056
+ return;
2057
+ }
2058
+ const { level, isLastLevel, parentWidgetId } = geoConfig;
2059
+ // Listen to parent widget changes
2060
+ if (parentWidgetId) {
2061
+ const handleParentChange = async (event) => {
2062
+ if (event.widgetId !== parentWidgetId) {
2063
+ return;
2064
+ }
2065
+ // CRITICAL: Use a small delay to ensure Redux state has been updated
2066
+ // This prevents reading stale values from valuesRef
2067
+ await new Promise(resolve => setTimeout(resolve, 0));
2068
+ const currentValues = valuesRef.current;
2069
+ const currentHandler = handlerRef.current;
2070
+ // CRITICAL: Get the parent value from Redux state, not from the event
2071
+ // The event.value might be stale, but Redux state is always current
2072
+ const parentValue = currentValues[parentWidgetId];
2073
+ // Remove this level and all below from hierarchy
2074
+ geoHierarchyBuilder.removeLevelAndBelow(level);
2075
+ // Clear this widget's value
2076
+ // CRITICAL: Only dispatch setValue for THIS widget, not for parent or other widgets
2077
+ // setWidgetValue returns the entire updated state, but we only want to update this widget
2078
+ if (dataPath) {
2079
+ const updatedValues = setWidgetValue(currentValues, dataPath, widgetId, undefined);
2080
+ // Only dispatch setValue for this widget's widgetId, not for parent or other widgets
2081
+ // This prevents accidentally overwriting the parent widget's value
2082
+ // The setWidgetValue function updates the nested structure, but we only want to
2083
+ // update the top-level widgetId key, not other keys that might be in updatedValues
2084
+ const newWidgetValue = updatedValues[widgetId];
2085
+ if (newWidgetValue !== undefined) {
2086
+ dispatch(setValue({ widgetId, value: newWidgetValue }));
2087
+ }
2088
+ else {
2089
+ // If widgetId is not in updatedValues, the value was set in a nested path
2090
+ // In this case, we need to use setValues to update the entire structure
2091
+ // But we need to be careful not to overwrite the parent widget's value
2092
+ // Only update keys that are related to this widget's dataPath
2093
+ const dataPathStr = typeof dataPath === 'string' ? dataPath : '';
2094
+ if (dataPathStr && !dataPathStr.startsWith(parentWidgetId + '.')) {
2095
+ // Only update if dataPath doesn't start with parentWidgetId
2096
+ // This ensures we don't accidentally overwrite the parent widget's value
2097
+ dispatch(setValue({ widgetId, value: undefined }));
2098
+ }
2099
+ }
2100
+ }
2101
+ else {
2102
+ dispatch(setValue({ widgetId, value: undefined }));
2103
+ }
2104
+ // Reload data source with new parent value
2105
+ // CRITICAL: Use parentValue from Redux, not event.value
2106
+ if (currentHandler && parentValue !== null && parentValue !== undefined) {
2107
+ try {
2108
+ // Merge the new parent value into current values for the API call
2109
+ // This ensures getApiDataSource can find the dependency value
2110
+ const updatedValues = {
2111
+ ...currentValues,
2112
+ [parentWidgetId]: parentValue, // Use Redux value, not event.value
2113
+ };
2114
+ // Extract level_id from widget-geo-config.level
2115
+ const levelId = geoConfig.level;
2116
+ const data = await getApiDataSource(dataSource, updatedValues, currentHandler, levelId);
2117
+ // Transform to { value, label } format
2118
+ const valueKey = dataSource.valueKey || 'level_value_id';
2119
+ const labelKey = dataSource.labelKey || 'level_value_mnemonic';
2120
+ const transformed = transformDataSourceOptions(data, valueKey, labelKey);
2121
+ dispatch(setDataSource({ widgetId, data: transformed }));
2122
+ }
2123
+ catch (error) {
2124
+ console.error('Error reloading geo data source:', error);
2125
+ dispatch(setDataSource({ widgetId, data: [] }));
2126
+ }
2127
+ }
2128
+ else {
2129
+ // If parent value is cleared, clear the data source
2130
+ dispatch(setDataSource({ widgetId, data: [] }));
2131
+ }
2132
+ };
2133
+ const unsubscribe = eventBus.subscribe('widget:change', handleParentChange);
2134
+ return () => {
2135
+ unsubscribe();
2136
+ };
2137
+ }
2138
+ }, [geoConfig, eventBus, dataSource, widgetId, dataPath, dispatch]);
2139
+ // Handle value changes to build hierarchy
2140
+ useEffect(() => {
2141
+ if (!geoConfig) {
2142
+ return;
2143
+ }
2144
+ // Skip if value is empty/null (but allow 0 and false)
2145
+ if (currentValue === null || currentValue === undefined || currentValue === '') {
2146
+ // If value was cleared, remove this level and below from hierarchy
2147
+ const { level } = geoConfig;
2148
+ geoHierarchyBuilder.removeLevelAndBelow(level);
2149
+ return;
2150
+ }
2151
+ const { level, isLastLevel } = geoConfig;
2152
+ // For last level, check if hierarchy is already built to prevent endless loops
2153
+ if (isLastLevel && dataPath) {
2154
+ const currentHierarchy = getWidgetValue(valuesRef.current, dataPath, widgetId);
2155
+ // If hierarchy JSON is already set and matches current value, skip rebuilding
2156
+ if (currentHierarchy && typeof currentHierarchy === 'object' && currentHierarchy.geo_code_hierarchy_json) {
2157
+ // Check if the lowest level value matches
2158
+ const currentLevelValue = typeof currentValue === 'object'
2159
+ ? (currentValue.level_value_id || currentValue.id || currentValue.value)
2160
+ : currentValue;
2161
+ if (currentHierarchy.geo_lowest_level_value_id === currentLevelValue) {
2162
+ return; // Hierarchy already built for this value, skip
2163
+ }
2164
+ }
2165
+ }
2166
+ // Extract level_value_id and level_value_mnemonic from current value
2167
+ // The value could be the ID itself or an object with id/name
2168
+ let level_value_id;
2169
+ let level_value_mnemonic;
2170
+ if (typeof currentValue === 'string' || typeof currentValue === 'number') {
2171
+ // Value is just the ID, need to find mnemonic from data source
2172
+ level_value_id = String(currentValue);
2173
+ // Try to get mnemonic from data source options
2174
+ const option = dataSourceOptions.find((opt) => opt.value === currentValue);
2175
+ level_value_mnemonic = option?.label || String(currentValue);
2176
+ }
2177
+ else if (currentValue && typeof currentValue === 'object') {
2178
+ level_value_id = currentValue.level_value_id || currentValue.id || currentValue.value;
2179
+ level_value_mnemonic = currentValue.level_value_mnemonic || currentValue.name || currentValue.label;
2180
+ }
2181
+ else {
2182
+ return;
2183
+ }
2184
+ // When a widget's own value changes, remove this level and all below from hierarchy first
2185
+ // This ensures that when level 1 changes, we clear the hierarchy and rebuild from scratch
2186
+ // The addLevel method already handles removing existing levels, but we explicitly clear to be safe
2187
+ geoHierarchyBuilder.removeLevelAndBelow(level);
2188
+ // Add level to hierarchy
2189
+ geoHierarchyBuilder.addLevel(level, level_value_id, level_value_mnemonic);
2190
+ // If this is the last level, build and store hierarchy JSON
2191
+ if (isLastLevel && dataPath) {
2192
+ const hierarchyJson = geoHierarchyBuilder.buildHierarchyJson();
2193
+ if (hierarchyJson) {
2194
+ // Store both geo_lowest_level_value_id and geo_code_hierarchy_json
2195
+ const updatedValues = setWidgetValue(valuesRef.current, dataPath, widgetId, {
2196
+ geo_lowest_level_value_id: hierarchyJson.geo_lowest_level_value_id,
2197
+ geo_code_hierarchy_json: hierarchyJson.geo_code_hierarchy_json,
2198
+ });
2199
+ Object.entries(updatedValues).forEach(([key, value]) => {
2200
+ dispatch(setValue({ widgetId: key, value }));
2201
+ });
2202
+ }
2203
+ }
2204
+ }, [geoConfig, currentValue, widgetId, dataPath, dispatch, dataSourceOptions]);
2205
+ };
2037
2206
 
2038
2207
  class WidgetRegistry {
2039
2208
  constructor() {
@@ -2108,178 +2277,12 @@ class WidgetRegistry {
2108
2277
  return React.createElement(entry.component, {
2109
2278
  config,
2110
2279
  ...context,
2111
- ...entry.defaultProps,
2112
- });
2113
- }
2114
- }
2115
- // Singleton instance
2116
- const widgetRegistry = new WidgetRegistry();
2117
-
2118
- /**
2119
- * Widget Event Bus
2120
- * Provides a publish/subscribe mechanism for widget communication
2121
- * Supports debounce and throttle for performance optimization
2122
- */
2123
- class WidgetEventBus {
2124
- constructor() {
2125
- this.subscriptions = new Map();
2126
- this.throttleTimers = new Map();
2127
- }
2128
- /**
2129
- * Subscribe to an event type
2130
- * @param eventType The type of event to listen to
2131
- * @param handler The handler function
2132
- * @param options Debounce/throttle options
2133
- * @returns Unsubscribe function
2134
- */
2135
- subscribe(eventType, handler, options) {
2136
- if (!this.subscriptions.has(eventType)) {
2137
- this.subscriptions.set(eventType, new Map());
2138
- }
2139
- const eventSubscriptions = this.subscriptions.get(eventType);
2140
- const subscriptionId = `${Date.now()}-${Math.random()}`;
2141
- const subscription = {
2142
- handler,
2143
- debounce: options?.debounce,
2144
- throttle: options?.throttle,
2145
- };
2146
- if (!eventSubscriptions.has(subscriptionId)) {
2147
- eventSubscriptions.set(subscriptionId, []);
2148
- }
2149
- eventSubscriptions.get(subscriptionId).push(subscription);
2150
- // Return unsubscribe function
2151
- return () => {
2152
- const subs = eventSubscriptions.get(subscriptionId);
2153
- if (subs) {
2154
- const index = subs.indexOf(subscription);
2155
- if (index > -1) {
2156
- subs.splice(index, 1);
2157
- if (subs.length === 0) {
2158
- eventSubscriptions.delete(subscriptionId);
2159
- }
2160
- }
2161
- }
2162
- };
2163
- }
2164
- /**
2165
- * Publish an event
2166
- * @param event The event to publish
2167
- */
2168
- publish(event) {
2169
- const eventSubscriptions = this.subscriptions.get(event.type);
2170
- if (!eventSubscriptions) {
2171
- return;
2172
- }
2173
- eventSubscriptions.forEach((subscriptions) => {
2174
- subscriptions.forEach((subscription) => {
2175
- this.executeHandler(subscription, event);
2176
- });
2177
- });
2178
- }
2179
- /**
2180
- * Execute handler with debounce/throttle support
2181
- */
2182
- executeHandler(subscription, event) {
2183
- const { handler, debounce, throttle } = subscription;
2184
- // Clear existing debounce timer if any
2185
- if (subscription.debounceTimer) {
2186
- clearTimeout(subscription.debounceTimer);
2187
- }
2188
- // Handle throttle
2189
- if (throttle && throttle > 0) {
2190
- const throttleKey = `${event.type}-${event.widgetId}`;
2191
- const now = Date.now();
2192
- const lastCallTime = subscription.lastCallTime || 0;
2193
- if (now - lastCallTime < throttle) {
2194
- // Still in throttle period, schedule for later
2195
- if (this.throttleTimers.has(throttleKey)) {
2196
- return; // Already scheduled
2197
- }
2198
- const remainingTime = throttle - (now - lastCallTime);
2199
- const timer = setTimeout(() => {
2200
- subscription.lastCallTime = Date.now();
2201
- handler(event);
2202
- this.throttleTimers.delete(throttleKey);
2203
- }, remainingTime);
2204
- this.throttleTimers.set(throttleKey, timer);
2205
- return;
2206
- }
2207
- subscription.lastCallTime = now;
2208
- }
2209
- // Handle debounce
2210
- if (debounce && debounce > 0) {
2211
- subscription.debounceTimer = setTimeout(() => {
2212
- handler(event);
2213
- subscription.debounceTimer = undefined;
2214
- }, debounce);
2215
- return;
2216
- }
2217
- // Execute immediately if no debounce/throttle
2218
- handler(event);
2219
- }
2220
- /**
2221
- * Clear all subscriptions
2222
- */
2223
- clear() {
2224
- // Clear all timers
2225
- this.subscriptions.forEach((eventSubscriptions) => {
2226
- eventSubscriptions.forEach((subscriptions) => {
2227
- subscriptions.forEach((sub) => {
2228
- if (sub.debounceTimer) {
2229
- clearTimeout(sub.debounceTimer);
2230
- }
2231
- });
2232
- });
2280
+ ...entry.defaultProps,
2233
2281
  });
2234
- this.throttleTimers.forEach((timer) => clearTimeout(timer));
2235
- this.throttleTimers.clear();
2236
- this.subscriptions.clear();
2237
2282
  }
2238
2283
  }
2239
-
2240
- const WidgetContext = createContext({
2241
- dataSourceRequestHandler: undefined,
2242
- schemaData: undefined,
2243
- translate: undefined,
2244
- });
2245
- const useWidgetContext = () => {
2246
- return useContext(WidgetContext);
2247
- };
2248
- const WidgetProvider = ({ store, dataSourceRequestHandler, schemaData, translate, children, }) => {
2249
- const widgetStore = useMemo(() => store || createWidgetStore(), [store]);
2250
- // Create event bus instance (one per provider)
2251
- const eventBus = useMemo(() => new WidgetEventBus(), []);
2252
- // Memoize context value to prevent unnecessary re-renders
2253
- const contextValue = useMemo(() => ({
2254
- dataSourceRequestHandler,
2255
- schemaData,
2256
- translate,
2257
- }), [dataSourceRequestHandler, schemaData, translate]);
2258
- // Warn if dataSourceRequestHandler is missing (will cause issues with API data sources)
2259
- useEffect(() => {
2260
- if (!dataSourceRequestHandler) {
2261
- console.warn('[WidgetProvider] dataSourceRequestHandler is not provided. ' +
2262
- 'Widgets with API data sources will not be able to load data. ' +
2263
- 'Please provide dataSourceRequestHandler prop to WidgetProvider.');
2264
- }
2265
- }, [dataSourceRequestHandler]);
2266
- // Cleanup event bus on unmount
2267
- useEffect(() => {
2268
- return () => {
2269
- eventBus.clear();
2270
- };
2271
- }, [eventBus]);
2272
- // Initialize schemaData to Redux store (only on mount)
2273
- // This prevents overwriting user changes when schemaData prop changes
2274
- useEffect(() => {
2275
- if (schemaData) {
2276
- widgetStore.dispatch(setValues(schemaData));
2277
- }
2278
- // eslint-disable-next-line react-hooks/exhaustive-deps
2279
- }, [schemaData, widgetStore]); // Only run on mount
2280
- const content = (jsxRuntimeExports.jsx(Provider, { store: widgetStore, children: jsxRuntimeExports.jsx(WidgetContext.Provider, { value: contextValue, children: jsxRuntimeExports.jsx(WidgetEventBusContext.Provider, { value: eventBus, children: children }) }) }));
2281
- return content;
2282
- };
2284
+ // Singleton instance
2285
+ const widgetRegistry = new WidgetRegistry();
2283
2286
 
2284
2287
  const WidgetRenderer = ({ config, dataSourceRequestHandler: propDataSourceRequestHandler, schemaData: propSchemaData, onValueChange, defaultComponent, }) => {
2285
2288
  // Use context values as fallback
@@ -2576,6 +2579,38 @@ const canPreviewInWeb = (file) => {
2576
2579
  return previewableExtensions.includes(extension.toLowerCase());
2577
2580
  };
2578
2581
 
2582
+ var img$f = "data:image/png;base64,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";
2583
+
2584
+ var img$e = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAkCAYAAACe0YppAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAHqADAAQAAAABAAAAJAAAAAAh0JciAAACrUlEQVRYCcWXPW8TQRCG31kbpNBChGiiRJQ0tFDggPgBtKGhJgEJUGxDFCmJUBKwDUoV2jRxS2NEhZCgAPELKBAhIPFRpKIwUXIe3vFHFJzbs2zWupHWu7e7M8/OenbuVkDReUzoLjbZvGDP/ysiWJQSlpLsiN7HOBp4rco6oBC+Svicz2QWERYULSjh605Q3dvHnk/B138sg1EV1DrjtPVAC9j1eS6NPD5x8lko3rgKch3FfmvbOY2w1a3n89xxlWdsMuvP3UqDPhO2xPLF9NueL3Tbct0dIZ4jJdTh8iH4Irf9H/hQwLZ4edSCs7ltz/Tc4CvWNhka2IwbXDKYZLMDt4Brep61CUFE8Jt26iwj9KbcKGDW7GrDfnGi+csf8zwqoh7MY1nFjhLYBpziKTl3UIDRDthqp5gJ5zENZsrMCXlscQE3DoMO2sJ8wURFr08GBRtAythgZeWIRAVsSDtZBdvqI5QeHamBE7c6yqPKJND/G0sZvIqXmQpmfI57wVrEGI/CFINhIOGCp3lml/mS+B5nwAuWx/iqs5hnDr8ap9ijT7noF+5JPNR0vWAblAqWWVkJLqkFV2rgxK1mVG8ySC4Oss/NqC5j2qfrBdf5RSERrg8c1cBNvYOHsoYfcXAveISvNHpcZIrLxSkm9rXO8SvngZquF2yDTPolVlaCS2rBlRo4cav56fscgvNJ+8wYqDEt3k6aEzfmBVtU82P/Wq+oZiq/pfdQkqf4Fgfw9XnBFtXM1XeZq73nmGPK68871yfUFuMF2yBz9RorK8ElteDiHY2blYI4/ks7xuUCxofNJ2OizfiZZVTW2GGfKJNMkc9cFlUu5k/QRQiOYx9TfHFcMrtkvhWdw2l2fmDnWFCY39i2XWucrOAXb1A5ruKjf26wkfeEXrE71V+iV9IhdJQEvwAAAABJRU5ErkJggg==";
2585
+
2586
+ var img$d = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGxmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjUtMDktMjRUMTI6Mjc6NDArMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjYtMDEtMDJUMTY6NTA6MDQrMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDI2LTAxLTAyVDE2OjUwOjA0KzA1OjMwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjljMDI0ZTVhLWJiMWItNDBiMi05NThmLTg5YjExMTE5NGI4MSIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjMzZDZiMTBiLTQzNjYtYTc0Ny1iOTZlLWI4ZTBhZjQxMTkzOCIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjI1M2M1ZmRhLTlkYzctNGQ0MC04Y2E3LThmMTQ2MmU4OWMxNSIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MjUzYzVmZGEtOWRjNy00ZDQwLThjYTctOGYxNDYyZTg5YzE1IiBzdEV2dDp3aGVuPSIyMDI1LTA5LTI0VDEyOjI3OjQwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MDQ5N2Y5YmYtMWZiMi00MWJlLTg5ZGItZGFiMDZmMjEwODE4IiBzdEV2dDp3aGVuPSIyMDI1LTA5LTI0VDEyOjI3OjQwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6OWMwMjRlNWEtYmIxYi00MGIyLTk1OGYtODliMTExMTk0YjgxIiBzdEV2dDp3aGVuPSIyMDI2LTAxLTAyVDE2OjUwOjA0KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7pSLHQ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";
2587
+
2588
+ var img$c = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAACAKADAAQAAAABAAACAAAAAAAL+LWFAAAoQklEQVR4Ae3dy49tWV0H8MubEI3GGBFwojwbGmjppsH3pQEnDIz6BzAz4T9QiVPxFZ0ZJ2LigBEDE00g0SADNb7CI4EQE41goBua7r7dPBQEvP52uvftuvU4tc/Ze+21fmt9TrJy6lbts/dan9+q8/3VqbpVN264ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMAOAi+Ka7xwh+sUu8Rzip15nxNPBfjhGP8d49Y+l3QVAgQIEBhM4KWx3l+OcTPGfTF+IsYLYky3b8f49xifjPGxGH8RQx4Fwta3V8cJfz3Gx2N8Mcb/xbh9Zkzv+1CM98V4WQw3AgQIECBwqsAD8cAPx/hOjLNZc+jtb8Wxfx7jnhhuGwi8M87xjzEOoZ//2FSED8a4N4YbAQIECBBYKvCDceCUH+e/yDyfM4f+PTUNfxTjJTHcThB4VTzmIzEOIV/3se/F438nRurv1cT83QgQIECgvMBb4hL/GeO6bFn68c/EuV5Tftp9XeGXYjlPxViKfN1xn4hzTd9CcCNAgAABApcJ3Ix3bpk7cy49GuedGgu3BQLvjWO+G2PG2+r+kTjn6xZc3yEECBAgMJbAQ7Hcb8bYKm/On+crce7pVW23AwLTV/4lwn8uhibgAL4PESBAYECB0uE/58+nw/bFA/ouWvLUHZV4+WXGn+81AYvK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cqPi0586sS/E2LoJ+Eqc8/7is3cBAgQIEMgqMP1gYKn8eUtWlL3n/Yq44D/E2KoJ+GSc65V7L8L1CBAgQCCdwNb586kQkD9HboPpZwLeH+ObMU5tBKb/a/nbMV4cw40AAQIECCwReEEc9Fsx1ubPB+Ic8meJ+BXHTN3Y9FOTT8RY2gh8LY794xg/HsONAAECBAicIvBj8aApf6afH1uaP1+PY1Pkz3NiolluL4qJvuuZcV/cTy+pfH+M6TcJTuD/EePTMf42xkdj/E8MNwIECBAgsFZgyp93x3hnjOl3B0w/sP7SGFP+TD9f9kiMz8X4eIyPxJA/geBGgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAn0I/D/rORE18R9ldgAAAABJRU5ErkJggg==";
2589
+
2590
+ var img$b = "data:image/png;base64,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";
2591
+
2592
+ var img$a = "data:image/png;base64,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";
2593
+
2594
+ var img$9 = "data:image/png;base64,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";
2595
+
2596
+ var img$8 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAgKADAAQAAAABAAAAgAAAAABIjgR3AAAFPElEQVR4Ae2dzWtdVRTFn5o40EFTraQgFIoOI04cVOdVQZxIoP4DrSSx1o515h9QCgWtrW3UGPsxcKTYjgt+xagdONNBKCRiCEgQCYXWtcFb8l5vYnLevefsc8/vwOJ+vHfP2XutdfZ536/Xo8EADMAADMAADMAADMAADMAADMAADMAADMAADHSfgYe6n2IjGY6ql2eEEWG9kR7pJAsGXlOUC8KGcPc/rGg7J4wLtI4yMKa85oVK9Lrtqm6f7Gj+Raf1mLJfFOpEHzx3R/ebKpqtjiW/G/ErM2CCjpggRHxMgPj3lgoqQcZm+EqxV7N5mC0myNAERxsSvzKOmWA6Qx6KDPkBZb0mVOI1tcUEmdjpqRbEr0yECTIwgb3SVwnW1pblwLERXo1gADMWJnBqggORDIAJnBrAwlrGBI7ViRDa6xENYJVgJkJODLFLBr7Q/dt6EFjXLybYpUBt332PBvgOE7RNs+/+MYFvfaJEhwmi0Ox7EDPB90Ld2t3WOR4TOPNEChO86YyD4sOxzwX+ILQ16+v6xQTObIcJnAmSIhxMkIJ1Z2OaCez7AXVlu61zLAfOTLAXEzhTJEE4KUxwPEGeDLkNA2aCH4W2Sn9dv5hgG0FS3IQJUrDubEwzwU6/QlY3q0POUQmcmWCYbxOFGMCuwQSYABM480DPKsFPQuisDrmOSuDMBSlM8JYzDooP53ExELsSYAJntjMT/CyElPXQazABJuhhAkyACZx5oGfLwS9CaGkPuY5K4MwF+xKY4IQzDooPx0xwUwiZ0aHXYAJntsMEzgRJEY57E1iA7wlfC38KoeWH63xxt6PlYFKC/4HonTX9tiY4gvCdFX5zNX5bOvc1+7n4/cKXwiN9t3DQRQZeVlJ/Cd9WyZkB3hFerE6w7TwDfSZ4UOk+1/mUSXCQgVM68ZKdtB9KXBXsJUtaWQwsKd0JM4A9SKCVycC7tgTQymXgeSpAueJb5stUgLIN0MMAZRtgEQOUbYBv7DHA78LBsnkoMvslZT1hFWCxyPRJ+pgoWDcD3ICL4hg4qYyvVVk/rJ1fhc3vGrHfXT7ue0fQjPCCcBsTdH4S1IpvBrB2SPhNYPZ3k4PaD4TY28FVu6WdWeFv4R9hTHhUoOXPgM380/mnkX8G9rT7fSFmla2d+flTmV8GJv4HiJ+fcE1EjPhNsJhpHyb+WYGyn6mAw4Rt4n8YWXy+HDqMYg1ea+KfQ/wGGc2oK8TPSKymQzXxzwsx13zKftMqBvZn4n+E+IHsZX6ZvbN6AfEzVzEwfBP/YmTx+aHIQLGavgzxm2Y0o/5M/Fkh5gM+Zr4Tg5j4HyO+EzUih2Hif4L4kVl3MhziOxEiRRgm/qcCa34K9hOPaZ+emossPv8dmFj0angT/zPEr+goa4v4Zendl62JPy/EXPMp+30SpDsw8T9H/HQCpBzZxL+E+CklSDd2CvFn0qXLyJsZGNHBZSHmmo/4mxVIuG/iX0H8hAokHBrxE5LvYegzCoKy70GJBDEcRvwErDsa0n4jKdbsn3aUN6GIgScRv2wfvBLJAMx8pz6zv8lpu/wjvlPxLaynWzTAHfWN+May42bf5FkTmq4CiO9Y9MHQ3mjYAIg/yHAGx9cbMoGJP5VBvoQ4wMATOh72v30Rf4DU3A6HMQHi56b2FvGGmADxtyAz19O7MQHi56ry/8Rtf6N3Vdju6aH93Z69kETrMAMm8IKwIVRmWNH+nDAu0AphYFR5PivYm0c0GIABGIABGIABGIABGIABGIABGIABGIABGIABGMiMgX8BIPxPwjb9HfIAAAAASUVORK5CYII=";
2597
+
2598
+ var img$7 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGxmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjUtMDktMjRUMTI6Mjc6NDArMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjYtMDMtMTNUMTY6NTE6NDUrMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDI2LTAzLTEzVDE2OjUxOjQ1KzA1OjMwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjU2M2VkMzE4LTY4YzgtNDBkOC1hODQzLWVhZDY2ZWEzYTEyOSIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmE3NzQzN2ExLTY5M2MtY2Y0Yi1hZTRkLTZmMTg3MzgxMzNmMCIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjI1M2M1ZmRhLTlkYzctNGQ0MC04Y2E3LThmMTQ2MmU4OWMxNSIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MjUzYzVmZGEtOWRjNy00ZDQwLThjYTctOGYxNDYyZTg5YzE1IiBzdEV2dDp3aGVuPSIyMDI1LTA5LTI0VDEyOjI3OjQwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MDQ5N2Y5YmYtMWZiMi00MWJlLTg5ZGItZGFiMDZmMjEwODE4IiBzdEV2dDp3aGVuPSIyMDI1LTA5LTI0VDEyOjI3OjQwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NTYzZWQzMTgtNjhjOC00MGQ4LWE4NDMtZWFkNjZlYTNhMTI5IiBzdEV2dDp3aGVuPSIyMDI2LTAzLTEzVDE2OjUxOjQ1KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4gFIalAAAEcUlEQVR4nO2SwW4aVxhG72SmBQQWDxCrbljZXqHhBbKoVLHAGBt5AxssIVyVtxnLHUUqm2RTpXHTLCJLXvAC0WRnexNcqzwAslESm2GmiworoY4sN4Z/7nzfkf6duf7gHCMMQ0VweSA9gMjCAMBhAOAwAHAYADgMABwGAA4DAIcBgMMAwGEA4DAAcBgAOAwAHAYADgMAhwGAwwDAYQDgMABwGAA4DAAcBgAOAwCHAYDDAMCxpAdI4Pu+dXx8vOJ5nq2UUrZteysrK8eWZfnS2+ZOGIYwd3Z29l2pVHqVTCY/KKXCTy+ZTH4olUqvTk9Pv5feOc8THzCvc123tbCwcD4tfvoymcyF4zjtIAgM6c0M4B5uNBpZW1tbv90mfvrK5fLLy8vLb6X3M4CvlF+tVp/fVf7k1tbW/ox7BOIDoiofJQLxAVGWjxCB+ICoy/80gqurq2+kvx8DEJAf5wjEB+giP64RiA/QSX4cIxAfoJv8yZXL5ZdxiEB8gI7y4xSB+ABd5cclAvEBOsuPQwTiA3SXr3sE4gPiIF/nCMQHxEW+rhGID4iTfB0jEB8QN/m6RSA+II7yJ7e+vv5H1CMQHxBX+bpEID5AUn6tVntWq9WeIUcgPkBSvu/7pu/7JnIE4gMk5U/+L3IE4gOk5aNHID4gCvKRIxAfEBX5qBFQvmAElUplXzoCygePgPLBI6B88AgoHzwCygePgPLBI6B88AgoHzwCyo94BBsbGy9mGQHlg0dA+eARUL5mEYxGIyuSAaDK1z0CygePgPLBI6B88AgoHzwCyo9BBJubm7//3wgoHzwCygePgPLBI6B88AgoHzwCygePgPLBI6B8gAiq1erzL0VA+eARUH4ETjICyo/ISUVwPaDdbjuUjxFBu912Pgug2+0+NgwjoHz5m0cEhmEE3W73cRiGSg2Hw3Qul3tH+dG5eUSQy+XeDYfDtHJdt0X50bt5ROC6bks1m80nlB/Nm3UEzWbziSoUCm8oP7o3ywgKhcIblclkLig/2jerCDKZzIXK5/NvKT/6N4sI8vn8W9VoNDqUr8fddwTb29u/qt3d3Z8pX5+7zwj29vZ+UoPBILu4uPg35etz9xHB0tLSX+fn5wsqDEN1cHDwI+XrdV8bweHh4Q9hGKrrB1utlnvXR+r1+lPKl42gXq8/vau3nZ2dXyZvXD8WBIHhOE47nU4Pb3sgm80OOp1OQ/oH4P17nU6nkc1mB7d5S6fTQ8dx2kEQGP8JYHK9Xu9RsVh8nUgkPk4/kEql3lcqlf1+v/9Q+kvzPr9+v/+wUqnsp1Kp99PeEonEx2Kx+LrX6z2a/pwRhqG6Cd/3raOjo1XP82zTNMe2bXvLy8snpmmOb/wAiQTj8dg8OTlZ9jzPHo/Hpm3b3urq6pFlWf5Nf//FAAgGD6QHEFkYADgMABwGAA4DAIcBgMMAwGEA4DAAcBgAOAwAHAYADgMAhwGAwwDAYQDgMABwGAA4DAAcBgAOAwCHAYDDAMBhAOAwAHAYADj/ANHMVplSsKGCAAAAAElFTkSuQmCC";
2599
+
2600
+ var img$6 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF92lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjUtMDktMjRUMTI6Mjc6NDArMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjUtMDktMjRUMTI6Mjc6NDArMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDI1LTA5LTI0VDEyOjI3OjQwKzA1OjMwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjA0OTdmOWJmLTFmYjItNDFiZS04OWRiLWRhYjA2ZjIxMDgxOCIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjYxMjIwYjI1LWNmZTgtNGM0NC1hOWM5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";
2601
+
2602
+ var img$5 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGxmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjUtMDktMjRUMTI6Mjc6MTArMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjUtMTItMjdUMTM6MTE6MTkrMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDI1LTEyLTI3VDEzOjExOjE5KzA1OjMwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmMyMTU3YzU0LTZhMjEtNDkyZC1hNzczLWM1M2IzZDJmMjg3MSIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmQxNzA1Y2Y5LTI0MTAtNzc0Yy1hNTg1LWE3OTdkNjRhZjQxMyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjQ1MzliMGNhLWNiN2EtNDM4OC05MTRkLTg1MjZlNmNlMDY3NyIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NDUzOWIwY2EtY2I3YS00Mzg4LTkxNGQtODUyNmU2Y2UwNjc3IiBzdEV2dDp3aGVuPSIyMDI1LTA5LTI0VDEyOjI3OjEwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6Y2EzMTEwYjAtNTU5OS00YjE2LWJiZWUtZmNlNzdmMGMyZjQ3IiBzdEV2dDp3aGVuPSIyMDI1LTA5LTI0VDEyOjI3OjEwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YzIxNTdjNTQtNmEyMS00OTJkLWE3NzMtYzUzYjNkMmYyODcxIiBzdEV2dDp3aGVuPSIyMDI1LTEyLTI3VDEzOjExOjE5KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4Im3Hl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";
2603
+
2604
+ var img$4 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF92lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjUtMDktMjRUMTI6Mjc6MTArMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjUtMDktMjRUMTI6Mjc6MTArMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDI1LTA5LTI0VDEyOjI3OjEwKzA1OjMwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmNhMzExMGIwLTU1OTktNGIxNi1iYmVlLWZjZTc3ZjBjMmY0NyIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmZiM2RiMmI0LWVlYTQtODE0YS04ZTRlLWU1YzM0NTNkYzAxOCIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjQ1MzliMGNhLWNiN2EtNDM4OC05MTRkLTg1MjZlNmNlMDY3NyIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NDUzOWIwY2EtY2I3YS00Mzg4LTkxNGQtODUyNmU2Y2UwNjc3IiBzdEV2dDp3aGVuPSIyMDI1LTA5LTI0VDEyOjI3OjEwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6Y2EzMTEwYjAtNTU5OS00YjE2LWJiZWUtZmNlNzdmMGMyZjQ3IiBzdEV2dDp3aGVuPSIyMDI1LTA5LTI0VDEyOjI3OjEwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz64vXmkAAAGMUlEQVR4nO2dTUwUZxjH3wGWhCCVdbayBkOi7cUmyLKAgcajdGu8mGYVEBSRL2X7edZDk3rpCcHdLd1+t1ZoJ7GXpuHjqqEf1rI9cJE2IYHwscMua9tsyOK8PVQbipGiOzPP+87z/JNfwol55vn/MpuF2VmFc84oeJMHPQAFNiQA8pAAyEMCIA8JgDwkAPKQAMhDAiAPCYA8JMA2ks1mXfF4vGp+fr4cehazQwJskRs3brxSW1t7e8eOHX/6fL6pvXv3znm93sW2trZrS0tLZdDzmRLOObGJVCpV2tLScp0xxh+Hqqq6pmlB6FlzBXwA0VhZWdlVXV19Z6vyH6IoihGNRi9Az0wCAJTvFAnABxCFpynfCRKADyACuZQvuwTgA4jA0aNHv8ulfJklAB8Amlgs1m1G+RsliEQifdDnRQJsA8MwFLfbnTRTANkkAB8AkpmZmefMLl82CVD/JTAej1dZ9bs550ooFIpEo9E+q45hRlAL4HK5slYfQ3gJoC9BkMzOzlYwi14CNiPqywH4ANB4vd4FzBKADwDN8PBws10CMMZ4OBwOQZ8zCbCJ48ePf4NVAvABRGB1dXXnoUOHfsAoAfgAooBVAvDFiwRGCcCXLhqrq6s76+rqfsQiAfjCRQRCgqtXr75KAghEKpUqra2t/cnpEoAvWmQwSAC+ZNFxugTgC5aBVCpVWlNTc9uJEoAvVxaSyaTbiRKAL1YmICQYHBx8jQQQiGQy6fb7/T87RQLwhcqIkyQAX6asJJNJd66fJRBBAvBFyowZHyiBlgB8ibIjuwTgC3QCKysru3w+3y8ySgC+PKcAIcHAwMDrJIBA6LquyiYB+NKchq7ralVV1ZQsEoAvzInIJAH4spyKLBKAL8rJ6LquHjx4MC6yBOBLcjqJRMJjtwRXrlx5gwQQiEQi4amsrPxVRAnAl4MFUSUAXwwmRJTgkQEvXbr0TiAQGPV4PAk7ByVgJPj3B03Tgrt3716CHpawVwLGOWcjIyNN0AMS1tPf3//mIwIsLCx4VVXVoYcjYCTId7lcFycmJl5iFBQZGxt7ubS0NF1fX/89Y4yxI0eOTDABzCTsZXR0NMA5Z4wu/zipqKiYvXfvXkl+JpN5l1HQJZ1O7ywuLv4rnzH2NvQwFJgUFRVlFPbPJYGCMHv27FlA/aRQCvJHxWKP3++/QwIgTkNDwyTbt2/f70yAtyUEzNvAPL/ff4dR0CUWi/WUlJT8kXf48OGb0MNQ7E1/f/9bgUBgjDHG2NraWuGBAwemmQCXJcJ6Nv8ziHHO2a1bt14sKCjIQg9H2Fv+f24ImZycrN+/f/9v0EMS1rDlDSEPSafTz1y+fPnisWPHvqW7g5zDtm4JI6zHMAzl/Pnz74lSPglgc/m9vb1DIpVPAiAvnwSwqfyenp73RSyfBLCh/O7u7pid5dOHQwXBMAylq6vrA5HLJwGQl08CWFR+Z2fnhzKUTwJYUP65c+c+kqV8EsBE7t+/n9fR0fGxTOWTACaWf/bs2U/sLJ8eFCkIMpdPAphQfnt7+6eylk8C5Fj+mTNnPpO5fBIgh/JPnz79uezlkwDIyycBnqL8tra2L5xSPgnwBKyvr+e3trZes7N8+to4QVhfX88/derUl04rnwRAXj4JsI3yW1parju1fBLgf8pvbm4ednL5JMAW5Tc1NY04vXwSQJDyw+FwCOp8wRcuEtlstuDkyZNfYSmfBNhU/okTJ77GVD4JgLx8EuABoVAojLF8EoBzNj4+3oi1fBKAc1ufkRSJRPqgz5cE2MDc3Fw55vI557ifEzg1NeWz4ziRSCTU19cXteNYTxrUAmQymSKrjyFy+Ywx3C8Bd+/efZ5ZdMlXFMUQ9bK/EfABIDEMQ3G73Ums5aMXgHPOhoaGerGWTwI8oLGxcdys8qPR6AXo8yEBnpDl5eVnc/1GTxnLJwFMkkDW8kkAEySQuXwSIEcJZC+fBHgMuq6rwWBQ26p8VVV1TdOC0LOSABaiaVqwpqbmdmFh4drD4svKyhZbW1uvLS4ulkHPZwYK55xRtk42m3VNT0+/4PF49PLy8nnoecwMCYA8qP8ZRCEB0IcEQB4SAHlIAOQhAZCHBEAeEgB5SADk+RuHo3dOeiRkRQAAAABJRU5ErkJggg==";
2605
+
2606
+ var img$3 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAACXBIWXMAAEuXAABLlwHuxW8gAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAIABJREFUeJzt3Xf8XFWd//HXNw0SUmgRQu9FOkoREFFYxVUWG7qiK5a17dobuvhT9qHY6+qqiBVdC7oiq6hILyJFQJrSO6EGQgjpCb8/zoRvvpB8M3fm3vmcM/N6Ph7vBxFh+Nxz75x75pZzQJIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZLaNRRdgKSOTAU2ANZfIU8D1gXWBia2sjYwqfXnaSv5nDVa//8i4LHW33sEWAYsAOYD81p/b/YKWf6/7wPuBe5u/bOSCuEAQMrPOGArYEtg01Y2X+HPmwJrhlW3ao8AMxkeENwG3NLKza2/93hUcZJGcgAgxVkbeDqwA7A9sB2wI+nkPz6wrqYsZHgwcC1wTeuvf2v9f5J6yAGA1BubALsDe7T+ujvpRC9YQhoUXA1cBfwFuASYFVmU1O8cAEj1mwjsBewP7AfsA0wPrahMtwCXtnIJcBnpeQRJNXAAIHVvXeAg4ADSCX9P+vMSfrRFpMHAOcC5wIUMP7goqSIHAFJ1a5JO9gcDh5BO+GNCKxpMi0kDgnOBPwJ/av09SW1wACC1ZzvgcOD5pJN/jk/hD7o5wBnA71u5O7YcKW8OAKSVGws8CziMdOLfPrYcdeAq4FTgf0nPD0hagQMAadh44B+AVwAvxgf3+sltpIHAL4GLcT4CSRp4Y0gP8H0LeJB0YjD9nTuBrwL7Ig0wrwBoUO0FHAm8EtgouBbFuQH4USu3B9ciSWrIesC7SfeGo3+FmryyjPR64RtJ6yxIkgo3hvTU/vGkd8ajTzQm/8wHTiLN6SBJKswk0q/9W4k/oZhycxHwetLsjpKkjI0B3kVapjb65GH6J7OAL5JWaJQkZWYH0mxw0ScL079ZAvyc9BCpJCkDzyetRx99gjCDkwuAI0iTRkmSAryZ9Mss+oRgBjN/Iz0nMA5JUs+8ElhK/EnAmFuBt+BAQJIatz+wgPiO35gVcxNeEZCkxkzFV/xM3rkJOAqXipakWn2H+A7emHZyJXAoUmZcC0Al2pnUqfrLSiU5E/gQcHl0IRLYgapMx+Gxq/IcDFwK/BjYPLgWySsAKs6WpHurDgBUskWkJaiPAeYG16IBZSeq0rwRj1uVbwJpyuq/A68LrkUDyisAKs0NwLbRRUg1+z1p8aobowvR4HAAoJJsAtwZXYTUkIXAF4BPkua3kBrlpVSV5MDoAqQGrUF6JuBK4NnBtWgAOABQSXaMLkDqge2Ac4HjSRNeSY1wAKCSbBVdgNQjQ6R1Bf4OvCS4FvUpBwAqydOiC5B6bCPgZOBEYO3gWtRnHACoJOOjC5CC/Avp2YCDgutQH3EAoJL41ooG2Wak6YQ/Q5pHQOqKAwCV5MHoAqRgY4CjgcuAXYNrUeEcAKgkM6MLkDKxM3AR8PboQlQuBwAqibOkScMmAt8AfgpMCa5FBXIAoJL8OboAKUP/DPwFbwmoIh+qUknGAw8Bk6MLkTI0j3RL4MToQlSGsdEFSBUsA3bCXzrSyowHXkpaM+N0YElsOcqdtwBUmp9EFyBl7l9Jt8s2iy5EefMWgEozDvgbLgksrc5M0jTCl0YXojw5AFCJXgv8KLqIYHOAu1qZCdxDej5i1gp/fQR4jHRveGHr31k6ymeuSXqyfGLrz1OAdYB1V/jr+sAM0mXmGcCmwFq1bpnqNJ90RcArZ3oKBwAq0VjSRCi7RRfSsLuBG0ivP94I3NT66+3A3MC6nmwqsHUr26yQpwPTA+tS8jhp9sCPkp6jkQAHACrX7sAl9Mf6AIuAq0lzvV/VypWkX/Kl2xDYhTRY2wXYgzQw8AHk3jsFeA3pqpDkAEBFOwb4ZHQRHbiT9JDWRcDFwOXAgtCKemsy8Exgn1b2Jd1OUPMuBg4DHoguRJK6MQT8kHSJM+fcA5xEWt99y0ZaonxbAa8DjgfuIH6f9XNuxodoJfWBCcAZxHeqK2Y+8Hvg34Htmtv0vrYT8AHS6neLiN+n/ZZ7gWe0vTckKVNrAj8jtkOdCXwbOByfiq/bVODlwHdJK0JGnzz7JY8CL6iwHyQpS0PAcaSnnHvVgd4DfB14Dk6q1SvjgOcDJ5DuY0efREvPItKDgZJUvOeRXp1rqsOcTbpP/Vx8kj3a8sHAiaTXIqNPpqVmKfDmim0vSVlaE/gY9V0uXgr8ETiSNEmO8jMFeD1wNml/RZ9US8sy4J1VG12ScjWR9MvmMqrfGlhGemXqw6TZ7lSOLYBPAfcRf2ItLUdXb26VynkANCg2AA4h3a/fkrRQyoqz1M0mvR51LWlSntNI0+yqXBOAV5CWyD0guJaS/CdwbHQRkiTVYTfgB6Q1EaJ/ZZeQz3TUypIkZWoD0q/bh4g/yeae/+ysiSVJytdU4IP4nMDq8pFOG1iSpJxNAt5NmtMh+mSbaz7UcetKkpS5yaQn4J1c6KlZRnqQUpKkvjWVNKPkY8SfeHPKUuC1XbSrJElF2Jg04+MS4k++uWQR8MJuGlWSpFLsCpxO/Mk3lzwK7NVVi0qSVJDDgNuIPwHnkAeA7btqTUmSCjKJNIfAAuJPwtG5A6fIliQNmB2B84k/CUfnMmCtLttSkqSiDAFvAeYQfyKOzK+AMV22pSRJxdkI+DXxJ+LIfKrrVpQkqVBvYLCvBhzVfRNKklSmzYHziD8ZR2QR8Nzum1CSpDKNJU0pvIj4k3Kv8yCwRdctKElSwfYFbiX+pNzrXASsUUP7SZJUrKnAL4k/Kfc6x9fReJIklWyItNzwoN0SeFMdjadmDUUXoLYNkRYo2RKYDkwgrdA1mzQr1y3A4rDqJI3mOcBPgRnRhfTIAuAA0mRBkjqwEenXw29JJ/rRRtyLgT8Dn8bFOqQcbQxcSvyv817lFmDtWlpOGiAHAqfS3VKk1wNvByb2uHZJq7YmcCLxJ+de5Rf1NJvU//YFzqHeL+DdwGvxdo+UiyHSq4JLiT9B9yL/Wk+zSf1pR9Kc2sto7kt4OoNz/1EqwcuAecSfoJvOY8DTa2ozqW9sDJxAun/fiy/i/cD+PdkySe3Yh/S9jD5JN51r8HakBMA6wGeIGf3PAw5vfhMltWkHBmPSoK/V1WBSiSaQlhCNHvEvAg5teFsltW9D0itz0SfpJrMMeEFdDSaVYizwRuBO4r+Ey/MosFOTGy2pkqn0/2JCtwPT6mowKXcvAa4l/ou3slwLrNXcpkuqaBJwGvF9Q5P5fm2tJWVqX+Bc4r9sq8vnm2oASR2ZAJxMfN/QZF5WW2tJGdkZ+A3xX7B2swhvBUi5mUB/LyR0L7Buba0lBduUtApWN7P3ReXUBtpDUnfGkWbSi+4fmsr36msqKca6pFf65hP/heomz6u7YSR1bTxwCvH9QxNZBhxcX1NJvTOJNJ3nw8R/kerIxThdsJSjCaSrdNF9RBO5AScIUkHGkd7lv5v4L0/d8cEcKU+TqH+dkFxyXH3NJDXnEOBq4r8wTeV60gBHUn6mAlcQ30/UnUWkh6elLO0HnE/8F6UXeXNNbSapftNJl82j+4m6cz7eglRmdgJOIv7L0cvcTbrcKClPW5Neo4vuK+rOq+psJKlTm1HuK3115Ojum1BSg/YC5hLfV9SZO3FmUgVaj/RK3wLivwyRebjVFpLy9TJgKfH9RZ35ZK0tJLVhLdKv3tnEfwFyyee6alFJvfAfxPcVdWYhsF2tLSStwnjSK333EH/g55b5pFshkvJ2IvH9RZ35Vb3NI400BBwB3Ej8wZ5zvttpA0vqmTWAPxHfX9SZ/WptIanlEOAy4g/wErIEFwqSSrAh/TU52UX4WqBq9EzgDOIP7NJycieNLann9iNNqhPdZ9SVw+ttHg2izUmv9PXb07K9zP6VW11ShPcT31/UletwZlJ1aH18pa+unF+x7SXFGKK/lhB2ZlJVMpn0St8jxB+8/ZQXV9kJksJMA24hvs+oI3eQHnKURjWB9EpfP06RmUOuBsa2vTckRdqb/nke4G01t436yBjSK303E3+g9nuOanOfSIr3UeL7jDriVQCt1CH05/KYueY2/CJKpRgDnE18v1FH3l5z26hgewNnEX9QDmLe18b+kZSHzemP56G8CiC2Jy3Pu4z4A3JQ8xCwzup2lKRsvJn4fqOOvLXuhlEZNia9y7+Y+IPQuGKXVJrfEd9vdJub8UHkgTIFOBaYR/zBZ4YzD9hk1btNUmY2IS3zHd13dJuX190wys/yV/ruJ/6AMyvPN1e59yTl6G3E9xvd5pLaW0XZWP5KX79MYtHPWQzssPLdKClDY4ALiO87us2BdTeM4h0CXEn8wWXaz89Xuicl5WonYCHxfUc3+U3traIw+wLnEn9QmepZ1tp/kspxHPF9R7f9zva1t4p6akfSK33RB5PpLucgqSQTgVuJ7zu6yVdqbxX1xKakV/qWEH8QmXryfCSV5JXE9xvdZA4wtfZWUWPWJS3PO5/4g8fUm7+SHjCSVI6zie87uomLBBVgEml53n54B9WsOq9GUkl2ouzJ1a4FhmpvFdViCHg9MJP4A8U0n5tI8zdIKse3ie87uslBtbeIurYN/fG+qamWdyCpJBsBjxHfd3SaH9XfJOrGy+mP1adM9dwLTEZSST5NfN/RaeYBa9ffJIOh7oUV3gF8D1iz5s9VGSaTJhk5N7oQSW27jLRi4KToQjowHriNtA0K9D7iR4MmPnOA6UgqyQeJ7zs6zcUNtIcqOAJYSvyBYPLIV5FUkrWA+4jvOzrNrvU3Sf+r4xbA1sCpeNlfw/YAfkp69VNS/haT5vL4h+hCOjQP+GN0EYNmDOnyS/Toz+SXHyOpJGtR7hLsd+NkZJV122BvAvauoxD1nVeTrgRIKsNjlDvH/kbAAdFFDJI1gXuIH/mZfPM7JJVkKuW+xv3NBtqjr3VzBeD1wIY11aH+9EKcqUsqyRzS7IAlegXptUD1wF+JH/GZ/HMJztctlWRj0nwe0X1HJzm0gfboW51eAdgR2K3OQtS39gJeFl2EpLbdDZwUXUSHXhVdQEk6HQD8Y61VqN99ChgXXYSktn0puoAOvZj6Z7jtW50OAA6qswj1ve2AN0YXIaltVwB/ii6iA+sD+0cXUYpOBwC+3qWqjqXMucalQVXqU/WHRxdQik4GAJNJ71xKVcwA3hVdhKS2/YI0MVBpfOaoTZ0MAJ6GT3WrM0cD60UXIakti0iru5ZmC2CX6CJK0MkAYErtVWhQrA18OLoISW07gfR6XWleHF1ACToZAJR4MCgf7wA2iy5CUltuAc6PLqIDz48uoASdDADm1l6FBsmapAcCJZXhh9EFdGA/vFq9Wp3cy59EGgT4HIA6tZQ0kdS10YVIWq3JpHVfJkcXUtE/Ab+JLiJnnVwBmEc6GAbBvcBd0UX0obHAcdFFSGrLXOBX0UV0wNsAq9HpPABX1FpFfuYCnwW2xzWmm3I4TtghleJn0QV0wAFAQz5I/KIPTWQRcDywQWs7d8igpn5OiQ8XSYNoPPAg8X1G1fjA8Sg6/XX721qriLcM+AnpF/9bgftaf/+gqIIGxAHAYdFFSFqtxcDJ0UV04NnRBfSrK4gf3dWR04E9V7GNP8ugvn7P33GhIKkEhxDfX1TNtxppCfEW4nduN/kLcPAo2zdEetgxus5ByOtH2Q+S8jCO8m4D+KZRQ9YgrRsdvYOr5ibgn1n9a4zbZ1DroOR20vwAkvJ2IvH9RZUsA6Y30hJ9oJsn3BdS1oQu9wPvBHZk+NL+aPZtvCIttxnwb9FFSFqt0t6rHyJNCqQGjAEuJn6UN1oeJQ1Uqk5i8d8Z1D5IeRCY1taekRRlKunHX3R/USWfa6QlBKRX5R4lfic/OYuArzP8Sl9Vf8lgG6pkGXBHBnV0EycHkvJ3OvF9RZWc3UwzaLkjSSeg6B29/ET4M2CbLrZnImkAEb0tVXIl6dmG6Dq6yWPAjDb2j6Q47ye+r6iSOTihW+M+TPyOPgN4Rg3bckAG21I1nyfd77oog1q6ia/tSHnbjfh+omp2bKQlNMJHibkScDnwghq3470B29Btlm//wRnU0k0WA9utZv9IilPiK9Kva6Ql9BSvB+bTm516C/Aa6r+884Me1V9X5pNuWyx3WgY1dZOTRtk3kuL9D/H9RJV8rZlm0MrsAlxFczvzfuDdwISG6i9tlsOzn1T/HqQld6Pr6jTLgL1WtXMkhXsD8f1ElVzQTDNoVcaTLqU/RH07cQ7wCdKrKE3WvaDGmnuRT6xkO36cQV3d5MyV7RxJWdiG+D6iSmaz+snf1IApwAdIM/B1uvNuA44B1ulBvbt0UWdUDl3JdmxJee/rPjl1PtchqV4zie8jqmTTZppB7RgCnkX6tXo+6df8qnbUPOBC4NOk1Zx6OXJ7zSh15ZglrHoCna9kUF83uRxf35Fy9b/E9xFV8sJmmkGd2oj02t5BrTyDNEqLvFTzWeIP1Cq5YpRtWR94JIMau8mRo2yfpDjvI75/qJIPNtMM6ie/Jv5ArZLVvTf/0Qxq7Ca3khaekpSXfYnvH6rkxGaaoVxeXn2q0t5Bv2w1//8Xgbt6UUhDtiAtPS0pL1eSbkGWwsmANKqxlPcGwJ5tbNdbM6izm9xPs29+SOpMk697153ZDbVBsbwCMNIWlHW5eRFwbRv/3HeAvzdcS5Omk14plZSX1V2BzMk00nNRanEAMNK20QVUdC3pVb/VWQr8v4Zradr78csr5eby6AIq6maRuL7jAGCkEgcA7foVaaGgUk0B3hldhKQR/hpdQEUOAFbgAGCkzaILqOhvFf7Zx4GjmyqkR94BrBldhKQnVOmDcuAAYAUOAEbaPLqAiqp++c4DTm2ikB5ZF3hRdBGSnjCL9JBuKbaKLiAnDgBGKm2qyE4e7PsI6ZmAUr0qugBJI5R0FWCT6AJy4gBgpJIGAItIyyFXdTXwo5pr6aWDcFEPKSclDQA2ji4gJw4Aho0HZkQXUcEddD4Jx8dJ8x2UaDqwfXQRkp5wY3QBFXgFYAUOAIZtTFnt0cmv/+XuAL5eVyEBdoguQNITbo0uoIJJ9GZV2SKUdMJr2gbRBVTUzQAA0kqLD9dRSAAf5JHy0W1f1GveBmhxADBs0AYAD5FWPiyR0wJL+SjpCgCkVWiFA4AVlTbL3B01fMZ/UeZCQZOiC5D0hLmU9SpgaX19YxwADCvtCsDMGj5jPnBsDZ/Ta/OiC5A0wt3RBVTgAKDFAcCw0g6Ke2v6nB9QbUrhHDwSXYCkEe6JLqCC9aILyIUDgGHTowuoqK4BwFLgP2r6rF4p7aEjqd85ACiQA4Bh06ILqGAu8GiNn/d/wAU1fl7TrosuQNIIdf0g6YXSrvY2xgHAsJKeLH+ggc/8AGnBoNzNoqyJR6RBUNIAYN3oAnLhAGDY5OgCKpjdwGdeDJzSwOfW7WxgWXQRkkaYFV1ABSX19Y1yADCspCsADzX0uR+m8+mFe+Wk6AIkPUUTP0qaslZ0AblwADBsSnQBFTT1FPz1pLcCcvUw8NvoIiQ9RUmzinoFoMUBwLCSBgBNjraPJd/37L9BmrtAUl5KGgB4BaDFAcCwNaILqOCxBj/7buArDX5+p+aQZi6UlJ+S5uZwANDiACAZIi0HXIqmfwUfB9zW8H+jqmMpa7pRaZDketVwZSaR+vyB5wAgGRddQEULG/78ecB7Gv5vVHEJZS9fLHViAuUsXbsguoAKxgBjo4vIQWknvqaU9OsfevNlO4V0yf1dPfhvjWYOcCSwOLgOqSljgWcBzwP2BbYFNmdkvzQbuBn4G3AecCZ5rcK3iDSraCkn1rHk/8aTemQaaRKcUvL+ZprhKSYAZ/Rom1aWhcAhjW+lFGML4Iukhb06+X5cBLwdmNjjuldlLvF9Y7txRVE9YX3iD8gqeW8zzbBSU0gdTcTJ/xU92D6p1zYBfki6qlXHd+U+0i276CuZs4jvG9tNSfO+qGEOAEY3GfhdTbW3kznAC3qyZVLvjAU+RHO/lK8F9urZ1jxVSQOAUp6tUA+sS/wBWSW9HgBAel7kONJ9via37Upg+x5tk9QrG5Lu2zfdNyyid7cIn6ykAYALAukJpT0DEPmE/oHANauoq5vMBz4OrNm7TZF6YivgJnrbR3yX3j/kXdIAYO2G2kAFmkz8AVklEVcAVjQOeBtwC91vywLg26ROUuo3O5Dmr4joJ75Hb993f7Ch7WgiTgakJ0wk/oCsko800wyVjQNeAvyCNDthlW24nLQE8YyeVy31xgzSq3qRfcWnGt/KYQ83uB11Z0JDbVAU5wFIlkYXUFEul8mXAL9uZTywN/BM0j38jUlXVsaRnui/j/Qe81XABTirn/rbGODHpFf9In0YuBQ4uQf/rVxeR2yH84roCUM0/3BbnflcM80gqSYfJb6fWJ4HgenNbi5DwLIMtrWdLGqoDYrjVMDJ45S1ylwuVwAkPdVWwDHRRaxgPZr/0bAm5cyv76//FgcAw+ZGF1CBD7BI+foU+Q3SjyLdnmtKbts7miZXUy2KA4BhJa1m5SssUp62Js8ZLIeALzT4+SXNrPdodAG5cAAwrKQrAM5iJeXpHeS7IM5zgEMb+uxpDX1uExwAtDgAGFbSZSGvAEj5GQMcEV3EanyWZvr9dRv4zKbMiS4gFw4Ahj0SXUAFXgGQ8rMP6fXXnO1KWl67biVdASjpam+jHAAMmxVdQAXOYy3l57nRBbTpE8AaNX9mST9KvALQ4gBgWEkDgMmkZXol5SNyJb4qtgDeXvNnblDz5zXp4egCcuEAYFhJAwBwCl0pNyWtYvkx6v3VvlGNn9W0+6ILyIUDgGGlDQBK+sJJgyD3+/8rWoe0FkddNqzxs5r2YHQBuXAAMKy0AYBXAKR8jCHdmivJe4FNavqskn6QeAWgxQHAsAeiC6hos+gCJD1hDOX1pxOB/1fTZ5X0g6S0vr4xpR2wTboruoCKtowuQNITlgALoovowJuAp3f5GWOo70pCL7gSaYsDgGF3RhdQkQMAKS8l3lseC3yyy8/YhPpfK2zSvdEF5MIBwLDHKGsyIAcAUl5uii6gQy8F9u/i3y+pL5oLPBRdRC4cAIxU0m2Azcl3znFpEF0TXUAXPt3Fv1vSAKC0K72NcgAwUkkDgAmkdccl5eG86AK68GzgsA7/3a3rLKRhd0QXkBMHACOVNjrs9uEdSfU5C1gcXUQXPk1nVxVL6occAKzAAcBIt0QXUFFJXzyp380C/hhdRBd2Ao7q4N8rqR8q7UdeoxwAjFTaQzw7RhcgaYTvRBfQpWNJ8wO0awKwTTOlNOK26AJy4gBgpBujC6ho5+gCJI1wCnBtdBFd2BR4Z4V/fjtgXEO1NOH66AKUr8nA4wVlIWW9fysNgiOJ7xu6yUO0v1DQqzOot0rWbnO7BoJXAEaaS1nzRE8g3beTlI+fApdHF9GFdYCPtPnPPqPJQmp2PzA7uoicOAB4qhuiC6iopC+gNAgeB/4juoguvZP21hspqf/x8v+TOAB4qtLu3+0ZXYCkpzgNODO6iC6sSXogcDRDwO7Nl1Kb0n7cNa6khzd6pbTZvPaKLkDSSn0EuJh0oizR64Avseo+cWvKuqd+XdB/d3PSQGlbYDrDbfYw6bbE9cAVwMyQ6jTCc4h/UKVKFgNTGmkJSd06ifg+opv8ZpRte20G9VXJ80fZljoNkdZW+G/g1gr1XU8acD2zR3VqJdYl/kCtmoMbaQlJ3dqONEiP7iO6yYGr2LZvZlBblWy4iu2oy1jSWxFX1VDrJcDLKPfqUdFmEn+wVsnHm2kGSTX4FvF9RDf5Mys/EV2dQW3tpuklgA8j3Sqpu+4/4XNePfcH4g/YKjmtmWaQVIMZpFeMo/uJbvKyJ23TOsDSDOqK7iP3Ac5uuPbFpAcyXf21Rz5J/AFbJXNJcwJIytNxxPcT3eQ6Rj40/uIMaqqSL4y2czqwI3Byj7fhFGBSzduhlTic+AO2ap7dSEtIqsM04EHi+4lu8tYVtufLGdRTJa8ZbedUsDFwAnHPdVyID303bmPiD9iqObaJhpBUm/cR3090k5nAWq1taeJ+d5PZenU7ZzUmA0cDczLYlrNI8zSoQXcTv6Or5IJmmkFSTSYANxPfV3STY0hP0y/LoJZ28yCdP00/AXgLaYr46O1YMd/ucHvUplOI38lVshiY2khLSKrLUcT3Fd1kNvDeDOqokt+1tWdGGkPaV7dnUP+q8uoOtkttOob4HVw1r2ikJSTVZSxlvT63sizIoIYq+Xhbe2bYi6jnXf6m8wBp3pqOuRbAqpV4Sf2w6AIkjWop7a+0l6vSliC/uM1/bh/gHOC3wC6NVVOf9UlvrKkBawDziR/lVcksXN9BKsF5xPcXg5ClpDkLRrM98EvKeq5heRaSHlpXA84nfgdXzQGNtISkOu1HfF8xCLl8lH0wgzRLY+lTNX9ulG0clbcARndedAEdODy6AEmrdSHw6+giBsA5K/l7y1/pu540t0HpV02PovxtyNKhxI/uquYOXEBCKsHTgSXE9xn9nJes0N5rAO8hPTwXXVfdOQTVbiplXh7at4nGkFS77xDfX/RrlgLrkX4QHQHclEFNTeXTdMBbAKObA1wUXUQHXhldgKS2HEt62Fj1uxrYC7gCOInuZwPMmVPBN+RjxI/uquZOHNxJpfgc8X1GP2ZhBjX0Kg/RAU8Sq/fH6AI6sAlwYHQRktryaeDh6CL60CCtkLoOHUwK5ABg9S6lw9FVsKOiC5DUloeBz0YXoeKtbr6Dp3AAsHpLSasvleYIXDZSKsWw+6uYAAAPs0lEQVR/kRYgkzo1qeq/4ACgPadFF9CBtYCXRxchqS3zcUlvdWdh1X/B98XbswFpLezSBkznAc+JLkJSW8aRFqHZMboQFWkGcG+Vf6G0E1qU+yjzdcADgZ2ji5DUliWkVUilqhaQJjiqxAFA+06JLqBDb40uQFLbfg38OboIFedG0vNqlTgAaN/J0QV06Ch8GFAqxeOkeeqlKjq6Qu0AoH03AtdFF9GBKcCR0UVIatv5wKnRRago53byLzkAqOZX0QV06B34wKdUko+Q1qeXVmcBHQ4YHQBU8/PoAjq0M/CC6CIkte1q4MfRRagIvwVmRxcxKK4hft7nTnJ6E40hqTGbk37dRfcdJu/sR4e8AlBdqVcBDgH2iC5CUttuB74RXYSydg5wYXQRg2Rb4kd8ncZLilJZ1idd3o3uO0x+WQLsjnruL8Tv/E4PmO0aaA9JzTmG+L7D5Jcv0qWx3X7AgJoEHBpdRAfGkF4LLHVSI2kQXQ68Aefz0LDLSa93V578R91bj3IfzllCuo0hqRxvJ77vMHnkbtIDogr0S+IPhE7znQbaQ1JzxgM3EN93mNjcD+yCwr2I+IOh0yzCqwBSaV5JfN9h4nI7sD3KwljgDuIPik5T6uuM0qAaIi0UFN13mN7nLGBDlJVPEX9gdJplwF71N4mkBh1MfN9hepfZwLtwzp4sbU56qC76IOk059TeIpKadhrxfYdpNkuAE4AZKGu/If5g6SYvrL9JJDVoN9LrX9F9h2kmpwO7oiIcSvwB003+TnrCWFI5fkJ832HqzYXAgagoQ8B1xB883eS9tbeKpCZtSblzkZiRuRY4AhXrPcQfRN3kEXzCVCrN14jvO0znuQN4C87IW7y1gUeJP6C6ybdrbxVJTZoOzCG+7zDVMgs4Gljzqbu0txx51GMB8DRg3+hCurAHcCZwZ3QhktoyD1gDOCi4DrVnHvAl0oROZ5Ke9Fef2IQ0w1706LKbXI0PBEolmQzcS3zfYVadRcDxZPhKn1cA6jOHNE1jya9vPA2YD1wQXYiktixqxdd58/M4ac2YlwM/BObGlqOm7UaaYS96xNlN5gHb1N0wkhozHriJ+L7DDOcC4IDRdpr60x+IP/jqOHidelIqx2uI7zcMXIOv9A20g4g/COvIu2tuF0nNGQIuI77fGNTcjq/0qeUc4g/IbvMYsF3N7SKpOaXPSlpiHiC90rdGG/tHA+K5xB+YdeTPOKKVSnIG8f3GIGQu8Blganu7RYPmbOIP0jpyTN0NI6kxe1H+g8g5Z/krfc6cqlEdQPzBWkcWA/vV3DaSmvML4vuNfssy4CR8Q0oVnE38gVtHbiVNdywpf9tR/qRkOeV0YM9Ke0AC9qZ/Lsf9oua2kdScbxHfZ5SeS4DnVW14aUX/S/yBXFfeVnPbSGrGDNKDatF9Rom5nvQu/1DlVpeepJ8uxy0C9q+3eSQ15Dji+4yScj/plb4JnTS2tCrfIP7grit3ktYMkJS3acCDxPcZuedR0it9UzprZml0T6O/1u0+CxhXawtJasL7iO8vcs1C0it9/qBR4z5G/AFfZ75Ub/NIasAE4Gbi+4ucspT0St9WXbSrVMlE0ut00Qd/nfGhQCl/RxHfV+SS04Hdu2tOqTMvJ/4LUGcWAQfX2kKS6jYG+Cvx/UVkLiIt1CaF6oflglfMLFw0SMrdYcT3FRH5O77Sp4zsRP+8Frg8N+CDNFLuzia+r+hV7iItz+vDysrOl4n/gtSdS4HJdTaSpFrtQ//MTLqqPER6l39iTW0m1W4q6X366C9L3TkT18WWcvZr4vuJJrL8lb7p9TWV1JyXEP+laSI/wvttUq62J63wGd1P1JXlr/RtUWMbST3RT+sErJgTcBAg5eq7xPcRdeR0YNea20bqmRnAw8R/kZrIl2tsJ0n12Rh4jPg+otNcCBxYe6tIAf6N+C9UU/lEje0kqT6fI75/qJqrgBc10RhSlDHAucR/uZrKR+trKkk1mQrcTXz/0E7uIL3SN7aRlpCCbUF/LRb05HymtpaSVJcjie8bRsuDwHvxzSINgLcS/4VrMl/HBwOl3PyQ+L7hyXmM9KNh7Qa3W8rKEHAq8V++JvMt0i0PSXmYDFxBfN/wOGmG1G+SHo6WBs7GpJmsor+ITeb7OD2nlJMNgRuJ6xOWkd7ld00RDbxXE3+Sbjq/Bdaqq8EkdW0GcDm97wsuAA7owfZJxfg+8SfppnMJLiAk5WQacDK9+f5fDrygN5sllWUt0jKW0SfppnMzsG1NbSapHm8DZtPcd/5IfBZIGtXuwHziT9JN517gWTW1maR6bEBaXGch9XzP7wDeAUzo5UZIJXsn8SfoXmQB8Iaa2kxSfTYizeh5C9W/10uBs4B/Acb3unCpdEP07p5cDvk8zvYl5WgI2JM0Mc/PSa8OziKd5JcP4mcC55Fe930tvs4ndW0acD3xJ+de5dTWNkuSNPB2AB4h/uTcq9wG7FVHw0mSVLqXkibMiD459yrzgXfX0nKSJBXui8SfmHudE3HSIEnSgBsHnE38SbnXuRrYpYb2kySpWOsCNxB/Uu51FgBH4wQikqQBtj39v2jQqnIGsEn3TShJUpkOARYTf0KOyCzSokmSJA2kNxF/Mo7MqcCmXbeiJEkF+jLxJ+LIzAbeTJqpTJKkgTGGNDVn9Ik4OmeRJkySJGlgTABOI/4kHJ1FwFeBqd01pyRJ5ZgCXEb8STiH3A28Dm8LSJIGxIbAzcSfgHPJOcAzu2lQSZJKsS1wD/En31yyDPgJsGU3jSpJUgl2Au4n/uSbUxaQ1lJYr4t2lSQpe7uSJsyJPvHmlkdJDwpu0HnTSpKUtz0Y3CmDHQhIkgba/sBc4k+4ueYR4LPARp02sCRJuToQmEP8yTbnLAS+D+zcYRtLUlF8T3pw7AP8HlgnupDMPQ78gXR74HTSWwQq3xTSAlo7AU8HtgLGtf6/JcAdwI3AtaT9/kBAjZLUmN2A+4j/tV1KbgI+CKzfSWMr3FqkCaH+D5hP+/t9KXAR8AFgWs+rlqSG7ADcRfzJtaTMB04k3Urxqln+9gaOJz3f0e2+n0N6fdSHRSX1ha2AW4g/sZaYW4D/BLap3Opq0gzgPcBVNLPfZwFvwAGgpD6wMc11loOQZcAFwL+TTj7qvXWANwFnkO7j92K/nwas24uNk6QmTSMtoxt9Mi09S4HzSb9AN6u0B1TVdOCNwCmkNzci9vd1wNZNb6gkNW0N0lz50SfRfsky4C/AJ4B9gbHt7wqtwg7Ah0hXXHr1S391uR/YpcmNlqReGAI+T3yn2o95EPgf0tPom7a7QwbcdOBVwAnAbcTvw1XlTmCTZppAknrrXaTL2dEdaz/nZuB7pAHBFm3tlf63MXAE8GXgcso6Bq8EJtbfJFLzfKJVT/ZPwI9JE6eoefcBlwCXtv56CfBwaEXNmgbsTlqnYm/SVNWlPzfxZeB90UVIVTkA0MrsTHrIaqvoQgbUHaQZ6a5u/fUa4HrgsciiKpoIbAds38pupJN+Px5Ty4DnkJ5RkIrhAECrsh7wC+C50YXoCfeSbiEsz23APcDM1l8f6mEtE0mvP24KbE76Fb9Z68/btf46SP3Ln4H9oouQqhikL6iqGwd8hfSuu/K3gHRLYRYwm3QrYXYri0gz4wHMI71CtzITSFPoTgPWbP15aut/TweeRhocrtXIFpTthaR1JKQiOABQO94CfI10cpC0cqcBh0YXIbXLAYDatSfplkA/3sOV6rCU9FrgvdGFSO0YE12AinE5sBfwm+hCpEyNBV4RXYTULgcAquIh4HDSlLeLg2uRcnRgdAFSu7wFoE49G/gZsFF0IVJGZpImNpKy5xUAdep80oQup0QXImVkI9JbE1L2HACoGw8ALwGOAuYG1yLlwisAKoIDANXhRNIsbxdFFyJlYIPoAqR2OABQXW4iPRfwYXxAUJKy5wBAdVoCfJa0wMvVwbVIUZZEFyC1wwGAmnAp8EzgWNIUtNIg6efVHNVHfA1QTdsJ+A6wb3QhUg88DkwmrbcgZc0rAGratcABwHspazlbqRMz8eSvQjgAUC8sJa0quDPw6+BapCZdEF2A1C4HAOql24CXAgcDf4stRWrEWdEFSO3yGQBFGQ/8G/AJYEpwLVIdlgCbAfdEFyK1wysAirIY+CrpIcGTSA9PSSX7PZ78VRAHAIp2J/AqYD+8f6qyfSO6AEkq2SHAVaQrAsaUkvORCjM2ugDpSW4BTiBdSn0m6Z1qKWfLgFcDd0UXIkn9YjJwNGnVwehfeMasKl9AKpBvAagEk4F/Bz4ArB9ci7SiK4F9gIXRhUhSP1sLeDfp9kD0rz5j7gQ2RSqUzwCoJIuBi4HjgVnAjsC00Io0qO4hPbB6S3QhkjSIxgCHARcR/2vQDE6uBjZHkpSFQ4A/kJ7Ijj5BmP7ND4CpSJKyszPw38AjxJ8sTP/kZuCFSJKyNxl4K/BX4k8eptxcDxxFWrtCklSY/YATSeu0R59QTP6ZB/yYtGql06VLUh+YCrwOOB2fFTBPzbWkiaeca0IDwYmANKi2Bv6lla2Ca1GcO0mrUZ5IWoNCGhgOADTohoD9gSOAlwGbxJajHrgP+CXwM+BC0tUgaeA4AJCGDQH7Aq8AXo7veveT+4H/A34OnA0sjS1HiucAQFq5IdJqhIcD/wjsjt+X0lwD/JZ04r8Yf+lLI9ihSe2ZQRoIvBD4B5wMJkfzgQuAU4Hf4DS90qgcAEjVjSc9N/A84CBgb2CNyIIG1FLgMuBM4AzS/fwFoRVJBXEAIHVvIvAs0mDgIBwQNGUxcDlp7YdzSffyZ4dWJBXMAYBUvzWAPUgDgeXZNrSiMt1LOtlfCPyZ9Gt/fmhFUh9xACD1xrqkgcCewK7ATsD2OMUspIfzbiZN27xiZkYWJfU7BwBSnAmkQcDOwC6tP2/dyuTAupqyELiJNL/+Da1cR1ped25gXdJAcgAg5WkDYBvSYGAr0pwEG5AmKtoQmB5X2irNB24H7mrldtJMe3eSTvy34/v3UjYcAEhlWoM0ENgEWBtYZyWZwvDritNIC9usRbryMJqFpAVx5rT+/CjwWOvPs1p5cIU/zyJNtPNILVsmSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIy8/8BuZZuLjPFXowAAAAASUVORK5CYII=";
2607
+
2608
+ var img$2 = "data:image/png;base64,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";
2609
+
2610
+ var img$1 = "data:image/png;base64,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";
2611
+
2612
+ var img = "data:image/png;base64,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";
2613
+
2579
2614
  /**
2580
2615
  * Gets the MIME type for preview rendering
2581
2616
  */
@@ -2685,7 +2720,7 @@ const FilePreviewModal = ({ file, isOpen, onClose, }) => {
2685
2720
  const fileName = file instanceof File ? file.name : file.split('/').pop() || 'file';
2686
2721
  const canPreview = canPreviewInWeb(file);
2687
2722
  console.log('Modal rendering - fileName:', fileName, 'canPreview:', canPreview, 'previewUrl:', previewUrl, 'previewType:', previewType);
2688
- const modalContent = (jsxRuntimeExports.jsx("div", { className: "fixed inset-0 z-[9999] flex items-center justify-center bg-black bg-opacity-75", onClick: onClose, style: { position: 'fixed', zIndex: 9999 }, children: jsxRuntimeExports.jsxs("div", { className: "relative bg-white rounded-lg shadow-xl max-w-7xl max-h-[90vh] w-full m-4 flex flex-col", onClick: (e) => e.stopPropagation(), children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between p-4 border-b border-gray-200", children: [jsxRuntimeExports.jsx("h3", { className: "text-lg font-semibold text-gray-900 truncate flex-1 mr-4", children: fileName }), jsxRuntimeExports.jsx("button", { onClick: onClose, className: "text-gray-400 hover:text-gray-600 focus:outline-none focus:ring-2 focus:ring-blue-500 rounded p-1", "aria-label": "Close preview", children: jsxRuntimeExports.jsx("svg", { className: "w-6 h-6", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) })] }), jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-auto p-4 bg-gray-50", children: !canPreview ? (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center h-full min-h-[400px]", children: jsxRuntimeExports.jsxs("div", { className: "text-center", children: [jsxRuntimeExports.jsx("svg", { className: "mx-auto h-12 w-12 text-gray-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z" }) }), jsxRuntimeExports.jsx("p", { className: "mt-4 text-sm text-gray-500", children: "Preview not available for this file type" })] }) })) : previewType === 'image' && previewUrl ? (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center h-full min-h-[400px]", children: jsxRuntimeExports.jsx("img", { src: previewUrl, alt: fileName, className: "max-w-full max-h-full object-contain" }) })) : previewType === 'pdf' && previewUrl ? (jsxRuntimeExports.jsx("div", { className: "h-full min-h-[600px]", children: jsxRuntimeExports.jsx("iframe", { src: previewUrl, className: "w-full h-full border-0", title: fileName }) })) : previewType === 'text' && previewUrl ? (jsxRuntimeExports.jsx("div", { className: "bg-white rounded border border-gray-200 p-4 h-full min-h-[400px]", children: jsxRuntimeExports.jsx("pre", { className: "whitespace-pre-wrap break-words text-sm text-gray-800 font-mono overflow-auto h-full", children: jsxRuntimeExports.jsx(TextFilePreview, { url: previewUrl }) }) })) : (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center h-full min-h-[400px]", children: jsxRuntimeExports.jsx("div", { className: "text-center", children: jsxRuntimeExports.jsx("p", { className: "text-sm text-gray-500", children: "Loading preview..." }) }) })) })] }) }));
2723
+ const modalContent = (jsxRuntimeExports.jsx("div", { className: "fixed inset-0 z-[9999] flex items-center justify-center bg-black bg-opacity-75", onClick: onClose, style: { position: 'fixed', zIndex: 9999 }, children: jsxRuntimeExports.jsxs("div", { className: "relative bg-white rounded-lg shadow-xl max-w-7xl max-h-[90vh] w-full m-4 flex flex-col", onClick: (e) => e.stopPropagation(), children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between p-4 border-b border-gray-200", children: [jsxRuntimeExports.jsx("h3", { className: "text-lg font-semibold text-gray-900 truncate flex-1 mr-4", children: fileName }), jsxRuntimeExports.jsx("button", { onClick: onClose, className: "text-gray-400 hover:text-gray-600 focus:outline-none focus:ring-2 focus:ring-blue-500 rounded p-1", "aria-label": "Close preview", children: jsxRuntimeExports.jsx("img", { src: img$c, alt: "Close Preview", className: "w-6 h-6" }) })] }), jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-auto p-4 bg-gray-50", children: !canPreview ? (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center h-full min-h-[400px]", children: jsxRuntimeExports.jsxs("div", { className: "text-center", children: [jsxRuntimeExports.jsx("img", { src: img$b, alt: "Preview not available", className: "w-24 h-24 mx-auto mb-4" }), jsxRuntimeExports.jsx("p", { className: "mt-4 text-sm text-gray-500", children: "Preview not available for this file type" })] }) })) : previewType === 'image' && previewUrl ? (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center h-full min-h-[400px]", children: jsxRuntimeExports.jsx("img", { src: previewUrl, alt: fileName, className: "max-w-full max-h-full object-contain" }) })) : previewType === 'pdf' && previewUrl ? (jsxRuntimeExports.jsx("div", { className: "h-full min-h-[600px]", children: jsxRuntimeExports.jsx("iframe", { src: previewUrl, className: "w-full h-full border-0", title: fileName }) })) : previewType === 'text' && previewUrl ? (jsxRuntimeExports.jsx("div", { className: "bg-white rounded border border-gray-200 p-4 h-full min-h-[400px]", children: jsxRuntimeExports.jsx("pre", { className: "whitespace-pre-wrap break-words text-sm text-gray-800 font-mono overflow-auto h-full", children: jsxRuntimeExports.jsx(TextFilePreview, { url: previewUrl }) }) })) : (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center h-full min-h-[400px]", children: jsxRuntimeExports.jsx("div", { className: "text-center", children: jsxRuntimeExports.jsx("p", { className: "text-sm text-gray-500", children: "Loading preview..." }) }) })) })] }) }));
2689
2724
  // Render modal using portal to ensure it's at the document body level
2690
2725
  if (typeof document !== 'undefined' && document.body) {
2691
2726
  console.log('Rendering modal via portal to document.body');
@@ -2845,10 +2880,6 @@ const deserializeValue = (value) => {
2845
2880
  return value;
2846
2881
  };
2847
2882
 
2848
- var img$1 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGxmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjUtMDktMjRUMTI6Mjc6NDArMDU6MzAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjYtMDEtMDJUMTY6NTA6MDQrMDU6MzAiIHhtcDpNb2RpZnlEYXRlPSIyMDI2LTAxLTAyVDE2OjUwOjA0KzA1OjMwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjljMDI0ZTVhLWJiMWItNDBiMi05NThmLTg5YjExMTE5NGI4MSIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjMzZDZiMTBiLTQzNjYtYTc0Ny1iOTZlLWI4ZTBhZjQxMTkzOCIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjI1M2M1ZmRhLTlkYzctNGQ0MC04Y2E3LThmMTQ2MmU4OWMxNSIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MjUzYzVmZGEtOWRjNy00ZDQwLThjYTctOGYxNDYyZTg5YzE1IiBzdEV2dDp3aGVuPSIyMDI1LTA5LTI0VDEyOjI3OjQwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MDQ5N2Y5YmYtMWZiMi00MWJlLTg5ZGItZGFiMDZmMjEwODE4IiBzdEV2dDp3aGVuPSIyMDI1LTA5LTI0VDEyOjI3OjQwKzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6OWMwMjRlNWEtYmIxYi00MGIyLTk1OGYtODliMTExMTk0YjgxIiBzdEV2dDp3aGVuPSIyMDI2LTAxLTAyVDE2OjUwOjA0KzA1OjMwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7pSLHQ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";
2849
-
2850
- var img = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAkCAYAAACe0YppAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAHqADAAQAAAABAAAAJAAAAAAh0JciAAACrUlEQVRYCcWXPW8TQRCG31kbpNBChGiiRJQ0tFDggPgBtKGhJgEJUGxDFCmJUBKwDUoV2jRxS2NEhZCgAPELKBAhIPFRpKIwUXIe3vFHFJzbs2zWupHWu7e7M8/OenbuVkDReUzoLjbZvGDP/ysiWJQSlpLsiN7HOBp4rco6oBC+Svicz2QWERYULSjh605Q3dvHnk/B138sg1EV1DrjtPVAC9j1eS6NPD5x8lko3rgKch3FfmvbOY2w1a3n89xxlWdsMuvP3UqDPhO2xPLF9NueL3Tbct0dIZ4jJdTh8iH4Irf9H/hQwLZ4edSCs7ltz/Tc4CvWNhka2IwbXDKYZLMDt4Brep61CUFE8Jt26iwj9KbcKGDW7GrDfnGi+csf8zwqoh7MY1nFjhLYBpziKTl3UIDRDthqp5gJ5zENZsrMCXlscQE3DoMO2sJ8wURFr08GBRtAythgZeWIRAVsSDtZBdvqI5QeHamBE7c6yqPKJND/G0sZvIqXmQpmfI57wVrEGI/CFINhIOGCp3lml/mS+B5nwAuWx/iqs5hnDr8ap9ijT7noF+5JPNR0vWAblAqWWVkJLqkFV2rgxK1mVG8ySC4Oss/NqC5j2qfrBdf5RSERrg8c1cBNvYOHsoYfcXAveISvNHpcZIrLxSkm9rXO8SvngZquF2yDTPolVlaCS2rBlRo4cav56fscgvNJ+8wYqDEt3k6aEzfmBVtU82P/Wq+oZiq/pfdQkqf4Fgfw9XnBFtXM1XeZq73nmGPK68871yfUFuMF2yBz9RorK8ElteDiHY2blYI4/ks7xuUCxofNJ2OizfiZZVTW2GGfKJNMkc9cFlUu5k/QRQiOYx9TfHFcMrtkvhWdw2l2fmDnWFCY39i2XWucrOAXb1A5ruKjf26wkfeEXrE71V+iV9IhdJQEvwAAAABJRU5ErkJggg==";
2851
-
2852
2883
  const FileInputWidget = ({ config }) => {
2853
2884
  const { value, error, touched, isEnabled, onChange, onBlur, config: widgetConfig, } = useBaseWidget({ config });
2854
2885
  const { translate, translateConfig } = useWidgetTranslation();
@@ -3043,7 +3074,7 @@ const FileInputWidget = ({ config }) => {
3043
3074
  const fileName = file instanceof File ? file.name : file.split('/').pop() || file;
3044
3075
  const canPreview = canPreviewInWeb(file);
3045
3076
  console.log('Single file:', fileName, 'canPreview:', canPreview);
3046
- const fileIconElement = (jsxRuntimeExports.jsx("img", { src: img, alt: "File icon", style: {
3077
+ const fileIconElement = (jsxRuntimeExports.jsx("img", { src: img$e, alt: "File icon", style: {
3047
3078
  width: '15px',
3048
3079
  height: '18px',
3049
3080
  aspectRatio: '5/6',
@@ -3065,7 +3096,7 @@ const FileInputWidget = ({ config }) => {
3065
3096
  return (jsxRuntimeExports.jsx("div", { className: "flex flex-wrap gap-2", children: files.map((file, index) => {
3066
3097
  const fileName = file instanceof File ? file.name : file.split('/').pop() || file;
3067
3098
  const canPreview = canPreviewInWeb(file);
3068
- const fileIconElement = (jsxRuntimeExports.jsx("img", { src: img, alt: "File icon", style: {
3099
+ const fileIconElement = (jsxRuntimeExports.jsx("img", { src: img$e, alt: "File icon", style: {
3069
3100
  width: '15px',
3070
3101
  height: '18px',
3071
3102
  aspectRatio: '5/6',
@@ -3107,7 +3138,7 @@ const FileInputWidget = ({ config }) => {
3107
3138
  fontWeight: 400,
3108
3139
  lineHeight: '24px',
3109
3140
  textAlign: 'left'
3110
- }, children: translate('common.uploadFile') || 'Upload File' }), jsxRuntimeExports.jsx("img", { src: img$1, alt: "Upload", style: {
3141
+ }, children: translate('common.uploadFile') || 'Upload File' }), jsxRuntimeExports.jsx("img", { src: img$d, alt: "Upload", style: {
3111
3142
  width: '18px',
3112
3143
  height: '18px',
3113
3144
  aspectRatio: '1/1',
@@ -3218,6 +3249,60 @@ const namespaceSectionConfig = (section, namespace) => {
3218
3249
  return namespaced;
3219
3250
  };
3220
3251
 
3252
+ const collectWidgets = (panels) => {
3253
+ let widgets = [];
3254
+ panels.forEach((panel) => {
3255
+ if (panel.widgets) {
3256
+ widgets = [...widgets, ...panel.widgets];
3257
+ }
3258
+ if (panel.panels) {
3259
+ widgets = [...widgets, ...collectWidgets(panel.panels)];
3260
+ }
3261
+ });
3262
+ return widgets;
3263
+ };
3264
+ const sectionValidate = (section, currentSchemaData, dispatch) => {
3265
+ const allWidgets = collectWidgets(section.panels);
3266
+ let isValid = true;
3267
+ for (const widget of allWidgets) {
3268
+ const isVisible = shouldShowWidget(widget['widget-data-options'], currentSchemaData);
3269
+ if (!isVisible)
3270
+ continue;
3271
+ const widgetId = widget['widget-id'];
3272
+ const value = getWidgetValue(currentSchemaData, widget['widget-data-path'], widgetId);
3273
+ const errors = validateWidget(value, widget['widget-data-validation'], widget['widget-required']);
3274
+ if (errors.length > 0) {
3275
+ isValid = false;
3276
+ dispatch(setTouched({ widgetId, touched: true }));
3277
+ dispatch(setError({ widgetId, errors }));
3278
+ }
3279
+ else {
3280
+ dispatch(setTouched({ widgetId, touched: false }));
3281
+ dispatch(setError({ widgetId, errors: [] }));
3282
+ }
3283
+ }
3284
+ // Supporting Documents
3285
+ section['section-supporting-documents']?.forEach((doc, index) => {
3286
+ const widgetId = `supporting-doc-${section['section-id']}-${index}`;
3287
+ if (doc['document-required']) {
3288
+ const file = getValueByPath(currentSchemaData, doc['document-data-path']);
3289
+ if (!file) {
3290
+ isValid = false;
3291
+ dispatch(setTouched({ widgetId, touched: true }));
3292
+ dispatch(setError({
3293
+ widgetId,
3294
+ errors: ['This document is required'],
3295
+ }));
3296
+ }
3297
+ else {
3298
+ dispatch(setTouched({ widgetId, touched: false }));
3299
+ dispatch(setError({ widgetId, errors: [] }));
3300
+ }
3301
+ }
3302
+ });
3303
+ return isValid;
3304
+ };
3305
+
3221
3306
  /**
3222
3307
  * Renders a section with its panels
3223
3308
  *
@@ -3226,7 +3311,7 @@ const namespaceSectionConfig = (section, namespace) => {
3226
3311
  * - Panels wrap when they exceed available width
3227
3312
  * - Sections can sit side-by-side if there's space
3228
3313
  */
3229
- const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequestHandler, schemaData, onValueChange, gridColumnSpan, onSectionSave, hideEditButton = false, mode = 'RegistryView', namespace, changeRequestType, showChangeRequestLabel = true, }) => {
3314
+ const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequestHandler, schemaData, onValueChange, gridColumnSpan, onSectionSave, hideEditButton = false, mode = 'RegistryView', namespace, changeRequestType, showChangeRequestLabel = true, dbSectionId, sectionRegisterId, onSectionDirtyChange, sectionIndex, sectionCount, expandedSectionIndex, onExpandSection, onSectionSaveSuccess, onPreviousSection, isDraft, }) => {
3230
3315
  const { translateConfig, translate } = useWidgetTranslation();
3231
3316
  const { schemaData: contextSchemaData, dataSourceRequestHandler: contextDataSourceRequestHandler } = useWidgetContext();
3232
3317
  const store = useStore();
@@ -3285,11 +3370,12 @@ const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequ
3285
3370
  // Try to get from schemaData first, then from Redux store
3286
3371
  // Merge both sources to ensure we get the data
3287
3372
  const dataSource = { ...storeValues, ...currentSchemaData };
3373
+ const recordPath = Object.keys(dataSource)[0];
3288
3374
  const result = {
3289
- createdBy: getValueByPath(dataSource, 'createdBy') || getValueByPath(dataSource, 'created_by'),
3290
- createdDate: getValueByPath(dataSource, 'createdDate') || getValueByPath(dataSource, 'created_date'),
3291
- approvedBy: getValueByPath(dataSource, 'approvedBy') || getValueByPath(dataSource, 'approved_by'),
3292
- approvedDate: getValueByPath(dataSource, 'approvedDate') || getValueByPath(dataSource, 'approved_date'),
3375
+ createdBy: getValueByPath(dataSource, `${recordPath}.created_by`),
3376
+ createdDate: getValueByPath(dataSource, `${recordPath}.created_at`),
3377
+ approvedBy: getValueByPath(dataSource, `${recordPath}.last_approved_by`),
3378
+ approvedDate: getValueByPath(dataSource, `${recordPath}.last_approved_at`),
3293
3379
  };
3294
3380
  return result;
3295
3381
  }, [mode, currentSchemaData, storeValues]);
@@ -3298,6 +3384,21 @@ const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequ
3298
3384
  const sectionId = sectionToRender['section-id'];
3299
3385
  const gridId = `section-panels-${sectionId}`;
3300
3386
  const sectionClassId = `section-${sectionId}`;
3387
+ // IntakeForm mode: accordion expand/collapse state (supports toggle)
3388
+ const [standaloneExpanded, setStandaloneExpanded] = useState(true); // For sectionIndex undefined (standalone use)
3389
+ const isExpandedFromContainer = typeof sectionIndex === 'number' && expandedSectionIndex === sectionIndex;
3390
+ const isExpandedStandalone = sectionIndex === undefined && standaloneExpanded;
3391
+ const isExpanded = mode === 'IntakeForm' && (isExpandedFromContainer || isExpandedStandalone);
3392
+ const handleAccordionToggle = useCallback(() => {
3393
+ if (mode !== 'IntakeForm')
3394
+ return;
3395
+ if (typeof sectionIndex === 'number' && onExpandSection) {
3396
+ onExpandSection(sectionIndex);
3397
+ }
3398
+ else if (sectionIndex === undefined) {
3399
+ setStandaloneExpanded(prev => !prev);
3400
+ }
3401
+ }, [mode, sectionIndex, onExpandSection]);
3301
3402
  // Recursively count all vertical panels, especially those nested inside horizontal panels
3302
3403
  // Typically: horizontal panels at first level contain vertical panels at second level
3303
3404
  // Accounts for panel-column-span: a panel with column-span 3 counts as 3 columns
@@ -3432,13 +3533,15 @@ const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequ
3432
3533
  });
3433
3534
  };
3434
3535
  // Create section with widgets readonly/editable based on edit mode
3536
+ // IntakeForm: editable when isDraft is true or undefined; readonly when isDraft is false. Edit Details never shown.
3537
+ // RegistryView/CRView: use isEditMode (edit overlay flow)
3538
+ const widgetsEditable = mode === 'IntakeForm' ? (isDraft !== false) : isEditMode;
3435
3539
  const editableSection = useMemo(() => {
3436
- // Always apply readonly/editable state based on edit mode
3437
3540
  return {
3438
3541
  ...sectionToRender,
3439
- panels: makePanelsEditable(sectionToRender.panels, isEditMode),
3542
+ panels: makePanelsEditable(sectionToRender.panels, widgetsEditable),
3440
3543
  };
3441
- }, [sectionToRender, isEditMode]);
3544
+ }, [sectionToRender, widgetsEditable]);
3442
3545
  // Handle edit button click
3443
3546
  const handleEdit = () => {
3444
3547
  // Capture height BEFORE entering edit mode to preserve space
@@ -3449,8 +3552,9 @@ const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequ
3449
3552
  setIsEditMode(true);
3450
3553
  };
3451
3554
  // Render the edit section (absolutely positioned duplicate via portal)
3555
+ // IntakeForm never uses this overlay - content is shown inline in accordion
3452
3556
  const renderEditSection = () => {
3453
- if (!isEditMode || !editSectionPosition)
3557
+ if (mode === 'IntakeForm' || !isEditMode || !editSectionPosition)
3454
3558
  return null;
3455
3559
  const editGridId = `${gridId}-edit`;
3456
3560
  return createPortal(jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("style", { children: `
@@ -3508,79 +3612,164 @@ const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequ
3508
3612
  }, children: [sectionToRender['section-title'] && (jsxRuntimeExports.jsx("h2", { className: "text-xl font-semibold mb-4", style: { fontFamily: 'Roboto, sans-serif', marginTop: '35px' }, children: translateConfig(sectionToRender['section-title']) })), jsxRuntimeExports.jsxs("div", { id: editGridId, className: "section-panels", children: [editableSection.panels.map((panel, index) => {
3509
3613
  const isLastPanel = index === editableSection.panels.length - 1;
3510
3614
  return (jsxRuntimeExports.jsx("div", { className: `panel-wrapper ${isLastPanel ? 'last-panel-wrapper' : ''}`, children: jsxRuntimeExports.jsx(PanelRenderer, { panel: panel, dataSourceRequestHandler: dataSourceRequestHandler, schemaData: namespacedSchemaData, onValueChange: onValueChange, isEditMode: true }) }, panel['panel-id'] || `section-panel-${index}`));
3511
- }), hasSupportingDocuments && (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("hr", { className: "my-4 w-full", style: { height: '1px', backgroundColor: '#F2BA1A', border: 'none' } }), jsxRuntimeExports.jsxs("div", { className: "supporting-documents-container", children: [jsxRuntimeExports.jsxs("button", { type: "button", onClick: () => setIsDocumentsExpanded(!isDocumentsExpanded), className: "supporting-documents-title-button w-full flex items-center text-left", children: [jsxRuntimeExports.jsx("span", { className: "font-semibold", style: { fontFamily: 'Roboto, sans-serif', fontSize: '16px' }, children: translate('common.supportedDocuments') || 'Supported Documents' }), jsxRuntimeExports.jsx("svg", { className: `w-5 h-5 text-[#ED7C22] transition-transform ml-2 ${isDocumentsExpanded ? 'rotate-180' : ''}`, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }) })] }), isDocumentsExpanded && (jsxRuntimeExports.jsx("div", { className: "supporting-documents-grid mt-4", children: supportingDocuments.map((doc, index) => {
3615
+ }), hasSupportingDocuments && (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("hr", { className: "my-4 w-full", style: { height: '1px', backgroundColor: '#F2BA1A', border: 'none' } }), jsxRuntimeExports.jsxs("div", { className: "supporting-documents-container", children: [jsxRuntimeExports.jsxs("button", { type: "button", onClick: () => setIsDocumentsExpanded(!isDocumentsExpanded), className: "supporting-documents-title-button w-full flex items-center text-left", children: [jsxRuntimeExports.jsx("span", { className: "font-semibold", style: { fontFamily: 'Roboto, sans-serif', fontSize: '16px' }, children: translate('common.supportedDocuments') || 'Supported Documents' }), jsxRuntimeExports.jsx("img", { src: isDocumentsExpanded ? img$7 : img$6, alt: "Toggle Documents", className: "w-4 h-2.25 transition-transform ml-2" })] }), isDocumentsExpanded && (jsxRuntimeExports.jsx("div", { className: "supporting-documents-grid mt-4", children: supportingDocuments.map((doc, index) => {
3512
3616
  const docConfig = createDocumentWidgetConfig(doc, sectionId, index);
3513
3617
  return (jsxRuntimeExports.jsx("div", { className: "supporting-document-item", children: jsxRuntimeExports.jsx(FileInputWidget, { config: docConfig }) }, `${sectionId}-doc-${index}`));
3514
- }) }))] })] })), jsxRuntimeExports.jsx("hr", { className: "w-full", style: { height: '1px', backgroundColor: '#F2BA1A', border: 'none', marginTop: hasSupportingDocuments ? '20px' : 0, marginBottom: '20px' } }), jsxRuntimeExports.jsx("div", { className: "edit-controls-container", style: { marginBottom: '20px' }, children: jsxRuntimeExports.jsxs("div", { className: "edit-controls-buttons", children: [jsxRuntimeExports.jsx("button", { onClick: handleCancel, className: "bg-white hover:bg-gray-50 text-gray-900 text-sm font-medium px-6 py-2 transition-colors border border-gray-300", style: { fontFamily: 'Roboto, sans-serif', borderRadius: '10px' }, children: translate('common.cancel') || 'Cancel' }), jsxRuntimeExports.jsx("button", { onClick: handleSave, className: "bg-gray-900 hover:bg-gray-800 text-white text-sm font-medium px-6 py-2 transition-colors", style: { fontFamily: 'Roboto, sans-serif', borderRadius: '10px' }, children: translate('common.save') || 'Save' })] }) })] })] })] }), document.body);
3618
+ }) }))] })] })), jsxRuntimeExports.jsx("hr", { className: "w-full", style: { height: '1px', backgroundColor: '#F2BA1A', border: 'none', marginTop: hasSupportingDocuments ? '20px' : 0, marginBottom: '20px' } }), jsxRuntimeExports.jsx("div", { className: "edit-controls-container", style: { marginBottom: '20px' }, children: jsxRuntimeExports.jsxs("div", { className: "edit-controls-buttons", children: [jsxRuntimeExports.jsx("button", { onClick: handleCancel, className: "bg-white hover:bg-gray-50 text-gray-900 text-sm font-medium px-6 py-2 transition-colors border border-gray-300", style: { fontFamily: 'Roboto, sans-serif', borderRadius: '10px' }, children: translate('common.cancel') || 'Cancel' }), jsxRuntimeExports.jsx("button", { onClick: handleSave, disabled: !isDirty, className: "bg-gray-900 hover:bg-gray-800 text-white text-sm font-medium px-6 py-2 transition-colors disabled:opacity-50 disabled:cursor-not-allowed", style: { fontFamily: 'Roboto, sans-serif', borderRadius: '10px' }, children: translate('common.save') || 'Save' })] }) })] })] })] }), document.body);
3515
3619
  };
3516
- const collectWidgets = (panels) => {
3517
- let widgets = [];
3518
- panels.forEach(panel => {
3519
- if (panel.widgets) {
3520
- widgets = [...widgets, ...panel.widgets];
3521
- }
3522
- if (panel.panels) {
3523
- widgets = [...widgets, ...collectWidgets(panel.panels)];
3524
- }
3525
- });
3526
- return widgets;
3527
- };
3528
- const trackSectionChages = (widgets, sourceData, useNamespacedPaths = false) => {
3620
+ const trackSectionChages = (widgets, sourceData, pathPrefix) => {
3621
+ if (!widgets || widgets.length === 0)
3622
+ return [];
3529
3623
  const snapshot = {};
3530
3624
  let hasTable = false;
3531
- const recordId = Object.keys(sourceData)[0];
3625
+ if (!sectionRegisterId)
3626
+ return [];
3627
+ const resolvePath = (path) => (pathPrefix ? `${pathPrefix}.${path}` : path);
3532
3628
  widgets.forEach(widget => {
3533
- const originalDataPath = widget['widget-data-path'];
3534
- if (!originalDataPath)
3629
+ const widgetPath = widget['widget-data-path'];
3630
+ if (!widgetPath)
3535
3631
  return;
3536
- if (widget['widget-type'] === 'table' || widget['widget-type'] === 'simple-table') {
3632
+ if (widget['widget-type'] === 'table' ||
3633
+ widget['widget-type'] === 'simple-table' ||
3634
+ widget['widget'] === 'table') {
3537
3635
  hasTable = true;
3538
3636
  }
3539
- // If namespace was used and we're reading from store, use namespaced paths
3540
- useNamespacedPaths && namespace && originalDataPath
3541
- ? (typeof originalDataPath === 'string'
3542
- ? `${namespace}.${originalDataPath}`
3543
- : Object.fromEntries(Object.entries(originalDataPath).map(([key, path]) => [key, `${namespace}.${path}`])))
3544
- : originalDataPath;
3545
- // Always store snapshot using original paths (for change tracking)
3546
- // Handle multi-path (object) or single path (string)
3547
- if (typeof originalDataPath === 'object') {
3548
- // Multi-path: store each path separately using original paths
3549
- Object.entries(originalDataPath).forEach(([key, path]) => {
3550
- if (typeof path === 'string') {
3551
- // Read from source using namespaced path if needed
3552
- const readPath = useNamespacedPaths && namespace ? `${namespace}.${path}` : path;
3553
- snapshot[path] = getValueByPath(sourceData, readPath);
3637
+ if (typeof widgetPath === 'object') {
3638
+ Object.values(widgetPath).forEach((path) => {
3639
+ if (typeof path === 'string' && path.length > 0) {
3640
+ snapshot[path] = getValueByPath(sourceData, resolvePath(path));
3554
3641
  }
3555
3642
  });
3556
3643
  }
3557
- else if (typeof originalDataPath === 'string') {
3558
- // Read from source using namespaced path if needed
3559
- const readPath = useNamespacedPaths && namespace ? `${namespace}.${originalDataPath}` : originalDataPath;
3560
- snapshot[originalDataPath] = getValueByPath(sourceData, readPath);
3644
+ else if (typeof widgetPath === 'string') {
3645
+ snapshot[widgetPath] = getValueByPath(sourceData, resolvePath(widgetPath));
3561
3646
  }
3562
3647
  });
3563
- if (hasTable === false) {
3648
+ if (!hasTable) {
3564
3649
  const cleanedSnapshot = {};
3565
- Object.entries(snapshot).forEach(([key, value]) => {
3566
- const removedFirstLevelPath = key.includes('.')
3567
- ? key.split('.').slice(1).join('.')
3568
- : key;
3569
- cleanedSnapshot[removedFirstLevelPath] = value;
3650
+ Object.entries(snapshot).forEach(([fullPath, value]) => {
3651
+ const fieldPath = fullPath.includes('.')
3652
+ ? fullPath.split('.').slice(1).join('.')
3653
+ : fullPath;
3654
+ cleanedSnapshot[fieldPath] = value;
3570
3655
  });
3656
+ const sectionData = pathPrefix
3657
+ ? getValueByPath(sourceData, resolvePath(sectionRegisterId))
3658
+ : sourceData[sectionRegisterId];
3571
3659
  return [
3572
- { ...sourceData[recordId],
3660
+ {
3661
+ ...sectionData,
3573
3662
  ...cleanedSnapshot,
3574
- edit_action: "UPDATE"
3575
- }
3663
+ edit_action: "UPDATE",
3664
+ },
3576
3665
  ];
3577
3666
  }
3578
- const recordEntry = Object.entries(snapshot).find(([key, value]) => key.endsWith('.records') && Array.isArray(value));
3579
- return recordEntry ? recordEntry[1] : snapshot;
3667
+ const tableEntry = Object.entries(snapshot).find(([key, value]) => key.endsWith('.records') && Array.isArray(value));
3668
+ return tableEntry ? tableEntry[1] : [];
3580
3669
  };
3581
3670
  // Get original section (without namespace) for building snapshots
3582
3671
  // This ensures we use the original data paths when saving
3583
3672
  const originalSection = section;
3673
+ /** Build a full section snapshot (records + files) for dirty comparison. Works with or without sectionRegisterId (e.g. IntakeForm). */
3674
+ const buildSectionSnapshot = useCallback((sourceData, pathPrefix) => {
3675
+ const sectionWidgets = collectWidgets(originalSection.panels);
3676
+ const resolvePath = (path) => (pathPrefix ? `${pathPrefix}.${path}` : path);
3677
+ let records;
3678
+ const recordsFromTrack = trackSectionChages(sectionWidgets, sourceData, pathPrefix);
3679
+ if (recordsFromTrack.length > 0) {
3680
+ records = recordsFromTrack;
3681
+ }
3682
+ else {
3683
+ // IntakeForm / no sectionRegisterId: build comparable snapshot from widget values
3684
+ const snapshot = {};
3685
+ sectionWidgets.forEach((widget) => {
3686
+ const widgetPath = widget['widget-data-path'];
3687
+ if (!widgetPath)
3688
+ return;
3689
+ if (typeof widgetPath === 'object') {
3690
+ Object.values(widgetPath).forEach((path) => {
3691
+ if (typeof path === 'string' && path.length > 0) {
3692
+ snapshot[path] = getValueByPath(sourceData, resolvePath(path));
3693
+ }
3694
+ });
3695
+ }
3696
+ else if (typeof widgetPath === 'string') {
3697
+ snapshot[widgetPath] = getValueByPath(sourceData, resolvePath(widgetPath));
3698
+ }
3699
+ });
3700
+ records = [{ ...snapshot }];
3701
+ }
3702
+ const files = [];
3703
+ if (hasSupportingDocuments) {
3704
+ const originalSupportingDocuments = originalSection['section-supporting-documents'] || [];
3705
+ originalSupportingDocuments.forEach((doc) => {
3706
+ const originalDataPath = doc['document-data-path'];
3707
+ const storeDataPath = pathPrefix && originalDataPath
3708
+ ? `${pathPrefix}.${originalDataPath}`
3709
+ : originalDataPath;
3710
+ files.push(getValueByPath(sourceData, storeDataPath));
3711
+ });
3712
+ }
3713
+ return { records, files };
3714
+ }, [originalSection, hasSupportingDocuments]);
3715
+ // Capture baseline when entering edit mode (used for isDirty comparison)
3716
+ const baselineSnapshotRef = useRef(null);
3717
+ // IntakeForm only: increment when baseline is updated after save - forces badge to update (refs don't trigger re-renders)
3718
+ const [intakeFormBaselineTrigger, setIntakeFormBaselineTrigger] = useState(0);
3719
+ // IntakeForm: treat as edit mode for dirty tracking when isDraft. RegistryView: use isEditMode.
3720
+ const effectiveEditModeForDirty = mode === 'IntakeForm' ? (isDraft !== false) : isEditMode;
3721
+ // Compute isDirty: compare current store state to baseline (only when in edit mode)
3722
+ const isDirty = useMemo(() => {
3723
+ if (!effectiveEditModeForDirty)
3724
+ return false;
3725
+ const baseline = baselineSnapshotRef.current;
3726
+ if (!baseline)
3727
+ return false;
3728
+ const currentSnapshot = buildSectionSnapshot(storeValues, namespace);
3729
+ return JSON.stringify(baseline) !== JSON.stringify(currentSnapshot);
3730
+ }, [effectiveEditModeForDirty, storeValues, namespace, buildSectionSnapshot, intakeFormBaselineTrigger]);
3731
+ // Set baseline when entering edit mode; clear when leaving (baseline captured only on entry)
3732
+ useEffect(() => {
3733
+ if (effectiveEditModeForDirty) {
3734
+ const oldSchemaData = schemaData || contextSchemaData || {};
3735
+ if (namespace) {
3736
+ const namespacedSchema = getValueByPath(oldSchemaData, namespace);
3737
+ baselineSnapshotRef.current = namespacedSchema
3738
+ ? buildSectionSnapshot(namespacedSchema)
3739
+ : buildSectionSnapshot(oldSchemaData);
3740
+ }
3741
+ else {
3742
+ baselineSnapshotRef.current = buildSectionSnapshot(oldSchemaData);
3743
+ }
3744
+ }
3745
+ else {
3746
+ baselineSnapshotRef.current = null;
3747
+ onSectionDirtyChange?.(sectionId, false);
3748
+ }
3749
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- baseline must be captured only when effectiveEditModeForDirty toggles
3750
+ }, [effectiveEditModeForDirty]);
3751
+ // Notify parent when isDirty changes (only while in edit mode)
3752
+ useEffect(() => {
3753
+ if (effectiveEditModeForDirty && onSectionDirtyChange) {
3754
+ onSectionDirtyChange(sectionId, isDirty);
3755
+ }
3756
+ }, [effectiveEditModeForDirty, isDirty, sectionId, onSectionDirtyChange]);
3757
+ // IntakeForm only: section status badge (Saved / Modified and not saved / no badge when pristine)
3758
+ const intakeFormSectionStatus = useMemo(() => {
3759
+ if (mode !== 'IntakeForm')
3760
+ return null;
3761
+ const hasValue = (v) => v !== undefined && v !== null && (typeof v !== 'string' || v.trim().length > 0);
3762
+ const currentSnapshot = buildSectionSnapshot(storeValues, namespace);
3763
+ const record = currentSnapshot.records?.[0];
3764
+ const hasData = record &&
3765
+ typeof record === 'object' &&
3766
+ Object.values(record).some((v) => hasValue(v));
3767
+ if (isDirty)
3768
+ return 'modified';
3769
+ if (hasData)
3770
+ return 'saved';
3771
+ return null;
3772
+ }, [mode, isDirty, storeValues, namespace, buildSectionSnapshot]);
3584
3773
  // Handle save button click
3585
3774
  const handleSave = async () => {
3586
3775
  if (!store || !onSectionSave) {
@@ -3593,10 +3782,14 @@ const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequ
3593
3782
  const sectionWidgets = collectWidgets(originalSection.panels);
3594
3783
  const currentState = store.getState().widget;
3595
3784
  const currentSchemaData = currentState.values || {};
3785
+ const isSectionValid = sectionValidate(originalSection, currentSchemaData, dispatch);
3786
+ if (!isSectionValid) {
3787
+ return;
3788
+ }
3596
3789
  // schema data before section change
3597
3790
  const oldSchemaData = schemaData || contextSchemaData;
3598
- // schema data after section change
3599
- const newSchemaData = trackSectionChages(sectionWidgets, currentSchemaData);
3791
+ // schema data after section change (use namespace when store has namespaced paths)
3792
+ const newSchemaData = trackSectionChages(sectionWidgets, currentSchemaData, namespace);
3600
3793
  // Include supporting documents in the snapshot if they exist
3601
3794
  const sectionFiles = [];
3602
3795
  if (hasSupportingDocuments) {
@@ -3614,7 +3807,8 @@ const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequ
3614
3807
  if (JSON.stringify(oldSchemaData) !== JSON.stringify(newSchemaData)) {
3615
3808
  try {
3616
3809
  const sectionchanges = {
3617
- section_id: originalSection['section-id'],
3810
+ section_id: dbSectionId,
3811
+ section_register_id: sectionRegisterId,
3618
3812
  records: [...newSchemaData],
3619
3813
  files: [...sectionFiles]
3620
3814
  };
@@ -3626,6 +3820,51 @@ const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequ
3626
3820
  }
3627
3821
  setIsEditMode(false);
3628
3822
  };
3823
+ // IntakeForm: save section then collapse current and expand next (or stay on final section)
3824
+ const handleIntakeFormSave = useCallback(async () => {
3825
+ if (!store || !onSectionSave || sectionIndex === undefined)
3826
+ return;
3827
+ const sectionWidgets = collectWidgets(originalSection.panels);
3828
+ const currentState = store.getState().widget;
3829
+ const currentSchemaData = currentState.values || {};
3830
+ const isSectionValid = sectionValidate(originalSection, currentSchemaData, dispatch);
3831
+ if (!isSectionValid)
3832
+ return;
3833
+ const oldSchemaData = schemaData || contextSchemaData;
3834
+ const newSchemaData = trackSectionChages(sectionWidgets, currentSchemaData, namespace);
3835
+ const sectionFiles = [];
3836
+ if (hasSupportingDocuments) {
3837
+ const originalSupportingDocuments = originalSection['section-supporting-documents'] || [];
3838
+ originalSupportingDocuments.forEach((doc) => {
3839
+ const originalDataPath = doc['document-data-path'];
3840
+ const storeDataPath = namespace && originalDataPath
3841
+ ? `${namespace}.${originalDataPath}`
3842
+ : originalDataPath;
3843
+ sectionFiles.push(getValueByPath(currentSchemaData, storeDataPath));
3844
+ });
3845
+ }
3846
+ if (JSON.stringify(oldSchemaData) !== JSON.stringify(newSchemaData)) {
3847
+ try {
3848
+ await onSectionSave({
3849
+ section_id: dbSectionId,
3850
+ section_register_id: sectionRegisterId,
3851
+ records: [...newSchemaData],
3852
+ files: [...sectionFiles],
3853
+ });
3854
+ }
3855
+ catch (error) {
3856
+ console.error('Section Changes Save failed', error);
3857
+ return;
3858
+ }
3859
+ }
3860
+ // IntakeForm only: update baseline so section is no longer dirty; trigger re-render so badge updates to "Saved"
3861
+ if (mode === 'IntakeForm') {
3862
+ baselineSnapshotRef.current = buildSectionSnapshot(currentSchemaData, namespace);
3863
+ setIntakeFormBaselineTrigger((prev) => prev + 1);
3864
+ }
3865
+ onSectionDirtyChange?.(sectionId, false);
3866
+ onSectionSaveSuccess?.(sectionIndex);
3867
+ }, [store, onSectionSave, onSectionSaveSuccess, sectionIndex, originalSection, schemaData, contextSchemaData, namespace, hasSupportingDocuments, dbSectionId, sectionRegisterId, dispatch, buildSectionSnapshot, sectionId, onSectionDirtyChange, mode]);
3629
3868
  // Handle cancel button click
3630
3869
  const handleCancel = () => {
3631
3870
  // Revert values in store to original schema data
@@ -3844,12 +4083,57 @@ const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequ
3844
4083
  align-items: center;
3845
4084
  gap: 0.5rem;
3846
4085
  }
3847
- ` }), jsxRuntimeExports.jsxs("div", { ref: sectionRef, className: `section ${sectionClassId} px-4 sm:px-6 lg:px-8 border-2 border-white `, "data-section-id": sectionId, "data-has-table": hasTableWidget ? 'true' : 'false', "data-has-explicit-span": hasExplicitTableSpan ? 'true' : 'false', "data-edit-mode": isEditMode ? 'true' : 'false', "data-column-span": columnSpan, "data-change-request-type": changeRequestType, style: {
4086
+
4087
+ /* IntakeForm accordion */
4088
+ .${sectionClassId}.intake-form-accordion-item {
4089
+ border-color: #E5E7EB;
4090
+ transition: box-shadow 0.2s ease, border-color 0.2s ease;
4091
+ }
4092
+ .${sectionClassId}.intake-form-accordion-item:hover {
4093
+ border-color: #D1D5DB;
4094
+ }
4095
+ .${sectionClassId}.intake-form-accordion-item .intake-form-accordion-header {
4096
+ transition: opacity 0.2s ease, background-color 0.2s ease;
4097
+ }
4098
+ .${sectionClassId}.intake-form-accordion-item .intake-form-accordion-header:hover {
4099
+ opacity: 0.85;
4100
+ }
4101
+ .${sectionClassId}.intake-form-accordion-item .intake-form-accordion-header:focus-visible {
4102
+ outline: 2px solid #F2BA1A;
4103
+ outline-offset: 2px;
4104
+ }
4105
+ .${sectionClassId}.intake-form-accordion-item .intake-form-accordion-content {
4106
+ padding-top: 8px;
4107
+ padding-bottom: 4px;
4108
+ }
4109
+ .${sectionClassId}.intake-form-accordion-item .intake-form-edit-controls {
4110
+ justify-content: flex-end;
4111
+ width: 100%;
4112
+ }
4113
+ .${sectionClassId}.intake-form-accordion-item .intake-form-prev-btn {
4114
+ color: rgba(0, 0, 0, 0.5) !important;
4115
+ }
4116
+ .${sectionClassId}.intake-form-accordion-item .intake-form-prev-btn:disabled {
4117
+ color: rgba(0, 0, 0, 0.3) !important;
4118
+ }
4119
+ .${sectionClassId}.intake-form-accordion-item .intake-form-prev-btn:hover:not(:disabled) {
4120
+ background-color: #F3F4F6;
4121
+ border-color: #FD8C3E;
4122
+ }
4123
+ .${sectionClassId}.intake-form-accordion-item .intake-form-save-btn:hover:not(:disabled) {
4124
+ background-color: #E5E7EB;
4125
+ }
4126
+ ` }), jsxRuntimeExports.jsx("div", { ref: sectionRef, className: `section ${sectionClassId} px-4 sm:px-6 lg:px-8 border-2 border-white ${mode === 'IntakeForm' ? 'intake-form-accordion-item' : ''}`, "data-section-id": sectionId, "data-has-table": hasTableWidget ? 'true' : 'false', "data-has-explicit-span": hasExplicitTableSpan ? 'true' : 'false', "data-edit-mode": isEditMode ? 'true' : 'false', "data-section-dirty": isEditMode && isDirty ? 'true' : 'false', "data-column-span": columnSpan, "data-change-request-type": changeRequestType, "data-intake-form-expanded": mode === 'IntakeForm' ? (isExpanded ? 'true' : 'false') : undefined, style: {
3848
4127
  gridColumn: `span ${columnSpan}`,
3849
4128
  width: '100%',
3850
4129
  borderRadius: '10px',
3851
- backgroundColor: changeRequestType === 'old' ? '#F9F9F9' : '#FFFFFF', // Faded background for old change requests
3852
- opacity: changeRequestType === 'old' ? 0.95 : 1, // Slight opacity reduction for old sections
4130
+ // IntakeForm expanded: edit-mode colors. Others: normal or faded for old CR
4131
+ ...(mode === 'IntakeForm' && isExpanded
4132
+ ? { backgroundColor: '#F3E6BC', border: '1px dashed #ED7C22' }
4133
+ : {
4134
+ backgroundColor: changeRequestType === 'old' ? '#F9F9F9' : '#FFFFFF',
4135
+ opacity: changeRequestType === 'old' ? 0.95 : 1,
4136
+ }),
3853
4137
  ...(isEditMode && sectionHeight ? {
3854
4138
  height: `${sectionHeight}px`,
3855
4139
  minHeight: `${sectionHeight}px`
@@ -3858,81 +4142,225 @@ const SectionRenderer = ({ section, dataSourceRequestHandler: propDataSourceRequ
3858
4142
  minHeight: 'auto',
3859
4143
  height: 'auto'
3860
4144
  }),
3861
- }, children: [sectionToRender['section-title'] && (jsxRuntimeExports.jsxs("div", { style: {
3862
- marginTop: '35px',
3863
- marginBottom: '16px',
3864
- display: 'flex',
3865
- alignItems: 'center',
3866
- gap: '12px',
3867
- flexWrap: 'wrap',
3868
- }, children: [jsxRuntimeExports.jsx("h2", { className: "text-xl font-semibold", style: { margin: 0 }, children: translateConfig(sectionToRender['section-title']) }), mode === 'CRView' && changeRequestType && showChangeRequestLabel && (jsxRuntimeExports.jsx("span", { style: {
3869
- display: 'inline-flex',
3870
- alignItems: 'center',
3871
- padding: '4px 12px',
3872
- borderRadius: '4px',
3873
- fontSize: '12px',
3874
- fontWeight: 600,
3875
- textTransform: 'uppercase',
3876
- letterSpacing: '0.5px',
3877
- backgroundColor: changeRequestType === 'new' ? '#28a745' : '#ffcccc', // Green for new, faded red for old
3878
- color: changeRequestType === 'new' ? '#FFFFFF' : '#cc0000',
3879
- whiteSpace: 'nowrap',
3880
- boxShadow: changeRequestType === 'new' ? '0 2px 4px rgba(40, 167, 69, 0.3)' : 'none',
3881
- }, children: changeRequestType === 'new' ? 'New' : 'Old' }))] })), jsxRuntimeExports.jsxs("div", { id: gridId, className: "section-panels", style: mode === 'RegistryView' && hideEditButton ? { paddingBottom: '40px' } : {}, children: [editableSection.panels.map((panel, index) => (jsxRuntimeExports.jsx("div", { className: "panel-wrapper", children: jsxRuntimeExports.jsx(PanelRenderer, { panel: panel, dataSourceRequestHandler: dataSourceRequestHandler, schemaData: namespacedSchemaData, onValueChange: onValueChange }) }, panel['panel-id'] || `section-panel-${index}`))), mode === 'CRView' && crViewData && (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("hr", { className: "border-gray-300 w-full", style: { height: '1px', marginTop: '20px', marginBottom: '0px' } }), jsxRuntimeExports.jsxs("div", { className: "cr-view-container", style: {
3882
- marginTop: '20px',
3883
- paddingBottom: '30px',
4145
+ }, children: mode === 'IntakeForm' ? (
4146
+ /* IntakeForm: accordion layout - header always visible, content only when expanded */
4147
+ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsxs("button", { type: "button", id: `intake-form-accordion-header-${sectionId}`, className: "intake-form-accordion-header", onClick: handleAccordionToggle, "aria-expanded": isExpanded, "aria-controls": isExpanded ? `intake-form-accordion-content-${sectionId}` : undefined, style: {
4148
+ width: '100%',
4149
+ display: 'flex',
4150
+ alignItems: 'flex-start',
4151
+ justifyContent: 'space-between',
4152
+ padding: '16px 0',
4153
+ marginTop: '16px',
4154
+ marginBottom: 0,
4155
+ background: 'none',
4156
+ border: 'none',
4157
+ cursor: 'pointer',
4158
+ textAlign: 'left',
4159
+ fontFamily: 'Roboto, sans-serif',
4160
+ }, children: [jsxRuntimeExports.jsxs("div", { style: { flex: 1, display: 'flex', alignItems: 'center', gap: '12px', minWidth: 0 }, children: [jsxRuntimeExports.jsx("h2", { className: "text-xl font-semibold", style: { margin: 0 }, children: sectionToRender['section-title']
4161
+ ? translateConfig(sectionToRender['section-title'])
4162
+ : `Section ${(sectionIndex ?? 0) + 1}` }), intakeFormSectionStatus === 'saved' && (jsxRuntimeExports.jsx("span", { style: {
4163
+ display: 'inline-block',
4164
+ padding: '4px 10px',
4165
+ borderRadius: '9999px',
4166
+ fontSize: '12px',
4167
+ fontWeight: 500,
4168
+ backgroundColor: '#D1FAE5',
4169
+ color: '#047857',
4170
+ }, children: translate('common.sectionSaved') || 'Saved' })), intakeFormSectionStatus === 'modified' && (jsxRuntimeExports.jsx("span", { style: {
4171
+ display: 'inline-block',
4172
+ padding: '4px 10px',
4173
+ borderRadius: '9999px',
4174
+ fontSize: '12px',
4175
+ fontWeight: 500,
4176
+ backgroundColor: '#FEE2E2',
4177
+ color: '#B91C1C',
4178
+ }, children: translate('common.sectionModified') || 'Modified and not saved' }))] }), jsxRuntimeExports.jsx("img", { src: isExpanded ? img$7 : img$6, alt: isExpanded ? 'Collapse' : 'Expand', className: "w-5 h-5 transition-transform", style: { flexShrink: 0, marginLeft: '12px' }, "aria-hidden": true })] }), isExpanded && (jsxRuntimeExports.jsx("div", { id: `intake-form-accordion-content-${sectionId}`, className: "intake-form-accordion-content", role: "region", "aria-labelledby": `intake-form-accordion-header-${sectionId}`, children: jsxRuntimeExports.jsxs("div", { id: gridId, className: "section-panels", style: { paddingTop: '8px' }, children: [editableSection.panels.map((panel, index) => (jsxRuntimeExports.jsx("div", { className: "panel-wrapper", children: jsxRuntimeExports.jsx(PanelRenderer, { panel: panel, dataSourceRequestHandler: dataSourceRequestHandler, schemaData: namespacedSchemaData, onValueChange: onValueChange }) }, panel['panel-id'] || `section-panel-${index}`))), hasSupportingDocuments && (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("hr", { className: "my-4 w-full", style: { height: '1px', backgroundColor: '#E5E7EB', border: 'none' } }), jsxRuntimeExports.jsxs("div", { className: "supporting-documents-container", children: [jsxRuntimeExports.jsx("span", { className: "font-semibold", style: { fontFamily: 'Roboto, sans-serif', fontSize: '16px' }, children: translate('common.supportedDocuments') || 'Supported Documents' }), jsxRuntimeExports.jsx("div", { className: "supporting-documents-grid mt-4", children: supportingDocuments.map((doc, docIndex) => {
4179
+ const docConfig = createDocumentWidgetConfig(doc, sectionId, docIndex);
4180
+ return (jsxRuntimeExports.jsx("div", { className: "supporting-document-item", children: jsxRuntimeExports.jsx(FileInputWidget, { config: docConfig }) }, `${sectionId}-doc-${docIndex}`));
4181
+ }) })] })] })), jsxRuntimeExports.jsx("hr", { className: "my-4 w-full", style: { height: '1px', backgroundColor: '#E5E7EB', border: 'none' } }), jsxRuntimeExports.jsxs("div", { className: "intake-form-edit-controls", style: {
3884
4182
  display: 'flex',
3885
- justifyContent: 'space-between',
4183
+ justifyContent: 'flex-end',
3886
4184
  alignItems: 'center',
4185
+ gap: '12px',
4186
+ marginBottom: '20px',
3887
4187
  width: '100%',
3888
- }, children: [jsxRuntimeExports.jsxs("div", { className: "created-by-section", style: {
3889
- display: 'flex',
4188
+ }, children: [jsxRuntimeExports.jsxs("button", { type: "button", onClick: () => onPreviousSection?.(sectionIndex), disabled: sectionIndex === 0, className: "intake-form-prev-btn", style: {
4189
+ fontFamily: 'Roboto, sans-serif',
4190
+ fontSize: '14px',
4191
+ fontWeight: 400,
4192
+ padding: '8px 24px',
4193
+ borderRadius: '10px',
4194
+ border: '1px solid #FD8C3E',
4195
+ background: '#F3F4F6',
4196
+ color: sectionIndex === 0 ? 'rgba(0, 0, 0, 0.3)' : 'rgba(0, 0, 0, 0.5)',
4197
+ cursor: sectionIndex === 0 ? 'not-allowed' : 'pointer',
4198
+ display: 'inline-flex',
3890
4199
  alignItems: 'center',
3891
- gap: '6px',
3892
- flex: 1,
3893
- }, children: [jsxRuntimeExports.jsx("span", { style: {
3894
- fontFamily: 'Roboto, sans-serif',
3895
- fontSize: '14px',
3896
- color: '#000000',
3897
- fontWeight: 'normal',
3898
- }, children: "Created by" }), jsxRuntimeExports.jsxs("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsxRuntimeExports.jsx("path", { d: "M8 8C9.47276 8 10.6667 6.80609 10.6667 5.33333C10.6667 3.86058 9.47276 2.66667 8 2.66667C6.52724 2.66667 5.33333 3.86058 5.33333 5.33333C5.33333 6.80609 6.52724 8 8 8Z", fill: "#ED7C22" }), jsxRuntimeExports.jsx("path", { d: "M8 9.33333C5.42267 9.33333 3.33333 11.4227 3.33333 14H12.6667C12.6667 11.4227 10.5773 9.33333 8 9.33333Z", fill: "#ED7C22" })] }), crViewData?.createdBy && (jsxRuntimeExports.jsx("span", { style: {
3899
- fontFamily: 'Roboto, sans-serif',
3900
- fontSize: '14px',
3901
- color: '#000000',
3902
- fontWeight: 'normal',
3903
- }, children: crViewData.createdBy })), jsxRuntimeExports.jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { marginLeft: '6px' }, children: jsxRuntimeExports.jsx("path", { d: "M12.6667 2.66667H12V2C12 1.63181 11.7015 1.33333 11.3333 1.33333C10.9651 1.33333 10.6667 1.63181 10.6667 2V2.66667H5.33333V2C5.33333 1.63181 5.03486 1.33333 4.66667 1.33333C4.29848 1.33333 4 1.63181 4 2V2.66667H3.33333C2.59695 2.66667 2 3.26362 2 4V13.3333C2 14.0697 2.59695 14.6667 3.33333 14.6667H12.6667C13.403 14.6667 14 14.0697 14 13.3333V4C14 3.26362 13.403 2.66667 12.6667 2.66667ZM12.6667 13.3333H3.33333V6.66667H12.6667V13.3333Z", fill: "#ED7C22" }) }), crViewData?.createdDate && (jsxRuntimeExports.jsx("span", { style: {
3904
- fontFamily: 'Roboto, sans-serif',
3905
- fontSize: '14px',
3906
- color: '#000000',
3907
- fontWeight: 'normal',
3908
- }, children: crViewData.createdDate }))] }), jsxRuntimeExports.jsxs("div", { className: "approved-by-section", style: {
3909
- display: 'flex',
4200
+ gap: '8px',
4201
+ }, children: [jsxRuntimeExports.jsx("img", { src: img$5, alt: "", "aria-hidden": true, style: { width: '14px', height: '14px', opacity: sectionIndex === 0 ? 0.5 : 0.5 } }), translate('common.previous') || 'Prev'] }), jsxRuntimeExports.jsxs("button", { type: "button", onClick: handleIntakeFormSave, disabled: isDraft === false, className: "intake-form-save-btn", style: {
4202
+ fontFamily: 'Roboto, sans-serif',
4203
+ fontSize: '14px',
4204
+ fontWeight: 400,
4205
+ padding: '8px 24px',
4206
+ borderRadius: '10px',
4207
+ border: '1px solid #FD8C3E',
4208
+ background: isDraft === false ? '#9CA3AF' : '#F3F4F6',
4209
+ color: isDraft === false ? 'rgba(0, 0, 0, 0.3)' : 'rgba(0, 0, 0, 0.5)',
4210
+ cursor: isDraft === false ? 'not-allowed' : 'pointer',
4211
+ display: 'inline-flex',
3910
4212
  alignItems: 'center',
3911
- gap: '6px',
3912
- flex: 1,
3913
- justifyContent: 'flex-end',
3914
- }, children: [jsxRuntimeExports.jsx("span", { style: {
3915
- fontFamily: 'Roboto, sans-serif',
3916
- fontSize: '14px',
3917
- color: '#000000',
3918
- fontWeight: 'normal',
3919
- }, children: "Approved by" }), jsxRuntimeExports.jsxs("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [jsxRuntimeExports.jsx("path", { d: "M8 8C9.47276 8 10.6667 6.80609 10.6667 5.33333C10.6667 3.86058 9.47276 2.66667 8 2.66667C6.52724 2.66667 5.33333 3.86058 5.33333 5.33333C5.33333 6.80609 6.52724 8 8 8Z", fill: "#ED7C22" }), jsxRuntimeExports.jsx("path", { d: "M8 9.33333C5.42267 9.33333 3.33333 11.4227 3.33333 14H12.6667C12.6667 11.4227 10.5773 9.33333 8 9.33333Z", fill: "#ED7C22" })] }), crViewData?.approvedBy && (jsxRuntimeExports.jsx("span", { style: {
3920
- fontFamily: 'Roboto, sans-serif',
3921
- fontSize: '14px',
3922
- color: '#000000',
3923
- fontWeight: 'normal',
3924
- }, children: crViewData.approvedBy })), jsxRuntimeExports.jsx("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", style: { marginLeft: '6px' }, children: jsxRuntimeExports.jsx("path", { d: "M12.6667 2.66667H12V2C12 1.63181 11.7015 1.33333 11.3333 1.33333C10.9651 1.33333 10.6667 1.63181 10.6667 2V2.66667H5.33333V2C5.33333 1.63181 5.03486 1.33333 4.66667 1.33333C4.29848 1.33333 4 1.63181 4 2V2.66667H3.33333C2.59695 2.66667 2 3.26362 2 4V13.3333C2 14.0697 2.59695 14.6667 3.33333 14.6667H12.6667C13.403 14.6667 14 14.0697 14 13.3333V4C14 3.26362 13.403 2.66667 12.6667 2.66667ZM12.6667 13.3333H3.33333V6.66667H12.6667V13.3333Z", fill: "#ED7C22" }) }), crViewData?.approvedDate && (jsxRuntimeExports.jsx("span", { style: {
3925
- fontFamily: 'Roboto, sans-serif',
3926
- fontSize: '14px',
3927
- color: '#000000',
3928
- fontWeight: 'normal',
3929
- }, children: crViewData.approvedDate }))] })] })] })), mode === 'RegistryView' && !hideEditButton && (jsxRuntimeExports.jsx("hr", { className: "border-gray-300 w-full", style: { height: '1px', marginTop: !isEditMode ? '20px' : 0, marginBottom: '14px' } })), mode === 'RegistryView' && !isEditMode && !hideEditButton && (jsxRuntimeExports.jsx("div", { className: "flex justify-center items-center", style: { marginBottom: '20px' }, children: jsxRuntimeExports.jsxs("button", { onClick: handleEdit, className: "font-normal inline-flex items-center gap-2 bg-transparent border-0 p-0 cursor-pointer hover:opacity-80", style: {
3930
- fontFamily: 'Roboto, sans-serif',
3931
- fontSize: '16px',
3932
- color: 'rgba(0, 0, 0, 0.50)'
3933
- }, children: ["Edit Details", jsxRuntimeExports.jsx("span", { children: "\u2192" })] }) }))] })] })] }));
4213
+ gap: '8px',
4214
+ }, children: [translate('common.save') || 'Save', jsxRuntimeExports.jsx("img", { src: img$4, alt: "", "aria-hidden": true, style: { width: '14px', height: '14px' } })] })] })] }) }))] })) : (
4215
+ /* RegistryView / CRView: standard layout */
4216
+ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [sectionToRender['section-title'] && (jsxRuntimeExports.jsxs("div", { style: {
4217
+ marginTop: '35px',
4218
+ marginBottom: '16px',
4219
+ display: 'flex',
4220
+ alignItems: 'center',
4221
+ gap: '12px',
4222
+ flexWrap: 'wrap',
4223
+ }, children: [jsxRuntimeExports.jsx("h2", { className: "text-xl font-semibold", style: { margin: 0 }, children: translateConfig(sectionToRender['section-title']) }), mode === 'CRView' && changeRequestType && showChangeRequestLabel && (jsxRuntimeExports.jsx("span", { style: {
4224
+ display: 'inline-flex',
4225
+ alignItems: 'center',
4226
+ padding: '4px 12px',
4227
+ borderRadius: '4px',
4228
+ fontSize: '12px',
4229
+ fontWeight: 600,
4230
+ textTransform: 'uppercase',
4231
+ letterSpacing: '0.5px',
4232
+ backgroundColor: changeRequestType === 'new' ? '#28a745' : '#ffcccc', // Green for new, faded red for old
4233
+ color: changeRequestType === 'new' ? '#FFFFFF' : '#cc0000',
4234
+ whiteSpace: 'nowrap',
4235
+ boxShadow: changeRequestType === 'new' ? '0 2px 4px rgba(40, 167, 69, 0.3)' : 'none',
4236
+ }, children: changeRequestType === 'new' ? 'New' : 'Old' }))] })), jsxRuntimeExports.jsxs("div", { id: gridId, className: "section-panels", style: mode === 'RegistryView' && hideEditButton ? { paddingBottom: '40px' } : {}, children: [editableSection.panels.map((panel, index) => (jsxRuntimeExports.jsx("div", { className: "panel-wrapper", children: jsxRuntimeExports.jsx(PanelRenderer, { panel: panel, dataSourceRequestHandler: dataSourceRequestHandler, schemaData: namespacedSchemaData, onValueChange: onValueChange }) }, panel['panel-id'] || `section-panel-${index}`))), mode === 'CRView' && crViewData && (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("hr", { className: "border-gray-300 w-full", style: { height: '1px', marginTop: '20px', marginBottom: '0px' } }), jsxRuntimeExports.jsxs("div", { className: "cr-view-container", style: {
4237
+ marginTop: '20px',
4238
+ paddingBottom: '30px',
4239
+ display: 'flex',
4240
+ justifyContent: 'space-between',
4241
+ alignItems: 'center',
4242
+ width: '100%',
4243
+ }, children: [jsxRuntimeExports.jsxs("div", { className: "created-by-section", style: {
4244
+ display: 'flex',
4245
+ alignItems: 'center',
4246
+ gap: '6px',
4247
+ flex: 1,
4248
+ }, children: [jsxRuntimeExports.jsx("span", { style: {
4249
+ fontFamily: 'Roboto, sans-serif',
4250
+ fontSize: '14px',
4251
+ color: '#000000',
4252
+ fontWeight: 'normal',
4253
+ }, children: "Created by" }), jsxRuntimeExports.jsx("img", { src: img$a, alt: "Person", width: "16", height: "16", style: { filter: 'brightness(0) saturate(100%) invert(56%) sepia(45%) saturate(5139%) hue-rotate(348deg) brightness(96%) contrast(92%)' } }), crViewData?.createdBy && (jsxRuntimeExports.jsx("span", { style: {
4254
+ fontFamily: 'Roboto, sans-serif',
4255
+ fontSize: '14px',
4256
+ color: '#000000',
4257
+ fontWeight: 'normal',
4258
+ }, children: crViewData.createdBy })), jsxRuntimeExports.jsx("img", { src: img$9, alt: "Calendar", width: "16", height: "16", style: { marginLeft: '6px' } }), crViewData?.createdDate && (jsxRuntimeExports.jsx("span", { style: {
4259
+ fontFamily: 'Roboto, sans-serif',
4260
+ fontSize: '14px',
4261
+ color: '#000000',
4262
+ fontWeight: 'normal',
4263
+ }, children: crViewData.createdDate }))] }), jsxRuntimeExports.jsxs("div", { className: "approved-by-section", style: {
4264
+ display: 'flex',
4265
+ alignItems: 'center',
4266
+ gap: '6px',
4267
+ flex: 1,
4268
+ justifyContent: 'flex-end',
4269
+ }, children: [jsxRuntimeExports.jsx("span", { style: {
4270
+ fontFamily: 'Roboto, sans-serif',
4271
+ fontSize: '14px',
4272
+ color: '#000000',
4273
+ fontWeight: 'normal',
4274
+ }, children: "Approved by" }), jsxRuntimeExports.jsx("img", { src: img$a, alt: "Person", width: "16", height: "16", style: { filter: 'brightness(0) saturate(100%) invert(56%) sepia(45%) saturate(5139%) hue-rotate(348deg) brightness(96%) contrast(92%)' } }), crViewData?.approvedBy && (jsxRuntimeExports.jsx("span", { style: {
4275
+ fontFamily: 'Roboto, sans-serif',
4276
+ fontSize: '14px',
4277
+ color: '#000000',
4278
+ fontWeight: 'normal',
4279
+ }, children: crViewData.approvedBy })), jsxRuntimeExports.jsx("img", { src: img$9, alt: "Calendar", width: "16", height: "16", style: { marginLeft: '6px' } }), crViewData?.approvedDate && (jsxRuntimeExports.jsx("span", { style: {
4280
+ fontFamily: 'Roboto, sans-serif',
4281
+ fontSize: '14px',
4282
+ color: '#000000',
4283
+ fontWeight: 'normal',
4284
+ }, children: crViewData.approvedDate }))] })] })] })), mode === 'RegistryView' && !hideEditButton && (jsxRuntimeExports.jsx("hr", { className: "border-gray-300 w-full", style: { height: '1px', marginTop: !isEditMode ? '20px' : 0, marginBottom: '14px' } })), mode === 'RegistryView' && !isEditMode && !hideEditButton && (jsxRuntimeExports.jsx("div", { className: "flex justify-center items-center", style: { marginBottom: '20px' }, children: jsxRuntimeExports.jsxs("button", { onClick: handleEdit, className: "font-normal inline-flex items-center gap-2 bg-transparent border-0 p-0 cursor-pointer hover:opacity-80", style: {
4285
+ fontFamily: 'Roboto, sans-serif',
4286
+ fontSize: '16px',
4287
+ color: 'rgba(0, 0, 0, 0.50)'
4288
+ }, children: ["Edit Details", jsxRuntimeExports.jsx("img", { src: img$8, alt: "right-arrow", className: "w-3.5 h-3.5 brightness-0 opacity-50" })] }) }))] })] })) })] }));
3934
4289
  };
3935
4290
 
4291
+ /**
4292
+ * Build SectionChanges from section config and current store values.
4293
+ * Works for intake forms (no sectionRegisterId) and edit flows (with sectionRegisterId).
4294
+ */
4295
+ function buildSectionChanges(section, storeValues, namespace, options) {
4296
+ const sectionWidgets = collectWidgets(section.panels);
4297
+ const resolvePath = (path) => (namespace ? `${namespace}.${path}` : path);
4298
+ const snapshot = {};
4299
+ let hasTable = false;
4300
+ sectionWidgets.forEach((widget) => {
4301
+ const widgetPath = widget['widget-data-path'];
4302
+ if (!widgetPath)
4303
+ return;
4304
+ const widgetType = widget['widget-type'];
4305
+ if (widgetType === 'table' ||
4306
+ widgetType === 'simple-table' ||
4307
+ widget.widget === 'table') {
4308
+ hasTable = true;
4309
+ }
4310
+ if (typeof widgetPath === 'object') {
4311
+ Object.values(widgetPath).forEach((path) => {
4312
+ if (typeof path === 'string' && path.length > 0) {
4313
+ snapshot[path] = getValueByPath(storeValues, resolvePath(path));
4314
+ }
4315
+ });
4316
+ }
4317
+ else if (typeof widgetPath === 'string') {
4318
+ snapshot[widgetPath] = getValueByPath(storeValues, resolvePath(widgetPath));
4319
+ }
4320
+ });
4321
+ let records;
4322
+ if (!hasTable) {
4323
+ const cleanedSnapshot = {};
4324
+ Object.entries(snapshot).forEach(([fullPath, value]) => {
4325
+ const fieldPath = fullPath.includes('.')
4326
+ ? fullPath.split('.').slice(1).join('.')
4327
+ : fullPath;
4328
+ cleanedSnapshot[fieldPath] = value;
4329
+ });
4330
+ const { sectionRegisterId } = {};
4331
+ const sectionData = sectionRegisterId && namespace
4332
+ ? getValueByPath(storeValues, `${namespace}.${sectionRegisterId}`) || {}
4333
+ : (sectionRegisterId
4334
+ ? storeValues[sectionRegisterId]
4335
+ : {}) || {};
4336
+ records = [
4337
+ {
4338
+ ...sectionData,
4339
+ ...cleanedSnapshot,
4340
+ ...(sectionRegisterId ? { edit_action: 'UPDATE' } : {}),
4341
+ },
4342
+ ];
4343
+ }
4344
+ else {
4345
+ const tableEntry = Object.entries(snapshot).find(([key, value]) => key.endsWith('.records') && Array.isArray(value));
4346
+ records = tableEntry ? tableEntry[1] : [];
4347
+ }
4348
+ const files = [];
4349
+ const supportingDocs = section['section-supporting-documents'] || [];
4350
+ supportingDocs.forEach((doc) => {
4351
+ const path = doc['document-data-path'];
4352
+ if (path) {
4353
+ files.push(getValueByPath(storeValues, resolvePath(path)));
4354
+ }
4355
+ });
4356
+ return {
4357
+ section_id: options?.dbSectionId ?? section['section-id'],
4358
+ section_register_id: options?.sectionRegisterId,
4359
+ records,
4360
+ files: files.length > 0 ? files : undefined,
4361
+ };
4362
+ }
4363
+
3936
4364
  /**
3937
4365
  * Recursively check if a panel contains a table widget
3938
4366
  */
@@ -4014,10 +4442,121 @@ const countVerticalPanels = (panels) => {
4014
4442
  * - All sections align to the same grid, ensuring right-side alignment
4015
4443
  * - Handles nested structure: multiple horizontal panels, each with multiple vertical panels
4016
4444
  */
4017
- const SectionsContainer = ({ sections, dataSourceRequestHandler: propDataSourceRequestHandler, schemaData, onValueChange, className = '', onSectionSave, hideEditButton = false, mode = 'RegistryView', namespace, }) => {
4445
+ const SectionsContainer = ({ sections, dataSourceRequestHandler: propDataSourceRequestHandler, schemaData, onValueChange, className = '', onSectionSave, hideEditButton = false, mode = 'RegistryView', isDraft, namespace, onSectionDirtyChange, onFormReady, }) => {
4446
+ const store = useStore();
4447
+ const dispatch = useDispatch();
4448
+ useSelector((state) => state.widget?.values || {});
4018
4449
  // Get dataSourceRequestHandler from context if not provided as prop
4019
- const { dataSourceRequestHandler: contextDataSourceRequestHandler } = useWidgetContext();
4450
+ const { dataSourceRequestHandler: contextDataSourceRequestHandler, schemaData: contextSchemaData } = useWidgetContext();
4020
4451
  const dataSourceRequestHandler = propDataSourceRequestHandler || contextDataSourceRequestHandler;
4452
+ // IntakeForm mode: accordion state - which section is expanded (null = none; first expanded by default)
4453
+ const [expandedSectionIndex, setExpandedSectionIndex] = useState(0);
4454
+ const safeSections = sections ?? [];
4455
+ const prevSectionsLengthRef = useRef(safeSections.length);
4456
+ // Track dirty (unsaved changes) per section for form handle validation
4457
+ const sectionDirtyMapRef = useRef({});
4458
+ const handleSectionDirtyChange = useCallback((sectionId, isDirty) => {
4459
+ sectionDirtyMapRef.current = { ...sectionDirtyMapRef.current, [sectionId]: isDirty };
4460
+ onSectionDirtyChange?.(sectionId, isDirty);
4461
+ }, [onSectionDirtyChange]);
4462
+ // Toggle: click expanded section to collapse; click collapsed section to expand
4463
+ const handleExpandSection = useCallback((index) => {
4464
+ setExpandedSectionIndex(prev => (prev === index ? null : index));
4465
+ }, []);
4466
+ // IntakeForm mode: called after section save - collapse current, expand next
4467
+ const handleSectionSaveSuccess = useCallback((index) => {
4468
+ if (index + 1 < safeSections.length) {
4469
+ setExpandedSectionIndex(index + 1);
4470
+ }
4471
+ // Last section: stay expanded (no action)
4472
+ }, [safeSections.length]);
4473
+ // IntakeForm mode: called when Previous clicked - collapse current, expand previous
4474
+ const handlePreviousSection = useCallback((index) => {
4475
+ if (index > 0) {
4476
+ setExpandedSectionIndex(index - 1);
4477
+ }
4478
+ }, []);
4479
+ // Reset/init expanded section when sections change or first load (e.g. async form load)
4480
+ useEffect(() => {
4481
+ if (mode !== 'IntakeForm')
4482
+ return;
4483
+ const currentLength = safeSections.length;
4484
+ const prevLength = prevSectionsLengthRef.current;
4485
+ // Clamp when sections shrink or invalid index
4486
+ if (currentLength > 0 && expandedSectionIndex !== null && expandedSectionIndex >= currentLength) {
4487
+ setExpandedSectionIndex(0);
4488
+ }
4489
+ // When sections first load (0 -> N), ensure first section is expanded
4490
+ if (prevLength === 0 && currentLength > 0) {
4491
+ setExpandedSectionIndex(0);
4492
+ }
4493
+ prevSectionsLengthRef.current = currentLength;
4494
+ }, [mode, safeSections.length, expandedSectionIndex]);
4495
+ const UNSAVED_CHANGES_ERROR = 'Unsaved changes detected. Please save all sections before submitting.';
4496
+ // Form handle for onFormReady - allows host to validate and get all section data from its own Submit button
4497
+ const formHandle = useMemo(() => {
4498
+ const getValues = () => store.getState().widget?.values || {};
4499
+ const getNamespace = (section, index) => namespace
4500
+ ? typeof namespace === 'string'
4501
+ ? namespace
4502
+ : namespace(section['section-id'], index)
4503
+ : undefined;
4504
+ const checkNoUnsavedChanges = () => {
4505
+ const hasDirty = Object.values(sectionDirtyMapRef.current).some(Boolean);
4506
+ if (hasDirty) {
4507
+ throw new Error(UNSAVED_CHANGES_ERROR);
4508
+ }
4509
+ };
4510
+ return {
4511
+ validate: async () => {
4512
+ checkNoUnsavedChanges();
4513
+ const values = getValues();
4514
+ let allValid = true;
4515
+ for (let i = 0; i < safeSections.length; i++) {
4516
+ const section = safeSections[i];
4517
+ const ns = getNamespace(section, i);
4518
+ const sectionToValidate = ns ? namespaceSectionConfig(section, ns) : section;
4519
+ const valid = sectionValidate(sectionToValidate, values, dispatch);
4520
+ if (!valid)
4521
+ allValid = false;
4522
+ }
4523
+ return allValid;
4524
+ },
4525
+ getFormData: () => getValues(),
4526
+ validateAndGetData: async () => {
4527
+ checkNoUnsavedChanges();
4528
+ const values = getValues();
4529
+ const results = [];
4530
+ for (let i = 0; i < safeSections.length; i++) {
4531
+ const section = safeSections[i];
4532
+ const ns = getNamespace(section, i);
4533
+ const sectionToValidate = ns ? namespaceSectionConfig(section, ns) : section;
4534
+ const valid = sectionValidate(sectionToValidate, values, dispatch);
4535
+ if (!valid) {
4536
+ throw new Error('Validation failed');
4537
+ }
4538
+ results.push(buildSectionChanges(section, values, ns));
4539
+ }
4540
+ return results;
4541
+ },
4542
+ getStructuredData: () => {
4543
+ const values = getValues();
4544
+ const results = [];
4545
+ for (let i = 0; i < safeSections.length; i++) {
4546
+ const section = safeSections[i];
4547
+ const ns = getNamespace(section, i);
4548
+ results.push(buildSectionChanges(section, values, ns));
4549
+ }
4550
+ return results;
4551
+ },
4552
+ };
4553
+ }, [store, dispatch, safeSections, namespace]);
4554
+ // Call onFormReady when form is ready (sections loaded)
4555
+ useEffect(() => {
4556
+ if (onFormReady && safeSections.length > 0) {
4557
+ onFormReady(formHandle);
4558
+ }
4559
+ }, [onFormReady, formHandle, safeSections.length]);
4021
4560
  // Warn if dataSourceRequestHandler is missing
4022
4561
  useEffect(() => {
4023
4562
  if (!dataSourceRequestHandler) {
@@ -4029,7 +4568,7 @@ const SectionsContainer = ({ sections, dataSourceRequestHandler: propDataSourceR
4029
4568
  // Find the maximum number of vertical panels across all sections
4030
4569
  // This determines the grid size (minimum 3 columns)
4031
4570
  // Also account for table widgets and their explicit column spans
4032
- const maxVerticalPanels = Math.max(...sections.map(section => {
4571
+ const maxVerticalPanels = Math.max(...safeSections.map(section => {
4033
4572
  const panelCount = countVerticalPanels(section.panels);
4034
4573
  const tableWidgetSpan = getTableWidgetColumnSpan(section.panels);
4035
4574
  // Use explicit table widget span if specified, otherwise use default logic
@@ -4067,14 +4606,38 @@ const SectionsContainer = ({ sections, dataSourceRequestHandler: propDataSourceR
4067
4606
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
4068
4607
  }
4069
4608
  }
4070
- ` }), jsxRuntimeExports.jsx("div", { id: containerId, className: `sections-container ${className}`, children: sections.map((section, index) => {
4609
+
4610
+ /* IntakeForm mode: vertical accordion list instead of grid */
4611
+ #${containerId}.sections-container-intake-form {
4612
+ display: flex;
4613
+ flex-direction: column;
4614
+ gap: 0.75rem;
4615
+ grid-template-columns: unset;
4616
+ }
4617
+ #${containerId}.sections-container-intake-form > .section {
4618
+ grid-column: unset;
4619
+ width: 100%;
4620
+ }
4621
+ ` }), jsxRuntimeExports.jsx("div", { id: containerId, className: `sections-container ${className}${mode === 'IntakeForm' ? ' sections-container-intake-form' : ''}`, children: safeSections.map((section, index) => {
4071
4622
  // Determine namespace for this section
4072
4623
  const sectionNamespace = namespace
4073
4624
  ? (typeof namespace === 'string' ? namespace : namespace(section['section-id'], index))
4074
4625
  : undefined;
4626
+ // IntakeForm mode: pass accordion state and handlers
4627
+ const intakeFormProps = mode === 'IntakeForm'
4628
+ ? {
4629
+ sectionIndex: index,
4630
+ sectionCount: safeSections.length,
4631
+ expandedSectionIndex,
4632
+ onExpandSection: handleExpandSection,
4633
+ onSectionSaveSuccess: handleSectionSaveSuccess,
4634
+ onPreviousSection: handlePreviousSection,
4635
+ isDraft,
4636
+ }
4637
+ : {};
4075
4638
  // Check if section has explicit column span
4076
4639
  if (section['section-column-span']) {
4077
- return (jsxRuntimeExports.jsx(SectionRenderer, { section: section, dataSourceRequestHandler: dataSourceRequestHandler, schemaData: schemaData, onValueChange: onValueChange, gridColumnSpan: section['section-column-span'], onSectionSave: onSectionSave, hideEditButton: hideEditButton, mode: mode, namespace: sectionNamespace }, section['section-id']));
4640
+ return (jsxRuntimeExports.jsx(SectionRenderer, { section: section, dataSourceRequestHandler: dataSourceRequestHandler, schemaData: schemaData, onValueChange: onValueChange, gridColumnSpan: section['section-column-span'], onSectionSave: onSectionSave, hideEditButton: hideEditButton, mode: mode, namespace: sectionNamespace, onSectionDirtyChange: handleSectionDirtyChange, ...intakeFormProps }, section['section-id']));
4078
4641
  }
4079
4642
  const verticalPanelsCount = countVerticalPanels(section.panels);
4080
4643
  const tableWidgetColumnSpan = getTableWidgetColumnSpan(section.panels);
@@ -4085,7 +4648,7 @@ const SectionsContainer = ({ sections, dataSourceRequestHandler: propDataSourceR
4085
4648
  const columnSpan = tableWidgetColumnSpan !== null
4086
4649
  ? tableWidgetColumnSpan
4087
4650
  : (containsTable ? Math.max(verticalPanelsCount, 2) : verticalPanelsCount);
4088
- return (jsxRuntimeExports.jsx(SectionRenderer, { section: section, dataSourceRequestHandler: dataSourceRequestHandler, schemaData: schemaData, onValueChange: onValueChange, gridColumnSpan: columnSpan, onSectionSave: onSectionSave, hideEditButton: hideEditButton, mode: mode, namespace: sectionNamespace }, section['section-id']));
4651
+ return (jsxRuntimeExports.jsx(SectionRenderer, { section: section, dataSourceRequestHandler: dataSourceRequestHandler, schemaData: schemaData, onValueChange: onValueChange, gridColumnSpan: columnSpan, onSectionSave: onSectionSave, hideEditButton: hideEditButton, mode: mode, namespace: sectionNamespace, onSectionDirtyChange: handleSectionDirtyChange, ...intakeFormProps }, section['section-id']));
4089
4652
  }) })] }));
4090
4653
  };
4091
4654
 
@@ -4525,19 +5088,7 @@ const JSONEditorPanel = ({ section, onChange, onReset, context = 'section', }) =
4525
5088
  }, onMouseLeave: (e) => {
4526
5089
  e.currentTarget.style.background = 'white';
4527
5090
  e.currentTarget.style.borderColor = '#ddd';
4528
- }, title: "Reset to original JSON", children: [jsxRuntimeExports.jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [jsxRuntimeExports.jsx("path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" }), jsxRuntimeExports.jsx("path", { d: "M21 3v5h-5" }), jsxRuntimeExports.jsx("path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16" }), jsxRuntimeExports.jsx("path", { d: "M3 21v-5h5" })] }), "Reset"] }), jsxRuntimeExports.jsxs("button", { onClick: () => setShowPreview(true), style: {
4529
- padding: '6px 12px',
4530
- border: '1px solid #ddd',
4531
- borderRadius: '10px',
4532
- background: '#f3f3f3',
4533
- color: '#666',
4534
- cursor: 'pointer',
4535
- display: 'flex',
4536
- alignItems: 'center',
4537
- gap: '6px',
4538
- fontSize: '12px',
4539
- fontWeight: 500,
4540
- }, title: "Preview Section", children: [jsxRuntimeExports.jsxs("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [jsxRuntimeExports.jsx("path", { d: "M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z" }), jsxRuntimeExports.jsx("circle", { cx: "12", cy: "12", r: "3" })] }), "Preview"] }), jsxRuntimeExports.jsx("span", { style: {
5091
+ }, title: "Reset to original JSON", children: [jsxRuntimeExports.jsx("img", { src: img$3, alt: "Reset", className: "w-3.5 h-3.5 grayscale opacity-70" }), "Reset"] }), jsxRuntimeExports.jsxs("button", { onClick: () => setShowPreview(true), className: "flex items-center gap-2 px-6 py-1.5 bg-[#4A90E2] hover:bg-[#357ABD] text-[#000000] font-bold rounded-full transition-all shadow-sm", title: "Preview Section", children: [jsxRuntimeExports.jsx("span", { className: "text-[14px]", children: "Preview" }), jsxRuntimeExports.jsx("img", { src: img$2, alt: "Preview", className: "w-3 h-3.5" })] }), jsxRuntimeExports.jsx("span", { style: {
4541
5092
  fontSize: '12px',
4542
5093
  color: !rawJsonView ? '#007bff' : '#6c757d',
4543
5094
  fontWeight: !rawJsonView ? 600 : 400,
@@ -5377,7 +5928,7 @@ const VisualBuilderPanel = ({ section, selectedNode, onSelectNode, onSectionChan
5377
5928
  justifyContent: 'center',
5378
5929
  width: '32px',
5379
5930
  height: '32px',
5380
- }, title: isMaximized ? 'Minimize' : 'Maximize', children: isMaximized ? (jsxRuntimeExports.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: jsxRuntimeExports.jsx("path", { d: "M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3" }) })) : (jsxRuntimeExports.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: jsxRuntimeExports.jsx("path", { d: "M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3" }) })) }))] })] }), jsxRuntimeExports.jsxs("div", { style: {
5931
+ }, title: isMaximized ? 'Minimize' : 'Maximize', children: isMaximized ? (jsxRuntimeExports.jsx("img", { src: img, alt: "Minimize", width: "16", height: "16" })) : (jsxRuntimeExports.jsx("img", { src: img$1, alt: "Maximize", width: "16", height: "16" })) }))] })] }), jsxRuntimeExports.jsxs("div", { style: {
5381
5932
  flex: 1,
5382
5933
  display: 'flex',
5383
5934
  overflow: 'hidden',
@@ -8185,10 +8736,11 @@ const ProfileWidget = ({ config }) => {
8185
8736
  flex-shrink: 0;
8186
8737
  }
8187
8738
 
8188
- .${widgetClassId} .profile-avatar-placeholder svg {
8189
- width: ${imageSize * 0.6}px;
8190
- height: ${imageSize * 0.6}px;
8191
- color: #9ca3af;
8739
+ .${widgetClassId} .profile-avatar-placeholder img {
8740
+ width: 100%;
8741
+ height: 100%;
8742
+ border-radius: 8px;
8743
+ object-fit: cover;
8192
8744
  }
8193
8745
 
8194
8746
  .${widgetClassId} .profile-info {
@@ -8234,7 +8786,7 @@ const ProfileWidget = ({ config }) => {
8234
8786
  if (placeholder) {
8235
8787
  placeholder.style.display = 'flex';
8236
8788
  }
8237
- } })) : null, jsxRuntimeExports.jsx("div", { className: "profile-avatar-placeholder", style: { display: imageUrl ? 'none' : 'flex' }, children: jsxRuntimeExports.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", strokeWidth: 1.5, children: jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15.75 6a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0zM4.501 20.118a7.5 7.5 0 0114.998 0A17.933 17.933 0 0112 21c-2.796 0-5.307-.576-7.499-1.882z" }) }) })] }), jsxRuntimeExports.jsxs("div", { className: "profile-info", children: [displayName && (jsxRuntimeExports.jsx("div", { className: "profile-name", children: displayName })), idValue && (jsxRuntimeExports.jsxs("div", { className: "profile-id", children: [showIdLabel && (jsxRuntimeExports.jsx("span", { className: "profile-id-label", children: "ID :" })), jsxRuntimeExports.jsx("span", { className: "profile-id-value", children: idValue })] }))] })] })] }));
8789
+ } })) : null, jsxRuntimeExports.jsx("div", { className: "profile-avatar-placeholder", style: { display: imageUrl ? 'none' : 'flex' }, children: jsxRuntimeExports.jsx("img", { src: img$f, alt: "Profile Placeholder" }) })] }), jsxRuntimeExports.jsxs("div", { className: "profile-info", children: [displayName && (jsxRuntimeExports.jsx("div", { className: "profile-name", children: displayName })), idValue && (jsxRuntimeExports.jsxs("div", { className: "profile-id", children: [showIdLabel && (jsxRuntimeExports.jsx("span", { className: "profile-id-label", children: "ID :" })), jsxRuntimeExports.jsx("span", { className: "profile-id-value", children: idValue })] }))] })] })] }));
8238
8790
  };
8239
8791
 
8240
8792
  const TextAreaWidget = ({ config }) => {