jsonforms-nuxt-ui-renderers 0.1.4 → 0.1.5

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/dist/index.cjs CHANGED
@@ -26,7 +26,7 @@ module.exports = __toCommonJS(index_exports);
26
26
 
27
27
  // src/nuxtUiRenderers.ts
28
28
  var import_core3 = require("@jsonforms/core");
29
- var import_vue30 = require("vue");
29
+ var import_vue32 = require("vue");
30
30
 
31
31
  // src/renderers/complex/NuxtUiArrayListRenderer.ts
32
32
  var import_core = require("@jsonforms/core");
@@ -464,18 +464,98 @@ var NuxtUiIntegerControl = (0, import_vue11.defineComponent)({
464
464
  }
465
465
  });
466
466
 
467
- // src/renderers/controls/NuxtUiNumberControl.ts
467
+ // src/renderers/controls/NuxtUiMultiEnumControl.ts
468
468
  var import_vue12 = require("@jsonforms/vue");
469
469
  var import_vue13 = require("vue");
470
- var NuxtUiNumberControl = (0, import_vue13.defineComponent)({
471
- name: "NuxtUiNumberControl",
470
+ function schemaEnumOptions2(schema) {
471
+ if (!schema) return [];
472
+ if (Array.isArray(schema.enum)) {
473
+ return schema.enum.map((v) => ({ label: String(v), value: v }));
474
+ }
475
+ const oneOf = schema.oneOf;
476
+ if (!Array.isArray(oneOf)) return [];
477
+ const out = [];
478
+ for (const entry of oneOf) {
479
+ if (typeof entry !== "object" || entry === null) continue;
480
+ const maybe = entry;
481
+ if (!("const" in maybe)) continue;
482
+ out.push({
483
+ value: maybe.const,
484
+ label: typeof maybe.title === "string" && maybe.title.trim() ? maybe.title : String(maybe.const)
485
+ });
486
+ }
487
+ return out;
488
+ }
489
+ function arrayItemsSchema(schema) {
490
+ if (!schema) return void 0;
491
+ const items = schema.items;
492
+ if (typeof items !== "object" || items === null) return void 0;
493
+ return items;
494
+ }
495
+ var NuxtUiMultiEnumControl = (0, import_vue13.defineComponent)({
496
+ name: "NuxtUiMultiEnumControl",
472
497
  props: (0, import_vue12.rendererProps)(),
473
498
  setup(props) {
474
499
  const { control, handleChange } = (0, import_vue12.useJsonFormsControl)(
475
500
  props
476
501
  );
477
502
  const errorMessage = (0, import_vue13.computed)(() => trimmedOrUndefined(control.value.errors));
478
- const modelValue = (0, import_vue13.computed)(() => {
503
+ const options = (0, import_vue13.computed)(
504
+ () => schemaEnumOptions2(arrayItemsSchema(control.value.schema))
505
+ );
506
+ const selectedValues = (0, import_vue13.computed)({
507
+ get: () => Array.isArray(control.value.data) ? control.value.data : [],
508
+ set: (v) => handleChange(control.value.path, v)
509
+ });
510
+ return () => {
511
+ if (!control.value.visible) return null;
512
+ const UFormField = (0, import_vue13.resolveComponent)("UFormField");
513
+ const USelectMenu = (0, import_vue13.resolveComponent)("USelectMenu");
514
+ return (0, import_vue13.h)(
515
+ "div",
516
+ {},
517
+ (0, import_vue13.h)(
518
+ UFormField,
519
+ {
520
+ label: control.value.label,
521
+ description: control.value.description,
522
+ required: control.value.required,
523
+ error: errorMessage.value
524
+ },
525
+ {
526
+ default: () => (0, import_vue13.h)(USelectMenu, {
527
+ multiple: true,
528
+ modelValue: selectedValues.value,
529
+ items: options.value,
530
+ valueKey: "value",
531
+ labelKey: "label",
532
+ disabled: !control.value.enabled,
533
+ color: errorMessage.value ? "error" : void 0,
534
+ "aria-invalid": Boolean(errorMessage.value),
535
+ placeholder: "Select...",
536
+ "onUpdate:modelValue": (v) => {
537
+ selectedValues.value = Array.isArray(v) ? v : [];
538
+ }
539
+ })
540
+ }
541
+ )
542
+ );
543
+ };
544
+ }
545
+ });
546
+
547
+ // src/renderers/controls/NuxtUiNumberControl.ts
548
+ var import_vue14 = require("@jsonforms/vue");
549
+ var import_vue15 = require("vue");
550
+ var NuxtUiNumberControl = (0, import_vue15.defineComponent)({
551
+ name: "NuxtUiNumberControl",
552
+ props: (0, import_vue14.rendererProps)(),
553
+ setup(props) {
554
+ const { control, handleChange } = (0, import_vue14.useJsonFormsControl)(
555
+ props
556
+ );
557
+ const errorMessage = (0, import_vue15.computed)(() => trimmedOrUndefined(control.value.errors));
558
+ const modelValue = (0, import_vue15.computed)(() => {
479
559
  const v = control.value.data;
480
560
  return v === null || v === void 0 ? "" : String(v);
481
561
  });
@@ -490,12 +570,12 @@ var NuxtUiNumberControl = (0, import_vue13.defineComponent)({
490
570
  }
491
571
  return () => {
492
572
  if (!control.value.visible) return null;
493
- const UFormField = (0, import_vue13.resolveComponent)("UFormField");
494
- const UInput = (0, import_vue13.resolveComponent)("UInput");
495
- return (0, import_vue13.h)(
573
+ const UFormField = (0, import_vue15.resolveComponent)("UFormField");
574
+ const UInput = (0, import_vue15.resolveComponent)("UInput");
575
+ return (0, import_vue15.h)(
496
576
  "div",
497
577
  {},
498
- (0, import_vue13.h)(
578
+ (0, import_vue15.h)(
499
579
  UFormField,
500
580
  {
501
581
  label: control.value.label,
@@ -504,7 +584,7 @@ var NuxtUiNumberControl = (0, import_vue13.defineComponent)({
504
584
  error: errorMessage.value
505
585
  },
506
586
  {
507
- default: () => (0, import_vue13.h)(UInput, {
587
+ default: () => (0, import_vue15.h)(UInput, {
508
588
  type: "number",
509
589
  inputmode: "decimal",
510
590
  modelValue: modelValue.value,
@@ -521,24 +601,24 @@ var NuxtUiNumberControl = (0, import_vue13.defineComponent)({
521
601
  });
522
602
 
523
603
  // src/renderers/controls/NuxtUiStringControl.ts
524
- var import_vue14 = require("@jsonforms/vue");
525
- var import_vue15 = require("vue");
526
- var NuxtUiStringControl = (0, import_vue15.defineComponent)({
604
+ var import_vue16 = require("@jsonforms/vue");
605
+ var import_vue17 = require("vue");
606
+ var NuxtUiStringControl = (0, import_vue17.defineComponent)({
527
607
  name: "NuxtUiStringControl",
528
- props: (0, import_vue14.rendererProps)(),
608
+ props: (0, import_vue16.rendererProps)(),
529
609
  setup(props) {
530
- const { control, handleChange } = (0, import_vue14.useJsonFormsControl)(
610
+ const { control, handleChange } = (0, import_vue16.useJsonFormsControl)(
531
611
  props
532
612
  );
533
- const errorMessage = (0, import_vue15.computed)(() => trimmedOrUndefined(control.value.errors));
613
+ const errorMessage = (0, import_vue17.computed)(() => trimmedOrUndefined(control.value.errors));
534
614
  return () => {
535
615
  if (!control.value.visible) return null;
536
- const UFormField = (0, import_vue15.resolveComponent)("UFormField");
537
- const UInput = (0, import_vue15.resolveComponent)("UInput");
538
- return (0, import_vue15.h)(
616
+ const UFormField = (0, import_vue17.resolveComponent)("UFormField");
617
+ const UInput = (0, import_vue17.resolveComponent)("UInput");
618
+ return (0, import_vue17.h)(
539
619
  "div",
540
620
  {},
541
- (0, import_vue15.h)(
621
+ (0, import_vue17.h)(
542
622
  UFormField,
543
623
  {
544
624
  label: control.value.label,
@@ -547,7 +627,7 @@ var NuxtUiStringControl = (0, import_vue15.defineComponent)({
547
627
  error: errorMessage.value
548
628
  },
549
629
  {
550
- default: () => (0, import_vue15.h)(UInput, {
630
+ default: () => (0, import_vue17.h)(UInput, {
551
631
  modelValue: control.value.data ?? "",
552
632
  class: "w-full",
553
633
  disabled: !control.value.enabled,
@@ -563,24 +643,24 @@ var NuxtUiStringControl = (0, import_vue15.defineComponent)({
563
643
  });
564
644
 
565
645
  // src/renderers/controls/NuxtUiTextareaControl.ts
566
- var import_vue16 = require("@jsonforms/vue");
567
- var import_vue17 = require("vue");
568
- var NuxtUiTextareaControl = (0, import_vue17.defineComponent)({
646
+ var import_vue18 = require("@jsonforms/vue");
647
+ var import_vue19 = require("vue");
648
+ var NuxtUiTextareaControl = (0, import_vue19.defineComponent)({
569
649
  name: "NuxtUiTextareaControl",
570
- props: (0, import_vue16.rendererProps)(),
650
+ props: (0, import_vue18.rendererProps)(),
571
651
  setup(props) {
572
- const { control, handleChange } = (0, import_vue16.useJsonFormsControl)(
652
+ const { control, handleChange } = (0, import_vue18.useJsonFormsControl)(
573
653
  props
574
654
  );
575
- const errorMessage = (0, import_vue17.computed)(() => trimmedOrUndefined(control.value.errors));
655
+ const errorMessage = (0, import_vue19.computed)(() => trimmedOrUndefined(control.value.errors));
576
656
  return () => {
577
657
  if (!control.value.visible) return null;
578
- const UFormField = (0, import_vue17.resolveComponent)("UFormField");
579
- const UTextarea = (0, import_vue17.resolveComponent)("UTextarea");
580
- return (0, import_vue17.h)(
658
+ const UFormField = (0, import_vue19.resolveComponent)("UFormField");
659
+ const UTextarea = (0, import_vue19.resolveComponent)("UTextarea");
660
+ return (0, import_vue19.h)(
581
661
  "div",
582
662
  {},
583
- (0, import_vue17.h)(
663
+ (0, import_vue19.h)(
584
664
  UFormField,
585
665
  {
586
666
  label: control.value.label,
@@ -589,7 +669,7 @@ var NuxtUiTextareaControl = (0, import_vue17.defineComponent)({
589
669
  error: errorMessage.value
590
670
  },
591
671
  {
592
- default: () => (0, import_vue17.h)(UTextarea, {
672
+ default: () => (0, import_vue19.h)(UTextarea, {
593
673
  modelValue: control.value.data ?? "",
594
674
  class: "w-full",
595
675
  disabled: !control.value.enabled,
@@ -606,37 +686,37 @@ var NuxtUiTextareaControl = (0, import_vue17.defineComponent)({
606
686
  });
607
687
 
608
688
  // src/renderers/layouts/NuxtUiCategorizationRenderer.ts
609
- var import_vue18 = require("@jsonforms/vue");
610
- var import_vue19 = require("vue");
611
- var NuxtUiCategorizationRenderer = (0, import_vue19.defineComponent)({
689
+ var import_vue20 = require("@jsonforms/vue");
690
+ var import_vue21 = require("vue");
691
+ var NuxtUiCategorizationRenderer = (0, import_vue21.defineComponent)({
612
692
  name: "NuxtUiCategorizationRenderer",
613
- components: { DispatchRenderer: import_vue18.DispatchRenderer },
614
- props: (0, import_vue18.rendererProps)(),
693
+ components: { DispatchRenderer: import_vue20.DispatchRenderer },
694
+ props: (0, import_vue20.rendererProps)(),
615
695
  setup(props) {
616
- const { layout, categories } = (0, import_vue18.useJsonFormsCategorization)(
696
+ const { layout, categories } = (0, import_vue20.useJsonFormsCategorization)(
617
697
  props
618
698
  );
619
699
  return () => {
620
700
  if (!layout.value.visible) return null;
621
- return (0, import_vue19.h)(
701
+ return (0, import_vue21.h)(
622
702
  "div",
623
703
  { class: "flex flex-col gap-6" },
624
704
  categories.map((categoryRef, catIndex) => {
625
705
  const category = categoryRef.value;
626
706
  const elements = category.uischema.elements ?? [];
627
- return (0, import_vue19.h)(
707
+ return (0, import_vue21.h)(
628
708
  "div",
629
709
  { key: `${layout.value.path}-cat-${catIndex}`, class: "flex flex-col gap-3" },
630
710
  [
631
- category.label ? (0, import_vue19.h)("div", { class: "text-sm font-semibold" }, category.label) : null,
632
- (0, import_vue19.h)(
711
+ category.label ? (0, import_vue21.h)("div", { class: "text-sm font-semibold" }, category.label) : null,
712
+ (0, import_vue21.h)(
633
713
  "div",
634
714
  { class: "flex flex-col gap-3" },
635
715
  elements.map(
636
- (element, index) => (0, import_vue19.h)(
716
+ (element, index) => (0, import_vue21.h)(
637
717
  "div",
638
718
  { key: `${category.path}-${index}` },
639
- (0, import_vue19.h)(import_vue18.DispatchRenderer, {
719
+ (0, import_vue21.h)(import_vue20.DispatchRenderer, {
640
720
  schema: category.schema,
641
721
  uischema: element,
642
722
  path: category.path,
@@ -656,29 +736,29 @@ var NuxtUiCategorizationRenderer = (0, import_vue19.defineComponent)({
656
736
  });
657
737
 
658
738
  // src/renderers/layouts/NuxtUiCategoryRenderer.ts
659
- var import_vue20 = require("@jsonforms/vue");
660
- var import_vue21 = require("vue");
661
- var NuxtUiCategoryRenderer = (0, import_vue21.defineComponent)({
739
+ var import_vue22 = require("@jsonforms/vue");
740
+ var import_vue23 = require("vue");
741
+ var NuxtUiCategoryRenderer = (0, import_vue23.defineComponent)({
662
742
  name: "NuxtUiCategoryRenderer",
663
- components: { DispatchRenderer: import_vue20.DispatchRenderer },
664
- props: (0, import_vue20.rendererProps)(),
743
+ components: { DispatchRenderer: import_vue22.DispatchRenderer },
744
+ props: (0, import_vue22.rendererProps)(),
665
745
  setup(props) {
666
- const { layout } = (0, import_vue20.useJsonFormsLayout)(
746
+ const { layout } = (0, import_vue22.useJsonFormsLayout)(
667
747
  props
668
748
  );
669
749
  return () => {
670
750
  if (!layout.value.visible) return null;
671
751
  const elements = layout.value.uischema.elements ?? [];
672
- return (0, import_vue21.h)("div", { class: "flex flex-col gap-3" }, [
673
- layout.value.label ? (0, import_vue21.h)("div", { class: "text-sm font-semibold" }, layout.value.label) : null,
674
- (0, import_vue21.h)(
752
+ return (0, import_vue23.h)("div", { class: "flex flex-col gap-3" }, [
753
+ layout.value.label ? (0, import_vue23.h)("div", { class: "text-sm font-semibold" }, layout.value.label) : null,
754
+ (0, import_vue23.h)(
675
755
  "div",
676
756
  { class: "flex flex-col gap-3" },
677
757
  elements.map(
678
- (element, index) => (0, import_vue21.h)(
758
+ (element, index) => (0, import_vue23.h)(
679
759
  "div",
680
760
  { key: `${layout.value.path}-${index}` },
681
- (0, import_vue21.h)(import_vue20.DispatchRenderer, {
761
+ (0, import_vue23.h)(import_vue22.DispatchRenderer, {
682
762
  schema: layout.value.schema,
683
763
  uischema: element,
684
764
  path: layout.value.path,
@@ -695,29 +775,29 @@ var NuxtUiCategoryRenderer = (0, import_vue21.defineComponent)({
695
775
  });
696
776
 
697
777
  // src/renderers/layouts/NuxtUiGroupRenderer.ts
698
- var import_vue22 = require("@jsonforms/vue");
699
- var import_vue23 = require("vue");
700
- var NuxtUiGroupRenderer = (0, import_vue23.defineComponent)({
778
+ var import_vue24 = require("@jsonforms/vue");
779
+ var import_vue25 = require("vue");
780
+ var NuxtUiGroupRenderer = (0, import_vue25.defineComponent)({
701
781
  name: "NuxtUiGroupRenderer",
702
- components: { DispatchRenderer: import_vue22.DispatchRenderer },
703
- props: (0, import_vue22.rendererProps)(),
782
+ components: { DispatchRenderer: import_vue24.DispatchRenderer },
783
+ props: (0, import_vue24.rendererProps)(),
704
784
  setup(props) {
705
- const { layout } = (0, import_vue22.useJsonFormsLayout)(
785
+ const { layout } = (0, import_vue24.useJsonFormsLayout)(
706
786
  props
707
787
  );
708
788
  return () => {
709
789
  if (!layout.value.visible) return null;
710
790
  const elements = layout.value.uischema.elements ?? [];
711
- return (0, import_vue23.h)("div", { class: "rounded border p-3" }, [
712
- layout.value.label ? (0, import_vue23.h)("div", { class: "mb-3 text-sm font-semibold" }, layout.value.label) : null,
713
- (0, import_vue23.h)(
791
+ return (0, import_vue25.h)("div", { class: "rounded border p-3" }, [
792
+ layout.value.label ? (0, import_vue25.h)("div", { class: "mb-3 text-sm font-semibold" }, layout.value.label) : null,
793
+ (0, import_vue25.h)(
714
794
  "div",
715
795
  { class: "flex flex-col gap-3" },
716
796
  elements.map(
717
- (element, index) => (0, import_vue23.h)(
797
+ (element, index) => (0, import_vue25.h)(
718
798
  "div",
719
799
  { key: `${layout.value.path}-${index}` },
720
- (0, import_vue23.h)(import_vue22.DispatchRenderer, {
800
+ (0, import_vue25.h)(import_vue24.DispatchRenderer, {
721
801
  schema: layout.value.schema,
722
802
  uischema: element,
723
803
  path: layout.value.path,
@@ -734,27 +814,27 @@ var NuxtUiGroupRenderer = (0, import_vue23.defineComponent)({
734
814
  });
735
815
 
736
816
  // src/renderers/layouts/NuxtUiHorizontalLayoutRenderer.ts
737
- var import_vue24 = require("@jsonforms/vue");
738
- var import_vue25 = require("vue");
739
- var NuxtUiHorizontalLayoutRenderer = (0, import_vue25.defineComponent)({
817
+ var import_vue26 = require("@jsonforms/vue");
818
+ var import_vue27 = require("vue");
819
+ var NuxtUiHorizontalLayoutRenderer = (0, import_vue27.defineComponent)({
740
820
  name: "NuxtUiHorizontalLayoutRenderer",
741
- components: { DispatchRenderer: import_vue24.DispatchRenderer },
742
- props: (0, import_vue24.rendererProps)(),
821
+ components: { DispatchRenderer: import_vue26.DispatchRenderer },
822
+ props: (0, import_vue26.rendererProps)(),
743
823
  setup(props) {
744
- const { layout } = (0, import_vue24.useJsonFormsLayout)(
824
+ const { layout } = (0, import_vue26.useJsonFormsLayout)(
745
825
  props
746
826
  );
747
827
  return () => {
748
828
  if (!layout.value.visible) return null;
749
829
  const elements = layout.value.uischema.elements ?? [];
750
- return (0, import_vue25.h)(
830
+ return (0, import_vue27.h)(
751
831
  "div",
752
832
  { class: "flex flex-col gap-3 md:flex-row md:flex-wrap" },
753
833
  elements.map(
754
- (element, index) => (0, import_vue25.h)(
834
+ (element, index) => (0, import_vue27.h)(
755
835
  "div",
756
836
  { key: `${layout.value.path}-${index}`, class: "min-w-0 flex-1" },
757
- (0, import_vue25.h)(import_vue24.DispatchRenderer, {
837
+ (0, import_vue27.h)(import_vue26.DispatchRenderer, {
758
838
  schema: layout.value.schema,
759
839
  uischema: element,
760
840
  path: layout.value.path,
@@ -770,18 +850,18 @@ var NuxtUiHorizontalLayoutRenderer = (0, import_vue25.defineComponent)({
770
850
  });
771
851
 
772
852
  // src/renderers/layouts/NuxtUiLabelRenderer.ts
773
- var import_vue26 = require("@jsonforms/vue");
774
- var import_vue27 = require("vue");
775
- var NuxtUiLabelRenderer = (0, import_vue27.defineComponent)({
853
+ var import_vue28 = require("@jsonforms/vue");
854
+ var import_vue29 = require("vue");
855
+ var NuxtUiLabelRenderer = (0, import_vue29.defineComponent)({
776
856
  name: "NuxtUiLabelRenderer",
777
- props: (0, import_vue26.rendererProps)(),
857
+ props: (0, import_vue28.rendererProps)(),
778
858
  setup(props) {
779
- const { label } = (0, import_vue26.useJsonFormsLabel)(
859
+ const { label } = (0, import_vue28.useJsonFormsLabel)(
780
860
  props
781
861
  );
782
862
  return () => {
783
863
  if (!label.value.visible) return null;
784
- return (0, import_vue27.h)(
864
+ return (0, import_vue29.h)(
785
865
  "div",
786
866
  { class: "text-sm text-gray-600 dark:text-gray-300" },
787
867
  label.value.text
@@ -791,27 +871,27 @@ var NuxtUiLabelRenderer = (0, import_vue27.defineComponent)({
791
871
  });
792
872
 
793
873
  // src/renderers/layouts/NuxtUiVerticalLayoutRenderer.ts
794
- var import_vue28 = require("@jsonforms/vue");
795
- var import_vue29 = require("vue");
796
- var NuxtUiVerticalLayoutRenderer = (0, import_vue29.defineComponent)({
874
+ var import_vue30 = require("@jsonforms/vue");
875
+ var import_vue31 = require("vue");
876
+ var NuxtUiVerticalLayoutRenderer = (0, import_vue31.defineComponent)({
797
877
  name: "NuxtUiVerticalLayoutRenderer",
798
- components: { DispatchRenderer: import_vue28.DispatchRenderer },
799
- props: (0, import_vue28.rendererProps)(),
878
+ components: { DispatchRenderer: import_vue30.DispatchRenderer },
879
+ props: (0, import_vue30.rendererProps)(),
800
880
  setup(props) {
801
- const { layout } = (0, import_vue28.useJsonFormsLayout)(
881
+ const { layout } = (0, import_vue30.useJsonFormsLayout)(
802
882
  props
803
883
  );
804
884
  return () => {
805
885
  if (!layout.value.visible) return null;
806
886
  const elements = layout.value.uischema.elements ?? [];
807
- return (0, import_vue29.h)(
887
+ return (0, import_vue31.h)(
808
888
  "div",
809
889
  { class: "flex flex-col gap-3" },
810
890
  elements.map(
811
- (element, index) => (0, import_vue29.h)(
891
+ (element, index) => (0, import_vue31.h)(
812
892
  "div",
813
893
  { key: `${layout.value.path}-${index}` },
814
- (0, import_vue29.h)(import_vue28.DispatchRenderer, {
894
+ (0, import_vue31.h)(import_vue30.DispatchRenderer, {
815
895
  schema: layout.value.schema,
816
896
  uischema: element,
817
897
  path: layout.value.path,
@@ -829,67 +909,93 @@ var NuxtUiVerticalLayoutRenderer = (0, import_vue29.defineComponent)({
829
909
  // src/nuxtUiRenderers.ts
830
910
  var RANK = 10;
831
911
  var ENUM_RANK = RANK + 1;
912
+ var isMultiEnumControl = (uischema, schema, context) => {
913
+ if (!(0, import_core3.uiTypeIs)("Control")(uischema, schema, context)) {
914
+ return false;
915
+ }
916
+ const scope = uischema?.scope;
917
+ if (typeof scope !== "string") return false;
918
+ const rootSchema = context?.rootSchema ?? schema;
919
+ let resolved;
920
+ try {
921
+ resolved = import_core3.Resolve.schema(schema, scope, rootSchema);
922
+ } catch {
923
+ return false;
924
+ }
925
+ if (resolved?.type !== "array") return false;
926
+ const items = resolved?.items;
927
+ if (!items) return false;
928
+ if (Array.isArray(items)) return false;
929
+ if (typeof items !== "object" || items === null) return false;
930
+ const resolvedItems = "$ref" in items && typeof items.$ref === "string" ? import_core3.Resolve.schema(rootSchema, items.$ref, rootSchema) : items;
931
+ return (0, import_core3.isEnumSchema)(resolvedItems);
932
+ };
832
933
  var nuxtUiRenderers = [
833
934
  // Layouts
834
935
  {
835
936
  tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("VerticalLayout")),
836
- renderer: (0, import_vue30.markRaw)(NuxtUiVerticalLayoutRenderer)
937
+ renderer: (0, import_vue32.markRaw)(NuxtUiVerticalLayoutRenderer)
837
938
  },
838
939
  {
839
940
  tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("HorizontalLayout")),
840
- renderer: (0, import_vue30.markRaw)(NuxtUiHorizontalLayoutRenderer)
941
+ renderer: (0, import_vue32.markRaw)(NuxtUiHorizontalLayoutRenderer)
841
942
  },
842
943
  {
843
944
  tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("Group")),
844
- renderer: (0, import_vue30.markRaw)(NuxtUiGroupRenderer)
945
+ renderer: (0, import_vue32.markRaw)(NuxtUiGroupRenderer)
845
946
  },
846
947
  {
847
948
  tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("Categorization")),
848
- renderer: (0, import_vue30.markRaw)(NuxtUiCategorizationRenderer)
949
+ renderer: (0, import_vue32.markRaw)(NuxtUiCategorizationRenderer)
849
950
  },
850
951
  {
851
952
  tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("Category")),
852
- renderer: (0, import_vue30.markRaw)(NuxtUiCategoryRenderer)
953
+ renderer: (0, import_vue32.markRaw)(NuxtUiCategoryRenderer)
853
954
  },
854
955
  {
855
956
  tester: (0, import_core3.rankWith)(RANK, (0, import_core3.uiTypeIs)("Label")),
856
- renderer: (0, import_vue30.markRaw)(NuxtUiLabelRenderer)
957
+ renderer: (0, import_vue32.markRaw)(NuxtUiLabelRenderer)
857
958
  },
858
959
  // Complex schemas
859
960
  {
860
961
  tester: (0, import_core3.rankWith)(RANK, (0, import_core3.schemaTypeIs)("array")),
861
- renderer: (0, import_vue30.markRaw)(NuxtUiArrayListRenderer)
962
+ renderer: (0, import_vue32.markRaw)(NuxtUiArrayListRenderer)
862
963
  },
863
964
  {
864
965
  tester: (0, import_core3.rankWith)(RANK, import_core3.isObjectControl),
865
- renderer: (0, import_vue30.markRaw)(NuxtUiObjectRenderer)
966
+ renderer: (0, import_vue32.markRaw)(NuxtUiObjectRenderer)
866
967
  },
867
968
  // Primitive controls
868
969
  {
869
970
  tester: (0, import_core3.rankWith)(RANK, import_core3.isMultiLineControl),
870
- renderer: (0, import_vue30.markRaw)(NuxtUiTextareaControl)
971
+ renderer: (0, import_vue32.markRaw)(NuxtUiTextareaControl)
871
972
  },
872
973
  {
873
974
  tester: (0, import_core3.rankWith)(RANK, import_core3.isNumberControl),
874
- renderer: (0, import_vue30.markRaw)(NuxtUiNumberControl)
975
+ renderer: (0, import_vue32.markRaw)(NuxtUiNumberControl)
875
976
  },
876
977
  {
877
978
  tester: (0, import_core3.rankWith)(RANK, import_core3.isIntegerControl),
878
- renderer: (0, import_vue30.markRaw)(NuxtUiIntegerControl)
979
+ renderer: (0, import_vue32.markRaw)(NuxtUiIntegerControl)
879
980
  },
880
981
  {
881
982
  tester: (0, import_core3.rankWith)(RANK, import_core3.isBooleanControl),
882
- renderer: (0, import_vue30.markRaw)(NuxtUiBooleanControl)
983
+ renderer: (0, import_vue32.markRaw)(NuxtUiBooleanControl)
984
+ },
985
+ {
986
+ // Multi-enum must outrank generic array renderer and string renderer.
987
+ tester: (0, import_core3.rankWith)(ENUM_RANK, isMultiEnumControl),
988
+ renderer: (0, import_vue32.markRaw)(NuxtUiMultiEnumControl)
883
989
  },
884
990
  {
885
991
  // Enum must outrank the generic string control, otherwise enums can render
886
992
  // as freeform text inputs.
887
993
  tester: (0, import_core3.rankWith)(ENUM_RANK, import_core3.isEnumControl),
888
- renderer: (0, import_vue30.markRaw)(NuxtUiEnumControl)
994
+ renderer: (0, import_vue32.markRaw)(NuxtUiEnumControl)
889
995
  },
890
996
  {
891
997
  tester: (0, import_core3.rankWith)(RANK, import_core3.isStringControl),
892
- renderer: (0, import_vue30.markRaw)(NuxtUiStringControl)
998
+ renderer: (0, import_vue32.markRaw)(NuxtUiStringControl)
893
999
  }
894
1000
  ];
895
1001
  // Annotate the CommonJS export names for ESM import in node: