@djangocfg/ui-tools 2.1.233 → 2.1.235

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 (28) hide show
  1. package/dist/JsonSchemaForm-IIYKSH6X.cjs +13 -0
  2. package/dist/{JsonSchemaForm-GZBFMEKR.cjs.map → JsonSchemaForm-IIYKSH6X.cjs.map} +1 -1
  3. package/dist/JsonSchemaForm-RN3XWSWX.mjs +4 -0
  4. package/dist/{JsonSchemaForm-ZTRWXMEF.mjs.map → JsonSchemaForm-RN3XWSWX.mjs.map} +1 -1
  5. package/dist/{chunk-QKG4LERV.mjs → chunk-2QY3LJR6.mjs} +4 -6
  6. package/dist/chunk-2QY3LJR6.mjs.map +1 -0
  7. package/dist/{chunk-46VDB3BJ.cjs → chunk-CXVGN6ZW.cjs} +3 -5
  8. package/dist/chunk-CXVGN6ZW.cjs.map +1 -0
  9. package/dist/{chunk-TKB5BDPN.mjs → chunk-JUGQNNDC.mjs} +11 -11
  10. package/dist/chunk-JUGQNNDC.mjs.map +1 -0
  11. package/dist/{chunk-UYBYZXVD.cjs → chunk-L37FZYJU.cjs} +11 -11
  12. package/dist/chunk-L37FZYJU.cjs.map +1 -0
  13. package/dist/{components-AALNUI3D.cjs → components-3RTH76CV.cjs} +7 -7
  14. package/dist/{components-AALNUI3D.cjs.map → components-3RTH76CV.cjs.map} +1 -1
  15. package/dist/{components-JOYIAXID.mjs → components-OTK43IMD.mjs} +3 -3
  16. package/dist/{components-JOYIAXID.mjs.map → components-OTK43IMD.mjs.map} +1 -1
  17. package/dist/index.cjs +39 -39
  18. package/dist/index.mjs +4 -4
  19. package/package.json +6 -6
  20. package/src/tools/JsonForm/JsonSchemaForm.tsx +6 -5
  21. package/src/tools/JsonForm/utils.ts +4 -3
  22. package/src/tools/VideoPlayer/providers/VidstackProvider.tsx +2 -5
  23. package/dist/JsonSchemaForm-GZBFMEKR.cjs +0 -13
  24. package/dist/JsonSchemaForm-ZTRWXMEF.mjs +0 -4
  25. package/dist/chunk-46VDB3BJ.cjs.map +0 -1
  26. package/dist/chunk-QKG4LERV.mjs.map +0 -1
  27. package/dist/chunk-TKB5BDPN.mjs.map +0 -1
  28. package/dist/chunk-UYBYZXVD.cjs.map +0 -1
@@ -2,12 +2,12 @@
2
2
 
3
3
  var chunkWGEGR3DF_cjs = require('./chunk-WGEGR3DF.cjs');
4
4
  var consola = require('consola');
5
+ var lib = require('@djangocfg/ui-core/lib');
5
6
  var lucideReact = require('lucide-react');
6
7
  var react = require('react');
7
8
  var components = require('@djangocfg/ui-core/components');
8
9
  var Form = require('@rjsf/core');
9
10
  var validator = require('@rjsf/validator-ajv8');
10
- var lib = require('@djangocfg/ui-core/lib');
11
11
  var jsxRuntime = require('react/jsx-runtime');
12
12
  var utils = require('@rjsf/utils');
13
13
  var i18n = require('@djangocfg/i18n');
@@ -275,19 +275,19 @@ function BaseInputTemplate(props) {
275
275
  chunkWGEGR3DF_cjs.__name(BaseInputTemplate, "BaseInputTemplate");
276
276
  function validateSchema(schema) {
277
277
  if (!schema || typeof schema !== "object") {
278
- {
278
+ if (lib.isDev) {
279
279
  consola__default.default.error("[JsonSchemaForm] Invalid schema: must be an object", schema);
280
280
  }
281
281
  return null;
282
282
  }
283
283
  const hasValidStructure = schema.type || schema.properties || schema.$ref || schema.$schema;
284
284
  if (!hasValidStructure) {
285
- {
285
+ if (lib.isDev) {
286
286
  consola__default.default.error("[JsonSchemaForm] Invalid schema: missing type, properties, $ref, or $schema", schema);
287
287
  }
288
288
  return null;
289
289
  }
290
- {
290
+ if (lib.isDev) {
291
291
  consola__default.default.success("[JsonSchemaForm] Schema validated successfully:", {
292
292
  type: schema.type,
293
293
  title: schema.title,
@@ -959,27 +959,27 @@ function JsonSchemaForm(props) {
959
959
  ...restProps
960
960
  } = props;
961
961
  const validatedSchema = react.useMemo(() => {
962
- {
962
+ if (lib.isDev) {
963
963
  consola__default.default.info("[JsonSchemaForm] Validating schema...", schema);
964
964
  }
965
965
  const result = validateSchema(schema);
966
- if (!result && true) {
966
+ if (!result && lib.isDev) {
967
967
  consola__default.default.error("[JsonSchemaForm] Schema validation failed");
968
968
  }
969
969
  return result;
970
970
  }, [schema]);
971
971
  const normalizedFormData = react.useMemo(() => {
972
972
  if (!validatedSchema) {
973
- {
973
+ if (lib.isDev) {
974
974
  consola__default.default.warn("[JsonSchemaForm] Cannot normalize formData - invalid schema");
975
975
  }
976
976
  return null;
977
977
  }
978
- {
978
+ if (lib.isDev) {
979
979
  consola__default.default.info("[JsonSchemaForm] Normalizing formData...", formData);
980
980
  }
981
981
  const normalized = normalizeFormData(formData, validatedSchema);
982
- {
982
+ if (lib.isDev) {
983
983
  consola__default.default.info("[JsonSchemaForm] Normalized formData:", normalized);
984
984
  }
985
985
  return normalized;
@@ -1082,5 +1082,5 @@ exports.safeJsonParse = safeJsonParse;
1082
1082
  exports.safeJsonStringify = safeJsonStringify;
1083
1083
  exports.validateRequiredFields = validateRequiredFields;
1084
1084
  exports.validateSchema = validateSchema;
1085
- //# sourceMappingURL=chunk-UYBYZXVD.cjs.map
1086
- //# sourceMappingURL=chunk-UYBYZXVD.cjs.map
1085
+ //# sourceMappingURL=chunk-L37FZYJU.cjs.map
1086
+ //# sourceMappingURL=chunk-L37FZYJU.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tools/JsonForm/templates/FieldTemplate.tsx","../src/tools/JsonForm/templates/ObjectFieldTemplate.tsx","../src/tools/JsonForm/templates/ArrayFieldTemplate.tsx","../src/tools/JsonForm/templates/ArrayFieldItemTemplate.tsx","../src/tools/JsonForm/templates/ErrorListTemplate.tsx","../src/tools/JsonForm/templates/BaseInputTemplate.tsx","../src/tools/JsonForm/utils.ts","../src/tools/JsonForm/widgets/TextWidget.tsx","../src/tools/JsonForm/widgets/NumberWidget.tsx","../src/tools/JsonForm/widgets/CheckboxWidget.tsx","../src/tools/JsonForm/widgets/SelectWidget.tsx","../src/tools/JsonForm/widgets/SwitchWidget.tsx","../src/tools/JsonForm/widgets/ColorWidget.tsx","../src/tools/JsonForm/widgets/SliderWidget.tsx","../src/tools/JsonForm/JsonSchemaForm.tsx"],"names":["jsx","jsxs","cn","Label","__name","useState","Collapsible","CollapsibleTrigger","ChevronDown","CollapsibleContent","Button","Plus","getUiOptions","getTemplate","Alert","AlertCircle","AlertTitle","AlertDescription","useMemo","getInputProps","useCallback","Input","isDev","consola","Checkbox","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","Switch","useAppT","useRef","t","hexValue","Slider","Form","validator"],"mappings":"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","file":"chunk-L37FZYJU.cjs","sourcesContent":["\"use client\"\n\nimport React from 'react';\n\nimport { Label } from '@djangocfg/ui-core/components';\nimport { cn } from '@djangocfg/ui-core/lib';\nimport { FieldTemplateProps } from '@rjsf/utils';\n\n/**\n * Field template for JSON Schema Form\n * Controls the layout and styling of individual form fields\n */\nexport function FieldTemplate(props: FieldTemplateProps) {\n const {\n id,\n classNames,\n style,\n label,\n help,\n required,\n description,\n errors,\n children,\n displayLabel,\n hidden,\n rawErrors,\n } = props;\n\n if (hidden) {\n return <div className=\"hidden\">{children}</div>;\n }\n\n const hasError = rawErrors && rawErrors.length > 0;\n\n return (\n <div\n className={cn('space-y-2', classNames)}\n style={style}\n >\n {displayLabel && label && (\n <Label htmlFor={id} className={cn(hasError && 'text-destructive')}>\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </Label>\n )}\n\n {description && (\n <div className=\"text-sm text-muted-foreground\">{description}</div>\n )}\n\n <div>{children}</div>\n\n {errors && (\n <div className=\"text-sm text-destructive\">{errors}</div>\n )}\n\n {help && (\n <div className=\"text-sm text-muted-foreground\">{help}</div>\n )}\n </div>\n );\n}\n","\"use client\"\n\nimport { ChevronDown } from 'lucide-react';\nimport React, { useState } from 'react';\n\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@djangocfg/ui-core/components';\nimport { cn } from '@djangocfg/ui-core/lib';\nimport { ObjectFieldTemplateProps } from '@rjsf/utils';\n\n/**\n * Object field template for JSON Schema Form\n *\n * Supports:\n * - Collapsible groups via ui:collapsible option\n * - Grid layout via ui:grid option\n * - Custom styling via ui:className\n *\n * Usage in uiSchema:\n * ```json\n * {\n * \"colors\": {\n * \"ui:collapsible\": true,\n * \"ui:collapsed\": false,\n * \"ui:grid\": 2\n * }\n * }\n * ```\n */\nexport function ObjectFieldTemplate(props: ObjectFieldTemplateProps) {\n const {\n title,\n description,\n properties,\n required,\n uiSchema,\n } = props;\n\n // UI options\n const isCollapsible = uiSchema?.['ui:collapsible'] === true;\n const defaultCollapsed = uiSchema?.['ui:collapsed'] === true;\n const gridCols = uiSchema?.['ui:grid'] as number | undefined;\n const className = uiSchema?.['ui:className'] as string | undefined;\n\n // Collapsible state\n const [isOpen, setIsOpen] = useState(!defaultCollapsed);\n\n // Check if this is root object (no title usually means root)\n const isRoot = !title;\n\n // Grid class based on columns\n const gridClass = gridCols\n ? `grid gap-4 grid-cols-${gridCols}`\n : 'space-y-4';\n\n // Content wrapper\n const content = (\n <div className={cn(gridClass, className)}>\n {properties.map((element) => (\n <div key={element.name} className=\"property-wrapper\">\n {element.content}\n </div>\n ))}\n </div>\n );\n\n // Root object - no wrapper\n if (isRoot) {\n return <div className=\"space-y-6\">{content}</div>;\n }\n\n // Collapsible group\n if (isCollapsible) {\n return (\n <Collapsible open={isOpen} onOpenChange={setIsOpen} className=\"space-y-2\">\n <CollapsibleTrigger className=\"flex w-full items-center justify-between rounded-lg border bg-muted/50 px-4 py-3 text-left hover:bg-muted transition-colors\">\n <div>\n <h3 className=\"text-sm font-semibold\">\n {title}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </h3>\n {description && (\n <p className=\"text-xs text-muted-foreground mt-0.5\">{description}</p>\n )}\n </div>\n <ChevronDown\n className={cn(\n 'h-4 w-4 text-muted-foreground transition-transform duration-200',\n isOpen && 'rotate-180'\n )}\n />\n </CollapsibleTrigger>\n <CollapsibleContent className=\"pl-1 pr-1 pt-2\">\n {content}\n </CollapsibleContent>\n </Collapsible>\n );\n }\n\n // Regular group with title\n return (\n <div className=\"space-y-4\">\n {title && (\n <div className=\"border-b pb-2\">\n <h3 className=\"text-sm font-semibold\">\n {title}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </h3>\n {description && (\n <p className=\"text-xs text-muted-foreground mt-1\">{description}</p>\n )}\n </div>\n )}\n {content}\n </div>\n );\n}\n","\"use client\"\n\nimport { Plus } from 'lucide-react';\nimport React from 'react';\n\nimport { Button } from '@djangocfg/ui-core/components';\nimport { ArrayFieldTemplateProps } from '@rjsf/utils';\n\n/**\n * Array field template for JSON Schema Form\n * Renders array items with add/remove controls\n *\n * NOTE: In RJSF v6, `items` is an array of ReactElement (already rendered),\n * NOT an array of objects with {children, hasRemove, etc.}.\n * The actual rendering of each item (including remove buttons) is handled\n * by ArrayFieldItemTemplate.\n */\nexport function ArrayFieldTemplate(props: ArrayFieldTemplateProps) {\n const {\n title,\n items,\n canAdd,\n onAddClick,\n required,\n } = props;\n\n return (\n <div className=\"space-y-4\">\n {title && (\n <div className=\"flex items-center justify-between\">\n <h3 className=\"text-lg font-semibold\">\n {title}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </h3>\n {canAdd && (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={onAddClick}\n className=\"gap-2\"\n >\n <Plus className=\"h-4 w-4\" />\n Add Item\n </Button>\n )}\n </div>\n )}\n\n {/* In RJSF v6, items is already an array of ReactElements */}\n <div className=\"space-y-3\">\n {items}\n </div>\n\n {items.length === 0 && (\n <div className=\"text-center py-8 text-muted-foreground border-2 border-dashed rounded-md\">\n No items added yet.\n {canAdd && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={onAddClick}\n className=\"mt-2 gap-2\"\n >\n <Plus className=\"h-4 w-4\" />\n Add First Item\n </Button>\n )}\n </div>\n )}\n </div>\n );\n}\n","\"use client\"\n\nimport React from 'react';\n\nimport { cn } from '@djangocfg/ui-core/lib';\nimport { ArrayFieldItemTemplateProps, getTemplate, getUiOptions } from '@rjsf/utils';\n\n/**\n * Array field item template for JSON Schema Form\n * Renders individual array items with proper styling and action buttons\n *\n * In RJSF v6, this template is responsible for rendering each item in an array,\n * including the item content (children) and the action buttons (remove, move up/down, copy).\n */\nexport function ArrayFieldItemTemplate(props: ArrayFieldItemTemplateProps) {\n const {\n children,\n className,\n buttonsProps,\n hasToolbar,\n registry,\n uiSchema,\n } = props;\n\n const uiOptions = getUiOptions(uiSchema);\n const ArrayFieldItemButtonsTemplate = getTemplate(\n 'ArrayFieldItemButtonsTemplate',\n registry,\n uiOptions,\n );\n\n return (\n <div\n className={cn(\n 'flex gap-2 items-start p-4 rounded-md border bg-card',\n className\n )}\n >\n <div className=\"flex-1\">{children}</div>\n {hasToolbar && (\n <div className=\"flex items-center gap-1\">\n <ArrayFieldItemButtonsTemplate {...buttonsProps} />\n </div>\n )}\n </div>\n );\n}\n","\"use client\"\n\nimport { AlertCircle } from 'lucide-react';\nimport React from 'react';\n\nimport { Alert, AlertDescription, AlertTitle } from '@djangocfg/ui-core/components';\nimport { ErrorListProps } from '@rjsf/utils';\n\n/**\n * Error list template for JSON Schema Form\n * Displays validation errors at the top of the form\n */\nexport function ErrorListTemplate(props: ErrorListProps) {\n const { errors } = props;\n\n if (!errors || errors.length === 0) {\n return null;\n }\n\n return (\n <Alert variant=\"destructive\" className=\"mb-6\">\n <AlertCircle className=\"h-4 w-4\" />\n <AlertTitle>Validation Errors</AlertTitle>\n <AlertDescription>\n <ul className=\"list-disc list-inside space-y-1 mt-2\">\n {errors.map((error, index) => (\n <li key={index} className=\"text-sm\">\n {error.stack}\n </li>\n ))}\n </ul>\n </AlertDescription>\n </Alert>\n );\n}\n","\"use client\"\n\nimport React, { ChangeEvent, FocusEvent, useCallback, useMemo } from 'react';\n\nimport { Input } from '@djangocfg/ui-core/components';\nimport { getInputProps, WidgetProps } from '@rjsf/utils';\n\n/**\n * Base input template for JSON Schema Form\n *\n * This template is CRITICAL for rendering primitive types (string, number)\n * inside arrays. Without it, array items with primitive types will render\n * as empty containers.\n *\n * RJSF uses this template for:\n * - Array items with primitive types (e.g., array of strings)\n * - Fields without explicit widget mapping\n * - All text-based widgets internally\n *\n * @see https://rjsf-team.github.io/react-jsonschema-form/docs/advanced-customization/custom-templates/#baseinputtemplate\n */\nexport function BaseInputTemplate(props: WidgetProps) {\n const {\n id,\n type,\n value,\n readonly,\n disabled,\n autofocus,\n onBlur,\n onFocus,\n onChange,\n options,\n schema,\n rawErrors,\n placeholder,\n } = props;\n\n // Get input props from RJSF utils (handles step, min, max, etc.)\n const inputProps = useMemo(() => {\n return getInputProps(schema, type, options);\n }, [schema, type, options]);\n\n // Safely convert value to string for input\n const safeValue = useMemo(() => {\n if (value === null || value === undefined) return '';\n return String(value);\n }, [value]);\n\n const hasError = useMemo(() => {\n return rawErrors && rawErrors.length > 0;\n }, [rawErrors]);\n\n // Handle text change - transform empty strings based on schema type\n const handleChange = useCallback((event: ChangeEvent<HTMLInputElement>) => {\n const val = event.target.value;\n\n // Empty value handling\n if (val === '') {\n onChange(options?.emptyValue ?? '');\n return;\n }\n\n // Number type conversion\n if (inputProps.type === 'number' || schema.type === 'number' || schema.type === 'integer') {\n const num = Number(val);\n onChange(isNaN(num) ? val : num);\n return;\n }\n\n onChange(val);\n }, [onChange, inputProps.type, schema.type, options?.emptyValue]);\n\n const handleBlur = useCallback((event: FocusEvent<HTMLInputElement>) => {\n onBlur(id, event.target.value);\n }, [id, onBlur]);\n\n const handleFocus = useCallback((event: FocusEvent<HTMLInputElement>) => {\n onFocus(id, event.target.value);\n }, [id, onFocus]);\n\n // Determine input type\n const inputType = useMemo(() => {\n if (inputProps.type) return inputProps.type;\n if (schema.type === 'number' || schema.type === 'integer') return 'number';\n return 'text';\n }, [inputProps.type, schema.type]);\n\n return (\n <Input\n id={id}\n type={inputType}\n value={safeValue}\n disabled={disabled}\n readOnly={readonly}\n autoFocus={autofocus}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n placeholder={placeholder}\n className={hasError ? 'border-destructive' : ''}\n step={inputProps.step}\n min={inputProps.min}\n max={inputProps.max}\n />\n );\n}\n","import { isDev } from \"@djangocfg/ui-core/lib\";\nimport consola from 'consola';\n\nimport { RJSFSchema } from '@rjsf/utils';\n\n/**\n * Utility functions for JSON Schema Form\n */\n\n/**\n * Safely validates and normalizes JSON Schema\n * Ensures schema is valid before rendering\n */\nexport function validateSchema(schema: any): RJSFSchema | null {\n if (!schema || typeof schema !== 'object') {\n if (isDev) {\n consola.error('[JsonSchemaForm] Invalid schema: must be an object', schema);\n }\n return null;\n }\n\n // Basic schema validation - more permissive\n // Schema is valid if it has type OR properties OR $ref OR $schema\n const hasValidStructure =\n schema.type ||\n schema.properties ||\n schema.$ref ||\n schema.$schema;\n\n if (!hasValidStructure) {\n if (isDev) {\n consola.error('[JsonSchemaForm] Invalid schema: missing type, properties, $ref, or $schema', schema);\n }\n return null;\n }\n\n if (isDev) {\n consola.success('[JsonSchemaForm] Schema validated successfully:', {\n type: schema.type,\n title: schema.title,\n hasProperties: !!schema.properties,\n hasRequired: !!schema.required,\n });\n }\n\n return schema as RJSFSchema;\n}\n\n/**\n * Safely normalizes form data\n * Removes undefined values and ensures data structure matches schema\n */\nexport function normalizeFormData<T = any>(\n formData: any,\n schema: RJSFSchema\n): T {\n if (formData === null || formData === undefined) {\n return (schema.type === 'object' ? {} : schema.type === 'array' ? [] : null) as T;\n }\n\n // Deep clone to avoid mutations\n const normalized = JSON.parse(JSON.stringify(formData));\n\n // Remove undefined values recursively\n return removeUndefined(normalized) as T;\n}\n\n/**\n * Recursively removes undefined values from an object\n */\nfunction removeUndefined(obj: any): any {\n if (obj === null || obj === undefined) {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map(removeUndefined).filter((item) => item !== undefined);\n }\n\n if (typeof obj === 'object') {\n const cleaned: any = {};\n for (const key in obj) {\n if (obj[key] !== undefined) {\n cleaned[key] = removeUndefined(obj[key]);\n }\n }\n return cleaned;\n }\n\n return obj;\n}\n\n/**\n * Merges schema defaults with form data\n */\nexport function mergeDefaults(\n formData: any,\n schema: RJSFSchema\n): any {\n if (!schema) return formData;\n\n const result = { ...formData };\n\n if (schema.type === 'object' && schema.properties) {\n for (const [key, propSchema] of Object.entries(schema.properties)) {\n const prop = propSchema as RJSFSchema;\n\n // Apply default if field is missing\n if (result[key] === undefined && prop.default !== undefined) {\n result[key] = prop.default;\n }\n\n // Recursively merge nested objects\n if (prop.type === 'object' && result[key]) {\n result[key] = mergeDefaults(result[key], prop);\n }\n }\n }\n\n return result;\n}\n\n/**\n * Safely parses JSON string with error handling\n */\nexport function safeJsonParse<T = any>(\n jsonString: string,\n fallback: T\n): T {\n try {\n return JSON.parse(jsonString);\n } catch (error) {\n consola.error('[JsonSchemaForm] JSON parse error:', error);\n return fallback;\n }\n}\n\n/**\n * Safely stringifies object to JSON\n */\nexport function safeJsonStringify(\n obj: any,\n pretty: boolean = true\n): string {\n try {\n return JSON.stringify(obj, null, pretty ? 2 : 0);\n } catch (error) {\n consola.error('[JsonSchemaForm] JSON stringify error:', error);\n return '{}';\n }\n}\n\n/**\n * Checks if schema has required fields\n */\nexport function hasRequiredFields(schema: RJSFSchema): boolean {\n return Array.isArray(schema.required) && schema.required.length > 0;\n}\n\n/**\n * Gets all required field paths from schema\n */\nexport function getRequiredFields(\n schema: RJSFSchema,\n prefix: string = ''\n): string[] {\n const required: string[] = [];\n\n if (schema.required && Array.isArray(schema.required)) {\n required.push(...schema.required.map((field) =>\n prefix ? `${prefix}.${field}` : field\n ));\n }\n\n if (schema.type === 'object' && schema.properties) {\n for (const [key, propSchema] of Object.entries(schema.properties)) {\n const prop = propSchema as RJSFSchema;\n const fieldPath = prefix ? `${prefix}.${key}` : key;\n required.push(...getRequiredFields(prop, fieldPath));\n }\n }\n\n return required;\n}\n\n/**\n * Validates form data against required fields\n */\nexport function validateRequiredFields(\n formData: any,\n schema: RJSFSchema\n): { valid: boolean; missing: string[] } {\n const requiredFields = getRequiredFields(schema);\n const missing: string[] = [];\n\n for (const field of requiredFields) {\n const value = getNestedValue(formData, field);\n if (value === undefined || value === null || value === '') {\n missing.push(field);\n }\n }\n\n return {\n valid: missing.length === 0,\n missing,\n };\n}\n\n/**\n * Gets nested value from object by path\n */\nfunction getNestedValue(obj: any, path: string): any {\n return path.split('.').reduce((current, key) => current?.[key], obj);\n}\n","\"use client\"\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Input } from '@djangocfg/ui-core/components';\nimport { WidgetProps } from '@rjsf/utils';\n\n/**\n * Text input widget for JSON Schema Form\n * Handles string fields with optional textarea for multiline\n */\nexport function TextWidget(props: WidgetProps) {\n const {\n id,\n placeholder,\n required,\n disabled,\n readonly,\n autofocus,\n value,\n onChange,\n onBlur,\n onFocus,\n options,\n schema,\n rawErrors,\n } = props;\n\n // Memoize widget configuration\n const config = useMemo(() => ({\n isTextarea: options?.widget === 'textarea',\n rows: options?.rows || 3,\n emptyValue: options?.emptyValue,\n }), [options]);\n\n // Ensure value is always a string\n const safeValue = useMemo(() => {\n if (value === null || value === undefined) return '';\n return String(value);\n }, [value]);\n\n const hasError = useMemo(() => {\n return rawErrors && rawErrors.length > 0;\n }, [rawErrors]);\n\n const handleChange = useCallback((event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const newValue = event.target.value;\n onChange(newValue === '' ? config.emptyValue : newValue);\n }, [onChange, config.emptyValue]);\n\n const handleBlur = useCallback((event: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n onBlur(id, event.target.value);\n }, [id, onBlur]);\n\n const handleFocus = useCallback((event: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n onFocus(id, event.target.value);\n }, [id, onFocus]);\n\n if (config.isTextarea) {\n return (\n <textarea\n id={id}\n className={`flex min-h-[80px] w-full rounded-md border ${\n hasError ? 'border-destructive' : 'border-input'\n } bg-transparent px-3 py-2 text-base shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm`}\n placeholder={placeholder}\n disabled={disabled || readonly}\n readOnly={readonly}\n autoFocus={autofocus}\n value={safeValue}\n required={required}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n rows={config.rows}\n />\n );\n }\n\n return (\n <Input\n id={id}\n type=\"text\"\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readonly}\n autoFocus={autofocus}\n value={safeValue}\n required={required}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n className={hasError ? 'border-destructive' : ''}\n />\n );\n}\n","\"use client\"\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Input } from '@djangocfg/ui-core/components';\nimport { WidgetProps } from '@rjsf/utils';\n\n/**\n * Number input widget for JSON Schema Form\n * Handles integer and number fields\n */\nexport function NumberWidget(props: WidgetProps) {\n const {\n id,\n placeholder,\n required,\n disabled,\n readonly,\n autofocus,\n value,\n onChange,\n onBlur,\n onFocus,\n options,\n schema,\n rawErrors,\n } = props;\n\n // Memoize widget configuration\n const config = useMemo(() => ({\n isInteger: schema.type === 'integer',\n step: schema.type === 'integer' ? '1' : 'any',\n min: schema.minimum,\n max: schema.maximum,\n emptyValue: options?.emptyValue,\n }), [schema, options]);\n\n // Ensure value is valid number or empty string\n const safeValue = useMemo(() => {\n if (value === null || value === undefined || value === '') return '';\n if (typeof value === 'number' && !isNaN(value)) return value;\n return '';\n }, [value]);\n\n const hasError = useMemo(() => {\n return rawErrors && rawErrors.length > 0;\n }, [rawErrors]);\n\n const handleChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value;\n if (newValue === '') {\n onChange(config.emptyValue);\n } else {\n const parsedValue = config.isInteger\n ? parseInt(newValue, 10)\n : parseFloat(newValue);\n\n onChange(isNaN(parsedValue) ? config.emptyValue : parsedValue);\n }\n }, [onChange, config]);\n\n const handleBlur = useCallback((event: React.FocusEvent<HTMLInputElement>) => {\n onBlur(id, event.target.value);\n }, [id, onBlur]);\n\n const handleFocus = useCallback((event: React.FocusEvent<HTMLInputElement>) => {\n onFocus(id, event.target.value);\n }, [id, onFocus]);\n\n return (\n <Input\n id={id}\n type=\"number\"\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readonly}\n autoFocus={autofocus}\n value={safeValue}\n required={required}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n step={config.step}\n min={config.min}\n max={config.max}\n className={hasError ? 'border-destructive' : ''}\n />\n );\n}\n","import React from 'react';\n\nimport { Checkbox } from '@djangocfg/ui-core/components';\nimport { WidgetProps } from '@rjsf/utils';\n\n/**\n * Checkbox widget for JSON Schema Form\n * Handles boolean fields\n */\nexport function CheckboxWidget(props: WidgetProps) {\n const {\n id,\n value,\n disabled,\n readonly,\n autofocus,\n onChange,\n onBlur,\n onFocus,\n } = props;\n\n const handleChange = (checked: boolean) => {\n onChange(checked);\n };\n\n return (\n <Checkbox\n id={id}\n checked={value || false}\n disabled={disabled || readonly}\n autoFocus={autofocus}\n onCheckedChange={handleChange}\n onBlur={() => onBlur(id, value)}\n onFocus={() => onFocus(id, value)}\n />\n );\n}\n","\"use client\"\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport {\n Select, SelectContent, SelectItem, SelectTrigger, SelectValue\n} from '@djangocfg/ui-core/components';\nimport { WidgetProps } from '@rjsf/utils';\n\n/**\n * Select dropdown widget for JSON Schema Form\n * Handles enum fields\n */\nexport function SelectWidget(props: WidgetProps) {\n const {\n id,\n options,\n value,\n required,\n disabled,\n readonly,\n autofocus,\n onChange,\n onBlur,\n onFocus,\n placeholder,\n rawErrors,\n } = props;\n\n // Safely extract and validate enum options\n const enumOptions = useMemo(() => {\n const opts = options?.enumOptions;\n if (!Array.isArray(opts)) return [];\n return opts.filter(opt => opt && (opt.value !== undefined));\n }, [options]);\n\n const hasError = useMemo(() => {\n return rawErrors && rawErrors.length > 0;\n }, [rawErrors]);\n\n // Ensure value is always a string\n const safeValue = useMemo(() => {\n if (value === null || value === undefined) return '';\n return String(value);\n }, [value]);\n\n const handleChange = useCallback((newValue: string) => {\n onChange(newValue);\n onBlur(id, newValue);\n }, [onChange, onBlur, id]);\n\n // If no enum options, render a text input instead\n // This handles cases like anyOf/oneOf where RJSF might incorrectly use SelectWidget\n if (enumOptions.length === 0) {\n return (\n <input\n id={id}\n type=\"text\"\n value={safeValue}\n onChange={(e) => onChange(e.target.value)}\n onBlur={(e) => onBlur(id, e.target.value)}\n onFocus={(e) => onFocus(id, e.target.value)}\n disabled={disabled || readonly}\n readOnly={readonly}\n className={`flex h-10 w-full rounded-md border ${\n hasError ? 'border-destructive' : 'border-input'\n } bg-transparent px-3 py-2 text-base shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm`}\n placeholder={placeholder}\n />\n );\n }\n\n return (\n <Select\n value={safeValue}\n onValueChange={handleChange}\n disabled={disabled || readonly}\n required={required}\n >\n <SelectTrigger\n id={id}\n className={hasError ? 'border-destructive' : ''}\n autoFocus={autofocus}\n onFocus={() => onFocus(id, value)}\n >\n <SelectValue placeholder={placeholder || 'Select an option'} />\n </SelectTrigger>\n <SelectContent>\n {enumOptions.map((option: any) => (\n <SelectItem key={String(option.value)} value={String(option.value)}>\n {option.label || String(option.value)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n}\n","import React from 'react';\n\nimport { Switch } from '@djangocfg/ui-core/components';\nimport { WidgetProps } from '@rjsf/utils';\n\n/**\n * Switch toggle widget for JSON Schema Form\n * Alternative boolean input\n */\nexport function SwitchWidget(props: WidgetProps) {\n const {\n id,\n value,\n disabled,\n readonly,\n onChange,\n onBlur,\n onFocus,\n } = props;\n\n const handleChange = (checked: boolean) => {\n onChange(checked);\n };\n\n return (\n <Switch\n id={id}\n checked={value || false}\n disabled={disabled || readonly}\n onCheckedChange={handleChange}\n onBlur={() => onBlur(id, value)}\n onFocus={() => onFocus(id, value)}\n />\n );\n}\n","\"use client\"\n\nimport React, { useCallback, useMemo, useRef } from 'react';\n\nimport { Input } from '@djangocfg/ui-core/components';\nimport { useAppT } from '@djangocfg/i18n';\nimport { WidgetProps } from '@rjsf/utils';\n\n/**\n * Color input widget for JSON Schema Form\n * Supports HSL format (h s% l%) and HEX format\n * Click on color box to open native color picker directly\n */\nexport function ColorWidget(props: WidgetProps) {\n const {\n id,\n placeholder,\n required,\n disabled,\n readonly,\n autofocus,\n value,\n onChange,\n onBlur,\n onFocus,\n options,\n rawErrors,\n } = props;\n\n const t = useAppT();\n const pickColorLabel = useMemo(() => t('tools.color.pick'), [t]);\n const colorInputRef = useRef<HTMLInputElement>(null);\n\n // Determine format from options or auto-detect from value\n const format = useMemo(() => {\n if (options?.format) return options.format as 'hsl' | 'hex';\n if (typeof value === 'string' && value.startsWith('#')) return 'hex';\n return 'hsl';\n }, [options?.format, value]);\n\n // Ensure value is always a string\n const safeValue = useMemo(() => {\n if (value === null || value === undefined) return '';\n return String(value);\n }, [value]);\n\n // Convert HSL string (like \"217 91% 60%\") to CSS hsl() value\n const hslToCss = useCallback((hslValue: string): string => {\n if (!hslValue) return 'transparent';\n if (hslValue.startsWith('#')) return hslValue;\n if (hslValue.startsWith('hsl')) return hslValue;\n // Format: \"h s% l%\" -> \"hsl(h, s%, l%)\"\n const parts = hslValue.split(' ');\n if (parts.length === 3) {\n return `hsl(${parts[0]}, ${parts[1]}, ${parts[2]})`;\n }\n return 'transparent';\n }, []);\n\n // Convert CSS color to preview color\n const previewColor = useMemo(() => {\n return hslToCss(safeValue);\n }, [safeValue, hslToCss]);\n\n // Convert hex to HSL string for internal storage\n const hexToHsl = useCallback((hex: string): string => {\n // Remove # if present\n hex = hex.replace('#', '');\n\n // Parse hex values\n const r = parseInt(hex.substring(0, 2), 16) / 255;\n const g = parseInt(hex.substring(2, 4), 16) / 255;\n const b = parseInt(hex.substring(4, 6), 16) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = ((g - b) / d + (g < b ? 6 : 0)) / 6;\n break;\n case g:\n h = ((b - r) / d + 2) / 6;\n break;\n case b:\n h = ((r - g) / d + 4) / 6;\n break;\n }\n }\n\n return `${Math.round(h * 360)} ${Math.round(s * 100)}% ${Math.round(l * 100)}%`;\n }, []);\n\n // Convert HSL to hex\n const hslToHex = useCallback((hslValue: string): string => {\n if (!hslValue || hslValue.startsWith('#')) return hslValue || '#000000';\n\n const parts = hslValue.split(' ');\n if (parts.length !== 3) return '#000000';\n\n const h = parseInt(parts[0]) / 360;\n const s = parseInt(parts[1].replace('%', '')) / 100;\n const l = parseInt(parts[2].replace('%', '')) / 100;\n\n const hue2rgb = (p: number, q: number, t: number) => {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1/6) return p + (q - p) * 6 * t;\n if (t < 1/2) return q;\n if (t < 2/3) return p + (q - p) * (2/3 - t) * 6;\n return p;\n };\n\n let r, g, b;\n if (s === 0) {\n r = g = b = l;\n } else {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n\n const toHex = (x: number) => {\n const hex = Math.round(x * 255).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n };\n\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n }, []);\n\n const hasError = useMemo(() => {\n return rawErrors && rawErrors.length > 0;\n }, [rawErrors]);\n\n const handleChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value;\n onChange(newValue);\n }, [onChange]);\n\n const handleColorPickerChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n const hexValue = event.target.value;\n if (format === 'hsl') {\n onChange(hexToHsl(hexValue));\n } else {\n onChange(hexValue);\n }\n }, [onChange, format, hexToHsl]);\n\n const handleBlur = useCallback((event: React.FocusEvent<HTMLInputElement>) => {\n onBlur(id, event.target.value);\n }, [id, onBlur]);\n\n const handleFocus = useCallback((event: React.FocusEvent<HTMLInputElement>) => {\n onFocus(id, event.target.value);\n }, [id, onFocus]);\n\n // Get hex value for native color picker\n const hexValue = useMemo(() => {\n if (format === 'hex' || safeValue.startsWith('#')) {\n return safeValue || '#000000';\n }\n return hslToHex(safeValue);\n }, [safeValue, format, hslToHex]);\n\n // Click on color box opens native color picker\n const handleColorBoxClick = useCallback(() => {\n if (!disabled && !readonly) {\n colorInputRef.current?.click();\n }\n }, [disabled, readonly]);\n\n return (\n <div className=\"flex items-center gap-2\">\n {/* Color preview box - clicking opens native picker */}\n <div className=\"relative\">\n <button\n type=\"button\"\n onClick={handleColorBoxClick}\n disabled={disabled || readonly}\n className=\"h-10 w-10 shrink-0 rounded-md border-2 border-input cursor-pointer hover:border-ring focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\"\n style={{ backgroundColor: previewColor }}\n aria-label={pickColorLabel}\n />\n {/* Hidden native color input */}\n <input\n ref={colorInputRef}\n type=\"color\"\n value={hexValue}\n onChange={handleColorPickerChange}\n className=\"absolute inset-0 opacity-0 w-full h-full cursor-pointer\"\n disabled={disabled || readonly}\n tabIndex={-1}\n />\n </div>\n\n {/* Text input for manual HSL/HEX entry */}\n <Input\n id={id}\n type=\"text\"\n placeholder={placeholder || (format === 'hsl' ? '217 91% 60%' : '#3b82f6')}\n disabled={disabled}\n readOnly={readonly}\n autoFocus={autofocus}\n value={safeValue}\n required={required}\n onChange={handleChange}\n onBlur={handleBlur}\n onFocus={handleFocus}\n className={`flex-1 font-mono text-sm ${hasError ? 'border-destructive' : ''}`}\n />\n </div>\n );\n}\n","\"use client\"\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Input, Slider } from '@djangocfg/ui-core/components';\nimport { cn } from '@djangocfg/ui-core/lib';\nimport { WidgetProps } from '@rjsf/utils';\n\n/**\n * Slider widget for JSON Schema Form\n *\n * Supports:\n * - number/integer types\n * - min/max from schema\n * - step from schema or options\n * - unit suffix (e.g., \"rem\", \"px\", \"%\")\n * - optional text input for precise values\n *\n * Usage in uiSchema:\n * ```json\n * {\n * \"radius\": {\n * \"ui:widget\": \"slider\",\n * \"ui:options\": {\n * \"unit\": \"rem\",\n * \"showInput\": true,\n * \"step\": 0.125\n * }\n * }\n * }\n * ```\n */\nexport function SliderWidget(props: WidgetProps) {\n const {\n id,\n disabled,\n readonly,\n value,\n onChange,\n schema,\n options,\n rawErrors,\n } = props;\n\n // Extract configuration\n const config = useMemo(() => {\n const min = schema.minimum ?? options?.min ?? 0;\n const max = schema.maximum ?? options?.max ?? 100;\n const step = options?.step ?? (schema.type === 'integer' ? 1 : 0.1);\n const unit = options?.unit as string | undefined;\n const showInput = options?.showInput !== false; // default true\n\n return { min, max, step, unit, showInput };\n }, [schema, options]);\n\n // Parse value - handle string values like \"0.5rem\"\n const numericValue = useMemo(() => {\n if (value === null || value === undefined || value === '') {\n return config.min;\n }\n if (typeof value === 'number') {\n return value;\n }\n if (typeof value === 'string') {\n // Extract number from string like \"0.5rem\"\n const parsed = parseFloat(value);\n return isNaN(parsed) ? config.min : parsed;\n }\n return config.min;\n }, [value, config.min]);\n\n const hasError = useMemo(() => {\n return rawErrors && rawErrors.length > 0;\n }, [rawErrors]);\n\n // Handle slider change\n const handleSliderChange = useCallback((values: number[]) => {\n const newValue = values[0];\n if (config.unit) {\n onChange(`${newValue}${config.unit}`);\n } else {\n onChange(newValue);\n }\n }, [onChange, config.unit]);\n\n // Handle text input change\n const handleInputChange = useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = event.target.value;\n\n // If has unit, just store raw value with unit\n if (config.unit) {\n // Remove unit if user typed it, then add it back\n const cleanValue = inputValue.replace(config.unit, '').trim();\n const parsed = parseFloat(cleanValue);\n if (!isNaN(parsed)) {\n onChange(`${parsed}${config.unit}`);\n } else if (inputValue === '') {\n onChange(`${config.min}${config.unit}`);\n }\n } else {\n const parsed = parseFloat(inputValue);\n onChange(isNaN(parsed) ? config.min : parsed);\n }\n }, [onChange, config.unit, config.min]);\n\n // Display value with unit\n const displayValue = useMemo(() => {\n if (config.unit) {\n return `${numericValue}${config.unit}`;\n }\n return String(numericValue);\n }, [numericValue, config.unit]);\n\n return (\n <div className={cn('flex items-center gap-3', hasError && 'text-destructive')}>\n {/* Slider */}\n <Slider\n id={id}\n disabled={disabled || readonly}\n value={[numericValue]}\n onValueChange={handleSliderChange}\n min={config.min}\n max={config.max}\n step={config.step}\n className=\"flex-1\"\n />\n\n {/* Value input or display */}\n {config.showInput ? (\n <Input\n type=\"text\"\n value={displayValue}\n onChange={handleInputChange}\n disabled={disabled}\n readOnly={readonly}\n className={cn(\n 'w-20 text-center font-mono text-sm',\n hasError && 'border-destructive'\n )}\n />\n ) : (\n <span className=\"w-16 text-right font-mono text-sm text-muted-foreground\">\n {displayValue}\n </span>\n )}\n </div>\n );\n}\n","'use client';\n\nimport consola from 'consola';\nimport { isDev } from '@djangocfg/ui-core/lib';\nimport { AlertCircle } from 'lucide-react';\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Alert, AlertDescription, Button } from '@djangocfg/ui-core/components';\nimport Form from '@rjsf/core';\nimport { RegistryWidgetsType } from '@rjsf/utils';\nimport validator from '@rjsf/validator-ajv8';\n\nimport {\n ArrayFieldItemTemplate, ArrayFieldTemplate, BaseInputTemplate, ErrorListTemplate, FieldTemplate,\n ObjectFieldTemplate\n} from './templates';\nimport { JsonSchemaFormProps } from './types';\nimport { normalizeFormData, validateSchema } from './utils';\nimport {\n CheckboxWidget, ColorWidget, NumberWidget, SelectWidget, SliderWidget, SwitchWidget, TextWidget\n} from './widgets';\n\n/**\n * JSON Schema Form Component\n *\n * A fully-featured form generator that creates forms from JSON Schema.\n * Built on top of react-jsonschema-form with custom widgets and templates\n * using @djangocfg/ui components.\n *\n * @example\n * ```tsx\n * const schema = {\n * type: 'object',\n * required: ['name'],\n * properties: {\n * name: { type: 'string', title: 'Name' },\n * age: { type: 'number', title: 'Age' },\n * active: { type: 'boolean', title: 'Active' }\n * }\n * };\n *\n * <JsonSchemaForm\n * schema={schema}\n * onSubmit={(data) => console.log(data.formData)}\n * />\n * ```\n */\nexport function JsonSchemaForm<T = any>(props: JsonSchemaFormProps<T>) {\n const {\n schema,\n uiSchema,\n formData,\n onSubmit,\n onChange,\n onError,\n showErrorList = 'top',\n liveValidate = false,\n disabled = false,\n readonly = false,\n className,\n showSubmitButton = true,\n submitButtonText = 'Submit',\n ...restProps\n } = props;\n\n // Validate and normalize schema before render\n const validatedSchema = useMemo(() => {\n if (isDev) {\n consola.info('[JsonSchemaForm] Validating schema...', schema);\n }\n const result = validateSchema(schema);\n if (!result && isDev) {\n consola.error('[JsonSchemaForm] Schema validation failed');\n }\n return result;\n }, [schema]);\n\n // Normalize form data before render\n const normalizedFormData = useMemo(() => {\n if (!validatedSchema) {\n if (isDev) {\n consola.warn('[JsonSchemaForm] Cannot normalize formData - invalid schema');\n }\n return null;\n }\n if (isDev) {\n consola.info('[JsonSchemaForm] Normalizing formData...', formData);\n }\n const normalized = normalizeFormData<T>(formData, validatedSchema);\n if (isDev) {\n consola.info('[JsonSchemaForm] Normalized formData:', normalized);\n }\n return normalized;\n }, [formData, validatedSchema]);\n\n // Memoize widgets mapping to prevent recreation on every render\n // IMPORTANT: Widget keys must match RJSF's expected names:\n // - For type: string -> uses 'TextWidget' or 'text'\n // - For type: number/integer -> uses 'updown' or 'range'\n // - For type: boolean -> uses 'checkbox' or 'select'\n // - For enum fields -> uses 'SelectWidget' or 'select'\n const widgets: RegistryWidgetsType = useMemo(() => ({\n // Standard widget names (PascalCase) - used by RJSF internally\n TextWidget,\n NumberWidget,\n CheckboxWidget,\n SelectWidget,\n SwitchWidget,\n ColorWidget,\n SliderWidget,\n // Lowercase aliases - for uiSchema 'ui:widget' references\n text: TextWidget,\n number: NumberWidget,\n checkbox: CheckboxWidget,\n select: SelectWidget,\n switch: SwitchWidget,\n color: ColorWidget,\n slider: SliderWidget,\n range: SliderWidget, // alias\n }), []);\n\n // Memoize templates to prevent recreation on every render\n const templates = useMemo(() => ({\n FieldTemplate,\n ObjectFieldTemplate,\n ArrayFieldTemplate,\n ArrayFieldItemTemplate,\n ErrorListTemplate,\n BaseInputTemplate,\n }), []);\n\n // Memoize callbacks\n const handleSubmit = useCallback((data: any) => {\n if (onSubmit) {\n // Ensure clean data on submit\n const cleanData = {\n ...data,\n formData: normalizeFormData(data.formData, validatedSchema!),\n };\n onSubmit(cleanData);\n }\n }, [onSubmit, validatedSchema]);\n\n const handleChange = useCallback((data: any) => {\n if (onChange) {\n onChange(data);\n }\n }, [onChange]);\n\n const handleError = useCallback((errors: any) => {\n if (onError) {\n onError(errors);\n }\n }, [onError]);\n\n // Early return if schema is invalid\n if (!validatedSchema) {\n return (\n <div className={className}>\n <Alert variant=\"destructive\">\n <AlertCircle className=\"h-4 w-4\" />\n <AlertDescription>\n Invalid schema provided. Please check the schema format.\n </AlertDescription>\n </Alert>\n </div>\n );\n }\n\n return (\n <div className={className}>\n <Form\n schema={validatedSchema}\n uiSchema={uiSchema}\n formData={normalizedFormData}\n validator={validator}\n widgets={widgets}\n templates={templates}\n onSubmit={handleSubmit}\n onChange={handleChange}\n onError={handleError}\n showErrorList={showErrorList}\n liveValidate={liveValidate}\n disabled={disabled}\n readonly={readonly}\n {...restProps}\n >\n {showSubmitButton && (\n <div className=\"mt-6 flex gap-2\">\n <Button type=\"submit\" disabled={disabled}>\n {submitButtonText}\n </Button>\n </div>\n )}\n </Form>\n </div>\n );\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunk46VDB3BJ_cjs = require('./chunk-46VDB3BJ.cjs');
3
+ var chunkCXVGN6ZW_cjs = require('./chunk-CXVGN6ZW.cjs');
4
4
  require('./chunk-F2N7P5XU.cjs');
5
5
  require('./chunk-77HQWEQ6.cjs');
6
6
  require('./chunk-WGEGR3DF.cjs');
@@ -9,19 +9,19 @@ require('./chunk-WGEGR3DF.cjs');
9
9
 
10
10
  Object.defineProperty(exports, "VideoControls", {
11
11
  enumerable: true,
12
- get: function () { return chunk46VDB3BJ_cjs.VideoControls; }
12
+ get: function () { return chunkCXVGN6ZW_cjs.VideoControls; }
13
13
  });
14
14
  Object.defineProperty(exports, "VideoErrorFallback", {
15
15
  enumerable: true,
16
- get: function () { return chunk46VDB3BJ_cjs.VideoErrorFallback; }
16
+ get: function () { return chunkCXVGN6ZW_cjs.VideoErrorFallback; }
17
17
  });
18
18
  Object.defineProperty(exports, "VideoPlayer", {
19
19
  enumerable: true,
20
- get: function () { return chunk46VDB3BJ_cjs.VideoPlayer; }
20
+ get: function () { return chunkCXVGN6ZW_cjs.VideoPlayer; }
21
21
  });
22
22
  Object.defineProperty(exports, "createVideoErrorFallback", {
23
23
  enumerable: true,
24
- get: function () { return chunk46VDB3BJ_cjs.createVideoErrorFallback; }
24
+ get: function () { return chunkCXVGN6ZW_cjs.createVideoErrorFallback; }
25
25
  });
26
- //# sourceMappingURL=components-AALNUI3D.cjs.map
27
- //# sourceMappingURL=components-AALNUI3D.cjs.map
26
+ //# sourceMappingURL=components-3RTH76CV.cjs.map
27
+ //# sourceMappingURL=components-3RTH76CV.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"components-AALNUI3D.cjs"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"components-3RTH76CV.cjs"}
@@ -1,6 +1,6 @@
1
- export { VideoControls, VideoErrorFallback, VideoPlayer, createVideoErrorFallback } from './chunk-QKG4LERV.mjs';
1
+ export { VideoControls, VideoErrorFallback, VideoPlayer, createVideoErrorFallback } from './chunk-2QY3LJR6.mjs';
2
2
  import './chunk-JWB2EWQO.mjs';
3
3
  import './chunk-5LBDYFWH.mjs';
4
4
  import './chunk-CGILA3WO.mjs';
5
- //# sourceMappingURL=components-JOYIAXID.mjs.map
6
- //# sourceMappingURL=components-JOYIAXID.mjs.map
5
+ //# sourceMappingURL=components-OTK43IMD.mjs.map
6
+ //# sourceMappingURL=components-OTK43IMD.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"components-JOYIAXID.mjs"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"components-OTK43IMD.mjs"}
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkYZX6FH3H_cjs = require('./chunk-YZX6FH3H.cjs');
4
- var chunk46VDB3BJ_cjs = require('./chunk-46VDB3BJ.cjs');
4
+ var chunkCXVGN6ZW_cjs = require('./chunk-CXVGN6ZW.cjs');
5
5
  require('./chunk-F2N7P5XU.cjs');
6
6
  var chunkIHAY6FO6_cjs = require('./chunk-IHAY6FO6.cjs');
7
7
  var chunk77HQWEQ6_cjs = require('./chunk-77HQWEQ6.cjs');
@@ -9,7 +9,7 @@ var chunkF2CMIIOH_cjs = require('./chunk-F2CMIIOH.cjs');
9
9
  var chunkN7EDSU3Z_cjs = require('./chunk-N7EDSU3Z.cjs');
10
10
  var chunkTNTCWAVZ_cjs = require('./chunk-TNTCWAVZ.cjs');
11
11
  require('./chunk-G2A6SX5L.cjs');
12
- var chunkUYBYZXVD_cjs = require('./chunk-UYBYZXVD.cjs');
12
+ var chunkL37FZYJU_cjs = require('./chunk-L37FZYJU.cjs');
13
13
  var chunkPRPG2T2E_cjs = require('./chunk-PRPG2T2E.cjs');
14
14
  var chunkWGEGR3DF_cjs = require('./chunk-WGEGR3DF.cjs');
15
15
  var React3 = require('react');
@@ -737,7 +737,7 @@ var LazyOpenapiViewer = /* @__PURE__ */ chunkWGEGR3DF_cjs.__name(({ config }) =>
737
737
  }, "LazyOpenapiViewer");
738
738
  LazyOpenapiViewer.displayName = "LazyOpenapiViewer";
739
739
  var LazyJsonSchemaForm = createLazyComponent(
740
- () => import('./JsonSchemaForm-GZBFMEKR.cjs').then((mod) => ({ default: mod.JsonSchemaForm })),
740
+ () => import('./JsonSchemaForm-IIYKSH6X.cjs').then((mod) => ({ default: mod.JsonSchemaForm })),
741
741
  {
742
742
  displayName: "LazyJsonSchemaForm",
743
743
  fallback: /* @__PURE__ */ jsxRuntime.jsx(
@@ -835,7 +835,7 @@ function VideoLoadingFallback() {
835
835
  }
836
836
  chunkWGEGR3DF_cjs.__name(VideoLoadingFallback, "VideoLoadingFallback");
837
837
  var LazyVideoPlayer = createLazyComponent(
838
- () => import('./components-AALNUI3D.cjs').then((mod) => ({ default: mod.VideoPlayer })),
838
+ () => import('./components-3RTH76CV.cjs').then((mod) => ({ default: mod.VideoPlayer })),
839
839
  {
840
840
  displayName: "LazyVideoPlayer",
841
841
  fallback: /* @__PURE__ */ jsxRuntime.jsx(VideoLoadingFallback, {})
@@ -1047,55 +1047,55 @@ Object.defineProperty(exports, "useVisualization", {
1047
1047
  });
1048
1048
  Object.defineProperty(exports, "NativeProvider", {
1049
1049
  enumerable: true,
1050
- get: function () { return chunk46VDB3BJ_cjs.NativeProvider; }
1050
+ get: function () { return chunkCXVGN6ZW_cjs.NativeProvider; }
1051
1051
  });
1052
1052
  Object.defineProperty(exports, "StreamProvider", {
1053
1053
  enumerable: true,
1054
- get: function () { return chunk46VDB3BJ_cjs.StreamProvider; }
1054
+ get: function () { return chunkCXVGN6ZW_cjs.StreamProvider; }
1055
1055
  });
1056
1056
  Object.defineProperty(exports, "VideoControls", {
1057
1057
  enumerable: true,
1058
- get: function () { return chunk46VDB3BJ_cjs.VideoControls; }
1058
+ get: function () { return chunkCXVGN6ZW_cjs.VideoControls; }
1059
1059
  });
1060
1060
  Object.defineProperty(exports, "VideoErrorFallback", {
1061
1061
  enumerable: true,
1062
- get: function () { return chunk46VDB3BJ_cjs.VideoErrorFallback; }
1062
+ get: function () { return chunkCXVGN6ZW_cjs.VideoErrorFallback; }
1063
1063
  });
1064
1064
  Object.defineProperty(exports, "VideoPlayer", {
1065
1065
  enumerable: true,
1066
- get: function () { return chunk46VDB3BJ_cjs.VideoPlayer; }
1066
+ get: function () { return chunkCXVGN6ZW_cjs.VideoPlayer; }
1067
1067
  });
1068
1068
  Object.defineProperty(exports, "VideoPlayerProvider", {
1069
1069
  enumerable: true,
1070
- get: function () { return chunk46VDB3BJ_cjs.VideoPlayerProvider; }
1070
+ get: function () { return chunkCXVGN6ZW_cjs.VideoPlayerProvider; }
1071
1071
  });
1072
1072
  Object.defineProperty(exports, "VidstackProvider", {
1073
1073
  enumerable: true,
1074
- get: function () { return chunk46VDB3BJ_cjs.VidstackProvider; }
1074
+ get: function () { return chunkCXVGN6ZW_cjs.VidstackProvider; }
1075
1075
  });
1076
1076
  Object.defineProperty(exports, "createVideoErrorFallback", {
1077
1077
  enumerable: true,
1078
- get: function () { return chunk46VDB3BJ_cjs.createVideoErrorFallback; }
1078
+ get: function () { return chunkCXVGN6ZW_cjs.createVideoErrorFallback; }
1079
1079
  });
1080
1080
  Object.defineProperty(exports, "isSimpleStreamSource", {
1081
1081
  enumerable: true,
1082
- get: function () { return chunk46VDB3BJ_cjs.isSimpleStreamSource; }
1082
+ get: function () { return chunkCXVGN6ZW_cjs.isSimpleStreamSource; }
1083
1083
  });
1084
1084
  Object.defineProperty(exports, "resolveFileSource", {
1085
1085
  enumerable: true,
1086
- get: function () { return chunk46VDB3BJ_cjs.resolveFileSource; }
1086
+ get: function () { return chunkCXVGN6ZW_cjs.resolveFileSource; }
1087
1087
  });
1088
1088
  Object.defineProperty(exports, "resolvePlayerMode", {
1089
1089
  enumerable: true,
1090
- get: function () { return chunk46VDB3BJ_cjs.resolvePlayerMode; }
1090
+ get: function () { return chunkCXVGN6ZW_cjs.resolvePlayerMode; }
1091
1091
  });
1092
1092
  Object.defineProperty(exports, "resolveStreamSource", {
1093
1093
  enumerable: true,
1094
- get: function () { return chunk46VDB3BJ_cjs.resolveStreamSource; }
1094
+ get: function () { return chunkCXVGN6ZW_cjs.resolveStreamSource; }
1095
1095
  });
1096
1096
  Object.defineProperty(exports, "useVideoPlayerContext", {
1097
1097
  enumerable: true,
1098
- get: function () { return chunk46VDB3BJ_cjs.useVideoPlayerContext; }
1098
+ get: function () { return chunkCXVGN6ZW_cjs.useVideoPlayerContext; }
1099
1099
  });
1100
1100
  Object.defineProperty(exports, "ImageViewer", {
1101
1101
  enumerable: true,
@@ -1215,91 +1215,91 @@ Object.defineProperty(exports, "JsonTree", {
1215
1215
  });
1216
1216
  Object.defineProperty(exports, "ArrayFieldItemTemplate", {
1217
1217
  enumerable: true,
1218
- get: function () { return chunkUYBYZXVD_cjs.ArrayFieldItemTemplate; }
1218
+ get: function () { return chunkL37FZYJU_cjs.ArrayFieldItemTemplate; }
1219
1219
  });
1220
1220
  Object.defineProperty(exports, "ArrayFieldTemplate", {
1221
1221
  enumerable: true,
1222
- get: function () { return chunkUYBYZXVD_cjs.ArrayFieldTemplate; }
1222
+ get: function () { return chunkL37FZYJU_cjs.ArrayFieldTemplate; }
1223
1223
  });
1224
1224
  Object.defineProperty(exports, "BaseInputTemplate", {
1225
1225
  enumerable: true,
1226
- get: function () { return chunkUYBYZXVD_cjs.BaseInputTemplate; }
1226
+ get: function () { return chunkL37FZYJU_cjs.BaseInputTemplate; }
1227
1227
  });
1228
1228
  Object.defineProperty(exports, "CheckboxWidget", {
1229
1229
  enumerable: true,
1230
- get: function () { return chunkUYBYZXVD_cjs.CheckboxWidget; }
1230
+ get: function () { return chunkL37FZYJU_cjs.CheckboxWidget; }
1231
1231
  });
1232
1232
  Object.defineProperty(exports, "ColorWidget", {
1233
1233
  enumerable: true,
1234
- get: function () { return chunkUYBYZXVD_cjs.ColorWidget; }
1234
+ get: function () { return chunkL37FZYJU_cjs.ColorWidget; }
1235
1235
  });
1236
1236
  Object.defineProperty(exports, "ErrorListTemplate", {
1237
1237
  enumerable: true,
1238
- get: function () { return chunkUYBYZXVD_cjs.ErrorListTemplate; }
1238
+ get: function () { return chunkL37FZYJU_cjs.ErrorListTemplate; }
1239
1239
  });
1240
1240
  Object.defineProperty(exports, "FieldTemplate", {
1241
1241
  enumerable: true,
1242
- get: function () { return chunkUYBYZXVD_cjs.FieldTemplate; }
1242
+ get: function () { return chunkL37FZYJU_cjs.FieldTemplate; }
1243
1243
  });
1244
1244
  Object.defineProperty(exports, "JsonSchemaForm", {
1245
1245
  enumerable: true,
1246
- get: function () { return chunkUYBYZXVD_cjs.JsonSchemaForm; }
1246
+ get: function () { return chunkL37FZYJU_cjs.JsonSchemaForm; }
1247
1247
  });
1248
1248
  Object.defineProperty(exports, "NumberWidget", {
1249
1249
  enumerable: true,
1250
- get: function () { return chunkUYBYZXVD_cjs.NumberWidget; }
1250
+ get: function () { return chunkL37FZYJU_cjs.NumberWidget; }
1251
1251
  });
1252
1252
  Object.defineProperty(exports, "ObjectFieldTemplate", {
1253
1253
  enumerable: true,
1254
- get: function () { return chunkUYBYZXVD_cjs.ObjectFieldTemplate; }
1254
+ get: function () { return chunkL37FZYJU_cjs.ObjectFieldTemplate; }
1255
1255
  });
1256
1256
  Object.defineProperty(exports, "SelectWidget", {
1257
1257
  enumerable: true,
1258
- get: function () { return chunkUYBYZXVD_cjs.SelectWidget; }
1258
+ get: function () { return chunkL37FZYJU_cjs.SelectWidget; }
1259
1259
  });
1260
1260
  Object.defineProperty(exports, "SliderWidget", {
1261
1261
  enumerable: true,
1262
- get: function () { return chunkUYBYZXVD_cjs.SliderWidget; }
1262
+ get: function () { return chunkL37FZYJU_cjs.SliderWidget; }
1263
1263
  });
1264
1264
  Object.defineProperty(exports, "SwitchWidget", {
1265
1265
  enumerable: true,
1266
- get: function () { return chunkUYBYZXVD_cjs.SwitchWidget; }
1266
+ get: function () { return chunkL37FZYJU_cjs.SwitchWidget; }
1267
1267
  });
1268
1268
  Object.defineProperty(exports, "TextWidget", {
1269
1269
  enumerable: true,
1270
- get: function () { return chunkUYBYZXVD_cjs.TextWidget; }
1270
+ get: function () { return chunkL37FZYJU_cjs.TextWidget; }
1271
1271
  });
1272
1272
  Object.defineProperty(exports, "getRequiredFields", {
1273
1273
  enumerable: true,
1274
- get: function () { return chunkUYBYZXVD_cjs.getRequiredFields; }
1274
+ get: function () { return chunkL37FZYJU_cjs.getRequiredFields; }
1275
1275
  });
1276
1276
  Object.defineProperty(exports, "hasRequiredFields", {
1277
1277
  enumerable: true,
1278
- get: function () { return chunkUYBYZXVD_cjs.hasRequiredFields; }
1278
+ get: function () { return chunkL37FZYJU_cjs.hasRequiredFields; }
1279
1279
  });
1280
1280
  Object.defineProperty(exports, "mergeDefaults", {
1281
1281
  enumerable: true,
1282
- get: function () { return chunkUYBYZXVD_cjs.mergeDefaults; }
1282
+ get: function () { return chunkL37FZYJU_cjs.mergeDefaults; }
1283
1283
  });
1284
1284
  Object.defineProperty(exports, "normalizeFormData", {
1285
1285
  enumerable: true,
1286
- get: function () { return chunkUYBYZXVD_cjs.normalizeFormData; }
1286
+ get: function () { return chunkL37FZYJU_cjs.normalizeFormData; }
1287
1287
  });
1288
1288
  Object.defineProperty(exports, "safeJsonParse", {
1289
1289
  enumerable: true,
1290
- get: function () { return chunkUYBYZXVD_cjs.safeJsonParse; }
1290
+ get: function () { return chunkL37FZYJU_cjs.safeJsonParse; }
1291
1291
  });
1292
1292
  Object.defineProperty(exports, "safeJsonStringify", {
1293
1293
  enumerable: true,
1294
- get: function () { return chunkUYBYZXVD_cjs.safeJsonStringify; }
1294
+ get: function () { return chunkL37FZYJU_cjs.safeJsonStringify; }
1295
1295
  });
1296
1296
  Object.defineProperty(exports, "validateRequiredFields", {
1297
1297
  enumerable: true,
1298
- get: function () { return chunkUYBYZXVD_cjs.validateRequiredFields; }
1298
+ get: function () { return chunkL37FZYJU_cjs.validateRequiredFields; }
1299
1299
  });
1300
1300
  Object.defineProperty(exports, "validateSchema", {
1301
1301
  enumerable: true,
1302
- get: function () { return chunkUYBYZXVD_cjs.validateSchema; }
1302
+ get: function () { return chunkL37FZYJU_cjs.validateSchema; }
1303
1303
  });
1304
1304
  Object.defineProperty(exports, "useLottie", {
1305
1305
  enumerable: true,
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  export { AudioReactiveCover, COLOR_SCHEMES, COLOR_SCHEME_INFO, EFFECT_ANIMATIONS, GlowEffect, HybridAudioPlayer, HybridAudioProvider, HybridSimplePlayer, HybridWaveform, INTENSITY_CONFIG, INTENSITY_INFO, MeshEffect, OrbsEffect, SpotlightEffect, VARIANT_INFO, VisualizationProvider, calculateGlowLayers, calculateMeshGradients, calculateOrbs, calculateSpotlight, formatTime, getColors, getEffectConfig, prepareEffectColors, useAudioBus, useAudioBusStore, useAudioVisualization, useHybridAudio, useHybridAudioAnalysis, useHybridAudioContext, useHybridAudioControls, useHybridAudioLevels, useHybridAudioState, useHybridWebAudio, useVisualization } from './chunk-HMHIVEMS.mjs';
2
- export { NativeProvider, StreamProvider, VideoControls, VideoErrorFallback, VideoPlayer, VideoPlayerProvider, VidstackProvider, createVideoErrorFallback, isSimpleStreamSource, resolveFileSource, resolvePlayerMode, resolveStreamSource, useVideoPlayerContext } from './chunk-QKG4LERV.mjs';
2
+ export { NativeProvider, StreamProvider, VideoControls, VideoErrorFallback, VideoPlayer, VideoPlayerProvider, VidstackProvider, createVideoErrorFallback, isSimpleStreamSource, resolveFileSource, resolvePlayerMode, resolveStreamSource, useVideoPlayerContext } from './chunk-2QY3LJR6.mjs';
3
3
  import './chunk-JWB2EWQO.mjs';
4
4
  export { ImageViewer } from './chunk-GGKGH5PM.mjs';
5
5
  export { generateContentKey, useAudioCache, useBlobUrlCleanup, useImageCache, useMediaCacheStore, useVideoCache, useVideoPlayerSettings } from './chunk-5LBDYFWH.mjs';
@@ -8,7 +8,7 @@ import { PlaygroundProvider, PrettyCode_default } from './chunk-TSDCMPCW.mjs';
8
8
  export { PrettyCode_default as PrettyCode } from './chunk-TSDCMPCW.mjs';
9
9
  export { JsonTree_default as JsonTree } from './chunk-C5PVPPR7.mjs';
10
10
  import './chunk-MBFBVGUP.mjs';
11
- export { ArrayFieldItemTemplate, ArrayFieldTemplate, BaseInputTemplate, CheckboxWidget, ColorWidget, ErrorListTemplate, FieldTemplate, JsonSchemaForm, NumberWidget, ObjectFieldTemplate, SelectWidget, SliderWidget, SwitchWidget, TextWidget, getRequiredFields, hasRequiredFields, mergeDefaults, normalizeFormData, safeJsonParse, safeJsonStringify, validateRequiredFields, validateSchema } from './chunk-TKB5BDPN.mjs';
11
+ export { ArrayFieldItemTemplate, ArrayFieldTemplate, BaseInputTemplate, CheckboxWidget, ColorWidget, ErrorListTemplate, FieldTemplate, JsonSchemaForm, NumberWidget, ObjectFieldTemplate, SelectWidget, SliderWidget, SwitchWidget, TextWidget, getRequiredFields, hasRequiredFields, mergeDefaults, normalizeFormData, safeJsonParse, safeJsonStringify, validateRequiredFields, validateSchema } from './chunk-JUGQNNDC.mjs';
12
12
  export { useLottie } from './chunk-6JTB2X72.mjs';
13
13
  import { __name } from './chunk-CGILA3WO.mjs';
14
14
  import * as React3 from 'react';
@@ -713,7 +713,7 @@ var LazyOpenapiViewer = /* @__PURE__ */ __name(({ config }) => {
713
713
  }, "LazyOpenapiViewer");
714
714
  LazyOpenapiViewer.displayName = "LazyOpenapiViewer";
715
715
  var LazyJsonSchemaForm = createLazyComponent(
716
- () => import('./JsonSchemaForm-ZTRWXMEF.mjs').then((mod) => ({ default: mod.JsonSchemaForm })),
716
+ () => import('./JsonSchemaForm-RN3XWSWX.mjs').then((mod) => ({ default: mod.JsonSchemaForm })),
717
717
  {
718
718
  displayName: "LazyJsonSchemaForm",
719
719
  fallback: /* @__PURE__ */ jsx(
@@ -811,7 +811,7 @@ function VideoLoadingFallback() {
811
811
  }
812
812
  __name(VideoLoadingFallback, "VideoLoadingFallback");
813
813
  var LazyVideoPlayer = createLazyComponent(
814
- () => import('./components-JOYIAXID.mjs').then((mod) => ({ default: mod.VideoPlayer })),
814
+ () => import('./components-OTK43IMD.mjs').then((mod) => ({ default: mod.VideoPlayer })),
815
815
  {
816
816
  displayName: "LazyVideoPlayer",
817
817
  fallback: /* @__PURE__ */ jsx(VideoLoadingFallback, {})
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@djangocfg/ui-tools",
3
- "version": "2.1.233",
3
+ "version": "2.1.235",
4
4
  "description": "Heavy React tools with lazy loading - for Electron, Vite, CRA, Next.js apps",
5
5
  "keywords": [
6
6
  "ui-tools",
@@ -78,8 +78,8 @@
78
78
  "check": "tsc --noEmit"
79
79
  },
80
80
  "peerDependencies": {
81
- "@djangocfg/i18n": "^2.1.233",
82
- "@djangocfg/ui-core": "^2.1.233",
81
+ "@djangocfg/i18n": "^2.1.235",
82
+ "@djangocfg/ui-core": "^2.1.235",
83
83
  "lucide-react": "^0.545.0",
84
84
  "react": "^19.1.0",
85
85
  "react-dom": "^19.1.0",
@@ -112,10 +112,10 @@
112
112
  "@maplibre/maplibre-gl-geocoder": "^1.7.0"
113
113
  },
114
114
  "devDependencies": {
115
- "@djangocfg/i18n": "^2.1.233",
115
+ "@djangocfg/i18n": "^2.1.235",
116
116
  "@djangocfg/playground": "workspace:*",
117
- "@djangocfg/typescript-config": "^2.1.233",
118
- "@djangocfg/ui-core": "^2.1.233",
117
+ "@djangocfg/typescript-config": "^2.1.235",
118
+ "@djangocfg/ui-core": "^2.1.235",
119
119
  "@types/mapbox__mapbox-gl-draw": "^1.4.8",
120
120
  "@types/node": "^24.7.2",
121
121
  "@types/react": "^19.1.0",