@json-render/solid 0.17.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -482,146 +482,172 @@ function ActionProvider(props) {
482
482
  };
483
483
  const execute = async (binding) => {
484
484
  const resolved = (0, import_core4.resolveAction)(binding, getSnapshot());
485
- if (resolved.action === "setState" && resolved.params) {
486
- const statePath = resolved.params.statePath;
487
- const value = resolved.params.value;
488
- if (statePath) {
489
- set(statePath, value);
490
- }
491
- return;
492
- }
493
- if (resolved.action === "pushState" && resolved.params) {
494
- const statePath = resolved.params.statePath;
495
- const rawValue = resolved.params.value;
496
- if (statePath) {
497
- const resolvedValue = deepResolveValue(rawValue, get);
498
- const arr = get(statePath) ?? [];
499
- set(statePath, [...arr, resolvedValue]);
500
- const clearStatePath = resolved.params.clearStatePath;
501
- if (clearStatePath) {
502
- set(clearStatePath, "");
485
+ const dispatchId = (0, import_core4.nextActionDispatchId)();
486
+ const dispatchedAt = Date.now();
487
+ (0, import_core4.notifyActionDispatch)({
488
+ id: dispatchId,
489
+ name: resolved.action,
490
+ params: resolved.params,
491
+ at: dispatchedAt
492
+ });
493
+ let __ok = true;
494
+ let __error = void 0;
495
+ try {
496
+ if (resolved.action === "setState" && resolved.params) {
497
+ const statePath = resolved.params.statePath;
498
+ const value = resolved.params.value;
499
+ if (statePath) {
500
+ set(statePath, value);
503
501
  }
502
+ return;
504
503
  }
505
- return;
506
- }
507
- if (resolved.action === "removeState" && resolved.params) {
508
- const statePath = resolved.params.statePath;
509
- const index = resolved.params.index;
510
- if (statePath !== void 0 && index !== void 0) {
511
- const arr = get(statePath) ?? [];
512
- set(statePath, arr.filter((_, i) => i !== index));
513
- }
514
- return;
515
- }
516
- if (resolved.action === "push" && resolved.params) {
517
- const screen = resolved.params.screen;
518
- if (screen) {
519
- const currentScreen = get("/currentScreen");
520
- const navStack = get("/navStack") ?? [];
521
- if (currentScreen) {
522
- set("/navStack", [...navStack, currentScreen]);
523
- } else {
524
- set("/navStack", [...navStack, ""]);
504
+ if (resolved.action === "pushState" && resolved.params) {
505
+ const statePath = resolved.params.statePath;
506
+ const rawValue = resolved.params.value;
507
+ if (statePath) {
508
+ const resolvedValue = deepResolveValue(rawValue, get);
509
+ const arr = get(statePath) ?? [];
510
+ set(statePath, [...arr, resolvedValue]);
511
+ const clearStatePath = resolved.params.clearStatePath;
512
+ if (clearStatePath) {
513
+ set(clearStatePath, "");
514
+ }
525
515
  }
526
- set("/currentScreen", screen);
516
+ return;
527
517
  }
528
- return;
529
- }
530
- if (resolved.action === "pop") {
531
- const navStack = get("/navStack") ?? [];
532
- if (navStack.length > 0) {
533
- const previousScreen = navStack[navStack.length - 1];
534
- set("/navStack", navStack.slice(0, -1));
535
- if (previousScreen) {
536
- set("/currentScreen", previousScreen);
537
- } else {
538
- set("/currentScreen", void 0);
518
+ if (resolved.action === "removeState" && resolved.params) {
519
+ const statePath = resolved.params.statePath;
520
+ const index = resolved.params.index;
521
+ if (statePath !== void 0 && index !== void 0) {
522
+ const arr = get(statePath) ?? [];
523
+ set(statePath, arr.filter((_, i) => i !== index));
539
524
  }
525
+ return;
540
526
  }
541
- return;
542
- }
543
- if (resolved.action === "validateForm") {
544
- const validateAll = validation?.validateAll;
545
- if (!validateAll) {
546
- console.warn("validateForm action was dispatched but no ValidationProvider is connected. Ensure ValidationProvider is rendered inside the provider tree.");
527
+ if (resolved.action === "push" && resolved.params) {
528
+ const screen = resolved.params.screen;
529
+ if (screen) {
530
+ const currentScreen = get("/currentScreen");
531
+ const navStack = get("/navStack") ?? [];
532
+ if (currentScreen) {
533
+ set("/navStack", [...navStack, currentScreen]);
534
+ } else {
535
+ set("/navStack", [...navStack, ""]);
536
+ }
537
+ set("/currentScreen", screen);
538
+ }
547
539
  return;
548
540
  }
549
- const valid = validateAll();
550
- const errors = {};
551
- for (const [path, fs] of Object.entries(validation.fieldStates)) {
552
- if (fs.result && !fs.result.valid) {
553
- errors[path] = fs.result.errors;
541
+ if (resolved.action === "pop") {
542
+ const navStack = get("/navStack") ?? [];
543
+ if (navStack.length > 0) {
544
+ const previousScreen = navStack[navStack.length - 1];
545
+ set("/navStack", navStack.slice(0, -1));
546
+ if (previousScreen) {
547
+ set("/currentScreen", previousScreen);
548
+ } else {
549
+ set("/currentScreen", void 0);
550
+ }
554
551
  }
552
+ return;
555
553
  }
556
- const statePath = resolved.params?.statePath || "/formValidation";
557
- set(statePath, {
558
- valid,
559
- errors
560
- });
561
- return;
562
- }
563
- const handler = handlers()[resolved.action];
564
- if (!handler) {
565
- console.warn(`No handler registered for action: ${resolved.action}`);
566
- return;
567
- }
568
- if (resolved.confirm) {
569
- return new Promise((resolve, reject) => {
570
- setPendingConfirmation({
571
- action: resolved,
572
- handler,
573
- resolve: () => {
574
- setPendingConfirmation(null);
575
- resolve();
576
- },
577
- reject: () => {
578
- setPendingConfirmation(null);
579
- reject(new Error("Action cancelled"));
554
+ if (resolved.action === "validateForm") {
555
+ const validateAll = validation?.validateAll;
556
+ if (!validateAll) {
557
+ console.warn("validateForm action was dispatched but no ValidationProvider is connected. Ensure ValidationProvider is rendered inside the provider tree.");
558
+ return;
559
+ }
560
+ const valid = validateAll();
561
+ const errors = {};
562
+ for (const [path, fs] of Object.entries(validation.fieldStates)) {
563
+ if (fs.result && !fs.result.valid) {
564
+ errors[path] = fs.result.errors;
580
565
  }
566
+ }
567
+ const statePath = resolved.params?.statePath || "/formValidation";
568
+ set(statePath, {
569
+ valid,
570
+ errors
581
571
  });
582
- }).then(async () => {
583
- setLoadingActions((prev) => new Set(prev).add(resolved.action));
584
- try {
585
- await (0, import_core4.executeAction)({
572
+ return;
573
+ }
574
+ const handler = handlers()[resolved.action];
575
+ if (!handler) {
576
+ console.warn(`No handler registered for action: ${resolved.action}`);
577
+ return;
578
+ }
579
+ if (resolved.confirm) {
580
+ return new Promise((resolve, reject) => {
581
+ setPendingConfirmation({
586
582
  action: resolved,
587
583
  handler,
588
- setState: set,
589
- navigate: props.navigate,
590
- executeAction: async (name) => {
591
- const subBinding = {
592
- action: name
593
- };
594
- await execute(subBinding);
584
+ resolve: () => {
585
+ setPendingConfirmation(null);
586
+ resolve();
587
+ },
588
+ reject: () => {
589
+ setPendingConfirmation(null);
590
+ reject(new Error("Action cancelled"));
595
591
  }
596
592
  });
597
- } finally {
598
- setLoadingActions((prev) => {
599
- const next = new Set(prev);
600
- next.delete(resolved.action);
601
- return next;
602
- });
603
- }
604
- });
605
- }
606
- setLoadingActions((prev) => new Set(prev).add(resolved.action));
607
- try {
608
- await (0, import_core4.executeAction)({
609
- action: resolved,
610
- handler,
611
- setState: set,
612
- navigate: props.navigate,
613
- executeAction: async (name) => {
614
- const subBinding = {
615
- action: name
616
- };
617
- await execute(subBinding);
618
- }
619
- });
593
+ }).then(async () => {
594
+ setLoadingActions((prev) => new Set(prev).add(resolved.action));
595
+ try {
596
+ await (0, import_core4.executeAction)({
597
+ action: resolved,
598
+ handler,
599
+ setState: set,
600
+ navigate: props.navigate,
601
+ executeAction: async (name) => {
602
+ const subBinding = {
603
+ action: name
604
+ };
605
+ await execute(subBinding);
606
+ }
607
+ });
608
+ } finally {
609
+ setLoadingActions((prev) => {
610
+ const next = new Set(prev);
611
+ next.delete(resolved.action);
612
+ return next;
613
+ });
614
+ }
615
+ });
616
+ }
617
+ setLoadingActions((prev) => new Set(prev).add(resolved.action));
618
+ try {
619
+ await (0, import_core4.executeAction)({
620
+ action: resolved,
621
+ handler,
622
+ setState: set,
623
+ navigate: props.navigate,
624
+ executeAction: async (name) => {
625
+ const subBinding = {
626
+ action: name
627
+ };
628
+ await execute(subBinding);
629
+ }
630
+ });
631
+ } finally {
632
+ setLoadingActions((prev) => {
633
+ const next = new Set(prev);
634
+ next.delete(resolved.action);
635
+ return next;
636
+ });
637
+ }
638
+ } catch (err) {
639
+ __ok = false;
640
+ __error = err;
641
+ throw err;
620
642
  } finally {
621
- setLoadingActions((prev) => {
622
- const next = new Set(prev);
623
- next.delete(resolved.action);
624
- return next;
643
+ const now = Date.now();
644
+ (0, import_core4.notifyActionSettle)({
645
+ id: dispatchId,
646
+ name: resolved.action,
647
+ ok: __ok,
648
+ at: now,
649
+ durationMs: now - dispatchedAt,
650
+ error: __error
625
651
  });
626
652
  }
627
653
  };
@@ -797,13 +823,28 @@ var import_core8 = require("@json-render/core");
797
823
  // src/renderer.tsx
798
824
  var import_web13 = require("solid-js/web");
799
825
  var import_web14 = require("solid-js/web");
826
+ var import_web15 = require("solid-js/web");
827
+ var import_web16 = require("solid-js/web");
828
+ var import_web17 = require("solid-js/web");
829
+ var import_web18 = require("solid-js/web");
800
830
  var import_solid_js6 = require("solid-js");
801
831
  var import_core6 = require("@json-render/core");
832
+ var _tmpl$2 = /* @__PURE__ */ (0, import_web13.template)(`<span style=display:contents>`);
802
833
  var EMPTY_FUNCTIONS = {};
803
834
  var FunctionsContext = (0, import_solid_js6.createContext)(EMPTY_FUNCTIONS);
804
835
  function useFunctions() {
805
836
  return (0, import_solid_js6.useContext)(FunctionsContext) ?? EMPTY_FUNCTIONS;
806
837
  }
838
+ var DirectivesContext = (0, import_solid_js6.createContext)(void 0);
839
+ function useDirectives() {
840
+ return (0, import_solid_js6.useContext)(DirectivesContext);
841
+ }
842
+ function useDevtoolsActive() {
843
+ const [active, setActive] = (0, import_solid_js6.createSignal)((0, import_core6.isDevtoolsActive)());
844
+ const unsub = (0, import_core6.subscribeDevtoolsActive)(() => setActive((0, import_core6.isDevtoolsActive)()));
845
+ (0, import_solid_js6.onCleanup)(unsub);
846
+ return active;
847
+ }
807
848
  function ElementRenderer(props) {
808
849
  const repeatScope = useRepeatScope();
809
850
  const {
@@ -815,6 +856,7 @@ function ElementRenderer(props) {
815
856
  const stateStore = useStateStore();
816
857
  const getSnapshot = () => stateStore.getSnapshot();
817
858
  const functions = useFunctions();
859
+ const directives = useDirectives();
818
860
  const fullCtx = (0, import_solid_js6.createMemo)(() => {
819
861
  const repeatItem = repeatScope?.item;
820
862
  const repeatIndex = repeatScope?.index;
@@ -832,7 +874,8 @@ function ElementRenderer(props) {
832
874
  ...repeatBasePath !== void 0 ? {
833
875
  repeatBasePath
834
876
  } : {},
835
- functions
877
+ functions,
878
+ directives
836
879
  };
837
880
  });
838
881
  const isVisible = (0, import_solid_js6.createMemo)(() => props.element.visible === void 0 ? true : (0, import_core6.evaluateVisibility)(props.element.visible, fullCtx()));
@@ -929,21 +972,24 @@ function ElementRenderer(props) {
929
972
  props: resolvedProps
930
973
  } : props.element;
931
974
  });
932
- return (0, import_web14.createComponent)(import_solid_js6.Show, {
975
+ return (0, import_web18.createComponent)(import_solid_js6.Show, {
933
976
  get when() {
934
977
  return isVisible();
935
978
  },
936
979
  get children() {
937
- return (0, import_web14.createComponent)(import_solid_js6.ErrorBoundary, {
980
+ return (0, import_web18.createComponent)(import_solid_js6.ErrorBoundary, {
938
981
  fallback: (err) => {
939
982
  console.error(`[json-render] Rendering error in <${props.element.type}>:`, err);
940
983
  return null;
941
984
  },
942
985
  get children() {
943
- return (0, import_web14.createComponent)(ElementRendererContent, {
986
+ return (0, import_web18.createComponent)(ElementRendererContent, {
944
987
  get resolvedElement() {
945
988
  return resolvedElement();
946
989
  },
990
+ get elementKey() {
991
+ return props.elementKey;
992
+ },
947
993
  get spec() {
948
994
  return props.spec;
949
995
  },
@@ -968,8 +1014,9 @@ function ElementRenderer(props) {
968
1014
  });
969
1015
  }
970
1016
  function ElementRendererContent(props) {
1017
+ const devtoolsActive = useDevtoolsActive();
971
1018
  const Comp = () => props.registry[props.resolvedElement.type] ?? props.fallback;
972
- return (0, import_web14.createComponent)(import_solid_js6.Show, {
1019
+ return (0, import_web18.createComponent)(import_solid_js6.Show, {
973
1020
  get when() {
974
1021
  return Comp();
975
1022
  },
@@ -979,7 +1026,7 @@ function ElementRendererContent(props) {
979
1026
  },
980
1027
  children: (ComponentFn) => {
981
1028
  const Component = ComponentFn();
982
- const children = () => props.resolvedElement.repeat ? (0, import_web14.createComponent)(RepeatChildren, {
1029
+ const children = () => props.resolvedElement.repeat ? (0, import_web18.createComponent)(RepeatChildren, {
983
1030
  get element() {
984
1031
  return props.resolvedElement;
985
1032
  },
@@ -995,13 +1042,13 @@ function ElementRendererContent(props) {
995
1042
  get fallback() {
996
1043
  return props.fallback;
997
1044
  }
998
- }) : (0, import_web14.createComponent)(import_solid_js6.For, {
1045
+ }) : (0, import_web18.createComponent)(import_solid_js6.For, {
999
1046
  get each() {
1000
1047
  return props.resolvedElement.children ?? [];
1001
1048
  },
1002
1049
  children: (childKey) => {
1003
1050
  const childElement = () => props.spec.elements[childKey];
1004
- return (0, import_web14.createComponent)(import_solid_js6.Show, {
1051
+ return (0, import_web18.createComponent)(import_solid_js6.Show, {
1005
1052
  get when() {
1006
1053
  return childElement();
1007
1054
  },
@@ -1011,10 +1058,11 @@ function ElementRendererContent(props) {
1011
1058
  }
1012
1059
  return null;
1013
1060
  },
1014
- children: (el) => (0, import_web14.createComponent)(ElementRenderer, {
1061
+ children: (el) => (0, import_web18.createComponent)(ElementRenderer, {
1015
1062
  get element() {
1016
1063
  return el();
1017
1064
  },
1065
+ elementKey: childKey,
1018
1066
  get spec() {
1019
1067
  return props.spec;
1020
1068
  },
@@ -1031,7 +1079,7 @@ function ElementRendererContent(props) {
1031
1079
  });
1032
1080
  }
1033
1081
  });
1034
- return (0, import_web14.createComponent)(Component, {
1082
+ const rendered = (0, import_web18.createComponent)(Component, {
1035
1083
  get element() {
1036
1084
  return props.resolvedElement;
1037
1085
  },
@@ -1051,6 +1099,18 @@ function ElementRendererContent(props) {
1051
1099
  return children();
1052
1100
  }
1053
1101
  });
1102
+ return (0, import_web18.createComponent)(import_solid_js6.Show, {
1103
+ get when() {
1104
+ return (0, import_web17.memo)(() => !!devtoolsActive())() && props.elementKey;
1105
+ },
1106
+ fallback: rendered,
1107
+ get children() {
1108
+ var _el$ = _tmpl$2();
1109
+ (0, import_web16.insert)(_el$, rendered);
1110
+ (0, import_web15.effect)(() => (0, import_web14.setAttribute)(_el$, "data-jr-key", props.elementKey));
1111
+ return _el$;
1112
+ }
1113
+ });
1054
1114
  }
1055
1115
  });
1056
1116
  }
@@ -1059,7 +1119,7 @@ function RepeatChildren(props) {
1059
1119
  const repeat = () => props.element.repeat;
1060
1120
  const statePath = () => repeat().statePath;
1061
1121
  const items = () => (0, import_core6.getByPath)(stateStore.state, statePath()) ?? [];
1062
- return (0, import_web14.createComponent)(import_solid_js6.For, {
1122
+ return (0, import_web18.createComponent)(import_solid_js6.For, {
1063
1123
  get each() {
1064
1124
  return items();
1065
1125
  },
@@ -1068,7 +1128,7 @@ function RepeatChildren(props) {
1068
1128
  const r = repeat();
1069
1129
  return r.key && typeof itemValue === "object" && itemValue !== null ? String(itemValue[r.key] ?? index()) : String(index());
1070
1130
  };
1071
- return (0, import_web14.createComponent)(RepeatScopeProvider, {
1131
+ return (0, import_web18.createComponent)(RepeatScopeProvider, {
1072
1132
  item: itemValue,
1073
1133
  get index() {
1074
1134
  return index();
@@ -1077,13 +1137,13 @@ function RepeatChildren(props) {
1077
1137
  return `${statePath()}/${index()}`;
1078
1138
  },
1079
1139
  get children() {
1080
- return (0, import_web14.createComponent)(import_solid_js6.For, {
1140
+ return (0, import_web18.createComponent)(import_solid_js6.For, {
1081
1141
  get each() {
1082
1142
  return props.element.children ?? [];
1083
1143
  },
1084
1144
  children: (childKey) => {
1085
1145
  const childElement = () => props.spec.elements[childKey];
1086
- return (0, import_web14.createComponent)(import_solid_js6.Show, {
1146
+ return (0, import_web18.createComponent)(import_solid_js6.Show, {
1087
1147
  get when() {
1088
1148
  return childElement();
1089
1149
  },
@@ -1093,7 +1153,7 @@ function RepeatChildren(props) {
1093
1153
  }
1094
1154
  return null;
1095
1155
  },
1096
- children: (el) => (0, import_web14.createComponent)(ElementRenderer, {
1156
+ children: (el) => (0, import_web18.createComponent)(ElementRenderer, {
1097
1157
  get element() {
1098
1158
  return el();
1099
1159
  },
@@ -1124,14 +1184,17 @@ function Renderer(props) {
1124
1184
  if (!spec || !spec.root) return void 0;
1125
1185
  return spec.elements[spec.root];
1126
1186
  });
1127
- return (0, import_web14.createComponent)(import_solid_js6.Show, {
1187
+ return (0, import_web18.createComponent)(import_solid_js6.Show, {
1128
1188
  get when() {
1129
1189
  return rootElement();
1130
1190
  },
1131
- children: (el) => (0, import_web14.createComponent)(ElementRenderer, {
1191
+ children: (el) => (0, import_web18.createComponent)(ElementRenderer, {
1132
1192
  get element() {
1133
1193
  return el();
1134
1194
  },
1195
+ get elementKey() {
1196
+ return props.spec.root;
1197
+ },
1135
1198
  get spec() {
1136
1199
  return props.spec;
1137
1200
  },
@@ -1148,7 +1211,8 @@ function Renderer(props) {
1148
1211
  });
1149
1212
  }
1150
1213
  function JSONUIProvider(props) {
1151
- return (0, import_web14.createComponent)(StateProvider, {
1214
+ const directiveRegistry = (0, import_solid_js6.createMemo)(() => props.directives ? (0, import_core6.createDirectiveRegistry)(props.directives) : void 0);
1215
+ return (0, import_web18.createComponent)(StateProvider, {
1152
1216
  get store() {
1153
1217
  return props.store;
1154
1218
  },
@@ -1159,14 +1223,14 @@ function JSONUIProvider(props) {
1159
1223
  return props.onStateChange;
1160
1224
  },
1161
1225
  get children() {
1162
- return (0, import_web14.createComponent)(VisibilityProvider, {
1226
+ return (0, import_web18.createComponent)(VisibilityProvider, {
1163
1227
  get children() {
1164
- return (0, import_web14.createComponent)(ValidationProvider, {
1228
+ return (0, import_web18.createComponent)(ValidationProvider, {
1165
1229
  get customFunctions() {
1166
1230
  return props.validationFunctions;
1167
1231
  },
1168
1232
  get children() {
1169
- return (0, import_web14.createComponent)(ActionProvider, {
1233
+ return (0, import_web18.createComponent)(ActionProvider, {
1170
1234
  get handlers() {
1171
1235
  return props.handlers;
1172
1236
  },
@@ -1174,12 +1238,19 @@ function JSONUIProvider(props) {
1174
1238
  return props.navigate;
1175
1239
  },
1176
1240
  get children() {
1177
- return (0, import_web14.createComponent)(FunctionsContext.Provider, {
1241
+ return (0, import_web18.createComponent)(FunctionsContext.Provider, {
1178
1242
  get value() {
1179
1243
  return props.functions ?? EMPTY_FUNCTIONS;
1180
1244
  },
1181
1245
  get children() {
1182
- return [(0, import_web13.memo)(() => props.children), (0, import_web14.createComponent)(ConfirmationDialogManager, {})];
1246
+ return (0, import_web18.createComponent)(DirectivesContext.Provider, {
1247
+ get value() {
1248
+ return directiveRegistry();
1249
+ },
1250
+ get children() {
1251
+ return [(0, import_web17.memo)(() => props.children), (0, import_web18.createComponent)(ConfirmationDialogManager, {})];
1252
+ }
1253
+ });
1183
1254
  }
1184
1255
  });
1185
1256
  }
@@ -1197,11 +1268,11 @@ function ConfirmationDialogManager() {
1197
1268
  confirm,
1198
1269
  cancel
1199
1270
  } = useActions();
1200
- return (0, import_web14.createComponent)(import_solid_js6.Show, {
1271
+ return (0, import_web18.createComponent)(import_solid_js6.Show, {
1201
1272
  get when() {
1202
1273
  return pendingConfirmation?.action.confirm;
1203
1274
  },
1204
- children: (confirmConfig) => (0, import_web14.createComponent)(ConfirmDialog, {
1275
+ children: (confirmConfig) => (0, import_web18.createComponent)(ConfirmDialog, {
1205
1276
  get confirm() {
1206
1277
  return confirmConfig();
1207
1278
  },
@@ -1265,13 +1336,14 @@ function defineRegistry(_catalog, options) {
1265
1336
  function createRenderer(catalog, components) {
1266
1337
  const registry = components;
1267
1338
  return function CatalogRenderer(props) {
1339
+ const directiveRegistry = (0, import_solid_js6.createMemo)(() => props.directives ? (0, import_core6.createDirectiveRegistry)(props.directives) : void 0);
1268
1340
  const actionHandlers = () => props.onAction ? new Proxy({}, {
1269
1341
  get: (_target, prop) => {
1270
1342
  return (params) => props.onAction(prop, params);
1271
1343
  },
1272
1344
  has: () => true
1273
1345
  }) : void 0;
1274
- return (0, import_web14.createComponent)(StateProvider, {
1346
+ return (0, import_web18.createComponent)(StateProvider, {
1275
1347
  get store() {
1276
1348
  return props.store;
1277
1349
  },
@@ -1282,32 +1354,39 @@ function createRenderer(catalog, components) {
1282
1354
  return props.onStateChange;
1283
1355
  },
1284
1356
  get children() {
1285
- return (0, import_web14.createComponent)(VisibilityProvider, {
1357
+ return (0, import_web18.createComponent)(VisibilityProvider, {
1286
1358
  get children() {
1287
- return (0, import_web14.createComponent)(ValidationProvider, {
1359
+ return (0, import_web18.createComponent)(ValidationProvider, {
1288
1360
  get children() {
1289
- return (0, import_web14.createComponent)(ActionProvider, {
1361
+ return (0, import_web18.createComponent)(ActionProvider, {
1290
1362
  get handlers() {
1291
1363
  return actionHandlers();
1292
1364
  },
1293
1365
  get children() {
1294
- return (0, import_web14.createComponent)(FunctionsContext.Provider, {
1366
+ return (0, import_web18.createComponent)(FunctionsContext.Provider, {
1295
1367
  get value() {
1296
1368
  return props.functions ?? EMPTY_FUNCTIONS;
1297
1369
  },
1298
1370
  get children() {
1299
- return [(0, import_web14.createComponent)(Renderer, {
1300
- get spec() {
1301
- return props.spec;
1302
- },
1303
- registry,
1304
- get loading() {
1305
- return props.loading;
1371
+ return (0, import_web18.createComponent)(DirectivesContext.Provider, {
1372
+ get value() {
1373
+ return directiveRegistry();
1306
1374
  },
1307
- get fallback() {
1308
- return props.fallback;
1375
+ get children() {
1376
+ return [(0, import_web18.createComponent)(Renderer, {
1377
+ get spec() {
1378
+ return props.spec;
1379
+ },
1380
+ registry,
1381
+ get loading() {
1382
+ return props.loading;
1383
+ },
1384
+ get fallback() {
1385
+ return props.fallback;
1386
+ }
1387
+ }), (0, import_web18.createComponent)(ConfirmationDialogManager, {})];
1309
1388
  }
1310
- }), (0, import_web14.createComponent)(ConfirmationDialogManager, {})];
1389
+ });
1311
1390
  }
1312
1391
  });
1313
1392
  }