1441 |
ariadna |
1 |
{"version":3,"file":"commands.min.js","sources":["../src/commands.js"],"sourcesContent":["// This file is part of Moodle - https://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <https://www.gnu.org/licenses/>.\n\n/**\n * Commands helper for the Moodle tiny_aiplacement plugin.\n *\n * @module tiny_aiplacement/commands\n * @copyright 2024 Matt Porritt <matt.porritt@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport {getButtonImage, addDynamicToolbarMenu} from 'editor_tiny/utils';\nimport {get_string as getString} from 'core/str';\nimport {\n component,\n placement,\n contextMenuName,\n generateImageName,\n generateTextName,\n contextMenuIcon,\n generateImageIcon,\n generateTextIcon\n} from './common';\nimport GenerateImage from './generateimage';\nimport GenerateText from './generatetext';\nimport {isTextAllowed, isImageAllowed} from './options';\n\n/**\n * Get the setup function for the buttons.\n *\n * This is performed in an async function which ultimately returns the registration function as the\n * Tiny.AddOnManager.Add() function does not support async functions.\n *\n * @returns {function} The registration function to call within the Plugin.add function.\n */\nexport const getSetup = async() => {\n const [\n contextMenuIconText,\n generateImageIconText,\n generateTextIconText,\n contextMenuIconImage,\n generateImageIconImage,\n generateTextIconImage,\n ] = await Promise.all([\n getString('generatecontent', placement),\n getString('generateimage', placement),\n getString('generatetext', placement),\n getButtonImage(contextMenuIcon, component),\n getButtonImage(generateImageIcon, component),\n getButtonImage(generateTextIcon, component),\n ]);\n\n const getToolbarParts = (editor) => {\n // Add the context menu button.\n const menuItems = [];\n\n if (isTextAllowed(editor)) {\n const textGenerator = new GenerateText(editor);\n\n editor.ui.registry.addMenuItem(generateTextName, {\n icon: generateTextIcon,\n text: generateTextIconText,\n onAction: () => {\n textGenerator.displayContentModal(editor);\n },\n });\n\n menuItems.push(generateTextName);\n\n if (!isImageAllowed(editor)) {\n // Only text generation is allowed.\n return {\n menuItems,\n singleButton: generateTextIcon,\n singleButtonTitle: generateTextIconText,\n generator: textGenerator,\n };\n }\n }\n\n if (isImageAllowed(editor)) {\n const imageGenerator = new GenerateImage(editor);\n\n editor.ui.registry.addMenuItem(generateImageName, {\n icon: generateImageIcon,\n text: generateImageIconText,\n onAction: () => {\n imageGenerator.displayContentModal(editor);\n },\n });\n\n menuItems.push(generateImageName);\n\n if (!isTextAllowed(editor)) {\n // Only image generation is allowed.\n return {\n menuItems,\n singleButton: generateImageIcon,\n singleButtonTitle: generateImageIconText,\n generator: imageGenerator,\n };\n }\n }\n\n return {\n menuItems,\n singleButton: null,\n singleButtonTitle: null,\n generator: null,\n };\n };\n\n\n return (editor) => {\n if (!isTextAllowed(editor) && !isImageAllowed(editor)) {\n return;\n }\n\n // Register the icon SVG files as an icon suitable for use in TinyMCE toolbars and buttons.\n editor.ui.registry.addIcon(contextMenuIcon, contextMenuIconImage.html);\n editor.ui.registry.addIcon(generateImageIcon, generateImageIconImage.html);\n editor.ui.registry.addIcon(generateTextIcon, generateTextIconImage.html);\n\n const {menuItems, singleButton, singleButtonTitle, generator} = getToolbarParts(editor);\n\n addDynamicToolbarMenu(\n editor,\n menuItems,\n contextMenuName,\n contextMenuIcon,\n contextMenuIconText,\n singleButton,\n singleButtonTitle,\n () => {\n generator.displayContentModal(editor);\n },\n );\n };\n};\n"],"names":["async","contextMenuIconText","generateImageIconText","generateTextIconText","contextMenuIconImage","generateImageIconImage","generateTextIconImage","Promise","all","placement","contextMenuIcon","component","generateImageIcon","generateTextIcon","editor","ui","registry","addIcon","html","menuItems","singleButton","singleButtonTitle","generator","textGenerator","GenerateText","addMenuItem","generateTextName","icon","text","onAction","displayContentModal","push","imageGenerator","GenerateImage","generateImageName","getToolbarParts","contextMenuName"],"mappings":";;;;;;;kNA+CwBA,gBAEhBC,oBACAC,sBACAC,qBACAC,qBACAC,uBACAC,6BACMC,QAAQC,IAAI,EAClB,mBAAU,kBAAmBC,oBAC7B,mBAAU,gBAAiBA,oBAC3B,mBAAU,eAAgBA,oBAC1B,yBAAeC,wBAAiBC,oBAChC,yBAAeC,0BAAmBD,oBAClC,yBAAeE,yBAAkBF,4BAgE7BG,cACC,0BAAcA,WAAY,2BAAeA,eAK9CA,OAAOC,GAAGC,SAASC,QAAQP,wBAAiBN,qBAAqBc,MACjEJ,OAAOC,GAAGC,SAASC,QAAQL,0BAAmBP,uBAAuBa,MACrEJ,OAAOC,GAAGC,SAASC,QAAQJ,yBAAkBP,sBAAsBY,YAE7DC,UAACA,UAADC,aAAYA,aAAZC,kBAA0BA,kBAA1BC,UAA6CA,WAvE9BR,CAAAA,eAEfK,UAAY,OAEd,0BAAcL,QAAS,OACjBS,cAAgB,IAAIC,sBAAaV,WAEvCA,OAAOC,GAAGC,SAASS,YAAYC,yBAAkB,CAC7CC,KAAMd,yBACNe,KAAMzB,qBACN0B,SAAU,KACNN,cAAcO,oBAAoBhB,WAI1CK,UAAUY,KAAKL,4BAEV,2BAAeZ,cAET,CACHK,UAAAA,UACAC,aAAcP,yBACdQ,kBAAmBlB,qBACnBmB,UAAWC,mBAKnB,2BAAeT,QAAS,OAClBkB,eAAiB,IAAIC,uBAAcnB,WAEzCA,OAAOC,GAAGC,SAASS,YAAYS,0BAAmB,CAC9CP,KAAMf,0BACNgB,KAAM1B,sBACN2B,SAAU,KACNG,eAAeF,oBAAoBhB,WAI3CK,UAAUY,KAAKG,6BAEV,0BAAcpB,cAER,CACHK,UAAAA,UACAC,aAAcR,0BACdS,kBAAmBnB,sBACnBoB,UAAWU,sBAKhB,CACHb,UAAAA,UACAC,aAAc,KACdC,kBAAmB,KACnBC,UAAW,OAeiDa,CAAgBrB,yCAG5EA,OACAK,UACAiB,wBACA1B,wBACAT,oBACAmB,aACAC,mBACA,KACIC,UAAUQ,oBAAoBhB"}
|