UNPKG

@progress/sitefinity-nextjs-sdk

Version:

Provides OOB widgets developed using the Next.js framework, which includes an abstraction layer for Sitefinity communication. Additionally, it offers an expanded API, typings, and tools for further development and integration.

28 lines (27 loc) 1.48 kB
'use client'; import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime"; import { RendererContractImpl } from '../services/renderer-contract'; import { RenderWidgetService } from '../services/render-widget-service'; import { ServiceMetadata } from '../rest-sdk/service-metadata'; export function RenderPageClient({ layout, metadata, taxonomies, context, registry }) { RenderWidgetService.widgetRegistry = registry; ServiceMetadata.serviceMetadataCache = metadata; ServiceMetadata.taxonomies = taxonomies; if (context.isEdit && typeof window !== 'undefined') { const timeout = 2000; const start = new Date().getTime(); const handle = window.setInterval(() => { document.body.setAttribute('data-sfcontainer', 'Body'); // we do not know the exact time when react has finished the rendering process. // thus we check every 100ms for dom changes. A proper check would be to see if every single // component is rendered const timePassed = new Date().getTime() - start; if ((layout.ComponentContext.Components.length > 0 && timePassed > timeout) || layout.ComponentContext.Components.length === 0) { window.clearInterval(handle); window['rendererContract'] = new RendererContractImpl(); window.dispatchEvent(new Event('contractReady')); } }, 1000); } return _jsx(_Fragment, {}); }