react-native-cn-quill
Version:
react-native quill richtext editor
233 lines (206 loc) • 6.18 kB
JavaScript
export const editor_js = `
<script>
(function (doc) {
var sendMessage = function (message) {
if (window.ReactNativeWebView)
window.ReactNativeWebView.postMessage(message);
else console.log(message)
}
var getSelectedFormats = function () {
var formats = quill.getFormat();
var contentChanged = JSON.stringify({
type: 'format-change',
data: {formats} });
sendMessage(contentChanged);
}
//Format text at user’s current selection
var formatSelection = function (name, value) {
var range = quill.getSelection();
if (!range) quill.focus();
quill.format(name, value);
getSelectedFormats();
}
var hasFocus = function (key) {
var hs = quill.hasFocus();
var hsJson = JSON.stringify({
type: 'has-focus',
key: key,
data: hs });
sendMessage(hsJson);
}
var getContents = function (key, index, length) {
var getContentsData = quill.getContents(index, length);
var getContentsDataJson = JSON.stringify({
type: 'get-contents',
key: key,
data: getContentsData });
sendMessage(getContentsDataJson);
}
var getText = function (key, index, length) {
var getTextData = quill.getText(index, length);
var getTextDataJson = JSON.stringify({
type: 'get-text',
key: key,
data: getTextData });
sendMessage(getTextDataJson);
}
var getLength = function (key) {
var getLengthData = quill.getLength();
var getLengthDataJson = JSON.stringify({
type: 'get-length',
key: key,
data: getLengthData });
sendMessage(getLengthDataJson);
}
var getHtml = function (key) {
var html = quill.root.innerHTML;
var getHtmlJson = JSON.stringify({
type: 'get-html',
key: key,
data: html });
sendMessage(getHtmlJson);
}
var insertEmbed = function (index, type, value) {
quill.insertEmbed(index, type, value);
}
var insertText = function (index, text, formats={}) {
quill.insertText(index, text, formats);
}
var setContents = function (delta) {
quill.setContents(delta);
}
var setText = function (text) {
quill.setText(text);
}
var updateContents = function (delta) {
quill.updateContents(delta);
}
var dangerouslyPasteHTML = function (index, html) {
quill.clipboard.dangerouslyPasteHTML(index, html);
}
var setSelection = function (index, length = 0, source = 'api') {
quill.setSelection(index, length, source);
}
var getBounds = function (key, index, length = 0) {
var boundsData = quill.getBounds(index, length);
var getBoundsJson = JSON.stringify({
type: 'get-bounds',
key: key,
data: boundsData });
sendMessage(getBoundsJson);
}
var getSelection = function (key, focus = false) {
var getSelectionData = quill.getSelection(focus);
var getSelectionJson = JSON.stringify({
type: 'get-selectoin',
key: key,
data: getSelectionData });
sendMessage(getSelectionJson);
}
var getRequest = function (event) {
var msg = JSON.parse(event.data);
switch (msg.command) {
case 'format':
formatSelection(msg.name, msg.value);
break;
case 'focus':
quill.focus();
break;
case 'blur':
quill.blur();
break;
case 'enable':
quill.enable(msg.value);
break;
case 'hasFocus':
hasFocus(msg.key);
break;
case 'deleteText':
quill.deleteText(msg.index, msg.length);
break;
case 'getContents':
getContents(msg.key, msg.index, msg.length);
break;
case 'getText':
getText(msg.key, msg.index, msg.length);
break;
case 'getBounds':
getBounds(msg.key, msg.index, msg.length);
break;
case 'getSelection':
getSelection(msg.key, msg.focus);
break;
case 'setSelection':
setSelection(msg.index, msg.length, msg.source);
break;
case 'getHtml':
getHtml(msg.key);
break;
case 'getLength':
getLength(msg.key);
break;
case 'insertEmbed':
insertEmbed(msg.index, msg.type, msg.value);
break;
case 'insertText':
insertText(msg.index, msg.text, msg.formats);
break;
case 'setContents':
setContents(msg.delta);
break;
case 'setText':
setText(msg.text);
break;
case 'updateContents':
updateContents(msg.delta);
break;
case 'dangerouslyPasteHTML':
dangerouslyPasteHTML(msg.index, msg.html);
break;
default:
break;
}
};
document.addEventListener("message", getRequest, false);
window.addEventListener("message", getRequest, false);
quill.on('editor-change', function(eventName, ...args) {
if (eventName === 'text-change') {
getSelectedFormats();
} else if (eventName === 'selection-change') {
var range = quill.getSelection();
if (range) {
getSelectedFormats();
}
}
var getEditorChange = JSON.stringify({
type: 'editor-change',
data: { eventName, args } });
sendMessage(getEditorChange);
});
quill.on('text-change', function(delta, oldDelta, source) {
var getTextChange = JSON.stringify({
type: 'text-change',
data: { delta, oldDelta, source } });
sendMessage(getTextChange);
var html = quill.root.innerHTML;
var getHtmlJson = JSON.stringify({
type: 'html-change',
data: { html } });
sendMessage(getHtmlJson);
});
quill.on('selection-change', function(range, oldRange, source) {
var getSelectionChange = JSON.stringify({
type: 'selection-change',
data: { range, oldRange, source } });
sendMessage(getSelectionChange)
});
quill.root.addEventListener('blur', function () {
sendMessage(JSON.stringify({type: 'blur'}));
});
quill.root.addEventListener('focus', function () {
sendMessage(JSON.stringify({type: 'focus'}));
});
})(document)
</script>
`;
//# sourceMappingURL=editor_js.js.map