Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/aimogen-pro/scripts/gutenberg-editor.js

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
1 -
1 + "use strict";
2 + function aiomatic_uniq_fast(a)
3 + {
4 + var seen = {};
5 + var out = [];
6 + var len = a.length;
7 + var j = 0;
8 + for(var i = 0; i < len; i++) {
9 + var item = a[i];
10 + var jsit = JSON.stringify(item);
11 + if(seen[jsit] !== 1) {
12 + seen[jsit] = 1;
13 + out[j++] = item;
14 + }
15 + }
16 + return out;
17 + }
18 + (() => {
19 + var t, e = {
20 + 401: () => {
21 + const t = window.wp.element,
22 + e = window.wp.richText,
23 + o = window.wp.blockEditor,
24 + r = window.wp.components;
25 + async function c() {
26 + let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "below",
27 + e = l(),
28 + [o, r] = p(e),
29 + c = r.clientId,
30 + a = o.clientId,
31 + n = wp.data.select("core/block-editor").getBlock(c),
32 + s = '<span id="' + (Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15)) + '" class="aiomatic-editor-loading"></span>';
33 + if ("above" === t) {
34 + let t = wp.blocks.createBlock("core/paragraph", {
35 + content: s
36 + }),
37 + e = wp.data.select("core/block-editor").getBlockIndex(a),
38 + o = wp.data.select("core/block-editor").getBlockRootClientId(a);
39 + return await wp.data.dispatch("core/block-editor").insertBlock(t, e, o), t
40 + }
41 + if (e.length > 1 || "core/paragraph" !== n.name) {
42 + let t = wp.blocks.createBlock("core/paragraph", {
43 + content: s
44 + }),
45 + e = wp.data.select("core/block-editor").getBlockRootClientId(c),
46 + o = wp.data.select("core/block-editor").getBlockIndex(c) + 1;
47 + if (!wp.data.select("core/block-editor").canInsertBlockType("core/paragraph", e))
48 + for (; e && (o = wp.data.select("core/block-editor").getBlockIndex(e) + 1, e = wp.data.select("core/block-editor").getBlockRootClientId(e), !wp.data.select("core/block-editor").canInsertBlockType("core/paragraph", e)););
49 + return await wp.data.dispatch("core/block-editor").insertBlock(t, o, e), t
50 + }
51 + let d = wp.data.select("core/block-editor").getBlockRootClientId(c);
52 + if (!wp.data.select("core/block-editor").canInsertBlockType("core/paragraph", d)) {
53 + for (; d && (d = wp.data.select("core/block-editor").getBlockRootClientId(d), !wp.data.select("core/block-editor").canInsertBlockType("core/paragraph", d)););
54 + let t = wp.blocks.createBlock("core/paragraph", {
55 + content: s
56 + });
57 + return await wp.data.dispatch("core/block-editor").insertBlock(t, void 0, d), t
58 + }
59 + let w = i(n),
60 + u = wp.richText.create({
61 + html: w
62 + }),
63 + g = w.length;
64 + "offset" in r && (g = r.offset);
65 + let b = wp.richText.slice(u, 0, g),
66 + k = wp.richText.slice(u, g, u.text.length),
67 + h = wp.richText.toHTMLString({
68 + value: b
69 + }),
70 + f = wp.richText.toHTMLString({
71 + value: k
72 + }),
73 + m = n.attributes;
74 + const v = r.attributeKey;
75 + let B = m;
76 + B[v] = h;
77 + const I = wp.blocks.createBlock(n.name, B);
78 + let x = m;
79 + x[v] = s;
80 + let _ = wp.blocks.createBlock("core/paragraph", x),
81 + T = m;
82 + T[v] = f;
83 + let y = [I, _, wp.blocks.createBlock(n.name, T)];
84 + return 0 === k.text.trim().length && (y = [I, _]), await wp.data.dispatch("core/block-editor").replaceBlock(c, y), _
85 + }
86 +
87 + function n() {
88 + let t = l(),
89 + [e, o] = p(t);
90 + return s(t, e, o).trim()
91 + }
92 +
93 + function l() {
94 + let t = wp.data.select("core/block-editor").getMultiSelectedBlockClientIds();
95 + return 0 === t.length && (t = [wp.data.select("core/block-editor").getSelectedBlockClientId()]), t
96 + }
97 +
98 + function i(t) {
99 + let e = "";
100 + return "content" in t.attributes ? e = t.attributes.content : "citation" in t.attributes ? e = t.attributes.citation : "value" in t.attributes ? e = t.attributes.value : "values" in t.attributes ? e = t.attributes.values : "text" in t.attributes && (e = t.attributes.text), e
101 + }
102 +
103 + function s(t, e, o) {
104 + let r = "";
105 + return t.forEach((t => {
106 + const c = wp.data.select("core/block-editor").getBlock(t);
107 + let a = i(c),
108 + n = wp.richText.create({
109 + html: a
110 + }).text,
111 + l = 0,
112 + p = n.length;
113 + e.clientId === t && "offset" in e && (l = e.offset), o.clientId === t && "offset" in o && (p = o.offset), n = n.substring(l, p), r += "\n" + n, c.innerBlocks.length > 0 && (r += s(c.innerBlocks.map((t => t.clientId))))
114 + })), r
115 + }
116 +
117 + function p(t) {
118 + const e = wp.data.select("core/block-editor").getSelectionStart(),
119 + o = wp.data.select("core/block-editor").getSelectionEnd();
120 + if (e.clientId === o.clientId) return [e, o];
121 + let r = e,
122 + c = o;
123 + return t.length > 0 && t[0] === o.clientId && (r = o, c = e), [r, c]
124 + }
125 +
126 + function d() {
127 + let t = n();
128 + return t.length > 0 && t
129 + }(0, e.registerFormatType)("aiomatic/custom-buttons", {
130 + title: "Aimogen Content Wizard",
131 + tagName: "aiomatic",
132 + className: null,
133 + edit: e => {
134 + let {
135 + isActive: n,
136 + onChange: l,
137 + value: i
138 + } = e, s = [];
139 + if ("object" == typeof aiomatic && "object" == typeof aiomatic.prompts)
140 + {
141 + for (let operation in aiomatic.prompts)
142 + {
143 + let prompt = aiomatic.prompts[operation];
144 + let icon = 'text';
145 + if(prompt[1] == 'image')
146 + {
147 + icon = 'format-image';
148 + }
149 + s.push({
150 + title: operation,
151 + icon: icon,
152 + onClick: async function() {
153 + var selectedText = d();
154 + var send_prompt = prompt[0].replace('%%selected_text%%', selectedText);
155 + if(send_prompt.includes('%%'))
156 + {
157 + if (wp && wp.data)
158 + {
159 + const postId = wp.data.select("core/editor").getCurrentPostId();
160 + const ajaxurl = aiomatic.ajaxurl;
161 + const nonce = aiomatic.nonce;
162 + const xdata = new FormData();
163 + xdata.append( 'postId', postId );
164 + xdata.append( 'nonce', nonce );
165 + xdata.append( 'send_prompt', send_prompt );
166 + xdata.append( 'action', 'aiomatic_shortcode_replacer' );
167 + const response = await fetch(ajaxurl, {
168 + method: 'POST',
169 + body: xdata
170 + }).catch(async error => {
171 + console.log('An exception occurred: ' + error.text());
172 + })
173 +
174 + if (!response.ok)
175 + {
176 + console.log('An error occurred: ' + response.text());
177 + }
178 + else
179 + {
180 + const ret = await response.json();
181 + if (ret.message !== undefined) {
182 + console.log('A general error occurred: ' + response.text());
183 + }
184 + else
185 + {
186 + send_prompt = ret.data.content;
187 + }
188 + }
189 + }
190 + }
191 + var block = await aiomaticCreateBlockForAutocompletion(aiomatic.placement);
192 + if(icon == 'text')
193 + {
194 + await aiomaticAutocomplete(block, send_prompt);
195 + }
196 + else
197 + {
198 + if(icon == 'format-image')
199 + {
200 + await aiomaticImager(block, send_prompt);
201 + }
202 + }
203 + },
204 + });
205 + }
206 + }
207 + s = aiomatic_uniq_fast(s);
208 + return (0, t.createElement)(o.BlockControls, null, (0, t.createElement)(r.ToolbarGroup, null, (0, t.createElement)(r.ToolbarDropdownMenu, {
209 + className: "aiomatic_editor_icon",
210 + label: "Aimogen Content Wizard",
211 + icon: '',
212 + controls: s
213 + })))
214 + }
215 + })
216 + }
217 + },
218 + o = {};
219 +
220 + function r(t) {
221 + var c = o[t];
222 + if (void 0 !== c) return c.exports;
223 + var a = o[t] = {
224 + exports: {}
225 + };
226 + return e[t](a, a.exports, r), a.exports
227 + }
228 + r.m = e, t = [], r.O = (e, o, c, a) => {
229 + if (!o) {
230 + var n = 1 / 0;
231 + for (p = 0; p < t.length; p++) {
232 + for (var [o, c, a] = t[p], l = !0, i = 0; i < o.length; i++)(!1 & a || n >= a) && Object.keys(r.O).every((t => r.O[t](o[i]))) ? o.splice(i--, 1) : (l = !1, a < n && (n = a));
233 + if (l) {
234 + t.splice(p--, 1);
235 + var s = c();
236 + void 0 !== s && (e = s)
237 + }
238 + }
239 + return e
240 + }
241 + a = a || 0;
242 + for (var p = t.length; p > 0 && t[p - 1][2] > a; p--) t[p] = t[p - 1];
243 + t[p] = [o, c, a]
244 + }, r.o = (t, e) => Object.prototype.hasOwnProperty.call(t, e), (() => {
245 + var t = {
246 + 826: 0,
247 + 431: 0
248 + };
249 + r.O.j = e => 0 === t[e];
250 + var e = (e, o) => {
251 + var c, a, [n, l, i] = o,
252 + s = 0;
253 + if (n.some((e => 0 !== t[e]))) {
254 + for (c in l) r.o(l, c) && (r.m[c] = l[c]);
255 + if (i) var p = i(r)
256 + }
257 + for (e && e(o); s < n.length; s++) a = n[s], r.o(t, a) && t[a] && t[a][0](), t[a] = 0;
258 + return r.O(p)
259 + },
260 + o = globalThis.webpackChunkgutenpride = globalThis.webpackChunkgutenpride || [];
261 + o.forEach(e.bind(null, 0)), o.push = e.bind(null, o.push.bind(o))
262 + })();
263 + var c = r.O(void 0, [431], (() => r(401)));
264 + c = r.O(c)
265 + })();
266 +
267 + async function aiomaticCreateBlockForAutocompletion(placement) {
268 + let selectedBlockClientIds = aiomaticgetSelectedBlockClientIds();
269 + let [selectionStart, selectionEnd] = aiomaticGetAdjustedSelections(selectedBlockClientIds);
270 + let lastBlockClientId = selectionEnd.clientId;
271 + let firstBlockClientId = selectionStart.clientId;
272 + let lastBlock = wp.data.select('core/block-editor').getBlock(lastBlockClientId);
273 + let loadingSpinner = aiomaticCreateLoadingSpinner();
274 + if (placement === 'above') {
275 + let autoCompleteBlock = wp.blocks.createBlock('core/paragraph', {
276 + content: loadingSpinner
277 + });
278 +
279 + let index = wp.data.select('core/block-editor').getBlockIndex(firstBlockClientId);
280 +
281 + let parentClientId = wp.data.select('core/block-editor').getBlockRootClientId(firstBlockClientId);
282 +
283 + await wp.data.dispatch('core/block-editor').insertBlock(autoCompleteBlock, index, parentClientId);
284 + return autoCompleteBlock;
285 + }
286 + if (selectedBlockClientIds.length > 1 || lastBlock.name !== 'core/paragraph') {
287 +
288 + let autoCompleteBlock = wp.blocks.createBlock('core/paragraph', {
289 + content: loadingSpinner
290 + });
291 + let parentBlockClientId = wp.data.select('core/block-editor').getBlockRootClientId(lastBlockClientId);
292 + let indexToInsertAt = wp.data.select('core/block-editor').getBlockIndex(lastBlockClientId) + 1;
293 +
294 + if (!wp.data.select('core/block-editor').canInsertBlockType('core/paragraph', parentBlockClientId)) {
295 + while (parentBlockClientId) {
296 + indexToInsertAt = wp.data.select('core/block-editor').getBlockIndex(parentBlockClientId) + 1;
297 + parentBlockClientId = wp.data.select('core/block-editor').getBlockRootClientId(parentBlockClientId);
298 +
299 + if (wp.data.select('core/block-editor').canInsertBlockType('core/paragraph', parentBlockClientId)) {
300 + break;
301 + }
302 + }
303 + }
304 + await wp.data.dispatch('core/block-editor').insertBlock(autoCompleteBlock, indexToInsertAt, parentBlockClientId);
305 + return autoCompleteBlock;
306 + }
307 +
308 + let parentBlockClientId = wp.data.select('core/block-editor').getBlockRootClientId(lastBlockClientId);
309 +
310 + if (!wp.data.select('core/block-editor').canInsertBlockType('core/paragraph', parentBlockClientId)) {
311 +
312 + while (parentBlockClientId) {
313 + parentBlockClientId = wp.data.select('core/block-editor').getBlockRootClientId(parentBlockClientId);
314 +
315 + if (wp.data.select('core/block-editor').canInsertBlockType('core/paragraph', parentBlockClientId)) {
316 + break;
317 + }
318 + }
319 +
320 + let autoCompleteBlock = wp.blocks.createBlock('core/paragraph', {
321 + content: loadingSpinner
322 + });
323 +
324 + await wp.data.dispatch('core/block-editor').insertBlock(autoCompleteBlock, undefined, parentBlockClientId);
325 + return autoCompleteBlock;
326 + }
327 +
328 + let lastBlockContent = aiomaticExtractBlockContent(lastBlock);
329 + let richText = wp.richText.create({
330 + html: lastBlockContent
331 + });
332 + let start = 0;
333 + let end = lastBlockContent.length;
334 +
335 + if ('offset' in selectionEnd) {
336 + end = selectionEnd.offset;
337 + }
338 +
339 + let firstPart = wp.richText.slice(richText, start, end);
340 + let secondPart = wp.richText.slice(richText, end, richText.text.length);
341 + let firstPartContent = wp.richText.toHTMLString({
342 + value: firstPart
343 + });
344 + let secondPartContent = wp.richText.toHTMLString({
345 + value: secondPart
346 + });
347 + let inheritedAttributes = lastBlock.attributes;
348 +
349 + const key = selectionEnd.attributeKey;
350 + let firstBlockAttributes = inheritedAttributes;
351 + firstBlockAttributes[key] = firstPartContent;
352 + const firstPartBlock = wp.blocks.createBlock(lastBlock.name, firstBlockAttributes);
353 +
354 + let autoCompleteAttributes = inheritedAttributes;
355 + autoCompleteAttributes[key] = loadingSpinner;
356 + let autoCompleteBlock = wp.blocks.createBlock('core/paragraph', autoCompleteAttributes);
357 +
358 + let secondBlockAttributes = inheritedAttributes;
359 + secondBlockAttributes[key] = secondPartContent;
360 + const secondPartBlock = wp.blocks.createBlock(lastBlock.name, secondBlockAttributes);
361 + let replacementBlocks = [firstPartBlock, autoCompleteBlock, secondPartBlock];
362 +
363 + if (secondPart.text.trim().length === 0) {
364 + replacementBlocks = [firstPartBlock, autoCompleteBlock];
365 + }
366 +
367 +
368 + await wp.data.dispatch('core/block-editor').replaceBlock(lastBlockClientId, replacementBlocks);
369 + return autoCompleteBlock;
370 + }
371 +
372 + function aiomaticCreateLoadingSpinner() {
373 + const loadingSpinnerId = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
374 + let spinnersrc = "data:image/gif;base64,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";
375 + let spinnerHtml = '<p id="' + loadingSpinnerId + '" class="aiomatic-mce-loading"><img src="' + spinnersrc + '"></p>';
376 + return spinnerHtml;
377 + }
378 + async function aiomaticAutocomplete(autocompleteBlock, selectedText) {
379 + let autocompletedText = '';
380 +
381 + try {
382 + autocompletedText = await aiomatic_doAutocompleteRequest(selectedText);
383 + } catch (error) {
384 + await wp.data.dispatch('core/block-editor').removeBlocks(autocompleteBlock.clientId);
385 + alert('An API error occurred with the following response body: \n\n' + error.message);
386 + return;
387 + }
388 + if(autocompletedText === undefined)
389 + {
390 + await wp.data.dispatch('core/block-editor').removeBlocks(autocompleteBlock.clientId);
391 + alert('Incorrect response by AI API!');
392 + return;
393 + }
394 + const autocompletedTextWithLineBreaks = autocompletedText.replace(/\n/g, '<br>');
395 +
396 + await wp.data.dispatch('core/block-editor').updateBlockAttributes(autocompleteBlock.clientId, { isLoading: true });
397 + setTimeout(async () => {
398 + await wp.data.dispatch('core/block-editor').updateBlockAttributes(autocompleteBlock.clientId, { content: autocompletedTextWithLineBreaks, isLoading: false });
399 +
400 + wp.data.dispatch('core/block-editor').selectBlock(autocompleteBlock.clientId);
401 + wp.data.dispatch('core/block-editor').clearSelectedBlock();
402 + }, 100);
403 + }
404 + async function aiomaticImager(autocompleteBlock, selectedText) {
405 + let autocompletedText = '';
406 +
407 + try {
408 + autocompletedText = await aiomatic_doImageRequest(selectedText);
409 + } catch (error) {
410 + await wp.data.dispatch('core/block-editor').removeBlocks(autocompleteBlock.clientId);
411 + alert('An API error occurred with the following response body: \n\n' + error.message);
412 + return;
413 + }
414 + if(autocompletedText === undefined)
415 + {
416 + await wp.data.dispatch('core/block-editor').removeBlocks(autocompleteBlock.clientId);
417 + alert('Incorrect response returned by AI API!');
418 + return;
419 + }
420 +
421 + await wp.data.dispatch('core/block-editor').updateBlockAttributes(autocompleteBlock.clientId, { isLoading: true });
422 + setTimeout(async () => {
423 + await wp.data.dispatch('core/block-editor').updateBlockAttributes(autocompleteBlock.clientId, { content: autocompletedText, isLoading: false });
424 +
425 + wp.data.dispatch('core/block-editor').selectBlock(autocompleteBlock.clientId);
426 + wp.data.dispatch('core/block-editor').clearSelectedBlock();
427 + }, 100);
428 + }
429 +
430 + const aiomatic_doAutocompleteRequest = async function (text) {
431 + const ajaxurl = aiomatic.ajaxurl;
432 + const nonce = aiomatic.nonce;
433 + const xdata = new FormData();
434 + xdata.append( 'prompt', text );
435 + xdata.append( 'nonce', nonce );
436 + xdata.append( 'action', 'aiomatic_editor' );
437 + const response = await fetch(ajaxurl, {
438 + method: 'POST',
439 + body: xdata
440 + }).catch(async error => {
441 + throw new Error(await error.text());
442 + })
443 +
444 + if (!response.ok) {
445 + throw new Error(await response.text());
446 + }
447 +
448 + const ret = await response.json();
449 + if (ret.message !== undefined) {
450 + throw new Error(await response.text());
451 + }
452 + return ret.data.content;
453 + }
454 + const aiomatic_doImageRequest = async function (text) {
455 + const ajaxurl = aiomatic.ajaxurl;
456 + const nonce = aiomatic.nonce;
457 + const xdata = new FormData();
458 + xdata.append( 'prompt', text );
459 + xdata.append( 'nonce', nonce );
460 + xdata.append( 'action', 'aiomatic_imager' );
461 + const response = await fetch(ajaxurl, {
462 + method: 'POST',
463 + body: xdata
464 + }).catch(async error => {
465 + throw new Error(await error.text());
466 + })
467 +
468 + if (!response.ok) {
469 + throw new Error(await response.text());
470 + }
471 +
472 + const ret = await response.json();
473 + if (ret.message !== undefined) {
474 + throw new Error(await response.text());
475 + }
476 + return ret.data.content;
477 + }
478 + function aiomaticgetSelectedBlockClientIds() {
479 + let selectedBlockClientIds = wp.data.select('core/block-editor').getMultiSelectedBlockClientIds();
480 +
481 + if (selectedBlockClientIds.length === 0) {
482 + selectedBlockClientIds = [wp.data.select('core/block-editor').getSelectedBlockClientId()];
483 + }
484 +
485 + return selectedBlockClientIds;
486 + }
487 + function aiomaticGetAdjustedSelections(selectedBlockClientIds) {
488 + const selectionStart = wp.data.select('core/block-editor').getSelectionStart();
489 + const selectionEnd = wp.data.select('core/block-editor').getSelectionEnd();
490 +
491 + if (selectionStart.clientId === selectionEnd.clientId) {
492 + return [selectionStart, selectionEnd];
493 + }
494 +
495 + let adjustedSelectionStart = selectionStart;
496 + let adjustedSelectionEnd = selectionEnd;
497 +
498 + if (selectedBlockClientIds.length > 0 && selectedBlockClientIds[0] === selectionEnd.clientId) {
499 + adjustedSelectionStart = selectionEnd;
500 + adjustedSelectionEnd = selectionStart;
501 + }
502 +
503 + return [adjustedSelectionStart, adjustedSelectionEnd];
504 + }
505 + function aiomaticExtractBlockContent(block) {
506 + let content = '';
507 + if ('content' in block.attributes) {
508 + content = block.attributes.content;
509 + } else if ('citation' in block.attributes) {
510 + content = block.attributes.citation;
511 + } else if ('value' in block.attributes) {
512 + content = block.attributes.value;
513 + } else if ('values' in block.attributes) {
514 + content = block.attributes.values;
515 + } else if ('text' in block.attributes) {
516 + content = block.attributes.text;
517 + }
518 + return content;
519 + }