tinymce_plugins_directionality.js 14 KB

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