Skip to main content
Glama
IntlayerEditorProvider.tsx2.82 kB
import configuration from '@intlayer/config/built'; import { getUnmergedDictionaries } from '@intlayer/unmerged-dictionaries-entry'; import type { Component, ParentProps } from 'solid-js'; import { onMount } from 'solid-js'; import { EditorProvider, useCrossURLPathSetter, useDictionariesRecordActions, useEditorEnabled, useIframeClickInterceptor, } from './contexts'; const IntlayerEditorHooksEnabled: Component = () => { /** * URL Messages */ useCrossURLPathSetter(); /** * Click Messages */ useIframeClickInterceptor(); /** * Sent local dictionaries to editor */ const { setLocaleDictionaries } = useDictionariesRecordActions() ?? {}; onMount(() => { // Load dictionaries dynamically to do not impact the bundle, and send them to the editor import('@intlayer/unmerged-dictionaries-entry').then((mod) => { const unmergedDictionaries = mod.getUnmergedDictionaries(); const dictionariesList = Object.fromEntries( Object.values(unmergedDictionaries) .flat() .map((dictionary) => [dictionary.localId, dictionary]) ); setLocaleDictionaries?.(dictionariesList); }); }); return <></>; }; const { editor } = configuration; const IntlayerEditorHook: Component = () => { const { enabled } = useEditorEnabled(); return enabled() ? <IntlayerEditorHooksEnabled /> : <></>; }; export const IntlayerEditorProvider: Component<ParentProps> = (props) => { return ( <EditorProvider postMessage={(data: any) => { if (typeof window === 'undefined') return; const isInIframe = window.self !== window.top; if (!isInIframe) return; if (editor.applicationURL.length > 0) { window?.postMessage( data, // Use to restrict the origin of the editor for security reasons. // Correspond to the current application URL to synchronize the locales states. editor.applicationURL ); } if (editor.editorURL.length > 0) { window.parent?.postMessage( data, // Use to restrict the origin of the editor for security reasons. // Correspond to the editor URL to synchronize the locales states. editor.editorURL ); } if (editor.cmsURL.length > 0) { window.parent?.postMessage( data, // Use to restrict the origin of the CMS for security reasons. // Correspond to the CMS URL. editor.cmsURL ); } }} allowedOrigins={[ editor?.editorURL, editor?.cmsURL, editor?.applicationURL, ]} configuration={configuration} > <IntlayerEditorHook /> {props.children} </EditorProvider> ); };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aymericzip/intlayer'

If you have feedback or need assistance with the MCP directory API, please join our Discord server