{"version":3,"sources":["webpack:///./src/modules/ckeditor5-paragraph/src/paragraphcommand.js","webpack:///./src/modules/ckeditor5-paragraph/src/paragraph.js","webpack:///./src/modules/common.js","webpack:///./src/modules/postEditor.js","webpack:///./src/modules/ckeditor5-legacycode/src/legacycode.js","webpack:///./src/modules/ckeditor5-imagewrapper/src/imagewrapper.js"],"names":["ParagraphCommand","model","this","editor","document","block","first","selection","getSelectedBlocks","value","is","isEnabled","checkCanBecomeParagraph","schema","options","arguments","length","undefined","change","writer","_step","blocks","_iterator","_createForOfIteratorHelper","s","n","done","rename","err","e","f","Command","checkChild","parent","isObject","Paragraph","_this","data","commands","add","register","inheritAllFrom","conversion","elementToElement","view","for","viewElement","modelWriter","paragraphLikeElements","has","name","isEmpty","createElement","converterPriority","childCount","childEl","getChild","nextChild","consumable","consume","upcastDispatcher","on","evt","conversionApi","viewItem","test","isParagraphable","modelCursor","Object","assign","wrapInParagraph","priority","modelRange","registerPostFixer","_autoparagraphEmptyRoots","enqueueChange","paragraph_createForOfIteratorHelper","getRootNames","rootName","root","getRoot","insertElement","Plugin","input","position","paragraph","insert","convertItem","createPositionAt","node","context","createContext","push","Set","breadcrumb","addLink","bc","url","text","concat","addText","create","inputs","i","j","strings","replaceAll","str","find","replace","RegExp","escapeRegex","uxUtil","scrollToCenter","elementID","process","nextTick","getElementById","scrollIntoView","behavior","inline","common","_api_api__WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","_modules_settings__WEBPACK_IMPORTED_MODULE_1__","_modules_dialogs__WEBPACK_IMPORTED_MODULE_2__","useEmo","settings","user","getUseEmoticons","stylePath","isDarkTheme","localStorage","getItem","postEditor","editorConfig","format","style","width","height","toolbar","autoExpand","plugins","emoticonsEnabled","plaintext","addButton","enabled","customFunction","dialogs","alertAsync","emoticons","dropdown",":2cents:",":bow:",":applause:",":btt:",":bg:",":o","o!",":coffee:",":compute:",":confused:",":cool:",":crazy:",":bawl:",":dance:",":dazed:",":doh:",":dunno:",":dunce:",":evil:",":(",":fundrink:",":giveup:","grin::",":halo:",":beer:",":hattip:",":iconfused:",":kiss:",":D",":lightbulb:",":like:",":mad:",":notworthy:",":ohyeah:",":ooo:",":pompom:",":pullhair:",":read:",":lol:",":sad:",":sarcasm:",":shocked:",":shrug:",":zzzz:",":)",":smirk:",":thanks:",":thumbdn:",":thumbup:",":p",":uarulez:",":wary:","ho!",":welcome:",":whew:",":wine:",";)",":woohoo:",":yay:",":yw:","dragdrop","allowedTypes","isAllowed","file","handleFile","createPlaceholder","placeholder","api","postFile","then","response","att","elementString","livePreview","attachmentID","tempUrl","fileName","catch","cancel","LegacyCode","D_Projects_UA_repo_Source_Client_UA_User_Web_node_modules_babel_runtime_helpers_esm_classCallCheck_js__WEBPACK_IMPORTED_MODULE_2__","_super","call","codeBlock","_setAttribute","safeInsert","convertChildren","updateConversionResult","Typing","downcastImageAttribute","imageUtils","imageType","attributeKey","viewAttributeKey","dispatcher","converter","item","viewWriter","element","mapper","toViewElement","img","findViewImgElement","setAttribute","attributeNewValue","ImageWrapper","get","extend","allowAttributes","attributeToAttribute","key","addAttributeCheck","endsWith","stop"],"mappings":"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","file":"js/chunk-605edc74.cf7f6173.js","sourcesContent":["import Command from '@ckeditor/ckeditor5-core/src/command';\r\nimport first from '@ckeditor/ckeditor5-utils/src/first';\r\n\r\n/**\r\n * The paragraph command.\r\n *\r\n * @extends module:core/command~Command\r\n */\r\nexport default class ParagraphCommand extends Command {\r\n\t/**\r\n\t * The value of the command. Indicates whether the selection start is placed in a paragraph.\r\n\t *\r\n\t * @readonly\r\n\t * @observable\r\n\t * @member {Boolean} #value\r\n\t */\r\n\r\n\t/**\r\n\t * @inheritDoc\r\n\t */\r\n\trefresh() {\r\n\t\tconst model = this.editor.model;\r\n\t\tconst document = model.document;\r\n\t\tconst block = first( document.selection.getSelectedBlocks() );\r\n\r\n\t\tthis.value = !!block && block.is( 'paragraph' );\r\n\t\tthis.isEnabled = !!block && checkCanBecomeParagraph( block, model.schema );\r\n\t}\r\n\r\n\t/**\r\n\t * Executes the command. All the blocks (see {@link module:engine/model/schema~Schema}) in the selection\r\n\t * will be turned to paragraphs.\r\n\t *\r\n\t * @fires execute\r\n\t * @param {Object} [options] Options for the executed command.\r\n\t * @param {module:engine/model/selection~Selection|module:engine/model/documentselection~DocumentSelection} [options.selection]\r\n\t * The selection that the command should be applied to.\r\n\t * By default, if not provided, the command is applied to the {@link module:engine/model/document~Document#selection}.\r\n\t */\r\n\texecute( options = {} ) {\r\n\t\tconst model = this.editor.model;\r\n\t\tconst document = model.document;\r\n\r\n\t\tmodel.change( writer => {\r\n\t\t\tconst blocks = ( options.selection || document.selection ).getSelectedBlocks();\r\n\r\n\t\t\tfor ( const block of blocks ) {\r\n\t\t\t\tif ( !block.is( 'paragraph' ) && checkCanBecomeParagraph( block, model.schema ) ) {\r\n\t\t\t\t\twriter.rename( block, 'paragraph' );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n}\r\n\r\n// Checks whether the given block can be replaced by a paragraph.\r\n//\r\n// @private\r\n// @param {module:engine/model/element~Element} block A block to be tested.\r\n// @param {module:engine/model/schema~Schema} schema The schema of the document.\r\n// @returns {Boolean}\r\nfunction checkCanBecomeParagraph( block, schema ) {\r\n\treturn schema.checkChild( block.parent, 'paragraph' ) && !schema.isObject( block );\r\n}","import Plugin from '@ckeditor/ckeditor5-core/src/plugin';\r\nimport ParagraphCommand from './paragraphcommand';\r\n\r\n\r\n/**\r\n * The paragraph feature for the editor.\r\n *\r\n * It introduces the `` element in the model which renders as a `

` element in the DOM and data.\r\n *\r\n * @extends module:core/plugin~Plugin\r\n */\r\nexport default class Paragraph extends Plugin {\r\n\t/** \r\n\t * @inheritDoc\r\n\t */\r\n\tstatic get pluginName() {\r\n\t\treturn 'Paragraph';\r\n\t}\r\n\r\n\t/**\r\n\t * @inheritDoc\r\n\t */\r\n\tinit() {\r\n\t\tconst editor = this.editor;\r\n\t\tconst model = editor.model;\r\n\t\tconst data = editor.data;\r\n\t\t//const domConverter = editor.editing.view.domConverter;\r\n\r\n\t\teditor.commands.add( 'paragraph', new ParagraphCommand( editor ) );\r\n\r\n\t\t// Schema.\r\n\t\tmodel.schema.register( 'paragraph', { inheritAllFrom: '$block' } );\r\n\r\n\t\teditor.conversion.elementToElement( { model: 'paragraph', view: 'p' } );\r\n\r\n\t\t// Content autoparagraphing. --------------------------------------------------\r\n\r\n\t\t// Handles element which has not been converted by any plugin and checks if it would be converted if\r\n\t\t// we wrap it in a paragraph or change it to a paragraph.\r\n\t\teditor.conversion.for( 'upcast' ).elementToElement( {\r\n\t\t\tmodel: ( viewElement, modelWriter ) => {\r\n\r\n\t\t\t\t//console.log(viewElement);\r\n\r\n\t\t\t\tif ( !Paragraph.paragraphLikeElements.has( viewElement.name ) ) {\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Do not auto-paragraph empty elements.\r\n\t\t\t\tif ( viewElement.isEmpty ) {\r\n\t\t\t\t\t//console.log('Empty par');\r\n\t\t\t\t\t//modelWriter.consumable.consume( viewElement, { name: true } );\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// if(viewElement.parent.is('element') && viewElement.parent.name === 'code') {\r\n\t\t\t\t// \t//modelWriter.consumable.consume( viewElement, { name: true } );\r\n\r\n\t\t\t\t// \tvar text = modelWriter.writer.createText( '123' );\r\n\t\t\t\t// \treturn text;\r\n\t\t\t\t// }\r\n\r\n\t\t\t\treturn modelWriter.writer.createElement( 'paragraph' );\r\n\t\t\t},\r\n\t\t\tconverterPriority: 'high',\r\n\t\t\tview: 'p'\r\n\t\t} );\r\n\r\n\t\teditor.conversion.for( 'upcast' ).elementToElement( {\r\n\t\t\tmodel: ( viewElement, modelWriter ) => {\r\n\t\t\t\t\r\n\t\t\t\t//console.log(viewElement);\r\n\r\n\t\t\t\tif ( !Paragraph.paragraphLikeElements.has( viewElement.name ) ) {\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(viewElement.childCount === 1) {\r\n\t\t\t\t\tvar childEl = viewElement.getChild(0);\r\n\t\t\t\t\t//console.log(childEl);\r\n\t\t\t\t\tif(childEl.is('element', 'b') && childEl.childCount === 1) {\r\n\t\t\t\t\t\tvar nextChild = childEl.getChild(0);\r\n\t\t\t\t\t\tif(nextChild.is('element', 'br') && nextChild.childCount === 0) {\r\n\t\t\t\t\t\t\t//console.log('remove');\r\n\t\t\t\t\t\t\tmodelWriter.consumable.consume( viewElement, { name: true } );\r\n\t\t\t\t\t\t\t//modelWriter.writer.remove(nextChild);\r\n\t\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (childEl.is('element', 'br') && childEl.childCount === 0) {\r\n\t\t\t\t\t\t//console.log('remove');\r\n\t\t\t\t\t\t//modelWriter.writer.remove(childEl);\r\n\t\t\t\t\t\tmodelWriter.consumable.consume( viewElement, { name: true } );\r\n\t\t\t\t\t\treturn null;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\r\n\t\t\t\t// Do not auto-paragraph empty elements.\r\n\t\t\t\tif ( viewElement.isEmpty ) {\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//console.log(viewElement);\r\n\r\n\t\t\t\treturn modelWriter.writer.createElement( 'paragraph' );\r\n\t\t\t},\r\n\t\t\tconverterPriority: 'low',\r\n\t\t\tview: 'div'\r\n\t\t} );\r\n\r\n\t\tdata.upcastDispatcher.on( 'element', ( evt, data, conversionApi ) => {\r\n\r\n\t\t\tif(data.viewItem.name === 'br') {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Do not try auto-paragraphing if the element was already converted.\r\n\t\t\tif ( !conversionApi.consumable.test( data.viewItem, { name: data.viewItem.name } ) ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// If the element is not paragraph-like try wrapping it in a paragraph.\r\n\t\t\tif ( isParagraphable( data.viewItem, data.modelCursor, conversionApi.schema ) ) {\r\n\t\t\t\tObject.assign( data, wrapInParagraph( data.viewItem, data.modelCursor, conversionApi ) );\r\n\t\t\t}\r\n\t\t}, { priority: 'low' } );\r\n\r\n\t\t// Handles not converted text nodes and checks if would be converted if we wraps then by a paragraph.\r\n\t\tdata.upcastDispatcher.on( 'text', ( evt, data, conversionApi ) => {\r\n\t\t\t// When node is already converted then do nothing.\r\n\t\t\tif ( data.modelRange ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif ( isParagraphable( data.viewItem, data.modelCursor, conversionApi.schema ) ) {\r\n\t\t\t\tObject.assign( data, wrapInParagraph( data.viewItem, data.modelCursor, conversionApi ) );\r\n\t\t\t}\r\n\t\t}, { priority: 'lowest' } );\r\n\r\n\t\t// Empty roots autoparagraphing. -----------------------------------------------\r\n\r\n\t\t// Post-fixer which takes care of adding empty paragraph elements to empty roots.\r\n\t\t// Besides fixing content on #changesDone we also need to handle editor.data#ready event because\r\n\t\t// if initial data is empty or setData() wasn't even called there will be no #change fired.\r\n\t\tmodel.document.registerPostFixer( writer => this._autoparagraphEmptyRoots( writer ) );\r\n\r\n\t\teditor.data.on( 'ready', () => {\r\n\t\t\tmodel.enqueueChange( 'transparent', writer => this._autoparagraphEmptyRoots( writer ) );\r\n\t\t}, { priority: 'lowest' } );\r\n\t}\r\n\r\n\t/**\r\n\t * Fixes all empty roots.\r\n\t *\r\n\t * @private\r\n\t * @returns {Boolean} `true` if any change has been applied, `false` otherwise.\r\n\t */\r\n\t_autoparagraphEmptyRoots( writer ) {\r\n\t\tconst model = this.editor.model;\r\n\r\n\t\tfor ( const rootName of model.document.getRootNames() ) {\r\n\t\t\tconst root = model.document.getRoot( rootName );\r\n\r\n\t\t\tif ( root.isEmpty && root.rootName != '$graveyard' ) {\r\n\t\t\t\t// If paragraph element is allowed in the root, create paragraph element.\r\n\t\t\t\tif ( model.schema.checkChild( root, 'paragraph' ) ) {\r\n\t\t\t\t\twriter.insertElement( 'paragraph', root );\r\n\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * A list of element names which should be treated by the autoparagraphing algorithms as\r\n * paragraph-like. This means that e.g. the following content:\r\n *\r\n *\t\t

Foo

\r\n *\t\t\r\n *\t\t\t\r\n *\t\t\t\t\r\n *\t\t\t\t\r\n *\t\t\t\r\n *\t\t
X\r\n *\t\t\t\t\t
    \r\n *\t\t\t\t\t\t
  • Y
  • \r\n *\t\t\t\t\t\t
  • Z
  • \r\n *\t\t\t\t\t
\r\n *\t\t\t\t
\r\n *\r\n * contains five paragraph-like elements: `

`, two ``s and two `
  • `s.\r\n * Hence, if none of the features is going to convert those elements the above content will be automatically handled\r\n * by the paragraph feature and converted to:\r\n *\r\n *\t\t

    Foo

    \r\n *\t\t

    X

    \r\n *\t\t

    Y

    \r\n *\t\t

    Z

    \r\n *\r\n * Note: The `` containing two `
  • ` elements was ignored as the innermost paragraph-like elements\r\n * have a priority upon conversion.\r\n *\r\n * @member {Set.} module:paragraph/paragraph~Paragraph.paragraphLikeElements\r\n */\r\n Paragraph.paragraphLikeElements = new Set( [\r\n\t'blockquote',\r\n\t'dd',\r\n\t'div',\r\n\t'dt',\r\n\t'h1',\r\n\t'h2',\r\n\t'h3',\r\n\t'h4',\r\n\t'h5',\r\n\t'h6',\r\n\t'li',\r\n\t'p',\r\n\t'td'\r\n] );\r\n\r\nfunction wrapInParagraph( input, position, conversionApi ) {\r\n\tconst paragraph = conversionApi.writer.createElement( 'paragraph' );\r\n\r\n\tconversionApi.writer.insert( paragraph, position );\r\n\treturn conversionApi.convertItem( input, conversionApi.writer.createPositionAt( paragraph, 0 ) );\r\n}\r\n\r\nfunction isParagraphable( node, position, schema ) {\r\n\tconst context = schema.createContext( position );\r\n\r\n\t// When paragraph is allowed in this context...\r\n\tif ( !schema.checkChild( context, 'paragraph' ) ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// And a node would be allowed in this paragraph...\r\n\tif ( !schema.checkChild( context.push( 'paragraph' ), node ) ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\treturn true;\r\n}","\r\nconst breadcrumb = {\r\n\r\n addLink: (bc, url, text) => {\r\n bc = bc || '';\r\n if (bc.length > 0) bc = bc + ' > ';\r\n bc = bc + `${text}`;\r\n return bc;\r\n },\r\n\r\n addText: (bc, text) => {\r\n bc = bc || '';\r\n if (bc.length > 0) bc = bc + ' > ';\r\n bc = bc + text;\r\n return bc;\r\n },\r\n\r\n create: (inputs) => {\r\n // creates a breadcrumb from scratch\r\n // inputs is an array of items to add\r\n // if array element has a url property, addLink is called\r\n // if array element has no url property, addText is called\r\n // example call:\r\n /*\r\n bc = common.breadcrumb.create([\r\n { url: '/', text: 'UtterAccess' },\r\n { url: '/boards/22, text: 'Board Name Here' },\r\n { text: 'View Board' }\r\n ]);\r\n */\r\n var bc = '';\r\n for (var i = 0; i < inputs.length; i++) {\r\n var j = inputs[i];\r\n if (j.url) {\r\n bc = breadcrumb.addLink(bc, j.url, j.text);\r\n } else {\r\n bc = breadcrumb.addText(bc, j.text);\r\n }\r\n }\r\n return bc;\r\n }\r\n};\r\n\r\nconst strings = {\r\n\r\n replaceAll: (str, find, replace) => {\r\n if (!str) return str;\r\n return str.replace(new RegExp(strings.escapeRegex(find), 'g'), replace);\r\n },\r\n\r\n escapeRegex: (str) => {\r\n if (!str) return str;\r\n // eslint-disable-next-line no-useless-escape\r\n return str.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, \"\\\\$1\");\r\n }\r\n};\r\n\r\nconst uxUtil = {\r\n scrollToCenter(elementID) {\r\n process.nextTick(() => {\r\n document.getElementById(elementID).scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'nearest'\r\n });\r\n });\r\n }\r\n};\r\n\r\nconst common = {\r\n strings: strings,\r\n breadcrumb: breadcrumb,\r\n uxUtil: uxUtil\r\n};\r\n\r\n\r\n\r\n\r\nexport default common;\r\n\r\n\r\n\r\n","import api from '../api/api'\r\nimport settings from \"../modules/settings\";\r\nimport dialogs from '../modules/dialogs'\r\n\r\nconst useEmo = settings.user.getUseEmoticons();\r\nconst stylePath = () => {\r\n var isDarkTheme = localStorage.getItem('theme') === 'dark';\r\n if (isDarkTheme) {\r\n return '/styles/style-sceditor-dark.css' \r\n } else {\r\n return '/styles/style-sceditor.css'\r\n }\r\n}\r\n\r\nconst postEditor = {\r\n\r\n editorConfig: {\r\n format: 'bbcode',\r\n style: stylePath,\r\n width: '99%',\r\n height: '250px',\r\n toolbar: \"bold,italic,underline|strike,subscript,superscript|left,center,right|size,color,plaintext|bulletlist,orderedlist|table,code,quote|link,unlink|emoticon|date,time|maximize,source\",\r\n autoExpand: true,\r\n plugins: 'dragdrop,plaintext',\r\n emoticonsEnabled: useEmo,\r\n plaintext: {\r\n addButton: false,\r\n enabled: true,\r\n customFunction: () => {\r\n dialogs.alertAsync('this is the custom func running');\r\n },\r\n },\r\n emoticons: {\r\n dropdown: {\r\n ':2cents:': '/emoticons/2cents.gif',\r\n ':bow:': '/emoticons/acclaim.gif',\r\n ':applause:': '/emoticons/applause.gif',\r\n ':btt:': '/emoticons/backtotopic.gif',\r\n ':bg:': '/emoticons/big_grin.gif',\r\n ':o': '/emoticons/blush.gif',\r\n 'o!': '/emoticons/cheers.gif',\r\n ':coffee:': '/emoticons/coffee1.gif/',\r\n ':compute:': '/emoticons/compute.gif',\r\n ':confused:': '/emoticons/confused.gif', \r\n ':cool:': '/emoticons/cool.gif',\r\n ':crazy:': '/emoticons/crazy.gif',\r\n ':bawl:': '/emoticons/cryhard.gif',\r\n ':dance:': '/emoticons/dance.gif',\r\n ':dazed:': '/emoticons/dazed.gif',\r\n ':doh:': '/emoticons/doh.gif',\r\n ':dunno:': '/emoticons/dontknow.gif',\r\n ':dunce:': '/emoticons/dunce.gif',\r\n ':evil:': '/emoticons/evilgrin.gif',\r\n ':(': '/emoticons/frown.gif',\r\n ':fundrink:': '/emoticons/fundrink.gif',\r\n ':giveup:': '/emoticons/giveup.gif',\r\n 'grin::': '/emoticons/grin.gif',\r\n ':halo:': '/emoticons/grinhalo.gif',\r\n ':beer:': '/emoticons/guiness.gif',\r\n ':hattip:': '/emoticons/hat_tip.gif',\r\n ':iconfused:': '/emoticons/iconfused.gif',\r\n ':kiss:': '/emoticons/kisses.gif',\r\n ':D': '/emoticons/laugh.gif',\r\n ':lightbulb:': '/emoticons/lightbulb.gif',\r\n ':like:': '/emoticons/like.png',\r\n ':mad:': '/emoticons/mad.gif',\r\n ':notworthy:': '/emoticons/notworthy.gif',\r\n ':ohyeah:': '/emoticons/ohyeah.gif',\r\n ':ooo:': '/emoticons/ooo.gif',\r\n ':pompom:': '/emoticons/pompom.gif',\r\n ':pullhair:': '/emoticons/pullhair.gif',\r\n ':read:': '/emoticons/reading.gif',\r\n ':lol:': '/emoticons/rotflmao.gif',\r\n ':sad:': '/emoticons/sad.gif',\r\n ':sarcasm:': '/emoticons/sarcasm.gif',\r\n ':shocked:': '/emoticons/shocked.gif',\r\n ':shrug:': '/emoticons/shrug.gif',\r\n ':zzzz:': '/emoticons/sleeping.gif',\r\n ':)': '/emoticons/smile.gif',\r\n ':smirk:': '/emoticons/smirk.gif',\r\n ':thanks:': '/emoticons/thanks.gif',\r\n ':thumbdn:': '/emoticons/thumbdn.gif',\r\n ':thumbup:': '/emoticons/thumbup.gif',\r\n ':p': '/emoticons/tongue.gif',\r\n ':uarulez:': '/emoticons/uarulez2.gif',\r\n ':wary:': '/emoticons/wary.gif',\r\n 'ho!': '/emoticons/wavehi.gif',\r\n ':welcome:': '/emoticons/welcome2UA.gif',\r\n ':whew:': '/emoticons/whew.gif',\r\n ':wine:': '/emoticons/wine.gif',\r\n ';)': '/emoticons/wink.gif',\r\n ':woohoo:': '/emoticons/woohoo.gif',\r\n ':yay:': '/emoticons/yayhandclap.gif',\r\n ':yw:': '/emoticons/yw.gif'\r\n }\r\n },\r\n dragdrop: {\r\n allowedTypes: null,\r\n isAllowed: function(file) {\r\n if (file)\r\n return true;\r\n },\r\n handleFile: function(file, createPlaceholder) {\r\n var placeholder = createPlaceholder();\r\n api.postFile('/attachments/attach', file).then((response) => {\r\n\r\n var att = response.data;\r\n \r\n var elementString = \"\";\r\n\r\n if (att.livePreview === true) {\r\n elementString = ``;\r\n } else {\r\n elementString = `${att.fileName}`;\r\n }\r\n placeholder.insert(elementString);\r\n\r\n }).catch(() => {\r\n placeholder.cancel();\r\n });\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n}\r\n\r\nexport default postEditor;","import { Plugin } from '@ckeditor/ckeditor5-core/src';\r\nimport { Typing } from '@ckeditor/ckeditor5-typing/src';\r\n\r\n/**\r\n * Converting blocks without required by CKEditor
     block. Only needed for content created prior to CKEditor.\r\n */\r\nexport default class LegacyCode extends Plugin {\r\n\r\n    /**\r\n\t * @inheritDoc\r\n\t */\r\n\tstatic get requires() {\r\n\t\treturn [ Typing ];\r\n\t}\r\n\r\n\t/**\r\n\t * @inheritDoc\r\n\t */\r\n\tstatic get pluginName() {\r\n\t\treturn 'LegacyCode';\r\n\t}\r\n\r\n\t/**\r\n\t * @inheritDoc\r\n\t */\r\n\tconstructor( editor ) {\r\n\t\tsuper( editor );\r\n\t}\r\n\r\n    /**\r\n\t * @inheritDoc\r\n\t */\r\n    init() {\r\n        // this.editor.conversion.for( 'upcast' ).elementToElement( {\r\n\t\t// \tmodel: ( viewElement, conversionApi ) => {\r\n\r\n\t\t// \t\tconsole.log(viewElement);\r\n        //         if(viewElement.parent.name === 'pre') {\r\n        //             return; // Already in CKEditor format\r\n        //         }\r\n\r\n\t\t// \t\tconversionApi.consumable.consume( viewElement, { name: true } );\r\n\r\n\t\t// \t\tlet codeBlock = conversionApi.writer.createElement( 'codeBlock' );\r\n\t\t// \t\tcodeBlock._setAttribute('language', 'plaintext');\r\n\r\n\t\t// \t\tif (viewElement.childCount > 0) {\r\n\t\t// \t\t\tconst position = conversionApi.writer.createPositionAfter(codeBlock, 0);\r\n\t\t// \t\t\tconversionApi.writer.insert(codeBlock, position);\r\n\t\t// \t\t\treturn conversionApi.convertChildren(viewElement, position);\r\n\t\t// \t\t}\r\n\t\t\t\t\r\n\r\n\t\t// \t\treturn codeBlock;\r\n\t\t// \t},\r\n\t\t// \tconverterPriority: 'highest',\r\n\t\t// \tview: 'code'\r\n\t\t// } );\r\n\r\n\t\tthis.editor.data.upcastDispatcher.on( 'element:code', ( evt, data, conversionApi ) => {\r\n\t\t\t//const { consumable, schema, writer } = conversionApi;\r\n\t\t\r\n\t\t\tif(data.viewItem.parent.name === 'pre') {\r\n\t\t\t\treturn; // Already in CKEditor format\r\n\t\t\t}\r\n\t\t\r\n\t\t\t//conversionApi.consumable.consume( data.viewItem, { name: true } );\r\n\r\n\t\t\tlet codeBlock = conversionApi.writer.createElement( 'codeBlock' );\r\n\t\t\tcodeBlock._setAttribute('language', 'plaintext');\r\n\r\n\t\t\t//const position = conversionApi.writer.createPositionAfter(codeBlock, 0);\r\n\t\t\t//conversionApi.writer.insert(codeBlock, data.modelCursor);\r\n\t\t\tif ( !conversionApi.safeInsert( codeBlock, data.modelCursor ) ) {\r\n\t\t\t\t// When an element was not inserted, it means that you cannot insert a paragraph at this position.\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconversionApi.consumable.consume(data.viewItem, { name: data.viewItem.name });\r\n\r\n\t\t\t// for ( const topLevelChild of data.viewItem.getChildren()) {\r\n\t\t\t// \tconsole.log(topLevelChild);\r\n\t\t\t// \tif( topLevelChild.is('element')) {\r\n\t\t\t// \t\tfor(const child of topLevelChild.getChildren()) {\r\n\t\t\t// \t\t\tconsole.log(child);\r\n\t\t\t// \t\t\tif(child.is('text')) {\r\n\t\t\t// \t\t\t\tconst text = conversionApi.writer.createText(child.data);\t\r\n\t\t\t// \t\t\t\tconversionApi.writer.insert(conversionApi.writer.createPositionAt(topLevelChild, 0 ), text);\r\n\t\t\t// \t\t\t}\r\n\t\t\t// \t\t}\r\n\t\t\t// \t}\r\n\t\t\t// }\r\n\r\n\t\t\t// Convert the children to a paragraph.\r\n\t\t\tconversionApi.convertChildren(data.viewItem,  codeBlock);\r\n\r\n\t\t\t// Update `modelRange` and `modelCursor` in the `data` as a conversion result.\r\n\t\t\tconversionApi.updateConversionResult(codeBlock, data, conversionApi);\r\n\t\t\t\r\n\r\n\t\t\t// if (data.viewItem.childCount > 0) {\r\n\t\t\t// \tconst position = conversionApi.writer.createPositionAfter(codeBlock, 0);\r\n\t\t\t// \tconversionApi.writer.insert(codeBlock, position);\r\n\t\t\t// \treturn conversionApi.convertChildren(data.viewItem, position);\r\n\t\t\t// }  \r\n\r\n\t\t\t// const fontSize = data.viewItem.getStyle( 'font-size' );\r\n\t\t\r\n\t\t\t// // Do not go for the model element after data.modelCursor because it might happen\r\n\t\t\t// // that a single view element was converted to multiple model elements. Get all of them.\r\n\t\t\t// for ( const item of data.modelRange.getItems( { shallow: true } ) ) {\r\n\t\t\t// \tif ( schema.checkAttribute( item, 'fontSize' ) ) {\r\n\t\t\t// \t\twriter.setAttribute( 'fontSize', fontSize, item );\r\n\t\t\t// \t}\r\n\t\t\t// }\r\n\t\t}, { priority: 'highest' } );\r\n    }\r\n}","import { Plugin } from '@ckeditor/ckeditor5-core/src';\r\n//import { Typing } from '@ckeditor/ckeditor5-typing/src';\r\n\r\nfunction downcastImageAttribute( imageUtils, imageType, attributeKey, viewAttributeKey ) {\r\n\treturn dispatcher => {\r\n\t\tdispatcher.on( `attribute:${ attributeKey }:${ imageType }`, converter );\r\n\t};\r\n\r\n\tfunction converter( evt, data, conversionApi ) {\r\n\t\tif ( !conversionApi.consumable.consume( data.item, evt.name ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst viewWriter = conversionApi.writer;\r\n\t\tconst element = conversionApi.mapper.toViewElement( data.item );\r\n\t\tconst img = imageUtils.findViewImgElement( element );\r\n\r\n\t\tviewWriter.setAttribute( viewAttributeKey, data.attributeNewValue || '', img );\r\n\t}\r\n}\r\n\r\n\r\n/**\r\n * Converting  blocks without required by CKEditor 
     block. Only needed for content created prior to CKEditor.\r\n */\r\nexport default class ImageWrapper extends Plugin {\r\n\r\n    /**\r\n\t * @inheritDoc\r\n\t */\r\n\tstatic get requires() {\r\n\t\treturn [ ];\r\n\t}\r\n\r\n\t/**\r\n\t * @inheritDoc\r\n\t */\r\n\tstatic get pluginName() {\r\n\t\treturn 'ImageWrapper';\r\n\t}\r\n\r\n\t/**\r\n\t * @inheritDoc\r\n\t */\r\n\tconstructor( editor ) {\r\n\t\tsuper( editor );\r\n\t}\r\n\r\n    /**\r\n\t * @inheritDoc\r\n\t */\r\n    init() {\r\n\r\n\t\tconst editor = this.editor;\r\n\t\tconst conversion = editor.conversion;\r\n\t\tconst imageUtils = editor.plugins.get( 'ImageUtils' );\r\n\r\n\t\teditor.model.schema.extend( 'imageInline', { allowAttributes: 'attachmentPreview' } );\r\n\r\n\t\teditor.conversion.for('downcast').add(downcastImageAttribute( imageUtils, 'imageInline', 'attachmentPreview', 'data-ua-attachment-preview' ));\r\n\r\n        editor.conversion.for( 'upcast' ).attributeToAttribute( {\r\n            view: {\r\n                name: 'img',\r\n                key: 'data-ua-attachment-preview'\r\n            },\r\n            model: 'attachmentPreview',\r\n            converterPriority: 'low'\r\n        } );\r\n\r\n\t\teditor.model.schema.addAttributeCheck( context => {\r\n\t\t\t\r\n\t\t\tif ( context.endsWith( 'imageInline' ) ) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tconversion.for( 'downcast' ).add( dispatcher => {\r\n            dispatcher.on( 'insert:imageInline', ( evt, data, conversionApi ) => {\r\n\r\n                // Remember to check whether the change has not been consumed yet and consume it.\r\n                if ( conversionApi.consumable.consume( data.item, 'insert' ) ) {\r\n                    return;\r\n                }\r\n                const writer = conversionApi.writer;\r\n\r\n\t\t\t\twriter.setAttribute('attachmentPreview', 'true', data.item);\r\n\r\n                // Remember to stop the event propagation.\r\n                evt.stop();\r\n            } );\r\n        } );\r\n    }\r\n}"],"sourceRoot":""}