@servlyadmin/runtime-core 0.1.27 → 0.1.29
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 +32 -78
- package/dist/index.js +32 -78
- 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,39 +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
|
-
} else if (isDebug && isRootElement) {
|
|
19594
|
-
console.log(`[Servly:attachEventHandlers] ROOT element ${elementId} NOT attaching context props (renderStackSize=${state?.renderingStack?.size})`);
|
|
19595
19578
|
}
|
|
19596
|
-
if (elementState.eventListeners.size > 0) {
|
|
19597
|
-
const
|
|
19598
|
-
|
|
19599
|
-
|
|
19600
|
-
|
|
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
|
+
}
|
|
19601
19589
|
}
|
|
19602
19590
|
}
|
|
19603
19591
|
function detachEventHandlers(elementState) {
|
|
@@ -19776,9 +19764,6 @@ function getValueByPath2(obj, path) {
|
|
|
19776
19764
|
return current;
|
|
19777
19765
|
}
|
|
19778
19766
|
function renderElement(element, tree, context, eventHandlers, elementStates, state, isRootElement = false) {
|
|
19779
|
-
if (element.isComponentView) {
|
|
19780
|
-
console.log("[Servly] Element has isComponentView=true:", element.i, "componentId:", element.componentId);
|
|
19781
|
-
}
|
|
19782
19767
|
if (element.isComponentView) {
|
|
19783
19768
|
return renderComponentViewElement(element, tree, context, eventHandlers, elementStates, state, isRootElement);
|
|
19784
19769
|
}
|
|
@@ -19790,8 +19775,11 @@ function renderElement(element, tree, context, eventHandlers, elementStates, sta
|
|
|
19790
19775
|
}
|
|
19791
19776
|
const elementBindings = element.configuration?.bindings?.inputs;
|
|
19792
19777
|
const resolvedInputs = elementBindings ? resolveComponentViewInputs(elementBindings, context, context.props) : {};
|
|
19778
|
+
const nonFunctionInputs = Object.fromEntries(
|
|
19779
|
+
Object.entries(resolvedInputs).filter(([, v]) => typeof v !== "function")
|
|
19780
|
+
);
|
|
19793
19781
|
const elementContext = {
|
|
19794
|
-
props: { ...context.props, ...
|
|
19782
|
+
props: { ...context.props, ...nonFunctionInputs },
|
|
19795
19783
|
state: context.state,
|
|
19796
19784
|
context: context.context
|
|
19797
19785
|
};
|
|
@@ -19847,45 +19835,24 @@ function renderIconElement(element, context, eventHandlers, elementStates, state
|
|
|
19847
19835
|
return wrapper;
|
|
19848
19836
|
}
|
|
19849
19837
|
function renderComponentViewElement(element, tree, context, eventHandlers, elementStates, state, isRootElement) {
|
|
19850
|
-
console.log("[Servly] renderComponentViewElement called:", {
|
|
19851
|
-
elementId: element.i,
|
|
19852
|
-
componentId: element.componentId,
|
|
19853
|
-
isComponentView: element.isComponentView,
|
|
19854
|
-
hasViews: !!state.views,
|
|
19855
|
-
viewsKeys: state.views ? Array.from(state.views.keys()).slice(0, 5) : []
|
|
19856
|
-
});
|
|
19857
19838
|
const componentViewId = `${element.componentId}-${element.i}`;
|
|
19858
19839
|
if (globalRenderingStack.has(componentViewId)) {
|
|
19859
19840
|
const placeholder = document.createElement("div");
|
|
19860
19841
|
placeholder.className = "border-2 border-red-500 border-dashed p-4 bg-red-50";
|
|
19861
|
-
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>`;
|
|
19862
19843
|
return placeholder;
|
|
19863
19844
|
}
|
|
19864
19845
|
let viewLayout;
|
|
19865
19846
|
if (state.views?.has(element.componentId)) {
|
|
19866
|
-
|
|
19867
|
-
|
|
19868
|
-
console.log("[Servly] Found view in views map:", element.componentId, "layout length:", viewLayout?.length);
|
|
19869
|
-
}
|
|
19870
|
-
if (!viewLayout && state.componentRegistry) {
|
|
19847
|
+
viewLayout = state.views.get(element.componentId)?.layout;
|
|
19848
|
+
} else if (state.componentRegistry) {
|
|
19871
19849
|
const component = state.componentRegistry.get(element.componentId);
|
|
19872
|
-
if (component)
|
|
19873
|
-
viewLayout = component.layout;
|
|
19874
|
-
console.log("[Servly] Found view in registry:", element.componentId);
|
|
19875
|
-
}
|
|
19876
|
-
}
|
|
19877
|
-
if (!viewLayout && state.views === void 0 && state.viewsArray) {
|
|
19878
|
-
const viewsArray = state.viewsArray;
|
|
19879
|
-
const found = viewsArray.find((v) => v.id === element.componentId);
|
|
19880
|
-
if (found) {
|
|
19881
|
-
viewLayout = found.layout;
|
|
19882
|
-
}
|
|
19850
|
+
if (component) viewLayout = component.layout;
|
|
19883
19851
|
}
|
|
19884
19852
|
if (!viewLayout) {
|
|
19885
|
-
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"}`);
|
|
19886
19853
|
const placeholder = document.createElement("div");
|
|
19887
19854
|
placeholder.className = "border-2 border-yellow-500 border-dashed p-4 bg-yellow-50";
|
|
19888
|
-
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>`;
|
|
19889
19856
|
return placeholder;
|
|
19890
19857
|
}
|
|
19891
19858
|
const bindings = element.configuration?.bindings?.inputs || {};
|
|
@@ -19902,11 +19869,6 @@ function renderComponentViewElement(element, tree, context, eventHandlers, eleme
|
|
|
19902
19869
|
wrapper.className = "contents";
|
|
19903
19870
|
const viewTree = buildTree(viewLayout);
|
|
19904
19871
|
const viewRoots = viewLayout.filter((el) => !el.parent || el.parent === null);
|
|
19905
|
-
console.log("[Servly] viewRoots found:", {
|
|
19906
|
-
count: viewRoots.length,
|
|
19907
|
-
rootIds: viewRoots.map((r) => r.i),
|
|
19908
|
-
allElementIds: viewLayout.map((el) => ({ id: el.i, parent: el.parent }))
|
|
19909
|
-
});
|
|
19910
19872
|
const nestedState = {
|
|
19911
19873
|
...state,
|
|
19912
19874
|
elements: viewLayout,
|
|
@@ -19917,7 +19879,6 @@ function renderComponentViewElement(element, tree, context, eventHandlers, eleme
|
|
|
19917
19879
|
};
|
|
19918
19880
|
nestedState.renderingStack.add(componentViewId);
|
|
19919
19881
|
for (const root of viewRoots) {
|
|
19920
|
-
console.log("[Servly] Rendering root element:", root.i, "componentId:", root.componentId, "type:", root.type);
|
|
19921
19882
|
const rootElement = renderElement(
|
|
19922
19883
|
root,
|
|
19923
19884
|
viewTree,
|
|
@@ -19927,7 +19888,6 @@ function renderComponentViewElement(element, tree, context, eventHandlers, eleme
|
|
|
19927
19888
|
nestedState,
|
|
19928
19889
|
true
|
|
19929
19890
|
);
|
|
19930
|
-
console.log("[Servly] Root element rendered:", rootElement?.tagName, "innerHTML length:", rootElement?.innerHTML?.length);
|
|
19931
19891
|
wrapper.appendChild(rootElement);
|
|
19932
19892
|
}
|
|
19933
19893
|
const elementState = {
|
|
@@ -19939,12 +19899,6 @@ function renderComponentViewElement(element, tree, context, eventHandlers, eleme
|
|
|
19939
19899
|
eventListeners: /* @__PURE__ */ new Map()
|
|
19940
19900
|
};
|
|
19941
19901
|
elementStates.set(element.i, elementState);
|
|
19942
|
-
console.log("[Servly] Returning wrapper:", {
|
|
19943
|
-
id: wrapper.id,
|
|
19944
|
-
className: wrapper.className,
|
|
19945
|
-
childCount: wrapper.children.length,
|
|
19946
|
-
innerHTML: wrapper.innerHTML.substring(0, 200)
|
|
19947
|
-
});
|
|
19948
19902
|
return wrapper;
|
|
19949
19903
|
} finally {
|
|
19950
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,39 +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
|
-
} else if (isDebug && isRootElement) {
|
|
2798
|
-
console.log(`[Servly:attachEventHandlers] ROOT element ${elementId} NOT attaching context props (renderStackSize=${state?.renderingStack?.size})`);
|
|
2799
2782
|
}
|
|
2800
|
-
if (elementState.eventListeners.size > 0) {
|
|
2801
|
-
const
|
|
2802
|
-
|
|
2803
|
-
|
|
2804
|
-
|
|
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
|
+
}
|
|
2805
2793
|
}
|
|
2806
2794
|
}
|
|
2807
2795
|
function detachEventHandlers(elementState) {
|
|
@@ -2980,9 +2968,6 @@ function getValueByPath2(obj, path) {
|
|
|
2980
2968
|
return current;
|
|
2981
2969
|
}
|
|
2982
2970
|
function renderElement(element, tree, context, eventHandlers, elementStates, state, isRootElement = false) {
|
|
2983
|
-
if (element.isComponentView) {
|
|
2984
|
-
console.log("[Servly] Element has isComponentView=true:", element.i, "componentId:", element.componentId);
|
|
2985
|
-
}
|
|
2986
2971
|
if (element.isComponentView) {
|
|
2987
2972
|
return renderComponentViewElement(element, tree, context, eventHandlers, elementStates, state, isRootElement);
|
|
2988
2973
|
}
|
|
@@ -2994,8 +2979,11 @@ function renderElement(element, tree, context, eventHandlers, elementStates, sta
|
|
|
2994
2979
|
}
|
|
2995
2980
|
const elementBindings = element.configuration?.bindings?.inputs;
|
|
2996
2981
|
const resolvedInputs = elementBindings ? resolveComponentViewInputs(elementBindings, context, context.props) : {};
|
|
2982
|
+
const nonFunctionInputs = Object.fromEntries(
|
|
2983
|
+
Object.entries(resolvedInputs).filter(([, v]) => typeof v !== "function")
|
|
2984
|
+
);
|
|
2997
2985
|
const elementContext = {
|
|
2998
|
-
props: { ...context.props, ...
|
|
2986
|
+
props: { ...context.props, ...nonFunctionInputs },
|
|
2999
2987
|
state: context.state,
|
|
3000
2988
|
context: context.context
|
|
3001
2989
|
};
|
|
@@ -3051,45 +3039,24 @@ function renderIconElement(element, context, eventHandlers, elementStates, state
|
|
|
3051
3039
|
return wrapper;
|
|
3052
3040
|
}
|
|
3053
3041
|
function renderComponentViewElement(element, tree, context, eventHandlers, elementStates, state, isRootElement) {
|
|
3054
|
-
console.log("[Servly] renderComponentViewElement called:", {
|
|
3055
|
-
elementId: element.i,
|
|
3056
|
-
componentId: element.componentId,
|
|
3057
|
-
isComponentView: element.isComponentView,
|
|
3058
|
-
hasViews: !!state.views,
|
|
3059
|
-
viewsKeys: state.views ? Array.from(state.views.keys()).slice(0, 5) : []
|
|
3060
|
-
});
|
|
3061
3042
|
const componentViewId = `${element.componentId}-${element.i}`;
|
|
3062
3043
|
if (globalRenderingStack.has(componentViewId)) {
|
|
3063
3044
|
const placeholder = document.createElement("div");
|
|
3064
3045
|
placeholder.className = "border-2 border-red-500 border-dashed p-4 bg-red-50";
|
|
3065
|
-
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>`;
|
|
3066
3047
|
return placeholder;
|
|
3067
3048
|
}
|
|
3068
3049
|
let viewLayout;
|
|
3069
3050
|
if (state.views?.has(element.componentId)) {
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
console.log("[Servly] Found view in views map:", element.componentId, "layout length:", viewLayout?.length);
|
|
3073
|
-
}
|
|
3074
|
-
if (!viewLayout && state.componentRegistry) {
|
|
3051
|
+
viewLayout = state.views.get(element.componentId)?.layout;
|
|
3052
|
+
} else if (state.componentRegistry) {
|
|
3075
3053
|
const component = state.componentRegistry.get(element.componentId);
|
|
3076
|
-
if (component)
|
|
3077
|
-
viewLayout = component.layout;
|
|
3078
|
-
console.log("[Servly] Found view in registry:", element.componentId);
|
|
3079
|
-
}
|
|
3080
|
-
}
|
|
3081
|
-
if (!viewLayout && state.views === void 0 && state.viewsArray) {
|
|
3082
|
-
const viewsArray = state.viewsArray;
|
|
3083
|
-
const found = viewsArray.find((v) => v.id === element.componentId);
|
|
3084
|
-
if (found) {
|
|
3085
|
-
viewLayout = found.layout;
|
|
3086
|
-
}
|
|
3054
|
+
if (component) viewLayout = component.layout;
|
|
3087
3055
|
}
|
|
3088
3056
|
if (!viewLayout) {
|
|
3089
|
-
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"}`);
|
|
3090
3057
|
const placeholder = document.createElement("div");
|
|
3091
3058
|
placeholder.className = "border-2 border-yellow-500 border-dashed p-4 bg-yellow-50";
|
|
3092
|
-
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>`;
|
|
3093
3060
|
return placeholder;
|
|
3094
3061
|
}
|
|
3095
3062
|
const bindings = element.configuration?.bindings?.inputs || {};
|
|
@@ -3106,11 +3073,6 @@ function renderComponentViewElement(element, tree, context, eventHandlers, eleme
|
|
|
3106
3073
|
wrapper.className = "contents";
|
|
3107
3074
|
const viewTree = buildTree(viewLayout);
|
|
3108
3075
|
const viewRoots = viewLayout.filter((el) => !el.parent || el.parent === null);
|
|
3109
|
-
console.log("[Servly] viewRoots found:", {
|
|
3110
|
-
count: viewRoots.length,
|
|
3111
|
-
rootIds: viewRoots.map((r) => r.i),
|
|
3112
|
-
allElementIds: viewLayout.map((el) => ({ id: el.i, parent: el.parent }))
|
|
3113
|
-
});
|
|
3114
3076
|
const nestedState = {
|
|
3115
3077
|
...state,
|
|
3116
3078
|
elements: viewLayout,
|
|
@@ -3121,7 +3083,6 @@ function renderComponentViewElement(element, tree, context, eventHandlers, eleme
|
|
|
3121
3083
|
};
|
|
3122
3084
|
nestedState.renderingStack.add(componentViewId);
|
|
3123
3085
|
for (const root of viewRoots) {
|
|
3124
|
-
console.log("[Servly] Rendering root element:", root.i, "componentId:", root.componentId, "type:", root.type);
|
|
3125
3086
|
const rootElement = renderElement(
|
|
3126
3087
|
root,
|
|
3127
3088
|
viewTree,
|
|
@@ -3131,7 +3092,6 @@ function renderComponentViewElement(element, tree, context, eventHandlers, eleme
|
|
|
3131
3092
|
nestedState,
|
|
3132
3093
|
true
|
|
3133
3094
|
);
|
|
3134
|
-
console.log("[Servly] Root element rendered:", rootElement?.tagName, "innerHTML length:", rootElement?.innerHTML?.length);
|
|
3135
3095
|
wrapper.appendChild(rootElement);
|
|
3136
3096
|
}
|
|
3137
3097
|
const elementState = {
|
|
@@ -3143,12 +3103,6 @@ function renderComponentViewElement(element, tree, context, eventHandlers, eleme
|
|
|
3143
3103
|
eventListeners: /* @__PURE__ */ new Map()
|
|
3144
3104
|
};
|
|
3145
3105
|
elementStates.set(element.i, elementState);
|
|
3146
|
-
console.log("[Servly] Returning wrapper:", {
|
|
3147
|
-
id: wrapper.id,
|
|
3148
|
-
className: wrapper.className,
|
|
3149
|
-
childCount: wrapper.children.length,
|
|
3150
|
-
innerHTML: wrapper.innerHTML.substring(0, 200)
|
|
3151
|
-
});
|
|
3152
3106
|
return wrapper;
|
|
3153
3107
|
} finally {
|
|
3154
3108
|
globalRenderingStack.delete(componentViewId);
|