@servlyadmin/runtime-core 0.1.26 → 0.1.28
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 +33 -73
- package/dist/index.js +33 -73
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -19524,14 +19524,8 @@ function resolveFunctionBinding(binding, context) {
|
|
|
19524
19524
|
}
|
|
19525
19525
|
function attachEventHandlers(domElement, element, eventHandlers, context, elementState, isRootElement = false, state) {
|
|
19526
19526
|
const elementId = element.i;
|
|
19527
|
-
|
|
19528
|
-
|
|
19529
|
-
console.log(`[Servly:attachEventHandlers] Element: ${elementId}, isRoot: ${isRootElement}, renderStackSize: ${state?.renderingStack?.size}`);
|
|
19530
|
-
}
|
|
19531
|
-
if (eventHandlers && eventHandlers[elementId]) {
|
|
19532
|
-
const handlers = eventHandlers[elementId];
|
|
19533
|
-
if (isDebug) console.log(`[Servly:attachEventHandlers] Explicit handlers for ${elementId}:`, Object.keys(handlers));
|
|
19534
|
-
for (const [eventName, handler] of Object.entries(handlers)) {
|
|
19527
|
+
if (eventHandlers?.[elementId]) {
|
|
19528
|
+
for (const [eventName, handler] of Object.entries(eventHandlers[elementId])) {
|
|
19535
19529
|
const domEventName = eventName.replace(/^on/, "").toLowerCase();
|
|
19536
19530
|
elementState.eventListeners.set(domEventName, handler);
|
|
19537
19531
|
domElement.addEventListener(domEventName, handler);
|
|
@@ -19540,9 +19534,8 @@ function attachEventHandlers(domElement, element, eventHandlers, context, elemen
|
|
|
19540
19534
|
const config = element.configuration || {};
|
|
19541
19535
|
for (const eventPropName of Object.keys(EVENT_HANDLERS)) {
|
|
19542
19536
|
const handlerConfig = config[eventPropName];
|
|
19543
|
-
if (handlerConfig
|
|
19537
|
+
if (handlerConfig?.plugins?.length) {
|
|
19544
19538
|
const domEventName = toDomEventName(eventPropName);
|
|
19545
|
-
if (isDebug) console.log(`[Servly:attachEventHandlers] Servly plugin handler ${eventPropName} on ${elementId}`);
|
|
19546
19539
|
if (!elementState.eventListeners.has(domEventName)) {
|
|
19547
19540
|
if (state?.eventSystem) {
|
|
19548
19541
|
const handler = state.eventSystem.createHandler(elementId, handlerConfig, context);
|
|
@@ -19552,7 +19545,6 @@ function attachEventHandlers(domElement, element, eventHandlers, context, elemen
|
|
|
19552
19545
|
const handler = (e) => {
|
|
19553
19546
|
if (handlerConfig.preventDefault) e.preventDefault();
|
|
19554
19547
|
if (handlerConfig.stopPropagation) e.stopPropagation();
|
|
19555
|
-
console.log(`[Servly] Event ${eventPropName} triggered on ${elementId}`, handlerConfig.plugins);
|
|
19556
19548
|
};
|
|
19557
19549
|
elementState.eventListeners.set(domEventName, handler);
|
|
19558
19550
|
domElement.addEventListener(domEventName, handler);
|
|
@@ -19565,33 +19557,35 @@ function attachEventHandlers(domElement, element, eventHandlers, context, elemen
|
|
|
19565
19557
|
for (const [propName, binding] of Object.entries(bindings)) {
|
|
19566
19558
|
if (propName.startsWith("on") && propName.length > 2) {
|
|
19567
19559
|
const handler = resolveFunctionBinding(binding, context);
|
|
19568
|
-
if (handler) {
|
|
19560
|
+
if (handler && !elementState.eventListeners.has(propName.slice(2).toLowerCase())) {
|
|
19569
19561
|
const domEventName = propName.slice(2).toLowerCase();
|
|
19570
|
-
|
|
19571
|
-
|
|
19572
|
-
elementState.eventListeners.set(domEventName, handler);
|
|
19573
|
-
domElement.addEventListener(domEventName, handler);
|
|
19574
|
-
}
|
|
19562
|
+
elementState.eventListeners.set(domEventName, handler);
|
|
19563
|
+
domElement.addEventListener(domEventName, handler);
|
|
19575
19564
|
}
|
|
19576
19565
|
}
|
|
19577
19566
|
}
|
|
19578
19567
|
}
|
|
19579
19568
|
if (isRootElement && context.props && state?.renderingStack?.size === 0) {
|
|
19580
|
-
const
|
|
19581
|
-
|
|
19582
|
-
|
|
19583
|
-
|
|
19584
|
-
|
|
19585
|
-
|
|
19586
|
-
|
|
19587
|
-
const handler = value;
|
|
19588
|
-
elementState.eventListeners.set(domEventName, handler);
|
|
19589
|
-
domElement.addEventListener(domEventName, handler);
|
|
19590
|
-
if (isDebug) console.log(`[Servly:attachEventHandlers] Attached ${propName} to root element ${elementId}`);
|
|
19569
|
+
for (const [propName, value] of Object.entries(context.props)) {
|
|
19570
|
+
if (propName.startsWith("on") && typeof value === "function") {
|
|
19571
|
+
const domEventName = propName.slice(2).toLowerCase();
|
|
19572
|
+
if (!elementState.eventListeners.has(domEventName)) {
|
|
19573
|
+
elementState.eventListeners.set(domEventName, value);
|
|
19574
|
+
domElement.addEventListener(domEventName, value);
|
|
19575
|
+
}
|
|
19591
19576
|
}
|
|
19592
19577
|
}
|
|
19593
|
-
}
|
|
19594
|
-
|
|
19578
|
+
}
|
|
19579
|
+
if (!isRootElement && elementState.eventListeners.size > 0) {
|
|
19580
|
+
for (const [eventName, originalHandler] of elementState.eventListeners) {
|
|
19581
|
+
const wrappedHandler = (e) => {
|
|
19582
|
+
e.stopPropagation();
|
|
19583
|
+
return originalHandler(e);
|
|
19584
|
+
};
|
|
19585
|
+
domElement.removeEventListener(eventName, originalHandler);
|
|
19586
|
+
domElement.addEventListener(eventName, wrappedHandler);
|
|
19587
|
+
elementState.eventListeners.set(eventName, wrappedHandler);
|
|
19588
|
+
}
|
|
19595
19589
|
}
|
|
19596
19590
|
}
|
|
19597
19591
|
function detachEventHandlers(elementState) {
|
|
@@ -19770,9 +19764,6 @@ function getValueByPath2(obj, path) {
|
|
|
19770
19764
|
return current;
|
|
19771
19765
|
}
|
|
19772
19766
|
function renderElement(element, tree, context, eventHandlers, elementStates, state, isRootElement = false) {
|
|
19773
|
-
if (element.isComponentView) {
|
|
19774
|
-
console.log("[Servly] Element has isComponentView=true:", element.i, "componentId:", element.componentId);
|
|
19775
|
-
}
|
|
19776
19767
|
if (element.isComponentView) {
|
|
19777
19768
|
return renderComponentViewElement(element, tree, context, eventHandlers, elementStates, state, isRootElement);
|
|
19778
19769
|
}
|
|
@@ -19784,8 +19775,11 @@ function renderElement(element, tree, context, eventHandlers, elementStates, sta
|
|
|
19784
19775
|
}
|
|
19785
19776
|
const elementBindings = element.configuration?.bindings?.inputs;
|
|
19786
19777
|
const resolvedInputs = elementBindings ? resolveComponentViewInputs(elementBindings, context, context.props) : {};
|
|
19778
|
+
const nonFunctionInputs = Object.fromEntries(
|
|
19779
|
+
Object.entries(resolvedInputs).filter(([, v]) => typeof v !== "function")
|
|
19780
|
+
);
|
|
19787
19781
|
const elementContext = {
|
|
19788
|
-
props: { ...context.props, ...
|
|
19782
|
+
props: { ...context.props, ...nonFunctionInputs },
|
|
19789
19783
|
state: context.state,
|
|
19790
19784
|
context: context.context
|
|
19791
19785
|
};
|
|
@@ -19841,45 +19835,24 @@ function renderIconElement(element, context, eventHandlers, elementStates, state
|
|
|
19841
19835
|
return wrapper;
|
|
19842
19836
|
}
|
|
19843
19837
|
function renderComponentViewElement(element, tree, context, eventHandlers, elementStates, state, isRootElement) {
|
|
19844
|
-
console.log("[Servly] renderComponentViewElement called:", {
|
|
19845
|
-
elementId: element.i,
|
|
19846
|
-
componentId: element.componentId,
|
|
19847
|
-
isComponentView: element.isComponentView,
|
|
19848
|
-
hasViews: !!state.views,
|
|
19849
|
-
viewsKeys: state.views ? Array.from(state.views.keys()).slice(0, 5) : []
|
|
19850
|
-
});
|
|
19851
19838
|
const componentViewId = `${element.componentId}-${element.i}`;
|
|
19852
19839
|
if (globalRenderingStack.has(componentViewId)) {
|
|
19853
19840
|
const placeholder = document.createElement("div");
|
|
19854
19841
|
placeholder.className = "border-2 border-red-500 border-dashed p-4 bg-red-50";
|
|
19855
|
-
placeholder.innerHTML = `<p class="text-red-600 text-sm"
|
|
19842
|
+
placeholder.innerHTML = `<p class="text-red-600 text-sm">\u{1F504} Recursive: ${element.componentId}</p>`;
|
|
19856
19843
|
return placeholder;
|
|
19857
19844
|
}
|
|
19858
19845
|
let viewLayout;
|
|
19859
19846
|
if (state.views?.has(element.componentId)) {
|
|
19860
|
-
|
|
19861
|
-
|
|
19862
|
-
console.log("[Servly] Found view in views map:", element.componentId, "layout length:", viewLayout?.length);
|
|
19863
|
-
}
|
|
19864
|
-
if (!viewLayout && state.componentRegistry) {
|
|
19847
|
+
viewLayout = state.views.get(element.componentId)?.layout;
|
|
19848
|
+
} else if (state.componentRegistry) {
|
|
19865
19849
|
const component = state.componentRegistry.get(element.componentId);
|
|
19866
|
-
if (component)
|
|
19867
|
-
viewLayout = component.layout;
|
|
19868
|
-
console.log("[Servly] Found view in registry:", element.componentId);
|
|
19869
|
-
}
|
|
19870
|
-
}
|
|
19871
|
-
if (!viewLayout && state.views === void 0 && state.viewsArray) {
|
|
19872
|
-
const viewsArray = state.viewsArray;
|
|
19873
|
-
const found = viewsArray.find((v) => v.id === element.componentId);
|
|
19874
|
-
if (found) {
|
|
19875
|
-
viewLayout = found.layout;
|
|
19876
|
-
}
|
|
19850
|
+
if (component) viewLayout = component.layout;
|
|
19877
19851
|
}
|
|
19878
19852
|
if (!viewLayout) {
|
|
19879
|
-
console.warn(`[Servly] Component not found: ${element.componentId}. Element ID: ${element.i}. Available in views: ${state.views ? Array.from(state.views.keys()).join(", ") : "none"}. Registry has: ${state.componentRegistry?.has(element.componentId) ? "yes" : "no"}`);
|
|
19880
19853
|
const placeholder = document.createElement("div");
|
|
19881
19854
|
placeholder.className = "border-2 border-yellow-500 border-dashed p-4 bg-yellow-50";
|
|
19882
|
-
placeholder.innerHTML = `<p class="text-yellow-600 text-sm"
|
|
19855
|
+
placeholder.innerHTML = `<p class="text-yellow-600 text-sm">\u26A0\uFE0F Not found: ${element.componentId}</p>`;
|
|
19883
19856
|
return placeholder;
|
|
19884
19857
|
}
|
|
19885
19858
|
const bindings = element.configuration?.bindings?.inputs || {};
|
|
@@ -19896,11 +19869,6 @@ function renderComponentViewElement(element, tree, context, eventHandlers, eleme
|
|
|
19896
19869
|
wrapper.className = "contents";
|
|
19897
19870
|
const viewTree = buildTree(viewLayout);
|
|
19898
19871
|
const viewRoots = viewLayout.filter((el) => !el.parent || el.parent === null);
|
|
19899
|
-
console.log("[Servly] viewRoots found:", {
|
|
19900
|
-
count: viewRoots.length,
|
|
19901
|
-
rootIds: viewRoots.map((r) => r.i),
|
|
19902
|
-
allElementIds: viewLayout.map((el) => ({ id: el.i, parent: el.parent }))
|
|
19903
|
-
});
|
|
19904
19872
|
const nestedState = {
|
|
19905
19873
|
...state,
|
|
19906
19874
|
elements: viewLayout,
|
|
@@ -19911,7 +19879,6 @@ function renderComponentViewElement(element, tree, context, eventHandlers, eleme
|
|
|
19911
19879
|
};
|
|
19912
19880
|
nestedState.renderingStack.add(componentViewId);
|
|
19913
19881
|
for (const root of viewRoots) {
|
|
19914
|
-
console.log("[Servly] Rendering root element:", root.i, "componentId:", root.componentId, "type:", root.type);
|
|
19915
19882
|
const rootElement = renderElement(
|
|
19916
19883
|
root,
|
|
19917
19884
|
viewTree,
|
|
@@ -19921,7 +19888,6 @@ function renderComponentViewElement(element, tree, context, eventHandlers, eleme
|
|
|
19921
19888
|
nestedState,
|
|
19922
19889
|
true
|
|
19923
19890
|
);
|
|
19924
|
-
console.log("[Servly] Root element rendered:", rootElement?.tagName, "innerHTML length:", rootElement?.innerHTML?.length);
|
|
19925
19891
|
wrapper.appendChild(rootElement);
|
|
19926
19892
|
}
|
|
19927
19893
|
const elementState = {
|
|
@@ -19933,12 +19899,6 @@ function renderComponentViewElement(element, tree, context, eventHandlers, eleme
|
|
|
19933
19899
|
eventListeners: /* @__PURE__ */ new Map()
|
|
19934
19900
|
};
|
|
19935
19901
|
elementStates.set(element.i, elementState);
|
|
19936
|
-
console.log("[Servly] Returning wrapper:", {
|
|
19937
|
-
id: wrapper.id,
|
|
19938
|
-
className: wrapper.className,
|
|
19939
|
-
childCount: wrapper.children.length,
|
|
19940
|
-
innerHTML: wrapper.innerHTML.substring(0, 200)
|
|
19941
|
-
});
|
|
19942
19902
|
return wrapper;
|
|
19943
19903
|
} finally {
|
|
19944
19904
|
globalRenderingStack.delete(componentViewId);
|
package/dist/index.js
CHANGED
|
@@ -2728,14 +2728,8 @@ function resolveFunctionBinding(binding, context) {
|
|
|
2728
2728
|
}
|
|
2729
2729
|
function attachEventHandlers(domElement, element, eventHandlers, context, elementState, isRootElement = false, state) {
|
|
2730
2730
|
const elementId = element.i;
|
|
2731
|
-
|
|
2732
|
-
|
|
2733
|
-
console.log(`[Servly:attachEventHandlers] Element: ${elementId}, isRoot: ${isRootElement}, renderStackSize: ${state?.renderingStack?.size}`);
|
|
2734
|
-
}
|
|
2735
|
-
if (eventHandlers && eventHandlers[elementId]) {
|
|
2736
|
-
const handlers = eventHandlers[elementId];
|
|
2737
|
-
if (isDebug) console.log(`[Servly:attachEventHandlers] Explicit handlers for ${elementId}:`, Object.keys(handlers));
|
|
2738
|
-
for (const [eventName, handler] of Object.entries(handlers)) {
|
|
2731
|
+
if (eventHandlers?.[elementId]) {
|
|
2732
|
+
for (const [eventName, handler] of Object.entries(eventHandlers[elementId])) {
|
|
2739
2733
|
const domEventName = eventName.replace(/^on/, "").toLowerCase();
|
|
2740
2734
|
elementState.eventListeners.set(domEventName, handler);
|
|
2741
2735
|
domElement.addEventListener(domEventName, handler);
|
|
@@ -2744,9 +2738,8 @@ function attachEventHandlers(domElement, element, eventHandlers, context, elemen
|
|
|
2744
2738
|
const config = element.configuration || {};
|
|
2745
2739
|
for (const eventPropName of Object.keys(EVENT_HANDLERS)) {
|
|
2746
2740
|
const handlerConfig = config[eventPropName];
|
|
2747
|
-
if (handlerConfig
|
|
2741
|
+
if (handlerConfig?.plugins?.length) {
|
|
2748
2742
|
const domEventName = toDomEventName(eventPropName);
|
|
2749
|
-
if (isDebug) console.log(`[Servly:attachEventHandlers] Servly plugin handler ${eventPropName} on ${elementId}`);
|
|
2750
2743
|
if (!elementState.eventListeners.has(domEventName)) {
|
|
2751
2744
|
if (state?.eventSystem) {
|
|
2752
2745
|
const handler = state.eventSystem.createHandler(elementId, handlerConfig, context);
|
|
@@ -2756,7 +2749,6 @@ function attachEventHandlers(domElement, element, eventHandlers, context, elemen
|
|
|
2756
2749
|
const handler = (e) => {
|
|
2757
2750
|
if (handlerConfig.preventDefault) e.preventDefault();
|
|
2758
2751
|
if (handlerConfig.stopPropagation) e.stopPropagation();
|
|
2759
|
-
console.log(`[Servly] Event ${eventPropName} triggered on ${elementId}`, handlerConfig.plugins);
|
|
2760
2752
|
};
|
|
2761
2753
|
elementState.eventListeners.set(domEventName, handler);
|
|
2762
2754
|
domElement.addEventListener(domEventName, handler);
|
|
@@ -2769,33 +2761,35 @@ function attachEventHandlers(domElement, element, eventHandlers, context, elemen
|
|
|
2769
2761
|
for (const [propName, binding] of Object.entries(bindings)) {
|
|
2770
2762
|
if (propName.startsWith("on") && propName.length > 2) {
|
|
2771
2763
|
const handler = resolveFunctionBinding(binding, context);
|
|
2772
|
-
if (handler) {
|
|
2764
|
+
if (handler && !elementState.eventListeners.has(propName.slice(2).toLowerCase())) {
|
|
2773
2765
|
const domEventName = propName.slice(2).toLowerCase();
|
|
2774
|
-
|
|
2775
|
-
|
|
2776
|
-
elementState.eventListeners.set(domEventName, handler);
|
|
2777
|
-
domElement.addEventListener(domEventName, handler);
|
|
2778
|
-
}
|
|
2766
|
+
elementState.eventListeners.set(domEventName, handler);
|
|
2767
|
+
domElement.addEventListener(domEventName, handler);
|
|
2779
2768
|
}
|
|
2780
2769
|
}
|
|
2781
2770
|
}
|
|
2782
2771
|
}
|
|
2783
2772
|
if (isRootElement && context.props && state?.renderingStack?.size === 0) {
|
|
2784
|
-
const
|
|
2785
|
-
|
|
2786
|
-
|
|
2787
|
-
|
|
2788
|
-
|
|
2789
|
-
|
|
2790
|
-
|
|
2791
|
-
const handler = value;
|
|
2792
|
-
elementState.eventListeners.set(domEventName, handler);
|
|
2793
|
-
domElement.addEventListener(domEventName, handler);
|
|
2794
|
-
if (isDebug) console.log(`[Servly:attachEventHandlers] Attached ${propName} to root element ${elementId}`);
|
|
2773
|
+
for (const [propName, value] of Object.entries(context.props)) {
|
|
2774
|
+
if (propName.startsWith("on") && typeof value === "function") {
|
|
2775
|
+
const domEventName = propName.slice(2).toLowerCase();
|
|
2776
|
+
if (!elementState.eventListeners.has(domEventName)) {
|
|
2777
|
+
elementState.eventListeners.set(domEventName, value);
|
|
2778
|
+
domElement.addEventListener(domEventName, value);
|
|
2779
|
+
}
|
|
2795
2780
|
}
|
|
2796
2781
|
}
|
|
2797
|
-
}
|
|
2798
|
-
|
|
2782
|
+
}
|
|
2783
|
+
if (!isRootElement && elementState.eventListeners.size > 0) {
|
|
2784
|
+
for (const [eventName, originalHandler] of elementState.eventListeners) {
|
|
2785
|
+
const wrappedHandler = (e) => {
|
|
2786
|
+
e.stopPropagation();
|
|
2787
|
+
return originalHandler(e);
|
|
2788
|
+
};
|
|
2789
|
+
domElement.removeEventListener(eventName, originalHandler);
|
|
2790
|
+
domElement.addEventListener(eventName, wrappedHandler);
|
|
2791
|
+
elementState.eventListeners.set(eventName, wrappedHandler);
|
|
2792
|
+
}
|
|
2799
2793
|
}
|
|
2800
2794
|
}
|
|
2801
2795
|
function detachEventHandlers(elementState) {
|
|
@@ -2974,9 +2968,6 @@ function getValueByPath2(obj, path) {
|
|
|
2974
2968
|
return current;
|
|
2975
2969
|
}
|
|
2976
2970
|
function renderElement(element, tree, context, eventHandlers, elementStates, state, isRootElement = false) {
|
|
2977
|
-
if (element.isComponentView) {
|
|
2978
|
-
console.log("[Servly] Element has isComponentView=true:", element.i, "componentId:", element.componentId);
|
|
2979
|
-
}
|
|
2980
2971
|
if (element.isComponentView) {
|
|
2981
2972
|
return renderComponentViewElement(element, tree, context, eventHandlers, elementStates, state, isRootElement);
|
|
2982
2973
|
}
|
|
@@ -2988,8 +2979,11 @@ function renderElement(element, tree, context, eventHandlers, elementStates, sta
|
|
|
2988
2979
|
}
|
|
2989
2980
|
const elementBindings = element.configuration?.bindings?.inputs;
|
|
2990
2981
|
const resolvedInputs = elementBindings ? resolveComponentViewInputs(elementBindings, context, context.props) : {};
|
|
2982
|
+
const nonFunctionInputs = Object.fromEntries(
|
|
2983
|
+
Object.entries(resolvedInputs).filter(([, v]) => typeof v !== "function")
|
|
2984
|
+
);
|
|
2991
2985
|
const elementContext = {
|
|
2992
|
-
props: { ...context.props, ...
|
|
2986
|
+
props: { ...context.props, ...nonFunctionInputs },
|
|
2993
2987
|
state: context.state,
|
|
2994
2988
|
context: context.context
|
|
2995
2989
|
};
|
|
@@ -3045,45 +3039,24 @@ function renderIconElement(element, context, eventHandlers, elementStates, state
|
|
|
3045
3039
|
return wrapper;
|
|
3046
3040
|
}
|
|
3047
3041
|
function renderComponentViewElement(element, tree, context, eventHandlers, elementStates, state, isRootElement) {
|
|
3048
|
-
console.log("[Servly] renderComponentViewElement called:", {
|
|
3049
|
-
elementId: element.i,
|
|
3050
|
-
componentId: element.componentId,
|
|
3051
|
-
isComponentView: element.isComponentView,
|
|
3052
|
-
hasViews: !!state.views,
|
|
3053
|
-
viewsKeys: state.views ? Array.from(state.views.keys()).slice(0, 5) : []
|
|
3054
|
-
});
|
|
3055
3042
|
const componentViewId = `${element.componentId}-${element.i}`;
|
|
3056
3043
|
if (globalRenderingStack.has(componentViewId)) {
|
|
3057
3044
|
const placeholder = document.createElement("div");
|
|
3058
3045
|
placeholder.className = "border-2 border-red-500 border-dashed p-4 bg-red-50";
|
|
3059
|
-
placeholder.innerHTML = `<p class="text-red-600 text-sm"
|
|
3046
|
+
placeholder.innerHTML = `<p class="text-red-600 text-sm">\u{1F504} Recursive: ${element.componentId}</p>`;
|
|
3060
3047
|
return placeholder;
|
|
3061
3048
|
}
|
|
3062
3049
|
let viewLayout;
|
|
3063
3050
|
if (state.views?.has(element.componentId)) {
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
console.log("[Servly] Found view in views map:", element.componentId, "layout length:", viewLayout?.length);
|
|
3067
|
-
}
|
|
3068
|
-
if (!viewLayout && state.componentRegistry) {
|
|
3051
|
+
viewLayout = state.views.get(element.componentId)?.layout;
|
|
3052
|
+
} else if (state.componentRegistry) {
|
|
3069
3053
|
const component = state.componentRegistry.get(element.componentId);
|
|
3070
|
-
if (component)
|
|
3071
|
-
viewLayout = component.layout;
|
|
3072
|
-
console.log("[Servly] Found view in registry:", element.componentId);
|
|
3073
|
-
}
|
|
3074
|
-
}
|
|
3075
|
-
if (!viewLayout && state.views === void 0 && state.viewsArray) {
|
|
3076
|
-
const viewsArray = state.viewsArray;
|
|
3077
|
-
const found = viewsArray.find((v) => v.id === element.componentId);
|
|
3078
|
-
if (found) {
|
|
3079
|
-
viewLayout = found.layout;
|
|
3080
|
-
}
|
|
3054
|
+
if (component) viewLayout = component.layout;
|
|
3081
3055
|
}
|
|
3082
3056
|
if (!viewLayout) {
|
|
3083
|
-
console.warn(`[Servly] Component not found: ${element.componentId}. Element ID: ${element.i}. Available in views: ${state.views ? Array.from(state.views.keys()).join(", ") : "none"}. Registry has: ${state.componentRegistry?.has(element.componentId) ? "yes" : "no"}`);
|
|
3084
3057
|
const placeholder = document.createElement("div");
|
|
3085
3058
|
placeholder.className = "border-2 border-yellow-500 border-dashed p-4 bg-yellow-50";
|
|
3086
|
-
placeholder.innerHTML = `<p class="text-yellow-600 text-sm"
|
|
3059
|
+
placeholder.innerHTML = `<p class="text-yellow-600 text-sm">\u26A0\uFE0F Not found: ${element.componentId}</p>`;
|
|
3087
3060
|
return placeholder;
|
|
3088
3061
|
}
|
|
3089
3062
|
const bindings = element.configuration?.bindings?.inputs || {};
|
|
@@ -3100,11 +3073,6 @@ function renderComponentViewElement(element, tree, context, eventHandlers, eleme
|
|
|
3100
3073
|
wrapper.className = "contents";
|
|
3101
3074
|
const viewTree = buildTree(viewLayout);
|
|
3102
3075
|
const viewRoots = viewLayout.filter((el) => !el.parent || el.parent === null);
|
|
3103
|
-
console.log("[Servly] viewRoots found:", {
|
|
3104
|
-
count: viewRoots.length,
|
|
3105
|
-
rootIds: viewRoots.map((r) => r.i),
|
|
3106
|
-
allElementIds: viewLayout.map((el) => ({ id: el.i, parent: el.parent }))
|
|
3107
|
-
});
|
|
3108
3076
|
const nestedState = {
|
|
3109
3077
|
...state,
|
|
3110
3078
|
elements: viewLayout,
|
|
@@ -3115,7 +3083,6 @@ function renderComponentViewElement(element, tree, context, eventHandlers, eleme
|
|
|
3115
3083
|
};
|
|
3116
3084
|
nestedState.renderingStack.add(componentViewId);
|
|
3117
3085
|
for (const root of viewRoots) {
|
|
3118
|
-
console.log("[Servly] Rendering root element:", root.i, "componentId:", root.componentId, "type:", root.type);
|
|
3119
3086
|
const rootElement = renderElement(
|
|
3120
3087
|
root,
|
|
3121
3088
|
viewTree,
|
|
@@ -3125,7 +3092,6 @@ function renderComponentViewElement(element, tree, context, eventHandlers, eleme
|
|
|
3125
3092
|
nestedState,
|
|
3126
3093
|
true
|
|
3127
3094
|
);
|
|
3128
|
-
console.log("[Servly] Root element rendered:", rootElement?.tagName, "innerHTML length:", rootElement?.innerHTML?.length);
|
|
3129
3095
|
wrapper.appendChild(rootElement);
|
|
3130
3096
|
}
|
|
3131
3097
|
const elementState = {
|
|
@@ -3137,12 +3103,6 @@ function renderComponentViewElement(element, tree, context, eventHandlers, eleme
|
|
|
3137
3103
|
eventListeners: /* @__PURE__ */ new Map()
|
|
3138
3104
|
};
|
|
3139
3105
|
elementStates.set(element.i, elementState);
|
|
3140
|
-
console.log("[Servly] Returning wrapper:", {
|
|
3141
|
-
id: wrapper.id,
|
|
3142
|
-
className: wrapper.className,
|
|
3143
|
-
childCount: wrapper.children.length,
|
|
3144
|
-
innerHTML: wrapper.innerHTML.substring(0, 200)
|
|
3145
|
-
});
|
|
3146
3106
|
return wrapper;
|
|
3147
3107
|
} finally {
|
|
3148
3108
|
globalRenderingStack.delete(componentViewId);
|