tav-ui
Version:
385 lines (377 loc) • 13.2 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
var sanitizeHtml = require('sanitize-html');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
function _interopNamespace(e) {
if (e && e.__esModule) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () { return e[k]; }
});
}
});
}
n["default"] = e;
return Object.freeze(n);
}
var sanitizeHtml__default = /*#__PURE__*/_interopDefaultLegacy(sanitizeHtml);
function useEditorPlugin(options) {
const { mergedProps, handleApi, apiResult } = options;
const advlistPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/advlist')); }),
name: "advlist",
options: {}
};
const anchorPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/anchor')); }),
name: "anchor",
options: {}
};
const autolinkPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/autolink')); }),
name: "autolink",
options: {
default_link_target: "_blank"
}
};
const autoresizePlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/autoresize')); }),
name: "autoresize",
options: {}
};
const autosavePlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/autosave')); }),
name: "autosave",
options: {}
};
const charmapPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/charmap')); }),
name: "charmap",
options: {}
};
const codePlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/code')); }),
name: "code",
options: {}
};
const codesamplePlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/codesample')); }),
name: "codesample",
options: {}
};
const directionalityPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/directionality')); }),
name: "directionality",
options: {}
};
const emoticonsPlugin = {
setup: () => {
Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/emoticons')); });
Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/emoticons/js/emojis')); });
},
name: "emoticons",
options: {}
};
const fullpagePlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/fullpage')); }),
name: "fullpage",
options: {}
};
const fullscreenPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/fullscreen')); }),
name: "fullscreen",
options: {}
};
const helpPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/help')); }),
name: "help",
options: {
help_tabs: [
"shortcuts"
]
}
};
const hrPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/hr')); }),
name: "hr",
options: {}
};
const imagePlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/image')); }),
name: "image",
options: {
images_reuse_filename: true,
images_upload_handler: (...args) => editorPluginImageUploadHandler(mergedProps, handleApi, apiResult, args[0], args[1], args[2])
}
};
const imagetoolsPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/imagetools')); }),
name: "imagetools",
options: {}
};
const importcssPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/importcss')); }),
name: "importcss",
options: {}
};
const insertdatetimePlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/insertdatetime')); }),
name: "insertdatetime",
options: {}
};
const legacyoutputPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/legacyoutput')); }),
name: "legacyoutput",
options: {}
};
const linkPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/link')); }),
name: "link",
options: {
default_link_target: "_blank"
}
};
const listsPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/lists')); }),
name: "lists",
options: {}
};
const mediaPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/media')); }),
name: "media",
options: {}
};
const nonbreakingPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/nonbreaking')); }),
name: "nonbreaking",
options: {}
};
const noneditablePlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/noneditable')); }),
name: "noneditable",
options: {}
};
const pagebreakPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/pagebreak')); }),
name: "pagebreak",
options: {}
};
const pastePlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/paste')); }),
name: "paste",
options: {
paste_block_drop: false,
paste_filter_drop: false,
paste_merge_formats: false,
paste_preprocess: editorPluginPastePreprocessHandler
}
};
const previewPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/preview')); }),
name: "preview",
options: {}
};
const printPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/print')); }),
name: "print",
options: {}
};
const quickbarsPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/quickbars')); }),
name: "quickbars",
options: {
quickbars_insert_toolbar: "",
quickbars_selection_toolbar: "formatselect bold italic | aligns blockquote",
quickbars_image_toolbar: ""
}
};
const savePlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/save')); }),
name: "save",
options: {}
};
const searchreplacePlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/searchreplace')); }),
name: "searchreplace",
options: {}
};
const spellcheckerPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/spellchecker')); }),
name: "spellchecker",
options: {}
};
const tabfocusPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/tabfocus')); }),
name: "tabfocus",
options: {}
};
const tablePlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/table')); }),
name: "table",
options: {}
};
const templatePlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/template')); }),
name: "template",
options: {}
};
const textpatternPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/textpattern')); }),
name: "textpattern",
options: {}
};
const tocPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/toc')); }),
name: "toc",
options: {}
};
const visualblocksPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/visualblocks')); }),
name: "visualblocks",
options: {}
};
const visualcharsPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/visualchars')); }),
name: "visualchars",
options: {}
};
const wordcountPlugin = {
setup: () => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('tinymce/plugins/wordcount')); }),
name: "wordcount",
options: {}
};
const plugins = [
advlistPlugin,
anchorPlugin,
autolinkPlugin,
autoresizePlugin,
autosavePlugin,
charmapPlugin,
codePlugin,
codesamplePlugin,
directionalityPlugin,
emoticonsPlugin,
fullpagePlugin,
fullscreenPlugin,
helpPlugin,
hrPlugin,
imagePlugin,
imagetoolsPlugin,
importcssPlugin,
insertdatetimePlugin,
legacyoutputPlugin,
linkPlugin,
listsPlugin,
mediaPlugin,
nonbreakingPlugin,
noneditablePlugin,
pagebreakPlugin,
pastePlugin,
previewPlugin,
printPlugin,
quickbarsPlugin,
savePlugin,
searchreplacePlugin,
spellcheckerPlugin,
tabfocusPlugin,
tablePlugin,
templatePlugin,
textpatternPlugin,
tocPlugin,
visualblocksPlugin,
visualcharsPlugin,
wordcountPlugin
];
const filterPluginNames = [
"autoresize",
"autosave",
"charmap",
"codesample",
"emoticons",
"fullpage",
"help",
"image",
"imagetools",
"importcss",
"insertdatetime",
"legacyoutput",
"media",
"print",
"spellchecker",
"tabfocus",
"template",
"toc",
"wordcount"
];
const usePlugins = plugins.filter((plugin) => !filterPluginNames.includes(plugin.name));
const isLoaded = vue.ref(false);
function setupPlugins() {
for (let i = 0; i < usePlugins.length; i++) {
usePlugins[i].setup();
}
isLoaded.value = true;
}
const pluginConfig = vue.computed(() => {
const imagePlugin2 = usePlugins.find((usePlugin) => usePlugin.name === "image");
if (imagePlugin2) {
imagePlugin2.options = {
...imagePlugin2.options,
images_file_types: mergedProps.value.imageAccept
};
}
const imagetoolsPlugin2 = usePlugins.find((usePlugin) => usePlugin.name === "imagetools");
if (imagetoolsPlugin2) {
imagetoolsPlugin2.options = {};
}
const usePluginNames = usePlugins.map((usePlugin) => usePlugin.name).join(" ");
const usePluginOptions = usePlugins.reduce((result, cur) => {
if (cur.options && Object.keys(cur.options).length > 0) {
result = {
...result,
...cur.options
};
}
return result;
}, {});
return {
plugins: usePluginNames,
pluginOptions: usePluginOptions
};
});
return {
setupPlugins,
pluginConfig
};
}
function editorPluginImageUploadHandler(mergedProps, handleApi, apiResult, blobInfo, success, failure) {
const file = blobInfo.blob();
const imageOptions = null;
if (!imageOptions)
return;
}
function editorPluginPastePreprocessHandler(...args) {
const [_, pasteContentinfo] = args;
const result = sanitizeHtml__default["default"](pasteContentinfo.content, {
allowedTags: sanitizeHtml__default["default"].defaults.allowedTags.filter((at) => !["code", "samp", "ruby"].includes(at)),
allowedAttributes: {
...sanitizeHtml__default["default"].defaults.allowedTags.reduce((result2, cur) => {
if (cur === "a") {
result2[cur] = ["href", "name", "target"];
} else {
result2[cur] = [];
}
return result2;
}, {})
},
disallowedTagsMode: "discard"
});
pasteContentinfo.content = result;
}
exports.useEditorPlugin = useEditorPlugin;
//# sourceMappingURL=use-editor-plugin2.js.map