@axdspub/axiom-ui-forms 0.3.3 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/library/axiom-ui-forms.d.ts +56 -26
  2. package/library/esm/_virtual/index10.js +2 -2
  3. package/library/esm/_virtual/index3.js +2 -2
  4. package/library/esm/_virtual/index4.js +2 -2
  5. package/library/esm/_virtual/index9.js +2 -2
  6. package/library/esm/node_modules/@axdspub/axiom-maps/library/index.js +1 -1
  7. package/library/esm/node_modules/@axdspub/axiom-maps/library/openlayers/index.esm.js +1 -1
  8. package/library/esm/node_modules/@axdspub/axiom-maps/node_modules/@axdspub/axiom-ui-utilities/library/index.js +15219 -0
  9. package/library/esm/node_modules/@axdspub/axiom-maps/node_modules/@axdspub/axiom-ui-utilities/library/index.js.map +1 -0
  10. package/library/esm/node_modules/@axdspub/axiom-ui-utilities/library/index.js +122 -90
  11. package/library/esm/node_modules/@axdspub/axiom-ui-utilities/library/index.js.map +1 -1
  12. package/library/esm/node_modules/@radix-ui/react-icons/dist/react-icons.esm.js +23 -1
  13. package/library/esm/node_modules/@radix-ui/react-icons/dist/react-icons.esm.js.map +1 -1
  14. package/library/esm/node_modules/ajv/dist/compile/validate/index.js +1 -1
  15. package/library/esm/node_modules/ajv/dist/vocabularies/core/index.js +1 -1
  16. package/library/esm/node_modules/ajv/dist/vocabularies/discriminator/index.js +1 -1
  17. package/library/esm/node_modules/ajv/dist/vocabularies/format/index.js +1 -1
  18. package/library/esm/node_modules/lodash-es/_SetCache.js +28 -0
  19. package/library/esm/node_modules/lodash-es/_SetCache.js.map +1 -0
  20. package/library/esm/node_modules/lodash-es/_arrayLikeKeys.js +8 -1
  21. package/library/esm/node_modules/lodash-es/_arrayLikeKeys.js.map +1 -1
  22. package/library/esm/node_modules/lodash-es/_arraySome.js +24 -0
  23. package/library/esm/node_modules/lodash-es/_arraySome.js.map +1 -0
  24. package/library/esm/node_modules/lodash-es/_baseIsEqual.js +29 -0
  25. package/library/esm/node_modules/lodash-es/_baseIsEqual.js.map +1 -0
  26. package/library/esm/node_modules/lodash-es/_baseIsEqualDeep.js +84 -0
  27. package/library/esm/node_modules/lodash-es/_baseIsEqualDeep.js.map +1 -0
  28. package/library/esm/node_modules/lodash-es/_baseKeys.js +31 -0
  29. package/library/esm/node_modules/lodash-es/_baseKeys.js.map +1 -0
  30. package/library/esm/node_modules/lodash-es/_baseTrim.js +20 -0
  31. package/library/esm/node_modules/lodash-es/_baseTrim.js.map +1 -0
  32. package/library/esm/node_modules/lodash-es/_cacheHas.js +14 -0
  33. package/library/esm/node_modules/lodash-es/_cacheHas.js.map +1 -0
  34. package/library/esm/node_modules/lodash-es/_equalArrays.js +85 -0
  35. package/library/esm/node_modules/lodash-es/_equalArrays.js.map +1 -0
  36. package/library/esm/node_modules/lodash-es/_equalByTag.js +113 -0
  37. package/library/esm/node_modules/lodash-es/_equalByTag.js.map +1 -0
  38. package/library/esm/node_modules/lodash-es/_equalObjects.js +91 -0
  39. package/library/esm/node_modules/lodash-es/_equalObjects.js.map +1 -0
  40. package/library/esm/node_modules/lodash-es/_getAllKeys.js +17 -0
  41. package/library/esm/node_modules/lodash-es/_getAllKeys.js.map +1 -0
  42. package/library/esm/node_modules/lodash-es/_mapToArray.js +19 -0
  43. package/library/esm/node_modules/lodash-es/_mapToArray.js.map +1 -0
  44. package/library/esm/node_modules/lodash-es/_nativeKeys.js +7 -0
  45. package/library/esm/node_modules/lodash-es/_nativeKeys.js.map +1 -0
  46. package/library/esm/node_modules/lodash-es/_setCacheAdd.js +20 -0
  47. package/library/esm/node_modules/lodash-es/_setCacheAdd.js.map +1 -0
  48. package/library/esm/node_modules/lodash-es/_setCacheHas.js +15 -0
  49. package/library/esm/node_modules/lodash-es/_setCacheHas.js.map +1 -0
  50. package/library/esm/node_modules/lodash-es/_setToArray.js +19 -0
  51. package/library/esm/node_modules/lodash-es/_setToArray.js.map +1 -0
  52. package/library/esm/node_modules/lodash-es/_trimmedEndIndex.js +20 -0
  53. package/library/esm/node_modules/lodash-es/_trimmedEndIndex.js.map +1 -0
  54. package/library/esm/node_modules/lodash-es/debounce.js +192 -0
  55. package/library/esm/node_modules/lodash-es/debounce.js.map +1 -0
  56. package/library/esm/node_modules/lodash-es/isEqual.js +36 -0
  57. package/library/esm/node_modules/lodash-es/isEqual.js.map +1 -0
  58. package/library/esm/node_modules/lodash-es/keys.js +38 -0
  59. package/library/esm/node_modules/lodash-es/keys.js.map +1 -0
  60. package/library/esm/node_modules/lodash-es/keysIn.js +1 -1
  61. package/library/esm/node_modules/lodash-es/keysIn.js.map +1 -1
  62. package/library/esm/node_modules/lodash-es/now.js +24 -0
  63. package/library/esm/node_modules/lodash-es/now.js.map +1 -0
  64. package/library/esm/node_modules/lodash-es/toNumber.js +65 -0
  65. package/library/esm/node_modules/lodash-es/toNumber.js.map +1 -0
  66. package/library/esm/src/Form/Components/FieldCreator.js +86 -31
  67. package/library/esm/src/Form/Components/FieldCreator.js.map +1 -1
  68. package/library/esm/src/Form/Components/FieldLabel.js +90 -19
  69. package/library/esm/src/Form/Components/FieldLabel.js.map +1 -1
  70. package/library/esm/src/Form/Components/InlineMarkdown.js +4 -0
  71. package/library/esm/src/Form/Components/InlineMarkdown.js.map +1 -1
  72. package/library/esm/src/Form/Components/Inputs/Boolean.js +8 -6
  73. package/library/esm/src/Form/Components/Inputs/Boolean.js.map +1 -1
  74. package/library/esm/src/Form/Components/Inputs/Constant.js +2 -2
  75. package/library/esm/src/Form/Components/Inputs/Constant.js.map +1 -1
  76. package/library/esm/src/Form/Components/Inputs/Date.js +3 -4
  77. package/library/esm/src/Form/Components/Inputs/Date.js.map +1 -1
  78. package/library/esm/src/Form/Components/Inputs/DateTime.js +3 -4
  79. package/library/esm/src/Form/Components/Inputs/DateTime.js.map +1 -1
  80. package/library/esm/src/Form/Components/Inputs/GeoJSON.js +5 -4
  81. package/library/esm/src/Form/Components/Inputs/GeoJSON.js.map +1 -1
  82. package/library/esm/src/Form/Components/Inputs/Geometry.js +20 -11
  83. package/library/esm/src/Form/Components/Inputs/Geometry.js.map +1 -1
  84. package/library/esm/src/Form/Components/Inputs/JSON.js +6 -5
  85. package/library/esm/src/Form/Components/Inputs/JSON.js.map +1 -1
  86. package/library/esm/src/Form/Components/Inputs/LongString.js +5 -5
  87. package/library/esm/src/Form/Components/Inputs/LongString.js.map +1 -1
  88. package/library/esm/src/Form/Components/Inputs/Number.js +49 -35
  89. package/library/esm/src/Form/Components/Inputs/Number.js.map +1 -1
  90. package/library/esm/src/Form/Components/Inputs/Object.js +46 -11
  91. package/library/esm/src/Form/Components/Inputs/Object.js.map +1 -1
  92. package/library/esm/src/Form/Components/Inputs/RadioGroup.js +2 -3
  93. package/library/esm/src/Form/Components/Inputs/RadioGroup.js.map +1 -1
  94. package/library/esm/src/Form/Components/Inputs/SingleSelect.js +2 -3
  95. package/library/esm/src/Form/Components/Inputs/SingleSelect.js.map +1 -1
  96. package/library/esm/src/Form/Components/Inputs/String.js +5 -11
  97. package/library/esm/src/Form/Components/Inputs/String.js.map +1 -1
  98. package/library/esm/src/Form/Components/Inputs/Time.js +2 -3
  99. package/library/esm/src/Form/Components/Inputs/Time.js.map +1 -1
  100. package/library/esm/src/Form/Creator/FormCreator.js +6 -6
  101. package/library/esm/src/Form/Creator/FormCreator.js.map +1 -1
  102. package/library/esm/src/Form/Creator/FormFields.js +1 -1
  103. package/library/esm/src/Form/Creator/FormFields.js.map +1 -1
  104. package/library/esm/src/Form/Creator/FormHeader.js +2 -1
  105. package/library/esm/src/Form/Creator/FormHeader.js.map +1 -1
  106. package/library/esm/src/Form/Creator/FormSection.js +1 -1
  107. package/library/esm/src/Form/Creator/FormSection.js.map +1 -1
  108. package/library/esm/src/Form/Creator/Page.js +7 -2
  109. package/library/esm/src/Form/Creator/Page.js.map +1 -1
  110. package/library/esm/src/Form/Creator/Wizard.js +6 -6
  111. package/library/esm/src/Form/Creator/Wizard.js.map +1 -1
  112. package/library/esm/src/utils/getters.js +36 -6
  113. package/library/esm/src/utils/getters.js.map +1 -1
  114. package/library/esm/src/utils/helpers.js +11 -0
  115. package/library/esm/src/utils/helpers.js.map +1 -0
  116. package/library/esm/src/utils/manipulators.js +30 -11
  117. package/library/esm/src/utils/manipulators.js.map +1 -1
  118. package/library/esm/src/utils/schemaToFormHelpers.js +2 -2
  119. package/library/esm/src/utils/schemaToFormHelpers.js.map +1 -1
  120. package/library/esm/src/utils/validators.js +94 -15
  121. package/library/esm/src/utils/validators.js.map +1 -1
  122. package/package.json +5 -3
@@ -1 +1 @@
1
- {"version":3,"file":"Geometry.js","sources":["../../../../../../src/Form/Components/Inputs/Geometry.tsx"],"sourcesContent":["import { Button, TextArea } from '@axdspub/axiom-ui-utilities'\r\nimport FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { type IGeometryField, type IFieldInputProps, type IFormField } from '@/Form/Creator/FormCreatorTypes' // Added IFormField explicitly\r\n\r\nimport { EMapShape, type IMap, type IMapDrawEvent, type IStyleableMapProps } from '@axdspub/axiom-maps'\r\nimport { OpenLayersMap as Map } from '@axdspub/axiom-maps/library/openlayers'\r\n// Import Geometry type if not already done\r\nimport { type Feature, type GeoJSON, type Geometry } from 'geojson'\r\nimport React, { useEffect, useState, type ReactElement, useCallback } from 'react' // Added useCallback\r\nimport { TrashIcon, SquareIcon, BorderSolidIcon, DrawingPinFilledIcon } from '@radix-ui/react-icons'\r\n\r\n/*\r\nList of coordinates for testing. Around Anchorage.\r\n...\r\n*/\r\n\r\n// --- calculateCenterFromGeoJSON remains the same (zoom ignored for initial load) ---\r\nconst calculateCenterFromGeoJSON = (geo: GeoJSON | undefined, defaultCenter?: { lat: number, lon: number, zoom: number }): { lat: number, lon: number, zoom: number } => {\r\n // If default center is provided, use it\r\n if (defaultCenter) {\r\n return defaultCenter\r\n }\r\n\r\n // If input is Geometry, wrap it temporarily for calculation\r\n let featureCollection: GeoJSON.FeatureCollection | undefined\r\n if (geo && geo.type !== 'FeatureCollection') {\r\n if (geo.type === 'Feature') {\r\n featureCollection = { type: 'FeatureCollection', features: [geo] }\r\n } else if (geo.type === 'Point' || geo.type === 'LineString' || geo.type === 'Polygon' /* add others as needed */) {\r\n featureCollection = { type: 'FeatureCollection', features: [{ type: 'Feature', properties: {}, geometry: geo as Geometry }] }\r\n }\r\n } else if (geo && geo.type === 'FeatureCollection') {\r\n featureCollection = geo\r\n }\r\n\r\n // Default to Anchorage if no valid GeoJSON\r\n const DEFAULT_CENTER = { lat: 61.2181, lon: -149.9003, zoom: 8 }\r\n\r\n if (!featureCollection || !('features' in featureCollection) || !Array.isArray(featureCollection.features) || featureCollection.features.length === 0) {\r\n return DEFAULT_CENTER\r\n }\r\n\r\n const feature = featureCollection.features[0]\r\n if (!feature?.geometry) {\r\n return DEFAULT_CENTER\r\n }\r\n\r\n const geometry = feature.geometry\r\n let coordinates: GeoJSON.Position | GeoJSON.Position[] | GeoJSON.Position[][] = [] // Adjusted type\r\n\r\n switch (geometry.type) {\r\n case 'Polygon':\r\n coordinates = geometry.coordinates[0] // Get first ring (ignore holes)\r\n break\r\n case 'LineString':\r\n coordinates = geometry.coordinates\r\n break\r\n case 'Point':\r\n coordinates = [geometry.coordinates] // Wrap single point for uniform handling\r\n break\r\n default:\r\n return DEFAULT_CENTER\r\n }\r\n\r\n // Flatten coordinates for bounds calculation if needed (e.g., MultiPoint, MultiLineString)\r\n const flatCoordinates = ([] as GeoJSON.Position[]).concat(...coordinates as any)\r\n\r\n if (!Array.isArray(flatCoordinates) || flatCoordinates.length === 0 || !Array.isArray(flatCoordinates[0])) {\r\n // Handle single point case where flatCoordinates might be just [lon, lat]\r\n if (Array.isArray(flatCoordinates) && flatCoordinates.length === 2 && typeof flatCoordinates[0] === 'number') {\r\n const [lon, lat] = flatCoordinates as unknown as GeoJSON.Position\r\n // FIX #2: Return a default zoom even for a point here for centering logic,\r\n // but we won't use this zoom for the initial MAP_CONFIG.\r\n return { lat, lon, zoom: 8 } // Default zoom\r\n }\r\n console.warn('Could not determine coordinates for centering.')\r\n return DEFAULT_CENTER\r\n }\r\n\r\n // Calculate bounds\r\n let minLat = Infinity; let maxLat = -Infinity; let minLon = Infinity; let maxLon = -Infinity\r\n let sumLat = 0; let sumLon = 0; let count = 0\r\n\r\n flatCoordinates.forEach((coord: GeoJSON.Position) => {\r\n if (!Array.isArray(coord) || coord.length < 2) return; const [lon, lat] = coord\r\n minLat = Math.min(minLat, lat); maxLat = Math.max(maxLat, lat); minLon = Math.min(minLon, lon); maxLon = Math.max(maxLon, lon)\r\n sumLat += lat; sumLon += lon; count++\r\n })\r\n\r\n if (count === 0) { return DEFAULT_CENTER }\r\n\r\n const centerLat = sumLat / count; const centerLon = sumLon / count\r\n const latDiff = maxLat - minLat; const lonDiff = maxLon - minLon; const maxDiff = Math.max(latDiff, lonDiff)\r\n\r\n let zoom = 8 // default zoom\r\n if (count === 1 || maxDiff === 0) zoom = 12; else if (maxDiff < 0.1) zoom = 12; else if (maxDiff < 0.5) zoom = 10\r\n else if (maxDiff < 1) zoom = 9; else if (maxDiff < 2) zoom = 8; else if (maxDiff < 5) zoom = 7; else zoom = 6\r\n\r\n return { lat: centerLat, lon: centerLon, zoom }\r\n}\r\n\r\n// Helper function to determine initial draw type based on settings\r\nconst getInitialDrawType = (field: IFormField): EMapShape => {\r\n const settings = (field as IGeometryField).settings ?? {}\r\n const drawEnabled = settings.drawEnabled !== false\r\n const drawPointEnabled = settings.drawPointEnabled === true && drawEnabled\r\n const drawPathEnabled = settings.drawPathEnabled === true && drawEnabled\r\n const drawPolygonEnabled = settings.drawPolygonEnabled === true && drawEnabled\r\n\r\n if (drawPointEnabled) return EMapShape.point\r\n if (drawPathEnabled) return EMapShape.linestring\r\n if (drawPolygonEnabled) return EMapShape.polygon\r\n return EMapShape.point // Defaulting to Point if none specified\r\n}\r\n\r\nexport const GeometryInput = ({ field, onChange, value }: IFieldInputProps): ReactElement => {\r\n const [map, setMapState] = useState<IMap | undefined>(undefined)\r\n const [error, setError] = useState<string | undefined>(undefined)\r\n const [showGeoJSONInput] = useState<boolean>(false)\r\n\r\n const [geojson, setGeojson] = useState<Feature | undefined>(() => {\r\n if (value && typeof value === 'object' && 'type' in value && value.type !== 'FeatureCollection' && value.type !== 'Feature') {\r\n return { type: 'Feature', properties: {}, geometry: value as Geometry }\r\n }\r\n if (value && typeof value === 'object' && 'type' in value && value.type === 'Feature') { return value as Feature }\r\n return undefined\r\n })\r\n\r\n const geomField = field as IGeometryField\r\n\r\n const drawEnabled = geomField.settings?.drawEnabled !== false\r\n const drawPointEnabled = geomField.settings?.drawPointEnabled === true && drawEnabled\r\n const drawPathEnabled = geomField.settings?.drawPathEnabled === true && drawEnabled\r\n const drawPolygonEnabled = geomField.settings?.drawPolygonEnabled === true && drawEnabled\r\n const showCoordinateInput = geomField.settings?.showCoordinateInput !== false\r\n\r\n const [currentDrawType, setCurrentDrawType] = useState<EMapShape>(() => getInitialDrawType(field))\r\n const [isDrawing, setIsDrawing] = useState<boolean>(!geojson && drawEnabled)\r\n\r\n const initialMapCenter = calculateCenterFromGeoJSON(geojson, geomField.settings?.defaultCenter)\r\n\r\n const MAP_CONFIG: IStyleableMapProps = {\r\n baseLayerKey: 'hybrid',\r\n height: geomField.settings?.height ?? '500px',\r\n width: '100%',\r\n style: { /* ... styles ... */ },\r\n center: { lat: initialMapCenter.lat, lon: initialMapCenter.lon },\r\n zoom: initialMapCenter.zoom,\r\n tools: {\r\n draw: {\r\n shape: currentDrawType,\r\n enabled: drawEnabled && (drawPolygonEnabled || drawPathEnabled || drawPointEnabled)\r\n }\r\n }\r\n }\r\n\r\n // ---- Coordinate Handling ----\r\n const updateCoordinatesFromFeature = useCallback((feature: Feature | undefined): void => {\r\n if (!feature?.geometry) { setCoordinates(''); return }\r\n const geometry = feature.geometry; let newCoords = ''\r\n try {\r\n if (geometry.type === 'Polygon') { newCoords = (geometry.coordinates[0] ?? []).map(pos => `${pos[1]}, ${pos[0]}`).join('\\n') } else if (geometry.type === 'LineString') { newCoords = (geometry.coordinates ?? []).map(pos => `${pos[1]}, ${pos[0]}`).join('\\n') } else if (geometry.type === 'Point') { const coords = geometry.coordinates ?? [NaN, NaN]; if (!isNaN(coords[0]) && !isNaN(coords[1])) { newCoords = `${coords[1]}, ${coords[0]}` } else { newCoords = '' } }\r\n } catch (e) { console.error('Err format coords:', e); newCoords = '' }\r\n setCoordinates(newCoords)\r\n // setShowShapeTypeButtons(shouldShowShapeButtons(newCoords)); // Let coordinate effect handle this\r\n }, [])\r\n\r\n const [coordinates, setCoordinates] = useState<string>(() => {\r\n if (!geojson?.geometry) return ''; let initCoords = ''; const geometry = geojson.geometry\r\n try {\r\n if (geometry.type === 'Polygon') { initCoords = (geometry.coordinates[0] ?? []).map(pos => `${pos[1]}, ${pos[0]}`).join('\\n') } else if (geometry.type === 'LineString') { initCoords = (geometry.coordinates ?? []).map(pos => `${pos[1]}, ${pos[0]}`).join('\\n') } else if (geometry.type === 'Point') { const coords = geometry.coordinates ?? [NaN, NaN]; if (!isNaN(coords[0]) && !isNaN(coords[1])) { initCoords = `${coords[1]}, ${coords[0]}` } }\r\n } catch (e) { console.error('Err init coords:', e); initCoords = '' } return initCoords\r\n })\r\n\r\n useEffect(() => {\r\n updateCoordinatesFromFeature(geojson)\r\n }, [geojson, updateCoordinatesFromFeature])\r\n\r\n const createGeoJSONFromCoordinates = (coordString: string, forceType?: EMapShape): Feature | undefined => { /* ... same as last working version ... */\r\n if (!coordString.trim()) { setError(undefined); return undefined }\r\n try {\r\n const points = coordString.split('\\n').map(l => l.trim()).filter(l => l).map(l => { const [lat, lon] = l.split(',').map(c => parseFloat(c.trim())); if (isNaN(lat) || isNaN(lon) || lat < -90 || lat > 90 || lon < -180 || lon > 180) throw Error(`Invalid: ${lat}, ${lon}`); return [lon, lat] })\r\n if (points.length === 0) throw Error('No valid coords')\r\n if (points.length === 1 && drawPointEnabled) return { type: 'Feature', properties: {}, geometry: { type: 'Point', coordinates: points[0] } }\r\n if ((forceType === EMapShape.polygon || (!forceType && points.length >= 3)) && drawPolygonEnabled) { if (points.length > 0 && JSON.stringify(points[0]) !== JSON.stringify(points[points.length - 1])) points.push(points[0]); if (points.length < 4) throw Error('Min 3 unique coords for polygon'); return { type: 'Feature', properties: {}, geometry: { type: 'Polygon', coordinates: [points] } } }\r\n if ((forceType === EMapShape.linestring || (!forceType && points.length >= 2)) && drawPathEnabled) { if (points.length < 2) throw Error('Min 2 coords for path'); return { type: 'Feature', properties: {}, geometry: { type: 'LineString', coordinates: points } } }\r\n setError('Cannot create shape. Check tools/coords.'); return undefined\r\n } catch (e: any) { setError(`Invalid coords/count: ${e.message}. Use \"lat, lon\"`); return undefined }\r\n }\r\n\r\n const shouldShowShapeButtons = (coords: string): boolean => { /* ... same as last working version ... */\r\n const validLinesCount = coords.trim().split('\\n').filter(l => l.trim()).length\r\n return (drawPolygonEnabled || drawPathEnabled) && validLinesCount >= 2\r\n }\r\n const [showShapeTypeButtons, setShowShapeTypeButtons] = useState<boolean>(() => shouldShowShapeButtons(coordinates))\r\n useEffect(() => { setShowShapeTypeButtons(shouldShowShapeButtons(coordinates)) }, [coordinates, drawPolygonEnabled, drawPathEnabled]) // Added effect to update buttons\r\n\r\n // ---- Map Event Handlers & State Updates ----\r\n useEffect(() => { // Map event listeners\r\n if (!map) return\r\n const drawCompleteListener = (e: IMapDrawEvent): void => { /* ... same ... */ const f = e.data?.geojson?.features?.[0]; if (f) { setGeojson(f); setIsDrawing(false); map.disableDraw(currentDrawType) } }\r\n const drawUpdateListener = (e: IMapDrawEvent): void => { /* ... same ... */ const f = e.data?.geojson?.features?.[0]; if (f) { setGeojson(f) } }\r\n map.onDrawComplete(drawCompleteListener); map.onDrawUpdate(drawUpdateListener)\r\n // Cleanup omitted\r\n }, [map, currentDrawType])\r\n\r\n useEffect(() => { // Parent onChange trigger\r\n onChange(geojson?.geometry ?? undefined)\r\n }, [geojson])\r\n\r\n useEffect(() => { // Map drawing/state sync effect\r\n if (!map) return\r\n const correctDrawType = getInitialDrawType(field)\r\n if (currentDrawType !== correctDrawType) {\r\n setCurrentDrawType(correctDrawType)\r\n }\r\n\r\n if (geojson?.geometry) {\r\n map.setDrawGeojson({ type: 'FeatureCollection', features: [geojson] })\r\n map.disableDraw(correctDrawType) // Ensure correct tool is disabled\r\n setIsDrawing(false)\r\n } else {\r\n map.setDrawGeojson({ type: 'FeatureCollection', features: [] })\r\n if (drawEnabled && (drawPointEnabled || drawPathEnabled || drawPolygonEnabled)) {\r\n map.enableDraw(correctDrawType) // Enable the correct initial tool\r\n setIsDrawing(true)\r\n } else {\r\n map.disableDraw(correctDrawType) // Ensure drawing is off if not enabled\r\n setIsDrawing(false)\r\n }\r\n }\r\n }, [map, geojson, drawEnabled, drawPointEnabled, drawPathEnabled, drawPolygonEnabled, currentDrawType, field])\r\n\r\n // ---- Helper Functions ----\r\n const hasValidShape = (feature?: Feature): boolean => !!feature?.geometry\r\n\r\n const clearShape = (): void => { /* ... same ... */\r\n setGeojson(undefined); setCoordinates(''); setShowShapeTypeButtons(false)\r\n if (map && drawEnabled) { map.setDrawGeojson({ type: 'FeatureCollection', features: [] }); const iType = getInitialDrawType(field); setCurrentDrawType(iType); map.enableDraw(iType); setIsDrawing(true) }\r\n }\r\n\r\n const handleDrawTypeChange = (shapeType: EMapShape): void => { /* ... same as minimal fix version ... */\r\n if (map && drawEnabled) {\r\n const isAllowed = (shapeType === EMapShape.point && drawPointEnabled) || (shapeType === EMapShape.linestring && drawPathEnabled) || (shapeType === EMapShape.polygon && drawPolygonEnabled)\r\n if (isAllowed && shapeType !== currentDrawType) { map.disableDraw(currentDrawType); setCurrentDrawType(shapeType); map.enableDraw(shapeType); setIsDrawing(true) }\r\n }\r\n }\r\n\r\n const handleCoordinatesChange = (e: string | undefined): void => { /* ... same as minimal fix version ... */\r\n const newCoords = e ?? ''; setCoordinates(newCoords)\r\n const pointsCount = newCoords.trim().split('\\n').filter(l => l.trim()).length\r\n let intendedType: EMapShape | undefined\r\n if (pointsCount === 1 && drawPointEnabled) intendedType = EMapShape.point\r\n else if (pointsCount >= 3 && drawPolygonEnabled) intendedType = EMapShape.polygon\r\n else if (pointsCount >= 2 && drawPathEnabled) intendedType = EMapShape.linestring\r\n const newFeature = createGeoJSONFromCoordinates(newCoords, intendedType)\r\n if (newFeature) {\r\n setGeojson(newFeature); setError(undefined)\r\n if (map) { map.setDrawGeojson({ type: 'FeatureCollection', features: [] }); map.setDrawGeojson({ type: 'FeatureCollection', features: [newFeature] }); map.disableDraw(currentDrawType); setIsDrawing(false) }\r\n // setShowShapeTypeButtons(shouldShowShapeButtons(newCoords)); // Let effect handle this\r\n } else {\r\n if (!newCoords.trim()) { setGeojson(undefined); if (map && drawEnabled) { map.setDrawGeojson({ type: 'FeatureCollection', features: [] }); map.enableDraw(currentDrawType); setIsDrawing(true) } setShowShapeTypeButtons(false) } else if (!error) { setError('Cannot form valid shape with coords/tools.') }\r\n }\r\n }\r\n\r\n const applyShapeType = (shapeType: EMapShape): void => { /* ... same ... */\r\n const newFeature = createGeoJSONFromCoordinates(coordinates, shapeType)\r\n if (newFeature) { setGeojson(newFeature); setError(undefined) } else if (!error) { setError(`Could not create ${shapeType === EMapShape.polygon ? 'poly' : 'path'}.`) }\r\n }\r\n\r\n // ---- JSX Return (Reverting Button ClassNames and removing disabled) ----\r\n return (\r\n <div>\r\n <FieldLabel {...field} />\r\n <div className=\"relative z-0\">\r\n {drawEnabled && (drawPolygonEnabled || drawPathEnabled || drawPointEnabled) && (\r\n <div className=\"absolute z-20 top-4 right-4 flex flex-col gap-2\">\r\n {/* Point Button - Render only if allowed */}\r\n {drawPointEnabled && (\r\n <div className=\"tooltip-container relative group\">\r\n <Button\r\n onClick={() => { handleDrawTypeChange(EMapShape.point) }}\r\n // Reverted className logic\r\n className={`p-2 rounded-lg shadow-lg ${\r\n currentDrawType === EMapShape.point && isDrawing\r\n ? 'bg-white hover:bg-gray-50 ring-2 ring-yellow-200 shadow-[0_0_10px_rgba(253,224,71,0.5)]'\r\n : 'bg-gray-100 hover:bg-gray-50'\r\n } text-black w-10 h-10 flex items-center justify-center`}\r\n aria-label=\"Draw Point\"\r\n >\r\n <DrawingPinFilledIcon className=\"w-5 h-5\" />\r\n <span className=\"tooltip absolute right-full mr-2 px-2 py-1 bg-gray-800 text-white text-sm rounded whitespace-nowrap opacity-0 group-hover:opacity-100 pointer-events-none\">\r\n Draw Point\r\n </span>\r\n </Button>\r\n </div>\r\n )}\r\n {/* Path Button - Render only if allowed */}\r\n {drawPathEnabled && (\r\n <div className=\"tooltip-container relative group\">\r\n <Button\r\n onClick={() => { handleDrawTypeChange(EMapShape.linestring) }}\r\n // Reverted className logic\r\n className={`p-2 rounded-lg shadow-lg ${\r\n currentDrawType === EMapShape.linestring && isDrawing\r\n ? 'bg-white hover:bg-gray-50 ring-2 ring-yellow-200 shadow-[0_0_10px_rgba(253,224,71,0.5)]'\r\n : 'bg-gray-100 hover:bg-gray-50'\r\n } text-black w-10 h-10 flex items-center justify-center`}\r\n aria-label=\"Draw Path\"\r\n >\r\n <BorderSolidIcon className=\"w-5 h-5\" />\r\n <span className=\"tooltip absolute right-full mr-2 px-2 py-1 bg-gray-800 text-white text-sm rounded whitespace-nowrap opacity-0 group-hover:opacity-100 pointer-events-none\">\r\n Draw Path\r\n </span>\r\n </Button>\r\n </div>\r\n )}\r\n {/* Polygon Button - Render only if allowed */}\r\n {drawPolygonEnabled && (\r\n <div className=\"tooltip-container relative group\">\r\n <Button\r\n onClick={() => { handleDrawTypeChange(EMapShape.polygon) }}\r\n // Reverted className logic\r\n className={`p-2 rounded-lg shadow-lg ${\r\n currentDrawType === EMapShape.polygon && isDrawing\r\n ? 'bg-white hover:bg-gray-50 ring-2 ring-yellow-200 shadow-[0_0_10px_rgba(253,224,71,0.5)]'\r\n : 'bg-gray-100 hover:bg-gray-50'\r\n } text-black w-10 h-10 flex items-center justify-center`}\r\n aria-label=\"Draw Polygon\"\r\n >\r\n <SquareIcon className=\"w-5 h-5 rotate-45\" />\r\n <span className=\"tooltip absolute right-full mr-2 px-2 py-1 bg-gray-800 text-white text-sm rounded whitespace-nowrap opacity-0 group-hover:opacity-100 pointer-events-none\">\r\n Draw Polygon\r\n </span>\r\n </Button>\r\n </div>\r\n )}\r\n {/* Clear Button - Render if shape exists */}\r\n {hasValidShape(geojson) && (\r\n <div className=\"tooltip-container relative group\">\r\n <Button\r\n onClick={clearShape}\r\n className=\"p-2 rounded-lg shadow-lg bg-red-500 hover:bg-red-600 text-white w-10 h-10 flex items-center justify-center\"\r\n aria-label=\"Clear Shape\"\r\n >\r\n <TrashIcon className=\"w-5 h-5\" />\r\n <span className=\"tooltip absolute right-full mr-2 px-2 py-1 bg-gray-800 text-white text-sm rounded whitespace-nowrap opacity-0 group-hover:opacity-100 pointer-events-none\">\r\n Clear Shape\r\n </span>\r\n </Button>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n\r\n {/* Map Component */}\r\n <Map {...MAP_CONFIG} setState={setMapState} />\r\n\r\n {/* Coordinate Input Section */}\r\n {showCoordinateInput && (\r\n <div className=\"mt-4\">\r\n <div className=\"flex justify-between items-center mb-2 flex-wrap gap-y-2\">\r\n <span className=\"text-sm\"> {/* ... label ... */} </span>\r\n {showShapeTypeButtons && (drawPathEnabled || drawPolygonEnabled) && (\r\n <div className=\"flex gap-2\"> {/* ... Create Path/Polygon buttons ... */}\r\n {drawPathEnabled && <Button onClick={() => { applyShapeType(EMapShape.linestring) }} className=\"px-3 py-1 bg-white hover:bg-gray-50 text-black rounded-lg shadow-sm border border-gray-200 text-xs flex items-center gap-1\"><BorderSolidIcon className=\"w-3 h-3\" />Create Path</Button>}\r\n {drawPolygonEnabled && <Button onClick={() => { applyShapeType(EMapShape.polygon) }} className=\"px-3 py-1 bg-white hover:bg-gray-50 text-black rounded-lg shadow-sm border border-gray-200 text-xs flex items-center gap-1\"><SquareIcon className=\"w-3 h-3 rotate-45\" />Create Polygon</Button>}\r\n </div>\r\n )}\r\n </div>\r\n <TextArea error={error} className='min-h-[100px] bg-slate-50 rounded-lg shadow-inner font-mono text-sm' id={`${field.id}-coordinates`} testId={`${field.id}-coordinates`} value={coordinates} onChange={handleCoordinatesChange} placeholder={'...'} aria-label=\"Coordinates Input\" />\r\n {error && <p className=\"text-red-600 text-xs mt-1\">{error}</p>}\r\n </div>\r\n )}\r\n\r\n {/* Debug Output (Optional) */}\r\n {showGeoJSONInput && <TextArea error={error} className='...' id={field.id + '-debug'} testId={field.id + '-debug'} label={<FieldLabel {...field} label=\"Debug GeoJSON Feature State\"/>} value={JSON.stringify(value, null, 2)} />}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default GeometryInput\r\n"],"names":["React","Map"],"mappings":";;;;;;;;AAWA;;;AAGE;AAEF;AACA,IAAM,0BAA0B,GAAG,UAAC,GAAwB,EAAE,aAA0D,EAAA;;;IAEtH,IAAI,aAAa,EAAE;AACjB,QAAA,OAAO,aAAa;;;AAItB,IAAA,IAAI,iBAAwD;IAC5D,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,EAAE;AAC3C,QAAA,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;AAC1B,YAAA,iBAAiB,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE;;aAC7D,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,6BAA6B;YACjH,iBAAiB,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAe,EAAE,CAAC,EAAE;;;SAE1H,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,mBAAmB,EAAE;QAClD,iBAAiB,GAAG,GAAG;;;AAIzB,IAAA,IAAM,cAAc,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE;AAEhE,IAAA,IAAI,CAAC,iBAAiB,IAAI,EAAE,UAAU,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;AACrJ,QAAA,OAAO,cAAc;;IAGvB,IAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7C,IAAI,EAAC,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,MAAA,GAAA,MAAA,GAAA,OAAO,CAAE,QAAQ,CAAA,EAAE;AACtB,QAAA,OAAO,cAAc;;AAGvB,IAAA,IAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ;AACjC,IAAA,IAAI,WAAW,GAAiE,EAAE,CAAA;AAElF,IAAA,QAAQ,QAAQ,CAAC,IAAI;AACnB,QAAA,KAAK,SAAS;YACZ,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;YACrC;AACF,QAAA,KAAK,YAAY;AACf,YAAA,WAAW,GAAG,QAAQ,CAAC,WAAW;YAClC;AACF,QAAA,KAAK,OAAO;YACV,WAAW,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;YACpC;AACF,QAAA;AACE,YAAA,OAAO,cAAc;;;IAIzB,IAAM,eAAe,GAAG,CAAA,EAAC,GAAA,EAAyB,EAAC,MAAM,CAAA,KAAA,CAAA,EAAA,EAAI,WAAkB,CAAC;IAEhF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE;;QAEzG,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,eAAe,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;YACtG,IAAA,EAAA,GAAa,eAA8C,EAA1D,GAAG,QAAA,EAAE,GAAG,QAAkD;;;AAGjE,YAAA,OAAO,EAAE,GAAG,EAAA,GAAA,EAAE,GAAG,EAAA,GAAA,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;;AAE9B,QAAA,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC;AAC9D,QAAA,OAAO,cAAc;;;IAIvB,IAAI,MAAM,GAAG,QAAQ;AAAE,IAAA,IAAI,MAAM,GAAG,CAAC,QAAQ;IAAE,IAAI,MAAM,GAAG,QAAQ;AAAE,IAAA,IAAI,MAAM,GAAG,CAAC,QAAQ;IAC5F,IAAI,MAAM,GAAG,CAAC;IAAE,IAAI,MAAM,GAAG,CAAC;IAAE,IAAI,KAAK,GAAG,CAAC;AAE7C,IAAA,eAAe,CAAC,OAAO,CAAC,UAAC,KAAuB,EAAA;AAC9C,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE;QAAe,IAAA,GAAG,GAAS,KAAK,CAAA,CAAA,CAAd,EAAE,GAAG,GAAI,KAAK,CAAA,CAAA,CAAT;QACtE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;QAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;QAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;QAAE,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;QAC9H,MAAM,IAAI,GAAG;QAAE,MAAM,IAAI,GAAG;AAAE,QAAA,KAAK,EAAE;AACvC,KAAC,CAAC;AAEF,IAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AAAE,QAAA,OAAO,cAAc;;AAExC,IAAA,IAAM,SAAS,GAAG,MAAM,GAAG,KAAK;AAAE,IAAA,IAAM,SAAS,GAAG,MAAM,GAAG,KAAK;AAClE,IAAA,IAAM,OAAO,GAAG,MAAM,GAAG,MAAM;AAAE,IAAA,IAAM,OAAO,GAAG,MAAM,GAAG,MAAM;IAAE,IAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;AAE5G,IAAA,IAAI,IAAI,GAAG,CAAC,CAAA;AACZ,IAAA,IAAI,KAAK,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC;QAAE,IAAI,GAAG,EAAE;SAAO,IAAI,OAAO,GAAG,GAAG;QAAE,IAAI,GAAG,EAAE;SAAO,IAAI,OAAO,GAAG,GAAG;QAAE,IAAI,GAAG,EAAE;SAC5G,IAAI,OAAO,GAAG,CAAC;QAAE,IAAI,GAAG,CAAC;SAAO,IAAI,OAAO,GAAG,CAAC;QAAE,IAAI,GAAG,CAAC;SAAO,IAAI,OAAO,GAAG,CAAC;QAAE,IAAI,GAAG,CAAC;;QAAO,IAAI,GAAG,CAAC;AAE7G,IAAA,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAA,IAAA,EAAE;AACjD,CAAC;AAED;AACA,IAAM,kBAAkB,GAAG,UAAC,KAAiB,EAAA;;IAC3C,IAAM,QAAQ,GAAG,CAAC,EAAA,GAAA,KAAwB,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE;AACzD,IAAA,IAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,KAAK,KAAK;IAClD,IAAM,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,KAAK,IAAI,IAAI,WAAW;IAC1E,IAAM,eAAe,GAAG,QAAQ,CAAC,eAAe,KAAK,IAAI,IAAI,WAAW;IACxE,IAAM,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,KAAK,IAAI,IAAI,WAAW;AAE9E,IAAA,IAAI,gBAAgB;QAAE,OAAO,SAAS,CAAC,KAAK;AAC5C,IAAA,IAAI,eAAe;QAAE,OAAO,SAAS,CAAC,UAAU;AAChD,IAAA,IAAI,kBAAkB;QAAE,OAAO,SAAS,CAAC,OAAO;AAChD,IAAA,OAAO,SAAS,CAAC,KAAK,CAAA;AACxB,CAAC;AAEM,IAAM,aAAa,GAAG,UAAC,EAA4C,EAAA;;AAA1C,IAAA,IAAA,KAAK,WAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA;IAC9C,IAAA,EAAA,GAAqB,QAAQ,CAAmB,SAAS,CAAC,EAAzD,GAAG,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,WAAW,GAAA,EAAA,CAAA,CAAA,CAAyC;IAC1D,IAAA,EAAA,GAAoB,QAAQ,CAAqB,SAAS,CAAC,EAA1D,KAAK,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,CAAA,CAA2C;AAC1D,IAAA,IAAA,gBAAgB,GAAI,QAAQ,CAAU,KAAK,CAAC,GAA5B;IAEjB,IAAA,EAAA,GAAwB,QAAQ,CAAsB,YAAA;QAC1D,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;AAC3H,YAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAiB,EAAE;;AAEzE,QAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;AAAE,YAAA,OAAO,KAAgB;;AAChH,QAAA,OAAO,SAAS;AAClB,KAAC,CAAC,EANK,OAAO,QAAA,EAAE,UAAU,QAMxB;IAEF,IAAM,SAAS,GAAG,KAAuB;IAEzC,IAAM,WAAW,GAAG,CAAA,CAAA,EAAA,GAAA,SAAS,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,WAAW,MAAK,KAAK;AAC7D,IAAA,IAAM,gBAAgB,GAAG,CAAA,CAAA,EAAA,GAAA,SAAS,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,gBAAgB,MAAK,IAAI,IAAI,WAAW;AACrF,IAAA,IAAM,eAAe,GAAG,CAAA,CAAA,EAAA,GAAA,SAAS,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,eAAe,MAAK,IAAI,IAAI,WAAW;AACnF,IAAA,IAAM,kBAAkB,GAAG,CAAA,CAAA,EAAA,GAAA,SAAS,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,kBAAkB,MAAK,IAAI,IAAI,WAAW;IACzF,IAAM,mBAAmB,GAAG,CAAA,CAAA,EAAA,GAAA,SAAS,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,mBAAmB,MAAK,KAAK;AAEvE,IAAA,IAAA,KAAwC,QAAQ,CAAY,cAAM,OAAA,kBAAkB,CAAC,KAAK,CAAC,CAAzB,EAAyB,CAAC,EAA3F,eAAe,QAAA,EAAE,kBAAkB,QAAwD;AAC5F,IAAA,IAAA,EAA4B,GAAA,QAAQ,CAAU,CAAC,OAAO,IAAI,WAAW,CAAC,EAArE,SAAS,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,YAAY,QAA8C;AAE5E,IAAA,IAAM,gBAAgB,GAAG,0BAA0B,CAAC,OAAO,EAAE,CAAA,EAAA,GAAA,SAAS,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,aAAa,CAAC;AAE/F,IAAA,IAAM,UAAU,GAAuB;AACrC,QAAA,YAAY,EAAE,QAAQ;QACtB,MAAM,EAAE,MAAA,CAAA,EAAA,GAAA,SAAS,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,OAAO;AAC7C,QAAA,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,uBAAwB;AAC/B,QAAA,MAAM,EAAE,EAAE,GAAG,EAAE,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,gBAAgB,CAAC,GAAG,EAAE;QAChE,IAAI,EAAE,gBAAgB,CAAC,IAAI;AAC3B,QAAA,KAAK,EAAE;AACL,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,eAAe;gBACtB,OAAO,EAAE,WAAW,KAAK,kBAAkB,IAAI,eAAe,IAAI,gBAAgB;AACnF;AACF;KACF;;AAGD,IAAA,IAAM,4BAA4B,GAAG,WAAW,CAAC,UAAC,OAA4B,EAAA;;QAC5E,IAAI,EAAC,OAAO,KAAP,IAAA,IAAA,OAAO,KAAP,MAAA,GAAA,MAAA,GAAA,OAAO,CAAE,QAAQ,CAAA,EAAE;YAAE,cAAc,CAAC,EAAE,CAAC;YAAE;;AAC9C,QAAA,IAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ;QAAE,IAAI,SAAS,GAAG,EAAE;AACrD,QAAA,IAAI;AACF,YAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;AAAE,gBAAA,SAAS,GAAG,CAAC,CAAA,EAAA,GAAA,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,EAAE,GAAG,CAAC,UAAA,GAAG,EAAI,EAAA,OAAA,EAAG,CAAA,MAAA,CAAA,GAAG,CAAC,CAAC,CAAC,EAAK,IAAA,CAAA,CAAA,MAAA,CAAA,GAAG,CAAC,CAAC,CAAC,CAAE,CAAA,EAAA,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;AAAQ,iBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE;AAAE,gBAAA,SAAS,GAAG,CAAC,CAAA,EAAA,GAAA,QAAQ,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,EAAE,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,EAAA,CAAA,MAAA,CAAG,GAAG,CAAC,CAAC,CAAC,EAAA,IAAA,CAAA,CAAA,MAAA,CAAK,GAAG,CAAC,CAAC,CAAC,CAAE,CAAtB,EAAsB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;AAAQ,iBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE;AAAE,gBAAA,IAAM,MAAM,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,WAAW,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAC,GAAG,EAAE,GAAG,CAAC;AAAE,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AAAE,oBAAA,SAAS,GAAG,EAAA,CAAA,MAAA,CAAG,MAAM,CAAC,CAAC,CAAC,EAAK,IAAA,CAAA,CAAA,MAAA,CAAA,MAAM,CAAC,CAAC,CAAC,CAAE;;qBAAQ;oBAAE,SAAS,GAAG,EAAE;;;;QAC1c,OAAO,CAAC,EAAE;AAAE,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,CAAC;YAAE,SAAS,GAAG,EAAE;;QACpE,cAAc,CAAC,SAAS,CAAC;;KAE1B,EAAE,EAAE,CAAC;IAEA,IAAA,EAAA,GAAgC,QAAQ,CAAS,YAAA;;QACrD,IAAI,EAAC,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,MAAA,GAAA,MAAA,GAAA,OAAO,CAAE,QAAQ,CAAA;AAAE,YAAA,OAAO,EAAE;QAAE,IAAI,UAAU,GAAG,EAAE;AAAE,QAAA,IAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ;AACzF,QAAA,IAAI;AACF,YAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE;AAAE,gBAAA,UAAU,GAAG,CAAC,CAAA,EAAA,GAAA,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,EAAE,GAAG,CAAC,UAAA,GAAG,EAAI,EAAA,OAAA,EAAG,CAAA,MAAA,CAAA,GAAG,CAAC,CAAC,CAAC,EAAK,IAAA,CAAA,CAAA,MAAA,CAAA,GAAG,CAAC,CAAC,CAAC,CAAE,CAAA,EAAA,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;AAAQ,iBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE;AAAE,gBAAA,UAAU,GAAG,CAAC,CAAA,EAAA,GAAA,QAAQ,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAI,EAAE,EAAE,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,EAAA,CAAA,MAAA,CAAG,GAAG,CAAC,CAAC,CAAC,EAAA,IAAA,CAAA,CAAA,MAAA,CAAK,GAAG,CAAC,CAAC,CAAC,CAAE,CAAtB,EAAsB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;AAAQ,iBAAA,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE;AAAE,gBAAA,IAAM,MAAM,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,WAAW,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,CAAC,GAAG,EAAE,GAAG,CAAC;AAAE,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;AAAE,oBAAA,UAAU,GAAG,EAAA,CAAA,MAAA,CAAG,MAAM,CAAC,CAAC,CAAC,EAAK,IAAA,CAAA,CAAA,MAAA,CAAA,MAAM,CAAC,CAAC,CAAC,CAAE;;;;QACrb,OAAO,CAAC,EAAE;AAAE,YAAA,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;YAAE,UAAU,GAAG,EAAE;;AAAG,QAAA,OAAO,UAAU;AACzF,KAAC,CAAC,EALK,WAAW,QAAA,EAAE,cAAc,QAKhC;AAEF,IAAA,SAAS,CAAC,YAAA;QACR,4BAA4B,CAAC,OAAO,CAAC;AACvC,KAAC,EAAE,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAC;AAE3C,IAAA,IAAM,4BAA4B,GAAG,UAAC,WAAmB,EAAE,SAAqB,EAAA;AAC9E,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE;YAAE,QAAQ,CAAC,SAAS,CAAC;AAAE,YAAA,OAAO,SAAS;;AAChE,QAAA,IAAI;YACF,IAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,EAAE,CAAR,EAAQ,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAD,EAAC,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA,EAAY,IAAA,EAAa,GAAA,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA,EAAA,CAAC,EAAvD,GAAG,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,GAAG,GAA+C,EAAA,CAAA,CAAA,CAAA,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG;gBAAE,MAAM,KAAK,CAAC,WAAY,CAAA,MAAA,CAAA,GAAG,eAAK,GAAG,CAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA,EAAE,CAAC;AAClS,YAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;AAAE,gBAAA,MAAM,KAAK,CAAC,iBAAiB,CAAC;AACvD,YAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB;gBAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAC5I,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,OAAO,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,kBAAkB,EAAE;AAAE,gBAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAAE,gBAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;AAAE,oBAAA,MAAM,KAAK,CAAC,iCAAiC,CAAC;gBAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE;;YACtY,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,UAAU,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,eAAe,EAAE;AAAE,gBAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;AAAE,oBAAA,MAAM,KAAK,CAAC,uBAAuB,CAAC;gBAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE;;YACnQ,QAAQ,CAAC,0CAA0C,CAAC;AAAE,YAAA,OAAO,SAAS;;QACtE,OAAO,CAAM,EAAE;AAAE,YAAA,QAAQ,CAAC,wBAAyB,CAAA,MAAA,CAAA,CAAC,CAAC,OAAO,EAAA,oBAAA,CAAkB,CAAC;AAAE,YAAA,OAAO,SAAS;;AACrG,KAAC;IAED,IAAM,sBAAsB,GAAG,UAAC,MAAc,EAAA;QAC5C,IAAM,eAAe,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,IAAI,EAAE,CAAA,EAAA,CAAC,CAAC,MAAM;QAC9E,OAAO,CAAC,kBAAkB,IAAI,eAAe,KAAK,eAAe,IAAI,CAAC;AACxE,KAAC;AACK,IAAA,IAAA,KAAkD,QAAQ,CAAU,cAAM,OAAA,sBAAsB,CAAC,WAAW,CAAC,CAAnC,EAAmC,CAAC,EAA7G,oBAAoB,QAAA,EAAE,uBAAuB,QAAgE;IACpH,SAAS,CAAC,cAAQ,uBAAuB,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAA,EAAE,EAAE,CAAC,WAAW,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC,CAAA;;AAGrI,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,IAAI,CAAC,GAAG;YAAE;AACV,QAAA,IAAM,oBAAoB,GAAG,UAAC,CAAgB,EAAa,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,oBAAmB,IAAM,CAAC,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAC,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,QAAQ,MAAG,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;YAAE,UAAU,CAAC,CAAC,CAAC;YAAE,YAAY,CAAC,KAAK,CAAC;AAAE,YAAA,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC;SAAE,EAAE;AACzM,QAAA,IAAM,kBAAkB,GAAG,UAAC,CAAgB,EAAa,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA,oBAAmB,IAAM,CAAC,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,CAAC,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,QAAQ,MAAG,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;YAAE,UAAU,CAAC,CAAC,CAAC;SAAE,EAAE;AAChJ,QAAA,GAAG,CAAC,cAAc,CAAC,oBAAoB,CAAC;AAAE,QAAA,GAAG,CAAC,YAAY,CAAC,kBAAkB,CAAC;;AAEhF,KAAC,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;AAE1B,IAAA,SAAS,CAAC,YAAA;;AACR,QAAA,QAAQ,CAAC,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,SAAS,CAAC;AAC1C,KAAC,EAAE,CAAC,OAAO,CAAC,CAAC;AAEb,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,IAAI,CAAC,GAAG;YAAE;AACV,QAAA,IAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC;AACjD,QAAA,IAAI,eAAe,KAAK,eAAe,EAAE;YACvC,kBAAkB,CAAC,eAAe,CAAC;;QAGrC,IAAI,OAAO,aAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,QAAQ,EAAE;AACrB,YAAA,GAAG,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;AACtE,YAAA,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;YAChC,YAAY,CAAC,KAAK,CAAC;;aACd;AACL,YAAA,GAAG,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;YAC/D,IAAI,WAAW,KAAK,gBAAgB,IAAI,eAAe,IAAI,kBAAkB,CAAC,EAAE;AAC9E,gBAAA,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;gBAC/B,YAAY,CAAC,IAAI,CAAC;;iBACb;AACL,gBAAA,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAA;gBAChC,YAAY,CAAC,KAAK,CAAC;;;AAGzB,KAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;;AAG9G,IAAA,IAAM,aAAa,GAAG,UAAC,OAAiB,EAAc,EAAA,OAAA,CAAC,EAAC,OAAO,KAAP,IAAA,IAAA,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAA,CAAA,EAAA;AAEzE,IAAA,IAAM,UAAU,GAAG,YAAA;QACjB,UAAU,CAAC,SAAS,CAAC;QAAE,cAAc,CAAC,EAAE,CAAC;QAAE,uBAAuB,CAAC,KAAK,CAAC;AACzE,QAAA,IAAI,GAAG,IAAI,WAAW,EAAE;AAAE,YAAA,GAAG,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAAE,YAAA,IAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC;YAAE,kBAAkB,CAAC,KAAK,CAAC;AAAE,YAAA,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,YAAY,CAAC,IAAI,CAAC;;AAC1M,KAAC;IAED,IAAM,oBAAoB,GAAG,UAAC,SAAoB,EAAA;AAChD,QAAA,IAAI,GAAG,IAAI,WAAW,EAAE;AACtB,YAAA,IAAM,SAAS,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,KAAK,IAAI,gBAAgB,MAAM,SAAS,KAAK,SAAS,CAAC,UAAU,IAAI,eAAe,CAAC,KAAK,SAAS,KAAK,SAAS,CAAC,OAAO,IAAI,kBAAkB,CAAC;AAC3L,YAAA,IAAI,SAAS,IAAI,SAAS,KAAK,eAAe,EAAE;AAAE,gBAAA,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC;gBAAE,kBAAkB,CAAC,SAAS,CAAC;AAAE,gBAAA,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,YAAY,CAAC,IAAI,CAAC;;;AAEpK,KAAC;IAED,IAAM,uBAAuB,GAAG,UAAC,CAAqB,EAAA;QACpD,IAAM,SAAS,GAAG,CAAC,KAAA,IAAA,IAAD,CAAC,KAAD,MAAA,GAAA,CAAC,GAAI,EAAE;QAAE,cAAc,CAAC,SAAS,CAAC;QACpD,IAAM,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,IAAI,EAAE,CAAA,EAAA,CAAC,CAAC,MAAM;AAC7E,QAAA,IAAI,YAAmC;AACvC,QAAA,IAAI,WAAW,KAAK,CAAC,IAAI,gBAAgB;AAAE,YAAA,YAAY,GAAG,SAAS,CAAC,KAAK;AACpE,aAAA,IAAI,WAAW,IAAI,CAAC,IAAI,kBAAkB;AAAE,YAAA,YAAY,GAAG,SAAS,CAAC,OAAO;AAC5E,aAAA,IAAI,WAAW,IAAI,CAAC,IAAI,eAAe;AAAE,YAAA,YAAY,GAAG,SAAS,CAAC,UAAU;QACjF,IAAM,UAAU,GAAG,4BAA4B,CAAC,SAAS,EAAE,YAAY,CAAC;QACxE,IAAI,UAAU,EAAE;YACd,UAAU,CAAC,UAAU,CAAC;YAAE,QAAQ,CAAC,SAAS,CAAC;YAC3C,IAAI,GAAG,EAAE;AAAE,gBAAA,GAAG,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAAE,gBAAA,GAAG,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;AAAE,gBAAA,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC;gBAAE,YAAY,CAAC,KAAK,CAAC;;;;aAEvM;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE;gBAAE,UAAU,CAAC,SAAS,CAAC;AAAE,gBAAA,IAAI,GAAG,IAAI,WAAW,EAAE;AAAE,oBAAA,GAAG,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAAE,oBAAA,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC;oBAAE,YAAY,CAAC,IAAI,CAAC;;gBAAG,uBAAuB,CAAC,KAAK,CAAC;;iBAAQ,IAAI,CAAC,KAAK,EAAE;gBAAE,QAAQ,CAAC,4CAA4C,CAAC;;;AAE/S,KAAC;IAED,IAAM,cAAc,GAAG,UAAC,SAAoB,EAAA;QAC1C,IAAM,UAAU,GAAG,4BAA4B,CAAC,WAAW,EAAE,SAAS,CAAC;QACvE,IAAI,UAAU,EAAE;YAAE,UAAU,CAAC,UAAU,CAAC;YAAE,QAAQ,CAAC,SAAS,CAAC;;aAAQ,IAAI,CAAC,KAAK,EAAE;AAAE,YAAA,QAAQ,CAAC,mBAAoB,CAAA,MAAA,CAAA,SAAS,KAAK,SAAS,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,EAAA,GAAA,CAAG,CAAC;;AACvK,KAAC;;AAGD,IAAA,QACMA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;QACIA,cAAC,CAAA,aAAA,CAAA,UAAU,EAAK,QAAA,CAAA,EAAA,EAAA,KAAK,CAAI,CAAA;QACzBA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,cAAc,EAAA;AACxB,YAAA,WAAW,KAAK,kBAAkB,IAAI,eAAe,IAAI,gBAAgB,CAAC,KACvEA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,iDAAiD,EAAA;AAE3D,gBAAA,gBAAgB,KACZA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,kCAAkC,EAAA;AAC7C,oBAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAA,EACJ,OAAO,EAAE,YAAQ,EAAA,oBAAoB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,EAAE;;wBAExD,SAAS,EAAE,mCACP,eAAe,KAAK,SAAS,CAAC,KAAK,IAAI;AACrC,8BAAE;AACF,8BAAE,8BAA8B,EACoB,wDAAA,CAAA,EAAA,YAAA,EAC/C,YAAY,EAAA;AAExB,wBAAAA,cAAA,CAAA,aAAA,CAAC,oBAAoB,EAAA,EAAC,SAAS,EAAC,SAAS,EAAG,CAAA;AAC5C,wBAAAA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,2JAA2J,EAEpK,EAAA,YAAA,CAAA,CACA,CACP,CACV;AAEA,gBAAA,eAAe,KACbA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,kCAAkC,EAAA;AAC7C,oBAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAA,EACH,OAAO,EAAE,YAAQ,EAAA,oBAAoB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA,EAAE;;wBAE7D,SAAS,EAAE,mCACP,eAAe,KAAK,SAAS,CAAC,UAAU,IAAI;AAC1C,8BAAE;AACF,8BAAE,8BAA8B,EACoB,wDAAA,CAAA,EAAA,YAAA,EAC/C,WAAW,EAAA;AAEtB,wBAAAA,cAAA,CAAA,aAAA,CAAC,eAAe,EAAA,EAAC,SAAS,EAAC,SAAS,EAAG,CAAA;AACvC,wBAAAA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,2JAA2J,EAEpK,EAAA,WAAA,CAAA,CACA,CACT,CACR;AAEA,gBAAA,kBAAkB,KACdA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,kCAAkC,EAAA;AAC7C,oBAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAA,EACH,OAAO,EAAE,YAAQ,EAAA,oBAAoB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA,EAAE;;wBAE1D,SAAS,EAAE,mCACP,eAAe,KAAK,SAAS,CAAC,OAAO,IAAI;AACvC,8BAAE;AACF,8BAAE,8BAA8B,EACoB,wDAAA,CAAA,EAAA,YAAA,EAC/C,cAAc,EAAA;AAE1B,wBAAAA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,SAAS,EAAC,mBAAmB,EAAG,CAAA;AAC5C,wBAAAA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,2JAA2J,EAEpK,EAAA,cAAA,CAAA,CACA,CACR,CACV;gBAEA,aAAa,CAAC,OAAO,CAAC,KACnBA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,kCAAkC,EAAA;oBAC7CA,cAAC,CAAA,aAAA,CAAA,MAAM,EACH,EAAA,OAAO,EAAE,UAAU,EACnB,SAAS,EAAC,4GAA4G,EAAA,YAAA,EAC3G,aAAa,EAAA;AAExB,wBAAAA,cAAA,CAAA,aAAA,CAAC,SAAS,EAAA,EAAC,SAAS,EAAC,SAAS,EAAG,CAAA;wBACjCA,cAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,2JAA2J,EAAA,EAAA,aAAA,CAEpK,CACF,CACP,CACT,CACC,CACT;AAGD,YAAAA,cAAA,CAAA,aAAA,CAACC,sBAAG,EAAK,QAAA,CAAA,EAAA,EAAA,UAAU,IAAE,QAAQ,EAAE,WAAW,EAAI,CAAA,CAAA;AAG7C,YAAA,mBAAmB,KACfD,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,MAAM,EAAA;gBAClBA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,0DAA0D,EAAA;oBACrEA,cAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,SAAS,EAAA;;AAA+B,wBAAA,GAAA,CAAA;oBACvD,oBAAoB,KAAK,eAAe,IAAI,kBAAkB,CAAC,KAC5DA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,YAAY,EAAA;;AACtB,wBAAA,eAAe,IAAIA,cAAC,CAAA,aAAA,CAAA,MAAM,IAAC,OAAO,EAAE,cAAQ,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA,EAAE,EAAE,SAAS,EAAC,4HAA4H,EAAA;AAAC,4BAAAA,cAAA,CAAA,aAAA,CAAC,eAAe,EAAA,EAAC,SAAS,EAAC,SAAS,EAAG,CAAA;AAAoB,4BAAA,aAAA,CAAA;AACtR,wBAAA,kBAAkB,IAAIA,cAAC,CAAA,aAAA,CAAA,MAAM,IAAC,OAAO,EAAE,cAAQ,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA,EAAE,EAAE,SAAS,EAAC,4HAA4H,EAAA;AAAC,4BAAAA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EAAC,SAAS,EAAC,mBAAmB,EAAG,CAAA;AAAuB,4BAAA,gBAAA,CAAA,CAC7R,CACT,CACC;AACN,gBAAAA,cAAA,CAAA,aAAA,CAAC,QAAQ,EAAC,EAAA,KAAK,EAAE,KAAK,EAAE,SAAS,EAAC,qEAAqE,EAAC,EAAE,EAAE,EAAA,CAAA,MAAA,CAAG,KAAK,CAAC,EAAE,iBAAc,EAAE,MAAM,EAAE,EAAA,CAAA,MAAA,CAAG,KAAK,CAAC,EAAE,iBAAc,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,uBAAuB,EAAE,WAAW,EAAE,KAAK,EAAA,YAAA,EAAa,mBAAmB,EAAG,CAAA;gBACrR,KAAK,IAAIA,oCAAG,SAAS,EAAC,2BAA2B,EAAE,EAAA,KAAK,CAAK,CAC5D,CACT;YAGC,gBAAgB,IAAIA,cAAC,CAAA,aAAA,CAAA,QAAQ,EAAC,EAAA,KAAK,EAAE,KAAK,EAAE,SAAS,EAAC,KAAK,EAAC,EAAE,EAAE,KAAK,CAAC,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAEA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,QAAA,CAAA,EAAA,EAAK,KAAK,EAAA,EAAE,KAAK,EAAC,6BAA6B,EAAA,CAAA,CAAE,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAI,CAAA,CAChO,CACJ;AAEd;;;;"}
1
+ {"version":3,"file":"Geometry.js","sources":["../../../../../../src/Form/Components/Inputs/Geometry.tsx"],"sourcesContent":["import { Button, TextArea } from '@axdspub/axiom-ui-utilities'\r\nimport FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { type IGeometryField, type IFieldInputProps, type IFormField, type IValueType } from '@/Form/Creator/FormCreatorTypes' // Added IFormField explicitly\r\n\r\nimport { EMapShape, type IMap, type IMapDrawEvent, type IStyleableMapProps } from '@axdspub/axiom-maps'\r\nimport { OpenLayersMap as Map } from '@axdspub/axiom-maps/library/openlayers'\r\n// Import Geometry type if not already done\r\nimport { type Feature, type GeoJSON, type Geometry } from 'geojson'\r\nimport React, { useEffect, useState, type ReactElement, useCallback } from 'react' // Added useCallback\r\nimport { TrashIcon, SquareIcon, BorderSolidIcon, DrawingPinFilledIcon } from '@radix-ui/react-icons'\r\nimport isEqual from 'lodash-es/isEqual'\r\n\r\n/*\r\nList of coordinates for testing. Around Anchorage.\r\n...\r\n*/\r\n\r\n// --- calculateCenterFromGeoJSON remains the same (zoom ignored for initial load) ---\r\nconst calculateCenterFromGeoJSON = (geo: GeoJSON | undefined, defaultCenter?: { lat: number, lon: number, zoom: number }): { lat: number, lon: number, zoom: number } => {\r\n // If default center is provided, use it\r\n if (defaultCenter) {\r\n return defaultCenter\r\n }\r\n\r\n // If input is Geometry, wrap it temporarily for calculation\r\n let featureCollection: GeoJSON.FeatureCollection | undefined\r\n if (geo && geo.type !== 'FeatureCollection') {\r\n if (geo.type === 'Feature') {\r\n featureCollection = { type: 'FeatureCollection', features: [geo] }\r\n } else if (geo.type === 'Point' || geo.type === 'LineString' || geo.type === 'Polygon' /* add others as needed */) {\r\n featureCollection = { type: 'FeatureCollection', features: [{ type: 'Feature', properties: {}, geometry: geo as Geometry }] }\r\n }\r\n } else if (geo && geo.type === 'FeatureCollection') {\r\n featureCollection = geo\r\n }\r\n\r\n // Default to Anchorage if no valid GeoJSON\r\n const DEFAULT_CENTER = { lat: 61.2181, lon: -149.9003, zoom: 8 }\r\n\r\n if (!featureCollection || !('features' in featureCollection) || !Array.isArray(featureCollection.features) || featureCollection.features.length === 0) {\r\n return DEFAULT_CENTER\r\n }\r\n\r\n const feature = featureCollection.features[0]\r\n if (!feature?.geometry) {\r\n return DEFAULT_CENTER\r\n }\r\n\r\n const geometry = feature.geometry\r\n let coordinates: GeoJSON.Position | GeoJSON.Position[] | GeoJSON.Position[][] = [] // Adjusted type\r\n\r\n switch (geometry.type) {\r\n case 'Polygon':\r\n coordinates = geometry.coordinates[0] // Get first ring (ignore holes)\r\n break\r\n case 'LineString':\r\n coordinates = geometry.coordinates\r\n break\r\n case 'Point':\r\n coordinates = [geometry.coordinates] // Wrap single point for uniform handling\r\n break\r\n default:\r\n return DEFAULT_CENTER\r\n }\r\n\r\n // Flatten coordinates for bounds calculation if needed (e.g., MultiPoint, MultiLineString)\r\n const flatCoordinates = ([] as GeoJSON.Position[]).concat(...coordinates as any)\r\n\r\n if (!Array.isArray(flatCoordinates) || flatCoordinates.length === 0 || !Array.isArray(flatCoordinates[0])) {\r\n // Handle single point case where flatCoordinates might be just [lon, lat]\r\n if (Array.isArray(flatCoordinates) && flatCoordinates.length === 2 && typeof flatCoordinates[0] === 'number') {\r\n const [lon, lat] = flatCoordinates as unknown as GeoJSON.Position\r\n // FIX #2: Return a default zoom even for a point here for centering logic,\r\n // but we won't use this zoom for the initial MAP_CONFIG.\r\n return { lat, lon, zoom: 8 } // Default zoom\r\n }\r\n console.warn('Could not determine coordinates for centering.')\r\n return DEFAULT_CENTER\r\n }\r\n\r\n // Calculate bounds\r\n let minLat = Infinity; let maxLat = -Infinity; let minLon = Infinity; let maxLon = -Infinity\r\n let sumLat = 0; let sumLon = 0; let count = 0\r\n\r\n flatCoordinates.forEach((coord: GeoJSON.Position) => {\r\n if (!Array.isArray(coord) || coord.length < 2) return; const [lon, lat] = coord\r\n minLat = Math.min(minLat, lat); maxLat = Math.max(maxLat, lat); minLon = Math.min(minLon, lon); maxLon = Math.max(maxLon, lon)\r\n sumLat += lat; sumLon += lon; count++\r\n })\r\n\r\n if (count === 0) { return DEFAULT_CENTER }\r\n\r\n const centerLat = sumLat / count; const centerLon = sumLon / count\r\n const latDiff = maxLat - minLat; const lonDiff = maxLon - minLon; const maxDiff = Math.max(latDiff, lonDiff)\r\n\r\n let zoom = 8 // default zoom\r\n if (count === 1 || maxDiff === 0) zoom = 12; else if (maxDiff < 0.1) zoom = 12; else if (maxDiff < 0.5) zoom = 10\r\n else if (maxDiff < 1) zoom = 9; else if (maxDiff < 2) zoom = 8; else if (maxDiff < 5) zoom = 7; else zoom = 6\r\n\r\n return { lat: centerLat, lon: centerLon, zoom }\r\n}\r\n\r\n// Helper function to determine initial draw type based on settings\r\nconst getInitialDrawType = (field: IFormField): EMapShape => {\r\n const settings = (field as IGeometryField).settings ?? {}\r\n const drawEnabled = settings.drawEnabled !== false\r\n const drawPointEnabled = settings.drawPointEnabled === true && drawEnabled\r\n const drawPathEnabled = settings.drawPathEnabled === true && drawEnabled\r\n const drawPolygonEnabled = settings.drawPolygonEnabled === true && drawEnabled\r\n\r\n if (drawPointEnabled) return EMapShape.point\r\n if (drawPathEnabled) return EMapShape.linestring\r\n if (drawPolygonEnabled) return EMapShape.polygon\r\n return EMapShape.point // Defaulting to Point if none specified\r\n}\r\n\r\nexport const GeometryInput = ({ field, onChange, value, disabled }: IFieldInputProps): ReactElement => {\r\n const [map, setMapState] = useState<IMap | undefined>(undefined)\r\n const [error, setError] = useState<string | undefined>(undefined)\r\n const [showGeoJSONInput] = useState<boolean>(false)\r\n\r\n const convertToGeoJSON = (geo: IValueType): Feature | undefined => {\r\n if (geo && typeof geo === 'object' && 'type' in geo && geo.type !== 'FeatureCollection' && geo.type !== 'Feature') {\r\n return { type: 'Feature', properties: {}, geometry: geo as Geometry }\r\n }\r\n if (geo && typeof geo === 'object' && 'type' in geo && geo.type === 'Feature') { return geo as Feature }\r\n return undefined\r\n }\r\n\r\n const [geojson, setGeojson] = useState<Feature | undefined>(convertToGeoJSON(value))\r\n\r\n useEffect(() => {\r\n if (!isEqual(geojson, convertToGeoJSON(value))) {\r\n console.log('SETTING GEOJSON')\r\n setGeojson(convertToGeoJSON(value))\r\n }\r\n }, [value])\r\n\r\n const geomField = field as IGeometryField\r\n\r\n const drawEnabled = geomField.settings?.drawEnabled !== false\r\n const drawPointEnabled = geomField.settings?.drawPointEnabled === true && drawEnabled\r\n const drawPathEnabled = geomField.settings?.drawPathEnabled === true && drawEnabled\r\n const drawPolygonEnabled = geomField.settings?.drawPolygonEnabled === true && drawEnabled\r\n const showCoordinateInput = geomField.settings?.showCoordinateInput !== false\r\n\r\n const [currentDrawType, setCurrentDrawType] = useState<EMapShape>(() => getInitialDrawType(field))\r\n const [isDrawing, setIsDrawing] = useState<boolean>(!geojson && drawEnabled)\r\n\r\n const initialMapCenter = calculateCenterFromGeoJSON(geojson, geomField.settings?.defaultCenter)\r\n\r\n const MAP_CONFIG: IStyleableMapProps = {\r\n baseLayerKey: 'hybrid',\r\n height: geomField.settings?.height ?? '500px',\r\n width: '100%',\r\n style: { /* ... styles ... */ },\r\n center: { lat: initialMapCenter.lat, lon: initialMapCenter.lon },\r\n zoom: initialMapCenter.zoom,\r\n tools: {\r\n draw: {\r\n shape: currentDrawType,\r\n enabled: drawEnabled && (drawPolygonEnabled || drawPathEnabled || drawPointEnabled)\r\n }\r\n }\r\n }\r\n\r\n // ---- Coordinate Handling ----\r\n const updateCoordinatesFromFeature = useCallback((feature: Feature | undefined): void => {\r\n if (!feature?.geometry) { setCoordinates(''); return }\r\n const geometry = feature.geometry; let newCoords = ''\r\n try {\r\n if (geometry.type === 'Polygon') { newCoords = (geometry.coordinates[0] ?? []).map(pos => `${pos[1]}, ${pos[0]}`).join('\\n') } else if (geometry.type === 'LineString') { newCoords = (geometry.coordinates ?? []).map(pos => `${pos[1]}, ${pos[0]}`).join('\\n') } else if (geometry.type === 'Point') { const coords = geometry.coordinates ?? [NaN, NaN]; if (!isNaN(coords[0]) && !isNaN(coords[1])) { newCoords = `${coords[1]}, ${coords[0]}` } else { newCoords = '' } }\r\n } catch (e) { console.error('Err format coords:', e); newCoords = '' }\r\n setCoordinates(newCoords)\r\n // setShowShapeTypeButtons(shouldShowShapeButtons(newCoords)); // Let coordinate effect handle this\r\n }, [])\r\n\r\n const [coordinates, setCoordinates] = useState<string>(() => {\r\n if (!geojson?.geometry) return ''; let initCoords = ''; const geometry = geojson.geometry\r\n try {\r\n if (geometry.type === 'Polygon') { initCoords = (geometry.coordinates[0] ?? []).map(pos => `${pos[1]}, ${pos[0]}`).join('\\n') } else if (geometry.type === 'LineString') { initCoords = (geometry.coordinates ?? []).map(pos => `${pos[1]}, ${pos[0]}`).join('\\n') } else if (geometry.type === 'Point') { const coords = geometry.coordinates ?? [NaN, NaN]; if (!isNaN(coords[0]) && !isNaN(coords[1])) { initCoords = `${coords[1]}, ${coords[0]}` } }\r\n } catch (e) { console.error('Err init coords:', e); initCoords = '' } return initCoords\r\n })\r\n\r\n useEffect(() => {\r\n updateCoordinatesFromFeature(geojson)\r\n }, [geojson, updateCoordinatesFromFeature])\r\n\r\n const createGeoJSONFromCoordinates = (coordString: string, forceType?: EMapShape): Feature | undefined => { /* ... same as last working version ... */\r\n if (!coordString.trim()) { setError(undefined); return undefined }\r\n try {\r\n const points = coordString.split('\\n').map(l => l.trim()).filter(l => l).map(l => { const [lat, lon] = l.split(',').map(c => parseFloat(c.trim())); if (isNaN(lat) || isNaN(lon) || lat < -90 || lat > 90 || lon < -180 || lon > 180) throw Error(`Invalid: ${lat}, ${lon}`); return [lon, lat] })\r\n if (points.length === 0) throw Error('No valid coords')\r\n if (points.length === 1 && drawPointEnabled) return { type: 'Feature', properties: {}, geometry: { type: 'Point', coordinates: points[0] } }\r\n if ((forceType === EMapShape.polygon || (!forceType && points.length >= 3)) && drawPolygonEnabled) { if (points.length > 0 && JSON.stringify(points[0]) !== JSON.stringify(points[points.length - 1])) points.push(points[0]); if (points.length < 4) throw Error('Min 3 unique coords for polygon'); return { type: 'Feature', properties: {}, geometry: { type: 'Polygon', coordinates: [points] } } }\r\n if ((forceType === EMapShape.linestring || (!forceType && points.length >= 2)) && drawPathEnabled) { if (points.length < 2) throw Error('Min 2 coords for path'); return { type: 'Feature', properties: {}, geometry: { type: 'LineString', coordinates: points } } }\r\n setError('Cannot create shape. Check tools/coords.'); return undefined\r\n } catch (e: any) { setError(`Invalid coords/count: ${e.message}. Use \"lat, lon\"`); return undefined }\r\n }\r\n\r\n const shouldShowShapeButtons = (coords: string): boolean => { /* ... same as last working version ... */\r\n const validLinesCount = coords.trim().split('\\n').filter(l => l.trim()).length\r\n return (drawPolygonEnabled || drawPathEnabled) && validLinesCount >= 2\r\n }\r\n const [showShapeTypeButtons, setShowShapeTypeButtons] = useState<boolean>(() => shouldShowShapeButtons(coordinates))\r\n useEffect(() => { setShowShapeTypeButtons(shouldShowShapeButtons(coordinates)) }, [coordinates, drawPolygonEnabled, drawPathEnabled]) // Added effect to update buttons\r\n\r\n // ---- Map Event Handlers & State Updates ----\r\n useEffect(() => { // Map event listeners\r\n if (!map) return\r\n const drawCompleteListener = (e: IMapDrawEvent): void => { /* ... same ... */ const f = e.data?.geojson?.features?.[0]; if (f) { setGeojson(f); setIsDrawing(false); map.disableDraw(currentDrawType) } }\r\n const drawUpdateListener = (e: IMapDrawEvent): void => { /* ... same ... */ const f = e.data?.geojson?.features?.[0]; if (f) { setGeojson(f) } }\r\n map.onDrawComplete(drawCompleteListener); map.onDrawUpdate(drawUpdateListener)\r\n // Cleanup omitted\r\n }, [map, currentDrawType])\r\n\r\n useEffect(() => { // Parent onChange trigger\r\n onChange(geojson?.geometry ?? undefined)\r\n }, [geojson])\r\n\r\n useEffect(() => { // Map drawing/state sync effect\r\n if (!map) return\r\n const correctDrawType = getInitialDrawType(field)\r\n if (currentDrawType !== correctDrawType) {\r\n setCurrentDrawType(correctDrawType)\r\n }\r\n\r\n if (geojson?.geometry) {\r\n map.setDrawGeojson({ type: 'FeatureCollection', features: [geojson] })\r\n map.disableDraw(correctDrawType) // Ensure correct tool is disabled\r\n setIsDrawing(false)\r\n } else {\r\n map.setDrawGeojson({ type: 'FeatureCollection', features: [] })\r\n if (drawEnabled && (drawPointEnabled || drawPathEnabled || drawPolygonEnabled)) {\r\n map.enableDraw(correctDrawType) // Enable the correct initial tool\r\n setIsDrawing(true)\r\n } else {\r\n map.disableDraw(correctDrawType) // Ensure drawing is off if not enabled\r\n setIsDrawing(false)\r\n }\r\n }\r\n }, [map, geojson, drawEnabled, drawPointEnabled, drawPathEnabled, drawPolygonEnabled, currentDrawType, field])\r\n\r\n // ---- Helper Functions ----\r\n const hasValidShape = (feature?: Feature): boolean => !!feature?.geometry\r\n\r\n const clearShape = (): void => { /* ... same ... */\r\n setGeojson(undefined); setCoordinates(''); setShowShapeTypeButtons(false)\r\n if (map && drawEnabled) { map.setDrawGeojson({ type: 'FeatureCollection', features: [] }); const iType = getInitialDrawType(field); setCurrentDrawType(iType); map.enableDraw(iType); setIsDrawing(true) }\r\n }\r\n\r\n const handleDrawTypeChange = (shapeType: EMapShape): void => { /* ... same as minimal fix version ... */\r\n if (map && drawEnabled) {\r\n const isAllowed = (shapeType === EMapShape.point && drawPointEnabled) || (shapeType === EMapShape.linestring && drawPathEnabled) || (shapeType === EMapShape.polygon && drawPolygonEnabled)\r\n if (isAllowed && shapeType !== currentDrawType) { map.disableDraw(currentDrawType); setCurrentDrawType(shapeType); map.enableDraw(shapeType); setIsDrawing(true) }\r\n }\r\n }\r\n\r\n const handleCoordinatesChange = (e: string | undefined): void => { /* ... same as minimal fix version ... */\r\n const newCoords = e ?? ''; setCoordinates(newCoords)\r\n const pointsCount = newCoords.trim().split('\\n').filter(l => l.trim()).length\r\n let intendedType: EMapShape | undefined\r\n if (pointsCount === 1 && drawPointEnabled) intendedType = EMapShape.point\r\n else if (pointsCount >= 3 && drawPolygonEnabled) intendedType = EMapShape.polygon\r\n else if (pointsCount >= 2 && drawPathEnabled) intendedType = EMapShape.linestring\r\n const newFeature = createGeoJSONFromCoordinates(newCoords, intendedType)\r\n if (newFeature) {\r\n setGeojson(newFeature); setError(undefined)\r\n if (map) { map.setDrawGeojson({ type: 'FeatureCollection', features: [] }); map.setDrawGeojson({ type: 'FeatureCollection', features: [newFeature] }); map.disableDraw(currentDrawType); setIsDrawing(false) }\r\n // setShowShapeTypeButtons(shouldShowShapeButtons(newCoords)); // Let effect handle this\r\n } else {\r\n if (!newCoords.trim()) { setGeojson(undefined); if (map && drawEnabled) { map.setDrawGeojson({ type: 'FeatureCollection', features: [] }); map.enableDraw(currentDrawType); setIsDrawing(true) } setShowShapeTypeButtons(false) } else if (!error) { setError('Cannot form valid shape with coords/tools.') }\r\n }\r\n }\r\n\r\n const applyShapeType = (shapeType: EMapShape): void => { /* ... same ... */\r\n const newFeature = createGeoJSONFromCoordinates(coordinates, shapeType)\r\n if (newFeature) { setGeojson(newFeature); setError(undefined) } else if (!error) { setError(`Could not create ${shapeType === EMapShape.polygon ? 'poly' : 'path'}.`) }\r\n }\r\n\r\n // ---- JSX Return (Reverting Button ClassNames and removing disabled) ----\r\n return (\r\n <div>\r\n <FieldLabel field={field} disabled={disabled} value={value} onChange={onChange} />\r\n <div className=\"relative z-0\">\r\n {drawEnabled && (drawPolygonEnabled || drawPathEnabled || drawPointEnabled) && (\r\n <div className=\"absolute z-20 top-4 right-4 flex flex-col gap-2\">\r\n {/* Point Button - Render only if allowed */}\r\n {drawPointEnabled && (\r\n <div className=\"tooltip-container relative group\">\r\n <Button\r\n onClick={() => { handleDrawTypeChange(EMapShape.point) }}\r\n // Reverted className logic\r\n className={`p-2 rounded-lg shadow-lg ${\r\n currentDrawType === EMapShape.point && isDrawing\r\n ? 'bg-white hover:bg-gray-50 ring-2 ring-yellow-200 shadow-[0_0_10px_rgba(253,224,71,0.5)]'\r\n : 'bg-gray-100 hover:bg-gray-50'\r\n } text-black w-10 h-10 flex items-center justify-center`}\r\n aria-label=\"Draw Point\"\r\n >\r\n <DrawingPinFilledIcon className=\"w-5 h-5\" />\r\n <span className=\"tooltip absolute right-full mr-2 px-2 py-1 bg-gray-800 text-white text-sm rounded whitespace-nowrap opacity-0 group-hover:opacity-100 pointer-events-none\">\r\n Draw Point\r\n </span>\r\n </Button>\r\n </div>\r\n )}\r\n {/* Path Button - Render only if allowed */}\r\n {drawPathEnabled && (\r\n <div className=\"tooltip-container relative group\">\r\n <Button\r\n onClick={() => { handleDrawTypeChange(EMapShape.linestring) }}\r\n // Reverted className logic\r\n className={`p-2 rounded-lg shadow-lg ${\r\n currentDrawType === EMapShape.linestring && isDrawing\r\n ? 'bg-white hover:bg-gray-50 ring-2 ring-yellow-200 shadow-[0_0_10px_rgba(253,224,71,0.5)]'\r\n : 'bg-gray-100 hover:bg-gray-50'\r\n } text-black w-10 h-10 flex items-center justify-center`}\r\n aria-label=\"Draw Path\"\r\n >\r\n <BorderSolidIcon className=\"w-5 h-5\" />\r\n <span className=\"tooltip absolute right-full mr-2 px-2 py-1 bg-gray-800 text-white text-sm rounded whitespace-nowrap opacity-0 group-hover:opacity-100 pointer-events-none\">\r\n Draw Path\r\n </span>\r\n </Button>\r\n </div>\r\n )}\r\n {/* Polygon Button - Render only if allowed */}\r\n {drawPolygonEnabled && (\r\n <div className=\"tooltip-container relative group\">\r\n <Button\r\n onClick={() => { handleDrawTypeChange(EMapShape.polygon) }}\r\n // Reverted className logic\r\n className={`p-2 rounded-lg shadow-lg ${\r\n currentDrawType === EMapShape.polygon && isDrawing\r\n ? 'bg-white hover:bg-gray-50 ring-2 ring-yellow-200 shadow-[0_0_10px_rgba(253,224,71,0.5)]'\r\n : 'bg-gray-100 hover:bg-gray-50'\r\n } text-black w-10 h-10 flex items-center justify-center`}\r\n aria-label=\"Draw Polygon\"\r\n >\r\n <SquareIcon className=\"w-5 h-5 rotate-45\" />\r\n <span className=\"tooltip absolute right-full mr-2 px-2 py-1 bg-gray-800 text-white text-sm rounded whitespace-nowrap opacity-0 group-hover:opacity-100 pointer-events-none\">\r\n Draw Polygon\r\n </span>\r\n </Button>\r\n </div>\r\n )}\r\n {/* Clear Button - Render if shape exists */}\r\n {hasValidShape(geojson) && (\r\n <div className=\"tooltip-container relative group\">\r\n <Button\r\n onClick={clearShape}\r\n className=\"p-2 rounded-lg shadow-lg bg-red-500 hover:bg-red-600 text-white w-10 h-10 flex items-center justify-center\"\r\n aria-label=\"Clear Shape\"\r\n >\r\n <TrashIcon className=\"w-5 h-5\" />\r\n <span className=\"tooltip absolute right-full mr-2 px-2 py-1 bg-gray-800 text-white text-sm rounded whitespace-nowrap opacity-0 group-hover:opacity-100 pointer-events-none\">\r\n Clear Shape\r\n </span>\r\n </Button>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n {\r\n disabled && (\r\n <div className=\"absolute z-50 bg-white bg-opacity-20 cursor-not-allowed top-0 right-0 left-0 bottom-0\"></div>\r\n )\r\n }\r\n {/* Map Component */}\r\n <Map {...MAP_CONFIG} setState={setMapState} />\r\n\r\n {/* Coordinate Input Section */}\r\n {showCoordinateInput && (\r\n <div className=\"mt-4\">\r\n <div className=\"flex justify-between items-center mb-2 flex-wrap gap-y-2\">\r\n <span className=\"text-sm\"> {/* ... label ... */} </span>\r\n {showShapeTypeButtons && (drawPathEnabled || drawPolygonEnabled) && (\r\n <div className=\"flex gap-2\"> {/* ... Create Path/Polygon buttons ... */}\r\n {drawPathEnabled && <Button onClick={() => { applyShapeType(EMapShape.linestring) }} className=\"px-3 py-1 bg-white hover:bg-gray-50 text-black rounded-lg shadow-sm border border-gray-200 text-xs flex items-center gap-1\"><BorderSolidIcon className=\"w-3 h-3\" />Create Path</Button>}\r\n {drawPolygonEnabled && <Button onClick={() => { applyShapeType(EMapShape.polygon) }} className=\"px-3 py-1 bg-white hover:bg-gray-50 text-black rounded-lg shadow-sm border border-gray-200 text-xs flex items-center gap-1\"><SquareIcon className=\"w-3 h-3 rotate-45\" />Create Polygon</Button>}\r\n </div>\r\n )}\r\n </div>\r\n <TextArea error={error} disabled={disabled} className='min-h-[100px] bg-slate-50 rounded-lg shadow-inner font-mono text-sm' id={`${field.id}-coordinates`} testId={`${field.id}-coordinates`} value={coordinates} onChange={handleCoordinatesChange} placeholder={'...'} aria-label=\"Coordinates Input\" />\r\n {error && <p className=\"text-red-600 text-xs mt-1\">{error}</p>}\r\n </div>\r\n )}\r\n\r\n {/* Debug Output (Optional) */}\r\n {showGeoJSONInput && <TextArea error={error} className='...' id={field.id + '-debug'} testId={field.id + '-debug'} label={<FieldLabel field={{ ...field, label: 'Debug GeoJSON Feature State' }} disabled={disabled} />} value={JSON.stringify(value, null, 2)} />}\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default GeometryInput\r\n"],"names":["React","Map"],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import { __assign } from '../../../../node_modules/tslib/tslib.es6.js';
2
1
  import React__default, { useState, useEffect } from 'react';
3
2
  import ReactCodeMirror from '../../../../node_modules/@uiw/react-codemirror/esm/index.js';
4
3
  import { json } from '../../../../node_modules/@codemirror/lang-json/dist/index.js';
@@ -10,6 +9,7 @@ import { Button } from '../../../../node_modules/@axdspub/axiom-ui-utilities/lib
10
9
  import { UpdateIcon, ExclamationTriangleIcon } from '../../../../node_modules/@radix-ui/react-icons/dist/react-icons.esm.js';
11
10
  import FieldLabel from '../FieldLabel.js';
12
11
  import { CopyButton } from '../../Manage/CopyableJSONOutput.js';
12
+ import debounce from '../../../../node_modules/lodash-es/debounce.js';
13
13
 
14
14
  var getFormatted = function (val, fmt) {
15
15
  if (fmt === 'json') {
@@ -31,7 +31,7 @@ var tryGetFormatted = function (val, fmt) {
31
31
  };
32
32
  var JsonYamlEditor = function (_a) {
33
33
  var _b, _c, _d, _e;
34
- var field = _a.field, onChange = _a.onChange, value = _a.value;
34
+ var field = _a.field, onChange = _a.onChange, value = _a.value, disabled = _a.disabled;
35
35
  var jsonField = field;
36
36
  var exportAsString = (_c = (_b = jsonField === null || jsonField === void 0 ? void 0 : jsonField.settings) === null || _b === void 0 ? void 0 : _b.exportAsString) !== null && _c !== void 0 ? _c : false;
37
37
  var allowEmpty = (_e = (_d = jsonField === null || jsonField === void 0 ? void 0 : jsonField.settings) === null || _d === void 0 ? void 0 : _d.allowEmpty) !== null && _e !== void 0 ? _e : false;
@@ -101,6 +101,7 @@ var JsonYamlEditor = function (_a) {
101
101
  }
102
102
  }
103
103
  };
104
+ var debounced = debounce(handleChange, 500);
104
105
  // Format JSON or YAML
105
106
  var handleFormat = function () {
106
107
  try {
@@ -137,7 +138,7 @@ var JsonYamlEditor = function (_a) {
137
138
  };
138
139
  var btnClass = 'border-0 rounded-none';
139
140
  return (React__default.createElement("div", { className: 'flex flex-col h-full relative' },
140
- React__default.createElement(FieldLabel, __assign({}, field)),
141
+ React__default.createElement(FieldLabel, { field: field, disabled: disabled, value: value, onChange: onChange }),
141
142
  React__default.createElement("div", { className: 'flex flex-row' },
142
143
  React__default.createElement(Button, { size: 'xs', disabled: error !== null, className: "".concat(btnClass, " ").concat(format !== 'json' ? 'font-normal' : 'text-white bg-[#282c34]'), onClick: function () { updateFormat('json'); } }, "JSON"),
143
144
  React__default.createElement(Button, { size: 'xs', disabled: error !== null, className: "".concat(btnClass, " ").concat(format !== 'yaml' ? 'font-normal' : 'text-white bg-[#282c34]'), onClick: function () { updateFormat('yaml'); } }, "YAML"),
@@ -156,11 +157,11 @@ var JsonYamlEditor = function (_a) {
156
157
  : jsYaml.dump(workingValue)
157
158
  : workingValue, className: 'white z-40' })),
158
159
  React__default.createElement("div", { className: 'h-full flex-grow overflow-auto min-h-[300px]' },
159
- React__default.createElement(ReactCodeMirror, { value: format === 'yaml' && workingValue === '{}' ? '' : workingValue, extensions: [
160
+ React__default.createElement(ReactCodeMirror, { readOnly: disabled, value: format === 'yaml' && workingValue === '{}' ? '' : workingValue, extensions: [
160
161
  format === 'json' ? json() : yaml(),
161
162
  autocompletion(),
162
163
  EditorView.lineWrapping
163
- ], height: '100%', className: 'h-full', onChange: handleChange, theme: "dark", onFocus: function () {
164
+ ], height: '100%', className: 'h-full', onChange: debounced, theme: "dark", onFocus: function () {
164
165
  console.log('FOCUS');
165
166
  setHasFocus(true);
166
167
  }, onBlur: function () {
@@ -1 +1 @@
1
- {"version":3,"file":"JSON.js","sources":["../../../../../../src/Form/Components/Inputs/JSON.tsx"],"sourcesContent":["import React, { type ReactElement, useEffect, useState } from 'react'\r\nimport CodeMirror from '@uiw/react-codemirror'\r\nimport { json } from '@codemirror/lang-json'\r\nimport { yaml } from '@codemirror/lang-yaml'\r\nimport { autocompletion } from '@codemirror/autocomplete'\r\nimport { EditorView } from '@codemirror/view'\r\nimport yamlParser from 'js-yaml'\r\nimport { Button } from '@axdspub/axiom-ui-utilities'\r\nimport { ExclamationTriangleIcon, UpdateIcon } from '@radix-ui/react-icons'\r\nimport { type IJSONField, type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { CopyButton } from '@/Form/Manage/CopyableJSONOutput'\r\n\r\nconst getFormatted = (val: string, fmt: string): string => {\r\n if (fmt === 'json') {\r\n const jsonObject = JSON.parse(val)\r\n return JSON.stringify(jsonObject, null, 2)\r\n } else {\r\n const yamlObject = yamlParser.load(val)\r\n return yamlParser.dump(yamlObject)\r\n }\r\n}\r\n\r\nconst tryGetFormatted = (val: string, fmt: string): string => {\r\n try {\r\n return getFormatted(val, fmt)\r\n } catch (error) {\r\n return val\r\n }\r\n}\r\n\r\nconst JsonYamlEditor = ({ field, onChange, value }: IFieldInputProps): ReactElement => {\r\n const jsonField = field as IJSONField\r\n const exportAsString = jsonField?.settings?.exportAsString ?? false\r\n const allowEmpty = jsonField?.settings?.allowEmpty ?? false\r\n const [format, setFormat] = useState<'json' | 'yaml'>('json')\r\n const [workingValue, setWorkingValue] = useState<string>('')\r\n const [error, setError] = useState<string | null>(null)\r\n const [hasFocus, setHasFocus] = useState(false)\r\n\r\n useEffect(() => {\r\n if (!hasFocus) {\r\n setWorkingValue(\r\n typeof value === 'object'\r\n ? JSON.stringify(value, null, 2)\r\n : (value !== undefined && value !== null\r\n ? tryGetFormatted(String(value), format)\r\n : allowEmpty\r\n ? ''\r\n : '{}'\r\n )\r\n )\r\n }\r\n }, [value])\r\n\r\n // Validate JSON and display error\r\n const validateJson = (val: string): boolean => {\r\n try {\r\n if (val.trim() === '') {\r\n setError(null)\r\n return true\r\n }\r\n JSON.parse(val)\r\n setError(null) // Clear error if valid\r\n return true\r\n } catch (err) {\r\n setError('Invalid JSON: ' + (err as Error).message)\r\n return false\r\n }\r\n }\r\n\r\n const validateYaml = (val: string): boolean => {\r\n try {\r\n if (val.trim() === '') {\r\n setError(null)\r\n return true\r\n }\r\n yamlParser.load(val)\r\n setError(null)\r\n return true\r\n } catch (err) {\r\n setError('Invalid YAML: ' + (err as Error).message)\r\n return false\r\n }\r\n }\r\n\r\n // Handle content change\r\n const handleChange = (val: string): void => {\r\n setWorkingValue(val)\r\n if (format === 'json') {\r\n if (validateJson(val)) {\r\n if (!allowEmpty && val.trim() === '') {\r\n val = '{}'\r\n }\r\n onChange(exportAsString ? val : JSON.parse(val))\r\n }\r\n } else if (format === 'yaml') {\r\n if (validateYaml(val)) {\r\n const json = JSON.stringify(val === '' && !allowEmpty ? '{}' : yamlParser.load(val), null, 2)\r\n if (validateJson(json)) {\r\n onChange(exportAsString ? json : JSON.parse(json))\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Format JSON or YAML\r\n const handleFormat = (): void => {\r\n try {\r\n setWorkingValue(getFormatted(workingValue, format))\r\n setError(null)\r\n } catch (error) {\r\n setError('Formatting failed: Invalid data.')\r\n }\r\n }\r\n\r\n const updateFormat = (newFormat: 'json' | 'yaml'): void => {\r\n try {\r\n if (newFormat === 'yaml') {\r\n if (workingValue.trim() !== '') {\r\n const jsonObject = JSON.parse(workingValue)\r\n setWorkingValue(yamlParser.dump(jsonObject))\r\n }\r\n setFormat('yaml')\r\n setError(null)\r\n } else {\r\n if (workingValue.trim() !== '') {\r\n const yamlObject = yamlParser.load(workingValue)\r\n const jsonString = JSON.stringify(yamlObject, null, 2)\r\n setWorkingValue(jsonString)\r\n validateJson(jsonString)\r\n }\r\n setFormat('json')\r\n }\r\n } catch (error) {\r\n setError('Format conversion failed: Invalid data.')\r\n }\r\n }\r\n\r\n const btnClass = 'border-0 rounded-none'\r\n\r\n return (\r\n <div className='flex flex-col h-full relative'>\r\n <FieldLabel {...field} />\r\n <div className='flex flex-row'>\r\n <Button size='xs' disabled={error !== null} className={`${btnClass} ${format !== 'json' ? 'font-normal' : 'text-white bg-[#282c34]'}`} onClick={() => { updateFormat('json') }}>JSON</Button>\r\n <Button size='xs' disabled={error !== null} className={`${btnClass} ${format !== 'yaml' ? 'font-normal' : 'text-white bg-[#282c34]'}`} onClick={() => { updateFormat('yaml') }}>YAML</Button>\r\n <div className=\"ml-auto\">\r\n <Button size='xs' className={btnClass} onClick={() => { handleFormat() }}>Format <UpdateIcon className='inline w-3 h-3 -mt-1 ml-1' /></Button>\r\n </div>\r\n </div>\r\n\r\n {error && <p className=\"text-red-500 text-xs mb-2 absolute bg-white bg-opacity-90 max-w-[50%] p-2 right-0 z-40\"><ExclamationTriangleIcon className='inline w-3 h-3 -mt-1 mr-1' /> {error}</p>}\r\n <span className='absolute right-6 bottom-4 pointer-events-auto z-40'>\r\n <CopyButton string={\r\n error === null && workingValue !== ''\r\n ? format === 'json'\r\n ? JSON.stringify(JSON.parse(workingValue), null, 2)\r\n : yamlParser.dump(workingValue)\r\n : workingValue\r\n } className='white z-40' />\r\n </span>\r\n <div className='h-full flex-grow overflow-auto min-h-[300px]'>\r\n <CodeMirror\r\n value={format === 'yaml' && workingValue === '{}' ? '' : workingValue}\r\n extensions={[\r\n format === 'json' ? json() : yaml(),\r\n autocompletion(),\r\n EditorView.lineWrapping\r\n ]}\r\n height='100%'\r\n className='h-full'\r\n onChange={handleChange}\r\n theme=\"dark\"\r\n onFocus={() => {\r\n console.log('FOCUS')\r\n setHasFocus(true)\r\n }}\r\n onBlur={() => {\r\n console.log('BLUR')\r\n setHasFocus(false)\r\n }}\r\n />\r\n </div>\r\n </div>\r\n\r\n )\r\n}\r\n\r\nexport default JsonYamlEditor\r\n"],"names":["yamlParser","React","CodeMirror"],"mappings":"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"}
1
+ {"version":3,"file":"JSON.js","sources":["../../../../../../src/Form/Components/Inputs/JSON.tsx"],"sourcesContent":["import React, { type ReactElement, useEffect, useState } from 'react'\r\nimport CodeMirror from '@uiw/react-codemirror'\r\nimport { json } from '@codemirror/lang-json'\r\nimport { yaml } from '@codemirror/lang-yaml'\r\nimport { autocompletion } from '@codemirror/autocomplete'\r\nimport { EditorView } from '@codemirror/view'\r\nimport yamlParser from 'js-yaml'\r\nimport { Button } from '@axdspub/axiom-ui-utilities'\r\nimport { ExclamationTriangleIcon, UpdateIcon } from '@radix-ui/react-icons'\r\nimport { type IJSONField, type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { CopyButton } from '@/Form/Manage/CopyableJSONOutput'\r\nimport { debounce } from 'lodash-es'\r\n\r\nconst getFormatted = (val: string, fmt: string): string => {\r\n if (fmt === 'json') {\r\n const jsonObject = JSON.parse(val)\r\n return JSON.stringify(jsonObject, null, 2)\r\n } else {\r\n const yamlObject = yamlParser.load(val)\r\n return yamlParser.dump(yamlObject)\r\n }\r\n}\r\n\r\nconst tryGetFormatted = (val: string, fmt: string): string => {\r\n try {\r\n return getFormatted(val, fmt)\r\n } catch (error) {\r\n return val\r\n }\r\n}\r\n\r\nconst JsonYamlEditor = ({ field, onChange, value, disabled }: IFieldInputProps): ReactElement => {\r\n const jsonField = field as IJSONField\r\n const exportAsString = jsonField?.settings?.exportAsString ?? false\r\n const allowEmpty = jsonField?.settings?.allowEmpty ?? false\r\n const [format, setFormat] = useState<'json' | 'yaml'>('json')\r\n const [workingValue, setWorkingValue] = useState<string>('')\r\n const [error, setError] = useState<string | null>(null)\r\n const [hasFocus, setHasFocus] = useState(false)\r\n\r\n useEffect(() => {\r\n if (!hasFocus) {\r\n setWorkingValue(\r\n typeof value === 'object'\r\n ? JSON.stringify(value, null, 2)\r\n : (value !== undefined && value !== null\r\n ? tryGetFormatted(String(value), format)\r\n : allowEmpty\r\n ? ''\r\n : '{}'\r\n )\r\n )\r\n }\r\n }, [value])\r\n\r\n // Validate JSON and display error\r\n const validateJson = (val: string): boolean => {\r\n try {\r\n if (val.trim() === '') {\r\n setError(null)\r\n return true\r\n }\r\n JSON.parse(val)\r\n setError(null) // Clear error if valid\r\n return true\r\n } catch (err) {\r\n setError('Invalid JSON: ' + (err as Error).message)\r\n return false\r\n }\r\n }\r\n\r\n const validateYaml = (val: string): boolean => {\r\n try {\r\n if (val.trim() === '') {\r\n setError(null)\r\n return true\r\n }\r\n yamlParser.load(val)\r\n setError(null)\r\n return true\r\n } catch (err) {\r\n setError('Invalid YAML: ' + (err as Error).message)\r\n return false\r\n }\r\n }\r\n\r\n // Handle content change\r\n const handleChange = (val: string): void => {\r\n setWorkingValue(val)\r\n if (format === 'json') {\r\n if (validateJson(val)) {\r\n if (!allowEmpty && val.trim() === '') {\r\n val = '{}'\r\n }\r\n onChange(exportAsString ? val : JSON.parse(val))\r\n }\r\n } else if (format === 'yaml') {\r\n if (validateYaml(val)) {\r\n const json = JSON.stringify(val === '' && !allowEmpty ? '{}' : yamlParser.load(val), null, 2)\r\n if (validateJson(json)) {\r\n onChange(exportAsString ? json : JSON.parse(json))\r\n }\r\n }\r\n }\r\n }\r\n\r\n const debounced = debounce(handleChange, 500)\r\n\r\n // Format JSON or YAML\r\n const handleFormat = (): void => {\r\n try {\r\n setWorkingValue(getFormatted(workingValue, format))\r\n setError(null)\r\n } catch (error) {\r\n setError('Formatting failed: Invalid data.')\r\n }\r\n }\r\n\r\n const updateFormat = (newFormat: 'json' | 'yaml'): void => {\r\n try {\r\n if (newFormat === 'yaml') {\r\n if (workingValue.trim() !== '') {\r\n const jsonObject = JSON.parse(workingValue)\r\n setWorkingValue(yamlParser.dump(jsonObject))\r\n }\r\n setFormat('yaml')\r\n setError(null)\r\n } else {\r\n if (workingValue.trim() !== '') {\r\n const yamlObject = yamlParser.load(workingValue)\r\n const jsonString = JSON.stringify(yamlObject, null, 2)\r\n setWorkingValue(jsonString)\r\n validateJson(jsonString)\r\n }\r\n setFormat('json')\r\n }\r\n } catch (error) {\r\n setError('Format conversion failed: Invalid data.')\r\n }\r\n }\r\n\r\n const btnClass = 'border-0 rounded-none'\r\n\r\n return (\r\n <div className='flex flex-col h-full relative'>\r\n <FieldLabel field={field} disabled={disabled} value={value} onChange={onChange} />\r\n <div className='flex flex-row'>\r\n <Button size='xs' disabled={error !== null} className={`${btnClass} ${format !== 'json' ? 'font-normal' : 'text-white bg-[#282c34]'}`} onClick={() => { updateFormat('json') }}>JSON</Button>\r\n <Button size='xs' disabled={error !== null} className={`${btnClass} ${format !== 'yaml' ? 'font-normal' : 'text-white bg-[#282c34]'}`} onClick={() => { updateFormat('yaml') }}>YAML</Button>\r\n <div className=\"ml-auto\">\r\n <Button size='xs' className={btnClass} onClick={() => { handleFormat() }}>Format <UpdateIcon className='inline w-3 h-3 -mt-1 ml-1' /></Button>\r\n </div>\r\n </div>\r\n\r\n {error && <p className=\"text-red-500 text-xs mb-2 absolute bg-white bg-opacity-90 max-w-[50%] p-2 right-0 z-40\"><ExclamationTriangleIcon className='inline w-3 h-3 -mt-1 mr-1' /> {error}</p>}\r\n <span className='absolute right-6 bottom-4 pointer-events-auto z-40'>\r\n <CopyButton string={\r\n error === null && workingValue !== ''\r\n ? format === 'json'\r\n ? JSON.stringify(JSON.parse(workingValue), null, 2)\r\n : yamlParser.dump(workingValue)\r\n : workingValue\r\n } className='white z-40' />\r\n </span>\r\n <div className='h-full flex-grow overflow-auto min-h-[300px]'>\r\n <CodeMirror\r\n readOnly={disabled}\r\n value={format === 'yaml' && workingValue === '{}' ? '' : workingValue}\r\n extensions={[\r\n format === 'json' ? json() : yaml(),\r\n autocompletion(),\r\n EditorView.lineWrapping\r\n ]}\r\n height='100%'\r\n className='h-full'\r\n onChange={debounced}\r\n theme=\"dark\"\r\n onFocus={() => {\r\n console.log('FOCUS')\r\n setHasFocus(true)\r\n }}\r\n onBlur={() => {\r\n console.log('BLUR')\r\n setHasFocus(false)\r\n }}\r\n />\r\n </div>\r\n </div>\r\n\r\n )\r\n}\r\n\r\nexport default JsonYamlEditor\r\n"],"names":["yamlParser","React","CodeMirror"],"mappings":"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"}
@@ -1,18 +1,18 @@
1
- import { __assign } from '../../../../node_modules/tslib/tslib.es6.js';
2
1
  import FieldLabel from '../FieldLabel.js';
2
+ import { createTextFieldDebounce } from '../../../utils/helpers.js';
3
3
  import { TextArea } from '../../../../node_modules/@axdspub/axiom-ui-utilities/library/index.js';
4
4
  import React__default from 'react';
5
5
 
6
6
  var LongStringInput = function (_a) {
7
- var field = _a.field, onChange = _a.onChange, value = _a.value, className = _a.className;
7
+ var field = _a.field, onChange = _a.onChange, value = _a.value, className = _a.className, disabled = _a.disabled;
8
8
  var initialValue = value !== undefined ? value : '';
9
+ var textField = field;
9
10
  var getValue = function () {
10
11
  return initialValue !== undefined && initialValue !== null ? String(initialValue) : '';
11
12
  };
13
+ var debounced = createTextFieldDebounce(onChange, 200);
12
14
  return React__default.createElement("div", null,
13
- React__default.createElement(TextArea, { className: className, id: field.id, testId: field.id, label: React__default.createElement(FieldLabel, __assign({}, field)), value: getValue(), onChange: function (e) {
14
- onChange(e);
15
- } }));
15
+ React__default.createElement(TextArea, { className: className, id: field.id, testId: field.id, label: React__default.createElement(FieldLabel, { field: field, disabled: disabled, value: value, onChange: onChange }), placeholder: textField.placeholder, value: getValue(), onChange: debounced }));
16
16
  };
17
17
 
18
18
  export { LongStringInput as default };
@@ -1 +1 @@
1
- {"version":3,"file":"LongString.js","sources":["../../../../../../src/Form/Components/Inputs/LongString.tsx"],"sourcesContent":["import FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport { TextArea } from '@axdspub/axiom-ui-utilities'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst LongStringInput = ({ field, onChange, value, className }: IFieldInputProps): ReactElement => {\r\n const initialValue = value !== undefined ? value : ''\r\n const getValue = (): string => {\r\n return initialValue !== undefined && initialValue !== null ? String(initialValue) : ''\r\n }\r\n return <div>\r\n <TextArea\r\n className={className}\r\n id={field.id}\r\n testId={field.id}\r\n label={<FieldLabel {...field} />}\r\n value={getValue()}\r\n onChange={(e) => {\r\n onChange(e)\r\n }} /></div>\r\n}\r\n\r\nexport default LongStringInput\r\n"],"names":["React"],"mappings":";;;;;AAKM,IAAA,eAAe,GAAG,UAAC,EAAuD,EAAA;QAArD,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,SAAS,GAAA,EAAA,CAAA,SAAA;AAC1D,IAAA,IAAM,YAAY,GAAG,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,EAAE;AACrD,IAAA,IAAM,QAAQ,GAAG,YAAA;AACf,QAAA,OAAO,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE;AACxF,KAAC;IACD,OAAOA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;AACH,QAAAA,cAAA,CAAA,aAAA,CAAC,QAAQ,EAAA,EACP,SAAS,EAAE,SAAS,EACpB,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,MAAM,EAAE,KAAK,CAAC,EAAE,EAChB,KAAK,EAAEA,cAAA,CAAA,aAAA,CAAC,UAAU,EAAA,QAAA,CAAA,EAAA,EAAK,KAAK,CAAI,CAAA,EAChC,KAAK,EAAE,QAAQ,EAAE,EACjB,QAAQ,EAAE,UAAC,CAAC,EAAA;gBACV,QAAQ,CAAC,CAAC,CAAC;aACZ,EAAA,CAAI,CAAM;AACnB;;;;"}
1
+ {"version":3,"file":"LongString.js","sources":["../../../../../../src/Form/Components/Inputs/LongString.tsx"],"sourcesContent":["import FieldLabel from '@/Form/Components/FieldLabel'\r\nimport { type ITextField, type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport { createTextFieldDebounce } from '@/utils/helpers'\r\nimport { TextArea } from '@axdspub/axiom-ui-utilities'\r\nimport React, { type ReactElement } from 'react'\r\n\r\nconst LongStringInput = ({ field, onChange, value, className, disabled }: IFieldInputProps): ReactElement => {\r\n const initialValue = value !== undefined ? value : ''\r\n const textField = field as ITextField\r\n const getValue = (): string => {\r\n return initialValue !== undefined && initialValue !== null ? String(initialValue) : ''\r\n }\r\n const debounced = createTextFieldDebounce(onChange, 200)\r\n return <div>\r\n <TextArea\r\n className={className}\r\n id={field.id}\r\n testId={field.id}\r\n label={<FieldLabel\r\n field={field}\r\n disabled={disabled}\r\n value={value}\r\n onChange={onChange}\r\n />}\r\n placeholder={textField.placeholder}\r\n value={getValue()}\r\n onChange={debounced} /></div>\r\n}\r\n\r\nexport default LongStringInput\r\n"],"names":["React"],"mappings":";;;;;AAMM,IAAA,eAAe,GAAG,UAAC,EAAiE,EAAA;AAA/D,IAAA,IAAA,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA,EAAE,SAAS,GAAA,EAAA,CAAA,SAAA,EAAE,QAAQ,GAAA,EAAA,CAAA,QAAA;AACpE,IAAA,IAAM,YAAY,GAAG,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,EAAE;IACrD,IAAM,SAAS,GAAG,KAAmB;AACrC,IAAA,IAAM,QAAQ,GAAG,YAAA;AACf,QAAA,OAAO,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE;AACxF,KAAC;IACD,IAAM,SAAS,GAAG,uBAAuB,CAAC,QAAQ,EAAE,GAAG,CAAC;IACxD,OAAOA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;QACHA,cAAC,CAAA,aAAA,CAAA,QAAQ,EACP,EAAA,SAAS,EAAE,SAAS,EACpB,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,MAAM,EAAE,KAAK,CAAC,EAAE,EAChB,KAAK,EAAEA,cAAC,CAAA,aAAA,CAAA,UAAU,EAChB,EAAA,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAAA,CAClB,EACF,WAAW,EAAE,SAAS,CAAC,WAAW,EAClC,KAAK,EAAE,QAAQ,EAAE,EACjB,QAAQ,EAAE,SAAS,EAAI,CAAA,CAAM;AACrC;;;;"}
@@ -2,7 +2,7 @@ import { __assign } from '../../../../node_modules/tslib/tslib.es6.js';
2
2
  import FieldLabel, { FieldLabelText, FieldDescriptionTooltip } from '../FieldLabel.js';
3
3
  import { Checkbox, Slider as SliderSingle, Input } from '../../../../node_modules/@axdspub/axiom-ui-utilities/library/index.js';
4
4
  import { Pencil1Icon, Cross2Icon, CheckIcon } from '../../../../node_modules/@radix-ui/react-icons/dist/react-icons.esm.js';
5
- import React__default, { useState } from 'react';
5
+ import React__default, { useState, useEffect } from 'react';
6
6
 
7
7
  var isValidNumber = function (value) {
8
8
  if (value === undefined || value === null || value === '') {
@@ -12,7 +12,10 @@ var isValidNumber = function (value) {
12
12
  return !isNaN(num) && isFinite(num);
13
13
  };
14
14
  var SliderInput = function (_a) {
15
- var field = _a.field, value = _a.value, onChange = _a.onChange, min = _a.min, max = _a.max, step = _a.step;
15
+ var field = _a.field, value = _a.value, onChange = _a.onChange, min = _a.min, max = _a.max, step = _a.step, disabled = _a.disabled;
16
+ var _b = useState(value !== undefined && value !== null ? +value : undefined), tempValue = _b[0], setTempValue = _b[1];
17
+ var _c = useState(value !== undefined ? String(value) : undefined), tempTextValue = _c[0], setTempTextValue = _c[1];
18
+ var _d = useState('slider'), mode = _d[0], setMode = _d[1];
16
19
  var updateTemp = function (value) {
17
20
  if (value !== undefined && isValidNumber(String(value))) {
18
21
  setTempValue(+value);
@@ -22,13 +25,15 @@ var SliderInput = function (_a) {
22
25
  setTempTextValue(value !== undefined ? String(value) : undefined);
23
26
  }
24
27
  };
25
- var _b = useState(value !== undefined && value !== null ? +value : 0), tempValue = _b[0], setTempValue = _b[1];
26
- var _c = useState(value !== undefined ? String(value) : undefined), tempTextValue = _c[0], setTempTextValue = _c[1];
27
- var _d = useState('slider'), mode = _d[0], setMode = _d[1];
28
+ useEffect(function () {
29
+ if (value !== tempValue) {
30
+ updateTemp(value !== undefined && value !== null ? +value : undefined);
31
+ }
32
+ }, [value]);
28
33
  return (React__default.createElement("div", null,
29
- React__default.createElement(FieldLabel, __assign({}, field)),
34
+ React__default.createElement(FieldLabel, { field: field, disabled: disabled, value: value, onChange: onChange }),
30
35
  React__default.createElement("div", { className: 'flex flex-row gap-4' },
31
- React__default.createElement(SliderSingle, { className: 'flex-grow max-w-[400px] mt-1', size: 'sm', value: tempValue, min: min !== null && min !== void 0 ? min : 0, max: max, onChange: function (v) {
36
+ React__default.createElement(SliderSingle, { wrapperClassName: 'flex-grow max-w-[400px] mt-1', size: 'sm', disabled: disabled, retainUndefinedOnLoad: true, value: tempValue, min: min !== null && min !== void 0 ? min : 0, max: max, onChange: function (v) {
32
37
  updateTemp(v);
33
38
  }, onChangeComplete: function (v) {
34
39
  updateTemp(v);
@@ -36,30 +41,37 @@ var SliderInput = function (_a) {
36
41
  }, id: field.id, testId: field.id, step: step !== null && step !== void 0 ? step : ((max - (min !== null && min !== void 0 ? min : 0)) / 100) }),
37
42
  React__default.createElement("div", { className: 'w-[100px] flex flex-row text-right' }, mode === 'slider'
38
43
  ? React__default.createElement(React__default.Fragment, null,
39
- React__default.createElement("strong", { className: 'w-[60px]' }, tempValue),
40
- React__default.createElement(Pencil1Icon, { className: 'inline m-1 w-5 h-5 cursor-pointer', onClick: function () {
44
+ React__default.createElement("strong", { className: "w-[60px]".concat(disabled ? ' text-slate-400 cursor-not-allowed' : '') }, tempValue),
45
+ React__default.createElement(Pencil1Icon, { className: "inline m-1 w-5 h-5 ".concat(disabled ? ' opacity-50 cursor-not-allowed' : 'cursor-pointer'), onClick: function () {
46
+ if (disabled)
47
+ return;
41
48
  setMode('text');
42
49
  } }))
43
- : React__default.createElement(React__default.Fragment, null,
44
- React__default.createElement(Input, { id: "slider-text-".concat(field.id), testId: "slider-text-".concat(field.id), value: tempTextValue !== undefined && tempTextValue !== null ? String(tempTextValue) : '', className: 'w-[50px] text-xs text-right', size: 'xs', label: undefined, onChange: function (e) {
45
- updateTemp(e);
46
- } }),
47
- React__default.createElement(Cross2Icon, { className: 'flex-none inline w-5 h-5 m-1 cursor-pointer', color: 'red', onClick: function () {
48
- setMode('slider');
49
- } }),
50
- React__default.createElement(CheckIcon, { className: "flex-none inline w-5 h-5 m-1 ".concat(isValidNumber(String(tempTextValue)) ? 'cursor-pointer' : 'opacity-50'), color: 'green', onClick: function () {
51
- if (isValidNumber(String(tempTextValue))) {
52
- setMode('slider');
53
- updateTemp(tempTextValue);
54
- onChange(tempTextValue);
55
- }
56
- } }))))));
50
+ : React__default.createElement(React__default.Fragment, null, ((tempTextValue !== undefined && tempTextValue !== null) ||
51
+ mode === 'text')
52
+ ? React__default.createElement(React__default.Fragment, null,
53
+ React__default.createElement(Input, { id: "slider-text-".concat(field.id), disabled: disabled, testId: "slider-text-".concat(field.id), value: tempTextValue !== undefined && tempTextValue !== null ? String(tempTextValue) : '', className: 'w-[50px] text-xs text-right', size: 'xs', label: undefined, onChange: function (e) {
54
+ updateTemp(e);
55
+ } }),
56
+ React__default.createElement(Cross2Icon, { className: "flex-none inline m-1 w-5 h-5 ".concat(disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'), color: 'red', onClick: function () {
57
+ if (!disabled) {
58
+ setMode('slider');
59
+ }
60
+ } }),
61
+ React__default.createElement(CheckIcon, { className: "flex-none inline m-1 w-5 h-5 ".concat((disabled !== null && disabled !== void 0 ? disabled : !isValidNumber(String(tempTextValue))) ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'), color: 'green', onClick: function () {
62
+ if (!disabled && isValidNumber(String(tempTextValue))) {
63
+ setMode('slider');
64
+ updateTemp(tempTextValue);
65
+ onChange(tempTextValue);
66
+ }
67
+ } }))
68
+ : '')))));
57
69
  };
58
70
  var TextInput = function (_a) {
59
- var field = _a.field, onChange = _a.onChange, value = _a.value, className = _a.className;
71
+ var field = _a.field, onChange = _a.onChange, value = _a.value, className = _a.className, disabled = _a.disabled;
60
72
  var _b = useState(undefined), error = _b[0], setError = _b[1];
61
73
  return (React__default.createElement(React__default.Fragment, null,
62
- React__default.createElement(Input, { id: field.id, testId: field.id, error: error, className: className, value: value !== undefined && value !== null ? String(value) : '', label: React__default.createElement(FieldLabel, __assign({}, field)), onChange: function (e) {
74
+ React__default.createElement(Input, { id: field.id, testId: field.id, error: error, className: className, value: value !== undefined && value !== null ? String(value) : '', label: React__default.createElement(FieldLabel, { field: field, disabled: disabled, value: value, onChange: onChange }), onChange: function (e) {
63
75
  if (e !== undefined && !isNaN(+e) && e !== '') {
64
76
  onChange(+e);
65
77
  setError(undefined);
@@ -73,36 +85,38 @@ var TextInput = function (_a) {
73
85
  }
74
86
  onChange(undefined);
75
87
  }
76
- } }),
77
- error !== undefined && React__default.createElement("p", { className: 'text-red-500 text-xs py-2' }, error)));
88
+ }, after: error !== undefined && React__default.createElement("p", { className: 'text-red-500 text-xs py-2' }, error) })));
78
89
  };
79
90
  var NumberInput = function (_a) {
80
91
  var _b, _c, _d, _e;
81
- var field = _a.field, onChange = _a.onChange, value = _a.value;
82
- var initialValue = value !== undefined ? value : '';
92
+ var field = _a.field, onChange = _a.onChange, value = _a.value, disabled = _a.disabled;
93
+ var initialValue = value !== undefined ? value : undefined;
83
94
  var numberField = field;
84
95
  var isNull = initialValue === undefined || initialValue === null || initialValue === '';
85
96
  var _f = useState(!isNull), userSelectedNotNull = _f[0], setUserSelectedNotNull = _f[1];
86
97
  var canBeNull = ((_b = numberField.settings) === null || _b === void 0 ? void 0 : _b.canBeNull) === true;
98
+ var myOnChange = function (v) {
99
+ onChange(v);
100
+ };
87
101
  var max = (_c = numberField === null || numberField === void 0 ? void 0 : numberField.constraints) === null || _c === void 0 ? void 0 : _c.max;
88
102
  var fieldForInput = canBeNull
89
103
  ? __assign(__assign({}, field), { label: undefined, description: undefined }) : field;
90
104
  var el = (React__default.createElement(React__default.Fragment, null, max !== undefined
91
- ? React__default.createElement(SliderInput, { field: fieldForInput, value: initialValue, onChange: onChange, min: (_d = numberField === null || numberField === void 0 ? void 0 : numberField.constraints) === null || _d === void 0 ? void 0 : _d.min, max: max, step: (_e = numberField === null || numberField === void 0 ? void 0 : numberField.settings) === null || _e === void 0 ? void 0 : _e.step })
92
- : React__default.createElement(TextInput, { field: fieldForInput, value: initialValue, onChange: onChange, className: 'max-w-[300px]' })));
105
+ ? React__default.createElement(SliderInput, { disabled: disabled, field: fieldForInput, value: initialValue, onChange: myOnChange, min: (_d = numberField === null || numberField === void 0 ? void 0 : numberField.constraints) === null || _d === void 0 ? void 0 : _d.min, max: max, step: (_e = numberField === null || numberField === void 0 ? void 0 : numberField.settings) === null || _e === void 0 ? void 0 : _e.step })
106
+ : React__default.createElement(TextInput, { disabled: disabled, field: fieldForInput, value: initialValue, onChange: onChange, className: 'max-w-[300px]' })));
93
107
  if (canBeNull) {
94
108
  return (React__default.createElement("div", { className: 'flex flex-col gap-2' },
95
- React__default.createElement(Checkbox, { id: "".concat(field.id, "-null"), testId: "".concat(field.id, "-null"), label: React__default.createElement(React__default.Fragment, null,
96
- React__default.createElement(FieldLabelText, __assign({}, field)),
109
+ React__default.createElement(Checkbox, { disabled: disabled, id: "".concat(field.id, "-null"), testId: "".concat(field.id, "-null"), label: React__default.createElement(React__default.Fragment, null,
110
+ React__default.createElement(FieldLabelText, { field: field, disabled: disabled, onChange: onChange }),
97
111
  " ",
98
- React__default.createElement(FieldDescriptionTooltip, __assign({}, field))), value: userSelectedNotNull, onChange: function (e) {
112
+ React__default.createElement(FieldDescriptionTooltip, { field: field, disabled: disabled })), value: userSelectedNotNull, onChange: function (e) {
99
113
  var _a, _b, _c, _d;
100
114
  setUserSelectedNotNull(!userSelectedNotNull);
101
115
  if (!e) {
102
116
  onChange(undefined);
103
117
  }
104
118
  else {
105
- onChange((_d = (_c = (_b = (_a = numberField === null || numberField === void 0 ? void 0 : numberField.settings) === null || _a === void 0 ? void 0 : _a.nonNullDefaultValue) !== null && _b !== void 0 ? _b : numberField === null || numberField === void 0 ? void 0 : numberField.defaultValue) !== null && _c !== void 0 ? _c : value) !== null && _d !== void 0 ? _d : 0);
119
+ onChange((_d = (_c = (_b = (_a = numberField === null || numberField === void 0 ? void 0 : numberField.settings) === null || _a === void 0 ? void 0 : _a.nonNullDefaultValue) !== null && _b !== void 0 ? _b : numberField === null || numberField === void 0 ? void 0 : numberField.defaultValue) !== null && _c !== void 0 ? _c : value) !== null && _d !== void 0 ? _d : undefined);
106
120
  }
107
121
  } }),
108
122
  userSelectedNotNull ? el : React__default.createElement(React__default.Fragment, null)));