UNPKG

tav-ui

Version:
385 lines (377 loc) 13.2 kB
'use strict'; 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