Source: admin/javascript/engine/libs/editor_values.js

/* --------------------------------------------------------------
 editor_values.js 2016-09-06
 Gambio GmbH
 http://www.gambio.de
 Copyright (c) 2016 Gambio GmbH
 Released under the GNU General Public License (Version 2)
 [http://www.gnu.org/licenses/gpl-2.0.html]
 --------------------------------------------------------------
 */

jse.libs.editor_values = jse.core.editor_values || {};

/**
 * ## Editor Values Library
 *
 * This library provides a common API for editor widget values manipulation.
 *
 * @module Admin/Libs/editor_values
 * @exports jse.libs.editor_values
 */
(function(exports) {
	
	'use strict';
	
	/**
	 * Editor Get Value Methods 
	 * 
	 * @type {Object}
	 */
	const getValue = {
		ckeditor($textarea) {
			const name = $textarea.attr('name'); 
			const instance = CKEDITOR.instances[name]; 
			return instance.getData();
		}, 
		
		codemirror($textarea) {
			const instance = $textarea.siblings('.CodeMirror')[0].CodeMirror; 
			return instance.getDoc().getValue();
		}
	};
	
	/**
	 * Editor Set Value Methods 
	 * 
	 * @type {Object}
	 */
	const setValue = {
		ckeditor($textarea, value) {
			const name = $textarea.attr('name');
			const instance = CKEDITOR.instances[name];
			instance.setData(value);
		},
		
		codemirror($textarea, value) {
			const instance = $textarea.siblings('.CodeMirror')[0].CodeMirror;
			instance.getDoc().setValue(value);
		}
	};
	
	/**
	 * Get Editor Value 
	 * 
	 * @param {jQuery} $textarea Textarea selector from which the value will be returned.
	 * 
	 * @return {String} Returns the editor value. 
	 */
	exports.getValue = function($textarea) {
		const type = $textarea.data('editorType'); 
		
		if (!getValue[type]) {
			throw new Error('Provided editor element does not have the supported types: ' + type);
		}
		
		return getValue[type]($textarea); 
	};
	
	/**
	 * Set Editor Value 
	 * 
	 * @param {jQuery} $textarea Textarea selector to which the value will be set.
	 * @param {String} value The new value of the editor. 
	 */
	exports.setValue = function($textarea, value) {
		const type = $textarea.data('editorType');
		
		if (!getValue[type]) {
			throw new Error('Provided editor element does not have the supported types: ' + type);
		}
		
		setValue[type]($textarea, value);
	};
	
})(jse.libs.editor_values);