@firecms/core 3.5.1 → 3.5.2-canary.09e1281

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.
Files changed (56) hide show
  1. package/dist/components/EntityCollectionView/CollectionCountBadge.d.ts +8 -0
  2. package/dist/components/EntityCollectionView/CollectionPathTitle.d.ts +24 -0
  3. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +5 -0
  4. package/dist/components/EntityCollectionView/EntityIdHeaderWidget.d.ts +12 -0
  5. package/dist/components/EntityCollectionView/utils.d.ts +3 -3
  6. package/dist/components/HomePage/HomePageDnD.d.ts +4 -2
  7. package/dist/{de-CBOjCvsy.js → de-CUF9f7S-.js} +2 -1
  8. package/dist/{de-CBOjCvsy.js.map → de-CUF9f7S-.js.map} +1 -1
  9. package/dist/{editor-BSo_aS1I.js → editor-WZytSO_1.js} +172 -137
  10. package/dist/editor-WZytSO_1.js.map +1 -0
  11. package/dist/{fr-DRfttcG0.js → fr-DmkMX6hp.js} +2 -1
  12. package/dist/{fr-DRfttcG0.js.map → fr-DmkMX6hp.js.map} +1 -1
  13. package/dist/{hi-DwieOZNf.js → hi-BKuaMr7w.js} +2 -1
  14. package/dist/{hi-DwieOZNf.js.map → hi-BKuaMr7w.js.map} +1 -1
  15. package/dist/index.es.js +787 -638
  16. package/dist/index.es.js.map +1 -1
  17. package/dist/index.umd.js +946 -756
  18. package/dist/index.umd.js.map +1 -1
  19. package/dist/internal/useLeavePageConfirmation.d.ts +11 -0
  20. package/dist/{it-l2KXtx9n.js → it-BwQflFGz.js} +2 -1
  21. package/dist/{it-l2KXtx9n.js.map → it-BwQflFGz.js.map} +1 -1
  22. package/dist/{pl-DPZrdKhi.js → pl-BPsAvZvc.js} +2 -1
  23. package/dist/{pl-DPZrdKhi.js.map → pl-BPsAvZvc.js.map} +1 -1
  24. package/dist/{pt-BoHpabw1.js → pt-D5q7OQp1.js} +2 -1
  25. package/dist/{pt-BoHpabw1.js.map → pt-D5q7OQp1.js.map} +1 -1
  26. package/dist/types/side_dialogs_controller.d.ts +4 -2
  27. package/dist/types/translations.d.ts +1 -0
  28. package/package.json +3 -3
  29. package/src/components/EntityCollectionView/CollectionCountBadge.tsx +17 -0
  30. package/src/components/EntityCollectionView/CollectionPathTitle.tsx +68 -0
  31. package/src/components/EntityCollectionView/EntityCollectionView.tsx +12 -111
  32. package/src/components/EntityCollectionView/EntityIdHeaderWidget.tsx +124 -0
  33. package/src/components/EntityCollectionView/utils.ts +7 -7
  34. package/src/components/HomePage/DefaultHomePage.tsx +2 -0
  35. package/src/components/HomePage/HomePageDnD.tsx +12 -4
  36. package/src/components/common/default_entity_actions.tsx +2 -1
  37. package/src/core/DefaultAppBar.tsx +12 -9
  38. package/src/core/EntityEditView.tsx +26 -1
  39. package/src/core/SideDialogs.tsx +6 -13
  40. package/src/editor/selectors/link-selector.tsx +37 -12
  41. package/src/hooks/useReferenceDialog.tsx +2 -2
  42. package/src/internal/useBuildSideDialogsController.tsx +44 -2
  43. package/src/internal/useLeavePageConfirmation.ts +25 -0
  44. package/src/locales/de.ts +1 -0
  45. package/src/locales/en.ts +1 -0
  46. package/src/locales/es.ts +1 -0
  47. package/src/locales/fr.ts +1 -0
  48. package/src/locales/hi.ts +1 -0
  49. package/src/locales/it.ts +1 -0
  50. package/src/locales/pl.ts +1 -0
  51. package/src/locales/pt.ts +1 -0
  52. package/src/types/side_dialogs_controller.tsx +4 -2
  53. package/src/types/translations.ts +1 -0
  54. package/dist/editor-BSo_aS1I.js.map +0 -1
  55. package/dist/internal/useUnsavedChangesDialog.d.ts +0 -12
  56. package/src/internal/useUnsavedChangesDialog.tsx +0 -142
package/dist/index.es.js CHANGED
@@ -4805,7 +4805,7 @@ function getLoadedDateFnsLocale(locale) {
4805
4805
  }
4806
4806
  function useDateFnsLocale(locale) {
4807
4807
  const $ = c(7);
4808
- const [, forceUpdate] = useReducer(_temp$A, 0);
4808
+ const [, forceUpdate] = useReducer(_temp$C, 0);
4809
4809
  let t0;
4810
4810
  if ($[0] !== forceUpdate || $[1] !== locale) {
4811
4811
  t0 = () => {
@@ -4848,7 +4848,7 @@ function useDateFnsLocale(locale) {
4848
4848
  }
4849
4849
  return t2;
4850
4850
  }
4851
- function _temp$A(count) {
4851
+ function _temp$C(count) {
4852
4852
  return count + 1;
4853
4853
  }
4854
4854
  const CONTAINER_FULL_WIDTH = "100vw";
@@ -5065,7 +5065,7 @@ function useCollectionFetch(t0) {
5065
5065
  }
5066
5066
  setDataLoading(false);
5067
5067
  setDataLoadingError(void 0);
5068
- setData(entities.map(_temp$z));
5068
+ setData(entities.map(_temp$B));
5069
5069
  setNoMoreToLoad(!itemCount || entities.length < itemCount);
5070
5070
  };
5071
5071
  const onError = (error) => {
@@ -5100,7 +5100,7 @@ function useCollectionFetch(t0) {
5100
5100
  orderBy: sortByProperty,
5101
5101
  order: currentSort
5102
5102
  }).then(onEntitiesUpdate).catch(onError);
5103
- return _temp2$g;
5103
+ return _temp2$h;
5104
5104
  }
5105
5105
  };
5106
5106
  $[8] = collection;
@@ -5149,9 +5149,9 @@ function useCollectionFetch(t0) {
5149
5149
  }
5150
5150
  return t6;
5151
5151
  }
5152
- function _temp2$g() {
5152
+ function _temp2$h() {
5153
5153
  }
5154
- function _temp$z(e_1) {
5154
+ function _temp$B(e_1) {
5155
5155
  return {
5156
5156
  ...e_1
5157
5157
  };
@@ -5364,7 +5364,7 @@ function useEntityFetch(t0) {
5364
5364
  setEntity(CACHE[entityCacheKey(path, entityId)]);
5365
5365
  setDataLoading(false);
5366
5366
  setDataLoadingError(void 0);
5367
- return _temp$y;
5367
+ return _temp$A;
5368
5368
  } else {
5369
5369
  if (entityId && path && collection) {
5370
5370
  if (dataSource.listenEntity) {
@@ -5385,7 +5385,7 @@ function useEntityFetch(t0) {
5385
5385
  databaseId,
5386
5386
  collection
5387
5387
  }).then(onEntityUpdate).catch(onError);
5388
- return _temp2$f;
5388
+ return _temp2$g;
5389
5389
  }
5390
5390
  } else {
5391
5391
  onEntityUpdate(void 0);
@@ -5433,9 +5433,9 @@ function useEntityFetch(t0) {
5433
5433
  }
5434
5434
  function _temp3$6() {
5435
5435
  }
5436
- function _temp2$f() {
5436
+ function _temp2$g() {
5437
5437
  }
5438
- function _temp$y() {
5438
+ function _temp$A() {
5439
5439
  }
5440
5440
  async function saveEntityWithCallbacks({
5441
5441
  collection,
@@ -6090,7 +6090,7 @@ function ImagePreview(t0) {
6090
6090
  }
6091
6091
  let t9;
6092
6092
  if ($[19] !== url) {
6093
- t9 = /* @__PURE__ */ jsx(Tooltip, { title: "Open image in new tab", side: "bottom", children: /* @__PURE__ */ jsx(IconButton, { className: "invisible group-hover:visible", variant: "filled", component: "a", href: url, rel: "noopener noreferrer", target: "_blank", size: "smallest", onClick: _temp$x, children: t8 }) });
6093
+ t9 = /* @__PURE__ */ jsx(Tooltip, { title: "Open image in new tab", side: "bottom", children: /* @__PURE__ */ jsx(IconButton, { className: "invisible group-hover:visible", variant: "filled", component: "a", href: url, rel: "noopener noreferrer", target: "_blank", size: "smallest", onClick: _temp$z, children: t8 }) });
6094
6094
  $[19] = url;
6095
6095
  $[20] = t9;
6096
6096
  } else {
@@ -6124,7 +6124,7 @@ function ImagePreview(t0) {
6124
6124
  }
6125
6125
  return t11;
6126
6126
  }
6127
- function _temp$x(e_0) {
6127
+ function _temp$z(e_0) {
6128
6128
  return e_0.stopPropagation();
6129
6129
  }
6130
6130
  const FIRECMS_NS$1 = "firecms_core";
@@ -6191,7 +6191,7 @@ function UrlComponentPreview(t0) {
6191
6191
  }
6192
6192
  let t3;
6193
6193
  if ($[2] !== url) {
6194
- t3 = /* @__PURE__ */ jsxs("a", { className: "flex gap-4 break-words items-center font-medium text-primary visited:text-primary dark:visited:text-primary dark:text-primary", href: url, rel: "noopener noreferrer", onMouseDown: _temp$w, target: "_blank", children: [
6194
+ t3 = /* @__PURE__ */ jsxs("a", { className: "flex gap-4 break-words items-center font-medium text-primary visited:text-primary dark:visited:text-primary dark:text-primary", href: url, rel: "noopener noreferrer", onMouseDown: _temp$y, target: "_blank", children: [
6195
6195
  t2,
6196
6196
  url
6197
6197
  ] });
@@ -6293,7 +6293,7 @@ function UrlComponentPreview(t0) {
6293
6293
  }
6294
6294
  let t7;
6295
6295
  if ($[27] !== t4 || $[28] !== t6 || $[29] !== url) {
6296
- t7 = /* @__PURE__ */ jsxs("a", { href: url, rel: "noopener noreferrer", target: "_blank", onClick: _temp2$e, className: "flex flex-col items-center justify-center", style: t4, children: [
6296
+ t7 = /* @__PURE__ */ jsxs("a", { href: url, rel: "noopener noreferrer", target: "_blank", onClick: _temp2$f, className: "flex flex-col items-center justify-center", style: t4, children: [
6297
6297
  t5,
6298
6298
  t6
6299
6299
  ] });
@@ -6318,10 +6318,10 @@ function UrlComponentPreview(t0) {
6318
6318
  }
6319
6319
  }
6320
6320
  }
6321
- function _temp2$e(e_0) {
6321
+ function _temp2$f(e_0) {
6322
6322
  return e_0.stopPropagation();
6323
6323
  }
6324
- function _temp$w(e) {
6324
+ function _temp$y(e) {
6325
6325
  e.preventDefault();
6326
6326
  }
6327
6327
  function VideoPreview(t0) {
@@ -6455,7 +6455,7 @@ function SkeletonPropertyComponent(t0) {
6455
6455
  if (Array.isArray(arrayProperty.of)) {
6456
6456
  let t1;
6457
6457
  if ($[6] !== arrayProperty.of) {
6458
- t1 = arrayProperty.of.map(_temp$v);
6458
+ t1 = arrayProperty.of.map(_temp$x);
6459
6459
  $[6] = arrayProperty.of;
6460
6460
  $[7] = t1;
6461
6461
  } else {
@@ -6593,7 +6593,7 @@ function SkeletonPropertyComponent(t0) {
6593
6593
  }
6594
6594
  return content || null;
6595
6595
  }
6596
- function _temp$v(p, i) {
6596
+ function _temp$x(p, i) {
6597
6597
  return renderGenericArrayCell(p, i);
6598
6598
  }
6599
6599
  function renderMap(property, size) {
@@ -7784,7 +7784,7 @@ function DatePreview(t0) {
7784
7784
  timeZoneName: "short"
7785
7785
  });
7786
7786
  const parts = tzFormatter.formatToParts(date);
7787
- t32 = parts.find(_temp$u)?.value ?? "";
7787
+ t32 = parts.find(_temp$w)?.value ?? "";
7788
7788
  $[6] = date;
7789
7789
  $[7] = timezone;
7790
7790
  $[8] = t32;
@@ -7855,7 +7855,7 @@ function DatePreview(t0) {
7855
7855
  }
7856
7856
  return t3;
7857
7857
  }
7858
- function _temp$u(p) {
7858
+ function _temp$w(p) {
7859
7859
  return p.type === "timeZoneName";
7860
7860
  }
7861
7861
  function MapPropertyPreview(t0) {
@@ -7950,7 +7950,7 @@ function KeyValuePreview(t0) {
7950
7950
  }
7951
7951
  let t1;
7952
7952
  if ($[1] !== value) {
7953
- t1 = Object.entries(value).map(_temp$t);
7953
+ t1 = Object.entries(value).map(_temp$v);
7954
7954
  $[1] = value;
7955
7955
  $[2] = t1;
7956
7956
  } else {
@@ -7966,7 +7966,7 @@ function KeyValuePreview(t0) {
7966
7966
  }
7967
7967
  return t2;
7968
7968
  }
7969
- function _temp$t(t0) {
7969
+ function _temp$v(t0) {
7970
7970
  const [key, childValue] = t0;
7971
7971
  const isTimestampObj = childValue && typeof childValue === "object" && (childValue instanceof Date || "_seconds" in childValue && "_nanoseconds" in childValue && typeof childValue._seconds === "number" && typeof childValue._nanoseconds === "number" || "seconds" in childValue && "nanoseconds" in childValue && typeof childValue.seconds === "number" && typeof childValue.nanoseconds === "number");
7972
7972
  const isScalar = childValue && (typeof childValue !== "object" || isTimestampObj);
@@ -9289,7 +9289,7 @@ function VirtualTableSelect(props) {
9289
9289
  console.trace("onChange");
9290
9290
  if (valueType === "number") {
9291
9291
  if (multiple) {
9292
- const newValue = updatedValue.map(_temp$s);
9292
+ const newValue = updatedValue.map(_temp$u);
9293
9293
  updateValue(newValue);
9294
9294
  } else {
9295
9295
  updateValue(parseFloat(updatedValue));
@@ -9342,7 +9342,7 @@ function VirtualTableSelect(props) {
9342
9342
  const handleOpenChange = t4;
9343
9343
  let t5;
9344
9344
  if ($[11] !== disabled || $[12] !== enumValues || $[13] !== internalValue || $[14] !== multiple || $[15] !== onChange || $[16] !== renderValue || $[17] !== small || $[18] !== validValue) {
9345
- t5 = multiple ? /* @__PURE__ */ jsx(MultiSelect, { inputRef: ref, className: "w-full h-full p-0 bg-transparent outline-none", position: "item-aligned", disabled, includeClear: false, useChips: false, value: validValue ? internalValue.map(_temp2$d) : [], onValueChange: onChange, onOpenChange: handleOpenChange, children: enumValues?.map((enumConfig) => /* @__PURE__ */ jsx(MultiSelectItem, { value: String(enumConfig.id), children: /* @__PURE__ */ jsx(EnumValuesChip, { enumKey: enumConfig.id, enumValues, size: small ? "small" : "medium" }) }, enumConfig.id)) }) : /* @__PURE__ */ jsx(Select, { inputRef: ref, size: "large", fullWidth: true, className: "w-full h-full p-0 bg-transparent outline-none [&_button]:ring-0 [&_button]:ring-offset-0", inputClassName: "ring-0 ring-offset-0 focus:ring-0 focus-visible:ring-0 outline-none focus:outline-none focus-visible:outline-none focus-visible:ring-offset-0", position: "item-aligned", disabled, padding: false, value: validValue ? internalValue?.toString() : "", onValueChange: onChange, onOpenChange: handleOpenChange, renderValue, children: enumValues?.map((enumConfig_0) => /* @__PURE__ */ jsx(SelectItem, { value: String(enumConfig_0.id), children: /* @__PURE__ */ jsx(EnumValuesChip, { enumKey: enumConfig_0.id, enumValues, size: small ? "small" : "medium" }) }, enumConfig_0.id)) });
9345
+ t5 = multiple ? /* @__PURE__ */ jsx(MultiSelect, { inputRef: ref, className: "w-full h-full p-0 bg-transparent outline-none", position: "item-aligned", disabled, includeClear: false, useChips: false, value: validValue ? internalValue.map(_temp2$e) : [], onValueChange: onChange, onOpenChange: handleOpenChange, children: enumValues?.map((enumConfig) => /* @__PURE__ */ jsx(MultiSelectItem, { value: String(enumConfig.id), children: /* @__PURE__ */ jsx(EnumValuesChip, { enumKey: enumConfig.id, enumValues, size: small ? "small" : "medium" }) }, enumConfig.id)) }) : /* @__PURE__ */ jsx(Select, { inputRef: ref, size: "large", fullWidth: true, className: "w-full h-full p-0 bg-transparent outline-none [&_button]:ring-0 [&_button]:ring-offset-0", inputClassName: "ring-0 ring-offset-0 focus:ring-0 focus-visible:ring-0 outline-none focus:outline-none focus-visible:outline-none focus-visible:ring-offset-0", position: "item-aligned", disabled, padding: false, value: validValue ? internalValue?.toString() : "", onValueChange: onChange, onOpenChange: handleOpenChange, renderValue, children: enumValues?.map((enumConfig_0) => /* @__PURE__ */ jsx(SelectItem, { value: String(enumConfig_0.id), children: /* @__PURE__ */ jsx(EnumValuesChip, { enumKey: enumConfig_0.id, enumValues, size: small ? "small" : "medium" }) }, enumConfig_0.id)) });
9346
9346
  $[11] = disabled;
9347
9347
  $[12] = enumValues;
9348
9348
  $[13] = internalValue;
@@ -9357,10 +9357,10 @@ function VirtualTableSelect(props) {
9357
9357
  }
9358
9358
  return t5;
9359
9359
  }
9360
- function _temp2$d(v_0) {
9360
+ function _temp2$e(v_0) {
9361
9361
  return v_0.toString();
9362
9362
  }
9363
- function _temp$s(v) {
9363
+ function _temp$u(v) {
9364
9364
  return parseFloat(v);
9365
9365
  }
9366
9366
  function VirtualTableNumberInput(props) {
@@ -9556,7 +9556,7 @@ function VirtualTableUserSelect(props) {
9556
9556
  const renderValue = t3;
9557
9557
  let t4;
9558
9558
  if ($[7] !== disabled || $[8] !== internalValue || $[9] !== multiple || $[10] !== onChange || $[11] !== renderValue || $[12] !== users || $[13] !== validValue) {
9559
- t4 = multiple ? /* @__PURE__ */ jsx(MultiSelect, { inputRef: ref, className: "w-full h-full p-0 bg-transparent", position: "item-aligned", disabled, includeClear: false, useChips: false, value: validValue ? internalValue : [], onValueChange: onChange, children: users?.map(_temp$r) }) : /* @__PURE__ */ jsx(Select, { inputRef: ref, size: "large", fullWidth: true, className: "w-full h-full p-0 bg-transparent", position: "item-aligned", disabled, padding: false, value: validValue ? internalValue : "", onValueChange: onChange, renderValue, children: users?.map(_temp2$c) });
9559
+ t4 = multiple ? /* @__PURE__ */ jsx(MultiSelect, { inputRef: ref, className: "w-full h-full p-0 bg-transparent", position: "item-aligned", disabled, includeClear: false, useChips: false, value: validValue ? internalValue : [], onValueChange: onChange, children: users?.map(_temp$t) }) : /* @__PURE__ */ jsx(Select, { inputRef: ref, size: "large", fullWidth: true, className: "w-full h-full p-0 bg-transparent", position: "item-aligned", disabled, padding: false, value: validValue ? internalValue : "", onValueChange: onChange, renderValue, children: users?.map(_temp2$d) });
9560
9560
  $[7] = disabled;
9561
9561
  $[8] = internalValue;
9562
9562
  $[9] = multiple;
@@ -9570,10 +9570,10 @@ function VirtualTableUserSelect(props) {
9570
9570
  }
9571
9571
  return t4;
9572
9572
  }
9573
- function _temp2$c(user_1) {
9573
+ function _temp2$d(user_1) {
9574
9574
  return /* @__PURE__ */ jsx(SelectItem, { value: user_1.uid, children: /* @__PURE__ */ jsx(UserDisplay, { user: user_1 }) }, user_1.uid);
9575
9575
  }
9576
- function _temp$r(user_0) {
9576
+ function _temp$t(user_0) {
9577
9577
  return /* @__PURE__ */ jsx(MultiSelectItem, { value: user_0.uid, children: /* @__PURE__ */ jsx(UserDisplay, { user: user_0 }) }, user_0.uid);
9578
9578
  }
9579
9579
  class ErrorBoundary extends React__default.Component {
@@ -9821,7 +9821,7 @@ function useStorageUploadController(t0) {
9821
9821
  newValue = [...internalValue];
9822
9822
  newValue = removeDuplicates(newValue);
9823
9823
  setInternalValue(newValue);
9824
- const fieldValue = newValue.filter(_temp$q).map(_temp2$b);
9824
+ const fieldValue = newValue.filter(_temp$s).map(_temp2$c);
9825
9825
  if (multipleFilesSupported) {
9826
9826
  onChange(fieldValue);
9827
9827
  } else {
@@ -9939,10 +9939,10 @@ function useStorageUploadController(t0) {
9939
9939
  }
9940
9940
  return t11;
9941
9941
  }
9942
- function _temp2$b(e_0) {
9942
+ function _temp2$c(e_0) {
9943
9943
  return e_0.storagePathOrDownloadUrl;
9944
9944
  }
9945
- function _temp$q(e) {
9945
+ function _temp$s(e) {
9946
9946
  return !!e.storagePathOrDownloadUrl;
9947
9947
  }
9948
9948
  function getInternalInitialValue(multipleFilesSupported, value, metadata, size) {
@@ -10233,7 +10233,7 @@ function StorageUpload$1(t0) {
10233
10233
  const snackbarContext = useSnackbarController();
10234
10234
  let t1;
10235
10235
  if ($[0] !== storage.acceptedFiles) {
10236
- t1 = storage.acceptedFiles ? storage.acceptedFiles.map(_temp$p).reduce(_temp2$a, {}) : void 0;
10236
+ t1 = storage.acceptedFiles ? storage.acceptedFiles.map(_temp$r).reduce(_temp2$b, {}) : void 0;
10237
10237
  $[0] = storage.acceptedFiles;
10238
10238
  $[1] = t1;
10239
10239
  } else {
@@ -10456,13 +10456,13 @@ function StorageUpload$1(t0) {
10456
10456
  }
10457
10457
  return t20;
10458
10458
  }
10459
- function _temp2$a(a, b) {
10459
+ function _temp2$b(a, b) {
10460
10460
  return {
10461
10461
  ...a,
10462
10462
  ...b
10463
10463
  };
10464
10464
  }
10465
- function _temp$p(e) {
10465
+ function _temp$r(e) {
10466
10466
  return {
10467
10467
  [e]: []
10468
10468
  };
@@ -10572,7 +10572,7 @@ const TableReferenceFieldInternal = React__default.memo(function TableReferenceF
10572
10572
  let t1;
10573
10573
  if ($[2] !== updateValue) {
10574
10574
  t1 = (entities) => {
10575
- updateValue(entities.filter(Boolean).map(_temp$o));
10575
+ updateValue(entities.filter(Boolean).map(_temp$q));
10576
10576
  };
10577
10577
  $[2] = updateValue;
10578
10578
  $[3] = t1;
@@ -10582,7 +10582,7 @@ const TableReferenceFieldInternal = React__default.memo(function TableReferenceF
10582
10582
  const onMultipleEntitiesSelected = t1;
10583
10583
  let t2;
10584
10584
  if ($[4] !== internalValue) {
10585
- t2 = internalValue ? Array.isArray(internalValue) ? internalValue.map(_temp2$9) : internalValue.id ? [internalValue.id] : [] : [];
10585
+ t2 = internalValue ? Array.isArray(internalValue) ? internalValue.map(_temp2$a) : internalValue.id ? [internalValue.id] : [] : [];
10586
10586
  $[4] = internalValue;
10587
10587
  $[5] = t2;
10588
10588
  } else {
@@ -10744,10 +10744,10 @@ const TableReferenceFieldInternal = React__default.memo(function TableReferenceF
10744
10744
  }
10745
10745
  return t10;
10746
10746
  }, equal);
10747
- function _temp$o(e) {
10747
+ function _temp$q(e) {
10748
10748
  return getReferenceFrom(e);
10749
10749
  }
10750
- function _temp2$9(ref) {
10750
+ function _temp2$a(ref) {
10751
10751
  return ref.id;
10752
10752
  }
10753
10753
  yup.addMethod(yup.array, "uniqueInArray", function(mapper = (a) => a, message) {
@@ -12402,7 +12402,7 @@ function StorageItemPreview(t0) {
12402
12402
  }
12403
12403
  let t5;
12404
12404
  if ($[15] !== placeholder) {
12405
- t5 = placeholder && /* @__PURE__ */ jsx("div", { onClick: _temp$n, className: "flex flex-col items-center justify-center w-full h-full", children: /* @__PURE__ */ jsx(DescriptionIcon, { className: "text-surface-700 dark:text-surface-300" }) });
12405
+ t5 = placeholder && /* @__PURE__ */ jsx("div", { onClick: _temp$p, className: "flex flex-col items-center justify-center w-full h-full", children: /* @__PURE__ */ jsx(DescriptionIcon, { className: "text-surface-700 dark:text-surface-300" }) });
12406
12406
  $[15] = placeholder;
12407
12407
  $[16] = t5;
12408
12408
  } else {
@@ -12425,7 +12425,7 @@ function StorageItemPreview(t0) {
12425
12425
  }
12426
12426
  return t6;
12427
12427
  }
12428
- function _temp$n(e) {
12428
+ function _temp$p(e) {
12429
12429
  return e.stopPropagation();
12430
12430
  }
12431
12431
  const dropZoneClasses = "box-border relative pt-[2px] items-center border border-transparent min-h-[254px] outline-none rounded-md duration-200 ease-[cubic-bezier(0.4,0,0.2,1)] focus:border-primary-solid";
@@ -12653,7 +12653,7 @@ function SortableStorageItem(t0) {
12653
12653
  t4 = $[7];
12654
12654
  }
12655
12655
  const style = t4;
12656
- const getImageSizeNumber = _temp$m;
12656
+ const getImageSizeNumber = _temp$o;
12657
12657
  let child;
12658
12658
  if (entry.storagePathOrDownloadUrl) {
12659
12659
  const t52 = `storage_preview_${entry.storagePathOrDownloadUrl}`;
@@ -12728,7 +12728,7 @@ function SortableStorageItem(t0) {
12728
12728
  }
12729
12729
  return t6;
12730
12730
  }
12731
- function _temp$m(previewSize) {
12731
+ function _temp$o(previewSize) {
12732
12732
  switch (previewSize) {
12733
12733
  case "small": {
12734
12734
  return 40;
@@ -12765,7 +12765,7 @@ function FileDropComponent(t0) {
12765
12765
  const snackbarContext = useSnackbarController();
12766
12766
  let t1;
12767
12767
  if ($[0] !== storage.acceptedFiles) {
12768
- t1 = storage.acceptedFiles ? storage.acceptedFiles.reduce(_temp2$8, {}) : void 0;
12768
+ t1 = storage.acceptedFiles ? storage.acceptedFiles.reduce(_temp2$9, {}) : void 0;
12769
12769
  $[0] = storage.acceptedFiles;
12770
12770
  $[1] = t1;
12771
12771
  } else {
@@ -12958,7 +12958,7 @@ function FileDropComponent(t0) {
12958
12958
  }
12959
12959
  return t21;
12960
12960
  }
12961
- function _temp2$8(acc, ext) {
12961
+ function _temp2$9(acc, ext) {
12962
12962
  return {
12963
12963
  ...acc,
12964
12964
  [ext]: []
@@ -14501,7 +14501,7 @@ function MapFieldBinding(t0) {
14501
14501
  } else {
14502
14502
  t42 = $[20];
14503
14503
  }
14504
- t3 = Object.entries(mapProperties).filter(_temp$l).map(t42);
14504
+ t3 = Object.entries(mapProperties).filter(_temp$n).map(t42);
14505
14505
  $[6] = autoFocus;
14506
14506
  $[7] = context;
14507
14507
  $[8] = disabled;
@@ -14580,7 +14580,7 @@ function MapFieldBinding(t0) {
14580
14580
  }
14581
14581
  return t10;
14582
14582
  }
14583
- function _temp$l(t0) {
14583
+ function _temp$n(t0) {
14584
14584
  const [, property_0] = t0;
14585
14585
  return !isHidden(property_0);
14586
14586
  }
@@ -15954,7 +15954,7 @@ function BlockEntry(t0) {
15954
15954
  const property = t4;
15955
15955
  let t5;
15956
15956
  if ($[9] !== properties) {
15957
- t5 = Object.entries(properties).map(_temp$k);
15957
+ t5 = Object.entries(properties).map(_temp$m);
15958
15958
  $[9] = properties;
15959
15959
  $[10] = t5;
15960
15960
  } else {
@@ -16047,7 +16047,7 @@ function BlockEntry(t0) {
16047
16047
  }
16048
16048
  return t11;
16049
16049
  }
16050
- function _temp$k(t0) {
16050
+ function _temp$m(t0) {
16051
16051
  const [key, property_0] = t0;
16052
16052
  return {
16053
16053
  id: key,
@@ -16100,7 +16100,7 @@ function CircularProgressCenter(t0) {
16100
16100
  }
16101
16101
  return t3;
16102
16102
  }
16103
- const FireCMSEditor$1 = lazyEager(() => import("./editor-BSo_aS1I.js"), "FireCMSEditor");
16103
+ const FireCMSEditor$1 = lazyEager(() => import("./editor-WZytSO_1.js"), "FireCMSEditor");
16104
16104
  function MarkdownEditorFieldBinding$1({
16105
16105
  property,
16106
16106
  propertyKey,
@@ -19380,7 +19380,7 @@ const SafeLinkRenderer = (t0) => {
19380
19380
  let t1;
19381
19381
  if ($[0] !== text) {
19382
19382
  const urlRegex = /https?:\/\/[^\s]+/g;
19383
- t1 = text.replace(urlRegex, _temp$j);
19383
+ t1 = text.replace(urlRegex, _temp$l);
19384
19384
  $[0] = text;
19385
19385
  $[1] = t1;
19386
19386
  } else {
@@ -19399,7 +19399,7 @@ const SafeLinkRenderer = (t0) => {
19399
19399
  }
19400
19400
  return t2;
19401
19401
  };
19402
- function _temp$j(url) {
19402
+ function _temp$l(url) {
19403
19403
  return `<a href="${url}" class="underline" target="_blank">Link</a><br/>`;
19404
19404
  }
19405
19405
  const operationLabels$2 = {
@@ -19712,7 +19712,7 @@ function StringNumberFilterField(t0) {
19712
19712
  }
19713
19713
  let t9;
19714
19714
  if ($[24] !== possibleOperations) {
19715
- t9 = possibleOperations.map(_temp2$7);
19715
+ t9 = possibleOperations.map(_temp2$8);
19716
19716
  $[24] = possibleOperations;
19717
19717
  $[25] = t9;
19718
19718
  } else {
@@ -19720,7 +19720,7 @@ function StringNumberFilterField(t0) {
19720
19720
  }
19721
19721
  let t10;
19722
19722
  if ($[26] !== operation || $[27] !== t8 || $[28] !== t9) {
19723
- t10 = /* @__PURE__ */ jsx("div", { className: "w-[100px]", children: /* @__PURE__ */ jsx(Select, { value: operation, size: "medium", fullWidth: true, position: "item-aligned", onValueChange: t8, renderValue: _temp$i, children: t9 }) });
19723
+ t10 = /* @__PURE__ */ jsx("div", { className: "w-[100px]", children: /* @__PURE__ */ jsx(Select, { value: operation, size: "medium", fullWidth: true, position: "item-aligned", onValueChange: t8, renderValue: _temp$k, children: t9 }) });
19724
19724
  $[26] = operation;
19725
19725
  $[27] = t8;
19726
19726
  $[28] = t9;
@@ -19822,10 +19822,10 @@ function _temp4$2(v) {
19822
19822
  function _temp3$4(e_1) {
19823
19823
  return String(e_1);
19824
19824
  }
19825
- function _temp2$7(op_2) {
19825
+ function _temp2$8(op_2) {
19826
19826
  return /* @__PURE__ */ jsx(SelectItem, { value: op_2, children: operationLabels$1[op_2] }, op_2);
19827
19827
  }
19828
- function _temp$i(op_1) {
19828
+ function _temp$k(op_1) {
19829
19829
  return operationLabels$1[op_1];
19830
19830
  }
19831
19831
  function BooleanFilterField(t0) {
@@ -19988,7 +19988,7 @@ function DateTimeFilterField(t0) {
19988
19988
  }
19989
19989
  let t7;
19990
19990
  if ($[15] !== possibleOperations) {
19991
- t7 = possibleOperations.map(_temp2$6);
19991
+ t7 = possibleOperations.map(_temp2$7);
19992
19992
  $[15] = possibleOperations;
19993
19993
  $[16] = t7;
19994
19994
  } else {
@@ -19996,7 +19996,7 @@ function DateTimeFilterField(t0) {
19996
19996
  }
19997
19997
  let t8;
19998
19998
  if ($[17] !== operation || $[18] !== t6 || $[19] !== t7) {
19999
- t8 = /* @__PURE__ */ jsx("div", { className: "w-[100px]", children: /* @__PURE__ */ jsx(Select, { value: operation, size: "medium", fullWidth: true, onValueChange: t6, renderValue: _temp$h, children: t7 }) });
19999
+ t8 = /* @__PURE__ */ jsx("div", { className: "w-[100px]", children: /* @__PURE__ */ jsx(Select, { value: operation, size: "medium", fullWidth: true, onValueChange: t6, renderValue: _temp$j, children: t7 }) });
20000
20000
  $[17] = operation;
20001
20001
  $[18] = t6;
20002
20002
  $[19] = t7;
@@ -20043,10 +20043,10 @@ function DateTimeFilterField(t0) {
20043
20043
  }
20044
20044
  return t12;
20045
20045
  }
20046
- function _temp2$6(op_2) {
20046
+ function _temp2$7(op_2) {
20047
20047
  return /* @__PURE__ */ jsx(SelectItem, { value: op_2, children: operationLabels[op_2] }, op_2);
20048
20048
  }
20049
- function _temp$h(op_1) {
20049
+ function _temp$j(op_1) {
20050
20050
  return operationLabels[op_1];
20051
20051
  }
20052
20052
  const SelectableTable = function SelectableTable2({
@@ -20809,7 +20809,7 @@ function useTableSearchHelper(t0) {
20809
20809
  parentCollectionIds
20810
20810
  };
20811
20811
  const searchBlocked = customizationController.plugins?.find((p) => p.collectionView?.blockSearch?.(props));
20812
- const addTextSearchClickListener = Boolean(dataSource?.initTextSearch) || customizationController.plugins?.find(_temp$g);
20812
+ const addTextSearchClickListener = Boolean(dataSource?.initTextSearch) || customizationController.plugins?.find(_temp$i);
20813
20813
  if (addTextSearchClickListener) {
20814
20814
  onTextSearchClick = addTextSearchClickListener ? () => {
20815
20815
  setTextSearchLoading(true);
@@ -20905,7 +20905,7 @@ function useTableSearchHelper(t0) {
20905
20905
  }
20906
20906
  return t3;
20907
20907
  }
20908
- function _temp$g(p_0) {
20908
+ function _temp$i(p_0) {
20909
20909
  return Boolean(p_0.collectionView?.onTextSearchClick);
20910
20910
  }
20911
20911
  function DeleteEntityDialog({
@@ -21072,20 +21072,20 @@ function removeLocalStorageItem(key) {
21072
21072
  } catch {
21073
21073
  }
21074
21074
  }
21075
- function addRecentId(collectionId, id) {
21076
- const recentIds = getRecentIds(collectionId);
21075
+ function addRecentId(key, id) {
21076
+ const recentIds = getRecentIds(key);
21077
21077
  const newRecentIds = [id, ...recentIds.filter((i) => i !== id)];
21078
21078
  if (newRecentIds.length > 5) {
21079
21079
  newRecentIds.pop();
21080
21080
  }
21081
- saveSearchedIdsLocally(collectionId, newRecentIds);
21081
+ saveSearchedIdsLocally(key, newRecentIds);
21082
21082
  return newRecentIds;
21083
21083
  }
21084
- function saveSearchedIdsLocally(collectionId, ids) {
21085
- setLocalStorageItem("recent_id_searches::" + collectionId, JSON.stringify(ids));
21084
+ function saveSearchedIdsLocally(key, ids) {
21085
+ setLocalStorageItem("recent_id_searches::" + key, JSON.stringify(ids));
21086
21086
  }
21087
- function getRecentIds(collectionId) {
21088
- return getLocalStorageJSON("recent_id_searches::" + collectionId, []);
21087
+ function getRecentIds(key) {
21088
+ return getLocalStorageJSON("recent_id_searches::" + key, []);
21089
21089
  }
21090
21090
  const editEntityAction = {
21091
21091
  icon: /* @__PURE__ */ jsx(EditIcon, { size: "small" }),
@@ -21115,7 +21115,7 @@ const editEntityAction = {
21115
21115
  entityId: entity.id
21116
21116
  });
21117
21117
  if (collection) {
21118
- addRecentId(collection.id, entity.id);
21118
+ addRecentId(fullIdPath ?? fullPath ?? collection.id, entity.id);
21119
21119
  }
21120
21120
  const path = collection?.collectionGroup ? entity.path : fullPath ?? collection?.path ?? entity.path;
21121
21121
  const resolvedPathSegments = collection?.collectionGroup ? entity.pathSegments : pathSegments ?? entity.pathSegments;
@@ -21568,7 +21568,7 @@ function FavouritesView(t0) {
21568
21568
  T0 = Collapse;
21569
21569
  t4 = favouriteCollections.length > 0;
21570
21570
  t2 = "flex flex-row flex-wrap gap-2 pb-2 min-h-[32px]";
21571
- t3 = favouriteCollections.map(_temp$f);
21571
+ t3 = favouriteCollections.map(_temp$h);
21572
21572
  $[2] = navigationController;
21573
21573
  $[3] = t1;
21574
21574
  $[4] = T0;
@@ -21602,7 +21602,7 @@ function FavouritesView(t0) {
21602
21602
  }
21603
21603
  return t6;
21604
21604
  }
21605
- function _temp$f(entry_0) {
21605
+ function _temp$h(entry_0) {
21606
21606
  return /* @__PURE__ */ jsx(NavigationChip, { entry: entry_0 }, entry_0.path);
21607
21607
  }
21608
21608
  const scrollsMap = {};
@@ -21839,7 +21839,7 @@ const NavigationCard = React__default.memo(function NavigationCard2(t0) {
21839
21839
  }
21840
21840
  let t4;
21841
21841
  if ($[4] !== actions) {
21842
- t4 = /* @__PURE__ */ jsx("div", { className: "flex items-center gap-0.5", onClick: _temp$e, children: actions });
21842
+ t4 = /* @__PURE__ */ jsx("div", { className: "flex items-center gap-0.5", onClick: _temp$g, children: actions });
21843
21843
  $[4] = actions;
21844
21844
  $[5] = t4;
21845
21845
  } else {
@@ -21926,7 +21926,7 @@ const NavigationCard = React__default.memo(function NavigationCard2(t0) {
21926
21926
  }
21927
21927
  return t12;
21928
21928
  });
21929
- function _temp$e(event) {
21929
+ function _temp$g(event) {
21930
21930
  event.preventDefault();
21931
21931
  event.stopPropagation();
21932
21932
  }
@@ -22162,21 +22162,24 @@ const cloneItemsForDnd = (items) => items.map((g) => ({
22162
22162
  entries: g.entries.map(cloneSerializableNavigationEntry)
22163
22163
  }));
22164
22164
  function SortableNavigationCard(t0) {
22165
- const $ = c(17);
22165
+ const $ = c(18);
22166
22166
  const {
22167
22167
  entry,
22168
- onClick
22168
+ onClick,
22169
+ disabled
22169
22170
  } = t0;
22170
22171
  let t1;
22171
- if ($[0] !== entry.url) {
22172
+ if ($[0] !== disabled || $[1] !== entry.url) {
22172
22173
  t1 = {
22173
22174
  id: entry.url,
22174
- animateLayoutChanges
22175
+ animateLayoutChanges,
22176
+ disabled
22175
22177
  };
22176
- $[0] = entry.url;
22177
- $[1] = t1;
22178
+ $[0] = disabled;
22179
+ $[1] = entry.url;
22180
+ $[2] = t1;
22178
22181
  } else {
22179
- t1 = $[1];
22182
+ t1 = $[2];
22180
22183
  }
22181
22184
  const {
22182
22185
  setNodeRef,
@@ -22187,101 +22190,104 @@ function SortableNavigationCard(t0) {
22187
22190
  isDragging
22188
22191
  } = useSortable(t1);
22189
22192
  let t2;
22190
- if ($[2] !== transform) {
22193
+ if ($[3] !== transform) {
22191
22194
  t2 = transform ? CSS.Transform.toString(transform) : void 0;
22192
- $[2] = transform;
22193
- $[3] = t2;
22195
+ $[3] = transform;
22196
+ $[4] = t2;
22194
22197
  } else {
22195
- t2 = $[3];
22198
+ t2 = $[4];
22196
22199
  }
22197
22200
  const t3 = isDragging ? 0 : 1;
22198
22201
  let t4;
22199
- if ($[4] !== t2 || $[5] !== t3 || $[6] !== transition) {
22202
+ if ($[5] !== t2 || $[6] !== t3 || $[7] !== transition) {
22200
22203
  t4 = {
22201
22204
  transform: t2,
22202
22205
  transition,
22203
22206
  opacity: t3
22204
22207
  };
22205
- $[4] = t2;
22206
- $[5] = t3;
22207
- $[6] = transition;
22208
- $[7] = t4;
22208
+ $[5] = t2;
22209
+ $[6] = t3;
22210
+ $[7] = transition;
22211
+ $[8] = t4;
22209
22212
  } else {
22210
- t4 = $[7];
22213
+ t4 = $[8];
22211
22214
  }
22212
22215
  const style = t4;
22213
22216
  let t5;
22214
- if ($[8] !== entry || $[9] !== onClick) {
22217
+ if ($[9] !== entry || $[10] !== onClick) {
22215
22218
  t5 = /* @__PURE__ */ jsx(NavigationCardBinding, { ...entry, onClick });
22216
- $[8] = entry;
22217
- $[9] = onClick;
22218
- $[10] = t5;
22219
+ $[9] = entry;
22220
+ $[10] = onClick;
22221
+ $[11] = t5;
22219
22222
  } else {
22220
- t5 = $[10];
22223
+ t5 = $[11];
22221
22224
  }
22222
22225
  let t6;
22223
- if ($[11] !== attributes || $[12] !== listeners2 || $[13] !== setNodeRef || $[14] !== style || $[15] !== t5) {
22226
+ if ($[12] !== attributes || $[13] !== listeners2 || $[14] !== setNodeRef || $[15] !== style || $[16] !== t5) {
22224
22227
  t6 = /* @__PURE__ */ jsx("div", { ref: setNodeRef, style, ...attributes, ...listeners2, children: t5 });
22225
- $[11] = attributes;
22226
- $[12] = listeners2;
22227
- $[13] = setNodeRef;
22228
- $[14] = style;
22229
- $[15] = t5;
22230
- $[16] = t6;
22228
+ $[12] = attributes;
22229
+ $[13] = listeners2;
22230
+ $[14] = setNodeRef;
22231
+ $[15] = style;
22232
+ $[16] = t5;
22233
+ $[17] = t6;
22231
22234
  } else {
22232
- t6 = $[16];
22235
+ t6 = $[17];
22233
22236
  }
22234
22237
  return t6;
22235
22238
  }
22236
22239
  function NavigationGroupDroppable(t0) {
22237
- const $ = c(11);
22240
+ const $ = c(12);
22238
22241
  const {
22239
22242
  id,
22240
22243
  itemIds,
22241
22244
  children,
22242
- isPotentialCardDropTarget: t1
22245
+ isPotentialCardDropTarget: t1,
22246
+ disabled
22243
22247
  } = t0;
22244
22248
  const isPotentialCardDropTarget = t1 === void 0 ? false : t1;
22245
22249
  let t2;
22246
- if ($[0] !== id) {
22250
+ if ($[0] !== disabled || $[1] !== id) {
22247
22251
  t2 = {
22248
- id
22252
+ id,
22253
+ disabled
22249
22254
  };
22250
- $[0] = id;
22251
- $[1] = t2;
22255
+ $[0] = disabled;
22256
+ $[1] = id;
22257
+ $[2] = t2;
22252
22258
  } else {
22253
- t2 = $[1];
22259
+ t2 = $[2];
22254
22260
  }
22255
22261
  const {
22256
22262
  setNodeRef
22257
22263
  } = useDroppable(t2);
22258
22264
  const t3 = isPotentialCardDropTarget ? "p-2 bg-surface-accent-200 dark:bg-surface-accent-800 rounded-lg" : void 0;
22259
22265
  let t4;
22260
- if ($[2] !== t3) {
22266
+ if ($[3] !== t3) {
22261
22267
  t4 = cls(t3, "transition-all duration-200 ease-in-out");
22262
- $[2] = t3;
22263
- $[3] = t4;
22268
+ $[3] = t3;
22269
+ $[4] = t4;
22264
22270
  } else {
22265
- t4 = $[3];
22271
+ t4 = $[4];
22266
22272
  }
22267
22273
  let t5;
22268
- if ($[4] !== children || $[5] !== itemIds) {
22274
+ if ($[5] !== children || $[6] !== itemIds) {
22269
22275
  t5 = /* @__PURE__ */ jsx(SortableContext, { items: itemIds, strategy: rectSortingStrategy, children });
22270
- $[4] = children;
22271
- $[5] = itemIds;
22272
- $[6] = t5;
22276
+ $[5] = children;
22277
+ $[6] = itemIds;
22278
+ $[7] = t5;
22273
22279
  } else {
22274
- t5 = $[6];
22280
+ t5 = $[7];
22275
22281
  }
22276
22282
  let t6;
22277
- if ($[7] !== setNodeRef || $[8] !== t4 || $[9] !== t5) {
22283
+ if ($[8] !== setNodeRef || $[9] !== t4 || $[10] !== t5) {
22278
22284
  t6 = /* @__PURE__ */ jsx("div", { ref: setNodeRef, className: t4, children: t5 });
22279
- $[7] = setNodeRef;
22280
- $[8] = t4;
22281
- $[9] = t5;
22282
- $[10] = t6;
22285
+ $[8] = setNodeRef;
22286
+ $[9] = t4;
22287
+ $[10] = t5;
22288
+ $[11] = t6;
22283
22289
  } else {
22284
- t6 = $[10];
22290
+ t6 = $[11];
22285
22291
  }
22286
22292
  return t6;
22287
22293
  }
@@ -23266,8 +23272,8 @@ function DefaultHomePage({
23266
23272
  return /* @__PURE__ */ jsx(SortableNavigationGroup, { groupName: groupKey, disabled: dndDisabled, children: /* @__PURE__ */ jsx(NavigationGroup, { group: groupKey === DEFAULT_GROUP_KEY ? void 0 : groupKey, minimised: draggingGroupId === groupKey && !isDraggingCardOnly, isPotentialCardDropTarget: isDraggingCardOnly, dndDisabled, onEditGroup: () => {
23267
23273
  if (dndDisabled) return;
23268
23274
  setDialogOpenForGroup(groupKey);
23269
- }, collapsed: isGroupCollapsed(groupKey), onToggleCollapsed: () => toggleGroupCollapsed(groupKey), children: /* @__PURE__ */ jsx(NavigationGroupDroppable, { id: groupKey, itemIds: entriesInGroup.map((e_4) => e_4.url), isPotentialCardDropTarget: isDraggingCardOnly, children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 ", children: [
23270
- entriesInGroup.map((entry) => /* @__PURE__ */ jsx(SortableNavigationCard, { entry, onClick: () => {
23275
+ }, collapsed: isGroupCollapsed(groupKey), onToggleCollapsed: () => toggleGroupCollapsed(groupKey), children: /* @__PURE__ */ jsx(NavigationGroupDroppable, { id: groupKey, itemIds: entriesInGroup.map((e_4) => e_4.url), isPotentialCardDropTarget: isDraggingCardOnly, disabled: dndDisabled, children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 ", children: [
23276
+ entriesInGroup.map((entry) => /* @__PURE__ */ jsx(SortableNavigationCard, { entry, disabled: dndDisabled, onClick: () => {
23271
23277
  let event = "unmapped_event";
23272
23278
  if (entry.type === "collection") event = "home_navigate_to_collection";
23273
23279
  else if (entry.type === "view") event = "home_navigate_to_view";
@@ -24287,7 +24293,7 @@ const BoardColumn = memo(function BoardColumn2(t0) {
24287
24293
  let t19;
24288
24294
  let t20;
24289
24295
  if ($[19] !== items) {
24290
- t20 = items.map(_temp$d);
24296
+ t20 = items.map(_temp$f);
24291
24297
  $[19] = items;
24292
24298
  $[20] = t20;
24293
24299
  } else {
@@ -24393,7 +24399,7 @@ const BoardColumn = memo(function BoardColumn2(t0) {
24393
24399
  }
24394
24400
  return t29;
24395
24401
  });
24396
- function _temp$d(i) {
24402
+ function _temp$f(i) {
24397
24403
  return i.id;
24398
24404
  }
24399
24405
  function Board(t0) {
@@ -26565,7 +26571,7 @@ function EntityCollectionViewStartActions(t0) {
26565
26571
  }
26566
26572
  let t7;
26567
26573
  if ($[30] !== collection.forceFilter || $[31] !== filtersDialogOpen || $[32] !== resolvedProperties || $[33] !== tableController) {
26568
- t7 = resolvedProperties && tableController.setFilterValues && /* @__PURE__ */ jsx(FiltersDialog, { open: filtersDialogOpen, onOpenChange: setFiltersDialogOpen, properties: resolvedProperties, filterValues: tableController.filterValues, setFilterValues: (filterValues_0) => tableController.setFilterValues?.(filterValues_0 ?? {}), forceFilter: collection.forceFilter, allowedFilters: tableController.allowedFilters?.map(_temp$c) });
26574
+ t7 = resolvedProperties && tableController.setFilterValues && /* @__PURE__ */ jsx(FiltersDialog, { open: filtersDialogOpen, onOpenChange: setFiltersDialogOpen, properties: resolvedProperties, filterValues: tableController.filterValues, setFilterValues: (filterValues_0) => tableController.setFilterValues?.(filterValues_0 ?? {}), forceFilter: collection.forceFilter, allowedFilters: tableController.allowedFilters?.map(_temp$e) });
26569
26575
  $[30] = collection.forceFilter;
26570
26576
  $[31] = filtersDialogOpen;
26571
26577
  $[32] = resolvedProperties;
@@ -26588,9 +26594,225 @@ function EntityCollectionViewStartActions(t0) {
26588
26594
  }
26589
26595
  return t8;
26590
26596
  }
26591
- function _temp$c(key_0) {
26597
+ function _temp$e(key_0) {
26592
26598
  return key_0.toString();
26593
26599
  }
26600
+ const DEFAULT_ENTITY_OPEN_MODE$1 = "side_panel";
26601
+ function EntityIdHeaderWidget(t0) {
26602
+ const $ = c(53);
26603
+ const {
26604
+ collection,
26605
+ path,
26606
+ pathSegments,
26607
+ fullIdPath
26608
+ } = t0;
26609
+ const navigation = useNavigationController();
26610
+ const [openPopup, setOpenPopup] = React__default.useState(false);
26611
+ const [searchString, setSearchString] = React__default.useState("");
26612
+ let t1;
26613
+ if ($[0] !== fullIdPath) {
26614
+ t1 = () => getRecentIds(fullIdPath);
26615
+ $[0] = fullIdPath;
26616
+ $[1] = t1;
26617
+ } else {
26618
+ t1 = $[1];
26619
+ }
26620
+ const [recentIds, setRecentIds] = React__default.useState(t1);
26621
+ const sideEntityController = useSideEntityController();
26622
+ const {
26623
+ t
26624
+ } = useTranslation();
26625
+ const openEntityMode = collection?.openEntityMode ?? DEFAULT_ENTITY_OPEN_MODE$1;
26626
+ let t2;
26627
+ if ($[2] !== openPopup || $[3] !== t) {
26628
+ t2 = !openPopup ? t("find_by_id") : void 0;
26629
+ $[2] = openPopup;
26630
+ $[3] = t;
26631
+ $[4] = t2;
26632
+ } else {
26633
+ t2 = $[4];
26634
+ }
26635
+ let t3;
26636
+ if ($[5] !== fullIdPath) {
26637
+ t3 = (open) => {
26638
+ if (open) {
26639
+ setRecentIds(getRecentIds(fullIdPath));
26640
+ }
26641
+ setOpenPopup(open);
26642
+ };
26643
+ $[5] = fullIdPath;
26644
+ $[6] = t3;
26645
+ } else {
26646
+ t3 = $[6];
26647
+ }
26648
+ let t4;
26649
+ let t5;
26650
+ if ($[7] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
26651
+ t4 = /* @__PURE__ */ jsx(IconButton, { size: "small", children: /* @__PURE__ */ jsx(SearchIcon, { size: "small" }) });
26652
+ t5 = cls("my-2 rounded-lg bg-surface-50 dark:bg-surface-950 text-surface-900 dark:text-white");
26653
+ $[7] = t4;
26654
+ $[8] = t5;
26655
+ } else {
26656
+ t4 = $[7];
26657
+ t5 = $[8];
26658
+ }
26659
+ let t6;
26660
+ if ($[9] !== collection || $[10] !== fullIdPath || $[11] !== navigation || $[12] !== openEntityMode || $[13] !== path || $[14] !== pathSegments || $[15] !== searchString || $[16] !== sideEntityController) {
26661
+ t6 = (e) => {
26662
+ e.preventDefault();
26663
+ const entityId = searchString.trim();
26664
+ if (!entityId) {
26665
+ return;
26666
+ }
26667
+ setOpenPopup(false);
26668
+ setRecentIds(addRecentId(fullIdPath, entityId));
26669
+ navigateToEntity({
26670
+ openEntityMode,
26671
+ collection,
26672
+ entityId,
26673
+ path,
26674
+ pathSegments,
26675
+ fullIdPath,
26676
+ sideEntityController,
26677
+ navigation
26678
+ });
26679
+ };
26680
+ $[9] = collection;
26681
+ $[10] = fullIdPath;
26682
+ $[11] = navigation;
26683
+ $[12] = openEntityMode;
26684
+ $[13] = path;
26685
+ $[14] = pathSegments;
26686
+ $[15] = searchString;
26687
+ $[16] = sideEntityController;
26688
+ $[17] = t6;
26689
+ } else {
26690
+ t6 = $[17];
26691
+ }
26692
+ let t7;
26693
+ if ($[18] !== t) {
26694
+ t7 = t("find_entity_by_id");
26695
+ $[18] = t;
26696
+ $[19] = t7;
26697
+ } else {
26698
+ t7 = $[19];
26699
+ }
26700
+ let t8;
26701
+ if ($[20] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
26702
+ t8 = (e_0) => {
26703
+ setSearchString(e_0.target.value);
26704
+ };
26705
+ $[20] = t8;
26706
+ } else {
26707
+ t8 = $[20];
26708
+ }
26709
+ let t9;
26710
+ if ($[21] !== openPopup || $[22] !== searchString || $[23] !== t7) {
26711
+ t9 = /* @__PURE__ */ jsx("input", { autoFocus: openPopup, placeholder: t7, onChange: t8, value: searchString, className: "rounded-lg bg-white dark:bg-surface-800 flex-grow bg-transparent outline-none p-2 " + focusedDisabled });
26712
+ $[21] = openPopup;
26713
+ $[22] = searchString;
26714
+ $[23] = t7;
26715
+ $[24] = t9;
26716
+ } else {
26717
+ t9 = $[24];
26718
+ }
26719
+ const t10 = !searchString.trim();
26720
+ let t11;
26721
+ if ($[25] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
26722
+ t11 = /* @__PURE__ */ jsx(KeyboardTabIcon, {});
26723
+ $[25] = t11;
26724
+ } else {
26725
+ t11 = $[25];
26726
+ }
26727
+ let t12;
26728
+ if ($[26] !== t10) {
26729
+ t12 = /* @__PURE__ */ jsx(Button, { variant: "text", disabled: t10, type: "submit", children: t11 });
26730
+ $[26] = t10;
26731
+ $[27] = t12;
26732
+ } else {
26733
+ t12 = $[27];
26734
+ }
26735
+ let t13;
26736
+ if ($[28] !== t12 || $[29] !== t9) {
26737
+ t13 = /* @__PURE__ */ jsxs("div", { className: "flex p-2 w-full gap-2", children: [
26738
+ t9,
26739
+ t12
26740
+ ] });
26741
+ $[28] = t12;
26742
+ $[29] = t9;
26743
+ $[30] = t13;
26744
+ } else {
26745
+ t13 = $[30];
26746
+ }
26747
+ let t14;
26748
+ if ($[31] !== t13 || $[32] !== t6) {
26749
+ t14 = /* @__PURE__ */ jsx("form", { noValidate: true, onSubmit: t6, className: "w-96 max-w-full", children: t13 });
26750
+ $[31] = t13;
26751
+ $[32] = t6;
26752
+ $[33] = t14;
26753
+ } else {
26754
+ t14 = $[33];
26755
+ }
26756
+ let t15;
26757
+ if ($[34] !== collection || $[35] !== fullIdPath || $[36] !== navigation || $[37] !== openEntityMode || $[38] !== path || $[39] !== pathSegments || $[40] !== recentIds || $[41] !== sideEntityController) {
26758
+ t15 = recentIds && recentIds.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2 p-2", children: recentIds.map((id) => /* @__PURE__ */ jsx(ReferencePreview, { reference: new EntityReference(id, path, void 0, pathSegments), hover: true, onClick: () => {
26759
+ setOpenPopup(false);
26760
+ navigateToEntity({
26761
+ openEntityMode,
26762
+ collection,
26763
+ entityId: id,
26764
+ path,
26765
+ pathSegments,
26766
+ fullIdPath,
26767
+ sideEntityController,
26768
+ navigation
26769
+ });
26770
+ }, includeEntityLink: false, size: "small" }, id)) });
26771
+ $[34] = collection;
26772
+ $[35] = fullIdPath;
26773
+ $[36] = navigation;
26774
+ $[37] = openEntityMode;
26775
+ $[38] = path;
26776
+ $[39] = pathSegments;
26777
+ $[40] = recentIds;
26778
+ $[41] = sideEntityController;
26779
+ $[42] = t15;
26780
+ } else {
26781
+ t15 = $[42];
26782
+ }
26783
+ let t16;
26784
+ if ($[43] !== t14 || $[44] !== t15) {
26785
+ t16 = /* @__PURE__ */ jsxs("div", { className: t5, children: [
26786
+ t14,
26787
+ t15
26788
+ ] });
26789
+ $[43] = t14;
26790
+ $[44] = t15;
26791
+ $[45] = t16;
26792
+ } else {
26793
+ t16 = $[45];
26794
+ }
26795
+ let t17;
26796
+ if ($[46] !== openPopup || $[47] !== t16 || $[48] !== t3) {
26797
+ t17 = /* @__PURE__ */ jsx(Popover, { open: openPopup, onOpenChange: t3, sideOffset: 0, align: "start", alignOffset: -117, trigger: t4, children: t16 });
26798
+ $[46] = openPopup;
26799
+ $[47] = t16;
26800
+ $[48] = t3;
26801
+ $[49] = t17;
26802
+ } else {
26803
+ t17 = $[49];
26804
+ }
26805
+ let t18;
26806
+ if ($[50] !== t17 || $[51] !== t2) {
26807
+ t18 = /* @__PURE__ */ jsx(Tooltip, { title: t2, asChild: false, children: t17 });
26808
+ $[50] = t17;
26809
+ $[51] = t2;
26810
+ $[52] = t18;
26811
+ } else {
26812
+ t18 = $[52];
26813
+ }
26814
+ return t18;
26815
+ }
26594
26816
  const collectionScrollCache = /* @__PURE__ */ new Map();
26595
26817
  function useScrollRestoration() {
26596
26818
  const updateCollectionScroll = ({
@@ -26631,6 +26853,7 @@ const EntityCollectionView$1 = React__default.memo(function EntityCollectionView
26631
26853
  isSubCollection,
26632
26854
  className,
26633
26855
  updateUrl,
26856
+ onCountChange,
26634
26857
  ...collectionProp
26635
26858
  }) {
26636
26859
  const context = useFireCMSContext();
@@ -26768,7 +26991,7 @@ const EntityCollectionView$1 = React__default.memo(function EntityCollectionView
26768
26991
  entityId: clickedEntity.id
26769
26992
  });
26770
26993
  if (collection_1) {
26771
- addRecentId(collection_1.id, clickedEntity.id);
26994
+ addRecentId(fullIdPath ?? fullPath, clickedEntity.id);
26772
26995
  }
26773
26996
  const isCollectionGroup = Boolean(collection_1?.collectionGroup);
26774
26997
  const path = isCollectionGroup ? clickedEntity.path : fullPath ?? clickedEntity.path;
@@ -27096,8 +27319,9 @@ const EntityCollectionView$1 = React__default.memo(function EntityCollectionView
27096
27319
  useEffect(() => {
27097
27320
  if (docsCount !== void 0) {
27098
27321
  breadcrumbs.updateCount(fullPath, docsCount);
27322
+ onCountChange?.(docsCount);
27099
27323
  }
27100
- }, [docsCount, fullPath, breadcrumbs.updateCount]);
27324
+ }, [docsCount, fullPath, breadcrumbs.updateCount, onCountChange]);
27101
27325
  const countFetcher = /* @__PURE__ */ jsx(EntitiesCount, { fullPath, pathSegments, collection, filter: tableController.filterValues, sortBy: tableController.sortBy, onCountChange: setDocsCount });
27102
27326
  const buildAdditionalHeaderWidget = useCallback(({
27103
27327
  property: property_2,
@@ -27243,218 +27467,17 @@ function buildPropertyWidthOverwrite(key, width) {
27243
27467
  }
27244
27468
  };
27245
27469
  }
27246
- function EntityIdHeaderWidget(t0) {
27247
- const $ = c(50);
27470
+ const EntityCollectionView$2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
27471
+ __proto__: null,
27472
+ EntityCollectionView: EntityCollectionView$1
27473
+ }, Symbol.toStringTag, { value: "Module" }));
27474
+ function PropertyConfigBadge(t0) {
27475
+ const $ = c(6);
27248
27476
  const {
27249
- collection,
27250
- path,
27251
- pathSegments,
27252
- fullIdPath
27477
+ propertyConfig,
27478
+ disabled
27253
27479
  } = t0;
27254
- const navigation = useNavigationController();
27255
- const [openPopup, setOpenPopup] = React__default.useState(false);
27256
- const [searchString, setSearchString] = React__default.useState("");
27257
- let t1;
27258
- if ($[0] !== collection.id) {
27259
- t1 = getRecentIds(collection.id);
27260
- $[0] = collection.id;
27261
- $[1] = t1;
27262
- } else {
27263
- t1 = $[1];
27264
- }
27265
- const [recentIds, setRecentIds] = React__default.useState(t1);
27266
- const sideEntityController = useSideEntityController();
27267
- const {
27268
- t
27269
- } = useTranslation();
27270
- const openEntityMode = collection?.openEntityMode ?? DEFAULT_ENTITY_OPEN_MODE;
27271
- let t2;
27272
- if ($[2] !== openPopup || $[3] !== t) {
27273
- t2 = !openPopup ? t("find_by_id") : void 0;
27274
- $[2] = openPopup;
27275
- $[3] = t;
27276
- $[4] = t2;
27277
- } else {
27278
- t2 = $[4];
27279
- }
27280
- let t3;
27281
- let t4;
27282
- if ($[5] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
27283
- t3 = /* @__PURE__ */ jsx(IconButton, { size: "small", children: /* @__PURE__ */ jsx(SearchIcon, { size: "small" }) });
27284
- t4 = cls("my-2 rounded-lg bg-surface-50 dark:bg-surface-950 text-surface-900 dark:text-white");
27285
- $[5] = t3;
27286
- $[6] = t4;
27287
- } else {
27288
- t3 = $[5];
27289
- t4 = $[6];
27290
- }
27291
- let t5;
27292
- if ($[7] !== collection || $[8] !== fullIdPath || $[9] !== navigation || $[10] !== openEntityMode || $[11] !== path || $[12] !== pathSegments || $[13] !== searchString || $[14] !== sideEntityController) {
27293
- t5 = (e) => {
27294
- e.preventDefault();
27295
- if (!searchString) {
27296
- return;
27297
- }
27298
- setOpenPopup(false);
27299
- const entityId = searchString.trim();
27300
- setRecentIds(addRecentId(collection.id, entityId));
27301
- navigateToEntity({
27302
- openEntityMode,
27303
- collection,
27304
- entityId,
27305
- path,
27306
- pathSegments,
27307
- fullIdPath,
27308
- sideEntityController,
27309
- navigation
27310
- });
27311
- };
27312
- $[7] = collection;
27313
- $[8] = fullIdPath;
27314
- $[9] = navigation;
27315
- $[10] = openEntityMode;
27316
- $[11] = path;
27317
- $[12] = pathSegments;
27318
- $[13] = searchString;
27319
- $[14] = sideEntityController;
27320
- $[15] = t5;
27321
- } else {
27322
- t5 = $[15];
27323
- }
27324
- let t6;
27325
- if ($[16] !== t) {
27326
- t6 = t("find_entity_by_id");
27327
- $[16] = t;
27328
- $[17] = t6;
27329
- } else {
27330
- t6 = $[17];
27331
- }
27332
- let t7;
27333
- if ($[18] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
27334
- t7 = (e_0) => {
27335
- setSearchString(e_0.target.value);
27336
- };
27337
- $[18] = t7;
27338
- } else {
27339
- t7 = $[18];
27340
- }
27341
- let t8;
27342
- if ($[19] !== openPopup || $[20] !== searchString || $[21] !== t6) {
27343
- t8 = /* @__PURE__ */ jsx("input", { autoFocus: openPopup, placeholder: t6, onChange: t7, value: searchString, className: "rounded-lg bg-white dark:bg-surface-800 flex-grow bg-transparent outline-none p-2 " + focusedDisabled });
27344
- $[19] = openPopup;
27345
- $[20] = searchString;
27346
- $[21] = t6;
27347
- $[22] = t8;
27348
- } else {
27349
- t8 = $[22];
27350
- }
27351
- const t9 = !searchString.trim();
27352
- let t10;
27353
- if ($[23] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
27354
- t10 = /* @__PURE__ */ jsx(KeyboardTabIcon, {});
27355
- $[23] = t10;
27356
- } else {
27357
- t10 = $[23];
27358
- }
27359
- let t11;
27360
- if ($[24] !== t9) {
27361
- t11 = /* @__PURE__ */ jsx(Button, { variant: "text", disabled: t9, type: "submit", children: t10 });
27362
- $[24] = t9;
27363
- $[25] = t11;
27364
- } else {
27365
- t11 = $[25];
27366
- }
27367
- let t12;
27368
- if ($[26] !== t11 || $[27] !== t8) {
27369
- t12 = /* @__PURE__ */ jsxs("div", { className: "flex p-2 w-full gap-2", children: [
27370
- t8,
27371
- t11
27372
- ] });
27373
- $[26] = t11;
27374
- $[27] = t8;
27375
- $[28] = t12;
27376
- } else {
27377
- t12 = $[28];
27378
- }
27379
- let t13;
27380
- if ($[29] !== t12 || $[30] !== t5) {
27381
- t13 = /* @__PURE__ */ jsx("form", { noValidate: true, onSubmit: t5, className: "w-96 max-w-full", children: t12 });
27382
- $[29] = t12;
27383
- $[30] = t5;
27384
- $[31] = t13;
27385
- } else {
27386
- t13 = $[31];
27387
- }
27388
- let t14;
27389
- if ($[32] !== collection || $[33] !== fullIdPath || $[34] !== navigation || $[35] !== openEntityMode || $[36] !== path || $[37] !== pathSegments || $[38] !== recentIds || $[39] !== sideEntityController) {
27390
- t14 = recentIds && recentIds.length > 0 && /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-2 p-2", children: recentIds.map((id) => /* @__PURE__ */ jsx(ReferencePreview, { reference: new EntityReference(id, path, void 0, pathSegments), hover: true, onClick: () => {
27391
- setOpenPopup(false);
27392
- navigateToEntity({
27393
- openEntityMode,
27394
- collection,
27395
- entityId: id,
27396
- path,
27397
- pathSegments,
27398
- fullIdPath,
27399
- sideEntityController,
27400
- navigation
27401
- });
27402
- }, includeEntityLink: false, size: "small" }, id)) });
27403
- $[32] = collection;
27404
- $[33] = fullIdPath;
27405
- $[34] = navigation;
27406
- $[35] = openEntityMode;
27407
- $[36] = path;
27408
- $[37] = pathSegments;
27409
- $[38] = recentIds;
27410
- $[39] = sideEntityController;
27411
- $[40] = t14;
27412
- } else {
27413
- t14 = $[40];
27414
- }
27415
- let t15;
27416
- if ($[41] !== t13 || $[42] !== t14) {
27417
- t15 = /* @__PURE__ */ jsxs("div", { className: t4, children: [
27418
- t13,
27419
- t14
27420
- ] });
27421
- $[41] = t13;
27422
- $[42] = t14;
27423
- $[43] = t15;
27424
- } else {
27425
- t15 = $[43];
27426
- }
27427
- let t16;
27428
- if ($[44] !== openPopup || $[45] !== t15) {
27429
- t16 = /* @__PURE__ */ jsx(Popover, { open: openPopup, onOpenChange: setOpenPopup, sideOffset: 0, align: "start", alignOffset: -117, trigger: t3, children: t15 });
27430
- $[44] = openPopup;
27431
- $[45] = t15;
27432
- $[46] = t16;
27433
- } else {
27434
- t16 = $[46];
27435
- }
27436
- let t17;
27437
- if ($[47] !== t16 || $[48] !== t2) {
27438
- t17 = /* @__PURE__ */ jsx(Tooltip, { title: t2, asChild: false, children: t16 });
27439
- $[47] = t16;
27440
- $[48] = t2;
27441
- $[49] = t17;
27442
- } else {
27443
- t17 = $[49];
27444
- }
27445
- return t17;
27446
- }
27447
- const EntityCollectionView$2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
27448
- __proto__: null,
27449
- EntityCollectionView: EntityCollectionView$1
27450
- }, Symbol.toStringTag, { value: "Module" }));
27451
- function PropertyConfigBadge(t0) {
27452
- const $ = c(6);
27453
- const {
27454
- propertyConfig,
27455
- disabled
27456
- } = t0;
27457
- const classes = "h-8 w-8 flex items-center justify-center rounded-full shadow text-white " + (disabled ? "bg-surface-400 dark:bg-surface-600" : "");
27480
+ const classes = "h-8 w-8 flex items-center justify-center rounded-full shadow text-white " + (disabled ? "bg-surface-400 dark:bg-surface-600" : "");
27458
27481
  let t1;
27459
27482
  if ($[0] !== classes || $[1] !== disabled || $[2] !== propertyConfig) {
27460
27483
  const defaultPropertyConfig = typeof propertyConfig?.property === "object" ? getDefaultFieldConfig(propertyConfig.property) : void 0;
@@ -27863,7 +27886,7 @@ function DrawerNavigationGroup(t0) {
27863
27886
  }
27864
27887
  let t10;
27865
27888
  if ($[11] !== headerActions) {
27866
- t10 = headerActions && /* @__PURE__ */ jsx("div", { onClick: _temp$b, children: headerActions });
27889
+ t10 = headerActions && /* @__PURE__ */ jsx("div", { onClick: _temp$d, children: headerActions });
27867
27890
  $[11] = headerActions;
27868
27891
  $[12] = t10;
27869
27892
  } else {
@@ -27943,7 +27966,7 @@ function DrawerNavigationGroup(t0) {
27943
27966
  }
27944
27967
  return t16;
27945
27968
  }
27946
- function _temp$b(e) {
27969
+ function _temp$d(e) {
27947
27970
  return e.stopPropagation();
27948
27971
  }
27949
27972
  function DefaultDrawer(t0) {
@@ -27988,10 +28011,10 @@ function DefaultDrawer(t0) {
27988
28011
  navigationEntries,
27989
28012
  groups
27990
28013
  } = navigation.topLevelNavigation;
27991
- const adminViews = navigationEntries.filter(_temp$a) ?? [];
28014
+ const adminViews = navigationEntries.filter(_temp$c) ?? [];
27992
28015
  let t2;
27993
28016
  if ($[1] !== groups) {
27994
- t2 = groups.filter(_temp2$5);
28017
+ t2 = groups.filter(_temp2$6);
27995
28018
  $[1] = groups;
27996
28019
  $[2] = t2;
27997
28020
  } else {
@@ -28128,10 +28151,10 @@ function DefaultDrawer(t0) {
28128
28151
  }
28129
28152
  return t14;
28130
28153
  }
28131
- function _temp2$5(g) {
28154
+ function _temp2$6(g) {
28132
28155
  return g !== "Admin";
28133
28156
  }
28134
- function _temp$a(e) {
28157
+ function _temp$c(e) {
28135
28158
  return e.type === "admin";
28136
28159
  }
28137
28160
  function DrawerToggle() {
@@ -28262,8 +28285,149 @@ function DrawerLogo(t0) {
28262
28285
  }
28263
28286
  return t2;
28264
28287
  }
28288
+ function CollectionCountBadge(t0) {
28289
+ const $ = c(3);
28290
+ const {
28291
+ count
28292
+ } = t0;
28293
+ if (count === void 0) {
28294
+ return null;
28295
+ }
28296
+ if (count === null) {
28297
+ let t12;
28298
+ if ($[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
28299
+ t12 = /* @__PURE__ */ jsx(Skeleton, { className: "w-8 h-4 rounded-md" });
28300
+ $[0] = t12;
28301
+ } else {
28302
+ t12 = $[0];
28303
+ }
28304
+ return t12;
28305
+ }
28306
+ let t1;
28307
+ if ($[1] !== count) {
28308
+ t1 = /* @__PURE__ */ jsx("span", { className: "text-xs text-surface-accent-500 dark:text-surface-accent-400 bg-surface-100 dark:bg-surface-700 px-1 py-0 rounded", children: count });
28309
+ $[1] = count;
28310
+ $[2] = t1;
28311
+ } else {
28312
+ t1 = $[2];
28313
+ }
28314
+ return t1;
28315
+ }
28316
+ function PathTitle(t0) {
28317
+ const $ = c(15);
28318
+ const {
28319
+ parents,
28320
+ name,
28321
+ count,
28322
+ className
28323
+ } = t0;
28324
+ let t1;
28325
+ if ($[0] !== className) {
28326
+ t1 = cls("flex flex-col", className);
28327
+ $[0] = className;
28328
+ $[1] = t1;
28329
+ } else {
28330
+ t1 = $[1];
28331
+ }
28332
+ let t2;
28333
+ if ($[2] !== parents) {
28334
+ t2 = parents.length > 0 && /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", noWrap: true, children: parents.join(" / ") });
28335
+ $[2] = parents;
28336
+ $[3] = t2;
28337
+ } else {
28338
+ t2 = $[3];
28339
+ }
28340
+ let t3;
28341
+ if ($[4] !== name) {
28342
+ t3 = /* @__PURE__ */ jsx(Typography, { variant: "body2", noWrap: true, className: "font-medium", children: name });
28343
+ $[4] = name;
28344
+ $[5] = t3;
28345
+ } else {
28346
+ t3 = $[5];
28347
+ }
28348
+ let t4;
28349
+ if ($[6] !== count) {
28350
+ t4 = /* @__PURE__ */ jsx(CollectionCountBadge, { count });
28351
+ $[6] = count;
28352
+ $[7] = t4;
28353
+ } else {
28354
+ t4 = $[7];
28355
+ }
28356
+ let t5;
28357
+ if ($[8] !== t3 || $[9] !== t4) {
28358
+ t5 = /* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center gap-2 min-w-0", children: [
28359
+ t3,
28360
+ t4
28361
+ ] });
28362
+ $[8] = t3;
28363
+ $[9] = t4;
28364
+ $[10] = t5;
28365
+ } else {
28366
+ t5 = $[10];
28367
+ }
28368
+ let t6;
28369
+ if ($[11] !== t1 || $[12] !== t2 || $[13] !== t5) {
28370
+ t6 = /* @__PURE__ */ jsxs("div", { className: t1, children: [
28371
+ t2,
28372
+ t5
28373
+ ] });
28374
+ $[11] = t1;
28375
+ $[12] = t2;
28376
+ $[13] = t5;
28377
+ $[14] = t6;
28378
+ } else {
28379
+ t6 = $[14];
28380
+ }
28381
+ return t6;
28382
+ }
28383
+ function CollectionPathTitle(t0) {
28384
+ const $ = c(9);
28385
+ const {
28386
+ path,
28387
+ name,
28388
+ count
28389
+ } = t0;
28390
+ const navigation = useNavigationController();
28391
+ let t1;
28392
+ let t2;
28393
+ if ($[0] !== navigation.collections) {
28394
+ t2 = navigation.collections ?? [];
28395
+ $[0] = navigation.collections;
28396
+ $[1] = t2;
28397
+ } else {
28398
+ t2 = $[1];
28399
+ }
28400
+ let t3;
28401
+ if ($[2] !== path || $[3] !== t2) {
28402
+ t3 = getNavigationEntriesFromPath({
28403
+ path,
28404
+ collections: t2
28405
+ }).slice(0, -1).map(_temp$b);
28406
+ $[2] = path;
28407
+ $[3] = t2;
28408
+ $[4] = t3;
28409
+ } else {
28410
+ t3 = $[4];
28411
+ }
28412
+ t1 = t3;
28413
+ const parents = t1;
28414
+ let t4;
28415
+ if ($[5] !== count || $[6] !== name || $[7] !== parents) {
28416
+ t4 = /* @__PURE__ */ jsx(PathTitle, { parents, name, count, className: "shrink-0 mx-2 max-w-[140px] sm:max-w-[240px] lg:max-w-[320px]" });
28417
+ $[5] = count;
28418
+ $[6] = name;
28419
+ $[7] = parents;
28420
+ $[8] = t4;
28421
+ } else {
28422
+ t4 = $[8];
28423
+ }
28424
+ return t4;
28425
+ }
28426
+ function _temp$b(entry) {
28427
+ return entry.type === "entity" ? entry.entityId : entry.type === "collection" ? entry.collection.name : entry.view.name;
28428
+ }
28265
28429
  const DefaultAppBar = function DefaultAppBar2(t0) {
28266
- const $ = c(54);
28430
+ const $ = c(58);
28267
28431
  const {
28268
28432
  title,
28269
28433
  endAdornment,
@@ -28284,6 +28448,7 @@ const DefaultAppBar = function DefaultAppBar2(t0) {
28284
28448
  const logo = logoProp ?? appLogo;
28285
28449
  const navigation = useNavigationController();
28286
28450
  const breadcrumbs = useBreadcrumbsController();
28451
+ const lastBreadcrumb = breadcrumbs.breadcrumbs?.[breadcrumbs.breadcrumbs.length - 1];
28287
28452
  const authController = useAuthController();
28288
28453
  const {
28289
28454
  mode,
@@ -28374,30 +28539,39 @@ const DefaultAppBar = function DefaultAppBar2(t0) {
28374
28539
  }
28375
28540
  let t8;
28376
28541
  if ($[21] !== breadcrumbs.breadcrumbs) {
28377
- t8 = (breadcrumbs.breadcrumbs ?? []).length > 0 && /* @__PURE__ */ jsx("div", { className: "mr-8 hidden lg:block", children: /* @__PURE__ */ jsx("div", { className: "flex flex-row gap-2 items-center", children: breadcrumbs.breadcrumbs.map(_temp$9) }) });
28542
+ t8 = (breadcrumbs.breadcrumbs ?? []).length > 0 && /* @__PURE__ */ jsx("div", { className: "mr-8 hidden lg:block", children: /* @__PURE__ */ jsx("div", { className: "flex flex-row gap-2 items-center", children: breadcrumbs.breadcrumbs.map(_temp$a) }) });
28378
28543
  $[21] = breadcrumbs.breadcrumbs;
28379
28544
  $[22] = t8;
28380
28545
  } else {
28381
28546
  t8 = $[22];
28382
28547
  }
28383
28548
  let t9;
28384
- if ($[23] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
28385
- t9 = /* @__PURE__ */ jsx("div", { className: "flex-grow" });
28386
- $[23] = t9;
28549
+ if ($[23] !== breadcrumbs.breadcrumbs || $[24] !== lastBreadcrumb) {
28550
+ t9 = lastBreadcrumb && /* @__PURE__ */ jsx(PathTitle, { className: "lg:hidden min-w-0 mr-2", parents: breadcrumbs.breadcrumbs.slice(0, -1).map(_temp2$5), name: lastBreadcrumb.title, count: lastBreadcrumb.count });
28551
+ $[23] = breadcrumbs.breadcrumbs;
28552
+ $[24] = lastBreadcrumb;
28553
+ $[25] = t9;
28387
28554
  } else {
28388
- t9 = $[23];
28555
+ t9 = $[25];
28389
28556
  }
28390
28557
  let t10;
28391
- if ($[24] !== endAdornment) {
28392
- t10 = endAdornment && /* @__PURE__ */ jsx(ErrorBoundary, { children: endAdornment });
28393
- $[24] = endAdornment;
28394
- $[25] = t10;
28558
+ if ($[26] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
28559
+ t10 = /* @__PURE__ */ jsx("div", { className: "flex-grow" });
28560
+ $[26] = t10;
28395
28561
  } else {
28396
- t10 = $[25];
28562
+ t10 = $[26];
28397
28563
  }
28398
28564
  let t11;
28399
- if ($[26] !== includeModeToggle || $[27] !== mode || $[28] !== setMode || $[29] !== t) {
28400
- t11 = includeModeToggle && /* @__PURE__ */ jsxs(Menu, { trigger: /* @__PURE__ */ jsx(IconButton, { color: "inherit", "aria-label": "Open drawer", children: mode === "dark" ? /* @__PURE__ */ jsx(DarkModeIcon, { size: "small" }) : /* @__PURE__ */ jsx(LightModeIcon, { size: "small" }) }), children: [
28565
+ if ($[27] !== endAdornment) {
28566
+ t11 = endAdornment && /* @__PURE__ */ jsx(ErrorBoundary, { children: endAdornment });
28567
+ $[27] = endAdornment;
28568
+ $[28] = t11;
28569
+ } else {
28570
+ t11 = $[28];
28571
+ }
28572
+ let t12;
28573
+ if ($[29] !== includeModeToggle || $[30] !== mode || $[31] !== setMode || $[32] !== t) {
28574
+ t12 = includeModeToggle && /* @__PURE__ */ jsxs(Menu, { trigger: /* @__PURE__ */ jsx(IconButton, { color: "inherit", "aria-label": "Open drawer", children: mode === "dark" ? /* @__PURE__ */ jsx(DarkModeIcon, { size: "small" }) : /* @__PURE__ */ jsx(LightModeIcon, { size: "small" }) }), children: [
28401
28575
  /* @__PURE__ */ jsxs(MenuItem, { onClick: () => setMode("dark"), children: [
28402
28576
  /* @__PURE__ */ jsx(DarkModeIcon, { size: "smallest" }),
28403
28577
  " ",
@@ -28414,101 +28588,106 @@ const DefaultAppBar = function DefaultAppBar2(t0) {
28414
28588
  t("system_mode")
28415
28589
  ] })
28416
28590
  ] });
28417
- $[26] = includeModeToggle;
28418
- $[27] = mode;
28419
- $[28] = setMode;
28420
- $[29] = t;
28421
- $[30] = t11;
28591
+ $[29] = includeModeToggle;
28592
+ $[30] = mode;
28593
+ $[31] = setMode;
28594
+ $[32] = t;
28595
+ $[33] = t12;
28422
28596
  } else {
28423
- t11 = $[30];
28597
+ t12 = $[33];
28424
28598
  }
28425
- let t12;
28426
- if ($[31] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
28427
- t12 = /* @__PURE__ */ jsx(LanguageToggle, {});
28428
- $[31] = t12;
28599
+ let t13;
28600
+ if ($[34] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
28601
+ t13 = /* @__PURE__ */ jsx(LanguageToggle, {});
28602
+ $[34] = t13;
28429
28603
  } else {
28430
- t12 = $[31];
28604
+ t13 = $[34];
28431
28605
  }
28432
- let t13;
28433
- if ($[32] !== user) {
28434
- t13 = user && /* @__PURE__ */ jsxs("div", { className: "px-4 py-2 mb-2", children: [
28606
+ let t14;
28607
+ if ($[35] !== user) {
28608
+ t14 = user && /* @__PURE__ */ jsxs("div", { className: "px-4 py-2 mb-2", children: [
28435
28609
  user.displayName && /* @__PURE__ */ jsx(Typography, { variant: "body1", color: "secondary", children: user.displayName }),
28436
28610
  user.email && /* @__PURE__ */ jsx(Typography, { variant: "body2", color: "secondary", children: user.email })
28437
28611
  ] });
28438
- $[32] = user;
28439
- $[33] = t13;
28612
+ $[35] = user;
28613
+ $[36] = t14;
28440
28614
  } else {
28441
- t13 = $[33];
28615
+ t14 = $[36];
28442
28616
  }
28443
- let t14;
28444
- if ($[34] !== authController || $[35] !== dropDownActions || $[36] !== navigate || $[37] !== t) {
28445
- t14 = !dropDownActions && /* @__PURE__ */ jsxs(MenuItem, { onClick: async () => {
28617
+ let t15;
28618
+ if ($[37] !== authController || $[38] !== dropDownActions || $[39] !== navigate || $[40] !== t) {
28619
+ t15 = !dropDownActions && /* @__PURE__ */ jsxs(MenuItem, { onClick: async () => {
28446
28620
  await authController.signOut();
28447
28621
  navigate("/");
28448
28622
  }, children: [
28449
28623
  /* @__PURE__ */ jsx(LogoutIcon, {}),
28450
28624
  t("log_out")
28451
28625
  ] });
28452
- $[34] = authController;
28453
- $[35] = dropDownActions;
28454
- $[36] = navigate;
28455
- $[37] = t;
28456
- $[38] = t14;
28626
+ $[37] = authController;
28627
+ $[38] = dropDownActions;
28628
+ $[39] = navigate;
28629
+ $[40] = t;
28630
+ $[41] = t15;
28457
28631
  } else {
28458
- t14 = $[38];
28632
+ t15 = $[41];
28459
28633
  }
28460
- let t15;
28461
- if ($[39] !== avatarComponent || $[40] !== dropDownActions || $[41] !== t13 || $[42] !== t14) {
28462
- t15 = /* @__PURE__ */ jsxs(Menu, { trigger: avatarComponent, children: [
28463
- t13,
28634
+ let t16;
28635
+ if ($[42] !== avatarComponent || $[43] !== dropDownActions || $[44] !== t14 || $[45] !== t15) {
28636
+ t16 = /* @__PURE__ */ jsxs(Menu, { trigger: avatarComponent, children: [
28637
+ t14,
28464
28638
  dropDownActions,
28465
- t14
28639
+ t15
28466
28640
  ] });
28467
- $[39] = avatarComponent;
28468
- $[40] = dropDownActions;
28469
- $[41] = t13;
28470
- $[42] = t14;
28471
- $[43] = t15;
28641
+ $[42] = avatarComponent;
28642
+ $[43] = dropDownActions;
28643
+ $[44] = t14;
28644
+ $[45] = t15;
28645
+ $[46] = t16;
28472
28646
  } else {
28473
- t15 = $[43];
28647
+ t16 = $[46];
28474
28648
  }
28475
- let t16;
28476
- if ($[44] !== startAdornment || $[45] !== style || $[46] !== t10 || $[47] !== t11 || $[48] !== t15 || $[49] !== t5 || $[50] !== t6 || $[51] !== t7 || $[52] !== t8) {
28477
- t16 = /* @__PURE__ */ jsxs("div", { style, className: t5, children: [
28649
+ let t17;
28650
+ if ($[47] !== startAdornment || $[48] !== style || $[49] !== t11 || $[50] !== t12 || $[51] !== t16 || $[52] !== t5 || $[53] !== t6 || $[54] !== t7 || $[55] !== t8 || $[56] !== t9) {
28651
+ t17 = /* @__PURE__ */ jsxs("div", { style, className: t5, children: [
28478
28652
  t6,
28479
28653
  t7,
28480
28654
  t8,
28481
- startAdornment,
28482
28655
  t9,
28656
+ startAdornment,
28483
28657
  t10,
28484
28658
  t11,
28485
28659
  t12,
28486
- t15
28660
+ t13,
28661
+ t16
28487
28662
  ] });
28488
- $[44] = startAdornment;
28489
- $[45] = style;
28490
- $[46] = t10;
28491
- $[47] = t11;
28492
- $[48] = t15;
28493
- $[49] = t5;
28494
- $[50] = t6;
28495
- $[51] = t7;
28496
- $[52] = t8;
28497
- $[53] = t16;
28663
+ $[47] = startAdornment;
28664
+ $[48] = style;
28665
+ $[49] = t11;
28666
+ $[50] = t12;
28667
+ $[51] = t16;
28668
+ $[52] = t5;
28669
+ $[53] = t6;
28670
+ $[54] = t7;
28671
+ $[55] = t8;
28672
+ $[56] = t9;
28673
+ $[57] = t17;
28498
28674
  } else {
28499
- t16 = $[53];
28675
+ t17 = $[57];
28500
28676
  }
28501
- return t16;
28677
+ return t17;
28502
28678
  };
28503
- function _temp$9(breadcrumb, index) {
28679
+ function _temp$a(breadcrumb, index) {
28504
28680
  return /* @__PURE__ */ jsxs(React__default.Fragment, { children: [
28505
28681
  /* @__PURE__ */ jsx(Typography, { variant: "caption", color: "secondary", children: "/" }),
28506
28682
  /* @__PURE__ */ jsx(Link, { className: "visited:text-inherit visited:dark:text-inherit block", to: breadcrumb.url, children: /* @__PURE__ */ jsxs("div", { className: "flex flex-row items-center gap-2 whitespace-nowrap", children: [
28507
28683
  /* @__PURE__ */ jsx(Typography, { variant: "body2", children: breadcrumb.title }),
28508
- breadcrumb.count !== void 0 && (breadcrumb.count !== null ? /* @__PURE__ */ jsx("span", { className: "text-xs text-surface-accent-500 dark:text-surface-accent-400 bg-surface-100 dark:bg-surface-700 px-1 py-0 rounded", children: breadcrumb.count }) : /* @__PURE__ */ jsx(Skeleton, { className: "w-8 h-4 rounded-md" }))
28684
+ /* @__PURE__ */ jsx(CollectionCountBadge, { count: breadcrumb.count })
28509
28685
  ] }) }, index)
28510
28686
  ] }, breadcrumb.url + "_" + index);
28511
28687
  }
28688
+ function _temp2$5(breadcrumb_0) {
28689
+ return breadcrumb_0.title;
28690
+ }
28512
28691
  const buildIdsMap = (value) => value && Array.isArray(value) && value.length > 0 ? value.map((v, index) => {
28513
28692
  if (!v) return {};
28514
28693
  return {
@@ -28945,7 +29124,7 @@ function SearchIconsView(t0) {
28945
29124
  } else {
28946
29125
  const searchResult = iconsSearch.search(value);
28947
29126
  const limited = searchResult.slice(0, 50);
28948
- setKeys(limited.map(_temp$8));
29127
+ setKeys(limited.map(_temp$9));
28949
29128
  }
28950
29129
  }, UPDATE_SEARCH_INDEX_WAIT_MS);
28951
29130
  $[0] = t3;
@@ -29037,7 +29216,7 @@ function SearchIconsView(t0) {
29037
29216
  }
29038
29217
  return t11;
29039
29218
  }
29040
- function _temp$8(e) {
29219
+ function _temp$9(e) {
29041
29220
  return e.item.key;
29042
29221
  }
29043
29222
  function FieldCaption(t0) {
@@ -29496,7 +29675,7 @@ function LicenseBanner(t0) {
29496
29675
  i18n
29497
29676
  } = useTranslation();
29498
29677
  const plugins = useContext(CustomizationControllerContext)?.plugins;
29499
- const runsProPlugin = plugins?.some(_temp$7) ?? false;
29678
+ const runsProPlugin = plugins?.some(_temp$8) ?? false;
29500
29679
  const [dismissed, setDismissed] = useState(_temp2$4);
29501
29680
  const [dismissedForGood, setDismissedForGood] = useState(_temp3$3);
29502
29681
  const content = licenseStatus ? buildBannerContent(licenseStatus, t, i18n?.language, runsProPlugin) : null;
@@ -29586,7 +29765,7 @@ function _temp3$3() {
29586
29765
  function _temp2$4() {
29587
29766
  return readDismissed(sessionDismissals);
29588
29767
  }
29589
- function _temp$7(plugin) {
29768
+ function _temp$8(plugin) {
29590
29769
  return PRO_PLUGIN_KEYS.includes(plugin.key);
29591
29770
  }
29592
29771
  function buildBannerContent(status, t, language, runsProPlugin) {
@@ -29726,64 +29905,32 @@ function writeDismissed(store, states) {
29726
29905
  }
29727
29906
  }
29728
29907
  function useReferenceDialog(referenceDialogProps) {
29729
- const $ = c(9);
29730
29908
  const navigation = useNavigationController();
29731
29909
  const sideDialogsController = useSideDialogsController();
29732
- let t0;
29733
- if ($[0] !== navigation || $[1] !== referenceDialogProps || $[2] !== sideDialogsController) {
29734
- t0 = () => {
29735
- if (referenceDialogProps.path) {
29736
- let usedCollection = referenceDialogProps.collection;
29737
- if (!usedCollection) {
29738
- usedCollection = navigation.getCollection(referenceDialogProps.path);
29910
+ const open = useCallback(() => {
29911
+ if (referenceDialogProps.path) {
29912
+ let usedCollection = referenceDialogProps.collection;
29913
+ if (!usedCollection) usedCollection = navigation.getCollection(referenceDialogProps.path);
29914
+ if (!usedCollection) throw Error("Not able to resolve the collection in useReferenceDialog. Make sure a collection is registered in path " + referenceDialogProps.path);
29915
+ sideDialogsController.open({
29916
+ key: `reference_${referenceDialogProps.path}`,
29917
+ component: /* @__PURE__ */ jsx(ReferenceSelectionTable, { collection: usedCollection, ...referenceDialogProps }),
29918
+ width: "90vw",
29919
+ onClose: () => {
29920
+ referenceDialogProps.onClose?.();
29739
29921
  }
29740
- if (!usedCollection) {
29741
- throw Error("Not able to resolve the collection in useReferenceDialog. Make sure a collection is registered in path " + referenceDialogProps.path);
29742
- }
29743
- sideDialogsController.open({
29744
- key: `reference_${referenceDialogProps.path}`,
29745
- component: /* @__PURE__ */ jsx(ReferenceSelectionTable, { collection: usedCollection, ...referenceDialogProps }),
29746
- width: "90vw",
29747
- onClose: () => {
29748
- referenceDialogProps.onClose?.();
29749
- }
29750
- });
29751
- } else {
29752
- throw Error("useReferenceDialog: You are trying to open a reference dialog, but have not declared the `path`");
29753
- }
29754
- };
29755
- $[0] = navigation;
29756
- $[1] = referenceDialogProps;
29757
- $[2] = sideDialogsController;
29758
- $[3] = t0;
29759
- } else {
29760
- t0 = $[3];
29761
- }
29762
- const open = t0;
29763
- let t1;
29764
- if ($[4] !== sideDialogsController) {
29765
- t1 = () => {
29766
- sideDialogsController.close();
29767
- };
29768
- $[4] = sideDialogsController;
29769
- $[5] = t1;
29770
- } else {
29771
- t1 = $[5];
29772
- }
29773
- const close = t1;
29774
- let t2;
29775
- if ($[6] !== close || $[7] !== open) {
29776
- t2 = {
29777
- open,
29778
- close
29779
- };
29780
- $[6] = close;
29781
- $[7] = open;
29782
- $[8] = t2;
29783
- } else {
29784
- t2 = $[8];
29785
- }
29786
- return t2;
29922
+ });
29923
+ } else {
29924
+ throw Error("useReferenceDialog: You are trying to open a reference dialog, but have not declared the `path`");
29925
+ }
29926
+ }, [navigation, referenceDialogProps, sideDialogsController]);
29927
+ const close = useCallback(() => {
29928
+ sideDialogsController.close(`reference_${referenceDialogProps.path}`);
29929
+ }, [sideDialogsController, referenceDialogProps.path]);
29930
+ return {
29931
+ open,
29932
+ close
29933
+ };
29787
29934
  }
29788
29935
  const fireCMSLogo = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAa9SURBVHgB7Z1NbBNHFMf/a7uBEgMOHy2pSlnUql+oEG7lgNgcqZAgR9RKSU5tT9mcqp6SXNoj5tBzHAmk3ggSUo/Ziko9skXqoVIlJm3Von4IhzhAIIk7b9ab+COJvZ63610nP8netWx5Z//73syb2Zm3BjqJXc4BixaQMgHjDFCWW5iVb83aH5eL8jdC7lS2a/Ny3wGyLvJGER3CQJRsCHZBfrqCBpHaRkCJuXYb2O9EKWg0AtpKtDF5gnJr5BA+BSVm/sAsQiY8AZW1PSHR7IhE2wwhX1NAWlrlywIhwC9gPISrR8iyFJDvnQIzvALapRH5PgG+uo0bAbLIfLYAJngEtJ+awOq03LOQCAxZN6bGOdw6BV3GyV1X7iEx4hFlGQGs3qt4jBbtW6Cq65bIXW0km7x06XG0SXsCei57S+4NoDtwZUs91I5LBxfQE28O8W0o2kVIEQeDihhMwO4Vz0cEFbF1AbtfPB8RRMTWBNw54vmIVkVsMYxRDYaJnYOpztl+1LQn1VxAu3QN3dPaBkGe80sTzX60vQt7geY0IsDcMw8r+wPO9N6H2TOPXHpBbn9DcfWgehHu09OYf/YGnNJ5uE9OIyJkjyWb3+rLrQVU9R71MMIbELD238XlvjsYOXQTuUywIbziSg6zC5cw8+/HcBbPI0RkwdJnt6oPtxFw6ZbX5eFn5PANDB+5qQTkQCyfwNSfX6Lw3ycICTkclh3c7IvNBQzJdUmwide+YhOunpCFHN1sFGcrAR+AsdUl95zo/xr2q98gCkhAEpIEZUQAL6Qr99XUNY2tsL3EOp5HjcPc2x9FJh5BVQQdk47NiAlkGgZOai2QOWD2xWM+kZah1nvwl+84W2xpfS9OVlthnQWuWugS8QgKhebeuYiBfffBRK7eCutduGng2ApxEM+HX0RjrPrThoD2Y7b7tHERz4dEvPXmVbXl+DvvNq1HlQWmLoMBClPiJJ4PlWn65KfgIbVuhV4jojrNLz2CJlTIBx+cQpwZ+vVbzBYvQZP1xqRigWkLDEybnyHuXDv+BYcrS4PrsWinIqC++17J3Qmth8EJeQlPTErTVDbqQAuajEUYKOsyfPgm9DGU0Rkc9V8S6r56KMDWH8V50SctMKM9WErumzSGj9yAPj0WubAFTXhcIlp4LnrZTFVmhbYNtWiMXaXI4Cm3cUYKmNIa80mieD76UYOyQGgN2SdZQLrnovsXJKAJDRgK0TE4upzaFpjLsHTQO8JB/R6JmYEuyz3A4gEkkuW90EVfwLvyZtXffUgkB03gfWihP0N1h0MCCmhQTOu7QadY0C97UdsCxd64rGQIjtijXXahbYHuvn4kFbf3GDQhC1zTCobcfdqF6Bhur+7FN8gCUy40KGb2wjlgImmQ++pf/LV5skABTb6ncCBhMF10Rwq46kCT/LFzSBozr5yFPituqjJNQUCDpLkxuS9DeUXVXbnybWgydXwQSWHquAUGHHrzBXSgCV3RJFghWV/hKIf7GsroKgKqelB7mfzoW0OIO0zWJ3nu0LsnoKoH9a2Qru64eRFxpXB0gMn6UPCnuFV35a6DgXz/h7F0Zd6La6y3GXUTLEt0f1i7g2guFzH387TaxgESb/DUKEffV/0d8tmT/oe6wYQyixUyF1gLCrGG3r3KWZaavAt1Aq7QghIWs4mDiCQelYGxvy5UBpAqagX0GhMWK1RHq4jIMOrR1rHPnv6cebCjPFO/4KZxmYM3V4ZyIJhgZPIPBxO/zyEKrvefw+TrlrJARmrqPp9IF9qE3biQ1VEsGlIUEGChDWGXyFwshMDIPy7G/voRA0sPwQFVEddl+MQU422CMYt876a9hCaLDVfJlUNrBQaePIQthbywIAJbJbnnjAyMZw+9F3LcSVnjMm0sNiTsEq2JuIYIIDHNZ0VYjx/gxPMicivPar4nweZ7cmoUmSwuwpHw0e0yHTVf8m8v5uvXRuwcZESS379tXpwW7sqtTELlVdlxuM3EI5oLqGLDNFWgAjsHUTnnpuymPWlE8Kc98dlNvNNAMAGJ3dRPNQSf2qEOkKYbIN3UsLjtiEcEt8BquiLEocGT7GS7mX/1BCS8fjMF2wmbZaTyUk9tlxOmFfQFJLwcM1JE4wqSgSNddpQjBSiPgD67SWiZsBcn5V8PIzZCkrvSTTPprsxZzsMRkPDCHQsdtcjwhPMJT8BqvHwM8pUaRuiQaCkHWKOBAAchE42APusPI1Bi0gMJTPAgvPk9NDmgGx9GsBVK0NIA1Mg3rdlTCx9z3rYha5zY2NLjMMo/eXMboxWsnv8Br15XnnLWoGsAAAAASUVORK5CYII=";
29789
29936
  function useBrowserTitleAndIcon(name, logo) {
@@ -30442,7 +30589,7 @@ function useBuildLocalConfigurationPersistence() {
30442
30589
  t0 = $[0];
30443
30590
  }
30444
30591
  const configCache = useRef(t0);
30445
- const getCollectionFromStorage = _temp$6;
30592
+ const getCollectionFromStorage = _temp$7;
30446
30593
  let t1;
30447
30594
  if ($[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
30448
30595
  t1 = (path) => {
@@ -30565,7 +30712,7 @@ function useBuildLocalConfigurationPersistence() {
30565
30712
  }
30566
30713
  return t11;
30567
30714
  }
30568
- function _temp$6(storageKey) {
30715
+ function _temp$7(storageKey) {
30569
30716
  return getLocalStorageJSON(storageKey, {});
30570
30717
  }
30571
30718
  function useBuildModeController() {
@@ -30728,78 +30875,32 @@ function useValidateAuthenticator(t0) {
30728
30875
  }
30729
30876
  return t7;
30730
30877
  }
30731
- function useNavigationUnsavedChangesDialog(when, onSuccess) {
30732
- const [isDialogOpen, setIsDialogOpen] = useState(false);
30733
- const [pendingNavigation, setPendingNavigation] = useState(null);
30734
- const handleCancel = useCallback(() => {
30735
- setIsDialogOpen(false);
30736
- setPendingNavigation(null);
30737
- }, []);
30738
- const handleOk = useCallback(() => {
30739
- setIsDialogOpen(false);
30740
- if (pendingNavigation) {
30741
- onSuccess();
30742
- if (pendingNavigation.type === "popstate") {
30743
- window.history.go(pendingNavigation.delta);
30744
- } else if (pendingNavigation.type === "link") {
30745
- window.location.href = pendingNavigation.href;
30746
- }
30747
- setPendingNavigation(null);
30748
- }
30749
- }, [onSuccess, pendingNavigation]);
30750
- const handleBeforeUnload = useCallback((e) => {
30751
- if (when) {
30752
- e.preventDefault();
30753
- e.returnValue = "";
30754
- }
30755
- }, [when]);
30756
- const handlePopState = useCallback((e_0) => {
30757
- if (when) {
30758
- e_0.preventDefault();
30759
- setPendingNavigation({
30760
- type: "popstate",
30761
- delta: -1
30762
- });
30763
- setIsDialogOpen(true);
30764
- }
30765
- }, [when]);
30766
- const handleLinkClick = useCallback((e_1) => {
30767
- if (!when) return;
30768
- const target = e_1.target;
30769
- const anchor = target.closest("a[href]");
30770
- if (anchor && anchor.host === window.location.host) {
30771
- e_1.preventDefault();
30772
- const href = anchor.getAttribute("href");
30773
- if (href) {
30774
- setPendingNavigation({
30775
- type: "link",
30776
- href
30777
- });
30778
- setIsDialogOpen(true);
30878
+ function useLeavePageConfirmation(when) {
30879
+ const $ = c(3);
30880
+ let t0;
30881
+ let t1;
30882
+ if ($[0] !== when) {
30883
+ t0 = () => {
30884
+ if (!when) {
30885
+ return;
30779
30886
  }
30780
- }
30781
- }, [when]);
30782
- useEffect(() => {
30783
- if (when) {
30887
+ const handleBeforeUnload = _temp$6;
30784
30888
  window.addEventListener("beforeunload", handleBeforeUnload);
30785
- window.addEventListener("popstate", handlePopState);
30786
- document.addEventListener("click", handleLinkClick);
30787
- } else {
30788
- window.removeEventListener("beforeunload", handleBeforeUnload);
30789
- window.removeEventListener("popstate", handlePopState);
30790
- document.removeEventListener("click", handleLinkClick);
30791
- }
30792
- return () => {
30793
- window.removeEventListener("beforeunload", handleBeforeUnload);
30794
- window.removeEventListener("popstate", handlePopState);
30795
- document.removeEventListener("click", handleLinkClick);
30889
+ return () => window.removeEventListener("beforeunload", handleBeforeUnload);
30796
30890
  };
30797
- }, [when, handleBeforeUnload, handlePopState, handleLinkClick]);
30798
- return {
30799
- navigationWasBlocked: isDialogOpen,
30800
- handleCancel,
30801
- handleOk
30802
- };
30891
+ t1 = [when];
30892
+ $[0] = when;
30893
+ $[1] = t0;
30894
+ $[2] = t1;
30895
+ } else {
30896
+ t0 = $[1];
30897
+ t1 = $[2];
30898
+ }
30899
+ useEffect(t0, t1);
30900
+ }
30901
+ function _temp$6(e) {
30902
+ e.preventDefault();
30903
+ e.returnValue = "";
30803
30904
  }
30804
30905
  function UnsavedChangesDialog(t0) {
30805
30906
  const $ = c(30);
@@ -31119,17 +31220,14 @@ function SideDialogView({
31119
31220
  const widthRef = React__default.useRef(panel?.width);
31120
31221
  const width = widthRef.current;
31121
31222
  const sideDialogsController = useSideDialogsController();
31122
- const {
31123
- handleOk: handleNavigationOk,
31124
- handleCancel: handleNavigationCancel
31125
- } = useNavigationUnsavedChangesDialog(blocked && !drawerCloseRequested, () => setBlocked(false));
31223
+ useLeavePageConfirmation(blocked && !drawerCloseRequested);
31126
31224
  useEffect(() => {
31127
31225
  if (panel) widthRef.current = panel.width;
31128
31226
  }, [panel]);
31129
31227
  const handleDrawerCloseOk = () => {
31130
31228
  setBlocked(false);
31131
31229
  setDrawerCloseRequested(false);
31132
- sideDialogsController.close();
31230
+ sideDialogsController.close(panel?.key);
31133
31231
  panel?.onClose?.();
31134
31232
  };
31135
31233
  const handleDrawerCloseCancel = () => {
@@ -31139,7 +31237,7 @@ function SideDialogView({
31139
31237
  if (blocked && !force) {
31140
31238
  setDrawerCloseRequested(true);
31141
31239
  } else {
31142
- sideDialogsController.close();
31240
+ sideDialogsController.close(panel?.key);
31143
31241
  panel?.onClose?.();
31144
31242
  }
31145
31243
  };
@@ -31172,7 +31270,7 @@ function SideDialogView({
31172
31270
  width
31173
31271
  } })
31174
31272
  ] }),
31175
- /* @__PURE__ */ jsx(UnsavedChangesDialog, { open: drawerCloseRequested, handleOk: drawerCloseRequested ? handleDrawerCloseOk : handleNavigationOk, handleCancel: drawerCloseRequested ? handleDrawerCloseCancel : handleNavigationCancel, body: blockedNavigationMessage })
31273
+ /* @__PURE__ */ jsx(UnsavedChangesDialog, { open: drawerCloseRequested, handleOk: handleDrawerCloseOk, handleCancel: handleDrawerCloseCancel, body: blockedNavigationMessage })
31176
31274
  ] });
31177
31275
  }
31178
31276
  function EntityEditViewFormActions({
@@ -31638,6 +31736,9 @@ function EntityEditViewInner({
31638
31736
  }, [selectedTabProp]);
31639
31737
  const subcollections = (collection.subcollections ?? []).filter((c2) => !c2.hideFromNavigation);
31640
31738
  const subcollectionsCount = subcollections?.length ?? 0;
31739
+ const [subcollectionCounts, setSubcollectionCounts] = useState({});
31740
+ const selectedSubcollection = subcollections.find((subcollection) => (subcollection.id ?? subcollection.path) === selectedTab);
31741
+ const selectedSubcollectionDataSource = useDataSource();
31641
31742
  const customViews = collection.entityViews ?? [];
31642
31743
  const customViewsCount = customViews?.length ?? 0;
31643
31744
  const includeJsonView = collection.includeJsonView === void 0 ? true : collection.includeJsonView;
@@ -31711,15 +31812,18 @@ function EntityEditViewInner({
31711
31812
  const jsonView = selectedTab === JSON_TAB_VALUE || mountedTabsRef.current.has(JSON_TAB_VALUE) ? /* @__PURE__ */ jsx("div", { className: cls("relative flex-1 h-full overflow-auto w-full", {
31712
31813
  "hidden": selectedTab !== JSON_TAB_VALUE
31713
31814
  }), role: "tabpanel", children: /* @__PURE__ */ jsx(ErrorBoundary, { children: /* @__PURE__ */ jsx(EntityJsonPreview, { values: formContext?.values ?? entity?.values ?? {} }) }) }, "json_view") : null;
31714
- const subCollectionsViews = subcollections && subcollections.map((subcollection) => {
31715
- const subcollectionId = subcollection.id ?? subcollection.path;
31716
- const newFullPath = usedEntity ? `${path}/${usedEntity?.id}/${removeInitialAndTrailingSlashes(subcollection.path)}` : void 0;
31815
+ const subCollectionsViews = subcollections && subcollections.map((subcollection_0) => {
31816
+ const subcollectionId = subcollection_0.id ?? subcollection_0.path;
31817
+ const newFullPath = usedEntity ? `${path}/${usedEntity?.id}/${removeInitialAndTrailingSlashes(subcollection_0.path)}` : void 0;
31717
31818
  const newFullIdPath = fullIdPath && usedEntity ? `${fullIdPath}/${encodeEntityId(usedEntity.id)}/${removeInitialAndTrailingSlashes(subcollectionId)}` : void 0;
31718
- const newPathSegments = buildSubcollectionPathSegments(pathSegments, usedEntity?.id, subcollection.path);
31819
+ const newPathSegments = buildSubcollectionPathSegments(pathSegments, usedEntity?.id, subcollection_0.path);
31719
31820
  if (selectedTab !== subcollectionId) return null;
31720
31821
  return /* @__PURE__ */ jsxs("div", { className: "relative flex-1 h-full overflow-auto w-full", role: "tabpanel", children: [
31721
31822
  globalLoading && /* @__PURE__ */ jsx(CircularProgressCenter, {}),
31722
- !globalLoading && (usedEntity && newFullPath ? /* @__PURE__ */ jsx(EntityCollectionView$1, { fullPath: newFullPath, pathSegments: newPathSegments, fullIdPath: newFullIdPath, parentCollectionIds: [...parentCollectionIds, collection.id], isSubCollection: true, updateUrl: false, ...subcollection, openEntityMode: layout }) : /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center w-full h-full p-3", children: /* @__PURE__ */ jsx(Typography, { variant: "label", children: t("youd_need_to_save_before_additional_collections") }) }))
31823
+ !globalLoading && (usedEntity && newFullPath ? /* @__PURE__ */ jsx(EntityCollectionView$1, { fullPath: newFullPath, pathSegments: newPathSegments, fullIdPath: newFullIdPath, parentCollectionIds: [...parentCollectionIds, collection.id], isSubCollection: true, updateUrl: false, ...subcollection_0, openEntityMode: layout, onCountChange: (count) => setSubcollectionCounts((counts) => counts[subcollectionId] === count ? counts : {
31824
+ ...counts,
31825
+ [subcollectionId]: count
31826
+ }) }) : /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center w-full h-full p-3", children: /* @__PURE__ */ jsx(Typography, { variant: "label", children: t("youd_need_to_save_before_additional_collections") }) }))
31723
31827
  ] }, `subcol_${subcollectionId}`);
31724
31828
  }).filter(Boolean);
31725
31829
  const onSideTabClick = (value_0) => {
@@ -31755,7 +31859,7 @@ function EntityEditViewInner({
31755
31859
  onSaved?.(res);
31756
31860
  formProps?.onSaved?.(res);
31757
31861
  }, Builder: selectedSecondaryForm?.Builder });
31758
- const subcollectionTabs = subcollections && subcollections.filter((sub) => !groupedViews.includes(sub.id ?? sub.path)).map((subcollection_0) => /* @__PURE__ */ jsx(Tab, { className: "text-sm min-w-[120px]", value: subcollection_0.id ?? subcollection_0.path, children: subcollection_0.name }, `entity_detail_collection_tab_${subcollection_0.name}`));
31862
+ const subcollectionTabs = subcollections && subcollections.filter((sub) => !groupedViews.includes(sub.id ?? sub.path)).map((subcollection_1) => /* @__PURE__ */ jsx(Tab, { className: "text-sm min-w-[120px]", value: subcollection_1.id ?? subcollection_1.path, children: subcollection_1.name }, `entity_detail_collection_tab_${subcollection_1.name}`));
31759
31863
  const customViewTabsStart = resolvedEntityViews.filter((view) => view.position === "start" && !groupedViews.includes(view.key)).map((view_0) => /* @__PURE__ */ jsx(Tab, { className: !view_0.tabComponent ? "text-sm min-w-[120px]" : void 0, value: view_0.key, children: view_0.tabComponent ?? view_0.name }, `entity_detail_collection_tab_${view_0.name}`));
31760
31864
  const customViewTabsEnd = resolvedEntityViews.filter((view_1) => (!view_1.position || view_1.position === "end") && !groupedViews.includes(view_1.key)).map((view_2) => /* @__PURE__ */ jsx(Tab, { className: !view_2.tabComponent ? "text-sm min-w-[120px]" : void 0, value: view_2.key, children: view_2.tabComponent ?? view_2.name }, `entity_detail_collection_tab_${view_2.name}`));
31761
31865
  const viewGroupMenus = collection.viewGroups?.map((group) => {
@@ -31764,13 +31868,17 @@ function EntityEditViewInner({
31764
31868
  group.name,
31765
31869
  /* @__PURE__ */ jsx(ExpandMoreIcon, { className: "ml-1 -mr-1", size: "small" })
31766
31870
  ] }), children: group.views.map((viewId) => {
31767
- const subcollection_1 = subcollections.find((s) => (s.id ?? s.path) === viewId);
31871
+ const subcollection_2 = subcollections.find((s) => (s.id ?? s.path) === viewId);
31768
31872
  const customView_0 = resolvedEntityViews.find((v) => v.key === viewId);
31769
- const name = subcollection_1?.name ?? customView_0?.name ?? viewId;
31873
+ const name = subcollection_2?.name ?? customView_0?.name ?? viewId;
31770
31874
  return /* @__PURE__ */ jsx(MenuItem, { onClick: () => onSideTabClick(viewId), className: selectedTab === viewId ? "bg-surface-accent-100 dark:bg-surface-accent-900" : "", children: name }, `view_group_${group.name}_${viewId}`);
31771
31875
  }) }, `view_group_${group.name}`);
31772
31876
  });
31773
31877
  const shouldShowTopBar = Boolean(barActions) || hasAdditionalViews;
31878
+ const subcollectionTitle = layout === "side_panel" && selectedSubcollection && usedEntity ? (() => {
31879
+ const subcollectionId_0 = selectedSubcollection.id ?? selectedSubcollection.path;
31880
+ return /* @__PURE__ */ jsx(CollectionPathTitle, { path: fullIdPath ? `${fullIdPath}/${encodeEntityId(usedEntity.id)}/${removeInitialAndTrailingSlashes(subcollectionId_0)}` : `${path}/${usedEntity.id}/${removeInitialAndTrailingSlashes(selectedSubcollection.path)}`, name: selectedSubcollection.name, count: subcollectionCounts[subcollectionId_0] ?? (selectedSubcollectionDataSource.countEntities ? null : void 0) });
31881
+ })() : null;
31774
31882
  let result = /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col h-full w-full bg-white dark:bg-surface-900", children: [
31775
31883
  shouldShowTopBar && /* @__PURE__ */ jsxs("div", { className: cls("h-14 items-center overflow-hidden w-full border-b pl-2 pr-2 flex gap-2 bg-surface-50 dark:bg-surface-900", defaultBorderMixin), children: [
31776
31884
  barActions?.({
@@ -31779,6 +31887,7 @@ function EntityEditViewInner({
31779
31887
  values: formContext?.values ?? usedEntity?.values ?? {},
31780
31888
  status
31781
31889
  }),
31890
+ subcollectionTitle,
31782
31891
  /* @__PURE__ */ jsx("div", { className: "flex-grow" }),
31783
31892
  pluginActionsTop,
31784
31893
  globalLoading && /* @__PURE__ */ jsx("div", { className: "self-center", children: /* @__PURE__ */ jsx(CircularProgress, { size: "small" }) }),
@@ -32030,7 +32139,7 @@ const propsToSidePanel = (props, buildUrlCollectionPath, resolveIdsFrom, smallLa
32030
32139
  };
32031
32140
  };
32032
32141
  function useBuildSideDialogsController() {
32033
- const $ = c(21);
32142
+ const $ = c(23);
32034
32143
  const location = useLocation();
32035
32144
  const navigate = useNavigate();
32036
32145
  let t0;
@@ -32053,46 +32162,78 @@ function useBuildSideDialogsController() {
32053
32162
  const routesCount = useRef(0);
32054
32163
  let t2;
32055
32164
  if ($[2] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
32056
- t2 = (newPanels) => {
32057
- sidePanelsRef.current = newPanels;
32058
- setSidePanels(newPanels);
32059
- };
32165
+ t2 = {};
32060
32166
  $[2] = t2;
32061
32167
  } else {
32062
32168
  t2 = $[2];
32063
32169
  }
32064
- const updateSidePanels = t2;
32170
+ const entryKeysOfPanelsWithoutUrl = useRef(t2);
32065
32171
  let t3;
32066
- if ($[3] !== location.state) {
32067
- t3 = () => {
32172
+ if ($[3] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
32173
+ t3 = (newPanels) => {
32174
+ sidePanelsRef.current = newPanels;
32175
+ setSidePanels(newPanels);
32176
+ };
32177
+ $[3] = t3;
32178
+ } else {
32179
+ t3 = $[3];
32180
+ }
32181
+ const updateSidePanels = t3;
32182
+ let t4;
32183
+ if ($[4] !== location.key || $[5] !== location.state) {
32184
+ t4 = () => {
32068
32185
  const state = location.state;
32069
32186
  const panelKeys = state?.panels ?? [];
32070
- const newPanels_0 = panelKeys.map((key) => routesStore.current[key]).filter(_temp$4);
32187
+ const panelsInHistory = panelKeys.map((key) => routesStore.current[key]).filter(_temp$4);
32188
+ const keptPanels = [];
32189
+ let matched = 0;
32190
+ for (const panel of sidePanelsRef.current) {
32191
+ if (panelsInHistory[matched]?.key === panel.key) {
32192
+ keptPanels.push(panel);
32193
+ matched++;
32194
+ } else {
32195
+ if (!panel.urlPath && (keptPanels.length > 0 || entryKeysOfPanelsWithoutUrl.current[panel.key] === location.key)) {
32196
+ keptPanels.push(panel);
32197
+ } else {
32198
+ break;
32199
+ }
32200
+ }
32201
+ }
32202
+ const newPanels_0 = [...keptPanels, ...panelsInHistory.slice(matched)];
32071
32203
  if (!equal(sidePanelsRef.current.map(_temp2$3), newPanels_0.map(_temp3$2))) {
32072
32204
  updateSidePanels(newPanels_0);
32073
32205
  }
32074
32206
  };
32075
- $[3] = location.state;
32076
- $[4] = t3;
32077
- } else {
32078
- t3 = $[4];
32079
- }
32080
- let t4;
32081
- if ($[5] !== location) {
32082
- t4 = [location];
32083
- $[5] = location;
32207
+ $[4] = location.key;
32208
+ $[5] = location.state;
32084
32209
  $[6] = t4;
32085
32210
  } else {
32086
32211
  t4 = $[6];
32087
32212
  }
32088
- useEffect(t3, t4);
32089
32213
  let t5;
32090
- if ($[7] !== location || $[8] !== navigate) {
32091
- t5 = () => {
32214
+ if ($[7] !== location) {
32215
+ t5 = [location];
32216
+ $[7] = location;
32217
+ $[8] = t5;
32218
+ } else {
32219
+ t5 = $[8];
32220
+ }
32221
+ useEffect(t4, t5);
32222
+ let t6;
32223
+ if ($[9] !== location || $[10] !== navigate) {
32224
+ t6 = (key_0) => {
32092
32225
  const currentPanels = sidePanelsRef.current;
32093
32226
  if (currentPanels.length === 0) {
32094
32227
  return;
32095
32228
  }
32229
+ const index = key_0 !== void 0 ? currentPanels.findLastIndex((p_2) => p_2.key === key_0) : -1;
32230
+ if (index !== -1 && index < currentPanels.length - 1 && !currentPanels[index].urlPath) {
32231
+ updateSidePanels(currentPanels.filter((_, i) => i !== index));
32232
+ if (routesCount.current > 0) {
32233
+ routesCount.current = routesCount.current - 1;
32234
+ }
32235
+ return;
32236
+ }
32096
32237
  const lastSidePanel = currentPanels[currentPanels.length - 1];
32097
32238
  const updatedPanels = [...currentPanels.slice(0, -1)];
32098
32239
  updateSidePanels(updatedPanels);
@@ -32114,28 +32255,31 @@ function useBuildSideDialogsController() {
32114
32255
  }
32115
32256
  }
32116
32257
  };
32117
- $[7] = location;
32118
- $[8] = navigate;
32119
- $[9] = t5;
32258
+ $[9] = location;
32259
+ $[10] = navigate;
32260
+ $[11] = t6;
32120
32261
  } else {
32121
- t5 = $[9];
32262
+ t6 = $[11];
32122
32263
  }
32123
- const close = t5;
32124
- let t6;
32125
- if ($[10] !== location || $[11] !== navigate) {
32126
- t6 = (panelProps) => {
32264
+ const close = t6;
32265
+ let t7;
32266
+ if ($[12] !== location || $[13] !== navigate) {
32267
+ t7 = (panelProps) => {
32127
32268
  const newPanels_1 = Array.isArray(panelProps) ? panelProps : [panelProps];
32128
- newPanels_1.forEach((panel) => {
32129
- routesStore.current[panel.key] = panel;
32269
+ newPanels_1.forEach((panel_0) => {
32270
+ routesStore.current[panel_0.key] = panel_0;
32271
+ if (!panel_0.urlPath) {
32272
+ entryKeysOfPanelsWithoutUrl.current[panel_0.key] = location.key;
32273
+ }
32130
32274
  });
32131
32275
  routesCount.current = routesCount.current + newPanels_1.length;
32132
32276
  const baseLocation_0 = location.state?.base_location ?? location;
32133
32277
  const currentPanels_0 = sidePanelsRef.current;
32134
32278
  const updatedPanels_0 = [...currentPanels_0, ...newPanels_1];
32135
32279
  updateSidePanels(updatedPanels_0);
32136
- newPanels_1.forEach((panel_0) => {
32137
- if (panel_0.urlPath) {
32138
- navigate(panel_0.urlPath, {
32280
+ newPanels_1.forEach((panel_1) => {
32281
+ if (panel_1.urlPath) {
32282
+ navigate(panel_1.urlPath, {
32139
32283
  state: {
32140
32284
  base_location: baseLocation_0,
32141
32285
  panels: updatedPanels_0.map(_temp5)
@@ -32144,27 +32288,30 @@ function useBuildSideDialogsController() {
32144
32288
  }
32145
32289
  });
32146
32290
  };
32147
- $[10] = location;
32148
- $[11] = navigate;
32149
- $[12] = t6;
32291
+ $[12] = location;
32292
+ $[13] = navigate;
32293
+ $[14] = t7;
32150
32294
  } else {
32151
- t6 = $[12];
32295
+ t7 = $[14];
32152
32296
  }
32153
- const open = t6;
32154
- let t7;
32155
- if ($[13] !== location || $[14] !== navigate) {
32156
- t7 = (panelProps_0) => {
32297
+ const open = t7;
32298
+ let t8;
32299
+ if ($[15] !== location || $[16] !== navigate) {
32300
+ t8 = (panelProps_0) => {
32157
32301
  const newPanels_2 = Array.isArray(panelProps_0) ? panelProps_0 : [panelProps_0];
32158
- newPanels_2.forEach((panel_1) => {
32159
- routesStore.current[panel_1.key] = panel_1;
32302
+ newPanels_2.forEach((panel_2) => {
32303
+ routesStore.current[panel_2.key] = panel_2;
32304
+ if (!panel_2.urlPath) {
32305
+ entryKeysOfPanelsWithoutUrl.current[panel_2.key] = location.key;
32306
+ }
32160
32307
  });
32161
32308
  const baseLocation_1 = location.state?.base_location ?? location;
32162
32309
  const currentPanels_1 = sidePanelsRef.current;
32163
32310
  const updatedPanels_1 = [...currentPanels_1.slice(0, -newPanels_2.length), ...newPanels_2];
32164
32311
  updateSidePanels(updatedPanels_1);
32165
- newPanels_2.forEach((panel_2) => {
32166
- if (panel_2.urlPath) {
32167
- navigate(panel_2.urlPath, {
32312
+ newPanels_2.forEach((panel_3) => {
32313
+ if (panel_3.urlPath) {
32314
+ navigate(panel_3.urlPath, {
32168
32315
  replace: true,
32169
32316
  state: {
32170
32317
  base_location: baseLocation_1,
@@ -32174,41 +32321,41 @@ function useBuildSideDialogsController() {
32174
32321
  }
32175
32322
  });
32176
32323
  };
32177
- $[13] = location;
32178
- $[14] = navigate;
32179
- $[15] = t7;
32324
+ $[15] = location;
32325
+ $[16] = navigate;
32326
+ $[17] = t8;
32180
32327
  } else {
32181
- t7 = $[15];
32328
+ t8 = $[17];
32182
32329
  }
32183
- const replace = t7;
32184
- let t8;
32185
- if ($[16] !== close || $[17] !== open || $[18] !== replace || $[19] !== sidePanels) {
32186
- t8 = {
32330
+ const replace = t8;
32331
+ let t9;
32332
+ if ($[18] !== close || $[19] !== open || $[20] !== replace || $[21] !== sidePanels) {
32333
+ t9 = {
32187
32334
  sidePanels,
32188
32335
  setSidePanels: updateSidePanels,
32189
32336
  close,
32190
32337
  open,
32191
32338
  replace
32192
32339
  };
32193
- $[16] = close;
32194
- $[17] = open;
32195
- $[18] = replace;
32196
- $[19] = sidePanels;
32197
- $[20] = t8;
32340
+ $[18] = close;
32341
+ $[19] = open;
32342
+ $[20] = replace;
32343
+ $[21] = sidePanels;
32344
+ $[22] = t9;
32198
32345
  } else {
32199
- t8 = $[20];
32346
+ t9 = $[22];
32200
32347
  }
32201
- return t8;
32348
+ return t9;
32349
+ }
32350
+ function _temp6(p_5) {
32351
+ return p_5.key;
32202
32352
  }
32203
- function _temp6(p_4) {
32353
+ function _temp5(p_4) {
32204
32354
  return p_4.key;
32205
32355
  }
32206
- function _temp5(p_3) {
32356
+ function _temp4$1(p_3) {
32207
32357
  return p_3.key;
32208
32358
  }
32209
- function _temp4$1(p_2) {
32210
- return p_2.key;
32211
- }
32212
32359
  function _temp3$2(p_1) {
32213
32360
  return p_1.key;
32214
32361
  }
@@ -35012,6 +35159,7 @@ const en = {
35012
35159
  editor_cancel: "Cancel",
35013
35160
  editor_remove_link: "Remove link",
35014
35161
  editor_paste_or_type_link: "Paste or type link",
35162
+ editor_invalid_url: "Invalid URL",
35015
35163
  editor_open_in_new_window: "Open in new window",
35016
35164
  editor_bold: "Bold",
35017
35165
  editor_italic: "Italic",
@@ -35717,6 +35865,7 @@ const es = {
35717
35865
  editor_cancel: "Cancelar",
35718
35866
  editor_remove_link: "Eliminar enlace",
35719
35867
  editor_paste_or_type_link: "Pega o escribe el enlace",
35868
+ editor_invalid_url: "URL no válida",
35720
35869
  editor_open_in_new_window: "Abrir en una ventana nueva",
35721
35870
  editor_bold: "Negrita",
35722
35871
  editor_italic: "Cursiva",
@@ -35814,12 +35963,12 @@ const es = {
35814
35963
  };
35815
35964
  const FIRECMS_NS = "firecms_core";
35816
35965
  const localeLoaders = {
35817
- de: () => import("./de-CBOjCvsy.js").then((m) => m.de),
35818
- fr: () => import("./fr-DRfttcG0.js").then((m) => m.fr),
35819
- it: () => import("./it-l2KXtx9n.js").then((m) => m.it),
35820
- hi: () => import("./hi-DwieOZNf.js").then((m) => m.hi),
35821
- pt: () => import("./pt-BoHpabw1.js").then((m) => m.pt),
35822
- pl: () => import("./pl-DPZrdKhi.js").then((m) => m.pl)
35966
+ de: () => import("./de-CUF9f7S-.js").then((m) => m.de),
35967
+ fr: () => import("./fr-DmkMX6hp.js").then((m) => m.fr),
35968
+ it: () => import("./it-BwQflFGz.js").then((m) => m.it),
35969
+ hi: () => import("./hi-BKuaMr7w.js").then((m) => m.hi),
35970
+ pt: () => import("./pt-D5q7OQp1.js").then((m) => m.pt),
35971
+ pl: () => import("./pl-BPsAvZvc.js").then((m) => m.pl)
35823
35972
  };
35824
35973
  const loadedLocales = {
35825
35974
  en,
@@ -35988,7 +36137,7 @@ function buildResources(translations) {
35988
36137
  }
35989
36138
  return resources;
35990
36139
  }
35991
- const LazyFireCMSEditor = React__default.lazy(() => import("./editor-BSo_aS1I.js").then((module) => ({
36140
+ const LazyFireCMSEditor = React__default.lazy(() => import("./editor-WZytSO_1.js").then((module) => ({
35992
36141
  default: module.FireCMSEditor
35993
36142
  })));
35994
36143
  function FireCMSEditor(props) {