@letar/forms 1.1.0 → 1.2.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 (56) hide show
  1. package/CHANGELOG.md +308 -0
  2. package/README.md +9 -9
  3. package/README.ru.md +115 -30
  4. package/analytics.js +3 -0
  5. package/analytics.js.map +1 -0
  6. package/chunk-2PSXYC3I.js +1782 -0
  7. package/chunk-2PSXYC3I.js.map +1 -0
  8. package/chunk-5D6S6EGF.js +206 -0
  9. package/chunk-5D6S6EGF.js.map +1 -0
  10. package/{chunk-6QOPSQ3Z.js → chunk-6E7VJAJT.js} +3 -3
  11. package/{chunk-6QOPSQ3Z.js.map → chunk-6E7VJAJT.js.map} +1 -1
  12. package/chunk-CGXKRCSM.js +117 -0
  13. package/chunk-CGXKRCSM.js.map +1 -0
  14. package/{chunk-M2PNAAIR.js → chunk-DQUVUMCX.js} +30 -19
  15. package/chunk-DQUVUMCX.js.map +1 -0
  16. package/chunk-K3J4L26K.js +345 -0
  17. package/chunk-K3J4L26K.js.map +1 -0
  18. package/{chunk-PJETA6YN.js → chunk-MAYUFA5K.js} +5 -4
  19. package/chunk-MAYUFA5K.js.map +1 -0
  20. package/{chunk-4V6WBJ76.js → chunk-MVGXZNHP.js} +2 -2
  21. package/{chunk-4V6WBJ76.js.map → chunk-MVGXZNHP.js.map} +1 -1
  22. package/{chunk-XKKJKYWZ.js → chunk-MZDTJSF7.js} +3 -3
  23. package/{chunk-XKKJKYWZ.js.map → chunk-MZDTJSF7.js.map} +1 -1
  24. package/{chunk-KUNT5MSU.js → chunk-Q5EOF36Y.js} +3 -3
  25. package/chunk-Q5EOF36Y.js.map +1 -0
  26. package/{chunk-7FEQFDJ7.js → chunk-R2RTCKXY.js} +2 -2
  27. package/{chunk-7FEQFDJ7.js.map → chunk-R2RTCKXY.js.map} +1 -1
  28. package/{chunk-HWVOFWAT.js → chunk-XFWLD5EO.js} +225 -26
  29. package/chunk-XFWLD5EO.js.map +1 -0
  30. package/fields/boolean.js +3 -3
  31. package/fields/datetime.js +3 -3
  32. package/fields/number.js +3 -3
  33. package/fields/selection.js +3 -3
  34. package/fields/specialized.js +3 -3
  35. package/fields/text.js +3 -3
  36. package/hcaptcha-U4XIT3HS.js +64 -0
  37. package/hcaptcha-U4XIT3HS.js.map +1 -0
  38. package/i18n.js +1 -1
  39. package/index.js +3268 -51
  40. package/index.js.map +1 -1
  41. package/offline.js +1 -1
  42. package/package.json +33 -4
  43. package/recaptcha-PKAUAY2S.js +56 -0
  44. package/recaptcha-PKAUAY2S.js.map +1 -0
  45. package/server-errors.js +3 -0
  46. package/server-errors.js.map +1 -0
  47. package/turnstile-7FXTBSLW.js +36 -0
  48. package/turnstile-7FXTBSLW.js.map +1 -0
  49. package/validators/ru.js +73 -0
  50. package/validators/ru.js.map +1 -0
  51. package/chunk-GOELIS6T.js +0 -849
  52. package/chunk-GOELIS6T.js.map +0 -1
  53. package/chunk-HWVOFWAT.js.map +0 -1
  54. package/chunk-KUNT5MSU.js.map +0 -1
  55. package/chunk-M2PNAAIR.js.map +0 -1
  56. package/chunk-PJETA6YN.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/declarative/form-fields/datetime/field-date.tsx","../src/lib/declarative/form-fields/datetime/field-date-range.tsx","../src/lib/declarative/form-fields/datetime/field-datetime-picker.tsx","../src/lib/declarative/form-fields/datetime/field-duration.tsx","../src/lib/declarative/form-fields/datetime/field-schedule.tsx","../src/lib/declarative/form-fields/datetime/field-time.tsx"],"names":["jsx","Input","jsxs","Field","HStack","ScheduleContent","Box","Text","Button"],"mappings":"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","file":"chunk-KUNT5MSU.js","sourcesContent":["'use client'\n\nimport { Input } from '@chakra-ui/react'\nimport type { ReactElement } from 'react'\nimport type { DateFieldProps } from '../../types'\nimport { createField, FieldWrapper } from '../base'\n\n/**\n * Form.Field.Date - Date input field\n *\n * Renders a native date input with automatic form integration and error display.\n *\n * Automatically extracts from Zod schema:\n * - `min` from `z.date().min(new Date('2024-01-01'))` → min=\"2024-01-01\"\n * - `max` from `z.date().max(new Date('2024-12-31'))` → max=\"2024-12-31\"\n * - `helperText` automatically is generated from constraints (\"From Jan 1, 2024 to Dec 31, 2024\")\n *\n * Props always take priority over automatic values from schema.\n *\n * @example\n * ```tsx\n * <Form.Field.Date name=\"birthDate\" label=\"Date of Birth\" />\n * ```\n *\n * @example With automatic constraints from Zod\n * ```tsx\n * // In schema: z.object({ eventDate: z.date().min(new Date('2024-01-01')).max(new Date('2024-12-31')) })\n * <Form.Field.Date name=\"eventDate\" label=\"Event Date\" />\n * // Automatically: min=\"2024-01-01\", max=\"2024-12-31\"\n * ```\n */\nexport const FieldDate = createField<DateFieldProps, string | Date>({\n displayName: 'FieldDate',\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }): ReactElement => {\n const { constraints } = resolved\n\n // Handle Date objects by converting to YYYY-MM-DD string\n const rawValue = field.state.value\n let stringValue = ''\n if (rawValue instanceof Date) {\n stringValue = rawValue.toISOString().split('T')[0]\n } else if (typeof rawValue === 'string') {\n stringValue = rawValue\n }\n\n // Props take priority over constraints\n const min = componentProps.min ?? constraints.date?.min\n const max = componentProps.max ?? constraints.date?.max\n\n return (\n <FieldWrapper resolved={resolved} hasError={hasError} errorMessage={errorMessage} fullPath={fullPath}>\n <Input\n type=\"date\"\n value={stringValue}\n onChange={(e) => field.handleChange((e.target as HTMLInputElement).value)}\n onBlur={field.handleBlur}\n placeholder={resolved.placeholder}\n min={min}\n max={max}\n data-field-name={fullPath}\n />\n </FieldWrapper>\n )\n },\n})\n","'use client'\n\nimport { Box, Button, Field, Flex, HStack, Input, Menu, Portal } from '@chakra-ui/react'\nimport type { ReactElement } from 'react'\nimport { LuCalendar, LuChevronDown } from 'react-icons/lu'\nimport type { BaseFieldProps } from '../../types'\nimport { createField, FieldError, FieldLabel } from '../base'\n\n/**\n * Date range value type\n */\nexport interface DateRangeValue {\n start: string\n end: string\n}\n\n/**\n * Preset types for quick date range selection\n */\nexport type DateRangePreset = 'today' | 'yesterday' | 'thisWeek' | 'lastWeek' | 'thisMonth' | 'lastMonth' | 'thisYear'\n\n/**\n * Props for Form.Field.DateRange\n */\nexport interface DateRangeFieldProps extends BaseFieldProps {\n /** Label for start date */\n startLabel?: string\n /** Label for end date */\n endLabel?: string\n /** Placeholder for start date */\n startPlaceholder?: string\n /** Placeholder for end date */\n endPlaceholder?: string\n /** Minimum date (format YYYY-MM-DD) */\n min?: string\n /** Maximum date (format YYYY-MM-DD) */\n max?: string\n /** Enable preset buttons */\n presets?: DateRangePreset[]\n /** Date fields orientation */\n orientation?: 'horizontal' | 'vertical'\n /** Size */\n size?: 'xs' | 'sm' | 'md' | 'lg'\n}\n\n/**\n * Get date range for preset\n */\nfunction getPresetRange(preset: DateRangePreset): DateRangeValue {\n const today = new Date()\n const formatDate = (d: Date) => d.toISOString().split('T')[0]\n\n switch (preset) {\n case 'today':\n return { start: formatDate(today), end: formatDate(today) }\n case 'yesterday': {\n const yesterday = new Date(today)\n yesterday.setDate(today.getDate() - 1)\n return { start: formatDate(yesterday), end: formatDate(yesterday) }\n }\n case 'thisWeek': {\n const startOfWeek = new Date(today)\n startOfWeek.setDate(today.getDate() - today.getDay() + 1) // Monday\n const endOfWeek = new Date(startOfWeek)\n endOfWeek.setDate(startOfWeek.getDate() + 6) // Sunday\n return { start: formatDate(startOfWeek), end: formatDate(endOfWeek) }\n }\n case 'lastWeek': {\n const startOfLastWeek = new Date(today)\n startOfLastWeek.setDate(today.getDate() - today.getDay() - 6) // Last Monday\n const endOfLastWeek = new Date(startOfLastWeek)\n endOfLastWeek.setDate(startOfLastWeek.getDate() + 6) // Last Sunday\n return { start: formatDate(startOfLastWeek), end: formatDate(endOfLastWeek) }\n }\n case 'thisMonth': {\n const startOfMonth = new Date(today.getFullYear(), today.getMonth(), 1)\n const endOfMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0)\n return { start: formatDate(startOfMonth), end: formatDate(endOfMonth) }\n }\n case 'lastMonth': {\n const startOfLastMonth = new Date(today.getFullYear(), today.getMonth() - 1, 1)\n const endOfLastMonth = new Date(today.getFullYear(), today.getMonth(), 0)\n return { start: formatDate(startOfLastMonth), end: formatDate(endOfLastMonth) }\n }\n case 'thisYear': {\n const startOfYear = new Date(today.getFullYear(), 0, 1)\n const endOfYear = new Date(today.getFullYear(), 11, 31)\n return { start: formatDate(startOfYear), end: formatDate(endOfYear) }\n }\n }\n}\n\n/**\n * Get label for preset\n */\nfunction getPresetLabel(preset: DateRangePreset): string {\n switch (preset) {\n case 'today':\n return 'Today'\n case 'yesterday':\n return 'Yesterday'\n case 'thisWeek':\n return 'This week'\n case 'lastWeek':\n return 'Last week'\n case 'thisMonth':\n return 'This month'\n case 'lastMonth':\n return 'Last month'\n case 'thisYear':\n return 'This year'\n }\n}\n\n/**\n * Form.Field.DateRange - Date range selection with two fields\n *\n * Renders two date fields for range selection with optional presets.\n *\n * @example Basic usage\n * ```tsx\n * <Form.Field.DateRange name=\"period\" label=\"Period\" />\n * ```\n *\n * @example With presets\n * ```tsx\n * <Form.Field.DateRange\n * name=\"period\"\n * label=\"Period\"\n * startLabel=\"From\"\n * endLabel=\"To\"\n * presets={['today', 'thisWeek', 'thisMonth']}\n * />\n * ```\n *\n * @example Vertical orientation\n * ```tsx\n * <Form.Field.DateRange\n * name=\"period\"\n * orientation=\"vertical\"\n * />\n * ```\n */\nexport const FieldDateRange = createField<DateRangeFieldProps, DateRangeValue>({\n displayName: 'FieldDateRange',\n\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }): ReactElement => {\n const {\n startLabel = 'Start',\n endLabel = 'End',\n startPlaceholder,\n endPlaceholder,\n min,\n max,\n presets,\n orientation = 'horizontal',\n size = 'md',\n } = componentProps\n\n const value = (field.state.value as DateRangeValue) ?? { start: '', end: '' }\n\n const handleStartChange = (newStart: string) => {\n field.handleChange({ ...value, start: newStart })\n }\n\n const handleEndChange = (newEnd: string) => {\n field.handleChange({ ...value, end: newEnd })\n }\n\n const handlePreset = (preset: DateRangePreset) => {\n field.handleChange(getPresetRange(preset))\n }\n\n const Container = orientation === 'horizontal' ? HStack : Box\n\n return (\n <Field.Root\n invalid={hasError}\n required={resolved.required}\n disabled={resolved.disabled}\n readOnly={resolved.readOnly}\n >\n <FieldLabel label={resolved.label} tooltip={resolved.tooltip} required={resolved.required} />\n\n <Flex gap={2} direction={orientation === 'horizontal' ? 'row' : 'column'} align=\"stretch\" width=\"full\">\n <Container gap={2} flex={1} alignItems=\"flex-end\">\n {/* Start date */}\n <Box flex={1}>\n <Field.Root disabled={resolved.disabled} readOnly={resolved.readOnly}>\n <Field.Label fontSize=\"sm\" color=\"fg.muted\">\n {startLabel}\n </Field.Label>\n <Input\n type=\"date\"\n value={value.start}\n onChange={(e) => handleStartChange((e.target as HTMLInputElement).value)}\n onBlur={field.handleBlur}\n placeholder={startPlaceholder}\n min={min}\n max={value.end || max}\n size={size}\n data-field-name={`${fullPath}.start`}\n />\n </Field.Root>\n </Box>\n\n {/* End date */}\n <Box flex={1}>\n <Field.Root disabled={resolved.disabled} readOnly={resolved.readOnly}>\n <Field.Label fontSize=\"sm\" color=\"fg.muted\">\n {endLabel}\n </Field.Label>\n <Input\n type=\"date\"\n value={value.end}\n onChange={(e) => handleEndChange((e.target as HTMLInputElement).value)}\n onBlur={field.handleBlur}\n placeholder={endPlaceholder}\n min={value.start || min}\n max={max}\n size={size}\n data-field-name={`${fullPath}.end`}\n />\n </Field.Root>\n </Box>\n </Container>\n\n {/* Presets menu */}\n {presets && presets.length > 0 && !resolved.readOnly && (\n <Menu.Root>\n <Menu.Trigger asChild>\n <Button variant=\"outline\" size={size} disabled={resolved.disabled}>\n <LuCalendar />\n Presets\n <LuChevronDown />\n </Button>\n </Menu.Trigger>\n <Portal>\n <Menu.Positioner>\n <Menu.Content>\n {presets.map((preset) => (\n <Menu.Item key={preset} value={preset} onClick={() => handlePreset(preset)}>\n {getPresetLabel(preset)}\n </Menu.Item>\n ))}\n </Menu.Content>\n </Menu.Positioner>\n </Portal>\n </Menu.Root>\n )}\n </Flex>\n\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolved.helperText} />\n </Field.Root>\n )\n },\n})\n","'use client'\n\nimport { Field, HStack, Input } from '@chakra-ui/react'\nimport type { ReactElement } from 'react'\nimport type { DateTimePickerFieldProps } from '../../types'\nimport { createField, FieldError, FieldLabel } from '../base'\n\n/**\n * Parses a datetime string into separate date and time parts\n */\nfunction parseDateTime(value: string | undefined): { date: string; time: string } {\n if (!value) {\n return { date: '', time: '' }\n }\n\n // Handle ISO format: 2024-01-15T14:30:00\n const match = value.match(/^(\\d{4}-\\d{2}-\\d{2})(?:T(\\d{2}:\\d{2}))?/)\n if (match) {\n return { date: match[1], time: match[2] || '' }\n }\n\n return { date: '', time: '' }\n}\n\n/**\n * Combines date and time into an ISO datetime string\n */\nfunction combineDateTime(date: string, time: string): string {\n if (!date) {\n return ''\n }\n if (!time) {\n return date\n }\n return `${date}T${time}:00`\n}\n\n/**\n * Form.Field.DateTimePicker - Combined date and time picker\n *\n * Renders date and time fields that produce an ISO datetime string.\n *\n * @example Basic usage\n * ```tsx\n * <Form.Field.DateTimePicker name=\"appointmentAt\" label=\"Appointment\" />\n * ```\n *\n * @example With min/max constraints\n * ```tsx\n * <Form.Field.DateTimePicker\n * name=\"eventAt\"\n * minDateTime={new Date()}\n * maxDateTime=\"2025-12-31T23:59\"\n * />\n * ```\n */\nexport const FieldDateTimePicker = createField<DateTimePickerFieldProps, string>({\n displayName: 'FieldDateTimePicker',\n\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }): ReactElement => {\n const { minDateTime, maxDateTime, timeStep = 15 } = componentProps\n\n // Convert Date to string if needed\n const minDateTimeStr = minDateTime instanceof Date\n ? minDateTime.toISOString().slice(0, 16)\n : minDateTime?.slice(0, 16)\n const maxDateTimeStr = maxDateTime instanceof Date\n ? maxDateTime.toISOString().slice(0, 16)\n : maxDateTime?.slice(0, 16)\n\n const minDate = minDateTimeStr?.slice(0, 10)\n const maxDate = maxDateTimeStr?.slice(0, 10)\n\n const value = field.state.value as string | undefined\n const { date, time } = parseDateTime(value)\n\n const handleDateChange = (newDate: string) => {\n const combined = combineDateTime(newDate, time)\n field.handleChange(combined || undefined)\n }\n\n const handleTimeChange = (newTime: string) => {\n const combined = combineDateTime(date, newTime)\n field.handleChange(combined || undefined)\n }\n\n return (\n <Field.Root\n invalid={hasError}\n required={resolved.required}\n disabled={resolved.disabled}\n readOnly={resolved.readOnly}\n >\n <FieldLabel label={resolved.label} tooltip={resolved.tooltip} required={resolved.required} />\n <HStack gap={2}>\n <Input\n type=\"date\"\n value={date}\n onChange={(e) => handleDateChange(e.target.value)}\n onBlur={field.handleBlur}\n min={minDate}\n max={maxDate}\n data-field-name={`${fullPath}-date`}\n flex={1}\n />\n <Input\n type=\"time\"\n value={time}\n onChange={(e) => handleTimeChange(e.target.value)}\n onBlur={field.handleBlur}\n step={timeStep * 60}\n data-field-name={`${fullPath}-time`}\n width=\"150px\"\n />\n </HStack>\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolved.helperText} />\n </Field.Root>\n )\n },\n})\n","'use client'\n\nimport { Field, HStack, NumberInput, Text } from '@chakra-ui/react'\nimport type { ReactElement } from 'react'\nimport type { DurationFieldProps } from '../../types'\nimport { createField, FieldError, FieldLabel } from '../base'\n\n/**\n * Converts minutes to HH:MM format\n */\nfunction minutesToHHMM(minutes: number): { hours: number; mins: number } {\n return {\n hours: Math.floor(minutes / 60),\n mins: minutes % 60,\n }\n}\n\n/**\n * Converts HH:MM to minutes\n */\nfunction hhmmToMinutes(hours: number, mins: number): number {\n return hours * 60 + mins\n}\n\n/**\n * Form.Field.Duration - Duration input field\n *\n * Renders duration field with hours and minutes or minutes only.\n * Value is stored as total number of minutes.\n *\n * @example HH:MM format (by default)\n * ```tsx\n * <Form.Field.Duration name=\"duration\" label=\"Duration\" />\n * ```\n *\n * @example Minutes only\n * ```tsx\n * <Form.Field.Duration name=\"duration\" format=\"minutes\" />\n * ```\n *\n * @example With min/max constraints\n * ```tsx\n * <Form.Field.Duration name=\"duration\" min={30} max={240} step={15} />\n * ```\n */\nexport const FieldDuration = createField<DurationFieldProps, number>({\n displayName: 'FieldDuration',\n\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }): ReactElement => {\n const { format = 'HH:MM', min = 0, max = 1440, step = 15 } = componentProps\n\n const value = (field.state.value as number) ?? 0\n const { hours, mins } = minutesToHHMM(value)\n\n const handleHoursChange = (newHours: number) => {\n const newValue = hhmmToMinutes(newHours, mins)\n const clampedValue = Math.max(min, Math.min(max, newValue))\n field.handleChange(clampedValue)\n }\n\n const handleMinsChange = (newMins: number) => {\n const newValue = hhmmToMinutes(hours, newMins)\n const clampedValue = Math.max(min, Math.min(max, newValue))\n field.handleChange(clampedValue)\n }\n\n const handleMinutesChange = (newValue: number) => {\n const clampedValue = Math.max(min, Math.min(max, newValue))\n field.handleChange(clampedValue)\n }\n\n // Minutes only format\n if (format === 'minutes') {\n return (\n <Field.Root\n invalid={hasError}\n required={resolved.required}\n disabled={resolved.disabled}\n readOnly={resolved.readOnly}\n >\n <FieldLabel label={resolved.label} tooltip={resolved.tooltip} required={resolved.required} />\n <NumberInput.Root\n value={value.toString()}\n onValueChange={(details: { valueAsNumber: number }) => {\n const num = details.valueAsNumber\n if (!Number.isNaN(num)) {\n handleMinutesChange(num)\n }\n }}\n onBlur={field.handleBlur}\n min={min}\n max={max}\n step={step}\n >\n <NumberInput.Control>\n <NumberInput.IncrementTrigger />\n <NumberInput.DecrementTrigger />\n </NumberInput.Control>\n <NumberInput.Input placeholder={resolved.placeholder ?? 'min'} data-field-name={fullPath} />\n </NumberInput.Root>\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolved.helperText} />\n </Field.Root>\n )\n }\n\n // HH:MM format\n return (\n <Field.Root\n invalid={hasError}\n required={resolved.required}\n disabled={resolved.disabled}\n readOnly={resolved.readOnly}\n >\n <FieldLabel label={resolved.label} tooltip={resolved.tooltip} required={resolved.required} />\n <HStack gap={2}>\n <NumberInput.Root\n value={hours.toString()}\n onValueChange={(details: { valueAsNumber: number }) => {\n const num = details.valueAsNumber\n if (!Number.isNaN(num)) {\n handleHoursChange(num)\n }\n }}\n onBlur={field.handleBlur}\n min={0}\n max={Math.floor(max / 60)}\n width=\"80px\"\n >\n <NumberInput.Control>\n <NumberInput.IncrementTrigger />\n <NumberInput.DecrementTrigger />\n </NumberInput.Control>\n <NumberInput.Input data-field-name={`${fullPath}-hours`} />\n </NumberInput.Root>\n <Text fontWeight=\"bold\">:</Text>\n <NumberInput.Root\n value={mins.toString().padStart(2, '0')}\n onValueChange={(details: { valueAsNumber: number }) => {\n const num = details.valueAsNumber\n if (!Number.isNaN(num)) {\n handleMinsChange(num)\n }\n }}\n onBlur={field.handleBlur}\n min={0}\n max={59}\n step={step}\n width=\"80px\"\n >\n <NumberInput.Control>\n <NumberInput.IncrementTrigger />\n <NumberInput.DecrementTrigger />\n </NumberInput.Control>\n <NumberInput.Input data-field-name={`${fullPath}-mins`} />\n </NumberInput.Root>\n </HStack>\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolved.helperText} />\n </Field.Root>\n )\n },\n})\n","'use client'\n\nimport { Box, Button, Field, HStack, Input, Stack, Text } from '@chakra-ui/react'\nimport type { AnyFieldApi } from '@tanstack/react-form'\nimport { memo, useCallback, useMemo, type ReactElement, type ReactNode } from 'react'\nimport type { BaseFieldProps, FieldTooltipMeta } from '../../types'\nimport { FieldError, FieldLabel, getFieldErrors, useResolvedFieldProps } from '../base'\n\n/**\n * Time slot\n */\nexport interface TimeSlot {\n open: string\n close: string\n}\n\n/**\n * Day schedule (null = day off)\n */\nexport type DaySchedule = TimeSlot | null\n\n/**\n * Weekly schedule\n */\nexport interface WeeklySchedule {\n monday: DaySchedule\n tuesday: DaySchedule\n wednesday: DaySchedule\n thursday: DaySchedule\n friday: DaySchedule\n saturday: DaySchedule\n sunday: DaySchedule\n}\n\n/**\n * Day of week\n */\nexport type DayOfWeek = keyof WeeklySchedule\n\n/**\n * Days configuration\n */\nconst DAYS_OF_WEEK: DayOfWeek[] = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']\n\nconst DEFAULT_DAY_NAMES: Record<DayOfWeek, string> = {\n monday: 'Monday',\n tuesday: 'Tuesday',\n wednesday: 'Wednesday',\n thursday: 'Thursday',\n friday: 'Friday',\n saturday: 'Saturday',\n sunday: 'Sunday',\n}\n\nconst DEFAULT_WORKING_HOURS: WeeklySchedule = {\n monday: { open: '09:00', close: '18:00' },\n tuesday: { open: '09:00', close: '18:00' },\n wednesday: { open: '09:00', close: '18:00' },\n thursday: { open: '09:00', close: '18:00' },\n friday: { open: '09:00', close: '18:00' },\n saturday: null,\n sunday: null,\n}\n\n/**\n * Constants for custom switch styling\n * Native checkbox used instead of Chakra Switch for RHF compatibility\n */\nconst SWITCH_STYLES = {\n /** Switch track width */\n trackWidth: '36px',\n /** Switch track height */\n trackHeight: '20px',\n /** Round indicator (thumb) size */\n thumbSize: '16px',\n /** Thumb offset from edge (2px each side for centering in 20px track) */\n thumbOffset: '2px',\n /** Thumb position in enabled state (trackWidth - thumbSize - thumbOffset = 36 - 16 - 2 = 18) */\n thumbEnabledLeft: '18px',\n} as const\n\n/**\n * Checks that end time is after start time\n */\nfunction isValidTimeRange(open: string, close: string): boolean {\n const [openH, openM] = open.split(':').map(Number)\n const [closeH, closeM] = close.split(':').map(Number)\n const openMinutes = openH * 60 + openM\n const closeMinutes = closeH * 60 + closeM\n return closeMinutes > openMinutes\n}\n\n/**\n * Internal component for rendering the schedule.\n * Extracted separately to comply with React hooks rules.\n */\ninterface ScheduleContentProps {\n field: AnyFieldApi\n schedule: WeeklySchedule\n defaultSchedule: WeeklySchedule\n days: DayOfWeek[]\n mergedDayNames: Record<DayOfWeek, string>\n showCopyToWeekdays: boolean\n offLabel: string\n copyToWeekdaysLabel: string\n defaultOpenTime: string\n defaultCloseTime: string\n disabled?: boolean\n readOnly?: boolean\n resolvedLabel?: ReactNode\n resolvedHelperText?: ReactNode\n resolvedRequired?: boolean\n resolvedTooltip?: FieldTooltipMeta\n fullPath: string\n}\n\nconst ScheduleContent = memo(function ScheduleContent({\n field,\n schedule,\n days,\n mergedDayNames,\n showCopyToWeekdays,\n offLabel,\n copyToWeekdaysLabel,\n defaultOpenTime,\n defaultCloseTime,\n disabled,\n readOnly,\n resolvedLabel,\n resolvedHelperText,\n resolvedRequired,\n resolvedTooltip,\n fullPath,\n}: ScheduleContentProps) {\n const { hasError, errorMessage } = getFieldErrors(field)\n\n // Check for invalid time ranges\n const invalidDays = useMemo(() => {\n const invalid: DayOfWeek[] = []\n for (const day of days) {\n const daySchedule = schedule[day]\n if (daySchedule && !isValidTimeRange(daySchedule.open, daySchedule.close)) {\n invalid.push(day)\n }\n }\n return invalid\n }, [schedule, days])\n\n const handleDayToggle = useCallback(\n (day: DayOfWeek, enabled: boolean) => {\n const newSchedule = {\n ...schedule,\n [day]: enabled ? { open: defaultOpenTime, close: defaultCloseTime } : null,\n }\n field.handleChange(newSchedule)\n },\n [schedule, field, defaultOpenTime, defaultCloseTime]\n )\n\n const handleTimeChange = useCallback(\n (day: DayOfWeek, timeField: 'open' | 'close', value: string) => {\n const current = schedule[day]\n if (!current) {\n return\n }\n const newSchedule = {\n ...schedule,\n [day]: { ...current, [timeField]: value },\n }\n field.handleChange(newSchedule)\n },\n [schedule, field]\n )\n\n const handleCopyToWeekdays = useCallback(() => {\n const mondaySchedule = schedule.monday\n if (!mondaySchedule) {\n return\n }\n const newSchedule = {\n ...schedule,\n monday: mondaySchedule,\n tuesday: mondaySchedule,\n wednesday: mondaySchedule,\n thursday: mondaySchedule,\n friday: mondaySchedule,\n }\n field.handleChange(newSchedule)\n }, [schedule, field])\n\n return (\n <Field.Root\n invalid={hasError}\n required={resolvedRequired}\n disabled={disabled}\n readOnly={readOnly}\n data-field-name={fullPath}\n >\n <FieldLabel label={resolvedLabel} tooltip={resolvedTooltip} required={resolvedRequired} />\n\n <Stack gap={3}>\n {/* Warning about invalid ranges */}\n {invalidDays.length > 0 && (\n <Box p={3} bg=\"red.50\" borderWidth=\"1px\" borderColor=\"red.200\" borderRadius=\"md\">\n <Text color=\"red.600\" fontSize=\"sm\" fontWeight=\"medium\">\n End time must be after start time: {invalidDays.map((d) => mergedDayNames[d]).join(', ')}\n </Text>\n </Box>\n )}\n\n {/* Quick actions */}\n {showCopyToWeekdays && days.includes('monday') && (\n <HStack gap={2} flexWrap=\"wrap\">\n <Text fontSize=\"sm\" color=\"fg.muted\">\n Quick actions:\n </Text>\n <Button\n type=\"button\"\n size=\"xs\"\n variant=\"ghost\"\n colorPalette=\"blue\"\n onClick={handleCopyToWeekdays}\n disabled={disabled || readOnly || !schedule.monday}\n >\n {copyToWeekdaysLabel}\n </Button>\n </HStack>\n )}\n\n {/* Day list */}\n {days.map((day) => {\n const daySchedule = schedule[day]\n const isEnabled = daySchedule !== null && daySchedule !== undefined\n const dayHasError = invalidDays.includes(day)\n\n return (\n <Box\n key={day}\n data-day={day}\n p={3}\n bg={dayHasError ? 'red.50' : isEnabled ? 'bg.panel' : 'bg.muted'}\n borderRadius=\"md\"\n borderWidth={dayHasError ? '2px' : '1px'}\n borderColor={dayHasError ? 'red.300' : 'border.muted'}\n >\n <HStack justify=\"space-between\" flexWrap=\"wrap\" gap={3}>\n {/* Day and toggle */}\n <HStack gap={3} minW=\"140px\">\n {/* Native checkbox styled as switch */}\n <Box\n as=\"label\"\n display=\"inline-flex\"\n alignItems=\"center\"\n cursor={disabled || readOnly ? 'not-allowed' : 'pointer'}\n position=\"relative\"\n opacity={disabled || readOnly ? 0.4 : 1}\n >\n <input\n type=\"checkbox\"\n checked={isEnabled}\n onChange={(e) => handleDayToggle(day, e.target.checked)}\n disabled={disabled || readOnly}\n data-switch={day}\n style={{\n position: 'absolute',\n opacity: 0,\n width: 0,\n height: 0,\n }}\n />\n <Box\n w={SWITCH_STYLES.trackWidth}\n h={SWITCH_STYLES.trackHeight}\n bg={isEnabled ? 'green.500' : 'gray.300'}\n borderRadius=\"full\"\n position=\"relative\"\n transition=\"background 0.2s\"\n >\n <Box\n position=\"absolute\"\n top={SWITCH_STYLES.thumbOffset}\n left={isEnabled ? SWITCH_STYLES.thumbEnabledLeft : SWITCH_STYLES.thumbOffset}\n w={SWITCH_STYLES.thumbSize}\n h={SWITCH_STYLES.thumbSize}\n bg=\"white\"\n borderRadius=\"full\"\n transition=\"left 0.2s\"\n boxShadow=\"sm\"\n />\n </Box>\n </Box>\n <Text fontWeight=\"medium\" color={isEnabled ? 'fg' : 'fg.muted'}>\n {mergedDayNames[day]}\n </Text>\n </HStack>\n\n {/* Time fields */}\n {isEnabled ? (\n <HStack gap={2}>\n <Input\n type=\"time\"\n size=\"sm\"\n width=\"120px\"\n value={daySchedule?.open || defaultOpenTime}\n onChange={(e) => handleTimeChange(day, 'open', e.target.value)}\n disabled={disabled || readOnly}\n />\n <Text color=\"fg.muted\">—</Text>\n <Input\n type=\"time\"\n size=\"sm\"\n width=\"120px\"\n value={daySchedule?.close || defaultCloseTime}\n onChange={(e) => handleTimeChange(day, 'close', e.target.value)}\n disabled={disabled || readOnly}\n />\n </HStack>\n ) : (\n <Text fontSize=\"sm\" color=\"fg.muted\">\n {offLabel}\n </Text>\n )}\n </HStack>\n </Box>\n )\n })}\n </Stack>\n\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolvedHelperText} />\n </Field.Root>\n )\n})\n\n/**\n * Props for Schedule field\n */\nexport interface ScheduleFieldProps extends Omit<BaseFieldProps, 'placeholder'> {\n /** Tooltip for field label */\n tooltip?: FieldTooltipMeta\n\n /**\n * Custom day names (for localization)\n */\n dayNames?: Partial<Record<DayOfWeek, string>>\n\n /**\n * Default schedule when empty\n */\n defaultSchedule?: WeeklySchedule\n\n /**\n * Days to display (subset of all days)\n * @default all days\n */\n days?: DayOfWeek[]\n\n /**\n * Show \"copy to weekdays\" button\n * @default true\n */\n showCopyToWeekdays?: boolean\n\n /**\n * Text for \"day off\" state\n * @default 'Day off'\n */\n offLabel?: string\n\n /**\n * Copy to weekdays button text\n * @default 'Copy Mon to weekdays'\n */\n copyToWeekdaysLabel?: string\n\n /**\n * Default opening time when enabling a day\n */\n defaultOpenTime?: string\n\n /**\n * Default closing time when enabling a day\n */\n defaultCloseTime?: string\n}\n\n/**\n * Form.Field.Schedule - Weekly schedule editor\n *\n * Renders working hours schedule editor with toggles\n * and time fields for each day of the week.\n *\n * @example Basic usage\n * ```tsx\n * <Form.Field.Schedule\n * name=\"workingHours\"\n * label=\"Working hours\"\n * />\n * ```\n *\n * @example With custom day names\n * ```tsx\n * <Form.Field.Schedule\n * name=\"schedule\"\n * dayNames={{\n * monday: 'Mon',\n * tuesday: 'Tue',\n * // ...\n * }}\n * offLabel=\"Day off\"\n * copyToWeekdaysLabel=\"Copy Mon to weekdays\"\n * />\n * ```\n *\n * @example Weekdays only\n * ```tsx\n * <Form.Field.Schedule\n * name=\"hours\"\n * days={['monday', 'tuesday', 'wednesday', 'thursday', 'friday']}\n * />\n * ```\n */\nexport function FieldSchedule({\n name,\n label,\n helperText,\n required,\n disabled,\n readOnly,\n tooltip,\n dayNames = {},\n defaultSchedule = DEFAULT_WORKING_HOURS,\n days = DAYS_OF_WEEK,\n showCopyToWeekdays = true,\n offLabel = 'Day off',\n copyToWeekdaysLabel = 'Copy Mon to weekdays',\n defaultOpenTime = '09:00',\n defaultCloseTime = '18:00',\n}: ScheduleFieldProps): ReactElement {\n const {\n form,\n fullPath,\n label: resolvedLabel,\n helperText: resolvedHelperText,\n tooltip: resolvedTooltip,\n required: resolvedRequired,\n disabled: resolvedDisabled,\n readOnly: resolvedReadOnly,\n } = useResolvedFieldProps(name, { label, helperText, required, disabled, readOnly, tooltip })\n\n // Merge day names\n const mergedDayNames = { ...DEFAULT_DAY_NAMES, ...dayNames }\n\n return (\n <form.Field name={fullPath}>\n {(field: AnyFieldApi) => {\n const schedule: WeeklySchedule = (field.state.value as WeeklySchedule) || defaultSchedule\n\n return (\n <ScheduleContent\n field={field}\n schedule={schedule}\n defaultSchedule={defaultSchedule}\n days={days}\n mergedDayNames={mergedDayNames}\n showCopyToWeekdays={showCopyToWeekdays}\n offLabel={offLabel}\n copyToWeekdaysLabel={copyToWeekdaysLabel}\n defaultOpenTime={defaultOpenTime}\n defaultCloseTime={defaultCloseTime}\n disabled={resolvedDisabled}\n readOnly={resolvedReadOnly}\n resolvedLabel={resolvedLabel}\n resolvedHelperText={resolvedHelperText}\n resolvedRequired={resolvedRequired}\n resolvedTooltip={resolvedTooltip}\n fullPath={fullPath}\n />\n )\n }}\n </form.Field>\n )\n}\n","'use client'\n\nimport { Input } from '@chakra-ui/react'\nimport type { ReactElement } from 'react'\nimport type { TimeFieldProps } from '../../types'\nimport { createField, FieldWrapper } from '../base'\n\n/**\n * Form.Field.Time - Time input field\n *\n * Renders a native time input with automatic form integration and error display.\n *\n * @example\n * ```tsx\n * <Form.Field.Time name=\"startTime\" label=\"Start Time\" />\n * ```\n *\n * @example With step (seconds)\n * ```tsx\n * <Form.Field.Time name=\"duration\" label=\"Duration\" step={60} />\n * ```\n */\nexport const FieldTime = createField<TimeFieldProps, string>({\n displayName: 'FieldTime',\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }): ReactElement => (\n <FieldWrapper resolved={resolved} hasError={hasError} errorMessage={errorMessage} fullPath={fullPath}>\n <Input\n type=\"time\"\n value={(field.state.value as string) ?? ''}\n onChange={(e) => field.handleChange((e.target as HTMLInputElement).value)}\n onBlur={field.handleBlur}\n placeholder={resolved.placeholder}\n min={componentProps.min}\n max={componentProps.max}\n step={componentProps.step}\n data-field-name={fullPath}\n />\n </FieldWrapper>\n ),\n})\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/lib/declarative/form-fields/text/field-editable.tsx","../src/lib/declarative/form-fields/text/field-password.tsx","../src/lib/declarative/form-fields/text/field-password-strength.tsx","../src/lib/declarative/form-fields/text/toolbar-config.tsx","../src/lib/declarative/form-fields/text/image-popover.tsx","../src/lib/declarative/form-fields/text/link-popover.tsx","../src/lib/declarative/form-fields/text/field-rich-text.tsx","../src/lib/declarative/form-fields/text/field-string.tsx","../src/lib/declarative/form-fields/text/field-textarea.tsx","../src/lib/declarative/form-fields/text/field-masked-input.tsx"],"names":["jsx","IconButton","useState","jsxs","Field","Input","LuEyeOff","LuEye","LuImage","VStack","Box","Text","HStack","LuX","useCallback","Popover","LuLink","Portal","Button","editor"],"mappings":";;;;;;;;;;;;;AAgEO,IAAM,gBAAgB,WAAA,CAAwC;AAAA,EACnE,WAAA,EAAa,eAAA;AAAA,EAEb,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAO,UAAU,QAAA,EAAU,YAAA,EAAc,gBAAe,KAAoB;AACrF,IAAA,MAAM;AAAA,MACJ,SAAA,GAAY,KAAA;AAAA,MACZ,cAAA,GAAiB,OAAA;AAAA,MACjB,YAAA,GAAe,KAAA;AAAA,MACf,QAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,YAAA,GAAe;AAAA,KACjB,GAAI,cAAA;AAEJ,IAAA,MAAM,YAAA,GAAgB,KAAA,CAAM,KAAA,CAAM,KAAA,IAAoB,EAAA;AAEtD,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA,CAAM,IAAA;AAAA,MAAN;AAAA,QACC,OAAA,EAAS,QAAA;AAAA,QACT,UAAU,QAAA,CAAS,QAAA;AAAA,QACnB,UAAU,QAAA,CAAS,QAAA;AAAA,QACnB,UAAU,QAAA,CAAS,QAAA;AAAA,QAEnB,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,UAAA,EAAA,EAAW,OAAO,QAAA,CAAS,KAAA,EAAO,SAAS,QAAA,CAAS,OAAA,EAAS,QAAA,EAAU,QAAA,CAAS,QAAA,EAAU,CAAA;AAAA,0BAE3F,IAAA;AAAA,YAAC,QAAA,CAAS,IAAA;AAAA,YAAT;AAAA,cACC,KAAA,EAAO,YAAA;AAAA,cACP,eAAe,CAAC,OAAA,KAAY,KAAA,CAAM,YAAA,CAAa,QAAQ,KAAK,CAAA;AAAA,cAC5D,UAAU,QAAA,CAAS,QAAA;AAAA,cACnB,UAAU,QAAA,CAAS,QAAA;AAAA,cACnB,WAAA,EAAa,SAAS,WAAA,IAAe,eAAA;AAAA,cACrC,cAAA;AAAA,cACA,UAAA,EAAY,eAAe,MAAA,GAAS,OAAA;AAAA,cAEpC,QAAA,EAAA;AAAA,gCAAA,GAAA;AAAA,kBAAC,QAAA,CAAS,OAAA;AAAA,kBAAT;AAAA,oBACC,IAAA,EAAM,YAAY,MAAA,GAAS,MAAA;AAAA,oBAC3B,UAAA,EAAY,YAAY,YAAA,GAAe,MAAA;AAAA,oBACvC,KAAA,EAAM;AAAA;AAAA,iBACR;AAAA,gBAEC,SAAA,uBAAa,QAAA,CAAS,QAAA,EAAT,EAAkB,CAAA,mBAAK,GAAA,CAAC,QAAA,CAAS,KAAA,EAAT,EAAe,CAAA;AAAA,gBAEpD,YAAA,oBACC,IAAA,CAAC,QAAA,CAAS,OAAA,EAAT,EACC,QAAA,EAAA;AAAA,kCAAA,GAAA,CAAC,QAAA,CAAS,WAAA,EAAT,EAAqB,OAAA,EAAO,IAAA,EAC3B,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,OAAA,EAAQ,IAAA,EAAK,IAAA,EAC9B,QAAA,EAAA,QAAA,IAAY,gBACf,CAAA,EACF,CAAA;AAAA,kCACA,GAAA,CAAC,QAAA,CAAS,aAAA,EAAT,EAAuB,SAAO,IAAA,EAC7B,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,SAAA,EAAU,IAAA,EAAK,IAAA,EAChC,QAAA,EAAA,UAAA,IAAc,UACjB,CAAA,EACF,CAAA;AAAA,kCACA,GAAA,CAAC,QAAA,CAAS,aAAA,EAAT,EAAuB,SAAO,IAAA,EAC7B,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,OAAA,EAAQ,SAAA,EAAU,IAAA,EAAK,IAAA,EAChC,QAAA,EAAA,UAAA,IAAc,UACjB,CAAA,EACF;AAAA,iBAAA,EACF;AAAA;AAAA;AAAA,WAEJ;AAAA,8BAEC,UAAA,EAAA,EAAW,QAAA,EAAoB,YAAA,EAA4B,UAAA,EAAY,SAAS,UAAA,EAAY;AAAA;AAAA;AAAA,KAC/F;AAAA,EAEJ;AACF,CAAC;AClGM,IAAM,gBAAgB,WAAA,CAA4D;AAAA,EACvF,WAAA,EAAa,eAAA;AAAA,EAEb,aAAA,EAAe,CAAC,KAAA,KAAU;AACxB,IAAA,MAAM,CAAC,OAAA,EAAS,UAAU,IAAI,QAAA,CAAS,KAAA,CAAM,kBAAkB,KAAK,CAAA;AACpE,IAAA,OAAO;AAAA,MACL,OAAA;AAAA,MACA,QAAQ,MAAM,UAAA,CAAW,CAAC,CAAA,KAAM,CAAC,CAAC;AAAA,KACpC;AAAA,EACF,CAAA;AAAA,EAEA,QAAQ,CAAC,EAAE,OAAO,QAAA,EAAU,QAAA,EAAU,UAAU,YAAA,EAAc,cAAA,EAAgB,UAAA,EAAW,qBACvFA,GAAAA,CAAC,YAAA,EAAA,EAAa,UAAoB,QAAA,EAAoB,YAAA,EAA4B,UAChF,QAAA,kBAAAA,GAAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,4BACEA,GAAAA;AAAA,QAACC,UAAAA;AAAA,QAAA;AAAA,UACC,QAAA,EAAU,EAAA;AAAA,UACV,EAAA,EAAG,IAAA;AAAA,UACH,WAAA,EAAY,QAAA;AAAA,UACZ,IAAA,EAAK,IAAA;AAAA,UACL,OAAA,EAAQ,OAAA;AAAA,UACR,MAAA,EAAO,0BAAA;AAAA,UACP,YAAA,EAAW,4BAAA;AAAA,UACX,UAAU,QAAA,CAAS,QAAA;AAAA,UACnB,aAAA,EAAe,CAAC,CAAA,KAAM;AACpB,YAAA,IAAI,SAAS,QAAA,EAAU;AACrB,cAAA;AAAA,YACF;AACA,YAAA,IAAI,CAAA,CAAE,WAAW,CAAA,EAAG;AAClB,cAAA;AAAA,YACF;AACA,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,UAAA,CAAW,MAAA,EAAO;AAAA,UACpB,CAAA;AAAA,UAEC,QAAA,EAAA,UAAA,CAAW,0BAAUD,GAAAA,CAAC,YAAS,CAAA,mBAAKA,IAAC,KAAA,EAAA,EAAM;AAAA;AAAA,OAC9C;AAAA,MAGF,QAAA,kBAAAA,GAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM,UAAA,CAAW,OAAA,GAAU,MAAA,GAAS,UAAA;AAAA,UACpC,KAAA,EAAQ,KAAA,CAAM,KAAA,CAAM,KAAA,IAAoB,EAAA;AAAA,UACxC,UAAU,CAAC,CAAA,KAAM,MAAM,YAAA,CAAc,CAAA,CAAE,OAA4B,KAAK,CAAA;AAAA,UACxE,QAAQ,KAAA,CAAM,UAAA;AAAA,UACd,aAAa,QAAA,CAAS,WAAA;AAAA,UACtB,WAAW,cAAA,CAAe,SAAA;AAAA,UAC1B,cAAc,cAAA,CAAe,YAAA;AAAA,UAC7B,iBAAA,EAAiB;AAAA;AAAA;AACnB;AAAA,GACF,EACF;AAEJ,CAAC;AC1ED,IAAM,uBAA8C,CAAC,aAAA,EAAe,WAAA,EAAa,WAAA,EAAa,UAAU,SAAS,CAAA;AAKjH,IAAM,kBAAA,GAA0D;AAAA,EAC9D,aAAA,EAAe,sBAAA;AAAA,EACf,SAAA,EAAW,+BAAA;AAAA,EACX,SAAA,EAAW,+BAAA;AAAA,EACX,MAAA,EAAQ,oBAAA;AAAA,EACR,OAAA,EAAS;AACX,CAAA;AAKA,SAAS,gBAAA,CAAiB,UAAkB,WAAA,EAA2C;AACrF,EAAA,QAAQ,WAAA;AAAa,IACnB,KAAK,aAAA;AACH,MAAA,OAAO,SAAS,MAAA,IAAU,CAAA;AAAA,IAC5B,KAAK,WAAA;AACH,MAAA,OAAO,OAAA,CAAQ,KAAK,QAAQ,CAAA;AAAA,IAC9B,KAAK,WAAA;AACH,MAAA,OAAO,OAAA,CAAQ,KAAK,QAAQ,CAAA;AAAA,IAC9B,KAAK,QAAA;AACH,MAAA,OAAO,OAAA,CAAQ,KAAK,QAAQ,CAAA;AAAA,IAC9B,KAAK,SAAA;AACH,MAAA,OAAO,qCAAA,CAAsC,KAAK,QAAQ,CAAA;AAAA,IAC5D;AACE,MAAA,OAAO,KAAA;AAAA;AAEb;AAKA,SAAS,iBAAA,CAAkB,UAAkB,YAAA,EAA6C;AACxF,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,OAAO,CAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAA,GAAW,aAAa,MAAA,CAAO,CAAC,QAAQ,gBAAA,CAAiB,QAAA,EAAU,GAAG,CAAC,CAAA,CAAE,MAAA;AAC/E,EAAA,OAAO,IAAA,CAAK,KAAA,CAAO,QAAA,GAAW,YAAA,CAAa,SAAU,GAAG,CAAA;AAC1D;AAKA,SAAS,gBAAgB,QAAA,EAA2D;AAClF,EAAA,IAAI,WAAW,EAAA,EAAI;AACjB,IAAA,OAAO,EAAE,KAAA,EAAO,MAAA,EAAQ,YAAA,EAAc,KAAA,EAAM;AAAA,EAC9C;AACA,EAAA,IAAI,WAAW,EAAA,EAAI;AACjB,IAAA,OAAO,EAAE,KAAA,EAAO,QAAA,EAAU,YAAA,EAAc,QAAA,EAAS;AAAA,EACnD;AACA,EAAA,IAAI,WAAW,EAAA,EAAI;AACjB,IAAA,OAAO,EAAE,KAAA,EAAO,MAAA,EAAQ,YAAA,EAAc,QAAA,EAAS;AAAA,EACjD;AACA,EAAA,OAAO,EAAE,KAAA,EAAO,QAAA,EAAU,YAAA,EAAc,OAAA,EAAQ;AAClD;AA+BO,IAAM,wBAAwB,WAAA,CAA4E;AAAA,EAC/G,WAAA,EAAa,uBAAA;AAAA,EAEb,aAAA,EAAe,CAAC,KAAA,KAAU;AACxB,IAAA,MAAM,CAAC,OAAA,EAAS,UAAU,IAAIE,QAAAA,CAAS,KAAA,CAAM,kBAAkB,KAAK,CAAA;AACpE,IAAA,OAAO,EAAE,SAAS,MAAA,EAAQ,MAAM,WAAW,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA,EAAE;AAAA,EACxD,CAAA;AAAA,EAEA,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAO,QAAA,EAAU,UAAU,QAAA,EAAU,YAAA,EAAc,cAAA,EAAgB,UAAA,EAAW,KAAoB;AAC3G,IAAA,MAAM,EAAE,YAAA,GAAe,oBAAA,EAAsB,gBAAA,GAAmB,MAAK,GAAI,cAAA;AACzE,IAAA,MAAM,EAAE,OAAA,EAAS,MAAA,EAAO,GAAI,UAAA;AAE5B,IAAA,MAAM,KAAA,GAAS,KAAA,CAAM,KAAA,CAAM,KAAA,IAAoB,EAAA;AAC/C,IAAA,MAAM,QAAA,GAAW,iBAAA,CAAkB,KAAA,EAAO,YAAY,CAAA;AACtD,IAAA,MAAM,EAAE,KAAA,EAAO,aAAA,EAAe,YAAA,EAAa,GAAI,gBAAgB,QAAQ,CAAA;AAEvE,IAAA,uBACEC,IAAAA;AAAA,MAACC,KAAAA,CAAM,IAAA;AAAA,MAAN;AAAA,QACC,OAAA,EAAS,QAAA;AAAA,QACT,UAAU,QAAA,CAAS,QAAA;AAAA,QACnB,UAAU,QAAA,CAAS,QAAA;AAAA,QACnB,UAAU,QAAA,CAAS,QAAA;AAAA,QAEnB,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAO,QAAA,CAAS,KAAA,EAAO,SAAS,QAAA,CAAS,OAAA,EAAS,QAAA,EAAU,QAAA,CAAS,QAAA,EAAU,CAAA;AAAA,0BAC3FG,KAAC,MAAA,EAAA,EAAO,GAAA,EAAK,GAAG,KAAA,EAAM,SAAA,EAAU,OAAM,MAAA,EACpC,QAAA,EAAA;AAAA,4BAAAA,KAAC,MAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAAH,GAAAA;AAAA,gBAACK,KAAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAM,UAAU,MAAA,GAAS,UAAA;AAAA,kBACzB,KAAA;AAAA,kBACA,UAAU,CAAC,CAAA,KAAM,MAAM,YAAA,CAAa,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,kBAClD,QAAQ,KAAA,CAAM,UAAA;AAAA,kBACd,WAAA,EAAa,SAAS,WAAA,IAAe,gBAAA;AAAA,kBACrC,iBAAA,EAAiB,QAAA;AAAA,kBACjB,IAAA,EAAM;AAAA;AAAA,eACR;AAAA,8BACAL,GAAAA;AAAA,gBAACC,UAAAA;AAAA,gBAAA;AAAA,kBACC,YAAA,EAAY,UAAU,eAAA,GAAkB,eAAA;AAAA,kBACxC,OAAA,EAAS,MAAA;AAAA,kBACT,OAAA,EAAQ,OAAA;AAAA,kBACR,IAAA,EAAK,IAAA;AAAA,kBAEJ,QAAA,EAAA,OAAA,mBAAUD,GAAAA,CAACM,QAAAA,EAAA,EAAS,CAAA,mBAAKN,GAAAA,CAACO,KAAAA,EAAA,EAAM;AAAA;AAAA;AACnC,aAAA,EACF,CAAA;AAAA,YAEC,KAAA,oBACCJ,IAAAA,CAAC,GAAA,EAAA,EACC,QAAA,EAAA;AAAA,8BAAAA,IAAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,eAAA,EAAgB,IAAI,CAAA,EAClC,QAAA,EAAA;AAAA,gCAAAH,IAAC,IAAA,EAAA,EAAK,QAAA,EAAS,IAAA,EAAK,KAAA,EAAM,YAAW,QAAA,EAAA,UAAA,EAErC,CAAA;AAAA,gCACAA,GAAAA,CAAC,IAAA,EAAA,EAAK,QAAA,EAAS,IAAA,EAAK,UAAA,EAAW,QAAA,EAAS,KAAA,EAAO,CAAA,EAAG,YAAY,CAAA,IAAA,CAAA,EAC3D,QAAA,EAAA,aAAA,EACH;AAAA,eAAA,EACF,CAAA;AAAA,8BACAA,IAAC,QAAA,CAAS,IAAA,EAAT,EAAc,KAAA,EAAO,QAAA,EAAU,cAA4B,IAAA,EAAK,IAAA,EAC/D,0BAAAA,GAAAA,CAAC,QAAA,CAAS,OAAT,EACC,QAAA,kBAAAA,IAAC,QAAA,CAAS,KAAA,EAAT,EAAe,CAAA,EAClB,CAAA,EACF;AAAA,aAAA,EACF,CAAA;AAAA,YAGD,gBAAA,IAAoB,KAAA,oBACnBA,GAAAA,CAAC,KAAK,IAAA,EAAL,EAAU,QAAA,EAAS,IAAA,EAAK,GAAA,EAAK,CAAA,EAC3B,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,GAAA,KAAQ;AACzB,cAAA,MAAM,GAAA,GAAM,gBAAA,CAAiB,KAAA,EAAO,GAAG,CAAA;AACvC,cAAA,uBACEG,IAAAA,CAAC,IAAA,CAAK,IAAA,EAAL,EAAoB,SAAQ,MAAA,EAAO,UAAA,EAAW,QAAA,EAAS,GAAA,EAAK,CAAA,EAC3D,QAAA,EAAA;AAAA,gCAAAH,IAAC,GAAA,EAAA,EAAI,KAAA,EAAO,MAAM,WAAA,GAAc,UAAA,EAAa,gCAAMA,GAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAM,IAAI,CAAA,mBAAKA,IAAC,GAAA,EAAA,EAAI,IAAA,EAAM,IAAI,CAAA,EAAG,CAAA;AAAA,gCAC7FA,IAAC,IAAA,EAAA,EAAK,KAAA,EAAO,MAAM,YAAA,GAAe,UAAA,EAAa,QAAA,EAAA,kBAAA,CAAmB,GAAG,CAAA,EAAE;AAAA,eAAA,EAAA,EAFzD,GAGhB,CAAA;AAAA,YAEJ,CAAC,CAAA,EACH;AAAA,WAAA,EAEJ,CAAA;AAAA,0BACAA,GAAAA,CAAC,UAAA,EAAA,EAAW,UAAoB,YAAA,EAA4B,UAAA,EAAY,SAAS,UAAA,EAAY;AAAA;AAAA;AAAA,KAC/F;AAAA,EAEJ;AACF,CAAC;ACzIM,IAAM,uBAAA,GAA2C;AAAA,EACtD,MAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF;AAeO,IAAM,cAAA,GAA6D;AAAA,EACxE,IAAA,EAAM;AAAA,IACJ,IAAA,kBAAMA,GAAAA,CAAC,MAAA,EAAA,EAAO,CAAA;AAAA,IACd,KAAA,EAAO,MAAA;AAAA,IACP,MAAA,EAAQ,CAAC,MAAA,KAAW,MAAA,EAAQ,KAAA,GAAQ,KAAA,EAAM,CAAE,UAAA,EAAW,CAAE,GAAA,EAAI;AAAA,IAC7D,UAAU,CAAC,MAAA,KAAW,MAAA,EAAQ,QAAA,CAAS,MAAM,CAAA,IAAK;AAAA,GACpD;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,kBAAMA,GAAAA,CAAC,QAAA,EAAA,EAAS,CAAA;AAAA,IAChB,KAAA,EAAO,QAAA;AAAA,IACP,MAAA,EAAQ,CAAC,MAAA,KAAW,MAAA,EAAQ,KAAA,GAAQ,KAAA,EAAM,CAAE,YAAA,EAAa,CAAE,GAAA,EAAI;AAAA,IAC/D,UAAU,CAAC,MAAA,KAAW,MAAA,EAAQ,QAAA,CAAS,QAAQ,CAAA,IAAK;AAAA,GACtD;AAAA,EACA,SAAA,EAAW;AAAA,IACT,IAAA,kBAAMA,GAAAA,CAAC,WAAA,EAAA,EAAY,CAAA;AAAA,IACnB,KAAA,EAAO,0EAAA;AAAA,IACP,MAAA,EAAQ,CAAC,MAAA,KAAW,MAAA,EAAQ,KAAA,GAAQ,KAAA,EAAM,CAAE,eAAA,EAAgB,CAAE,GAAA,EAAI;AAAA,IAClE,UAAU,CAAC,MAAA,KAAW,MAAA,EAAQ,QAAA,CAAS,WAAW,CAAA,IAAK;AAAA,GACzD;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,IAAA,kBAAMA,GAAAA,CAAC,eAAA,EAAA,EAAgB,CAAA;AAAA,IACvB,KAAA,EAAO,eAAA;AAAA,IACP,MAAA,EAAQ,CAAC,MAAA,KAAW,MAAA,EAAQ,KAAA,GAAQ,KAAA,EAAM,CAAE,YAAA,EAAa,CAAE,GAAA,EAAI;AAAA,IAC/D,UAAU,CAAC,MAAA,KAAW,MAAA,EAAQ,QAAA,CAAS,QAAQ,CAAA,IAAK;AAAA,GACtD;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,kBAAMA,GAAAA,CAAC,MAAA,EAAA,EAAO,CAAA;AAAA,IACd,KAAA,EAAO,oBAAA;AAAA,IACP,MAAA,EAAQ,CAAC,MAAA,KAAW,MAAA,EAAQ,KAAA,GAAQ,KAAA,EAAM,CAAE,UAAA,EAAW,CAAE,GAAA,EAAI;AAAA,IAC7D,UAAU,CAAC,MAAA,KAAW,MAAA,EAAQ,QAAA,CAAS,MAAM,CAAA,IAAK;AAAA,GACpD;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,kBAAMA,GAAAA,CAAC,UAAA,EAAA,EAAW,CAAA;AAAA,IAClB,KAAA,EAAO,0DAAA;AAAA,IACP,MAAA,EAAQ,CAAC,MAAA,KAAW,MAAA,EAAQ,OAAM,CAAE,KAAA,EAAM,CAAE,aAAA,CAAc,EAAE,KAAA,EAAO,CAAA,EAAG,EAAE,GAAA,EAAI;AAAA,IAC5E,QAAA,EAAU,CAAC,MAAA,KAAW,MAAA,EAAQ,QAAA,CAAS,WAAW,EAAE,KAAA,EAAO,CAAA,EAAG,CAAA,IAAK;AAAA,GACrE;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,kBAAMA,GAAAA,CAAC,UAAA,EAAA,EAAW,CAAA;AAAA,IAClB,KAAA,EAAO,0DAAA;AAAA,IACP,MAAA,EAAQ,CAAC,MAAA,KAAW,MAAA,EAAQ,OAAM,CAAE,KAAA,EAAM,CAAE,aAAA,CAAc,EAAE,KAAA,EAAO,CAAA,EAAG,EAAE,GAAA,EAAI;AAAA,IAC5E,QAAA,EAAU,CAAC,MAAA,KAAW,MAAA,EAAQ,QAAA,CAAS,WAAW,EAAE,KAAA,EAAO,CAAA,EAAG,CAAA,IAAK;AAAA,GACrE;AAAA,EACA,QAAA,EAAU;AAAA,IACR,IAAA,kBAAMA,GAAAA,CAAC,UAAA,EAAA,EAAW,CAAA;AAAA,IAClB,KAAA,EAAO,0DAAA;AAAA,IACP,MAAA,EAAQ,CAAC,MAAA,KAAW,MAAA,EAAQ,OAAM,CAAE,KAAA,EAAM,CAAE,aAAA,CAAc,EAAE,KAAA,EAAO,CAAA,EAAG,EAAE,GAAA,EAAI;AAAA,IAC5E,QAAA,EAAU,CAAC,MAAA,KAAW,MAAA,EAAQ,QAAA,CAAS,WAAW,EAAE,KAAA,EAAO,CAAA,EAAG,CAAA,IAAK;AAAA,GACrE;AAAA,EACA,UAAA,EAAY;AAAA,IACV,IAAA,kBAAMA,GAAAA,CAAC,MAAA,EAAA,EAAO,CAAA;AAAA,IACd,KAAA,EAAO,aAAA;AAAA,IACP,MAAA,EAAQ,CAAC,MAAA,KAAW,MAAA,EAAQ,KAAA,GAAQ,KAAA,EAAM,CAAE,gBAAA,EAAiB,CAAE,GAAA,EAAI;AAAA,IACnE,UAAU,CAAC,MAAA,KAAW,MAAA,EAAQ,QAAA,CAAS,YAAY,CAAA,IAAK;AAAA,GAC1D;AAAA,EACA,WAAA,EAAa;AAAA,IACX,IAAA,kBAAMA,GAAAA,CAAC,aAAA,EAAA,EAAc,CAAA;AAAA,IACrB,KAAA,EAAO,cAAA;AAAA,IACP,MAAA,EAAQ,CAAC,MAAA,KAAW,MAAA,EAAQ,KAAA,GAAQ,KAAA,EAAM,CAAE,iBAAA,EAAkB,CAAE,GAAA,EAAI;AAAA,IACpE,UAAU,CAAC,MAAA,KAAW,MAAA,EAAQ,QAAA,CAAS,aAAa,CAAA,IAAK;AAAA,GAC3D;AAAA,EACA,UAAA,EAAY;AAAA,IACV,IAAA,kBAAMA,GAAAA,CAAC,OAAA,EAAA,EAAQ,CAAA;AAAA,IACf,KAAA,EAAO,OAAA;AAAA,IACP,MAAA,EAAQ,CAAC,MAAA,KAAW,MAAA,EAAQ,KAAA,GAAQ,KAAA,EAAM,CAAE,gBAAA,EAAiB,CAAE,GAAA,EAAI;AAAA,IACnE,UAAU,CAAC,MAAA,KAAW,MAAA,EAAQ,QAAA,CAAS,YAAY,CAAA,IAAK;AAAA,GAC1D;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,kBAAMA,GAAAA,CAAC,MAAA,EAAA,EAAO,CAAA;AAAA,IACd,KAAA,EAAO,sCAAA;AAAA,IACP,MAAA,EAAQ,CAAC,MAAA,KAAW;AAClB,MAAA,IAAI,MAAA,EAAQ,QAAA,CAAS,MAAM,CAAA,EAAG;AAC5B,QAAA,MAAA,CAAO,OAAM,CAAE,KAAA,EAAM,CAAE,SAAA,GAAY,GAAA,EAAI;AAAA,MACzC,CAAA,MAAO;AACL,QAAA,MAAM,GAAA,GAAM,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA;AAC/B,QAAA,IAAI,GAAA,EAAK;AACP,UAAA,MAAA,EAAQ,KAAA,EAAM,CAAE,KAAA,EAAM,CAAE,eAAA,CAAgB,MAAM,CAAA,CAAE,OAAA,CAAQ,EAAE,IAAA,EAAM,GAAA,EAAK,EAAE,GAAA,EAAI;AAAA,QAC7E;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA,UAAU,CAAC,MAAA,KAAW,MAAA,EAAQ,QAAA,CAAS,MAAM,CAAA,IAAK;AAAA,GACpD;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,kBAAMA,GAAAA,CAAC,MAAA,EAAA,EAAO,CAAA;AAAA,IACd,KAAA,EAAO,MAAA;AAAA,IACP,MAAA,EAAQ,CAAC,MAAA,KAAW,MAAA,EAAQ,KAAA,GAAQ,KAAA,EAAM,CAAE,IAAA,EAAK,CAAE,GAAA;AAAI,GACzD;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAA,kBAAMA,GAAAA,CAAC,MAAA,EAAA,EAAO,CAAA;AAAA,IACd,KAAA,EAAO,MAAA;AAAA,IACP,MAAA,EAAQ,CAAC,MAAA,KAAW,MAAA,EAAQ,KAAA,GAAQ,KAAA,EAAM,CAAE,IAAA,EAAK,CAAE,GAAA;AAAI,GACzD;AAAA;AAAA,EAEA,KAAA,EAAO;AAAA,IACL,IAAA,kBAAMA,GAAAA,CAAC,OAAA,EAAA,EAAQ,CAAA;AAAA,IACf,KAAA,EAAO,cAAA;AAAA,IACP,QAAQ,MAAM;AAAA,IAEd;AAAA;AAEJ;AC3HO,SAAS,YAAA,CAAa,EAAE,MAAA,EAAQ,MAAA,EAAQ,UAAS,EAAoC;AAC1F,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIE,SAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAsB,MAAM,CAAA;AAClE,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,SAAwB,IAAI,CAAA;AACpE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAwB,IAAI,CAAA;AAChE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAS,KAAK,CAAA;AAClD,EAAA,MAAM,YAAA,GAAe,OAAyB,IAAI,CAAA;AAElD,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,OAAA,IAAW,EAAA,GAAK,IAAA,GAAO,IAAA;AAC9C,EAAA,MAAM,WAAA,GAAc,MAAA,CAAO,WAAA,IAAe,CAAC,SAAS,CAAA;AAKpD,EAAA,MAAM,YAAA,GAAe,WAAA;AAAA,IACnB,OAAO,IAAA,KAAe;AAEpB,MAAA,IAAI,CAAC,IAAA,CAAK,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,EAAG;AACnC,QAAA,eAAA,CAAgB,uBAAuB,CAAA;AACvC,QAAA,cAAA,CAAe,OAAO,CAAA;AACtB,QAAA;AAAA,MACF;AAGA,MAAA,IAAI,IAAA,CAAK,OAAO,OAAA,EAAS;AACvB,QAAA,MAAM,SAAA,GAAA,CAAa,OAAA,GAAU,IAAA,GAAO,IAAA,EAAM,QAAQ,CAAC,CAAA;AACnD,QAAA,eAAA,CAAgB,CAAA,yFAAA,EAAgC,SAAS,CAAA,EAAA,CAAI,CAAA;AAC7D,QAAA,cAAA,CAAe,OAAO,CAAA;AACtB,QAAA;AAAA,MACF;AAGA,MAAA,MAAM,OAAA,GAAU,GAAA,CAAI,eAAA,CAAgB,IAAI,CAAA;AACxC,MAAA,aAAA,CAAc,OAAO,CAAA;AACrB,MAAA,cAAA,CAAe,WAAW,CAAA;AAC1B,MAAA,eAAA,CAAgB,IAAI,CAAA;AAEpB,MAAA,IAAI;AACF,QAAA,MAAM,QAAA,GAAW,IAAI,QAAA,EAAS;AAC9B,QAAA,QAAA,CAAS,MAAA,CAAO,QAAQ,IAAI,CAAA;AAC5B,QAAA,IAAI,OAAO,QAAA,EAAU;AACnB,UAAA,QAAA,CAAS,MAAA,CAAO,UAAA,EAAY,MAAA,CAAO,QAAQ,CAAA;AAAA,QAC7C;AAEA,QAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,MAAA,CAAO,QAAA,EAAU;AAAA,UAC5C,MAAA,EAAQ,MAAA;AAAA,UACR,IAAA,EAAM;AAAA,SACP,CAAA;AAED,QAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAS,IAAA,EAAK;AAEnC,QAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,UAAA,MAAM,IAAI,KAAA,CAAM,MAAA,CAAO,KAAA,IAAS,cAAc,CAAA;AAAA,QAChD;AAEA,QAAA,IAAI,OAAO,GAAA,EAAK;AAGd,UAAA;AAAC,UAAC,MAAA,CAAO,KAAA,EAAM,CAAE,KAAA,EAAM,CAAU,QAAA,CAAS,EAAE,GAAA,EAAK,MAAA,CAAO,GAAA,EAAK,CAAA,CAAE,GAAA,EAAI;AACnE,UAAA,WAAA,EAAY;AAAA,QACd,CAAA,MAAO;AACL,UAAA,MAAM,IAAI,MAAM,wBAAwB,CAAA;AAAA,QAC1C;AAAA,MACF,SAAS,GAAA,EAAK;AACZ,QAAA,eAAA,CAAgB,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,cAAc,CAAA;AACnE,QAAA,cAAA,CAAe,OAAO,CAAA;AAAA,MACxB,CAAA,SAAE;AAEA,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,GAAA,CAAI,gBAAgB,OAAO,CAAA;AAAA,QAC7B;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA,CAAC,MAAA,EAAQ,MAAA,EAAQ,OAAO;AAAA,GAC1B;AAKA,EAAA,MAAM,gBAAA,GAAmB,WAAA;AAAA,IACvB,CAAC,CAAA,KAA2C;AAC1C,MAAA,MAAM,IAAA,GAAO,CAAA,CAAE,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA;AAC/B,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,YAAA,CAAa,IAAI,CAAA;AAAA,MACnB;AAEA,MAAA,CAAA,CAAE,OAAO,KAAA,GAAQ,EAAA;AAAA,IACnB,CAAA;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAKA,EAAA,MAAM,UAAA,GAAa,WAAA;AAAA,IACjB,CAAC,CAAA,KAAuB;AACtB,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,aAAA,CAAc,KAAK,CAAA;AAEnB,MAAA,MAAM,IAAA,GAAO,CAAA,CAAE,YAAA,CAAa,KAAA,CAAM,CAAC,CAAA;AACnC,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,YAAA,CAAa,IAAI,CAAA;AAAA,MACnB;AAAA,IACF,CAAA;AAAA,IACA,CAAC,YAAY;AAAA,GACf;AAKA,EAAA,MAAM,WAAA,GAAc,YAAY,MAAM;AACpC,IAAA,SAAA,CAAU,KAAK,CAAA;AACf,IAAA,cAAA,CAAe,MAAM,CAAA;AACrB,IAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,IAAA,aAAA,CAAc,IAAI,CAAA;AAClB,IAAA,aAAA,CAAc,KAAK,CAAA;AAAA,EACrB,CAAA,EAAG,EAAE,CAAA;AAKL,EAAA,MAAM,WAAA,GAAc,YAAY,MAAM;AACpC,IAAA,cAAA,CAAe,MAAM,CAAA;AACrB,IAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,IAAA,aAAA,CAAc,IAAI,CAAA;AAAA,EACpB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,uBACEC,IAAAA,CAAC,OAAA,CAAQ,IAAA,EAAR,EAAa,IAAA,EAAM,MAAA,EAAQ,YAAA,EAAc,CAAC,OAAA,KAAY,SAAA,CAAU,OAAA,CAAQ,IAAI,CAAA,EAC3E,QAAA,EAAA;AAAA,oBAAAH,IAAC,OAAA,CAAQ,OAAA,EAAR,EAAgB,OAAA,EAAO,MACtB,QAAA,kBAAAA,GAAAA;AAAA,MAACC,UAAAA;AAAA,MAAA;AAAA,QACC,YAAA,EAAW,cAAA;AAAA,QACX,IAAA,EAAK,IAAA;AAAA,QACL,OAAA,EAAQ,OAAA;AAAA,QACR,OAAA,EAAS,MAAM,SAAA,CAAU,IAAI,CAAA;AAAA,QAC7B,QAAA;AAAA,QAEA,QAAA,kBAAAD,GAAAA,CAACQ,OAAAA,EAAA,EAAQ;AAAA;AAAA,KACX,EACF,CAAA;AAAA,oBAEAR,GAAAA,CAAC,MAAA,EAAA,EACC,QAAA,kBAAAA,IAAC,OAAA,CAAQ,UAAA,EAAR,EACC,QAAA,kBAAAG,IAAAA,CAAC,OAAA,CAAQ,OAAA,EAAR,EAAgB,OAAM,OAAA,EACrB,QAAA,EAAA;AAAA,sBAAAH,GAAAA,CAAC,QAAQ,KAAA,EAAR,EACC,0BAAAA,GAAAA,CAAC,OAAA,CAAQ,QAAA,EAAR,EAAiB,CAAA,EACpB,CAAA;AAAA,sBACAG,IAAAA,CAAC,OAAA,CAAQ,IAAA,EAAR,EAAa,GAAG,CAAA,EAEd,QAAA,EAAA;AAAA,QAAA,WAAA,KAAgB,MAAA,oBACfA,IAAAA,CAACM,MAAAA,EAAA,EAAO,GAAA,EAAK,CAAA,EAAG,OAAM,SAAA,EACpB,QAAA,EAAA;AAAA,0BAAAT,GAAAA;AAAA,YAACU,GAAAA;AAAA,YAAA;AAAA,cACC,CAAA,EAAG,CAAA;AAAA,cACH,WAAA,EAAY,KAAA;AAAA,cACZ,WAAA,EAAY,QAAA;AAAA,cACZ,WAAA,EAAa,aAAa,kBAAA,GAAqB,QAAA;AAAA,cAC/C,YAAA,EAAa,IAAA;AAAA,cACb,EAAA,EAAI,aAAa,iBAAA,GAAoB,WAAA;AAAA,cACrC,UAAA,EAAW,UAAA;AAAA,cACX,MAAA,EAAO,SAAA;AAAA,cACP,MAAA,EAAQ,EAAE,WAAA,EAAa,kBAAA,EAAmB;AAAA,cAC1C,UAAA,EAAY,CAAC,CAAA,KAAM;AACjB,gBAAA,CAAA,CAAE,cAAA,EAAe;AACjB,gBAAA,aAAA,CAAc,IAAI,CAAA;AAAA,cACpB,CAAA;AAAA,cACA,WAAA,EAAa,CAAC,CAAA,KAAM;AAClB,gBAAA,CAAA,CAAE,cAAA,EAAe;AACjB,gBAAA,aAAA,CAAc,KAAK,CAAA;AAAA,cACrB,CAAA;AAAA,cACA,MAAA,EAAQ,UAAA;AAAA,cACR,OAAA,EAAS,MAAM,YAAA,CAAa,OAAA,EAAS,KAAA,EAAM;AAAA,cAE3C,QAAA,kBAAAV,IAAC,MAAA,EAAA,EACC,QAAA,kBAAAG,KAACM,MAAAA,EAAA,EAAO,KAAK,CAAA,EACX,QAAA,EAAA;AAAA,gCAAAT,GAAAA,CAAC,QAAK,QAAA,EAAS,KAAA,EAAM,OAAM,UAAA,EACzB,QAAA,kBAAAA,GAAAA,CAAC,QAAA,EAAA,EAAS,CAAA,EACZ,CAAA;AAAA,gCACAA,GAAAA,CAACW,IAAAA,EAAA,EAAK,QAAA,EAAS,MAAK,UAAA,EAAW,QAAA,EAAS,SAAA,EAAU,QAAA,EAAS,QAAA,EAAA,iBAAA,EAE3D,CAAA;AAAA,gCACAX,IAACW,IAAAA,EAAA,EAAK,UAAS,IAAA,EAAK,KAAA,EAAM,YAAW,QAAA,EAAA,oBAAA,EAErC;AAAA,eAAA,EACF,CAAA,EACF;AAAA;AAAA,WACF;AAAA,0BAEAR,KAACQ,IAAAA,EAAA,EAAK,UAAS,IAAA,EAAK,KAAA,EAAM,UAAA,EAAW,SAAA,EAAU,QAAA,EAAS,QAAA,EAAA;AAAA,YAAA,uBAAA;AAAA,YAAA,CAC/B,OAAA,GAAU,IAAA,GAAO,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,YAAE;AAAA,WAAA,EAC3D,CAAA;AAAA,0BAEAX,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,YAAA;AAAA,cACL,IAAA,EAAK,MAAA;AAAA,cACL,MAAA,EAAQ,WAAA,CAAY,IAAA,CAAK,GAAG,CAAA;AAAA,cAC5B,QAAA,EAAU,gBAAA;AAAA,cACV,KAAA,EAAO,EAAE,OAAA,EAAS,MAAA;AAAO;AAAA,WAC3B;AAAA,0BAEAA,GAAAA,CAACY,MAAAA,EAAA,EAAO,OAAA,EAAQ,YACd,QAAA,kBAAAZ,GAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAK,MAAK,OAAA,EAAQ,OAAA,EAAQ,OAAA,EAAS,WAAA,EAAa,oBAExD,CAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,QAID,WAAA,KAAgB,+BACfG,IAAAA,CAACM,QAAA,EAAO,GAAA,EAAK,CAAA,EAAG,KAAA,EAAM,SAAA,EACnB,QAAA,EAAA;AAAA,UAAA,UAAA,oBACCT,IAACU,GAAAA,EAAA,EAAI,cAAa,IAAA,EAAK,QAAA,EAAS,QAAA,EAAS,EAAA,EAAG,WAAA,EAC1C,QAAA,kBAAAV,IAAC,KAAA,EAAA,EAAM,GAAA,EAAK,UAAA,EAAY,GAAA,EAAI,SAAA,EAAU,IAAA,EAAK,SAAQ,CAAA,EAAE,MAAA,EAAO,SAAA,EAAU,SAAA,EAAU,CAAA,EAClF,CAAA;AAAA,0BAEFA,GAAAA,CAAC,MAAA,EAAA,EAAO,EAAA,EAAI,CAAA,EACV,0BAAAG,IAAAA,CAACS,MAAAA,EAAA,EAAO,GAAA,EAAK,CAAA,EACX,QAAA,EAAA;AAAA,4BAAAZ,GAAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAK,IAAA,EAAK,OAAM,kBAAA,EAAmB,CAAA;AAAA,4BAC5CA,IAACW,IAAAA,EAAA,EAAK,UAAS,IAAA,EAAK,KAAA,EAAM,YAAW,QAAA,EAAA,YAAA,EAErC;AAAA,WAAA,EACF,CAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,QAID,WAAA,KAAgB,2BACfR,IAAAA,CAACM,QAAA,EAAO,GAAA,EAAK,CAAA,EAAG,KAAA,EAAM,SAAA,EACnB,QAAA,EAAA;AAAA,UAAA,UAAA,oBACCN,IAAAA,CAACO,GAAAA,EAAA,EAAI,YAAA,EAAa,IAAA,EAAK,QAAA,EAAS,QAAA,EAAS,EAAA,EAAG,WAAA,EAAY,QAAA,EAAS,UAAA,EAC/D,QAAA,EAAA;AAAA,4BAAAV,GAAAA,CAAC,KAAA,EAAA,EAAM,GAAA,EAAK,UAAA,EAAY,GAAA,EAAI,SAAA,EAAU,IAAA,EAAK,OAAA,EAAQ,CAAA,EAAE,MAAA,EAAO,SAAA,EAAU,SAAA,EAAU,SAAS,GAAA,EAAK,CAAA;AAAA,4BAC9FA,IAAC,MAAA,EAAA,EAAO,QAAA,EAAS,YAAW,KAAA,EAAO,CAAA,EAAG,EAAA,EAAG,gBAAA,EAAiB,YAAA,EAAa,IAAA,EACrE,0BAAAA,GAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAM,SAAA,EAAU,QAAA,EAAS,KAAA,EAC7B,0BAAAA,GAAAA,CAACa,GAAAA,EAAA,EAAI,CAAA,EACP,CAAA,EACF;AAAA,WAAA,EACF,CAAA;AAAA,0BAEFb,GAAAA,CAACW,IAAAA,EAAA,EAAK,QAAA,EAAS,MAAK,KAAA,EAAM,SAAA,EAAU,SAAA,EAAU,QAAA,EAC3C,QAAA,EAAA,YAAA,EACH,CAAA;AAAA,0BACAR,IAAAA,CAACS,MAAAA,EAAA,EAAO,OAAA,EAAQ,QAAA,EAAS,KAAK,CAAA,EAC5B,QAAA,EAAA;AAAA,4BAAAZ,GAAAA,CAAC,UAAO,IAAA,EAAK,IAAA,EAAK,SAAQ,OAAA,EAAQ,OAAA,EAAS,aAAa,QAAA,EAAA,QAAA,EAExD,CAAA;AAAA,4BACAA,IAAC,MAAA,EAAA,EAAO,IAAA,EAAK,MAAK,YAAA,EAAa,OAAA,EAAQ,OAAA,EAAS,WAAA,EAAa,QAAA,EAAA,WAAA,EAE7D;AAAA,WAAA,EACF;AAAA,SAAA,EACF;AAAA,OAAA,EAEJ;AAAA,KAAA,EACF,GACF,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AClSO,SAAS,WAAA,CAAY,EAAE,MAAA,EAAQ,QAAA,EAAS,EAAmC;AAChF,EAAA,MAAM,CAAC,GAAA,EAAK,MAAM,CAAA,GAAIE,SAAS,EAAE,CAAA;AACjC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,SAAS,KAAK,CAAA;AAE1C,EAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA;AAEvC,EAAA,MAAM,UAAA,GAAaY,YAAY,MAAM;AACnC,IAAA,IAAI,QAAA,EAAU;AAEZ,MAAA,MAAA,CAAO,OAAM,CAAE,KAAA,EAAM,CAAE,SAAA,GAAY,GAAA,EAAI;AAAA,IACzC,CAAA,MAAO;AAEL,MAAA,MAAM,UAAA,GAAa,MAAA,CAAO,aAAA,CAAc,MAAM,EAAE,IAAA,IAAQ,EAAA;AACxD,MAAA,MAAA,CAAO,UAAU,CAAA;AACjB,MAAA,SAAA,CAAU,IAAI,CAAA;AAAA,IAChB;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,QAAQ,CAAC,CAAA;AAErB,EAAA,MAAM,WAAA,GAAcA,YAAY,MAAM;AACpC,IAAA,SAAA,CAAU,KAAK,CAAA;AACf,IAAA,MAAA,CAAO,EAAE,CAAA;AAAA,EACX,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,YAAA,GAAeA,YAAY,MAAM;AACrC,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,MAAA,CAAO,KAAA,EAAM,CAAE,KAAA,EAAM,CAAE,eAAA,CAAgB,MAAM,CAAA,CAAE,OAAA,CAAQ,EAAE,IAAA,EAAM,GAAA,EAAK,EAAE,GAAA,EAAI;AAAA,IAC5E;AACA,IAAA,WAAA,EAAY;AAAA,EACd,CAAA,EAAG,CAAC,MAAA,EAAQ,GAAA,EAAK,WAAW,CAAC,CAAA;AAE7B,EAAA,MAAM,YAAA,GAAeA,YAAY,MAAM;AACrC,IAAA,MAAA,CAAO,OAAM,CAAE,KAAA,EAAM,CAAE,SAAA,GAAY,GAAA,EAAI;AACvC,IAAA,WAAA,EAAY;AAAA,EACd,CAAA,EAAG,CAAC,MAAA,EAAQ,WAAW,CAAC,CAAA;AAExB,EAAA,MAAM,aAAA,GAAgBA,WAAAA;AAAA,IACpB,CAAC,CAAA,KAA2B;AAC1B,MAAA,IAAI,CAAA,CAAE,QAAQ,OAAA,EAAS;AACrB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,YAAA,EAAa;AAAA,MACf,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,QAAA,EAAU;AAC7B,QAAA,WAAA,EAAY;AAAA,MACd;AAAA,IACF,CAAA;AAAA,IACA,CAAC,cAAc,WAAW;AAAA,GAC5B;AAEA,EAAA,uBACEX,IAAAA,CAACY,OAAAA,CAAQ,IAAA,EAAR,EAAa,IAAA,EAAM,MAAA,EAAQ,YAAA,EAAc,CAAC,OAAA,KAAY,SAAA,CAAU,OAAA,CAAQ,IAAI,CAAA,EAC3E,QAAA,EAAA;AAAA,oBAAAf,IAACe,OAAAA,CAAQ,OAAA,EAAR,EAAgB,OAAA,EAAO,MACtB,QAAA,kBAAAf,GAAAA;AAAA,MAACC,UAAAA;AAAA,MAAA;AAAA,QACC,YAAA,EAAY,WAAW,6CAAA,GAAkB,0CAAA;AAAA,QACzC,IAAA,EAAK,IAAA;AAAA,QACL,OAAA,EAAS,WAAW,OAAA,GAAU,OAAA;AAAA,QAC9B,YAAA,EAAc,WAAW,OAAA,GAAU,MAAA;AAAA,QACnC,OAAA,EAAS,UAAA;AAAA,QACT,QAAA;AAAA,QAEC,QAAA,EAAA,QAAA,mBAAWD,GAAAA,CAAC,QAAA,EAAA,EAAS,oBAAKA,GAAAA,CAACgB,QAAA,EAAO;AAAA;AAAA,KACrC,EACF,CAAA;AAAA,oBAEAhB,GAAAA,CAACiB,MAAAA,EAAA,EACC,0BAAAjB,GAAAA,CAACe,OAAAA,CAAQ,UAAA,EAAR,EACC,0BAAAZ,IAAAA,CAACY,OAAAA,CAAQ,OAAA,EAAR,EAAgB,OAAM,OAAA,EACrB,QAAA,EAAA;AAAA,sBAAAf,GAAAA,CAACe,QAAQ,KAAA,EAAR,EACC,0BAAAf,GAAAA,CAACe,OAAAA,CAAQ,QAAA,EAAR,EAAiB,CAAA,EACpB,CAAA;AAAA,sBACAf,GAAAA,CAACe,OAAAA,CAAQ,IAAA,EAAR,EAAa,CAAA,EAAG,CAAA,EACf,QAAA,kBAAAZ,IAAAA,CAACM,MAAAA,EAAA,EAAO,GAAA,EAAK,CAAA,EAAG,OAAM,SAAA,EACpB,QAAA,EAAA;AAAA,wBAAAT,GAAAA,CAACU,GAAAA,EAAA,EACC,QAAA,kBAAAV,GAAAA;AAAA,UAACK,KAAAA;AAAA,UAAA;AAAA,YACC,WAAA,EAAY,qBAAA;AAAA,YACZ,KAAA,EAAO,GAAA;AAAA,YACP,UAAU,CAAC,CAAA,KAAM,MAAA,CAAO,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,YACtC,SAAA,EAAW,aAAA;AAAA,YACX,IAAA,EAAK,IAAA;AAAA,YACL,SAAA,EAAS;AAAA;AAAA,SACX,EACF,CAAA;AAAA,wBACAF,IAAAA,CAACS,MAAAA,EAAA,EAAO,GAAA,EAAK,CAAA,EAAG,SAAQ,UAAA,EACrB,QAAA,EAAA;AAAA,UAAA,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA,oBACrBZ,IAACkB,MAAAA,EAAA,EAAO,IAAA,EAAK,IAAA,EAAK,SAAQ,OAAA,EAAQ,YAAA,EAAa,KAAA,EAAM,OAAA,EAAS,cAAc,QAAA,EAAA,QAAA,EAE5E,CAAA;AAAA,0BAEFlB,GAAAA,CAACkB,MAAAA,EAAA,EAAO,IAAA,EAAK,MAAK,OAAA,EAAQ,OAAA,EAAQ,OAAA,EAAS,WAAA,EAAa,QAAA,EAAA,QAAA,EAExD,CAAA;AAAA,0BACAlB,GAAAA,CAACkB,MAAAA,EAAA,EAAO,MAAK,IAAA,EAAK,YAAA,EAAa,OAAA,EAAQ,OAAA,EAAS,cAAc,QAAA,EAAU,CAAC,GAAA,CAAI,IAAA,IAAQ,QAAA,EAAA,OAAA,EAErF;AAAA,SAAA,EACF;AAAA,OAAA,EACF,CAAA,EACF;AAAA,KAAA,EACF,GACF,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;ACnGA,SAAS,cAAc,KAAA,EAAwB;AAC7C,EAAA,IAAI;AACF,IAAA,OAAO,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,EACzB,CAAA,CAAA,MAAQ;AACN,IAAA,OAAA,CAAQ,KAAK,sDAAsD,CAAA;AACnE,IAAA,OAAO,EAAA;AAAA,EACT;AACF;AAgEO,SAAS,aAAA,CAAc;AAAA,EAC5B,IAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA,GAAY,OAAA;AAAA,EACZ,SAAA;AAAA,EACA,WAAA,GAAc,IAAA;AAAA,EACd,cAAA,GAAiB,uBAAA;AAAA,EACjB,YAAA,GAAe,MAAA;AAAA,EACf;AACF,CAAA,EAAqC;AACnC,EAAA,MAAM;AAAA,IACJ,IAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA,EAAO,aAAA;AAAA,IACP,WAAA,EAAa,mBAAA;AAAA,IACb,UAAA,EAAY,kBAAA;AAAA,IACZ,OAAA,EAAS,eAAA;AAAA,IACT,QAAA,EAAU,gBAAA;AAAA,IACV,QAAA,EAAU,gBAAA;AAAA,IACV,QAAA,EAAU;AAAA,GACZ,GAAI,qBAAA,CAAsB,IAAA,EAAM,EAAE,KAAA,EAAO,WAAA,EAAa,UAAA,EAAY,QAAA,EAAU,QAAA,EAAU,QAAA,EAAU,OAAA,EAAS,CAAA;AAEzG,EAAA,uBACElB,IAAC,IAAA,CAAK,KAAA,EAAL,EAAW,IAAA,EAAM,QAAA,EACf,WAAC,KAAA,KAAuB;AACvB,IAAA,MAAM,EAAE,QAAA,EAAU,YAAA,EAAa,GAAI,eAAe,KAAK,CAAA;AAEvD,IAAA,uBACEG,IAAAA;AAAA,MAACC,KAAAA,CAAM,IAAA;AAAA,MAAN;AAAA,QACC,OAAA,EAAS,QAAA;AAAA,QACT,QAAA,EAAU,gBAAA;AAAA,QACV,QAAA,EAAU,gBAAA;AAAA,QACV,QAAA,EAAU,gBAAA;AAAA,QAEV,QAAA,EAAA;AAAA,0BAAAJ,IAAC,UAAA,EAAA,EAAW,KAAA,EAAO,eAAe,OAAA,EAAS,eAAA,EAAiB,UAAU,gBAAA,EAAkB,CAAA;AAAA,0BACxFA,GAAAA;AAAA,YAAC,cAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,MAAM,KAAA,CAAM,KAAA;AAAA,cACnB,QAAA,EAAU,CAAC,KAAA,KAAU,KAAA,CAAM,aAAa,KAAK,CAAA;AAAA,cAC7C,QAAQ,KAAA,CAAM,UAAA;AAAA,cACd,WAAA,EAAa,mBAAA;AAAA,cACb,SAAA;AAAA,cACA,SAAA;AAAA,cACA,WAAA;AAAA,cACA,cAAA;AAAA,cACA,YAAA;AAAA,cACA,QAAA;AAAA,cACA,QAAA;AAAA,cACA,QAAA;AAAA,cACA,SAAA,EAAW,QAAA;AAAA,cACX;AAAA;AAAA,WACF;AAAA,0BACAA,GAAAA,CAAC,UAAA,EAAA,EAAW,QAAA,EAAoB,YAAA,EAA4B,YAAY,kBAAA,EAAoB;AAAA;AAAA;AAAA,KAC9F;AAAA,EAEJ,CAAA,EACF,CAAA;AAEJ;AAyBA,SAAS,cAAA,CAAe;AAAA,EACtB,KAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAAwB;AAEtB,EAAA,MAAM,UAAA,GAAa,QAAQ,MAAM;AAE/B,IAAA,MAAM,cAAA,GAAiB;AAAA,MACrB,UAAA;AAAA,MACA,SAAA;AAAA,MACA,KAAK,SAAA,CAAU;AAAA,QACb,WAAA,EAAa,KAAA;AAAA,QACb,cAAA,EAAgB;AAAA,UACd,GAAA,EAAK,qBAAA;AAAA,UACL,MAAA,EAAQ;AAAA;AACV,OACD,CAAA;AAAA,MACD,YAAY,SAAA,CAAU;AAAA,QACpB,aAAa,WAAA,IAAe;AAAA,OAC7B,CAAA;AAAA;AAAA,MAED,GAAI,WAAA,GACA;AAAA,QACE,YAAY,SAAA,CAAU;AAAA,UACpB,MAAA,EAAQ,KAAA;AAAA,UACR,WAAA,EAAa,KAAA;AAAA,UACb,cAAA,EAAgB;AAAA,YACd,KAAA,EAAO;AAAA;AACT,SACD;AAAA,UAEH;AAAC,KACP;AAEA,IAAA,OAAO,cAAA;AAAA,EACT,CAAA,EAAG,CAAC,WAAA,EAAa,WAAW,CAAC,CAAA;AAE7B,EAAA,MAAM,SAAS,SAAA,CAAU;AAAA;AAAA;AAAA,IAGvB,UAAA;AAAA,IACA,SAAS,YAAA,KAAiB,MAAA,IAAU,QAAQ,aAAA,CAAc,KAAK,IAAI,KAAA,IAAS,EAAA;AAAA,IAC5E,QAAA,EAAU,CAAC,QAAA,IAAY,CAAC,QAAA;AAAA,IACxB,QAAA,EAAU,CAAC,EAAE,MAAA,EAAAmB,SAAO,KAAM;AACxB,MAAA,IAAI,iBAAiB,MAAA,EAAQ;AAC3B,QAAA,QAAA,CAAS,IAAA,CAAK,SAAA,CAAUA,OAAAA,CAAO,OAAA,EAAS,CAAC,CAAA;AAAA,MAC3C,CAAA,MAAO;AACL,QAAA,QAAA,CAASA,OAAAA,CAAO,SAAS,CAAA;AAAA,MAC3B;AAAA,IACF,CAAA;AAAA,IACA,QAAQ,MAAM;AACZ,MAAA,MAAA,EAAO;AAAA,IACT,CAAA;AAAA,IACA,iBAAA,EAAmB;AAAA,GACpB,CAAA;AAGD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,cAAA,GAAiB,YAAA,KAAiB,MAAA,GAAS,IAAA,CAAK,SAAA,CAAU,OAAO,OAAA,EAAS,CAAA,GAAI,MAAA,CAAO,OAAA,EAAQ;AAGnG,IAAA,IAAI,UAAU,cAAA,EAAgB;AAC5B,MAAA,MAAM,UAAU,YAAA,KAAiB,MAAA,IAAU,QAAQ,aAAA,CAAc,KAAK,IAAI,KAAA,IAAS,EAAA;AACnF,MAAA,MAAA,CAAO,SAAS,UAAA,CAAW,OAAA,EAAS,EAAE,UAAA,EAAY,OAAO,CAAA;AAAA,IAC3D;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,KAAA,EAAO,YAAY,CAAC,CAAA;AAGhC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,MAAA,CAAO,WAAA,CAAY,CAAC,QAAA,IAAY,CAAC,QAAQ,CAAA;AAAA,IAC3C;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,QAAA,EAAU,QAAQ,CAAC,CAAA;AAE/B,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACEhB,IAAAA;AAAA,IAACO,GAAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAY,KAAA;AAAA,MACZ,YAAA,EAAa,IAAA;AAAA,MACb,WAAA,EAAa,WAAW,cAAA,GAAiB,QAAA;AAAA,MACzC,QAAA,EAAS,QAAA;AAAA,MACT,iBAAA,EAAiB,SAAA;AAAA,MACjB,YAAA,EAAc;AAAA,QACZ,WAAA,EAAa,WAAW,cAAA,GAAiB,kBAAA;AAAA,QACzC,SAAA,EAAW,WACP,6CAAA,GACA;AAAA,OACN;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,WAAA,IAAe,CAAC,4BACfV,GAAAA,CAACY,QAAA,EAAO,CAAA,EAAG,GAAG,GAAA,EAAK,GAAA,EAAK,mBAAkB,KAAA,EAAM,WAAA,EAAY,UAAS,EAAA,EAAG,WAAA,EAAY,UAAS,MAAA,EAC1F,QAAA,EAAA,cAAA,CAAe,GAAA,CAAI,CAAC,MAAA,KAAW;AAE9B,UAAA,IAAI,WAAW,MAAA,EAAQ;AACrB,YAAA,uBAAOZ,GAAAA,CAAC,WAAA,EAAA,EAAyB,MAAA,EAAgB,YAAxB,MAA4C,CAAA;AAAA,UACvE;AAGA,UAAA,IAAI,WAAW,OAAA,EAAS;AAEtB,YAAA,IAAI,CAAC,WAAA,EAAa;AAChB,cAAA,OAAO,IAAA;AAAA,YACT;AACA,YAAA,uBAAOA,GAAAA,CAAC,YAAA,EAAA,EAA0B,QAAgB,MAAA,EAAQ,WAAA,EAAa,YAA7C,MAAiE,CAAA;AAAA,UAC7F;AAEA,UAAA,MAAM,MAAA,GAAS,eAAe,MAAM,CAAA;AACpC,UAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,GAAW,MAAM,CAAA,IAAK,KAAA;AAE9C,UAAA,uBACEA,GAAAA;AAAA,YAACC,UAAAA;AAAA,YAAA;AAAA,cAEC,cAAY,MAAA,CAAO,KAAA;AAAA,cACnB,IAAA,EAAK,IAAA;AAAA,cACL,OAAA,EAAS,WAAW,OAAA,GAAU,OAAA;AAAA,cAC9B,YAAA,EAAc,WAAW,OAAA,GAAU,MAAA;AAAA,cACnC,OAAA,EAAS,MAAM,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA;AAAA,cACnC,QAAA;AAAA,cAEC,QAAA,EAAA,MAAA,CAAO;AAAA,aAAA;AAAA,YARH;AAAA,WASP;AAAA,QAEJ,CAAC,CAAA,EACH,CAAA;AAAA,wBAEFD,GAAAA;AAAA,UAACU,GAAAA;AAAA,UAAA;AAAA,YACC,SAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA,EAAW,YAAY,MAAA,GAAS,MAAA;AAAA,YAChC,CAAA,EAAG,CAAA;AAAA,YACH,GAAA,EAAK;AAAA,cACH,WAAA,EAAa;AAAA,gBACX,OAAA,EAAS,MAAA;AAAA,gBACT,WAAW,OAAO,SAAA,KAAc,QAAA,GAAW,CAAA,EAAG,SAAS,CAAA,EAAA,CAAA,GAAO;AAAA,eAChE;AAAA,cACA,iDAAA,EAAmD;AAAA,gBACjD,KAAA,EAAO,+BAAA;AAAA,gBACP,OAAA,EAAS,wBAAA;AAAA,gBACT,KAAA,EAAO,MAAA;AAAA,gBACP,MAAA,EAAQ,CAAA;AAAA,gBACR,aAAA,EAAe;AAAA,eACjB;AAAA,cACA,cAAA,EAAgB;AAAA,gBACd,QAAA,EAAU,KAAA;AAAA,gBACV,UAAA,EAAY,MAAA;AAAA,gBACZ,SAAA,EAAW,KAAA;AAAA,gBACX,YAAA,EAAc;AAAA,eAChB;AAAA,cACA,cAAA,EAAgB;AAAA,gBACd,QAAA,EAAU,IAAA;AAAA,gBACV,UAAA,EAAY,MAAA;AAAA,gBACZ,SAAA,EAAW,KAAA;AAAA,gBACX,YAAA,EAAc;AAAA,eAChB;AAAA,cACA,cAAA,EAAgB;AAAA,gBACd,QAAA,EAAU,IAAA;AAAA,gBACV,UAAA,EAAY,UAAA;AAAA,gBACZ,SAAA,EAAW,KAAA;AAAA,gBACX,YAAA,EAAc;AAAA,eAChB;AAAA,cACA,4BAAA,EAA8B;AAAA,gBAC5B,WAAA,EAAa,OAAA;AAAA,gBACb,SAAA,EAAW,OAAA;AAAA,gBACX,YAAA,EAAc;AAAA,eAChB;AAAA,cACA,sBAAA,EAAwB;AAAA,gBACtB,UAAA,EAAY,uCAAA;AAAA,gBACZ,WAAA,EAAa,KAAA;AAAA,gBACb,UAAA,EAAY,CAAA;AAAA,gBACZ,SAAA,EAAW,OAAA;AAAA,gBACX,YAAA,EAAc,OAAA;AAAA,gBACd,SAAA,EAAW,QAAA;AAAA,gBACX,KAAA,EAAO;AAAA,eACT;AAAA,cACA,gBAAA,EAAkB;AAAA,gBAChB,eAAA,EAAiB,gCAAA;AAAA,gBACjB,YAAA,EAAc,KAAA;AAAA,gBACd,OAAA,EAAS,aAAA;AAAA,gBACT,UAAA,EAAY,MAAA;AAAA,gBACZ,QAAA,EAAU;AAAA,eACZ;AAAA,cACA,aAAA,EAAe;AAAA,gBACb,KAAA,EAAO,uCAAA;AAAA,gBACP,cAAA,EAAgB,WAAA;AAAA,gBAChB,MAAA,EAAQ;AAAA,eACV;AAAA,cACA,aAAA,EAAe;AAAA,gBACb,SAAA,EAAW,QAAA;AAAA,gBACX,YAAA,EAAc;AAAA,eAChB;AAAA,cACA,0CAAA,EAA4C;AAAA,gBAC1C,QAAA,EAAU,MAAA;AAAA,gBACV,MAAA,EAAQ,MAAA;AAAA,gBACR,YAAA,EAAc,KAAA;AAAA,gBACd,SAAA,EAAW,OAAA;AAAA,gBACX,YAAA,EAAc;AAAA;AAChB,aACF;AAAA,YAEA,QAAA,kBAAAV,GAAAA,CAAC,aAAA,EAAA,EAAc,MAAA,EAAgB;AAAA;AAAA;AACjC;AAAA;AAAA,GACF;AAEJ;ACvWA,SAAS,qBAAqB,IAAA,EAA6C;AACzE,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,OAAA;AACH,MAAA,OAAO,OAAA;AAAA,IACT,KAAK,KAAA;AACH,MAAA,OAAO,KAAA;AAAA,IACT,KAAK,KAAA;AACH,MAAA,OAAO,KAAA;AAAA,IACT;AACE,MAAA,OAAO,MAAA;AAAA;AAEb;AAEO,IAAM,cAAc,WAAA,CAAsC;AAAA,EAC/D,WAAA,EAAa,aAAA;AAAA,EACb,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAO,UAAU,QAAA,EAAU,QAAA,EAAU,YAAA,EAAc,cAAA,EAAe,KAAoB;AAC/F,IAAA,MAAM,EAAE,aAAY,GAAI,QAAA;AAGxB,IAAA,MAAM,IAAA,GAAO,cAAA,CAAe,IAAA,IAAQ,WAAA,CAAY,QAAQ,SAAA,IAAa,MAAA;AACrE,IAAA,MAAM,SAAA,GAAY,cAAA,CAAe,SAAA,IAAa,WAAA,CAAY,MAAA,EAAQ,SAAA;AAClE,IAAA,MAAM,SAAA,GAAY,cAAA,CAAe,SAAA,IAAa,WAAA,CAAY,MAAA,EAAQ,SAAA;AAClE,IAAA,MAAM,OAAA,GAAU,cAAA,CAAe,OAAA,IAAW,WAAA,CAAY,MAAA,EAAQ,OAAA;AAE9D,IAAA,MAAM,SAAA,GAAY,cAAA,CAAe,SAAA,IAAa,oBAAA,CAAqB,IAAI,CAAA;AAEvE,IAAA,uBACEA,GAAAA,CAAC,YAAA,EAAA,EAAa,UAAoB,QAAA,EAAoB,YAAA,EAA4B,UAChF,QAAA,kBAAAA,GAAAA;AAAA,MAACK,KAAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,SAAA;AAAA,QACA,KAAA,EAAQ,KAAA,CAAM,KAAA,CAAM,KAAA,IAAoB,EAAA;AAAA,QACxC,UAAU,CAAC,CAAA,KAAM,MAAM,YAAA,CAAc,CAAA,CAAE,OAA4B,KAAK,CAAA;AAAA,QACxE,QAAQ,KAAA,CAAM,UAAA;AAAA,QACd,aAAa,QAAA,CAAS,WAAA;AAAA,QACtB,SAAA;AAAA,QACA,SAAA;AAAA,QACA,OAAA;AAAA,QACA,cAAc,cAAA,CAAe,YAAA;AAAA,QAC7B,iBAAA,EAAiB;AAAA;AAAA,KACnB,EACF,CAAA;AAAA,EAEJ;AACF,CAAC;ACzDM,IAAM,gBAAgB,WAAA,CAAwC;AAAA,EACnE,WAAA,EAAa,eAAA;AAAA,EACb,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAO,UAAU,QAAA,EAAU,QAAA,EAAU,YAAA,EAAc,cAAA,EAAe,KAAoB;AAC/F,IAAA,MAAM,EAAE,aAAY,GAAI,QAAA;AAGxB,IAAA,MAAM,SAAA,GAAY,cAAA,CAAe,SAAA,IAAa,WAAA,CAAY,MAAA,EAAQ,SAAA;AAElE,IAAA,uBACEL,GAAAA,CAAC,YAAA,EAAA,EAAa,UAAoB,QAAA,EAAoB,YAAA,EAA4B,UAChF,QAAA,kBAAAA,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAQ,KAAA,CAAM,KAAA,CAAM,KAAA,IAAoB,EAAA;AAAA,QACxC,UAAU,CAAC,CAAA,KAAM,MAAM,YAAA,CAAc,CAAA,CAAE,OAA+B,KAAK,CAAA;AAAA,QAC3E,QAAQ,KAAA,CAAM,UAAA;AAAA,QACd,aAAa,QAAA,CAAS,WAAA;AAAA,QACtB,MAAM,cAAA,CAAe,IAAA;AAAA,QACrB,YAAY,cAAA,CAAe,UAAA;AAAA,QAC3B,MAAA,EAAQ,eAAe,MAAA,IAAU,UAAA;AAAA,QACjC,SAAA;AAAA,QACA,iBAAA,EAAiB;AAAA;AAAA,KACnB,EACF,CAAA;AAAA,EAEJ;AACF,CAAC;ACbM,IAAM,mBAAmB,WAAA,CAAkE;AAAA,EAChG,WAAA,EAAa,kBAAA;AAAA,EAEb,aAAA,EAAe,CAAC,KAAA,KAAU;AACxB,IAAA,MAAM;AAAA,MACJ,IAAA;AAAA,MACA,eAAA,GAAkB,GAAA;AAAA,MAClB,eAAA,GAAkB,IAAA;AAAA,MAClB,eAAA,GAAkB,KAAA;AAAA,MAClB,eAAA,GAAkB,KAAA;AAAA,MAClB,UAAA,GAAa;AAAA,KACf,GAAI,KAAA;AAGJ,IAAA,MAAM,OAAA,GAAUc,WAAAA;AAAA,MACd,CAAC,OAAA,KAAqC;AACpC,QAAA,IAAI,WAAW,IAAA,EAAM;AACnB,UAAA,MAAM,YAAA,GAAe,SAAS,IAAA,EAAM;AAAA,YAClC,WAAA,EAAa,eAAA;AAAA,YACb,eAAA;AAAA,YACA,eAAA;AAAA,YACA,eAAA;AAAA,YACA;AAAA,WACD,CAAA;AACD,UAAA,YAAA,CAAa,OAAO,CAAA;AAAA,QACtB;AAAA,MACF,CAAA;AAAA,MACA,CAAC,IAAA,EAAM,eAAA,EAAiB,eAAA,EAAiB,eAAA,EAAiB,iBAAiB,UAAU;AAAA,KACvF;AAEA,IAAA,OAAO,EAAE,OAAA,EAAQ;AAAA,EACnB,CAAA;AAAA,EAEA,QAAQ,CAAC,EAAE,KAAA,EAAO,QAAA,EAAU,UAAU,QAAA,EAAU,YAAA,EAAc,UAAA,EAAW,qBACvEd,GAAAA,CAAC,YAAA,EAAA,EAAa,UAAoB,QAAA,EAAoB,YAAA,EAA4B,UAChF,QAAA,kBAAAA,GAAAA;AAAA,IAACK,KAAAA;AAAA,IAAA;AAAA,MACC,KAAK,UAAA,CAAW,OAAA;AAAA,MAChB,KAAA,EAAQ,KAAA,CAAM,KAAA,CAAM,KAAA,IAAoB,EAAA;AAAA,MACxC,UAAU,CAAC,CAAA,KAAM,MAAM,YAAA,CAAa,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,MAClD,QAAQ,KAAA,CAAM,UAAA;AAAA,MACd,aAAa,QAAA,CAAS,WAAA;AAAA,MACtB,iBAAA,EAAiB;AAAA;AAAA,GACnB,EACF;AAEJ,CAAC","file":"chunk-M2PNAAIR.js","sourcesContent":["'use client'\n\nimport { Editable, Field, IconButton } from '@chakra-ui/react'\nimport type { ReactElement, ReactNode } from 'react'\nimport type { BaseFieldProps } from '../../types'\nimport { createField, FieldError, FieldLabel } from '../base'\n\n/**\n * Props for Editable field\n */\nexport interface EditableFieldProps extends Omit<BaseFieldProps, 'placeholder'> {\n /** Placeholder when empty */\n placeholder?: string\n /** Use textarea for multiline editing (by default: false) */\n multiline?: boolean\n /** Activation mode (by default: click) */\n activationMode?: 'click' | 'dblclick' | 'focus' | 'none'\n /** Show control buttons (edit, cancel, save) (by default: false) */\n showControls?: boolean\n /** Automatically resize textarea (only for multiline=true) (by default: true) */\n autoResize?: boolean\n /** Custom edit icon */\n editIcon?: ReactNode\n /** Custom cancel icon */\n cancelIcon?: ReactNode\n /** Custom submit icon */\n submitIcon?: ReactNode\n /** Save on blur (by default: true) */\n submitOnBlur?: boolean\n}\n\n/**\n * Form.Field.Editable - Inline editable text\n *\n * Renders text that can be clicked for inline editing.\n * Supports single-line input and multiline textarea.\n *\n * @example Basic usage\n * ```tsx\n * <Form.Field.Editable\n * name=\"title\"\n * label=\"Title\"\n * placeholder=\"Click to add title\"\n * />\n * ```\n *\n * @example Multiline\n * ```tsx\n * <Form.Field.Editable\n * name=\"description\"\n * multiline\n * placeholder=\"Click to add description...\"\n * />\n * ```\n *\n * @example With control buttons\n * ```tsx\n * <Form.Field.Editable\n * name=\"name\"\n * showControls\n * activationMode=\"dblclick\"\n * />\n * ```\n */\nexport const FieldEditable = createField<EditableFieldProps, string>({\n displayName: 'FieldEditable',\n\n render: ({ field, resolved, hasError, errorMessage, componentProps }): ReactElement => {\n const {\n multiline = false,\n activationMode = 'click',\n showControls = false,\n editIcon,\n cancelIcon,\n submitIcon,\n submitOnBlur = true,\n } = componentProps\n\n const currentValue = (field.state.value as string) || ''\n\n return (\n <Field.Root\n invalid={hasError}\n required={resolved.required}\n disabled={resolved.disabled}\n readOnly={resolved.readOnly}\n >\n <FieldLabel label={resolved.label} tooltip={resolved.tooltip} required={resolved.required} />\n\n <Editable.Root\n value={currentValue}\n onValueChange={(details) => field.handleChange(details.value)}\n disabled={resolved.disabled}\n readOnly={resolved.readOnly}\n placeholder={resolved.placeholder ?? 'Click to edit'}\n activationMode={activationMode}\n submitMode={submitOnBlur ? 'blur' : 'enter'}\n >\n <Editable.Preview\n minH={multiline ? '48px' : undefined}\n alignItems={multiline ? 'flex-start' : undefined}\n width=\"full\"\n />\n\n {multiline ? <Editable.Textarea /> : <Editable.Input />}\n\n {showControls && (\n <Editable.Control>\n <Editable.EditTrigger asChild>\n <IconButton variant=\"ghost\" size=\"xs\">\n {editIcon ?? '✏️'}\n </IconButton>\n </Editable.EditTrigger>\n <Editable.CancelTrigger asChild>\n <IconButton variant=\"outline\" size=\"xs\">\n {cancelIcon ?? '✕'}\n </IconButton>\n </Editable.CancelTrigger>\n <Editable.SubmitTrigger asChild>\n <IconButton variant=\"outline\" size=\"xs\">\n {submitIcon ?? '✓'}\n </IconButton>\n </Editable.SubmitTrigger>\n </Editable.Control>\n )}\n </Editable.Root>\n\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolved.helperText} />\n </Field.Root>\n )\n },\n})\n","'use client'\n\nimport { IconButton, Input, InputGroup } from '@chakra-ui/react'\nimport { type ReactElement, useState } from 'react'\nimport { LuEye, LuEyeOff } from 'react-icons/lu'\nimport type { PasswordFieldProps } from '../../types'\nimport { createField, FieldWrapper } from '../base'\n\n/**\n * State for toggling password visibility\n */\ninterface PasswordFieldState {\n /** Whether password is visible */\n visible: boolean\n /** Toggle visibility */\n toggle: () => void\n}\n\n/**\n * Form.Field.Password - Password input field with visibility toggle\n *\n * Renders a password input field with a show/hide button.\n *\n * @example Basic usage\n * ```tsx\n * <Form.Field.Password name=\"password\" label=\"Password\" />\n * ```\n *\n * @example With visible password by default\n * ```tsx\n * <Form.Field.Password name=\"password\" label=\"Password\" defaultVisible />\n * ```\n */\nexport const FieldPassword = createField<PasswordFieldProps, string, PasswordFieldState>({\n displayName: 'FieldPassword',\n\n useFieldState: (props) => {\n const [visible, setVisible] = useState(props.defaultVisible ?? false)\n return {\n visible,\n toggle: () => setVisible((v) => !v),\n }\n },\n\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps, fieldState }): ReactElement => (\n <FieldWrapper resolved={resolved} hasError={hasError} errorMessage={errorMessage} fullPath={fullPath}>\n <InputGroup\n endElement={\n <IconButton\n tabIndex={-1}\n me=\"-2\"\n aspectRatio=\"square\"\n size=\"sm\"\n variant=\"ghost\"\n height=\"calc(100% - {spacing.2})\"\n aria-label=\"Toggle password visibility\"\n disabled={resolved.disabled}\n onPointerDown={(e) => {\n if (resolved.disabled) {\n return\n }\n if (e.button !== 0) {\n return\n }\n e.preventDefault()\n fieldState.toggle()\n }}\n >\n {fieldState.visible ? <LuEyeOff /> : <LuEye />}\n </IconButton>\n }\n >\n <Input\n type={fieldState.visible ? 'text' : 'password'}\n value={(field.state.value as string) ?? ''}\n onChange={(e) => field.handleChange((e.target as HTMLInputElement).value)}\n onBlur={field.handleBlur}\n placeholder={resolved.placeholder}\n maxLength={componentProps.maxLength}\n autoComplete={componentProps.autoComplete}\n data-field-name={fullPath}\n />\n </InputGroup>\n </FieldWrapper>\n ),\n})\n","'use client'\n\nimport { Box, Field, HStack, IconButton, Input, List, Progress, Text, VStack } from '@chakra-ui/react'\nimport { type ReactElement, useState } from 'react'\nimport { LuCheck, LuEye, LuEyeOff, LuX } from 'react-icons/lu'\nimport type { PasswordRequirement, PasswordStrengthFieldProps } from '../../types'\nimport { createField, FieldError, FieldLabel } from '../base'\n\n/**\n * Default password requirements\n */\nconst DEFAULT_REQUIREMENTS: PasswordRequirement[] = ['minLength:8', 'uppercase', 'lowercase', 'number', 'special']\n\n/**\n * Requirement descriptions\n */\nconst REQUIREMENT_LABELS: Record<PasswordRequirement, string> = {\n 'minLength:8': 'Minimum 8 characters',\n uppercase: 'At least one uppercase letter',\n lowercase: 'At least one lowercase letter',\n number: 'At least one digit',\n special: 'At least one special character (!@#$%^&*)',\n}\n\n/**\n * Checks if password meets a requirement\n */\nfunction checkRequirement(password: string, requirement: PasswordRequirement): boolean {\n switch (requirement) {\n case 'minLength:8':\n return password.length >= 8\n case 'uppercase':\n return /[A-Z]/.test(password)\n case 'lowercase':\n return /[a-z]/.test(password)\n case 'number':\n return /[0-9]/.test(password)\n case 'special':\n return /[!@#$%^&*()_+\\-=[\\]{};':\"\\\\|,.<>/?]/.test(password)\n default:\n return false\n }\n}\n\n/**\n * Computes password strength (0-100)\n */\nfunction calculateStrength(password: string, requirements: PasswordRequirement[]): number {\n if (!password) {\n return 0\n }\n\n const metCount = requirements.filter((req) => checkRequirement(password, req)).length\n return Math.round((metCount / requirements.length) * 100)\n}\n\n/**\n * Gets description and color for password strength\n */\nfunction getStrengthInfo(strength: number): { label: string; colorPalette: string } {\n if (strength < 25) {\n return { label: 'Weak', colorPalette: 'red' }\n }\n if (strength < 50) {\n return { label: 'Medium', colorPalette: 'orange' }\n }\n if (strength < 75) {\n return { label: 'Good', colorPalette: 'yellow' }\n }\n return { label: 'Strong', colorPalette: 'green' }\n}\n\n/**\n * State for password field with strength indicator\n */\ninterface PasswordStrengthFieldState {\n /** Password visibility */\n visible: boolean\n /** Toggle visibility */\n toggle: () => void\n}\n\n/**\n * Form.Field.PasswordStrength - Password with strength indicator\n *\n * Renders a password field with a visual strength indicator and requirements checklist.\n *\n * @example With default requirements\n * ```tsx\n * <Form.Field.PasswordStrength name=\"password\" label=\"Password\" showRequirements />\n * ```\n *\n * @example With custom requirements\n * ```tsx\n * <Form.Field.PasswordStrength\n * name=\"password\"\n * requirements={['minLength:8', 'uppercase', 'number']}\n * showRequirements\n * />\n * ```\n */\nexport const FieldPasswordStrength = createField<PasswordStrengthFieldProps, string, PasswordStrengthFieldState>({\n displayName: 'FieldPasswordStrength',\n\n useFieldState: (props) => {\n const [visible, setVisible] = useState(props.defaultVisible ?? false)\n return { visible, toggle: () => setVisible((v) => !v) }\n },\n\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps, fieldState }): ReactElement => {\n const { requirements = DEFAULT_REQUIREMENTS, showRequirements = true } = componentProps\n const { visible, toggle } = fieldState\n\n const value = (field.state.value as string) ?? ''\n const strength = calculateStrength(value, requirements)\n const { label: strengthLabel, colorPalette } = getStrengthInfo(strength)\n\n return (\n <Field.Root\n invalid={hasError}\n required={resolved.required}\n disabled={resolved.disabled}\n readOnly={resolved.readOnly}\n >\n <FieldLabel label={resolved.label} tooltip={resolved.tooltip} required={resolved.required} />\n <VStack gap={2} align=\"stretch\" width=\"100%\">\n <HStack>\n <Input\n type={visible ? 'text' : 'password'}\n value={value}\n onChange={(e) => field.handleChange(e.target.value)}\n onBlur={field.handleBlur}\n placeholder={resolved.placeholder ?? 'Enter password'}\n data-field-name={fullPath}\n flex={1}\n />\n <IconButton\n aria-label={visible ? 'Hide password' : 'Show password'}\n onClick={toggle}\n variant=\"ghost\"\n size=\"sm\"\n >\n {visible ? <LuEyeOff /> : <LuEye />}\n </IconButton>\n </HStack>\n\n {value && (\n <Box>\n <HStack justify=\"space-between\" mb={1}>\n <Text fontSize=\"xs\" color=\"fg.muted\">\n Strength\n </Text>\n <Text fontSize=\"xs\" fontWeight=\"medium\" color={`${colorPalette}.600`}>\n {strengthLabel}\n </Text>\n </HStack>\n <Progress.Root value={strength} colorPalette={colorPalette} size=\"xs\">\n <Progress.Track>\n <Progress.Range />\n </Progress.Track>\n </Progress.Root>\n </Box>\n )}\n\n {showRequirements && value && (\n <List.Root fontSize=\"sm\" gap={1}>\n {requirements.map((req) => {\n const met = checkRequirement(value, req)\n return (\n <List.Item key={req} display=\"flex\" alignItems=\"center\" gap={2}>\n <Box color={met ? 'green.500' : 'gray.400'}>{met ? <LuCheck size={14} /> : <LuX size={14} />}</Box>\n <Text color={met ? 'fg.default' : 'fg.muted'}>{REQUIREMENT_LABELS[req]}</Text>\n </List.Item>\n )\n })}\n </List.Root>\n )}\n </VStack>\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolved.helperText} />\n </Field.Root>\n )\n },\n})\n","'use client'\n\nimport type { useEditor } from '@tiptap/react'\nimport type { ReactNode } from 'react'\nimport {\n LuBold,\n LuCode,\n LuHeading1,\n LuHeading2,\n LuHeading3,\n LuImage,\n LuItalic,\n LuLink,\n LuList,\n LuListOrdered,\n LuQuote,\n LuRedo,\n LuStrikethrough,\n LuUnderline,\n LuUndo,\n} from 'react-icons/lu'\n\n/**\n * Доступные кнопки toolbar\n */\nexport type ToolbarButton =\n | 'bold'\n | 'italic'\n | 'underline'\n | 'strike'\n | 'code'\n | 'heading1'\n | 'heading2'\n | 'heading3'\n | 'bulletList'\n | 'orderedList'\n | 'blockquote'\n | 'link'\n | 'image'\n | 'undo'\n | 'redo'\n\n/**\n * Buttons тулбара by default\n */\nexport const DEFAULT_TOOLBAR_BUTTONS: ToolbarButton[] = [\n 'bold',\n 'italic',\n 'underline',\n 'strike',\n 'code',\n 'heading1',\n 'heading2',\n 'heading3',\n 'bulletList',\n 'orderedList',\n 'blockquote',\n 'link',\n 'undo',\n 'redo',\n]\n\n/**\n * Конфигурация кнопки toolbar\n */\nexport interface ToolbarButtonConfig {\n icon: ReactNode\n label: string\n action: (editor: ReturnType<typeof useEditor>) => void\n isActive?: (editor: ReturnType<typeof useEditor>) => boolean\n}\n\n/**\n * Конфигурация всех кнопок тулбара\n */\nexport const TOOLBAR_CONFIG: Record<ToolbarButton, ToolbarButtonConfig> = {\n bold: {\n icon: <LuBold />,\n label: 'Bold',\n action: (editor) => editor?.chain().focus().toggleBold().run(),\n isActive: (editor) => editor?.isActive('bold') ?? false,\n },\n italic: {\n icon: <LuItalic />,\n label: 'Italic',\n action: (editor) => editor?.chain().focus().toggleItalic().run(),\n isActive: (editor) => editor?.isActive('italic') ?? false,\n },\n underline: {\n icon: <LuUnderline />,\n label: 'Подчёркнутый',\n action: (editor) => editor?.chain().focus().toggleUnderline().run(),\n isActive: (editor) => editor?.isActive('underline') ?? false,\n },\n strike: {\n icon: <LuStrikethrough />,\n label: 'Strikethrough',\n action: (editor) => editor?.chain().focus().toggleStrike().run(),\n isActive: (editor) => editor?.isActive('strike') ?? false,\n },\n code: {\n icon: <LuCode />,\n label: 'Код',\n action: (editor) => editor?.chain().focus().toggleCode().run(),\n isActive: (editor) => editor?.isActive('code') ?? false,\n },\n heading1: {\n icon: <LuHeading1 />,\n label: 'Заголовок 1',\n action: (editor) => editor?.chain().focus().toggleHeading({ level: 1 }).run(),\n isActive: (editor) => editor?.isActive('heading', { level: 1 }) ?? false,\n },\n heading2: {\n icon: <LuHeading2 />,\n label: 'Заголовок 2',\n action: (editor) => editor?.chain().focus().toggleHeading({ level: 2 }).run(),\n isActive: (editor) => editor?.isActive('heading', { level: 2 }) ?? false,\n },\n heading3: {\n icon: <LuHeading3 />,\n label: 'Заголовок 3',\n action: (editor) => editor?.chain().focus().toggleHeading({ level: 3 }).run(),\n isActive: (editor) => editor?.isActive('heading', { level: 3 }) ?? false,\n },\n bulletList: {\n icon: <LuList />,\n label: 'Bullet list',\n action: (editor) => editor?.chain().focus().toggleBulletList().run(),\n isActive: (editor) => editor?.isActive('bulletList') ?? false,\n },\n orderedList: {\n icon: <LuListOrdered />,\n label: 'Ordered list',\n action: (editor) => editor?.chain().focus().toggleOrderedList().run(),\n isActive: (editor) => editor?.isActive('orderedList') ?? false,\n },\n blockquote: {\n icon: <LuQuote />,\n label: 'Quote',\n action: (editor) => editor?.chain().focus().toggleBlockquote().run(),\n isActive: (editor) => editor?.isActive('blockquote') ?? false,\n },\n link: {\n icon: <LuLink />,\n label: 'Ссылка',\n action: (editor) => {\n if (editor?.isActive('link')) {\n editor.chain().focus().unsetLink().run()\n } else {\n const url = window.prompt('URL')\n if (url) {\n editor?.chain().focus().extendMarkRange('link').setLink({ href: url }).run()\n }\n }\n },\n isActive: (editor) => editor?.isActive('link') ?? false,\n },\n undo: {\n icon: <LuUndo />,\n label: 'Undo',\n action: (editor) => editor?.chain().focus().undo().run(),\n },\n redo: {\n icon: <LuRedo />,\n label: 'Redo',\n action: (editor) => editor?.chain().focus().redo().run(),\n },\n // Кнопка image processesся отдельно через ImagePopover (аналогично link)\n image: {\n icon: <LuImage />,\n label: 'Insert image',\n action: () => {\n // Action handled via ImagePopover\n },\n },\n}\n","'use client'\n\nimport {\n Box,\n Button,\n Center,\n HStack,\n Icon,\n IconButton,\n Image,\n Popover,\n Portal,\n Spinner,\n Text,\n VStack,\n} from '@chakra-ui/react'\nimport type { Editor } from '@tiptap/react'\nimport { type ReactElement, useCallback, useRef, useState } from 'react'\nimport { LuImage, LuUpload, LuX } from 'react-icons/lu'\n\n/**\n * Image upload configuration\n */\nexport interface ImageUploadConfig {\n /** URL endpoint for upload */\n endpoint: string\n /** Категория изображения (для upload API) */\n category?: string\n /** Maximum file size in bytes (by default: 10MB) */\n maxSize?: number\n /** Разрешённые MIME typeы (by default: ['image/*']) */\n acceptTypes?: string[]\n}\n\n/**\n * Props для ImagePopover\n */\ninterface ImagePopoverProps {\n editor: Editor\n config: ImageUploadConfig\n disabled?: boolean\n}\n\n/** Loading states */\ntype UploadState = 'idle' | 'uploading' | 'error'\n\n/**\n * Component для loading и вставки изображений в RichText редактор\n *\n * Использует Popover с drag-n-drop зоной и кнопкой выбора fileа.\n * После успешной loading вставляет изображение в редактор.\n */\nexport function ImagePopover({ editor, config, disabled }: ImagePopoverProps): ReactElement {\n const [isOpen, setIsOpen] = useState(false)\n const [uploadState, setUploadState] = useState<UploadState>('idle')\n const [errorMessage, setErrorMessage] = useState<string | null>(null)\n const [previewUrl, setPreviewUrl] = useState<string | null>(null)\n const [isDragging, setIsDragging] = useState(false)\n const fileInputRef = useRef<HTMLInputElement>(null)\n\n const maxSize = config.maxSize ?? 10 * 1024 * 1024 // 10MB by default\n const acceptTypes = config.acceptTypes ?? ['image/*']\n\n /**\n * File upload на сервер\n */\n const handleUpload = useCallback(\n async (file: File) => {\n // Проверка typeа fileа\n if (!file.type.startsWith('image/')) {\n setErrorMessage('File must be an image')\n setUploadState('error')\n return\n }\n\n // Проверка sizeа\n if (file.size > maxSize) {\n const maxSizeMB = (maxSize / 1024 / 1024).toFixed(0)\n setErrorMessage(`Size fileа не must превышать ${maxSizeMB}MB`)\n setUploadState('error')\n return\n }\n\n // Создаём preview\n const preview = URL.createObjectURL(file)\n setPreviewUrl(preview)\n setUploadState('uploading')\n setErrorMessage(null)\n\n try {\n const formData = new FormData()\n formData.append('file', file)\n if (config.category) {\n formData.append('category', config.category)\n }\n\n const response = await fetch(config.endpoint, {\n method: 'POST',\n body: formData,\n })\n\n const result = await response.json()\n\n if (!response.ok) {\n throw new Error(result.error || 'Upload error')\n }\n\n if (result.url) {\n // Insert image into editor\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ;(editor.chain().focus() as any).setImage({ src: result.url }).run()\n handleClose()\n } else {\n throw new Error('Image URL not received')\n }\n } catch (err) {\n setErrorMessage(err instanceof Error ? err.message : 'Upload error')\n setUploadState('error')\n } finally {\n // Clean up preview URL\n if (preview) {\n URL.revokeObjectURL(preview)\n }\n }\n },\n [editor, config, maxSize]\n )\n\n /**\n * Handle file selection via input\n */\n const handleFileSelect = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0]\n if (file) {\n handleUpload(file)\n }\n // Reset input for re-selecting the same file\n e.target.value = ''\n },\n [handleUpload]\n )\n\n /**\n * Handle drop event\n */\n const handleDrop = useCallback(\n (e: React.DragEvent) => {\n e.preventDefault()\n setIsDragging(false)\n\n const file = e.dataTransfer.files[0]\n if (file) {\n handleUpload(file)\n }\n },\n [handleUpload]\n )\n\n /**\n * Close popover and reset state\n */\n const handleClose = useCallback(() => {\n setIsOpen(false)\n setUploadState('idle')\n setErrorMessage(null)\n setPreviewUrl(null)\n setIsDragging(false)\n }, [])\n\n /**\n * Повторная попытка after ошибки\n */\n const handleRetry = useCallback(() => {\n setUploadState('idle')\n setErrorMessage(null)\n setPreviewUrl(null)\n }, [])\n\n return (\n <Popover.Root open={isOpen} onOpenChange={(details) => setIsOpen(details.open)}>\n <Popover.Trigger asChild>\n <IconButton\n aria-label=\"Insert image\"\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => setIsOpen(true)}\n disabled={disabled}\n >\n <LuImage />\n </IconButton>\n </Popover.Trigger>\n\n <Portal>\n <Popover.Positioner>\n <Popover.Content width=\"320px\">\n <Popover.Arrow>\n <Popover.ArrowTip />\n </Popover.Arrow>\n <Popover.Body p={3}>\n {/* State: idle - зона loading */}\n {uploadState === 'idle' && (\n <VStack gap={3} align=\"stretch\">\n <Box\n p={6}\n borderWidth=\"2px\"\n borderStyle=\"dashed\"\n borderColor={isDragging ? 'colorPalette.500' : 'border'}\n borderRadius=\"md\"\n bg={isDragging ? 'colorPalette.50' : 'bg.subtle'}\n transition=\"all 0.2s\"\n cursor=\"pointer\"\n _hover={{ borderColor: 'colorPalette.400' }}\n onDragOver={(e) => {\n e.preventDefault()\n setIsDragging(true)\n }}\n onDragLeave={(e) => {\n e.preventDefault()\n setIsDragging(false)\n }}\n onDrop={handleDrop}\n onClick={() => fileInputRef.current?.click()}\n >\n <Center>\n <VStack gap={2}>\n <Icon fontSize=\"2xl\" color=\"fg.muted\">\n <LuUpload />\n </Icon>\n <Text fontSize=\"sm\" fontWeight=\"medium\" textAlign=\"center\">\n Drag image here\n </Text>\n <Text fontSize=\"xs\" color=\"fg.muted\">\n or click to select\n </Text>\n </VStack>\n </Center>\n </Box>\n\n <Text fontSize=\"xs\" color=\"fg.muted\" textAlign=\"center\">\n PNG, JPG, WEBP up to {(maxSize / 1024 / 1024).toFixed(0)}MB\n </Text>\n\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={acceptTypes.join(',')}\n onChange={handleFileSelect}\n style={{ display: 'none' }}\n />\n\n <HStack justify=\"flex-end\">\n <Button size=\"sm\" variant=\"ghost\" onClick={handleClose}>\n Cancel\n </Button>\n </HStack>\n </VStack>\n )}\n\n {/* State: uploading - uploading */}\n {uploadState === 'uploading' && (\n <VStack gap={3} align=\"stretch\">\n {previewUrl && (\n <Box borderRadius=\"md\" overflow=\"hidden\" bg=\"bg.subtle\">\n <Image src={previewUrl} alt=\"Preview\" maxH=\"150px\" w=\"100%\" objectFit=\"contain\" />\n </Box>\n )}\n <Center py={2}>\n <HStack gap={2}>\n <Spinner size=\"sm\" color=\"colorPalette.500\" />\n <Text fontSize=\"sm\" color=\"fg.muted\">\n Loading...\n </Text>\n </HStack>\n </Center>\n </VStack>\n )}\n\n {/* State: error - error */}\n {uploadState === 'error' && (\n <VStack gap={3} align=\"stretch\">\n {previewUrl && (\n <Box borderRadius=\"md\" overflow=\"hidden\" bg=\"bg.subtle\" position=\"relative\">\n <Image src={previewUrl} alt=\"Preview\" maxH=\"150px\" w=\"100%\" objectFit=\"contain\" opacity={0.5} />\n <Center position=\"absolute\" inset={0} bg=\"blackAlpha.500\" borderRadius=\"md\">\n <Icon color=\"red.400\" fontSize=\"2xl\">\n <LuX />\n </Icon>\n </Center>\n </Box>\n )}\n <Text fontSize=\"sm\" color=\"red.400\" textAlign=\"center\">\n {errorMessage}\n </Text>\n <HStack justify=\"center\" gap={2}>\n <Button size=\"sm\" variant=\"ghost\" onClick={handleClose}>\n Cancel\n </Button>\n <Button size=\"sm\" colorPalette=\"brand\" onClick={handleRetry}>\n Try again\n </Button>\n </HStack>\n </VStack>\n )}\n </Popover.Body>\n </Popover.Content>\n </Popover.Positioner>\n </Portal>\n </Popover.Root>\n )\n}\n","'use client'\n\nimport { Box, Button, HStack, IconButton, Input, Popover, Portal, VStack } from '@chakra-ui/react'\nimport type { Editor } from '@tiptap/react'\nimport { useCallback, useState, type ReactElement } from 'react'\nimport { LuLink, LuUnlink } from 'react-icons/lu'\n\n/**\n * Props для LinkPopover\n */\ninterface LinkPopoverProps {\n editor: Editor\n disabled?: boolean\n}\n\n/**\n * Component для добавления/удаления ссылок в RichText редакторе\n *\n * Использует Popover instead of window.prompt для лучшего UX и тестируемости.\n */\nexport function LinkPopover({ editor, disabled }: LinkPopoverProps): ReactElement {\n const [url, setUrl] = useState('')\n const [isOpen, setIsOpen] = useState(false)\n\n const isActive = editor.isActive('link')\n\n const handleOpen = useCallback(() => {\n if (isActive) {\n // Если link активна — удаляем её\n editor.chain().focus().unsetLink().run()\n } else {\n // Получаем текущий URL if present\n const currentUrl = editor.getAttributes('link').href ?? ''\n setUrl(currentUrl)\n setIsOpen(true)\n }\n }, [editor, isActive])\n\n const handleClose = useCallback(() => {\n setIsOpen(false)\n setUrl('')\n }, [])\n\n const handleSubmit = useCallback(() => {\n if (url) {\n editor.chain().focus().extendMarkRange('link').setLink({ href: url }).run()\n }\n handleClose()\n }, [editor, url, handleClose])\n\n const handleRemove = useCallback(() => {\n editor.chain().focus().unsetLink().run()\n handleClose()\n }, [editor, handleClose])\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n e.preventDefault()\n handleSubmit()\n } else if (e.key === 'Escape') {\n handleClose()\n }\n },\n [handleSubmit, handleClose]\n )\n\n return (\n <Popover.Root open={isOpen} onOpenChange={(details) => setIsOpen(details.open)}>\n <Popover.Trigger asChild>\n <IconButton\n aria-label={isActive ? 'Remove ссылку' : 'Add ссылку'}\n size=\"sm\"\n variant={isActive ? 'solid' : 'ghost'}\n colorPalette={isActive ? 'brand' : undefined}\n onClick={handleOpen}\n disabled={disabled}\n >\n {isActive ? <LuUnlink /> : <LuLink />}\n </IconButton>\n </Popover.Trigger>\n\n <Portal>\n <Popover.Positioner>\n <Popover.Content width=\"300px\">\n <Popover.Arrow>\n <Popover.ArrowTip />\n </Popover.Arrow>\n <Popover.Body p={3}>\n <VStack gap={3} align=\"stretch\">\n <Box>\n <Input\n placeholder=\"https://example.com\"\n value={url}\n onChange={(e) => setUrl(e.target.value)}\n onKeyDown={handleKeyDown}\n size=\"sm\"\n autoFocus\n />\n </Box>\n <HStack gap={2} justify=\"flex-end\">\n {editor.isActive('link') && (\n <Button size=\"sm\" variant=\"ghost\" colorPalette=\"red\" onClick={handleRemove}>\n Remove\n </Button>\n )}\n <Button size=\"sm\" variant=\"ghost\" onClick={handleClose}>\n Cancel\n </Button>\n <Button size=\"sm\" colorPalette=\"brand\" onClick={handleSubmit} disabled={!url.trim()}>\n Apply\n </Button>\n </HStack>\n </VStack>\n </Popover.Body>\n </Popover.Content>\n </Popover.Positioner>\n </Portal>\n </Popover.Root>\n )\n}\n","'use client'\n\nimport { Box, Field, HStack, IconButton } from '@chakra-ui/react'\nimport type { AnyFieldApi } from '@tanstack/react-form'\nimport TiptapImage from '@tiptap/extension-image'\nimport { Link } from '@tiptap/extension-link'\nimport Placeholder from '@tiptap/extension-placeholder'\nimport Underline from '@tiptap/extension-underline'\nimport { type Content, EditorContent, useEditor } from '@tiptap/react'\nimport StarterKit from '@tiptap/starter-kit'\nimport { type ReactElement, useEffect, useMemo } from 'react'\nimport type { BaseFieldProps, FieldTooltipMeta } from '../../types'\nimport { FieldError, FieldLabel, getFieldErrors, useResolvedFieldProps } from '../base'\nimport { ImagePopover, type ImageUploadConfig } from './image-popover'\nimport { LinkPopover } from './link-popover'\nimport { DEFAULT_TOOLBAR_BUTTONS, TOOLBAR_CONFIG, type ToolbarButton } from './toolbar-config'\n\n/**\n * Safe JSON parsing with fallback to empty document\n * Prevents crash on invalid JSON\n */\nfunction safeParseJSON(value: string): Content {\n try {\n return JSON.parse(value) as Content\n } catch {\n console.warn('RichText: Invalid JSON content, using empty document')\n return ''\n }\n}\n\n/**\n * Props for RichText field\n */\nexport interface RichTextFieldProps extends BaseFieldProps {\n /** Tooltip for field label */\n tooltip?: FieldTooltipMeta\n /** Minimum editor height (by default: 150px) */\n minHeight?: string | number\n /** Maximum editor height (includes scroll) */\n maxHeight?: string | number\n /** Show toolbar (by default: true) */\n showToolbar?: boolean\n /** Toolbar buttons (by default: all) */\n toolbarButtons?: ToolbarButton[]\n /** Output format: 'html' or 'json' (by default: 'html') */\n outputFormat?: 'html' | 'json'\n /** Image upload configuration (optional) */\n imageUpload?: ImageUploadConfig\n}\n\n// Re-export type for convenience\nexport type { ImageUploadConfig }\n\n/**\n * Form.Field.RichText - WYSIWYG rich text editor\n *\n * Renders Tiptap-based editor with toolbar\n * and automatic form integration.\n *\n * @example Basic usage\n * ```tsx\n * <Form.Field.RichText name=\"content\" label=\"Content\" />\n * ```\n *\n * @example With custom height\n * ```tsx\n * <Form.Field.RichText\n * name=\"description\"\n * label=\"Description\"\n * minHeight=\"200px\"\n * maxHeight=\"400px\"\n * />\n * ```\n *\n * @example With limited toolbar\n * ```tsx\n * <Form.Field.RichText\n * name=\"comment\"\n * label=\"Comment\"\n * toolbarButtons={['bold', 'italic', 'link']}\n * />\n * ```\n *\n * @example JSON output (for database storage)\n * ```tsx\n * <Form.Field.RichText\n * name=\"article\"\n * label=\"Article\"\n * outputFormat=\"json\"\n * />\n * ```\n */\nexport function FieldRichText({\n name,\n label,\n placeholder,\n helperText,\n required,\n disabled,\n readOnly,\n tooltip,\n minHeight = '150px',\n maxHeight,\n showToolbar = true,\n toolbarButtons = DEFAULT_TOOLBAR_BUTTONS,\n outputFormat = 'html',\n imageUpload,\n}: RichTextFieldProps): ReactElement {\n const {\n form,\n fullPath,\n label: resolvedLabel,\n placeholder: resolvedPlaceholder,\n helperText: resolvedHelperText,\n tooltip: resolvedTooltip,\n required: resolvedRequired,\n disabled: resolvedDisabled,\n readOnly: resolvedReadOnly,\n } = useResolvedFieldProps(name, { label, placeholder, helperText, required, disabled, readOnly, tooltip })\n\n return (\n <form.Field name={fullPath}>\n {(field: AnyFieldApi) => {\n const { hasError, errorMessage } = getFieldErrors(field)\n\n return (\n <Field.Root\n invalid={hasError}\n required={resolvedRequired}\n disabled={resolvedDisabled}\n readOnly={resolvedReadOnly}\n >\n <FieldLabel label={resolvedLabel} tooltip={resolvedTooltip} required={resolvedRequired} />\n <RichTextEditor\n value={field.state.value as string}\n onChange={(value) => field.handleChange(value)}\n onBlur={field.handleBlur}\n placeholder={resolvedPlaceholder}\n minHeight={minHeight}\n maxHeight={maxHeight}\n showToolbar={showToolbar}\n toolbarButtons={toolbarButtons}\n outputFormat={outputFormat}\n disabled={disabled}\n readOnly={readOnly}\n hasError={hasError}\n fieldName={fullPath}\n imageUpload={imageUpload}\n />\n <FieldError hasError={hasError} errorMessage={errorMessage} helperText={resolvedHelperText} />\n </Field.Root>\n )\n }}\n </form.Field>\n )\n}\n\n/**\n * Props for internal editor component\n */\ninterface RichTextEditorProps {\n value: string\n onChange: (value: string) => void\n onBlur: () => void\n placeholder?: string\n minHeight: string | number\n maxHeight?: string | number\n showToolbar: boolean\n toolbarButtons: ToolbarButton[]\n outputFormat: 'html' | 'json'\n disabled?: boolean\n readOnly?: boolean\n hasError?: boolean\n fieldName: string\n imageUpload?: ImageUploadConfig\n}\n\n/**\n * Internal Tiptap editor component\n */\nfunction RichTextEditor({\n value,\n onChange,\n onBlur,\n placeholder,\n minHeight,\n maxHeight,\n showToolbar,\n toolbarButtons,\n outputFormat,\n disabled,\n readOnly,\n hasError,\n fieldName,\n imageUpload,\n}: RichTextEditorProps) {\n // Build extensions dynamically\n const extensions = useMemo(() => {\n // Base extensions\n const baseExtensions = [\n StarterKit,\n Underline,\n Link.configure({\n openOnClick: false,\n HTMLAttributes: {\n rel: 'noopener noreferrer',\n target: '_blank',\n },\n }),\n Placeholder.configure({\n placeholder: placeholder ?? 'Start typing...',\n }),\n // Add Image extension only if imageUpload is configured\n ...(imageUpload\n ? [\n TiptapImage.configure({\n inline: false,\n allowBase64: false,\n HTMLAttributes: {\n class: 'richtext-image',\n },\n }),\n ]\n : []),\n ]\n\n return baseExtensions\n }, [placeholder, imageUpload])\n\n const editor = useEditor({\n // Cast needed: minor @tiptap/core version drift (e.g. 3.20.0 vs 3.20.1) causes nominal type mismatch\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- @tiptap/core version incompatibility\n extensions: extensions as any[],\n content: outputFormat === 'json' && value ? safeParseJSON(value) : value || '',\n editable: !disabled && !readOnly,\n onUpdate: ({ editor }) => {\n if (outputFormat === 'json') {\n onChange(JSON.stringify(editor.getJSON()))\n } else {\n onChange(editor.getHTML())\n }\n },\n onBlur: () => {\n onBlur()\n },\n immediatelyRender: false,\n })\n\n // Synchronize external value changes\n useEffect(() => {\n if (!editor) {\n return\n }\n\n const currentContent = outputFormat === 'json' ? JSON.stringify(editor.getJSON()) : editor.getHTML()\n\n // Update only if content changed (avoid cursor jump)\n if (value !== currentContent) {\n const content = outputFormat === 'json' && value ? safeParseJSON(value) : value || ''\n editor.commands.setContent(content, { emitUpdate: false })\n }\n }, [editor, value, outputFormat])\n\n // Update editable state\n useEffect(() => {\n if (editor) {\n editor.setEditable(!disabled && !readOnly)\n }\n }, [editor, disabled, readOnly])\n\n if (!editor) {\n return null\n }\n\n return (\n <Box\n borderWidth=\"1px\"\n borderRadius=\"md\"\n borderColor={hasError ? 'border.error' : 'border'}\n overflow=\"hidden\"\n data-field-name={fieldName}\n _focusWithin={{\n borderColor: hasError ? 'border.error' : 'colorPalette.500',\n boxShadow: hasError\n ? '0 0 0 1px var(--chakra-colors-border-error)'\n : '0 0 0 1px var(--chakra-colors-colorPalette-500)',\n }}\n >\n {showToolbar && !readOnly && (\n <HStack p={1} gap={0.5} borderBottomWidth=\"1px\" borderColor=\"border\" bg=\"bg.subtle\" flexWrap=\"wrap\">\n {toolbarButtons.map((button) => {\n // Special handling for link — use Popover instead of window.prompt\n if (button === 'link') {\n return <LinkPopover key={button} editor={editor} disabled={disabled} />\n }\n\n // Special handling for image — use ImagePopover with upload\n if (button === 'image') {\n // Show button only if imageUpload is configured\n if (!imageUpload) {\n return null\n }\n return <ImagePopover key={button} editor={editor} config={imageUpload} disabled={disabled} />\n }\n\n const config = TOOLBAR_CONFIG[button]\n const isActive = config.isActive?.(editor) ?? false\n\n return (\n <IconButton\n key={button}\n aria-label={config.label}\n size=\"sm\"\n variant={isActive ? 'solid' : 'ghost'}\n colorPalette={isActive ? 'brand' : undefined}\n onClick={() => config.action(editor)}\n disabled={disabled}\n >\n {config.icon}\n </IconButton>\n )\n })}\n </HStack>\n )}\n <Box\n minHeight={minHeight}\n maxHeight={maxHeight}\n overflowY={maxHeight ? 'auto' : undefined}\n p={3}\n css={{\n '& .tiptap': {\n outline: 'none',\n minHeight: typeof minHeight === 'number' ? `${minHeight}px` : minHeight,\n },\n '& .tiptap p.is-editor-empty:first-child::before': {\n color: 'var(--chakra-colors-fg-muted)',\n content: 'attr(data-placeholder)',\n float: 'left',\n height: 0,\n pointerEvents: 'none',\n },\n '& .tiptap h1': {\n fontSize: '2xl',\n fontWeight: 'bold',\n marginTop: '1em',\n marginBottom: '0.5em',\n },\n '& .tiptap h2': {\n fontSize: 'xl',\n fontWeight: 'bold',\n marginTop: '1em',\n marginBottom: '0.5em',\n },\n '& .tiptap h3': {\n fontSize: 'lg',\n fontWeight: 'semibold',\n marginTop: '1em',\n marginBottom: '0.5em',\n },\n '& .tiptap ul, & .tiptap ol': {\n paddingLeft: '1.5em',\n marginTop: '0.5em',\n marginBottom: '0.5em',\n },\n '& .tiptap blockquote': {\n borderLeft: '3px solid var(--chakra-colors-border)',\n paddingLeft: '1em',\n marginLeft: 0,\n marginTop: '0.5em',\n marginBottom: '0.5em',\n fontStyle: 'italic',\n color: 'var(--chakra-colors-fg-muted)',\n },\n '& .tiptap code': {\n backgroundColor: 'var(--chakra-colors-bg-subtle)',\n borderRadius: '3px',\n padding: '0.2em 0.4em',\n fontFamily: 'mono',\n fontSize: '0.9em',\n },\n '& .tiptap a': {\n color: 'var(--chakra-colors-colorPalette-500)',\n textDecoration: 'underline',\n cursor: 'pointer',\n },\n '& .tiptap p': {\n marginTop: '0.25em',\n marginBottom: '0.25em',\n },\n '& .tiptap img, & .tiptap .richtext-image': {\n maxWidth: '100%',\n height: 'auto',\n borderRadius: '4px',\n marginTop: '0.5em',\n marginBottom: '0.5em',\n },\n }}\n >\n <EditorContent editor={editor} />\n </Box>\n </Box>\n )\n}\n","'use client'\n\nimport { Input } from '@chakra-ui/react'\nimport type { ReactElement } from 'react'\nimport type { StringFieldProps } from '../../types'\nimport { createField, FieldWrapper } from '../base'\n\n/**\n * Form.Field.String - String input field\n *\n * Renders a Chakra Input with automatic form integration and error display.\n *\n * Automatically extracts from Zod schema:\n * - `type` from `z.string().email()` → type=\"email\", `z.string().url()` → type=\"url\"\n * - `maxLength` from `z.string().max(100)` → maxLength={100}\n * - `minLength` from `z.string().min(2)` → minLength={2}\n * - `pattern` from `z.string().regex(/.../)` → pattern=\"...\"\n * - `helperText` automatically generated from constraints (\"Maximum 100 characters\")\n *\n * Props always take priority over automatic values from schema.\n *\n * @example\n * ```tsx\n * <Form.Field.String name=\"title\" label=\"Title\" required />\n * ```\n *\n * @example With automatic constraints from Zod\n * ```tsx\n * // In schema: z.object({ email: z.string().email().max(255) })\n * <Form.Field.String name=\"email\" />\n * // Automatically: type=\"email\", maxLength={255}\n * ```\n *\n * @example In primitive array (no name)\n * ```tsx\n * <Form.Group.List name=\"tags\">\n * <Form.Field.String placeholder=\"Tag\" />\n * </Form.Group.List>\n * ```\n */\n/**\n * Automatic inputMode based on field type for mobile keyboards\n */\nfunction getInputModeFromType(type: string): StringFieldProps['inputMode'] {\n switch (type) {\n case 'email':\n return 'email'\n case 'tel':\n return 'tel'\n case 'url':\n return 'url'\n default:\n return 'text'\n }\n}\n\nexport const FieldString = createField<StringFieldProps, string>({\n displayName: 'FieldString',\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }): ReactElement => {\n const { constraints } = resolved\n\n // Props take priority over constraints\n const type = componentProps.type ?? constraints.string?.inputType ?? 'text'\n const maxLength = componentProps.maxLength ?? constraints.string?.maxLength\n const minLength = componentProps.minLength ?? constraints.string?.minLength\n const pattern = componentProps.pattern ?? constraints.string?.pattern\n // inputMode: explicit prop > auto from type\n const inputMode = componentProps.inputMode ?? getInputModeFromType(type)\n\n return (\n <FieldWrapper resolved={resolved} hasError={hasError} errorMessage={errorMessage} fullPath={fullPath}>\n <Input\n type={type}\n inputMode={inputMode}\n value={(field.state.value as string) ?? ''}\n onChange={(e) => field.handleChange((e.target as HTMLInputElement).value)}\n onBlur={field.handleBlur}\n placeholder={resolved.placeholder}\n maxLength={maxLength}\n minLength={minLength}\n pattern={pattern}\n autoComplete={componentProps.autoComplete}\n data-field-name={fullPath}\n />\n </FieldWrapper>\n )\n },\n})\n","'use client'\n\nimport { Textarea } from '@chakra-ui/react'\nimport type { ReactElement } from 'react'\nimport type { TextareaFieldProps } from '../../types'\nimport { createField, FieldWrapper } from '../base'\n\n/**\n * Form.Field.Textarea - Multiline text input field\n *\n * Renders a Chakra Textarea with automatic form integration and error display.\n *\n * Automatically extracts from Zod schema:\n * - `maxLength` from `z.string().max(500)` → maxLength={500}\n * - `helperText` automatically is generated from constraints (\"Maximum 500 characters\")\n *\n * Props always take priority over automatic values from schema.\n *\n * @example\n * ```tsx\n * <Form.Field.Textarea name=\"description\" label=\"Description\" rows={4} />\n * ```\n *\n * @example With automatic constraints from Zod\n * ```tsx\n * // In schema: z.object({ bio: z.string().max(500) })\n * <Form.Field.Textarea name=\"bio\" label=\"Bio\" autoresize />\n * // Automatically: maxLength={500} helperText=\"Maximum 500 characters\"\n * ```\n */\nexport const FieldTextarea = createField<TextareaFieldProps, string>({\n displayName: 'FieldTextarea',\n render: ({ field, fullPath, resolved, hasError, errorMessage, componentProps }): ReactElement => {\n const { constraints } = resolved\n\n // Props take priority over constraints\n const maxLength = componentProps.maxLength ?? constraints.string?.maxLength\n\n return (\n <FieldWrapper resolved={resolved} hasError={hasError} errorMessage={errorMessage} fullPath={fullPath}>\n <Textarea\n value={(field.state.value as string) ?? ''}\n onChange={(e) => field.handleChange((e.target as HTMLTextAreaElement).value)}\n onBlur={field.handleBlur}\n placeholder={resolved.placeholder}\n rows={componentProps.rows}\n autoresize={componentProps.autoresize}\n resize={componentProps.resize ?? 'vertical'}\n maxLength={maxLength}\n data-field-name={fullPath}\n />\n </FieldWrapper>\n )\n },\n})\n","'use client'\n\nimport { Input } from '@chakra-ui/react'\nimport { useCallback, type ReactElement } from 'react'\nimport { withMask } from 'use-mask-input'\nimport type { MaskedInputFieldProps } from '../../types'\nimport { createField, FieldWrapper } from '../base'\n\n/**\n * State for masked field\n */\ninterface MaskedInputFieldState {\n /** Ref callback for applying mask */\n maskRef: (element: HTMLInputElement | null) => void\n}\n\n/**\n * Form.Field.MaskedInput - Masked input field\n *\n * Renders masked input using the use-mask-input library.\n *\n * Mask characters:\n * - 9: digit\n * - a: letter\n * - *: letter or digit\n *\n * @example Passport mask\n * ```tsx\n * <Form.Field.MaskedInput name=\"passport\" label=\"Passport\" mask=\"99 99 999999\" />\n * ```\n *\n * @example Multiple masks (adapts to input)\n * ```tsx\n * <Form.Field.MaskedInput name=\"phone\" mask={['9999-9999', '99999-9999']} />\n * ```\n *\n * @example With custom placeholder character\n * ```tsx\n * <Form.Field.MaskedInput name=\"date\" mask=\"99/99/9999\" placeholderChar=\"#\" />\n * ```\n */\nexport const FieldMaskedInput = createField<MaskedInputFieldProps, string, MaskedInputFieldState>({\n displayName: 'FieldMaskedInput',\n\n useFieldState: (props) => {\n const {\n mask,\n placeholderChar = '_',\n showMaskOnFocus = true,\n showMaskOnHover = false,\n clearIncomplete = false,\n autoUnmask = false,\n } = props\n\n // Create ref callback for applying mask\n const maskRef = useCallback(\n (element: HTMLInputElement | null) => {\n if (element && mask) {\n const maskCallback = withMask(mask, {\n placeholder: placeholderChar,\n showMaskOnFocus,\n showMaskOnHover,\n clearIncomplete,\n autoUnmask,\n })\n maskCallback(element)\n }\n },\n [mask, placeholderChar, showMaskOnFocus, showMaskOnHover, clearIncomplete, autoUnmask]\n )\n\n return { maskRef }\n },\n\n render: ({ field, fullPath, resolved, hasError, errorMessage, fieldState }): ReactElement => (\n <FieldWrapper resolved={resolved} hasError={hasError} errorMessage={errorMessage} fullPath={fullPath}>\n <Input\n ref={fieldState.maskRef}\n value={(field.state.value as string) ?? ''}\n onChange={(e) => field.handleChange(e.target.value)}\n onBlur={field.handleBlur}\n placeholder={resolved.placeholder}\n data-field-name={fullPath}\n />\n </FieldWrapper>\n ),\n})\n"]}