@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.d.mts +5 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js +242 -163
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +227 -148
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
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
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
if (
|
|
497
|
-
const
|
|
498
|
-
const
|
|
499
|
-
|
|
500
|
-
|
|
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
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
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
|
-
|
|
516
|
+
return;
|
|
527
517
|
}
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
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
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
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
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
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
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
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
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
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
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
584
|
+
resolve: () => {
|
|
585
|
+
setPendingConfirmation(null);
|
|
586
|
+
resolve();
|
|
587
|
+
},
|
|
588
|
+
reject: () => {
|
|
589
|
+
setPendingConfirmation(null);
|
|
590
|
+
reject(new Error("Action cancelled"));
|
|
595
591
|
}
|
|
596
592
|
});
|
|
597
|
-
}
|
|
598
|
-
setLoadingActions((prev) =>
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
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
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
1187
|
+
return (0, import_web18.createComponent)(import_solid_js6.Show, {
|
|
1128
1188
|
get when() {
|
|
1129
1189
|
return rootElement();
|
|
1130
1190
|
},
|
|
1131
|
-
children: (el) => (0,
|
|
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
|
-
|
|
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,
|
|
1226
|
+
return (0, import_web18.createComponent)(VisibilityProvider, {
|
|
1163
1227
|
get children() {
|
|
1164
|
-
return (0,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
1357
|
+
return (0, import_web18.createComponent)(VisibilityProvider, {
|
|
1286
1358
|
get children() {
|
|
1287
|
-
return (0,
|
|
1359
|
+
return (0, import_web18.createComponent)(ValidationProvider, {
|
|
1288
1360
|
get children() {
|
|
1289
|
-
return (0,
|
|
1361
|
+
return (0, import_web18.createComponent)(ActionProvider, {
|
|
1290
1362
|
get handlers() {
|
|
1291
1363
|
return actionHandlers();
|
|
1292
1364
|
},
|
|
1293
1365
|
get children() {
|
|
1294
|
-
return (0,
|
|
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
|
|
1300
|
-
get
|
|
1301
|
-
return
|
|
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
|
|
1308
|
-
return
|
|
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
|
-
})
|
|
1389
|
+
});
|
|
1311
1390
|
}
|
|
1312
1391
|
});
|
|
1313
1392
|
}
|