react-id-card-generator 1.0.21 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/README.md +33 -12
  2. package/dist/cjs/components/IDCardDesigner.js +147 -10
  3. package/dist/cjs/components/IDCardDesigner.js.map +1 -1
  4. package/dist/cjs/components/IDCardGenerator.js +8 -3
  5. package/dist/cjs/components/IDCardGenerator.js.map +1 -1
  6. package/dist/cjs/components/IDCardPreview.js +3 -2
  7. package/dist/cjs/components/IDCardPreview.js.map +1 -1
  8. package/dist/cjs/components/IDCardTable.js +74 -0
  9. package/dist/cjs/components/IDCardTable.js.map +1 -0
  10. package/dist/cjs/index.js +4 -0
  11. package/dist/cjs/index.js.map +1 -1
  12. package/dist/cjs/storage/templateStorage.js +2 -2
  13. package/dist/cjs/storage/templateStorage.js.map +1 -1
  14. package/dist/cjs/styles.css +1 -1
  15. package/dist/cjs/utils/styleUtils.js +3 -0
  16. package/dist/cjs/utils/styleUtils.js.map +1 -1
  17. package/dist/cjs/utils/tableUtils.js +106 -0
  18. package/dist/cjs/utils/tableUtils.js.map +1 -0
  19. package/dist/cjs/utils/validators.js +33 -10
  20. package/dist/cjs/utils/validators.js.map +1 -1
  21. package/dist/esm/components/IDCardDesigner.js +147 -10
  22. package/dist/esm/components/IDCardDesigner.js.map +1 -1
  23. package/dist/esm/components/IDCardGenerator.js +8 -3
  24. package/dist/esm/components/IDCardGenerator.js.map +1 -1
  25. package/dist/esm/components/IDCardPreview.js +3 -2
  26. package/dist/esm/components/IDCardPreview.js.map +1 -1
  27. package/dist/esm/components/IDCardTable.js +72 -0
  28. package/dist/esm/components/IDCardTable.js.map +1 -0
  29. package/dist/esm/index.js +1 -0
  30. package/dist/esm/index.js.map +1 -1
  31. package/dist/esm/storage/templateStorage.js +2 -2
  32. package/dist/esm/storage/templateStorage.js.map +1 -1
  33. package/dist/esm/styles.css +1 -1
  34. package/dist/esm/utils/styleUtils.js +3 -0
  35. package/dist/esm/utils/styleUtils.js.map +1 -1
  36. package/dist/esm/utils/tableUtils.js +96 -0
  37. package/dist/esm/utils/tableUtils.js.map +1 -0
  38. package/dist/esm/utils/validators.js +33 -10
  39. package/dist/esm/utils/validators.js.map +1 -1
  40. package/dist/index.d.ts +43 -4
  41. package/dist/types/components/IDCardTable.d.ts +8 -0
  42. package/dist/types/index.d.ts +2 -1
  43. package/dist/types/types/index.d.ts +37 -2
  44. package/dist/types/utils/tableUtils.d.ts +10 -0
  45. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"IDCardDesigner.js","sources":["../../../src/components/IDCardDesigner.tsx"],"sourcesContent":["\r\nimport React, { useState, useCallback, useRef, useEffect } from 'react';\r\nimport type {\r\n IDCardDesignerProps,\r\n FieldMapping,\r\n FieldType,\r\n CardOrientation,\r\n CardSides,\r\n IDCardData,\r\n} from '../types';\r\nimport { useIDCardTemplate } from '../hooks/useIDCardTemplate';\r\nimport { deepCleanUndefined } from '../utils/deepCleanUndefined';\r\nimport { IDCardPreview } from './IDCardPreview';\r\nimport { generateId, imageFileToBase64 } from '../storage/templateStorage';\r\nimport './IDCardDesigner.css';\r\n\r\n// Available field types in the designer\r\nconst defaultFieldTypes: { type: FieldType; label: string; icon: string }[] = [\r\n { type: 'text', label: 'Text Field', icon: '📝' },\r\n { type: 'label', label: 'Static Label', icon: '🏷️' },\r\n { type: 'image', label: 'Image/Photo', icon: '🖼️' },\r\n { type: 'qrcode', label: 'QR Code', icon: '📱' },\r\n];\r\n\r\n/**\r\n * IDCardDesigner - Visual drag-and-drop template builder\r\n * \r\n * Allows users to:\r\n * - Add and position fields on the card\r\n * - Upload background images\r\n * - Configure field styles (fonts, colors, etc.)\r\n * - Choose card orientation and sides\r\n * - Preview the card with sample data\r\n */\r\n\r\n/**\r\n * IDCardDesigner - Visual drag-and-drop ID card template builder\r\n */\r\nexport const IDCardDesigner: React.FC<IDCardDesignerProps> = ({\r\n initialTemplate,\r\n onSave,\r\n onCancel,\r\n className = '',\r\n style = {},\r\n}) => {\r\n const {\r\n template,\r\n updateField,\r\n addField,\r\n removeField,\r\n setBackground,\r\n setCardSize,\r\n setOrientation,\r\n setSides,\r\n isValid,\r\n validationErrors,\r\n } = useIDCardTemplate(initialTemplate);\r\n\r\n const [activeSide, setActiveSide] = useState<'front' | 'back'>('front');\r\n const [selectedFieldId, setSelectedFieldId] = useState<string | null>(null);\r\n const [lineHeightInputFocused, setLineHeightInputFocused] = useState(false);\r\n const [showGrid, setShowGrid] = useState(true);\r\n const [isDragging, setIsDragging] = useState(false);\r\n const [isResizing, setIsResizing] = useState(false);\r\n const [templateName, setTemplateName] = useState(template.name);\r\n\r\n const previewContainerRef = useRef<HTMLDivElement>(null);\r\n const dragStartRef = useRef({ x: 0, y: 0, fieldX: 0, fieldY: 0 });\r\n const resizeStartRef = useRef({\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0,\r\n fieldX: 0,\r\n fieldY: 0,\r\n handle: '',\r\n });\r\n\r\n // Sample data for preview\r\n const [sampleData, setSampleData] = useState<IDCardData>({\r\n name: 'John Doe',\r\n idno: 'ID12345',\r\n department: 'Computer Science',\r\n designation: 'Student',\r\n dob: '01-01-2000',\r\n bloodgroup: 'O+',\r\n phoneno: '9876543210',\r\n address: 'Sample Address',\r\n });\r\n\r\n // Get selected field\r\n const selectedField = template.fields.find((f) => f.id === selectedFieldId);\r\n\r\n // Handle field selection\r\n const handleFieldSelect = useCallback((field: FieldMapping | null) => {\r\n setSelectedFieldId(field?.id || null);\r\n }, []);\r\n\r\n // Duplicate selected text field\r\n const handleDuplicateField = useCallback(() => {\r\n if (!selectedField || selectedField.type !== 'text') return;\r\n const { id, fieldKey, position, ...rest } = selectedField;\r\n const newField = {\r\n ...rest,\r\n id: generateId('field'),\r\n fieldKey: `field_${Date.now()}`,\r\n position: {\r\n ...position,\r\n x: Math.min(position.x + 20, template.cardSize.width - position.width),\r\n y: Math.min(position.y + 20, template.cardSize.height - position.height),\r\n },\r\n };\r\n addField(newField);\r\n setSelectedFieldId(newField.id);\r\n }, [selectedField, addField, setSelectedFieldId, template.cardSize.width, template.cardSize.height]);\r\n // Handle adding new field\r\n const handleAddField = useCallback(\r\n (type: FieldType) => {\r\n const newField: FieldMapping = {\r\n id: generateId('field'),\r\n fieldKey: `field_${Date.now()}`,\r\n label: type === 'label' ? 'Label' : '',\r\n type,\r\n side: activeSide,\r\n position: { x: 50, y: 50, width: 100, height: 30 },\r\n style: {\r\n fontSize: type === 'label' ? '10px' : '12px',\r\n fontWeight: type === 'label' ? 'bold' : 'normal',\r\n color: '#000000',\r\n textAlign: 'left',\r\n backgroundColor: 'transparent',\r\n },\r\n zIndex: template.fields.length + 1,\r\n staticText: type === 'label' ? 'Static Label' : '',\r\n ...(type === 'qrcode' ? { qrFields: [] } : {}),\r\n };\r\n\r\n // Adjust default sizes based on type\r\n if (type === 'image') {\r\n newField.position = { x: 50, y: 50, width: 80, height: 100 };\r\n } else if (type === 'qrcode') {\r\n newField.position = { x: 50, y: 50, width: 80, height: 80 };\r\n }\r\n\r\n addField(newField);\r\n setSelectedFieldId(newField.id);\r\n },\r\n [activeSide, addField, template.fields.length]\r\n );\r\n\r\n // Handle background upload\r\n const handleBackgroundUpload = useCallback(\r\n async (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const file = e.target.files?.[0];\r\n if (!file) return;\r\n\r\n try {\r\n const base64 = await imageFileToBase64(file);\r\n setBackground(activeSide, base64);\r\n } catch (error) {\r\n console.error('Failed to load background:', error);\r\n }\r\n },\r\n [activeSide, setBackground]\r\n );\r\n\r\n // Handle orientation change\r\n const handleOrientationChange = useCallback(\r\n (orientation: CardOrientation) => {\r\n setOrientation(orientation);\r\n // Update card size based on orientation\r\n const baseWidth = 340;\r\n const baseHeight = 215;\r\n if (orientation === 'portrait') {\r\n setCardSize({ width: baseHeight, height: baseWidth, unit: 'px' });\r\n } else {\r\n setCardSize({ width: baseWidth, height: baseHeight, unit: 'px' });\r\n }\r\n },\r\n [setOrientation, setCardSize]\r\n );\r\n\r\n // Handle sides change\r\n const handleSidesChange = useCallback(\r\n (sides: CardSides) => {\r\n setSides(sides);\r\n if (sides === 'single' && activeSide === 'back') {\r\n setActiveSide('front');\r\n }\r\n },\r\n [setSides, activeSide]\r\n );\r\n\r\n // Drag and drop handling\r\n const handleMouseDown = useCallback(\r\n (e: React.MouseEvent) => {\r\n if (!selectedField || !previewContainerRef.current) return;\r\n\r\n const target = e.target as HTMLElement;\r\n\r\n // Check if clicking on resize handle\r\n if (target.classList.contains('resize-handle')) {\r\n const handle = target.dataset.handle || '';\r\n setIsResizing(true);\r\n resizeStartRef.current = {\r\n x: e.clientX,\r\n y: e.clientY,\r\n width: selectedField.position.width,\r\n height: selectedField.position.height,\r\n fieldX: selectedField.position.x,\r\n fieldY: selectedField.position.y,\r\n handle,\r\n };\r\n return;\r\n }\r\n\r\n // Check if clicking on field (for dragging)\r\n if (target.closest('.preview-field')) {\r\n setIsDragging(true);\r\n dragStartRef.current = {\r\n x: e.clientX,\r\n y: e.clientY,\r\n fieldX: selectedField.position.x,\r\n fieldY: selectedField.position.y,\r\n };\r\n }\r\n },\r\n [selectedField]\r\n );\r\n\r\n // Handle mouse move for dragging/resizing\r\n useEffect(() => {\r\n const handleMouseMove = (e: MouseEvent) => {\r\n if (!selectedField) return;\r\n\r\n if (isDragging) {\r\n const deltaX = e.clientX - dragStartRef.current.x;\r\n const deltaY = e.clientY - dragStartRef.current.y;\r\n\r\n // Unified drag logic for all field types\r\n const newX = Math.max(0, Math.min(\r\n template.cardSize.width - selectedField.position.width,\r\n dragStartRef.current.fieldX + deltaX\r\n ));\r\n const newY = Math.max(0, Math.min(\r\n template.cardSize.height - selectedField.position.height,\r\n dragStartRef.current.fieldY + deltaY\r\n ));\r\n\r\n updateField(selectedField.id, {\r\n position: { ...selectedField.position, x: newX, y: newY },\r\n });\r\n }\r\n\r\n if (isResizing) {\r\n const { handle, x, y, width, height, fieldX, fieldY } = resizeStartRef.current;\r\n const deltaX = e.clientX - x;\r\n const deltaY = e.clientY - y;\r\n\r\n let newWidth = width;\r\n let newHeight = height;\r\n let newX = fieldX;\r\n let newY = fieldY;\r\n\r\n if (handle.includes('e')) {\n newWidth = Math.max(20, width + deltaX);\n }\n if (handle.includes('w')) {\n newWidth = Math.max(20, width - deltaX);\n newX = Math.max(0, fieldX + deltaX);\n }\n if (handle.includes('s')) {\n newHeight = Math.max(20, height + deltaY);\n }\n if (handle.includes('n')) {\n newHeight = Math.max(20, height - deltaY);\n newY = Math.max(0, fieldY + deltaY);\n }\n\r\n updateField(selectedField.id, {\r\n position: { x: newX, y: newY, width: newWidth, height: newHeight },\r\n });\r\n }\r\n };\r\n\r\n const handleMouseUp = () => {\r\n setIsDragging(false);\r\n setIsResizing(false);\r\n // Remove any accidental selection or pointer capture\r\n window.getSelection?.()?.removeAllRanges?.();\r\n if (previewContainerRef.current) {\r\n previewContainerRef.current.releasePointerCapture?.(0);\r\n }\r\n };\r\n\r\n if (isDragging || isResizing) {\r\n document.addEventListener('mousemove', handleMouseMove);\r\n window.addEventListener('mouseup', handleMouseUp);\r\n }\r\n\r\n return () => {\r\n document.removeEventListener('mousemove', handleMouseMove);\r\n window.removeEventListener('mouseup', handleMouseUp);\r\n };\r\n }, [isDragging, isResizing, selectedField, updateField, template.cardSize]);\r\n\r\n // Handle field property update\r\n const handleFieldPropertyUpdate = useCallback(\r\n (property: string, value: unknown) => {\r\n if (!selectedField) return;\r\n\r\n if (property.startsWith('style.')) {\r\n const styleKey = property.replace('style.', '');\r\n updateField(selectedField.id, {\r\n style: { ...selectedField.style, [styleKey]: value },\r\n });\r\n } else if (property.startsWith('position.')) {\r\n const posKey = property.replace('position.', '') as keyof typeof selectedField.position;\r\n updateField(selectedField.id, {\r\n position: { ...selectedField.position, [posKey]: Number(value) },\r\n });\r\n } else {\r\n // Only allow qrFields property on QR code fields\r\n if (property === 'qrFields') {\r\n if (selectedField.type === 'qrcode') {\r\n updateField(selectedField.id, { qrFields: value as string[] });\r\n } else {\r\n // do nothing if not a qrcode field\r\n }\r\n } else {\r\n updateField(selectedField.id, { [property]: value });\r\n }\r\n }\r\n },\r\n [selectedField, updateField]\r\n );\r\n\r\n // Handle save\r\n const handleSave = useCallback(() => {\r\n const updatedTemplate = {\r\n ...template,\r\n name: templateName,\r\n updatedAt: new Date().toISOString(),\r\n };\r\n const cleanedTemplate = deepCleanUndefined(updatedTemplate);\r\n onSave(cleanedTemplate);\r\n }, [template, templateName, onSave]);\r\n\r\n // Handle delete field\r\n const handleDeleteField = useCallback(() => {\r\n if (selectedFieldId) {\r\n removeField(selectedFieldId);\r\n setSelectedFieldId(null);\r\n }\r\n }, [selectedFieldId, removeField]);\r\n\r\n // Keyboard shortcuts\r\n useEffect(() => {\r\n let lineHeightInputFocused = false;\r\n // Listen for focus/blur on line height input\r\n const lhInput = document.getElementById('line-height-input');\r\n if (lhInput) {\r\n lhInput.addEventListener('focus', () => { lineHeightInputFocused = true; });\r\n lhInput.addEventListener('blur', () => { lineHeightInputFocused = false; });\r\n }\r\n\r\n const handleKeyDown = (e: KeyboardEvent) => {\r\n if (selectedFieldId) {\r\n const field = template.fields.find(f => f.id === selectedFieldId);\r\n // Arrow key movement for position\r\n const step = e.shiftKey ? 5 : 1;\r\n let dx = 0, dy = 0;\r\n if (e.key === 'ArrowLeft') dx = -step;\r\n if (e.key === 'ArrowRight') dx = step;\r\n if (e.key === 'ArrowUp') dy = -step;\r\n if (e.key === 'ArrowDown') dy = step;\r\n if ((dx !== 0 || dy !== 0) && field) {\r\n // If text field and Ctrl is pressed, adjust line height instead\r\n if (field.type === 'text' && (e.ctrlKey || e.metaKey)) {\r\n let lh = field.style?.lineHeight ? Number(field.style.lineHeight) : 1;\r\n if (e.key === 'ArrowUp') lh = Math.round((lh + 0.1) * 10) / 10;\r\n if (e.key === 'ArrowDown') lh = Math.max(0.1, Math.round((lh - 0.1) * 10) / 10);\r\n updateField(field.id, {\r\n style: { ...field.style, lineHeight: lh.toString() },\r\n });\r\n e.preventDefault();\r\n return;\r\n } else {\r\n let newX = Math.max(0, Math.min(template.cardSize.width - field.position.width, field.position.x + dx));\r\n let newY = Math.max(0, Math.min(template.cardSize.height - field.position.height, field.position.y + dy));\r\n updateField(field.id, {\r\n position: { ...field.position, x: newX, y: newY },\r\n });\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n // Delete and Escape\r\n if (e.key === 'Delete') {\r\n handleDeleteField();\r\n }\r\n if (e.key === 'Escape') {\r\n setSelectedFieldId(null);\r\n }\r\n }\r\n };\r\n\r\n document.addEventListener('keydown', handleKeyDown);\r\n return () => document.removeEventListener('keydown', handleKeyDown);\r\n }, [selectedFieldId, handleDeleteField, template.fields, template.cardSize, updateField]);\r\n\r\n return (\r\n <div className={`idcard-designer ${className}`} style={style}>\r\n {/* Header */}\r\n <div className=\"designer-header\">\r\n <input\r\n type=\"text\"\r\n value={templateName}\r\n onChange={(e) => setTemplateName(e.target.value)}\r\n className=\"template-name-input\"\r\n placeholder=\"Template Name\"\r\n />\r\n <div className=\"header-actions\">\r\n {onCancel && (\r\n <button onClick={onCancel} className=\"btn btn-secondary\">\r\n Cancel\r\n </button>\r\n )}\r\n <button onClick={handleSave} className=\"btn btn-primary\" disabled={!isValid}>\r\n Save Template\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div className=\"designer-body\">\r\n {/* Left Sidebar - Field Types */}\r\n <div className=\"designer-sidebar left-sidebar\">\r\n <h3>Add Fields</h3>\r\n <div className=\"field-types\">\r\n {defaultFieldTypes.map((fieldType) => (\r\n <button\r\n key={fieldType.type}\r\n onClick={() => handleAddField(fieldType.type)}\r\n className=\"field-type-btn\"\r\n >\r\n <span className=\"field-icon\">{fieldType.icon}</span>\r\n <span className=\"field-label\">{fieldType.label}</span>\r\n </button>\r\n ))}\r\n </div>\r\n\r\n <h3>Card Settings</h3>\r\n <div className=\"card-settings\">\r\n <div className=\"setting-group\">\r\n <label>Orientation</label>\r\n <div className=\"btn-group\">\r\n <button\r\n className={`btn ${template.orientation === 'landscape' ? 'active' : ''}`}\r\n onClick={() => handleOrientationChange('landscape')}\r\n >\r\n Landscape\r\n </button>\r\n <button\r\n className={`btn ${template.orientation === 'portrait' ? 'active' : ''}`}\r\n onClick={() => handleOrientationChange('portrait')}\r\n >\r\n Portrait\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div className=\"setting-group\">\r\n <label>Card Sides</label>\r\n <div className=\"btn-group\">\r\n <button\r\n className={`btn ${template.sides === 'single' ? 'active' : ''}`}\r\n onClick={() => handleSidesChange('single')}\r\n >\r\n Single\r\n </button>\r\n <button\r\n className={`btn ${template.sides === 'double' ? 'active' : ''}`}\r\n onClick={() => handleSidesChange('double')}\r\n >\r\n Double\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div className=\"setting-group\">\r\n <label>Card Size (px)</label>\r\n <div className=\"size-inputs\">\r\n <input\r\n type=\"number\"\r\n value={template.cardSize.width}\r\n onChange={(e) =>\r\n setCardSize({ ...template.cardSize, width: Number(e.target.value) })\r\n }\r\n placeholder=\"Width\"\r\n />\r\n <span>×</span>\r\n <input\r\n type=\"number\"\r\n value={template.cardSize.height}\r\n onChange={(e) =>\r\n setCardSize({ ...template.cardSize, height: Number(e.target.value) })\r\n }\r\n placeholder=\"Height\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <h3>Background</h3>\r\n <div className=\"background-upload\">\r\n <input\r\n type=\"file\"\r\n accept=\"image/*\"\r\n onChange={handleBackgroundUpload}\r\n id=\"bg-upload\"\r\n className=\"file-input\"\r\n />\r\n <label htmlFor=\"bg-upload\" className=\"btn btn-outline\">\r\n Upload {activeSide} Background\r\n </label>\r\n {template.backgrounds[activeSide] && (\r\n <button\r\n className=\"btn btn-danger btn-sm\"\r\n onClick={() => setBackground(activeSide, '')}\r\n >\r\n Remove\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {/* Center - Preview */}\r\n <div className=\"designer-preview\">\r\n {/* Side tabs */}\r\n <div className=\"side-tabs\">\r\n <button\r\n className={`tab ${activeSide === 'front' ? 'active' : ''}`}\r\n onClick={() => setActiveSide('front')}\r\n >\r\n Front\r\n </button>\r\n {template.sides === 'double' && (\r\n <button\r\n className={`tab ${activeSide === 'back' ? 'active' : ''}`}\r\n onClick={() => setActiveSide('back')}\r\n >\r\n Back\r\n </button>\r\n )}\r\n <label className=\"grid-toggle\">\r\n <input\r\n type=\"checkbox\"\r\n checked={showGrid}\r\n onChange={(e) => setShowGrid(e.target.checked)}\r\n />\r\n Show Grid\r\n </label>\r\n </div>\r\n\r\n {/* Preview container */}\r\n <div\r\n ref={previewContainerRef}\r\n className=\"preview-wrapper\"\r\n onMouseDown={handleMouseDown}\r\n >\r\n <IDCardPreview\r\n template={template}\r\n data={sampleData}\r\n side={activeSide}\r\n showGrid={showGrid}\r\n onFieldSelect={handleFieldSelect}\r\n selectedFieldId={selectedFieldId}\r\n editable={true}\r\n />\r\n </div>\r\n\r\n {/* Field list */}\r\n <div className=\"fields-list\">\r\n <h4>Fields on {activeSide} side:</h4>\r\n {template.fields\r\n .filter((f) => f.side === activeSide)\r\n .map((field) => (\r\n <div\r\n key={field.id}\r\n className={`field-item ${field.id === selectedFieldId ? 'selected' : ''}`}\r\n onClick={() => setSelectedFieldId(field.id)}\r\n >\r\n <span className=\"field-type-icon\">\r\n {defaultFieldTypes.find((t) => t.type === field.type)?.icon}\r\n </span>\r\n <span className=\"field-key\">{field.fieldKey}</span>\r\n <button\r\n className=\"delete-btn\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n removeField(field.id);\r\n if (field.id === selectedFieldId) setSelectedFieldId(null);\r\n }}\r\n >\r\n ×\r\n </button>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {/* Right Sidebar - Field Properties */}\r\n <div className=\"designer-sidebar right-sidebar\">\r\n <h3>Field Properties</h3>\r\n {selectedField ? (\r\n <div className=\"field-properties\">\r\n <div className=\"property-group\">\r\n <label>Field Key</label>\r\n <input\r\n type=\"text\"\r\n value={selectedField.fieldKey}\r\n onChange={(e) => handleFieldPropertyUpdate('fieldKey', e.target.value)}\r\n />\r\n </div>\r\n\r\n {selectedField.type !== 'label' && (\r\n <div className=\"property-group\">\r\n <label>Label</label>\r\n <input\r\n type=\"text\"\r\n value={selectedField.label || ''}\r\n onChange={(e) => handleFieldPropertyUpdate('label', e.target.value)}\r\n />\r\n </div>\r\n )}\r\n\r\n {/* Vertical Align for text fields */}\r\n {selectedField.type === 'text' && (\r\n <>\r\n <button className=\"btn btn-outline btn-sm\" style={{ marginBottom: 12 }} onClick={handleDuplicateField}>\r\n Duplicate Field\r\n </button>\r\n <div style={{ border: '1px solid #eee', borderRadius: 4, marginBottom: 12, padding: 8 }}>\r\n <strong style={{ fontSize: '1em', display: 'block', marginBottom: 6 }}>Label Style</strong>\r\n\r\n <div className=\"property-group\">\r\n <label>Label Position</label>\r\n <select\r\n value={selectedField.style?.labelPosition || 'top'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.labelPosition', e.target.value)}\r\n >\r\n <option value=\"top\">Top</option>\r\n <option value=\"left\">Left (Side)</option>\r\n </select>\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Label Vertical Align</label>\r\n <select\r\n value={selectedField.style?.labelVerticalAlign || 'top'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.labelVerticalAlign', e.target.value)}\r\n >\r\n <option value=\"top\">Top</option>\r\n <option value=\"middle\">Middle</option>\r\n <option value=\"bottom\">Bottom</option>\r\n </select>\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Label Font Size</label>\r\n <input\r\n type=\"text\"\r\n value={selectedField.style?.labelFontSize || '12px'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.labelFontSize', e.target.value)}\r\n />\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Label Font Weight</label>\r\n <select\r\n value={selectedField.style?.labelFontWeight || 'normal'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.labelFontWeight', e.target.value)}\r\n >\r\n <option value=\"normal\">Normal</option>\r\n <option value=\"bold\">Bold</option>\r\n <option value=\"100\">100</option>\r\n <option value=\"200\">200</option>\r\n <option value=\"300\">300</option>\r\n <option value=\"400\">400</option>\r\n <option value=\"500\">500</option>\r\n <option value=\"600\">600</option>\r\n <option value=\"700\">700</option>\r\n <option value=\"800\">800</option>\r\n <option value=\"900\">900</option>\r\n </select>\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Label Text Transform</label>\r\n <select\r\n value={selectedField.style?.labelTextTransform || 'none'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.labelTextTransform', e.target.value)}\r\n >\r\n <option value=\"none\">None</option>\r\n <option value=\"uppercase\">UPPERCASE</option>\r\n <option value=\"lowercase\">lowercase</option>\r\n <option value=\"capitalize\">Capitalize</option>\r\n </select>\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Label Color</label>\r\n <input\r\n type=\"color\"\r\n value={selectedField.style?.labelColor || '#666666'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.labelColor', e.target.value)}\r\n />\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Label Text Align</label>\r\n <select\r\n value={selectedField.style?.labelTextAlign || 'left'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.labelTextAlign', e.target.value)}\r\n >\r\n <option value=\"left\">Left</option>\r\n <option value=\"center\">Center</option>\r\n <option value=\"right\">Right</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div style={{ border: '1px solid #eee', borderRadius: 4, marginBottom: 12, padding: 8 }}>\r\n <strong style={{ fontSize: '1em', display: 'block', marginBottom: 6 }}>Text Style</strong>\r\n <div className=\"property-group\">\r\n <label>Text Font Size</label>\r\n <input\r\n type=\"text\"\r\n value={selectedField.style?.textFontSize || selectedField.style?.fontSize || '12px'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.textFontSize', e.target.value)}\r\n />\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Text Font Weight</label>\r\n <select\r\n value={selectedField.style?.textFontWeight || selectedField.style?.fontWeight || 'normal'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.textFontWeight', e.target.value)}\r\n >\r\n <option value=\"normal\">Normal</option>\r\n <option value=\"bold\">Bold</option>\r\n <option value=\"100\">100</option>\r\n <option value=\"200\">200</option>\r\n <option value=\"300\">300</option>\r\n <option value=\"400\">400</option>\r\n <option value=\"500\">500</option>\r\n <option value=\"600\">600</option>\r\n <option value=\"700\">700</option>\r\n <option value=\"800\">800</option>\r\n <option value=\"900\">900</option>\r\n </select>\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Text Color</label>\r\n <input\r\n type=\"color\"\r\n value={selectedField.style?.textColor || selectedField.style?.color || '#000000'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.textColor', e.target.value)}\r\n />\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Text Align</label>\r\n <select\r\n value={selectedField.style?.textTextAlign || selectedField.style?.textAlign || 'left'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.textTextAlign', e.target.value)}\r\n >\r\n <option value=\"left\">Left</option>\r\n <option value=\"center\">Center</option>\r\n <option value=\"right\">Right</option>\r\n </select>\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Line Height</label>\r\n <input\r\n id=\"line-height-input\"\r\n type=\"number\"\r\n min={0.1}\r\n step={0.1}\r\n value={selectedField.style?.lineHeight ? Number(selectedField.style.lineHeight) : 1}\r\n onChange={(e) => handleFieldPropertyUpdate('style.lineHeight', e.target.value)}\r\n style={{ width: 80 }}\r\n onFocus={() => setLineHeightInputFocused(true)}\r\n onBlur={() => setLineHeightInputFocused(false)}\r\n />\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Text Transform</label>\r\n <select\r\n value={selectedField.style?.textTransform || 'none'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.textTransform', e.target.value)}\r\n >\r\n <option value=\"none\">None</option>\r\n <option value=\"uppercase\">UPPERCASE</option>\r\n <option value=\"lowercase\">lowercase</option>\r\n <option value=\"capitalize\">Capitalize</option>\r\n </select>\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Text Vertical Align</label>\r\n <select\r\n value={selectedField.style?.textVerticalAlign || 'top'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.textVerticalAlign', e.target.value)}\r\n >\r\n <option value=\"top\">Top</option>\r\n <option value=\"middle\">Middle</option>\r\n <option value=\"bottom\">Bottom</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div style={{ border: '1px solid #eee', borderRadius: 4, marginBottom: 12, padding: 8 }}>\r\n <strong style={{ fontSize: '1em', display: 'block', marginBottom: 6 }}>Container Style</strong>\r\n <div className=\"property-group\">\r\n <label>Vertical Align (Container)</label>\r\n <select\r\n value={selectedField.style?.verticalAlign || 'top'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.verticalAlign', e.target.value)}\r\n >\r\n <option value=\"top\">Top</option>\r\n <option value=\"middle\">Middle</option>\r\n <option value=\"bottom\">Bottom</option>\r\n </select>\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n\r\n {selectedField.type === 'label' && (\r\n <div className=\"property-group\">\r\n <label>Static Text</label>\r\n <input\r\n type=\"text\"\r\n value={selectedField.staticText || ''}\r\n onChange={(e) => handleFieldPropertyUpdate('staticText', e.target.value)}\r\n />\r\n </div>\r\n )}\r\n\r\n {selectedField.type === 'qrcode' && (\r\n <div className=\"property-group\">\r\n <label>QR Code Data Fields</label>\r\n <small className=\"hint\">Select which fields to encode in the QR code:</small>\r\n <div style={{ marginTop: '8px', maxHeight: '150px', overflowY: 'auto', border: '1px solid #ddd', borderRadius: '4px', padding: '8px' }}>\r\n {template.fields\r\n .filter(f => f.type !== 'qrcode' && f.type !== 'label')\r\n .map((field) => (\r\n <label key={field.fieldKey} style={{ display: 'block', marginBottom: '6px', cursor: 'pointer' }}>\r\n <input\r\n type=\"checkbox\"\r\n checked={selectedField.qrFields?.includes(field.fieldKey) || false}\r\n onChange={(e) => {\r\n const currentFields = selectedField.qrFields || [];\r\n const newFields = e.target.checked\r\n ? [...currentFields, field.fieldKey]\r\n : currentFields.filter(f => f !== field.fieldKey);\r\n handleFieldPropertyUpdate('qrFields', newFields);\r\n }}\r\n style={{ marginRight: '6px' }}\r\n />\r\n {field.label || field.fieldKey}\r\n </label>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Border Radius for image fields */}\r\n\r\n {selectedField.type !== 'text' && <>\r\n <h4>Style</h4>\r\n <div className=\"property-group\">\r\n <label>Font Size</label>\r\n <input\r\n type=\"text\"\r\n value={selectedField.style?.fontSize || '12px'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.fontSize', e.target.value)}\r\n />\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Font Weight</label>\r\n <select\r\n value={selectedField.style?.fontWeight || 'normal'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.fontWeight', e.target.value)}\r\n >\r\n <option value=\"normal\">Normal</option>\r\n <option value=\"bold\">Bold</option>\r\n <option value=\"100\">100</option>\r\n <option value=\"200\">200</option>\r\n <option value=\"300\">300</option>\r\n <option value=\"400\">400</option>\r\n <option value=\"500\">500</option>\r\n <option value=\"600\">600</option>\r\n <option value=\"700\">700</option>\r\n <option value=\"800\">800</option>\r\n <option value=\"900\">900</option>\r\n </select>\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Text Color</label>\r\n <input\r\n type=\"color\"\r\n value={selectedField.style?.color || '#000000'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.color', e.target.value)}\r\n />\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Text Align</label>\r\n <select\r\n value={selectedField.style?.textAlign || 'left'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.textAlign', e.target.value)}\r\n >\r\n <option value=\"left\">Left</option>\r\n <option value=\"center\">Center</option>\r\n <option value=\"right\">Right</option>\r\n </select>\r\n </div>\r\n {selectedField.type === 'label' && (\r\n <div className=\"property-group\">\r\n <label>Text Transform</label>\r\n <select\r\n value={selectedField.style?.labelTextTransform || 'none'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.labelTextTransform', e.target.value)}\r\n >\r\n <option value=\"none\">None</option>\r\n <option value=\"uppercase\">UPPERCASE</option>\r\n <option value=\"lowercase\">lowercase</option>\r\n <option value=\"capitalize\">Capitalize</option>\r\n </select>\r\n </div>\r\n )}\r\n </>}\r\n {selectedField.type === 'qrcode' ? (\n <div className=\"property-group\">\n <label>Background Color</label>\n <div\n style={{\n padding: '8px 10px',\n border: '1px solid #ddd',\n borderRadius: '4px',\n backgroundColor: '#f8f8f8',\n color: '#666',\n }}\n >\n Transparent\n </div>\n </div>\n ) : (\n <div className=\"property-group\">\n <label>Background Color</label>\n <div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>\n <input\n type=\"checkbox\"\n id=\"transparent-bg-checkbox\"\n checked={selectedField.style?.backgroundColor === 'transparent'}\n onChange={e => handleFieldPropertyUpdate('style.backgroundColor', e.target.checked ? 'transparent' : '#ffffff')}\n />\n <label htmlFor=\"transparent-bg-checkbox\" style={{ margin: 0, fontWeight: 400, fontSize: '0.95em' }}>Transparent</label>\n {selectedField.style?.backgroundColor !== 'transparent' && (\n <input\n type=\"color\"\n value={selectedField.style?.backgroundColor || '#ffffff'}\n onChange={e => handleFieldPropertyUpdate('style.backgroundColor', e.target.value)}\n />\n )}\n </div>\n </div>\n )}\n\r\n <div className=\"property-group\">\r\n <label>Side</label>\r\n <select\r\n value={selectedField.side}\r\n onChange={(e) =>\r\n handleFieldPropertyUpdate('side', e.target.value as 'front' | 'back')\r\n }\r\n >\r\n <option value=\"front\">Front</option>\r\n {template.sides === 'double' && <option value=\"back\">Back</option>}\r\n </select>\r\n </div>\r\n\r\n <button className=\"btn btn-danger\" onClick={handleDeleteField}>\r\n Delete Field\r\n </button>\r\n </div>\r\n ) : (\r\n <p className=\"no-selection\">Select a field to edit its properties</p>\r\n )}\r\n\r\n <h3>Sample Data</h3>\r\n <div className=\"sample-data\">\r\n <p className=\"hint\">Edit sample data to preview:</p>\r\n {Object.entries(sampleData).map(([key, value]) => (\r\n <div key={key} className=\"property-group\">\r\n <label>{key}</label>\r\n <input\r\n type=\"text\"\r\n value={String(value)}\r\n onChange={(e) =>\r\n setSampleData((prev) => ({ ...prev, [key]: e.target.value }))\r\n }\r\n />\r\n </div>\r\n ))}\r\n <button\r\n className=\"btn btn-outline btn-sm\"\r\n onClick={() =>\r\n setSampleData((prev) => ({ ...prev, [`custom_${Date.now()}`]: '' }))\r\n }\r\n >\r\n + Add Field\r\n </button>\r\n </div>\r\n\r\n {/* Validation errors */}\r\n {validationErrors.length > 0 && (\r\n <div className=\"validation-errors\">\r\n <h4>⚠️ Validation Issues</h4>\r\n <ul>\r\n {validationErrors.map((error, index) => (\r\n <li key={index}>{error}</li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n\r\n"],"names":["_jsxs","_jsx","_Fragment"],"mappings":";;;;;;;AAgBA;AACA,MAAM,iBAAiB,GAAuD;IAC5E,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE;IACjD,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE;IACrD,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE;IACpD,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE;CACjD;AAED;;;;;;;;;AASG;AAEH;;AAEG;MACU,cAAc,GAAkC,CAAC,EAC5D,eAAe,EACf,MAAM,EACN,QAAQ,EACR,SAAS,GAAG,EAAE,EACd,KAAK,GAAG,EAAE,GACX,KAAI;IACH,MAAM,EACJ,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,WAAW,EACX,aAAa,EACb,WAAW,EACX,cAAc,EACd,QAAQ,EACR,OAAO,EACP,gBAAgB,GACjB,GAAG,iBAAiB,CAAC,eAAe,CAAC;IAEtC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAmB,OAAO,CAAC;IACvE,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC;IAC3E,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC3E,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;IAC9C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IACnD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;AACnD,IAAA,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;AAE/D,IAAA,MAAM,mBAAmB,GAAG,MAAM,CAAiB,IAAI,CAAC;IACxD,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACjE,MAAM,cAAc,GAAG,MAAM,CAAC;AAC5B,QAAA,CAAC,EAAE,CAAC;AACJ,QAAA,CAAC,EAAE,CAAC;AACJ,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,MAAM,EAAE,CAAC;AACT,QAAA,MAAM,EAAE,EAAE;AACX,KAAA,CAAC;;AAGF,IAAA,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAa;AACvD,QAAA,IAAI,EAAE,UAAU;AAChB,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,UAAU,EAAE,kBAAkB;AAC9B,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,GAAG,EAAE,YAAY;AACjB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,OAAO,EAAE,YAAY;AACrB,QAAA,OAAO,EAAE,gBAAgB;AAC1B,KAAA,CAAC;;AAGF,IAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,eAAe,CAAC;;AAG3E,IAAA,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,KAA0B,KAAI;AACnE,QAAA,kBAAkB,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI,CAAC;IACvC,CAAC,EAAE,EAAE,CAAC;;AAGN,IAAA,MAAM,oBAAoB,GAAG,WAAW,CAAC,MAAK;AAC5C,QAAA,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,IAAI,KAAK,MAAM;YAAE;AACrD,QAAA,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,aAAa;AACzD,QAAA,MAAM,QAAQ,GAAG;AACf,YAAA,GAAG,IAAI;AACP,YAAA,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC;AACvB,YAAA,QAAQ,EAAE,CAAA,MAAA,EAAS,IAAI,CAAC,GAAG,EAAE,CAAA,CAAE;AAC/B,YAAA,QAAQ,EAAE;AACR,gBAAA,GAAG,QAAQ;gBACX,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;gBACtE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AACzE,aAAA;SACF;QACD,QAAQ,CAAC,QAAQ,CAAC;AAClB,QAAA,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACjC,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,kBAAkB,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;;AAEpG,IAAA,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,IAAe,KAAI;AAClB,QAAA,MAAM,QAAQ,GAAiB;AAC7B,YAAA,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC;AACvB,YAAA,QAAQ,EAAE,CAAA,MAAA,EAAS,IAAI,CAAC,GAAG,EAAE,CAAA,CAAE;YAC/B,KAAK,EAAE,IAAI,KAAK,OAAO,GAAG,OAAO,GAAG,EAAE;YACtC,IAAI;AACJ,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;AAClD,YAAA,KAAK,EAAE;gBACL,QAAQ,EAAE,IAAI,KAAK,OAAO,GAAG,MAAM,GAAG,MAAM;gBAC5C,UAAU,EAAE,IAAI,KAAK,OAAO,GAAG,MAAM,GAAG,QAAQ;AAChD,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,SAAS,EAAE,MAAM;AACjB,gBAAA,eAAe,EAAE,aAAa;AAC/B,aAAA;AACD,YAAA,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAClC,UAAU,EAAE,IAAI,KAAK,OAAO,GAAG,cAAc,GAAG,EAAE;AAClD,YAAA,IAAI,IAAI,KAAK,QAAQ,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;SAC/C;;AAGD,QAAA,IAAI,IAAI,KAAK,OAAO,EAAE;YACpB,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE;QAC9D;AAAO,aAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;YAC5B,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC7D;QAEA,QAAQ,CAAC,QAAQ,CAAC;AAClB,QAAA,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;AACjC,IAAA,CAAC,EACD,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAC/C;;IAGD,MAAM,sBAAsB,GAAG,WAAW,CACxC,OAAO,CAAsC,KAAI;QAC/C,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,IAAI;YAAE;AAEX,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC;AAC5C,YAAA,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC;QACnC;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC;QACpD;AACF,IAAA,CAAC,EACD,CAAC,UAAU,EAAE,aAAa,CAAC,CAC5B;;AAGD,IAAA,MAAM,uBAAuB,GAAG,WAAW,CACzC,CAAC,WAA4B,KAAI;QAC/B,cAAc,CAAC,WAAW,CAAC;;QAE3B,MAAM,SAAS,GAAG,GAAG;QACrB,MAAM,UAAU,GAAG,GAAG;AACtB,QAAA,IAAI,WAAW,KAAK,UAAU,EAAE;AAC9B,YAAA,WAAW,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACnE;aAAO;AACL,YAAA,WAAW,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACnE;AACF,IAAA,CAAC,EACD,CAAC,cAAc,EAAE,WAAW,CAAC,CAC9B;;AAGD,IAAA,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,KAAgB,KAAI;QACnB,QAAQ,CAAC,KAAK,CAAC;QACf,IAAI,KAAK,KAAK,QAAQ,IAAI,UAAU,KAAK,MAAM,EAAE;YAC/C,aAAa,CAAC,OAAO,CAAC;QACxB;AACF,IAAA,CAAC,EACD,CAAC,QAAQ,EAAE,UAAU,CAAC,CACvB;;AAGD,IAAA,MAAM,eAAe,GAAG,WAAW,CACjC,CAAC,CAAmB,KAAI;AACtB,QAAA,IAAI,CAAC,aAAa,IAAI,CAAC,mBAAmB,CAAC,OAAO;YAAE;AAEpD,QAAA,MAAM,MAAM,GAAG,CAAC,CAAC,MAAqB;;QAGtC,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;YAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE;YAC1C,aAAa,CAAC,IAAI,CAAC;YACnB,cAAc,CAAC,OAAO,GAAG;gBACvB,CAAC,EAAE,CAAC,CAAC,OAAO;gBACZ,CAAC,EAAE,CAAC,CAAC,OAAO;AACZ,gBAAA,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK;AACnC,gBAAA,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,MAAM;AACrC,gBAAA,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;AAChC,gBAAA,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAChC,MAAM;aACP;YACD;QACF;;AAGA,QAAA,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;YACpC,aAAa,CAAC,IAAI,CAAC;YACnB,YAAY,CAAC,OAAO,GAAG;gBACrB,CAAC,EAAE,CAAC,CAAC,OAAO;gBACZ,CAAC,EAAE,CAAC,CAAC,OAAO;AACZ,gBAAA,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;AAChC,gBAAA,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;aACjC;QACH;AACF,IAAA,CAAC,EACD,CAAC,aAAa,CAAC,CAChB;;IAGD,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,eAAe,GAAG,CAAC,CAAa,KAAI;AACxC,YAAA,IAAI,CAAC,aAAa;gBAAE;YAEpB,IAAI,UAAU,EAAE;gBACd,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;gBACjD,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;;AAGjD,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAC/B,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,EACtD,YAAY,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CACrC,CAAC;AACF,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAC/B,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,EACxD,YAAY,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CACrC,CAAC;AAEF,gBAAA,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE;AAC5B,oBAAA,QAAQ,EAAE,EAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE;AAC1D,iBAAA,CAAC;YACJ;YAEA,IAAI,UAAU,EAAE;AACd,gBAAA,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO;AAC9E,gBAAA,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC;AAC5B,gBAAA,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC;gBAE5B,IAAI,QAAQ,GAAG,KAAK;gBACpB,IAAI,SAAS,GAAG,MAAM;gBACtB,IAAI,IAAI,GAAG,MAAM;gBACjB,IAAI,IAAI,GAAG,MAAM;AAEjB,gBAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACxB,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,GAAG,MAAM,CAAC;gBACzC;AACA,gBAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACxB,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,GAAG,MAAM,CAAC;oBACvC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;gBACrC;AACA,gBAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACxB,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;gBAC3C;AACA,gBAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACxB,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;oBACzC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;gBACrC;AAEA,gBAAA,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE;AAC5B,oBAAA,QAAQ,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE;AACnE,iBAAA,CAAC;YACJ;AACF,QAAA,CAAC;QAED,MAAM,aAAa,GAAG,MAAK;YACzB,aAAa,CAAC,KAAK,CAAC;YACpB,aAAa,CAAC,KAAK,CAAC;;YAEpB,MAAM,CAAC,YAAY,IAAI,EAAE,eAAe,IAAI;AAC5C,YAAA,IAAI,mBAAmB,CAAC,OAAO,EAAE;gBAC/B,mBAAmB,CAAC,OAAO,CAAC,qBAAqB,GAAG,CAAC,CAAC;YACxD;AACF,QAAA,CAAC;AAED,QAAA,IAAI,UAAU,IAAI,UAAU,EAAE;AAC5B,YAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC;AACvD,YAAA,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC;QACnD;AAEA,QAAA,OAAO,MAAK;AACV,YAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,CAAC;AAC1D,YAAA,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC;AACtD,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;;IAG3E,MAAM,yBAAyB,GAAG,WAAW,CAC3C,CAAC,QAAgB,EAAE,KAAc,KAAI;AACnC,QAAA,IAAI,CAAC,aAAa;YAAE;AAEpB,QAAA,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC/C,YAAA,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE;AAC5B,gBAAA,KAAK,EAAE,EAAE,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC,QAAQ,GAAG,KAAK,EAAE;AACrD,aAAA,CAAC;QACJ;AAAO,aAAA,IAAI,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;YAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAwC;AACvF,YAAA,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE;AAC5B,gBAAA,QAAQ,EAAE,EAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE;AACjE,aAAA,CAAC;QACJ;aAAO;;AAEL,YAAA,IAAI,QAAQ,KAAK,UAAU,EAAE;AAC3B,gBAAA,IAAI,aAAa,CAAC,IAAI,KAAK,QAAQ,EAAE;oBACnC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAiB,EAAE,CAAC;gBAChE;YAGF;iBAAO;AACL,gBAAA,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,GAAG,KAAK,EAAE,CAAC;YACtD;QACF;AACF,IAAA,CAAC,EACD,CAAC,aAAa,EAAE,WAAW,CAAC,CAC7B;;AAGD,IAAA,MAAM,UAAU,GAAG,WAAW,CAAC,MAAK;AAClC,QAAA,MAAM,eAAe,GAAG;AACtB,YAAA,GAAG,QAAQ;AACX,YAAA,IAAI,EAAE,YAAY;AAClB,YAAA,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC;AACD,QAAA,MAAM,eAAe,GAAG,kBAAkB,CAAC,eAAe,CAAC;QAC3D,MAAM,CAAC,eAAe,CAAC;IACzB,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;;AAGpC,IAAA,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAK;QACzC,IAAI,eAAe,EAAE;YACnB,WAAW,CAAC,eAAe,CAAC;YAC5B,kBAAkB,CAAC,IAAI,CAAC;QAC1B;AACF,IAAA,CAAC,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;;IAGlC,SAAS,CAAC,MAAK;;QAGb,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,mBAAmB,CAAC;QAC5D,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAK,CAAiC,CAAC,CAAC,CAAC;AAC3E,YAAA,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAK,CAAkC,CAAC,CAAC,CAAC;QAC7E;AAEA,QAAA,MAAM,aAAa,GAAG,CAAC,CAAgB,KAAI;YACzC,IAAI,eAAe,EAAE;AACnB,gBAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,eAAe,CAAC;;AAEjE,gBAAA,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC;AAC/B,gBAAA,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC;AAClB,gBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW;oBAAE,EAAE,GAAG,CAAC,IAAI;AACrC,gBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,YAAY;oBAAE,EAAE,GAAG,IAAI;AACrC,gBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS;oBAAE,EAAE,GAAG,CAAC,IAAI;AACnC,gBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW;oBAAE,EAAE,GAAG,IAAI;AACpC,gBAAA,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,KAAK,EAAE;;AAEnC,oBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;wBACrD,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;AACrE,wBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS;AAAE,4BAAA,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,CAAC,GAAG,EAAE;AAC9D,wBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW;4BAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;AAC/E,wBAAA,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE;AACpB,4BAAA,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE;AACrD,yBAAA,CAAC;wBACF,CAAC,CAAC,cAAc,EAAE;wBAClB;oBACF;yBAAO;AACL,wBAAA,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACvG,wBAAA,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;AACzG,wBAAA,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE;AACpB,4BAAA,QAAQ,EAAE,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE;AAClD,yBAAA,CAAC;wBACF,CAAC,CAAC,cAAc,EAAE;wBAClB;oBACF;gBACF;;AAEA,gBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE;AACtB,oBAAA,iBAAiB,EAAE;gBACrB;AACA,gBAAA,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE;oBACtB,kBAAkB,CAAC,IAAI,CAAC;gBAC1B;YACF;AACF,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC;QACnD,OAAO,MAAM,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC;AACrE,IAAA,CAAC,EAAE,CAAC,eAAe,EAAE,iBAAiB,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAEzF,IAAA,QACEA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAA,gBAAA,EAAmB,SAAS,CAAA,CAAE,EAAE,KAAK,EAAE,KAAK,EAAA,QAAA,EAAA,CAE1DA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,iBAAiB,EAAA,QAAA,EAAA,CAC9BC,GAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAChD,SAAS,EAAC,qBAAqB,EAC/B,WAAW,EAAC,eAAe,EAAA,CAC3B,EACFD,cAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAC5B,QAAQ,KACPC,GAAA,CAAA,QAAA,EAAA,EAAQ,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAC,mBAAmB,EAAA,QAAA,EAAA,QAAA,EAAA,CAE/C,CACV,EACDA,GAAA,CAAA,QAAA,EAAA,EAAQ,OAAO,EAAE,UAAU,EAAE,SAAS,EAAC,iBAAiB,EAAC,QAAQ,EAAE,CAAC,OAAO,EAAA,QAAA,EAAA,eAAA,EAAA,CAElE,CAAA,EAAA,CACL,CAAA,EAAA,CACF,EAEND,cAAK,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,CAE5BA,cAAK,SAAS,EAAC,+BAA+B,EAAA,QAAA,EAAA,CAC5CC,qCAAmB,EACnBA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,aAAa,EAAA,QAAA,EACzB,iBAAiB,CAAC,GAAG,CAAC,CAAC,SAAS,MAC/BD,IAAA,CAAA,QAAA,EAAA,EAEE,OAAO,EAAE,MAAM,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAC7C,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAE1BC,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,YAAY,EAAA,QAAA,EAAE,SAAS,CAAC,IAAI,GAAQ,EACpDA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,aAAa,EAAA,QAAA,EAAE,SAAS,CAAC,KAAK,GAAQ,CAAA,EAAA,EALjD,SAAS,CAAC,IAAI,CAMZ,CACV,CAAC,GACE,EAENA,GAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EAAA,eAAA,EAAA,CAAsB,EACtBD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,aAC5BA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,aAC5BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,aAAA,EAAA,CAA0B,EAC1BD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBC,GAAA,CAAA,QAAA,EAAA,EACE,SAAS,EAAE,CAAA,IAAA,EAAO,QAAQ,CAAC,WAAW,KAAK,WAAW,GAAG,QAAQ,GAAG,EAAE,EAAE,EACxE,OAAO,EAAE,MAAM,uBAAuB,CAAC,WAAW,CAAC,0BAG5C,EACTA,GAAA,CAAA,QAAA,EAAA,EACE,SAAS,EAAE,OAAO,QAAQ,CAAC,WAAW,KAAK,UAAU,GAAG,QAAQ,GAAG,EAAE,CAAA,CAAE,EACvE,OAAO,EAAE,MAAM,uBAAuB,CAAC,UAAU,CAAC,yBAG3C,CAAA,EAAA,CACL,CAAA,EAAA,CACF,EAEND,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,CAC5BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,YAAA,EAAA,CAAyB,EACzBD,cAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBC,gBACE,SAAS,EAAE,CAAA,IAAA,EAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAA,CAAE,EAC/D,OAAO,EAAE,MAAM,iBAAiB,CAAC,QAAQ,CAAC,uBAGnC,EACTA,GAAA,CAAA,QAAA,EAAA,EACE,SAAS,EAAE,CAAA,IAAA,EAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAA,CAAE,EAC/D,OAAO,EAAE,MAAM,iBAAiB,CAAC,QAAQ,CAAC,EAAA,QAAA,EAAA,QAAA,EAAA,CAGnC,CAAA,EAAA,CACL,CAAA,EAAA,CACF,EAEND,cAAK,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,CAC5BC,4CAA6B,EAC7BD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,aAAa,aAC1BC,GAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAC9B,QAAQ,EAAE,CAAC,CAAC,KACV,WAAW,CAAC,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAEtE,WAAW,EAAC,OAAO,EAAA,CACnB,EACFA,GAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,QAAA,EAAA,CAAc,EACdA,GAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAC/B,QAAQ,EAAE,CAAC,CAAC,KACV,WAAW,CAAC,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAEvE,WAAW,EAAC,QAAQ,EAAA,CACpB,CAAA,EAAA,CACE,CAAA,EAAA,CACF,CAAA,EAAA,CACF,EAENA,GAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EAAA,YAAA,EAAA,CAAmB,EACnBD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mBAAmB,EAAA,QAAA,EAAA,CAChCC,GAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,SAAS,EAChB,QAAQ,EAAE,sBAAsB,EAChC,EAAE,EAAC,WAAW,EACd,SAAS,EAAC,YAAY,EAAA,CACtB,EACFD,IAAA,CAAA,OAAA,EAAA,EAAO,OAAO,EAAC,WAAW,EAAC,SAAS,EAAC,iBAAiB,EAAA,QAAA,EAAA,CAAA,SAAA,EAC5C,UAAU,EAAA,aAAA,CAAA,EAAA,CACZ,EACP,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,KAC/BC,GAAA,CAAA,QAAA,EAAA,EACE,SAAS,EAAC,uBAAuB,EACjC,OAAO,EAAE,MAAM,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,EAAA,QAAA,EAAA,QAAA,EAAA,CAGrC,CACV,IACG,CAAA,EAAA,CACF,EAGND,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,kBAAkB,EAAA,QAAA,EAAA,CAE/BA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBC,GAAA,CAAA,QAAA,EAAA,EACE,SAAS,EAAE,CAAA,IAAA,EAAO,UAAU,KAAK,OAAO,GAAG,QAAQ,GAAG,EAAE,CAAA,CAAE,EAC1D,OAAO,EAAE,MAAM,aAAa,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,OAAA,EAAA,CAG9B,EACR,QAAQ,CAAC,KAAK,KAAK,QAAQ,KAC1BA,GAAA,CAAA,QAAA,EAAA,EACE,SAAS,EAAE,OAAO,UAAU,KAAK,MAAM,GAAG,QAAQ,GAAG,EAAE,CAAA,CAAE,EACzD,OAAO,EAAE,MAAM,aAAa,CAAC,MAAM,CAAC,EAAA,QAAA,EAAA,MAAA,EAAA,CAG7B,CACV,EACDD,gBAAO,SAAS,EAAC,aAAa,EAAA,QAAA,EAAA,CAC5BC,GAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,QAAQ,EACjB,QAAQ,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAA,CAC9C,EAAA,WAAA,CAAA,EAAA,CAEI,IACJ,EAGNA,GAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,mBAAmB,EACxB,SAAS,EAAC,iBAAiB,EAC3B,WAAW,EAAE,eAAe,EAAA,QAAA,EAE5BA,GAAA,CAAC,aAAa,EAAA,EACZ,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,iBAAiB,EAChC,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,IAAI,EAAA,CACd,EAAA,CACE,EAGND,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,aAAa,aAC1BA,IAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EAAA,CAAA,YAAA,EAAe,UAAU,cAAY,EACpC,QAAQ,CAAC;yCACP,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,UAAU;AACnC,yCAAA,GAAG,CAAC,CAAC,KAAK,MACTA,IAAA,CAAA,KAAA,EAAA,EAEE,SAAS,EAAE,CAAA,WAAA,EAAc,KAAK,CAAC,EAAE,KAAK,eAAe,GAAG,UAAU,GAAG,EAAE,CAAA,CAAE,EACzE,OAAO,EAAE,MAAM,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAA,QAAA,EAAA,CAE3CC,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,iBAAiB,EAAA,QAAA,EAC9B,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAA,CACtD,EACPA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,WAAW,EAAA,QAAA,EAAE,KAAK,CAAC,QAAQ,GAAQ,EACnDA,GAAA,CAAA,QAAA,EAAA,EACE,SAAS,EAAC,YAAY,EACtB,OAAO,EAAE,CAAC,CAAC,KAAI;oDACb,CAAC,CAAC,eAAe,EAAE;AACnB,oDAAA,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;AACrB,oDAAA,IAAI,KAAK,CAAC,EAAE,KAAK,eAAe;wDAAE,kBAAkB,CAAC,IAAI,CAAC;AAC5D,gDAAA,CAAC,uBAGM,CAAA,EAAA,EAjBJ,KAAK,CAAC,EAAE,CAkBT,CACP,CAAC,CAAA,EAAA,CACA,CAAA,EAAA,CACF,EAGND,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gCAAgC,aAC7CC,GAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAyB,EACxB,aAAa,IACZD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,kBAAkB,EAAA,QAAA,EAAA,CAC/BA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAC7BC,uCAAwB,EACxBA,GAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,aAAa,CAAC,QAAQ,EAC7B,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA,CACtE,CAAA,EAAA,CACE,EAEL,aAAa,CAAC,IAAI,KAAK,OAAO,KAC7BD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,aAC7BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,OAAA,EAAA,CAAoB,EACpBA,GAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,EAAE,EAChC,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA,CACnE,CAAA,EAAA,CACE,CACP,EAGA,aAAa,CAAC,IAAI,KAAK,MAAM,KAC5BD,IAAA,CAAAE,QAAA,EAAA,EAAA,QAAA,EAAA,CACED,GAAA,CAAA,QAAA,EAAA,EAAQ,SAAS,EAAC,wBAAwB,EAAC,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,oBAAoB,gCAE5F,EACTD,IAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAA,QAAA,EAAA,CACrFC,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,EAAA,QAAA,EAAA,aAAA,EAAA,CAAsB,EAE3FD,cAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAC7BC,4CAA6B,EAC7BD,IAAA,CAAA,QAAA,EAAA,EACE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,aAAa,IAAI,KAAK,EAClD,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,qBAAqB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA,QAAA,EAAA,CAEjFC,gBAAQ,KAAK,EAAC,KAAK,EAAA,QAAA,EAAA,KAAA,EAAA,CAAa,EAChCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,MAAM,4BAAqB,CAAA,EAAA,CAClC,CAAA,EAAA,CACL,EACND,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAC7BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,CAAmC,EACnCD,IAAA,CAAA,QAAA,EAAA,EACE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,kBAAkB,IAAI,KAAK,EACvD,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,0BAA0B,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA,QAAA,EAAA,CAEtFC,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,EAAA,QAAA,EAAA,KAAA,EAAA,CAAa,EAChCA,gBAAQ,KAAK,EAAC,QAAQ,EAAA,QAAA,EAAA,QAAA,EAAA,CAAgB,EACtCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,QAAQ,EAAA,QAAA,EAAA,QAAA,EAAA,CAAgB,IAC/B,CAAA,EAAA,CACL,EACND,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAC7BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,CAA8B,EAC9BA,eACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,aAAa,IAAI,MAAM,EACnD,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,qBAAqB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA,CACjF,CAAA,EAAA,CACE,EACND,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAC7BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAgC,EAChCD,IAAA,CAAA,QAAA,EAAA,EACE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,eAAe,IAAI,QAAQ,EACvD,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,uBAAuB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA,QAAA,EAAA,CAEnFC,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,QAAQ,EAAA,QAAA,EAAA,QAAA,EAAA,CAAgB,EACtCA,gBAAQ,KAAK,EAAC,MAAM,EAAA,QAAA,EAAA,MAAA,EAAA,CAAc,EAClCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,oBAAa,EAChCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,EAAA,QAAA,EAAA,KAAA,EAAA,CAAa,EAChCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,EAAA,QAAA,EAAA,KAAA,EAAA,CAAa,EAChCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,EAAA,QAAA,EAAA,KAAA,EAAA,CAAa,EAChCA,gBAAQ,KAAK,EAAC,KAAK,EAAA,QAAA,EAAA,KAAA,EAAA,CAAa,EAChCA,gBAAQ,KAAK,EAAC,KAAK,EAAA,QAAA,EAAA,KAAA,EAAA,CAAa,EAChCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,oBAAa,EAChCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,EAAA,QAAA,EAAA,KAAA,EAAA,CAAa,EAChCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,EAAA,QAAA,EAAA,KAAA,EAAA,CAAa,CAAA,EAAA,CACzB,CAAA,EAAA,CACL,EACND,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,aAC7BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,CAAmC,EACnCD,IAAA,CAAA,QAAA,EAAA,EACE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,kBAAkB,IAAI,MAAM,EACxD,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,0BAA0B,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,aAEtFC,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,MAAM,qBAAc,EAClCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,WAAW,EAAA,QAAA,EAAA,WAAA,EAAA,CAAmB,EAC5CA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,WAAW,EAAA,QAAA,EAAA,WAAA,EAAA,CAAmB,EAC5CA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,YAAY,EAAA,QAAA,EAAA,YAAA,EAAA,CAAoB,CAAA,EAAA,CACvC,CAAA,EAAA,CACL,EACND,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,aAC7BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,aAAA,EAAA,CAA0B,EAC1BA,GAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,UAAU,IAAI,SAAS,EACnD,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA,CAC9E,IACE,EACND,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAC7BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,CAA+B,EAC/BD,IAAA,CAAA,QAAA,EAAA,EACE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,cAAc,IAAI,MAAM,EACpD,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,sBAAsB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA,QAAA,EAAA,CAElFC,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,MAAM,EAAA,QAAA,EAAA,MAAA,EAAA,CAAc,EAClCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,QAAQ,EAAA,QAAA,EAAA,QAAA,EAAA,CAAgB,EACtCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,OAAO,EAAA,QAAA,EAAA,OAAA,EAAA,CAAe,CAAA,EAAA,CAC7B,IACL,CAAA,EAAA,CACF,EACND,IAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAA,QAAA,EAAA,CACrFC,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,EAAA,QAAA,EAAA,YAAA,EAAA,CAAqB,EAC1FD,cAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAC7BC,4CAA6B,EAC7BA,GAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,YAAY,IAAI,aAAa,CAAC,KAAK,EAAE,QAAQ,IAAI,MAAM,EACnF,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,oBAAoB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA,CAChF,IACE,EACND,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAC7BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,CAA+B,EAC/BD,IAAA,CAAA,QAAA,EAAA,EACE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,cAAc,IAAI,aAAa,CAAC,KAAK,EAAE,UAAU,IAAI,QAAQ,EACzF,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,sBAAsB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA,QAAA,EAAA,CAElFC,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,QAAQ,EAAA,QAAA,EAAA,QAAA,EAAA,CAAgB,EACtCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,MAAM,qBAAc,EAClCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,EAAA,QAAA,EAAA,KAAA,EAAA,CAAa,EAChCA,gBAAQ,KAAK,EAAC,KAAK,EAAA,QAAA,EAAA,KAAA,EAAA,CAAa,EAChCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,oBAAa,EAChCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,EAAA,QAAA,EAAA,KAAA,EAAA,CAAa,EAChCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,EAAA,QAAA,EAAA,KAAA,EAAA,CAAa,EAChCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,EAAA,QAAA,EAAA,KAAA,EAAA,CAAa,EAChCA,gBAAQ,KAAK,EAAC,KAAK,EAAA,QAAA,EAAA,KAAA,EAAA,CAAa,EAChCA,gBAAQ,KAAK,EAAC,KAAK,EAAA,QAAA,EAAA,KAAA,EAAA,CAAa,EAChCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,oBAAa,CAAA,EAAA,CACzB,CAAA,EAAA,CACL,EACND,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAC7BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,YAAA,EAAA,CAAyB,EACzBA,GAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,SAAS,IAAI,aAAa,CAAC,KAAK,EAAE,KAAK,IAAI,SAAS,EAChF,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA,CAC7E,CAAA,EAAA,CACE,EACND,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,aAC7BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,YAAA,EAAA,CAAyB,EACzBD,IAAA,CAAA,QAAA,EAAA,EACE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,aAAa,IAAI,aAAa,CAAC,KAAK,EAAE,SAAS,IAAI,MAAM,EACrF,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,qBAAqB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA,QAAA,EAAA,CAEjFC,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,MAAM,EAAA,QAAA,EAAA,MAAA,EAAA,CAAc,EAClCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,QAAQ,EAAA,QAAA,EAAA,QAAA,EAAA,CAAgB,EACtCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,OAAO,sBAAe,CAAA,EAAA,CAC7B,CAAA,EAAA,CACL,EACND,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,aAC7BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,aAAA,EAAA,CAA0B,EAC1BA,GAAA,CAAA,OAAA,EAAA,EACE,EAAE,EAAC,mBAAmB,EACtB,IAAI,EAAC,QAAQ,EACb,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,GAAG,EACT,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EACnF,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC9E,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EACpB,OAAO,EAAE,MAAM,yBAAyB,CAAC,IAAI,CAAC,EAC9C,MAAM,EAAE,MAAM,yBAAyB,CAAC,KAAK,CAAC,EAAA,CAC9C,CAAA,EAAA,CACE,EACND,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAC7BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,CAA6B,EAC7BD,IAAA,CAAA,QAAA,EAAA,EACE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,aAAa,IAAI,MAAM,EACnD,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,qBAAqB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA,QAAA,EAAA,CAEjFC,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,MAAM,EAAA,QAAA,EAAA,MAAA,EAAA,CAAc,EAClCA,gBAAQ,KAAK,EAAC,WAAW,EAAA,QAAA,EAAA,WAAA,EAAA,CAAmB,EAC5CA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,WAAW,0BAAmB,EAC5CA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,YAAY,EAAA,QAAA,EAAA,YAAA,EAAA,CAAoB,CAAA,EAAA,CACvC,CAAA,EAAA,CACL,EACND,cAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAC7BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,CAAkC,EAClCD,IAAA,CAAA,QAAA,EAAA,EACE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,iBAAiB,IAAI,KAAK,EACtD,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,yBAAyB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA,QAAA,EAAA,CAErFC,gBAAQ,KAAK,EAAC,KAAK,EAAA,QAAA,EAAA,KAAA,EAAA,CAAa,EAChCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,QAAQ,EAAA,QAAA,EAAA,QAAA,EAAA,CAAgB,EACtCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,QAAQ,uBAAgB,CAAA,EAAA,CAC/B,CAAA,EAAA,CACL,CAAA,EAAA,CACF,EACND,cAAK,KAAK,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,aACrFC,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,EAAA,QAAA,EAAA,iBAAA,EAAA,CAA0B,EAC/FD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAC7BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,CAAyC,EACzCD,iBACE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,aAAa,IAAI,KAAK,EAClD,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,qBAAqB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA,QAAA,EAAA,CAEjFC,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,EAAA,QAAA,EAAA,KAAA,EAAA,CAAa,EAChCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,QAAQ,EAAA,QAAA,EAAA,QAAA,EAAA,CAAgB,EACtCA,gBAAQ,KAAK,EAAC,QAAQ,EAAA,QAAA,EAAA,QAAA,EAAA,CAAgB,IAC/B,CAAA,EAAA,CACL,CAAA,EAAA,CACF,CAAA,EAAA,CACL,CACJ,EAEA,aAAa,CAAC,IAAI,KAAK,OAAO,KAC7BD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAC7BC,yCAA0B,EAC1BA,GAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,aAAa,CAAC,UAAU,IAAI,EAAE,EACrC,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA,CACxE,IACE,CACP,EAEA,aAAa,CAAC,IAAI,KAAK,QAAQ,KAC9BD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAC7BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,CAAkC,EAClCA,GAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAC,MAAM,8DAAsD,EAC7EA,GAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAA,QAAA,EACnI,QAAQ,CAAC;AACP,qDAAA,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;qDACrD,GAAG,CAAC,CAAC,KAAK,MACTD,IAAA,CAAA,OAAA,EAAA,EAA4B,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,EAAA,QAAA,EAAA,CAC7FC,eACE,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,EAClE,QAAQ,EAAE,CAAC,CAAC,KAAI;AACd,gEAAA,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,IAAI,EAAE;AAClD,gEAAA,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;sEACvB,CAAC,GAAG,aAAa,EAAE,KAAK,CAAC,QAAQ;AACnC,sEAAE,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,QAAQ,CAAC;AACnD,gEAAA,yBAAyB,CAAC,UAAU,EAAE,SAAS,CAAC;AAClD,4DAAA,CAAC,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAA,CAC7B,EACD,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAA,EAAA,EAbpB,KAAK,CAAC,QAAQ,CAclB,CACT,CAAC,EAAA,CACA,CAAA,EAAA,CACF,CACP,EAIA,aAAa,CAAC,IAAI,KAAK,MAAM,IAAID,IAAA,CAAAE,QAAA,EAAA,EAAA,QAAA,EAAA,CAChCD,gCAAc,EACdD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,aAC7BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,WAAA,EAAA,CAAwB,EACxBA,GAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,QAAQ,IAAI,MAAM,EAC9C,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAC5E,CAAA,EAAA,CACE,EACND,cAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAC7BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,aAAA,EAAA,CAA0B,EAC1BD,IAAA,CAAA,QAAA,EAAA,EACE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,UAAU,IAAI,QAAQ,EAClD,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,aAE9EC,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,QAAQ,EAAA,QAAA,EAAA,QAAA,EAAA,CAAgB,EACtCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,MAAM,EAAA,QAAA,EAAA,MAAA,EAAA,CAAc,EAClCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,EAAA,QAAA,EAAA,KAAA,EAAA,CAAa,EAChCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,EAAA,QAAA,EAAA,KAAA,EAAA,CAAa,EAChCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,oBAAa,EAChCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,oBAAa,EAChCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,oBAAa,EAChCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,oBAAa,EAChCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,oBAAa,EAChCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,oBAAa,EAChCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,KAAK,oBAAa,CAAA,EAAA,CACzB,CAAA,EAAA,CACL,EACND,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,aAC7BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,YAAA,EAAA,CAAyB,EACzBA,eACE,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,KAAK,IAAI,SAAS,EAC9C,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GACzE,CAAA,EAAA,CACE,EACND,cAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAC7BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,YAAA,EAAA,CAAyB,EACzBD,IAAA,CAAA,QAAA,EAAA,EACE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,SAAS,IAAI,MAAM,EAC/C,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,aAE7EC,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,MAAM,EAAA,QAAA,EAAA,MAAA,EAAA,CAAc,EAClCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,QAAQ,EAAA,QAAA,EAAA,QAAA,EAAA,CAAgB,EACtCA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,OAAO,EAAA,QAAA,EAAA,OAAA,EAAA,CAAe,CAAA,EAAA,CAC7B,CAAA,EAAA,CACL,EACL,aAAa,CAAC,IAAI,KAAK,OAAO,KAC7BD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,aAC7BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,CAA6B,EAC7BD,iBACE,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,kBAAkB,IAAI,MAAM,EACxD,QAAQ,EAAE,CAAC,CAAC,KAAK,yBAAyB,CAAC,0BAA0B,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAA,QAAA,EAAA,CAEtFC,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,MAAM,EAAA,QAAA,EAAA,MAAA,EAAA,CAAc,EAClCA,gBAAQ,KAAK,EAAC,WAAW,EAAA,QAAA,EAAA,WAAA,EAAA,CAAmB,EAC5CA,gBAAQ,KAAK,EAAC,WAAW,EAAA,QAAA,EAAA,WAAA,EAAA,CAAmB,EAC5CA,gBAAQ,KAAK,EAAC,YAAY,EAAA,QAAA,EAAA,YAAA,EAAA,CAAoB,CAAA,EAAA,CACvC,IACL,CACP,CAAA,EAAA,CACA,EACF,aAAa,CAAC,IAAI,KAAK,QAAQ,IAC9BD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CAC7BC,8CAA+B,EAC/BA,GAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE;AACL,oDAAA,OAAO,EAAE,UAAU;AACnB,oDAAA,MAAM,EAAE,gBAAgB;AACxB,oDAAA,YAAY,EAAE,KAAK;AACnB,oDAAA,eAAe,EAAE,SAAS;AAC1B,oDAAA,KAAK,EAAE,MAAM;iDACd,EAAA,QAAA,EAAA,aAAA,EAAA,CAGG,CAAA,EAAA,CACF,KAEND,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,aAC7BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,CAA+B,EAC/BD,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAAA,QAAA,EAAA,CAC3DC,GAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,UAAU,EACf,EAAE,EAAC,yBAAyB,EAC5B,OAAO,EAAE,aAAa,CAAC,KAAK,EAAE,eAAe,KAAK,aAAa,EAC/D,QAAQ,EAAE,CAAC,IAAI,yBAAyB,CAAC,uBAAuB,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,aAAa,GAAG,SAAS,CAAC,GAC/G,EACFA,GAAA,CAAA,OAAA,EAAA,EAAO,OAAO,EAAC,yBAAyB,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,4BAAqB,EACtH,aAAa,CAAC,KAAK,EAAE,eAAe,KAAK,aAAa,KACrDA,GAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,eAAe,IAAI,SAAS,EACxD,QAAQ,EAAE,CAAC,IAAI,yBAAyB,CAAC,uBAAuB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GACjF,CACH,CAAA,EAAA,CACG,CAAA,EAAA,CACF,CACP,EAEDD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gBAAgB,aAC7BC,GAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAmB,EACnBD,iBACE,KAAK,EAAE,aAAa,CAAC,IAAI,EACzB,QAAQ,EAAE,CAAC,CAAC,KACV,yBAAyB,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAyB,CAAC,aAGvEC,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,OAAO,EAAA,QAAA,EAAA,OAAA,EAAA,CAAe,EACnC,QAAQ,CAAC,KAAK,KAAK,QAAQ,IAAIA,GAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,MAAM,EAAA,QAAA,EAAA,MAAA,EAAA,CAAc,CAAA,EAAA,CAC3D,IACL,EAENA,GAAA,CAAA,QAAA,EAAA,EAAQ,SAAS,EAAC,gBAAgB,EAAC,OAAO,EAAE,iBAAiB,EAAA,QAAA,EAAA,cAAA,EAAA,CAEpD,CAAA,EAAA,CACL,KAENA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,cAAc,sDAA0C,CACtE,EAEDA,sCAAoB,EACpBD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,aAAa,aAC1BC,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,MAAM,EAAA,QAAA,EAAA,8BAAA,EAAA,CAAiC,EACnD,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,MAC3CD,IAAA,CAAA,KAAA,EAAA,EAAe,SAAS,EAAC,gBAAgB,EAAA,QAAA,EAAA,CACvCC,yBAAQ,GAAG,EAAA,CAAS,EACpBA,GAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EACpB,QAAQ,EAAE,CAAC,CAAC,KACV,aAAa,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,EAAA,CAE/D,CAAA,EAAA,EARM,GAAG,CASP,CACP,CAAC,EACFA,GAAA,CAAA,QAAA,EAAA,EACE,SAAS,EAAC,wBAAwB,EAClC,OAAO,EAAE,MACP,aAAa,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA,OAAA,EAAU,IAAI,CAAC,GAAG,EAAE,CAAA,CAAE,GAAG,EAAE,EAAE,CAAC,CAAC,4BAI/D,CAAA,EAAA,CACL,EAGL,gBAAgB,CAAC,MAAM,GAAG,CAAC,KAC1BD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mBAAmB,EAAA,QAAA,EAAA,CAChCC,yDAA6B,EAC7BA,GAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EACG,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,MACjCA,sBAAiB,KAAK,EAAA,EAAb,KAAK,CAAc,CAC7B,CAAC,EAAA,CACC,CAAA,EAAA,CACD,CACP,CAAA,EAAA,CACG,CAAA,EAAA,CACF,CAAA,EAAA,CACF;AAEV;;;;"}
1
+ {"version":3,"file":"IDCardDesigner.js","sources":["../../../src/components/IDCardDesigner.tsx"],"sourcesContent":["\r\nimport React, { useState, useCallback, useRef, useEffect } from 'react';\r\nimport type {\r\n IDCardDesignerProps,\r\n FieldMapping,\r\n FieldType,\r\n CardOrientation,\n CardSides,\n IDCardData,\n TableColumn,\n TableConfig,\n TableRowData,\n TableStyle,\n} from '../types';\nimport { useIDCardTemplate } from '../hooks/useIDCardTemplate';\nimport { deepCleanUndefined } from '../utils/deepCleanUndefined';\nimport { IDCardPreview } from './IDCardPreview';\nimport { generateId, imageFileToBase64 } from '../storage/templateStorage';\nimport {\n coerceTableRows,\n createDefaultTableConfig,\n createSampleTableRows,\n normalizeTableConfig,\n resizeTableColumns,\n} from '../utils/tableUtils';\nimport './IDCardDesigner.css';\n\r\n// Available field types in the designer\r\nconst defaultFieldTypes: { type: FieldType; label: string; icon: string }[] = [\r\n { type: 'text', label: 'Text Field', icon: '📝' },\r\n { type: 'label', label: 'Static Label', icon: '🏷️' },\n { type: 'image', label: 'Image/Photo', icon: '🖼️' },\n { type: 'qrcode', label: 'QR Code', icon: '📱' },\n { type: 'table', label: 'Table', icon: '▦' },\n];\n\r\n/**\r\n * IDCardDesigner - Visual drag-and-drop template builder\r\n * \r\n * Allows users to:\r\n * - Add and position fields on the card\r\n * - Upload background images\r\n * - Configure field styles (fonts, colors, etc.)\r\n * - Choose card orientation and sides\r\n * - Preview the card with sample data\r\n */\r\n\r\n/**\r\n * IDCardDesigner - Visual drag-and-drop ID card template builder\r\n */\r\nexport const IDCardDesigner: React.FC<IDCardDesignerProps> = ({\r\n initialTemplate,\r\n onSave,\r\n onCancel,\r\n className = '',\r\n style = {},\r\n}) => {\r\n const {\r\n template,\r\n updateField,\r\n addField,\r\n removeField,\r\n setBackground,\r\n setCardSize,\r\n setOrientation,\r\n setSides,\r\n isValid,\r\n validationErrors,\r\n } = useIDCardTemplate(initialTemplate);\r\n\r\n const [activeSide, setActiveSide] = useState<'front' | 'back'>('front');\r\n const [selectedFieldId, setSelectedFieldId] = useState<string | null>(null);\r\n const [lineHeightInputFocused, setLineHeightInputFocused] = useState(false);\r\n const [showGrid, setShowGrid] = useState(true);\r\n const [isDragging, setIsDragging] = useState(false);\r\n const [isResizing, setIsResizing] = useState(false);\r\n const [templateName, setTemplateName] = useState(template.name);\r\n\r\n const previewContainerRef = useRef<HTMLDivElement>(null);\r\n const dragStartRef = useRef({ x: 0, y: 0, fieldX: 0, fieldY: 0 });\r\n const resizeStartRef = useRef({\r\n x: 0,\r\n y: 0,\r\n width: 0,\r\n height: 0,\r\n fieldX: 0,\r\n fieldY: 0,\r\n handle: '',\r\n });\r\n\r\n // Sample data for preview\r\n const [sampleData, setSampleData] = useState<IDCardData>({\r\n name: 'John Doe',\r\n idno: 'ID12345',\r\n department: 'Computer Science',\r\n designation: 'Student',\r\n dob: '01-01-2000',\r\n bloodgroup: 'O+',\n phoneno: '9876543210',\n address: 'Sample Address',\n results: createSampleTableRows(createDefaultTableConfig()),\n });\n\r\n // Get selected field\r\n const selectedField = template.fields.find((f) => f.id === selectedFieldId);\r\n\r\n // Handle field selection\r\n const handleFieldSelect = useCallback((field: FieldMapping | null) => {\r\n setSelectedFieldId(field?.id || null);\r\n }, []);\r\n\r\n // Duplicate selected text field\r\n const handleDuplicateField = useCallback(() => {\r\n if (!selectedField || selectedField.type !== 'text') return;\r\n const { id, fieldKey, position, ...rest } = selectedField;\r\n const newField = {\r\n ...rest,\r\n id: generateId('field'),\r\n fieldKey: `field_${Date.now()}`,\r\n position: {\r\n ...position,\r\n x: Math.min(position.x + 20, template.cardSize.width - position.width),\r\n y: Math.min(position.y + 20, template.cardSize.height - position.height),\r\n },\r\n };\r\n addField(newField);\r\n setSelectedFieldId(newField.id);\r\n }, [selectedField, addField, setSelectedFieldId, template.cardSize.width, template.cardSize.height]);\r\n // Handle adding new field\r\n const handleAddField = useCallback(\n (type: FieldType) => {\n const tableConfig = type === 'table' ? createDefaultTableConfig() : undefined;\n const newField: FieldMapping = {\n id: generateId('field'),\n fieldKey: type === 'table' ? 'results' : `field_${Date.now()}`,\n label: type === 'label' ? 'Label' : '',\n type,\n side: activeSide,\n position: { x: 50, y: 50, width: 100, height: 30 },\n style: {\n fontSize: type === 'label' ? '10px' : '12px',\r\n fontWeight: type === 'label' ? 'bold' : 'normal',\r\n color: '#000000',\r\n textAlign: 'left',\r\n backgroundColor: 'transparent',\r\n },\n zIndex: template.fields.length + 1,\n staticText: type === 'label' ? 'Static Label' : '',\n ...(tableConfig ? { table: tableConfig } : {}),\n ...(type === 'qrcode' ? { qrFields: [] } : {}),\n };\n\n // Adjust default sizes based on type\n if (type === 'image') {\n newField.position = { x: 50, y: 50, width: 80, height: 100 };\n } else if (type === 'qrcode') {\n newField.position = { x: 50, y: 50, width: 80, height: 80 };\n } else if (type === 'table') {\n const availableTableWidth = Math.max(20, template.cardSize.width - 40);\n newField.position = {\n x: 20,\n y: 40,\n width: Math.min(availableTableWidth, 300),\n height: 120,\n };\n }\n\n addField(newField);\n if (type === 'table' && tableConfig) {\n setSampleData((prev) => ({\n ...prev,\n [newField.fieldKey]: prev[newField.fieldKey] || createSampleTableRows(tableConfig),\n }));\n }\n setSelectedFieldId(newField.id);\n },\n [activeSide, addField, template.cardSize.width, template.fields.length]\n );\n\r\n // Handle background upload\r\n const handleBackgroundUpload = useCallback(\r\n async (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const file = e.target.files?.[0];\r\n if (!file) return;\r\n\r\n try {\r\n const base64 = await imageFileToBase64(file);\r\n setBackground(activeSide, base64);\r\n } catch (error) {\r\n console.error('Failed to load background:', error);\r\n }\r\n },\r\n [activeSide, setBackground]\r\n );\r\n\r\n // Handle orientation change\r\n const handleOrientationChange = useCallback(\r\n (orientation: CardOrientation) => {\r\n setOrientation(orientation);\n // Update card size based on orientation\n const baseWidth = 640;\n const baseHeight = 415;\n if (orientation === 'portrait') {\r\n setCardSize({ width: baseHeight, height: baseWidth, unit: 'px' });\r\n } else {\r\n setCardSize({ width: baseWidth, height: baseHeight, unit: 'px' });\r\n }\r\n },\r\n [setOrientation, setCardSize]\r\n );\r\n\r\n // Handle sides change\r\n const handleSidesChange = useCallback(\r\n (sides: CardSides) => {\r\n setSides(sides);\r\n if (sides === 'single' && activeSide === 'back') {\r\n setActiveSide('front');\r\n }\r\n },\r\n [setSides, activeSide]\r\n );\r\n\r\n // Drag and drop handling\r\n const handleMouseDown = useCallback(\r\n (e: React.MouseEvent) => {\r\n if (!selectedField || !previewContainerRef.current) return;\r\n\r\n const target = e.target as HTMLElement;\r\n\r\n // Check if clicking on resize handle\r\n if (target.classList.contains('resize-handle')) {\r\n const handle = target.dataset.handle || '';\r\n setIsResizing(true);\r\n resizeStartRef.current = {\r\n x: e.clientX,\r\n y: e.clientY,\r\n width: selectedField.position.width,\r\n height: selectedField.position.height,\r\n fieldX: selectedField.position.x,\r\n fieldY: selectedField.position.y,\r\n handle,\r\n };\r\n return;\r\n }\r\n\r\n // Check if clicking on field (for dragging)\r\n if (target.closest('.preview-field')) {\r\n setIsDragging(true);\r\n dragStartRef.current = {\r\n x: e.clientX,\r\n y: e.clientY,\r\n fieldX: selectedField.position.x,\r\n fieldY: selectedField.position.y,\r\n };\r\n }\r\n },\r\n [selectedField]\r\n );\r\n\r\n // Handle mouse move for dragging/resizing\r\n useEffect(() => {\r\n const handleMouseMove = (e: MouseEvent) => {\r\n if (!selectedField) return;\r\n\r\n if (isDragging) {\r\n const deltaX = e.clientX - dragStartRef.current.x;\r\n const deltaY = e.clientY - dragStartRef.current.y;\r\n\r\n // Unified drag logic for all field types\r\n const newX = Math.max(0, Math.min(\r\n template.cardSize.width - selectedField.position.width,\r\n dragStartRef.current.fieldX + deltaX\r\n ));\r\n const newY = Math.max(0, Math.min(\r\n template.cardSize.height - selectedField.position.height,\r\n dragStartRef.current.fieldY + deltaY\r\n ));\r\n\r\n updateField(selectedField.id, {\r\n position: { ...selectedField.position, x: newX, y: newY },\r\n });\r\n }\r\n\r\n if (isResizing) {\r\n const { handle, x, y, width, height, fieldX, fieldY } = resizeStartRef.current;\r\n const deltaX = e.clientX - x;\r\n const deltaY = e.clientY - y;\r\n\r\n let newWidth = width;\r\n let newHeight = height;\r\n let newX = fieldX;\r\n let newY = fieldY;\r\n\r\n if (handle.includes('e')) {\n newWidth = Math.max(20, width + deltaX);\n }\n if (handle.includes('w')) {\n newWidth = Math.max(20, width - deltaX);\n newX = Math.max(0, fieldX + deltaX);\n }\n if (handle.includes('s')) {\n newHeight = Math.max(20, height + deltaY);\n }\n if (handle.includes('n')) {\n newHeight = Math.max(20, height - deltaY);\n newY = Math.max(0, fieldY + deltaY);\n }\n\r\n updateField(selectedField.id, {\r\n position: { x: newX, y: newY, width: newWidth, height: newHeight },\r\n });\r\n }\r\n };\r\n\r\n const handleMouseUp = () => {\r\n setIsDragging(false);\r\n setIsResizing(false);\r\n // Remove any accidental selection or pointer capture\r\n window.getSelection?.()?.removeAllRanges?.();\r\n if (previewContainerRef.current) {\r\n previewContainerRef.current.releasePointerCapture?.(0);\r\n }\r\n };\r\n\r\n if (isDragging || isResizing) {\r\n document.addEventListener('mousemove', handleMouseMove);\r\n window.addEventListener('mouseup', handleMouseUp);\r\n }\r\n\r\n return () => {\r\n document.removeEventListener('mousemove', handleMouseMove);\r\n window.removeEventListener('mouseup', handleMouseUp);\r\n };\r\n }, [isDragging, isResizing, selectedField, updateField, template.cardSize]);\r\n\r\n // Handle field property update\r\n const handleFieldPropertyUpdate = useCallback(\n (property: string, value: unknown) => {\n if (!selectedField) return;\n\r\n if (property.startsWith('style.')) {\r\n const styleKey = property.replace('style.', '');\r\n updateField(selectedField.id, {\r\n style: { ...selectedField.style, [styleKey]: value },\r\n });\r\n } else if (property.startsWith('position.')) {\n const posKey = property.replace('position.', '') as keyof typeof selectedField.position;\n updateField(selectedField.id, {\n position: { ...selectedField.position, [posKey]: Number(value) },\n });\n } else {\n if (property === 'fieldKey' && selectedField.type === 'table' && typeof value === 'string') {\n updateField(selectedField.id, { fieldKey: value });\n setSampleData((prev) => {\n if (!value || value === selectedField.fieldKey || prev[value] !== undefined) {\n return prev;\n }\n\n const next = { ...prev };\n next[value] = prev[selectedField.fieldKey] || createSampleTableRows(selectedField.table);\n delete next[selectedField.fieldKey];\n return next;\n });\n return;\n }\n\n // Only allow qrFields property on QR code fields\n if (property === 'qrFields') {\n if (selectedField.type === 'qrcode') {\n updateField(selectedField.id, { qrFields: value as string[] });\n } else {\n // do nothing if not a qrcode field\r\n }\r\n } else {\r\n updateField(selectedField.id, { [property]: value });\r\n }\r\n }\r\n },\r\n [selectedField, updateField]\n );\n\n const handleTableConfigUpdate = useCallback(\n (updates: Partial<TableConfig>) => {\n if (!selectedField || selectedField.type !== 'table') return;\n\n const table = normalizeTableConfig(selectedField.table);\n updateField(selectedField.id, {\n table: {\n ...table,\n ...updates,\n style: {\n ...table.style,\n ...updates.style,\n },\n },\n });\n },\n [selectedField, updateField]\n );\n\n const handleTableStyleUpdate = useCallback(\n (styleKey: keyof TableStyle, value: string | number) => {\n if (!selectedField || selectedField.type !== 'table') return;\n\n const table = normalizeTableConfig(selectedField.table);\n handleTableConfigUpdate({\n style: {\n ...table.style,\n [styleKey]: value,\n },\n });\n },\n [selectedField, handleTableConfigUpdate]\n );\n\n const handleTableColumnUpdate = useCallback(\n (columnIndex: number, updates: Partial<TableColumn>) => {\n if (!selectedField || selectedField.type !== 'table') return;\n\n const table = normalizeTableConfig(selectedField.table);\n const columns = table.columns.map((column, index) =>\n index === columnIndex ? { ...column, ...updates } : column\n );\n handleTableConfigUpdate({ columns });\n },\n [selectedField, handleTableConfigUpdate]\n );\n\n const handleTableColumnCountUpdate = useCallback(\n (count: number) => {\n if (!selectedField || selectedField.type !== 'table') return;\n\n const table = normalizeTableConfig(selectedField.table);\n handleTableConfigUpdate({\n columns: resizeTableColumns(table.columns, count),\n });\n },\n [selectedField, handleTableConfigUpdate]\n );\n\n const handleTableSampleCellUpdate = useCallback(\n (field: FieldMapping, table: TableConfig, rowIndex: number, columnKey: string, value: string) => {\n setSampleData((prev) => {\n const existingRows = coerceTableRows(prev[field.fieldKey]);\n const rowCount = Math.max(table.rowCount, existingRows.length, rowIndex + 1);\n const rows = Array.from({ length: rowCount }, (_, index) => ({\n ...(existingRows[index] || {}),\n }));\n rows[rowIndex] = {\n ...rows[rowIndex],\n [columnKey]: value,\n };\n\n return {\n ...prev,\n [field.fieldKey]: rows,\n };\n });\n },\n []\n );\n\n const handleAddTableSampleRow = useCallback((field: FieldMapping) => {\n setSampleData((prev) => {\n const rows = coerceTableRows(prev[field.fieldKey]);\n\n return {\n ...prev,\n [field.fieldKey]: [...rows, {} as TableRowData],\n };\n });\n }, []);\n\n // Handle save\n const handleSave = useCallback(() => {\n const updatedTemplate = {\r\n ...template,\r\n name: templateName,\r\n updatedAt: new Date().toISOString(),\r\n };\r\n const cleanedTemplate = deepCleanUndefined(updatedTemplate);\r\n onSave(cleanedTemplate);\r\n }, [template, templateName, onSave]);\r\n\r\n // Handle delete field\r\n const handleDeleteField = useCallback(() => {\r\n if (selectedFieldId) {\r\n removeField(selectedFieldId);\r\n setSelectedFieldId(null);\r\n }\r\n }, [selectedFieldId, removeField]);\r\n\r\n // Keyboard shortcuts\r\n useEffect(() => {\r\n let lineHeightInputFocused = false;\r\n // Listen for focus/blur on line height input\r\n const lhInput = document.getElementById('line-height-input');\r\n if (lhInput) {\r\n lhInput.addEventListener('focus', () => { lineHeightInputFocused = true; });\r\n lhInput.addEventListener('blur', () => { lineHeightInputFocused = false; });\r\n }\r\n\r\n const handleKeyDown = (e: KeyboardEvent) => {\r\n if (selectedFieldId) {\r\n const field = template.fields.find(f => f.id === selectedFieldId);\r\n // Arrow key movement for position\r\n const step = e.shiftKey ? 5 : 1;\r\n let dx = 0, dy = 0;\r\n if (e.key === 'ArrowLeft') dx = -step;\r\n if (e.key === 'ArrowRight') dx = step;\r\n if (e.key === 'ArrowUp') dy = -step;\r\n if (e.key === 'ArrowDown') dy = step;\r\n if ((dx !== 0 || dy !== 0) && field) {\r\n // If text field and Ctrl is pressed, adjust line height instead\r\n if (field.type === 'text' && (e.ctrlKey || e.metaKey)) {\r\n let lh = field.style?.lineHeight ? Number(field.style.lineHeight) : 1;\r\n if (e.key === 'ArrowUp') lh = Math.round((lh + 0.1) * 10) / 10;\r\n if (e.key === 'ArrowDown') lh = Math.max(0.1, Math.round((lh - 0.1) * 10) / 10);\r\n updateField(field.id, {\r\n style: { ...field.style, lineHeight: lh.toString() },\r\n });\r\n e.preventDefault();\r\n return;\r\n } else {\r\n let newX = Math.max(0, Math.min(template.cardSize.width - field.position.width, field.position.x + dx));\r\n let newY = Math.max(0, Math.min(template.cardSize.height - field.position.height, field.position.y + dy));\r\n updateField(field.id, {\r\n position: { ...field.position, x: newX, y: newY },\r\n });\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n // Delete and Escape\r\n if (e.key === 'Delete') {\r\n handleDeleteField();\r\n }\r\n if (e.key === 'Escape') {\r\n setSelectedFieldId(null);\r\n }\r\n }\r\n };\r\n\r\n document.addEventListener('keydown', handleKeyDown);\r\n return () => document.removeEventListener('keydown', handleKeyDown);\r\n }, [selectedFieldId, handleDeleteField, template.fields, template.cardSize, updateField]);\r\n\r\n return (\r\n <div className={`idcard-designer ${className}`} style={style}>\r\n {/* Header */}\r\n <div className=\"designer-header\">\r\n <input\r\n type=\"text\"\r\n value={templateName}\r\n onChange={(e) => setTemplateName(e.target.value)}\r\n className=\"template-name-input\"\r\n placeholder=\"Template Name\"\r\n />\r\n <div className=\"header-actions\">\r\n {onCancel && (\r\n <button type=\"button\" onClick={onCancel} className=\"btn btn-secondary\">\n Cancel\r\n </button>\r\n )}\r\n <button type=\"button\" onClick={handleSave} className=\"btn btn-primary\" disabled={!isValid}>\n Save Template\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div className=\"designer-body\">\r\n {/* Left Sidebar - Field Types */}\r\n <div className=\"designer-sidebar left-sidebar\">\r\n <h3>Add Fields</h3>\r\n <div className=\"field-types\">\r\n {defaultFieldTypes.map((fieldType) => (\r\n <button\n type=\"button\"\n key={fieldType.type}\n onClick={() => handleAddField(fieldType.type)}\n className=\"field-type-btn\"\r\n >\r\n <span className=\"field-icon\">{fieldType.icon}</span>\r\n <span className=\"field-label\">{fieldType.label}</span>\r\n </button>\r\n ))}\r\n </div>\r\n\r\n <h3>Card Settings</h3>\r\n <div className=\"card-settings\">\r\n <div className=\"setting-group\">\r\n <label>Orientation</label>\r\n <div className=\"btn-group\">\r\n <button\n type=\"button\"\n className={`btn ${template.orientation === 'landscape' ? 'active' : ''}`}\n onClick={() => handleOrientationChange('landscape')}\r\n >\r\n Landscape\r\n </button>\r\n <button\n type=\"button\"\n className={`btn ${template.orientation === 'portrait' ? 'active' : ''}`}\n onClick={() => handleOrientationChange('portrait')}\r\n >\r\n Portrait\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div className=\"setting-group\">\r\n <label>Card Sides</label>\r\n <div className=\"btn-group\">\r\n <button\n type=\"button\"\n className={`btn ${template.sides === 'single' ? 'active' : ''}`}\n onClick={() => handleSidesChange('single')}\r\n >\r\n Single\r\n </button>\r\n <button\n type=\"button\"\n className={`btn ${template.sides === 'double' ? 'active' : ''}`}\n onClick={() => handleSidesChange('double')}\r\n >\r\n Double\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div className=\"setting-group\">\r\n <label>Card Size (px)</label>\r\n <div className=\"size-inputs\">\r\n <input\r\n type=\"number\"\r\n value={template.cardSize.width}\r\n onChange={(e) =>\r\n setCardSize({ ...template.cardSize, width: Number(e.target.value) })\r\n }\r\n placeholder=\"Width\"\r\n />\r\n <span>×</span>\r\n <input\r\n type=\"number\"\r\n value={template.cardSize.height}\r\n onChange={(e) =>\r\n setCardSize({ ...template.cardSize, height: Number(e.target.value) })\r\n }\r\n placeholder=\"Height\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <h3>Background</h3>\r\n <div className=\"background-upload\">\r\n <input\r\n type=\"file\"\r\n accept=\"image/*\"\r\n onChange={handleBackgroundUpload}\r\n id=\"bg-upload\"\r\n className=\"file-input\"\r\n />\r\n <label htmlFor=\"bg-upload\" className=\"btn btn-outline\">\r\n Upload {activeSide} Background\r\n </label>\r\n {template.backgrounds[activeSide] && (\r\n <button\n type=\"button\"\n className=\"btn btn-danger btn-sm\"\n onClick={() => setBackground(activeSide, '')}\r\n >\r\n Remove\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {/* Center - Preview */}\r\n <div className=\"designer-preview\">\r\n {/* Side tabs */}\r\n <div className=\"side-tabs\">\r\n <button\n type=\"button\"\n className={`tab ${activeSide === 'front' ? 'active' : ''}`}\n onClick={() => setActiveSide('front')}\r\n >\r\n Front\r\n </button>\r\n {template.sides === 'double' && (\r\n <button\n type=\"button\"\n className={`tab ${activeSide === 'back' ? 'active' : ''}`}\n onClick={() => setActiveSide('back')}\r\n >\r\n Back\r\n </button>\r\n )}\r\n <label className=\"grid-toggle\">\r\n <input\r\n type=\"checkbox\"\r\n checked={showGrid}\r\n onChange={(e) => setShowGrid(e.target.checked)}\r\n />\r\n Show Grid\r\n </label>\r\n </div>\r\n\r\n {/* Preview container */}\r\n <div\r\n ref={previewContainerRef}\r\n className=\"preview-wrapper\"\r\n onMouseDown={handleMouseDown}\r\n >\r\n <IDCardPreview\r\n template={template}\r\n data={sampleData}\r\n side={activeSide}\r\n showGrid={showGrid}\r\n onFieldSelect={handleFieldSelect}\r\n selectedFieldId={selectedFieldId}\r\n editable={true}\r\n />\r\n </div>\r\n\r\n {/* Field list */}\r\n <div className=\"fields-list\">\r\n <h4>Fields on {activeSide} side:</h4>\r\n {template.fields\r\n .filter((f) => f.side === activeSide)\r\n .map((field) => (\r\n <div\r\n key={field.id}\r\n className={`field-item ${field.id === selectedFieldId ? 'selected' : ''}`}\r\n onClick={() => setSelectedFieldId(field.id)}\r\n >\r\n <span className=\"field-type-icon\">\r\n {defaultFieldTypes.find((t) => t.type === field.type)?.icon}\r\n </span>\r\n <span className=\"field-key\">{field.fieldKey}</span>\r\n <button\n type=\"button\"\n className=\"delete-btn\"\n onClick={(e) => {\r\n e.stopPropagation();\r\n removeField(field.id);\r\n if (field.id === selectedFieldId) setSelectedFieldId(null);\r\n }}\r\n >\r\n ×\r\n </button>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {/* Right Sidebar - Field Properties */}\r\n <div className=\"designer-sidebar right-sidebar\">\r\n <h3>Field Properties</h3>\r\n {selectedField ? (\r\n <div className=\"field-properties\">\r\n <div className=\"property-group\">\n <label>{selectedField.type === 'table' ? 'Data Source Key' : 'Field Key'}</label>\n <input\n type=\"text\"\n value={selectedField.fieldKey}\n onChange={(e) => handleFieldPropertyUpdate('fieldKey', e.target.value)}\n />\n </div>\n\n {selectedField.type !== 'label' && selectedField.type !== 'table' && (\n <div className=\"property-group\">\n <label>Label</label>\n <input\n type=\"text\"\n value={selectedField.label || ''}\n onChange={(e) => handleFieldPropertyUpdate('label', e.target.value)}\r\n />\r\n </div>\n )}\n\n {selectedField.type === 'table' && (() => {\n const table = normalizeTableConfig(selectedField.table);\n const sampleRows = coerceTableRows(sampleData[selectedField.fieldKey]);\n const editableRows = Array.from(\n { length: Math.max(table.rowCount, sampleRows.length) },\n (_, index) => sampleRows[index] || {}\n );\n\n return (\n <>\n <div className=\"table-editor-section\">\n <strong>Table Layout</strong>\n <div className=\"property-group\">\n <label>Body Rows</label>\n <input\n type=\"number\"\n min={1}\n value={table.rowCount}\n onChange={(e) =>\n handleTableConfigUpdate({\n rowCount: Math.max(1, Number(e.target.value) || 1),\n })\n }\n />\n </div>\n <div className=\"property-group\">\n <label>Columns</label>\n <input\n type=\"number\"\n min={1}\n value={table.columns.length}\n onChange={(e) => handleTableColumnCountUpdate(Number(e.target.value) || 1)}\n />\n </div>\n <div className=\"property-group checkbox-group\">\n <input\n id=\"table-show-header\"\n type=\"checkbox\"\n checked={table.showHeader !== false}\n onChange={(e) => handleTableConfigUpdate({ showHeader: e.target.checked })}\n />\n <label htmlFor=\"table-show-header\">Show Header</label>\n </div>\n <div className=\"property-group checkbox-group\">\n <input\n id=\"table-zebra-rows\"\n type=\"checkbox\"\n checked={Boolean(table.zebraRows)}\n onChange={(e) => handleTableConfigUpdate({ zebraRows: e.target.checked })}\n />\n <label htmlFor=\"table-zebra-rows\">Zebra Rows</label>\n </div>\n <div className=\"property-group\">\n <label>Row Height</label>\n <input\n type=\"number\"\n min={1}\n placeholder=\"Auto\"\n value={table.rowHeight || ''}\n onChange={(e) =>\n handleTableConfigUpdate({\n rowHeight: e.target.value ? Math.max(1, Number(e.target.value)) : undefined,\n })\n }\n />\n </div>\n </div>\n\n <div className=\"table-editor-section\">\n <strong>Columns</strong>\n {table.columns.map((column, index) => (\n <div className=\"table-column-editor\" key={column.id}>\n <div className=\"property-group\">\n <label>Header {index + 1}</label>\n <input\n type=\"text\"\n value={column.header}\n onChange={(e) =>\n handleTableColumnUpdate(index, { header: e.target.value })\n }\n />\n </div>\n <div className=\"property-group\">\n <label>Field Key</label>\n <input\n type=\"text\"\n value={column.fieldKey}\n onChange={(e) => {\n const nextKey = e.target.value;\n const previousKey = column.fieldKey;\n handleTableColumnUpdate(index, { fieldKey: nextKey });\n if (nextKey && nextKey !== previousKey) {\n setSampleData((prev) => {\n const rows = coerceTableRows(prev[selectedField.fieldKey]);\n return {\n ...prev,\n [selectedField.fieldKey]: rows.map((row) => {\n if (row[nextKey] !== undefined) return row;\n return {\n ...row,\n [nextKey]: row[previousKey],\n };\n }),\n };\n });\n }\n }}\n />\n </div>\n <div className=\"table-column-inline\">\n <div className=\"property-group\">\n <label>Width</label>\n <input\n type=\"number\"\n min={0.1}\n step={0.1}\n value={column.width || 1}\n onChange={(e) =>\n handleTableColumnUpdate(index, {\n width: Math.max(0.1, Number(e.target.value) || 1),\n })\n }\n />\n </div>\n <div className=\"property-group\">\n <label>Align</label>\n <select\n value={column.align || 'left'}\n onChange={(e) =>\n handleTableColumnUpdate(index, {\n align: e.target.value as TableColumn['align'],\n })\n }\n >\n <option value=\"left\">Left</option>\n <option value=\"center\">Center</option>\n <option value=\"right\">Right</option>\n </select>\n </div>\n </div>\n </div>\n ))}\n </div>\n\n <div className=\"table-editor-section\">\n <strong>Table Style</strong>\n <div className=\"table-column-inline\">\n <div className=\"property-group\">\n <label>Border Width</label>\n <input\n type=\"number\"\n min={0}\n value={table.style?.borderWidth ?? 1}\n onChange={(e) =>\n handleTableStyleUpdate('borderWidth', Math.max(0, Number(e.target.value) || 0))\n }\n />\n </div>\n <div className=\"property-group\">\n <label>Cell Padding</label>\n <input\n type=\"text\"\n value={table.style?.cellPadding || '2px 4px'}\n onChange={(e) => handleTableStyleUpdate('cellPadding', e.target.value)}\n />\n </div>\n </div>\n <div className=\"property-group\">\n <label>Border Color</label>\n <input\n type=\"color\"\n value={table.style?.borderColor || '#000000'}\n onChange={(e) => handleTableStyleUpdate('borderColor', e.target.value)}\n />\n </div>\n <div className=\"property-group\">\n <label>Header Background</label>\n <input\n type=\"color\"\n value={table.style?.headerBackgroundColor || '#f0f0f0'}\n onChange={(e) => handleTableStyleUpdate('headerBackgroundColor', e.target.value)}\n />\n </div>\n <div className=\"property-group\">\n <label>Header Text Color</label>\n <input\n type=\"color\"\n value={table.style?.headerTextColor || '#000000'}\n onChange={(e) => handleTableStyleUpdate('headerTextColor', e.target.value)}\n />\n </div>\n <div className=\"table-column-inline\">\n <div className=\"property-group\">\n <label>Header Font Size</label>\n <input\n type=\"text\"\n value={table.style?.headerFontSize || '10px'}\n onChange={(e) => handleTableStyleUpdate('headerFontSize', e.target.value)}\n />\n </div>\n <div className=\"property-group\">\n <label>Header Weight</label>\n <select\n value={table.style?.headerFontWeight || 'bold'}\n onChange={(e) => handleTableStyleUpdate('headerFontWeight', e.target.value)}\n >\n <option value=\"normal\">Normal</option>\n <option value=\"bold\">Bold</option>\n <option value=\"400\">400</option>\n <option value=\"500\">500</option>\n <option value=\"600\">600</option>\n <option value=\"700\">700</option>\n </select>\n </div>\n </div>\n <div className=\"property-group\">\n <label>Body Text Color</label>\n <input\n type=\"color\"\n value={table.style?.bodyTextColor || '#000000'}\n onChange={(e) => handleTableStyleUpdate('bodyTextColor', e.target.value)}\n />\n </div>\n <div className=\"table-column-inline\">\n <div className=\"property-group\">\n <label>Body Font Size</label>\n <input\n type=\"text\"\n value={table.style?.bodyFontSize || '10px'}\n onChange={(e) => handleTableStyleUpdate('bodyFontSize', e.target.value)}\n />\n </div>\n <div className=\"property-group\">\n <label>Body Weight</label>\n <select\n value={table.style?.bodyFontWeight || 'normal'}\n onChange={(e) => handleTableStyleUpdate('bodyFontWeight', e.target.value)}\n >\n <option value=\"normal\">Normal</option>\n <option value=\"bold\">Bold</option>\n <option value=\"400\">400</option>\n <option value=\"500\">500</option>\n <option value=\"600\">600</option>\n <option value=\"700\">700</option>\n </select>\n </div>\n </div>\n <div className=\"property-group\">\n <label>Zebra Background</label>\n <input\n type=\"color\"\n value={table.style?.zebraBackgroundColor || '#f7f7f7'}\n onChange={(e) => handleTableStyleUpdate('zebraBackgroundColor', e.target.value)}\n />\n </div>\n </div>\n\n <div className=\"table-editor-section\">\n <strong>Sample Rows</strong>\n <small className=\"hint\">Preview data for {selectedField.fieldKey}</small>\n <div\n className=\"table-sample-grid\"\n style={{\n gridTemplateColumns: `repeat(${table.columns.length}, minmax(90px, 1fr))`,\n }}\n >\n {table.columns.map((column) => (\n <div key={`sample-header-${column.id}`} className=\"table-sample-header\">\n {column.header}\n </div>\n ))}\n {editableRows.map((row, rowIndex) =>\n table.columns.map((column) => (\n <input\n key={`sample-${rowIndex}-${column.id}`}\n type=\"text\"\n value={String(row[column.fieldKey] ?? '')}\n onChange={(e) =>\n handleTableSampleCellUpdate(\n selectedField,\n table,\n rowIndex,\n column.fieldKey,\n e.target.value\n )\n }\n />\n ))\n )}\n </div>\n <button\n className=\"btn btn-outline btn-sm\"\n type=\"button\"\n onClick={() => handleAddTableSampleRow(selectedField)}\n >\n + Add Sample Row\n </button>\n </div>\n </>\n );\n })()}\n\n {/* Vertical Align for text fields */}\n {selectedField.type === 'text' && (\n <>\n <button type=\"button\" className=\"btn btn-outline btn-sm\" style={{ marginBottom: 12 }} onClick={handleDuplicateField}>\n Duplicate Field\r\n </button>\r\n <div style={{ border: '1px solid #eee', borderRadius: 4, marginBottom: 12, padding: 8 }}>\r\n <strong style={{ fontSize: '1em', display: 'block', marginBottom: 6 }}>Label Style</strong>\r\n\r\n <div className=\"property-group\">\r\n <label>Label Position</label>\r\n <select\r\n value={selectedField.style?.labelPosition || 'top'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.labelPosition', e.target.value)}\r\n >\r\n <option value=\"top\">Top</option>\r\n <option value=\"left\">Left (Side)</option>\r\n </select>\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Label Vertical Align</label>\r\n <select\r\n value={selectedField.style?.labelVerticalAlign || 'top'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.labelVerticalAlign', e.target.value)}\r\n >\r\n <option value=\"top\">Top</option>\r\n <option value=\"middle\">Middle</option>\r\n <option value=\"bottom\">Bottom</option>\r\n </select>\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Label Font Size</label>\r\n <input\r\n type=\"text\"\r\n value={selectedField.style?.labelFontSize || '12px'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.labelFontSize', e.target.value)}\r\n />\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Label Font Weight</label>\r\n <select\r\n value={selectedField.style?.labelFontWeight || 'normal'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.labelFontWeight', e.target.value)}\r\n >\r\n <option value=\"normal\">Normal</option>\r\n <option value=\"bold\">Bold</option>\r\n <option value=\"100\">100</option>\r\n <option value=\"200\">200</option>\r\n <option value=\"300\">300</option>\r\n <option value=\"400\">400</option>\r\n <option value=\"500\">500</option>\r\n <option value=\"600\">600</option>\r\n <option value=\"700\">700</option>\r\n <option value=\"800\">800</option>\r\n <option value=\"900\">900</option>\r\n </select>\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Label Text Transform</label>\r\n <select\r\n value={selectedField.style?.labelTextTransform || 'none'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.labelTextTransform', e.target.value)}\r\n >\r\n <option value=\"none\">None</option>\r\n <option value=\"uppercase\">UPPERCASE</option>\r\n <option value=\"lowercase\">lowercase</option>\r\n <option value=\"capitalize\">Capitalize</option>\r\n </select>\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Label Color</label>\r\n <input\r\n type=\"color\"\r\n value={selectedField.style?.labelColor || '#666666'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.labelColor', e.target.value)}\r\n />\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Label Text Align</label>\r\n <select\r\n value={selectedField.style?.labelTextAlign || 'left'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.labelTextAlign', e.target.value)}\r\n >\r\n <option value=\"left\">Left</option>\r\n <option value=\"center\">Center</option>\r\n <option value=\"right\">Right</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div style={{ border: '1px solid #eee', borderRadius: 4, marginBottom: 12, padding: 8 }}>\r\n <strong style={{ fontSize: '1em', display: 'block', marginBottom: 6 }}>Text Style</strong>\r\n <div className=\"property-group\">\r\n <label>Text Font Size</label>\r\n <input\r\n type=\"text\"\r\n value={selectedField.style?.textFontSize || selectedField.style?.fontSize || '12px'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.textFontSize', e.target.value)}\r\n />\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Text Font Weight</label>\r\n <select\r\n value={selectedField.style?.textFontWeight || selectedField.style?.fontWeight || 'normal'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.textFontWeight', e.target.value)}\r\n >\r\n <option value=\"normal\">Normal</option>\r\n <option value=\"bold\">Bold</option>\r\n <option value=\"100\">100</option>\r\n <option value=\"200\">200</option>\r\n <option value=\"300\">300</option>\r\n <option value=\"400\">400</option>\r\n <option value=\"500\">500</option>\r\n <option value=\"600\">600</option>\r\n <option value=\"700\">700</option>\r\n <option value=\"800\">800</option>\r\n <option value=\"900\">900</option>\r\n </select>\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Text Color</label>\r\n <input\r\n type=\"color\"\r\n value={selectedField.style?.textColor || selectedField.style?.color || '#000000'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.textColor', e.target.value)}\r\n />\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Text Align</label>\r\n <select\r\n value={selectedField.style?.textTextAlign || selectedField.style?.textAlign || 'left'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.textTextAlign', e.target.value)}\r\n >\r\n <option value=\"left\">Left</option>\r\n <option value=\"center\">Center</option>\r\n <option value=\"right\">Right</option>\r\n </select>\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Line Height</label>\r\n <input\r\n id=\"line-height-input\"\r\n type=\"number\"\r\n min={0.1}\r\n step={0.1}\r\n value={selectedField.style?.lineHeight ? Number(selectedField.style.lineHeight) : 1}\r\n onChange={(e) => handleFieldPropertyUpdate('style.lineHeight', e.target.value)}\r\n style={{ width: 80 }}\r\n onFocus={() => setLineHeightInputFocused(true)}\r\n onBlur={() => setLineHeightInputFocused(false)}\r\n />\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Text Transform</label>\r\n <select\r\n value={selectedField.style?.textTransform || 'none'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.textTransform', e.target.value)}\r\n >\r\n <option value=\"none\">None</option>\r\n <option value=\"uppercase\">UPPERCASE</option>\r\n <option value=\"lowercase\">lowercase</option>\r\n <option value=\"capitalize\">Capitalize</option>\r\n </select>\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Text Vertical Align</label>\r\n <select\r\n value={selectedField.style?.textVerticalAlign || 'top'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.textVerticalAlign', e.target.value)}\r\n >\r\n <option value=\"top\">Top</option>\r\n <option value=\"middle\">Middle</option>\r\n <option value=\"bottom\">Bottom</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div style={{ border: '1px solid #eee', borderRadius: 4, marginBottom: 12, padding: 8 }}>\r\n <strong style={{ fontSize: '1em', display: 'block', marginBottom: 6 }}>Container Style</strong>\r\n <div className=\"property-group\">\r\n <label>Vertical Align (Container)</label>\r\n <select\r\n value={selectedField.style?.verticalAlign || 'top'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.verticalAlign', e.target.value)}\r\n >\r\n <option value=\"top\">Top</option>\r\n <option value=\"middle\">Middle</option>\r\n <option value=\"bottom\">Bottom</option>\r\n </select>\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n\r\n {selectedField.type === 'label' && (\r\n <div className=\"property-group\">\r\n <label>Static Text</label>\r\n <input\r\n type=\"text\"\r\n value={selectedField.staticText || ''}\r\n onChange={(e) => handleFieldPropertyUpdate('staticText', e.target.value)}\r\n />\r\n </div>\r\n )}\r\n\r\n {selectedField.type === 'qrcode' && (\r\n <div className=\"property-group\">\r\n <label>QR Code Data Fields</label>\r\n <small className=\"hint\">Select which fields to encode in the QR code:</small>\r\n <div style={{ marginTop: '8px', maxHeight: '150px', overflowY: 'auto', border: '1px solid #ddd', borderRadius: '4px', padding: '8px' }}>\r\n {template.fields\n .filter(f => f.type !== 'qrcode' && f.type !== 'label' && f.type !== 'table')\n .map((field) => (\n <label key={field.fieldKey} style={{ display: 'block', marginBottom: '6px', cursor: 'pointer' }}>\r\n <input\r\n type=\"checkbox\"\r\n checked={selectedField.qrFields?.includes(field.fieldKey) || false}\r\n onChange={(e) => {\r\n const currentFields = selectedField.qrFields || [];\r\n const newFields = e.target.checked\r\n ? [...currentFields, field.fieldKey]\r\n : currentFields.filter(f => f !== field.fieldKey);\r\n handleFieldPropertyUpdate('qrFields', newFields);\r\n }}\r\n style={{ marginRight: '6px' }}\r\n />\r\n {field.label || field.fieldKey}\r\n </label>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Border Radius for image fields */}\r\n\r\n {selectedField.type !== 'text' && selectedField.type !== 'table' && <>\n <h4>Style</h4>\r\n <div className=\"property-group\">\r\n <label>Font Size</label>\r\n <input\r\n type=\"text\"\r\n value={selectedField.style?.fontSize || '12px'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.fontSize', e.target.value)}\r\n />\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Font Weight</label>\r\n <select\r\n value={selectedField.style?.fontWeight || 'normal'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.fontWeight', e.target.value)}\r\n >\r\n <option value=\"normal\">Normal</option>\r\n <option value=\"bold\">Bold</option>\r\n <option value=\"100\">100</option>\r\n <option value=\"200\">200</option>\r\n <option value=\"300\">300</option>\r\n <option value=\"400\">400</option>\r\n <option value=\"500\">500</option>\r\n <option value=\"600\">600</option>\r\n <option value=\"700\">700</option>\r\n <option value=\"800\">800</option>\r\n <option value=\"900\">900</option>\r\n </select>\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Text Color</label>\r\n <input\r\n type=\"color\"\r\n value={selectedField.style?.color || '#000000'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.color', e.target.value)}\r\n />\r\n </div>\r\n <div className=\"property-group\">\r\n <label>Text Align</label>\r\n <select\r\n value={selectedField.style?.textAlign || 'left'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.textAlign', e.target.value)}\r\n >\r\n <option value=\"left\">Left</option>\r\n <option value=\"center\">Center</option>\r\n <option value=\"right\">Right</option>\r\n </select>\r\n </div>\r\n {selectedField.type === 'label' && (\r\n <div className=\"property-group\">\r\n <label>Text Transform</label>\r\n <select\r\n value={selectedField.style?.labelTextTransform || 'none'}\r\n onChange={(e) => handleFieldPropertyUpdate('style.labelTextTransform', e.target.value)}\r\n >\r\n <option value=\"none\">None</option>\r\n <option value=\"uppercase\">UPPERCASE</option>\r\n <option value=\"lowercase\">lowercase</option>\r\n <option value=\"capitalize\">Capitalize</option>\r\n </select>\r\n </div>\r\n )}\r\n </>}\r\n {selectedField.type === 'qrcode' ? (\n <div className=\"property-group\">\n <label>Background Color</label>\n <div\n style={{\n padding: '8px 10px',\n border: '1px solid #ddd',\n borderRadius: '4px',\n backgroundColor: '#f8f8f8',\n color: '#666',\n }}\n >\n Transparent\n </div>\n </div>\n ) : (\n <div className=\"property-group\">\n <label>Background Color</label>\n <div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>\n <input\n type=\"checkbox\"\n id=\"transparent-bg-checkbox\"\n checked={selectedField.style?.backgroundColor === 'transparent'}\n onChange={e => handleFieldPropertyUpdate('style.backgroundColor', e.target.checked ? 'transparent' : '#ffffff')}\n />\n <label htmlFor=\"transparent-bg-checkbox\" style={{ margin: 0, fontWeight: 400, fontSize: '0.95em' }}>Transparent</label>\n {selectedField.style?.backgroundColor !== 'transparent' && (\n <input\n type=\"color\"\n value={selectedField.style?.backgroundColor || '#ffffff'}\n onChange={e => handleFieldPropertyUpdate('style.backgroundColor', e.target.value)}\n />\n )}\n </div>\n </div>\n )}\n\r\n <div className=\"property-group\">\r\n <label>Side</label>\r\n <select\r\n value={selectedField.side}\r\n onChange={(e) =>\r\n handleFieldPropertyUpdate('side', e.target.value as 'front' | 'back')\r\n }\r\n >\r\n <option value=\"front\">Front</option>\r\n {template.sides === 'double' && <option value=\"back\">Back</option>}\r\n </select>\r\n </div>\r\n\r\n <button type=\"button\" className=\"btn btn-danger\" onClick={handleDeleteField}>\n Delete Field\r\n </button>\r\n </div>\r\n ) : (\r\n <p className=\"no-selection\">Select a field to edit its properties</p>\r\n )}\r\n\r\n <h3>Sample Data</h3>\r\n <div className=\"sample-data\">\n <p className=\"hint\">Edit sample data to preview:</p>\n {Object.entries(sampleData)\n .filter(([, value]) => !Array.isArray(value))\n .map(([key, value]) => (\n <div key={key} className=\"property-group\">\n <label>{key}</label>\n <input\n type=\"text\"\n value={String(value)}\n onChange={(e) =>\n setSampleData((prev) => ({ ...prev, [key]: e.target.value }))\n }\n />\n </div>\n ))}\n <button\n type=\"button\"\n className=\"btn btn-outline btn-sm\"\n onClick={() =>\r\n setSampleData((prev) => ({ ...prev, [`custom_${Date.now()}`]: '' }))\r\n }\r\n >\r\n + Add Field\r\n </button>\r\n </div>\r\n\r\n {/* Validation errors */}\r\n {validationErrors.length > 0 && (\r\n <div className=\"validation-errors\">\r\n <h4>⚠️ Validation Issues</h4>\r\n <ul>\r\n {validationErrors.map((error, index) => (\r\n <li key={index}>{error}</li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n\r\n"],"names":["_jsxs","_jsx","_Fragment"],"mappings":"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"}
@@ -2,6 +2,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useMemo } from 'react';
3
3
  import { positionToStyle, fieldStyleToCSS } from '../utils/styleUtils.js';
4
4
  import { getQrCodeSize, generateQrCodeFromFields } from '../core/qrUtils.js';
5
+ import { IDCardTable } from './IDCardTable.js';
5
6
 
6
7
  /**
7
8
  * IDCardGenerator - Renders a completed ID card
@@ -141,7 +142,6 @@ const IDCardGenerator = ({ template, data, side = 'front', scale = 1, className
141
142
  fontSize: labelFontSize,
142
143
  fontWeight: labelFontWeight,
143
144
  color: labelColor,
144
- opacity: 0.7,
145
145
  marginRight: 8,
146
146
  alignSelf: labelAlignSelf,
147
147
  whiteSpace: 'nowrap',
@@ -162,7 +162,6 @@ const IDCardGenerator = ({ template, data, side = 'front', scale = 1, className
162
162
  fontSize: labelFontSize,
163
163
  fontWeight: labelFontWeight,
164
164
  color: labelColor,
165
- opacity: 0.7,
166
165
  textTransform: labelTextTransform,
167
166
  width: '100%',
168
167
  textAlign: labelTextAlign
@@ -221,6 +220,8 @@ const IDCardGenerator = ({ template, data, side = 'front', scale = 1, className
221
220
  fontSize: '10px',
222
221
  color: '#666',
223
222
  }, children: "QR Code" })) }, field.id));
223
+ case 'table':
224
+ return (jsx("div", { id: field.id, style: combinedStyle, onClick: handleClick, className: "idcard-field idcard-field-table", children: jsx(IDCardTable, { field: field, data: data }) }, field.id));
224
225
  default:
225
226
  return null;
226
227
  }
@@ -253,7 +254,11 @@ function getFieldValue(field, data) {
253
254
  const value = data[field.fieldKey];
254
255
  // Handle array values (like department)
255
256
  if (Array.isArray(value)) {
256
- return value[0];
257
+ const firstValue = value[0];
258
+ if (firstValue && typeof firstValue === 'object') {
259
+ return undefined;
260
+ }
261
+ return firstValue;
257
262
  }
258
263
  return value;
259
264
  }