Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/aimogen-pro/scripts/classic-editor.js
Keine Baseline-Datei – Diff nur gegen leer.
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
+
(function() {
19
+
let menu = [];
20
+
tinymce.create("tinymce.plugins.aiomatic_editor", {
21
+
init : function(ed, url) {
22
+
if ("object" == typeof aiomatic && "object" == typeof aiomatic.prompts)
23
+
{
24
+
for (let operation in aiomatic.prompts)
25
+
{
26
+
let prompt = aiomatic.prompts[operation];
27
+
let icon = 'text';
28
+
let thumb = 'toc';
29
+
if(prompt[1] == 'image')
30
+
{
31
+
icon = 'format-image';
32
+
thumb = 'image';
33
+
}
34
+
menu.push({
35
+
text: operation,
36
+
classes: 'aiomatic-classic-button',
37
+
icon: thumb,
38
+
onclick: async function () {
39
+
ed = tinymce.activeEditor;
40
+
let selectedText = ed.selection.getContent({format: 'text'});
41
+
let send_prompt = prompt[0].replace('%%selected_text%%', selectedText);
42
+
if(send_prompt.includes('%%'))
43
+
{
44
+
var pid = document.getElementById('post_ID');
45
+
if(pid !== undefined && pid !== null && pid != '')
46
+
{
47
+
var postId = pid.value;
48
+
const ajaxurl = aiomatic.ajaxurl;
49
+
const nonce = aiomatic.nonce;
50
+
const xdata = new FormData();
51
+
xdata.append( 'postId', postId );
52
+
xdata.append( 'nonce', nonce );
53
+
xdata.append( 'send_prompt', send_prompt );
54
+
xdata.append( 'action', 'aiomatic_shortcode_replacer' );
55
+
const response = await fetch(ajaxurl, {
56
+
method: 'POST',
57
+
body: xdata
58
+
}).catch(async error => {
59
+
console.log('An exception occurred: ' + error.text());
60
+
})
61
+
62
+
if (!response.ok)
63
+
{
64
+
console.log('An error occurred: ' + response.text());
65
+
}
66
+
else
67
+
{
68
+
const ret = await response.json();
69
+
if (ret.message !== undefined) {
70
+
console.log('A general error occurred: ' + response.text());
71
+
}
72
+
else
73
+
{
74
+
send_prompt = ret.data.content;
75
+
}
76
+
}
77
+
}
78
+
}
79
+
let dom = tinymce.activeEditor.dom;
80
+
let $ = tinymce.dom.DomQuery;
81
+
82
+
const loadingSpinnerId = await aiomatic_classic_addAutocompleteContainer(aiomatic.placement, ed);
83
+
84
+
ed.selection.collapse();
85
+
let spinner = dom.select('#' + loadingSpinnerId);
86
+
87
+
let autocompletedText = '';
88
+
try {
89
+
if(icon == 'text')
90
+
{
91
+
autocompletedText = await aiomatic_classic_doAutocompleteRequest(send_prompt);
92
+
if(autocompletedText === undefined)
93
+
{
94
+
throw new Error('Failed to generate text!');
95
+
}
96
+
autocompletedText = autocompletedText.replace(/\n/g, '<br/>');
97
+
}
98
+
else
99
+
{
100
+
if(icon == 'format-image')
101
+
{
102
+
autocompletedText = await aiomatic_classic_doImageRequest(send_prompt);
103
+
if(autocompletedText === undefined)
104
+
{
105
+
throw new Error('Failed to generate text!');
106
+
}
107
+
}
108
+
}
109
+
} catch (error) {
110
+
$(spinner).remove();
111
+
alert('An API error occurred with the following response body: \n\n' + error.message);
112
+
return;
113
+
}
114
+
115
+
$(spinner).removeAttr('class');
116
+
$(spinner).removeAttr('id');
117
+
118
+
$(spinner).html(autocompletedText);
119
+
120
+
ed.undoManager.add();
121
+
}
122
+
});
123
+
}
124
+
var uniqueMenu = aiomatic_uniq_fast(menu);
125
+
uniqueMenu.forEach((item, index) => {
126
+
item.id = `menuitem-${index}`;
127
+
});
128
+
ed.addButton("aiomatic", {
129
+
type: 'menubutton',
130
+
title : "Aimogen Content Wizard",
131
+
tooltip: 'Aimogen Content Wizard',
132
+
image: aiomatic.xicon,
133
+
icon: false,
134
+
menu: uniqueMenu
135
+
});
136
+
}
137
+
},
138
+
createControl : function(n, cm) {
139
+
return null;
140
+
},
141
+
getInfo : function() {
142
+
return {
143
+
longname : "Aimogen Buttons",
144
+
author : "CodeRevolution",
145
+
version : "1.0"
146
+
};
147
+
}
148
+
});
149
+
tinymce.PluginManager.add("aiomatic_editor", tinymce.plugins.aiomatic_editor);
150
+
})();
151
+
152
+
const aiomatic_createLoadingSpinner = function (selectedNode, loadingSpinnerId) {
153
+
let spinnersrc = "data:image/gif;base64,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";
154
+
let spinnerHtml = '';
155
+
if (['li'].includes(selectedNode.tagName.toLowerCase())) {
156
+
spinnerHtml = '<' + selectedNode.tagName + ' id="' + loadingSpinnerId + '" class="aiomatic-mce-loading"><img src="' + spinnersrc + '"></' + selectedNode.tagName + '>';
157
+
} else {
158
+
spinnerHtml = '<p id="' + loadingSpinnerId + '" class="aiomatic-mce-loading"><img src="' + spinnersrc + '"></p>';
159
+
}
160
+
161
+
return spinnerHtml;
162
+
}
163
+
164
+
const aiomatic_classic_doAutocompleteRequest = async function (text) {
165
+
const ajaxurl = aiomatic.ajaxurl;
166
+
const nonce = aiomatic.nonce;
167
+
const xdata = new FormData();
168
+
xdata.append( 'prompt', text );
169
+
xdata.append( 'nonce', nonce );
170
+
xdata.append( 'action', 'aiomatic_editor' );
171
+
const response = await fetch(ajaxurl, {
172
+
method: 'POST',
173
+
body: xdata
174
+
}).catch(async error => {
175
+
throw new Error(await error.text());
176
+
})
177
+
178
+
if (!response.ok) {
179
+
throw new Error(await response.text());
180
+
}
181
+
182
+
const ret = await response.json();
183
+
if (ret.message !== undefined) {
184
+
throw new Error(await response.text());
185
+
}
186
+
return ret.data.content;
187
+
}
188
+
189
+
const aiomatic_classic_doImageRequest = async function (text) {
190
+
const ajaxurl = aiomatic.ajaxurl;
191
+
const nonce = aiomatic.nonce;
192
+
const xdata = new FormData();
193
+
xdata.append( 'prompt', text );
194
+
xdata.append( 'nonce', nonce );
195
+
xdata.append( 'action', 'aiomatic_imager' );
196
+
const response = await fetch(ajaxurl, {
197
+
method: 'POST',
198
+
body: xdata
199
+
}).catch(async error => {
200
+
throw new Error(await error.text());
201
+
})
202
+
203
+
if (!response.ok) {
204
+
throw new Error(await response.text());
205
+
}
206
+
207
+
const ret = await response.json();
208
+
if (ret.message !== undefined) {
209
+
throw new Error(await response.text());
210
+
}
211
+
return ret.data.content;
212
+
}
213
+
const aiomatic_classic_addAutocompleteContainer = async function (placement, ed) {
214
+
let $ = tinymce.dom.DomQuery;
215
+
const loadingSpinnerId = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
216
+
217
+
let selectionRange = ed.selection.getRng();
218
+
if (placement === 'below') {
219
+
let selectedNode = ed.selection.getEnd();
220
+
221
+
let spinnerHtml = aiomatic_createLoadingSpinner(
222
+
selectedNode,
223
+
loadingSpinnerId,
224
+
)
225
+
let spinnerDom = $(spinnerHtml)[0];
226
+
227
+
let parentNode = selectionRange.endContainer.parentNode;
228
+
if (parentNode.tagName.toLowerCase() === 'li') {
229
+
$(selectedNode).after(spinnerDom);
230
+
} else if (selectedNode.textContent) {
231
+
selectionRange.collapse(false);
232
+
selectionRange.insertNode(spinnerDom);
233
+
ed.selection.collapse();
234
+
} else {
235
+
$(selectedNode).after(spinnerDom);
236
+
}
237
+
238
+
} else {
239
+
let selectedNode = ed.selection.getStart();
240
+
let spinnerHtml = aiomatic_createLoadingSpinner(
241
+
selectedNode,
242
+
loadingSpinnerId,
243
+
)
244
+
let spinnerDom = $(spinnerHtml)[0];
245
+
246
+
let parentNode = selectionRange.startContainer.parentNode;
247
+
if (parentNode.tagName.toLowerCase() === 'li') {
248
+
$(selectedNode).before(spinnerDom);
249
+
} else if (selectedNode.textContent) {
250
+
selectionRange.collapse(true);
251
+
selectionRange.insertNode(spinnerDom);
252
+
ed.selection.collapse();
253
+
} else {
254
+
$(selectedNode).before(spinnerDom);
255
+
}
256
+
}
257
+
258
+
ed.undoManager.add();
259
+
260
+
return loadingSpinnerId;
261
+
}