@thebes/cadmea 1.3.0 → 1.5.0

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.
@@ -1,6 +1,6 @@
1
1
  import { createComponent, escape, ssr, ssrAttribute } from "solid-js/web";
2
2
  import { createMutation, createQuery, useQueryClient } from "@tanstack/solid-query";
3
- import { For, Index, Show, Suspense, createEffect, createSignal, lazy } from "solid-js";
3
+ import { For, Index, Show, Suspense, createEffect, createSignal, lazy, onCleanup } from "solid-js";
4
4
  import { createForm } from "@tanstack/solid-form";
5
5
  import { validateDocument } from "@thebes/cadmus/cms";
6
6
  import { Link, useBlocker } from "@tanstack/solid-router";
@@ -19,15 +19,19 @@ var _tmpl$$4 = ["<p class=\"text-sm text-error\" role=\"alert\">", "</p>"], _tmp
19
19
  ">",
20
20
  "</button>"
21
21
  ], _tmpl$6$1 = [
22
+ "<span class=\"text-base-content/60 self-center px-1 text-xs\" aria-live=\"polite\">",
23
+ "",
24
+ "</span>"
25
+ ], _tmpl$7$1 = [
22
26
  "<form class=\"flex flex-col gap-4\">",
23
27
  "",
24
28
  "<div class=\"bg-base-100 sticky bottom-0 flex gap-2 border-t py-3\">",
25
29
  "</div></form>"
26
- ], _tmpl$7$1 = [
30
+ ], _tmpl$8$1 = [
27
31
  "<fieldset class=\"border-base-300 rounded-box border p-4\"><legend class=\"px-2 text-sm font-semibold\">",
28
32
  "</legend>",
29
33
  "</fieldset>"
30
- ], _tmpl$8$1 = ["<div class=\"grid grid-cols-1 gap-4 md:grid-cols-2\">", "</div>"], _tmpl$9$1 = "<span class=\"text-error\"> *</span>", _tmpl$0$1 = ["<p class=\"text-base-content/60 mb-1 text-xs\">", "</p>"], _tmpl$1$1 = ["<p class=\"text-error mt-1 text-sm\" role=\"alert\">", "</p>"], _tmpl$10$1 = [
34
+ ], _tmpl$9$1 = ["<div class=\"grid grid-cols-1 gap-4 md:grid-cols-2\">", "</div>"], _tmpl$0$1 = "<span class=\"text-error\"> *</span>", _tmpl$1$1 = ["<p class=\"text-base-content/60 mb-1 text-xs\">", "</p>"], _tmpl$10$1 = ["<p class=\"text-error mt-1 text-sm\" role=\"alert\">", "</p>"], _tmpl$11$1 = [
31
35
  "<div class=\"",
32
36
  "\"><label class=\"label\"",
33
37
  ">",
@@ -36,37 +40,37 @@ var _tmpl$$4 = ["<p class=\"text-sm text-error\" role=\"alert\">", "</p>"], _tmp
36
40
  "",
37
41
  "",
38
42
  "</div>"
39
- ], _tmpl$11$1 = [
43
+ ], _tmpl$12$1 = [
40
44
  "<input",
41
45
  " class=\"input\" type=\"text\"",
42
46
  "",
43
47
  ">"
44
- ], _tmpl$12$1 = [
48
+ ], _tmpl$13$1 = [
45
49
  "<select",
46
50
  " class=\"select\"",
47
51
  "",
48
52
  "",
49
53
  ">",
50
54
  "</select>"
51
- ], _tmpl$13$1 = [
55
+ ], _tmpl$14$1 = [
52
56
  "<option",
53
57
  ">",
54
58
  "</option>"
55
- ], _tmpl$14$1 = [
59
+ ], _tmpl$15$1 = [
56
60
  "<input",
57
61
  " class=\"input\" type=\"number\"",
58
62
  "",
59
63
  ">"
60
- ], _tmpl$15$1 = [
64
+ ], _tmpl$16 = [
61
65
  "<input",
62
66
  " class=\"input\" type=\"text\" readonly",
63
67
  ">"
64
- ], _tmpl$16 = [
68
+ ], _tmpl$17 = [
65
69
  "<input",
66
70
  " class=\"checkbox\" type=\"checkbox\"",
67
71
  "",
68
72
  ">"
69
- ], _tmpl$17 = ["<p class=\"text-sm opacity-70 break-all\">", "</p>"], _tmpl$18 = ["<p class=\"text-sm text-error\">", "</p>"], _tmpl$19 = [
73
+ ], _tmpl$18 = ["<p class=\"text-sm opacity-70 break-all\">", "</p>"], _tmpl$19 = ["<p class=\"text-sm text-error\">", "</p>"], _tmpl$20 = [
70
74
  "<div class=\"flex flex-col gap-2\">",
71
75
  "<input",
72
76
  " class=\"file-input\" type=\"file\"",
@@ -74,11 +78,11 @@ var _tmpl$$4 = ["<p class=\"text-sm text-error\" role=\"alert\">", "</p>"], _tmp
74
78
  ">",
75
79
  "",
76
80
  "</div>"
77
- ], _tmpl$20 = ["<div class=\"mb-1 flex flex-wrap gap-1\">", "</div>"], _tmpl$21 = "<button type=\"button\" aria-label=\"Clear\" class=\"absolute top-2 right-2 cursor-pointer opacity-60\">×</button>", _tmpl$22 = [
81
+ ], _tmpl$21 = ["<div class=\"mb-1 flex flex-wrap gap-1\">", "</div>"], _tmpl$22 = "<button type=\"button\" aria-label=\"Clear\" class=\"absolute top-2 right-2 cursor-pointer opacity-60\">×</button>", _tmpl$23 = [
78
82
  "<div",
79
83
  " role=\"listbox\" class=\"bg-base-100 border-base-300 rounded-box absolute z-10 mt-1 flex max-h-56 w-full flex-col overflow-auto border p-1 shadow\">",
80
84
  "</div>"
81
- ], _tmpl$23 = [
85
+ ], _tmpl$24 = [
82
86
  "<div class=\"relative\">",
83
87
  "<input",
84
88
  " type=\"text\" role=\"combobox\"",
@@ -87,27 +91,27 @@ var _tmpl$$4 = ["<p class=\"text-sm text-error\" role=\"alert\">", "</p>"], _tmp
87
91
  ">",
88
92
  "",
89
93
  "</div>"
90
- ], _tmpl$24 = [
94
+ ], _tmpl$25 = [
91
95
  "<span class=\"badge badge-primary gap-1\">",
92
96
  "<button type=\"button\" aria-label=\"",
93
97
  "\" class=\"cursor-pointer\">×</button></span>"
94
- ], _tmpl$25 = [
98
+ ], _tmpl$26 = [
95
99
  "<button type=\"button\" role=\"option\"",
96
100
  " class=\"",
97
101
  "\">",
98
102
  "</button>"
99
- ], _tmpl$26 = ["<div role=\"menu\" class=\"bg-base-100 border-base-300 rounded-box absolute z-10 mt-1 flex flex-col border p-1 shadow\">", "</div>"], _tmpl$27 = [
103
+ ], _tmpl$27 = ["<div role=\"menu\" class=\"bg-base-100 border-base-300 rounded-box absolute z-10 mt-1 flex flex-col border p-1 shadow\">", "</div>"], _tmpl$28 = [
100
104
  "<div class=\"relative self-start\"><button type=\"button\" class=\"btn btn-outline btn-sm\" aria-haspopup=\"menu\"",
101
105
  ">Add block</button>",
102
106
  "</div>"
103
- ], _tmpl$28 = [
107
+ ], _tmpl$29 = [
104
108
  "<div class=\"form-control md:col-span-2\"><div class=\"label font-medium\">",
105
109
  "",
106
110
  "</div>",
107
111
  "<div class=\"flex flex-col gap-3\">",
108
112
  "",
109
113
  "</div></div>"
110
- ], _tmpl$29 = ["<span class=\"text-base-content/60 truncate text-sm\">", "</span>"], _tmpl$30 = ["<div class=\"flex flex-col gap-2\">", "</div>"], _tmpl$31 = [
114
+ ], _tmpl$30 = ["<span class=\"text-base-content/60 truncate text-sm\">", "</span>"], _tmpl$31 = ["<div class=\"flex flex-col gap-2\">", "</div>"], _tmpl$32 = [
111
115
  "<div class=\"card bg-base-200 flex flex-col gap-2 p-3\"><div class=\"flex items-center gap-2\"><button type=\"button\" class=\"btn btn-ghost btn-sm gap-2\"",
112
116
  "><span aria-hidden=\"true\">",
113
117
  "</span><span class=\"font-semibold\">",
@@ -116,7 +120,7 @@ var _tmpl$$4 = ["<p class=\"text-sm text-error\" role=\"alert\">", "</p>"], _tmp
116
120
  ">↑</button><button type=\"button\" class=\"btn btn-ghost btn-xs\" aria-label=\"Move down\"",
117
121
  ">↓</button><button type=\"button\" class=\"btn btn-ghost btn-xs\" aria-label=\"Duplicate\">⧉</button><button type=\"button\" class=\"btn btn-ghost btn-xs text-error\" aria-label=\"Remove\">Remove</button></div></div>",
118
122
  "</div>"
119
- ], _tmpl$32 = ["<button type=\"button\" class=\"btn btn-outline btn-sm self-start\">Add ", "</button>"], _tmpl$33 = ["<i", " aria-hidden=\"true\"></i>"], _tmpl$34 = [
123
+ ], _tmpl$33 = ["<button type=\"button\" class=\"btn btn-outline btn-sm self-start\">Add ", "</button>"], _tmpl$34 = ["<i", " aria-hidden=\"true\"></i>"], _tmpl$35 = [
120
124
  "<button type=\"button\" role=\"menuitem\" class=\"flex items-center gap-2 rounded px-3 py-2 text-left\">",
121
125
  "",
122
126
  "</button>"
@@ -168,6 +172,7 @@ function CollectionEdit(props) {
168
172
  const isDefaultValue = form.useStore((s) => s.isDefaultValue);
169
173
  createEffect(() => props.onDirtyChange?.(!isDefaultValue()));
170
174
  const formValues = form.useStore((s) => s.values);
175
+ createEffect(() => props.onValuesChange?.(editablePayload(formValues())));
171
176
  function editablePayload(value) {
172
177
  return Object.fromEntries(Object.entries(value).filter(([key]) => props.config.fields[key]?.type !== "date"));
173
178
  }
@@ -184,7 +189,29 @@ function CollectionEdit(props) {
184
189
  };
185
190
  const fieldGroups = groupFields(editableFields(props.config));
186
191
  const versioned = () => props.config.versions?.drafts && props.draftActions;
187
- return ssr(_tmpl$6$1, escape(createComponent(Show, {
192
+ const [autosaveStatus, setAutosaveStatus] = createSignal("idle");
193
+ let autosaveTimer;
194
+ createEffect(() => {
195
+ const dirty = !isDefaultValue();
196
+ const values = formValues();
197
+ if (!versioned() || !props.draftActions?.autosave) return;
198
+ if (!dirty) {
199
+ setAutosaveStatus("idle");
200
+ return;
201
+ }
202
+ clearTimeout(autosaveTimer);
203
+ autosaveTimer = setTimeout(async () => {
204
+ setAutosaveStatus("saving");
205
+ try {
206
+ await props.draftActions?.onSaveDraft(editablePayload(values));
207
+ setAutosaveStatus("saved");
208
+ } catch {
209
+ setAutosaveStatus("idle");
210
+ }
211
+ }, props.draftActions?.autosaveMs ?? 1500);
212
+ });
213
+ onCleanup(() => clearTimeout(autosaveTimer));
214
+ return ssr(_tmpl$7$1, escape(createComponent(Show, {
188
215
  get when() {
189
216
  return props.error;
190
217
  },
@@ -208,7 +235,7 @@ function CollectionEdit(props) {
208
235
  });
209
236
  },
210
237
  get children() {
211
- return ssr(_tmpl$7$1, escape(group.name), escape(createComponent(FieldsGrid, {
238
+ return ssr(_tmpl$8$1, escape(group.name), escape(createComponent(FieldsGrid, {
212
239
  form,
213
240
  ctx,
214
241
  get fields() {
@@ -283,13 +310,31 @@ function CollectionEdit(props) {
283
310
  }
284
311
  })));
285
312
  }
313
+ }),
314
+ createComponent(Show, {
315
+ get when() {
316
+ return props.draftActions?.autosave;
317
+ },
318
+ get children() {
319
+ return ssr(_tmpl$6$1, escape(createComponent(Show, {
320
+ get when() {
321
+ return autosaveStatus() === "saving";
322
+ },
323
+ children: "Saving…"
324
+ })), escape(createComponent(Show, {
325
+ get when() {
326
+ return autosaveStatus() === "saved";
327
+ },
328
+ children: "Saved"
329
+ })));
330
+ }
286
331
  })
287
332
  ];
288
333
  }
289
334
  })));
290
335
  }
291
336
  function FieldsGrid(props) {
292
- return ssr(_tmpl$8$1, escape(createComponent(For, {
337
+ return ssr(_tmpl$9$1, escape(createComponent(For, {
293
338
  get each() {
294
339
  return props.fields;
295
340
  },
@@ -308,26 +353,26 @@ function renderField(form, ctx, name, field, label) {
308
353
  const spanClass = field.admin?.width === "half" ? "md:col-span-1" : "md:col-span-2";
309
354
  return createComponent(form.Field, {
310
355
  name,
311
- children: (fieldApi) => ssr(_tmpl$10$1, `form-control ${escape(spanClass, true)}`, ssrAttribute("for", escape(name, true), false), escape(label), escape(createComponent(Show, {
356
+ children: (fieldApi) => ssr(_tmpl$11$1, `form-control ${escape(spanClass, true)}`, ssrAttribute("for", escape(name, true), false), escape(label), escape(createComponent(Show, {
312
357
  get when() {
313
358
  return field.required;
314
359
  },
315
360
  get children() {
316
- return ssr(_tmpl$9$1);
361
+ return ssr(_tmpl$0$1);
317
362
  }
318
363
  })), escape(createComponent(Show, {
319
364
  get when() {
320
365
  return field.admin?.description;
321
366
  },
322
367
  get children() {
323
- return ssr(_tmpl$0$1, escape(field.admin?.description));
368
+ return ssr(_tmpl$1$1, escape(field.admin?.description));
324
369
  }
325
370
  })), escape(renderControl(ctx, name, field, fieldApi)), escape(createComponent(Show, {
326
371
  get when() {
327
372
  return (fieldApi().state.meta.errors?.length ?? 0) > 0;
328
373
  },
329
374
  get children() {
330
- return ssr(_tmpl$1$1, escape(fieldApi().state.meta.errors.filter(Boolean).join(", ")));
375
+ return ssr(_tmpl$10$1, escape(fieldApi().state.meta.errors.filter(Boolean).join(", ")));
331
376
  }
332
377
  })))
333
378
  });
@@ -347,16 +392,16 @@ function renderControl(ctx, name, field, fieldApi) {
347
392
  const readOnly = field.admin?.readOnly;
348
393
  const change = (v) => fieldApi().handleChange(v);
349
394
  switch (field.type) {
350
- case "text": return ssr(_tmpl$11$1, ssrAttribute("id", escape(name, true), false), ssrAttribute("placeholder", escape(field.admin?.placeholder, true), false) + ssrAttribute("readonly", escape(readOnly, true), false) + ssrAttribute("value", escape(fieldApi().state.value ?? "", true), false), ssrAttribute("required", field.required, true));
351
- case "select": return ssr(_tmpl$12$1, ssrAttribute("id", escape(name, true), false), ssrAttribute("value", escape(fieldApi().state.value ?? "", true), false), ssrAttribute("required", field.required, true), ssrAttribute("disabled", readOnly, true), escape(createComponent(For, {
395
+ case "text": return ssr(_tmpl$12$1, ssrAttribute("id", escape(name, true), false), ssrAttribute("placeholder", escape(field.admin?.placeholder, true), false) + ssrAttribute("readonly", escape(readOnly, true), false) + ssrAttribute("value", escape(fieldApi().state.value ?? "", true), false), ssrAttribute("required", field.required, true));
396
+ case "select": return ssr(_tmpl$13$1, ssrAttribute("id", escape(name, true), false), ssrAttribute("value", escape(fieldApi().state.value ?? "", true), false), ssrAttribute("required", field.required, true), ssrAttribute("disabled", readOnly, true), escape(createComponent(For, {
352
397
  get each() {
353
398
  return field.options;
354
399
  },
355
- children: (option) => ssr(_tmpl$13$1, ssrAttribute("value", escape(option, true), false), escape(option))
400
+ children: (option) => ssr(_tmpl$14$1, ssrAttribute("value", escape(option, true), false), escape(option))
356
401
  })));
357
- case "number": return ssr(_tmpl$14$1, ssrAttribute("id", escape(name, true), false), ssrAttribute("placeholder", escape(field.admin?.placeholder, true), false) + ssrAttribute("readonly", escape(readOnly, true), false) + ssrAttribute("value", escape(fieldApi().state.value ?? "", true), false), ssrAttribute("required", field.required, true));
358
- case "date": return ssr(_tmpl$15$1, ssrAttribute("id", escape(name, true), false), ssrAttribute("value", escape(formatDateValue(fieldApi().state.value), true), false));
359
- case "checkbox": return ssr(_tmpl$16, ssrAttribute("id", escape(name, true), false), ssrAttribute("disabled", readOnly, true), ssrAttribute("checked", fieldApi().state.value ?? false, true));
402
+ case "number": return ssr(_tmpl$15$1, ssrAttribute("id", escape(name, true), false), ssrAttribute("placeholder", escape(field.admin?.placeholder, true), false) + ssrAttribute("readonly", escape(readOnly, true), false) + ssrAttribute("value", escape(fieldApi().state.value ?? "", true), false), ssrAttribute("required", field.required, true));
403
+ case "date": return ssr(_tmpl$16, ssrAttribute("id", escape(name, true), false), ssrAttribute("value", escape(formatDateValue(fieldApi().state.value), true), false));
404
+ case "checkbox": return ssr(_tmpl$17, ssrAttribute("id", escape(name, true), false), ssrAttribute("disabled", readOnly, true), ssrAttribute("checked", fieldApi().state.value ?? false, true));
360
405
  case "upload": return createComponent(UploadControl, {
361
406
  name,
362
407
  field,
@@ -395,12 +440,12 @@ function UploadControl(props) {
395
440
  const [uploading, setUploading] = createSignal(false);
396
441
  const [uploadError, setUploadError] = createSignal();
397
442
  const value = () => props.fieldApi().state.value;
398
- return ssr(_tmpl$19, escape(createComponent(Show, {
443
+ return ssr(_tmpl$20, escape(createComponent(Show, {
399
444
  get when() {
400
445
  return value();
401
446
  },
402
447
  get children() {
403
- return ssr(_tmpl$17, escape(value()));
448
+ return ssr(_tmpl$18, escape(value()));
404
449
  }
405
450
  })), ssrAttribute("id", escape(props.name, true), false), ssrAttribute("required", props.field.required && !value(), true), ssrAttribute("disabled", uploading() || props.field.admin?.readOnly, true), escape(createComponent(Show, {
406
451
  get when() {
@@ -414,7 +459,7 @@ function UploadControl(props) {
414
459
  return uploadError();
415
460
  },
416
461
  get children() {
417
- return ssr(_tmpl$18, escape(uploadError()));
462
+ return ssr(_tmpl$19, escape(uploadError()));
418
463
  }
419
464
  })));
420
465
  }
@@ -436,16 +481,16 @@ function RelationshipField(props) {
436
481
  return props.options.filter((o) => o.label.toLowerCase().includes(q) && (!isMulti() || !selectedIds().includes(o.id)));
437
482
  };
438
483
  const singleLabel = () => selectedOptions()[0]?.label ?? "";
439
- return ssr(_tmpl$23, escape(createComponent(Show, {
484
+ return ssr(_tmpl$24, escape(createComponent(Show, {
440
485
  get when() {
441
486
  return isMulti() && selectedOptions().length > 0;
442
487
  },
443
488
  get children() {
444
- return ssr(_tmpl$20, escape(createComponent(For, {
489
+ return ssr(_tmpl$21, escape(createComponent(For, {
445
490
  get each() {
446
491
  return selectedOptions();
447
492
  },
448
- children: (option) => ssr(_tmpl$24, escape(option.label), `Remove ${escape(option.label, true)}`)
493
+ children: (option) => ssr(_tmpl$25, escape(option.label), `Remove ${escape(option.label, true)}`)
449
494
  })));
450
495
  }
451
496
  })), ssrAttribute("id", escape(props.name, true), false), ssrAttribute("aria-expanded", escape(open(), true), false) + ssrAttribute("aria-controls", escape(listId, true), false), ssrAttribute("required", props.field.required && selectedIds().length === 0, true), ssrAttribute("disabled", props.field.admin?.readOnly, true) + ssrAttribute("placeholder", escape(props.field.admin?.placeholder ?? "Search…", true), false) + ssrAttribute("value", open() || isMulti() ? escape(query(), true) : escape(singleLabel(), true), false), escape(createComponent(Show, {
@@ -453,18 +498,18 @@ function RelationshipField(props) {
453
498
  return !isMulti() && value() != null && !props.field.required;
454
499
  },
455
500
  get children() {
456
- return ssr(_tmpl$21);
501
+ return ssr(_tmpl$22);
457
502
  }
458
503
  })), escape(createComponent(Show, {
459
504
  get when() {
460
505
  return open() && filtered().length > 0;
461
506
  },
462
507
  get children() {
463
- return ssr(_tmpl$22, ssrAttribute("id", escape(listId, true), false), escape(createComponent(For, {
508
+ return ssr(_tmpl$23, ssrAttribute("id", escape(listId, true), false), escape(createComponent(For, {
464
509
  get each() {
465
510
  return filtered();
466
511
  },
467
- children: (option, i) => ssr(_tmpl$25, ssrAttribute("aria-selected", escape(selectedIds().includes(option.id), true), false), `rounded px-3 py-2 text-left ${i() === active() ? "bg-base-200" : ""}`, escape(option.label))
512
+ children: (option, i) => ssr(_tmpl$26, ssrAttribute("aria-selected", escape(selectedIds().includes(option.id), true), false), `rounded px-3 py-2 text-left ${i() === active() ? "bg-base-200" : ""}`, escape(option.label))
468
513
  })));
469
514
  }
470
515
  })));
@@ -506,19 +551,19 @@ function BlockEditor(props) {
506
551
  }
507
552
  return "";
508
553
  }
509
- return ssr(_tmpl$28, escape(props.label), escape(createComponent(Show, {
554
+ return ssr(_tmpl$29, escape(props.label), escape(createComponent(Show, {
510
555
  get when() {
511
556
  return props.field.required;
512
557
  },
513
558
  get children() {
514
- return ssr(_tmpl$9$1);
559
+ return ssr(_tmpl$0$1);
515
560
  }
516
561
  })), escape(createComponent(Show, {
517
562
  get when() {
518
563
  return props.field.admin?.description;
519
564
  },
520
565
  get children() {
521
- return ssr(_tmpl$0$1, escape(props.field.admin?.description));
566
+ return ssr(_tmpl$1$1, escape(props.field.admin?.description));
522
567
  }
523
568
  })), escape(createComponent(Index, {
524
569
  get each() {
@@ -526,19 +571,19 @@ function BlockEditor(props) {
526
571
  },
527
572
  children: (item, index) => {
528
573
  const isCollapsed = () => collapsed().has(index);
529
- return ssr(_tmpl$31, ssrAttribute("aria-expanded", !isCollapsed(), false), isCollapsed() ? "▸" : "▾", escape(blockTitle(item())), escape(createComponent(Show, {
574
+ return ssr(_tmpl$32, ssrAttribute("aria-expanded", !isCollapsed(), false), isCollapsed() ? "▸" : "▾", escape(blockTitle(item())), escape(createComponent(Show, {
530
575
  get when() {
531
576
  return isCollapsed() && blockSummary(item());
532
577
  },
533
578
  get children() {
534
- return ssr(_tmpl$29, escape(blockSummary(item())));
579
+ return ssr(_tmpl$30, escape(blockSummary(item())));
535
580
  }
536
581
  })), ssrAttribute("disabled", index === 0, true), ssrAttribute("disabled", index === items().length - 1, true), escape(createComponent(Show, {
537
582
  get when() {
538
583
  return !isCollapsed();
539
584
  },
540
585
  get children() {
541
- return ssr(_tmpl$30, escape(createComponent(For, {
586
+ return ssr(_tmpl$31, escape(createComponent(For, {
542
587
  get each() {
543
588
  return fieldsForItem(props.field, item());
544
589
  },
@@ -552,22 +597,22 @@ function BlockEditor(props) {
552
597
  return disc && variants.length > 0;
553
598
  },
554
599
  get fallback() {
555
- return ssr(_tmpl$32, escape(props.label));
600
+ return ssr(_tmpl$33, escape(props.label));
556
601
  },
557
602
  get children() {
558
- return ssr(_tmpl$27, ssrAttribute("aria-expanded", escape(menuOpen(), true), false), escape(createComponent(Show, {
603
+ return ssr(_tmpl$28, ssrAttribute("aria-expanded", escape(menuOpen(), true), false), escape(createComponent(Show, {
559
604
  get when() {
560
605
  return menuOpen();
561
606
  },
562
607
  get children() {
563
- return ssr(_tmpl$26, escape(createComponent(For, {
608
+ return ssr(_tmpl$27, escape(createComponent(For, {
564
609
  each: variants,
565
- children: (variant) => ssr(_tmpl$34, escape(createComponent(Show, {
610
+ children: (variant) => ssr(_tmpl$35, escape(createComponent(Show, {
566
611
  get when() {
567
612
  return disc?.variantsAdmin?.[variant]?.icon;
568
613
  },
569
614
  get children() {
570
- return ssr(_tmpl$33, ssrAttribute("class", escape(disc?.variantsAdmin?.[variant]?.icon, true), false));
615
+ return ssr(_tmpl$34, ssrAttribute("class", escape(disc?.variantsAdmin?.[variant]?.icon, true), false));
571
616
  }
572
617
  })), escape(variantLabel(disc, variant)))
573
618
  })));