jsonforms-nuxt-ui-renderers 0.2.0 → 0.2.1

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.
package/README.md CHANGED
@@ -66,18 +66,50 @@ This package is intentionally small and opinionated: it ships a **single** rende
66
66
 
67
67
  ## Theming
68
68
 
69
- The package uses semantic class names (`jf-*`) for layout and typography. Override via:
69
+ The package uses semantic class names (`jf-*`) for layout and typography. Two ways to customize:
70
70
 
71
- 1. **CSS variables** Customize defaults by overriding variables in `:root` (see `styles.css`).
72
- 2. **Theme overrides** – Pass custom classes to `createNuxtUiRenderers`:
71
+ ### Option 1: Default styles + CSS variables
72
+
73
+ Import the default stylesheet and override variables in your app:
74
+
75
+ ```ts
76
+ import 'jsonforms-nuxt-ui-renderers/styles.css'
77
+ ```
78
+
79
+ CSS variables (in `styles.css`) you can override in `:root`:
80
+
81
+ | Variable | Default | Description |
82
+ |----------|---------|-------------|
83
+ | `--jf-panel-border` | `1px solid rgba(0,0,0,0.06)` | Panel border |
84
+ | `--jf-panel-border-radius` | `0.25rem` | Panel corner radius |
85
+ | `--jf-panel-padding` | `0.75rem` | Panel padding |
86
+ | `--jf-gap` | `0.75rem` | Layout gap |
87
+ | `--jf-gap-wide` | `1.5rem` | Wide layout gap |
88
+ | `--jf-label-section-size` | `0.875rem` | Label font size |
89
+ | `--jf-label-section-weight` | `600` | Label font weight |
90
+ | `--jf-text-muted-color` | `rgb(107 114 128)` | Muted text (light) |
91
+ | `--jf-text-muted-color-dark` | `rgb(156 163 175)` | Muted text (dark) |
92
+ | `--jf-text-item-title-color` | `rgb(55 65 81)` | Item title (light) |
93
+ | `--jf-text-item-title-color-dark` | `rgb(229 231 235)` | Item title (dark) |
94
+ | `--jf-text-label-color` | `rgb(75 85 99)` | Label (light) |
95
+ | `--jf-text-label-color-dark` | `rgb(209 213 219)` | Label (dark) |
96
+
97
+ ### Option 2: Theme overrides (e.g. Tailwind)
98
+
99
+ Pass custom classes to match your app. You can omit `styles.css` when using full overrides:
73
100
 
74
101
  ```ts
75
102
  import { createNuxtUiRenderers } from 'jsonforms-nuxt-ui-renderers'
76
103
 
77
104
  const renderers = createNuxtUiRenderers({
78
105
  theme: {
79
- panel: 'rounded border border-gray-200 p-3', // Tailwind
106
+ panel: 'rounded border border-default bg-muted/40 p-3',
107
+ groupNested: 'rounded bg-muted/20 p-3',
80
108
  layoutVertical: 'flex flex-col gap-3',
109
+ layoutHorizontal: 'flex flex-col gap-3 md:flex-row md:flex-wrap',
110
+ labelSection: 'text-sm font-semibold',
111
+ textMuted: 'text-sm text-muted',
112
+ // ... see NuxtUiRenderersTheme for all keys
81
113
  },
82
114
  })
83
115
  ```
package/dist/index.cjs CHANGED
@@ -20,6 +20,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
+ controlDescription: () => controlDescription,
23
24
  createNuxtUiRenderers: () => createNuxtUiRenderers,
24
25
  defaultTheme: () => defaultTheme,
25
26
  mergeTheme: () => mergeTheme,
@@ -42,6 +43,12 @@ function trimmedOrUndefined(input) {
42
43
  const v = input?.trim();
43
44
  return v ? v : void 0;
44
45
  }
46
+ function controlDescription(control) {
47
+ const d = control.description?.trim();
48
+ if (d) return d;
49
+ const sd = control.schema?.description;
50
+ return typeof sd === "string" && sd.trim() ? sd.trim() : void 0;
51
+ }
45
52
 
46
53
  // src/renderers/complex/NuxtUiArrayListRenderer.ts
47
54
  function createNuxtUiArrayListRenderer(theme) {
@@ -315,7 +322,7 @@ function createNuxtUiBooleanControl(theme) {
315
322
  UFormField,
316
323
  {
317
324
  label: control.value.label,
318
- description: control.value.description,
325
+ description: controlDescription(control.value),
319
326
  required: control.value.required,
320
327
  error: errorMessage.value
321
328
  },
@@ -386,7 +393,7 @@ var NuxtUiEnumControl = (0, import_vue9.defineComponent)({
386
393
  UFormField,
387
394
  {
388
395
  label: control.value.label,
389
- description: control.value.description,
396
+ description: controlDescription(control.value),
390
397
  required: control.value.required,
391
398
  error: errorMessage.value
392
399
  },
@@ -446,7 +453,7 @@ var NuxtUiIntegerControl = (0, import_vue11.defineComponent)({
446
453
  UFormField,
447
454
  {
448
455
  label: control.value.label,
449
- description: control.value.description,
456
+ description: controlDescription(control.value),
450
457
  required: control.value.required,
451
458
  error: errorMessage.value
452
459
  },
@@ -522,7 +529,7 @@ var NuxtUiMultiEnumControl = (0, import_vue13.defineComponent)({
522
529
  UFormField,
523
530
  {
524
531
  label: control.value.label,
525
- description: control.value.description,
532
+ description: controlDescription(control.value),
526
533
  required: control.value.required,
527
534
  error: errorMessage.value
528
535
  },
@@ -583,7 +590,7 @@ var NuxtUiNumberControl = (0, import_vue15.defineComponent)({
583
590
  UFormField,
584
591
  {
585
592
  label: control.value.label,
586
- description: control.value.description,
593
+ description: controlDescription(control.value),
587
594
  required: control.value.required,
588
595
  error: errorMessage.value
589
596
  },
@@ -629,7 +636,7 @@ var NuxtUiPasswordControl = (0, import_vue17.defineComponent)({
629
636
  UFormField,
630
637
  {
631
638
  label: control.value.label,
632
- description: control.value.description,
639
+ description: controlDescription(control.value),
633
640
  required: control.value.required,
634
641
  error: errorMessage.value
635
642
  },
@@ -691,7 +698,7 @@ var NuxtUiStringControl = (0, import_vue19.defineComponent)({
691
698
  UFormField,
692
699
  {
693
700
  label: control.value.label,
694
- description: control.value.description,
701
+ description: controlDescription(control.value),
695
702
  required: control.value.required,
696
703
  error: errorMessage.value
697
704
  },
@@ -733,7 +740,7 @@ var NuxtUiTextareaControl = (0, import_vue21.defineComponent)({
733
740
  UFormField,
734
741
  {
735
742
  label: control.value.label,
736
- description: control.value.description,
743
+ description: controlDescription(control.value),
737
744
  required: control.value.required,
738
745
  error: errorMessage.value
739
746
  },
@@ -1148,6 +1155,7 @@ function createNuxtUiRenderers(options) {
1148
1155
  var nuxtUiRenderers = createNuxtUiRenderers();
1149
1156
  // Annotate the CommonJS export names for ESM import in node:
1150
1157
  0 && (module.exports = {
1158
+ controlDescription,
1151
1159
  createNuxtUiRenderers,
1152
1160
  defaultTheme,
1153
1161
  mergeTheme,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/nuxtUiRenderers.ts","../src/renderers/complex/NuxtUiArrayListRenderer.ts","../src/renderers/util.ts","../src/renderers/complex/NuxtUiObjectRenderer.ts","../src/renderers/controls/NuxtUiBooleanControl.ts","../src/renderers/controls/NuxtUiEnumControl.ts","../src/renderers/controls/NuxtUiIntegerControl.ts","../src/renderers/controls/NuxtUiMultiEnumControl.ts","../src/renderers/controls/NuxtUiNumberControl.ts","../src/renderers/controls/NuxtUiPasswordControl.ts","../src/renderers/controls/NuxtUiStringControl.ts","../src/renderers/controls/NuxtUiTextareaControl.ts","../src/renderers/layouts/NuxtUiCategorizationRenderer.ts","../src/renderers/layouts/NuxtUiCategoryRenderer.ts","../src/renderers/layouts/NuxtUiGroupRenderer.ts","../src/renderers/layouts/NuxtUiHorizontalLayoutRenderer.ts","../src/renderers/layouts/NuxtUiLabelRenderer.ts","../src/renderers/layouts/NuxtUiVerticalLayoutRenderer.ts","../src/renderers/theme.ts"],"sourcesContent":["export {\n createNuxtUiRenderers,\n nuxtUiRenderers,\n} from './nuxtUiRenderers'\nexport type { CreateNuxtUiRenderersOptions } from './nuxtUiRenderers'\nexport type { JsonFormsRendererRegistryEntry } from '@jsonforms/core'\nexport {\n defaultTheme,\n mergeTheme,\n type NuxtUiRenderersTheme,\n} from './renderers/theme'\n","import type { JsonFormsRendererRegistryEntry } from '@jsonforms/core'\nimport {\n and,\n formatIs,\n isBooleanControl,\n isEnumControl,\n isEnumSchema,\n isIntegerControl,\n isMultiLineControl,\n isNumberControl,\n isObjectControl,\n isStringControl,\n rankWith,\n Resolve,\n schemaTypeIs,\n uiTypeIs,\n} from '@jsonforms/core'\nimport { markRaw } from 'vue'\n\nimport { createNuxtUiArrayListRenderer } from './renderers/complex/NuxtUiArrayListRenderer'\nimport { NuxtUiObjectRenderer } from './renderers/complex/NuxtUiObjectRenderer'\nimport { createNuxtUiBooleanControl } from './renderers/controls/NuxtUiBooleanControl'\nimport { NuxtUiEnumControl } from './renderers/controls/NuxtUiEnumControl'\nimport { NuxtUiIntegerControl } from './renderers/controls/NuxtUiIntegerControl'\nimport { NuxtUiMultiEnumControl } from './renderers/controls/NuxtUiMultiEnumControl'\nimport { NuxtUiNumberControl } from './renderers/controls/NuxtUiNumberControl'\nimport { NuxtUiPasswordControl } from './renderers/controls/NuxtUiPasswordControl'\nimport { NuxtUiStringControl } from './renderers/controls/NuxtUiStringControl'\nimport { NuxtUiTextareaControl } from './renderers/controls/NuxtUiTextareaControl'\nimport { createNuxtUiCategorizationRenderer } from './renderers/layouts/NuxtUiCategorizationRenderer'\nimport { createNuxtUiCategoryRenderer } from './renderers/layouts/NuxtUiCategoryRenderer'\nimport { createNuxtUiGroupRenderer } from './renderers/layouts/NuxtUiGroupRenderer'\nimport { createNuxtUiHorizontalLayoutRenderer } from './renderers/layouts/NuxtUiHorizontalLayoutRenderer'\nimport { createNuxtUiLabelRenderer } from './renderers/layouts/NuxtUiLabelRenderer'\nimport { createNuxtUiVerticalLayoutRenderer } from './renderers/layouts/NuxtUiVerticalLayoutRenderer'\nimport {\n mergeTheme,\n type NuxtUiRenderersTheme,\n} from './renderers/theme'\n\n// Intentionally rank higher than typical defaults.\nconst RANK = 10\nconst ENUM_RANK = RANK + 1\nconst PASSWORD_RANK = ENUM_RANK + 1\n\nconst isMultiEnumControl = (\n uischema: unknown,\n schema: unknown,\n context: unknown,\n): boolean => {\n if (!uiTypeIs('Control')(uischema as any, schema as any, context as any)) {\n return false\n }\n\n const scope = (uischema as any)?.scope\n if (typeof scope !== 'string') return false\n\n // JSONForms passes the root schema into testers, but different call sites can\n // vary. Resolve against whatever we have, preferring the provided rootSchema.\n const rootSchema = (context as any)?.rootSchema ?? (schema as any)\n let resolved: any\n try {\n resolved = Resolve.schema(schema as any, scope, rootSchema)\n } catch {\n return false\n }\n\n if (resolved?.type !== 'array') return false\n\n const items = resolved?.items\n if (!items) return false\n\n // JSON Schema `items` can be a schema or an array of schemas.\n if (Array.isArray(items)) return false\n if (typeof items !== 'object' || items === null) return false\n\n const resolvedItems =\n '$ref' in items && typeof (items as any).$ref === 'string'\n ? Resolve.schema(rootSchema, (items as any).$ref, rootSchema)\n : items\n\n return isEnumSchema(resolvedItems as any)\n}\n\n/** Matches oneOf: [{ const, title? }, ...] - enum-like schema with display labels. */\nconst isOneOfEnumControl = (\n uischema: unknown,\n schema: unknown,\n context: unknown,\n): boolean => {\n if (!uiTypeIs('Control')(uischema as any, schema as any, context as any)) {\n return false\n }\n\n const scope = (uischema as any)?.scope\n if (typeof scope !== 'string') return false\n\n const rootSchema = (context as any)?.rootSchema ?? (schema as any)\n let resolved: any\n try {\n resolved = Resolve.schema(schema as any, scope, rootSchema)\n } catch {\n return false\n }\n\n const oneOf = resolved?.oneOf\n if (!Array.isArray(oneOf) || oneOf.length === 0) return false\n\n for (const entry of oneOf) {\n if (typeof entry !== 'object' || entry === null) continue\n if (!('const' in (entry as Record<string, unknown>))) return false\n }\n return true\n}\n\nexport interface CreateNuxtUiRenderersOptions {\n /** Override theme classes. Use semantic jf-* or custom (Tailwind, etc.). */\n theme?: Partial<NuxtUiRenderersTheme>\n}\n\nexport function createNuxtUiRenderers(\n options?: CreateNuxtUiRenderersOptions,\n): JsonFormsRendererRegistryEntry[] {\n const theme = mergeTheme(options?.theme)\n\n return [\n // Layouts\n {\n tester: rankWith(RANK, uiTypeIs('VerticalLayout')),\n renderer: markRaw(createNuxtUiVerticalLayoutRenderer(theme)),\n },\n {\n tester: rankWith(RANK, uiTypeIs('HorizontalLayout')),\n renderer: markRaw(createNuxtUiHorizontalLayoutRenderer(theme)),\n },\n {\n tester: rankWith(RANK, uiTypeIs('Group')),\n renderer: markRaw(createNuxtUiGroupRenderer(theme)),\n },\n {\n tester: rankWith(RANK, uiTypeIs('Categorization')),\n renderer: markRaw(createNuxtUiCategorizationRenderer(theme)),\n },\n {\n tester: rankWith(RANK, uiTypeIs('Category')),\n renderer: markRaw(createNuxtUiCategoryRenderer(theme)),\n },\n {\n tester: rankWith(RANK, uiTypeIs('Label')),\n renderer: markRaw(createNuxtUiLabelRenderer(theme)),\n },\n\n // Complex schemas\n {\n tester: rankWith(RANK, schemaTypeIs('array')),\n renderer: markRaw(createNuxtUiArrayListRenderer(theme)),\n },\n {\n tester: rankWith(RANK, isObjectControl),\n renderer: markRaw(NuxtUiObjectRenderer),\n },\n\n // Primitive controls\n {\n tester: rankWith(RANK, isMultiLineControl),\n renderer: markRaw(NuxtUiTextareaControl),\n },\n {\n tester: rankWith(RANK, isNumberControl),\n renderer: markRaw(NuxtUiNumberControl),\n },\n {\n tester: rankWith(RANK, isIntegerControl),\n renderer: markRaw(NuxtUiIntegerControl),\n },\n {\n tester: rankWith(RANK, isBooleanControl),\n renderer: markRaw(createNuxtUiBooleanControl(theme)),\n },\n {\n // Multi-enum must outrank generic array renderer and string renderer.\n tester: rankWith(ENUM_RANK, isMultiEnumControl),\n renderer: markRaw(NuxtUiMultiEnumControl),\n },\n {\n // oneOf with const+title (display labels) - same as enum for rendering.\n tester: rankWith(ENUM_RANK, isOneOfEnumControl),\n renderer: markRaw(NuxtUiEnumControl),\n },\n {\n // Enum must outrank the generic string control, otherwise enums render\n // as freeform text inputs.\n tester: rankWith(ENUM_RANK, isEnumControl),\n renderer: markRaw(NuxtUiEnumControl),\n },\n {\n tester: rankWith(PASSWORD_RANK, and(isStringControl, formatIs('password'))),\n renderer: markRaw(NuxtUiPasswordControl),\n },\n {\n tester: rankWith(RANK, isStringControl),\n renderer: markRaw(NuxtUiStringControl),\n },\n ]\n}\n\n/** Default renderers with semantic theme. Import styles.css for default styling. */\nexport const nuxtUiRenderers: JsonFormsRendererRegistryEntry[] =\n createNuxtUiRenderers()\n","import type { ControlElement, JsonSchema, UISchemaElement } from '@jsonforms/core'\nimport {\n Resolve,\n composePaths,\n createDefaultValue,\n findUISchema,\n getFirstPrimitiveProp,\n} from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsArrayControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { trimmedOrUndefined } from '../util'\n\nexport function createNuxtUiArrayListRenderer(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiArrayListRenderer',\n components: { DispatchRenderer },\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, addItem, removeItems, moveUp, moveDown } =\n useJsonFormsArrayControl(\n props as unknown as Parameters<typeof useJsonFormsArrayControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n const items = computed<unknown[]>(() =>\n Array.isArray(control.value.data) ? control.value.data : [],\n )\n\n const arraySchema = computed<JsonSchema | undefined>(() => {\n try {\n return Resolve.schema(\n props.schema,\n control.value.uischema.scope,\n control.value.rootSchema,\n )\n } catch {\n return undefined\n }\n })\n\n const maxItemsReached = computed(() => {\n const max = arraySchema.value?.maxItems\n return typeof max === 'number' ? items.value.length >= max : false\n })\n\n const minItemsReached = computed(() => {\n const min = arraySchema.value?.minItems\n return typeof min === 'number' ? items.value.length <= min : false\n })\n\n const childUiSchema = computed<UISchemaElement>(() =>\n findUISchema(\n control.value.uischemas,\n control.value.schema,\n control.value.uischema.scope,\n control.value.path,\n undefined,\n control.value.uischema,\n control.value.rootSchema,\n ),\n )\n\n function childLabelForIndex(index: number): string {\n const childLabelProp =\n getChildLabelPropFromUiSchemaOptions(control.value.uischema.options) ??\n getFirstPrimitiveProp(control.value.schema)\n\n if (!childLabelProp) return `${index}`\n\n const labelValue = Resolve.data(\n control.value.data,\n composePaths(`${index}`, childLabelProp),\n )\n if (\n labelValue === undefined ||\n labelValue === null ||\n Number.isNaN(labelValue as any)\n ) {\n return ''\n }\n return String(labelValue)\n }\n\n function getChildLabelPropFromUiSchemaOptions(\n options: unknown,\n ): string | undefined {\n if (!options || typeof options !== 'object') return undefined\n const value = (options as Record<string, unknown>).childLabelProp\n return typeof value === 'string' ? value : undefined\n }\n\n function addButtonClick() {\n addItem(\n control.value.path,\n createDefaultValue(control.value.schema, control.value.rootSchema),\n )()\n }\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UButton = resolveComponent('UButton')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: control.value.description,\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h('div', { class: theme.layoutVertical }, [\n h('div', { class: theme.flexBetween }, [\n h(\n 'div',\n { class: theme.textMutedXs },\n `${items.value.length} items`,\n ),\n h(\n UButton as any,\n {\n type: 'button',\n size: 'xs',\n variant: 'soft',\n color: 'neutral',\n disabled:\n !control.value.enabled || maxItemsReached.value,\n onClick: addButtonClick,\n },\n { default: () => 'Add' },\n ),\n ]),\n\n items.value.length === 0\n ? h('div', { class: theme.textMuted }, 'No items.')\n : null,\n\n ...items.value.map((_item, index) =>\n h(\n 'div',\n {\n key: `${control.value.path}-${index}`,\n class: theme.panel,\n },\n [\n h(\n 'div',\n { class: theme.arrayItemToolbar },\n [\n h('div', { class: 'jf-min-w-0' }, [\n h(\n 'div',\n { class: theme.textItemTitle },\n [\n `Item ${index + 1}`,\n childLabelForIndex(index)\n ? h(\n 'span',\n { class: theme.textItemSuffix },\n ` — ${childLabelForIndex(index)}`,\n )\n : null,\n ],\n ),\n ]),\n h('div', { class: theme.flexActions }, [\n h(\n UButton as any,\n {\n type: 'button',\n size: 'xs',\n variant: 'ghost',\n color: 'neutral',\n disabled:\n !control.value.enabled || index === 0,\n onClick: () =>\n moveUp?.(control.value.path, index)(),\n },\n { default: () => 'Up' },\n ),\n h(\n UButton as any,\n {\n type: 'button',\n size: 'xs',\n variant: 'ghost',\n color: 'neutral',\n disabled:\n !control.value.enabled ||\n index >= items.value.length - 1,\n onClick: () =>\n moveDown?.(control.value.path, index)(),\n },\n { default: () => 'Down' },\n ),\n h(\n UButton as any,\n {\n type: 'button',\n size: 'xs',\n variant: 'ghost',\n color: 'error',\n disabled:\n !control.value.enabled ||\n minItemsReached.value,\n onClick: () =>\n removeItems?.(control.value.path, [\n index,\n ])(),\n },\n { default: () => 'Remove' },\n ),\n ]),\n ],\n ),\n\n h(DispatchRenderer as any, {\n schema: control.value.schema,\n uischema: childUiSchema.value,\n path: composePaths(control.value.path, `${index}`),\n enabled: control.value.enabled,\n renderers: control.value.renderers,\n cells: control.value.cells,\n }),\n ],\n ),\n ),\n ]),\n },\n ),\n )\n }\n },\n })\n}\n","import { computed, type ComputedRef } from 'vue'\n\nexport function trimmedOrUndefined(input: string | undefined): string | undefined {\n const v = input?.trim()\n return v ? v : undefined\n}\n\nexport function errorFromControl(\n control: ComputedRef<{ errors: string }>,\n): ComputedRef<string | undefined> {\n return computed(() => trimmedOrUndefined(control.value.errors))\n}\n\n","import type { ControlElement, GroupLayout, UISchemaElement } from '@jsonforms/core'\nimport { Generate, findUISchema } from '@jsonforms/core'\nimport {\n DispatchRenderer,\n rendererProps,\n useJsonFormsControlWithDetail,\n} from '@jsonforms/vue'\nimport { computed, defineComponent, h } from 'vue'\n\nexport const NuxtUiObjectRenderer = defineComponent({\n name: 'NuxtUiObjectRenderer',\n components: { DispatchRenderer },\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control } = useJsonFormsControlWithDetail(\n props as unknown as Parameters<typeof useJsonFormsControlWithDetail>[0],\n )\n\n const detailUiSchema = computed<UISchemaElement>(() => {\n const uiSchemaGenerator = () => {\n const uiSchema = Generate.uiSchema(\n control.value.schema,\n 'Group',\n undefined,\n control.value.rootSchema,\n )\n\n if (!control.value.path) {\n uiSchema.type = 'VerticalLayout'\n } else {\n ;(uiSchema as GroupLayout).label = control.value.label\n }\n return uiSchema\n }\n\n return findUISchema(\n control.value.uischemas,\n control.value.schema,\n control.value.uischema.scope,\n control.value.path,\n uiSchemaGenerator,\n control.value.uischema,\n control.value.rootSchema,\n )\n })\n\n return () => {\n if (!control.value.visible) return null\n\n return h(DispatchRenderer as any, {\n visible: control.value.visible,\n enabled: control.value.enabled,\n schema: control.value.schema,\n uischema: detailUiSchema.value,\n path: control.value.path,\n renderers: control.value.renderers,\n cells: control.value.cells,\n })\n }\n },\n})\n\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { trimmedOrUndefined } from '../util'\n\nexport function createNuxtUiBooleanControl(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiBooleanControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n const modelValue = computed<boolean>({\n get: () => Boolean(control.value.data),\n set: (v: boolean) => handleChange(control.value.path, v),\n })\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const USwitch = resolveComponent('USwitch')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: control.value.description,\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(\n 'div',\n { class: theme.flexBetween },\n h(USwitch as any, {\n modelValue: modelValue.value,\n disabled: !control.value.enabled,\n 'aria-invalid': Boolean(errorMessage.value),\n 'onUpdate:modelValue': (v: boolean) => {\n modelValue.value = v\n },\n }),\n ),\n },\n ),\n )\n }\n },\n })\n}\n","import type { ControlElement, JsonSchema } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { trimmedOrUndefined } from '../util'\n\ntype EnumOption = { label: string; value: unknown }\n\nfunction schemaEnumOptions(schema: JsonSchema | undefined): EnumOption[] {\n if (!schema) return []\n\n if (Array.isArray(schema.enum)) {\n return schema.enum.map((v) => ({ label: String(v), value: v }))\n }\n\n const oneOf = (schema as unknown as { oneOf?: unknown }).oneOf\n if (!Array.isArray(oneOf)) return []\n\n const out: EnumOption[] = []\n for (const entry of oneOf) {\n if (typeof entry !== 'object' || entry === null) continue\n const maybe = entry as Record<string, unknown>\n if (!('const' in maybe)) continue\n out.push({\n value: maybe.const,\n label:\n typeof maybe.title === 'string' && maybe.title.trim()\n ? maybe.title\n : String(maybe.const),\n })\n }\n return out\n}\n\nexport const NuxtUiEnumControl = defineComponent({\n name: 'NuxtUiEnumControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n const options = computed<EnumOption[]>(() => schemaEnumOptions(control.value.schema))\n\n const selectedValue = computed<unknown>({\n get: () => control.value.data,\n set: (v: unknown) => handleChange(control.value.path, v),\n })\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const USelectMenu = resolveComponent('USelectMenu')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: control.value.description,\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(USelectMenu as any, {\n modelValue: selectedValue.value,\n items: options.value,\n valueKey: 'value',\n labelKey: 'label',\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n placeholder: 'Select...',\n 'onUpdate:modelValue': (v: unknown) => {\n selectedValue.value = v\n },\n }),\n },\n ),\n )\n }\n },\n})\n\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { trimmedOrUndefined } from '../util'\n\nexport const NuxtUiIntegerControl = defineComponent({\n name: 'NuxtUiIntegerControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n const modelValue = computed(() => {\n const v = control.value.data\n return v === null || v === undefined ? '' : String(v)\n })\n\n function onUpdate(raw: unknown) {\n const trimmed = String(raw ?? '').trim()\n if (trimmed === '') {\n handleChange(control.value.path, undefined)\n return\n }\n\n const parsed = Number.parseInt(trimmed, 10)\n handleChange(control.value.path, Number.isFinite(parsed) ? parsed : undefined)\n }\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UInput = resolveComponent('UInput')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: control.value.description,\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(UInput as any, {\n type: 'number',\n inputmode: 'numeric',\n step: '1',\n modelValue: modelValue.value,\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n 'onUpdate:modelValue': onUpdate,\n }),\n },\n ),\n )\n }\n },\n})\n\n","import type { ControlElement, JsonSchema } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { trimmedOrUndefined } from '../util'\n\ntype EnumOption = { label: string; value: unknown }\n\nfunction schemaEnumOptions(schema: JsonSchema | undefined): EnumOption[] {\n if (!schema) return []\n\n if (Array.isArray(schema.enum)) {\n return schema.enum.map((v) => ({ label: String(v), value: v }))\n }\n\n const oneOf = (schema as unknown as { oneOf?: unknown }).oneOf\n if (!Array.isArray(oneOf)) return []\n\n const out: EnumOption[] = []\n for (const entry of oneOf) {\n if (typeof entry !== 'object' || entry === null) continue\n const maybe = entry as Record<string, unknown>\n if (!('const' in maybe)) continue\n out.push({\n value: maybe.const,\n label:\n typeof maybe.title === 'string' && maybe.title.trim()\n ? maybe.title\n : String(maybe.const),\n })\n }\n return out\n}\n\nfunction arrayItemsSchema(schema: JsonSchema | undefined): JsonSchema | undefined {\n if (!schema) return undefined\n const items = (schema as unknown as { items?: unknown }).items\n if (typeof items !== 'object' || items === null) return undefined\n return items as JsonSchema\n}\n\nexport const NuxtUiMultiEnumControl = defineComponent({\n name: 'NuxtUiMultiEnumControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n const options = computed<EnumOption[]>(() =>\n schemaEnumOptions(arrayItemsSchema(control.value.schema)),\n )\n\n const selectedValues = computed<unknown[]>({\n get: () => (Array.isArray(control.value.data) ? control.value.data : []),\n set: (v: unknown[]) => handleChange(control.value.path, v),\n })\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const USelectMenu = resolveComponent('USelectMenu')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: control.value.description,\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(USelectMenu as any, {\n multiple: true,\n modelValue: selectedValues.value,\n items: options.value,\n valueKey: 'value',\n labelKey: 'label',\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n placeholder: 'Select...',\n 'onUpdate:modelValue': (v: unknown) => {\n selectedValues.value = Array.isArray(v) ? v : []\n },\n }),\n },\n ),\n )\n }\n },\n})\n\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { trimmedOrUndefined } from '../util'\n\nexport const NuxtUiNumberControl = defineComponent({\n name: 'NuxtUiNumberControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n const modelValue = computed(() => {\n const v = control.value.data\n return v === null || v === undefined ? '' : String(v)\n })\n\n function onUpdate(raw: unknown) {\n const trimmed = String(raw ?? '').trim()\n if (trimmed === '') {\n handleChange(control.value.path, undefined)\n return\n }\n const parsed = Number(trimmed)\n handleChange(control.value.path, Number.isFinite(parsed) ? parsed : undefined)\n }\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UInput = resolveComponent('UInput')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: control.value.description,\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(UInput as any, {\n type: 'number',\n inputmode: 'decimal',\n modelValue: modelValue.value,\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n 'onUpdate:modelValue': onUpdate,\n }),\n },\n ),\n )\n }\n },\n})\n\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, ref, resolveComponent } from 'vue'\n\nimport { trimmedOrUndefined } from '../util'\n\nexport const NuxtUiPasswordControl = defineComponent({\n name: 'NuxtUiPasswordControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n const showPassword = ref(false)\n\n const inputType = computed(() => (showPassword.value ? 'text' : 'password'))\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UInput = resolveComponent('UInput')\n const UButton = resolveComponent('UButton')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: control.value.description,\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(\n UInput as any,\n {\n modelValue: control.value.data ?? '',\n class: 'w-full',\n type: inputType.value,\n autocomplete: 'current-password',\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n 'onUpdate:modelValue': (v: unknown) =>\n handleChange(control.value.path, v),\n },\n {\n trailing: () =>\n h(UButton as any, {\n type: 'button',\n color: 'neutral',\n variant: 'ghost',\n square: true,\n icon: showPassword.value\n ? 'i-heroicons-eye-slash'\n : 'i-heroicons-eye',\n 'aria-pressed': showPassword.value,\n 'aria-label': showPassword.value\n ? 'Hide password'\n : 'Show password',\n disabled: !control.value.enabled,\n onClick: () => {\n showPassword.value = !showPassword.value\n },\n }),\n },\n ),\n },\n ),\n )\n }\n },\n})\n\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport {\n computed,\n defineComponent,\n h,\n resolveComponent,\n} from 'vue'\n\nimport { trimmedOrUndefined } from '../util'\n\nexport const NuxtUiStringControl = defineComponent({\n name: 'NuxtUiStringControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UInput = resolveComponent('UInput')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: control.value.description,\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(UInput as any, {\n modelValue: control.value.data ?? '',\n class: 'w-full',\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n 'onUpdate:modelValue': (v: unknown) =>\n handleChange(control.value.path, v),\n }),\n },\n ),\n )\n }\n },\n})\n\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { trimmedOrUndefined } from '../util'\n\nexport const NuxtUiTextareaControl = defineComponent({\n name: 'NuxtUiTextareaControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UTextarea = resolveComponent('UTextarea')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: control.value.description,\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(UTextarea as any, {\n modelValue: control.value.data ?? '',\n class: 'w-full',\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n rows: 5,\n 'onUpdate:modelValue': (v: unknown) =>\n handleChange(control.value.path, v),\n }),\n },\n ),\n )\n }\n },\n})\n\n","import type { Layout } from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsCategorization } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiCategorizationRenderer(\n theme: NuxtUiRenderersTheme,\n) {\n return defineComponent({\n name: 'NuxtUiCategorizationRenderer',\n components: { DispatchRenderer },\n props: rendererProps<Layout>(),\n setup(props) {\n const { layout, categories } = useJsonFormsCategorization(\n props as unknown as Parameters<typeof useJsonFormsCategorization>[0],\n )\n\n return () => {\n if (!layout.value.visible) return null\n\n return h(\n 'div',\n { class: theme.layoutVerticalWide },\n categories.map((categoryRef, catIndex) => {\n const category = categoryRef.value\n const elements = category.uischema.elements ?? []\n\n return h(\n 'div',\n {\n key: `${layout.value.path}-cat-${catIndex}`,\n class: theme.layoutVertical,\n },\n [\n category.label\n ? h('div', { class: theme.labelSection }, category.label)\n : null,\n h(\n 'div',\n { class: theme.layoutVertical },\n elements.map((element, index) =>\n h(\n 'div',\n { key: `${category.path}-${index}` },\n h(DispatchRenderer as any, {\n schema: category.schema,\n uischema: element,\n path: category.path,\n enabled: category.enabled,\n renderers: category.renderers,\n cells: category.cells,\n }),\n ),\n ),\n ),\n ],\n )\n }),\n )\n }\n },\n })\n}\n","import type { Layout } from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsLayout } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiCategoryRenderer(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiCategoryRenderer',\n components: { DispatchRenderer },\n props: rendererProps<Layout>(),\n setup(props) {\n const { layout } = useJsonFormsLayout(\n props as unknown as Parameters<typeof useJsonFormsLayout>[0],\n )\n\n return () => {\n if (!layout.value.visible) return null\n\n const elements = layout.value.uischema.elements ?? []\n\n return h('div', { class: theme.layoutVertical }, [\n layout.value.label\n ? h('div', { class: theme.labelSection }, layout.value.label)\n : null,\n h(\n 'div',\n { class: theme.layoutVertical },\n elements.map((element, index) =>\n h(\n 'div',\n { key: `${layout.value.path}-${index}` },\n h(DispatchRenderer as any, {\n schema: layout.value.schema,\n uischema: element,\n path: layout.value.path,\n enabled: layout.value.enabled,\n renderers: layout.value.renderers,\n cells: layout.value.cells,\n }),\n ),\n ),\n ),\n ])\n }\n },\n })\n}\n","import type { Layout } from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsLayout } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiGroupRenderer(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiGroupRenderer',\n components: { DispatchRenderer },\n props: rendererProps<Layout>(),\n setup(props) {\n const { layout } = useJsonFormsLayout(\n props as unknown as Parameters<typeof useJsonFormsLayout>[0],\n )\n\n return () => {\n if (!layout.value.visible) return null\n\n const elements = layout.value.uischema.elements ?? []\n const isNested = layout.value.path?.includes('.') ?? false\n const containerClass = isNested ? theme.groupNested : theme.panel\n\n return h(\n 'div',\n { class: containerClass },\n [\n layout.value.label\n ? h('div', { class: theme.labelSectionSpaced }, layout.value.label)\n : null,\n h(\n 'div',\n { class: theme.layoutVertical },\n elements.map((element, index) =>\n h(\n 'div',\n { key: `${layout.value.path}-${index}` },\n h(DispatchRenderer as any, {\n schema: layout.value.schema,\n uischema: element,\n path: layout.value.path,\n enabled: layout.value.enabled,\n renderers: layout.value.renderers,\n cells: layout.value.cells,\n }),\n ),\n ),\n ),\n ],\n )\n }\n },\n })\n}\n","import type { Layout } from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsLayout } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiHorizontalLayoutRenderer(\n theme: NuxtUiRenderersTheme,\n) {\n return defineComponent({\n name: 'NuxtUiHorizontalLayoutRenderer',\n components: { DispatchRenderer },\n props: rendererProps<Layout>(),\n setup(props) {\n const { layout } = useJsonFormsLayout(\n props as unknown as Parameters<typeof useJsonFormsLayout>[0],\n )\n\n return () => {\n if (!layout.value.visible) return null\n\n const elements = layout.value.uischema.elements ?? []\n\n return h(\n 'div',\n { class: theme.layoutHorizontal },\n elements.map((element, index) =>\n h(\n 'div',\n {\n key: `${layout.value.path}-${index}`,\n class: theme.layoutHorizontalItem,\n },\n h(DispatchRenderer as any, {\n schema: layout.value.schema,\n uischema: element,\n path: layout.value.path,\n enabled: layout.value.enabled,\n renderers: layout.value.renderers,\n cells: layout.value.cells,\n }),\n ),\n ),\n )\n }\n },\n })\n}\n","import type { LabelElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsLabel } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiLabelRenderer(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiLabelRenderer',\n props: rendererProps<LabelElement>(),\n setup(props) {\n const { label } = useJsonFormsLabel(\n props as unknown as Parameters<typeof useJsonFormsLabel>[0],\n )\n\n return () => {\n if (!label.value.visible) return null\n return h('div', { class: theme.textLabel }, label.value.text)\n }\n },\n })\n}\n","import type { Layout } from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsLayout } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiVerticalLayoutRenderer(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiVerticalLayoutRenderer',\n components: { DispatchRenderer },\n props: rendererProps<Layout>(),\n setup(props) {\n const { layout } = useJsonFormsLayout(\n props as unknown as Parameters<typeof useJsonFormsLayout>[0],\n )\n\n return () => {\n if (!layout.value.visible) return null\n\n const elements = layout.value.uischema.elements ?? []\n\n return h(\n 'div',\n { class: theme.layoutVertical },\n elements.map((element, index) =>\n h(\n 'div',\n { key: `${layout.value.path}-${index}` },\n h(DispatchRenderer as any, {\n schema: layout.value.schema,\n uischema: element,\n path: layout.value.path,\n enabled: layout.value.enabled,\n renderers: layout.value.renderers,\n cells: layout.value.cells,\n }),\n ),\n ),\n )\n }\n },\n })\n}\n","/**\n * Theme for JSONForms Nuxt UI renderers.\n * Uses semantic class names (jf-*) - styled by default styles.css.\n * Consumers can override any role with custom classes (Tailwind, Bootstrap, etc.).\n */\n\nexport interface NuxtUiRenderersTheme {\n /** Bordered panel (top-level groups, array items). */\n panel: string\n /** Nested group container (no border, padding only). */\n groupNested: string\n /** Vertical stack layout. */\n layoutVertical: string\n /** Vertical stack with wider gap (categorization). */\n layoutVerticalWide: string\n /** Horizontal layout, responsive. */\n layoutHorizontal: string\n /** Child of horizontal layout (flex grow, min-width). */\n layoutHorizontalItem: string\n /** Array item toolbar (flex + margin). */\n arrayItemToolbar: string\n /** Section/category label. */\n labelSection: string\n /** Section label with bottom margin. */\n labelSectionSpaced: string\n /** Muted secondary text. */\n textMuted: string\n /** Muted secondary text, smaller. */\n textMutedXs: string\n /** Array item title. */\n textItemTitle: string\n /** Suffix after item title. */\n textItemSuffix: string\n /** Plain label. */\n textLabel: string\n /** Flex row: centered, space between. */\n flexBetween: string\n /** Flex row: start-aligned, space between. */\n flexBetweenStart: string\n /** Compact flex row for action buttons. */\n flexActions: string\n}\n\n/** Semantic class defaults - styled by styles.css. No Tailwind/CSS framework dependency. */\nexport const defaultTheme: NuxtUiRenderersTheme = {\n panel: 'jf-panel',\n groupNested: 'jf-group',\n layoutVertical: 'jf-layout-vertical',\n layoutVerticalWide: 'jf-layout-vertical-wide',\n layoutHorizontal: 'jf-layout-horizontal',\n layoutHorizontalItem: 'jf-layout-horizontal-item',\n arrayItemToolbar: 'jf-array-item-toolbar',\n labelSection: 'jf-label-section',\n labelSectionSpaced: 'jf-label-section-spaced',\n textMuted: 'jf-text-muted',\n textMutedXs: 'jf-text-muted-xs',\n textItemTitle: 'jf-text-item-title',\n textItemSuffix: 'jf-text-item-suffix',\n textLabel: 'jf-text-label',\n flexBetween: 'jf-flex-between',\n flexBetweenStart: 'jf-flex-between-start',\n flexActions: 'jf-flex-actions',\n}\n\nexport function mergeTheme(\n overrides?: Partial<NuxtUiRenderersTheme>,\n): NuxtUiRenderersTheme {\n return overrides ? { ...defaultTheme, ...overrides } : { ...defaultTheme }\n}\n"],"mappings":"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","names":["import_core","import_vue","import_vue","import_core","import_vue","import_vue","import_vue","import_vue","import_vue","schemaEnumOptions","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/nuxtUiRenderers.ts","../src/renderers/complex/NuxtUiArrayListRenderer.ts","../src/renderers/util.ts","../src/renderers/complex/NuxtUiObjectRenderer.ts","../src/renderers/controls/NuxtUiBooleanControl.ts","../src/renderers/controls/NuxtUiEnumControl.ts","../src/renderers/controls/NuxtUiIntegerControl.ts","../src/renderers/controls/NuxtUiMultiEnumControl.ts","../src/renderers/controls/NuxtUiNumberControl.ts","../src/renderers/controls/NuxtUiPasswordControl.ts","../src/renderers/controls/NuxtUiStringControl.ts","../src/renderers/controls/NuxtUiTextareaControl.ts","../src/renderers/layouts/NuxtUiCategorizationRenderer.ts","../src/renderers/layouts/NuxtUiCategoryRenderer.ts","../src/renderers/layouts/NuxtUiGroupRenderer.ts","../src/renderers/layouts/NuxtUiHorizontalLayoutRenderer.ts","../src/renderers/layouts/NuxtUiLabelRenderer.ts","../src/renderers/layouts/NuxtUiVerticalLayoutRenderer.ts","../src/renderers/theme.ts"],"sourcesContent":["export {\n createNuxtUiRenderers,\n nuxtUiRenderers,\n} from './nuxtUiRenderers'\nexport type { CreateNuxtUiRenderersOptions } from './nuxtUiRenderers'\nexport { controlDescription } from './renderers/util'\nexport type { JsonFormsRendererRegistryEntry } from '@jsonforms/core'\nexport {\n defaultTheme,\n mergeTheme,\n type NuxtUiRenderersTheme,\n} from './renderers/theme'\n","import type { JsonFormsRendererRegistryEntry } from '@jsonforms/core'\nimport {\n and,\n formatIs,\n isBooleanControl,\n isEnumControl,\n isEnumSchema,\n isIntegerControl,\n isMultiLineControl,\n isNumberControl,\n isObjectControl,\n isStringControl,\n rankWith,\n Resolve,\n schemaTypeIs,\n uiTypeIs,\n} from '@jsonforms/core'\nimport { markRaw } from 'vue'\n\nimport { createNuxtUiArrayListRenderer } from './renderers/complex/NuxtUiArrayListRenderer'\nimport { NuxtUiObjectRenderer } from './renderers/complex/NuxtUiObjectRenderer'\nimport { createNuxtUiBooleanControl } from './renderers/controls/NuxtUiBooleanControl'\nimport { NuxtUiEnumControl } from './renderers/controls/NuxtUiEnumControl'\nimport { NuxtUiIntegerControl } from './renderers/controls/NuxtUiIntegerControl'\nimport { NuxtUiMultiEnumControl } from './renderers/controls/NuxtUiMultiEnumControl'\nimport { NuxtUiNumberControl } from './renderers/controls/NuxtUiNumberControl'\nimport { NuxtUiPasswordControl } from './renderers/controls/NuxtUiPasswordControl'\nimport { NuxtUiStringControl } from './renderers/controls/NuxtUiStringControl'\nimport { NuxtUiTextareaControl } from './renderers/controls/NuxtUiTextareaControl'\nimport { createNuxtUiCategorizationRenderer } from './renderers/layouts/NuxtUiCategorizationRenderer'\nimport { createNuxtUiCategoryRenderer } from './renderers/layouts/NuxtUiCategoryRenderer'\nimport { createNuxtUiGroupRenderer } from './renderers/layouts/NuxtUiGroupRenderer'\nimport { createNuxtUiHorizontalLayoutRenderer } from './renderers/layouts/NuxtUiHorizontalLayoutRenderer'\nimport { createNuxtUiLabelRenderer } from './renderers/layouts/NuxtUiLabelRenderer'\nimport { createNuxtUiVerticalLayoutRenderer } from './renderers/layouts/NuxtUiVerticalLayoutRenderer'\nimport {\n mergeTheme,\n type NuxtUiRenderersTheme,\n} from './renderers/theme'\n\n// Intentionally rank higher than typical defaults.\nconst RANK = 10\nconst ENUM_RANK = RANK + 1\nconst PASSWORD_RANK = ENUM_RANK + 1\n\nconst isMultiEnumControl = (\n uischema: unknown,\n schema: unknown,\n context: unknown,\n): boolean => {\n if (!uiTypeIs('Control')(uischema as any, schema as any, context as any)) {\n return false\n }\n\n const scope = (uischema as any)?.scope\n if (typeof scope !== 'string') return false\n\n // JSONForms passes the root schema into testers, but different call sites can\n // vary. Resolve against whatever we have, preferring the provided rootSchema.\n const rootSchema = (context as any)?.rootSchema ?? (schema as any)\n let resolved: any\n try {\n resolved = Resolve.schema(schema as any, scope, rootSchema)\n } catch {\n return false\n }\n\n if (resolved?.type !== 'array') return false\n\n const items = resolved?.items\n if (!items) return false\n\n // JSON Schema `items` can be a schema or an array of schemas.\n if (Array.isArray(items)) return false\n if (typeof items !== 'object' || items === null) return false\n\n const resolvedItems =\n '$ref' in items && typeof (items as any).$ref === 'string'\n ? Resolve.schema(rootSchema, (items as any).$ref, rootSchema)\n : items\n\n return isEnumSchema(resolvedItems as any)\n}\n\n/** Matches oneOf: [{ const, title? }, ...] - enum-like schema with display labels. */\nconst isOneOfEnumControl = (\n uischema: unknown,\n schema: unknown,\n context: unknown,\n): boolean => {\n if (!uiTypeIs('Control')(uischema as any, schema as any, context as any)) {\n return false\n }\n\n const scope = (uischema as any)?.scope\n if (typeof scope !== 'string') return false\n\n const rootSchema = (context as any)?.rootSchema ?? (schema as any)\n let resolved: any\n try {\n resolved = Resolve.schema(schema as any, scope, rootSchema)\n } catch {\n return false\n }\n\n const oneOf = resolved?.oneOf\n if (!Array.isArray(oneOf) || oneOf.length === 0) return false\n\n for (const entry of oneOf) {\n if (typeof entry !== 'object' || entry === null) continue\n if (!('const' in (entry as Record<string, unknown>))) return false\n }\n return true\n}\n\nexport interface CreateNuxtUiRenderersOptions {\n /** Override theme classes. Use semantic jf-* or custom (Tailwind, etc.). */\n theme?: Partial<NuxtUiRenderersTheme>\n}\n\nexport function createNuxtUiRenderers(\n options?: CreateNuxtUiRenderersOptions,\n): JsonFormsRendererRegistryEntry[] {\n const theme = mergeTheme(options?.theme)\n\n return [\n // Layouts\n {\n tester: rankWith(RANK, uiTypeIs('VerticalLayout')),\n renderer: markRaw(createNuxtUiVerticalLayoutRenderer(theme)),\n },\n {\n tester: rankWith(RANK, uiTypeIs('HorizontalLayout')),\n renderer: markRaw(createNuxtUiHorizontalLayoutRenderer(theme)),\n },\n {\n tester: rankWith(RANK, uiTypeIs('Group')),\n renderer: markRaw(createNuxtUiGroupRenderer(theme)),\n },\n {\n tester: rankWith(RANK, uiTypeIs('Categorization')),\n renderer: markRaw(createNuxtUiCategorizationRenderer(theme)),\n },\n {\n tester: rankWith(RANK, uiTypeIs('Category')),\n renderer: markRaw(createNuxtUiCategoryRenderer(theme)),\n },\n {\n tester: rankWith(RANK, uiTypeIs('Label')),\n renderer: markRaw(createNuxtUiLabelRenderer(theme)),\n },\n\n // Complex schemas\n {\n tester: rankWith(RANK, schemaTypeIs('array')),\n renderer: markRaw(createNuxtUiArrayListRenderer(theme)),\n },\n {\n tester: rankWith(RANK, isObjectControl),\n renderer: markRaw(NuxtUiObjectRenderer),\n },\n\n // Primitive controls\n {\n tester: rankWith(RANK, isMultiLineControl),\n renderer: markRaw(NuxtUiTextareaControl),\n },\n {\n tester: rankWith(RANK, isNumberControl),\n renderer: markRaw(NuxtUiNumberControl),\n },\n {\n tester: rankWith(RANK, isIntegerControl),\n renderer: markRaw(NuxtUiIntegerControl),\n },\n {\n tester: rankWith(RANK, isBooleanControl),\n renderer: markRaw(createNuxtUiBooleanControl(theme)),\n },\n {\n // Multi-enum must outrank generic array renderer and string renderer.\n tester: rankWith(ENUM_RANK, isMultiEnumControl),\n renderer: markRaw(NuxtUiMultiEnumControl),\n },\n {\n // oneOf with const+title (display labels) - same as enum for rendering.\n tester: rankWith(ENUM_RANK, isOneOfEnumControl),\n renderer: markRaw(NuxtUiEnumControl),\n },\n {\n // Enum must outrank the generic string control, otherwise enums render\n // as freeform text inputs.\n tester: rankWith(ENUM_RANK, isEnumControl),\n renderer: markRaw(NuxtUiEnumControl),\n },\n {\n tester: rankWith(PASSWORD_RANK, and(isStringControl, formatIs('password'))),\n renderer: markRaw(NuxtUiPasswordControl),\n },\n {\n tester: rankWith(RANK, isStringControl),\n renderer: markRaw(NuxtUiStringControl),\n },\n ]\n}\n\n/** Default renderers with semantic theme. Import styles.css for default styling. */\nexport const nuxtUiRenderers: JsonFormsRendererRegistryEntry[] =\n createNuxtUiRenderers()\n","import type { ControlElement, JsonSchema, UISchemaElement } from '@jsonforms/core'\nimport {\n Resolve,\n composePaths,\n createDefaultValue,\n findUISchema,\n getFirstPrimitiveProp,\n} from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsArrayControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { trimmedOrUndefined } from '../util'\n\nexport function createNuxtUiArrayListRenderer(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiArrayListRenderer',\n components: { DispatchRenderer },\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, addItem, removeItems, moveUp, moveDown } =\n useJsonFormsArrayControl(\n props as unknown as Parameters<typeof useJsonFormsArrayControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n const items = computed<unknown[]>(() =>\n Array.isArray(control.value.data) ? control.value.data : [],\n )\n\n const arraySchema = computed<JsonSchema | undefined>(() => {\n try {\n return Resolve.schema(\n props.schema,\n control.value.uischema.scope,\n control.value.rootSchema,\n )\n } catch {\n return undefined\n }\n })\n\n const maxItemsReached = computed(() => {\n const max = arraySchema.value?.maxItems\n return typeof max === 'number' ? items.value.length >= max : false\n })\n\n const minItemsReached = computed(() => {\n const min = arraySchema.value?.minItems\n return typeof min === 'number' ? items.value.length <= min : false\n })\n\n const childUiSchema = computed<UISchemaElement>(() =>\n findUISchema(\n control.value.uischemas,\n control.value.schema,\n control.value.uischema.scope,\n control.value.path,\n undefined,\n control.value.uischema,\n control.value.rootSchema,\n ),\n )\n\n function childLabelForIndex(index: number): string {\n const childLabelProp =\n getChildLabelPropFromUiSchemaOptions(control.value.uischema.options) ??\n getFirstPrimitiveProp(control.value.schema)\n\n if (!childLabelProp) return `${index}`\n\n const labelValue = Resolve.data(\n control.value.data,\n composePaths(`${index}`, childLabelProp),\n )\n if (\n labelValue === undefined ||\n labelValue === null ||\n Number.isNaN(labelValue as any)\n ) {\n return ''\n }\n return String(labelValue)\n }\n\n function getChildLabelPropFromUiSchemaOptions(\n options: unknown,\n ): string | undefined {\n if (!options || typeof options !== 'object') return undefined\n const value = (options as Record<string, unknown>).childLabelProp\n return typeof value === 'string' ? value : undefined\n }\n\n function addButtonClick() {\n addItem(\n control.value.path,\n createDefaultValue(control.value.schema, control.value.rootSchema),\n )()\n }\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UButton = resolveComponent('UButton')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: control.value.description,\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h('div', { class: theme.layoutVertical }, [\n h('div', { class: theme.flexBetween }, [\n h(\n 'div',\n { class: theme.textMutedXs },\n `${items.value.length} items`,\n ),\n h(\n UButton as any,\n {\n type: 'button',\n size: 'xs',\n variant: 'soft',\n color: 'neutral',\n disabled:\n !control.value.enabled || maxItemsReached.value,\n onClick: addButtonClick,\n },\n { default: () => 'Add' },\n ),\n ]),\n\n items.value.length === 0\n ? h('div', { class: theme.textMuted }, 'No items.')\n : null,\n\n ...items.value.map((_item, index) =>\n h(\n 'div',\n {\n key: `${control.value.path}-${index}`,\n class: theme.panel,\n },\n [\n h(\n 'div',\n { class: theme.arrayItemToolbar },\n [\n h('div', { class: 'jf-min-w-0' }, [\n h(\n 'div',\n { class: theme.textItemTitle },\n [\n `Item ${index + 1}`,\n childLabelForIndex(index)\n ? h(\n 'span',\n { class: theme.textItemSuffix },\n ` — ${childLabelForIndex(index)}`,\n )\n : null,\n ],\n ),\n ]),\n h('div', { class: theme.flexActions }, [\n h(\n UButton as any,\n {\n type: 'button',\n size: 'xs',\n variant: 'ghost',\n color: 'neutral',\n disabled:\n !control.value.enabled || index === 0,\n onClick: () =>\n moveUp?.(control.value.path, index)(),\n },\n { default: () => 'Up' },\n ),\n h(\n UButton as any,\n {\n type: 'button',\n size: 'xs',\n variant: 'ghost',\n color: 'neutral',\n disabled:\n !control.value.enabled ||\n index >= items.value.length - 1,\n onClick: () =>\n moveDown?.(control.value.path, index)(),\n },\n { default: () => 'Down' },\n ),\n h(\n UButton as any,\n {\n type: 'button',\n size: 'xs',\n variant: 'ghost',\n color: 'error',\n disabled:\n !control.value.enabled ||\n minItemsReached.value,\n onClick: () =>\n removeItems?.(control.value.path, [\n index,\n ])(),\n },\n { default: () => 'Remove' },\n ),\n ]),\n ],\n ),\n\n h(DispatchRenderer as any, {\n schema: control.value.schema,\n uischema: childUiSchema.value,\n path: composePaths(control.value.path, `${index}`),\n enabled: control.value.enabled,\n renderers: control.value.renderers,\n cells: control.value.cells,\n }),\n ],\n ),\n ),\n ]),\n },\n ),\n )\n }\n },\n })\n}\n","import { computed, type ComputedRef } from 'vue'\n\nexport function trimmedOrUndefined(input: string | undefined): string | undefined {\n const v = input?.trim()\n return v ? v : undefined\n}\n\n/**\n * Resolves the control's description for the label/field.\n * Uses control.description when set, otherwise falls back to schema.description.\n */\nexport function controlDescription(control: {\n description?: string\n schema?: { description?: string }\n}): string | undefined {\n const d = control.description?.trim()\n if (d) return d\n const sd = (control.schema as { description?: string } | undefined)?.description\n return typeof sd === 'string' && sd.trim() ? sd.trim() : undefined\n}\n\nexport function errorFromControl(\n control: ComputedRef<{ errors: string }>,\n): ComputedRef<string | undefined> {\n return computed(() => trimmedOrUndefined(control.value.errors))\n}\n\n","import type { ControlElement, GroupLayout, UISchemaElement } from '@jsonforms/core'\nimport { Generate, findUISchema } from '@jsonforms/core'\nimport {\n DispatchRenderer,\n rendererProps,\n useJsonFormsControlWithDetail,\n} from '@jsonforms/vue'\nimport { computed, defineComponent, h } from 'vue'\n\nexport const NuxtUiObjectRenderer = defineComponent({\n name: 'NuxtUiObjectRenderer',\n components: { DispatchRenderer },\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control } = useJsonFormsControlWithDetail(\n props as unknown as Parameters<typeof useJsonFormsControlWithDetail>[0],\n )\n\n const detailUiSchema = computed<UISchemaElement>(() => {\n const uiSchemaGenerator = () => {\n const uiSchema = Generate.uiSchema(\n control.value.schema,\n 'Group',\n undefined,\n control.value.rootSchema,\n )\n\n if (!control.value.path) {\n uiSchema.type = 'VerticalLayout'\n } else {\n ;(uiSchema as GroupLayout).label = control.value.label\n }\n return uiSchema\n }\n\n return findUISchema(\n control.value.uischemas,\n control.value.schema,\n control.value.uischema.scope,\n control.value.path,\n uiSchemaGenerator,\n control.value.uischema,\n control.value.rootSchema,\n )\n })\n\n return () => {\n if (!control.value.visible) return null\n\n return h(DispatchRenderer as any, {\n visible: control.value.visible,\n enabled: control.value.enabled,\n schema: control.value.schema,\n uischema: detailUiSchema.value,\n path: control.value.path,\n renderers: control.value.renderers,\n cells: control.value.cells,\n })\n }\n },\n})\n\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { controlDescription, trimmedOrUndefined } from '../util'\n\nexport function createNuxtUiBooleanControl(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiBooleanControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n const modelValue = computed<boolean>({\n get: () => Boolean(control.value.data),\n set: (v: boolean) => handleChange(control.value.path, v),\n })\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const USwitch = resolveComponent('USwitch')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: controlDescription(control.value),\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(\n 'div',\n { class: theme.flexBetween },\n h(USwitch as any, {\n modelValue: modelValue.value,\n disabled: !control.value.enabled,\n 'aria-invalid': Boolean(errorMessage.value),\n 'onUpdate:modelValue': (v: boolean) => {\n modelValue.value = v\n },\n }),\n ),\n },\n ),\n )\n }\n },\n })\n}\n","import type { ControlElement, JsonSchema } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { controlDescription, trimmedOrUndefined } from '../util'\n\ntype EnumOption = { label: string; value: unknown }\n\nfunction schemaEnumOptions(schema: JsonSchema | undefined): EnumOption[] {\n if (!schema) return []\n\n if (Array.isArray(schema.enum)) {\n return schema.enum.map((v) => ({ label: String(v), value: v }))\n }\n\n const oneOf = (schema as unknown as { oneOf?: unknown }).oneOf\n if (!Array.isArray(oneOf)) return []\n\n const out: EnumOption[] = []\n for (const entry of oneOf) {\n if (typeof entry !== 'object' || entry === null) continue\n const maybe = entry as Record<string, unknown>\n if (!('const' in maybe)) continue\n out.push({\n value: maybe.const,\n label:\n typeof maybe.title === 'string' && maybe.title.trim()\n ? maybe.title\n : String(maybe.const),\n })\n }\n return out\n}\n\nexport const NuxtUiEnumControl = defineComponent({\n name: 'NuxtUiEnumControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n const options = computed<EnumOption[]>(() => schemaEnumOptions(control.value.schema))\n\n const selectedValue = computed<unknown>({\n get: () => control.value.data,\n set: (v: unknown) => handleChange(control.value.path, v),\n })\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const USelectMenu = resolveComponent('USelectMenu')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: controlDescription(control.value),\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(USelectMenu as any, {\n modelValue: selectedValue.value,\n items: options.value,\n valueKey: 'value',\n labelKey: 'label',\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n placeholder: 'Select...',\n 'onUpdate:modelValue': (v: unknown) => {\n selectedValue.value = v\n },\n }),\n },\n ),\n )\n }\n },\n})\n\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { controlDescription, trimmedOrUndefined } from '../util'\n\nexport const NuxtUiIntegerControl = defineComponent({\n name: 'NuxtUiIntegerControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n const modelValue = computed(() => {\n const v = control.value.data\n return v === null || v === undefined ? '' : String(v)\n })\n\n function onUpdate(raw: unknown) {\n const trimmed = String(raw ?? '').trim()\n if (trimmed === '') {\n handleChange(control.value.path, undefined)\n return\n }\n\n const parsed = Number.parseInt(trimmed, 10)\n handleChange(control.value.path, Number.isFinite(parsed) ? parsed : undefined)\n }\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UInput = resolveComponent('UInput')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: controlDescription(control.value),\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(UInput as any, {\n type: 'number',\n inputmode: 'numeric',\n step: '1',\n modelValue: modelValue.value,\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n 'onUpdate:modelValue': onUpdate,\n }),\n },\n ),\n )\n }\n },\n})\n\n","import type { ControlElement, JsonSchema } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { controlDescription, trimmedOrUndefined } from '../util'\n\ntype EnumOption = { label: string; value: unknown }\n\nfunction schemaEnumOptions(schema: JsonSchema | undefined): EnumOption[] {\n if (!schema) return []\n\n if (Array.isArray(schema.enum)) {\n return schema.enum.map((v) => ({ label: String(v), value: v }))\n }\n\n const oneOf = (schema as unknown as { oneOf?: unknown }).oneOf\n if (!Array.isArray(oneOf)) return []\n\n const out: EnumOption[] = []\n for (const entry of oneOf) {\n if (typeof entry !== 'object' || entry === null) continue\n const maybe = entry as Record<string, unknown>\n if (!('const' in maybe)) continue\n out.push({\n value: maybe.const,\n label:\n typeof maybe.title === 'string' && maybe.title.trim()\n ? maybe.title\n : String(maybe.const),\n })\n }\n return out\n}\n\nfunction arrayItemsSchema(schema: JsonSchema | undefined): JsonSchema | undefined {\n if (!schema) return undefined\n const items = (schema as unknown as { items?: unknown }).items\n if (typeof items !== 'object' || items === null) return undefined\n return items as JsonSchema\n}\n\nexport const NuxtUiMultiEnumControl = defineComponent({\n name: 'NuxtUiMultiEnumControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n const options = computed<EnumOption[]>(() =>\n schemaEnumOptions(arrayItemsSchema(control.value.schema)),\n )\n\n const selectedValues = computed<unknown[]>({\n get: () => (Array.isArray(control.value.data) ? control.value.data : []),\n set: (v: unknown[]) => handleChange(control.value.path, v),\n })\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const USelectMenu = resolveComponent('USelectMenu')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: controlDescription(control.value),\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(USelectMenu as any, {\n multiple: true,\n modelValue: selectedValues.value,\n items: options.value,\n valueKey: 'value',\n labelKey: 'label',\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n placeholder: 'Select...',\n 'onUpdate:modelValue': (v: unknown) => {\n selectedValues.value = Array.isArray(v) ? v : []\n },\n }),\n },\n ),\n )\n }\n },\n})\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { controlDescription, trimmedOrUndefined } from '../util'\n\nexport const NuxtUiNumberControl = defineComponent({\n name: 'NuxtUiNumberControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n const modelValue = computed(() => {\n const v = control.value.data\n return v === null || v === undefined ? '' : String(v)\n })\n\n function onUpdate(raw: unknown) {\n const trimmed = String(raw ?? '').trim()\n if (trimmed === '') {\n handleChange(control.value.path, undefined)\n return\n }\n const parsed = Number(trimmed)\n handleChange(control.value.path, Number.isFinite(parsed) ? parsed : undefined)\n }\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UInput = resolveComponent('UInput')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: controlDescription(control.value),\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(UInput as any, {\n type: 'number',\n inputmode: 'decimal',\n modelValue: modelValue.value,\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n 'onUpdate:modelValue': onUpdate,\n }),\n },\n ),\n )\n }\n },\n})\n\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, ref, resolveComponent } from 'vue'\n\nimport { controlDescription, trimmedOrUndefined } from '../util'\n\nexport const NuxtUiPasswordControl = defineComponent({\n name: 'NuxtUiPasswordControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n const showPassword = ref(false)\n\n const inputType = computed(() => (showPassword.value ? 'text' : 'password'))\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UInput = resolveComponent('UInput')\n const UButton = resolveComponent('UButton')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: controlDescription(control.value),\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(\n UInput as any,\n {\n modelValue: control.value.data ?? '',\n class: 'w-full',\n type: inputType.value,\n autocomplete: 'current-password',\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n 'onUpdate:modelValue': (v: unknown) =>\n handleChange(control.value.path, v),\n },\n {\n trailing: () =>\n h(UButton as any, {\n type: 'button',\n color: 'neutral',\n variant: 'ghost',\n square: true,\n icon: showPassword.value\n ? 'i-heroicons-eye-slash'\n : 'i-heroicons-eye',\n 'aria-pressed': showPassword.value,\n 'aria-label': showPassword.value\n ? 'Hide password'\n : 'Show password',\n disabled: !control.value.enabled,\n onClick: () => {\n showPassword.value = !showPassword.value\n },\n }),\n },\n ),\n },\n ),\n )\n }\n },\n})\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport {\n computed,\n defineComponent,\n h,\n resolveComponent,\n} from 'vue'\n\nimport { controlDescription, trimmedOrUndefined } from '../util'\n\nexport const NuxtUiStringControl = defineComponent({\n name: 'NuxtUiStringControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UInput = resolveComponent('UInput')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: controlDescription(control.value),\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(UInput as any, {\n modelValue: control.value.data ?? '',\n class: 'w-full',\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n 'onUpdate:modelValue': (v: unknown) =>\n handleChange(control.value.path, v),\n }),\n },\n ),\n )\n }\n },\n})\n\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { controlDescription, trimmedOrUndefined } from '../util'\n\nexport const NuxtUiTextareaControl = defineComponent({\n name: 'NuxtUiTextareaControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UTextarea = resolveComponent('UTextarea')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: controlDescription(control.value),\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(UTextarea as any, {\n modelValue: control.value.data ?? '',\n class: 'w-full',\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n rows: 5,\n 'onUpdate:modelValue': (v: unknown) =>\n handleChange(control.value.path, v),\n }),\n },\n ),\n )\n }\n },\n})\n\n","import type { Layout } from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsCategorization } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiCategorizationRenderer(\n theme: NuxtUiRenderersTheme,\n) {\n return defineComponent({\n name: 'NuxtUiCategorizationRenderer',\n components: { DispatchRenderer },\n props: rendererProps<Layout>(),\n setup(props) {\n const { layout, categories } = useJsonFormsCategorization(\n props as unknown as Parameters<typeof useJsonFormsCategorization>[0],\n )\n\n return () => {\n if (!layout.value.visible) return null\n\n return h(\n 'div',\n { class: theme.layoutVerticalWide },\n categories.map((categoryRef, catIndex) => {\n const category = categoryRef.value\n const elements = category.uischema.elements ?? []\n\n return h(\n 'div',\n {\n key: `${layout.value.path}-cat-${catIndex}`,\n class: theme.layoutVertical,\n },\n [\n category.label\n ? h('div', { class: theme.labelSection }, category.label)\n : null,\n h(\n 'div',\n { class: theme.layoutVertical },\n elements.map((element, index) =>\n h(\n 'div',\n { key: `${category.path}-${index}` },\n h(DispatchRenderer as any, {\n schema: category.schema,\n uischema: element,\n path: category.path,\n enabled: category.enabled,\n renderers: category.renderers,\n cells: category.cells,\n }),\n ),\n ),\n ),\n ],\n )\n }),\n )\n }\n },\n })\n}\n","import type { Layout } from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsLayout } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiCategoryRenderer(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiCategoryRenderer',\n components: { DispatchRenderer },\n props: rendererProps<Layout>(),\n setup(props) {\n const { layout } = useJsonFormsLayout(\n props as unknown as Parameters<typeof useJsonFormsLayout>[0],\n )\n\n return () => {\n if (!layout.value.visible) return null\n\n const elements = layout.value.uischema.elements ?? []\n\n return h('div', { class: theme.layoutVertical }, [\n layout.value.label\n ? h('div', { class: theme.labelSection }, layout.value.label)\n : null,\n h(\n 'div',\n { class: theme.layoutVertical },\n elements.map((element, index) =>\n h(\n 'div',\n { key: `${layout.value.path}-${index}` },\n h(DispatchRenderer as any, {\n schema: layout.value.schema,\n uischema: element,\n path: layout.value.path,\n enabled: layout.value.enabled,\n renderers: layout.value.renderers,\n cells: layout.value.cells,\n }),\n ),\n ),\n ),\n ])\n }\n },\n })\n}\n","import type { Layout } from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsLayout } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiGroupRenderer(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiGroupRenderer',\n components: { DispatchRenderer },\n props: rendererProps<Layout>(),\n setup(props) {\n const { layout } = useJsonFormsLayout(\n props as unknown as Parameters<typeof useJsonFormsLayout>[0],\n )\n\n return () => {\n if (!layout.value.visible) return null\n\n const elements = layout.value.uischema.elements ?? []\n const isNested = layout.value.path?.includes('.') ?? false\n const containerClass = isNested ? theme.groupNested : theme.panel\n\n return h(\n 'div',\n { class: containerClass },\n [\n layout.value.label\n ? h('div', { class: theme.labelSectionSpaced }, layout.value.label)\n : null,\n h(\n 'div',\n { class: theme.layoutVertical },\n elements.map((element, index) =>\n h(\n 'div',\n { key: `${layout.value.path}-${index}` },\n h(DispatchRenderer as any, {\n schema: layout.value.schema,\n uischema: element,\n path: layout.value.path,\n enabled: layout.value.enabled,\n renderers: layout.value.renderers,\n cells: layout.value.cells,\n }),\n ),\n ),\n ),\n ],\n )\n }\n },\n })\n}\n","import type { Layout } from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsLayout } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiHorizontalLayoutRenderer(\n theme: NuxtUiRenderersTheme,\n) {\n return defineComponent({\n name: 'NuxtUiHorizontalLayoutRenderer',\n components: { DispatchRenderer },\n props: rendererProps<Layout>(),\n setup(props) {\n const { layout } = useJsonFormsLayout(\n props as unknown as Parameters<typeof useJsonFormsLayout>[0],\n )\n\n return () => {\n if (!layout.value.visible) return null\n\n const elements = layout.value.uischema.elements ?? []\n\n return h(\n 'div',\n { class: theme.layoutHorizontal },\n elements.map((element, index) =>\n h(\n 'div',\n {\n key: `${layout.value.path}-${index}`,\n class: theme.layoutHorizontalItem,\n },\n h(DispatchRenderer as any, {\n schema: layout.value.schema,\n uischema: element,\n path: layout.value.path,\n enabled: layout.value.enabled,\n renderers: layout.value.renderers,\n cells: layout.value.cells,\n }),\n ),\n ),\n )\n }\n },\n })\n}\n","import type { LabelElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsLabel } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiLabelRenderer(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiLabelRenderer',\n props: rendererProps<LabelElement>(),\n setup(props) {\n const { label } = useJsonFormsLabel(\n props as unknown as Parameters<typeof useJsonFormsLabel>[0],\n )\n\n return () => {\n if (!label.value.visible) return null\n return h('div', { class: theme.textLabel }, label.value.text)\n }\n },\n })\n}\n","import type { Layout } from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsLayout } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiVerticalLayoutRenderer(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiVerticalLayoutRenderer',\n components: { DispatchRenderer },\n props: rendererProps<Layout>(),\n setup(props) {\n const { layout } = useJsonFormsLayout(\n props as unknown as Parameters<typeof useJsonFormsLayout>[0],\n )\n\n return () => {\n if (!layout.value.visible) return null\n\n const elements = layout.value.uischema.elements ?? []\n\n return h(\n 'div',\n { class: theme.layoutVertical },\n elements.map((element, index) =>\n h(\n 'div',\n { key: `${layout.value.path}-${index}` },\n h(DispatchRenderer as any, {\n schema: layout.value.schema,\n uischema: element,\n path: layout.value.path,\n enabled: layout.value.enabled,\n renderers: layout.value.renderers,\n cells: layout.value.cells,\n }),\n ),\n ),\n )\n }\n },\n })\n}\n","/**\n * Theme for JSONForms Nuxt UI renderers.\n * Uses semantic class names (jf-*) - styled by default styles.css.\n * Consumers can override any role with custom classes (Tailwind, Bootstrap, etc.).\n */\n\nexport interface NuxtUiRenderersTheme {\n /** Bordered panel (top-level groups, array items). */\n panel: string\n /** Nested group container (no border, padding only). */\n groupNested: string\n /** Vertical stack layout. */\n layoutVertical: string\n /** Vertical stack with wider gap (categorization). */\n layoutVerticalWide: string\n /** Horizontal layout, responsive. */\n layoutHorizontal: string\n /** Child of horizontal layout (flex grow, min-width). */\n layoutHorizontalItem: string\n /** Array item toolbar (flex + margin). */\n arrayItemToolbar: string\n /** Section/category label. */\n labelSection: string\n /** Section label with bottom margin. */\n labelSectionSpaced: string\n /** Muted secondary text. */\n textMuted: string\n /** Muted secondary text, smaller. */\n textMutedXs: string\n /** Array item title. */\n textItemTitle: string\n /** Suffix after item title. */\n textItemSuffix: string\n /** Plain label. */\n textLabel: string\n /** Flex row: centered, space between. */\n flexBetween: string\n /** Flex row: start-aligned, space between. */\n flexBetweenStart: string\n /** Compact flex row for action buttons. */\n flexActions: string\n}\n\n/** Semantic class defaults - styled by styles.css. No Tailwind/CSS framework dependency. */\nexport const defaultTheme: NuxtUiRenderersTheme = {\n panel: 'jf-panel',\n groupNested: 'jf-group',\n layoutVertical: 'jf-layout-vertical',\n layoutVerticalWide: 'jf-layout-vertical-wide',\n layoutHorizontal: 'jf-layout-horizontal',\n layoutHorizontalItem: 'jf-layout-horizontal-item',\n arrayItemToolbar: 'jf-array-item-toolbar',\n labelSection: 'jf-label-section',\n labelSectionSpaced: 'jf-label-section-spaced',\n textMuted: 'jf-text-muted',\n textMutedXs: 'jf-text-muted-xs',\n textItemTitle: 'jf-text-item-title',\n textItemSuffix: 'jf-text-item-suffix',\n textLabel: 'jf-text-label',\n flexBetween: 'jf-flex-between',\n flexBetweenStart: 'jf-flex-between-start',\n flexActions: 'jf-flex-actions',\n}\n\nexport function mergeTheme(\n overrides?: Partial<NuxtUiRenderersTheme>,\n): NuxtUiRenderersTheme {\n return overrides ? { ...defaultTheme, ...overrides } : { ...defaultTheme }\n}\n"],"mappings":"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","names":["import_core","import_vue","import_vue","import_core","import_vue","import_vue","import_vue","import_vue","import_vue","schemaEnumOptions","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue"]}
package/dist/index.d.cts CHANGED
@@ -54,4 +54,15 @@ declare function createNuxtUiRenderers(options?: CreateNuxtUiRenderersOptions):
54
54
  /** Default renderers with semantic theme. Import styles.css for default styling. */
55
55
  declare const nuxtUiRenderers: JsonFormsRendererRegistryEntry[];
56
56
 
57
- export { type CreateNuxtUiRenderersOptions, type NuxtUiRenderersTheme, createNuxtUiRenderers, defaultTheme, mergeTheme, nuxtUiRenderers };
57
+ /**
58
+ * Resolves the control's description for the label/field.
59
+ * Uses control.description when set, otherwise falls back to schema.description.
60
+ */
61
+ declare function controlDescription(control: {
62
+ description?: string;
63
+ schema?: {
64
+ description?: string;
65
+ };
66
+ }): string | undefined;
67
+
68
+ export { type CreateNuxtUiRenderersOptions, type NuxtUiRenderersTheme, controlDescription, createNuxtUiRenderers, defaultTheme, mergeTheme, nuxtUiRenderers };
package/dist/index.d.ts CHANGED
@@ -54,4 +54,15 @@ declare function createNuxtUiRenderers(options?: CreateNuxtUiRenderersOptions):
54
54
  /** Default renderers with semantic theme. Import styles.css for default styling. */
55
55
  declare const nuxtUiRenderers: JsonFormsRendererRegistryEntry[];
56
56
 
57
- export { type CreateNuxtUiRenderersOptions, type NuxtUiRenderersTheme, createNuxtUiRenderers, defaultTheme, mergeTheme, nuxtUiRenderers };
57
+ /**
58
+ * Resolves the control's description for the label/field.
59
+ * Uses control.description when set, otherwise falls back to schema.description.
60
+ */
61
+ declare function controlDescription(control: {
62
+ description?: string;
63
+ schema?: {
64
+ description?: string;
65
+ };
66
+ }): string | undefined;
67
+
68
+ export { type CreateNuxtUiRenderersOptions, type NuxtUiRenderersTheme, controlDescription, createNuxtUiRenderers, defaultTheme, mergeTheme, nuxtUiRenderers };
package/dist/index.js CHANGED
@@ -34,6 +34,12 @@ function trimmedOrUndefined(input) {
34
34
  const v = input?.trim();
35
35
  return v ? v : void 0;
36
36
  }
37
+ function controlDescription(control) {
38
+ const d = control.description?.trim();
39
+ if (d) return d;
40
+ const sd = control.schema?.description;
41
+ return typeof sd === "string" && sd.trim() ? sd.trim() : void 0;
42
+ }
37
43
 
38
44
  // src/renderers/complex/NuxtUiArrayListRenderer.ts
39
45
  function createNuxtUiArrayListRenderer(theme) {
@@ -311,7 +317,7 @@ function createNuxtUiBooleanControl(theme) {
311
317
  UFormField,
312
318
  {
313
319
  label: control.value.label,
314
- description: control.value.description,
320
+ description: controlDescription(control.value),
315
321
  required: control.value.required,
316
322
  error: errorMessage.value
317
323
  },
@@ -382,7 +388,7 @@ var NuxtUiEnumControl = defineComponent4({
382
388
  UFormField,
383
389
  {
384
390
  label: control.value.label,
385
- description: control.value.description,
391
+ description: controlDescription(control.value),
386
392
  required: control.value.required,
387
393
  error: errorMessage.value
388
394
  },
@@ -442,7 +448,7 @@ var NuxtUiIntegerControl = defineComponent5({
442
448
  UFormField,
443
449
  {
444
450
  label: control.value.label,
445
- description: control.value.description,
451
+ description: controlDescription(control.value),
446
452
  required: control.value.required,
447
453
  error: errorMessage.value
448
454
  },
@@ -518,7 +524,7 @@ var NuxtUiMultiEnumControl = defineComponent6({
518
524
  UFormField,
519
525
  {
520
526
  label: control.value.label,
521
- description: control.value.description,
527
+ description: controlDescription(control.value),
522
528
  required: control.value.required,
523
529
  error: errorMessage.value
524
530
  },
@@ -579,7 +585,7 @@ var NuxtUiNumberControl = defineComponent7({
579
585
  UFormField,
580
586
  {
581
587
  label: control.value.label,
582
- description: control.value.description,
588
+ description: controlDescription(control.value),
583
589
  required: control.value.required,
584
590
  error: errorMessage.value
585
591
  },
@@ -625,7 +631,7 @@ var NuxtUiPasswordControl = defineComponent8({
625
631
  UFormField,
626
632
  {
627
633
  label: control.value.label,
628
- description: control.value.description,
634
+ description: controlDescription(control.value),
629
635
  required: control.value.required,
630
636
  error: errorMessage.value
631
637
  },
@@ -692,7 +698,7 @@ var NuxtUiStringControl = defineComponent9({
692
698
  UFormField,
693
699
  {
694
700
  label: control.value.label,
695
- description: control.value.description,
701
+ description: controlDescription(control.value),
696
702
  required: control.value.required,
697
703
  error: errorMessage.value
698
704
  },
@@ -734,7 +740,7 @@ var NuxtUiTextareaControl = defineComponent10({
734
740
  UFormField,
735
741
  {
736
742
  label: control.value.label,
737
- description: control.value.description,
743
+ description: controlDescription(control.value),
738
744
  required: control.value.required,
739
745
  error: errorMessage.value
740
746
  },
@@ -1148,6 +1154,7 @@ function createNuxtUiRenderers(options) {
1148
1154
  }
1149
1155
  var nuxtUiRenderers = createNuxtUiRenderers();
1150
1156
  export {
1157
+ controlDescription,
1151
1158
  createNuxtUiRenderers,
1152
1159
  defaultTheme,
1153
1160
  mergeTheme,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/nuxtUiRenderers.ts","../src/renderers/complex/NuxtUiArrayListRenderer.ts","../src/renderers/util.ts","../src/renderers/complex/NuxtUiObjectRenderer.ts","../src/renderers/controls/NuxtUiBooleanControl.ts","../src/renderers/controls/NuxtUiEnumControl.ts","../src/renderers/controls/NuxtUiIntegerControl.ts","../src/renderers/controls/NuxtUiMultiEnumControl.ts","../src/renderers/controls/NuxtUiNumberControl.ts","../src/renderers/controls/NuxtUiPasswordControl.ts","../src/renderers/controls/NuxtUiStringControl.ts","../src/renderers/controls/NuxtUiTextareaControl.ts","../src/renderers/layouts/NuxtUiCategorizationRenderer.ts","../src/renderers/layouts/NuxtUiCategoryRenderer.ts","../src/renderers/layouts/NuxtUiGroupRenderer.ts","../src/renderers/layouts/NuxtUiHorizontalLayoutRenderer.ts","../src/renderers/layouts/NuxtUiLabelRenderer.ts","../src/renderers/layouts/NuxtUiVerticalLayoutRenderer.ts","../src/renderers/theme.ts"],"sourcesContent":["import type { JsonFormsRendererRegistryEntry } from '@jsonforms/core'\nimport {\n and,\n formatIs,\n isBooleanControl,\n isEnumControl,\n isEnumSchema,\n isIntegerControl,\n isMultiLineControl,\n isNumberControl,\n isObjectControl,\n isStringControl,\n rankWith,\n Resolve,\n schemaTypeIs,\n uiTypeIs,\n} from '@jsonforms/core'\nimport { markRaw } from 'vue'\n\nimport { createNuxtUiArrayListRenderer } from './renderers/complex/NuxtUiArrayListRenderer'\nimport { NuxtUiObjectRenderer } from './renderers/complex/NuxtUiObjectRenderer'\nimport { createNuxtUiBooleanControl } from './renderers/controls/NuxtUiBooleanControl'\nimport { NuxtUiEnumControl } from './renderers/controls/NuxtUiEnumControl'\nimport { NuxtUiIntegerControl } from './renderers/controls/NuxtUiIntegerControl'\nimport { NuxtUiMultiEnumControl } from './renderers/controls/NuxtUiMultiEnumControl'\nimport { NuxtUiNumberControl } from './renderers/controls/NuxtUiNumberControl'\nimport { NuxtUiPasswordControl } from './renderers/controls/NuxtUiPasswordControl'\nimport { NuxtUiStringControl } from './renderers/controls/NuxtUiStringControl'\nimport { NuxtUiTextareaControl } from './renderers/controls/NuxtUiTextareaControl'\nimport { createNuxtUiCategorizationRenderer } from './renderers/layouts/NuxtUiCategorizationRenderer'\nimport { createNuxtUiCategoryRenderer } from './renderers/layouts/NuxtUiCategoryRenderer'\nimport { createNuxtUiGroupRenderer } from './renderers/layouts/NuxtUiGroupRenderer'\nimport { createNuxtUiHorizontalLayoutRenderer } from './renderers/layouts/NuxtUiHorizontalLayoutRenderer'\nimport { createNuxtUiLabelRenderer } from './renderers/layouts/NuxtUiLabelRenderer'\nimport { createNuxtUiVerticalLayoutRenderer } from './renderers/layouts/NuxtUiVerticalLayoutRenderer'\nimport {\n mergeTheme,\n type NuxtUiRenderersTheme,\n} from './renderers/theme'\n\n// Intentionally rank higher than typical defaults.\nconst RANK = 10\nconst ENUM_RANK = RANK + 1\nconst PASSWORD_RANK = ENUM_RANK + 1\n\nconst isMultiEnumControl = (\n uischema: unknown,\n schema: unknown,\n context: unknown,\n): boolean => {\n if (!uiTypeIs('Control')(uischema as any, schema as any, context as any)) {\n return false\n }\n\n const scope = (uischema as any)?.scope\n if (typeof scope !== 'string') return false\n\n // JSONForms passes the root schema into testers, but different call sites can\n // vary. Resolve against whatever we have, preferring the provided rootSchema.\n const rootSchema = (context as any)?.rootSchema ?? (schema as any)\n let resolved: any\n try {\n resolved = Resolve.schema(schema as any, scope, rootSchema)\n } catch {\n return false\n }\n\n if (resolved?.type !== 'array') return false\n\n const items = resolved?.items\n if (!items) return false\n\n // JSON Schema `items` can be a schema or an array of schemas.\n if (Array.isArray(items)) return false\n if (typeof items !== 'object' || items === null) return false\n\n const resolvedItems =\n '$ref' in items && typeof (items as any).$ref === 'string'\n ? Resolve.schema(rootSchema, (items as any).$ref, rootSchema)\n : items\n\n return isEnumSchema(resolvedItems as any)\n}\n\n/** Matches oneOf: [{ const, title? }, ...] - enum-like schema with display labels. */\nconst isOneOfEnumControl = (\n uischema: unknown,\n schema: unknown,\n context: unknown,\n): boolean => {\n if (!uiTypeIs('Control')(uischema as any, schema as any, context as any)) {\n return false\n }\n\n const scope = (uischema as any)?.scope\n if (typeof scope !== 'string') return false\n\n const rootSchema = (context as any)?.rootSchema ?? (schema as any)\n let resolved: any\n try {\n resolved = Resolve.schema(schema as any, scope, rootSchema)\n } catch {\n return false\n }\n\n const oneOf = resolved?.oneOf\n if (!Array.isArray(oneOf) || oneOf.length === 0) return false\n\n for (const entry of oneOf) {\n if (typeof entry !== 'object' || entry === null) continue\n if (!('const' in (entry as Record<string, unknown>))) return false\n }\n return true\n}\n\nexport interface CreateNuxtUiRenderersOptions {\n /** Override theme classes. Use semantic jf-* or custom (Tailwind, etc.). */\n theme?: Partial<NuxtUiRenderersTheme>\n}\n\nexport function createNuxtUiRenderers(\n options?: CreateNuxtUiRenderersOptions,\n): JsonFormsRendererRegistryEntry[] {\n const theme = mergeTheme(options?.theme)\n\n return [\n // Layouts\n {\n tester: rankWith(RANK, uiTypeIs('VerticalLayout')),\n renderer: markRaw(createNuxtUiVerticalLayoutRenderer(theme)),\n },\n {\n tester: rankWith(RANK, uiTypeIs('HorizontalLayout')),\n renderer: markRaw(createNuxtUiHorizontalLayoutRenderer(theme)),\n },\n {\n tester: rankWith(RANK, uiTypeIs('Group')),\n renderer: markRaw(createNuxtUiGroupRenderer(theme)),\n },\n {\n tester: rankWith(RANK, uiTypeIs('Categorization')),\n renderer: markRaw(createNuxtUiCategorizationRenderer(theme)),\n },\n {\n tester: rankWith(RANK, uiTypeIs('Category')),\n renderer: markRaw(createNuxtUiCategoryRenderer(theme)),\n },\n {\n tester: rankWith(RANK, uiTypeIs('Label')),\n renderer: markRaw(createNuxtUiLabelRenderer(theme)),\n },\n\n // Complex schemas\n {\n tester: rankWith(RANK, schemaTypeIs('array')),\n renderer: markRaw(createNuxtUiArrayListRenderer(theme)),\n },\n {\n tester: rankWith(RANK, isObjectControl),\n renderer: markRaw(NuxtUiObjectRenderer),\n },\n\n // Primitive controls\n {\n tester: rankWith(RANK, isMultiLineControl),\n renderer: markRaw(NuxtUiTextareaControl),\n },\n {\n tester: rankWith(RANK, isNumberControl),\n renderer: markRaw(NuxtUiNumberControl),\n },\n {\n tester: rankWith(RANK, isIntegerControl),\n renderer: markRaw(NuxtUiIntegerControl),\n },\n {\n tester: rankWith(RANK, isBooleanControl),\n renderer: markRaw(createNuxtUiBooleanControl(theme)),\n },\n {\n // Multi-enum must outrank generic array renderer and string renderer.\n tester: rankWith(ENUM_RANK, isMultiEnumControl),\n renderer: markRaw(NuxtUiMultiEnumControl),\n },\n {\n // oneOf with const+title (display labels) - same as enum for rendering.\n tester: rankWith(ENUM_RANK, isOneOfEnumControl),\n renderer: markRaw(NuxtUiEnumControl),\n },\n {\n // Enum must outrank the generic string control, otherwise enums render\n // as freeform text inputs.\n tester: rankWith(ENUM_RANK, isEnumControl),\n renderer: markRaw(NuxtUiEnumControl),\n },\n {\n tester: rankWith(PASSWORD_RANK, and(isStringControl, formatIs('password'))),\n renderer: markRaw(NuxtUiPasswordControl),\n },\n {\n tester: rankWith(RANK, isStringControl),\n renderer: markRaw(NuxtUiStringControl),\n },\n ]\n}\n\n/** Default renderers with semantic theme. Import styles.css for default styling. */\nexport const nuxtUiRenderers: JsonFormsRendererRegistryEntry[] =\n createNuxtUiRenderers()\n","import type { ControlElement, JsonSchema, UISchemaElement } from '@jsonforms/core'\nimport {\n Resolve,\n composePaths,\n createDefaultValue,\n findUISchema,\n getFirstPrimitiveProp,\n} from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsArrayControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { trimmedOrUndefined } from '../util'\n\nexport function createNuxtUiArrayListRenderer(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiArrayListRenderer',\n components: { DispatchRenderer },\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, addItem, removeItems, moveUp, moveDown } =\n useJsonFormsArrayControl(\n props as unknown as Parameters<typeof useJsonFormsArrayControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n const items = computed<unknown[]>(() =>\n Array.isArray(control.value.data) ? control.value.data : [],\n )\n\n const arraySchema = computed<JsonSchema | undefined>(() => {\n try {\n return Resolve.schema(\n props.schema,\n control.value.uischema.scope,\n control.value.rootSchema,\n )\n } catch {\n return undefined\n }\n })\n\n const maxItemsReached = computed(() => {\n const max = arraySchema.value?.maxItems\n return typeof max === 'number' ? items.value.length >= max : false\n })\n\n const minItemsReached = computed(() => {\n const min = arraySchema.value?.minItems\n return typeof min === 'number' ? items.value.length <= min : false\n })\n\n const childUiSchema = computed<UISchemaElement>(() =>\n findUISchema(\n control.value.uischemas,\n control.value.schema,\n control.value.uischema.scope,\n control.value.path,\n undefined,\n control.value.uischema,\n control.value.rootSchema,\n ),\n )\n\n function childLabelForIndex(index: number): string {\n const childLabelProp =\n getChildLabelPropFromUiSchemaOptions(control.value.uischema.options) ??\n getFirstPrimitiveProp(control.value.schema)\n\n if (!childLabelProp) return `${index}`\n\n const labelValue = Resolve.data(\n control.value.data,\n composePaths(`${index}`, childLabelProp),\n )\n if (\n labelValue === undefined ||\n labelValue === null ||\n Number.isNaN(labelValue as any)\n ) {\n return ''\n }\n return String(labelValue)\n }\n\n function getChildLabelPropFromUiSchemaOptions(\n options: unknown,\n ): string | undefined {\n if (!options || typeof options !== 'object') return undefined\n const value = (options as Record<string, unknown>).childLabelProp\n return typeof value === 'string' ? value : undefined\n }\n\n function addButtonClick() {\n addItem(\n control.value.path,\n createDefaultValue(control.value.schema, control.value.rootSchema),\n )()\n }\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UButton = resolveComponent('UButton')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: control.value.description,\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h('div', { class: theme.layoutVertical }, [\n h('div', { class: theme.flexBetween }, [\n h(\n 'div',\n { class: theme.textMutedXs },\n `${items.value.length} items`,\n ),\n h(\n UButton as any,\n {\n type: 'button',\n size: 'xs',\n variant: 'soft',\n color: 'neutral',\n disabled:\n !control.value.enabled || maxItemsReached.value,\n onClick: addButtonClick,\n },\n { default: () => 'Add' },\n ),\n ]),\n\n items.value.length === 0\n ? h('div', { class: theme.textMuted }, 'No items.')\n : null,\n\n ...items.value.map((_item, index) =>\n h(\n 'div',\n {\n key: `${control.value.path}-${index}`,\n class: theme.panel,\n },\n [\n h(\n 'div',\n { class: theme.arrayItemToolbar },\n [\n h('div', { class: 'jf-min-w-0' }, [\n h(\n 'div',\n { class: theme.textItemTitle },\n [\n `Item ${index + 1}`,\n childLabelForIndex(index)\n ? h(\n 'span',\n { class: theme.textItemSuffix },\n ` — ${childLabelForIndex(index)}`,\n )\n : null,\n ],\n ),\n ]),\n h('div', { class: theme.flexActions }, [\n h(\n UButton as any,\n {\n type: 'button',\n size: 'xs',\n variant: 'ghost',\n color: 'neutral',\n disabled:\n !control.value.enabled || index === 0,\n onClick: () =>\n moveUp?.(control.value.path, index)(),\n },\n { default: () => 'Up' },\n ),\n h(\n UButton as any,\n {\n type: 'button',\n size: 'xs',\n variant: 'ghost',\n color: 'neutral',\n disabled:\n !control.value.enabled ||\n index >= items.value.length - 1,\n onClick: () =>\n moveDown?.(control.value.path, index)(),\n },\n { default: () => 'Down' },\n ),\n h(\n UButton as any,\n {\n type: 'button',\n size: 'xs',\n variant: 'ghost',\n color: 'error',\n disabled:\n !control.value.enabled ||\n minItemsReached.value,\n onClick: () =>\n removeItems?.(control.value.path, [\n index,\n ])(),\n },\n { default: () => 'Remove' },\n ),\n ]),\n ],\n ),\n\n h(DispatchRenderer as any, {\n schema: control.value.schema,\n uischema: childUiSchema.value,\n path: composePaths(control.value.path, `${index}`),\n enabled: control.value.enabled,\n renderers: control.value.renderers,\n cells: control.value.cells,\n }),\n ],\n ),\n ),\n ]),\n },\n ),\n )\n }\n },\n })\n}\n","import { computed, type ComputedRef } from 'vue'\n\nexport function trimmedOrUndefined(input: string | undefined): string | undefined {\n const v = input?.trim()\n return v ? v : undefined\n}\n\nexport function errorFromControl(\n control: ComputedRef<{ errors: string }>,\n): ComputedRef<string | undefined> {\n return computed(() => trimmedOrUndefined(control.value.errors))\n}\n\n","import type { ControlElement, GroupLayout, UISchemaElement } from '@jsonforms/core'\nimport { Generate, findUISchema } from '@jsonforms/core'\nimport {\n DispatchRenderer,\n rendererProps,\n useJsonFormsControlWithDetail,\n} from '@jsonforms/vue'\nimport { computed, defineComponent, h } from 'vue'\n\nexport const NuxtUiObjectRenderer = defineComponent({\n name: 'NuxtUiObjectRenderer',\n components: { DispatchRenderer },\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control } = useJsonFormsControlWithDetail(\n props as unknown as Parameters<typeof useJsonFormsControlWithDetail>[0],\n )\n\n const detailUiSchema = computed<UISchemaElement>(() => {\n const uiSchemaGenerator = () => {\n const uiSchema = Generate.uiSchema(\n control.value.schema,\n 'Group',\n undefined,\n control.value.rootSchema,\n )\n\n if (!control.value.path) {\n uiSchema.type = 'VerticalLayout'\n } else {\n ;(uiSchema as GroupLayout).label = control.value.label\n }\n return uiSchema\n }\n\n return findUISchema(\n control.value.uischemas,\n control.value.schema,\n control.value.uischema.scope,\n control.value.path,\n uiSchemaGenerator,\n control.value.uischema,\n control.value.rootSchema,\n )\n })\n\n return () => {\n if (!control.value.visible) return null\n\n return h(DispatchRenderer as any, {\n visible: control.value.visible,\n enabled: control.value.enabled,\n schema: control.value.schema,\n uischema: detailUiSchema.value,\n path: control.value.path,\n renderers: control.value.renderers,\n cells: control.value.cells,\n })\n }\n },\n})\n\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { trimmedOrUndefined } from '../util'\n\nexport function createNuxtUiBooleanControl(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiBooleanControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n const modelValue = computed<boolean>({\n get: () => Boolean(control.value.data),\n set: (v: boolean) => handleChange(control.value.path, v),\n })\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const USwitch = resolveComponent('USwitch')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: control.value.description,\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(\n 'div',\n { class: theme.flexBetween },\n h(USwitch as any, {\n modelValue: modelValue.value,\n disabled: !control.value.enabled,\n 'aria-invalid': Boolean(errorMessage.value),\n 'onUpdate:modelValue': (v: boolean) => {\n modelValue.value = v\n },\n }),\n ),\n },\n ),\n )\n }\n },\n })\n}\n","import type { ControlElement, JsonSchema } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { trimmedOrUndefined } from '../util'\n\ntype EnumOption = { label: string; value: unknown }\n\nfunction schemaEnumOptions(schema: JsonSchema | undefined): EnumOption[] {\n if (!schema) return []\n\n if (Array.isArray(schema.enum)) {\n return schema.enum.map((v) => ({ label: String(v), value: v }))\n }\n\n const oneOf = (schema as unknown as { oneOf?: unknown }).oneOf\n if (!Array.isArray(oneOf)) return []\n\n const out: EnumOption[] = []\n for (const entry of oneOf) {\n if (typeof entry !== 'object' || entry === null) continue\n const maybe = entry as Record<string, unknown>\n if (!('const' in maybe)) continue\n out.push({\n value: maybe.const,\n label:\n typeof maybe.title === 'string' && maybe.title.trim()\n ? maybe.title\n : String(maybe.const),\n })\n }\n return out\n}\n\nexport const NuxtUiEnumControl = defineComponent({\n name: 'NuxtUiEnumControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n const options = computed<EnumOption[]>(() => schemaEnumOptions(control.value.schema))\n\n const selectedValue = computed<unknown>({\n get: () => control.value.data,\n set: (v: unknown) => handleChange(control.value.path, v),\n })\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const USelectMenu = resolveComponent('USelectMenu')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: control.value.description,\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(USelectMenu as any, {\n modelValue: selectedValue.value,\n items: options.value,\n valueKey: 'value',\n labelKey: 'label',\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n placeholder: 'Select...',\n 'onUpdate:modelValue': (v: unknown) => {\n selectedValue.value = v\n },\n }),\n },\n ),\n )\n }\n },\n})\n\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { trimmedOrUndefined } from '../util'\n\nexport const NuxtUiIntegerControl = defineComponent({\n name: 'NuxtUiIntegerControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n const modelValue = computed(() => {\n const v = control.value.data\n return v === null || v === undefined ? '' : String(v)\n })\n\n function onUpdate(raw: unknown) {\n const trimmed = String(raw ?? '').trim()\n if (trimmed === '') {\n handleChange(control.value.path, undefined)\n return\n }\n\n const parsed = Number.parseInt(trimmed, 10)\n handleChange(control.value.path, Number.isFinite(parsed) ? parsed : undefined)\n }\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UInput = resolveComponent('UInput')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: control.value.description,\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(UInput as any, {\n type: 'number',\n inputmode: 'numeric',\n step: '1',\n modelValue: modelValue.value,\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n 'onUpdate:modelValue': onUpdate,\n }),\n },\n ),\n )\n }\n },\n})\n\n","import type { ControlElement, JsonSchema } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { trimmedOrUndefined } from '../util'\n\ntype EnumOption = { label: string; value: unknown }\n\nfunction schemaEnumOptions(schema: JsonSchema | undefined): EnumOption[] {\n if (!schema) return []\n\n if (Array.isArray(schema.enum)) {\n return schema.enum.map((v) => ({ label: String(v), value: v }))\n }\n\n const oneOf = (schema as unknown as { oneOf?: unknown }).oneOf\n if (!Array.isArray(oneOf)) return []\n\n const out: EnumOption[] = []\n for (const entry of oneOf) {\n if (typeof entry !== 'object' || entry === null) continue\n const maybe = entry as Record<string, unknown>\n if (!('const' in maybe)) continue\n out.push({\n value: maybe.const,\n label:\n typeof maybe.title === 'string' && maybe.title.trim()\n ? maybe.title\n : String(maybe.const),\n })\n }\n return out\n}\n\nfunction arrayItemsSchema(schema: JsonSchema | undefined): JsonSchema | undefined {\n if (!schema) return undefined\n const items = (schema as unknown as { items?: unknown }).items\n if (typeof items !== 'object' || items === null) return undefined\n return items as JsonSchema\n}\n\nexport const NuxtUiMultiEnumControl = defineComponent({\n name: 'NuxtUiMultiEnumControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n const options = computed<EnumOption[]>(() =>\n schemaEnumOptions(arrayItemsSchema(control.value.schema)),\n )\n\n const selectedValues = computed<unknown[]>({\n get: () => (Array.isArray(control.value.data) ? control.value.data : []),\n set: (v: unknown[]) => handleChange(control.value.path, v),\n })\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const USelectMenu = resolveComponent('USelectMenu')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: control.value.description,\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(USelectMenu as any, {\n multiple: true,\n modelValue: selectedValues.value,\n items: options.value,\n valueKey: 'value',\n labelKey: 'label',\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n placeholder: 'Select...',\n 'onUpdate:modelValue': (v: unknown) => {\n selectedValues.value = Array.isArray(v) ? v : []\n },\n }),\n },\n ),\n )\n }\n },\n})\n\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { trimmedOrUndefined } from '../util'\n\nexport const NuxtUiNumberControl = defineComponent({\n name: 'NuxtUiNumberControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n const modelValue = computed(() => {\n const v = control.value.data\n return v === null || v === undefined ? '' : String(v)\n })\n\n function onUpdate(raw: unknown) {\n const trimmed = String(raw ?? '').trim()\n if (trimmed === '') {\n handleChange(control.value.path, undefined)\n return\n }\n const parsed = Number(trimmed)\n handleChange(control.value.path, Number.isFinite(parsed) ? parsed : undefined)\n }\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UInput = resolveComponent('UInput')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: control.value.description,\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(UInput as any, {\n type: 'number',\n inputmode: 'decimal',\n modelValue: modelValue.value,\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n 'onUpdate:modelValue': onUpdate,\n }),\n },\n ),\n )\n }\n },\n})\n\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, ref, resolveComponent } from 'vue'\n\nimport { trimmedOrUndefined } from '../util'\n\nexport const NuxtUiPasswordControl = defineComponent({\n name: 'NuxtUiPasswordControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n const showPassword = ref(false)\n\n const inputType = computed(() => (showPassword.value ? 'text' : 'password'))\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UInput = resolveComponent('UInput')\n const UButton = resolveComponent('UButton')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: control.value.description,\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(\n UInput as any,\n {\n modelValue: control.value.data ?? '',\n class: 'w-full',\n type: inputType.value,\n autocomplete: 'current-password',\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n 'onUpdate:modelValue': (v: unknown) =>\n handleChange(control.value.path, v),\n },\n {\n trailing: () =>\n h(UButton as any, {\n type: 'button',\n color: 'neutral',\n variant: 'ghost',\n square: true,\n icon: showPassword.value\n ? 'i-heroicons-eye-slash'\n : 'i-heroicons-eye',\n 'aria-pressed': showPassword.value,\n 'aria-label': showPassword.value\n ? 'Hide password'\n : 'Show password',\n disabled: !control.value.enabled,\n onClick: () => {\n showPassword.value = !showPassword.value\n },\n }),\n },\n ),\n },\n ),\n )\n }\n },\n})\n\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport {\n computed,\n defineComponent,\n h,\n resolveComponent,\n} from 'vue'\n\nimport { trimmedOrUndefined } from '../util'\n\nexport const NuxtUiStringControl = defineComponent({\n name: 'NuxtUiStringControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UInput = resolveComponent('UInput')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: control.value.description,\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(UInput as any, {\n modelValue: control.value.data ?? '',\n class: 'w-full',\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n 'onUpdate:modelValue': (v: unknown) =>\n handleChange(control.value.path, v),\n }),\n },\n ),\n )\n }\n },\n})\n\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { trimmedOrUndefined } from '../util'\n\nexport const NuxtUiTextareaControl = defineComponent({\n name: 'NuxtUiTextareaControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UTextarea = resolveComponent('UTextarea')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: control.value.description,\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(UTextarea as any, {\n modelValue: control.value.data ?? '',\n class: 'w-full',\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n rows: 5,\n 'onUpdate:modelValue': (v: unknown) =>\n handleChange(control.value.path, v),\n }),\n },\n ),\n )\n }\n },\n})\n\n","import type { Layout } from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsCategorization } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiCategorizationRenderer(\n theme: NuxtUiRenderersTheme,\n) {\n return defineComponent({\n name: 'NuxtUiCategorizationRenderer',\n components: { DispatchRenderer },\n props: rendererProps<Layout>(),\n setup(props) {\n const { layout, categories } = useJsonFormsCategorization(\n props as unknown as Parameters<typeof useJsonFormsCategorization>[0],\n )\n\n return () => {\n if (!layout.value.visible) return null\n\n return h(\n 'div',\n { class: theme.layoutVerticalWide },\n categories.map((categoryRef, catIndex) => {\n const category = categoryRef.value\n const elements = category.uischema.elements ?? []\n\n return h(\n 'div',\n {\n key: `${layout.value.path}-cat-${catIndex}`,\n class: theme.layoutVertical,\n },\n [\n category.label\n ? h('div', { class: theme.labelSection }, category.label)\n : null,\n h(\n 'div',\n { class: theme.layoutVertical },\n elements.map((element, index) =>\n h(\n 'div',\n { key: `${category.path}-${index}` },\n h(DispatchRenderer as any, {\n schema: category.schema,\n uischema: element,\n path: category.path,\n enabled: category.enabled,\n renderers: category.renderers,\n cells: category.cells,\n }),\n ),\n ),\n ),\n ],\n )\n }),\n )\n }\n },\n })\n}\n","import type { Layout } from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsLayout } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiCategoryRenderer(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiCategoryRenderer',\n components: { DispatchRenderer },\n props: rendererProps<Layout>(),\n setup(props) {\n const { layout } = useJsonFormsLayout(\n props as unknown as Parameters<typeof useJsonFormsLayout>[0],\n )\n\n return () => {\n if (!layout.value.visible) return null\n\n const elements = layout.value.uischema.elements ?? []\n\n return h('div', { class: theme.layoutVertical }, [\n layout.value.label\n ? h('div', { class: theme.labelSection }, layout.value.label)\n : null,\n h(\n 'div',\n { class: theme.layoutVertical },\n elements.map((element, index) =>\n h(\n 'div',\n { key: `${layout.value.path}-${index}` },\n h(DispatchRenderer as any, {\n schema: layout.value.schema,\n uischema: element,\n path: layout.value.path,\n enabled: layout.value.enabled,\n renderers: layout.value.renderers,\n cells: layout.value.cells,\n }),\n ),\n ),\n ),\n ])\n }\n },\n })\n}\n","import type { Layout } from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsLayout } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiGroupRenderer(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiGroupRenderer',\n components: { DispatchRenderer },\n props: rendererProps<Layout>(),\n setup(props) {\n const { layout } = useJsonFormsLayout(\n props as unknown as Parameters<typeof useJsonFormsLayout>[0],\n )\n\n return () => {\n if (!layout.value.visible) return null\n\n const elements = layout.value.uischema.elements ?? []\n const isNested = layout.value.path?.includes('.') ?? false\n const containerClass = isNested ? theme.groupNested : theme.panel\n\n return h(\n 'div',\n { class: containerClass },\n [\n layout.value.label\n ? h('div', { class: theme.labelSectionSpaced }, layout.value.label)\n : null,\n h(\n 'div',\n { class: theme.layoutVertical },\n elements.map((element, index) =>\n h(\n 'div',\n { key: `${layout.value.path}-${index}` },\n h(DispatchRenderer as any, {\n schema: layout.value.schema,\n uischema: element,\n path: layout.value.path,\n enabled: layout.value.enabled,\n renderers: layout.value.renderers,\n cells: layout.value.cells,\n }),\n ),\n ),\n ),\n ],\n )\n }\n },\n })\n}\n","import type { Layout } from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsLayout } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiHorizontalLayoutRenderer(\n theme: NuxtUiRenderersTheme,\n) {\n return defineComponent({\n name: 'NuxtUiHorizontalLayoutRenderer',\n components: { DispatchRenderer },\n props: rendererProps<Layout>(),\n setup(props) {\n const { layout } = useJsonFormsLayout(\n props as unknown as Parameters<typeof useJsonFormsLayout>[0],\n )\n\n return () => {\n if (!layout.value.visible) return null\n\n const elements = layout.value.uischema.elements ?? []\n\n return h(\n 'div',\n { class: theme.layoutHorizontal },\n elements.map((element, index) =>\n h(\n 'div',\n {\n key: `${layout.value.path}-${index}`,\n class: theme.layoutHorizontalItem,\n },\n h(DispatchRenderer as any, {\n schema: layout.value.schema,\n uischema: element,\n path: layout.value.path,\n enabled: layout.value.enabled,\n renderers: layout.value.renderers,\n cells: layout.value.cells,\n }),\n ),\n ),\n )\n }\n },\n })\n}\n","import type { LabelElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsLabel } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiLabelRenderer(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiLabelRenderer',\n props: rendererProps<LabelElement>(),\n setup(props) {\n const { label } = useJsonFormsLabel(\n props as unknown as Parameters<typeof useJsonFormsLabel>[0],\n )\n\n return () => {\n if (!label.value.visible) return null\n return h('div', { class: theme.textLabel }, label.value.text)\n }\n },\n })\n}\n","import type { Layout } from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsLayout } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiVerticalLayoutRenderer(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiVerticalLayoutRenderer',\n components: { DispatchRenderer },\n props: rendererProps<Layout>(),\n setup(props) {\n const { layout } = useJsonFormsLayout(\n props as unknown as Parameters<typeof useJsonFormsLayout>[0],\n )\n\n return () => {\n if (!layout.value.visible) return null\n\n const elements = layout.value.uischema.elements ?? []\n\n return h(\n 'div',\n { class: theme.layoutVertical },\n elements.map((element, index) =>\n h(\n 'div',\n { key: `${layout.value.path}-${index}` },\n h(DispatchRenderer as any, {\n schema: layout.value.schema,\n uischema: element,\n path: layout.value.path,\n enabled: layout.value.enabled,\n renderers: layout.value.renderers,\n cells: layout.value.cells,\n }),\n ),\n ),\n )\n }\n },\n })\n}\n","/**\n * Theme for JSONForms Nuxt UI renderers.\n * Uses semantic class names (jf-*) - styled by default styles.css.\n * Consumers can override any role with custom classes (Tailwind, Bootstrap, etc.).\n */\n\nexport interface NuxtUiRenderersTheme {\n /** Bordered panel (top-level groups, array items). */\n panel: string\n /** Nested group container (no border, padding only). */\n groupNested: string\n /** Vertical stack layout. */\n layoutVertical: string\n /** Vertical stack with wider gap (categorization). */\n layoutVerticalWide: string\n /** Horizontal layout, responsive. */\n layoutHorizontal: string\n /** Child of horizontal layout (flex grow, min-width). */\n layoutHorizontalItem: string\n /** Array item toolbar (flex + margin). */\n arrayItemToolbar: string\n /** Section/category label. */\n labelSection: string\n /** Section label with bottom margin. */\n labelSectionSpaced: string\n /** Muted secondary text. */\n textMuted: string\n /** Muted secondary text, smaller. */\n textMutedXs: string\n /** Array item title. */\n textItemTitle: string\n /** Suffix after item title. */\n textItemSuffix: string\n /** Plain label. */\n textLabel: string\n /** Flex row: centered, space between. */\n flexBetween: string\n /** Flex row: start-aligned, space between. */\n flexBetweenStart: string\n /** Compact flex row for action buttons. */\n flexActions: string\n}\n\n/** Semantic class defaults - styled by styles.css. No Tailwind/CSS framework dependency. */\nexport const defaultTheme: NuxtUiRenderersTheme = {\n panel: 'jf-panel',\n groupNested: 'jf-group',\n layoutVertical: 'jf-layout-vertical',\n layoutVerticalWide: 'jf-layout-vertical-wide',\n layoutHorizontal: 'jf-layout-horizontal',\n layoutHorizontalItem: 'jf-layout-horizontal-item',\n arrayItemToolbar: 'jf-array-item-toolbar',\n labelSection: 'jf-label-section',\n labelSectionSpaced: 'jf-label-section-spaced',\n textMuted: 'jf-text-muted',\n textMutedXs: 'jf-text-muted-xs',\n textItemTitle: 'jf-text-item-title',\n textItemSuffix: 'jf-text-item-suffix',\n textLabel: 'jf-text-label',\n flexBetween: 'jf-flex-between',\n flexBetweenStart: 'jf-flex-between-start',\n flexActions: 'jf-flex-actions',\n}\n\nexport function mergeTheme(\n overrides?: Partial<NuxtUiRenderersTheme>,\n): NuxtUiRenderersTheme {\n return overrides ? { ...defaultTheme, ...overrides } : { ...defaultTheme }\n}\n"],"mappings":"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","names":["Resolve","computed","computed","findUISchema","DispatchRenderer","rendererProps","computed","defineComponent","h","rendererProps","computed","defineComponent","h","resolveComponent","defineComponent","rendererProps","computed","resolveComponent","h","rendererProps","useJsonFormsControl","computed","defineComponent","h","resolveComponent","defineComponent","rendererProps","useJsonFormsControl","computed","resolveComponent","h","rendererProps","useJsonFormsControl","computed","defineComponent","h","resolveComponent","defineComponent","rendererProps","useJsonFormsControl","computed","resolveComponent","h","rendererProps","useJsonFormsControl","computed","defineComponent","h","resolveComponent","schemaEnumOptions","defineComponent","rendererProps","useJsonFormsControl","computed","resolveComponent","h","rendererProps","useJsonFormsControl","computed","defineComponent","h","resolveComponent","defineComponent","rendererProps","useJsonFormsControl","computed","resolveComponent","h","rendererProps","useJsonFormsControl","computed","defineComponent","h","resolveComponent","defineComponent","rendererProps","useJsonFormsControl","computed","resolveComponent","h","rendererProps","useJsonFormsControl","computed","defineComponent","h","resolveComponent","defineComponent","rendererProps","useJsonFormsControl","computed","resolveComponent","h","rendererProps","useJsonFormsControl","computed","defineComponent","h","resolveComponent","defineComponent","rendererProps","useJsonFormsControl","computed","resolveComponent","h","DispatchRenderer","rendererProps","defineComponent","h","DispatchRenderer","rendererProps","defineComponent","h","DispatchRenderer","rendererProps","useJsonFormsLayout","defineComponent","h","DispatchRenderer","rendererProps","useJsonFormsLayout","defineComponent","h","rendererProps","defineComponent","h","DispatchRenderer","rendererProps","useJsonFormsLayout","defineComponent","h","Resolve"]}
1
+ {"version":3,"sources":["../src/nuxtUiRenderers.ts","../src/renderers/complex/NuxtUiArrayListRenderer.ts","../src/renderers/util.ts","../src/renderers/complex/NuxtUiObjectRenderer.ts","../src/renderers/controls/NuxtUiBooleanControl.ts","../src/renderers/controls/NuxtUiEnumControl.ts","../src/renderers/controls/NuxtUiIntegerControl.ts","../src/renderers/controls/NuxtUiMultiEnumControl.ts","../src/renderers/controls/NuxtUiNumberControl.ts","../src/renderers/controls/NuxtUiPasswordControl.ts","../src/renderers/controls/NuxtUiStringControl.ts","../src/renderers/controls/NuxtUiTextareaControl.ts","../src/renderers/layouts/NuxtUiCategorizationRenderer.ts","../src/renderers/layouts/NuxtUiCategoryRenderer.ts","../src/renderers/layouts/NuxtUiGroupRenderer.ts","../src/renderers/layouts/NuxtUiHorizontalLayoutRenderer.ts","../src/renderers/layouts/NuxtUiLabelRenderer.ts","../src/renderers/layouts/NuxtUiVerticalLayoutRenderer.ts","../src/renderers/theme.ts"],"sourcesContent":["import type { JsonFormsRendererRegistryEntry } from '@jsonforms/core'\nimport {\n and,\n formatIs,\n isBooleanControl,\n isEnumControl,\n isEnumSchema,\n isIntegerControl,\n isMultiLineControl,\n isNumberControl,\n isObjectControl,\n isStringControl,\n rankWith,\n Resolve,\n schemaTypeIs,\n uiTypeIs,\n} from '@jsonforms/core'\nimport { markRaw } from 'vue'\n\nimport { createNuxtUiArrayListRenderer } from './renderers/complex/NuxtUiArrayListRenderer'\nimport { NuxtUiObjectRenderer } from './renderers/complex/NuxtUiObjectRenderer'\nimport { createNuxtUiBooleanControl } from './renderers/controls/NuxtUiBooleanControl'\nimport { NuxtUiEnumControl } from './renderers/controls/NuxtUiEnumControl'\nimport { NuxtUiIntegerControl } from './renderers/controls/NuxtUiIntegerControl'\nimport { NuxtUiMultiEnumControl } from './renderers/controls/NuxtUiMultiEnumControl'\nimport { NuxtUiNumberControl } from './renderers/controls/NuxtUiNumberControl'\nimport { NuxtUiPasswordControl } from './renderers/controls/NuxtUiPasswordControl'\nimport { NuxtUiStringControl } from './renderers/controls/NuxtUiStringControl'\nimport { NuxtUiTextareaControl } from './renderers/controls/NuxtUiTextareaControl'\nimport { createNuxtUiCategorizationRenderer } from './renderers/layouts/NuxtUiCategorizationRenderer'\nimport { createNuxtUiCategoryRenderer } from './renderers/layouts/NuxtUiCategoryRenderer'\nimport { createNuxtUiGroupRenderer } from './renderers/layouts/NuxtUiGroupRenderer'\nimport { createNuxtUiHorizontalLayoutRenderer } from './renderers/layouts/NuxtUiHorizontalLayoutRenderer'\nimport { createNuxtUiLabelRenderer } from './renderers/layouts/NuxtUiLabelRenderer'\nimport { createNuxtUiVerticalLayoutRenderer } from './renderers/layouts/NuxtUiVerticalLayoutRenderer'\nimport {\n mergeTheme,\n type NuxtUiRenderersTheme,\n} from './renderers/theme'\n\n// Intentionally rank higher than typical defaults.\nconst RANK = 10\nconst ENUM_RANK = RANK + 1\nconst PASSWORD_RANK = ENUM_RANK + 1\n\nconst isMultiEnumControl = (\n uischema: unknown,\n schema: unknown,\n context: unknown,\n): boolean => {\n if (!uiTypeIs('Control')(uischema as any, schema as any, context as any)) {\n return false\n }\n\n const scope = (uischema as any)?.scope\n if (typeof scope !== 'string') return false\n\n // JSONForms passes the root schema into testers, but different call sites can\n // vary. Resolve against whatever we have, preferring the provided rootSchema.\n const rootSchema = (context as any)?.rootSchema ?? (schema as any)\n let resolved: any\n try {\n resolved = Resolve.schema(schema as any, scope, rootSchema)\n } catch {\n return false\n }\n\n if (resolved?.type !== 'array') return false\n\n const items = resolved?.items\n if (!items) return false\n\n // JSON Schema `items` can be a schema or an array of schemas.\n if (Array.isArray(items)) return false\n if (typeof items !== 'object' || items === null) return false\n\n const resolvedItems =\n '$ref' in items && typeof (items as any).$ref === 'string'\n ? Resolve.schema(rootSchema, (items as any).$ref, rootSchema)\n : items\n\n return isEnumSchema(resolvedItems as any)\n}\n\n/** Matches oneOf: [{ const, title? }, ...] - enum-like schema with display labels. */\nconst isOneOfEnumControl = (\n uischema: unknown,\n schema: unknown,\n context: unknown,\n): boolean => {\n if (!uiTypeIs('Control')(uischema as any, schema as any, context as any)) {\n return false\n }\n\n const scope = (uischema as any)?.scope\n if (typeof scope !== 'string') return false\n\n const rootSchema = (context as any)?.rootSchema ?? (schema as any)\n let resolved: any\n try {\n resolved = Resolve.schema(schema as any, scope, rootSchema)\n } catch {\n return false\n }\n\n const oneOf = resolved?.oneOf\n if (!Array.isArray(oneOf) || oneOf.length === 0) return false\n\n for (const entry of oneOf) {\n if (typeof entry !== 'object' || entry === null) continue\n if (!('const' in (entry as Record<string, unknown>))) return false\n }\n return true\n}\n\nexport interface CreateNuxtUiRenderersOptions {\n /** Override theme classes. Use semantic jf-* or custom (Tailwind, etc.). */\n theme?: Partial<NuxtUiRenderersTheme>\n}\n\nexport function createNuxtUiRenderers(\n options?: CreateNuxtUiRenderersOptions,\n): JsonFormsRendererRegistryEntry[] {\n const theme = mergeTheme(options?.theme)\n\n return [\n // Layouts\n {\n tester: rankWith(RANK, uiTypeIs('VerticalLayout')),\n renderer: markRaw(createNuxtUiVerticalLayoutRenderer(theme)),\n },\n {\n tester: rankWith(RANK, uiTypeIs('HorizontalLayout')),\n renderer: markRaw(createNuxtUiHorizontalLayoutRenderer(theme)),\n },\n {\n tester: rankWith(RANK, uiTypeIs('Group')),\n renderer: markRaw(createNuxtUiGroupRenderer(theme)),\n },\n {\n tester: rankWith(RANK, uiTypeIs('Categorization')),\n renderer: markRaw(createNuxtUiCategorizationRenderer(theme)),\n },\n {\n tester: rankWith(RANK, uiTypeIs('Category')),\n renderer: markRaw(createNuxtUiCategoryRenderer(theme)),\n },\n {\n tester: rankWith(RANK, uiTypeIs('Label')),\n renderer: markRaw(createNuxtUiLabelRenderer(theme)),\n },\n\n // Complex schemas\n {\n tester: rankWith(RANK, schemaTypeIs('array')),\n renderer: markRaw(createNuxtUiArrayListRenderer(theme)),\n },\n {\n tester: rankWith(RANK, isObjectControl),\n renderer: markRaw(NuxtUiObjectRenderer),\n },\n\n // Primitive controls\n {\n tester: rankWith(RANK, isMultiLineControl),\n renderer: markRaw(NuxtUiTextareaControl),\n },\n {\n tester: rankWith(RANK, isNumberControl),\n renderer: markRaw(NuxtUiNumberControl),\n },\n {\n tester: rankWith(RANK, isIntegerControl),\n renderer: markRaw(NuxtUiIntegerControl),\n },\n {\n tester: rankWith(RANK, isBooleanControl),\n renderer: markRaw(createNuxtUiBooleanControl(theme)),\n },\n {\n // Multi-enum must outrank generic array renderer and string renderer.\n tester: rankWith(ENUM_RANK, isMultiEnumControl),\n renderer: markRaw(NuxtUiMultiEnumControl),\n },\n {\n // oneOf with const+title (display labels) - same as enum for rendering.\n tester: rankWith(ENUM_RANK, isOneOfEnumControl),\n renderer: markRaw(NuxtUiEnumControl),\n },\n {\n // Enum must outrank the generic string control, otherwise enums render\n // as freeform text inputs.\n tester: rankWith(ENUM_RANK, isEnumControl),\n renderer: markRaw(NuxtUiEnumControl),\n },\n {\n tester: rankWith(PASSWORD_RANK, and(isStringControl, formatIs('password'))),\n renderer: markRaw(NuxtUiPasswordControl),\n },\n {\n tester: rankWith(RANK, isStringControl),\n renderer: markRaw(NuxtUiStringControl),\n },\n ]\n}\n\n/** Default renderers with semantic theme. Import styles.css for default styling. */\nexport const nuxtUiRenderers: JsonFormsRendererRegistryEntry[] =\n createNuxtUiRenderers()\n","import type { ControlElement, JsonSchema, UISchemaElement } from '@jsonforms/core'\nimport {\n Resolve,\n composePaths,\n createDefaultValue,\n findUISchema,\n getFirstPrimitiveProp,\n} from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsArrayControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { trimmedOrUndefined } from '../util'\n\nexport function createNuxtUiArrayListRenderer(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiArrayListRenderer',\n components: { DispatchRenderer },\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, addItem, removeItems, moveUp, moveDown } =\n useJsonFormsArrayControl(\n props as unknown as Parameters<typeof useJsonFormsArrayControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n const items = computed<unknown[]>(() =>\n Array.isArray(control.value.data) ? control.value.data : [],\n )\n\n const arraySchema = computed<JsonSchema | undefined>(() => {\n try {\n return Resolve.schema(\n props.schema,\n control.value.uischema.scope,\n control.value.rootSchema,\n )\n } catch {\n return undefined\n }\n })\n\n const maxItemsReached = computed(() => {\n const max = arraySchema.value?.maxItems\n return typeof max === 'number' ? items.value.length >= max : false\n })\n\n const minItemsReached = computed(() => {\n const min = arraySchema.value?.minItems\n return typeof min === 'number' ? items.value.length <= min : false\n })\n\n const childUiSchema = computed<UISchemaElement>(() =>\n findUISchema(\n control.value.uischemas,\n control.value.schema,\n control.value.uischema.scope,\n control.value.path,\n undefined,\n control.value.uischema,\n control.value.rootSchema,\n ),\n )\n\n function childLabelForIndex(index: number): string {\n const childLabelProp =\n getChildLabelPropFromUiSchemaOptions(control.value.uischema.options) ??\n getFirstPrimitiveProp(control.value.schema)\n\n if (!childLabelProp) return `${index}`\n\n const labelValue = Resolve.data(\n control.value.data,\n composePaths(`${index}`, childLabelProp),\n )\n if (\n labelValue === undefined ||\n labelValue === null ||\n Number.isNaN(labelValue as any)\n ) {\n return ''\n }\n return String(labelValue)\n }\n\n function getChildLabelPropFromUiSchemaOptions(\n options: unknown,\n ): string | undefined {\n if (!options || typeof options !== 'object') return undefined\n const value = (options as Record<string, unknown>).childLabelProp\n return typeof value === 'string' ? value : undefined\n }\n\n function addButtonClick() {\n addItem(\n control.value.path,\n createDefaultValue(control.value.schema, control.value.rootSchema),\n )()\n }\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UButton = resolveComponent('UButton')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: control.value.description,\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h('div', { class: theme.layoutVertical }, [\n h('div', { class: theme.flexBetween }, [\n h(\n 'div',\n { class: theme.textMutedXs },\n `${items.value.length} items`,\n ),\n h(\n UButton as any,\n {\n type: 'button',\n size: 'xs',\n variant: 'soft',\n color: 'neutral',\n disabled:\n !control.value.enabled || maxItemsReached.value,\n onClick: addButtonClick,\n },\n { default: () => 'Add' },\n ),\n ]),\n\n items.value.length === 0\n ? h('div', { class: theme.textMuted }, 'No items.')\n : null,\n\n ...items.value.map((_item, index) =>\n h(\n 'div',\n {\n key: `${control.value.path}-${index}`,\n class: theme.panel,\n },\n [\n h(\n 'div',\n { class: theme.arrayItemToolbar },\n [\n h('div', { class: 'jf-min-w-0' }, [\n h(\n 'div',\n { class: theme.textItemTitle },\n [\n `Item ${index + 1}`,\n childLabelForIndex(index)\n ? h(\n 'span',\n { class: theme.textItemSuffix },\n ` — ${childLabelForIndex(index)}`,\n )\n : null,\n ],\n ),\n ]),\n h('div', { class: theme.flexActions }, [\n h(\n UButton as any,\n {\n type: 'button',\n size: 'xs',\n variant: 'ghost',\n color: 'neutral',\n disabled:\n !control.value.enabled || index === 0,\n onClick: () =>\n moveUp?.(control.value.path, index)(),\n },\n { default: () => 'Up' },\n ),\n h(\n UButton as any,\n {\n type: 'button',\n size: 'xs',\n variant: 'ghost',\n color: 'neutral',\n disabled:\n !control.value.enabled ||\n index >= items.value.length - 1,\n onClick: () =>\n moveDown?.(control.value.path, index)(),\n },\n { default: () => 'Down' },\n ),\n h(\n UButton as any,\n {\n type: 'button',\n size: 'xs',\n variant: 'ghost',\n color: 'error',\n disabled:\n !control.value.enabled ||\n minItemsReached.value,\n onClick: () =>\n removeItems?.(control.value.path, [\n index,\n ])(),\n },\n { default: () => 'Remove' },\n ),\n ]),\n ],\n ),\n\n h(DispatchRenderer as any, {\n schema: control.value.schema,\n uischema: childUiSchema.value,\n path: composePaths(control.value.path, `${index}`),\n enabled: control.value.enabled,\n renderers: control.value.renderers,\n cells: control.value.cells,\n }),\n ],\n ),\n ),\n ]),\n },\n ),\n )\n }\n },\n })\n}\n","import { computed, type ComputedRef } from 'vue'\n\nexport function trimmedOrUndefined(input: string | undefined): string | undefined {\n const v = input?.trim()\n return v ? v : undefined\n}\n\n/**\n * Resolves the control's description for the label/field.\n * Uses control.description when set, otherwise falls back to schema.description.\n */\nexport function controlDescription(control: {\n description?: string\n schema?: { description?: string }\n}): string | undefined {\n const d = control.description?.trim()\n if (d) return d\n const sd = (control.schema as { description?: string } | undefined)?.description\n return typeof sd === 'string' && sd.trim() ? sd.trim() : undefined\n}\n\nexport function errorFromControl(\n control: ComputedRef<{ errors: string }>,\n): ComputedRef<string | undefined> {\n return computed(() => trimmedOrUndefined(control.value.errors))\n}\n\n","import type { ControlElement, GroupLayout, UISchemaElement } from '@jsonforms/core'\nimport { Generate, findUISchema } from '@jsonforms/core'\nimport {\n DispatchRenderer,\n rendererProps,\n useJsonFormsControlWithDetail,\n} from '@jsonforms/vue'\nimport { computed, defineComponent, h } from 'vue'\n\nexport const NuxtUiObjectRenderer = defineComponent({\n name: 'NuxtUiObjectRenderer',\n components: { DispatchRenderer },\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control } = useJsonFormsControlWithDetail(\n props as unknown as Parameters<typeof useJsonFormsControlWithDetail>[0],\n )\n\n const detailUiSchema = computed<UISchemaElement>(() => {\n const uiSchemaGenerator = () => {\n const uiSchema = Generate.uiSchema(\n control.value.schema,\n 'Group',\n undefined,\n control.value.rootSchema,\n )\n\n if (!control.value.path) {\n uiSchema.type = 'VerticalLayout'\n } else {\n ;(uiSchema as GroupLayout).label = control.value.label\n }\n return uiSchema\n }\n\n return findUISchema(\n control.value.uischemas,\n control.value.schema,\n control.value.uischema.scope,\n control.value.path,\n uiSchemaGenerator,\n control.value.uischema,\n control.value.rootSchema,\n )\n })\n\n return () => {\n if (!control.value.visible) return null\n\n return h(DispatchRenderer as any, {\n visible: control.value.visible,\n enabled: control.value.enabled,\n schema: control.value.schema,\n uischema: detailUiSchema.value,\n path: control.value.path,\n renderers: control.value.renderers,\n cells: control.value.cells,\n })\n }\n },\n})\n\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { controlDescription, trimmedOrUndefined } from '../util'\n\nexport function createNuxtUiBooleanControl(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiBooleanControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n const modelValue = computed<boolean>({\n get: () => Boolean(control.value.data),\n set: (v: boolean) => handleChange(control.value.path, v),\n })\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const USwitch = resolveComponent('USwitch')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: controlDescription(control.value),\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(\n 'div',\n { class: theme.flexBetween },\n h(USwitch as any, {\n modelValue: modelValue.value,\n disabled: !control.value.enabled,\n 'aria-invalid': Boolean(errorMessage.value),\n 'onUpdate:modelValue': (v: boolean) => {\n modelValue.value = v\n },\n }),\n ),\n },\n ),\n )\n }\n },\n })\n}\n","import type { ControlElement, JsonSchema } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { controlDescription, trimmedOrUndefined } from '../util'\n\ntype EnumOption = { label: string; value: unknown }\n\nfunction schemaEnumOptions(schema: JsonSchema | undefined): EnumOption[] {\n if (!schema) return []\n\n if (Array.isArray(schema.enum)) {\n return schema.enum.map((v) => ({ label: String(v), value: v }))\n }\n\n const oneOf = (schema as unknown as { oneOf?: unknown }).oneOf\n if (!Array.isArray(oneOf)) return []\n\n const out: EnumOption[] = []\n for (const entry of oneOf) {\n if (typeof entry !== 'object' || entry === null) continue\n const maybe = entry as Record<string, unknown>\n if (!('const' in maybe)) continue\n out.push({\n value: maybe.const,\n label:\n typeof maybe.title === 'string' && maybe.title.trim()\n ? maybe.title\n : String(maybe.const),\n })\n }\n return out\n}\n\nexport const NuxtUiEnumControl = defineComponent({\n name: 'NuxtUiEnumControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n const options = computed<EnumOption[]>(() => schemaEnumOptions(control.value.schema))\n\n const selectedValue = computed<unknown>({\n get: () => control.value.data,\n set: (v: unknown) => handleChange(control.value.path, v),\n })\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const USelectMenu = resolveComponent('USelectMenu')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: controlDescription(control.value),\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(USelectMenu as any, {\n modelValue: selectedValue.value,\n items: options.value,\n valueKey: 'value',\n labelKey: 'label',\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n placeholder: 'Select...',\n 'onUpdate:modelValue': (v: unknown) => {\n selectedValue.value = v\n },\n }),\n },\n ),\n )\n }\n },\n})\n\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { controlDescription, trimmedOrUndefined } from '../util'\n\nexport const NuxtUiIntegerControl = defineComponent({\n name: 'NuxtUiIntegerControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n const modelValue = computed(() => {\n const v = control.value.data\n return v === null || v === undefined ? '' : String(v)\n })\n\n function onUpdate(raw: unknown) {\n const trimmed = String(raw ?? '').trim()\n if (trimmed === '') {\n handleChange(control.value.path, undefined)\n return\n }\n\n const parsed = Number.parseInt(trimmed, 10)\n handleChange(control.value.path, Number.isFinite(parsed) ? parsed : undefined)\n }\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UInput = resolveComponent('UInput')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: controlDescription(control.value),\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(UInput as any, {\n type: 'number',\n inputmode: 'numeric',\n step: '1',\n modelValue: modelValue.value,\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n 'onUpdate:modelValue': onUpdate,\n }),\n },\n ),\n )\n }\n },\n})\n\n","import type { ControlElement, JsonSchema } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { controlDescription, trimmedOrUndefined } from '../util'\n\ntype EnumOption = { label: string; value: unknown }\n\nfunction schemaEnumOptions(schema: JsonSchema | undefined): EnumOption[] {\n if (!schema) return []\n\n if (Array.isArray(schema.enum)) {\n return schema.enum.map((v) => ({ label: String(v), value: v }))\n }\n\n const oneOf = (schema as unknown as { oneOf?: unknown }).oneOf\n if (!Array.isArray(oneOf)) return []\n\n const out: EnumOption[] = []\n for (const entry of oneOf) {\n if (typeof entry !== 'object' || entry === null) continue\n const maybe = entry as Record<string, unknown>\n if (!('const' in maybe)) continue\n out.push({\n value: maybe.const,\n label:\n typeof maybe.title === 'string' && maybe.title.trim()\n ? maybe.title\n : String(maybe.const),\n })\n }\n return out\n}\n\nfunction arrayItemsSchema(schema: JsonSchema | undefined): JsonSchema | undefined {\n if (!schema) return undefined\n const items = (schema as unknown as { items?: unknown }).items\n if (typeof items !== 'object' || items === null) return undefined\n return items as JsonSchema\n}\n\nexport const NuxtUiMultiEnumControl = defineComponent({\n name: 'NuxtUiMultiEnumControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n const options = computed<EnumOption[]>(() =>\n schemaEnumOptions(arrayItemsSchema(control.value.schema)),\n )\n\n const selectedValues = computed<unknown[]>({\n get: () => (Array.isArray(control.value.data) ? control.value.data : []),\n set: (v: unknown[]) => handleChange(control.value.path, v),\n })\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const USelectMenu = resolveComponent('USelectMenu')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: controlDescription(control.value),\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(USelectMenu as any, {\n multiple: true,\n modelValue: selectedValues.value,\n items: options.value,\n valueKey: 'value',\n labelKey: 'label',\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n placeholder: 'Select...',\n 'onUpdate:modelValue': (v: unknown) => {\n selectedValues.value = Array.isArray(v) ? v : []\n },\n }),\n },\n ),\n )\n }\n },\n})\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { controlDescription, trimmedOrUndefined } from '../util'\n\nexport const NuxtUiNumberControl = defineComponent({\n name: 'NuxtUiNumberControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n const modelValue = computed(() => {\n const v = control.value.data\n return v === null || v === undefined ? '' : String(v)\n })\n\n function onUpdate(raw: unknown) {\n const trimmed = String(raw ?? '').trim()\n if (trimmed === '') {\n handleChange(control.value.path, undefined)\n return\n }\n const parsed = Number(trimmed)\n handleChange(control.value.path, Number.isFinite(parsed) ? parsed : undefined)\n }\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UInput = resolveComponent('UInput')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: controlDescription(control.value),\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(UInput as any, {\n type: 'number',\n inputmode: 'decimal',\n modelValue: modelValue.value,\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n 'onUpdate:modelValue': onUpdate,\n }),\n },\n ),\n )\n }\n },\n})\n\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, ref, resolveComponent } from 'vue'\n\nimport { controlDescription, trimmedOrUndefined } from '../util'\n\nexport const NuxtUiPasswordControl = defineComponent({\n name: 'NuxtUiPasswordControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n const showPassword = ref(false)\n\n const inputType = computed(() => (showPassword.value ? 'text' : 'password'))\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UInput = resolveComponent('UInput')\n const UButton = resolveComponent('UButton')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: controlDescription(control.value),\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(\n UInput as any,\n {\n modelValue: control.value.data ?? '',\n class: 'w-full',\n type: inputType.value,\n autocomplete: 'current-password',\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n 'onUpdate:modelValue': (v: unknown) =>\n handleChange(control.value.path, v),\n },\n {\n trailing: () =>\n h(UButton as any, {\n type: 'button',\n color: 'neutral',\n variant: 'ghost',\n square: true,\n icon: showPassword.value\n ? 'i-heroicons-eye-slash'\n : 'i-heroicons-eye',\n 'aria-pressed': showPassword.value,\n 'aria-label': showPassword.value\n ? 'Hide password'\n : 'Show password',\n disabled: !control.value.enabled,\n onClick: () => {\n showPassword.value = !showPassword.value\n },\n }),\n },\n ),\n },\n ),\n )\n }\n },\n})\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport {\n computed,\n defineComponent,\n h,\n resolveComponent,\n} from 'vue'\n\nimport { controlDescription, trimmedOrUndefined } from '../util'\n\nexport const NuxtUiStringControl = defineComponent({\n name: 'NuxtUiStringControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UInput = resolveComponent('UInput')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: controlDescription(control.value),\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(UInput as any, {\n modelValue: control.value.data ?? '',\n class: 'w-full',\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n 'onUpdate:modelValue': (v: unknown) =>\n handleChange(control.value.path, v),\n }),\n },\n ),\n )\n }\n },\n})\n\n","import type { ControlElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsControl } from '@jsonforms/vue'\nimport { computed, defineComponent, h, resolveComponent } from 'vue'\n\nimport { controlDescription, trimmedOrUndefined } from '../util'\n\nexport const NuxtUiTextareaControl = defineComponent({\n name: 'NuxtUiTextareaControl',\n props: rendererProps<ControlElement>(),\n setup(props) {\n const { control, handleChange } = useJsonFormsControl(\n props as unknown as Parameters<typeof useJsonFormsControl>[0],\n )\n\n const errorMessage = computed(() => trimmedOrUndefined(control.value.errors))\n\n return () => {\n if (!control.value.visible) return null\n\n const UFormField = resolveComponent('UFormField')\n const UTextarea = resolveComponent('UTextarea')\n\n return h(\n 'div',\n {},\n h(\n UFormField as any,\n {\n label: control.value.label,\n description: controlDescription(control.value),\n required: control.value.required,\n error: errorMessage.value,\n },\n {\n default: () =>\n h(UTextarea as any, {\n modelValue: control.value.data ?? '',\n class: 'w-full',\n disabled: !control.value.enabled,\n color: errorMessage.value ? 'error' : undefined,\n 'aria-invalid': Boolean(errorMessage.value),\n rows: 5,\n 'onUpdate:modelValue': (v: unknown) =>\n handleChange(control.value.path, v),\n }),\n },\n ),\n )\n }\n },\n})\n\n","import type { Layout } from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsCategorization } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiCategorizationRenderer(\n theme: NuxtUiRenderersTheme,\n) {\n return defineComponent({\n name: 'NuxtUiCategorizationRenderer',\n components: { DispatchRenderer },\n props: rendererProps<Layout>(),\n setup(props) {\n const { layout, categories } = useJsonFormsCategorization(\n props as unknown as Parameters<typeof useJsonFormsCategorization>[0],\n )\n\n return () => {\n if (!layout.value.visible) return null\n\n return h(\n 'div',\n { class: theme.layoutVerticalWide },\n categories.map((categoryRef, catIndex) => {\n const category = categoryRef.value\n const elements = category.uischema.elements ?? []\n\n return h(\n 'div',\n {\n key: `${layout.value.path}-cat-${catIndex}`,\n class: theme.layoutVertical,\n },\n [\n category.label\n ? h('div', { class: theme.labelSection }, category.label)\n : null,\n h(\n 'div',\n { class: theme.layoutVertical },\n elements.map((element, index) =>\n h(\n 'div',\n { key: `${category.path}-${index}` },\n h(DispatchRenderer as any, {\n schema: category.schema,\n uischema: element,\n path: category.path,\n enabled: category.enabled,\n renderers: category.renderers,\n cells: category.cells,\n }),\n ),\n ),\n ),\n ],\n )\n }),\n )\n }\n },\n })\n}\n","import type { Layout } from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsLayout } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiCategoryRenderer(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiCategoryRenderer',\n components: { DispatchRenderer },\n props: rendererProps<Layout>(),\n setup(props) {\n const { layout } = useJsonFormsLayout(\n props as unknown as Parameters<typeof useJsonFormsLayout>[0],\n )\n\n return () => {\n if (!layout.value.visible) return null\n\n const elements = layout.value.uischema.elements ?? []\n\n return h('div', { class: theme.layoutVertical }, [\n layout.value.label\n ? h('div', { class: theme.labelSection }, layout.value.label)\n : null,\n h(\n 'div',\n { class: theme.layoutVertical },\n elements.map((element, index) =>\n h(\n 'div',\n { key: `${layout.value.path}-${index}` },\n h(DispatchRenderer as any, {\n schema: layout.value.schema,\n uischema: element,\n path: layout.value.path,\n enabled: layout.value.enabled,\n renderers: layout.value.renderers,\n cells: layout.value.cells,\n }),\n ),\n ),\n ),\n ])\n }\n },\n })\n}\n","import type { Layout } from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsLayout } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiGroupRenderer(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiGroupRenderer',\n components: { DispatchRenderer },\n props: rendererProps<Layout>(),\n setup(props) {\n const { layout } = useJsonFormsLayout(\n props as unknown as Parameters<typeof useJsonFormsLayout>[0],\n )\n\n return () => {\n if (!layout.value.visible) return null\n\n const elements = layout.value.uischema.elements ?? []\n const isNested = layout.value.path?.includes('.') ?? false\n const containerClass = isNested ? theme.groupNested : theme.panel\n\n return h(\n 'div',\n { class: containerClass },\n [\n layout.value.label\n ? h('div', { class: theme.labelSectionSpaced }, layout.value.label)\n : null,\n h(\n 'div',\n { class: theme.layoutVertical },\n elements.map((element, index) =>\n h(\n 'div',\n { key: `${layout.value.path}-${index}` },\n h(DispatchRenderer as any, {\n schema: layout.value.schema,\n uischema: element,\n path: layout.value.path,\n enabled: layout.value.enabled,\n renderers: layout.value.renderers,\n cells: layout.value.cells,\n }),\n ),\n ),\n ),\n ],\n )\n }\n },\n })\n}\n","import type { Layout } from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsLayout } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiHorizontalLayoutRenderer(\n theme: NuxtUiRenderersTheme,\n) {\n return defineComponent({\n name: 'NuxtUiHorizontalLayoutRenderer',\n components: { DispatchRenderer },\n props: rendererProps<Layout>(),\n setup(props) {\n const { layout } = useJsonFormsLayout(\n props as unknown as Parameters<typeof useJsonFormsLayout>[0],\n )\n\n return () => {\n if (!layout.value.visible) return null\n\n const elements = layout.value.uischema.elements ?? []\n\n return h(\n 'div',\n { class: theme.layoutHorizontal },\n elements.map((element, index) =>\n h(\n 'div',\n {\n key: `${layout.value.path}-${index}`,\n class: theme.layoutHorizontalItem,\n },\n h(DispatchRenderer as any, {\n schema: layout.value.schema,\n uischema: element,\n path: layout.value.path,\n enabled: layout.value.enabled,\n renderers: layout.value.renderers,\n cells: layout.value.cells,\n }),\n ),\n ),\n )\n }\n },\n })\n}\n","import type { LabelElement } from '@jsonforms/core'\nimport { rendererProps, useJsonFormsLabel } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiLabelRenderer(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiLabelRenderer',\n props: rendererProps<LabelElement>(),\n setup(props) {\n const { label } = useJsonFormsLabel(\n props as unknown as Parameters<typeof useJsonFormsLabel>[0],\n )\n\n return () => {\n if (!label.value.visible) return null\n return h('div', { class: theme.textLabel }, label.value.text)\n }\n },\n })\n}\n","import type { Layout } from '@jsonforms/core'\nimport { DispatchRenderer, rendererProps, useJsonFormsLayout } from '@jsonforms/vue'\nimport type { NuxtUiRenderersTheme } from '../theme'\nimport { defineComponent, h } from 'vue'\n\nexport function createNuxtUiVerticalLayoutRenderer(theme: NuxtUiRenderersTheme) {\n return defineComponent({\n name: 'NuxtUiVerticalLayoutRenderer',\n components: { DispatchRenderer },\n props: rendererProps<Layout>(),\n setup(props) {\n const { layout } = useJsonFormsLayout(\n props as unknown as Parameters<typeof useJsonFormsLayout>[0],\n )\n\n return () => {\n if (!layout.value.visible) return null\n\n const elements = layout.value.uischema.elements ?? []\n\n return h(\n 'div',\n { class: theme.layoutVertical },\n elements.map((element, index) =>\n h(\n 'div',\n { key: `${layout.value.path}-${index}` },\n h(DispatchRenderer as any, {\n schema: layout.value.schema,\n uischema: element,\n path: layout.value.path,\n enabled: layout.value.enabled,\n renderers: layout.value.renderers,\n cells: layout.value.cells,\n }),\n ),\n ),\n )\n }\n },\n })\n}\n","/**\n * Theme for JSONForms Nuxt UI renderers.\n * Uses semantic class names (jf-*) - styled by default styles.css.\n * Consumers can override any role with custom classes (Tailwind, Bootstrap, etc.).\n */\n\nexport interface NuxtUiRenderersTheme {\n /** Bordered panel (top-level groups, array items). */\n panel: string\n /** Nested group container (no border, padding only). */\n groupNested: string\n /** Vertical stack layout. */\n layoutVertical: string\n /** Vertical stack with wider gap (categorization). */\n layoutVerticalWide: string\n /** Horizontal layout, responsive. */\n layoutHorizontal: string\n /** Child of horizontal layout (flex grow, min-width). */\n layoutHorizontalItem: string\n /** Array item toolbar (flex + margin). */\n arrayItemToolbar: string\n /** Section/category label. */\n labelSection: string\n /** Section label with bottom margin. */\n labelSectionSpaced: string\n /** Muted secondary text. */\n textMuted: string\n /** Muted secondary text, smaller. */\n textMutedXs: string\n /** Array item title. */\n textItemTitle: string\n /** Suffix after item title. */\n textItemSuffix: string\n /** Plain label. */\n textLabel: string\n /** Flex row: centered, space between. */\n flexBetween: string\n /** Flex row: start-aligned, space between. */\n flexBetweenStart: string\n /** Compact flex row for action buttons. */\n flexActions: string\n}\n\n/** Semantic class defaults - styled by styles.css. No Tailwind/CSS framework dependency. */\nexport const defaultTheme: NuxtUiRenderersTheme = {\n panel: 'jf-panel',\n groupNested: 'jf-group',\n layoutVertical: 'jf-layout-vertical',\n layoutVerticalWide: 'jf-layout-vertical-wide',\n layoutHorizontal: 'jf-layout-horizontal',\n layoutHorizontalItem: 'jf-layout-horizontal-item',\n arrayItemToolbar: 'jf-array-item-toolbar',\n labelSection: 'jf-label-section',\n labelSectionSpaced: 'jf-label-section-spaced',\n textMuted: 'jf-text-muted',\n textMutedXs: 'jf-text-muted-xs',\n textItemTitle: 'jf-text-item-title',\n textItemSuffix: 'jf-text-item-suffix',\n textLabel: 'jf-text-label',\n flexBetween: 'jf-flex-between',\n flexBetweenStart: 'jf-flex-between-start',\n flexActions: 'jf-flex-actions',\n}\n\nexport function mergeTheme(\n overrides?: Partial<NuxtUiRenderersTheme>,\n): NuxtUiRenderersTheme {\n return overrides ? { ...defaultTheme, ...overrides } : { ...defaultTheme }\n}\n"],"mappings":";AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAAA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,eAAe;;;AChBxB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,kBAAkB,eAAe,gCAAgC;AAC1E,SAAS,YAAAC,WAAU,iBAAiB,GAAG,wBAAwB;;;ACT/D,SAAS,gBAAkC;AAEpC,SAAS,mBAAmB,OAA+C;AAChF,QAAM,IAAI,OAAO,KAAK;AACtB,SAAO,IAAI,IAAI;AACjB;AAMO,SAAS,mBAAmB,SAGZ;AACrB,QAAM,IAAI,QAAQ,aAAa,KAAK;AACpC,MAAI,EAAG,QAAO;AACd,QAAM,KAAM,QAAQ,QAAiD;AACrE,SAAO,OAAO,OAAO,YAAY,GAAG,KAAK,IAAI,GAAG,KAAK,IAAI;AAC3D;;;ADNO,SAAS,8BAA8B,OAA6B;AACzE,SAAO,gBAAgB;AAAA,IACrB,MAAM;AAAA,IACN,YAAY,EAAE,iBAAiB;AAAA,IAC/B,OAAO,cAA8B;AAAA,IACrC,MAAM,OAAO;AACX,YAAM,EAAE,SAAS,SAAS,aAAa,QAAQ,SAAS,IACtD;AAAA,QACE;AAAA,MACF;AAEF,YAAM,eAAeC,UAAS,MAAM,mBAAmB,QAAQ,MAAM,MAAM,CAAC;AAE5E,YAAM,QAAQA;AAAA,QAAoB,MAChC,MAAM,QAAQ,QAAQ,MAAM,IAAI,IAAI,QAAQ,MAAM,OAAO,CAAC;AAAA,MAC5D;AAEA,YAAM,cAAcA,UAAiC,MAAM;AACzD,YAAI;AACF,iBAAO,QAAQ;AAAA,YACb,MAAM;AAAA,YACN,QAAQ,MAAM,SAAS;AAAA,YACvB,QAAQ,MAAM;AAAA,UAChB;AAAA,QACF,QAAQ;AACN,iBAAO;AAAA,QACT;AAAA,MACF,CAAC;AAED,YAAM,kBAAkBA,UAAS,MAAM;AACrC,cAAM,MAAM,YAAY,OAAO;AAC/B,eAAO,OAAO,QAAQ,WAAW,MAAM,MAAM,UAAU,MAAM;AAAA,MAC/D,CAAC;AAED,YAAM,kBAAkBA,UAAS,MAAM;AACrC,cAAM,MAAM,YAAY,OAAO;AAC/B,eAAO,OAAO,QAAQ,WAAW,MAAM,MAAM,UAAU,MAAM;AAAA,MAC/D,CAAC;AAED,YAAM,gBAAgBA;AAAA,QAA0B,MAC9C;AAAA,UACE,QAAQ,MAAM;AAAA,UACd,QAAQ,MAAM;AAAA,UACd,QAAQ,MAAM,SAAS;AAAA,UACvB,QAAQ,MAAM;AAAA,UACd;AAAA,UACA,QAAQ,MAAM;AAAA,UACd,QAAQ,MAAM;AAAA,QAChB;AAAA,MACF;AAEA,eAAS,mBAAmB,OAAuB;AACjD,cAAM,iBACJ,qCAAqC,QAAQ,MAAM,SAAS,OAAO,KACnE,sBAAsB,QAAQ,MAAM,MAAM;AAE5C,YAAI,CAAC,eAAgB,QAAO,GAAG,KAAK;AAEpC,cAAM,aAAa,QAAQ;AAAA,UACzB,QAAQ,MAAM;AAAA,UACd,aAAa,GAAG,KAAK,IAAI,cAAc;AAAA,QACzC;AACA,YACE,eAAe,UACf,eAAe,QACf,OAAO,MAAM,UAAiB,GAC9B;AACA,iBAAO;AAAA,QACT;AACA,eAAO,OAAO,UAAU;AAAA,MAC1B;AAEA,eAAS,qCACP,SACoB;AACpB,YAAI,CAAC,WAAW,OAAO,YAAY,SAAU,QAAO;AACpD,cAAM,QAAS,QAAoC;AACnD,eAAO,OAAO,UAAU,WAAW,QAAQ;AAAA,MAC7C;AAEA,eAAS,iBAAiB;AACxB;AAAA,UACE,QAAQ,MAAM;AAAA,UACd,mBAAmB,QAAQ,MAAM,QAAQ,QAAQ,MAAM,UAAU;AAAA,QACnE,EAAE;AAAA,MACJ;AAEA,aAAO,MAAM;AACX,YAAI,CAAC,QAAQ,MAAM,QAAS,QAAO;AAEnC,cAAM,aAAa,iBAAiB,YAAY;AAChD,cAAM,UAAU,iBAAiB,SAAS;AAE1C,eAAO;AAAA,UACL;AAAA,UACA,CAAC;AAAA,UACD;AAAA,YACE;AAAA,YACA;AAAA,cACE,OAAO,QAAQ,MAAM;AAAA,cACrB,aAAa,QAAQ,MAAM;AAAA,cAC3B,UAAU,QAAQ,MAAM;AAAA,cACxB,OAAO,aAAa;AAAA,YACtB;AAAA,YACA;AAAA,cACE,SAAS,MACP,EAAE,OAAO,EAAE,OAAO,MAAM,eAAe,GAAG;AAAA,gBACxC,EAAE,OAAO,EAAE,OAAO,MAAM,YAAY,GAAG;AAAA,kBACrC;AAAA,oBACE;AAAA,oBACA,EAAE,OAAO,MAAM,YAAY;AAAA,oBAC3B,GAAG,MAAM,MAAM,MAAM;AAAA,kBACvB;AAAA,kBACA;AAAA,oBACE;AAAA,oBACA;AAAA,sBACE,MAAM;AAAA,sBACN,MAAM;AAAA,sBACN,SAAS;AAAA,sBACT,OAAO;AAAA,sBACP,UACE,CAAC,QAAQ,MAAM,WAAW,gBAAgB;AAAA,sBAC5C,SAAS;AAAA,oBACX;AAAA,oBACA,EAAE,SAAS,MAAM,MAAM;AAAA,kBACzB;AAAA,gBACF,CAAC;AAAA,gBAED,MAAM,MAAM,WAAW,IACnB,EAAE,OAAO,EAAE,OAAO,MAAM,UAAU,GAAG,WAAW,IAChD;AAAA,gBAEJ,GAAG,MAAM,MAAM;AAAA,kBAAI,CAAC,OAAO,UACzB;AAAA,oBACE;AAAA,oBACA;AAAA,sBACE,KAAK,GAAG,QAAQ,MAAM,IAAI,IAAI,KAAK;AAAA,sBACnC,OAAO,MAAM;AAAA,oBACf;AAAA,oBACA;AAAA,sBACE;AAAA,wBACE;AAAA,wBACA,EAAE,OAAO,MAAM,iBAAiB;AAAA,wBAChC;AAAA,0BACE,EAAE,OAAO,EAAE,OAAO,aAAa,GAAG;AAAA,4BAChC;AAAA,8BACE;AAAA,8BACA,EAAE,OAAO,MAAM,cAAc;AAAA,8BAC7B;AAAA,gCACE,QAAQ,QAAQ,CAAC;AAAA,gCACjB,mBAAmB,KAAK,IACpB;AAAA,kCACE;AAAA,kCACA,EAAE,OAAO,MAAM,eAAe;AAAA,kCAC9B,WAAM,mBAAmB,KAAK,CAAC;AAAA,gCACjC,IACA;AAAA,8BACN;AAAA,4BACF;AAAA,0BACF,CAAC;AAAA,0BACD,EAAE,OAAO,EAAE,OAAO,MAAM,YAAY,GAAG;AAAA,4BACrC;AAAA,8BACE;AAAA,8BACA;AAAA,gCACE,MAAM;AAAA,gCACN,MAAM;AAAA,gCACN,SAAS;AAAA,gCACT,OAAO;AAAA,gCACP,UACE,CAAC,QAAQ,MAAM,WAAW,UAAU;AAAA,gCACtC,SAAS,MACP,SAAS,QAAQ,MAAM,MAAM,KAAK,EAAE;AAAA,8BACxC;AAAA,8BACA,EAAE,SAAS,MAAM,KAAK;AAAA,4BACxB;AAAA,4BACA;AAAA,8BACE;AAAA,8BACA;AAAA,gCACE,MAAM;AAAA,gCACN,MAAM;AAAA,gCACN,SAAS;AAAA,gCACT,OAAO;AAAA,gCACP,UACE,CAAC,QAAQ,MAAM,WACf,SAAS,MAAM,MAAM,SAAS;AAAA,gCAChC,SAAS,MACP,WAAW,QAAQ,MAAM,MAAM,KAAK,EAAE;AAAA,8BAC1C;AAAA,8BACA,EAAE,SAAS,MAAM,OAAO;AAAA,4BAC1B;AAAA,4BACA;AAAA,8BACE;AAAA,8BACA;AAAA,gCACE,MAAM;AAAA,gCACN,MAAM;AAAA,gCACN,SAAS;AAAA,gCACT,OAAO;AAAA,gCACP,UACE,CAAC,QAAQ,MAAM,WACf,gBAAgB;AAAA,gCAClB,SAAS,MACP,cAAc,QAAQ,MAAM,MAAM;AAAA,kCAChC;AAAA,gCACF,CAAC,EAAE;AAAA,8BACP;AAAA,8BACA,EAAE,SAAS,MAAM,SAAS;AAAA,4BAC5B;AAAA,0BACF,CAAC;AAAA,wBACH;AAAA,sBACF;AAAA,sBAEA,EAAE,kBAAyB;AAAA,wBACzB,QAAQ,QAAQ,MAAM;AAAA,wBACtB,UAAU,cAAc;AAAA,wBACxB,MAAM,aAAa,QAAQ,MAAM,MAAM,GAAG,KAAK,EAAE;AAAA,wBACjD,SAAS,QAAQ,MAAM;AAAA,wBACvB,WAAW,QAAQ,MAAM;AAAA,wBACzB,OAAO,QAAQ,MAAM;AAAA,sBACvB,CAAC;AAAA,oBACH;AAAA,kBACF;AAAA,gBACF;AAAA,cACF,CAAC;AAAA,YACL;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;AEjPA,SAAS,UAAU,gBAAAC,qBAAoB;AACvC;AAAA,EACE,oBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA;AAAA,OACK;AACP,SAAS,YAAAC,WAAU,mBAAAC,kBAAiB,KAAAC,UAAS;AAEtC,IAAM,uBAAuBD,iBAAgB;AAAA,EAClD,MAAM;AAAA,EACN,YAAY,EAAE,kBAAAH,kBAAiB;AAAA,EAC/B,OAAOC,eAA8B;AAAA,EACrC,MAAM,OAAO;AACX,UAAM,EAAE,QAAQ,IAAI;AAAA,MAClB;AAAA,IACF;AAEA,UAAM,iBAAiBC,UAA0B,MAAM;AACrD,YAAM,oBAAoB,MAAM;AAC9B,cAAM,WAAW,SAAS;AAAA,UACxB,QAAQ,MAAM;AAAA,UACd;AAAA,UACA;AAAA,UACA,QAAQ,MAAM;AAAA,QAChB;AAEA,YAAI,CAAC,QAAQ,MAAM,MAAM;AACvB,mBAAS,OAAO;AAAA,QAClB,OAAO;AACL;AAAC,UAAC,SAAyB,QAAQ,QAAQ,MAAM;AAAA,QACnD;AACA,eAAO;AAAA,MACT;AAEA,aAAOH;AAAA,QACL,QAAQ,MAAM;AAAA,QACd,QAAQ,MAAM;AAAA,QACd,QAAQ,MAAM,SAAS;AAAA,QACvB,QAAQ,MAAM;AAAA,QACd;AAAA,QACA,QAAQ,MAAM;AAAA,QACd,QAAQ,MAAM;AAAA,MAChB;AAAA,IACF,CAAC;AAED,WAAO,MAAM;AACX,UAAI,CAAC,QAAQ,MAAM,QAAS,QAAO;AAEnC,aAAOK,GAAEJ,mBAAyB;AAAA,QAChC,SAAS,QAAQ,MAAM;AAAA,QACvB,SAAS,QAAQ,MAAM;AAAA,QACvB,QAAQ,QAAQ,MAAM;AAAA,QACtB,UAAU,eAAe;AAAA,QACzB,MAAM,QAAQ,MAAM;AAAA,QACpB,WAAW,QAAQ,MAAM;AAAA,QACzB,OAAO,QAAQ,MAAM;AAAA,MACvB,CAAC;AAAA,IACH;AAAA,EACF;AACF,CAAC;;;AC3DD,SAAS,iBAAAK,gBAAe,2BAA2B;AAEnD,SAAS,YAAAC,WAAU,mBAAAC,kBAAiB,KAAAC,IAAG,oBAAAC,yBAAwB;AAIxD,SAAS,2BAA2B,OAA6B;AACtE,SAAOC,iBAAgB;AAAA,IACrB,MAAM;AAAA,IACN,OAAOC,eAA8B;AAAA,IACrC,MAAM,OAAO;AACX,YAAM,EAAE,SAAS,aAAa,IAAI;AAAA,QAChC;AAAA,MACF;AAEA,YAAM,eAAeC,UAAS,MAAM,mBAAmB,QAAQ,MAAM,MAAM,CAAC;AAE5E,YAAM,aAAaA,UAAkB;AAAA,QACnC,KAAK,MAAM,QAAQ,QAAQ,MAAM,IAAI;AAAA,QACrC,KAAK,CAAC,MAAe,aAAa,QAAQ,MAAM,MAAM,CAAC;AAAA,MACzD,CAAC;AAED,aAAO,MAAM;AACX,YAAI,CAAC,QAAQ,MAAM,QAAS,QAAO;AAEnC,cAAM,aAAaC,kBAAiB,YAAY;AAChD,cAAM,UAAUA,kBAAiB,SAAS;AAE1C,eAAOC;AAAA,UACL;AAAA,UACA,CAAC;AAAA,UACDA;AAAA,YACE;AAAA,YACA;AAAA,cACE,OAAO,QAAQ,MAAM;AAAA,cACrB,aAAa,mBAAmB,QAAQ,KAAK;AAAA,cAC7C,UAAU,QAAQ,MAAM;AAAA,cACxB,OAAO,aAAa;AAAA,YACtB;AAAA,YACA;AAAA,cACE,SAAS,MACPA;AAAA,gBACE;AAAA,gBACA,EAAE,OAAO,MAAM,YAAY;AAAA,gBAC3BA,GAAE,SAAgB;AAAA,kBAChB,YAAY,WAAW;AAAA,kBACvB,UAAU,CAAC,QAAQ,MAAM;AAAA,kBACzB,gBAAgB,QAAQ,aAAa,KAAK;AAAA,kBAC1C,uBAAuB,CAAC,MAAe;AACrC,+BAAW,QAAQ;AAAA,kBACrB;AAAA,gBACF,CAAC;AAAA,cACH;AAAA,YACJ;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;AC3DA,SAAS,iBAAAC,gBAAe,uBAAAC,4BAA2B;AACnD,SAAS,YAAAC,WAAU,mBAAAC,kBAAiB,KAAAC,IAAG,oBAAAC,yBAAwB;AAM/D,SAAS,kBAAkB,QAA8C;AACvE,MAAI,CAAC,OAAQ,QAAO,CAAC;AAErB,MAAI,MAAM,QAAQ,OAAO,IAAI,GAAG;AAC9B,WAAO,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,OAAO,OAAO,CAAC,GAAG,OAAO,EAAE,EAAE;AAAA,EAChE;AAEA,QAAM,QAAS,OAA0C;AACzD,MAAI,CAAC,MAAM,QAAQ,KAAK,EAAG,QAAO,CAAC;AAEnC,QAAM,MAAoB,CAAC;AAC3B,aAAW,SAAS,OAAO;AACzB,QAAI,OAAO,UAAU,YAAY,UAAU,KAAM;AACjD,UAAM,QAAQ;AACd,QAAI,EAAE,WAAW,OAAQ;AACzB,QAAI,KAAK;AAAA,MACP,OAAO,MAAM;AAAA,MACb,OACE,OAAO,MAAM,UAAU,YAAY,MAAM,MAAM,KAAK,IAChD,MAAM,QACN,OAAO,MAAM,KAAK;AAAA,IAC1B,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEO,IAAM,oBAAoBC,iBAAgB;AAAA,EAC/C,MAAM;AAAA,EACN,OAAOC,eAA8B;AAAA,EACrC,MAAM,OAAO;AACX,UAAM,EAAE,SAAS,aAAa,IAAIC;AAAA,MAChC;AAAA,IACF;AAEA,UAAM,eAAeC,UAAS,MAAM,mBAAmB,QAAQ,MAAM,MAAM,CAAC;AAC5E,UAAM,UAAUA,UAAuB,MAAM,kBAAkB,QAAQ,MAAM,MAAM,CAAC;AAEpF,UAAM,gBAAgBA,UAAkB;AAAA,MACtC,KAAK,MAAM,QAAQ,MAAM;AAAA,MACzB,KAAK,CAAC,MAAe,aAAa,QAAQ,MAAM,MAAM,CAAC;AAAA,IACzD,CAAC;AAED,WAAO,MAAM;AACX,UAAI,CAAC,QAAQ,MAAM,QAAS,QAAO;AAEnC,YAAM,aAAaC,kBAAiB,YAAY;AAChD,YAAM,cAAcA,kBAAiB,aAAa;AAElD,aAAOC;AAAA,QACL;AAAA,QACA,CAAC;AAAA,QACDA;AAAA,UACE;AAAA,UACA;AAAA,YACE,OAAO,QAAQ,MAAM;AAAA,YACrB,aAAa,mBAAmB,QAAQ,KAAK;AAAA,YAC7C,UAAU,QAAQ,MAAM;AAAA,YACxB,OAAO,aAAa;AAAA,UACtB;AAAA,UACA;AAAA,YACE,SAAS,MACPA,GAAE,aAAoB;AAAA,cACpB,YAAY,cAAc;AAAA,cAC1B,OAAO,QAAQ;AAAA,cACf,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU,CAAC,QAAQ,MAAM;AAAA,cACzB,OAAO,aAAa,QAAQ,UAAU;AAAA,cACtC,gBAAgB,QAAQ,aAAa,KAAK;AAAA,cAC1C,aAAa;AAAA,cACb,uBAAuB,CAAC,MAAe;AACrC,8BAAc,QAAQ;AAAA,cACxB;AAAA,YACF,CAAC;AAAA,UACL;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC;;;ACtFD,SAAS,iBAAAC,gBAAe,uBAAAC,4BAA2B;AACnD,SAAS,YAAAC,WAAU,mBAAAC,kBAAiB,KAAAC,IAAG,oBAAAC,yBAAwB;AAIxD,IAAM,uBAAuBC,iBAAgB;AAAA,EAClD,MAAM;AAAA,EACN,OAAOC,eAA8B;AAAA,EACrC,MAAM,OAAO;AACX,UAAM,EAAE,SAAS,aAAa,IAAIC;AAAA,MAChC;AAAA,IACF;AAEA,UAAM,eAAeC,UAAS,MAAM,mBAAmB,QAAQ,MAAM,MAAM,CAAC;AAE5E,UAAM,aAAaA,UAAS,MAAM;AAChC,YAAM,IAAI,QAAQ,MAAM;AACxB,aAAO,MAAM,QAAQ,MAAM,SAAY,KAAK,OAAO,CAAC;AAAA,IACtD,CAAC;AAED,aAAS,SAAS,KAAc;AAC9B,YAAM,UAAU,OAAO,OAAO,EAAE,EAAE,KAAK;AACvC,UAAI,YAAY,IAAI;AAClB,qBAAa,QAAQ,MAAM,MAAM,MAAS;AAC1C;AAAA,MACF;AAEA,YAAM,SAAS,OAAO,SAAS,SAAS,EAAE;AAC1C,mBAAa,QAAQ,MAAM,MAAM,OAAO,SAAS,MAAM,IAAI,SAAS,MAAS;AAAA,IAC/E;AAEA,WAAO,MAAM;AACX,UAAI,CAAC,QAAQ,MAAM,QAAS,QAAO;AAEnC,YAAM,aAAaC,kBAAiB,YAAY;AAChD,YAAM,SAASA,kBAAiB,QAAQ;AAExC,aAAOC;AAAA,QACL;AAAA,QACA,CAAC;AAAA,QACDA;AAAA,UACE;AAAA,UACA;AAAA,YACE,OAAO,QAAQ,MAAM;AAAA,YACrB,aAAa,mBAAmB,QAAQ,KAAK;AAAA,YAC7C,UAAU,QAAQ,MAAM;AAAA,YACxB,OAAO,aAAa;AAAA,UACtB;AAAA,UACA;AAAA,YACE,SAAS,MACPA,GAAE,QAAe;AAAA,cACf,MAAM;AAAA,cACN,WAAW;AAAA,cACX,MAAM;AAAA,cACN,YAAY,WAAW;AAAA,cACvB,UAAU,CAAC,QAAQ,MAAM;AAAA,cACzB,OAAO,aAAa,QAAQ,UAAU;AAAA,cACtC,gBAAgB,QAAQ,aAAa,KAAK;AAAA,cAC1C,uBAAuB;AAAA,YACzB,CAAC;AAAA,UACL;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC;;;ACjED,SAAS,iBAAAC,gBAAe,uBAAAC,4BAA2B;AACnD,SAAS,YAAAC,WAAU,mBAAAC,kBAAiB,KAAAC,IAAG,oBAAAC,yBAAwB;AAM/D,SAASC,mBAAkB,QAA8C;AACvE,MAAI,CAAC,OAAQ,QAAO,CAAC;AAErB,MAAI,MAAM,QAAQ,OAAO,IAAI,GAAG;AAC9B,WAAO,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,OAAO,OAAO,CAAC,GAAG,OAAO,EAAE,EAAE;AAAA,EAChE;AAEA,QAAM,QAAS,OAA0C;AACzD,MAAI,CAAC,MAAM,QAAQ,KAAK,EAAG,QAAO,CAAC;AAEnC,QAAM,MAAoB,CAAC;AAC3B,aAAW,SAAS,OAAO;AACzB,QAAI,OAAO,UAAU,YAAY,UAAU,KAAM;AACjD,UAAM,QAAQ;AACd,QAAI,EAAE,WAAW,OAAQ;AACzB,QAAI,KAAK;AAAA,MACP,OAAO,MAAM;AAAA,MACb,OACE,OAAO,MAAM,UAAU,YAAY,MAAM,MAAM,KAAK,IAChD,MAAM,QACN,OAAO,MAAM,KAAK;AAAA,IAC1B,CAAC;AAAA,EACH;AACA,SAAO;AACT;AAEA,SAAS,iBAAiB,QAAwD;AAChF,MAAI,CAAC,OAAQ,QAAO;AACpB,QAAM,QAAS,OAA0C;AACzD,MAAI,OAAO,UAAU,YAAY,UAAU,KAAM,QAAO;AACxD,SAAO;AACT;AAEO,IAAM,yBAAyBC,iBAAgB;AAAA,EACpD,MAAM;AAAA,EACN,OAAOC,eAA8B;AAAA,EACrC,MAAM,OAAO;AACX,UAAM,EAAE,SAAS,aAAa,IAAIC;AAAA,MAChC;AAAA,IACF;AAEA,UAAM,eAAeC,UAAS,MAAM,mBAAmB,QAAQ,MAAM,MAAM,CAAC;AAC5E,UAAM,UAAUA;AAAA,MAAuB,MACrCJ,mBAAkB,iBAAiB,QAAQ,MAAM,MAAM,CAAC;AAAA,IAC1D;AAEA,UAAM,iBAAiBI,UAAoB;AAAA,MACzC,KAAK,MAAO,MAAM,QAAQ,QAAQ,MAAM,IAAI,IAAI,QAAQ,MAAM,OAAO,CAAC;AAAA,MACtE,KAAK,CAAC,MAAiB,aAAa,QAAQ,MAAM,MAAM,CAAC;AAAA,IAC3D,CAAC;AAED,WAAO,MAAM;AACX,UAAI,CAAC,QAAQ,MAAM,QAAS,QAAO;AAEnC,YAAM,aAAaC,kBAAiB,YAAY;AAChD,YAAM,cAAcA,kBAAiB,aAAa;AAElD,aAAOC;AAAA,QACL;AAAA,QACA,CAAC;AAAA,QACDA;AAAA,UACE;AAAA,UACA;AAAA,YACE,OAAO,QAAQ,MAAM;AAAA,YACrB,aAAa,mBAAmB,QAAQ,KAAK;AAAA,YAC7C,UAAU,QAAQ,MAAM;AAAA,YACxB,OAAO,aAAa;AAAA,UACtB;AAAA,UACA;AAAA,YACE,SAAS,MACPA,GAAE,aAAoB;AAAA,cACpB,UAAU;AAAA,cACV,YAAY,eAAe;AAAA,cAC3B,OAAO,QAAQ;AAAA,cACf,UAAU;AAAA,cACV,UAAU;AAAA,cACV,UAAU,CAAC,QAAQ,MAAM;AAAA,cACzB,OAAO,aAAa,QAAQ,UAAU;AAAA,cACtC,gBAAgB,QAAQ,aAAa,KAAK;AAAA,cAC1C,aAAa;AAAA,cACb,uBAAuB,CAAC,MAAe;AACrC,+BAAe,QAAQ,MAAM,QAAQ,CAAC,IAAI,IAAI,CAAC;AAAA,cACjD;AAAA,YACF,CAAC;AAAA,UACL;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC;;;AChGD,SAAS,iBAAAC,gBAAe,uBAAAC,4BAA2B;AACnD,SAAS,YAAAC,WAAU,mBAAAC,kBAAiB,KAAAC,IAAG,oBAAAC,yBAAwB;AAIxD,IAAM,sBAAsBC,iBAAgB;AAAA,EACjD,MAAM;AAAA,EACN,OAAOC,eAA8B;AAAA,EACrC,MAAM,OAAO;AACX,UAAM,EAAE,SAAS,aAAa,IAAIC;AAAA,MAChC;AAAA,IACF;AAEA,UAAM,eAAeC,UAAS,MAAM,mBAAmB,QAAQ,MAAM,MAAM,CAAC;AAE5E,UAAM,aAAaA,UAAS,MAAM;AAChC,YAAM,IAAI,QAAQ,MAAM;AACxB,aAAO,MAAM,QAAQ,MAAM,SAAY,KAAK,OAAO,CAAC;AAAA,IACtD,CAAC;AAED,aAAS,SAAS,KAAc;AAC9B,YAAM,UAAU,OAAO,OAAO,EAAE,EAAE,KAAK;AACvC,UAAI,YAAY,IAAI;AAClB,qBAAa,QAAQ,MAAM,MAAM,MAAS;AAC1C;AAAA,MACF;AACA,YAAM,SAAS,OAAO,OAAO;AAC7B,mBAAa,QAAQ,MAAM,MAAM,OAAO,SAAS,MAAM,IAAI,SAAS,MAAS;AAAA,IAC/E;AAEA,WAAO,MAAM;AACX,UAAI,CAAC,QAAQ,MAAM,QAAS,QAAO;AAEnC,YAAM,aAAaC,kBAAiB,YAAY;AAChD,YAAM,SAASA,kBAAiB,QAAQ;AAExC,aAAOC;AAAA,QACL;AAAA,QACA,CAAC;AAAA,QACDA;AAAA,UACE;AAAA,UACA;AAAA,YACE,OAAO,QAAQ,MAAM;AAAA,YACrB,aAAa,mBAAmB,QAAQ,KAAK;AAAA,YAC7C,UAAU,QAAQ,MAAM;AAAA,YACxB,OAAO,aAAa;AAAA,UACtB;AAAA,UACA;AAAA,YACE,SAAS,MACPA,GAAE,QAAe;AAAA,cACf,MAAM;AAAA,cACN,WAAW;AAAA,cACX,YAAY,WAAW;AAAA,cACvB,UAAU,CAAC,QAAQ,MAAM;AAAA,cACzB,OAAO,aAAa,QAAQ,UAAU;AAAA,cACtC,gBAAgB,QAAQ,aAAa,KAAK;AAAA,cAC1C,uBAAuB;AAAA,YACzB,CAAC;AAAA,UACL;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC;;;AC/DD,SAAS,iBAAAC,gBAAe,uBAAAC,4BAA2B;AACnD,SAAS,YAAAC,WAAU,mBAAAC,kBAAiB,KAAAC,IAAG,KAAK,oBAAAC,yBAAwB;AAI7D,IAAM,wBAAwBC,iBAAgB;AAAA,EACnD,MAAM;AAAA,EACN,OAAOC,eAA8B;AAAA,EACrC,MAAM,OAAO;AACX,UAAM,EAAE,SAAS,aAAa,IAAIC;AAAA,MAChC;AAAA,IACF;AAEA,UAAM,eAAeC,UAAS,MAAM,mBAAmB,QAAQ,MAAM,MAAM,CAAC;AAC5E,UAAM,eAAe,IAAI,KAAK;AAE9B,UAAM,YAAYA,UAAS,MAAO,aAAa,QAAQ,SAAS,UAAW;AAE3E,WAAO,MAAM;AACX,UAAI,CAAC,QAAQ,MAAM,QAAS,QAAO;AAEnC,YAAM,aAAaC,kBAAiB,YAAY;AAChD,YAAM,SAASA,kBAAiB,QAAQ;AACxC,YAAM,UAAUA,kBAAiB,SAAS;AAE1C,aAAOC;AAAA,QACL;AAAA,QACA,CAAC;AAAA,QACDA;AAAA,UACE;AAAA,UACA;AAAA,YACE,OAAO,QAAQ,MAAM;AAAA,YACrB,aAAa,mBAAmB,QAAQ,KAAK;AAAA,YAC7C,UAAU,QAAQ,MAAM;AAAA,YACxB,OAAO,aAAa;AAAA,UACtB;AAAA,UACA;AAAA,YACE,SAAS,MACPA;AAAA,cACE;AAAA,cACA;AAAA,gBACE,YAAY,QAAQ,MAAM,QAAQ;AAAA,gBAClC,OAAO;AAAA,gBACP,MAAM,UAAU;AAAA,gBAChB,cAAc;AAAA,gBACd,UAAU,CAAC,QAAQ,MAAM;AAAA,gBACzB,OAAO,aAAa,QAAQ,UAAU;AAAA,gBACtC,gBAAgB,QAAQ,aAAa,KAAK;AAAA,gBAC1C,uBAAuB,CAAC,MACtB,aAAa,QAAQ,MAAM,MAAM,CAAC;AAAA,cACtC;AAAA,cACA;AAAA,gBACE,UAAU,MACRA,GAAE,SAAgB;AAAA,kBAChB,MAAM;AAAA,kBACN,OAAO;AAAA,kBACP,SAAS;AAAA,kBACT,QAAQ;AAAA,kBACR,MAAM,aAAa,QACf,0BACA;AAAA,kBACJ,gBAAgB,aAAa;AAAA,kBAC7B,cAAc,aAAa,QACvB,kBACA;AAAA,kBACJ,UAAU,CAAC,QAAQ,MAAM;AAAA,kBACzB,SAAS,MAAM;AACb,iCAAa,QAAQ,CAAC,aAAa;AAAA,kBACrC;AAAA,gBACF,CAAC;AAAA,cACL;AAAA,YACF;AAAA,UACJ;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC;;;AC7ED,SAAS,iBAAAC,gBAAe,uBAAAC,4BAA2B;AACnD;AAAA,EACE,YAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,KAAAC;AAAA,EACA,oBAAAC;AAAA,OACK;AAIA,IAAM,sBAAsBC,iBAAgB;AAAA,EACjD,MAAM;AAAA,EACN,OAAOC,eAA8B;AAAA,EACrC,MAAM,OAAO;AACX,UAAM,EAAE,SAAS,aAAa,IAAIC;AAAA,MAChC;AAAA,IACF;AAEA,UAAM,eAAeC,WAAS,MAAM,mBAAmB,QAAQ,MAAM,MAAM,CAAC;AAE5E,WAAO,MAAM;AACX,UAAI,CAAC,QAAQ,MAAM,QAAS,QAAO;AAEnC,YAAM,aAAaC,kBAAiB,YAAY;AAChD,YAAM,SAASA,kBAAiB,QAAQ;AAExC,aAAOC;AAAA,QACL;AAAA,QACA,CAAC;AAAA,QACDA;AAAA,UACE;AAAA,UACA;AAAA,YACE,OAAO,QAAQ,MAAM;AAAA,YACrB,aAAa,mBAAmB,QAAQ,KAAK;AAAA,YAC7C,UAAU,QAAQ,MAAM;AAAA,YACxB,OAAO,aAAa;AAAA,UACtB;AAAA,UACA;AAAA,YACE,SAAS,MACPA,GAAE,QAAe;AAAA,cACf,YAAY,QAAQ,MAAM,QAAQ;AAAA,cAClC,OAAO;AAAA,cACP,UAAU,CAAC,QAAQ,MAAM;AAAA,cACzB,OAAO,aAAa,QAAQ,UAAU;AAAA,cACtC,gBAAgB,QAAQ,aAAa,KAAK;AAAA,cAC1C,uBAAuB,CAAC,MACtB,aAAa,QAAQ,MAAM,MAAM,CAAC;AAAA,YACtC,CAAC;AAAA,UACL;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC;;;ACrDD,SAAS,iBAAAC,iBAAe,uBAAAC,4BAA2B;AACnD,SAAS,YAAAC,YAAU,mBAAAC,mBAAiB,KAAAC,KAAG,oBAAAC,yBAAwB;AAIxD,IAAM,wBAAwBC,kBAAgB;AAAA,EACnD,MAAM;AAAA,EACN,OAAOC,gBAA8B;AAAA,EACrC,MAAM,OAAO;AACX,UAAM,EAAE,SAAS,aAAa,IAAIC;AAAA,MAChC;AAAA,IACF;AAEA,UAAM,eAAeC,WAAS,MAAM,mBAAmB,QAAQ,MAAM,MAAM,CAAC;AAE5E,WAAO,MAAM;AACX,UAAI,CAAC,QAAQ,MAAM,QAAS,QAAO;AAEnC,YAAM,aAAaC,kBAAiB,YAAY;AAChD,YAAM,YAAYA,kBAAiB,WAAW;AAE9C,aAAOC;AAAA,QACL;AAAA,QACA,CAAC;AAAA,QACDA;AAAA,UACE;AAAA,UACA;AAAA,YACE,OAAO,QAAQ,MAAM;AAAA,YACrB,aAAa,mBAAmB,QAAQ,KAAK;AAAA,YAC7C,UAAU,QAAQ,MAAM;AAAA,YACxB,OAAO,aAAa;AAAA,UACtB;AAAA,UACA;AAAA,YACE,SAAS,MACPA,IAAE,WAAkB;AAAA,cAClB,YAAY,QAAQ,MAAM,QAAQ;AAAA,cAClC,OAAO;AAAA,cACP,UAAU,CAAC,QAAQ,MAAM;AAAA,cACzB,OAAO,aAAa,QAAQ,UAAU;AAAA,cACtC,gBAAgB,QAAQ,aAAa,KAAK;AAAA,cAC1C,MAAM;AAAA,cACN,uBAAuB,CAAC,MACtB,aAAa,QAAQ,MAAM,MAAM,CAAC;AAAA,YACtC,CAAC;AAAA,UACL;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC;;;ACjDD,SAAS,oBAAAC,mBAAkB,iBAAAC,iBAAe,kCAAkC;AAE5E,SAAS,mBAAAC,mBAAiB,KAAAC,WAAS;AAE5B,SAAS,mCACd,OACA;AACA,SAAOD,kBAAgB;AAAA,IACrB,MAAM;AAAA,IACN,YAAY,EAAE,kBAAAF,kBAAiB;AAAA,IAC/B,OAAOC,gBAAsB;AAAA,IAC7B,MAAM,OAAO;AACX,YAAM,EAAE,QAAQ,WAAW,IAAI;AAAA,QAC7B;AAAA,MACF;AAEA,aAAO,MAAM;AACX,YAAI,CAAC,OAAO,MAAM,QAAS,QAAO;AAElC,eAAOE;AAAA,UACL;AAAA,UACA,EAAE,OAAO,MAAM,mBAAmB;AAAA,UAClC,WAAW,IAAI,CAAC,aAAa,aAAa;AACxC,kBAAM,WAAW,YAAY;AAC7B,kBAAM,WAAW,SAAS,SAAS,YAAY,CAAC;AAEhD,mBAAOA;AAAA,cACL;AAAA,cACA;AAAA,gBACE,KAAK,GAAG,OAAO,MAAM,IAAI,QAAQ,QAAQ;AAAA,gBACzC,OAAO,MAAM;AAAA,cACf;AAAA,cACA;AAAA,gBACE,SAAS,QACLA,IAAE,OAAO,EAAE,OAAO,MAAM,aAAa,GAAG,SAAS,KAAK,IACtD;AAAA,gBACJA;AAAA,kBACE;AAAA,kBACA,EAAE,OAAO,MAAM,eAAe;AAAA,kBAC9B,SAAS;AAAA,oBAAI,CAAC,SAAS,UACrBA;AAAA,sBACE;AAAA,sBACA,EAAE,KAAK,GAAG,SAAS,IAAI,IAAI,KAAK,GAAG;AAAA,sBACnCA,IAAEH,mBAAyB;AAAA,wBACzB,QAAQ,SAAS;AAAA,wBACjB,UAAU;AAAA,wBACV,MAAM,SAAS;AAAA,wBACf,SAAS,SAAS;AAAA,wBAClB,WAAW,SAAS;AAAA,wBACpB,OAAO,SAAS;AAAA,sBAClB,CAAC;AAAA,oBACH;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;AC7DA,SAAS,oBAAAI,mBAAkB,iBAAAC,iBAAe,0BAA0B;AAEpE,SAAS,mBAAAC,mBAAiB,KAAAC,WAAS;AAE5B,SAAS,6BAA6B,OAA6B;AACxE,SAAOD,kBAAgB;AAAA,IACrB,MAAM;AAAA,IACN,YAAY,EAAE,kBAAAF,kBAAiB;AAAA,IAC/B,OAAOC,gBAAsB;AAAA,IAC7B,MAAM,OAAO;AACX,YAAM,EAAE,OAAO,IAAI;AAAA,QACjB;AAAA,MACF;AAEA,aAAO,MAAM;AACX,YAAI,CAAC,OAAO,MAAM,QAAS,QAAO;AAElC,cAAM,WAAW,OAAO,MAAM,SAAS,YAAY,CAAC;AAEpD,eAAOE,IAAE,OAAO,EAAE,OAAO,MAAM,eAAe,GAAG;AAAA,UAC/C,OAAO,MAAM,QACTA,IAAE,OAAO,EAAE,OAAO,MAAM,aAAa,GAAG,OAAO,MAAM,KAAK,IAC1D;AAAA,UACJA;AAAA,YACE;AAAA,YACA,EAAE,OAAO,MAAM,eAAe;AAAA,YAC9B,SAAS;AAAA,cAAI,CAAC,SAAS,UACrBA;AAAA,gBACE;AAAA,gBACA,EAAE,KAAK,GAAG,OAAO,MAAM,IAAI,IAAI,KAAK,GAAG;AAAA,gBACvCA,IAAEH,mBAAyB;AAAA,kBACzB,QAAQ,OAAO,MAAM;AAAA,kBACrB,UAAU;AAAA,kBACV,MAAM,OAAO,MAAM;AAAA,kBACnB,SAAS,OAAO,MAAM;AAAA,kBACtB,WAAW,OAAO,MAAM;AAAA,kBACxB,OAAO,OAAO,MAAM;AAAA,gBACtB,CAAC;AAAA,cACH;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;AC7CA,SAAS,oBAAAI,mBAAkB,iBAAAC,iBAAe,sBAAAC,2BAA0B;AAEpE,SAAS,mBAAAC,mBAAiB,KAAAC,WAAS;AAE5B,SAAS,0BAA0B,OAA6B;AACrE,SAAOD,kBAAgB;AAAA,IACrB,MAAM;AAAA,IACN,YAAY,EAAE,kBAAAH,kBAAiB;AAAA,IAC/B,OAAOC,gBAAsB;AAAA,IAC7B,MAAM,OAAO;AACX,YAAM,EAAE,OAAO,IAAIC;AAAA,QACjB;AAAA,MACF;AAEA,aAAO,MAAM;AACX,YAAI,CAAC,OAAO,MAAM,QAAS,QAAO;AAElC,cAAM,WAAW,OAAO,MAAM,SAAS,YAAY,CAAC;AACpD,cAAM,WAAW,OAAO,MAAM,MAAM,SAAS,GAAG,KAAK;AACrD,cAAM,iBAAiB,WAAW,MAAM,cAAc,MAAM;AAE5D,eAAOE;AAAA,UACL;AAAA,UACA,EAAE,OAAO,eAAe;AAAA,UACxB;AAAA,YACE,OAAO,MAAM,QACTA,IAAE,OAAO,EAAE,OAAO,MAAM,mBAAmB,GAAG,OAAO,MAAM,KAAK,IAChE;AAAA,YACJA;AAAA,cACE;AAAA,cACA,EAAE,OAAO,MAAM,eAAe;AAAA,cAC9B,SAAS;AAAA,gBAAI,CAAC,SAAS,UACrBA;AAAA,kBACE;AAAA,kBACA,EAAE,KAAK,GAAG,OAAO,MAAM,IAAI,IAAI,KAAK,GAAG;AAAA,kBACvCA,IAAEJ,mBAAyB;AAAA,oBACzB,QAAQ,OAAO,MAAM;AAAA,oBACrB,UAAU;AAAA,oBACV,MAAM,OAAO,MAAM;AAAA,oBACnB,SAAS,OAAO,MAAM;AAAA,oBACtB,WAAW,OAAO,MAAM;AAAA,oBACxB,OAAO,OAAO,MAAM;AAAA,kBACtB,CAAC;AAAA,gBACH;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;ACnDA,SAAS,oBAAAK,mBAAkB,iBAAAC,iBAAe,sBAAAC,2BAA0B;AAEpE,SAAS,mBAAAC,mBAAiB,KAAAC,WAAS;AAE5B,SAAS,qCACd,OACA;AACA,SAAOD,kBAAgB;AAAA,IACrB,MAAM;AAAA,IACN,YAAY,EAAE,kBAAAH,kBAAiB;AAAA,IAC/B,OAAOC,gBAAsB;AAAA,IAC7B,MAAM,OAAO;AACX,YAAM,EAAE,OAAO,IAAIC;AAAA,QACjB;AAAA,MACF;AAEA,aAAO,MAAM;AACX,YAAI,CAAC,OAAO,MAAM,QAAS,QAAO;AAElC,cAAM,WAAW,OAAO,MAAM,SAAS,YAAY,CAAC;AAEpD,eAAOE;AAAA,UACL;AAAA,UACA,EAAE,OAAO,MAAM,iBAAiB;AAAA,UAChC,SAAS;AAAA,YAAI,CAAC,SAAS,UACrBA;AAAA,cACE;AAAA,cACA;AAAA,gBACE,KAAK,GAAG,OAAO,MAAM,IAAI,IAAI,KAAK;AAAA,gBAClC,OAAO,MAAM;AAAA,cACf;AAAA,cACAA,IAAEJ,mBAAyB;AAAA,gBACzB,QAAQ,OAAO,MAAM;AAAA,gBACrB,UAAU;AAAA,gBACV,MAAM,OAAO,MAAM;AAAA,gBACnB,SAAS,OAAO,MAAM;AAAA,gBACtB,WAAW,OAAO,MAAM;AAAA,gBACxB,OAAO,OAAO,MAAM;AAAA,cACtB,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;AC7CA,SAAS,iBAAAK,iBAAe,yBAAyB;AAEjD,SAAS,mBAAAC,mBAAiB,KAAAC,WAAS;AAE5B,SAAS,0BAA0B,OAA6B;AACrE,SAAOD,kBAAgB;AAAA,IACrB,MAAM;AAAA,IACN,OAAOD,gBAA4B;AAAA,IACnC,MAAM,OAAO;AACX,YAAM,EAAE,MAAM,IAAI;AAAA,QAChB;AAAA,MACF;AAEA,aAAO,MAAM;AACX,YAAI,CAAC,MAAM,MAAM,QAAS,QAAO;AACjC,eAAOE,IAAE,OAAO,EAAE,OAAO,MAAM,UAAU,GAAG,MAAM,MAAM,IAAI;AAAA,MAC9D;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;ACnBA,SAAS,oBAAAC,mBAAkB,iBAAAC,iBAAe,sBAAAC,2BAA0B;AAEpE,SAAS,mBAAAC,mBAAiB,KAAAC,WAAS;AAE5B,SAAS,mCAAmC,OAA6B;AAC9E,SAAOD,kBAAgB;AAAA,IACrB,MAAM;AAAA,IACN,YAAY,EAAE,kBAAAH,kBAAiB;AAAA,IAC/B,OAAOC,gBAAsB;AAAA,IAC7B,MAAM,OAAO;AACX,YAAM,EAAE,OAAO,IAAIC;AAAA,QACjB;AAAA,MACF;AAEA,aAAO,MAAM;AACX,YAAI,CAAC,OAAO,MAAM,QAAS,QAAO;AAElC,cAAM,WAAW,OAAO,MAAM,SAAS,YAAY,CAAC;AAEpD,eAAOE;AAAA,UACL;AAAA,UACA,EAAE,OAAO,MAAM,eAAe;AAAA,UAC9B,SAAS;AAAA,YAAI,CAAC,SAAS,UACrBA;AAAA,cACE;AAAA,cACA,EAAE,KAAK,GAAG,OAAO,MAAM,IAAI,IAAI,KAAK,GAAG;AAAA,cACvCA,IAAEJ,mBAAyB;AAAA,gBACzB,QAAQ,OAAO,MAAM;AAAA,gBACrB,UAAU;AAAA,gBACV,MAAM,OAAO,MAAM;AAAA,gBACnB,SAAS,OAAO,MAAM;AAAA,gBACtB,WAAW,OAAO,MAAM;AAAA,gBACxB,OAAO,OAAO,MAAM;AAAA,cACtB,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;ACGO,IAAM,eAAqC;AAAA,EAChD,OAAO;AAAA,EACP,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,sBAAsB;AAAA,EACtB,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB,WAAW;AAAA,EACX,aAAa;AAAA,EACb,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,WAAW;AAAA,EACX,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,aAAa;AACf;AAEO,SAAS,WACd,WACsB;AACtB,SAAO,YAAY,EAAE,GAAG,cAAc,GAAG,UAAU,IAAI,EAAE,GAAG,aAAa;AAC3E;;;AlB3BA,IAAM,OAAO;AACb,IAAM,YAAY,OAAO;AACzB,IAAM,gBAAgB,YAAY;AAElC,IAAM,qBAAqB,CACzB,UACA,QACA,YACY;AACZ,MAAI,CAAC,SAAS,SAAS,EAAE,UAAiB,QAAe,OAAc,GAAG;AACxE,WAAO;AAAA,EACT;AAEA,QAAM,QAAS,UAAkB;AACjC,MAAI,OAAO,UAAU,SAAU,QAAO;AAItC,QAAM,aAAc,SAAiB,cAAe;AACpD,MAAI;AACJ,MAAI;AACF,eAAWK,SAAQ,OAAO,QAAe,OAAO,UAAU;AAAA,EAC5D,QAAQ;AACN,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,SAAS,QAAS,QAAO;AAEvC,QAAM,QAAQ,UAAU;AACxB,MAAI,CAAC,MAAO,QAAO;AAGnB,MAAI,MAAM,QAAQ,KAAK,EAAG,QAAO;AACjC,MAAI,OAAO,UAAU,YAAY,UAAU,KAAM,QAAO;AAExD,QAAM,gBACJ,UAAU,SAAS,OAAQ,MAAc,SAAS,WAC9CA,SAAQ,OAAO,YAAa,MAAc,MAAM,UAAU,IAC1D;AAEN,SAAO,aAAa,aAAoB;AAC1C;AAGA,IAAM,qBAAqB,CACzB,UACA,QACA,YACY;AACZ,MAAI,CAAC,SAAS,SAAS,EAAE,UAAiB,QAAe,OAAc,GAAG;AACxE,WAAO;AAAA,EACT;AAEA,QAAM,QAAS,UAAkB;AACjC,MAAI,OAAO,UAAU,SAAU,QAAO;AAEtC,QAAM,aAAc,SAAiB,cAAe;AACpD,MAAI;AACJ,MAAI;AACF,eAAWA,SAAQ,OAAO,QAAe,OAAO,UAAU;AAAA,EAC5D,QAAQ;AACN,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,UAAU;AACxB,MAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW,EAAG,QAAO;AAExD,aAAW,SAAS,OAAO;AACzB,QAAI,OAAO,UAAU,YAAY,UAAU,KAAM;AACjD,QAAI,EAAE,WAAY,OAAoC,QAAO;AAAA,EAC/D;AACA,SAAO;AACT;AAOO,SAAS,sBACd,SACkC;AAClC,QAAM,QAAQ,WAAW,SAAS,KAAK;AAEvC,SAAO;AAAA;AAAA,IAEL;AAAA,MACE,QAAQ,SAAS,MAAM,SAAS,gBAAgB,CAAC;AAAA,MACjD,UAAU,QAAQ,mCAAmC,KAAK,CAAC;AAAA,IAC7D;AAAA,IACA;AAAA,MACE,QAAQ,SAAS,MAAM,SAAS,kBAAkB,CAAC;AAAA,MACnD,UAAU,QAAQ,qCAAqC,KAAK,CAAC;AAAA,IAC/D;AAAA,IACA;AAAA,MACE,QAAQ,SAAS,MAAM,SAAS,OAAO,CAAC;AAAA,MACxC,UAAU,QAAQ,0BAA0B,KAAK,CAAC;AAAA,IACpD;AAAA,IACA;AAAA,MACE,QAAQ,SAAS,MAAM,SAAS,gBAAgB,CAAC;AAAA,MACjD,UAAU,QAAQ,mCAAmC,KAAK,CAAC;AAAA,IAC7D;AAAA,IACA;AAAA,MACE,QAAQ,SAAS,MAAM,SAAS,UAAU,CAAC;AAAA,MAC3C,UAAU,QAAQ,6BAA6B,KAAK,CAAC;AAAA,IACvD;AAAA,IACA;AAAA,MACE,QAAQ,SAAS,MAAM,SAAS,OAAO,CAAC;AAAA,MACxC,UAAU,QAAQ,0BAA0B,KAAK,CAAC;AAAA,IACpD;AAAA;AAAA,IAGA;AAAA,MACE,QAAQ,SAAS,MAAM,aAAa,OAAO,CAAC;AAAA,MAC5C,UAAU,QAAQ,8BAA8B,KAAK,CAAC;AAAA,IACxD;AAAA,IACA;AAAA,MACE,QAAQ,SAAS,MAAM,eAAe;AAAA,MACtC,UAAU,QAAQ,oBAAoB;AAAA,IACxC;AAAA;AAAA,IAGA;AAAA,MACE,QAAQ,SAAS,MAAM,kBAAkB;AAAA,MACzC,UAAU,QAAQ,qBAAqB;AAAA,IACzC;AAAA,IACA;AAAA,MACE,QAAQ,SAAS,MAAM,eAAe;AAAA,MACtC,UAAU,QAAQ,mBAAmB;AAAA,IACvC;AAAA,IACA;AAAA,MACE,QAAQ,SAAS,MAAM,gBAAgB;AAAA,MACvC,UAAU,QAAQ,oBAAoB;AAAA,IACxC;AAAA,IACA;AAAA,MACE,QAAQ,SAAS,MAAM,gBAAgB;AAAA,MACvC,UAAU,QAAQ,2BAA2B,KAAK,CAAC;AAAA,IACrD;AAAA,IACA;AAAA;AAAA,MAEE,QAAQ,SAAS,WAAW,kBAAkB;AAAA,MAC9C,UAAU,QAAQ,sBAAsB;AAAA,IAC1C;AAAA,IACA;AAAA;AAAA,MAEE,QAAQ,SAAS,WAAW,kBAAkB;AAAA,MAC9C,UAAU,QAAQ,iBAAiB;AAAA,IACrC;AAAA,IACA;AAAA;AAAA;AAAA,MAGE,QAAQ,SAAS,WAAW,aAAa;AAAA,MACzC,UAAU,QAAQ,iBAAiB;AAAA,IACrC;AAAA,IACA;AAAA,MACE,QAAQ,SAAS,eAAe,IAAI,iBAAiB,SAAS,UAAU,CAAC,CAAC;AAAA,MAC1E,UAAU,QAAQ,qBAAqB;AAAA,IACzC;AAAA,IACA;AAAA,MACE,QAAQ,SAAS,MAAM,eAAe;AAAA,MACtC,UAAU,QAAQ,mBAAmB;AAAA,IACvC;AAAA,EACF;AACF;AAGO,IAAM,kBACX,sBAAsB;","names":["Resolve","computed","computed","findUISchema","DispatchRenderer","rendererProps","computed","defineComponent","h","rendererProps","computed","defineComponent","h","resolveComponent","defineComponent","rendererProps","computed","resolveComponent","h","rendererProps","useJsonFormsControl","computed","defineComponent","h","resolveComponent","defineComponent","rendererProps","useJsonFormsControl","computed","resolveComponent","h","rendererProps","useJsonFormsControl","computed","defineComponent","h","resolveComponent","defineComponent","rendererProps","useJsonFormsControl","computed","resolveComponent","h","rendererProps","useJsonFormsControl","computed","defineComponent","h","resolveComponent","schemaEnumOptions","defineComponent","rendererProps","useJsonFormsControl","computed","resolveComponent","h","rendererProps","useJsonFormsControl","computed","defineComponent","h","resolveComponent","defineComponent","rendererProps","useJsonFormsControl","computed","resolveComponent","h","rendererProps","useJsonFormsControl","computed","defineComponent","h","resolveComponent","defineComponent","rendererProps","useJsonFormsControl","computed","resolveComponent","h","rendererProps","useJsonFormsControl","computed","defineComponent","h","resolveComponent","defineComponent","rendererProps","useJsonFormsControl","computed","resolveComponent","h","rendererProps","useJsonFormsControl","computed","defineComponent","h","resolveComponent","defineComponent","rendererProps","useJsonFormsControl","computed","resolveComponent","h","DispatchRenderer","rendererProps","defineComponent","h","DispatchRenderer","rendererProps","defineComponent","h","DispatchRenderer","rendererProps","useJsonFormsLayout","defineComponent","h","DispatchRenderer","rendererProps","useJsonFormsLayout","defineComponent","h","rendererProps","defineComponent","h","DispatchRenderer","rendererProps","useJsonFormsLayout","defineComponent","h","Resolve"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jsonforms-nuxt-ui-renderers",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "description": "JSONForms renderer set for Nuxt UI (@nuxt/ui) on Vue 3 / Nuxt.",
5
5
  "license": "MIT",
6
6
  "author": "OpenApp contributors",