react-intlayer
Version:
Easily internationalize i18n your React applications with type-safe multilingual content management.
55 lines (52 loc) • 2.45 kB
JavaScript
'use client';
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
const require_client_IntlayerProvider = require('../client/IntlayerProvider.cjs');
const require_UI_ContentSelector = require('../UI/ContentSelector.cjs');
let react = require("react");
let react_jsx_runtime = require("react/jsx-runtime");
let _intlayer_core = require("@intlayer/core");
let _intlayer_types = require("@intlayer/types");
let _intlayer_editor_react = require("@intlayer/editor-react");
//#region src/editor/ContentSelectorWrapper.tsx
const ContentSelectorWrapperContent = ({ children, dictionaryKey, keyPath }) => {
const { focusedContent, setFocusedContent } = (0, _intlayer_editor_react.useFocusDictionary)();
const { postMessage, senderId } = (0, _intlayer_editor_react.useCommunicator)();
const filteredKeyPath = (0, react.useMemo)(() => keyPath.filter((key) => key.type !== _intlayer_types.NodeType.Translation), [keyPath]);
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_UI_ContentSelector.ContentSelector, {
onPress: (0, react.useCallback)(() => setFocusedContent({
dictionaryKey,
keyPath: filteredKeyPath
}), [dictionaryKey, filteredKeyPath]),
onHover: (0, react.useCallback)(() => postMessage({
type: `${_intlayer_editor_react.MessageKey.INTLAYER_HOVERED_CONTENT_CHANGED}/post`,
data: {
dictionaryKey,
keyPath: filteredKeyPath
},
senderId
}), [dictionaryKey, filteredKeyPath]),
onUnhover: (0, react.useCallback)(() => postMessage({
type: `${_intlayer_editor_react.MessageKey.INTLAYER_HOVERED_CONTENT_CHANGED}/post`,
data: null,
senderId
}), [senderId]),
isSelecting: (0, react.useMemo)(() => (focusedContent?.dictionaryKey === dictionaryKey && (focusedContent?.keyPath?.length ?? 0) > 0 && (0, _intlayer_core.isSameKeyPath)(focusedContent?.keyPath ?? [], filteredKeyPath)) ?? false, [
focusedContent,
filteredKeyPath,
dictionaryKey
]),
children
});
};
const ContentSelectorRenderer = ({ children, ...props }) => {
const { enabled } = (0, _intlayer_editor_react.useEditorEnabled)();
const { disableEditor } = require_client_IntlayerProvider.useIntlayerContext();
if (enabled && !disableEditor) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ContentSelectorWrapperContent, {
...props,
children
});
return children;
};
//#endregion
exports.ContentSelectorRenderer = ContentSelectorRenderer;
//# sourceMappingURL=ContentSelectorWrapper.cjs.map