@wordpress/widgets 3.16.0 → 3.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/build/blocks/legacy-widget/edit/control.js +31 -63
- package/build/blocks/legacy-widget/edit/control.js.map +1 -1
- package/build/blocks/legacy-widget/edit/convert-to-blocks-button.js +1 -7
- package/build/blocks/legacy-widget/edit/convert-to-blocks-button.js.map +1 -1
- package/build/blocks/legacy-widget/edit/form.js +5 -22
- package/build/blocks/legacy-widget/edit/form.js.map +1 -1
- package/build/blocks/legacy-widget/edit/index.js +7 -24
- package/build/blocks/legacy-widget/edit/index.js.map +1 -1
- package/build/blocks/legacy-widget/edit/inspector-card.js +0 -2
- package/build/blocks/legacy-widget/edit/inspector-card.js.map +1 -1
- package/build/blocks/legacy-widget/edit/no-preview.js +1 -3
- package/build/blocks/legacy-widget/edit/no-preview.js.map +1 -1
- package/build/blocks/legacy-widget/edit/preview.js +11 -21
- package/build/blocks/legacy-widget/edit/preview.js.map +1 -1
- package/build/blocks/legacy-widget/edit/widget-type-selector.js +1 -11
- package/build/blocks/legacy-widget/edit/widget-type-selector.js.map +1 -1
- package/build/blocks/legacy-widget/index.js +0 -6
- package/build/blocks/legacy-widget/index.js.map +1 -1
- package/build/blocks/legacy-widget/transforms.js +1 -4
- package/build/blocks/legacy-widget/transforms.js.map +1 -1
- package/build/blocks/widget-group/deprecated.js +1 -5
- package/build/blocks/widget-group/deprecated.js.map +1 -1
- package/build/blocks/widget-group/edit.js +7 -13
- package/build/blocks/widget-group/edit.js.map +1 -1
- package/build/blocks/widget-group/index.js +7 -16
- package/build/blocks/widget-group/index.js.map +1 -1
- package/build/blocks/widget-group/save.js +1 -3
- package/build/blocks/widget-group/save.js.map +1 -1
- package/build/components/index.js +0 -2
- package/build/components/index.js.map +1 -1
- package/build/components/move-to-widget-area/index.js +1 -5
- package/build/components/move-to-widget-area/index.js.map +1 -1
- package/build/index.js +9 -18
- package/build/index.js.map +1 -1
- package/build/register-legacy-widget-variations.js +1 -6
- package/build/register-legacy-widget-variations.js.map +1 -1
- package/build/utils.js +5 -5
- package/build/utils.js.map +1 -1
- package/build-module/blocks/legacy-widget/edit/control.js +32 -58
- package/build-module/blocks/legacy-widget/edit/control.js.map +1 -1
- package/build-module/blocks/legacy-widget/edit/convert-to-blocks-button.js +0 -1
- package/build-module/blocks/legacy-widget/edit/convert-to-blocks-button.js.map +1 -1
- package/build-module/blocks/legacy-widget/edit/form.js +4 -15
- package/build-module/blocks/legacy-widget/edit/form.js.map +1 -1
- package/build-module/blocks/legacy-widget/edit/index.js +8 -11
- package/build-module/blocks/legacy-widget/edit/index.js.map +1 -1
- package/build-module/blocks/legacy-widget/edit/inspector-card.js.map +1 -1
- package/build-module/blocks/legacy-widget/edit/no-preview.js +0 -1
- package/build-module/blocks/legacy-widget/edit/no-preview.js.map +1 -1
- package/build-module/blocks/legacy-widget/edit/preview.js +11 -15
- package/build-module/blocks/legacy-widget/edit/preview.js.map +1 -1
- package/build-module/blocks/legacy-widget/edit/widget-type-selector.js +0 -5
- package/build-module/blocks/legacy-widget/edit/widget-type-selector.js.map +1 -1
- package/build-module/blocks/legacy-widget/index.js +1 -1
- package/build-module/blocks/legacy-widget/index.js.map +1 -1
- package/build-module/blocks/legacy-widget/transforms.js +0 -2
- package/build-module/blocks/legacy-widget/transforms.js.map +1 -1
- package/build-module/blocks/widget-group/deprecated.js +0 -3
- package/build-module/blocks/widget-group/deprecated.js.map +1 -1
- package/build-module/blocks/widget-group/edit.js +6 -7
- package/build-module/blocks/widget-group/edit.js.map +1 -1
- package/build-module/blocks/widget-group/index.js +8 -8
- package/build-module/blocks/widget-group/index.js.map +1 -1
- package/build-module/blocks/widget-group/save.js +0 -1
- package/build-module/blocks/widget-group/save.js.map +1 -1
- package/build-module/components/index.js.map +1 -1
- package/build-module/components/move-to-widget-area/index.js +0 -1
- package/build-module/components/move-to-widget-area/index.js.map +1 -1
- package/build-module/index.js +11 -7
- package/build-module/index.js.map +1 -1
- package/build-module/register-legacy-widget-variations.js +0 -2
- package/build-module/register-legacy-widget-variations.js.map +1 -1
- package/build-module/utils.js +5 -3
- package/build-module/utils.js.map +1 -1
- package/package.json +13 -13
package/CHANGELOG.md
CHANGED
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
var _apiFetch = _interopRequireDefault(require("@wordpress/api-fetch"));
|
|
11
|
-
|
|
12
9
|
var _compose = require("@wordpress/compose");
|
|
13
|
-
|
|
14
10
|
var _i18n = require("@wordpress/i18n");
|
|
15
|
-
|
|
16
11
|
/**
|
|
17
12
|
* WordPress dependencies
|
|
18
13
|
*/
|
|
@@ -53,10 +48,11 @@ class Control {
|
|
|
53
48
|
this._hasPreview = null;
|
|
54
49
|
this.onChangeInstance = onChangeInstance;
|
|
55
50
|
this.onChangeHasPreview = onChangeHasPreview;
|
|
56
|
-
this.onError = onError;
|
|
51
|
+
this.onError = onError;
|
|
52
|
+
|
|
53
|
+
// We can't use the real widget number as this is calculated by the
|
|
57
54
|
// server and we may not ever *actually* save this widget. Instead, use
|
|
58
55
|
// a fake but unique number.
|
|
59
|
-
|
|
60
56
|
this.number = ++lastNumber;
|
|
61
57
|
this.handleFormChange = (0, _compose.debounce)(this.handleFormChange.bind(this), 200);
|
|
62
58
|
this.handleFormSubmit = this.handleFormSubmit.bind(this);
|
|
@@ -64,28 +60,26 @@ class Control {
|
|
|
64
60
|
this.bindEvents();
|
|
65
61
|
this.loadContent();
|
|
66
62
|
}
|
|
63
|
+
|
|
67
64
|
/**
|
|
68
65
|
* Clean up the control so that it can be garabge collected.
|
|
69
66
|
*
|
|
70
67
|
* @access public
|
|
71
68
|
*/
|
|
72
|
-
|
|
73
|
-
|
|
74
69
|
destroy() {
|
|
75
70
|
this.unbindEvents();
|
|
76
|
-
this.element.remove();
|
|
71
|
+
this.element.remove();
|
|
72
|
+
// TODO: How do we make third party widget scripts remove their event
|
|
77
73
|
// listeners?
|
|
78
74
|
}
|
|
75
|
+
|
|
79
76
|
/**
|
|
80
77
|
* Creates the control's DOM structure.
|
|
81
78
|
*
|
|
82
79
|
* @access private
|
|
83
80
|
*/
|
|
84
|
-
|
|
85
|
-
|
|
86
81
|
initDOM() {
|
|
87
82
|
var _this$id, _this$idBase;
|
|
88
|
-
|
|
89
83
|
this.element = el('div', {
|
|
90
84
|
class: 'widget open'
|
|
91
85
|
}, [el('div', {
|
|
@@ -93,7 +87,8 @@ class Control {
|
|
|
93
87
|
}, [this.form = el('form', {
|
|
94
88
|
class: 'form',
|
|
95
89
|
method: 'post'
|
|
96
|
-
}, [
|
|
90
|
+
}, [
|
|
91
|
+
// These hidden form inputs are what most widgets' scripts
|
|
97
92
|
// use to access data about the widget.
|
|
98
93
|
el('input', {
|
|
99
94
|
class: 'widget-id',
|
|
@@ -122,19 +117,19 @@ class Control {
|
|
|
122
117
|
value: this.idBase ? this.number.toString() : ''
|
|
123
118
|
}), this.content = el('div', {
|
|
124
119
|
class: 'widget-content'
|
|
125
|
-
}),
|
|
120
|
+
}),
|
|
121
|
+
// Non-multi widgets can be saved via a Save button.
|
|
126
122
|
this.id && el('button', {
|
|
127
123
|
class: 'button is-primary',
|
|
128
124
|
type: 'submit'
|
|
129
125
|
}, (0, _i18n.__)('Save'))])])]);
|
|
130
126
|
}
|
|
127
|
+
|
|
131
128
|
/**
|
|
132
129
|
* Adds the control's event listeners.
|
|
133
130
|
*
|
|
134
131
|
* @access private
|
|
135
132
|
*/
|
|
136
|
-
|
|
137
|
-
|
|
138
133
|
bindEvents() {
|
|
139
134
|
// Prefer jQuery 'change' event instead of the native 'change' event
|
|
140
135
|
// because many widgets use jQuery's event bus to trigger an update.
|
|
@@ -151,13 +146,12 @@ class Control {
|
|
|
151
146
|
this.form.addEventListener('submit', this.handleFormSubmit);
|
|
152
147
|
}
|
|
153
148
|
}
|
|
149
|
+
|
|
154
150
|
/**
|
|
155
151
|
* Removes the control's event listeners.
|
|
156
152
|
*
|
|
157
153
|
* @access private
|
|
158
154
|
*/
|
|
159
|
-
|
|
160
|
-
|
|
161
155
|
unbindEvents() {
|
|
162
156
|
if (window.jQuery) {
|
|
163
157
|
const {
|
|
@@ -172,14 +166,13 @@ class Control {
|
|
|
172
166
|
this.form.removeEventListener('submit', this.handleFormSubmit);
|
|
173
167
|
}
|
|
174
168
|
}
|
|
169
|
+
|
|
175
170
|
/**
|
|
176
171
|
* Fetches the widget's form HTML from the REST API and loads it into the
|
|
177
172
|
* control's form.
|
|
178
173
|
*
|
|
179
174
|
* @access private
|
|
180
175
|
*/
|
|
181
|
-
|
|
182
|
-
|
|
183
176
|
async loadContent() {
|
|
184
177
|
try {
|
|
185
178
|
if (this.id) {
|
|
@@ -197,9 +190,10 @@ class Control {
|
|
|
197
190
|
number: this.number
|
|
198
191
|
});
|
|
199
192
|
this.content.innerHTML = form;
|
|
200
|
-
this.hasPreview = !isEmptyHTML(preview);
|
|
201
|
-
// happens when creating a new Legacy Widget block.
|
|
193
|
+
this.hasPreview = !isEmptyHTML(preview);
|
|
202
194
|
|
|
195
|
+
// If we don't have an instance, perform a save right away. This
|
|
196
|
+
// happens when creating a new Legacy Widget block.
|
|
203
197
|
if (!this.instance.hash) {
|
|
204
198
|
const {
|
|
205
199
|
instance
|
|
@@ -211,13 +205,13 @@ class Control {
|
|
|
211
205
|
});
|
|
212
206
|
this.instance = instance;
|
|
213
207
|
}
|
|
214
|
-
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// Trigger 'widget-added' when widget is ready. This event is what
|
|
215
211
|
// widgets' scripts use to initialize, attach events, etc. The event
|
|
216
212
|
// must be fired using jQuery's event bus as this is what widget
|
|
217
213
|
// scripts expect. If jQuery is not loaded, do nothing - some
|
|
218
214
|
// widgets will still work regardless.
|
|
219
|
-
|
|
220
|
-
|
|
221
215
|
if (window.jQuery) {
|
|
222
216
|
const {
|
|
223
217
|
jQuery: $
|
|
@@ -228,49 +222,44 @@ class Control {
|
|
|
228
222
|
this.onError(error);
|
|
229
223
|
}
|
|
230
224
|
}
|
|
225
|
+
|
|
231
226
|
/**
|
|
232
227
|
* Perform a save when a multi widget's form is changed. Non-multi widgets
|
|
233
228
|
* are saved manually.
|
|
234
229
|
*
|
|
235
230
|
* @access private
|
|
236
231
|
*/
|
|
237
|
-
|
|
238
|
-
|
|
239
232
|
handleFormChange() {
|
|
240
233
|
if (this.idBase) {
|
|
241
234
|
this.saveForm();
|
|
242
235
|
}
|
|
243
236
|
}
|
|
237
|
+
|
|
244
238
|
/**
|
|
245
239
|
* Perform a save when the control's form is manually submitted.
|
|
246
240
|
*
|
|
247
241
|
* @access private
|
|
248
242
|
* @param {Event} event
|
|
249
243
|
*/
|
|
250
|
-
|
|
251
|
-
|
|
252
244
|
handleFormSubmit(event) {
|
|
253
245
|
event.preventDefault();
|
|
254
246
|
this.saveForm();
|
|
255
247
|
}
|
|
248
|
+
|
|
256
249
|
/**
|
|
257
250
|
* Serialize the control's form, send it to the REST API, and update the
|
|
258
251
|
* instance with the encoded instance that the REST API returns.
|
|
259
252
|
*
|
|
260
253
|
* @access private
|
|
261
254
|
*/
|
|
262
|
-
|
|
263
|
-
|
|
264
255
|
async saveForm() {
|
|
265
256
|
const formData = serializeForm(this.form);
|
|
266
|
-
|
|
267
257
|
try {
|
|
268
258
|
if (this.id) {
|
|
269
259
|
const {
|
|
270
260
|
form
|
|
271
261
|
} = await saveWidget(this.id, formData);
|
|
272
262
|
this.content.innerHTML = form;
|
|
273
|
-
|
|
274
263
|
if (window.jQuery) {
|
|
275
264
|
const {
|
|
276
265
|
jQuery: $
|
|
@@ -294,65 +283,56 @@ class Control {
|
|
|
294
283
|
this.onError(error);
|
|
295
284
|
}
|
|
296
285
|
}
|
|
286
|
+
|
|
297
287
|
/**
|
|
298
288
|
* The widget's instance object.
|
|
299
289
|
*
|
|
300
290
|
* @access private
|
|
301
291
|
*/
|
|
302
|
-
|
|
303
|
-
|
|
304
292
|
get instance() {
|
|
305
293
|
return this._instance;
|
|
306
294
|
}
|
|
295
|
+
|
|
307
296
|
/**
|
|
308
297
|
* The widget's instance object.
|
|
309
298
|
*
|
|
310
299
|
* @access private
|
|
311
300
|
*/
|
|
312
|
-
|
|
313
|
-
|
|
314
301
|
set instance(instance) {
|
|
315
302
|
if (this._instance !== instance) {
|
|
316
303
|
this._instance = instance;
|
|
317
304
|
this.onChangeInstance(instance);
|
|
318
305
|
}
|
|
319
306
|
}
|
|
307
|
+
|
|
320
308
|
/**
|
|
321
309
|
* Whether or not the widget can be previewed.
|
|
322
310
|
*
|
|
323
311
|
* @access public
|
|
324
312
|
*/
|
|
325
|
-
|
|
326
|
-
|
|
327
313
|
get hasPreview() {
|
|
328
314
|
return this._hasPreview;
|
|
329
315
|
}
|
|
316
|
+
|
|
330
317
|
/**
|
|
331
318
|
* Whether or not the widget can be previewed.
|
|
332
319
|
*
|
|
333
320
|
* @access private
|
|
334
321
|
*/
|
|
335
|
-
|
|
336
|
-
|
|
337
322
|
set hasPreview(hasPreview) {
|
|
338
323
|
if (this._hasPreview !== hasPreview) {
|
|
339
324
|
this._hasPreview = hasPreview;
|
|
340
325
|
this.onChangeHasPreview(hasPreview);
|
|
341
326
|
}
|
|
342
327
|
}
|
|
343
|
-
|
|
344
328
|
}
|
|
345
|
-
|
|
346
329
|
exports.default = Control;
|
|
347
330
|
let lastNumber = 0;
|
|
348
|
-
|
|
349
331
|
function el(tagName, attributes = {}, content = null) {
|
|
350
332
|
const element = document.createElement(tagName);
|
|
351
|
-
|
|
352
333
|
for (const [attribute, value] of Object.entries(attributes)) {
|
|
353
334
|
element.setAttribute(attribute, value);
|
|
354
335
|
}
|
|
355
|
-
|
|
356
336
|
if (Array.isArray(content)) {
|
|
357
337
|
for (const child of content) {
|
|
358
338
|
if (child) {
|
|
@@ -362,13 +342,10 @@ function el(tagName, attributes = {}, content = null) {
|
|
|
362
342
|
} else if (typeof content === 'string') {
|
|
363
343
|
element.innerText = content;
|
|
364
344
|
}
|
|
365
|
-
|
|
366
345
|
return element;
|
|
367
346
|
}
|
|
368
|
-
|
|
369
347
|
async function saveWidget(id, formData = null) {
|
|
370
348
|
let widget;
|
|
371
|
-
|
|
372
349
|
if (formData) {
|
|
373
350
|
widget = await (0, _apiFetch.default)({
|
|
374
351
|
path: `/wp/v2/widgets/${id}?context=edit`,
|
|
@@ -383,12 +360,10 @@ async function saveWidget(id, formData = null) {
|
|
|
383
360
|
method: 'GET'
|
|
384
361
|
});
|
|
385
362
|
}
|
|
386
|
-
|
|
387
363
|
return {
|
|
388
364
|
form: widget.rendered_form
|
|
389
365
|
};
|
|
390
366
|
}
|
|
391
|
-
|
|
392
367
|
async function encodeWidget({
|
|
393
368
|
idBase,
|
|
394
369
|
instance,
|
|
@@ -410,39 +385,32 @@ async function encodeWidget({
|
|
|
410
385
|
preview: response.preview
|
|
411
386
|
};
|
|
412
387
|
}
|
|
413
|
-
|
|
414
388
|
function isEmptyHTML(html) {
|
|
415
389
|
const element = document.createElement('div');
|
|
416
390
|
element.innerHTML = html;
|
|
417
391
|
return isEmptyNode(element);
|
|
418
392
|
}
|
|
419
|
-
|
|
420
393
|
function isEmptyNode(node) {
|
|
421
394
|
switch (node.nodeType) {
|
|
422
395
|
case node.TEXT_NODE:
|
|
423
396
|
// Text nodes are empty if it's entirely whitespace.
|
|
424
397
|
return node.nodeValue.trim() === '';
|
|
425
|
-
|
|
426
398
|
case node.ELEMENT_NODE:
|
|
427
399
|
// Elements that are "embedded content" are not empty.
|
|
428
400
|
// https://dev.w3.org/html5/spec-LC/content-models.html#embedded-content-0
|
|
429
401
|
if (['AUDIO', 'CANVAS', 'EMBED', 'IFRAME', 'IMG', 'MATH', 'OBJECT', 'SVG', 'VIDEO'].includes(node.tagName)) {
|
|
430
402
|
return false;
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
|
|
403
|
+
}
|
|
404
|
+
// Elements with no children are empty.
|
|
434
405
|
if (!node.hasChildNodes()) {
|
|
435
406
|
return true;
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
|
|
407
|
+
}
|
|
408
|
+
// Elements with children are empty if all their children are empty.
|
|
439
409
|
return Array.from(node.childNodes).every(isEmptyNode);
|
|
440
|
-
|
|
441
410
|
default:
|
|
442
411
|
return true;
|
|
443
412
|
}
|
|
444
413
|
}
|
|
445
|
-
|
|
446
414
|
function serializeForm(form) {
|
|
447
415
|
return new window.URLSearchParams(Array.from(new window.FormData(form))).toString();
|
|
448
416
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/widgets/src/blocks/legacy-widget/edit/control.js"],"names":["Control","constructor","id","idBase","instance","onChangeInstance","onChangeHasPreview","onError","_instance","_hasPreview","number","lastNumber","handleFormChange","bind","handleFormSubmit","initDOM","bindEvents","loadContent","destroy","unbindEvents","element","remove","el","class","form","method","type","name","value","toString","content","window","jQuery","$","on","addEventListener","off","removeEventListener","saveWidget","innerHTML","preview","encodeWidget","hasPreview","isEmptyHTML","hash","formData","serializeForm","document","trigger","error","saveForm","event","preventDefault","tagName","attributes","createElement","attribute","Object","entries","setAttribute","Array","isArray","child","appendChild","innerText","widget","path","data","form_data","rendered_form","response","html","isEmptyNode","node","nodeType","TEXT_NODE","nodeValue","trim","ELEMENT_NODE","includes","hasChildNodes","from","childNodes","every","URLSearchParams","FormData"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { debounce } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * An API for creating and loading a widget control (a <div class=\"widget\">\n * element) that is compatible with most third party widget scripts. By not\n * using React for this, we ensure that we have complete contorl over the DOM\n * and do not accidentally remove any elements that a third party widget script\n * has attached an event listener to.\n *\n * @property {Element} element The control's DOM element.\n */\nexport default class Control {\n\t/**\n\t * Creates and loads a new control.\n\t *\n\t * @access public\n\t * @param {Object} params\n\t * @param {string} params.id\n\t * @param {string} params.idBase\n\t * @param {Object} params.instance\n\t * @param {Function} params.onChangeInstance\n\t * @param {Function} params.onChangeHasPreview\n\t * @param {Function} params.onError\n\t */\n\tconstructor( {\n\t\tid,\n\t\tidBase,\n\t\tinstance,\n\t\tonChangeInstance,\n\t\tonChangeHasPreview,\n\t\tonError,\n\t} ) {\n\t\tthis.id = id;\n\t\tthis.idBase = idBase;\n\t\tthis._instance = instance;\n\t\tthis._hasPreview = null;\n\t\tthis.onChangeInstance = onChangeInstance;\n\t\tthis.onChangeHasPreview = onChangeHasPreview;\n\t\tthis.onError = onError;\n\n\t\t// We can't use the real widget number as this is calculated by the\n\t\t// server and we may not ever *actually* save this widget. Instead, use\n\t\t// a fake but unique number.\n\t\tthis.number = ++lastNumber;\n\n\t\tthis.handleFormChange = debounce(\n\t\t\tthis.handleFormChange.bind( this ),\n\t\t\t200\n\t\t);\n\t\tthis.handleFormSubmit = this.handleFormSubmit.bind( this );\n\n\t\tthis.initDOM();\n\t\tthis.bindEvents();\n\t\tthis.loadContent();\n\t}\n\n\t/**\n\t * Clean up the control so that it can be garabge collected.\n\t *\n\t * @access public\n\t */\n\tdestroy() {\n\t\tthis.unbindEvents();\n\t\tthis.element.remove();\n\t\t// TODO: How do we make third party widget scripts remove their event\n\t\t// listeners?\n\t}\n\n\t/**\n\t * Creates the control's DOM structure.\n\t *\n\t * @access private\n\t */\n\tinitDOM() {\n\t\tthis.element = el( 'div', { class: 'widget open' }, [\n\t\t\tel( 'div', { class: 'widget-inside' }, [\n\t\t\t\t( this.form = el( 'form', { class: 'form', method: 'post' }, [\n\t\t\t\t\t// These hidden form inputs are what most widgets' scripts\n\t\t\t\t\t// use to access data about the widget.\n\t\t\t\t\tel( 'input', {\n\t\t\t\t\t\tclass: 'widget-id',\n\t\t\t\t\t\ttype: 'hidden',\n\t\t\t\t\t\tname: 'widget-id',\n\t\t\t\t\t\tvalue: this.id ?? `${ this.idBase }-${ this.number }`,\n\t\t\t\t\t} ),\n\t\t\t\t\tel( 'input', {\n\t\t\t\t\t\tclass: 'id_base',\n\t\t\t\t\t\ttype: 'hidden',\n\t\t\t\t\t\tname: 'id_base',\n\t\t\t\t\t\tvalue: this.idBase ?? this.id,\n\t\t\t\t\t} ),\n\t\t\t\t\tel( 'input', {\n\t\t\t\t\t\tclass: 'widget-width',\n\t\t\t\t\t\ttype: 'hidden',\n\t\t\t\t\t\tname: 'widget-width',\n\t\t\t\t\t\tvalue: '250',\n\t\t\t\t\t} ),\n\t\t\t\t\tel( 'input', {\n\t\t\t\t\t\tclass: 'widget-height',\n\t\t\t\t\t\ttype: 'hidden',\n\t\t\t\t\t\tname: 'widget-height',\n\t\t\t\t\t\tvalue: '200',\n\t\t\t\t\t} ),\n\t\t\t\t\tel( 'input', {\n\t\t\t\t\t\tclass: 'widget_number',\n\t\t\t\t\t\ttype: 'hidden',\n\t\t\t\t\t\tname: 'widget_number',\n\t\t\t\t\t\tvalue: this.idBase ? this.number.toString() : '',\n\t\t\t\t\t} ),\n\t\t\t\t\t( this.content = el( 'div', { class: 'widget-content' } ) ),\n\t\t\t\t\t// Non-multi widgets can be saved via a Save button.\n\t\t\t\t\tthis.id &&\n\t\t\t\t\t\tel(\n\t\t\t\t\t\t\t'button',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tclass: 'button is-primary',\n\t\t\t\t\t\t\t\ttype: 'submit',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t__( 'Save' )\n\t\t\t\t\t\t),\n\t\t\t\t] ) ),\n\t\t\t] ),\n\t\t] );\n\t}\n\n\t/**\n\t * Adds the control's event listeners.\n\t *\n\t * @access private\n\t */\n\tbindEvents() {\n\t\t// Prefer jQuery 'change' event instead of the native 'change' event\n\t\t// because many widgets use jQuery's event bus to trigger an update.\n\t\tif ( window.jQuery ) {\n\t\t\tconst { jQuery: $ } = window;\n\t\t\t$( this.form ).on( 'change', null, this.handleFormChange );\n\t\t\t$( this.form ).on( 'input', null, this.handleFormChange );\n\t\t\t$( this.form ).on( 'submit', this.handleFormSubmit );\n\t\t} else {\n\t\t\tthis.form.addEventListener( 'change', this.handleFormChange );\n\t\t\tthis.form.addEventListener( 'input', this.handleFormChange );\n\t\t\tthis.form.addEventListener( 'submit', this.handleFormSubmit );\n\t\t}\n\t}\n\n\t/**\n\t * Removes the control's event listeners.\n\t *\n\t * @access private\n\t */\n\tunbindEvents() {\n\t\tif ( window.jQuery ) {\n\t\t\tconst { jQuery: $ } = window;\n\t\t\t$( this.form ).off( 'change', null, this.handleFormChange );\n\t\t\t$( this.form ).off( 'input', null, this.handleFormChange );\n\t\t\t$( this.form ).off( 'submit', this.handleFormSubmit );\n\t\t} else {\n\t\t\tthis.form.removeEventListener( 'change', this.handleFormChange );\n\t\t\tthis.form.removeEventListener( 'input', this.handleFormChange );\n\t\t\tthis.form.removeEventListener( 'submit', this.handleFormSubmit );\n\t\t}\n\t}\n\n\t/**\n\t * Fetches the widget's form HTML from the REST API and loads it into the\n\t * control's form.\n\t *\n\t * @access private\n\t */\n\tasync loadContent() {\n\t\ttry {\n\t\t\tif ( this.id ) {\n\t\t\t\tconst { form } = await saveWidget( this.id );\n\t\t\t\tthis.content.innerHTML = form;\n\t\t\t} else if ( this.idBase ) {\n\t\t\t\tconst { form, preview } = await encodeWidget( {\n\t\t\t\t\tidBase: this.idBase,\n\t\t\t\t\tinstance: this.instance,\n\t\t\t\t\tnumber: this.number,\n\t\t\t\t} );\n\t\t\t\tthis.content.innerHTML = form;\n\t\t\t\tthis.hasPreview = ! isEmptyHTML( preview );\n\n\t\t\t\t// If we don't have an instance, perform a save right away. This\n\t\t\t\t// happens when creating a new Legacy Widget block.\n\t\t\t\tif ( ! this.instance.hash ) {\n\t\t\t\t\tconst { instance } = await encodeWidget( {\n\t\t\t\t\t\tidBase: this.idBase,\n\t\t\t\t\t\tinstance: this.instance,\n\t\t\t\t\t\tnumber: this.number,\n\t\t\t\t\t\tformData: serializeForm( this.form ),\n\t\t\t\t\t} );\n\t\t\t\t\tthis.instance = instance;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Trigger 'widget-added' when widget is ready. This event is what\n\t\t\t// widgets' scripts use to initialize, attach events, etc. The event\n\t\t\t// must be fired using jQuery's event bus as this is what widget\n\t\t\t// scripts expect. If jQuery is not loaded, do nothing - some\n\t\t\t// widgets will still work regardless.\n\t\t\tif ( window.jQuery ) {\n\t\t\t\tconst { jQuery: $ } = window;\n\t\t\t\t$( document ).trigger( 'widget-added', [ $( this.element ) ] );\n\t\t\t}\n\t\t} catch ( error ) {\n\t\t\tthis.onError( error );\n\t\t}\n\t}\n\n\t/**\n\t * Perform a save when a multi widget's form is changed. Non-multi widgets\n\t * are saved manually.\n\t *\n\t * @access private\n\t */\n\thandleFormChange() {\n\t\tif ( this.idBase ) {\n\t\t\tthis.saveForm();\n\t\t}\n\t}\n\n\t/**\n\t * Perform a save when the control's form is manually submitted.\n\t *\n\t * @access private\n\t * @param {Event} event\n\t */\n\thandleFormSubmit( event ) {\n\t\tevent.preventDefault();\n\t\tthis.saveForm();\n\t}\n\n\t/**\n\t * Serialize the control's form, send it to the REST API, and update the\n\t * instance with the encoded instance that the REST API returns.\n\t *\n\t * @access private\n\t */\n\tasync saveForm() {\n\t\tconst formData = serializeForm( this.form );\n\n\t\ttry {\n\t\t\tif ( this.id ) {\n\t\t\t\tconst { form } = await saveWidget( this.id, formData );\n\t\t\t\tthis.content.innerHTML = form;\n\n\t\t\t\tif ( window.jQuery ) {\n\t\t\t\t\tconst { jQuery: $ } = window;\n\t\t\t\t\t$( document ).trigger( 'widget-updated', [\n\t\t\t\t\t\t$( this.element ),\n\t\t\t\t\t] );\n\t\t\t\t}\n\t\t\t} else if ( this.idBase ) {\n\t\t\t\tconst { instance, preview } = await encodeWidget( {\n\t\t\t\t\tidBase: this.idBase,\n\t\t\t\t\tinstance: this.instance,\n\t\t\t\t\tnumber: this.number,\n\t\t\t\t\tformData,\n\t\t\t\t} );\n\t\t\t\tthis.instance = instance;\n\t\t\t\tthis.hasPreview = ! isEmptyHTML( preview );\n\t\t\t}\n\t\t} catch ( error ) {\n\t\t\tthis.onError( error );\n\t\t}\n\t}\n\n\t/**\n\t * The widget's instance object.\n\t *\n\t * @access private\n\t */\n\tget instance() {\n\t\treturn this._instance;\n\t}\n\n\t/**\n\t * The widget's instance object.\n\t *\n\t * @access private\n\t */\n\tset instance( instance ) {\n\t\tif ( this._instance !== instance ) {\n\t\t\tthis._instance = instance;\n\t\t\tthis.onChangeInstance( instance );\n\t\t}\n\t}\n\n\t/**\n\t * Whether or not the widget can be previewed.\n\t *\n\t * @access public\n\t */\n\tget hasPreview() {\n\t\treturn this._hasPreview;\n\t}\n\n\t/**\n\t * Whether or not the widget can be previewed.\n\t *\n\t * @access private\n\t */\n\tset hasPreview( hasPreview ) {\n\t\tif ( this._hasPreview !== hasPreview ) {\n\t\t\tthis._hasPreview = hasPreview;\n\t\t\tthis.onChangeHasPreview( hasPreview );\n\t\t}\n\t}\n}\n\nlet lastNumber = 0;\n\nfunction el( tagName, attributes = {}, content = null ) {\n\tconst element = document.createElement( tagName );\n\tfor ( const [ attribute, value ] of Object.entries( attributes ) ) {\n\t\telement.setAttribute( attribute, value );\n\t}\n\tif ( Array.isArray( content ) ) {\n\t\tfor ( const child of content ) {\n\t\t\tif ( child ) {\n\t\t\t\telement.appendChild( child );\n\t\t\t}\n\t\t}\n\t} else if ( typeof content === 'string' ) {\n\t\telement.innerText = content;\n\t}\n\treturn element;\n}\n\nasync function saveWidget( id, formData = null ) {\n\tlet widget;\n\tif ( formData ) {\n\t\twidget = await apiFetch( {\n\t\t\tpath: `/wp/v2/widgets/${ id }?context=edit`,\n\t\t\tmethod: 'PUT',\n\t\t\tdata: {\n\t\t\t\tform_data: formData,\n\t\t\t},\n\t\t} );\n\t} else {\n\t\twidget = await apiFetch( {\n\t\t\tpath: `/wp/v2/widgets/${ id }?context=edit`,\n\t\t\tmethod: 'GET',\n\t\t} );\n\t}\n\treturn { form: widget.rendered_form };\n}\n\nasync function encodeWidget( { idBase, instance, number, formData = null } ) {\n\tconst response = await apiFetch( {\n\t\tpath: `/wp/v2/widget-types/${ idBase }/encode`,\n\t\tmethod: 'POST',\n\t\tdata: {\n\t\t\tinstance,\n\t\t\tnumber,\n\t\t\tform_data: formData,\n\t\t},\n\t} );\n\treturn {\n\t\tinstance: response.instance,\n\t\tform: response.form,\n\t\tpreview: response.preview,\n\t};\n}\n\nfunction isEmptyHTML( html ) {\n\tconst element = document.createElement( 'div' );\n\telement.innerHTML = html;\n\treturn isEmptyNode( element );\n}\n\nfunction isEmptyNode( node ) {\n\tswitch ( node.nodeType ) {\n\t\tcase node.TEXT_NODE:\n\t\t\t// Text nodes are empty if it's entirely whitespace.\n\t\t\treturn node.nodeValue.trim() === '';\n\t\tcase node.ELEMENT_NODE:\n\t\t\t// Elements that are \"embedded content\" are not empty.\n\t\t\t// https://dev.w3.org/html5/spec-LC/content-models.html#embedded-content-0\n\t\t\tif (\n\t\t\t\t[\n\t\t\t\t\t'AUDIO',\n\t\t\t\t\t'CANVAS',\n\t\t\t\t\t'EMBED',\n\t\t\t\t\t'IFRAME',\n\t\t\t\t\t'IMG',\n\t\t\t\t\t'MATH',\n\t\t\t\t\t'OBJECT',\n\t\t\t\t\t'SVG',\n\t\t\t\t\t'VIDEO',\n\t\t\t\t].includes( node.tagName )\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Elements with no children are empty.\n\t\t\tif ( ! node.hasChildNodes() ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t// Elements with children are empty if all their children are empty.\n\t\t\treturn Array.from( node.childNodes ).every( isEmptyNode );\n\t\tdefault:\n\t\t\treturn true;\n\t}\n}\n\nfunction serializeForm( form ) {\n\treturn new window.URLSearchParams(\n\t\tArray.from( new window.FormData( form ) )\n\t).toString();\n}\n"]}
|
|
1
|
+
{"version":3,"names":["_apiFetch","_interopRequireDefault","require","_compose","_i18n","Control","constructor","id","idBase","instance","onChangeInstance","onChangeHasPreview","onError","_instance","_hasPreview","number","lastNumber","handleFormChange","debounce","bind","handleFormSubmit","initDOM","bindEvents","loadContent","destroy","unbindEvents","element","remove","_this$id","_this$idBase","el","class","form","method","type","name","value","toString","content","__","window","jQuery","$","on","addEventListener","off","removeEventListener","saveWidget","innerHTML","preview","encodeWidget","hasPreview","isEmptyHTML","hash","formData","serializeForm","document","trigger","error","saveForm","event","preventDefault","exports","default","tagName","attributes","createElement","attribute","Object","entries","setAttribute","Array","isArray","child","appendChild","innerText","widget","apiFetch","path","data","form_data","rendered_form","response","html","isEmptyNode","node","nodeType","TEXT_NODE","nodeValue","trim","ELEMENT_NODE","includes","hasChildNodes","from","childNodes","every","URLSearchParams","FormData"],"sources":["@wordpress/widgets/src/blocks/legacy-widget/edit/control.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport apiFetch from '@wordpress/api-fetch';\nimport { debounce } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * An API for creating and loading a widget control (a <div class=\"widget\">\n * element) that is compatible with most third party widget scripts. By not\n * using React for this, we ensure that we have complete contorl over the DOM\n * and do not accidentally remove any elements that a third party widget script\n * has attached an event listener to.\n *\n * @property {Element} element The control's DOM element.\n */\nexport default class Control {\n\t/**\n\t * Creates and loads a new control.\n\t *\n\t * @access public\n\t * @param {Object} params\n\t * @param {string} params.id\n\t * @param {string} params.idBase\n\t * @param {Object} params.instance\n\t * @param {Function} params.onChangeInstance\n\t * @param {Function} params.onChangeHasPreview\n\t * @param {Function} params.onError\n\t */\n\tconstructor( {\n\t\tid,\n\t\tidBase,\n\t\tinstance,\n\t\tonChangeInstance,\n\t\tonChangeHasPreview,\n\t\tonError,\n\t} ) {\n\t\tthis.id = id;\n\t\tthis.idBase = idBase;\n\t\tthis._instance = instance;\n\t\tthis._hasPreview = null;\n\t\tthis.onChangeInstance = onChangeInstance;\n\t\tthis.onChangeHasPreview = onChangeHasPreview;\n\t\tthis.onError = onError;\n\n\t\t// We can't use the real widget number as this is calculated by the\n\t\t// server and we may not ever *actually* save this widget. Instead, use\n\t\t// a fake but unique number.\n\t\tthis.number = ++lastNumber;\n\n\t\tthis.handleFormChange = debounce(\n\t\t\tthis.handleFormChange.bind( this ),\n\t\t\t200\n\t\t);\n\t\tthis.handleFormSubmit = this.handleFormSubmit.bind( this );\n\n\t\tthis.initDOM();\n\t\tthis.bindEvents();\n\t\tthis.loadContent();\n\t}\n\n\t/**\n\t * Clean up the control so that it can be garabge collected.\n\t *\n\t * @access public\n\t */\n\tdestroy() {\n\t\tthis.unbindEvents();\n\t\tthis.element.remove();\n\t\t// TODO: How do we make third party widget scripts remove their event\n\t\t// listeners?\n\t}\n\n\t/**\n\t * Creates the control's DOM structure.\n\t *\n\t * @access private\n\t */\n\tinitDOM() {\n\t\tthis.element = el( 'div', { class: 'widget open' }, [\n\t\t\tel( 'div', { class: 'widget-inside' }, [\n\t\t\t\t( this.form = el( 'form', { class: 'form', method: 'post' }, [\n\t\t\t\t\t// These hidden form inputs are what most widgets' scripts\n\t\t\t\t\t// use to access data about the widget.\n\t\t\t\t\tel( 'input', {\n\t\t\t\t\t\tclass: 'widget-id',\n\t\t\t\t\t\ttype: 'hidden',\n\t\t\t\t\t\tname: 'widget-id',\n\t\t\t\t\t\tvalue: this.id ?? `${ this.idBase }-${ this.number }`,\n\t\t\t\t\t} ),\n\t\t\t\t\tel( 'input', {\n\t\t\t\t\t\tclass: 'id_base',\n\t\t\t\t\t\ttype: 'hidden',\n\t\t\t\t\t\tname: 'id_base',\n\t\t\t\t\t\tvalue: this.idBase ?? this.id,\n\t\t\t\t\t} ),\n\t\t\t\t\tel( 'input', {\n\t\t\t\t\t\tclass: 'widget-width',\n\t\t\t\t\t\ttype: 'hidden',\n\t\t\t\t\t\tname: 'widget-width',\n\t\t\t\t\t\tvalue: '250',\n\t\t\t\t\t} ),\n\t\t\t\t\tel( 'input', {\n\t\t\t\t\t\tclass: 'widget-height',\n\t\t\t\t\t\ttype: 'hidden',\n\t\t\t\t\t\tname: 'widget-height',\n\t\t\t\t\t\tvalue: '200',\n\t\t\t\t\t} ),\n\t\t\t\t\tel( 'input', {\n\t\t\t\t\t\tclass: 'widget_number',\n\t\t\t\t\t\ttype: 'hidden',\n\t\t\t\t\t\tname: 'widget_number',\n\t\t\t\t\t\tvalue: this.idBase ? this.number.toString() : '',\n\t\t\t\t\t} ),\n\t\t\t\t\t( this.content = el( 'div', { class: 'widget-content' } ) ),\n\t\t\t\t\t// Non-multi widgets can be saved via a Save button.\n\t\t\t\t\tthis.id &&\n\t\t\t\t\t\tel(\n\t\t\t\t\t\t\t'button',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tclass: 'button is-primary',\n\t\t\t\t\t\t\t\ttype: 'submit',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t__( 'Save' )\n\t\t\t\t\t\t),\n\t\t\t\t] ) ),\n\t\t\t] ),\n\t\t] );\n\t}\n\n\t/**\n\t * Adds the control's event listeners.\n\t *\n\t * @access private\n\t */\n\tbindEvents() {\n\t\t// Prefer jQuery 'change' event instead of the native 'change' event\n\t\t// because many widgets use jQuery's event bus to trigger an update.\n\t\tif ( window.jQuery ) {\n\t\t\tconst { jQuery: $ } = window;\n\t\t\t$( this.form ).on( 'change', null, this.handleFormChange );\n\t\t\t$( this.form ).on( 'input', null, this.handleFormChange );\n\t\t\t$( this.form ).on( 'submit', this.handleFormSubmit );\n\t\t} else {\n\t\t\tthis.form.addEventListener( 'change', this.handleFormChange );\n\t\t\tthis.form.addEventListener( 'input', this.handleFormChange );\n\t\t\tthis.form.addEventListener( 'submit', this.handleFormSubmit );\n\t\t}\n\t}\n\n\t/**\n\t * Removes the control's event listeners.\n\t *\n\t * @access private\n\t */\n\tunbindEvents() {\n\t\tif ( window.jQuery ) {\n\t\t\tconst { jQuery: $ } = window;\n\t\t\t$( this.form ).off( 'change', null, this.handleFormChange );\n\t\t\t$( this.form ).off( 'input', null, this.handleFormChange );\n\t\t\t$( this.form ).off( 'submit', this.handleFormSubmit );\n\t\t} else {\n\t\t\tthis.form.removeEventListener( 'change', this.handleFormChange );\n\t\t\tthis.form.removeEventListener( 'input', this.handleFormChange );\n\t\t\tthis.form.removeEventListener( 'submit', this.handleFormSubmit );\n\t\t}\n\t}\n\n\t/**\n\t * Fetches the widget's form HTML from the REST API and loads it into the\n\t * control's form.\n\t *\n\t * @access private\n\t */\n\tasync loadContent() {\n\t\ttry {\n\t\t\tif ( this.id ) {\n\t\t\t\tconst { form } = await saveWidget( this.id );\n\t\t\t\tthis.content.innerHTML = form;\n\t\t\t} else if ( this.idBase ) {\n\t\t\t\tconst { form, preview } = await encodeWidget( {\n\t\t\t\t\tidBase: this.idBase,\n\t\t\t\t\tinstance: this.instance,\n\t\t\t\t\tnumber: this.number,\n\t\t\t\t} );\n\t\t\t\tthis.content.innerHTML = form;\n\t\t\t\tthis.hasPreview = ! isEmptyHTML( preview );\n\n\t\t\t\t// If we don't have an instance, perform a save right away. This\n\t\t\t\t// happens when creating a new Legacy Widget block.\n\t\t\t\tif ( ! this.instance.hash ) {\n\t\t\t\t\tconst { instance } = await encodeWidget( {\n\t\t\t\t\t\tidBase: this.idBase,\n\t\t\t\t\t\tinstance: this.instance,\n\t\t\t\t\t\tnumber: this.number,\n\t\t\t\t\t\tformData: serializeForm( this.form ),\n\t\t\t\t\t} );\n\t\t\t\t\tthis.instance = instance;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Trigger 'widget-added' when widget is ready. This event is what\n\t\t\t// widgets' scripts use to initialize, attach events, etc. The event\n\t\t\t// must be fired using jQuery's event bus as this is what widget\n\t\t\t// scripts expect. If jQuery is not loaded, do nothing - some\n\t\t\t// widgets will still work regardless.\n\t\t\tif ( window.jQuery ) {\n\t\t\t\tconst { jQuery: $ } = window;\n\t\t\t\t$( document ).trigger( 'widget-added', [ $( this.element ) ] );\n\t\t\t}\n\t\t} catch ( error ) {\n\t\t\tthis.onError( error );\n\t\t}\n\t}\n\n\t/**\n\t * Perform a save when a multi widget's form is changed. Non-multi widgets\n\t * are saved manually.\n\t *\n\t * @access private\n\t */\n\thandleFormChange() {\n\t\tif ( this.idBase ) {\n\t\t\tthis.saveForm();\n\t\t}\n\t}\n\n\t/**\n\t * Perform a save when the control's form is manually submitted.\n\t *\n\t * @access private\n\t * @param {Event} event\n\t */\n\thandleFormSubmit( event ) {\n\t\tevent.preventDefault();\n\t\tthis.saveForm();\n\t}\n\n\t/**\n\t * Serialize the control's form, send it to the REST API, and update the\n\t * instance with the encoded instance that the REST API returns.\n\t *\n\t * @access private\n\t */\n\tasync saveForm() {\n\t\tconst formData = serializeForm( this.form );\n\n\t\ttry {\n\t\t\tif ( this.id ) {\n\t\t\t\tconst { form } = await saveWidget( this.id, formData );\n\t\t\t\tthis.content.innerHTML = form;\n\n\t\t\t\tif ( window.jQuery ) {\n\t\t\t\t\tconst { jQuery: $ } = window;\n\t\t\t\t\t$( document ).trigger( 'widget-updated', [\n\t\t\t\t\t\t$( this.element ),\n\t\t\t\t\t] );\n\t\t\t\t}\n\t\t\t} else if ( this.idBase ) {\n\t\t\t\tconst { instance, preview } = await encodeWidget( {\n\t\t\t\t\tidBase: this.idBase,\n\t\t\t\t\tinstance: this.instance,\n\t\t\t\t\tnumber: this.number,\n\t\t\t\t\tformData,\n\t\t\t\t} );\n\t\t\t\tthis.instance = instance;\n\t\t\t\tthis.hasPreview = ! isEmptyHTML( preview );\n\t\t\t}\n\t\t} catch ( error ) {\n\t\t\tthis.onError( error );\n\t\t}\n\t}\n\n\t/**\n\t * The widget's instance object.\n\t *\n\t * @access private\n\t */\n\tget instance() {\n\t\treturn this._instance;\n\t}\n\n\t/**\n\t * The widget's instance object.\n\t *\n\t * @access private\n\t */\n\tset instance( instance ) {\n\t\tif ( this._instance !== instance ) {\n\t\t\tthis._instance = instance;\n\t\t\tthis.onChangeInstance( instance );\n\t\t}\n\t}\n\n\t/**\n\t * Whether or not the widget can be previewed.\n\t *\n\t * @access public\n\t */\n\tget hasPreview() {\n\t\treturn this._hasPreview;\n\t}\n\n\t/**\n\t * Whether or not the widget can be previewed.\n\t *\n\t * @access private\n\t */\n\tset hasPreview( hasPreview ) {\n\t\tif ( this._hasPreview !== hasPreview ) {\n\t\t\tthis._hasPreview = hasPreview;\n\t\t\tthis.onChangeHasPreview( hasPreview );\n\t\t}\n\t}\n}\n\nlet lastNumber = 0;\n\nfunction el( tagName, attributes = {}, content = null ) {\n\tconst element = document.createElement( tagName );\n\tfor ( const [ attribute, value ] of Object.entries( attributes ) ) {\n\t\telement.setAttribute( attribute, value );\n\t}\n\tif ( Array.isArray( content ) ) {\n\t\tfor ( const child of content ) {\n\t\t\tif ( child ) {\n\t\t\t\telement.appendChild( child );\n\t\t\t}\n\t\t}\n\t} else if ( typeof content === 'string' ) {\n\t\telement.innerText = content;\n\t}\n\treturn element;\n}\n\nasync function saveWidget( id, formData = null ) {\n\tlet widget;\n\tif ( formData ) {\n\t\twidget = await apiFetch( {\n\t\t\tpath: `/wp/v2/widgets/${ id }?context=edit`,\n\t\t\tmethod: 'PUT',\n\t\t\tdata: {\n\t\t\t\tform_data: formData,\n\t\t\t},\n\t\t} );\n\t} else {\n\t\twidget = await apiFetch( {\n\t\t\tpath: `/wp/v2/widgets/${ id }?context=edit`,\n\t\t\tmethod: 'GET',\n\t\t} );\n\t}\n\treturn { form: widget.rendered_form };\n}\n\nasync function encodeWidget( { idBase, instance, number, formData = null } ) {\n\tconst response = await apiFetch( {\n\t\tpath: `/wp/v2/widget-types/${ idBase }/encode`,\n\t\tmethod: 'POST',\n\t\tdata: {\n\t\t\tinstance,\n\t\t\tnumber,\n\t\t\tform_data: formData,\n\t\t},\n\t} );\n\treturn {\n\t\tinstance: response.instance,\n\t\tform: response.form,\n\t\tpreview: response.preview,\n\t};\n}\n\nfunction isEmptyHTML( html ) {\n\tconst element = document.createElement( 'div' );\n\telement.innerHTML = html;\n\treturn isEmptyNode( element );\n}\n\nfunction isEmptyNode( node ) {\n\tswitch ( node.nodeType ) {\n\t\tcase node.TEXT_NODE:\n\t\t\t// Text nodes are empty if it's entirely whitespace.\n\t\t\treturn node.nodeValue.trim() === '';\n\t\tcase node.ELEMENT_NODE:\n\t\t\t// Elements that are \"embedded content\" are not empty.\n\t\t\t// https://dev.w3.org/html5/spec-LC/content-models.html#embedded-content-0\n\t\t\tif (\n\t\t\t\t[\n\t\t\t\t\t'AUDIO',\n\t\t\t\t\t'CANVAS',\n\t\t\t\t\t'EMBED',\n\t\t\t\t\t'IFRAME',\n\t\t\t\t\t'IMG',\n\t\t\t\t\t'MATH',\n\t\t\t\t\t'OBJECT',\n\t\t\t\t\t'SVG',\n\t\t\t\t\t'VIDEO',\n\t\t\t\t].includes( node.tagName )\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Elements with no children are empty.\n\t\t\tif ( ! node.hasChildNodes() ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t// Elements with children are empty if all their children are empty.\n\t\t\treturn Array.from( node.childNodes ).every( isEmptyNode );\n\t\tdefault:\n\t\t\treturn true;\n\t}\n}\n\nfunction serializeForm( form ) {\n\treturn new window.URLSearchParams(\n\t\tArray.from( new window.FormData( form ) )\n\t).toString();\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AALA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,MAAMG,OAAO,CAAC;EAC5B;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACCC,WAAWA,CAAE;IACZC,EAAE;IACFC,MAAM;IACNC,QAAQ;IACRC,gBAAgB;IAChBC,kBAAkB;IAClBC;EACD,CAAC,EAAG;IACH,IAAI,CAACL,EAAE,GAAGA,EAAE;IACZ,IAAI,CAACC,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACK,SAAS,GAAGJ,QAAQ;IACzB,IAAI,CAACK,WAAW,GAAG,IAAI;IACvB,IAAI,CAACJ,gBAAgB,GAAGA,gBAAgB;IACxC,IAAI,CAACC,kBAAkB,GAAGA,kBAAkB;IAC5C,IAAI,CAACC,OAAO,GAAGA,OAAO;;IAEtB;IACA;IACA;IACA,IAAI,CAACG,MAAM,GAAG,EAAEC,UAAU;IAE1B,IAAI,CAACC,gBAAgB,GAAG,IAAAC,iBAAQ,EAC/B,IAAI,CAACD,gBAAgB,CAACE,IAAI,CAAE,IAAK,CAAC,EAClC,GACD,CAAC;IACD,IAAI,CAACC,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACD,IAAI,CAAE,IAAK,CAAC;IAE1D,IAAI,CAACE,OAAO,CAAC,CAAC;IACd,IAAI,CAACC,UAAU,CAAC,CAAC;IACjB,IAAI,CAACC,WAAW,CAAC,CAAC;EACnB;;EAEA;AACD;AACA;AACA;AACA;EACCC,OAAOA,CAAA,EAAG;IACT,IAAI,CAACC,YAAY,CAAC,CAAC;IACnB,IAAI,CAACC,OAAO,CAACC,MAAM,CAAC,CAAC;IACrB;IACA;EACD;;EAEA;AACD;AACA;AACA;AACA;EACCN,OAAOA,CAAA,EAAG;IAAA,IAAAO,QAAA,EAAAC,YAAA;IACT,IAAI,CAACH,OAAO,GAAGI,EAAE,CAAE,KAAK,EAAE;MAAEC,KAAK,EAAE;IAAc,CAAC,EAAE,CACnDD,EAAE,CAAE,KAAK,EAAE;MAAEC,KAAK,EAAE;IAAgB,CAAC,EAAE,CACpC,IAAI,CAACC,IAAI,GAAGF,EAAE,CAAE,MAAM,EAAE;MAAEC,KAAK,EAAE,MAAM;MAAEE,MAAM,EAAE;IAAO,CAAC,EAAE;IAC5D;IACA;IACAH,EAAE,CAAE,OAAO,EAAE;MACZC,KAAK,EAAE,WAAW;MAClBG,IAAI,EAAE,QAAQ;MACdC,IAAI,EAAE,WAAW;MACjBC,KAAK,GAAAR,QAAA,GAAE,IAAI,CAACrB,EAAE,cAAAqB,QAAA,cAAAA,QAAA,GAAK,GAAG,IAAI,CAACpB,MAAQ,IAAI,IAAI,CAACO,MAAQ;IACrD,CAAE,CAAC,EACHe,EAAE,CAAE,OAAO,EAAE;MACZC,KAAK,EAAE,SAAS;MAChBG,IAAI,EAAE,QAAQ;MACdC,IAAI,EAAE,SAAS;MACfC,KAAK,GAAAP,YAAA,GAAE,IAAI,CAACrB,MAAM,cAAAqB,YAAA,cAAAA,YAAA,GAAI,IAAI,CAACtB;IAC5B,CAAE,CAAC,EACHuB,EAAE,CAAE,OAAO,EAAE;MACZC,KAAK,EAAE,cAAc;MACrBG,IAAI,EAAE,QAAQ;MACdC,IAAI,EAAE,cAAc;MACpBC,KAAK,EAAE;IACR,CAAE,CAAC,EACHN,EAAE,CAAE,OAAO,EAAE;MACZC,KAAK,EAAE,eAAe;MACtBG,IAAI,EAAE,QAAQ;MACdC,IAAI,EAAE,eAAe;MACrBC,KAAK,EAAE;IACR,CAAE,CAAC,EACHN,EAAE,CAAE,OAAO,EAAE;MACZC,KAAK,EAAE,eAAe;MACtBG,IAAI,EAAE,QAAQ;MACdC,IAAI,EAAE,eAAe;MACrBC,KAAK,EAAE,IAAI,CAAC5B,MAAM,GAAG,IAAI,CAACO,MAAM,CAACsB,QAAQ,CAAC,CAAC,GAAG;IAC/C,CAAE,CAAC,EACD,IAAI,CAACC,OAAO,GAAGR,EAAE,CAAE,KAAK,EAAE;MAAEC,KAAK,EAAE;IAAiB,CAAE,CAAC;IACzD;IACA,IAAI,CAACxB,EAAE,IACNuB,EAAE,CACD,QAAQ,EACR;MACCC,KAAK,EAAE,mBAAmB;MAC1BG,IAAI,EAAE;IACP,CAAC,EACD,IAAAK,QAAE,EAAE,MAAO,CACZ,CAAC,CACD,CAAC,CACF,CAAC,CACF,CAAC;EACJ;;EAEA;AACD;AACA;AACA;AACA;EACCjB,UAAUA,CAAA,EAAG;IACZ;IACA;IACA,IAAKkB,MAAM,CAACC,MAAM,EAAG;MACpB,MAAM;QAAEA,MAAM,EAAEC;MAAE,CAAC,GAAGF,MAAM;MAC5BE,CAAC,CAAE,IAAI,CAACV,IAAK,CAAC,CAACW,EAAE,CAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC1B,gBAAiB,CAAC;MAC1DyB,CAAC,CAAE,IAAI,CAACV,IAAK,CAAC,CAACW,EAAE,CAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC1B,gBAAiB,CAAC;MACzDyB,CAAC,CAAE,IAAI,CAACV,IAAK,CAAC,CAACW,EAAE,CAAE,QAAQ,EAAE,IAAI,CAACvB,gBAAiB,CAAC;IACrD,CAAC,MAAM;MACN,IAAI,CAACY,IAAI,CAACY,gBAAgB,CAAE,QAAQ,EAAE,IAAI,CAAC3B,gBAAiB,CAAC;MAC7D,IAAI,CAACe,IAAI,CAACY,gBAAgB,CAAE,OAAO,EAAE,IAAI,CAAC3B,gBAAiB,CAAC;MAC5D,IAAI,CAACe,IAAI,CAACY,gBAAgB,CAAE,QAAQ,EAAE,IAAI,CAACxB,gBAAiB,CAAC;IAC9D;EACD;;EAEA;AACD;AACA;AACA;AACA;EACCK,YAAYA,CAAA,EAAG;IACd,IAAKe,MAAM,CAACC,MAAM,EAAG;MACpB,MAAM;QAAEA,MAAM,EAAEC;MAAE,CAAC,GAAGF,MAAM;MAC5BE,CAAC,CAAE,IAAI,CAACV,IAAK,CAAC,CAACa,GAAG,CAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC5B,gBAAiB,CAAC;MAC3DyB,CAAC,CAAE,IAAI,CAACV,IAAK,CAAC,CAACa,GAAG,CAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC5B,gBAAiB,CAAC;MAC1DyB,CAAC,CAAE,IAAI,CAACV,IAAK,CAAC,CAACa,GAAG,CAAE,QAAQ,EAAE,IAAI,CAACzB,gBAAiB,CAAC;IACtD,CAAC,MAAM;MACN,IAAI,CAACY,IAAI,CAACc,mBAAmB,CAAE,QAAQ,EAAE,IAAI,CAAC7B,gBAAiB,CAAC;MAChE,IAAI,CAACe,IAAI,CAACc,mBAAmB,CAAE,OAAO,EAAE,IAAI,CAAC7B,gBAAiB,CAAC;MAC/D,IAAI,CAACe,IAAI,CAACc,mBAAmB,CAAE,QAAQ,EAAE,IAAI,CAAC1B,gBAAiB,CAAC;IACjE;EACD;;EAEA;AACD;AACA;AACA;AACA;AACA;EACC,MAAMG,WAAWA,CAAA,EAAG;IACnB,IAAI;MACH,IAAK,IAAI,CAAChB,EAAE,EAAG;QACd,MAAM;UAAEyB;QAAK,CAAC,GAAG,MAAMe,UAAU,CAAE,IAAI,CAACxC,EAAG,CAAC;QAC5C,IAAI,CAAC+B,OAAO,CAACU,SAAS,GAAGhB,IAAI;MAC9B,CAAC,MAAM,IAAK,IAAI,CAACxB,MAAM,EAAG;QACzB,MAAM;UAAEwB,IAAI;UAAEiB;QAAQ,CAAC,GAAG,MAAMC,YAAY,CAAE;UAC7C1C,MAAM,EAAE,IAAI,CAACA,MAAM;UACnBC,QAAQ,EAAE,IAAI,CAACA,QAAQ;UACvBM,MAAM,EAAE,IAAI,CAACA;QACd,CAAE,CAAC;QACH,IAAI,CAACuB,OAAO,CAACU,SAAS,GAAGhB,IAAI;QAC7B,IAAI,CAACmB,UAAU,GAAG,CAAEC,WAAW,CAAEH,OAAQ,CAAC;;QAE1C;QACA;QACA,IAAK,CAAE,IAAI,CAACxC,QAAQ,CAAC4C,IAAI,EAAG;UAC3B,MAAM;YAAE5C;UAAS,CAAC,GAAG,MAAMyC,YAAY,CAAE;YACxC1C,MAAM,EAAE,IAAI,CAACA,MAAM;YACnBC,QAAQ,EAAE,IAAI,CAACA,QAAQ;YACvBM,MAAM,EAAE,IAAI,CAACA,MAAM;YACnBuC,QAAQ,EAAEC,aAAa,CAAE,IAAI,CAACvB,IAAK;UACpC,CAAE,CAAC;UACH,IAAI,CAACvB,QAAQ,GAAGA,QAAQ;QACzB;MACD;;MAEA;MACA;MACA;MACA;MACA;MACA,IAAK+B,MAAM,CAACC,MAAM,EAAG;QACpB,MAAM;UAAEA,MAAM,EAAEC;QAAE,CAAC,GAAGF,MAAM;QAC5BE,CAAC,CAAEc,QAAS,CAAC,CAACC,OAAO,CAAE,cAAc,EAAE,CAAEf,CAAC,CAAE,IAAI,CAAChB,OAAQ,CAAC,CAAG,CAAC;MAC/D;IACD,CAAC,CAAC,OAAQgC,KAAK,EAAG;MACjB,IAAI,CAAC9C,OAAO,CAAE8C,KAAM,CAAC;IACtB;EACD;;EAEA;AACD;AACA;AACA;AACA;AACA;EACCzC,gBAAgBA,CAAA,EAAG;IAClB,IAAK,IAAI,CAACT,MAAM,EAAG;MAClB,IAAI,CAACmD,QAAQ,CAAC,CAAC;IAChB;EACD;;EAEA;AACD;AACA;AACA;AACA;AACA;EACCvC,gBAAgBA,CAAEwC,KAAK,EAAG;IACzBA,KAAK,CAACC,cAAc,CAAC,CAAC;IACtB,IAAI,CAACF,QAAQ,CAAC,CAAC;EAChB;;EAEA;AACD;AACA;AACA;AACA;AACA;EACC,MAAMA,QAAQA,CAAA,EAAG;IAChB,MAAML,QAAQ,GAAGC,aAAa,CAAE,IAAI,CAACvB,IAAK,CAAC;IAE3C,IAAI;MACH,IAAK,IAAI,CAACzB,EAAE,EAAG;QACd,MAAM;UAAEyB;QAAK,CAAC,GAAG,MAAMe,UAAU,CAAE,IAAI,CAACxC,EAAE,EAAE+C,QAAS,CAAC;QACtD,IAAI,CAAChB,OAAO,CAACU,SAAS,GAAGhB,IAAI;QAE7B,IAAKQ,MAAM,CAACC,MAAM,EAAG;UACpB,MAAM;YAAEA,MAAM,EAAEC;UAAE,CAAC,GAAGF,MAAM;UAC5BE,CAAC,CAAEc,QAAS,CAAC,CAACC,OAAO,CAAE,gBAAgB,EAAE,CACxCf,CAAC,CAAE,IAAI,CAAChB,OAAQ,CAAC,CAChB,CAAC;QACJ;MACD,CAAC,MAAM,IAAK,IAAI,CAAClB,MAAM,EAAG;QACzB,MAAM;UAAEC,QAAQ;UAAEwC;QAAQ,CAAC,GAAG,MAAMC,YAAY,CAAE;UACjD1C,MAAM,EAAE,IAAI,CAACA,MAAM;UACnBC,QAAQ,EAAE,IAAI,CAACA,QAAQ;UACvBM,MAAM,EAAE,IAAI,CAACA,MAAM;UACnBuC;QACD,CAAE,CAAC;QACH,IAAI,CAAC7C,QAAQ,GAAGA,QAAQ;QACxB,IAAI,CAAC0C,UAAU,GAAG,CAAEC,WAAW,CAAEH,OAAQ,CAAC;MAC3C;IACD,CAAC,CAAC,OAAQS,KAAK,EAAG;MACjB,IAAI,CAAC9C,OAAO,CAAE8C,KAAM,CAAC;IACtB;EACD;;EAEA;AACD;AACA;AACA;AACA;EACC,IAAIjD,QAAQA,CAAA,EAAG;IACd,OAAO,IAAI,CAACI,SAAS;EACtB;;EAEA;AACD;AACA;AACA;AACA;EACC,IAAIJ,QAAQA,CAAEA,QAAQ,EAAG;IACxB,IAAK,IAAI,CAACI,SAAS,KAAKJ,QAAQ,EAAG;MAClC,IAAI,CAACI,SAAS,GAAGJ,QAAQ;MACzB,IAAI,CAACC,gBAAgB,CAAED,QAAS,CAAC;IAClC;EACD;;EAEA;AACD;AACA;AACA;AACA;EACC,IAAI0C,UAAUA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACrC,WAAW;EACxB;;EAEA;AACD;AACA;AACA;AACA;EACC,IAAIqC,UAAUA,CAAEA,UAAU,EAAG;IAC5B,IAAK,IAAI,CAACrC,WAAW,KAAKqC,UAAU,EAAG;MACtC,IAAI,CAACrC,WAAW,GAAGqC,UAAU;MAC7B,IAAI,CAACxC,kBAAkB,CAAEwC,UAAW,CAAC;IACtC;EACD;AACD;AAACW,OAAA,CAAAC,OAAA,GAAA1D,OAAA;AAED,IAAIW,UAAU,GAAG,CAAC;AAElB,SAASc,EAAEA,CAAEkC,OAAO,EAAEC,UAAU,GAAG,CAAC,CAAC,EAAE3B,OAAO,GAAG,IAAI,EAAG;EACvD,MAAMZ,OAAO,GAAG8B,QAAQ,CAACU,aAAa,CAAEF,OAAQ,CAAC;EACjD,KAAM,MAAM,CAAEG,SAAS,EAAE/B,KAAK,CAAE,IAAIgC,MAAM,CAACC,OAAO,CAAEJ,UAAW,CAAC,EAAG;IAClEvC,OAAO,CAAC4C,YAAY,CAAEH,SAAS,EAAE/B,KAAM,CAAC;EACzC;EACA,IAAKmC,KAAK,CAACC,OAAO,CAAElC,OAAQ,CAAC,EAAG;IAC/B,KAAM,MAAMmC,KAAK,IAAInC,OAAO,EAAG;MAC9B,IAAKmC,KAAK,EAAG;QACZ/C,OAAO,CAACgD,WAAW,CAAED,KAAM,CAAC;MAC7B;IACD;EACD,CAAC,MAAM,IAAK,OAAOnC,OAAO,KAAK,QAAQ,EAAG;IACzCZ,OAAO,CAACiD,SAAS,GAAGrC,OAAO;EAC5B;EACA,OAAOZ,OAAO;AACf;AAEA,eAAeqB,UAAUA,CAAExC,EAAE,EAAE+C,QAAQ,GAAG,IAAI,EAAG;EAChD,IAAIsB,MAAM;EACV,IAAKtB,QAAQ,EAAG;IACfsB,MAAM,GAAG,MAAM,IAAAC,iBAAQ,EAAE;MACxBC,IAAI,EAAG,kBAAkBvE,EAAI,eAAc;MAC3C0B,MAAM,EAAE,KAAK;MACb8C,IAAI,EAAE;QACLC,SAAS,EAAE1B;MACZ;IACD,CAAE,CAAC;EACJ,CAAC,MAAM;IACNsB,MAAM,GAAG,MAAM,IAAAC,iBAAQ,EAAE;MACxBC,IAAI,EAAG,kBAAkBvE,EAAI,eAAc;MAC3C0B,MAAM,EAAE;IACT,CAAE,CAAC;EACJ;EACA,OAAO;IAAED,IAAI,EAAE4C,MAAM,CAACK;EAAc,CAAC;AACtC;AAEA,eAAe/B,YAAYA,CAAE;EAAE1C,MAAM;EAAEC,QAAQ;EAAEM,MAAM;EAAEuC,QAAQ,GAAG;AAAK,CAAC,EAAG;EAC5E,MAAM4B,QAAQ,GAAG,MAAM,IAAAL,iBAAQ,EAAE;IAChCC,IAAI,EAAG,uBAAuBtE,MAAQ,SAAQ;IAC9CyB,MAAM,EAAE,MAAM;IACd8C,IAAI,EAAE;MACLtE,QAAQ;MACRM,MAAM;MACNiE,SAAS,EAAE1B;IACZ;EACD,CAAE,CAAC;EACH,OAAO;IACN7C,QAAQ,EAAEyE,QAAQ,CAACzE,QAAQ;IAC3BuB,IAAI,EAAEkD,QAAQ,CAAClD,IAAI;IACnBiB,OAAO,EAAEiC,QAAQ,CAACjC;EACnB,CAAC;AACF;AAEA,SAASG,WAAWA,CAAE+B,IAAI,EAAG;EAC5B,MAAMzD,OAAO,GAAG8B,QAAQ,CAACU,aAAa,CAAE,KAAM,CAAC;EAC/CxC,OAAO,CAACsB,SAAS,GAAGmC,IAAI;EACxB,OAAOC,WAAW,CAAE1D,OAAQ,CAAC;AAC9B;AAEA,SAAS0D,WAAWA,CAAEC,IAAI,EAAG;EAC5B,QAASA,IAAI,CAACC,QAAQ;IACrB,KAAKD,IAAI,CAACE,SAAS;MAClB;MACA,OAAOF,IAAI,CAACG,SAAS,CAACC,IAAI,CAAC,CAAC,KAAK,EAAE;IACpC,KAAKJ,IAAI,CAACK,YAAY;MACrB;MACA;MACA,IACC,CACC,OAAO,EACP,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,KAAK,EACL,MAAM,EACN,QAAQ,EACR,KAAK,EACL,OAAO,CACP,CAACC,QAAQ,CAAEN,IAAI,CAACrB,OAAQ,CAAC,EACzB;QACD,OAAO,KAAK;MACb;MACA;MACA,IAAK,CAAEqB,IAAI,CAACO,aAAa,CAAC,CAAC,EAAG;QAC7B,OAAO,IAAI;MACZ;MACA;MACA,OAAOrB,KAAK,CAACsB,IAAI,CAAER,IAAI,CAACS,UAAW,CAAC,CAACC,KAAK,CAAEX,WAAY,CAAC;IAC1D;MACC,OAAO,IAAI;EACb;AACD;AAEA,SAAS7B,aAAaA,CAAEvB,IAAI,EAAG;EAC9B,OAAO,IAAIQ,MAAM,CAACwD,eAAe,CAChCzB,KAAK,CAACsB,IAAI,CAAE,IAAIrD,MAAM,CAACyD,QAAQ,CAAEjE,IAAK,CAAE,CACzC,CAAC,CAACK,QAAQ,CAAC,CAAC;AACb"}
|
|
@@ -4,22 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = ConvertToBlocksButton;
|
|
7
|
-
|
|
8
7
|
var _element = require("@wordpress/element");
|
|
9
|
-
|
|
10
8
|
var _data = require("@wordpress/data");
|
|
11
|
-
|
|
12
9
|
var _blockEditor = require("@wordpress/block-editor");
|
|
13
|
-
|
|
14
10
|
var _components = require("@wordpress/components");
|
|
15
|
-
|
|
16
11
|
var _blocks = require("@wordpress/blocks");
|
|
17
|
-
|
|
18
12
|
var _i18n = require("@wordpress/i18n");
|
|
19
|
-
|
|
20
13
|
/**
|
|
21
14
|
* WordPress dependencies
|
|
22
15
|
*/
|
|
16
|
+
|
|
23
17
|
function ConvertToBlocksButton({
|
|
24
18
|
clientId,
|
|
25
19
|
rawInstance
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["_data","require","_blockEditor","_components","_blocks","_i18n","ConvertToBlocksButton","clientId","rawInstance","replaceBlocks","useDispatch","blockEditorStore","_element","createElement","ToolbarButton","onClick","title","createBlock","content","rawHandler","HTML","text","__"],"sources":["@wordpress/widgets/src/blocks/legacy-widget/edit/convert-to-blocks-button.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useDispatch } from '@wordpress/data';\nimport { store as blockEditorStore } from '@wordpress/block-editor';\nimport { ToolbarButton } from '@wordpress/components';\nimport { createBlock, rawHandler } from '@wordpress/blocks';\nimport { __ } from '@wordpress/i18n';\n\nexport default function ConvertToBlocksButton( { clientId, rawInstance } ) {\n\tconst { replaceBlocks } = useDispatch( blockEditorStore );\n\n\treturn (\n\t\t<ToolbarButton\n\t\t\tonClick={ () => {\n\t\t\t\tif ( rawInstance.title ) {\n\t\t\t\t\treplaceBlocks( clientId, [\n\t\t\t\t\t\tcreateBlock( 'core/heading', {\n\t\t\t\t\t\t\tcontent: rawInstance.title,\n\t\t\t\t\t\t} ),\n\t\t\t\t\t\t...rawHandler( { HTML: rawInstance.text } ),\n\t\t\t\t\t] );\n\t\t\t\t} else {\n\t\t\t\t\treplaceBlocks(\n\t\t\t\t\t\tclientId,\n\t\t\t\t\t\trawHandler( { HTML: rawInstance.text } )\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} }\n\t\t>\n\t\t\t{ __( 'Convert to blocks' ) }\n\t\t</ToolbarButton>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AAPA;AACA;AACA;;AAOe,SAASK,qBAAqBA,CAAE;EAAEC,QAAQ;EAAEC;AAAY,CAAC,EAAG;EAC1E,MAAM;IAAEC;EAAc,CAAC,GAAG,IAAAC,iBAAW,EAAEC,kBAAiB,CAAC;EAEzD,OACC,IAAAC,QAAA,CAAAC,aAAA,EAACV,WAAA,CAAAW,aAAa;IACbC,OAAO,EAAGA,CAAA,KAAM;MACf,IAAKP,WAAW,CAACQ,KAAK,EAAG;QACxBP,aAAa,CAAEF,QAAQ,EAAE,CACxB,IAAAU,mBAAW,EAAE,cAAc,EAAE;UAC5BC,OAAO,EAAEV,WAAW,CAACQ;QACtB,CAAE,CAAC,EACH,GAAG,IAAAG,kBAAU,EAAE;UAAEC,IAAI,EAAEZ,WAAW,CAACa;QAAK,CAAE,CAAC,CAC1C,CAAC;MACJ,CAAC,MAAM;QACNZ,aAAa,CACZF,QAAQ,EACR,IAAAY,kBAAU,EAAE;UAAEC,IAAI,EAAEZ,WAAW,CAACa;QAAK,CAAE,CACxC,CAAC;MACF;IACD;EAAG,GAED,IAAAC,QAAE,EAAE,mBAAoB,CACZ,CAAC;AAElB"}
|
|
@@ -1,28 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = Form;
|
|
9
|
-
|
|
10
8
|
var _element = require("@wordpress/element");
|
|
11
|
-
|
|
12
9
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
13
|
-
|
|
14
10
|
var _data = require("@wordpress/data");
|
|
15
|
-
|
|
16
11
|
var _notices = require("@wordpress/notices");
|
|
17
|
-
|
|
18
12
|
var _i18n = require("@wordpress/i18n");
|
|
19
|
-
|
|
20
13
|
var _components = require("@wordpress/components");
|
|
21
|
-
|
|
22
14
|
var _compose = require("@wordpress/compose");
|
|
23
|
-
|
|
24
15
|
var _control = _interopRequireDefault(require("./control"));
|
|
25
|
-
|
|
26
16
|
/**
|
|
27
17
|
* External dependencies
|
|
28
18
|
*/
|
|
@@ -34,6 +24,7 @@ var _control = _interopRequireDefault(require("./control"));
|
|
|
34
24
|
/**
|
|
35
25
|
* Internal dependencies
|
|
36
26
|
*/
|
|
27
|
+
|
|
37
28
|
function Form({
|
|
38
29
|
title,
|
|
39
30
|
isVisible,
|
|
@@ -45,11 +36,12 @@ function Form({
|
|
|
45
36
|
onChangeHasPreview
|
|
46
37
|
}) {
|
|
47
38
|
const ref = (0, _element.useRef)();
|
|
48
|
-
const isMediumLargeViewport = (0, _compose.useViewportMatch)('small');
|
|
39
|
+
const isMediumLargeViewport = (0, _compose.useViewportMatch)('small');
|
|
40
|
+
|
|
41
|
+
// We only want to remount the control when the instance changes
|
|
49
42
|
// *externally*. For example, if the user performs an undo. To do this, we
|
|
50
43
|
// keep track of changes made to instance by the control itself and then
|
|
51
44
|
// ignore those.
|
|
52
|
-
|
|
53
45
|
const outgoingInstances = (0, _element.useRef)(new Set());
|
|
54
46
|
const incomingInstances = (0, _element.useRef)(new Set());
|
|
55
47
|
const {
|
|
@@ -60,27 +52,21 @@ function Form({
|
|
|
60
52
|
incomingInstances.current.delete(instance);
|
|
61
53
|
return;
|
|
62
54
|
}
|
|
63
|
-
|
|
64
55
|
const control = new _control.default({
|
|
65
56
|
id,
|
|
66
57
|
idBase,
|
|
67
58
|
instance,
|
|
68
|
-
|
|
69
59
|
onChangeInstance(nextInstance) {
|
|
70
60
|
outgoingInstances.current.add(instance);
|
|
71
61
|
incomingInstances.current.add(nextInstance);
|
|
72
62
|
onChangeInstance(nextInstance);
|
|
73
63
|
},
|
|
74
|
-
|
|
75
64
|
onChangeHasPreview,
|
|
76
|
-
|
|
77
65
|
onError(error) {
|
|
78
66
|
window.console.error(error);
|
|
79
|
-
createNotice('error', (0, _i18n.sprintf)(
|
|
80
|
-
/* translators: %s: the name of the affected block. */
|
|
67
|
+
createNotice('error', (0, _i18n.sprintf)( /* translators: %s: the name of the affected block. */
|
|
81
68
|
(0, _i18n.__)('The "%s" block was affected by errors and may not function properly. Check the developer tools for more details.'), idBase || id));
|
|
82
69
|
}
|
|
83
|
-
|
|
84
70
|
});
|
|
85
71
|
ref.current.appendChild(control.element);
|
|
86
72
|
return () => {
|
|
@@ -88,11 +74,9 @@ function Form({
|
|
|
88
74
|
outgoingInstances.current.delete(instance);
|
|
89
75
|
return;
|
|
90
76
|
}
|
|
91
|
-
|
|
92
77
|
control.destroy();
|
|
93
78
|
};
|
|
94
79
|
}, [id, idBase, instance, onChangeInstance, onChangeHasPreview, isMediumLargeViewport]);
|
|
95
|
-
|
|
96
80
|
if (isWide && isMediumLargeViewport) {
|
|
97
81
|
return (0, _element.createElement)("div", {
|
|
98
82
|
className: (0, _classnames.default)({
|
|
@@ -113,7 +97,6 @@ function Form({
|
|
|
113
97
|
hidden: !isVisible
|
|
114
98
|
})));
|
|
115
99
|
}
|
|
116
|
-
|
|
117
100
|
return (0, _element.createElement)("div", {
|
|
118
101
|
ref: ref,
|
|
119
102
|
className: "wp-block-legacy-widget__edit-form",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["_element","require","_classnames","_interopRequireDefault","_data","_notices","_i18n","_components","_compose","_control","Form","title","isVisible","id","idBase","instance","isWide","onChangeInstance","onChangeHasPreview","ref","useRef","isMediumLargeViewport","useViewportMatch","outgoingInstances","Set","incomingInstances","createNotice","useDispatch","noticesStore","useEffect","current","has","delete","control","Control","nextInstance","add","onError","error","window","console","sprintf","__","appendChild","element","destroy","createElement","className","classnames","Popover","focusOnMount","placement","offset","resize","flip","shift","hidden"],"sources":["@wordpress/widgets/src/blocks/legacy-widget/edit/form.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n/**\n * WordPress dependencies\n */\nimport { useRef, useEffect } from '@wordpress/element';\nimport { useDispatch } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { Popover } from '@wordpress/components';\nimport { useViewportMatch } from '@wordpress/compose';\n/**\n * Internal dependencies\n */\nimport Control from './control';\n\nexport default function Form( {\n\ttitle,\n\tisVisible,\n\tid,\n\tidBase,\n\tinstance,\n\tisWide,\n\tonChangeInstance,\n\tonChangeHasPreview,\n} ) {\n\tconst ref = useRef();\n\n\tconst isMediumLargeViewport = useViewportMatch( 'small' );\n\n\t// We only want to remount the control when the instance changes\n\t// *externally*. For example, if the user performs an undo. To do this, we\n\t// keep track of changes made to instance by the control itself and then\n\t// ignore those.\n\tconst outgoingInstances = useRef( new Set() );\n\tconst incomingInstances = useRef( new Set() );\n\n\tconst { createNotice } = useDispatch( noticesStore );\n\n\tuseEffect( () => {\n\t\tif ( incomingInstances.current.has( instance ) ) {\n\t\t\tincomingInstances.current.delete( instance );\n\t\t\treturn;\n\t\t}\n\n\t\tconst control = new Control( {\n\t\t\tid,\n\t\t\tidBase,\n\t\t\tinstance,\n\t\t\tonChangeInstance( nextInstance ) {\n\t\t\t\toutgoingInstances.current.add( instance );\n\t\t\t\tincomingInstances.current.add( nextInstance );\n\t\t\t\tonChangeInstance( nextInstance );\n\t\t\t},\n\t\t\tonChangeHasPreview,\n\t\t\tonError( error ) {\n\t\t\t\twindow.console.error( error );\n\t\t\t\tcreateNotice(\n\t\t\t\t\t'error',\n\t\t\t\t\tsprintf(\n\t\t\t\t\t\t/* translators: %s: the name of the affected block. */\n\t\t\t\t\t\t__(\n\t\t\t\t\t\t\t'The \"%s\" block was affected by errors and may not function properly. Check the developer tools for more details.'\n\t\t\t\t\t\t),\n\t\t\t\t\t\tidBase || id\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t},\n\t\t} );\n\n\t\tref.current.appendChild( control.element );\n\n\t\treturn () => {\n\t\t\tif ( outgoingInstances.current.has( instance ) ) {\n\t\t\t\toutgoingInstances.current.delete( instance );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcontrol.destroy();\n\t\t};\n\t}, [\n\t\tid,\n\t\tidBase,\n\t\tinstance,\n\t\tonChangeInstance,\n\t\tonChangeHasPreview,\n\t\tisMediumLargeViewport,\n\t] );\n\n\tif ( isWide && isMediumLargeViewport ) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={ classnames( {\n\t\t\t\t\t'wp-block-legacy-widget__container': isVisible,\n\t\t\t\t} ) }\n\t\t\t>\n\t\t\t\t{ isVisible && (\n\t\t\t\t\t<h3 className=\"wp-block-legacy-widget__edit-form-title\">\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</h3>\n\t\t\t\t) }\n\t\t\t\t<Popover\n\t\t\t\t\tfocusOnMount={ false }\n\t\t\t\t\tplacement=\"right\"\n\t\t\t\t\toffset={ 32 }\n\t\t\t\t\tresize={ false }\n\t\t\t\t\tflip={ false }\n\t\t\t\t\tshift\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tref={ ref }\n\t\t\t\t\t\tclassName=\"wp-block-legacy-widget__edit-form\"\n\t\t\t\t\t\thidden={ ! isVisible }\n\t\t\t\t\t></div>\n\t\t\t\t</Popover>\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tref={ ref }\n\t\t\tclassName=\"wp-block-legacy-widget__edit-form\"\n\t\t\thidden={ ! isVisible }\n\t\t>\n\t\t\t<h3 className=\"wp-block-legacy-widget__edit-form-title\">\n\t\t\t\t{ title }\n\t\t\t</h3>\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
|