I'm hitting a call stack error when running the telerik Web designer in my app, put a few checks to ensure no double init but anyhow here's my init. No backend failures identified. The errors stem from the designer initializing all the controls (dropdowns, fields etc) at this point in the designers internal code.
Uncaught (in promise) RangeError: Maximum call stack size exceeded
at init.wrap (webReportDesigner.kendo-19.3.25.1111.min.js:16:433731)
at webReportDesigner.kendo-19.3.25.1111.min.js:16:432594
at Array.forEach (<anonymous>)export const ReportDesigner = (): React.ReactElement => {
const initializedRef = React.useRef(false)
useEffect(() => {
if (initializedRef.current) return
// Make jQuery global for legacy scripts
//@ts-expect-error: TS2339 (TS) Property '$' does not exist on type 'Window & typeof globalThis'.
window.$ = window.$ || $
//@ts-expect-error: TS2339 (TS) Property 'jQuery' does not exist on type 'Window & typeof globalThis'.
window.jQuery = window.jQuery || $
// Ensure Kendo exists globally
const kendo = window.kendo
if (!kendo) {
console.error("Kendo UI must be loaded globally before initializing the designer!")
return
}
const initDesigner = () => {
if ($("#reportDesigner").data("telerik_WebReportDesigner")) {
return // already initialized
}
//@ts-expect-error: TS2339 because Property 'telerik_WebReportDesigner' does not exist on type 'JQuery<HTMLElement>'.
($("#reportDesigner")).telerik_WebReportDesigner({
serviceUrl: "/api/ReportDesigner",
})
}
// Load Telerik designer scripts sequentially
const loadDesignerScripts = (): Promise<void> => {
return new Promise((resolve, reject) => {
if (document.querySelector('script[src*="webReportDesigner-19.3"]')) {
resolve()
return
}
const coreScript = document.createElement("script")
coreScript.src = "/telerik/webReportDesigner-19.3.25.1111.js"
coreScript.onload = () => {
const kendoScript = document.createElement("script")
kendoScript.src = "/telerik/webReportDesigner.kendo-19.3.25.1111.min.js"
kendoScript.onload = () => {
// Plugin should now exist
//@ts-expect-error: TS2339 (TS) Property 'telerik_WebReportDesigner' does not exist on type 'JQuery<HTMLElement>'.
if (!$.fn.telerik_WebReportDesigner) {
console.error("Telerik Web Report Designer plugin not loaded!")
reject(new Error("Telerik plugin not loaded"))
return
}
resolve()
}
kendoScript.onerror = (error) => reject(new Error(`Failed to load kendo integration script ${error}`))
document.body.appendChild(kendoScript)
}
coreScript.onerror = (error) => reject(new Error(`Failed to load core designer script ${error}`))
document.body.appendChild(coreScript)
})
}
// Ensure scripts loaded + token ready
loadDesignerScripts().then(() => initDesigner()).catch(err => console.error(err))
}, [])
return <div id="reportDesigner" style={{ height: "900px" }} />
}