@firecms/core 3.0.0-canary.102 → 3.0.0-canary.104

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 (59) hide show
  1. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +1 -1
  2. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  3. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  4. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  5. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  6. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  7. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  8. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +9 -0
  9. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  10. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  11. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +1 -1
  12. package/dist/form/index.d.ts +2 -2
  13. package/dist/index.es.js +269 -817
  14. package/dist/index.es.js.map +1 -1
  15. package/dist/index.umd.js +268 -815
  16. package/dist/index.umd.js.map +1 -1
  17. package/dist/types/collections.d.ts +11 -1
  18. package/dist/types/datasource.d.ts +12 -12
  19. package/dist/types/entities.d.ts +1 -0
  20. package/dist/types/fields.d.ts +5 -13
  21. package/dist/types/navigation.d.ts +1 -0
  22. package/dist/util/index.d.ts +1 -0
  23. package/dist/util/storage.d.ts +1 -1
  24. package/package.json +5 -5
  25. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +4 -2
  26. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +3 -5
  27. package/src/components/EntityCollectionView/EntityCollectionView.tsx +4 -4
  28. package/src/components/common/useTableSearchHelper.ts +1 -0
  29. package/src/core/DefaultDrawer.tsx +1 -1
  30. package/src/core/EntityEditView.tsx +3 -4
  31. package/src/core/field_configs.tsx +2 -2
  32. package/src/form/PropertyFieldBinding.tsx +4 -8
  33. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +4 -5
  34. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +3 -3
  35. package/src/form/field_bindings/BlockFieldBinding.tsx +5 -6
  36. package/src/form/field_bindings/KeyValueFieldBinding.tsx +5 -5
  37. package/src/form/field_bindings/MapFieldBinding.tsx +6 -8
  38. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +133 -0
  39. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +5 -5
  40. package/src/form/field_bindings/ReferenceFieldBinding.tsx +5 -4
  41. package/src/form/field_bindings/RepeatFieldBinding.tsx +6 -7
  42. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +2 -2
  43. package/src/form/index.tsx +2 -2
  44. package/src/hooks/data/save.ts +5 -1
  45. package/src/internal/useBuildDataSource.ts +29 -14
  46. package/src/preview/PropertyPreview.tsx +2 -2
  47. package/src/types/collections.ts +13 -1
  48. package/src/types/datasource.ts +13 -16
  49. package/src/types/entities.ts +2 -0
  50. package/src/types/fields.tsx +5 -15
  51. package/src/types/navigation.ts +1 -0
  52. package/src/util/index.ts +1 -0
  53. package/src/util/references.ts +3 -0
  54. package/src/util/storage.ts +1 -1
  55. package/src/util/useStorageUploadController.tsx +2 -2
  56. package/dist/form/PropertiesForm.d.ts +0 -8
  57. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  58. package/src/form/PropertiesForm.tsx +0 -81
  59. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
package/dist/index.umd.js CHANGED
@@ -1,6 +1,6 @@
1
1
  (function(global, factory) {
2
- typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("react/jsx-runtime"), require("react"), require("notistack"), require("object-hash"), require("@firecms/formex"), require("@firecms/ui"), require("react-fast-compare"), require("react-router-dom"), require("date-fns"), require("date-fns/locale"), require("react-use-measure"), require("react-dropzone"), require("@hello-pangea/dnd"), require("react-image-file-resizer"), require("fuse.js"), require("react-window"), require("yup"), require("markdown-it"), require("react-markdown-editor-lite"), require("@radix-ui/react-portal")) : typeof define === "function" && define.amd ? define(["exports", "react/jsx-runtime", "react", "notistack", "object-hash", "@firecms/formex", "@firecms/ui", "react-fast-compare", "react-router-dom", "date-fns", "date-fns/locale", "react-use-measure", "react-dropzone", "@hello-pangea/dnd", "react-image-file-resizer", "fuse.js", "react-window", "yup", "markdown-it", "react-markdown-editor-lite", "@radix-ui/react-portal"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global["FireCMS Core"] = {}, global.jsxRuntime, global.React, global.notistack, global.hash, global.formex, global.ui, global.equal, global.reactRouterDom, global.dateFns, global.locales, global.useMeasure, global.reactDropzone, global.dnd, global.Resizer, global.Fuse, global.reactWindow, global.yup, global.MarkdownIt, global.MdEditor, global.Portal));
3
- })(this, function(exports2, jsxRuntime, React, notistack, hash, formex, ui, equal, reactRouterDom, dateFns, locales, useMeasure, reactDropzone, dnd, Resizer, Fuse, reactWindow, yup, MarkdownIt, MdEditor, Portal) {
2
+ typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("react/jsx-runtime"), require("react"), require("notistack"), require("object-hash"), require("@firecms/formex"), require("@firecms/ui"), require("react-fast-compare"), require("react-router-dom"), require("date-fns"), require("date-fns/locale"), require("react-use-measure"), require("react-dropzone"), require("@hello-pangea/dnd"), require("react-image-file-resizer"), require("fuse.js"), require("react-window"), require("yup"), require("@firecms/editor"), require("@radix-ui/react-portal")) : typeof define === "function" && define.amd ? define(["exports", "react/jsx-runtime", "react", "notistack", "object-hash", "@firecms/formex", "@firecms/ui", "react-fast-compare", "react-router-dom", "date-fns", "date-fns/locale", "react-use-measure", "react-dropzone", "@hello-pangea/dnd", "react-image-file-resizer", "fuse.js", "react-window", "yup", "@firecms/editor", "@radix-ui/react-portal"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global["FireCMS Core"] = {}, global.jsxRuntime, global.React, global.notistack, global.hash, global.formex, global.ui, global.equal, global.reactRouterDom, global.dateFns, global.locales, global.useMeasure, global.reactDropzone, global.dnd, global.Resizer, global.Fuse, global.reactWindow, global.yup, global.editor, global.Portal));
3
+ })(this, function(exports2, jsxRuntime, React, notistack, hash, formex, ui, equal, reactRouterDom, dateFns, locales, useMeasure, reactDropzone, dnd, Resizer, Fuse, reactWindow, yup, editor, Portal) {
4
4
  "use strict";
5
5
  function _interopNamespaceDefault(e) {
6
6
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
@@ -2885,6 +2885,9 @@
2885
2885
  function getEntityPreviewKeys(targetCollection, fields, previewProperties, limit = 3) {
2886
2886
  const allProperties = Object.keys(targetCollection.properties);
2887
2887
  let listProperties = previewProperties?.filter((p) => allProperties.includes(p));
2888
+ if (!listProperties && targetCollection.previewProperties) {
2889
+ listProperties = targetCollection.previewProperties?.filter((p) => allProperties.includes(p));
2890
+ }
2888
2891
  if (listProperties && listProperties.length > 0) {
2889
2892
  return listProperties;
2890
2893
  } else {
@@ -3153,6 +3156,99 @@
3153
3156
  prev.current = props;
3154
3157
  });
3155
3158
  }
3159
+ async function resolveStorageFilenameString({
3160
+ input,
3161
+ storage,
3162
+ values,
3163
+ entityId,
3164
+ path,
3165
+ property,
3166
+ file,
3167
+ propertyKey
3168
+ }) {
3169
+ let result;
3170
+ if (typeof input === "function") {
3171
+ result = await input({
3172
+ path,
3173
+ entityId,
3174
+ values,
3175
+ property,
3176
+ file,
3177
+ storage,
3178
+ propertyKey
3179
+ });
3180
+ if (!result)
3181
+ console.warn("Storage callback returned empty result. Using default name value");
3182
+ } else {
3183
+ result = replacePlaceholders({
3184
+ file,
3185
+ input,
3186
+ entityId,
3187
+ propertyKey,
3188
+ path
3189
+ });
3190
+ }
3191
+ if (!result)
3192
+ result = randomString() + "_" + file.name;
3193
+ return result;
3194
+ }
3195
+ function resolveStoragePathString({
3196
+ input,
3197
+ storage,
3198
+ values,
3199
+ entityId,
3200
+ path,
3201
+ property,
3202
+ file,
3203
+ propertyKey
3204
+ }) {
3205
+ let result;
3206
+ if (typeof input === "function") {
3207
+ result = input({
3208
+ path,
3209
+ entityId,
3210
+ values,
3211
+ property,
3212
+ file,
3213
+ storage,
3214
+ propertyKey
3215
+ });
3216
+ if (!result)
3217
+ console.warn("Storage callback returned empty result. Using default name value");
3218
+ } else {
3219
+ result = replacePlaceholders({
3220
+ file,
3221
+ input,
3222
+ entityId,
3223
+ propertyKey,
3224
+ path
3225
+ });
3226
+ }
3227
+ if (!result)
3228
+ result = randomString() + "_" + file.name;
3229
+ return result;
3230
+ }
3231
+ function replacePlaceholders({
3232
+ file,
3233
+ input,
3234
+ entityId,
3235
+ propertyKey,
3236
+ path
3237
+ }) {
3238
+ const ext = file.name.split(".").pop();
3239
+ let result = input.replace("{entityId}", entityId).replace("{propertyKey}", propertyKey).replace("{rand}", randomString()).replace("{file}", file.name).replace("{file.type}", file.type);
3240
+ if (path) {
3241
+ result = result.replace("{path}", path);
3242
+ }
3243
+ if (ext) {
3244
+ result = result.replace("{file.ext}", ext);
3245
+ const name = file.name.replace(`.${ext}`, "");
3246
+ result = result.replace("{file.name}", name);
3247
+ }
3248
+ if (!result)
3249
+ result = randomString() + "_" + file.name;
3250
+ return result;
3251
+ }
3156
3252
  const DataSourceContext = React.createContext({});
3157
3253
  const useDataSource = (collection) => {
3158
3254
  const defaultDataSource = React.useContext(DataSourceContext);
@@ -3496,7 +3592,11 @@
3496
3592
  } else {
3497
3593
  updatedValues = values;
3498
3594
  }
3499
- console.log("Saving entity", entityId, updatedValues);
3595
+ console.log("Saving entity", {
3596
+ entityId,
3597
+ updatedValues,
3598
+ collection
3599
+ });
3500
3600
  return dataSource.saveEntity({
3501
3601
  collection,
3502
3602
  path: resolvedPath,
@@ -5805,6 +5905,8 @@
5805
5905
  previewType: stringProperty.url
5806
5906
  }
5807
5907
  );
5908
+ } else if (stringProperty.markdown) {
5909
+ content = /* @__PURE__ */ jsxRuntime.jsx(ui.Markdown, { source: value, size: "small" });
5808
5910
  } else if (stringProperty.storage) {
5809
5911
  const filePath = stringProperty.storage.previewUrl ? stringProperty.storage.previewUrl(value) : value;
5810
5912
  content = /* @__PURE__ */ jsxRuntime.jsx(
@@ -5816,8 +5918,6 @@
5816
5918
  storagePathOrDownloadUrl: filePath
5817
5919
  }
5818
5920
  );
5819
- } else if (stringProperty.markdown) {
5820
- content = /* @__PURE__ */ jsxRuntime.jsx(ui.Markdown, { source: value, size: "small" });
5821
5921
  } else {
5822
5922
  content = /* @__PURE__ */ jsxRuntime.jsx(
5823
5923
  StringPropertyPreview,
@@ -6472,99 +6572,6 @@
6472
6572
  return this.props.children;
6473
6573
  }
6474
6574
  }
6475
- async function resolveFilenameString({
6476
- input,
6477
- storage,
6478
- values,
6479
- entityId,
6480
- path,
6481
- property,
6482
- file,
6483
- propertyKey
6484
- }) {
6485
- let result;
6486
- if (typeof input === "function") {
6487
- result = await input({
6488
- path,
6489
- entityId,
6490
- values,
6491
- property,
6492
- file,
6493
- storage,
6494
- propertyKey
6495
- });
6496
- if (!result)
6497
- console.warn("Storage callback returned empty result. Using default name value");
6498
- } else {
6499
- result = replacePlaceholders({
6500
- file,
6501
- input,
6502
- entityId,
6503
- propertyKey,
6504
- path
6505
- });
6506
- }
6507
- if (!result)
6508
- result = randomString() + "_" + file.name;
6509
- return result;
6510
- }
6511
- function resolveStoragePathString({
6512
- input,
6513
- storage,
6514
- values,
6515
- entityId,
6516
- path,
6517
- property,
6518
- file,
6519
- propertyKey
6520
- }) {
6521
- let result;
6522
- if (typeof input === "function") {
6523
- result = input({
6524
- path,
6525
- entityId,
6526
- values,
6527
- property,
6528
- file,
6529
- storage,
6530
- propertyKey
6531
- });
6532
- if (!result)
6533
- console.warn("Storage callback returned empty result. Using default name value");
6534
- } else {
6535
- result = replacePlaceholders({
6536
- file,
6537
- input,
6538
- entityId,
6539
- propertyKey,
6540
- path
6541
- });
6542
- }
6543
- if (!result)
6544
- result = randomString() + "_" + file.name;
6545
- return result;
6546
- }
6547
- function replacePlaceholders({
6548
- file,
6549
- input,
6550
- entityId,
6551
- propertyKey,
6552
- path
6553
- }) {
6554
- const ext = file.name.split(".").pop();
6555
- let result = input.replace("{entityId}", entityId).replace("{propertyKey}", propertyKey).replace("{rand}", randomString()).replace("{file}", file.name).replace("{file.type}", file.type);
6556
- if (path) {
6557
- result = result.replace("{path}", path);
6558
- }
6559
- if (ext) {
6560
- result = result.replace("{file.ext}", ext);
6561
- const name = file.name.replace(`.${ext}`, "");
6562
- result = result.replace("{file.name}", name);
6563
- }
6564
- if (!result)
6565
- result = randomString() + "_" + file.name;
6566
- return result;
6567
- }
6568
6575
  function useStorageUploadController({
6569
6576
  entityId,
6570
6577
  entityValues,
@@ -6599,7 +6606,7 @@
6599
6606
  }, [internalInitialValue, value, initialValue]);
6600
6607
  const fileNameBuilder = React.useCallback(async (file) => {
6601
6608
  if (storage.fileName) {
6602
- const fileName = await resolveFilenameString({
6609
+ const fileName = await resolveStorageFilenameString({
6603
6610
  input: storage.fileName,
6604
6611
  storage,
6605
6612
  values: entityValues,
@@ -7795,6 +7802,8 @@
7795
7802
  }, [property]);
7796
7803
  }
7797
7804
  function isStorageProperty(property) {
7805
+ if (property.dataType === "string" && property.markdown)
7806
+ return false;
7798
7807
  if (property.dataType === "string" && property.storage)
7799
7808
  return true;
7800
7809
  if (property.dataType === "array") {
@@ -8044,7 +8053,7 @@
8044
8053
  }
8045
8054
  );
8046
8055
  fullHeight = true;
8047
- } else if (!stringProperty.storage) {
8056
+ } else if (stringProperty.markdown || !stringProperty.storage) {
8048
8057
  const multiline = Boolean(stringProperty.multiline) || Boolean(stringProperty.markdown);
8049
8058
  innerComponent = /* @__PURE__ */ jsxRuntime.jsx(
8050
8059
  VirtualTableInput,
@@ -10500,6 +10509,7 @@
10500
10509
  const props = {
10501
10510
  context,
10502
10511
  path: fullPath,
10512
+ databaseId: collection.databaseId,
10503
10513
  collection,
10504
10514
  parentCollectionIds
10505
10515
  };
@@ -11838,7 +11848,7 @@
11838
11848
  const customizationController = useCustomizationController();
11839
11849
  const [savingError, setSavingError] = React.useState();
11840
11850
  const [popupLocation, setPopupLocation] = React.useState();
11841
- const entityId = entityProp?.id;
11851
+ const entityId = entityProp.id;
11842
11852
  const [entity, setEntity] = React.useState(entityProp);
11843
11853
  const [internalValue, setInternalValue] = React.useState(entity?.values);
11844
11854
  const collection = inputCollection ? resolveCollection({
@@ -11982,9 +11992,8 @@
11982
11992
  includeDescription: false,
11983
11993
  underlyingValueHasChanged: false,
11984
11994
  context: formContext,
11985
- tableMode: true,
11986
11995
  partOfArray: false,
11987
- partOfBlock: false,
11996
+ minimalistView: false,
11988
11997
  autoFocus: open
11989
11998
  } : void 0;
11990
11999
  let internalForm = /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -12342,7 +12351,7 @@
12342
12351
  value,
12343
12352
  property,
12344
12353
  entityId
12345
- }) => dataSource.checkUniqueField(fullPath, name, value, entityId),
12354
+ }) => dataSource.checkUniqueField(fullPath, name, value, entityId, collection.databaseId),
12346
12355
  [fullPath]
12347
12356
  );
12348
12357
  const onValueChange = ({
@@ -12677,7 +12686,7 @@
12677
12686
  },
12678
12687
  `collection_table_${fullPath}`
12679
12688
  ),
12680
- /* @__PURE__ */ jsxRuntime.jsx(
12689
+ popupCell && /* @__PURE__ */ jsxRuntime.jsx(
12681
12690
  PopupFormField,
12682
12691
  {
12683
12692
  open: Boolean(popupCell),
@@ -12685,7 +12694,7 @@
12685
12694
  cellRect: popupCell?.cellRect,
12686
12695
  propertyKey: popupCell?.propertyKey,
12687
12696
  collection,
12688
- entity: popupCell?.entity,
12697
+ entity: popupCell.entity,
12689
12698
  tableKey: tableKey.current,
12690
12699
  customFieldValidator: uniqueFieldValidator,
12691
12700
  path: resolvedFullPath,
@@ -13954,7 +13963,7 @@
13954
13963
  showError,
13955
13964
  disabled,
13956
13965
  isSubmitting,
13957
- tableMode,
13966
+ minimalistView,
13958
13967
  property,
13959
13968
  includeDescription,
13960
13969
  setValue,
@@ -14068,7 +14077,7 @@
14068
14077
  ] })
14069
14078
  ] });
14070
14079
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
14071
- !tableMode && /* @__PURE__ */ jsxRuntime.jsx(
14080
+ !minimalistView && /* @__PURE__ */ jsxRuntime.jsx(
14072
14081
  ui.ExpandablePanel,
14073
14082
  {
14074
14083
  titleClassName: ui.fieldBackgroundMixin,
@@ -14078,7 +14087,7 @@
14078
14087
  children: body
14079
14088
  }
14080
14089
  ),
14081
- tableMode && body,
14090
+ minimalistView && body,
14082
14091
  /* @__PURE__ */ jsxRuntime.jsx(
14083
14092
  FieldHelperText,
14084
14093
  {
@@ -14163,7 +14172,7 @@
14163
14172
  error,
14164
14173
  showError,
14165
14174
  autoFocus,
14166
- tableMode,
14175
+ minimalistView,
14167
14176
  property,
14168
14177
  includeDescription,
14169
14178
  context,
@@ -14198,7 +14207,7 @@
14198
14207
  setValue
14199
14208
  });
14200
14209
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
14201
- !tableMode && /* @__PURE__ */ jsxRuntime.jsx(
14210
+ !minimalistView && /* @__PURE__ */ jsxRuntime.jsx(
14202
14211
  LabelWithIcon,
14203
14212
  {
14204
14213
  icon: getIconForProperty(property, "small"),
@@ -14717,7 +14726,7 @@
14717
14726
  value,
14718
14727
  error,
14719
14728
  showError,
14720
- tableMode,
14729
+ minimalistView,
14721
14730
  property,
14722
14731
  includeDescription,
14723
14732
  context
@@ -14725,7 +14734,7 @@
14725
14734
  if (!context.entityId)
14726
14735
  throw new Error("ReadOnlyFieldBinding: Entity id is null");
14727
14736
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
14728
- !tableMode && /* @__PURE__ */ jsxRuntime.jsx(
14737
+ !minimalistView && /* @__PURE__ */ jsxRuntime.jsx(
14729
14738
  LabelWithIcon,
14730
14739
  {
14731
14740
  icon: getIconForProperty(property, "small"),
@@ -14773,6 +14782,7 @@
14773
14782
  showError,
14774
14783
  isSubmitting,
14775
14784
  disabled,
14785
+ minimalistView,
14776
14786
  touched,
14777
14787
  autoFocus,
14778
14788
  property,
@@ -14813,7 +14823,7 @@
14813
14823
  referenceDialogController.open();
14814
14824
  }, [referenceDialogController]);
14815
14825
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
14816
- /* @__PURE__ */ jsxRuntime.jsx(
14826
+ !minimalistView && /* @__PURE__ */ jsxRuntime.jsx(
14817
14827
  LabelWithIcon,
14818
14828
  {
14819
14829
  icon: getIconForProperty(property, "small"),
@@ -14893,9 +14903,8 @@
14893
14903
  includeDescription,
14894
14904
  underlyingValueHasChanged,
14895
14905
  disabled,
14896
- tableMode,
14897
14906
  partOfArray,
14898
- partOfBlock,
14907
+ minimalistView,
14899
14908
  autoFocus,
14900
14909
  index
14901
14910
  }) {
@@ -14957,9 +14966,8 @@
14957
14966
  underlyingValueHasChanged,
14958
14967
  context,
14959
14968
  disabled,
14960
- tableMode,
14961
14969
  partOfArray,
14962
- partOfBlock,
14970
+ minimalistView,
14963
14971
  autoFocus
14964
14972
  };
14965
14973
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -14982,9 +14990,8 @@
14982
14990
  property,
14983
14991
  includeDescription,
14984
14992
  underlyingValueHasChanged,
14985
- tableMode,
14986
14993
  partOfArray,
14987
- partOfBlock,
14994
+ minimalistView,
14988
14995
  autoFocus,
14989
14996
  context,
14990
14997
  disabled
@@ -15029,9 +15036,8 @@
15029
15036
  property,
15030
15037
  disabled: disabled ?? false,
15031
15038
  underlyingValueHasChanged: underlyingValueHasChanged ?? false,
15032
- tableMode: tableMode ?? false,
15033
15039
  partOfArray: partOfArray ?? false,
15034
- partOfBlock: partOfBlock ?? false,
15040
+ minimalistView: minimalistView ?? false,
15035
15041
  autoFocus: autoFocus ?? false,
15036
15042
  customProps: customFieldProps,
15037
15043
  context
@@ -15098,8 +15104,7 @@
15098
15104
  error,
15099
15105
  disabled,
15100
15106
  property,
15101
- partOfBlock,
15102
- tableMode,
15107
+ minimalistView,
15103
15108
  includeDescription,
15104
15109
  underlyingValueHasChanged,
15105
15110
  autoFocus,
@@ -15132,9 +15137,8 @@
15132
15137
  includeDescription,
15133
15138
  underlyingValueHasChanged,
15134
15139
  context,
15135
- tableMode: false,
15136
15140
  partOfArray: false,
15137
- partOfBlock: false,
15141
+ minimalistView: false,
15138
15142
  autoFocus: autoFocus && index === 0
15139
15143
  };
15140
15144
  return /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(ErrorBoundary, { children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -15155,7 +15159,7 @@
15155
15159
  }
15156
15160
  );
15157
15161
  return /* @__PURE__ */ jsxRuntime.jsxs(ErrorBoundary, { children: [
15158
- !tableMode && !partOfBlock && /* @__PURE__ */ jsxRuntime.jsx(
15162
+ !minimalistView && !minimalistView && /* @__PURE__ */ jsxRuntime.jsx(
15159
15163
  ui.ExpandablePanel,
15160
15164
  {
15161
15165
  initiallyExpanded: expanded,
@@ -15164,7 +15168,7 @@
15164
15168
  children: mapFormView
15165
15169
  }
15166
15170
  ),
15167
- (tableMode || partOfBlock) && mapFormView,
15171
+ (minimalistView || minimalistView) && mapFormView,
15168
15172
  /* @__PURE__ */ jsxRuntime.jsx(
15169
15173
  FieldHelperText,
15170
15174
  {
@@ -15185,7 +15189,7 @@
15185
15189
  disabled,
15186
15190
  property,
15187
15191
  setValue,
15188
- tableMode,
15192
+ minimalistView,
15189
15193
  includeDescription,
15190
15194
  underlyingValueHasChanged,
15191
15195
  autoFocus,
@@ -15216,7 +15220,7 @@
15216
15220
  }
15217
15221
  );
15218
15222
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
15219
- !tableMode && /* @__PURE__ */ jsxRuntime.jsx(
15223
+ !minimalistView && /* @__PURE__ */ jsxRuntime.jsx(
15220
15224
  ui.ExpandablePanel,
15221
15225
  {
15222
15226
  initiallyExpanded: expanded,
@@ -15225,7 +15229,7 @@
15225
15229
  children: mapFormView
15226
15230
  }
15227
15231
  ),
15228
- tableMode && mapFormView,
15232
+ minimalistView && mapFormView,
15229
15233
  /* @__PURE__ */ jsxRuntime.jsx(
15230
15234
  FieldHelperText,
15231
15235
  {
@@ -15810,7 +15814,7 @@
15810
15814
  isSubmitting,
15811
15815
  setValue,
15812
15816
  setFieldValue,
15813
- tableMode,
15817
+ minimalistView,
15814
15818
  property,
15815
15819
  includeDescription,
15816
15820
  underlyingValueHasChanged,
@@ -15838,9 +15842,8 @@
15838
15842
  includeDescription,
15839
15843
  underlyingValueHasChanged,
15840
15844
  context,
15841
- tableMode: false,
15842
15845
  partOfArray: true,
15843
- partOfBlock: false,
15846
+ minimalistView: false,
15844
15847
  autoFocus: internalId === lastAddedId
15845
15848
  };
15846
15849
  return /* @__PURE__ */ jsxRuntime.jsx(ErrorBoundary, { children: /* @__PURE__ */ jsxRuntime.jsx(PropertyFieldBinding, { ...fieldProps, index }) });
@@ -15876,7 +15879,7 @@
15876
15879
  ] })
15877
15880
  ] });
15878
15881
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
15879
- !tableMode && /* @__PURE__ */ jsxRuntime.jsx(
15882
+ !minimalistView && /* @__PURE__ */ jsxRuntime.jsx(
15880
15883
  ui.ExpandablePanel,
15881
15884
  {
15882
15885
  initiallyExpanded: expanded,
@@ -15885,7 +15888,7 @@
15885
15888
  children: arrayContainer
15886
15889
  }
15887
15890
  ),
15888
- tableMode && arrayContainer,
15891
+ minimalistView && arrayContainer,
15889
15892
  /* @__PURE__ */ jsxRuntime.jsx(
15890
15893
  FieldHelperText,
15891
15894
  {
@@ -15906,7 +15909,7 @@
15906
15909
  isSubmitting,
15907
15910
  setValue,
15908
15911
  setFieldValue,
15909
- tableMode,
15912
+ minimalistView,
15910
15913
  property,
15911
15914
  includeDescription,
15912
15915
  underlyingValueHasChanged,
@@ -15966,7 +15969,7 @@
15966
15969
  }
15967
15970
  );
15968
15971
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
15969
- !tableMode && /* @__PURE__ */ jsxRuntime.jsx(
15972
+ !minimalistView && /* @__PURE__ */ jsxRuntime.jsx(
15970
15973
  ui.ExpandablePanel,
15971
15974
  {
15972
15975
  className: "px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2",
@@ -15975,7 +15978,7 @@
15975
15978
  children: body
15976
15979
  }
15977
15980
  ),
15978
- tableMode && body,
15981
+ minimalistView && body,
15979
15982
  /* @__PURE__ */ jsxRuntime.jsx(
15980
15983
  FieldHelperText,
15981
15984
  {
@@ -16024,8 +16027,7 @@
16024
16027
  context,
16025
16028
  autoFocus,
16026
16029
  partOfArray: false,
16027
- partOfBlock: true,
16028
- tableMode: false
16030
+ minimalistView: true
16029
16031
  } : void 0;
16030
16032
  const updateType = (newType) => {
16031
16033
  const newSelectedProperty = newType ? properties[newType] : void 0;
@@ -16034,7 +16036,7 @@
16034
16036
  formex$1.setFieldValue(typeFieldName, newType);
16035
16037
  formex$1.setFieldValue(valueFieldName, newSelectedProperty ? getDefaultValueFor(newSelectedProperty) : null);
16036
16038
  };
16037
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ui.cls(ui.paperMixin, "bg-transparent p-4 my-4 py-8"), children: [
16039
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ui.cls(ui.paperMixin, "bg-transparent p-2 mb-4"), children: [
16038
16040
  /* @__PURE__ */ jsxRuntime.jsx(
16039
16041
  formex.Field,
16040
16042
  {
@@ -16093,681 +16095,118 @@
16093
16095
  /* @__PURE__ */ jsxRuntime.jsx(PropertyFieldBinding, { ...fieldProps }, `form_control_${name}_${typeInternal}`)
16094
16096
  ] });
16095
16097
  }
16096
- const mdParser = new MarkdownIt();
16097
- try {
16098
- MdEditor.use(MdEditor.Plugins.AutoResize, {
16099
- min: 100
16100
- });
16101
- MdEditor.unuse(MdEditor.Plugins.FontUnderline);
16102
- MdEditor.unuse(MdEditor.Plugins.Clear);
16103
- } catch (e) {
16104
- }
16105
- function MarkdownFieldBinding({
16098
+ function MarkdownEditorFieldBinding({
16099
+ property,
16106
16100
  propertyKey,
16107
16101
  value,
16108
16102
  setValue,
16109
- error,
16110
- showError,
16111
- disabled,
16112
- autoFocus,
16113
- touched,
16114
- property,
16115
- tableMode,
16116
16103
  includeDescription,
16117
- context
16104
+ showError,
16105
+ error,
16106
+ minimalistView,
16107
+ isSubmitting,
16108
+ context,
16109
+ customProps,
16110
+ ...props
16118
16111
  }) {
16119
- const [internalValue, setInternalValue] = React.useState(value);
16120
- const valueRef = React.useRef(value);
16121
- ui.useInjectStyles("MarkdownFieldBinding", markdownCss);
16122
- const deferred = React.useDeferredValue({
16123
- internalValue,
16124
- value
16125
- });
16112
+ const highlight = customProps?.highlight;
16113
+ const storageSource = useStorageSource();
16114
+ const storage = property.storage;
16115
+ const entityValues = context.values;
16116
+ const entityId = context.entityId;
16117
+ const path = context.path;
16118
+ const [fieldVersion, setFieldVersion] = React.useState(0);
16119
+ const internalValue = React.useRef(value);
16120
+ const onContentChange = React.useCallback((content) => {
16121
+ internalValue.current = content;
16122
+ setValue(content);
16123
+ }, [setValue]);
16126
16124
  React.useEffect(() => {
16127
- valueRef.current = value;
16128
- setInternalValue(value);
16125
+ if (internalValue.current !== value) {
16126
+ internalValue.current = value;
16127
+ setFieldVersion(fieldVersion + 1);
16128
+ }
16129
16129
  }, [value]);
16130
- React.useEffect(() => {
16131
- if (deferred.internalValue !== valueRef.current)
16132
- setValue(deferred.internalValue);
16133
- }, [deferred]);
16134
- return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
16135
- !tableMode && /* @__PURE__ */ jsxRuntime.jsx(
16136
- ui.Typography,
16137
- {
16138
- variant: "caption",
16139
- className: "flex-grow",
16140
- children: /* @__PURE__ */ jsxRuntime.jsx(
16141
- LabelWithIcon,
16142
- {
16143
- icon: getIconForProperty(property, "small"),
16144
- required: property.validation?.required,
16145
- title: property.name,
16146
- className: "text-text-secondary dark:text-text-secondary-dark ml-3.5"
16147
- }
16148
- )
16130
+ const fileNameBuilder = React.useCallback(async (file) => {
16131
+ if (storage?.fileName) {
16132
+ const fileName = await resolveStorageFilenameString({
16133
+ input: storage.fileName,
16134
+ storage,
16135
+ values: entityValues,
16136
+ entityId,
16137
+ path,
16138
+ property,
16139
+ file,
16140
+ propertyKey
16141
+ });
16142
+ if (!fileName || fileName.length === 0) {
16143
+ throw Error("You need to return a valid filename");
16149
16144
  }
16150
- ),
16145
+ return fileName;
16146
+ }
16147
+ return randomString() + "_" + file.name;
16148
+ }, [entityId, entityValues, path, property, propertyKey, storage]);
16149
+ const storagePathBuilder = React.useCallback((file) => {
16150
+ if (!storage) return "/";
16151
+ return resolveStoragePathString({
16152
+ input: storage.storagePath,
16153
+ storage,
16154
+ values: entityValues,
16155
+ entityId,
16156
+ path,
16157
+ property,
16158
+ file,
16159
+ propertyKey
16160
+ }) ?? "/";
16161
+ }, [entityId, entityValues, path, property, propertyKey, storage]);
16162
+ const editor$1 = /* @__PURE__ */ jsxRuntime.jsx(
16163
+ editor.FireCMSEditor,
16164
+ {
16165
+ content: value,
16166
+ onMarkdownContentChange: onContentChange,
16167
+ version: context.formex.version + fieldVersion,
16168
+ highlight,
16169
+ handleImageUpload: async (file) => {
16170
+ const storagePath = storagePathBuilder(file);
16171
+ const fileName = await fileNameBuilder(file);
16172
+ const result = await storageSource.uploadFile({
16173
+ file,
16174
+ fileName,
16175
+ path: storagePath
16176
+ });
16177
+ const downloadConfig = await storageSource.getDownloadURL(result.path);
16178
+ const url = downloadConfig.url;
16179
+ if (!url) {
16180
+ throw new Error("Error uploading image");
16181
+ }
16182
+ return url;
16183
+ }
16184
+ }
16185
+ );
16186
+ if (minimalistView)
16187
+ return editor$1;
16188
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
16151
16189
  /* @__PURE__ */ jsxRuntime.jsx(
16152
- MdEditor,
16190
+ LabelWithIcon,
16153
16191
  {
16154
- value: internalValue ?? "",
16155
- className: ui.cls(
16156
- ui.fieldBackgroundMixin,
16157
- disabled ? ui.fieldBackgroundDisabledMixin : ui.fieldBackgroundHoverMixin,
16158
- "text-base"
16159
- ),
16160
- readOnly: disabled,
16161
- renderHTML: (text) => mdParser.render(text),
16162
- view: {
16163
- menu: true,
16164
- md: true,
16165
- html: false
16166
- },
16167
- onChange: ({
16168
- html,
16169
- text
16170
- }) => {
16171
- setInternalValue(text ?? null);
16172
- }
16192
+ icon: getIconForProperty(property, "small"),
16193
+ required: property.validation?.required,
16194
+ title: property.name,
16195
+ className: "text-text-secondary dark:text-text-secondary-dark ml-3.5"
16173
16196
  }
16174
16197
  ),
16198
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Paper, { children: editor$1 }),
16175
16199
  /* @__PURE__ */ jsxRuntime.jsx(
16176
16200
  FieldHelperText,
16177
16201
  {
16178
16202
  includeDescription,
16179
16203
  showError,
16180
16204
  error,
16181
- disabled,
16182
16205
  property
16183
16206
  }
16184
16207
  )
16185
16208
  ] });
16186
16209
  }
16187
- const markdownCss = `
16188
- @font-face {
16189
- font-family: rmel-iconfont;
16190
- src: url(data:application/vnd.ms-fontobject;base64,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NS4BJyMOAd0VGwEBGxWRFRsbFWEcFBQcYRUbGxWRFRsBARsCK2EVGxsVkRUbAQEbKRySARsVYRwpGwEBGxWRFRsBHwEbFZEVGwEBGykcYRUbwwEbFWEcKRsBARsVkRUb/qscKRsBARsVkRUbGxUBtRQcYRUbGxWRFRsBARsAAAAAAAASAN4AAQAAAAAAAAAVAAAAAQAAAAAAAQANABUAAQAAAAAAAgAHACIAAQAAAAAAAwANACkAAQAAAAAABAANADYAAQAAAAAABQALAEMAAQAAAAAABgANAE4AAQAAAAAACgArAFsAAQAAAAAACwATAIYAAwABBAkAAAAqAJkAAwABBAkAAQAaAMMAAwABBAkAAgAOAN0AAwABBAkAAwAaAOsAAwABBAkABAAaAQUAAwABBAkABQAWAR8AAwABBAkABgAaATUAAwABBAkACgBWAU8AAwABBAkACwAmAaUKQ3JlYXRlZCBieSBpY29uZm9udApybWVsLWljb25mb250UmVndWxhcnJtZWwtaWNvbmZvbnRybWVsLWljb25mb250VmVyc2lvbiAxLjBybWVsLWljb25mb250R2VuZXJhdGVkIGJ5IHN2ZzJ0dGYgZnJvbSBGb250ZWxsbyBwcm9qZWN0Lmh0dHA6Ly9mb250ZWxsby5jb20ACgBDAHIAZQBhAHQAZQBkACAAYgB5ACAAaQBjAG8AbgBmAG8AbgB0AAoAcgBtAGUAbAAtAGkAYwBvAG4AZgBvAG4AdABSAGUAZwB1AGwAYQByAHIAbQBlAGwALQBpAGMAbwBuAGYAbwBuAHQAcgBtAGUAbAAtAGkAYwBvAG4AZgBvAG4AdABWAGUAcgBzAGkAbwBuACAAMQAuADAAcgBtAGUAbAAtAGkAYwBvAG4AZgBvAG4AdABHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwADdGFiCGtleWJvYXJkBmRlbGV0ZQpjb2RlLWJsb2NrBGNvZGUKdmlzaWJpbGl0eQp2aWV3LXNwbGl0BGxpbmsEcmVkbwR1bmRvBGJvbGQGaXRhbGljDGxpc3Qtb3JkZXJlZA5saXN0LXVub3JkZXJlZAVxdW90ZQ1zdHJpa2V0aHJvdWdoCXVuZGVybGluZQR3cmFwCWZvbnQtc2l6ZQRncmlkBWltYWdlC2V4cGFuZC1sZXNzC2V4cGFuZC1tb3JlD2Z1bGxzY3JlZW4tZXhpdApmdWxsc2NyZWVuAAAAAAA=);
16191
- src: url(data:font/ttf;base64,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) format("truetype")
16192
- }
16193
-
16194
- .rmel-iconfont {
16195
- font-family: rmel-iconfont !important;
16196
- font-size: 16px;
16197
- font-style: normal;
16198
- -webkit-font-smoothing: antialiased;
16199
- -moz-osx-font-smoothing: grayscale
16200
- }
16201
-
16202
- .rmel-icon-tab:before {
16203
- content: "\\e76d"
16204
- }
16205
-
16206
- .rmel-icon-keyboard:before {
16207
- content: "\\ed80"
16208
- }
16209
-
16210
- .rmel-icon-delete:before {
16211
- content: "\\ed3c"
16212
- }
16213
-
16214
- .rmel-icon-code-block:before {
16215
- content: "\\e941"
16216
- }
16217
-
16218
- .rmel-icon-code:before {
16219
- content: "\\ed3b"
16220
- }
16221
-
16222
- .rmel-icon-visibility:before {
16223
- content: "\\ed44"
16224
- }
16225
-
16226
- .rmel-icon-view-split:before {
16227
- content: "\\ed45"
16228
- }
16229
-
16230
- .rmel-icon-link:before {
16231
- content: "\\ed5f"
16232
- }
16233
-
16234
- .rmel-icon-redo:before {
16235
- content: "\\ed60"
16236
- }
16237
-
16238
- .rmel-icon-undo:before {
16239
- content: "\\ed61"
16240
- }
16241
-
16242
- .rmel-icon-bold:before {
16243
- content: "\\ed6f"
16244
- }
16245
-
16246
- .rmel-icon-italic:before {
16247
- content: "\\ed70"
16248
- }
16249
-
16250
- .rmel-icon-list-ordered:before {
16251
- content: "\\ed71"
16252
- }
16253
-
16254
- .rmel-icon-list-unordered:before {
16255
- content: "\\ed72"
16256
- }
16257
-
16258
- .rmel-icon-quote:before {
16259
- content: "\\ed73"
16260
- }
16261
-
16262
- .rmel-icon-strikethrough:before {
16263
- content: "\\ed74"
16264
- }
16265
-
16266
- .rmel-icon-underline:before {
16267
- content: "\\ed75"
16268
- }
16269
-
16270
- .rmel-icon-wrap:before {
16271
- content: "\\ed77"
16272
- }
16273
-
16274
- .rmel-icon-font-size:before {
16275
- content: "\\ed78"
16276
- }
16277
-
16278
- .rmel-icon-grid:before {
16279
- content: "\\ed8c"
16280
- }
16281
-
16282
- .rmel-icon-image:before {
16283
- content: "\\ed8d"
16284
- }
16285
-
16286
- .rmel-icon-expand-less:before {
16287
- content: "\\ed9f"
16288
- }
16289
-
16290
- .rmel-icon-expand-more:before {
16291
- content: "\\eda0"
16292
- }
16293
-
16294
- .rmel-icon-fullscreen-exit:before {
16295
- content: "\\eda1"
16296
- }
16297
-
16298
- .rmel-icon-fullscreen:before {
16299
- content: "\\eda2"
16300
- }
16301
-
16302
- .rc-md-editor {
16303
- padding-bottom: 1px;
16304
- position: relative;
16305
- -webkit-box-sizing: border-box;
16306
- box-sizing: border-box;
16307
- display: -webkit-box;
16308
- display: -webkit-flex;
16309
- display: -ms-flexbox;
16310
- display: flex;
16311
- overflow: hidden;
16312
- -webkit-box-orient: vertical;
16313
- -webkit-box-direction: normal;
16314
- -webkit-flex-direction: column;
16315
- -ms-flex-direction: column;
16316
- flex-direction: column;
16317
- border-radius: 6px;
16318
- }
16319
-
16320
- .rc-md-editor.full {
16321
- width: 100%;
16322
- height: 100% !important;
16323
- position: fixed;
16324
- left: 0;
16325
- top: 0;
16326
- z-index: 1000
16327
- }
16328
-
16329
- .rc-md-editor .editor-container {
16330
- -webkit-box-flex: 1;
16331
- -webkit-flex: 1;
16332
- -ms-flex: 1;
16333
- flex: 1;
16334
- display: -webkit-box;
16335
- display: -webkit-flex;
16336
- display: -ms-flexbox;
16337
- display: flex;
16338
- width: 100%;
16339
- min-height: 0;
16340
- position: relative;
16341
-
16342
- }
16343
-
16344
- .rc-md-editor .editor-container > .section {
16345
- -webkit-box-flex: 1;
16346
- -webkit-flex-grow: 1;
16347
- -ms-flex-positive: 1;
16348
- flex-grow: 1;
16349
- -webkit-flex-shrink: 1;
16350
- -ms-flex-negative: 1;
16351
- flex-shrink: 1;
16352
- -webkit-flex-basis: 1px;
16353
- -ms-flex-preferred-size: 1px;
16354
- flex-basis: 1px;
16355
- padding: 0px 8px;
16356
- border: none
16357
- }
16358
-
16359
- .rc-md-editor .editor-container > .section.in-visible {
16360
- display: none
16361
- }
16362
-
16363
- .rc-md-editor .editor-container > .section > .section-container {
16364
- padding: 8x 16px 16px
16365
- }
16366
-
16367
- .rc-md-editor .editor-container > .section:last-child {
16368
- border-radius: unset
16369
- }
16370
-
16371
- .rc-md-editor .editor-container .sec-md {
16372
- min-height: 0;
16373
- min-width: 0;
16374
- overflow: hidden;
16375
- }
16376
-
16377
- .rc-md-editor .editor-container .sec-md .input {
16378
- background: transparent;
16379
- font-size: 1rem;
16380
- display: block;
16381
- -webkit-box-sizing: border-box;
16382
- box-sizing: border-box;
16383
- width: 100%;
16384
- height: 100%;
16385
- overflow-y: scroll;
16386
- border: none;
16387
- resize: none;
16388
- outline: none;
16389
- min-height: 0;
16390
- color: inherit;
16391
- line-height: 1.7;
16392
-
16393
- }
16394
-
16395
- .rc-md-editor .editor-container .sec-html {
16396
- min-height: 0;
16397
- min-width: 0;
16398
-
16399
- }
16400
-
16401
- .rc-md-editor .editor-container .sec-html .html-wrap {
16402
- height: 100%;
16403
- -webkit-box-sizing: border-box;
16404
- box-sizing: border-box;
16405
- overflow: auto
16406
- }
16407
-
16408
- .custom-html-style {
16409
- color: inherit
16410
- }
16411
-
16412
- .custom-html-style h1 {
16413
- font-size: 32px;
16414
- padding: 0;
16415
- border: none;
16416
- font-weight: 700;
16417
- margin: 32px 0;
16418
- line-height: 1.2
16419
- }
16420
-
16421
- .custom-html-style h2 {
16422
- font-size: 24px;
16423
- padding: 0;
16424
- border: none;
16425
- font-weight: 700;
16426
- margin: 24px 0;
16427
- line-height: 1.7
16428
- }
16429
-
16430
- .custom-html-style h3 {
16431
- font-size: 18px;
16432
- margin: 18px 0;
16433
- padding: 0;
16434
- line-height: 1.7;
16435
- border: none
16436
- }
16437
-
16438
- .custom-html-style p {
16439
- font-size: 16px;
16440
- line-height: 1.7;
16441
- margin: 8px 0
16442
- }
16443
-
16444
- .custom-html-style a {
16445
- }
16446
-
16447
- .custom-html-style a:hover {
16448
- text-decoration: none
16449
- }
16450
-
16451
- .custom-html-style strong {
16452
- font-weight: 700
16453
- }
16454
-
16455
- .custom-html-style ol, .custom-html-style ul {
16456
- font-size: 16px;
16457
- line-height: 28px;
16458
- padding-left: 36px
16459
- }
16460
-
16461
- .custom-html-style li {
16462
- margin-bottom: 8px;
16463
- line-height: 1.7
16464
- }
16465
-
16466
- .custom-html-style hr {
16467
- margin-top: 20px;
16468
- margin-bottom: 20px;
16469
- border: 0;
16470
- }
16471
-
16472
- .custom-html-style pre {
16473
- display: block;
16474
- padding: 20px;
16475
- line-height: 28px;
16476
- word-break: break-word
16477
- }
16478
-
16479
- .custom-html-style code, .custom-html-style pre {
16480
- font-size: 16px;
16481
- border-radius: 0;
16482
- overflow-x: auto
16483
- }
16484
-
16485
- .custom-html-style code {
16486
- padding: 3px 0;
16487
- margin: 0;
16488
- word-break: normal
16489
- }
16490
-
16491
- .custom-html-style code:after, .custom-html-style code:before {
16492
- letter-spacing: 0
16493
- }
16494
-
16495
- .custom-html-style blockquote {
16496
- position: relative;
16497
- margin: 16px 0;
16498
- padding: 5px 8px 5px 30px;
16499
- background: none repeat scroll 0 0 ${"rgb(39 39 41)"};
16500
- color: inherit;
16501
- border: none;
16502
- border-left: 10px solid #d6dbdf
16503
- }
16504
-
16505
- .custom-html-style img, .custom-html-style video {
16506
- max-width: 100%
16507
- }
16508
-
16509
- .custom-html-style table {
16510
- font-size: 16px;
16511
- line-height: 1.7;
16512
- max-width: 100%;
16513
- overflow: auto;
16514
-
16515
- border-collapse: collapse;
16516
- border-spacing: 0;
16517
- -webkit-box-sizing: border-box;
16518
- box-sizing: border-box
16519
- }
16520
-
16521
- .custom-html-style table td, .custom-html-style table th {
16522
- word-break: break-all;
16523
- word-wrap: break-word;
16524
- white-space: normal
16525
- }
16526
-
16527
- .custom-html-style table tr {
16528
- }
16529
-
16530
- .custom-html-style table tr:nth-of-type(2n) {
16531
- background-color: transparent
16532
- }
16533
-
16534
- .custom-html-style table th {
16535
- text-align: center;
16536
- font-weight: 700;
16537
-
16538
- padding: 10px 6px;
16539
- background-color: #f5f7fa;
16540
- word-break: break-word
16541
- }
16542
-
16543
- .custom-html-style table td {
16544
-
16545
- text-align: left;
16546
- padding: 10px 15px;
16547
- word-break: break-word;
16548
- min-width: 60px
16549
- }
16550
-
16551
- .rc-md-editor .drop-wrap {
16552
- display: block;
16553
- position: absolute;
16554
- left: 0;
16555
- top: 28px;
16556
- z-index: 2;
16557
- min-width: 20px;
16558
- padding: 10px 0;
16559
- text-align: center;
16560
- border-style: solid;
16561
- border-width: 1px
16562
- }
16563
-
16564
- .rc-md-editor .drop-wrap.hidden {
16565
- display: none !important
16566
- }
16567
-
16568
- .rc-md-editor .rc-md-navigation {
16569
- min-height: 38px;
16570
- padding: 0 8px;
16571
- -webkit-box-sizing: border-box;
16572
- box-sizing: border-box;
16573
- font-size: 16px;
16574
- -webkit-user-select: none;
16575
- -moz-user-select: none;
16576
- -ms-user-select: none;
16577
- user-select: none;
16578
- display: -webkit-box;
16579
- display: -webkit-flex;
16580
- display: -ms-flexbox;
16581
- display: flex;
16582
- -webkit-box-orient: horizontal;
16583
- -webkit-box-direction: normal;
16584
- -webkit-flex-direction: row;
16585
- -ms-flex-direction: row;
16586
- flex-direction: row;
16587
- -webkit-box-pack: justify;
16588
- -webkit-justify-content: space-between;
16589
- -ms-flex-pack: justify;
16590
- justify-content: space-between;
16591
- color: "inherit",
16592
-
16593
- }
16594
-
16595
- .rc-md-editor .rc-md-navigation.in-visible {
16596
- display: none
16597
- }
16598
-
16599
- .rc-md-editor .rc-md-navigation .navigation-nav {
16600
- -webkit-box-align: center;
16601
- -webkit-align-items: center;
16602
- -ms-flex-align: center;
16603
- align-items: center;
16604
- -webkit-box-pack: center;
16605
- -webkit-justify-content: center;
16606
- -ms-flex-pack: center;
16607
- justify-content: center;
16608
- font-size: 16px;
16609
- }
16610
-
16611
- .rc-md-editor .rc-md-navigation .button-wrap, .rc-md-editor .rc-md-navigation .navigation-nav {
16612
- display: -webkit-box;
16613
- display: -webkit-flex;
16614
- display: -ms-flexbox;
16615
- display: flex;
16616
- -webkit-box-orient: horizontal;
16617
- -webkit-box-direction: normal;
16618
- -webkit-flex-direction: row;
16619
- -ms-flex-direction: row;
16620
- flex-direction: row
16621
- }
16622
-
16623
- .rc-md-editor .rc-md-navigation .button-wrap {
16624
- -webkit-flex-wrap: wrap;
16625
- -ms-flex-wrap: wrap;
16626
- flex-wrap: wrap
16627
- }
16628
-
16629
- .rc-md-editor .rc-md-navigation .button-wrap .button {
16630
- position: relative;
16631
- min-width: 22px;
16632
- height: 28px;
16633
- margin-left: 3px;
16634
- margin-right: -2px;
16635
- display: inline-block;
16636
- cursor: pointer;
16637
- line-height: 28px;
16638
- text-align: center;
16639
- }
16640
-
16641
- .rc-md-editor .rc-md-navigation .button-wrap .button:hover {
16642
- }
16643
-
16644
- .rc-md-editor .rc-md-navigation .button-wrap .button.disabled {
16645
- cursor: not-allowed
16646
- }
16647
-
16648
- .rc-md-editor .rc-md-navigation .button-wrap .button:first-of-type {
16649
- margin-left: 0
16650
- }
16651
-
16652
- .rc-md-editor .rc-md-navigation .button-wrap .button:last-child {
16653
- margin-right: 0
16654
- }
16655
-
16656
- .rc-md-editor .rc-md-navigation .button-wrap .rmel-iconfont {
16657
- font-size: 18px
16658
- }
16659
-
16660
- .rc-md-editor .rc-md-navigation li, .rc-md-editor .rc-md-navigation ul {
16661
- list-style: none;
16662
- margin: 0;
16663
- padding: 0
16664
- }
16665
-
16666
- .rc-md-editor .rc-md-navigation .h1, .rc-md-editor .rc-md-navigation .h2, .rc-md-editor .rc-md-navigation .h3, .rc-md-editor .rc-md-navigation .h4, .rc-md-editor .rc-md-navigation .h5, .rc-md-editor .rc-md-navigation .h6, .rc-md-editor .rc-md-navigation h1, .rc-md-editor .rc-md-navigation h2, .rc-md-editor .rc-md-navigation h3, .rc-md-editor .rc-md-navigation h4, .rc-md-editor .rc-md-navigation h5, .rc-md-editor .rc-md-navigation h6 {
16667
- font-family: inherit;
16668
- font-weight: 500;
16669
- color: inherit;
16670
- padding: 0;
16671
- margin: 0;
16672
- line-height: 1.1
16673
- }
16674
-
16675
- .rc-md-editor .rc-md-navigation h1 {
16676
- font-size: 34px
16677
- }
16678
-
16679
- .rc-md-editor .rc-md-navigation h2 {
16680
- font-size: 30px
16681
- }
16682
-
16683
- .rc-md-editor .rc-md-navigation h3 {
16684
- font-size: 24px
16685
- }
16686
-
16687
- .rc-md-editor .rc-md-navigation h4 {
16688
- font-size: 18px
16689
- }
16690
-
16691
- .rc-md-editor .rc-md-navigation h5 {
16692
- font-size: 16px
16693
- }
16694
-
16695
- .rc-md-editor .rc-md-navigation h6 {
16696
- font-size: 12px
16697
- }
16698
-
16699
- .rc-md-editor .tool-bar {
16700
- position: absolute;
16701
- z-index: 1;
16702
- right: 8px;
16703
- top: 8px
16704
- }
16705
-
16706
- .rc-md-editor .tool-bar .button {
16707
- min-width: 24px;
16708
- height: 28px;
16709
- margin-right: 5px;
16710
- display: inline-block;
16711
- cursor: pointer;
16712
- font-size: 16px;
16713
- line-height: 28px;
16714
- text-align: center;
16715
- color: #999
16716
- }
16717
-
16718
- .rc-md-editor .tool-bar .button:hover {
16719
- color: inherit
16720
- }
16721
-
16722
- .rc-md-editor .rc-md-gray-100 {
16723
- display: block;
16724
- width: 1px;
16725
- }
16726
-
16727
- .rc-md-editor .table-list.wrap {
16728
- position: relative;
16729
- margin: 0 10px;
16730
- -webkit-box-sizing: border-box;
16731
- box-sizing: border-box
16732
- }
16733
-
16734
- .rc-md-editor .table-list.wrap .list-item {
16735
- position: absolute;
16736
- top: 0;
16737
- left: 0;
16738
- display: inline-block;
16739
- width: 20px;
16740
- height: 20px;
16741
- border-radius: 4px
16742
- }
16743
-
16744
- .rc-md-editor .table-list.wrap .list-item.active {
16745
- }
16746
-
16747
- .rc-md-editor .tab-map-list .list-item {
16748
- width: 120px;
16749
- -webkit-box-sizing: border-box;
16750
- box-sizing: border-box
16751
- }
16752
-
16753
- .rc-md-editor .tab-map-list .list-item:hover {
16754
- }
16755
-
16756
- .rc-md-editor .tab-map-list .list-item.active {
16757
- font-weight: 700
16758
- }
16759
-
16760
- .rc-md-editor .header-list .list-item {
16761
- width: 100px;
16762
- -webkit-box-sizing: border-box;
16763
- box-sizing: border-box;
16764
- padding: 8px 0
16765
- }
16766
-
16767
- .rc-md-editor .header-list .list-item:hover {
16768
- }
16769
-
16770
- `;
16771
16210
  function ArrayCustomShapedFieldBinding({
16772
16211
  propertyKey,
16773
16212
  value,
@@ -16775,7 +16214,7 @@
16775
16214
  showError,
16776
16215
  isSubmitting,
16777
16216
  setValue,
16778
- tableMode,
16217
+ minimalistView,
16779
16218
  property,
16780
16219
  includeDescription,
16781
16220
  underlyingValueHasChanged,
@@ -16814,15 +16253,14 @@
16814
16253
  includeDescription,
16815
16254
  underlyingValueHasChanged,
16816
16255
  context,
16817
- tableMode: false,
16818
16256
  partOfArray: true,
16819
- partOfBlock: false,
16257
+ minimalistView: false,
16820
16258
  autoFocus: false
16821
16259
  };
16822
16260
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pb-4", children: /* @__PURE__ */ jsxRuntime.jsx(PropertyFieldBinding, { ...fieldProps }) }, `custom_shaped_array_${index}`);
16823
16261
  });
16824
16262
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
16825
- !tableMode && /* @__PURE__ */ jsxRuntime.jsx(
16263
+ !minimalistView && /* @__PURE__ */ jsxRuntime.jsx(
16826
16264
  ui.ExpandablePanel,
16827
16265
  {
16828
16266
  initiallyExpanded: expanded,
@@ -16831,7 +16269,7 @@
16831
16269
  children: body
16832
16270
  }
16833
16271
  ),
16834
- tableMode && body,
16272
+ minimalistView && body,
16835
16273
  /* @__PURE__ */ jsxRuntime.jsx(
16836
16274
  FieldHelperText,
16837
16275
  {
@@ -16880,7 +16318,7 @@
16880
16318
  property: {
16881
16319
  dataType: "string",
16882
16320
  markdown: true,
16883
- Field: MarkdownFieldBinding
16321
+ Field: MarkdownEditorFieldBinding
16884
16322
  }
16885
16323
  },
16886
16324
  url: {
@@ -18156,7 +17594,7 @@
18156
17594
  name,
18157
17595
  value,
18158
17596
  property
18159
- }) => dataSource.checkUniqueField(path, name, value, entityId),
17597
+ }) => dataSource.checkUniqueField(path, name, value, entityId, collection.databaseId),
18160
17598
  [dataSource, path, entityId]
18161
17599
  );
18162
17600
  const validationSchema = React.useMemo(
@@ -18217,9 +17655,8 @@
18217
17655
  includeDescription: property.description || property.longDescription,
18218
17656
  underlyingValueHasChanged: underlyingValueHasChanged && !autoSave,
18219
17657
  context: formContext,
18220
- tableMode: false,
18221
17658
  partOfArray: false,
18222
- partOfBlock: false,
17659
+ minimalistView: false,
18223
17660
  autoFocus: false
18224
17661
  };
18225
17662
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -19123,7 +18560,7 @@
19123
18560
  */
19124
18561
  fetchCollection: React.useCallback(({
19125
18562
  path,
19126
- collection: collectionProp,
18563
+ collection,
19127
18564
  filter,
19128
18565
  limit,
19129
18566
  startAfter,
@@ -19138,7 +18575,8 @@
19138
18575
  startAfter,
19139
18576
  searchString,
19140
18577
  orderBy,
19141
- order
18578
+ order,
18579
+ collection
19142
18580
  });
19143
18581
  }, [delegate]),
19144
18582
  /**
@@ -19170,7 +18608,7 @@
19170
18608
  onError
19171
18609
  }) => {
19172
18610
  const collection = collectionProp ?? navigationController.getCollection(path);
19173
- const isCollectionGroup = Boolean(collection?.collectionGroup) ?? false;
18611
+ Boolean(collection?.collectionGroup);
19174
18612
  if (!delegate.listenCollection)
19175
18613
  throw Error("useBuildDataSource delegate not initialised");
19176
18614
  return delegate.listenCollection({
@@ -19183,7 +18621,6 @@
19183
18621
  order,
19184
18622
  onUpdate,
19185
18623
  onError,
19186
- isCollectionGroup,
19187
18624
  collection
19188
18625
  });
19189
18626
  }, [delegate, navigationController.getCollection]) : void 0,
@@ -19196,10 +18633,12 @@
19196
18633
  */
19197
18634
  fetchEntity: React.useCallback(({
19198
18635
  path,
19199
- entityId
18636
+ entityId,
18637
+ collection
19200
18638
  }) => delegate.fetchEntity({
19201
18639
  path,
19202
- entityId
18640
+ entityId,
18641
+ collection
19203
18642
  }), [delegate]),
19204
18643
  /**
19205
18644
  *
@@ -19224,7 +18663,8 @@
19224
18663
  path,
19225
18664
  entityId,
19226
18665
  onUpdate,
19227
- onError
18666
+ onError,
18667
+ collection
19228
18668
  });
19229
18669
  }, [delegate.listenEntity]) : void 0,
19230
18670
  /**
@@ -19246,6 +18686,14 @@
19246
18686
  status
19247
18687
  }) => {
19248
18688
  const collection = collectionProp ?? navigationController.getCollection(path);
18689
+ console.log("useBuildDatasource save", {
18690
+ path,
18691
+ entityId,
18692
+ values,
18693
+ collectionProp,
18694
+ collection,
18695
+ status
18696
+ });
19249
18697
  const resolvedCollection = collection ? resolveCollection({
19250
18698
  collection,
19251
18699
  path,
@@ -19267,6 +18715,7 @@
19267
18715
  ) : firestoreValues;
19268
18716
  return delegate.saveEntity({
19269
18717
  path,
18718
+ collection,
19270
18719
  entityId,
19271
18720
  values: updatedFirestoreValues,
19272
18721
  status
@@ -19299,8 +18748,8 @@
19299
18748
  * @return `true` if there are no other fields besides the given entity
19300
18749
  * @group Firestore
19301
18750
  */
19302
- checkUniqueField: React.useCallback((path, name, value, entityId) => {
19303
- return delegate.checkUniqueField(path, name, value, entityId);
18751
+ checkUniqueField: React.useCallback((path, name, value, entityId, databaseId) => {
18752
+ return delegate.checkUniqueField(path, name, value, entityId, databaseId);
19304
18753
  }, [delegate.checkUniqueField]),
19305
18754
  generateEntityId: React.useCallback((path) => {
19306
18755
  return delegate.generateEntityId(path);
@@ -19317,11 +18766,12 @@
19317
18766
  filter,
19318
18767
  orderBy,
19319
18768
  order,
19320
- isCollectionGroup: Boolean(collection.collectionGroup)
18769
+ collection
19321
18770
  });
19322
18771
  } : void 0,
19323
18772
  isFilterCombinationValid: React.useCallback(({
19324
18773
  path,
18774
+ databaseId,
19325
18775
  filterValues,
19326
18776
  sortBy
19327
18777
  }) => {
@@ -19330,6 +18780,7 @@
19330
18780
  return delegate.isFilterCombinationValid(
19331
18781
  {
19332
18782
  path,
18783
+ databaseId,
19333
18784
  filterValues,
19334
18785
  sortBy
19335
18786
  }
@@ -19835,7 +19286,7 @@
19835
19286
  };
19836
19287
  return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ui.cls("flex flex-col h-full relative flex-grow w-full", className), style, children: [
19837
19288
  /* @__PURE__ */ jsxRuntime.jsx(DrawerLogo, { logo }),
19838
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-scroll no-scrollbar", children: groupsWithoutAdmin.map((group) => /* @__PURE__ */ jsxRuntime.jsxs(
19289
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-grow overflow-scroll no-scrollbar", children: groupsWithoutAdmin.map((group) => /* @__PURE__ */ jsxRuntime.jsxs(
19839
19290
  React.Fragment,
19840
19291
  {
19841
19292
  children: [
@@ -20104,7 +19555,7 @@
20104
19555
  exports2.LabelWithIcon = LabelWithIcon;
20105
19556
  exports2.MapFieldBinding = MapFieldBinding;
20106
19557
  exports2.MapPropertyPreview = MapPropertyPreview;
20107
- exports2.MarkdownFieldBinding = MarkdownFieldBinding;
19558
+ exports2.MarkdownEditorFieldBinding = MarkdownEditorFieldBinding;
20108
19559
  exports2.ModeControllerContext = ModeControllerContext;
20109
19560
  exports2.ModeControllerProvider = ModeControllerProvider;
20110
19561
  exports2.MultiSelectBinding = MultiSelectBinding;
@@ -20246,6 +19697,8 @@
20246
19697
  exports2.resolveProperties = resolveProperties;
20247
19698
  exports2.resolveProperty = resolveProperty;
20248
19699
  exports2.resolvePropertyEnum = resolvePropertyEnum;
19700
+ exports2.resolveStorageFilenameString = resolveStorageFilenameString;
19701
+ exports2.resolveStoragePathString = resolveStoragePathString;
20249
19702
  exports2.sanitizeData = sanitizeData;
20250
19703
  exports2.saveEntityWithCallbacks = saveEntityWithCallbacks;
20251
19704
  exports2.segmentsToStrippedPath = segmentsToStrippedPath;