tinymce_plugins_textpattern.js 45 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358
  1. import {
  2. __commonJS,
  3. init_define_APP_INFO
  4. } from "./chunk-XY75H3MP.js";
  5. // node_modules/tinymce/plugins/textpattern/plugin.js
  6. var require_plugin = __commonJS({
  7. "node_modules/tinymce/plugins/textpattern/plugin.js"() {
  8. init_define_APP_INFO();
  9. (function() {
  10. "use strict";
  11. var Cell = function(initial) {
  12. var value2 = initial;
  13. var get2 = function() {
  14. return value2;
  15. };
  16. var set = function(v) {
  17. value2 = v;
  18. };
  19. return {
  20. get: get2,
  21. set
  22. };
  23. };
  24. var global$5 = tinymce.util.Tools.resolve("tinymce.PluginManager");
  25. var __assign = function() {
  26. __assign = Object.assign || function __assign2(t) {
  27. for (var s, i = 1, n = arguments.length; i < n; i++) {
  28. s = arguments[i];
  29. for (var p in s)
  30. if (Object.prototype.hasOwnProperty.call(s, p))
  31. t[p] = s[p];
  32. }
  33. return t;
  34. };
  35. return __assign.apply(this, arguments);
  36. };
  37. function __spreadArray(to, from2, pack) {
  38. if (pack || arguments.length === 2)
  39. for (var i = 0, l = from2.length, ar; i < l; i++) {
  40. if (ar || !(i in from2)) {
  41. if (!ar)
  42. ar = Array.prototype.slice.call(from2, 0, i);
  43. ar[i] = from2[i];
  44. }
  45. }
  46. return to.concat(ar || Array.prototype.slice.call(from2));
  47. }
  48. var typeOf = function(x) {
  49. var t = typeof x;
  50. if (x === null) {
  51. return "null";
  52. } else if (t === "object" && (Array.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === "Array")) {
  53. return "array";
  54. } else if (t === "object" && (String.prototype.isPrototypeOf(x) || x.constructor && x.constructor.name === "String")) {
  55. return "string";
  56. } else {
  57. return t;
  58. }
  59. };
  60. var isType = function(type) {
  61. return function(value2) {
  62. return typeOf(value2) === type;
  63. };
  64. };
  65. var isString = isType("string");
  66. var isObject = isType("object");
  67. var isArray = isType("array");
  68. var noop = function() {
  69. };
  70. var constant = function(value2) {
  71. return function() {
  72. return value2;
  73. };
  74. };
  75. var identity = function(x) {
  76. return x;
  77. };
  78. var die = function(msg) {
  79. return function() {
  80. throw new Error(msg);
  81. };
  82. };
  83. var never = constant(false);
  84. var always = constant(true);
  85. var none = function() {
  86. return NONE;
  87. };
  88. var NONE = function() {
  89. var call = function(thunk) {
  90. return thunk();
  91. };
  92. var id = identity;
  93. var me = {
  94. fold: function(n, _s) {
  95. return n();
  96. },
  97. isSome: never,
  98. isNone: always,
  99. getOr: id,
  100. getOrThunk: call,
  101. getOrDie: function(msg) {
  102. throw new Error(msg || "error: getOrDie called on none.");
  103. },
  104. getOrNull: constant(null),
  105. getOrUndefined: constant(void 0),
  106. or: id,
  107. orThunk: call,
  108. map: none,
  109. each: noop,
  110. bind: none,
  111. exists: never,
  112. forall: always,
  113. filter: function() {
  114. return none();
  115. },
  116. toArray: function() {
  117. return [];
  118. },
  119. toString: constant("none()")
  120. };
  121. return me;
  122. }();
  123. var some = function(a) {
  124. var constant_a = constant(a);
  125. var self = function() {
  126. return me;
  127. };
  128. var bind = function(f) {
  129. return f(a);
  130. };
  131. var me = {
  132. fold: function(n, s) {
  133. return s(a);
  134. },
  135. isSome: always,
  136. isNone: never,
  137. getOr: constant_a,
  138. getOrThunk: constant_a,
  139. getOrDie: constant_a,
  140. getOrNull: constant_a,
  141. getOrUndefined: constant_a,
  142. or: self,
  143. orThunk: self,
  144. map: function(f) {
  145. return some(f(a));
  146. },
  147. each: function(f) {
  148. f(a);
  149. },
  150. bind,
  151. exists: bind,
  152. forall: bind,
  153. filter: function(f) {
  154. return f(a) ? me : NONE;
  155. },
  156. toArray: function() {
  157. return [a];
  158. },
  159. toString: function() {
  160. return "some(" + a + ")";
  161. }
  162. };
  163. return me;
  164. };
  165. var from = function(value2) {
  166. return value2 === null || value2 === void 0 ? NONE : some(value2);
  167. };
  168. var Optional = {
  169. some,
  170. none,
  171. from
  172. };
  173. var nativeSlice = Array.prototype.slice;
  174. var nativeIndexOf = Array.prototype.indexOf;
  175. var rawIndexOf = function(ts, t) {
  176. return nativeIndexOf.call(ts, t);
  177. };
  178. var contains = function(xs, x) {
  179. return rawIndexOf(xs, x) > -1;
  180. };
  181. var map = function(xs, f) {
  182. var len = xs.length;
  183. var r = new Array(len);
  184. for (var i = 0; i < len; i++) {
  185. var x = xs[i];
  186. r[i] = f(x, i);
  187. }
  188. return r;
  189. };
  190. var each = function(xs, f) {
  191. for (var i = 0, len = xs.length; i < len; i++) {
  192. var x = xs[i];
  193. f(x, i);
  194. }
  195. };
  196. var eachr = function(xs, f) {
  197. for (var i = xs.length - 1; i >= 0; i--) {
  198. var x = xs[i];
  199. f(x, i);
  200. }
  201. };
  202. var filter = function(xs, pred) {
  203. var r = [];
  204. for (var i = 0, len = xs.length; i < len; i++) {
  205. var x = xs[i];
  206. if (pred(x, i)) {
  207. r.push(x);
  208. }
  209. }
  210. return r;
  211. };
  212. var foldr = function(xs, f, acc) {
  213. eachr(xs, function(x, i) {
  214. acc = f(acc, x, i);
  215. });
  216. return acc;
  217. };
  218. var foldl = function(xs, f, acc) {
  219. each(xs, function(x, i) {
  220. acc = f(acc, x, i);
  221. });
  222. return acc;
  223. };
  224. var findUntil = function(xs, pred, until) {
  225. for (var i = 0, len = xs.length; i < len; i++) {
  226. var x = xs[i];
  227. if (pred(x, i)) {
  228. return Optional.some(x);
  229. } else if (until(x, i)) {
  230. break;
  231. }
  232. }
  233. return Optional.none();
  234. };
  235. var find = function(xs, pred) {
  236. return findUntil(xs, pred, never);
  237. };
  238. var forall = function(xs, pred) {
  239. for (var i = 0, len = xs.length; i < len; ++i) {
  240. var x = xs[i];
  241. if (pred(x, i) !== true) {
  242. return false;
  243. }
  244. }
  245. return true;
  246. };
  247. var sort = function(xs, comparator) {
  248. var copy = nativeSlice.call(xs, 0);
  249. copy.sort(comparator);
  250. return copy;
  251. };
  252. var get$1 = function(xs, i) {
  253. return i >= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none();
  254. };
  255. var head = function(xs) {
  256. return get$1(xs, 0);
  257. };
  258. var keys = Object.keys;
  259. var hasOwnProperty = Object.hasOwnProperty;
  260. var has = function(obj, key) {
  261. return hasOwnProperty.call(obj, key);
  262. };
  263. var generate$1 = function(cases) {
  264. if (!isArray(cases)) {
  265. throw new Error("cases must be an array");
  266. }
  267. if (cases.length === 0) {
  268. throw new Error("there must be at least one case");
  269. }
  270. var constructors = [];
  271. var adt = {};
  272. each(cases, function(acase, count) {
  273. var keys$1 = keys(acase);
  274. if (keys$1.length !== 1) {
  275. throw new Error("one and only one name per case");
  276. }
  277. var key = keys$1[0];
  278. var value2 = acase[key];
  279. if (adt[key] !== void 0) {
  280. throw new Error("duplicate key detected:" + key);
  281. } else if (key === "cata") {
  282. throw new Error("cannot have a case named cata (sorry)");
  283. } else if (!isArray(value2)) {
  284. throw new Error("case arguments must be an array");
  285. }
  286. constructors.push(key);
  287. adt[key] = function() {
  288. var args = [];
  289. for (var _i = 0; _i < arguments.length; _i++) {
  290. args[_i] = arguments[_i];
  291. }
  292. var argLength = args.length;
  293. if (argLength !== value2.length) {
  294. throw new Error("Wrong number of arguments to case " + key + ". Expected " + value2.length + " (" + value2 + "), got " + argLength);
  295. }
  296. var match = function(branches) {
  297. var branchKeys = keys(branches);
  298. if (constructors.length !== branchKeys.length) {
  299. throw new Error("Wrong number of arguments to match. Expected: " + constructors.join(",") + "\nActual: " + branchKeys.join(","));
  300. }
  301. var allReqd = forall(constructors, function(reqKey) {
  302. return contains(branchKeys, reqKey);
  303. });
  304. if (!allReqd) {
  305. throw new Error("Not all branches were specified when using match. Specified: " + branchKeys.join(", ") + "\nRequired: " + constructors.join(", "));
  306. }
  307. return branches[key].apply(null, args);
  308. };
  309. return {
  310. fold: function() {
  311. var foldArgs = [];
  312. for (var _i2 = 0; _i2 < arguments.length; _i2++) {
  313. foldArgs[_i2] = arguments[_i2];
  314. }
  315. if (foldArgs.length !== cases.length) {
  316. throw new Error("Wrong number of arguments to fold. Expected " + cases.length + ", got " + foldArgs.length);
  317. }
  318. var target = foldArgs[count];
  319. return target.apply(null, args);
  320. },
  321. match,
  322. log: function(label) {
  323. console.log(label, {
  324. constructors,
  325. constructor: key,
  326. params: args
  327. });
  328. }
  329. };
  330. };
  331. });
  332. return adt;
  333. };
  334. var Adt = { generate: generate$1 };
  335. Adt.generate([
  336. {
  337. bothErrors: [
  338. "error1",
  339. "error2"
  340. ]
  341. },
  342. {
  343. firstError: [
  344. "error1",
  345. "value2"
  346. ]
  347. },
  348. {
  349. secondError: [
  350. "value1",
  351. "error2"
  352. ]
  353. },
  354. {
  355. bothValues: [
  356. "value1",
  357. "value2"
  358. ]
  359. }
  360. ]);
  361. var partition = function(results) {
  362. var errors = [];
  363. var values = [];
  364. each(results, function(result) {
  365. result.fold(function(err) {
  366. errors.push(err);
  367. }, function(value2) {
  368. values.push(value2);
  369. });
  370. });
  371. return {
  372. errors,
  373. values
  374. };
  375. };
  376. var value = function(o) {
  377. var or = function(_opt) {
  378. return value(o);
  379. };
  380. var orThunk = function(_f) {
  381. return value(o);
  382. };
  383. var map2 = function(f) {
  384. return value(f(o));
  385. };
  386. var mapError = function(_f) {
  387. return value(o);
  388. };
  389. var each2 = function(f) {
  390. f(o);
  391. };
  392. var bind = function(f) {
  393. return f(o);
  394. };
  395. var fold = function(_, onValue) {
  396. return onValue(o);
  397. };
  398. var exists = function(f) {
  399. return f(o);
  400. };
  401. var forall2 = function(f) {
  402. return f(o);
  403. };
  404. var toOptional = function() {
  405. return Optional.some(o);
  406. };
  407. return {
  408. isValue: always,
  409. isError: never,
  410. getOr: constant(o),
  411. getOrThunk: constant(o),
  412. getOrDie: constant(o),
  413. or,
  414. orThunk,
  415. fold,
  416. map: map2,
  417. mapError,
  418. each: each2,
  419. bind,
  420. exists,
  421. forall: forall2,
  422. toOptional
  423. };
  424. };
  425. var error$1 = function(message) {
  426. var getOrThunk = function(f) {
  427. return f();
  428. };
  429. var getOrDie = function() {
  430. return die(String(message))();
  431. };
  432. var or = identity;
  433. var orThunk = function(f) {
  434. return f();
  435. };
  436. var map2 = function(_f) {
  437. return error$1(message);
  438. };
  439. var mapError = function(f) {
  440. return error$1(f(message));
  441. };
  442. var bind = function(_f) {
  443. return error$1(message);
  444. };
  445. var fold = function(onError, _) {
  446. return onError(message);
  447. };
  448. return {
  449. isValue: never,
  450. isError: always,
  451. getOr: identity,
  452. getOrThunk,
  453. getOrDie,
  454. or,
  455. orThunk,
  456. fold,
  457. map: map2,
  458. mapError,
  459. each: noop,
  460. bind,
  461. exists: never,
  462. forall: always,
  463. toOptional: Optional.none
  464. };
  465. };
  466. var fromOption = function(opt, err) {
  467. return opt.fold(function() {
  468. return error$1(err);
  469. }, value);
  470. };
  471. var Result = {
  472. value,
  473. error: error$1,
  474. fromOption
  475. };
  476. var isInlinePattern = function(pattern) {
  477. return pattern.type === "inline-command" || pattern.type === "inline-format";
  478. };
  479. var isBlockPattern = function(pattern) {
  480. return pattern.type === "block-command" || pattern.type === "block-format";
  481. };
  482. var sortPatterns = function(patterns) {
  483. return sort(patterns, function(a, b) {
  484. if (a.start.length === b.start.length) {
  485. return 0;
  486. }
  487. return a.start.length > b.start.length ? -1 : 1;
  488. });
  489. };
  490. var normalizePattern = function(pattern) {
  491. var err = function(message) {
  492. return Result.error({
  493. message,
  494. pattern
  495. });
  496. };
  497. var formatOrCmd = function(name, onFormat, onCommand) {
  498. if (pattern.format !== void 0) {
  499. var formats = void 0;
  500. if (isArray(pattern.format)) {
  501. if (!forall(pattern.format, isString)) {
  502. return err(name + " pattern has non-string items in the `format` array");
  503. }
  504. formats = pattern.format;
  505. } else if (isString(pattern.format)) {
  506. formats = [pattern.format];
  507. } else {
  508. return err(name + " pattern has non-string `format` parameter");
  509. }
  510. return Result.value(onFormat(formats));
  511. } else if (pattern.cmd !== void 0) {
  512. if (!isString(pattern.cmd)) {
  513. return err(name + " pattern has non-string `cmd` parameter");
  514. }
  515. return Result.value(onCommand(pattern.cmd, pattern.value));
  516. } else {
  517. return err(name + " pattern is missing both `format` and `cmd` parameters");
  518. }
  519. };
  520. if (!isObject(pattern)) {
  521. return err("Raw pattern is not an object");
  522. }
  523. if (!isString(pattern.start)) {
  524. return err("Raw pattern is missing `start` parameter");
  525. }
  526. if (pattern.end !== void 0) {
  527. if (!isString(pattern.end)) {
  528. return err("Inline pattern has non-string `end` parameter");
  529. }
  530. if (pattern.start.length === 0 && pattern.end.length === 0) {
  531. return err("Inline pattern has empty `start` and `end` parameters");
  532. }
  533. var start_1 = pattern.start;
  534. var end_1 = pattern.end;
  535. if (end_1.length === 0) {
  536. end_1 = start_1;
  537. start_1 = "";
  538. }
  539. return formatOrCmd("Inline", function(format) {
  540. return {
  541. type: "inline-format",
  542. start: start_1,
  543. end: end_1,
  544. format
  545. };
  546. }, function(cmd, value2) {
  547. return {
  548. type: "inline-command",
  549. start: start_1,
  550. end: end_1,
  551. cmd,
  552. value: value2
  553. };
  554. });
  555. } else if (pattern.replacement !== void 0) {
  556. if (!isString(pattern.replacement)) {
  557. return err("Replacement pattern has non-string `replacement` parameter");
  558. }
  559. if (pattern.start.length === 0) {
  560. return err("Replacement pattern has empty `start` parameter");
  561. }
  562. return Result.value({
  563. type: "inline-command",
  564. start: "",
  565. end: pattern.start,
  566. cmd: "mceInsertContent",
  567. value: pattern.replacement
  568. });
  569. } else {
  570. if (pattern.start.length === 0) {
  571. return err("Block pattern has empty `start` parameter");
  572. }
  573. return formatOrCmd("Block", function(formats) {
  574. return {
  575. type: "block-format",
  576. start: pattern.start,
  577. format: formats[0]
  578. };
  579. }, function(command, commandValue) {
  580. return {
  581. type: "block-command",
  582. start: pattern.start,
  583. cmd: command,
  584. value: commandValue
  585. };
  586. });
  587. }
  588. };
  589. var denormalizePattern = function(pattern) {
  590. if (pattern.type === "block-command") {
  591. return {
  592. start: pattern.start,
  593. cmd: pattern.cmd,
  594. value: pattern.value
  595. };
  596. } else if (pattern.type === "block-format") {
  597. return {
  598. start: pattern.start,
  599. format: pattern.format
  600. };
  601. } else if (pattern.type === "inline-command") {
  602. if (pattern.cmd === "mceInsertContent" && pattern.start === "") {
  603. return {
  604. start: pattern.end,
  605. replacement: pattern.value
  606. };
  607. } else {
  608. return {
  609. start: pattern.start,
  610. end: pattern.end,
  611. cmd: pattern.cmd,
  612. value: pattern.value
  613. };
  614. }
  615. } else if (pattern.type === "inline-format") {
  616. return {
  617. start: pattern.start,
  618. end: pattern.end,
  619. format: pattern.format.length === 1 ? pattern.format[0] : pattern.format
  620. };
  621. }
  622. };
  623. var createPatternSet = function(patterns) {
  624. return {
  625. inlinePatterns: filter(patterns, isInlinePattern),
  626. blockPatterns: sortPatterns(filter(patterns, isBlockPattern))
  627. };
  628. };
  629. var get = function(patternsState) {
  630. var setPatterns = function(newPatterns) {
  631. var normalized = partition(map(newPatterns, normalizePattern));
  632. if (normalized.errors.length > 0) {
  633. var firstError = normalized.errors[0];
  634. throw new Error(firstError.message + ":\n" + JSON.stringify(firstError.pattern, null, 2));
  635. }
  636. patternsState.set(createPatternSet(normalized.values));
  637. };
  638. var getPatterns = function() {
  639. return __spreadArray(__spreadArray([], map(patternsState.get().inlinePatterns, denormalizePattern), true), map(patternsState.get().blockPatterns, denormalizePattern), true);
  640. };
  641. return {
  642. setPatterns,
  643. getPatterns
  644. };
  645. };
  646. var Global = typeof window !== "undefined" ? window : Function("return this;")();
  647. var error = function() {
  648. var args = [];
  649. for (var _i = 0; _i < arguments.length; _i++) {
  650. args[_i] = arguments[_i];
  651. }
  652. var console2 = Global.console;
  653. if (console2) {
  654. if (console2.error) {
  655. console2.error.apply(console2, args);
  656. } else {
  657. console2.log.apply(console2, args);
  658. }
  659. }
  660. };
  661. var defaultPatterns = [
  662. {
  663. start: "*",
  664. end: "*",
  665. format: "italic"
  666. },
  667. {
  668. start: "**",
  669. end: "**",
  670. format: "bold"
  671. },
  672. {
  673. start: "#",
  674. format: "h1"
  675. },
  676. {
  677. start: "##",
  678. format: "h2"
  679. },
  680. {
  681. start: "###",
  682. format: "h3"
  683. },
  684. {
  685. start: "####",
  686. format: "h4"
  687. },
  688. {
  689. start: "#####",
  690. format: "h5"
  691. },
  692. {
  693. start: "######",
  694. format: "h6"
  695. },
  696. {
  697. start: "1. ",
  698. cmd: "InsertOrderedList"
  699. },
  700. {
  701. start: "* ",
  702. cmd: "InsertUnorderedList"
  703. },
  704. {
  705. start: "- ",
  706. cmd: "InsertUnorderedList"
  707. }
  708. ];
  709. var getPatternSet = function(editor) {
  710. var patterns = editor.getParam("textpattern_patterns", defaultPatterns, "array");
  711. if (!isArray(patterns)) {
  712. error("The setting textpattern_patterns should be an array");
  713. return {
  714. inlinePatterns: [],
  715. blockPatterns: []
  716. };
  717. }
  718. var normalized = partition(map(patterns, normalizePattern));
  719. each(normalized.errors, function(err) {
  720. return error(err.message, err.pattern);
  721. });
  722. return createPatternSet(normalized.values);
  723. };
  724. var getForcedRootBlock = function(editor) {
  725. var block = editor.getParam("forced_root_block", "p");
  726. if (block === false) {
  727. return "";
  728. } else if (block === true) {
  729. return "p";
  730. } else {
  731. return block;
  732. }
  733. };
  734. var global$4 = tinymce.util.Tools.resolve("tinymce.util.Delay");
  735. var global$3 = tinymce.util.Tools.resolve("tinymce.util.VK");
  736. var zeroWidth = "\uFEFF";
  737. var nbsp = "\xA0";
  738. var global$2 = tinymce.util.Tools.resolve("tinymce.util.Tools");
  739. var global$1 = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils");
  740. var global = tinymce.util.Tools.resolve("tinymce.dom.TextSeeker");
  741. var point = function(container, offset) {
  742. return {
  743. container,
  744. offset
  745. };
  746. };
  747. var isText = function(node) {
  748. return node.nodeType === Node.TEXT_NODE;
  749. };
  750. var cleanEmptyNodes = function(dom, node, isRoot) {
  751. if (node && dom.isEmpty(node) && !isRoot(node)) {
  752. var parent_1 = node.parentNode;
  753. dom.remove(node);
  754. cleanEmptyNodes(dom, parent_1, isRoot);
  755. }
  756. };
  757. var deleteRng = function(dom, rng, isRoot, clean) {
  758. if (clean === void 0) {
  759. clean = true;
  760. }
  761. var startParent = rng.startContainer.parentNode;
  762. var endParent = rng.endContainer.parentNode;
  763. rng.deleteContents();
  764. if (clean && !isRoot(rng.startContainer)) {
  765. if (isText(rng.startContainer) && rng.startContainer.data.length === 0) {
  766. dom.remove(rng.startContainer);
  767. }
  768. if (isText(rng.endContainer) && rng.endContainer.data.length === 0) {
  769. dom.remove(rng.endContainer);
  770. }
  771. cleanEmptyNodes(dom, startParent, isRoot);
  772. if (startParent !== endParent) {
  773. cleanEmptyNodes(dom, endParent, isRoot);
  774. }
  775. }
  776. };
  777. var isBlockFormatName = function(name, formatter) {
  778. var formatSet = formatter.get(name);
  779. return isArray(formatSet) && head(formatSet).exists(function(format) {
  780. return has(format, "block");
  781. });
  782. };
  783. var isReplacementPattern = function(pattern) {
  784. return pattern.start.length === 0;
  785. };
  786. var getParentBlock = function(editor, rng) {
  787. var parentBlockOpt = Optional.from(editor.dom.getParent(rng.startContainer, editor.dom.isBlock));
  788. if (getForcedRootBlock(editor) === "") {
  789. return parentBlockOpt.orThunk(function() {
  790. return Optional.some(editor.getBody());
  791. });
  792. } else {
  793. return parentBlockOpt;
  794. }
  795. };
  796. var DOM = global$1.DOM;
  797. var alwaysNext = function(startNode) {
  798. return function(node) {
  799. return startNode === node ? -1 : 0;
  800. };
  801. };
  802. var isBoundary = function(dom) {
  803. return function(node) {
  804. return dom.isBlock(node) || contains([
  805. "BR",
  806. "IMG",
  807. "HR",
  808. "INPUT"
  809. ], node.nodeName) || dom.getContentEditable(node) === "false";
  810. };
  811. };
  812. var textBefore = function(node, offset, rootNode) {
  813. if (isText(node) && offset >= 0) {
  814. return Optional.some(point(node, offset));
  815. } else {
  816. var textSeeker = global(DOM);
  817. return Optional.from(textSeeker.backwards(node, offset, alwaysNext(node), rootNode)).map(function(prev) {
  818. return point(prev.container, prev.container.data.length);
  819. });
  820. }
  821. };
  822. var textAfter = function(node, offset, rootNode) {
  823. if (isText(node) && offset >= node.length) {
  824. return Optional.some(point(node, offset));
  825. } else {
  826. var textSeeker = global(DOM);
  827. return Optional.from(textSeeker.forwards(node, offset, alwaysNext(node), rootNode)).map(function(prev) {
  828. return point(prev.container, 0);
  829. });
  830. }
  831. };
  832. var scanLeft = function(node, offset, rootNode) {
  833. if (!isText(node)) {
  834. return Optional.none();
  835. }
  836. var text = node.textContent;
  837. if (offset >= 0 && offset <= text.length) {
  838. return Optional.some(point(node, offset));
  839. } else {
  840. var textSeeker = global(DOM);
  841. return Optional.from(textSeeker.backwards(node, offset, alwaysNext(node), rootNode)).bind(function(prev) {
  842. var prevText = prev.container.data;
  843. return scanLeft(prev.container, offset + prevText.length, rootNode);
  844. });
  845. }
  846. };
  847. var scanRight = function(node, offset, rootNode) {
  848. if (!isText(node)) {
  849. return Optional.none();
  850. }
  851. var text = node.textContent;
  852. if (offset <= text.length) {
  853. return Optional.some(point(node, offset));
  854. } else {
  855. var textSeeker = global(DOM);
  856. return Optional.from(textSeeker.forwards(node, offset, alwaysNext(node), rootNode)).bind(function(next) {
  857. return scanRight(next.container, offset - text.length, rootNode);
  858. });
  859. }
  860. };
  861. var repeatLeft = function(dom, node, offset, process, rootNode) {
  862. var search = global(dom, isBoundary(dom));
  863. return Optional.from(search.backwards(node, offset, process, rootNode));
  864. };
  865. var generatePath = function(root, node, offset) {
  866. if (isText(node) && (offset < 0 || offset > node.data.length)) {
  867. return [];
  868. }
  869. var p = [offset];
  870. var current = node;
  871. while (current !== root && current.parentNode) {
  872. var parent_1 = current.parentNode;
  873. for (var i = 0; i < parent_1.childNodes.length; i++) {
  874. if (parent_1.childNodes[i] === current) {
  875. p.push(i);
  876. break;
  877. }
  878. }
  879. current = parent_1;
  880. }
  881. return current === root ? p.reverse() : [];
  882. };
  883. var generatePathRange = function(root, startNode, startOffset, endNode, endOffset) {
  884. var start = generatePath(root, startNode, startOffset);
  885. var end = generatePath(root, endNode, endOffset);
  886. return {
  887. start,
  888. end
  889. };
  890. };
  891. var resolvePath = function(root, path) {
  892. var nodePath = path.slice();
  893. var offset = nodePath.pop();
  894. var resolvedNode = foldl(nodePath, function(optNode, index) {
  895. return optNode.bind(function(node) {
  896. return Optional.from(node.childNodes[index]);
  897. });
  898. }, Optional.some(root));
  899. return resolvedNode.bind(function(node) {
  900. if (isText(node) && (offset < 0 || offset > node.data.length)) {
  901. return Optional.none();
  902. } else {
  903. return Optional.some({
  904. node,
  905. offset
  906. });
  907. }
  908. });
  909. };
  910. var resolvePathRange = function(root, range) {
  911. return resolvePath(root, range.start).bind(function(_a) {
  912. var startNode = _a.node, startOffset = _a.offset;
  913. return resolvePath(root, range.end).map(function(_a2) {
  914. var endNode = _a2.node, endOffset = _a2.offset;
  915. var rng = document.createRange();
  916. rng.setStart(startNode, startOffset);
  917. rng.setEnd(endNode, endOffset);
  918. return rng;
  919. });
  920. });
  921. };
  922. var generatePathRangeFromRange = function(root, range) {
  923. return generatePathRange(root, range.startContainer, range.startOffset, range.endContainer, range.endOffset);
  924. };
  925. var stripPattern = function(dom, block, pattern) {
  926. var firstTextNode = textAfter(block, 0, block);
  927. firstTextNode.each(function(spot) {
  928. var node = spot.container;
  929. scanRight(node, pattern.start.length, block).each(function(end) {
  930. var rng = dom.createRng();
  931. rng.setStart(node, 0);
  932. rng.setEnd(end.container, end.offset);
  933. deleteRng(dom, rng, function(e) {
  934. return e === block;
  935. });
  936. });
  937. });
  938. };
  939. var applyPattern$1 = function(editor, match) {
  940. var dom = editor.dom;
  941. var pattern = match.pattern;
  942. var rng = resolvePathRange(dom.getRoot(), match.range).getOrDie("Unable to resolve path range");
  943. getParentBlock(editor, rng).each(function(block) {
  944. if (pattern.type === "block-format") {
  945. if (isBlockFormatName(pattern.format, editor.formatter)) {
  946. editor.undoManager.transact(function() {
  947. stripPattern(editor.dom, block, pattern);
  948. editor.formatter.apply(pattern.format);
  949. });
  950. }
  951. } else if (pattern.type === "block-command") {
  952. editor.undoManager.transact(function() {
  953. stripPattern(editor.dom, block, pattern);
  954. editor.execCommand(pattern.cmd, false, pattern.value);
  955. });
  956. }
  957. });
  958. return true;
  959. };
  960. var findPattern$1 = function(patterns, text) {
  961. var nuText = text.replace(nbsp, " ");
  962. return find(patterns, function(pattern) {
  963. return text.indexOf(pattern.start) === 0 || nuText.indexOf(pattern.start) === 0;
  964. });
  965. };
  966. var findPatterns$1 = function(editor, patterns) {
  967. var dom = editor.dom;
  968. var rng = editor.selection.getRng();
  969. return getParentBlock(editor, rng).filter(function(block) {
  970. var forcedRootBlock = getForcedRootBlock(editor);
  971. var matchesForcedRootBlock = forcedRootBlock === "" && dom.is(block, "body") || dom.is(block, forcedRootBlock);
  972. return block !== null && matchesForcedRootBlock;
  973. }).bind(function(block) {
  974. var blockText = block.textContent;
  975. var matchedPattern = findPattern$1(patterns, blockText);
  976. return matchedPattern.map(function(pattern) {
  977. if (global$2.trim(blockText).length === pattern.start.length) {
  978. return [];
  979. }
  980. return [{
  981. pattern,
  982. range: generatePathRange(dom.getRoot(), block, 0, block, 0)
  983. }];
  984. });
  985. }).getOr([]);
  986. };
  987. var applyMatches$1 = function(editor, matches) {
  988. if (matches.length === 0) {
  989. return;
  990. }
  991. var bookmark = editor.selection.getBookmark();
  992. each(matches, function(match) {
  993. return applyPattern$1(editor, match);
  994. });
  995. editor.selection.moveToBookmark(bookmark);
  996. };
  997. var unique = 0;
  998. var generate = function(prefix) {
  999. var date = new Date();
  1000. var time = date.getTime();
  1001. var random = Math.floor(Math.random() * 1e9);
  1002. unique++;
  1003. return prefix + "_" + random + unique + String(time);
  1004. };
  1005. var checkRange = function(str, substr, start) {
  1006. return substr === "" || str.length >= substr.length && str.substr(start, start + substr.length) === substr;
  1007. };
  1008. var endsWith = function(str, suffix) {
  1009. return checkRange(str, suffix, str.length - suffix.length);
  1010. };
  1011. var newMarker = function(dom, id) {
  1012. return dom.create("span", {
  1013. "data-mce-type": "bookmark",
  1014. id
  1015. });
  1016. };
  1017. var rangeFromMarker = function(dom, marker) {
  1018. var rng = dom.createRng();
  1019. rng.setStartAfter(marker.start);
  1020. rng.setEndBefore(marker.end);
  1021. return rng;
  1022. };
  1023. var createMarker = function(dom, markerPrefix, pathRange) {
  1024. var rng = resolvePathRange(dom.getRoot(), pathRange).getOrDie("Unable to resolve path range");
  1025. var startNode = rng.startContainer;
  1026. var endNode = rng.endContainer;
  1027. var textEnd = rng.endOffset === 0 ? endNode : endNode.splitText(rng.endOffset);
  1028. var textStart = rng.startOffset === 0 ? startNode : startNode.splitText(rng.startOffset);
  1029. return {
  1030. prefix: markerPrefix,
  1031. end: textEnd.parentNode.insertBefore(newMarker(dom, markerPrefix + "-end"), textEnd),
  1032. start: textStart.parentNode.insertBefore(newMarker(dom, markerPrefix + "-start"), textStart)
  1033. };
  1034. };
  1035. var removeMarker = function(dom, marker, isRoot) {
  1036. cleanEmptyNodes(dom, dom.get(marker.prefix + "-end"), isRoot);
  1037. cleanEmptyNodes(dom, dom.get(marker.prefix + "-start"), isRoot);
  1038. };
  1039. var matchesPattern = function(dom, block, patternContent) {
  1040. return function(element, offset) {
  1041. var text = element.data;
  1042. var searchText = text.substring(0, offset);
  1043. var startEndIndex = searchText.lastIndexOf(patternContent.charAt(patternContent.length - 1));
  1044. var startIndex = searchText.lastIndexOf(patternContent);
  1045. if (startIndex !== -1) {
  1046. return startIndex + patternContent.length;
  1047. } else if (startEndIndex !== -1) {
  1048. return startEndIndex + 1;
  1049. } else {
  1050. return -1;
  1051. }
  1052. };
  1053. };
  1054. var findPatternStartFromSpot = function(dom, pattern, block, spot) {
  1055. var startPattern = pattern.start;
  1056. var startSpot = repeatLeft(dom, spot.container, spot.offset, matchesPattern(dom, block, startPattern), block);
  1057. return startSpot.bind(function(spot2) {
  1058. if (spot2.offset >= startPattern.length) {
  1059. var rng = dom.createRng();
  1060. rng.setStart(spot2.container, spot2.offset - startPattern.length);
  1061. rng.setEnd(spot2.container, spot2.offset);
  1062. return Optional.some(rng);
  1063. } else {
  1064. var offset = spot2.offset - startPattern.length;
  1065. return scanLeft(spot2.container, offset, block).map(function(nextSpot) {
  1066. var rng2 = dom.createRng();
  1067. rng2.setStart(nextSpot.container, nextSpot.offset);
  1068. rng2.setEnd(spot2.container, spot2.offset);
  1069. return rng2;
  1070. }).filter(function(rng2) {
  1071. return rng2.toString() === startPattern;
  1072. }).orThunk(function() {
  1073. return findPatternStartFromSpot(dom, pattern, block, point(spot2.container, 0));
  1074. });
  1075. }
  1076. });
  1077. };
  1078. var findPatternStart = function(dom, pattern, node, offset, block, requireGap) {
  1079. if (requireGap === void 0) {
  1080. requireGap = false;
  1081. }
  1082. if (pattern.start.length === 0 && !requireGap) {
  1083. var rng = dom.createRng();
  1084. rng.setStart(node, offset);
  1085. rng.setEnd(node, offset);
  1086. return Optional.some(rng);
  1087. }
  1088. return textBefore(node, offset, block).bind(function(spot) {
  1089. var start = findPatternStartFromSpot(dom, pattern, block, spot);
  1090. return start.bind(function(startRange) {
  1091. if (requireGap) {
  1092. if (startRange.endContainer === spot.container && startRange.endOffset === spot.offset) {
  1093. return Optional.none();
  1094. } else if (spot.offset === 0 && startRange.endContainer.textContent.length === startRange.endOffset) {
  1095. return Optional.none();
  1096. }
  1097. }
  1098. return Optional.some(startRange);
  1099. });
  1100. });
  1101. };
  1102. var findPattern = function(editor, block, details) {
  1103. var dom = editor.dom;
  1104. var root = dom.getRoot();
  1105. var pattern = details.pattern;
  1106. var endNode = details.position.container;
  1107. var endOffset = details.position.offset;
  1108. return scanLeft(endNode, endOffset - details.pattern.end.length, block).bind(function(spot) {
  1109. var endPathRng = generatePathRange(root, spot.container, spot.offset, endNode, endOffset);
  1110. if (isReplacementPattern(pattern)) {
  1111. return Optional.some({
  1112. matches: [{
  1113. pattern,
  1114. startRng: endPathRng,
  1115. endRng: endPathRng
  1116. }],
  1117. position: spot
  1118. });
  1119. } else {
  1120. var resultsOpt = findPatternsRec(editor, details.remainingPatterns, spot.container, spot.offset, block);
  1121. var results_1 = resultsOpt.getOr({
  1122. matches: [],
  1123. position: spot
  1124. });
  1125. var pos = results_1.position;
  1126. var start = findPatternStart(dom, pattern, pos.container, pos.offset, block, resultsOpt.isNone());
  1127. return start.map(function(startRng) {
  1128. var startPathRng = generatePathRangeFromRange(root, startRng);
  1129. return {
  1130. matches: results_1.matches.concat([{
  1131. pattern,
  1132. startRng: startPathRng,
  1133. endRng: endPathRng
  1134. }]),
  1135. position: point(startRng.startContainer, startRng.startOffset)
  1136. };
  1137. });
  1138. }
  1139. });
  1140. };
  1141. var findPatternsRec = function(editor, patterns, node, offset, block) {
  1142. var dom = editor.dom;
  1143. return textBefore(node, offset, dom.getRoot()).bind(function(endSpot) {
  1144. var rng = dom.createRng();
  1145. rng.setStart(block, 0);
  1146. rng.setEnd(node, offset);
  1147. var text = rng.toString();
  1148. for (var i = 0; i < patterns.length; i++) {
  1149. var pattern = patterns[i];
  1150. if (!endsWith(text, pattern.end)) {
  1151. continue;
  1152. }
  1153. var patternsWithoutCurrent = patterns.slice();
  1154. patternsWithoutCurrent.splice(i, 1);
  1155. var result = findPattern(editor, block, {
  1156. pattern,
  1157. remainingPatterns: patternsWithoutCurrent,
  1158. position: endSpot
  1159. });
  1160. if (result.isSome()) {
  1161. return result;
  1162. }
  1163. }
  1164. return Optional.none();
  1165. });
  1166. };
  1167. var applyPattern = function(editor, pattern, patternRange) {
  1168. editor.selection.setRng(patternRange);
  1169. if (pattern.type === "inline-format") {
  1170. each(pattern.format, function(format) {
  1171. editor.formatter.apply(format);
  1172. });
  1173. } else {
  1174. editor.execCommand(pattern.cmd, false, pattern.value);
  1175. }
  1176. };
  1177. var applyReplacementPattern = function(editor, pattern, marker, isRoot) {
  1178. var markerRange = rangeFromMarker(editor.dom, marker);
  1179. deleteRng(editor.dom, markerRange, isRoot);
  1180. applyPattern(editor, pattern, markerRange);
  1181. };
  1182. var applyPatternWithContent = function(editor, pattern, startMarker, endMarker, isRoot) {
  1183. var dom = editor.dom;
  1184. var markerEndRange = rangeFromMarker(dom, endMarker);
  1185. var markerStartRange = rangeFromMarker(dom, startMarker);
  1186. deleteRng(dom, markerStartRange, isRoot);
  1187. deleteRng(dom, markerEndRange, isRoot);
  1188. var patternMarker = {
  1189. prefix: startMarker.prefix,
  1190. start: startMarker.end,
  1191. end: endMarker.start
  1192. };
  1193. var patternRange = rangeFromMarker(dom, patternMarker);
  1194. applyPattern(editor, pattern, patternRange);
  1195. };
  1196. var addMarkers = function(dom, matches) {
  1197. var markerPrefix = generate("mce_textpattern");
  1198. var matchesWithEnds = foldr(matches, function(acc, match) {
  1199. var endMarker = createMarker(dom, markerPrefix + ("_end" + acc.length), match.endRng);
  1200. return acc.concat([__assign(__assign({}, match), { endMarker })]);
  1201. }, []);
  1202. return foldr(matchesWithEnds, function(acc, match) {
  1203. var idx = matchesWithEnds.length - acc.length - 1;
  1204. var startMarker = isReplacementPattern(match.pattern) ? match.endMarker : createMarker(dom, markerPrefix + ("_start" + idx), match.startRng);
  1205. return acc.concat([__assign(__assign({}, match), { startMarker })]);
  1206. }, []);
  1207. };
  1208. var findPatterns = function(editor, patterns, space) {
  1209. var rng = editor.selection.getRng();
  1210. if (rng.collapsed === false) {
  1211. return [];
  1212. }
  1213. return getParentBlock(editor, rng).bind(function(block) {
  1214. var offset = rng.startOffset - (space ? 1 : 0);
  1215. return findPatternsRec(editor, patterns, rng.startContainer, offset, block);
  1216. }).fold(function() {
  1217. return [];
  1218. }, function(result) {
  1219. return result.matches;
  1220. });
  1221. };
  1222. var applyMatches = function(editor, matches) {
  1223. if (matches.length === 0) {
  1224. return;
  1225. }
  1226. var dom = editor.dom;
  1227. var bookmark = editor.selection.getBookmark();
  1228. var matchesWithMarkers = addMarkers(dom, matches);
  1229. each(matchesWithMarkers, function(match) {
  1230. var block = dom.getParent(match.startMarker.start, dom.isBlock);
  1231. var isRoot = function(node) {
  1232. return node === block;
  1233. };
  1234. if (isReplacementPattern(match.pattern)) {
  1235. applyReplacementPattern(editor, match.pattern, match.endMarker, isRoot);
  1236. } else {
  1237. applyPatternWithContent(editor, match.pattern, match.startMarker, match.endMarker, isRoot);
  1238. }
  1239. removeMarker(dom, match.endMarker, isRoot);
  1240. removeMarker(dom, match.startMarker, isRoot);
  1241. });
  1242. editor.selection.moveToBookmark(bookmark);
  1243. };
  1244. var handleEnter = function(editor, patternSet) {
  1245. if (!editor.selection.isCollapsed()) {
  1246. return false;
  1247. }
  1248. var inlineMatches = findPatterns(editor, patternSet.inlinePatterns, false);
  1249. var blockMatches = findPatterns$1(editor, patternSet.blockPatterns);
  1250. if (blockMatches.length > 0 || inlineMatches.length > 0) {
  1251. editor.undoManager.add();
  1252. editor.undoManager.extra(function() {
  1253. editor.execCommand("mceInsertNewLine");
  1254. }, function() {
  1255. editor.insertContent(zeroWidth);
  1256. applyMatches(editor, inlineMatches);
  1257. applyMatches$1(editor, blockMatches);
  1258. var range = editor.selection.getRng();
  1259. var spot = textBefore(range.startContainer, range.startOffset, editor.dom.getRoot());
  1260. editor.execCommand("mceInsertNewLine");
  1261. spot.each(function(s) {
  1262. var node = s.container;
  1263. if (node.data.charAt(s.offset - 1) === zeroWidth) {
  1264. node.deleteData(s.offset - 1, 1);
  1265. cleanEmptyNodes(editor.dom, node.parentNode, function(e) {
  1266. return e === editor.dom.getRoot();
  1267. });
  1268. }
  1269. });
  1270. });
  1271. return true;
  1272. }
  1273. return false;
  1274. };
  1275. var handleInlineKey = function(editor, patternSet) {
  1276. var inlineMatches = findPatterns(editor, patternSet.inlinePatterns, true);
  1277. if (inlineMatches.length > 0) {
  1278. editor.undoManager.transact(function() {
  1279. applyMatches(editor, inlineMatches);
  1280. });
  1281. }
  1282. };
  1283. var checkKeyEvent = function(codes, event, predicate) {
  1284. for (var i = 0; i < codes.length; i++) {
  1285. if (predicate(codes[i], event)) {
  1286. return true;
  1287. }
  1288. }
  1289. return false;
  1290. };
  1291. var checkKeyCode = function(codes, event) {
  1292. return checkKeyEvent(codes, event, function(code, event2) {
  1293. return code === event2.keyCode && global$3.modifierPressed(event2) === false;
  1294. });
  1295. };
  1296. var checkCharCode = function(chars, event) {
  1297. return checkKeyEvent(chars, event, function(chr, event2) {
  1298. return chr.charCodeAt(0) === event2.charCode;
  1299. });
  1300. };
  1301. var setup = function(editor, patternsState) {
  1302. var charCodes = [
  1303. ",",
  1304. ".",
  1305. ";",
  1306. ":",
  1307. "!",
  1308. "?"
  1309. ];
  1310. var keyCodes = [32];
  1311. editor.on("keydown", function(e) {
  1312. if (e.keyCode === 13 && !global$3.modifierPressed(e)) {
  1313. if (handleEnter(editor, patternsState.get())) {
  1314. e.preventDefault();
  1315. }
  1316. }
  1317. }, true);
  1318. editor.on("keyup", function(e) {
  1319. if (checkKeyCode(keyCodes, e)) {
  1320. handleInlineKey(editor, patternsState.get());
  1321. }
  1322. });
  1323. editor.on("keypress", function(e) {
  1324. if (checkCharCode(charCodes, e)) {
  1325. global$4.setEditorTimeout(editor, function() {
  1326. handleInlineKey(editor, patternsState.get());
  1327. });
  1328. }
  1329. });
  1330. };
  1331. function Plugin() {
  1332. global$5.add("textpattern", function(editor) {
  1333. var patternsState = Cell(getPatternSet(editor));
  1334. setup(editor, patternsState);
  1335. return get(patternsState);
  1336. });
  1337. }
  1338. Plugin();
  1339. })();
  1340. }
  1341. });
  1342. // node_modules/tinymce/plugins/textpattern/index.js
  1343. var require_textpattern = __commonJS({
  1344. "node_modules/tinymce/plugins/textpattern/index.js"() {
  1345. init_define_APP_INFO();
  1346. require_plugin();
  1347. }
  1348. });
  1349. // dep:tinymce_plugins_textpattern
  1350. init_define_APP_INFO();
  1351. var tinymce_plugins_textpattern_default = require_textpattern();
  1352. export {
  1353. tinymce_plugins_textpattern_default as default
  1354. };
  1355. //# sourceMappingURL=tinymce_plugins_textpattern.js.map