[ 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 Cell = function (initial) { 13 var value = initial; 14 var get = function () { 15 return value; 16 }; 17 var set = function (v) { 18 value = v; 19 }; 20 return { 21 get: get, 22 set: set 23 }; 24 }; 25 26 var global$3 = tinymce.util.Tools.resolve('tinymce.PluginManager'); 27 28 var get$5 = function (fullscreenState) { 29 return { 30 isFullscreen: function () { 31 return fullscreenState.get() !== null; 32 } 33 }; 34 }; 35 36 var typeOf = function (x) { 37 var t = typeof x; 38 if (x === null) { 39 return 'null'; 40 } else if (t === 'object' && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'Array')) { 41 return 'array'; 42 } else if (t === 'object' && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === 'String')) { 43 return 'string'; 44 } else { 45 return t; 46 } 47 }; 48 var isType$1 = function (type) { 49 return function (value) { 50 return typeOf(value) === type; 51 }; 52 }; 53 var isSimpleType = function (type) { 54 return function (value) { 55 return typeof value === type; 56 }; 57 }; 58 var isString = isType$1('string'); 59 var isArray = isType$1('array'); 60 var isBoolean = isSimpleType('boolean'); 61 var isNullable = function (a) { 62 return a === null || a === undefined; 63 }; 64 var isNonNullable = function (a) { 65 return !isNullable(a); 66 }; 67 var isFunction = isSimpleType('function'); 68 var isNumber = isSimpleType('number'); 69 70 var noop = function () { 71 }; 72 var compose = function (fa, fb) { 73 return function () { 74 var args = []; 75 for (var _i = 0; _i < arguments.length; _i++) { 76 args[_i] = arguments[_i]; 77 } 78 return fa(fb.apply(null, args)); 79 }; 80 }; 81 var compose1 = function (fbc, fab) { 82 return function (a) { 83 return fbc(fab(a)); 84 }; 85 }; 86 var constant = function (value) { 87 return function () { 88 return value; 89 }; 90 }; 91 var identity = function (x) { 92 return x; 93 }; 94 function curry(fn) { 95 var initialArgs = []; 96 for (var _i = 1; _i < arguments.length; _i++) { 97 initialArgs[_i - 1] = arguments[_i]; 98 } 99 return function () { 100 var restArgs = []; 101 for (var _i = 0; _i < arguments.length; _i++) { 102 restArgs[_i] = arguments[_i]; 103 } 104 var all = initialArgs.concat(restArgs); 105 return fn.apply(null, all); 106 }; 107 } 108 var never = constant(false); 109 var always = constant(true); 110 111 var none = function () { 112 return NONE; 113 }; 114 var NONE = function () { 115 var call = function (thunk) { 116 return thunk(); 117 }; 118 var id = identity; 119 var me = { 120 fold: function (n, _s) { 121 return n(); 122 }, 123 isSome: never, 124 isNone: always, 125 getOr: id, 126 getOrThunk: call, 127 getOrDie: function (msg) { 128 throw new Error(msg || 'error: getOrDie called on none.'); 129 }, 130 getOrNull: constant(null), 131 getOrUndefined: constant(undefined), 132 or: id, 133 orThunk: call, 134 map: none, 135 each: noop, 136 bind: none, 137 exists: never, 138 forall: always, 139 filter: function () { 140 return none(); 141 }, 142 toArray: function () { 143 return []; 144 }, 145 toString: constant('none()') 146 }; 147 return me; 148 }(); 149 var some = function (a) { 150 var constant_a = constant(a); 151 var self = function () { 152 return me; 153 }; 154 var bind = function (f) { 155 return f(a); 156 }; 157 var me = { 158 fold: function (n, s) { 159 return s(a); 160 }, 161 isSome: always, 162 isNone: never, 163 getOr: constant_a, 164 getOrThunk: constant_a, 165 getOrDie: constant_a, 166 getOrNull: constant_a, 167 getOrUndefined: constant_a, 168 or: self, 169 orThunk: self, 170 map: function (f) { 171 return some(f(a)); 172 }, 173 each: function (f) { 174 f(a); 175 }, 176 bind: bind, 177 exists: bind, 178 forall: bind, 179 filter: function (f) { 180 return f(a) ? me : NONE; 181 }, 182 toArray: function () { 183 return [a]; 184 }, 185 toString: function () { 186 return 'some(' + a + ')'; 187 } 188 }; 189 return me; 190 }; 191 var from = function (value) { 192 return value === null || value === undefined ? NONE : some(value); 193 }; 194 var Optional = { 195 some: some, 196 none: none, 197 from: from 198 }; 199 200 var __assign = function () { 201 __assign = Object.assign || function __assign(t) { 202 for (var s, i = 1, n = arguments.length; i < n; i++) { 203 s = arguments[i]; 204 for (var p in s) 205 if (Object.prototype.hasOwnProperty.call(s, p)) 206 t[p] = s[p]; 207 } 208 return t; 209 }; 210 return __assign.apply(this, arguments); 211 }; 212 213 var singleton = function (doRevoke) { 214 var subject = Cell(Optional.none()); 215 var revoke = function () { 216 return subject.get().each(doRevoke); 217 }; 218 var clear = function () { 219 revoke(); 220 subject.set(Optional.none()); 221 }; 222 var isSet = function () { 223 return subject.get().isSome(); 224 }; 225 var get = function () { 226 return subject.get(); 227 }; 228 var set = function (s) { 229 revoke(); 230 subject.set(Optional.some(s)); 231 }; 232 return { 233 clear: clear, 234 isSet: isSet, 235 get: get, 236 set: set 237 }; 238 }; 239 var unbindable = function () { 240 return singleton(function (s) { 241 return s.unbind(); 242 }); 243 }; 244 var value = function () { 245 var subject = singleton(noop); 246 var on = function (f) { 247 return subject.get().each(f); 248 }; 249 return __assign(__assign({}, subject), { on: on }); 250 }; 251 252 var nativePush = Array.prototype.push; 253 var map = function (xs, f) { 254 var len = xs.length; 255 var r = new Array(len); 256 for (var i = 0; i < len; i++) { 257 var x = xs[i]; 258 r[i] = f(x, i); 259 } 260 return r; 261 }; 262 var each$1 = function (xs, f) { 263 for (var i = 0, len = xs.length; i < len; i++) { 264 var x = xs[i]; 265 f(x, i); 266 } 267 }; 268 var filter$1 = function (xs, pred) { 269 var r = []; 270 for (var i = 0, len = xs.length; i < len; i++) { 271 var x = xs[i]; 272 if (pred(x, i)) { 273 r.push(x); 274 } 275 } 276 return r; 277 }; 278 var findUntil = function (xs, pred, until) { 279 for (var i = 0, len = xs.length; i < len; i++) { 280 var x = xs[i]; 281 if (pred(x, i)) { 282 return Optional.some(x); 283 } else if (until(x, i)) { 284 break; 285 } 286 } 287 return Optional.none(); 288 }; 289 var find$1 = function (xs, pred) { 290 return findUntil(xs, pred, never); 291 }; 292 var flatten = function (xs) { 293 var r = []; 294 for (var i = 0, len = xs.length; i < len; ++i) { 295 if (!isArray(xs[i])) { 296 throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs); 297 } 298 nativePush.apply(r, xs[i]); 299 } 300 return r; 301 }; 302 var bind$3 = function (xs, f) { 303 return flatten(map(xs, f)); 304 }; 305 var get$4 = function (xs, i) { 306 return i >= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none(); 307 }; 308 var head = function (xs) { 309 return get$4(xs, 0); 310 }; 311 var findMap = function (arr, f) { 312 for (var i = 0; i < arr.length; i++) { 313 var r = f(arr[i], i); 314 if (r.isSome()) { 315 return r; 316 } 317 } 318 return Optional.none(); 319 }; 320 321 var keys = Object.keys; 322 var each = function (obj, f) { 323 var props = keys(obj); 324 for (var k = 0, len = props.length; k < len; k++) { 325 var i = props[k]; 326 var x = obj[i]; 327 f(x, i); 328 } 329 }; 330 331 var contains = function (str, substr) { 332 return str.indexOf(substr) !== -1; 333 }; 334 335 var isSupported$1 = function (dom) { 336 return dom.style !== undefined && isFunction(dom.style.getPropertyValue); 337 }; 338 339 var fromHtml = function (html, scope) { 340 var doc = scope || document; 341 var div = doc.createElement('div'); 342 div.innerHTML = html; 343 if (!div.hasChildNodes() || div.childNodes.length > 1) { 344 console.error('HTML does not have a single root node', html); 345 throw new Error('HTML must have a single root node'); 346 } 347 return fromDom(div.childNodes[0]); 348 }; 349 var fromTag = function (tag, scope) { 350 var doc = scope || document; 351 var node = doc.createElement(tag); 352 return fromDom(node); 353 }; 354 var fromText = function (text, scope) { 355 var doc = scope || document; 356 var node = doc.createTextNode(text); 357 return fromDom(node); 358 }; 359 var fromDom = function (node) { 360 if (node === null || node === undefined) { 361 throw new Error('Node cannot be null or undefined'); 362 } 363 return { dom: node }; 364 }; 365 var fromPoint = function (docElm, x, y) { 366 return Optional.from(docElm.dom.elementFromPoint(x, y)).map(fromDom); 367 }; 368 var SugarElement = { 369 fromHtml: fromHtml, 370 fromTag: fromTag, 371 fromText: fromText, 372 fromDom: fromDom, 373 fromPoint: fromPoint 374 }; 375 376 typeof window !== 'undefined' ? window : Function('return this;')(); 377 378 var DOCUMENT = 9; 379 var DOCUMENT_FRAGMENT = 11; 380 var ELEMENT = 1; 381 var TEXT = 3; 382 383 var type = function (element) { 384 return element.dom.nodeType; 385 }; 386 var isType = function (t) { 387 return function (element) { 388 return type(element) === t; 389 }; 390 }; 391 var isElement = isType(ELEMENT); 392 var isText = isType(TEXT); 393 var isDocument = isType(DOCUMENT); 394 var isDocumentFragment = isType(DOCUMENT_FRAGMENT); 395 396 var cached = function (f) { 397 var called = false; 398 var r; 399 return function () { 400 var args = []; 401 for (var _i = 0; _i < arguments.length; _i++) { 402 args[_i] = arguments[_i]; 403 } 404 if (!called) { 405 called = true; 406 r = f.apply(null, args); 407 } 408 return r; 409 }; 410 }; 411 412 var DeviceType = function (os, browser, userAgent, mediaMatch) { 413 var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true; 414 var isiPhone = os.isiOS() && !isiPad; 415 var isMobile = os.isiOS() || os.isAndroid(); 416 var isTouch = isMobile || mediaMatch('(pointer:coarse)'); 417 var isTablet = isiPad || !isiPhone && isMobile && mediaMatch('(min-device-width:768px)'); 418 var isPhone = isiPhone || isMobile && !isTablet; 419 var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false; 420 var isDesktop = !isPhone && !isTablet && !iOSwebview; 421 return { 422 isiPad: constant(isiPad), 423 isiPhone: constant(isiPhone), 424 isTablet: constant(isTablet), 425 isPhone: constant(isPhone), 426 isTouch: constant(isTouch), 427 isAndroid: os.isAndroid, 428 isiOS: os.isiOS, 429 isWebView: constant(iOSwebview), 430 isDesktop: constant(isDesktop) 431 }; 432 }; 433 434 var firstMatch = function (regexes, s) { 435 for (var i = 0; i < regexes.length; i++) { 436 var x = regexes[i]; 437 if (x.test(s)) { 438 return x; 439 } 440 } 441 return undefined; 442 }; 443 var find = function (regexes, agent) { 444 var r = firstMatch(regexes, agent); 445 if (!r) { 446 return { 447 major: 0, 448 minor: 0 449 }; 450 } 451 var group = function (i) { 452 return Number(agent.replace(r, '$' + i)); 453 }; 454 return nu$2(group(1), group(2)); 455 }; 456 var detect$3 = function (versionRegexes, agent) { 457 var cleanedAgent = String(agent).toLowerCase(); 458 if (versionRegexes.length === 0) { 459 return unknown$2(); 460 } 461 return find(versionRegexes, cleanedAgent); 462 }; 463 var unknown$2 = function () { 464 return nu$2(0, 0); 465 }; 466 var nu$2 = function (major, minor) { 467 return { 468 major: major, 469 minor: minor 470 }; 471 }; 472 var Version = { 473 nu: nu$2, 474 detect: detect$3, 475 unknown: unknown$2 476 }; 477 478 var detectBrowser$1 = function (browsers, userAgentData) { 479 return findMap(userAgentData.brands, function (uaBrand) { 480 var lcBrand = uaBrand.brand.toLowerCase(); 481 return find$1(browsers, function (browser) { 482 var _a; 483 return lcBrand === ((_a = browser.brand) === null || _a === void 0 ? void 0 : _a.toLowerCase()); 484 }).map(function (info) { 485 return { 486 current: info.name, 487 version: Version.nu(parseInt(uaBrand.version, 10), 0) 488 }; 489 }); 490 }); 491 }; 492 493 var detect$2 = function (candidates, userAgent) { 494 var agent = String(userAgent).toLowerCase(); 495 return find$1(candidates, function (candidate) { 496 return candidate.search(agent); 497 }); 498 }; 499 var detectBrowser = function (browsers, userAgent) { 500 return detect$2(browsers, userAgent).map(function (browser) { 501 var version = Version.detect(browser.versionRegexes, userAgent); 502 return { 503 current: browser.name, 504 version: version 505 }; 506 }); 507 }; 508 var detectOs = function (oses, userAgent) { 509 return detect$2(oses, userAgent).map(function (os) { 510 var version = Version.detect(os.versionRegexes, userAgent); 511 return { 512 current: os.name, 513 version: version 514 }; 515 }); 516 }; 517 518 var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/; 519 var checkContains = function (target) { 520 return function (uastring) { 521 return contains(uastring, target); 522 }; 523 }; 524 var browsers = [ 525 { 526 name: 'Edge', 527 versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/], 528 search: function (uastring) { 529 return contains(uastring, 'edge/') && contains(uastring, 'chrome') && contains(uastring, 'safari') && contains(uastring, 'applewebkit'); 530 } 531 }, 532 { 533 name: 'Chrome', 534 brand: 'Chromium', 535 versionRegexes: [ 536 /.*?chrome\/([0-9]+)\.([0-9]+).*/, 537 normalVersionRegex 538 ], 539 search: function (uastring) { 540 return contains(uastring, 'chrome') && !contains(uastring, 'chromeframe'); 541 } 542 }, 543 { 544 name: 'IE', 545 versionRegexes: [ 546 /.*?msie\ ?([0-9]+)\.([0-9]+).*/, 547 /.*?rv:([0-9]+)\.([0-9]+).*/ 548 ], 549 search: function (uastring) { 550 return contains(uastring, 'msie') || contains(uastring, 'trident'); 551 } 552 }, 553 { 554 name: 'Opera', 555 versionRegexes: [ 556 normalVersionRegex, 557 /.*?opera\/([0-9]+)\.([0-9]+).*/ 558 ], 559 search: checkContains('opera') 560 }, 561 { 562 name: 'Firefox', 563 versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/], 564 search: checkContains('firefox') 565 }, 566 { 567 name: 'Safari', 568 versionRegexes: [ 569 normalVersionRegex, 570 /.*?cpu os ([0-9]+)_([0-9]+).*/ 571 ], 572 search: function (uastring) { 573 return (contains(uastring, 'safari') || contains(uastring, 'mobile/')) && contains(uastring, 'applewebkit'); 574 } 575 } 576 ]; 577 var oses = [ 578 { 579 name: 'Windows', 580 search: checkContains('win'), 581 versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/] 582 }, 583 { 584 name: 'iOS', 585 search: function (uastring) { 586 return contains(uastring, 'iphone') || contains(uastring, 'ipad'); 587 }, 588 versionRegexes: [ 589 /.*?version\/\ ?([0-9]+)\.([0-9]+).*/, 590 /.*cpu os ([0-9]+)_([0-9]+).*/, 591 /.*cpu iphone os ([0-9]+)_([0-9]+).*/ 592 ] 593 }, 594 { 595 name: 'Android', 596 search: checkContains('android'), 597 versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/] 598 }, 599 { 600 name: 'OSX', 601 search: checkContains('mac os x'), 602 versionRegexes: [/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/] 603 }, 604 { 605 name: 'Linux', 606 search: checkContains('linux'), 607 versionRegexes: [] 608 }, 609 { 610 name: 'Solaris', 611 search: checkContains('sunos'), 612 versionRegexes: [] 613 }, 614 { 615 name: 'FreeBSD', 616 search: checkContains('freebsd'), 617 versionRegexes: [] 618 }, 619 { 620 name: 'ChromeOS', 621 search: checkContains('cros'), 622 versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/] 623 } 624 ]; 625 var PlatformInfo = { 626 browsers: constant(browsers), 627 oses: constant(oses) 628 }; 629 630 var edge = 'Edge'; 631 var chrome = 'Chrome'; 632 var ie = 'IE'; 633 var opera = 'Opera'; 634 var firefox = 'Firefox'; 635 var safari = 'Safari'; 636 var unknown$1 = function () { 637 return nu$1({ 638 current: undefined, 639 version: Version.unknown() 640 }); 641 }; 642 var nu$1 = function (info) { 643 var current = info.current; 644 var version = info.version; 645 var isBrowser = function (name) { 646 return function () { 647 return current === name; 648 }; 649 }; 650 return { 651 current: current, 652 version: version, 653 isEdge: isBrowser(edge), 654 isChrome: isBrowser(chrome), 655 isIE: isBrowser(ie), 656 isOpera: isBrowser(opera), 657 isFirefox: isBrowser(firefox), 658 isSafari: isBrowser(safari) 659 }; 660 }; 661 var Browser = { 662 unknown: unknown$1, 663 nu: nu$1, 664 edge: constant(edge), 665 chrome: constant(chrome), 666 ie: constant(ie), 667 opera: constant(opera), 668 firefox: constant(firefox), 669 safari: constant(safari) 670 }; 671 672 var windows = 'Windows'; 673 var ios = 'iOS'; 674 var android = 'Android'; 675 var linux = 'Linux'; 676 var osx = 'OSX'; 677 var solaris = 'Solaris'; 678 var freebsd = 'FreeBSD'; 679 var chromeos = 'ChromeOS'; 680 var unknown = function () { 681 return nu({ 682 current: undefined, 683 version: Version.unknown() 684 }); 685 }; 686 var nu = function (info) { 687 var current = info.current; 688 var version = info.version; 689 var isOS = function (name) { 690 return function () { 691 return current === name; 692 }; 693 }; 694 return { 695 current: current, 696 version: version, 697 isWindows: isOS(windows), 698 isiOS: isOS(ios), 699 isAndroid: isOS(android), 700 isOSX: isOS(osx), 701 isLinux: isOS(linux), 702 isSolaris: isOS(solaris), 703 isFreeBSD: isOS(freebsd), 704 isChromeOS: isOS(chromeos) 705 }; 706 }; 707 var OperatingSystem = { 708 unknown: unknown, 709 nu: nu, 710 windows: constant(windows), 711 ios: constant(ios), 712 android: constant(android), 713 linux: constant(linux), 714 osx: constant(osx), 715 solaris: constant(solaris), 716 freebsd: constant(freebsd), 717 chromeos: constant(chromeos) 718 }; 719 720 var detect$1 = function (userAgent, userAgentDataOpt, mediaMatch) { 721 var browsers = PlatformInfo.browsers(); 722 var oses = PlatformInfo.oses(); 723 var browser = userAgentDataOpt.bind(function (userAgentData) { 724 return detectBrowser$1(browsers, userAgentData); 725 }).orThunk(function () { 726 return detectBrowser(browsers, userAgent); 727 }).fold(Browser.unknown, Browser.nu); 728 var os = detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu); 729 var deviceType = DeviceType(os, browser, userAgent, mediaMatch); 730 return { 731 browser: browser, 732 os: os, 733 deviceType: deviceType 734 }; 735 }; 736 var PlatformDetection = { detect: detect$1 }; 737 738 var mediaMatch = function (query) { 739 return window.matchMedia(query).matches; 740 }; 741 var platform = cached(function () { 742 return PlatformDetection.detect(navigator.userAgent, Optional.from(navigator.userAgentData), mediaMatch); 743 }); 744 var detect = function () { 745 return platform(); 746 }; 747 748 var is = function (element, selector) { 749 var dom = element.dom; 750 if (dom.nodeType !== ELEMENT) { 751 return false; 752 } else { 753 var elem = dom; 754 if (elem.matches !== undefined) { 755 return elem.matches(selector); 756 } else if (elem.msMatchesSelector !== undefined) { 757 return elem.msMatchesSelector(selector); 758 } else if (elem.webkitMatchesSelector !== undefined) { 759 return elem.webkitMatchesSelector(selector); 760 } else if (elem.mozMatchesSelector !== undefined) { 761 return elem.mozMatchesSelector(selector); 762 } else { 763 throw new Error('Browser lacks native selectors'); 764 } 765 } 766 }; 767 var bypassSelector = function (dom) { 768 return dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT && dom.nodeType !== DOCUMENT_FRAGMENT || dom.childElementCount === 0; 769 }; 770 var all$1 = function (selector, scope) { 771 var base = scope === undefined ? document : scope.dom; 772 return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), SugarElement.fromDom); 773 }; 774 775 var eq = function (e1, e2) { 776 return e1.dom === e2.dom; 777 }; 778 779 var owner = function (element) { 780 return SugarElement.fromDom(element.dom.ownerDocument); 781 }; 782 var documentOrOwner = function (dos) { 783 return isDocument(dos) ? dos : owner(dos); 784 }; 785 var parent = function (element) { 786 return Optional.from(element.dom.parentNode).map(SugarElement.fromDom); 787 }; 788 var parents = function (element, isRoot) { 789 var stop = isFunction(isRoot) ? isRoot : never; 790 var dom = element.dom; 791 var ret = []; 792 while (dom.parentNode !== null && dom.parentNode !== undefined) { 793 var rawParent = dom.parentNode; 794 var p = SugarElement.fromDom(rawParent); 795 ret.push(p); 796 if (stop(p) === true) { 797 break; 798 } else { 799 dom = rawParent; 800 } 801 } 802 return ret; 803 }; 804 var siblings$2 = function (element) { 805 var filterSelf = function (elements) { 806 return filter$1(elements, function (x) { 807 return !eq(element, x); 808 }); 809 }; 810 return parent(element).map(children).map(filterSelf).getOr([]); 811 }; 812 var children = function (element) { 813 return map(element.dom.childNodes, SugarElement.fromDom); 814 }; 815 816 var isShadowRoot = function (dos) { 817 return isDocumentFragment(dos) && isNonNullable(dos.dom.host); 818 }; 819 var supported = isFunction(Element.prototype.attachShadow) && isFunction(Node.prototype.getRootNode); 820 var isSupported = constant(supported); 821 var getRootNode = supported ? function (e) { 822 return SugarElement.fromDom(e.dom.getRootNode()); 823 } : documentOrOwner; 824 var getShadowRoot = function (e) { 825 var r = getRootNode(e); 826 return isShadowRoot(r) ? Optional.some(r) : Optional.none(); 827 }; 828 var getShadowHost = function (e) { 829 return SugarElement.fromDom(e.dom.host); 830 }; 831 var getOriginalEventTarget = function (event) { 832 if (isSupported() && isNonNullable(event.target)) { 833 var el = SugarElement.fromDom(event.target); 834 if (isElement(el) && isOpenShadowHost(el)) { 835 if (event.composed && event.composedPath) { 836 var composedPath = event.composedPath(); 837 if (composedPath) { 838 return head(composedPath); 839 } 840 } 841 } 842 } 843 return Optional.from(event.target); 844 }; 845 var isOpenShadowHost = function (element) { 846 return isNonNullable(element.dom.shadowRoot); 847 }; 848 849 var inBody = function (element) { 850 var dom = isText(element) ? element.dom.parentNode : element.dom; 851 if (dom === undefined || dom === null || dom.ownerDocument === null) { 852 return false; 853 } 854 var doc = dom.ownerDocument; 855 return getShadowRoot(SugarElement.fromDom(dom)).fold(function () { 856 return doc.body.contains(dom); 857 }, compose1(inBody, getShadowHost)); 858 }; 859 var getBody = function (doc) { 860 var b = doc.dom.body; 861 if (b === null || b === undefined) { 862 throw new Error('Body is not available yet'); 863 } 864 return SugarElement.fromDom(b); 865 }; 866 867 var rawSet = function (dom, key, value) { 868 if (isString(value) || isBoolean(value) || isNumber(value)) { 869 dom.setAttribute(key, value + ''); 870 } else { 871 console.error('Invalid call to Attribute.set. Key ', key, ':: Value ', value, ':: Element ', dom); 872 throw new Error('Attribute value was not simple'); 873 } 874 }; 875 var set = function (element, key, value) { 876 rawSet(element.dom, key, value); 877 }; 878 var get$3 = function (element, key) { 879 var v = element.dom.getAttribute(key); 880 return v === null ? undefined : v; 881 }; 882 var remove = function (element, key) { 883 element.dom.removeAttribute(key); 884 }; 885 886 var internalSet = function (dom, property, value) { 887 if (!isString(value)) { 888 console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom); 889 throw new Error('CSS value must be a string: ' + value); 890 } 891 if (isSupported$1(dom)) { 892 dom.style.setProperty(property, value); 893 } 894 }; 895 var setAll = function (element, css) { 896 var dom = element.dom; 897 each(css, function (v, k) { 898 internalSet(dom, k, v); 899 }); 900 }; 901 var get$2 = function (element, property) { 902 var dom = element.dom; 903 var styles = window.getComputedStyle(dom); 904 var r = styles.getPropertyValue(property); 905 return r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r; 906 }; 907 var getUnsafeProperty = function (dom, property) { 908 return isSupported$1(dom) ? dom.style.getPropertyValue(property) : ''; 909 }; 910 911 var mkEvent = function (target, x, y, stop, prevent, kill, raw) { 912 return { 913 target: target, 914 x: x, 915 y: y, 916 stop: stop, 917 prevent: prevent, 918 kill: kill, 919 raw: raw 920 }; 921 }; 922 var fromRawEvent = function (rawEvent) { 923 var target = SugarElement.fromDom(getOriginalEventTarget(rawEvent).getOr(rawEvent.target)); 924 var stop = function () { 925 return rawEvent.stopPropagation(); 926 }; 927 var prevent = function () { 928 return rawEvent.preventDefault(); 929 }; 930 var kill = compose(prevent, stop); 931 return mkEvent(target, rawEvent.clientX, rawEvent.clientY, stop, prevent, kill, rawEvent); 932 }; 933 var handle = function (filter, handler) { 934 return function (rawEvent) { 935 if (filter(rawEvent)) { 936 handler(fromRawEvent(rawEvent)); 937 } 938 }; 939 }; 940 var binder = function (element, event, filter, handler, useCapture) { 941 var wrapped = handle(filter, handler); 942 element.dom.addEventListener(event, wrapped, useCapture); 943 return { unbind: curry(unbind, element, event, wrapped, useCapture) }; 944 }; 945 var bind$2 = function (element, event, filter, handler) { 946 return binder(element, event, filter, handler, false); 947 }; 948 var unbind = function (element, event, handler, useCapture) { 949 element.dom.removeEventListener(event, handler, useCapture); 950 }; 951 952 var filter = always; 953 var bind$1 = function (element, event, handler) { 954 return bind$2(element, event, filter, handler); 955 }; 956 957 var r = function (left, top) { 958 var translate = function (x, y) { 959 return r(left + x, top + y); 960 }; 961 return { 962 left: left, 963 top: top, 964 translate: translate 965 }; 966 }; 967 var SugarPosition = r; 968 969 var get$1 = function (_DOC) { 970 var doc = _DOC !== undefined ? _DOC.dom : document; 971 var x = doc.body.scrollLeft || doc.documentElement.scrollLeft; 972 var y = doc.body.scrollTop || doc.documentElement.scrollTop; 973 return SugarPosition(x, y); 974 }; 975 976 var get = function (_win) { 977 var win = _win === undefined ? window : _win; 978 if (detect().browser.isFirefox()) { 979 return Optional.none(); 980 } else { 981 return Optional.from(win['visualViewport']); 982 } 983 }; 984 var bounds = function (x, y, width, height) { 985 return { 986 x: x, 987 y: y, 988 width: width, 989 height: height, 990 right: x + width, 991 bottom: y + height 992 }; 993 }; 994 var getBounds = function (_win) { 995 var win = _win === undefined ? window : _win; 996 var doc = win.document; 997 var scroll = get$1(SugarElement.fromDom(doc)); 998 return get(win).fold(function () { 999 var html = win.document.documentElement; 1000 var width = html.clientWidth; 1001 var height = html.clientHeight; 1002 return bounds(scroll.left, scroll.top, width, height); 1003 }, function (visualViewport) { 1004 return bounds(Math.max(visualViewport.pageLeft, scroll.left), Math.max(visualViewport.pageTop, scroll.top), visualViewport.width, visualViewport.height); 1005 }); 1006 }; 1007 var bind = function (name, callback, _win) { 1008 return get(_win).map(function (visualViewport) { 1009 var handler = function (e) { 1010 return callback(fromRawEvent(e)); 1011 }; 1012 visualViewport.addEventListener(name, handler); 1013 return { 1014 unbind: function () { 1015 return visualViewport.removeEventListener(name, handler); 1016 } 1017 }; 1018 }).getOrThunk(function () { 1019 return { unbind: noop }; 1020 }); 1021 }; 1022 1023 var global$2 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils'); 1024 1025 var global$1 = tinymce.util.Tools.resolve('tinymce.Env'); 1026 1027 var global = tinymce.util.Tools.resolve('tinymce.util.Delay'); 1028 1029 var fireFullscreenStateChanged = function (editor, state) { 1030 editor.fire('FullscreenStateChanged', { state: state }); 1031 }; 1032 1033 var getFullscreenNative = function (editor) { 1034 return editor.getParam('fullscreen_native', false, 'boolean'); 1035 }; 1036 1037 var getFullscreenRoot = function (editor) { 1038 var elem = SugarElement.fromDom(editor.getElement()); 1039 return getShadowRoot(elem).map(getShadowHost).getOrThunk(function () { 1040 return getBody(owner(elem)); 1041 }); 1042 }; 1043 var getFullscreenElement = function (root) { 1044 if (root.fullscreenElement !== undefined) { 1045 return root.fullscreenElement; 1046 } else if (root.msFullscreenElement !== undefined) { 1047 return root.msFullscreenElement; 1048 } else if (root.webkitFullscreenElement !== undefined) { 1049 return root.webkitFullscreenElement; 1050 } else { 1051 return null; 1052 } 1053 }; 1054 var getFullscreenchangeEventName = function () { 1055 if (document.fullscreenElement !== undefined) { 1056 return 'fullscreenchange'; 1057 } else if (document.msFullscreenElement !== undefined) { 1058 return 'MSFullscreenChange'; 1059 } else if (document.webkitFullscreenElement !== undefined) { 1060 return 'webkitfullscreenchange'; 1061 } else { 1062 return 'fullscreenchange'; 1063 } 1064 }; 1065 var requestFullscreen = function (sugarElem) { 1066 var elem = sugarElem.dom; 1067 if (elem.requestFullscreen) { 1068 elem.requestFullscreen(); 1069 } else if (elem.msRequestFullscreen) { 1070 elem.msRequestFullscreen(); 1071 } else if (elem.webkitRequestFullScreen) { 1072 elem.webkitRequestFullScreen(); 1073 } 1074 }; 1075 var exitFullscreen = function (sugarDoc) { 1076 var doc = sugarDoc.dom; 1077 if (doc.exitFullscreen) { 1078 doc.exitFullscreen(); 1079 } else if (doc.msExitFullscreen) { 1080 doc.msExitFullscreen(); 1081 } else if (doc.webkitCancelFullScreen) { 1082 doc.webkitCancelFullScreen(); 1083 } 1084 }; 1085 var isFullscreenElement = function (elem) { 1086 return elem.dom === getFullscreenElement(owner(elem).dom); 1087 }; 1088 1089 var ancestors$1 = function (scope, predicate, isRoot) { 1090 return filter$1(parents(scope, isRoot), predicate); 1091 }; 1092 var siblings$1 = function (scope, predicate) { 1093 return filter$1(siblings$2(scope), predicate); 1094 }; 1095 1096 var all = function (selector) { 1097 return all$1(selector); 1098 }; 1099 var ancestors = function (scope, selector, isRoot) { 1100 return ancestors$1(scope, function (e) { 1101 return is(e, selector); 1102 }, isRoot); 1103 }; 1104 var siblings = function (scope, selector) { 1105 return siblings$1(scope, function (e) { 1106 return is(e, selector); 1107 }); 1108 }; 1109 1110 var attr = 'data-ephox-mobile-fullscreen-style'; 1111 var siblingStyles = 'display:none!important;'; 1112 var ancestorPosition = 'position:absolute!important;'; 1113 var ancestorStyles = 'top:0!important;left:0!important;margin:0!important;padding:0!important;width:100%!important;height:100%!important;overflow:visible!important;'; 1114 var bgFallback = 'background-color:rgb(255,255,255)!important;'; 1115 var isAndroid = global$1.os.isAndroid(); 1116 var matchColor = function (editorBody) { 1117 var color = get$2(editorBody, 'background-color'); 1118 return color !== undefined && color !== '' ? 'background-color:' + color + '!important' : bgFallback; 1119 }; 1120 var clobberStyles = function (dom, container, editorBody) { 1121 var gatherSiblings = function (element) { 1122 return siblings(element, '*:not(.tox-silver-sink)'); 1123 }; 1124 var clobber = function (clobberStyle) { 1125 return function (element) { 1126 var styles = get$3(element, 'style'); 1127 var backup = styles === undefined ? 'no-styles' : styles.trim(); 1128 if (backup === clobberStyle) { 1129 return; 1130 } else { 1131 set(element, attr, backup); 1132 setAll(element, dom.parseStyle(clobberStyle)); 1133 } 1134 }; 1135 }; 1136 var ancestors$1 = ancestors(container, '*'); 1137 var siblings$1 = bind$3(ancestors$1, gatherSiblings); 1138 var bgColor = matchColor(editorBody); 1139 each$1(siblings$1, clobber(siblingStyles)); 1140 each$1(ancestors$1, clobber(ancestorPosition + ancestorStyles + bgColor)); 1141 var containerStyles = isAndroid === true ? '' : ancestorPosition; 1142 clobber(containerStyles + ancestorStyles + bgColor)(container); 1143 }; 1144 var restoreStyles = function (dom) { 1145 var clobberedEls = all('[' + attr + ']'); 1146 each$1(clobberedEls, function (element) { 1147 var restore = get$3(element, attr); 1148 if (restore !== 'no-styles') { 1149 setAll(element, dom.parseStyle(restore)); 1150 } else { 1151 remove(element, 'style'); 1152 } 1153 remove(element, attr); 1154 }); 1155 }; 1156 1157 var DOM = global$2.DOM; 1158 var getScrollPos = function () { 1159 return getBounds(window); 1160 }; 1161 var setScrollPos = function (pos) { 1162 return window.scrollTo(pos.x, pos.y); 1163 }; 1164 var viewportUpdate = get().fold(function () { 1165 return { 1166 bind: noop, 1167 unbind: noop 1168 }; 1169 }, function (visualViewport) { 1170 var editorContainer = value(); 1171 var resizeBinder = unbindable(); 1172 var scrollBinder = unbindable(); 1173 var refreshScroll = function () { 1174 document.body.scrollTop = 0; 1175 document.documentElement.scrollTop = 0; 1176 }; 1177 var refreshVisualViewport = function () { 1178 window.requestAnimationFrame(function () { 1179 editorContainer.on(function (container) { 1180 return setAll(container, { 1181 top: visualViewport.offsetTop + 'px', 1182 left: visualViewport.offsetLeft + 'px', 1183 height: visualViewport.height + 'px', 1184 width: visualViewport.width + 'px' 1185 }); 1186 }); 1187 }); 1188 }; 1189 var update = global.throttle(function () { 1190 refreshScroll(); 1191 refreshVisualViewport(); 1192 }, 50); 1193 var bind$1 = function (element) { 1194 editorContainer.set(element); 1195 update(); 1196 resizeBinder.set(bind('resize', update)); 1197 scrollBinder.set(bind('scroll', update)); 1198 }; 1199 var unbind = function () { 1200 editorContainer.on(function () { 1201 resizeBinder.clear(); 1202 scrollBinder.clear(); 1203 }); 1204 editorContainer.clear(); 1205 }; 1206 return { 1207 bind: bind$1, 1208 unbind: unbind 1209 }; 1210 }); 1211 var toggleFullscreen = function (editor, fullscreenState) { 1212 var body = document.body; 1213 var documentElement = document.documentElement; 1214 var editorContainer = editor.getContainer(); 1215 var editorContainerS = SugarElement.fromDom(editorContainer); 1216 var fullscreenRoot = getFullscreenRoot(editor); 1217 var fullscreenInfo = fullscreenState.get(); 1218 var editorBody = SugarElement.fromDom(editor.getBody()); 1219 var isTouch = global$1.deviceType.isTouch(); 1220 var editorContainerStyle = editorContainer.style; 1221 var iframe = editor.iframeElement; 1222 var iframeStyle = iframe.style; 1223 var handleClasses = function (handler) { 1224 handler(body, 'tox-fullscreen'); 1225 handler(documentElement, 'tox-fullscreen'); 1226 handler(editorContainer, 'tox-fullscreen'); 1227 getShadowRoot(editorContainerS).map(function (root) { 1228 return getShadowHost(root).dom; 1229 }).each(function (host) { 1230 handler(host, 'tox-fullscreen'); 1231 handler(host, 'tox-shadowhost'); 1232 }); 1233 }; 1234 var cleanup = function () { 1235 if (isTouch) { 1236 restoreStyles(editor.dom); 1237 } 1238 handleClasses(DOM.removeClass); 1239 viewportUpdate.unbind(); 1240 Optional.from(fullscreenState.get()).each(function (info) { 1241 return info.fullscreenChangeHandler.unbind(); 1242 }); 1243 }; 1244 if (!fullscreenInfo) { 1245 var fullscreenChangeHandler = bind$1(owner(fullscreenRoot), getFullscreenchangeEventName(), function (_evt) { 1246 if (getFullscreenNative(editor)) { 1247 if (!isFullscreenElement(fullscreenRoot) && fullscreenState.get() !== null) { 1248 toggleFullscreen(editor, fullscreenState); 1249 } 1250 } 1251 }); 1252 var newFullScreenInfo = { 1253 scrollPos: getScrollPos(), 1254 containerWidth: editorContainerStyle.width, 1255 containerHeight: editorContainerStyle.height, 1256 containerTop: editorContainerStyle.top, 1257 containerLeft: editorContainerStyle.left, 1258 iframeWidth: iframeStyle.width, 1259 iframeHeight: iframeStyle.height, 1260 fullscreenChangeHandler: fullscreenChangeHandler 1261 }; 1262 if (isTouch) { 1263 clobberStyles(editor.dom, editorContainerS, editorBody); 1264 } 1265 iframeStyle.width = iframeStyle.height = '100%'; 1266 editorContainerStyle.width = editorContainerStyle.height = ''; 1267 handleClasses(DOM.addClass); 1268 viewportUpdate.bind(editorContainerS); 1269 editor.on('remove', cleanup); 1270 fullscreenState.set(newFullScreenInfo); 1271 if (getFullscreenNative(editor)) { 1272 requestFullscreen(fullscreenRoot); 1273 } 1274 fireFullscreenStateChanged(editor, true); 1275 } else { 1276 fullscreenInfo.fullscreenChangeHandler.unbind(); 1277 if (getFullscreenNative(editor) && isFullscreenElement(fullscreenRoot)) { 1278 exitFullscreen(owner(fullscreenRoot)); 1279 } 1280 iframeStyle.width = fullscreenInfo.iframeWidth; 1281 iframeStyle.height = fullscreenInfo.iframeHeight; 1282 editorContainerStyle.width = fullscreenInfo.containerWidth; 1283 editorContainerStyle.height = fullscreenInfo.containerHeight; 1284 editorContainerStyle.top = fullscreenInfo.containerTop; 1285 editorContainerStyle.left = fullscreenInfo.containerLeft; 1286 cleanup(); 1287 setScrollPos(fullscreenInfo.scrollPos); 1288 fullscreenState.set(null); 1289 fireFullscreenStateChanged(editor, false); 1290 editor.off('remove', cleanup); 1291 } 1292 }; 1293 1294 var register$1 = function (editor, fullscreenState) { 1295 editor.addCommand('mceFullScreen', function () { 1296 toggleFullscreen(editor, fullscreenState); 1297 }); 1298 }; 1299 1300 var makeSetupHandler = function (editor, fullscreenState) { 1301 return function (api) { 1302 api.setActive(fullscreenState.get() !== null); 1303 var editorEventCallback = function (e) { 1304 return api.setActive(e.state); 1305 }; 1306 editor.on('FullscreenStateChanged', editorEventCallback); 1307 return function () { 1308 return editor.off('FullscreenStateChanged', editorEventCallback); 1309 }; 1310 }; 1311 }; 1312 var register = function (editor, fullscreenState) { 1313 var onAction = function () { 1314 return editor.execCommand('mceFullScreen'); 1315 }; 1316 editor.ui.registry.addToggleMenuItem('fullscreen', { 1317 text: 'Fullscreen', 1318 icon: 'fullscreen', 1319 shortcut: 'Meta+Shift+F', 1320 onAction: onAction, 1321 onSetup: makeSetupHandler(editor, fullscreenState) 1322 }); 1323 editor.ui.registry.addToggleButton('fullscreen', { 1324 tooltip: 'Fullscreen', 1325 icon: 'fullscreen', 1326 onAction: onAction, 1327 onSetup: makeSetupHandler(editor, fullscreenState) 1328 }); 1329 }; 1330 1331 function Plugin () { 1332 global$3.add('fullscreen', function (editor) { 1333 var fullscreenState = Cell(null); 1334 if (editor.inline) { 1335 return get$5(fullscreenState); 1336 } 1337 register$1(editor, fullscreenState); 1338 register(editor, fullscreenState); 1339 editor.addShortcut('Meta+Shift+F', '', 'mceFullScreen'); 1340 return get$5(fullscreenState); 1341 }); 1342 } 1343 1344 Plugin(); 1345 1346 }());
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 |