PluginProbe
YayMail – WooCommerce Email Customizer / 4.3.3
YayMail – WooCommerce Email Customizer v4.3.3
4.4.4 4.4.3 4.4.2 4.4.1 trunk 1.9.6 2.1.4 2.1.5 3.2.2 3.2.6 3.2.7.1 3.2.8.1 3.2.9 3.3 3.3.1 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.3.9 3.4 3.4.1 3.4.2 3.4.3 All 55 releases
yaymail / assets / scripts / wp-editor-plugins / searchreplace / plugin.min.js

plugin.min.js in YayMail – WooCommerce Email Customizer 4.3.3, at assets/scripts/wp-editor-plugins/searchreplace/plugin.min.js

453 lines 14.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 !(function () {
2 'use strict';
3 var r = function (e) {
4 var t = e,
5 n = function () {
6 return t;
7 };
8 return {
9 get: n,
10 set: function (e) {
11 t = e;
12 },
13 clone: function () {
14 return r(n());
15 },
16 };
17 },
18 e = tinymce.util.Tools.resolve('tinymce.PluginManager'),
19 p = tinymce.util.Tools.resolve('tinymce.util.Tools');
20 function h(e) {
21 return e && 1 === e.nodeType && 'false' === e.contentEditable;
22 }
23 var u = {
24 findAndReplaceDOMText: function (t, n, r, a, i) {
25 var o,
26 d,
27 m,
28 f,
29 p,
30 g,
31 c = [],
32 l = 0;
33 function s(e, t) {
34 if (((t = t || 0), !e[0]))
35 throw new Error('findAndReplaceDOMText cannot handle zero-length matches');
36 var n = e.index;
37 if (0 < t) {
38 var r = e[t];
39 if (!r) throw new Error('Invalid capture group');
40 (n += e[0].indexOf(r)), (e[0] = r);
41 }
42 return [n, n + e[0].length, [e[0]]];
43 }
44 if (
45 ((m = n.ownerDocument),
46 (f = i.getBlockElements()),
47 (p = i.getWhiteSpaceElements()),
48 (g = i.getShortEndedElements()),
49 (d = (function e(t) {
50 var n;
51 if (3 === t.nodeType) return t.data;
52 if (p[t.nodeName] && !f[t.nodeName]) return '';
53 if (((n = ''), h(t))) return '\n';
54 if (((f[t.nodeName] || g[t.nodeName]) && (n += '\n'), (t = t.firstChild)))
55 for (; (n += e(t)), (t = t.nextSibling); );
56 return n;
57 })(n)))
58 ) {
59 if (t.global) for (; (o = t.exec(d)); ) c.push(s(o, a));
60 else (o = d.match(t)), c.push(s(o, a));
61 return (
62 c.length &&
63 ((l = c.length),
64 (function (e, t, n) {
65 var r,
66 a,
67 i,
68 o,
69 d = [],
70 c = 0,
71 l = e,
72 s = t.shift(),
73 u = 0;
74 e: for (;;) {
75 if (
76 ((f[l.nodeName] || g[l.nodeName] || h(l)) && c++,
77 3 === l.nodeType &&
78 (!a && l.length + c >= s[1] ? ((a = l), (o = s[1] - c)) : r && d.push(l),
79 !r && l.length + c > s[0] && ((r = l), (i = s[0] - c)),
80 (c += l.length)),
81 r && a)
82 ) {
83 if (
84 ((l = n({
85 startNode: r,
86 startNodeIndex: i,
87 endNode: a,
88 endNodeIndex: o,
89 innerNodes: d,
90 match: s[2],
91 matchIndex: u,
92 })),
93 (c -= a.length - o),
94 (a = r = null),
95 (d = []),
96 u++,
97 !(s = t.shift()))
98 )
99 break;
100 } else if ((p[l.nodeName] && !f[l.nodeName]) || !l.firstChild) {
101 if (l.nextSibling) {
102 l = l.nextSibling;
103 continue;
104 }
105 } else if (!h(l)) {
106 l = l.firstChild;
107 continue;
108 }
109 for (;;) {
110 if (l.nextSibling) {
111 l = l.nextSibling;
112 break;
113 }
114 if (l.parentNode === e) break e;
115 l = l.parentNode;
116 }
117 }
118 })(
119 n,
120 c,
121 (function (e) {
122 var h;
123 if ('function' != typeof e) {
124 var r = e.nodeType ? e : m.createElement(e);
125 h = function (e, t) {
126 var n = r.cloneNode(!1);
127 return (
128 n.setAttribute('data-mce-index', t),
129 e && n.appendChild(m.createTextNode(e)),
130 n
131 );
132 };
133 } else h = e;
134 return function (e) {
135 var t,
136 n,
137 r,
138 a = e.startNode,
139 i = e.endNode,
140 o = e.matchIndex;
141 if (a === i) {
142 var d = a;
143 (r = d.parentNode),
144 0 < e.startNodeIndex &&
145 ((t = m.createTextNode(d.data.substring(0, e.startNodeIndex))),
146 r.insertBefore(t, d));
147 var c = h(e.match[0], o);
148 return (
149 r.insertBefore(c, d),
150 e.endNodeIndex < d.length &&
151 ((n = m.createTextNode(d.data.substring(e.endNodeIndex))),
152 r.insertBefore(n, d)),
153 d.parentNode.removeChild(d),
154 c
155 );
156 }
157 (t = m.createTextNode(a.data.substring(0, e.startNodeIndex))),
158 (n = m.createTextNode(i.data.substring(e.endNodeIndex)));
159 for (
160 var l = h(a.data.substring(e.startNodeIndex), o),
161 s = 0,
162 u = e.innerNodes.length;
163 s < u;
164 ++s
165 ) {
166 var f = e.innerNodes[s],
167 p = h(f.data, o);
168 f.parentNode.replaceChild(p, f);
169 }
170 var g = h(i.data.substring(0, e.endNodeIndex), o);
171 return (
172 (r = a.parentNode).insertBefore(t, a),
173 r.insertBefore(l, a),
174 r.removeChild(a),
175 (r = i.parentNode).insertBefore(g, i),
176 r.insertBefore(n, i),
177 r.removeChild(i),
178 g
179 );
180 };
181 })(r),
182 )),
183 l
184 );
185 }
186 },
187 },
188 g = function (e) {
189 var t = e.getAttribute('data-mce-index');
190 return 'number' == typeof t ? '' + t : t;
191 },
192 m = function (e) {
193 var t = e.parentNode;
194 e.firstChild && t.insertBefore(e.firstChild, e), e.parentNode.removeChild(e);
195 },
196 o = function (e, t) {
197 var n,
198 r = [];
199 if ((n = p.toArray(e.getBody().getElementsByTagName('span'))).length)
200 for (var a = 0; a < n.length; a++) {
201 var i = g(n[a]);
202 null !== i && i.length && i === t.toString() && r.push(n[a]);
203 }
204 return r;
205 },
206 f = function (e, t, n) {
207 var r = t.get(),
208 a = e.dom;
209 (n = !1 !== n) ? r++ : r--, a.removeClass(o(e, t.get()), 'mce-match-marker-selected');
210 var i = o(e, r);
211 return i.length
212 ? (a.addClass(o(e, r), 'mce-match-marker-selected'), e.selection.scrollIntoView(i[0]), r)
213 : -1;
214 },
215 v = function (e, t) {
216 var n = t.parentNode;
217 e.remove(t), e.isEmpty(n) && e.remove(n);
218 },
219 x = function (e, t) {
220 var n = f(e, t, !0);
221 -1 !== n && t.set(n);
222 },
223 b = function (e, t) {
224 var n = f(e, t, !1);
225 -1 !== n && t.set(n);
226 },
227 N = function (e) {
228 var t = g(e);
229 return null !== t && 0 < t.length;
230 },
231 y = function (e, t, n) {
232 var r, a, i, o;
233 for (a = p.toArray(e.getBody().getElementsByTagName('span')), r = 0; r < a.length; r++) {
234 var d = g(a[r]);
235 null !== d &&
236 d.length &&
237 (d === t.get().toString() && (i || (i = a[r].firstChild), (o = a[r].firstChild)),
238 m(a[r]));
239 }
240 if (i && o) {
241 var c = e.dom.createRng();
242 return c.setStart(i, 0), c.setEnd(o, o.data.length), !1 !== n && e.selection.setRng(c), c;
243 }
244 },
245 k = function (e, t) {
246 return 0 < o(e, t.get() + 1).length;
247 },
248 C = function (e, t) {
249 return 0 < o(e, t.get() - 1).length;
250 },
251 T = {
252 done: y,
253 find: function (e, t, n, r, a) {
254 (n = (n = n.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&')).replace(
255 /\s/g,
256 '[^\\S\\r\\n]',
257 )),
258 (n = a ? '\\b' + n + '\\b' : n);
259 var i,
260 o,
261 d,
262 c,
263 l,
264 s =
265 ((i = e),
266 (o = t),
267 (d = new RegExp(n, r ? 'g' : 'gi')),
268 ((l = i.dom.create('span', { 'data-mce-bogus': 1 })).className = 'mce-match-marker'),
269 (c = i.getBody()),
270 y(i, o, !1),
271 u.findAndReplaceDOMText(d, c, l, !1, i.schema));
272 return s && (t.set(-1), t.set(f(e, t, !0))), s;
273 },
274 next: x,
275 prev: b,
276 replace: function (e, t, n, r, a) {
277 var i,
278 o,
279 d,
280 c,
281 l,
282 s,
283 u = t.get();
284 for (
285 r = !1 !== r,
286 d = e.getBody(),
287 o = p.grep(p.toArray(d.getElementsByTagName('span')), N),
288 i = 0;
289 i < o.length;
290 i++
291 ) {
292 var f = g(o[i]);
293 if (((c = l = parseInt(f, 10)), a || c === t.get())) {
294 for (n.length ? ((o[i].firstChild.nodeValue = n), m(o[i])) : v(e.dom, o[i]); o[++i]; ) {
295 if ((c = parseInt(g(o[i]), 10)) !== l) {
296 i--;
297 break;
298 }
299 v(e.dom, o[i]);
300 }
301 r && u--;
302 } else l > t.get() && o[i].setAttribute('data-mce-index', l - 1);
303 }
304 return t.set(u), r ? ((s = k(e, t)), x(e, t)) : ((s = C(e, t)), b(e, t)), !a && s;
305 },
306 hasNext: k,
307 hasPrev: C,
308 },
309 n = function (r, a) {
310 return {
311 done: function (e) {
312 return T.done(r, a, e);
313 },
314 find: function (e, t, n) {
315 return T.find(r, a, e, t, n);
316 },
317 next: function () {
318 return T.next(r, a);
319 },
320 prev: function () {
321 return T.prev(r, a);
322 },
323 replace: function (e, t, n) {
324 return T.replace(r, a, e, t, n);
325 },
326 };
327 },
328 a = function (i, o) {
329 var e,
330 d = {};
331 function c() {
332 s.statusbar.find('#next').disabled(!1 === T.hasNext(i, o)),
333 s.statusbar.find('#prev').disabled(!1 === T.hasPrev(i, o));
334 }
335 function l() {
336 i.windowManager.alert('Could not find the specified string.', function () {
337 s.find('#find')[0].focus();
338 });
339 }
340 i.undoManager.add(), (e = p.trim(i.selection.getContent({ format: 'text' })));
341 var s = i.windowManager.open({
342 layout: 'flex',
343 pack: 'center',
344 align: 'center',
345 onClose: function () {
346 i.focus(), T.done(i, o), i.undoManager.add();
347 },
348 onSubmit: function (e) {
349 var t, n, r, a;
350 return (
351 e.preventDefault(),
352 (n = s.find('#case').checked()),
353 (a = s.find('#words').checked()),
354 (r = s.find('#find').value()).length
355 ? d.text === r && d.caseState === n && d.wholeWord === a
356 ? T.hasNext(i, o)
357 ? (T.next(i, o), void c())
358 : void l()
359 : ((t = T.find(i, o, r, n, a)) || l(),
360 s.statusbar
361 .items()
362 .slice(1)
363 .disabled(0 === t),
364 c(),
365 void (d = { text: r, caseState: n, wholeWord: a }))
366 : (T.done(i, o, !1), void s.statusbar.items().slice(1).disabled(!0))
367 );
368 },
369 buttons: [
370 {
371 text: 'Find',
372 subtype: 'primary',
373 onclick: function () {
374 s.submit();
375 },
376 },
377 {
378 text: 'Replace',
379 disabled: !0,
380 onclick: function () {
381 T.replace(i, o, s.find('#replace').value()) ||
382 (s.statusbar.items().slice(1).disabled(!0), o.set(-1), (d = {}));
383 },
384 },
385 {
386 text: 'Replace all',
387 disabled: !0,
388 onclick: function () {
389 T.replace(i, o, s.find('#replace').value(), !0, !0),
390 s.statusbar.items().slice(1).disabled(!0),
391 (d = {});
392 },
393 },
394 { type: 'spacer', flex: 1 },
395 {
396 text: 'Prev',
397 name: 'prev',
398 disabled: !0,
399 onclick: function () {
400 T.prev(i, o), c();
401 },
402 },
403 {
404 text: 'Next',
405 name: 'next',
406 disabled: !0,
407 onclick: function () {
408 T.next(i, o), c();
409 },
410 },
411 ],
412 title: 'Find and replace',
413 items: {
414 type: 'form',
415 padding: 20,
416 labelGap: 30,
417 spacing: 10,
418 items: [
419 { type: 'textbox', name: 'find', size: 40, label: 'Find', value: e },
420 { type: 'textbox', name: 'replace', size: 40, label: 'Replace with' },
421 { type: 'checkbox', name: 'case', text: 'Match case', label: ' ' },
422 { type: 'checkbox', name: 'words', text: 'Whole words', label: ' ' },
423 ],
424 },
425 });
426 },
427 i = function (e, t) {
428 e.addCommand('SearchReplace', function () {
429 a(e, t);
430 });
431 },
432 d = function (e, t) {
433 return function () {
434 a(e, t);
435 };
436 },
437 c = function (e, t) {
438 e.addMenuItem('searchreplace', {
439 text: 'Find and replace',
440 shortcut: 'Meta+F',
441 onclick: d(e, t),
442 separator: 'before',
443 context: 'edit',
444 }),
445 e.addButton('searchreplace', { tooltip: 'Find and replace', onclick: d(e, t) }),
446 e.shortcuts.add('Meta+F', '', d(e, t));
447 };
448 e.add('searchreplace', function (e) {
449 var t = r(-1);
450 return i(e, t), c(e, t), n(e, t);
451 });
452 })();
453