integarting admin dashboard
This commit is contained in:
7
public/Dashboard/vendors/tinymce/plugins/noneditable/index.js
vendored
Normal file
7
public/Dashboard/vendors/tinymce/plugins/noneditable/index.js
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
// Exports the "noneditable" plugin for usage with module loaders
|
||||
// Usage:
|
||||
// CommonJS:
|
||||
// require('tinymce/plugins/noneditable')
|
||||
// ES2015:
|
||||
// import 'tinymce/plugins/noneditable'
|
||||
require('./plugin.js');
|
117
public/Dashboard/vendors/tinymce/plugins/noneditable/plugin.js
vendored
Normal file
117
public/Dashboard/vendors/tinymce/plugins/noneditable/plugin.js
vendored
Normal file
@ -0,0 +1,117 @@
|
||||
/**
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||
* Licensed under the LGPL or a commercial license.
|
||||
* For LGPL see License.txt in the project root for license information.
|
||||
* For commercial licenses see https://www.tiny.cloud/
|
||||
*
|
||||
* Version: 5.7.0 (2021-02-10)
|
||||
*/
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
var global = tinymce.util.Tools.resolve('tinymce.PluginManager');
|
||||
|
||||
var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools');
|
||||
|
||||
var getNonEditableClass = function (editor) {
|
||||
return editor.getParam('noneditable_noneditable_class', 'mceNonEditable');
|
||||
};
|
||||
var getEditableClass = function (editor) {
|
||||
return editor.getParam('noneditable_editable_class', 'mceEditable');
|
||||
};
|
||||
var getNonEditableRegExps = function (editor) {
|
||||
var nonEditableRegExps = editor.getParam('noneditable_regexp', []);
|
||||
if (nonEditableRegExps && nonEditableRegExps.constructor === RegExp) {
|
||||
return [nonEditableRegExps];
|
||||
} else {
|
||||
return nonEditableRegExps;
|
||||
}
|
||||
};
|
||||
|
||||
var hasClass = function (checkClassName) {
|
||||
return function (node) {
|
||||
return (' ' + node.attr('class') + ' ').indexOf(checkClassName) !== -1;
|
||||
};
|
||||
};
|
||||
var replaceMatchWithSpan = function (editor, content, cls) {
|
||||
return function (match) {
|
||||
var args = arguments, index = args[args.length - 2];
|
||||
var prevChar = index > 0 ? content.charAt(index - 1) : '';
|
||||
if (prevChar === '"') {
|
||||
return match;
|
||||
}
|
||||
if (prevChar === '>') {
|
||||
var findStartTagIndex = content.lastIndexOf('<', index);
|
||||
if (findStartTagIndex !== -1) {
|
||||
var tagHtml = content.substring(findStartTagIndex, index);
|
||||
if (tagHtml.indexOf('contenteditable="false"') !== -1) {
|
||||
return match;
|
||||
}
|
||||
}
|
||||
}
|
||||
return '<span class="' + cls + '" data-mce-content="' + editor.dom.encode(args[0]) + '">' + editor.dom.encode(typeof args[1] === 'string' ? args[1] : args[0]) + '</span>';
|
||||
};
|
||||
};
|
||||
var convertRegExpsToNonEditable = function (editor, nonEditableRegExps, e) {
|
||||
var i = nonEditableRegExps.length, content = e.content;
|
||||
if (e.format === 'raw') {
|
||||
return;
|
||||
}
|
||||
while (i--) {
|
||||
content = content.replace(nonEditableRegExps[i], replaceMatchWithSpan(editor, content, getNonEditableClass(editor)));
|
||||
}
|
||||
e.content = content;
|
||||
};
|
||||
var setup = function (editor) {
|
||||
var contentEditableAttrName = 'contenteditable';
|
||||
var editClass = ' ' + global$1.trim(getEditableClass(editor)) + ' ';
|
||||
var nonEditClass = ' ' + global$1.trim(getNonEditableClass(editor)) + ' ';
|
||||
var hasEditClass = hasClass(editClass);
|
||||
var hasNonEditClass = hasClass(nonEditClass);
|
||||
var nonEditableRegExps = getNonEditableRegExps(editor);
|
||||
editor.on('PreInit', function () {
|
||||
if (nonEditableRegExps.length > 0) {
|
||||
editor.on('BeforeSetContent', function (e) {
|
||||
convertRegExpsToNonEditable(editor, nonEditableRegExps, e);
|
||||
});
|
||||
}
|
||||
editor.parser.addAttributeFilter('class', function (nodes) {
|
||||
var i = nodes.length, node;
|
||||
while (i--) {
|
||||
node = nodes[i];
|
||||
if (hasEditClass(node)) {
|
||||
node.attr(contentEditableAttrName, 'true');
|
||||
} else if (hasNonEditClass(node)) {
|
||||
node.attr(contentEditableAttrName, 'false');
|
||||
}
|
||||
}
|
||||
});
|
||||
editor.serializer.addAttributeFilter(contentEditableAttrName, function (nodes) {
|
||||
var i = nodes.length, node;
|
||||
while (i--) {
|
||||
node = nodes[i];
|
||||
if (!hasEditClass(node) && !hasNonEditClass(node)) {
|
||||
continue;
|
||||
}
|
||||
if (nonEditableRegExps.length > 0 && node.attr('data-mce-content')) {
|
||||
node.name = '#text';
|
||||
node.type = 3;
|
||||
node.raw = true;
|
||||
node.value = node.attr('data-mce-content');
|
||||
} else {
|
||||
node.attr(contentEditableAttrName, null);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
function Plugin () {
|
||||
global.add('noneditable', function (editor) {
|
||||
setup(editor);
|
||||
});
|
||||
}
|
||||
|
||||
Plugin();
|
||||
|
||||
}());
|
9
public/Dashboard/vendors/tinymce/plugins/noneditable/plugin.min.js
vendored
Normal file
9
public/Dashboard/vendors/tinymce/plugins/noneditable/plugin.min.js
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
/**
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||
* Licensed under the LGPL or a commercial license.
|
||||
* For LGPL see License.txt in the project root for license information.
|
||||
* For commercial licenses see https://www.tiny.cloud/
|
||||
*
|
||||
* Version: 5.7.0 (2021-02-10)
|
||||
*/
|
||||
!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=tinymce.util.Tools.resolve("tinymce.util.Tools"),u=function(t){return t.getParam("noneditable_noneditable_class","mceNonEditable")},f=function(e){return function(t){return-1!==(" "+t.attr("class")+" ").indexOf(e)}},e=function(e){var t,r="contenteditable",n=" "+l.trim(e.getParam("noneditable_editable_class","mceEditable"))+" ",a=" "+l.trim(u(e))+" ",i=f(n),o=f(a),c=(t=e.getParam("noneditable_regexp",[]))&&t.constructor===RegExp?[t]:t;e.on("PreInit",function(){0<c.length&&e.on("BeforeSetContent",function(t){!function(t,e,n){var r=e.length,a=n.content;if("raw"!==n.format){for(;r--;)a=a.replace(e[r],function(i,o,c){return function(t){var e=arguments,n=e[e.length-2],r=0<n?o.charAt(n-1):"";if('"'===r)return t;if(">"===r){var a=o.lastIndexOf("<",n);if(-1!==a)if(-1!==o.substring(a,n).indexOf('contenteditable="false"'))return t}return'<span class="'+c+'" data-mce-content="'+i.dom.encode(e[0])+'">'+i.dom.encode("string"==typeof e[1]?e[1]:e[0])+"</span>"}}(t,a,u(t)));n.content=a}}(e,c,t)}),e.parser.addAttributeFilter("class",function(t){for(var e,n=t.length;n--;)e=t[n],i(e)?e.attr(r,"true"):o(e)&&e.attr(r,"false")}),e.serializer.addAttributeFilter(r,function(t){for(var e,n=t.length;n--;)e=t[n],(i(e)||o(e))&&(0<c.length&&e.attr("data-mce-content")?(e.name="#text",e.type=3,e.raw=!0,e.value=e.attr("data-mce-content")):e.attr(r,null))})})};t.add("noneditable",function(t){e(t)})}();
|
Reference in New Issue
Block a user