tinymce_plugins_fullscreen.js 43 KB

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