primo commit
This commit is contained in:
		
							
								
								
									
										7
									
								
								media/vendor/tinymce/plugins/directionality/index.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								media/vendor/tinymce/plugins/directionality/index.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | ||||
| // Exports the "directionality" plugin for usage with module loaders | ||||
| // Usage: | ||||
| //   CommonJS: | ||||
| //     require('tinymce/plugins/directionality') | ||||
| //   ES2015: | ||||
| //     import 'tinymce/plugins/directionality' | ||||
| require('./plugin.js'); | ||||
							
								
								
									
										395
									
								
								media/vendor/tinymce/plugins/directionality/plugin.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										395
									
								
								media/vendor/tinymce/plugins/directionality/plugin.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,395 @@ | ||||
| /** | ||||
|  * TinyMCE version 6.8.4 (2024-06-19) | ||||
|  */ | ||||
|  | ||||
| (function () { | ||||
|     'use strict'; | ||||
|  | ||||
|     var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); | ||||
|  | ||||
|     const hasProto = (v, constructor, predicate) => { | ||||
|       var _a; | ||||
|       if (predicate(v, constructor.prototype)) { | ||||
|         return true; | ||||
|       } else { | ||||
|         return ((_a = v.constructor) === null || _a === void 0 ? void 0 : _a.name) === constructor.name; | ||||
|       } | ||||
|     }; | ||||
|     const typeOf = x => { | ||||
|       const t = typeof x; | ||||
|       if (x === null) { | ||||
|         return 'null'; | ||||
|       } else if (t === 'object' && Array.isArray(x)) { | ||||
|         return 'array'; | ||||
|       } else if (t === 'object' && hasProto(x, String, (o, proto) => proto.isPrototypeOf(o))) { | ||||
|         return 'string'; | ||||
|       } else { | ||||
|         return t; | ||||
|       } | ||||
|     }; | ||||
|     const isType$1 = type => value => typeOf(value) === type; | ||||
|     const isSimpleType = type => value => typeof value === type; | ||||
|     const isString = isType$1('string'); | ||||
|     const isBoolean = isSimpleType('boolean'); | ||||
|     const isNullable = a => a === null || a === undefined; | ||||
|     const isNonNullable = a => !isNullable(a); | ||||
|     const isFunction = isSimpleType('function'); | ||||
|     const isNumber = isSimpleType('number'); | ||||
|  | ||||
|     const compose1 = (fbc, fab) => a => fbc(fab(a)); | ||||
|     const constant = value => { | ||||
|       return () => { | ||||
|         return value; | ||||
|       }; | ||||
|     }; | ||||
|     const never = constant(false); | ||||
|  | ||||
|     class Optional { | ||||
|       constructor(tag, value) { | ||||
|         this.tag = tag; | ||||
|         this.value = value; | ||||
|       } | ||||
|       static some(value) { | ||||
|         return new Optional(true, value); | ||||
|       } | ||||
|       static none() { | ||||
|         return Optional.singletonNone; | ||||
|       } | ||||
|       fold(onNone, onSome) { | ||||
|         if (this.tag) { | ||||
|           return onSome(this.value); | ||||
|         } else { | ||||
|           return onNone(); | ||||
|         } | ||||
|       } | ||||
|       isSome() { | ||||
|         return this.tag; | ||||
|       } | ||||
|       isNone() { | ||||
|         return !this.tag; | ||||
|       } | ||||
|       map(mapper) { | ||||
|         if (this.tag) { | ||||
|           return Optional.some(mapper(this.value)); | ||||
|         } else { | ||||
|           return Optional.none(); | ||||
|         } | ||||
|       } | ||||
|       bind(binder) { | ||||
|         if (this.tag) { | ||||
|           return binder(this.value); | ||||
|         } else { | ||||
|           return Optional.none(); | ||||
|         } | ||||
|       } | ||||
|       exists(predicate) { | ||||
|         return this.tag && predicate(this.value); | ||||
|       } | ||||
|       forall(predicate) { | ||||
|         return !this.tag || predicate(this.value); | ||||
|       } | ||||
|       filter(predicate) { | ||||
|         if (!this.tag || predicate(this.value)) { | ||||
|           return this; | ||||
|         } else { | ||||
|           return Optional.none(); | ||||
|         } | ||||
|       } | ||||
|       getOr(replacement) { | ||||
|         return this.tag ? this.value : replacement; | ||||
|       } | ||||
|       or(replacement) { | ||||
|         return this.tag ? this : replacement; | ||||
|       } | ||||
|       getOrThunk(thunk) { | ||||
|         return this.tag ? this.value : thunk(); | ||||
|       } | ||||
|       orThunk(thunk) { | ||||
|         return this.tag ? this : thunk(); | ||||
|       } | ||||
|       getOrDie(message) { | ||||
|         if (!this.tag) { | ||||
|           throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None'); | ||||
|         } else { | ||||
|           return this.value; | ||||
|         } | ||||
|       } | ||||
|       static from(value) { | ||||
|         return isNonNullable(value) ? Optional.some(value) : Optional.none(); | ||||
|       } | ||||
|       getOrNull() { | ||||
|         return this.tag ? this.value : null; | ||||
|       } | ||||
|       getOrUndefined() { | ||||
|         return this.value; | ||||
|       } | ||||
|       each(worker) { | ||||
|         if (this.tag) { | ||||
|           worker(this.value); | ||||
|         } | ||||
|       } | ||||
|       toArray() { | ||||
|         return this.tag ? [this.value] : []; | ||||
|       } | ||||
|       toString() { | ||||
|         return this.tag ? `some(${ this.value })` : 'none()'; | ||||
|       } | ||||
|     } | ||||
|     Optional.singletonNone = new Optional(false); | ||||
|  | ||||
|     const map = (xs, f) => { | ||||
|       const len = xs.length; | ||||
|       const r = new Array(len); | ||||
|       for (let i = 0; i < len; i++) { | ||||
|         const x = xs[i]; | ||||
|         r[i] = f(x, i); | ||||
|       } | ||||
|       return r; | ||||
|     }; | ||||
|     const each = (xs, f) => { | ||||
|       for (let i = 0, len = xs.length; i < len; i++) { | ||||
|         const x = xs[i]; | ||||
|         f(x, i); | ||||
|       } | ||||
|     }; | ||||
|     const filter = (xs, pred) => { | ||||
|       const r = []; | ||||
|       for (let i = 0, len = xs.length; i < len; i++) { | ||||
|         const x = xs[i]; | ||||
|         if (pred(x, i)) { | ||||
|           r.push(x); | ||||
|         } | ||||
|       } | ||||
|       return r; | ||||
|     }; | ||||
|  | ||||
|     const DOCUMENT = 9; | ||||
|     const DOCUMENT_FRAGMENT = 11; | ||||
|     const ELEMENT = 1; | ||||
|     const TEXT = 3; | ||||
|  | ||||
|     const fromHtml = (html, scope) => { | ||||
|       const doc = scope || document; | ||||
|       const div = doc.createElement('div'); | ||||
|       div.innerHTML = html; | ||||
|       if (!div.hasChildNodes() || div.childNodes.length > 1) { | ||||
|         const message = 'HTML does not have a single root node'; | ||||
|         console.error(message, html); | ||||
|         throw new Error(message); | ||||
|       } | ||||
|       return fromDom(div.childNodes[0]); | ||||
|     }; | ||||
|     const fromTag = (tag, scope) => { | ||||
|       const doc = scope || document; | ||||
|       const node = doc.createElement(tag); | ||||
|       return fromDom(node); | ||||
|     }; | ||||
|     const fromText = (text, scope) => { | ||||
|       const doc = scope || document; | ||||
|       const node = doc.createTextNode(text); | ||||
|       return fromDom(node); | ||||
|     }; | ||||
|     const fromDom = node => { | ||||
|       if (node === null || node === undefined) { | ||||
|         throw new Error('Node cannot be null or undefined'); | ||||
|       } | ||||
|       return { dom: node }; | ||||
|     }; | ||||
|     const fromPoint = (docElm, x, y) => Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom); | ||||
|     const SugarElement = { | ||||
|       fromHtml, | ||||
|       fromTag, | ||||
|       fromText, | ||||
|       fromDom, | ||||
|       fromPoint | ||||
|     }; | ||||
|  | ||||
|     const is = (element, selector) => { | ||||
|       const dom = element.dom; | ||||
|       if (dom.nodeType !== ELEMENT) { | ||||
|         return false; | ||||
|       } else { | ||||
|         const elem = dom; | ||||
|         if (elem.matches !== undefined) { | ||||
|           return elem.matches(selector); | ||||
|         } else if (elem.msMatchesSelector !== undefined) { | ||||
|           return elem.msMatchesSelector(selector); | ||||
|         } else if (elem.webkitMatchesSelector !== undefined) { | ||||
|           return elem.webkitMatchesSelector(selector); | ||||
|         } else if (elem.mozMatchesSelector !== undefined) { | ||||
|           return elem.mozMatchesSelector(selector); | ||||
|         } else { | ||||
|           throw new Error('Browser lacks native selectors'); | ||||
|         } | ||||
|       } | ||||
|     }; | ||||
|  | ||||
|     typeof window !== 'undefined' ? window : Function('return this;')(); | ||||
|  | ||||
|     const name = element => { | ||||
|       const r = element.dom.nodeName; | ||||
|       return r.toLowerCase(); | ||||
|     }; | ||||
|     const type = element => element.dom.nodeType; | ||||
|     const isType = t => element => type(element) === t; | ||||
|     const isElement = isType(ELEMENT); | ||||
|     const isText = isType(TEXT); | ||||
|     const isDocument = isType(DOCUMENT); | ||||
|     const isDocumentFragment = isType(DOCUMENT_FRAGMENT); | ||||
|     const isTag = tag => e => isElement(e) && name(e) === tag; | ||||
|  | ||||
|     const owner = element => SugarElement.fromDom(element.dom.ownerDocument); | ||||
|     const documentOrOwner = dos => isDocument(dos) ? dos : owner(dos); | ||||
|     const parent = element => Optional.from(element.dom.parentNode).map(SugarElement.fromDom); | ||||
|     const children$2 = element => map(element.dom.childNodes, SugarElement.fromDom); | ||||
|  | ||||
|     const rawSet = (dom, key, value) => { | ||||
|       if (isString(value) || isBoolean(value) || isNumber(value)) { | ||||
|         dom.setAttribute(key, value + ''); | ||||
|       } else { | ||||
|         console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom); | ||||
|         throw new Error('Attribute value was not simple'); | ||||
|       } | ||||
|     }; | ||||
|     const set = (element, key, value) => { | ||||
|       rawSet(element.dom, key, value); | ||||
|     }; | ||||
|     const remove = (element, key) => { | ||||
|       element.dom.removeAttribute(key); | ||||
|     }; | ||||
|  | ||||
|     const isShadowRoot = dos => isDocumentFragment(dos) && isNonNullable(dos.dom.host); | ||||
|     const supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode); | ||||
|     const getRootNode = supported ? e => SugarElement.fromDom(e.dom.getRootNode()) : documentOrOwner; | ||||
|     const getShadowRoot = e => { | ||||
|       const r = getRootNode(e); | ||||
|       return isShadowRoot(r) ? Optional.some(r) : Optional.none(); | ||||
|     }; | ||||
|     const getShadowHost = e => SugarElement.fromDom(e.dom.host); | ||||
|  | ||||
|     const inBody = element => { | ||||
|       const dom = isText(element) ? element.dom.parentNode : element.dom; | ||||
|       if (dom === undefined || dom === null || dom.ownerDocument === null) { | ||||
|         return false; | ||||
|       } | ||||
|       const doc = dom.ownerDocument; | ||||
|       return getShadowRoot(SugarElement.fromDom(dom)).fold(() => doc.body.contains(dom), compose1(inBody, getShadowHost)); | ||||
|     }; | ||||
|  | ||||
|     const ancestor$1 = (scope, predicate, isRoot) => { | ||||
|       let element = scope.dom; | ||||
|       const stop = isFunction(isRoot) ? isRoot : never; | ||||
|       while (element.parentNode) { | ||||
|         element = element.parentNode; | ||||
|         const el = SugarElement.fromDom(element); | ||||
|         if (predicate(el)) { | ||||
|           return Optional.some(el); | ||||
|         } else if (stop(el)) { | ||||
|           break; | ||||
|         } | ||||
|       } | ||||
|       return Optional.none(); | ||||
|     }; | ||||
|  | ||||
|     const ancestor = (scope, selector, isRoot) => ancestor$1(scope, e => is(e, selector), isRoot); | ||||
|  | ||||
|     const isSupported = dom => dom.style !== undefined && isFunction(dom.style.getPropertyValue); | ||||
|  | ||||
|     const get = (element, property) => { | ||||
|       const dom = element.dom; | ||||
|       const styles = window.getComputedStyle(dom); | ||||
|       const r = styles.getPropertyValue(property); | ||||
|       return r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r; | ||||
|     }; | ||||
|     const getUnsafeProperty = (dom, property) => isSupported(dom) ? dom.style.getPropertyValue(property) : ''; | ||||
|  | ||||
|     const getDirection = element => get(element, 'direction') === 'rtl' ? 'rtl' : 'ltr'; | ||||
|  | ||||
|     const children$1 = (scope, predicate) => filter(children$2(scope), predicate); | ||||
|  | ||||
|     const children = (scope, selector) => children$1(scope, e => is(e, selector)); | ||||
|  | ||||
|     const getParentElement = element => parent(element).filter(isElement); | ||||
|     const getNormalizedBlock = (element, isListItem) => { | ||||
|       const normalizedElement = isListItem ? ancestor(element, 'ol,ul') : Optional.some(element); | ||||
|       return normalizedElement.getOr(element); | ||||
|     }; | ||||
|     const isListItem = isTag('li'); | ||||
|     const setDirOnElements = (dom, blocks, dir) => { | ||||
|       each(blocks, block => { | ||||
|         const blockElement = SugarElement.fromDom(block); | ||||
|         const isBlockElementListItem = isListItem(blockElement); | ||||
|         const normalizedBlock = getNormalizedBlock(blockElement, isBlockElementListItem); | ||||
|         const normalizedBlockParent = getParentElement(normalizedBlock); | ||||
|         normalizedBlockParent.each(parent => { | ||||
|           dom.setStyle(normalizedBlock.dom, 'direction', null); | ||||
|           const parentDirection = getDirection(parent); | ||||
|           if (parentDirection === dir) { | ||||
|             remove(normalizedBlock, 'dir'); | ||||
|           } else { | ||||
|             set(normalizedBlock, 'dir', dir); | ||||
|           } | ||||
|           if (getDirection(normalizedBlock) !== dir) { | ||||
|             dom.setStyle(normalizedBlock.dom, 'direction', dir); | ||||
|           } | ||||
|           if (isBlockElementListItem) { | ||||
|             const listItems = children(normalizedBlock, 'li[dir],li[style]'); | ||||
|             each(listItems, listItem => { | ||||
|               remove(listItem, 'dir'); | ||||
|               dom.setStyle(listItem.dom, 'direction', null); | ||||
|             }); | ||||
|           } | ||||
|         }); | ||||
|       }); | ||||
|     }; | ||||
|     const setDir = (editor, dir) => { | ||||
|       if (editor.selection.isEditable()) { | ||||
|         setDirOnElements(editor.dom, editor.selection.getSelectedBlocks(), dir); | ||||
|         editor.nodeChanged(); | ||||
|       } | ||||
|     }; | ||||
|  | ||||
|     const register$1 = editor => { | ||||
|       editor.addCommand('mceDirectionLTR', () => { | ||||
|         setDir(editor, 'ltr'); | ||||
|       }); | ||||
|       editor.addCommand('mceDirectionRTL', () => { | ||||
|         setDir(editor, 'rtl'); | ||||
|       }); | ||||
|     }; | ||||
|  | ||||
|     const getNodeChangeHandler = (editor, dir) => api => { | ||||
|       const nodeChangeHandler = e => { | ||||
|         const element = SugarElement.fromDom(e.element); | ||||
|         api.setActive(getDirection(element) === dir); | ||||
|         api.setEnabled(editor.selection.isEditable()); | ||||
|       }; | ||||
|       editor.on('NodeChange', nodeChangeHandler); | ||||
|       api.setEnabled(editor.selection.isEditable()); | ||||
|       return () => editor.off('NodeChange', nodeChangeHandler); | ||||
|     }; | ||||
|     const register = editor => { | ||||
|       editor.ui.registry.addToggleButton('ltr', { | ||||
|         tooltip: 'Left to right', | ||||
|         icon: 'ltr', | ||||
|         onAction: () => editor.execCommand('mceDirectionLTR'), | ||||
|         onSetup: getNodeChangeHandler(editor, 'ltr') | ||||
|       }); | ||||
|       editor.ui.registry.addToggleButton('rtl', { | ||||
|         tooltip: 'Right to left', | ||||
|         icon: 'rtl', | ||||
|         onAction: () => editor.execCommand('mceDirectionRTL'), | ||||
|         onSetup: getNodeChangeHandler(editor, 'rtl') | ||||
|       }); | ||||
|     }; | ||||
|  | ||||
|     var Plugin = () => { | ||||
|       global.add('directionality', editor => { | ||||
|         register$1(editor); | ||||
|         register(editor); | ||||
|       }); | ||||
|     }; | ||||
|  | ||||
|     Plugin(); | ||||
|  | ||||
| })(); | ||||
							
								
								
									
										4
									
								
								media/vendor/tinymce/plugins/directionality/plugin.min.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								media/vendor/tinymce/plugins/directionality/plugin.min.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | ||||
| /** | ||||
|  * TinyMCE version 6.8.4 (2024-06-19) | ||||
|  */ | ||||
| !function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager");const e=t=>e=>typeof e===t,o=t=>"string"===(t=>{const e=typeof t;return null===t?"null":"object"===e&&Array.isArray(t)?"array":"object"===e&&(o=r=t,(n=String).prototype.isPrototypeOf(o)||(null===(i=r.constructor)||void 0===i?void 0:i.name)===n.name)?"string":e;var o,r,n,i})(t),r=e("boolean"),n=t=>!(t=>null==t)(t),i=e("function"),s=e("number"),l=(!1,()=>false);class a{constructor(t,e){this.tag=t,this.value=e}static some(t){return new a(!0,t)}static none(){return a.singletonNone}fold(t,e){return this.tag?e(this.value):t()}isSome(){return this.tag}isNone(){return!this.tag}map(t){return this.tag?a.some(t(this.value)):a.none()}bind(t){return this.tag?t(this.value):a.none()}exists(t){return this.tag&&t(this.value)}forall(t){return!this.tag||t(this.value)}filter(t){return!this.tag||t(this.value)?this:a.none()}getOr(t){return this.tag?this.value:t}or(t){return this.tag?this:t}getOrThunk(t){return this.tag?this.value:t()}orThunk(t){return this.tag?this:t()}getOrDie(t){if(this.tag)return this.value;throw new Error(null!=t?t:"Called getOrDie on None")}static from(t){return n(t)?a.some(t):a.none()}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(t){this.tag&&t(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:"none()"}}a.singletonNone=new a(!1);const u=(t,e)=>{for(let o=0,r=t.length;o<r;o++)e(t[o],o)},c=t=>{if(null==t)throw new Error("Node cannot be null or undefined");return{dom:t}},d=c,h=(t,e)=>{const o=t.dom;if(1!==o.nodeType)return!1;{const t=o;if(void 0!==t.matches)return t.matches(e);if(void 0!==t.msMatchesSelector)return t.msMatchesSelector(e);if(void 0!==t.webkitMatchesSelector)return t.webkitMatchesSelector(e);if(void 0!==t.mozMatchesSelector)return t.mozMatchesSelector(e);throw new Error("Browser lacks native selectors")}};"undefined"!=typeof window?window:Function("return this;")();const m=t=>e=>(t=>t.dom.nodeType)(e)===t,g=m(1),f=m(3),v=m(9),y=m(11),p=(t,e)=>{t.dom.removeAttribute(e)},w=i(Element.prototype.attachShadow)&&i(Node.prototype.getRootNode)?t=>d(t.dom.getRootNode()):t=>v(t)?t:d(t.dom.ownerDocument),b=t=>d(t.dom.host),N=t=>{const e=f(t)?t.dom.parentNode:t.dom;if(null==e||null===e.ownerDocument)return!1;const o=e.ownerDocument;return(t=>{const e=w(t);return y(o=e)&&n(o.dom.host)?a.some(e):a.none();var o})(d(e)).fold((()=>o.body.contains(e)),(r=N,i=b,t=>r(i(t))));var r,i},S=t=>"rtl"===((t,e)=>{const o=t.dom,r=window.getComputedStyle(o).getPropertyValue(e);return""!==r||N(t)?r:((t,e)=>(t=>void 0!==t.style&&i(t.style.getPropertyValue))(t)?t.style.getPropertyValue(e):"")(o,e)})(t,"direction")?"rtl":"ltr",A=(t,e)=>((t,o)=>((t,e)=>{const o=[];for(let r=0,n=t.length;r<n;r++){const n=t[r];e(n,r)&&o.push(n)}return o})(((t,e)=>{const o=t.length,r=new Array(o);for(let n=0;n<o;n++){const o=t[n];r[n]=e(o,n)}return r})(t.dom.childNodes,d),(t=>h(t,e))))(t),E=("li",t=>g(t)&&"li"===t.dom.nodeName.toLowerCase());const T=(t,e,n)=>{u(e,(e=>{const c=d(e),m=E(c),f=((t,e)=>{return(e?(o=t,r="ol,ul",((t,e,o)=>{let n=t.dom;const s=i(o)?o:l;for(;n.parentNode;){n=n.parentNode;const t=d(n);if(h(t,r))return a.some(t);if(s(t))break}return a.none()})(o,0,n)):a.some(t)).getOr(t);var o,r,n})(c,m);var v;(v=f,(t=>a.from(t.dom.parentNode).map(d))(v).filter(g)).each((e=>{if(t.setStyle(f.dom,"direction",null),S(e)===n?p(f,"dir"):((t,e,n)=>{((t,e,n)=>{if(!(o(n)||r(n)||s(n)))throw console.error("Invalid call to Attribute.set. Key ",e,":: Value ",n,":: Element ",t),new Error("Attribute value was not simple");t.setAttribute(e,n+"")})(t.dom,e,n)})(f,"dir",n),S(f)!==n&&t.setStyle(f.dom,"direction",n),m){const e=A(f,"li[dir],li[style]");u(e,(e=>{p(e,"dir"),t.setStyle(e.dom,"direction",null)}))}}))}))},C=(t,e)=>{t.selection.isEditable()&&(T(t.dom,t.selection.getSelectedBlocks(),e),t.nodeChanged())},D=(t,e)=>o=>{const r=r=>{const n=d(r.element);o.setActive(S(n)===e),o.setEnabled(t.selection.isEditable())};return t.on("NodeChange",r),o.setEnabled(t.selection.isEditable()),()=>t.off("NodeChange",r)};t.add("directionality",(t=>{(t=>{t.addCommand("mceDirectionLTR",(()=>{C(t,"ltr")})),t.addCommand("mceDirectionRTL",(()=>{C(t,"rtl")}))})(t),(t=>{t.ui.registry.addToggleButton("ltr",{tooltip:"Left to right",icon:"ltr",onAction:()=>t.execCommand("mceDirectionLTR"),onSetup:D(t,"ltr")}),t.ui.registry.addToggleButton("rtl",{tooltip:"Right to left",icon:"rtl",onAction:()=>t.execCommand("mceDirectionRTL"),onSetup:D(t,"rtl")})})(t)}))}(); | ||||
							
								
								
									
										
											BIN
										
									
								
								media/vendor/tinymce/plugins/directionality/plugin.min.js.gz
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								media/vendor/tinymce/plugins/directionality/plugin.min.js.gz
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user