@axdspub/axiom-ui-forms 0.2.10 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/README.md +272 -272
  2. package/library/axiom-ui-forms.d.ts +107 -33
  3. package/library/esm/_virtual/index10.js +2 -2
  4. package/library/esm/_virtual/index12.js +2 -6
  5. package/library/esm/_virtual/index12.js.map +1 -1
  6. package/library/esm/_virtual/index13.js +2 -6
  7. package/library/esm/_virtual/index13.js.map +1 -1
  8. package/library/esm/_virtual/index14.js +2 -2
  9. package/library/esm/_virtual/index15.js +2 -2
  10. package/library/esm/_virtual/index3.js +2 -2
  11. package/library/esm/_virtual/index3.js.map +1 -1
  12. package/library/esm/_virtual/index4.js +2 -2
  13. package/library/esm/_virtual/index6.js +2 -2
  14. package/library/esm/_virtual/index7.js +6 -2
  15. package/library/esm/_virtual/index7.js.map +1 -1
  16. package/library/esm/_virtual/index8.js +6 -2
  17. package/library/esm/_virtual/index8.js.map +1 -1
  18. package/library/esm/_virtual/index9.js +2 -2
  19. package/library/esm/node_modules/@axdspub/axiom-ui-utilities/library/index.js +1 -1
  20. package/library/esm/node_modules/@axdspub/axiom-ui-utilities/library/index.js.map +1 -1
  21. package/library/esm/node_modules/@radix-ui/react-icons/dist/react-icons.esm.js +23 -1
  22. package/library/esm/node_modules/@radix-ui/react-icons/dist/react-icons.esm.js.map +1 -1
  23. package/library/esm/node_modules/ajv/dist/compile/codegen/index.js +1 -1
  24. package/library/esm/node_modules/ajv/dist/compile/index.js +1 -1
  25. package/library/esm/node_modules/ajv/dist/vocabularies/applicator/index.js +1 -1
  26. package/library/esm/node_modules/ajv/dist/vocabularies/core/index.js +1 -1
  27. package/library/esm/node_modules/ajv/dist/vocabularies/discriminator/index.js +1 -1
  28. package/library/esm/node_modules/ajv/dist/vocabularies/format/index.js +1 -1
  29. package/library/esm/node_modules/fast-uri/index.js +1 -1
  30. package/library/esm/node_modules/hast-util-to-jsx-runtime/lib/index.js +1 -1
  31. package/library/esm/node_modules/jotai/esm/react.js +135 -0
  32. package/library/esm/node_modules/jotai/esm/react.js.map +1 -0
  33. package/library/esm/node_modules/jotai/esm/vanilla/internals.js +551 -0
  34. package/library/esm/node_modules/jotai/esm/vanilla/internals.js.map +1 -0
  35. package/library/esm/node_modules/jotai/esm/vanilla.js +111 -0
  36. package/library/esm/node_modules/jotai/esm/vanilla.js.map +1 -0
  37. package/library/esm/node_modules/json-schema-traverse/index.js +1 -1
  38. package/library/esm/node_modules/react-router/dist/development/chunk-HA7DTUK3.js +1 -1
  39. package/library/esm/node_modules/unified/lib/index.js +1 -1
  40. package/library/esm/src/Form/Components/FieldCreator.js +19 -4
  41. package/library/esm/src/Form/Components/FieldCreator.js.map +1 -1
  42. package/library/esm/src/Form/Components/FieldLabel.js +1 -1
  43. package/library/esm/src/Form/Components/FieldLabel.js.map +1 -1
  44. package/library/esm/src/Form/Components/InlineMarkdown.js.map +1 -1
  45. package/library/esm/src/Form/Components/Inputs/Boolean.js.map +1 -1
  46. package/library/esm/src/Form/Components/Inputs/Constant.js.map +1 -1
  47. package/library/esm/src/Form/Components/Inputs/Date.js.map +1 -1
  48. package/library/esm/src/Form/Components/Inputs/DateTime.js.map +1 -1
  49. package/library/esm/src/Form/Components/Inputs/GeoJSON.js.map +1 -1
  50. package/library/esm/src/Form/Components/Inputs/GeoJSONInputLoader.js.map +1 -1
  51. package/library/esm/src/Form/Components/Inputs/Geometry.js +1 -1
  52. package/library/esm/src/Form/Components/Inputs/Geometry.js.map +1 -1
  53. package/library/esm/src/Form/Components/Inputs/GeometryInputLoader.js.map +1 -1
  54. package/library/esm/src/Form/Components/Inputs/JSON.js +64 -33
  55. package/library/esm/src/Form/Components/Inputs/JSON.js.map +1 -1
  56. package/library/esm/src/Form/Components/Inputs/JSONInputLoader.js.map +1 -1
  57. package/library/esm/src/Form/Components/Inputs/LongString.js.map +1 -1
  58. package/library/esm/src/Form/Components/Inputs/Number.js +34 -9
  59. package/library/esm/src/Form/Components/Inputs/Number.js.map +1 -1
  60. package/library/esm/src/Form/Components/Inputs/Object.js.map +1 -1
  61. package/library/esm/src/Form/Components/Inputs/OneOfInput.js.map +1 -1
  62. package/library/esm/src/Form/Components/Inputs/RadioGroup.js.map +1 -1
  63. package/library/esm/src/Form/Components/Inputs/SingleSelect.js +2 -1
  64. package/library/esm/src/Form/Components/Inputs/SingleSelect.js.map +1 -1
  65. package/library/esm/src/Form/Components/Inputs/String.js.map +1 -1
  66. package/library/esm/src/Form/Components/Inputs/Time.js.map +1 -1
  67. package/library/esm/src/Form/Components/Inputs/index.js +11 -0
  68. package/library/esm/src/Form/Components/Inputs/index.js.map +1 -0
  69. package/library/esm/src/Form/Components/Inputs/inputMap.js.map +1 -1
  70. package/library/esm/src/Form/Creator/FormContextProvider.js.map +1 -1
  71. package/library/esm/src/Form/Creator/FormCreator.js +17 -8
  72. package/library/esm/src/Form/Creator/FormCreator.js.map +1 -1
  73. package/library/esm/src/Form/Creator/FormFields.js.map +1 -1
  74. package/library/esm/src/Form/Creator/FormHeader.js.map +1 -1
  75. package/library/esm/src/Form/Creator/FormSection.js.map +1 -1
  76. package/library/esm/src/Form/Creator/FormSectionContextProvider.js.map +1 -1
  77. package/library/esm/src/Form/Creator/NavElement.js.map +1 -1
  78. package/library/esm/src/Form/Creator/Page.js +39 -6
  79. package/library/esm/src/Form/Creator/Page.js.map +1 -1
  80. package/library/esm/src/Form/Creator/Wizard.js +78 -21
  81. package/library/esm/src/Form/Creator/Wizard.js.map +1 -1
  82. package/library/esm/src/Form/Manage/CopyableJSONOutput.js +3 -3
  83. package/library/esm/src/Form/Manage/CopyableJSONOutput.js.map +1 -1
  84. package/library/esm/src/library.js +9 -14
  85. package/library/esm/src/library.js.map +1 -1
  86. package/library/esm/src/utils/getters.js +33 -3
  87. package/library/esm/src/utils/getters.js.map +1 -1
  88. package/library/esm/src/utils/manipulators.js +80 -3
  89. package/library/esm/src/utils/manipulators.js.map +1 -1
  90. package/library/esm/src/utils/resolveRefs.js +44 -0
  91. package/library/esm/src/utils/resolveRefs.js.map +1 -0
  92. package/library/esm/src/utils/responsive/layoutState.js +18 -0
  93. package/library/esm/src/utils/responsive/layoutState.js.map +1 -0
  94. package/library/esm/src/utils/schemaToFormHelpers.js +157 -39
  95. package/library/esm/src/utils/schemaToFormHelpers.js.map +1 -1
  96. package/library/esm/src/utils/validators.js +4 -2
  97. package/library/esm/src/utils/validators.js.map +1 -1
  98. package/package.json +131 -129
  99. package/library/esm/src/Form/resolveRefs.js +0 -26
  100. package/library/esm/src/Form/resolveRefs.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"GeoJSONInputLoader.js","sources":["../../../../../../src/Form/Components/Inputs/GeoJSONInputLoader.tsx"],"sourcesContent":["import { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\nimport { Loader } from '@axdspub/axiom-ui-utilities'\nimport React, { lazy, Suspense, type ReactElement } from 'react'\n\nconst GeoJSONInput = lazy(async () => await import('./GeoJSON'))\nconst GeoJSONInputLoader = (props: IFieldInputProps): ReactElement => {\n return (\n <>\n <Suspense fallback={<div className='h-[500px]'><Loader className='pt-20' /></div>}>\n <GeoJSONInput {...props} />\n </Suspense>\n </>\n )\n}\n\nexport default GeoJSONInputLoader\n"],"names":["React"],"mappings":";;;;AAIA,IAAM,YAAY,GAAG,IAAI,CAAC,YAAA,EAAA,OAAA,SAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,OAAA,WAAA,CAAA,IAAA,EAAA,UAAA,EAAA,EAAA;;AAAY,QAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,OAAO,cAAW,CAAC,CAAA;AAAzB,QAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAA,SAAyB,CAAA;;AAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAC;AAC1D,IAAA,kBAAkB,GAAG,UAAC,KAAuB,EAAA;AACjD,IAAA,QACIA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA;AACE,QAAAA,cAAA,CAAA,aAAA,CAAC,QAAQ,EAAC,EAAA,QAAQ,EAAEA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,WAAW,EAAA;AAAC,gBAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAC,EAAA,SAAS,EAAC,OAAO,GAAG,CAAM,EAAA;AAC7E,YAAAA,cAAA,CAAA,aAAA,CAAC,YAAY,EAAK,QAAA,CAAA,EAAA,EAAA,KAAK,EAAI,CACpB,CACV;AAET;;;;"}
1
+ {"version":3,"file":"GeoJSONInputLoader.js","sources":["../../../../../../src/Form/Components/Inputs/GeoJSONInputLoader.tsx"],"sourcesContent":["import { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport { Loader } from '@axdspub/axiom-ui-utilities'\r\nimport React, { lazy, Suspense, type ReactElement } from 'react'\r\n\r\nconst GeoJSONInput = lazy(async () => await import('./GeoJSON'))\r\nconst GeoJSONInputLoader = (props: IFieldInputProps): ReactElement => {\r\n return (\r\n <>\r\n <Suspense fallback={<div className='h-[500px]'><Loader className='pt-20' /></div>}>\r\n <GeoJSONInput {...props} />\r\n </Suspense>\r\n </>\r\n )\r\n}\r\n\r\nexport default GeoJSONInputLoader\r\n"],"names":["React"],"mappings":";;;;AAIA,IAAM,YAAY,GAAG,IAAI,CAAC,YAAA,EAAA,OAAA,SAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,OAAA,WAAA,CAAA,IAAA,EAAA,UAAA,EAAA,EAAA;;AAAY,QAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,OAAO,cAAW,CAAC,CAAA;AAAzB,QAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAA,SAAyB,CAAA;;AAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAC;AAC1D,IAAA,kBAAkB,GAAG,UAAC,KAAuB,EAAA;AACjD,IAAA,QACIA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA;AACE,QAAAA,cAAA,CAAA,aAAA,CAAC,QAAQ,EAAC,EAAA,QAAQ,EAAEA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,WAAW,EAAA;AAAC,gBAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAC,EAAA,SAAS,EAAC,OAAO,GAAG,CAAM,EAAA;AAC7E,YAAAA,cAAA,CAAA,aAAA,CAAC,YAAY,EAAK,QAAA,CAAA,EAAA,EAAA,KAAK,EAAI,CACpB,CACV;AAET;;;;"}
@@ -386,7 +386,7 @@ var GeometryInput = function (_a) {
386
386
  // ---- JSX Return (Reverting Button ClassNames and removing disabled) ----
387
387
  return (React__default.createElement("div", null,
388
388
  React__default.createElement(FieldLabel, __assign({}, field)),
389
- React__default.createElement("div", { className: "relative" },
389
+ React__default.createElement("div", { className: "relative z-0" },
390
390
  drawEnabled && (drawPolygonEnabled || drawPathEnabled || drawPointEnabled) && (React__default.createElement("div", { className: "absolute z-20 top-4 right-4 flex flex-col gap-2" },
391
391
  drawPointEnabled && (React__default.createElement("div", { className: "tooltip-container relative group" },
392
392
  React__default.createElement(Button, { onClick: function () { handleDrawTypeChange(EMapShape.point); },
@@ -1 +1 @@
1
- {"version":3,"file":"Geometry.js","sources":["../../../../../../src/Form/Components/Inputs/Geometry.tsx"],"sourcesContent":["import { Button, TextArea } from '@axdspub/axiom-ui-utilities'\nimport FieldLabel from '@/Form/Components/FieldLabel'\nimport { type IGeometryField, type IFieldInputProps, type IFormField } from '@/Form/Creator/FormCreatorTypes' // Added IFormField explicitly\n\nimport { EMapShape, type IMap, type IMapDrawEvent, type IStyleableMapProps } from '@axdspub/axiom-maps'\nimport { OpenLayersMap as Map } from '@axdspub/axiom-maps/library/openlayers'\n// Import Geometry type if not already done\nimport { type Feature, type GeoJSON, type Geometry } from 'geojson'\nimport React, { useEffect, useState, type ReactElement, useCallback } from 'react' // Added useCallback\nimport { TrashIcon, SquareIcon, BorderSolidIcon, DrawingPinFilledIcon } from '@radix-ui/react-icons'\n\n/*\nList of coordinates for testing. Around Anchorage.\n...\n*/\n\n// --- calculateCenterFromGeoJSON remains the same (zoom ignored for initial load) ---\nconst calculateCenterFromGeoJSON = (geo: GeoJSON | undefined, defaultCenter?: { lat: number, lon: number, zoom: number }): { lat: number, lon: number, zoom: number } => {\n // If default center is provided, use it\n if (defaultCenter) {\n return defaultCenter\n }\n\n // If input is Geometry, wrap it temporarily for calculation\n let featureCollection: GeoJSON.FeatureCollection | undefined\n if (geo && geo.type !== 'FeatureCollection') {\n if (geo.type === 'Feature') {\n featureCollection = { type: 'FeatureCollection', features: [geo] }\n } else if (geo.type === 'Point' || geo.type === 'LineString' || geo.type === 'Polygon' /* add others as needed */) {\n featureCollection = { type: 'FeatureCollection', features: [{ type: 'Feature', properties: {}, geometry: geo as Geometry }] }\n }\n } else if (geo && geo.type === 'FeatureCollection') {\n featureCollection = geo\n }\n\n // Default to Anchorage if no valid GeoJSON\n const DEFAULT_CENTER = { lat: 61.2181, lon: -149.9003, zoom: 8 }\n\n if (!featureCollection || !('features' in featureCollection) || !Array.isArray(featureCollection.features) || featureCollection.features.length === 0) {\n return DEFAULT_CENTER\n }\n\n const feature = featureCollection.features[0]\n if (!feature?.geometry) {\n return DEFAULT_CENTER\n }\n\n const geometry = feature.geometry\n let coordinates: GeoJSON.Position | GeoJSON.Position[] | GeoJSON.Position[][] = [] // Adjusted type\n\n switch (geometry.type) {\n case 'Polygon':\n coordinates = geometry.coordinates[0] // Get first ring (ignore holes)\n break\n case 'LineString':\n coordinates = geometry.coordinates\n break\n case 'Point':\n coordinates = [geometry.coordinates] // Wrap single point for uniform handling\n break\n default:\n return DEFAULT_CENTER\n }\n\n // Flatten coordinates for bounds calculation if needed (e.g., MultiPoint, MultiLineString)\n const flatCoordinates = ([] as GeoJSON.Position[]).concat(...coordinates as any)\n\n if (!Array.isArray(flatCoordinates) || flatCoordinates.length === 0 || !Array.isArray(flatCoordinates[0])) {\n // Handle single point case where flatCoordinates might be just [lon, lat]\n if (Array.isArray(flatCoordinates) && flatCoordinates.length === 2 && typeof flatCoordinates[0] === 'number') {\n const [lon, lat] = flatCoordinates as unknown as GeoJSON.Position\n // FIX #2: Return a default zoom even for a point here for centering logic,\n // but we won't use this zoom for the initial MAP_CONFIG.\n return { lat, lon, zoom: 8 } // Default zoom\n }\n console.warn('Could not determine coordinates for centering.')\n return DEFAULT_CENTER\n }\n\n // Calculate bounds\n let minLat = Infinity; let maxLat = -Infinity; let minLon = Infinity; let maxLon = -Infinity\n let sumLat = 0; let sumLon = 0; let count = 0\n\n flatCoordinates.forEach((coord: GeoJSON.Position) => {\n if (!Array.isArray(coord) || coord.length < 2) return; const [lon, lat] = coord\n minLat = Math.min(minLat, lat); maxLat = Math.max(maxLat, lat); minLon = Math.min(minLon, lon); maxLon = Math.max(maxLon, lon)\n sumLat += lat; sumLon += lon; count++\n })\n\n if (count === 0) { return DEFAULT_CENTER }\n\n const centerLat = sumLat / count; const centerLon = sumLon / count\n const latDiff = maxLat - minLat; const lonDiff = maxLon - minLon; const maxDiff = Math.max(latDiff, lonDiff)\n\n let zoom = 8 // default zoom\n if (count === 1 || maxDiff === 0) zoom = 12; else if (maxDiff < 0.1) zoom = 12; else if (maxDiff < 0.5) zoom = 10\n else if (maxDiff < 1) zoom = 9; else if (maxDiff < 2) zoom = 8; else if (maxDiff < 5) zoom = 7; else zoom = 6\n\n return { lat: centerLat, lon: centerLon, zoom }\n}\n\n// Helper function to determine initial draw type based on settings\nconst getInitialDrawType = (field: IFormField): EMapShape => {\n const settings = (field as IGeometryField).settings ?? {}\n const drawEnabled = settings.drawEnabled !== false\n const drawPointEnabled = settings.drawPointEnabled === true && drawEnabled\n const drawPathEnabled = settings.drawPathEnabled === true && drawEnabled\n const drawPolygonEnabled = settings.drawPolygonEnabled === true && drawEnabled\n\n if (drawPointEnabled) return EMapShape.point\n if (drawPathEnabled) return EMapShape.linestring\n if (drawPolygonEnabled) return EMapShape.polygon\n return EMapShape.point // Defaulting to Point if none specified\n}\n\nexport const GeometryInput = ({ field, onChange, value }: IFieldInputProps): ReactElement => {\n const [map, setMapState] = useState<IMap | undefined>(undefined)\n const [error, setError] = useState<string | undefined>(undefined)\n const [showGeoJSONInput] = useState<boolean>(false)\n\n const [geojson, setGeojson] = useState<Feature | undefined>(() => {\n if (value && typeof value === 'object' && 'type' in value && value.type !== 'FeatureCollection' && value.type !== 'Feature') {\n return { type: 'Feature', properties: {}, geometry: value as Geometry }\n }\n if (value && typeof value === 'object' && 'type' in value && value.type === 'Feature') { return value as Feature }\n return undefined\n })\n\n const geomField = field as IGeometryField\n\n const drawEnabled = geomField.settings?.drawEnabled !== false\n const drawPointEnabled = geomField.settings?.drawPointEnabled === true && drawEnabled\n const drawPathEnabled = geomField.settings?.drawPathEnabled === true && drawEnabled\n const drawPolygonEnabled = geomField.settings?.drawPolygonEnabled === true && drawEnabled\n const showCoordinateInput = geomField.settings?.showCoordinateInput !== false\n\n const [currentDrawType, setCurrentDrawType] = useState<EMapShape>(() => getInitialDrawType(field))\n const [isDrawing, setIsDrawing] = useState<boolean>(!geojson && drawEnabled)\n\n const initialMapCenter = calculateCenterFromGeoJSON(geojson, geomField.settings?.defaultCenter)\n\n const MAP_CONFIG: IStyleableMapProps = {\n baseLayerKey: 'hybrid',\n height: geomField.settings?.height ?? '500px',\n width: '100%',\n style: { /* ... styles ... */ },\n center: { lat: initialMapCenter.lat, lon: initialMapCenter.lon },\n zoom: initialMapCenter.zoom,\n tools: {\n draw: {\n shape: currentDrawType,\n enabled: drawEnabled && (drawPolygonEnabled || drawPathEnabled || drawPointEnabled)\n }\n }\n }\n\n // ---- Coordinate Handling ----\n const updateCoordinatesFromFeature = useCallback((feature: Feature | undefined): void => {\n if (!feature?.geometry) { setCoordinates(''); return }\n const geometry = feature.geometry; let newCoords = ''\n try {\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 = '' } }\n } catch (e) { console.error('Err format coords:', e); newCoords = '' }\n setCoordinates(newCoords)\n // setShowShapeTypeButtons(shouldShowShapeButtons(newCoords)); // Let coordinate effect handle this\n }, [])\n\n const [coordinates, setCoordinates] = useState<string>(() => {\n if (!geojson?.geometry) return ''; let initCoords = ''; const geometry = geojson.geometry\n try {\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]}` } }\n } catch (e) { console.error('Err init coords:', e); initCoords = '' } return initCoords\n })\n\n useEffect(() => {\n updateCoordinatesFromFeature(geojson)\n }, [geojson, updateCoordinatesFromFeature])\n\n const createGeoJSONFromCoordinates = (coordString: string, forceType?: EMapShape): Feature | undefined => { /* ... same as last working version ... */\n if (!coordString.trim()) { setError(undefined); return undefined }\n try {\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] })\n if (points.length === 0) throw Error('No valid coords')\n if (points.length === 1 && drawPointEnabled) return { type: 'Feature', properties: {}, geometry: { type: 'Point', coordinates: points[0] } }\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] } } }\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 } } }\n setError('Cannot create shape. Check tools/coords.'); return undefined\n } catch (e: any) { setError(`Invalid coords/count: ${e.message}. Use \"lat, lon\"`); return undefined }\n }\n\n const shouldShowShapeButtons = (coords: string): boolean => { /* ... same as last working version ... */\n const validLinesCount = coords.trim().split('\\n').filter(l => l.trim()).length\n return (drawPolygonEnabled || drawPathEnabled) && validLinesCount >= 2\n }\n const [showShapeTypeButtons, setShowShapeTypeButtons] = useState<boolean>(() => shouldShowShapeButtons(coordinates))\n useEffect(() => { setShowShapeTypeButtons(shouldShowShapeButtons(coordinates)) }, [coordinates, drawPolygonEnabled, drawPathEnabled]) // Added effect to update buttons\n\n // ---- Map Event Handlers & State Updates ----\n useEffect(() => { // Map event listeners\n if (!map) return\n const drawCompleteListener = (e: IMapDrawEvent): void => { /* ... same ... */ const f = e.data?.geojson?.features?.[0]; if (f) { setGeojson(f); setIsDrawing(false); map.disableDraw(currentDrawType) } }\n const drawUpdateListener = (e: IMapDrawEvent): void => { /* ... same ... */ const f = e.data?.geojson?.features?.[0]; if (f) { setGeojson(f) } }\n map.onDrawComplete(drawCompleteListener); map.onDrawUpdate(drawUpdateListener)\n // Cleanup omitted\n }, [map, currentDrawType])\n\n useEffect(() => { // Parent onChange trigger\n onChange(geojson?.geometry ?? undefined)\n }, [geojson])\n\n useEffect(() => { // Map drawing/state sync effect\n if (!map) return\n const correctDrawType = getInitialDrawType(field)\n if (currentDrawType !== correctDrawType) {\n setCurrentDrawType(correctDrawType)\n }\n\n if (geojson?.geometry) {\n map.setDrawGeojson({ type: 'FeatureCollection', features: [geojson] })\n map.disableDraw(correctDrawType) // Ensure correct tool is disabled\n setIsDrawing(false)\n } else {\n map.setDrawGeojson({ type: 'FeatureCollection', features: [] })\n if (drawEnabled && (drawPointEnabled || drawPathEnabled || drawPolygonEnabled)) {\n map.enableDraw(correctDrawType) // Enable the correct initial tool\n setIsDrawing(true)\n } else {\n map.disableDraw(correctDrawType) // Ensure drawing is off if not enabled\n setIsDrawing(false)\n }\n }\n }, [map, geojson, drawEnabled, drawPointEnabled, drawPathEnabled, drawPolygonEnabled, currentDrawType, field])\n\n // ---- Helper Functions ----\n const hasValidShape = (feature?: Feature): boolean => !!feature?.geometry\n\n const clearShape = (): void => { /* ... same ... */\n setGeojson(undefined); setCoordinates(''); setShowShapeTypeButtons(false)\n if (map && drawEnabled) { map.setDrawGeojson({ type: 'FeatureCollection', features: [] }); const iType = getInitialDrawType(field); setCurrentDrawType(iType); map.enableDraw(iType); setIsDrawing(true) }\n }\n\n const handleDrawTypeChange = (shapeType: EMapShape): void => { /* ... same as minimal fix version ... */\n if (map && drawEnabled) {\n const isAllowed = (shapeType === EMapShape.point && drawPointEnabled) || (shapeType === EMapShape.linestring && drawPathEnabled) || (shapeType === EMapShape.polygon && drawPolygonEnabled)\n if (isAllowed && shapeType !== currentDrawType) { map.disableDraw(currentDrawType); setCurrentDrawType(shapeType); map.enableDraw(shapeType); setIsDrawing(true) }\n }\n }\n\n const handleCoordinatesChange = (e: string | undefined): void => { /* ... same as minimal fix version ... */\n const newCoords = e ?? ''; setCoordinates(newCoords)\n const pointsCount = newCoords.trim().split('\\n').filter(l => l.trim()).length\n let intendedType: EMapShape | undefined\n if (pointsCount === 1 && drawPointEnabled) intendedType = EMapShape.point\n else if (pointsCount >= 3 && drawPolygonEnabled) intendedType = EMapShape.polygon\n else if (pointsCount >= 2 && drawPathEnabled) intendedType = EMapShape.linestring\n const newFeature = createGeoJSONFromCoordinates(newCoords, intendedType)\n if (newFeature) {\n setGeojson(newFeature); setError(undefined)\n if (map) { map.setDrawGeojson({ type: 'FeatureCollection', features: [] }); map.setDrawGeojson({ type: 'FeatureCollection', features: [newFeature] }); map.disableDraw(currentDrawType); setIsDrawing(false) }\n // setShowShapeTypeButtons(shouldShowShapeButtons(newCoords)); // Let effect handle this\n } else {\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.') }\n }\n }\n\n const applyShapeType = (shapeType: EMapShape): void => { /* ... same ... */\n const newFeature = createGeoJSONFromCoordinates(coordinates, shapeType)\n if (newFeature) { setGeojson(newFeature); setError(undefined) } else if (!error) { setError(`Could not create ${shapeType === EMapShape.polygon ? 'poly' : 'path'}.`) }\n }\n\n // ---- JSX Return (Reverting Button ClassNames and removing disabled) ----\n return (\n <div>\n <FieldLabel {...field} />\n <div className=\"relative\">\n {drawEnabled && (drawPolygonEnabled || drawPathEnabled || drawPointEnabled) && (\n <div className=\"absolute z-20 top-4 right-4 flex flex-col gap-2\">\n {/* Point Button - Render only if allowed */}\n {drawPointEnabled && (\n <div className=\"tooltip-container relative group\">\n <Button\n onClick={() => { handleDrawTypeChange(EMapShape.point) }}\n // Reverted className logic\n className={`p-2 rounded-lg shadow-lg ${\n currentDrawType === EMapShape.point && isDrawing\n ? 'bg-white hover:bg-gray-50 ring-2 ring-yellow-200 shadow-[0_0_10px_rgba(253,224,71,0.5)]'\n : 'bg-gray-100 hover:bg-gray-50'\n } text-black w-10 h-10 flex items-center justify-center`}\n aria-label=\"Draw Point\"\n >\n <DrawingPinFilledIcon className=\"w-5 h-5\" />\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\">\n Draw Point\n </span>\n </Button>\n </div>\n )}\n {/* Path Button - Render only if allowed */}\n {drawPathEnabled && (\n <div className=\"tooltip-container relative group\">\n <Button\n onClick={() => { handleDrawTypeChange(EMapShape.linestring) }}\n // Reverted className logic\n className={`p-2 rounded-lg shadow-lg ${\n currentDrawType === EMapShape.linestring && isDrawing\n ? 'bg-white hover:bg-gray-50 ring-2 ring-yellow-200 shadow-[0_0_10px_rgba(253,224,71,0.5)]'\n : 'bg-gray-100 hover:bg-gray-50'\n } text-black w-10 h-10 flex items-center justify-center`}\n aria-label=\"Draw Path\"\n >\n <BorderSolidIcon className=\"w-5 h-5\" />\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\">\n Draw Path\n </span>\n </Button>\n </div>\n )}\n {/* Polygon Button - Render only if allowed */}\n {drawPolygonEnabled && (\n <div className=\"tooltip-container relative group\">\n <Button\n onClick={() => { handleDrawTypeChange(EMapShape.polygon) }}\n // Reverted className logic\n className={`p-2 rounded-lg shadow-lg ${\n currentDrawType === EMapShape.polygon && isDrawing\n ? 'bg-white hover:bg-gray-50 ring-2 ring-yellow-200 shadow-[0_0_10px_rgba(253,224,71,0.5)]'\n : 'bg-gray-100 hover:bg-gray-50'\n } text-black w-10 h-10 flex items-center justify-center`}\n aria-label=\"Draw Polygon\"\n >\n <SquareIcon className=\"w-5 h-5 rotate-45\" />\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\">\n Draw Polygon\n </span>\n </Button>\n </div>\n )}\n {/* Clear Button - Render if shape exists */}\n {hasValidShape(geojson) && (\n <div className=\"tooltip-container relative group\">\n <Button\n onClick={clearShape}\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\"\n aria-label=\"Clear Shape\"\n >\n <TrashIcon className=\"w-5 h-5\" />\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\">\n Clear Shape\n </span>\n </Button>\n </div>\n )}\n </div>\n )}\n\n {/* Map Component */}\n <Map {...MAP_CONFIG} setState={setMapState} />\n\n {/* Coordinate Input Section */}\n {showCoordinateInput && (\n <div className=\"mt-4\">\n <div className=\"flex justify-between items-center mb-2 flex-wrap gap-y-2\">\n <span className=\"text-sm\"> {/* ... label ... */} </span>\n {showShapeTypeButtons && (drawPathEnabled || drawPolygonEnabled) && (\n <div className=\"flex gap-2\"> {/* ... Create Path/Polygon buttons ... */}\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>}\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>}\n </div>\n )}\n </div>\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\" />\n {error && <p className=\"text-red-600 text-xs mt-1\">{error}</p>}\n </div>\n )}\n\n {/* Debug Output (Optional) */}\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)} />}\n </div>\n </div>\n )\n}\n\nexport default GeometryInput\n"],"names":["React","Map"],"mappings":"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"}
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 +1 @@
1
- {"version":3,"file":"GeometryInputLoader.js","sources":["../../../../../../src/Form/Components/Inputs/GeometryInputLoader.tsx"],"sourcesContent":["import { type IFieldInputProps, type IGeometryField } from '@/Form/Creator/FormCreatorTypes'\nimport { Loader } from '@axdspub/axiom-ui-utilities'\nimport React, { lazy, Suspense, type ReactElement } from 'react'\n\nconst GeometryInput = lazy(async () => await import('./Geometry'))\nconst GeoJSONInputLoader = (props: IFieldInputProps): ReactElement => {\n const geomField = props.field as IGeometryField\n const height = geomField.settings?.height ?? '500px'\n\n return (\n <>\n <Suspense fallback={<div className={`h-[${height}]`}><Loader className='pt-20' /></div>}>\n <GeometryInput {...props} />\n </Suspense>\n </>\n )\n}\n\nexport default GeoJSONInputLoader\n"],"names":["React"],"mappings":";;;;AAIA,IAAM,aAAa,GAAG,IAAI,CAAC,YAAA,EAAA,OAAA,SAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,OAAA,WAAA,CAAA,IAAA,EAAA,UAAA,EAAA,EAAA;;AAAY,QAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,OAAO,eAAY,CAAC,CAAA;AAA1B,QAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAA,SAA0B,CAAA;;AAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAC;AAC5D,IAAA,kBAAkB,GAAG,UAAC,KAAuB,EAAA;;AACjD,IAAA,IAAM,SAAS,GAAG,KAAK,CAAC,KAAuB;IAC/C,IAAM,MAAM,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,SAAS,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,OAAO;AAEpD,IAAA,QACIA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA;QACEA,cAAC,CAAA,aAAA,CAAA,QAAQ,IAAC,QAAQ,EAAEA,sCAAK,SAAS,EAAE,KAAM,CAAA,MAAA,CAAA,MAAM,EAAG,GAAA,CAAA,EAAA;AAAE,gBAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAC,EAAA,SAAS,EAAC,OAAO,GAAG,CAAM,EAAA;AACnF,YAAAA,cAAA,CAAA,aAAA,CAAC,aAAa,EAAK,QAAA,CAAA,EAAA,EAAA,KAAK,EAAI,CACrB,CACV;AAET;;;;"}
1
+ {"version":3,"file":"GeometryInputLoader.js","sources":["../../../../../../src/Form/Components/Inputs/GeometryInputLoader.tsx"],"sourcesContent":["import { type IFieldInputProps, type IGeometryField } from '@/Form/Creator/FormCreatorTypes'\r\nimport { Loader } from '@axdspub/axiom-ui-utilities'\r\nimport React, { lazy, Suspense, type ReactElement } from 'react'\r\n\r\nconst GeometryInput = lazy(async () => await import('./Geometry'))\r\nconst GeoJSONInputLoader = (props: IFieldInputProps): ReactElement => {\r\n const geomField = props.field as IGeometryField\r\n const height = geomField.settings?.height ?? '500px'\r\n\r\n return (\r\n <>\r\n <Suspense fallback={<div className={`h-[${height}]`}><Loader className='pt-20' /></div>}>\r\n <GeometryInput {...props} />\r\n </Suspense>\r\n </>\r\n )\r\n}\r\n\r\nexport default GeoJSONInputLoader\r\n"],"names":["React"],"mappings":";;;;AAIA,IAAM,aAAa,GAAG,IAAI,CAAC,YAAA,EAAA,OAAA,SAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,OAAA,WAAA,CAAA,IAAA,EAAA,UAAA,EAAA,EAAA;;AAAY,QAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,OAAO,eAAY,CAAC,CAAA;AAA1B,QAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAA,SAA0B,CAAA;;AAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAC;AAC5D,IAAA,kBAAkB,GAAG,UAAC,KAAuB,EAAA;;AACjD,IAAA,IAAM,SAAS,GAAG,KAAK,CAAC,KAAuB;IAC/C,IAAM,MAAM,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,SAAS,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,MAAM,MAAI,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAA,OAAO;AAEpD,IAAA,QACIA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA;QACEA,cAAC,CAAA,aAAA,CAAA,QAAQ,IAAC,QAAQ,EAAEA,sCAAK,SAAS,EAAE,KAAM,CAAA,MAAA,CAAA,MAAM,EAAG,GAAA,CAAA,EAAA;AAAE,gBAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAC,EAAA,SAAS,EAAC,OAAO,GAAG,CAAM,EAAA;AACnF,YAAAA,cAAA,CAAA,aAAA,CAAC,aAAa,EAAK,QAAA,CAAA,EAAA,EAAA,KAAK,EAAI,CACrB,CACV;AAET;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { __assign } from '../../../../node_modules/tslib/tslib.es6.js';
2
- import React__default, { useState } from 'react';
2
+ import React__default, { useState, useEffect } from 'react';
3
3
  import ReactCodeMirror from '../../../../node_modules/@uiw/react-codemirror/esm/index.js';
4
4
  import { json } from '../../../../node_modules/@codemirror/lang-json/dist/index.js';
5
5
  import { yaml } from '../../../../node_modules/@codemirror/lang-yaml/dist/index.js';
@@ -30,50 +30,75 @@ var tryGetFormatted = function (val, fmt) {
30
30
  }
31
31
  };
32
32
  var JsonYamlEditor = function (_a) {
33
+ var _b, _c, _d, _e;
33
34
  var field = _a.field, onChange = _a.onChange, value = _a.value;
34
- var _b = useState('json'), format = _b[0], setFormat = _b[1];
35
- var _c = useState(typeof value === 'object'
36
- ? JSON.stringify(value, null, 2)
37
- : (value !== undefined && value !== null
38
- ? tryGetFormatted(String(value), format)
39
- : '')), workingValue = _c[0], setWorkingValue = _c[1];
40
- var _d = useState(null), error = _d[0], setError = _d[1];
35
+ var jsonField = field;
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
+ 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;
38
+ var _f = useState('json'), format = _f[0], setFormat = _f[1];
39
+ var _g = useState(''), workingValue = _g[0], setWorkingValue = _g[1];
40
+ var _h = useState(null), error = _h[0], setError = _h[1];
41
+ var _j = useState(false), hasFocus = _j[0], setHasFocus = _j[1];
42
+ useEffect(function () {
43
+ if (!hasFocus) {
44
+ setWorkingValue(typeof value === 'object'
45
+ ? JSON.stringify(value, null, 2)
46
+ : (value !== undefined && value !== null
47
+ ? tryGetFormatted(String(value), format)
48
+ : allowEmpty
49
+ ? ''
50
+ : '{}'));
51
+ }
52
+ }, [value]);
41
53
  // Validate JSON and display error
42
54
  var validateJson = function (val) {
43
55
  try {
44
- if (val.trim() !== '') {
45
- JSON.parse(val);
56
+ if (val.trim() === '') {
57
+ setError(null);
58
+ return true;
46
59
  }
60
+ JSON.parse(val);
47
61
  setError(null); // Clear error if valid
62
+ return true;
48
63
  }
49
64
  catch (err) {
50
65
  setError('Invalid JSON: ' + err.message);
66
+ return false;
51
67
  }
52
68
  };
53
69
  var validateYaml = function (val) {
54
70
  try {
55
- if (val.trim() !== '') {
56
- jsYaml.load(val);
71
+ if (val.trim() === '') {
72
+ setError(null);
73
+ return true;
57
74
  }
75
+ jsYaml.load(val);
58
76
  setError(null);
77
+ return true;
59
78
  }
60
79
  catch (err) {
61
80
  setError('Invalid YAML: ' + err.message);
81
+ return false;
62
82
  }
63
83
  };
64
84
  // Handle content change
65
85
  var handleChange = function (val) {
66
86
  setWorkingValue(val);
67
87
  if (format === 'json') {
68
- validateJson(val);
69
- onChange(val);
88
+ if (validateJson(val)) {
89
+ if (!allowEmpty && val.trim() === '') {
90
+ val = '{}';
91
+ }
92
+ onChange(exportAsString ? val : JSON.parse(val));
93
+ }
70
94
  }
71
95
  else if (format === 'yaml') {
72
- validateYaml(val);
73
- var ob = jsYaml.load(val);
74
- var json_1 = JSON.stringify(ob, null, 2);
75
- validateJson(json_1);
76
- onChange(json_1);
96
+ if (validateYaml(val)) {
97
+ var json_1 = JSON.stringify(val === '' && !allowEmpty ? '{}' : jsYaml.load(val), null, 2);
98
+ if (validateJson(json_1)) {
99
+ onChange(exportAsString ? json_1 : JSON.parse(json_1));
100
+ }
101
+ }
77
102
  }
78
103
  };
79
104
  // Format JSON or YAML
@@ -111,7 +136,7 @@ var JsonYamlEditor = function (_a) {
111
136
  }
112
137
  };
113
138
  var btnClass = 'border-0 rounded-none';
114
- return (React__default.createElement("div", { className: 'flex flex-col' },
139
+ return (React__default.createElement("div", { className: 'flex flex-col h-full relative' },
115
140
  React__default.createElement(FieldLabel, __assign({}, field)),
116
141
  React__default.createElement("div", { className: 'flex flex-row' },
117
142
  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"),
@@ -120,22 +145,28 @@ var JsonYamlEditor = function (_a) {
120
145
  React__default.createElement(Button, { size: 'xs', className: btnClass, onClick: function () { handleFormat(); } },
121
146
  "Format ",
122
147
  React__default.createElement(UpdateIcon, { className: 'inline w-3 h-3 -mt-1 ml-1' })))),
123
- React__default.createElement("div", { className: ' relative flex-grow' },
124
- React__default.createElement("span", { className: 'absolute right-6 bottom-4 pointer-events-auto z-50' },
125
- React__default.createElement(CopyButton, { string: error === null && workingValue !== ''
126
- ? format === 'json'
127
- ? JSON.stringify(JSON.parse(workingValue), null, 2)
128
- : jsYaml.dump(workingValue)
129
- : workingValue, className: 'white z-50' })),
130
- error && React__default.createElement("p", { className: "text-red-500 text-xs mb-2 absolute bg-white bg-opacity-90 max-w-[50%] p-2 right-0 z-50" },
131
- React__default.createElement(ExclamationTriangleIcon, { className: 'inline w-3 h-3 -mt-1 mr-1' }),
132
- " ",
133
- error),
134
- React__default.createElement(ReactCodeMirror, { value: workingValue, className: 'h-full', height: '550px', extensions: [
148
+ error && React__default.createElement("p", { className: "text-red-500 text-xs mb-2 absolute bg-white bg-opacity-90 max-w-[50%] p-2 right-0 z-40" },
149
+ React__default.createElement(ExclamationTriangleIcon, { className: 'inline w-3 h-3 -mt-1 mr-1' }),
150
+ " ",
151
+ error),
152
+ React__default.createElement("span", { className: 'absolute right-6 bottom-4 pointer-events-auto z-40' },
153
+ React__default.createElement(CopyButton, { string: error === null && workingValue !== ''
154
+ ? format === 'json'
155
+ ? JSON.stringify(JSON.parse(workingValue), null, 2)
156
+ : jsYaml.dump(workingValue)
157
+ : workingValue, className: 'white z-40' })),
158
+ React__default.createElement("div", { className: 'h-full flex-grow overflow-auto' },
159
+ React__default.createElement(ReactCodeMirror, { value: format === 'yaml' && workingValue === '{}' ? '' : workingValue, extensions: [
135
160
  format === 'json' ? json() : yaml(),
136
161
  autocompletion(),
137
162
  EditorView.lineWrapping
138
- ], onChange: handleChange, theme: "dark" }))));
163
+ ], height: '100%', className: 'h-full', onChange: handleChange, theme: "dark", onFocus: function () {
164
+ console.log('FOCUS');
165
+ setHasFocus(true);
166
+ }, onBlur: function () {
167
+ console.log('BLUR');
168
+ setHasFocus(false);
169
+ } }))));
139
170
  };
140
171
 
141
172
  export { JsonYamlEditor as default };
@@ -1 +1 @@
1
- {"version":3,"file":"JSON.js","sources":["../../../../../../src/Form/Components/Inputs/JSON.tsx"],"sourcesContent":["import React, { type ReactElement, useState } from 'react'\nimport CodeMirror from '@uiw/react-codemirror'\nimport { json } from '@codemirror/lang-json'\nimport { yaml } from '@codemirror/lang-yaml'\nimport { autocompletion } from '@codemirror/autocomplete'\nimport { EditorView } from '@codemirror/view'\nimport yamlParser from 'js-yaml'\nimport { Button } from '@axdspub/axiom-ui-utilities'\nimport { ExclamationTriangleIcon, UpdateIcon } from '@radix-ui/react-icons'\nimport { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\nimport FieldLabel from '@/Form/Components/FieldLabel'\nimport { CopyButton } from '@/Form/Manage/CopyableJSONOutput'\n\nconst getFormatted = (val: string, fmt: string): string => {\n if (fmt === 'json') {\n const jsonObject = JSON.parse(val)\n return JSON.stringify(jsonObject, null, 2)\n } else {\n const yamlObject = yamlParser.load(val)\n return yamlParser.dump(yamlObject)\n }\n}\n\nconst tryGetFormatted = (val: string, fmt: string): string => {\n try {\n return getFormatted(val, fmt)\n } catch (error) {\n return val\n }\n}\n\nconst JsonYamlEditor = ({ field, onChange, value }: IFieldInputProps): ReactElement => {\n const [format, setFormat] = useState<'json' | 'yaml'>('json')\n const [workingValue, setWorkingValue] = useState<string>(typeof value === 'object'\n ? JSON.stringify(value, null, 2)\n : (value !== undefined && value !== null\n ? tryGetFormatted(String(value), format)\n : ''\n )\n )\n const [error, setError] = useState<string | null>(null)\n\n // Validate JSON and display error\n const validateJson = (val: string): void => {\n try {\n if (val.trim() !== '') {\n JSON.parse(val)\n }\n setError(null) // Clear error if valid\n } catch (err) {\n setError('Invalid JSON: ' + (err as Error).message)\n }\n }\n\n const validateYaml = (val: string): void => {\n try {\n if (val.trim() !== '') {\n yamlParser.load(val)\n }\n setError(null)\n } catch (err) {\n setError('Invalid YAML: ' + (err as Error).message)\n }\n }\n\n // Handle content change\n const handleChange = (val: string): void => {\n setWorkingValue(val)\n if (format === 'json') {\n validateJson(val)\n onChange(val)\n } else if (format === 'yaml') {\n validateYaml(val)\n const ob = yamlParser.load(val)\n const json = JSON.stringify(ob, null, 2)\n validateJson(json)\n onChange(json)\n }\n }\n\n // Format JSON or YAML\n const handleFormat = (): void => {\n try {\n setWorkingValue(getFormatted(workingValue, format))\n setError(null)\n } catch (error) {\n setError('Formatting failed: Invalid data.')\n }\n }\n\n const updateFormat = (newFormat: 'json' | 'yaml'): void => {\n try {\n if (newFormat === 'yaml') {\n if (workingValue.trim() !== '') {\n const jsonObject = JSON.parse(workingValue)\n setWorkingValue(yamlParser.dump(jsonObject))\n }\n setFormat('yaml')\n setError(null)\n } else {\n if (workingValue.trim() !== '') {\n const yamlObject = yamlParser.load(workingValue)\n const jsonString = JSON.stringify(yamlObject, null, 2)\n setWorkingValue(jsonString)\n validateJson(jsonString)\n }\n setFormat('json')\n }\n } catch (error) {\n setError('Format conversion failed: Invalid data.')\n }\n }\n\n const btnClass = 'border-0 rounded-none'\n\n return (\n <div className='flex flex-col'>\n <FieldLabel {...field} />\n <div className='flex flex-row'>\n <Button size='xs' disabled={error !== null} className={`${btnClass} ${format !== 'json' ? 'font-normal' : 'text-white bg-[#282c34]'}`} onClick={() => { updateFormat('json') }}>JSON</Button>\n <Button size='xs' disabled={error !== null} className={`${btnClass} ${format !== 'yaml' ? 'font-normal' : 'text-white bg-[#282c34]'}`} onClick={() => { updateFormat('yaml') }}>YAML</Button>\n <div className=\"ml-auto\">\n <Button size='xs' className={btnClass} onClick={() => { handleFormat() }}>Format <UpdateIcon className='inline w-3 h-3 -mt-1 ml-1' /></Button>\n </div>\n </div>\n <div className=' relative flex-grow'>\n <span className='absolute right-6 bottom-4 pointer-events-auto z-50'>\n <CopyButton string={\n error === null && workingValue !== ''\n ? format === 'json'\n ? JSON.stringify(JSON.parse(workingValue), null, 2)\n : yamlParser.dump(workingValue)\n : workingValue\n } className='white z-50' />\n </span>\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-50\"><ExclamationTriangleIcon className='inline w-3 h-3 -mt-1 mr-1' /> {error}</p>}\n <CodeMirror\n value={workingValue}\n className='h-full'\n height='550px'\n extensions={[\n format === 'json' ? json() : yaml(),\n autocompletion(),\n EditorView.lineWrapping\n ]}\n onChange={handleChange}\n theme=\"dark\"\n />\n </div>\n\n </div>\n )\n}\n\nexport default JsonYamlEditor\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\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'>\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 +1 @@
1
- {"version":3,"file":"JSONInputLoader.js","sources":["../../../../../../src/Form/Components/Inputs/JSONInputLoader.tsx"],"sourcesContent":["import { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\nimport { Loader } from '@axdspub/axiom-ui-utilities'\nimport React, { lazy, Suspense, type ReactElement } from 'react'\n\nconst JSONInput = lazy(async () => await import('./JSON'))\nconst JSONInputLoader = (props: IFieldInputProps): ReactElement => {\n return (\n <>\n <Suspense fallback={<div className='h-[500px]'><Loader className='pt-20' /></div>}>\n <JSONInput {...props} />\n </Suspense>\n </>\n )\n}\n\nexport default JSONInputLoader\n"],"names":["React"],"mappings":";;;;AAIA,IAAM,SAAS,GAAG,IAAI,CAAC,YAAA,EAAA,OAAA,SAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,OAAA,WAAA,CAAA,IAAA,EAAA,UAAA,EAAA,EAAA;;AAAY,QAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,OAAO,WAAQ,CAAC,CAAA;AAAtB,QAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAA,SAAsB,CAAA;;AAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAC;AACpD,IAAA,eAAe,GAAG,UAAC,KAAuB,EAAA;AAC9C,IAAA,QACIA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA;AACE,QAAAA,cAAA,CAAA,aAAA,CAAC,QAAQ,EAAC,EAAA,QAAQ,EAAEA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,WAAW,EAAA;AAAC,gBAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAC,EAAA,SAAS,EAAC,OAAO,GAAG,CAAM,EAAA;AAC7E,YAAAA,cAAA,CAAA,aAAA,CAAC,SAAS,EAAK,QAAA,CAAA,EAAA,EAAA,KAAK,EAAI,CACjB,CACV;AAET;;;;"}
1
+ {"version":3,"file":"JSONInputLoader.js","sources":["../../../../../../src/Form/Components/Inputs/JSONInputLoader.tsx"],"sourcesContent":["import { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\r\nimport { Loader } from '@axdspub/axiom-ui-utilities'\r\nimport React, { lazy, Suspense, type ReactElement } from 'react'\r\n\r\nconst JSONInput = lazy(async () => await import('./JSON'))\r\nconst JSONInputLoader = (props: IFieldInputProps): ReactElement => {\r\n return (\r\n <>\r\n <Suspense fallback={<div className='h-[500px]'><Loader className='pt-20' /></div>}>\r\n <JSONInput {...props} />\r\n </Suspense>\r\n </>\r\n )\r\n}\r\n\r\nexport default JSONInputLoader\r\n"],"names":["React"],"mappings":";;;;AAIA,IAAM,SAAS,GAAG,IAAI,CAAC,YAAA,EAAA,OAAA,SAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA,EAAA,OAAA,WAAA,CAAA,IAAA,EAAA,UAAA,EAAA,EAAA;;AAAY,QAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,OAAO,WAAQ,CAAC,CAAA;AAAtB,QAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAA,SAAsB,CAAA;;AAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAC;AACpD,IAAA,eAAe,GAAG,UAAC,KAAuB,EAAA;AAC9C,IAAA,QACIA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA;AACE,QAAAA,cAAA,CAAA,aAAA,CAAC,QAAQ,EAAC,EAAA,QAAQ,EAAEA,cAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,WAAW,EAAA;AAAC,gBAAAA,cAAA,CAAA,aAAA,CAAC,MAAM,EAAC,EAAA,SAAS,EAAC,OAAO,GAAG,CAAM,EAAA;AAC7E,YAAAA,cAAA,CAAA,aAAA,CAAC,SAAS,EAAK,QAAA,CAAA,EAAA,EAAA,KAAK,EAAI,CACjB,CACV;AAET;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"LongString.js","sources":["../../../../../../src/Form/Components/Inputs/LongString.tsx"],"sourcesContent":["import FieldLabel from '@/Form/Components/FieldLabel'\nimport { type IFieldInputProps } from '@/Form/Creator/FormCreatorTypes'\nimport { TextArea } from '@axdspub/axiom-ui-utilities'\nimport React, { type ReactElement } from 'react'\n\nconst LongStringInput = ({ field, onChange, value, className }: IFieldInputProps): ReactElement => {\n const initialValue = value !== undefined ? value : ''\n const getValue = (): string => {\n return initialValue !== undefined && initialValue !== null ? String(initialValue) : ''\n }\n return <div>\n <TextArea\n className={className}\n id={field.id}\n testId={field.id}\n label={<FieldLabel {...field} />}\n value={getValue()}\n onChange={(e) => {\n onChange(e)\n }} /></div>\n}\n\nexport default LongStringInput\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 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,6 +1,6 @@
1
1
  import { __assign } from '../../../../node_modules/tslib/tslib.es6.js';
2
- import FieldLabel from '../FieldLabel.js';
3
- import { Slider as SliderSingle, Input } from '../../../../node_modules/@axdspub/axiom-ui-utilities/library/index.js';
2
+ import FieldLabel, { FieldLabelText, FieldDescriptionTooltip } from '../FieldLabel.js';
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
5
  import React__default, { useState } from 'react';
6
6
 
@@ -56,10 +56,10 @@ var SliderInput = function (_a) {
56
56
  } }))))));
57
57
  };
58
58
  var TextInput = function (_a) {
59
- var field = _a.field, onChange = _a.onChange, value = _a.value;
59
+ var field = _a.field, onChange = _a.onChange, value = _a.value, className = _a.className;
60
60
  var _b = useState(undefined), error = _b[0], setError = _b[1];
61
61
  return (React__default.createElement(React__default.Fragment, null,
62
- React__default.createElement(Input, { id: field.id, testId: field.id, error: error, value: value !== undefined && value !== null ? String(value) : '', label: React__default.createElement(FieldLabel, __assign({}, field)), onChange: function (e) {
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) {
63
63
  if (e !== undefined && !isNaN(+e) && e !== '') {
64
64
  onChange(+e);
65
65
  setError(undefined);
@@ -77,14 +77,39 @@ var TextInput = function (_a) {
77
77
  error !== undefined && React__default.createElement("p", { className: 'text-red-500 text-xs py-2' }, error)));
78
78
  };
79
79
  var NumberInput = function (_a) {
80
- var _b, _c, _d;
80
+ var _b, _c, _d, _e;
81
81
  var field = _a.field, onChange = _a.onChange, value = _a.value;
82
82
  var initialValue = value !== undefined ? value : '';
83
83
  var numberField = field;
84
- var max = (_b = numberField === null || numberField === void 0 ? void 0 : numberField.constraints) === null || _b === void 0 ? void 0 : _b.max;
85
- return (React__default.createElement("div", null, max !== undefined
86
- ? React__default.createElement(SliderInput, { field: field, value: initialValue, onChange: onChange, min: (_c = numberField === null || numberField === void 0 ? void 0 : numberField.constraints) === null || _c === void 0 ? void 0 : _c.min, max: max, step: (_d = numberField === null || numberField === void 0 ? void 0 : numberField.settings) === null || _d === void 0 ? void 0 : _d.step })
87
- : React__default.createElement(TextInput, { field: field, value: initialValue, onChange: onChange })));
84
+ var isNull = initialValue === undefined || initialValue === null || initialValue === '';
85
+ var _f = useState(!isNull), userSelectedNotNull = _f[0], setUserSelectedNotNull = _f[1];
86
+ var canBeNull = ((_b = numberField.settings) === null || _b === void 0 ? void 0 : _b.canBeNull) === true;
87
+ var max = (_c = numberField === null || numberField === void 0 ? void 0 : numberField.constraints) === null || _c === void 0 ? void 0 : _c.max;
88
+ var fieldForInput = canBeNull
89
+ ? __assign(__assign({}, field), { label: undefined, description: undefined }) : field;
90
+ 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]' })));
93
+ if (canBeNull) {
94
+ 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)),
97
+ " ",
98
+ React__default.createElement(FieldDescriptionTooltip, __assign({}, field))), value: userSelectedNotNull, onChange: function (e) {
99
+ var _a, _b, _c, _d;
100
+ setUserSelectedNotNull(!userSelectedNotNull);
101
+ if (!e) {
102
+ onChange(undefined);
103
+ }
104
+ 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);
106
+ }
107
+ } }),
108
+ userSelectedNotNull ? el : React__default.createElement(React__default.Fragment, null)));
109
+ }
110
+ else {
111
+ return el;
112
+ }
88
113
  };
89
114
 
90
115
  export { NumberInput as default };