UNPKG

locize

Version:

This package adds the incontext editor to your i18next setup.

63 lines (58 loc) 2 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var i18nextSubliminal = require('i18next-subliminal'); var postMessage = require('./postMessage.js'); var store = require('../store.js'); function setValueOnNode(meta, value) { var item = store.store.get(meta.eleUniqueID); if (!item || !item.keys[meta.textType]) return; var txtWithHiddenMeta = item.subliminal ? i18nextSubliminal.wrap(value, item.subliminal) : value; if (meta.textType === 'text') { item.node.textContent = txtWithHiddenMeta; } else if (meta.textType.indexOf('attr:') === 0) { var attr = meta.textType.replace('attr:', ''); item.node.setAttribute(attr, txtWithHiddenMeta); } else if (meta.textType === 'html') { var id = "".concat(meta.textType, "-").concat(meta.children); if (!item.originalChildNodes) { var clones = []; item.node.childNodes.forEach(function (c) { clones.push(c); }); item.originalChildNodes = clones; } if (item.children[id].length === item.node.childNodes.length) { item.node.innerHTML = txtWithHiddenMeta; } else { var children = item.children[id]; var first = children[0].child; var dummy = document.createElement('div'); dummy.innerHTML = txtWithHiddenMeta; var nodes = []; dummy.childNodes.forEach(function (c) { nodes.push(c); }); nodes.forEach(function (c) { try { item.node.insertBefore(c, first); } catch (error) { item.node.appendChild(c); } }); children.forEach(function (replaceable) { if (item.node.contains(replaceable.child)) { item.node.removeChild(replaceable.child); } }); } } } function handler(payload) { var meta = payload.meta, value = payload.value; if (meta && value !== undefined) { setValueOnNode(meta, value); } } postMessage.api.addHandler('editKey', handler); exports.setValueOnNode = setValueOnNode;