[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
1 /** 2 * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 * Licensed under the LGPL or a commercial license. 4 * For LGPL see License.txt in the project root for license information. 5 * For commercial licenses see https://www.tiny.cloud/ 6 * 7 * Version: 5.10.5 (2022-05-25) 8 */ 9 (function () { 10 'use strict'; 11 12 var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); 13 14 var typeOf = function (x) { 15 var t = typeof x; 16 if (x === null) { 17 return 'null'; 18 } else if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) { 19 return 'array'; 20 } else if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) { 21 return 'string'; 22 } else { 23 return t; 24 } 25 }; 26 var isType$1 = function (type) { 27 return function (value) { 28 return typeOf(value) === type; 29 }; 30 }; 31 var isSimpleType = function (type) { 32 return function (value) { 33 return typeof value === type; 34 }; 35 }; 36 var isString = isType$1('string'); 37 var isBoolean = isSimpleType('boolean'); 38 var isNullable = function (a) { 39 return a === null || a === undefined; 40 }; 41 var isNonNullable = function (a) { 42 return !isNullable(a); 43 }; 44 var isFunction = isSimpleType('function'); 45 var isNumber = isSimpleType('number'); 46 47 var noop = function () { 48 }; 49 var compose1 = function (fbc, fab) { 50 return function (a) { 51 return fbc(fab(a)); 52 }; 53 }; 54 var constant = function (value) { 55 return function () { 56 return value; 57 }; 58 }; 59 var identity = function (x) { 60 return x; 61 }; 62 var never = constant(false); 63 var always = constant(true); 64 65 var none = function () { 66 return NONE; 67 }; 68 var NONE = function () { 69 var call = function (thunk) { 70 return thunk(); 71 }; 72 var id = identity; 73 var me = { 74 fold: function (n, _s) { 75 return n(); 76 }, 77 isSome: never, 78 isNone: always, 79 getOr: id, 80 getOrThunk: call, 81 getOrDie: function (msg) { 82 throw new Error(msg || 'error: getOrDie called on none.'); 83 }, 84 getOrNull: constant(null), 85 getOrUndefined: constant(undefined), 86 or: id, 87 orThunk: call, 88 map: none, 89 each: noop, 90 bind: none, 91 exists: never, 92 forall: always, 93 filter: function () { 94 return none(); 95 }, 96 toArray: function () { 97 return []; 98 }, 99 toString: constant('none()') 100 }; 101 return me; 102 }(); 103 var some = function (a) { 104 var constant_a = constant(a); 105 var self = function () { 106 return me; 107 }; 108 var bind = function (f) { 109 return f(a); 110 }; 111 var me = { 112 fold: function (n, s) { 113 return s(a); 114 }, 115 isSome: always, 116 isNone: never, 117 getOr: constant_a, 118 getOrThunk: constant_a, 119 getOrDie: constant_a, 120 getOrNull: constant_a, 121 getOrUndefined: constant_a, 122 or: self, 123 orThunk: self, 124 map: function (f) { 125 return some(f(a)); 126 }, 127 each: function (f) { 128 f(a); 129 }, 130 bind: bind, 131 exists: bind, 132 forall: bind, 133 filter: function (f) { 134 return f(a) ? me : NONE; 135 }, 136 toArray: function () { 137 return [a]; 138 }, 139 toString: function () { 140 return 'some(' + a + ')'; 141 } 142 }; 143 return me; 144 }; 145 var from = function (value) { 146 return value === null || value === undefined ? NONE : some(value); 147 }; 148 var Optional = { 149 some: some, 150 none: none, 151 from: from 152 }; 153 154 var map = function (xs, f) { 155 var len = xs.length; 156 var r = new Array(len); 157 for (var i = 0; i < len; i++) { 158 var x = xs[i]; 159 r[i] = f(x, i); 160 } 161 return r; 162 }; 163 var each = function (xs, f) { 164 for (var i = 0, len = xs.length; i < len; i++) { 165 var x = xs[i]; 166 f(x, i); 167 } 168 }; 169 var filter = function (xs, pred) { 170 var r = []; 171 for (var i = 0, len = xs.length; i < len; i++) { 172 var x = xs[i]; 173 if (pred(x, i)) { 174 r.push(x); 175 } 176 } 177 return r; 178 }; 179 180 var DOCUMENT = 9; 181 var DOCUMENT_FRAGMENT = 11; 182 var ELEMENT = 1; 183 var TEXT = 3; 184 185 var fromHtml = function (html, scope) { 186 var doc = scope || document; 187 var div = doc.createElement('div'); 188 div.innerHTML = html; 189 if (!div.hasChildNodes() || div.childNodes.length > 1) { 190 console.error('HTML does not have a single root node', html); 191 throw new Error('HTML must have a single root node'); 192 } 193 return fromDom(div.childNodes[0]); 194 }; 195 var fromTag = function (tag, scope) { 196 var doc = scope || document; 197 var node = doc.createElement(tag); 198 return fromDom(node); 199 }; 200 var fromText = function (text, scope) { 201 var doc = scope || document; 202 var node = doc.createTextNode(text); 203 return fromDom(node); 204 }; 205 var fromDom = function (node) { 206 if (node === null || node === undefined) { 207 throw new Error('Node cannot be null or undefined'); 208 } 209 return { dom: node }; 210 }; 211 var fromPoint = function (docElm, x, y) { 212 return Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom); 213 }; 214 var SugarElement = { 215 fromHtml: fromHtml, 216 fromTag: fromTag, 217 fromText: fromText, 218 fromDom: fromDom, 219 fromPoint: fromPoint 220 }; 221 222 var is = function (element, selector) { 223 var dom = element.dom; 224 if (dom.nodeType !== ELEMENT) { 225 return false; 226 } else { 227 var elem = dom; 228 if (elem.matches !== undefined) { 229 return elem.matches(selector); 230 } else if (elem.msMatchesSelector !== undefined) { 231 return elem.msMatchesSelector(selector); 232 } else if (elem.webkitMatchesSelector !== undefined) { 233 return elem.webkitMatchesSelector(selector); 234 } else if (elem.mozMatchesSelector !== undefined) { 235 return elem.mozMatchesSelector(selector); 236 } else { 237 throw new Error('Browser lacks native selectors'); 238 } 239 } 240 }; 241 242 typeof window !== 'undefined' ? window : Function('return this;')(); 243 244 var name = function (element) { 245 var r = element.dom.nodeName; 246 return r.toLowerCase(); 247 }; 248 var type = function (element) { 249 return element.dom.nodeType; 250 }; 251 var isType = function (t) { 252 return function (element) { 253 return type(element) === t; 254 }; 255 }; 256 var isElement = isType(ELEMENT); 257 var isText = isType(TEXT); 258 var isDocument = isType(DOCUMENT); 259 var isDocumentFragment = isType(DOCUMENT_FRAGMENT); 260 var isTag = function (tag) { 261 return function (e) { 262 return isElement(e) && name(e) === tag; 263 }; 264 }; 265 266 var owner = function (element) { 267 return SugarElement.fromDom(element.dom.ownerDocument); 268 }; 269 var documentOrOwner = function (dos) { 270 return isDocument(dos) ? dos : owner(dos); 271 }; 272 var parent = function (element) { 273 return Optional.from(element.dom.parentNode).map(SugarElement.fromDom); 274 }; 275 var children$2 = function (element) { 276 return map(element.dom.childNodes, SugarElement.fromDom); 277 }; 278 279 var rawSet = function (dom, key, value) { 280 if (isString(value) || isBoolean(value) || isNumber(value)) { 281 dom.setAttribute(key, value + ''); 282 } else { 283 console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom); 284 throw new Error('Attribute value was not simple'); 285 } 286 }; 287 var set = function (element, key, value) { 288 rawSet(element.dom, key, value); 289 }; 290 var remove = function (element, key) { 291 element.dom.removeAttribute(key); 292 }; 293 294 var isShadowRoot = function (dos) { 295 return isDocumentFragment(dos) && isNonNullable(dos.dom.host); 296 }; 297 var supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode); 298 var getRootNode = supported ? function (e) { 299 return SugarElement.fromDom(e.dom.getRootNode()); 300 } : documentOrOwner; 301 var getShadowRoot = function (e) { 302 var r = getRootNode(e); 303 return isShadowRoot(r) ? Optional.some(r) : Optional.none(); 304 }; 305 var getShadowHost = function (e) { 306 return SugarElement.fromDom(e.dom.host); 307 }; 308 309 var inBody = function (element) { 310 var dom = isText(element) ? element.dom.parentNode : element.dom; 311 if (dom === undefined || dom === null || dom.ownerDocument === null) { 312 return false; 313 } 314 var doc = dom.ownerDocument; 315 return getShadowRoot(SugarElement.fromDom(dom)).fold(function () { 316 return doc.body.contains(dom); 317 }, compose1(inBody, getShadowHost)); 318 }; 319 320 var ancestor$1 = function (scope, predicate, isRoot) { 321 var element = scope.dom; 322 var stop = isFunction(isRoot) ? isRoot : never; 323 while (element.parentNode) { 324 element = element.parentNode; 325 var el = SugarElement.fromDom(element); 326 if (predicate(el)) { 327 return Optional.some(el); 328 } else if (stop(el)) { 329 break; 330 } 331 } 332 return Optional.none(); 333 }; 334 335 var ancestor = function (scope, selector, isRoot) { 336 return ancestor$1(scope, function (e) { 337 return is(e, selector); 338 }, isRoot); 339 }; 340 341 var isSupported = function (dom) { 342 return dom.style !== undefined && isFunction(dom.style.getPropertyValue); 343 }; 344 345 var get = function (element, property) { 346 var dom = element.dom; 347 var styles = window.getComputedStyle(dom); 348 var r = styles.getPropertyValue(property); 349 return r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r; 350 }; 351 var getUnsafeProperty = function (dom, property) { 352 return isSupported(dom) ? dom.style.getPropertyValue(property) : ''; 353 }; 354 355 var getDirection = function (element) { 356 return get(element, 'direction') === 'rtl' ? 'rtl' : 'ltr'; 357 }; 358 359 var children$1 = function (scope, predicate) { 360 return filter(children$2(scope), predicate); 361 }; 362 363 var children = function (scope, selector) { 364 return children$1(scope, function (e) { 365 return is(e, selector); 366 }); 367 }; 368 369 var getParentElement = function (element) { 370 return parent(element).filter(isElement); 371 }; 372 var getNormalizedBlock = function (element, isListItem) { 373 var normalizedElement = isListItem ? ancestor(element, 'ol,ul') : Optional.some(element); 374 return normalizedElement.getOr(element); 375 }; 376 var isListItem = isTag('li'); 377 var setDir = function (editor, dir) { 378 var selectedBlocks = editor.selection.getSelectedBlocks(); 379 if (selectedBlocks.length > 0) { 380 each(selectedBlocks, function (block) { 381 var blockElement = SugarElement.fromDom(block); 382 var isBlockElementListItem = isListItem(blockElement); 383 var normalizedBlock = getNormalizedBlock(blockElement, isBlockElementListItem); 384 var normalizedBlockParent = getParentElement(normalizedBlock); 385 normalizedBlockParent.each(function (parent) { 386 var parentDirection = getDirection(parent); 387 if (parentDirection !== dir) { 388 set(normalizedBlock, 'dir', dir); 389 } else if (getDirection(normalizedBlock) !== dir) { 390 remove(normalizedBlock, 'dir'); 391 } 392 if (isBlockElementListItem) { 393 var listItems = children(normalizedBlock, 'li[dir]'); 394 each(listItems, function (listItem) { 395 return remove(listItem, 'dir'); 396 }); 397 } 398 }); 399 }); 400 editor.nodeChanged(); 401 } 402 }; 403 404 var register$1 = function (editor) { 405 editor.addCommand('mceDirectionLTR', function () { 406 setDir(editor, 'ltr'); 407 }); 408 editor.addCommand('mceDirectionRTL', function () { 409 setDir(editor, 'rtl'); 410 }); 411 }; 412 413 var getNodeChangeHandler = function (editor, dir) { 414 return function (api) { 415 var nodeChangeHandler = function (e) { 416 var element = SugarElement.fromDom(e.element); 417 api.setActive(getDirection(element) === dir); 418 }; 419 editor.on('NodeChange', nodeChangeHandler); 420 return function () { 421 return editor.off('NodeChange', nodeChangeHandler); 422 }; 423 }; 424 }; 425 var register = function (editor) { 426 editor.ui.registry.addToggleButton('ltr', { 427 tooltip: 'Left to right', 428 icon: 'ltr', 429 onAction: function () { 430 return editor.execCommand('mceDirectionLTR'); 431 }, 432 onSetup: getNodeChangeHandler(editor, 'ltr') 433 }); 434 editor.ui.registry.addToggleButton('rtl', { 435 tooltip: 'Right to left', 436 icon: 'rtl', 437 onAction: function () { 438 return editor.execCommand('mceDirectionRTL'); 439 }, 440 onSetup: getNodeChangeHandler(editor, 'rtl') 441 }); 442 }; 443 444 function Plugin () { 445 global.add('directionality', function (editor) { 446 register$1(editor); 447 register(editor); 448 }); 449 } 450 451 Plugin(); 452 453 }());
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |