@firecms/core 3.0.0-canary.101 → 3.0.0-canary.103

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/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 +265 -817
  14. package/dist/index.es.js.map +1 -1
  15. package/dist/index.umd.js +264 -815
  16. package/dist/index.umd.js.map +1 -1
  17. package/dist/types/collections.d.ts +5 -0
  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/util/index.d.ts +1 -0
  22. package/dist/util/storage.d.ts +1 -1
  23. package/package.json +5 -5
  24. package/src/app/Scaffold.tsx +1 -13
  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/RepeatFieldBinding.tsx +6 -7
  41. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +2 -2
  42. package/src/form/index.tsx +2 -2
  43. package/src/hooks/data/save.ts +5 -1
  44. package/src/internal/useBuildDataSource.ts +29 -14
  45. package/src/preview/PropertyPreview.tsx +2 -2
  46. package/src/types/collections.ts +6 -0
  47. package/src/types/datasource.ts +13 -16
  48. package/src/types/entities.ts +2 -0
  49. package/src/types/fields.tsx +5 -15
  50. package/src/util/index.ts +1 -0
  51. package/src/util/storage.ts +1 -1
  52. package/src/util/useStorageUploadController.tsx +2 -2
  53. package/dist/form/PropertiesForm.d.ts +0 -8
  54. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  55. package/src/form/PropertiesForm.tsx +0 -81
  56. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
package/dist/index.es.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
- import React__default, { useRef, useEffect, useContext, useCallback, useMemo, useState, createElement, createRef, createContext, forwardRef, useLayoutEffect, useDeferredValue } from "react";
3
+ import React__default, { useRef, useEffect, useContext, useCallback, useMemo, useState, createElement, createRef, createContext, forwardRef, useLayoutEffect } from "react";
4
4
  import { SnackbarProvider as SnackbarProvider$1, useSnackbar } from "notistack";
5
5
  import hash from "object-hash";
6
6
  import { useCreateFormex, Formex, setIn, Field, getIn, useFormex } from "@firecms/formex";
7
- import { getColorSchemeForSeed, CHIP_COLORS, Tooltip, ErrorIcon, Typography, CircleIcon, FunctionsIcon, iconKeys, coolIconKeys, Icon, IconButton, ContentCopyIcon, OpenInNewIcon, DescriptionIcon, cls, Skeleton, Chip, defaultBorderMixin, KeyboardTabIcon, Checkbox, Markdown, TextareaAutosize, MultiSelect, MultiSelectItem, Select, SelectItem, BooleanSwitch, DateTimeField, paperMixin, ErrorOutlineIcon, EditIcon, Button, RemoveCircleIcon, Menu, MoreVertIcon, MenuItem, CircularProgress, SearchBar, Badge, ArrowUpwardIcon, Popover, FilterListIcon, AssignmentIcon, CenteredView, Label, TextField, ClearIcon, BooleanSwitchWithLabel, useOutsideAlerter, Dialog, DialogContent, DialogActions, FileCopyIcon, ArchiveIcon, DeleteIcon, AddIcon, ExpandablePanel, Card, ArrowForwardIcon, cardMixin, cardClickableMixin, focusedMixin, StarIcon, StarBorderIcon, Collapse, Container, FilterListOffIcon, SearchIcon, LoadingButton, Avatar, DarkModeIcon, LightModeIcon, LogoutIcon, fieldBackgroundHoverMixin, HandleIcon, RemoveIcon, debounce, InfoIcon, CloseIcon, fieldBackgroundMixin, fieldBackgroundDisabledMixin, ArrowDropDownIcon, useInjectStyles, ShortTextIcon, SubjectIcon, FormatQuoteIcon, HttpIcon, EmailIcon, FlagIcon, ListIcon, ListAltIcon, NumbersIcon, FormatListNumberedIcon, UploadFileIcon, DriveFolderUploadIcon, LinkIcon, AddLinkIcon, ScheduleIcon, BallotIcon, RepeatIcon, ViewStreamIcon, NotesIcon, Tab, Tabs, Alert, Sheet, useLocaleConfig, MenuIcon, ChevronLeftIcon } from "@firecms/ui";
7
+ import { getColorSchemeForSeed, CHIP_COLORS, Tooltip, ErrorIcon, Typography, CircleIcon, FunctionsIcon, iconKeys, coolIconKeys, Icon, IconButton, ContentCopyIcon, OpenInNewIcon, DescriptionIcon, cls, Skeleton, Chip, defaultBorderMixin, KeyboardTabIcon, Checkbox, Markdown, TextareaAutosize, MultiSelect, MultiSelectItem, Select, SelectItem, BooleanSwitch, DateTimeField, paperMixin, ErrorOutlineIcon, EditIcon, Button, RemoveCircleIcon, Menu, MoreVertIcon, MenuItem, CircularProgress, SearchBar, Badge, ArrowUpwardIcon, Popover, FilterListIcon, AssignmentIcon, CenteredView, Label, TextField, ClearIcon, BooleanSwitchWithLabel, useOutsideAlerter, Dialog, DialogContent, DialogActions, FileCopyIcon, ArchiveIcon, DeleteIcon, AddIcon, ExpandablePanel, Card, ArrowForwardIcon, cardMixin, cardClickableMixin, focusedMixin, StarIcon, StarBorderIcon, Collapse, Container, FilterListOffIcon, SearchIcon, LoadingButton, Avatar, DarkModeIcon, LightModeIcon, LogoutIcon, fieldBackgroundHoverMixin, HandleIcon, RemoveIcon, debounce, InfoIcon, CloseIcon, fieldBackgroundMixin, fieldBackgroundDisabledMixin, ArrowDropDownIcon, Paper, ShortTextIcon, SubjectIcon, FormatQuoteIcon, HttpIcon, EmailIcon, FlagIcon, ListIcon, ListAltIcon, NumbersIcon, FormatListNumberedIcon, UploadFileIcon, DriveFolderUploadIcon, LinkIcon, AddLinkIcon, ScheduleIcon, BallotIcon, RepeatIcon, ViewStreamIcon, NotesIcon, Tab, Tabs, Alert, Sheet, useLocaleConfig, MenuIcon, ChevronLeftIcon } from "@firecms/ui";
8
8
  import equal from "react-fast-compare";
9
9
  import { Link, useNavigate, useLocation, UNSAFE_NavigationContext, NavLink, Route, Routes } from "react-router-dom";
10
10
  import { format } from "date-fns";
@@ -16,8 +16,7 @@ import Resizer from "react-image-file-resizer";
16
16
  import Fuse from "fuse.js";
17
17
  import { FixedSizeList } from "react-window";
18
18
  import * as yup from "yup";
19
- import MarkdownIt from "markdown-it";
20
- import MdEditor, { Plugins } from "react-markdown-editor-lite";
19
+ import { FireCMSEditor } from "@firecms/editor";
21
20
  import * as Portal from "@radix-ui/react-portal";
22
21
  const SnackbarProvider = ({ children }) => {
23
22
  return /* @__PURE__ */ jsx(
@@ -3150,6 +3149,99 @@ function useTraceUpdate(props, maxDepth = 3) {
3150
3149
  prev.current = props;
3151
3150
  });
3152
3151
  }
3152
+ async function resolveStorageFilenameString({
3153
+ input,
3154
+ storage,
3155
+ values,
3156
+ entityId,
3157
+ path,
3158
+ property,
3159
+ file,
3160
+ propertyKey
3161
+ }) {
3162
+ let result;
3163
+ if (typeof input === "function") {
3164
+ result = await input({
3165
+ path,
3166
+ entityId,
3167
+ values,
3168
+ property,
3169
+ file,
3170
+ storage,
3171
+ propertyKey
3172
+ });
3173
+ if (!result)
3174
+ console.warn("Storage callback returned empty result. Using default name value");
3175
+ } else {
3176
+ result = replacePlaceholders({
3177
+ file,
3178
+ input,
3179
+ entityId,
3180
+ propertyKey,
3181
+ path
3182
+ });
3183
+ }
3184
+ if (!result)
3185
+ result = randomString() + "_" + file.name;
3186
+ return result;
3187
+ }
3188
+ function resolveStoragePathString({
3189
+ input,
3190
+ storage,
3191
+ values,
3192
+ entityId,
3193
+ path,
3194
+ property,
3195
+ file,
3196
+ propertyKey
3197
+ }) {
3198
+ let result;
3199
+ if (typeof input === "function") {
3200
+ result = input({
3201
+ path,
3202
+ entityId,
3203
+ values,
3204
+ property,
3205
+ file,
3206
+ storage,
3207
+ propertyKey
3208
+ });
3209
+ if (!result)
3210
+ console.warn("Storage callback returned empty result. Using default name value");
3211
+ } else {
3212
+ result = replacePlaceholders({
3213
+ file,
3214
+ input,
3215
+ entityId,
3216
+ propertyKey,
3217
+ path
3218
+ });
3219
+ }
3220
+ if (!result)
3221
+ result = randomString() + "_" + file.name;
3222
+ return result;
3223
+ }
3224
+ function replacePlaceholders({
3225
+ file,
3226
+ input,
3227
+ entityId,
3228
+ propertyKey,
3229
+ path
3230
+ }) {
3231
+ const ext = file.name.split(".").pop();
3232
+ let result = input.replace("{entityId}", entityId).replace("{propertyKey}", propertyKey).replace("{rand}", randomString()).replace("{file}", file.name).replace("{file.type}", file.type);
3233
+ if (path) {
3234
+ result = result.replace("{path}", path);
3235
+ }
3236
+ if (ext) {
3237
+ result = result.replace("{file.ext}", ext);
3238
+ const name = file.name.replace(`.${ext}`, "");
3239
+ result = result.replace("{file.name}", name);
3240
+ }
3241
+ if (!result)
3242
+ result = randomString() + "_" + file.name;
3243
+ return result;
3244
+ }
3153
3245
  const DataSourceContext = React__default.createContext({});
3154
3246
  const useDataSource = (collection) => {
3155
3247
  const defaultDataSource = useContext(DataSourceContext);
@@ -3493,7 +3585,11 @@ async function saveEntityWithCallbacks({
3493
3585
  } else {
3494
3586
  updatedValues = values;
3495
3587
  }
3496
- console.log("Saving entity", entityId, updatedValues);
3588
+ console.log("Saving entity", {
3589
+ entityId,
3590
+ updatedValues,
3591
+ collection
3592
+ });
3497
3593
  return dataSource.saveEntity({
3498
3594
  collection,
3499
3595
  path: resolvedPath,
@@ -5802,6 +5898,8 @@ const PropertyPreview = React__default.memo(function PropertyPreview2(props) {
5802
5898
  previewType: stringProperty.url
5803
5899
  }
5804
5900
  );
5901
+ } else if (stringProperty.markdown) {
5902
+ content = /* @__PURE__ */ jsx(Markdown, { source: value, size: "small" });
5805
5903
  } else if (stringProperty.storage) {
5806
5904
  const filePath = stringProperty.storage.previewUrl ? stringProperty.storage.previewUrl(value) : value;
5807
5905
  content = /* @__PURE__ */ jsx(
@@ -5813,8 +5911,6 @@ const PropertyPreview = React__default.memo(function PropertyPreview2(props) {
5813
5911
  storagePathOrDownloadUrl: filePath
5814
5912
  }
5815
5913
  );
5816
- } else if (stringProperty.markdown) {
5817
- content = /* @__PURE__ */ jsx(Markdown, { source: value, size: "small" });
5818
5914
  } else {
5819
5915
  content = /* @__PURE__ */ jsx(
5820
5916
  StringPropertyPreview,
@@ -6469,99 +6565,6 @@ class ErrorBoundary extends React__default.Component {
6469
6565
  return this.props.children;
6470
6566
  }
6471
6567
  }
6472
- async function resolveFilenameString({
6473
- input,
6474
- storage,
6475
- values,
6476
- entityId,
6477
- path,
6478
- property,
6479
- file,
6480
- propertyKey
6481
- }) {
6482
- let result;
6483
- if (typeof input === "function") {
6484
- result = await input({
6485
- path,
6486
- entityId,
6487
- values,
6488
- property,
6489
- file,
6490
- storage,
6491
- propertyKey
6492
- });
6493
- if (!result)
6494
- console.warn("Storage callback returned empty result. Using default name value");
6495
- } else {
6496
- result = replacePlaceholders({
6497
- file,
6498
- input,
6499
- entityId,
6500
- propertyKey,
6501
- path
6502
- });
6503
- }
6504
- if (!result)
6505
- result = randomString() + "_" + file.name;
6506
- return result;
6507
- }
6508
- function resolveStoragePathString({
6509
- input,
6510
- storage,
6511
- values,
6512
- entityId,
6513
- path,
6514
- property,
6515
- file,
6516
- propertyKey
6517
- }) {
6518
- let result;
6519
- if (typeof input === "function") {
6520
- result = input({
6521
- path,
6522
- entityId,
6523
- values,
6524
- property,
6525
- file,
6526
- storage,
6527
- propertyKey
6528
- });
6529
- if (!result)
6530
- console.warn("Storage callback returned empty result. Using default name value");
6531
- } else {
6532
- result = replacePlaceholders({
6533
- file,
6534
- input,
6535
- entityId,
6536
- propertyKey,
6537
- path
6538
- });
6539
- }
6540
- if (!result)
6541
- result = randomString() + "_" + file.name;
6542
- return result;
6543
- }
6544
- function replacePlaceholders({
6545
- file,
6546
- input,
6547
- entityId,
6548
- propertyKey,
6549
- path
6550
- }) {
6551
- const ext = file.name.split(".").pop();
6552
- let result = input.replace("{entityId}", entityId).replace("{propertyKey}", propertyKey).replace("{rand}", randomString()).replace("{file}", file.name).replace("{file.type}", file.type);
6553
- if (path) {
6554
- result = result.replace("{path}", path);
6555
- }
6556
- if (ext) {
6557
- result = result.replace("{file.ext}", ext);
6558
- const name = file.name.replace(`.${ext}`, "");
6559
- result = result.replace("{file.name}", name);
6560
- }
6561
- if (!result)
6562
- result = randomString() + "_" + file.name;
6563
- return result;
6564
- }
6565
6568
  function useStorageUploadController({
6566
6569
  entityId,
6567
6570
  entityValues,
@@ -6596,7 +6599,7 @@ function useStorageUploadController({
6596
6599
  }, [internalInitialValue, value, initialValue]);
6597
6600
  const fileNameBuilder = useCallback(async (file) => {
6598
6601
  if (storage.fileName) {
6599
- const fileName = await resolveFilenameString({
6602
+ const fileName = await resolveStorageFilenameString({
6600
6603
  input: storage.fileName,
6601
6604
  storage,
6602
6605
  values: entityValues,
@@ -7792,6 +7795,8 @@ function useClearRestoreValue({
7792
7795
  }, [property]);
7793
7796
  }
7794
7797
  function isStorageProperty(property) {
7798
+ if (property.dataType === "string" && property.markdown)
7799
+ return false;
7795
7800
  if (property.dataType === "string" && property.storage)
7796
7801
  return true;
7797
7802
  if (property.dataType === "array") {
@@ -8041,7 +8046,7 @@ const PropertyTableCell = React__default.memo(
8041
8046
  }
8042
8047
  );
8043
8048
  fullHeight = true;
8044
- } else if (!stringProperty.storage) {
8049
+ } else if (stringProperty.markdown || !stringProperty.storage) {
8045
8050
  const multiline = Boolean(stringProperty.multiline) || Boolean(stringProperty.markdown);
8046
8051
  innerComponent = /* @__PURE__ */ jsx(
8047
8052
  VirtualTableInput,
@@ -10497,6 +10502,7 @@ function useTableSearchHelper({
10497
10502
  const props = {
10498
10503
  context,
10499
10504
  path: fullPath,
10505
+ databaseId: collection.databaseId,
10500
10506
  collection,
10501
10507
  parentCollectionIds
10502
10508
  };
@@ -11835,7 +11841,7 @@ function PopupFormFieldInternal({
11835
11841
  const customizationController = useCustomizationController();
11836
11842
  const [savingError, setSavingError] = React__default.useState();
11837
11843
  const [popupLocation, setPopupLocation] = useState();
11838
- const entityId = entityProp?.id;
11844
+ const entityId = entityProp.id;
11839
11845
  const [entity, setEntity] = useState(entityProp);
11840
11846
  const [internalValue, setInternalValue] = useState(entity?.values);
11841
11847
  const collection = inputCollection ? resolveCollection({
@@ -11979,9 +11985,8 @@ function PopupFormFieldInternal({
11979
11985
  includeDescription: false,
11980
11986
  underlyingValueHasChanged: false,
11981
11987
  context: formContext,
11982
- tableMode: true,
11983
11988
  partOfArray: false,
11984
- partOfBlock: false,
11989
+ minimalistView: false,
11985
11990
  autoFocus: open
11986
11991
  } : void 0;
11987
11992
  let internalForm = /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
@@ -12339,7 +12344,7 @@ const EntityCollectionView = React__default.memo(
12339
12344
  value,
12340
12345
  property,
12341
12346
  entityId
12342
- }) => dataSource.checkUniqueField(fullPath, name, value, entityId),
12347
+ }) => dataSource.checkUniqueField(fullPath, name, value, entityId, collection.databaseId),
12343
12348
  [fullPath]
12344
12349
  );
12345
12350
  const onValueChange = ({
@@ -12674,7 +12679,7 @@ const EntityCollectionView = React__default.memo(
12674
12679
  },
12675
12680
  `collection_table_${fullPath}`
12676
12681
  ),
12677
- /* @__PURE__ */ jsx(
12682
+ popupCell && /* @__PURE__ */ jsx(
12678
12683
  PopupFormField,
12679
12684
  {
12680
12685
  open: Boolean(popupCell),
@@ -12682,7 +12687,7 @@ const EntityCollectionView = React__default.memo(
12682
12687
  cellRect: popupCell?.cellRect,
12683
12688
  propertyKey: popupCell?.propertyKey,
12684
12689
  collection,
12685
- entity: popupCell?.entity,
12690
+ entity: popupCell.entity,
12686
12691
  tableKey: tableKey.current,
12687
12692
  customFieldValidator: uniqueFieldValidator,
12688
12693
  path: resolvedFullPath,
@@ -13951,7 +13956,7 @@ function ArrayOfReferencesFieldBinding({
13951
13956
  showError,
13952
13957
  disabled,
13953
13958
  isSubmitting,
13954
- tableMode,
13959
+ minimalistView,
13955
13960
  property,
13956
13961
  includeDescription,
13957
13962
  setValue,
@@ -14065,7 +14070,7 @@ function ArrayOfReferencesFieldBinding({
14065
14070
  ] })
14066
14071
  ] });
14067
14072
  return /* @__PURE__ */ jsxs(Fragment, { children: [
14068
- !tableMode && /* @__PURE__ */ jsx(
14073
+ !minimalistView && /* @__PURE__ */ jsx(
14069
14074
  ExpandablePanel,
14070
14075
  {
14071
14076
  titleClassName: fieldBackgroundMixin,
@@ -14075,7 +14080,7 @@ function ArrayOfReferencesFieldBinding({
14075
14080
  children: body
14076
14081
  }
14077
14082
  ),
14078
- tableMode && body,
14083
+ minimalistView && body,
14079
14084
  /* @__PURE__ */ jsx(
14080
14085
  FieldHelperText,
14081
14086
  {
@@ -14160,7 +14165,7 @@ function StorageUploadFieldBinding({
14160
14165
  error,
14161
14166
  showError,
14162
14167
  autoFocus,
14163
- tableMode,
14168
+ minimalistView,
14164
14169
  property,
14165
14170
  includeDescription,
14166
14171
  context,
@@ -14195,7 +14200,7 @@ function StorageUploadFieldBinding({
14195
14200
  setValue
14196
14201
  });
14197
14202
  return /* @__PURE__ */ jsxs(Fragment, { children: [
14198
- !tableMode && /* @__PURE__ */ jsx(
14203
+ !minimalistView && /* @__PURE__ */ jsx(
14199
14204
  LabelWithIcon,
14200
14205
  {
14201
14206
  icon: getIconForProperty(property, "small"),
@@ -14714,7 +14719,7 @@ function ReadOnlyFieldBinding({
14714
14719
  value,
14715
14720
  error,
14716
14721
  showError,
14717
- tableMode,
14722
+ minimalistView,
14718
14723
  property,
14719
14724
  includeDescription,
14720
14725
  context
@@ -14722,7 +14727,7 @@ function ReadOnlyFieldBinding({
14722
14727
  if (!context.entityId)
14723
14728
  throw new Error("ReadOnlyFieldBinding: Entity id is null");
14724
14729
  return /* @__PURE__ */ jsxs(Fragment, { children: [
14725
- !tableMode && /* @__PURE__ */ jsx(
14730
+ !minimalistView && /* @__PURE__ */ jsx(
14726
14731
  LabelWithIcon,
14727
14732
  {
14728
14733
  icon: getIconForProperty(property, "small"),
@@ -14890,9 +14895,8 @@ function PropertyFieldBindingInternal({
14890
14895
  includeDescription,
14891
14896
  underlyingValueHasChanged,
14892
14897
  disabled,
14893
- tableMode,
14894
14898
  partOfArray,
14895
- partOfBlock,
14899
+ minimalistView,
14896
14900
  autoFocus,
14897
14901
  index
14898
14902
  }) {
@@ -14954,9 +14958,8 @@ function PropertyFieldBindingInternal({
14954
14958
  underlyingValueHasChanged,
14955
14959
  context,
14956
14960
  disabled,
14957
- tableMode,
14958
14961
  partOfArray,
14959
- partOfBlock,
14962
+ minimalistView,
14960
14963
  autoFocus
14961
14964
  };
14962
14965
  return /* @__PURE__ */ jsx(
@@ -14979,9 +14982,8 @@ function FieldInternal({
14979
14982
  property,
14980
14983
  includeDescription,
14981
14984
  underlyingValueHasChanged,
14982
- tableMode,
14983
14985
  partOfArray,
14984
- partOfBlock,
14986
+ minimalistView,
14985
14987
  autoFocus,
14986
14988
  context,
14987
14989
  disabled
@@ -15026,9 +15028,8 @@ function FieldInternal({
15026
15028
  property,
15027
15029
  disabled: disabled ?? false,
15028
15030
  underlyingValueHasChanged: underlyingValueHasChanged ?? false,
15029
- tableMode: tableMode ?? false,
15030
15031
  partOfArray: partOfArray ?? false,
15031
- partOfBlock: partOfBlock ?? false,
15032
+ minimalistView: minimalistView ?? false,
15032
15033
  autoFocus: autoFocus ?? false,
15033
15034
  customProps: customFieldProps,
15034
15035
  context
@@ -15095,8 +15096,7 @@ function MapFieldBinding({
15095
15096
  error,
15096
15097
  disabled,
15097
15098
  property,
15098
- partOfBlock,
15099
- tableMode,
15099
+ minimalistView,
15100
15100
  includeDescription,
15101
15101
  underlyingValueHasChanged,
15102
15102
  autoFocus,
@@ -15129,9 +15129,8 @@ function MapFieldBinding({
15129
15129
  includeDescription,
15130
15130
  underlyingValueHasChanged,
15131
15131
  context,
15132
- tableMode: false,
15133
15132
  partOfArray: false,
15134
- partOfBlock: false,
15133
+ minimalistView: false,
15135
15134
  autoFocus: autoFocus && index === 0
15136
15135
  };
15137
15136
  return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(ErrorBoundary, { children: /* @__PURE__ */ jsx(
@@ -15152,7 +15151,7 @@ function MapFieldBinding({
15152
15151
  }
15153
15152
  );
15154
15153
  return /* @__PURE__ */ jsxs(ErrorBoundary, { children: [
15155
- !tableMode && !partOfBlock && /* @__PURE__ */ jsx(
15154
+ !minimalistView && !minimalistView && /* @__PURE__ */ jsx(
15156
15155
  ExpandablePanel,
15157
15156
  {
15158
15157
  initiallyExpanded: expanded,
@@ -15161,7 +15160,7 @@ function MapFieldBinding({
15161
15160
  children: mapFormView
15162
15161
  }
15163
15162
  ),
15164
- (tableMode || partOfBlock) && mapFormView,
15163
+ (minimalistView || minimalistView) && mapFormView,
15165
15164
  /* @__PURE__ */ jsx(
15166
15165
  FieldHelperText,
15167
15166
  {
@@ -15182,7 +15181,7 @@ function KeyValueFieldBinding({
15182
15181
  disabled,
15183
15182
  property,
15184
15183
  setValue,
15185
- tableMode,
15184
+ minimalistView,
15186
15185
  includeDescription,
15187
15186
  underlyingValueHasChanged,
15188
15187
  autoFocus,
@@ -15213,7 +15212,7 @@ function KeyValueFieldBinding({
15213
15212
  }
15214
15213
  );
15215
15214
  return /* @__PURE__ */ jsxs(Fragment, { children: [
15216
- !tableMode && /* @__PURE__ */ jsx(
15215
+ !minimalistView && /* @__PURE__ */ jsx(
15217
15216
  ExpandablePanel,
15218
15217
  {
15219
15218
  initiallyExpanded: expanded,
@@ -15222,7 +15221,7 @@ function KeyValueFieldBinding({
15222
15221
  children: mapFormView
15223
15222
  }
15224
15223
  ),
15225
- tableMode && mapFormView,
15224
+ minimalistView && mapFormView,
15226
15225
  /* @__PURE__ */ jsx(
15227
15226
  FieldHelperText,
15228
15227
  {
@@ -15807,7 +15806,7 @@ function RepeatFieldBinding({
15807
15806
  isSubmitting,
15808
15807
  setValue,
15809
15808
  setFieldValue,
15810
- tableMode,
15809
+ minimalistView,
15811
15810
  property,
15812
15811
  includeDescription,
15813
15812
  underlyingValueHasChanged,
@@ -15835,9 +15834,8 @@ function RepeatFieldBinding({
15835
15834
  includeDescription,
15836
15835
  underlyingValueHasChanged,
15837
15836
  context,
15838
- tableMode: false,
15839
15837
  partOfArray: true,
15840
- partOfBlock: false,
15838
+ minimalistView: false,
15841
15839
  autoFocus: internalId === lastAddedId
15842
15840
  };
15843
15841
  return /* @__PURE__ */ jsx(ErrorBoundary, { children: /* @__PURE__ */ jsx(PropertyFieldBinding, { ...fieldProps, index }) });
@@ -15873,7 +15871,7 @@ function RepeatFieldBinding({
15873
15871
  ] })
15874
15872
  ] });
15875
15873
  return /* @__PURE__ */ jsxs(Fragment, { children: [
15876
- !tableMode && /* @__PURE__ */ jsx(
15874
+ !minimalistView && /* @__PURE__ */ jsx(
15877
15875
  ExpandablePanel,
15878
15876
  {
15879
15877
  initiallyExpanded: expanded,
@@ -15882,7 +15880,7 @@ function RepeatFieldBinding({
15882
15880
  children: arrayContainer
15883
15881
  }
15884
15882
  ),
15885
- tableMode && arrayContainer,
15883
+ minimalistView && arrayContainer,
15886
15884
  /* @__PURE__ */ jsx(
15887
15885
  FieldHelperText,
15888
15886
  {
@@ -15903,7 +15901,7 @@ function BlockFieldBinding({
15903
15901
  isSubmitting,
15904
15902
  setValue,
15905
15903
  setFieldValue,
15906
- tableMode,
15904
+ minimalistView,
15907
15905
  property,
15908
15906
  includeDescription,
15909
15907
  underlyingValueHasChanged,
@@ -15963,7 +15961,7 @@ function BlockFieldBinding({
15963
15961
  }
15964
15962
  );
15965
15963
  return /* @__PURE__ */ jsxs(Fragment, { children: [
15966
- !tableMode && /* @__PURE__ */ jsx(
15964
+ !minimalistView && /* @__PURE__ */ jsx(
15967
15965
  ExpandablePanel,
15968
15966
  {
15969
15967
  className: "px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2",
@@ -15972,7 +15970,7 @@ function BlockFieldBinding({
15972
15970
  children: body
15973
15971
  }
15974
15972
  ),
15975
- tableMode && body,
15973
+ minimalistView && body,
15976
15974
  /* @__PURE__ */ jsx(
15977
15975
  FieldHelperText,
15978
15976
  {
@@ -16021,8 +16019,7 @@ function BlockEntry({
16021
16019
  context,
16022
16020
  autoFocus,
16023
16021
  partOfArray: false,
16024
- partOfBlock: true,
16025
- tableMode: false
16022
+ minimalistView: true
16026
16023
  } : void 0;
16027
16024
  const updateType = (newType) => {
16028
16025
  const newSelectedProperty = newType ? properties[newType] : void 0;
@@ -16031,7 +16028,7 @@ function BlockEntry({
16031
16028
  formex.setFieldValue(typeFieldName, newType);
16032
16029
  formex.setFieldValue(valueFieldName, newSelectedProperty ? getDefaultValueFor(newSelectedProperty) : null);
16033
16030
  };
16034
- return /* @__PURE__ */ jsxs("div", { className: cls(paperMixin, "bg-transparent p-4 my-4 py-8"), children: [
16031
+ return /* @__PURE__ */ jsxs("div", { className: cls(paperMixin, "bg-transparent p-2 mb-4"), children: [
16035
16032
  /* @__PURE__ */ jsx(
16036
16033
  Field,
16037
16034
  {
@@ -16090,681 +16087,118 @@ function BlockEntry({
16090
16087
  /* @__PURE__ */ jsx(PropertyFieldBinding, { ...fieldProps }, `form_control_${name}_${typeInternal}`)
16091
16088
  ] });
16092
16089
  }
16093
- const mdParser = new MarkdownIt();
16094
- try {
16095
- MdEditor.use(Plugins.AutoResize, {
16096
- min: 100
16097
- });
16098
- MdEditor.unuse(Plugins.FontUnderline);
16099
- MdEditor.unuse(Plugins.Clear);
16100
- } catch (e) {
16101
- }
16102
- function MarkdownFieldBinding({
16090
+ function MarkdownEditorFieldBinding({
16091
+ property,
16103
16092
  propertyKey,
16104
16093
  value,
16105
16094
  setValue,
16106
- error,
16107
- showError,
16108
- disabled,
16109
- autoFocus,
16110
- touched,
16111
- property,
16112
- tableMode,
16113
16095
  includeDescription,
16114
- context
16096
+ showError,
16097
+ error,
16098
+ minimalistView,
16099
+ isSubmitting,
16100
+ context,
16101
+ customProps,
16102
+ ...props
16115
16103
  }) {
16116
- const [internalValue, setInternalValue] = React__default.useState(value);
16117
- const valueRef = useRef(value);
16118
- useInjectStyles("MarkdownFieldBinding", markdownCss);
16119
- const deferred = useDeferredValue({
16120
- internalValue,
16121
- value
16122
- });
16104
+ const highlight = customProps?.highlight;
16105
+ const storageSource = useStorageSource();
16106
+ const storage = property.storage;
16107
+ const entityValues = context.values;
16108
+ const entityId = context.entityId;
16109
+ const path = context.path;
16110
+ const [fieldVersion, setFieldVersion] = useState(0);
16111
+ const internalValue = useRef(value);
16112
+ const onContentChange = useCallback((content) => {
16113
+ internalValue.current = content;
16114
+ setValue(content);
16115
+ }, [setValue]);
16123
16116
  useEffect(() => {
16124
- valueRef.current = value;
16125
- setInternalValue(value);
16117
+ if (internalValue.current !== value) {
16118
+ internalValue.current = value;
16119
+ setFieldVersion(fieldVersion + 1);
16120
+ }
16126
16121
  }, [value]);
16127
- useEffect(() => {
16128
- if (deferred.internalValue !== valueRef.current)
16129
- setValue(deferred.internalValue);
16130
- }, [deferred]);
16131
- return /* @__PURE__ */ jsxs(Fragment, { children: [
16132
- !tableMode && /* @__PURE__ */ jsx(
16133
- Typography,
16134
- {
16135
- variant: "caption",
16136
- className: "flex-grow",
16137
- children: /* @__PURE__ */ jsx(
16138
- LabelWithIcon,
16139
- {
16140
- icon: getIconForProperty(property, "small"),
16141
- required: property.validation?.required,
16142
- title: property.name,
16143
- className: "text-text-secondary dark:text-text-secondary-dark ml-3.5"
16144
- }
16145
- )
16122
+ const fileNameBuilder = useCallback(async (file) => {
16123
+ if (storage?.fileName) {
16124
+ const fileName = await resolveStorageFilenameString({
16125
+ input: storage.fileName,
16126
+ storage,
16127
+ values: entityValues,
16128
+ entityId,
16129
+ path,
16130
+ property,
16131
+ file,
16132
+ propertyKey
16133
+ });
16134
+ if (!fileName || fileName.length === 0) {
16135
+ throw Error("You need to return a valid filename");
16146
16136
  }
16147
- ),
16137
+ return fileName;
16138
+ }
16139
+ return randomString() + "_" + file.name;
16140
+ }, [entityId, entityValues, path, property, propertyKey, storage]);
16141
+ const storagePathBuilder = useCallback((file) => {
16142
+ if (!storage) return "/";
16143
+ return resolveStoragePathString({
16144
+ input: storage.storagePath,
16145
+ storage,
16146
+ values: entityValues,
16147
+ entityId,
16148
+ path,
16149
+ property,
16150
+ file,
16151
+ propertyKey
16152
+ }) ?? "/";
16153
+ }, [entityId, entityValues, path, property, propertyKey, storage]);
16154
+ const editor = /* @__PURE__ */ jsx(
16155
+ FireCMSEditor,
16156
+ {
16157
+ content: value,
16158
+ onMarkdownContentChange: onContentChange,
16159
+ version: context.formex.version + fieldVersion,
16160
+ highlight,
16161
+ handleImageUpload: async (file) => {
16162
+ const storagePath = storagePathBuilder(file);
16163
+ const fileName = await fileNameBuilder(file);
16164
+ const result = await storageSource.uploadFile({
16165
+ file,
16166
+ fileName,
16167
+ path: storagePath
16168
+ });
16169
+ const downloadConfig = await storageSource.getDownloadURL(result.path);
16170
+ const url = downloadConfig.url;
16171
+ if (!url) {
16172
+ throw new Error("Error uploading image");
16173
+ }
16174
+ return url;
16175
+ }
16176
+ }
16177
+ );
16178
+ if (minimalistView)
16179
+ return editor;
16180
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
16148
16181
  /* @__PURE__ */ jsx(
16149
- MdEditor,
16182
+ LabelWithIcon,
16150
16183
  {
16151
- value: internalValue ?? "",
16152
- className: cls(
16153
- fieldBackgroundMixin,
16154
- disabled ? fieldBackgroundDisabledMixin : fieldBackgroundHoverMixin,
16155
- "text-base"
16156
- ),
16157
- readOnly: disabled,
16158
- renderHTML: (text) => mdParser.render(text),
16159
- view: {
16160
- menu: true,
16161
- md: true,
16162
- html: false
16163
- },
16164
- onChange: ({
16165
- html,
16166
- text
16167
- }) => {
16168
- setInternalValue(text ?? null);
16169
- }
16184
+ icon: getIconForProperty(property, "small"),
16185
+ required: property.validation?.required,
16186
+ title: property.name,
16187
+ className: "text-text-secondary dark:text-text-secondary-dark ml-3.5"
16170
16188
  }
16171
16189
  ),
16190
+ /* @__PURE__ */ jsx(Paper, { children: editor }),
16172
16191
  /* @__PURE__ */ jsx(
16173
16192
  FieldHelperText,
16174
16193
  {
16175
16194
  includeDescription,
16176
16195
  showError,
16177
16196
  error,
16178
- disabled,
16179
16197
  property
16180
16198
  }
16181
16199
  )
16182
16200
  ] });
16183
16201
  }
16184
- const markdownCss = `
16185
- @font-face {
16186
- font-family: rmel-iconfont;
16187
- src: url(data:application/vnd.ms-fontobject;base64,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NS4BJyMOAd0VGwEBGxWRFRsbFWEcFBQcYRUbGxWRFRsBARsCK2EVGxsVkRUbAQEbKRySARsVYRwpGwEBGxWRFRsBHwEbFZEVGwEBGykcYRUbwwEbFWEcKRsBARsVkRUb/qscKRsBARsVkRUbGxUBtRQcYRUbGxWRFRsBARsAAAAAAAASAN4AAQAAAAAAAAAVAAAAAQAAAAAAAQANABUAAQAAAAAAAgAHACIAAQAAAAAAAwANACkAAQAAAAAABAANADYAAQAAAAAABQALAEMAAQAAAAAABgANAE4AAQAAAAAACgArAFsAAQAAAAAACwATAIYAAwABBAkAAAAqAJkAAwABBAkAAQAaAMMAAwABBAkAAgAOAN0AAwABBAkAAwAaAOsAAwABBAkABAAaAQUAAwABBAkABQAWAR8AAwABBAkABgAaATUAAwABBAkACgBWAU8AAwABBAkACwAmAaUKQ3JlYXRlZCBieSBpY29uZm9udApybWVsLWljb25mb250UmVndWxhcnJtZWwtaWNvbmZvbnRybWVsLWljb25mb250VmVyc2lvbiAxLjBybWVsLWljb25mb250R2VuZXJhdGVkIGJ5IHN2ZzJ0dGYgZnJvbSBGb250ZWxsbyBwcm9qZWN0Lmh0dHA6Ly9mb250ZWxsby5jb20ACgBDAHIAZQBhAHQAZQBkACAAYgB5ACAAaQBjAG8AbgBmAG8AbgB0AAoAcgBtAGUAbAAtAGkAYwBvAG4AZgBvAG4AdABSAGUAZwB1AGwAYQByAHIAbQBlAGwALQBpAGMAbwBuAGYAbwBuAHQAcgBtAGUAbAAtAGkAYwBvAG4AZgBvAG4AdABWAGUAcgBzAGkAbwBuACAAMQAuADAAcgBtAGUAbAAtAGkAYwBvAG4AZgBvAG4AdABHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwADdGFiCGtleWJvYXJkBmRlbGV0ZQpjb2RlLWJsb2NrBGNvZGUKdmlzaWJpbGl0eQp2aWV3LXNwbGl0BGxpbmsEcmVkbwR1bmRvBGJvbGQGaXRhbGljDGxpc3Qtb3JkZXJlZA5saXN0LXVub3JkZXJlZAVxdW90ZQ1zdHJpa2V0aHJvdWdoCXVuZGVybGluZQR3cmFwCWZvbnQtc2l6ZQRncmlkBWltYWdlC2V4cGFuZC1sZXNzC2V4cGFuZC1tb3JlD2Z1bGxzY3JlZW4tZXhpdApmdWxsc2NyZWVuAAAAAAA=);
16188
- src: url(data:font/ttf;base64,AAEAAAALAIAAAwAwR1NVQrD+s+0AAAE4AAAAQk9TLzI940+UAAABfAAAAFZjbWFwQOSPXQAAAjwAAAMIZ2x5ZjCJoW0AAAV8AAAPYGhlYWQbUPpPAAAA4AAAADZoaGVhB94DmwAAALwAAAAkaG10eGgAAAAAAAHUAAAAaGxvY2E1+jIAAAAFRAAAADZtYXhwATAAewAAARgAAAAgbmFtZXPc7cIAABTcAAACqXBvc3QnKb+uAAAXiAAAATUAAQAAA4D/gABcBAAAAAAABAAAAQAAAAAAAAAAAAAAAAAAABoAAQAAAAEAAOLjgrdfDzz1AAsEAAAAAADcGNspAAAAANwY2ykAAP//BAADAQAAAAgAAgAAAAAAAAABAAAAGgBvAAwAAAAAAAIAAAAKAAoAAAD/AAAAAAAAAAEAAAAKAB4ALAABREZMVAAIAAQAAAAAAAAAAQAAAAFsaWdhAAgAAAABAAAAAQAEAAQAAAABAAgAAQAGAAAAAQAAAAAAAQQAAZAABQAIAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABA523togOA/4AAXAOAAIAAAAABAAAAAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAAAAAFAAAAAwAAACwAAAAEAAABzAABAAAAAADGAAMAAQAAACwAAwAKAAABzAAEAJoAAAAWABAAAwAG523pQe087UXtYe117XjtgO2N7aL//wAA523pQe077UTtX+1v7XftgO2M7Z///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAFgAWABYAGAAaAB4AKgAsACwALgAAAAEABAAFAAMABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATAAIAFAAVABYAFwAYABkAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAATwAAAAAAAAAGQAA520AAOdtAAAAAQAA6UEAAOlBAAAABAAA7TsAAO07AAAABQAA7TwAAO08AAAAAwAA7UQAAO1EAAAABgAA7UUAAO1FAAAABwAA7V8AAO1fAAAACAAA7WAAAO1gAAAACQAA7WEAAO1hAAAACgAA7W8AAO1vAAAACwAA7XAAAO1wAAAADAAA7XEAAO1xAAAADQAA7XIAAO1yAAAADgAA7XMAAO1zAAAADwAA7XQAAO10AAAAEAAA7XUAAO11AAAAEQAA7XcAAO13AAAAEgAA7XgAAO14AAAAEwAA7YAAAO2AAAAAAgAA7YwAAO2MAAAAFAAA7Y0AAO2NAAAAFQAA7Z8AAO2fAAAAFgAA7aAAAO2gAAAAFwAA7aEAAO2hAAAAGAAA7aIAAO2iAAAAGQAAAAAAZgDMAR4BhAG8Af4CZgLIAv4DNANyA6IEQASoBO4FLgVwBcoGCgZqBqQGxAboB0YHsAAAAAUAAAAAA1YC1gALABgAJQA0AEAAABMhMhYUBgchLgE0Nhc+ATchHgEUBiMhIiYDNDY3IR4BFAYjISImNz4BMyEyHgEUDgEjISImJxYUDwEGJjURNDYX1gJUEhkZEv2sEhkZ2gEYEwFgEhkZEv6gEhn0GRICVBIZGRL9rBIZ8wEYEwFgDBQLCxQM/qASGTkICJILHh4LAtUZJRgBARglGfITGAEBGCUZGf6FExgBARglGRnZEhkLFRcUDBqGBhYGlQwMEQEqEQwMAAAAAAwAAAAAA6sCqwAPABMAFwAbAB8AIwAnADMANwA7AD8AQwAAASEOAQcDHgEXIT4BNxEuAQUzFSMVMxUjJzMVIxUzFSsCNTM1IzUzASEiJjQ2MyEyFhQGNyM1MzUjNTMXIzUzNSM1MwNV/VYkMAEBATEkAqokMQEBMf5cVlZWVoBWVlZWKlZWVlYBVf8AEhgYEgEAEhgYGVZWVlaAVlZWVgKrATEk/lYkMQEBMSQBqiQxf1YqVtZWKlZWKlb+gBgkGRkkGKpWKlbWVipWAAMAAAAAAysDAAAPAB8AMwAAJR4BFyE+ATcRLgEnIQ4BBzMhMhYXEQ4BByEuAScRPgElJyYrASIPASMiBhQWMyEyNjQmIwEAATAkAVYkMAEBMCT+qiQwAYABABMXAQEXE/8AExcBARcBKB4LErQSCx5rExcXEwIAERkZEVUkMAEBMCQBqyQwAQEwJBcU/qsRGQEBGREBVRQX1R4NDR4XJxcXJxcAAwAAAAADqwLZABYALQA+AAABFQYPAQYiLwEmND8BJyY0PwE2Mh8BFgU3NjQvASYiDwEGBxUWHwEWMj8BNjQnAScmBgcDBhYfARY2NxM2JicDqwEJsAcRBx4GBpOTBgYeBxEHsAn9D5MGBh8GEgawCQEBCbAHEQceBgYBQikJDwTjAgcIKAkPBOIDBwkBiBANCrAGBh4HEQaTkwYSBh4GBrAKFZMGEQceBgawCg0QDQqwBgYeBhIGAdkPAwcI/YwIEAMOAwcIAnMIDwQAAgAAAAADmgJvABAAIQAAJSc3NjQmIg8BBhQfARYyNjQlNycmNDYyHwEWFA8BBiImNAFzpqYNGSQMxA0NxA4hGgENpqYNGiEOxA0NxA4hGtqmpg4hGg3EDSINxA0aIQ6mpgwkGQ3EDSINxA0ZJAAAAAMAAAAAA7gCrAALABcAIwAAAQ4BBx4BFz4BNy4BAy4BJz4BNx4BFw4BAw4BBx4BFz4BNy4BAgCY6zU165iY6zU165hWcAICcFZWcAICcFY0QwEBQzQ0QwEBQwKsAqSGhqQCAqSGhqT+DgJwVlZwAgJwVlZwAT4BQzQ0QwEBQzQ0QwAAAAUAAAAAA4ACqwALABcAIwAwAEAAABMhMjY0JiMhIgYUFhchPgE0JichDgEUFhMhMjY0JiMhIgYUFiceARchPgE0JichDgElIR4BFxEOAQchLgE1ETQ2qwEAExcXE/8AERkZEQEAExcXE/8AERkZEQEAExcXE/8AERkZGgEZEQEAExcXE/8AERkB1AEAERkBARkR/wATFxcBABcnFxcnF6sBGSIZAQEZIhkBVRcnFxcnF9UTFwEBFyYXAQEXGAEXE/4AERkBARkRAgATFwAAAAADAAAAAAOrAlYAGQAmAEAAAAEjIgYUFjsBHgEXDgEHIyIGFBY7AT4BNy4BBR4BFyE+ATQmJyEOARcjLgEnPgE3MzI2NCYrAQ4BBx4BFzMyNjQmAtWAEhgYEoA3SAEBSDeAEhgYEoBbeAMDeP4lARgSAQASGBgS/wASGFWAN0gBAUg3gBIYGBKAW3gDA3hbgBIYGAJVGCQZAUk2NkkBGSQYAnhbW3jTEhgBARgkGAEBGJIBSTY2SQEZJBgCeFtbeAIYJBkAAQAAAAADrAIrAB4AAAEuAScOAQcGFhcWNjc+ATcyFhcHBhYXMz4BNzUuAQcDEjuWVYfUOAoTFxQjCSuhZz9vLFETEx7uEhgBAjEWAbw0OgECiXIXKggGDxJWaQErJVIWMQIBGBLvHRQTAAAAAQAAAAADsgIrAB4AAAEOAQcnJgYHFR4BFzM+AS8BPgEzHgEXHgE3PgEnLgECFFWWO1EWMQIBGBLuHhQTUi1vPmehKwkkExcTCjnTAisBOjRQFBQd7xIYAQIxFlIlKwFpVhIPBggqF3KJAAAAAwAAAAAC9QK/ABQAHAAkAAABPgE3LgEnIw4BBxEeARchPgE3NCYlMx4BFAYHIxMjNTMeARQGApMhKQECZk7vFBkBARkUAQdJaQI0/tSIHScnHYifn58dJycBihdEJE5mAgEaE/3eExoBAmFJNVLZASY7JgH+74kBJjsmAAEAAAAAAxICvwAcAAABHgEXMwMjDgEUFhczPgE0JicjEzM+ATQmJyMOAQGlASYdIZw7HSYmHeQdJiYdIZw7HSYmHeQdJgJ6HSYB/pQBJjonAQEnOiYBAWwBJjonAQEnAAYAAAAAA5YC1gALABcAIwBBAFIAbgAAASE+ATQmJyEOARQWASEOARQWFyE+ATQmAyEOARQWFyE+ATQmBSMiBhQWOwEVIyIGFBY7ARUjIgYUFjsBMjY3NS4BAzMVHgEyNj0BNCYrASIGFBYXIyIGFBY7AQcGHQEUFjsBMjY0JisBNzY9AS4BAWsCABIYGBL+ABIZGQIS/gASGRkSAgASGBgS/gASGRkSAgASGBj9WFUJDAwJQBUKCwsKFUAJDAwJVQoLAQELXxUBCxMMDAkrCQwMXlUJDAwJN0cFDAlVCgsLCjdIBQELAlUBGCQYAQEYJBj+VQEYJBgBARgkGAEBARgkGAEBGCQY1QwSDBYMEgwWDBIMDAmACQwB1msJDAwJgAkMDBIM1gwSDFQGCAkJDAwSDFQGCAkJDAAAAAAGAAAAAAOLAsAACAARABoAJgAyAD8AABMOARQWMjY0JgMOARQWMjY0JgMOARQWMjY0JhchPgE0JichDgEUFjchPgE0JichDgEUFgMeARchPgE0JichDgG1GyQkNyQkHBskJDckJBwbJCQ2JSSPAgASGBgS/gASGBgSAgASGBgS/gASGBgZARgSAgASGBgS/gASGAHAASQ2JCQ2JAEBASQ2JCQ2JP4BASQ2JCQ2JGoBGCQYAQEYJBj/ARgkGAEBGCQYASoSGAEBGCQYAQEYAAAAAgAAAAADVgJWABYALQAAJTI2PwE2PQEuASsBIgYdARQWFzMHBhYFMjY/ATY9ATQmKwEiBgcVHgEXMwcGFgEyERsHPQkBGBKrEhgYElYsDiABzBAbCDwJGBKrEhgBARgSVSwNIKsRDnkSFMISGBgSqxIYAVgeMwERDnkSFMISGBgSqxIYAVgeMwAAAAADAAAAAAOAAsAACAAZACUAACU+ATc1IxUeAQEeARczFTM1Mz4BNCYnIQ4BAyE+ATQmJyEOARQWAgAkMAGqATD++QEkG5aqlhskJBv+KhskKwKqEhkZEv1WEhkZQAEwJCsrJDACPxskAYCAASQ2JAEBJP56ARgkGAEBGCQYAAAAAAIAAP//AysDAQAbACgAACU+ATcRLgEiBgcRFAYHBi4CNREuASIGBxEeAQceATMhMjY0JiMhIgYCImJ6AgEeLR4BQTUhQTUdAR4tHgEDptQBGBICABIYGBL+ABIYrQ+TZQEXFh4eFv7kN1MMBw8rPCMBIBYeHhb+4HaUdhIZGSQYGAAAAAMAAAAAA3ACxwALAC0AOQAAEyE+ATQmIyEiBhQWBSEiBhQWFyEyFhcWBgcjNS4BDwEGFB8BFjY3NTM+AScuAQUjIgYUFhczPgE0JsACVRIZGRL9qxIYGAIL/gcSGBgSAgYgMwYFMShgARkLTAYGTAwYAVVNYgUIZP5tqxIYGBKrEhgYAnEBGCQYGCQYrBgkGAEnICk5AiIPCgpMBxEHTAoKDyICa05EVf8YJBgBARgkGAAAAAIAAAAAA5YCwAAUACgAAAEUFhczER4BMjY3ETM+ATQmJyEOAQMzFRQWMjY3NTMyNjQmJyEOARQWAWskHJUBJDYkAZUcJCQc/lYcJMBAJDckAUAbJCQb/wAcJCQCgBskAf5AGyQkGwHAASQ2JAEBJP7Q6xskJBvrJDckAQEkNyQACgAAAAADeAL4AA8AFgAaACEAJQApAC0ANAA4AD8AAAEhDgEHER4BFyE+ATcRLgEBIyImPQEzNSM1MzUjNTQ2OwETIzUzNSM1MzUjNTMTIzUzFRQGNyM1MzUjNTMyFhUDLP2oICoBASogAlggKgEBKv4ecQ8WlpaWlhYPceGWlpaWlpa8cZYWFpaWlnEPFgL3ASog/aggKgEBKiACWCAq/V4WD3FLlktxDxb9qJZLlkuW/aiWcQ8W4ZZLlhYPAAAAAgAA//8DgAMAAA8AIAAAJREuASchDgEHER4BFyE+ASUXNzYyHwEWBiMhIiY/AT4BA4ABMCT9qiQwAQEwJAJWJDD9/VmFBxQHlQgMDf4BDgsIagcUVQJWJDABATAk/aokMAEBMPtsqggJxwsXFwuJCAEAAAABAAAAAAM1AjYAEAAAAQcGFBYyPwEXFjI2NC8BJiIB2f4QISwR19cRLCEQ/hAuAib+ESwhENfXECEsEf4QAAAAAQAAAAADNQI2ABIAAAEHJyYnIg4BFh8BFjI/ATY0LgEC1tbXEBcRGw0GDP4RLBH+ECEtAibX1w8BEiAgDP4QEP4QLSABAAAABAAAAAADawLrABAAIQAzAEQAADczFRQWMjY9ATQmKwEiBhQWEyMiBhQWOwEyNj0BNCYiBhUBMjY9ATMyNjQmKwEiBh0BFBYTNTQmIgYdARQWOwEyNjQmI8loHiwdHRacFh0dfmgWHR0WnBYdHSweAWoWHmgWHR0WnBYdHUoeLB0dFpwWHR0WsWgWHR0WnBYdHSweAZ4eLB0dFpwWHR0W/V8dFmgeLB0dFpwWHQI5aBYdHRacFh0dLB4AAAAEAAAAAANUAtQAEQAjADQARgAAEw4BBxUeARczPgE0JisBNTQmJz4BPQEzMjY0JicjDgEHFR4BASMiBhQWFzM+ATc1LgEiBhUDHgE7ARUUFjI2NzUuAScjDgHdFRsBARsVkRUbGxVhHBQUHGEVGxsVkRUbAQEbAithFRsbFZEVGwEBGykckgEbFWEcKRsBARsVkRUbAR8BGxWRFRsBARspHGEVG8MBGxVhHCkbAQEbFZEVG/6rHCkbAQEbFZEVGxsVAbUUHGEVGxsVkRUbAQEbAAAAAAAAEgDeAAEAAAAAAAAAFQAAAAEAAAAAAAEADQAVAAEAAAAAAAIABwAiAAEAAAAAAAMADQApAAEAAAAAAAQADQA2AAEAAAAAAAUACwBDAAEAAAAAAAYADQBOAAEAAAAAAAoAKwBbAAEAAAAAAAsAEwCGAAMAAQQJAAAAKgCZAAMAAQQJAAEAGgDDAAMAAQQJAAIADgDdAAMAAQQJAAMAGgDrAAMAAQQJAAQAGgEFAAMAAQQJAAUAFgEfAAMAAQQJAAYAGgE1AAMAAQQJAAoAVgFPAAMAAQQJAAsAJgGlCkNyZWF0ZWQgYnkgaWNvbmZvbnQKcm1lbC1pY29uZm9udFJlZ3VsYXJybWVsLWljb25mb250cm1lbC1pY29uZm9udFZlcnNpb24gMS4wcm1lbC1pY29uZm9udEdlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAAoAQwByAGUAYQB0AGUAZAAgAGIAeQAgAGkAYwBvAG4AZgBvAG4AdAAKAHIAbQBlAGwALQBpAGMAbwBuAGYAbwBuAHQAUgBlAGcAdQBsAGEAcgByAG0AZQBsAC0AaQBjAG8AbgBmAG8AbgB0AHIAbQBlAGwALQBpAGMAbwBuAGYAbwBuAHQAVgBlAHIAcwBpAG8AbgAgADEALgAwAHIAbQBlAGwALQBpAGMAbwBuAGYAbwBuAHQARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsAA3RhYghrZXlib2FyZAZkZWxldGUKY29kZS1ibG9jawRjb2RlCnZpc2liaWxpdHkKdmlldy1zcGxpdARsaW5rBHJlZG8EdW5kbwRib2xkBml0YWxpYwxsaXN0LW9yZGVyZWQObGlzdC11bm9yZGVyZWQFcXVvdGUNc3RyaWtldGhyb3VnaAl1bmRlcmxpbmUEd3JhcAlmb250LXNpemUEZ3JpZAVpbWFnZQtleHBhbmQtbGVzcwtleHBhbmQtbW9yZQ9mdWxsc2NyZWVuLWV4aXQKZnVsbHNjcmVlbgAAAAAA) format("truetype")
16189
- }
16190
-
16191
- .rmel-iconfont {
16192
- font-family: rmel-iconfont !important;
16193
- font-size: 16px;
16194
- font-style: normal;
16195
- -webkit-font-smoothing: antialiased;
16196
- -moz-osx-font-smoothing: grayscale
16197
- }
16198
-
16199
- .rmel-icon-tab:before {
16200
- content: "\\e76d"
16201
- }
16202
-
16203
- .rmel-icon-keyboard:before {
16204
- content: "\\ed80"
16205
- }
16206
-
16207
- .rmel-icon-delete:before {
16208
- content: "\\ed3c"
16209
- }
16210
-
16211
- .rmel-icon-code-block:before {
16212
- content: "\\e941"
16213
- }
16214
-
16215
- .rmel-icon-code:before {
16216
- content: "\\ed3b"
16217
- }
16218
-
16219
- .rmel-icon-visibility:before {
16220
- content: "\\ed44"
16221
- }
16222
-
16223
- .rmel-icon-view-split:before {
16224
- content: "\\ed45"
16225
- }
16226
-
16227
- .rmel-icon-link:before {
16228
- content: "\\ed5f"
16229
- }
16230
-
16231
- .rmel-icon-redo:before {
16232
- content: "\\ed60"
16233
- }
16234
-
16235
- .rmel-icon-undo:before {
16236
- content: "\\ed61"
16237
- }
16238
-
16239
- .rmel-icon-bold:before {
16240
- content: "\\ed6f"
16241
- }
16242
-
16243
- .rmel-icon-italic:before {
16244
- content: "\\ed70"
16245
- }
16246
-
16247
- .rmel-icon-list-ordered:before {
16248
- content: "\\ed71"
16249
- }
16250
-
16251
- .rmel-icon-list-unordered:before {
16252
- content: "\\ed72"
16253
- }
16254
-
16255
- .rmel-icon-quote:before {
16256
- content: "\\ed73"
16257
- }
16258
-
16259
- .rmel-icon-strikethrough:before {
16260
- content: "\\ed74"
16261
- }
16262
-
16263
- .rmel-icon-underline:before {
16264
- content: "\\ed75"
16265
- }
16266
-
16267
- .rmel-icon-wrap:before {
16268
- content: "\\ed77"
16269
- }
16270
-
16271
- .rmel-icon-font-size:before {
16272
- content: "\\ed78"
16273
- }
16274
-
16275
- .rmel-icon-grid:before {
16276
- content: "\\ed8c"
16277
- }
16278
-
16279
- .rmel-icon-image:before {
16280
- content: "\\ed8d"
16281
- }
16282
-
16283
- .rmel-icon-expand-less:before {
16284
- content: "\\ed9f"
16285
- }
16286
-
16287
- .rmel-icon-expand-more:before {
16288
- content: "\\eda0"
16289
- }
16290
-
16291
- .rmel-icon-fullscreen-exit:before {
16292
- content: "\\eda1"
16293
- }
16294
-
16295
- .rmel-icon-fullscreen:before {
16296
- content: "\\eda2"
16297
- }
16298
-
16299
- .rc-md-editor {
16300
- padding-bottom: 1px;
16301
- position: relative;
16302
- -webkit-box-sizing: border-box;
16303
- box-sizing: border-box;
16304
- display: -webkit-box;
16305
- display: -webkit-flex;
16306
- display: -ms-flexbox;
16307
- display: flex;
16308
- overflow: hidden;
16309
- -webkit-box-orient: vertical;
16310
- -webkit-box-direction: normal;
16311
- -webkit-flex-direction: column;
16312
- -ms-flex-direction: column;
16313
- flex-direction: column;
16314
- border-radius: 6px;
16315
- }
16316
-
16317
- .rc-md-editor.full {
16318
- width: 100%;
16319
- height: 100% !important;
16320
- position: fixed;
16321
- left: 0;
16322
- top: 0;
16323
- z-index: 1000
16324
- }
16325
-
16326
- .rc-md-editor .editor-container {
16327
- -webkit-box-flex: 1;
16328
- -webkit-flex: 1;
16329
- -ms-flex: 1;
16330
- flex: 1;
16331
- display: -webkit-box;
16332
- display: -webkit-flex;
16333
- display: -ms-flexbox;
16334
- display: flex;
16335
- width: 100%;
16336
- min-height: 0;
16337
- position: relative;
16338
-
16339
- }
16340
-
16341
- .rc-md-editor .editor-container > .section {
16342
- -webkit-box-flex: 1;
16343
- -webkit-flex-grow: 1;
16344
- -ms-flex-positive: 1;
16345
- flex-grow: 1;
16346
- -webkit-flex-shrink: 1;
16347
- -ms-flex-negative: 1;
16348
- flex-shrink: 1;
16349
- -webkit-flex-basis: 1px;
16350
- -ms-flex-preferred-size: 1px;
16351
- flex-basis: 1px;
16352
- padding: 0px 8px;
16353
- border: none
16354
- }
16355
-
16356
- .rc-md-editor .editor-container > .section.in-visible {
16357
- display: none
16358
- }
16359
-
16360
- .rc-md-editor .editor-container > .section > .section-container {
16361
- padding: 8x 16px 16px
16362
- }
16363
-
16364
- .rc-md-editor .editor-container > .section:last-child {
16365
- border-radius: unset
16366
- }
16367
-
16368
- .rc-md-editor .editor-container .sec-md {
16369
- min-height: 0;
16370
- min-width: 0;
16371
- overflow: hidden;
16372
- }
16373
-
16374
- .rc-md-editor .editor-container .sec-md .input {
16375
- background: transparent;
16376
- font-size: 1rem;
16377
- display: block;
16378
- -webkit-box-sizing: border-box;
16379
- box-sizing: border-box;
16380
- width: 100%;
16381
- height: 100%;
16382
- overflow-y: scroll;
16383
- border: none;
16384
- resize: none;
16385
- outline: none;
16386
- min-height: 0;
16387
- color: inherit;
16388
- line-height: 1.7;
16389
-
16390
- }
16391
-
16392
- .rc-md-editor .editor-container .sec-html {
16393
- min-height: 0;
16394
- min-width: 0;
16395
-
16396
- }
16397
-
16398
- .rc-md-editor .editor-container .sec-html .html-wrap {
16399
- height: 100%;
16400
- -webkit-box-sizing: border-box;
16401
- box-sizing: border-box;
16402
- overflow: auto
16403
- }
16404
-
16405
- .custom-html-style {
16406
- color: inherit
16407
- }
16408
-
16409
- .custom-html-style h1 {
16410
- font-size: 32px;
16411
- padding: 0;
16412
- border: none;
16413
- font-weight: 700;
16414
- margin: 32px 0;
16415
- line-height: 1.2
16416
- }
16417
-
16418
- .custom-html-style h2 {
16419
- font-size: 24px;
16420
- padding: 0;
16421
- border: none;
16422
- font-weight: 700;
16423
- margin: 24px 0;
16424
- line-height: 1.7
16425
- }
16426
-
16427
- .custom-html-style h3 {
16428
- font-size: 18px;
16429
- margin: 18px 0;
16430
- padding: 0;
16431
- line-height: 1.7;
16432
- border: none
16433
- }
16434
-
16435
- .custom-html-style p {
16436
- font-size: 16px;
16437
- line-height: 1.7;
16438
- margin: 8px 0
16439
- }
16440
-
16441
- .custom-html-style a {
16442
- }
16443
-
16444
- .custom-html-style a:hover {
16445
- text-decoration: none
16446
- }
16447
-
16448
- .custom-html-style strong {
16449
- font-weight: 700
16450
- }
16451
-
16452
- .custom-html-style ol, .custom-html-style ul {
16453
- font-size: 16px;
16454
- line-height: 28px;
16455
- padding-left: 36px
16456
- }
16457
-
16458
- .custom-html-style li {
16459
- margin-bottom: 8px;
16460
- line-height: 1.7
16461
- }
16462
-
16463
- .custom-html-style hr {
16464
- margin-top: 20px;
16465
- margin-bottom: 20px;
16466
- border: 0;
16467
- }
16468
-
16469
- .custom-html-style pre {
16470
- display: block;
16471
- padding: 20px;
16472
- line-height: 28px;
16473
- word-break: break-word
16474
- }
16475
-
16476
- .custom-html-style code, .custom-html-style pre {
16477
- font-size: 16px;
16478
- border-radius: 0;
16479
- overflow-x: auto
16480
- }
16481
-
16482
- .custom-html-style code {
16483
- padding: 3px 0;
16484
- margin: 0;
16485
- word-break: normal
16486
- }
16487
-
16488
- .custom-html-style code:after, .custom-html-style code:before {
16489
- letter-spacing: 0
16490
- }
16491
-
16492
- .custom-html-style blockquote {
16493
- position: relative;
16494
- margin: 16px 0;
16495
- padding: 5px 8px 5px 30px;
16496
- background: none repeat scroll 0 0 ${"rgb(39 39 41)"};
16497
- color: inherit;
16498
- border: none;
16499
- border-left: 10px solid #d6dbdf
16500
- }
16501
-
16502
- .custom-html-style img, .custom-html-style video {
16503
- max-width: 100%
16504
- }
16505
-
16506
- .custom-html-style table {
16507
- font-size: 16px;
16508
- line-height: 1.7;
16509
- max-width: 100%;
16510
- overflow: auto;
16511
-
16512
- border-collapse: collapse;
16513
- border-spacing: 0;
16514
- -webkit-box-sizing: border-box;
16515
- box-sizing: border-box
16516
- }
16517
-
16518
- .custom-html-style table td, .custom-html-style table th {
16519
- word-break: break-all;
16520
- word-wrap: break-word;
16521
- white-space: normal
16522
- }
16523
-
16524
- .custom-html-style table tr {
16525
- }
16526
-
16527
- .custom-html-style table tr:nth-of-type(2n) {
16528
- background-color: transparent
16529
- }
16530
-
16531
- .custom-html-style table th {
16532
- text-align: center;
16533
- font-weight: 700;
16534
-
16535
- padding: 10px 6px;
16536
- background-color: #f5f7fa;
16537
- word-break: break-word
16538
- }
16539
-
16540
- .custom-html-style table td {
16541
-
16542
- text-align: left;
16543
- padding: 10px 15px;
16544
- word-break: break-word;
16545
- min-width: 60px
16546
- }
16547
-
16548
- .rc-md-editor .drop-wrap {
16549
- display: block;
16550
- position: absolute;
16551
- left: 0;
16552
- top: 28px;
16553
- z-index: 2;
16554
- min-width: 20px;
16555
- padding: 10px 0;
16556
- text-align: center;
16557
- border-style: solid;
16558
- border-width: 1px
16559
- }
16560
-
16561
- .rc-md-editor .drop-wrap.hidden {
16562
- display: none !important
16563
- }
16564
-
16565
- .rc-md-editor .rc-md-navigation {
16566
- min-height: 38px;
16567
- padding: 0 8px;
16568
- -webkit-box-sizing: border-box;
16569
- box-sizing: border-box;
16570
- font-size: 16px;
16571
- -webkit-user-select: none;
16572
- -moz-user-select: none;
16573
- -ms-user-select: none;
16574
- user-select: none;
16575
- display: -webkit-box;
16576
- display: -webkit-flex;
16577
- display: -ms-flexbox;
16578
- display: flex;
16579
- -webkit-box-orient: horizontal;
16580
- -webkit-box-direction: normal;
16581
- -webkit-flex-direction: row;
16582
- -ms-flex-direction: row;
16583
- flex-direction: row;
16584
- -webkit-box-pack: justify;
16585
- -webkit-justify-content: space-between;
16586
- -ms-flex-pack: justify;
16587
- justify-content: space-between;
16588
- color: "inherit",
16589
-
16590
- }
16591
-
16592
- .rc-md-editor .rc-md-navigation.in-visible {
16593
- display: none
16594
- }
16595
-
16596
- .rc-md-editor .rc-md-navigation .navigation-nav {
16597
- -webkit-box-align: center;
16598
- -webkit-align-items: center;
16599
- -ms-flex-align: center;
16600
- align-items: center;
16601
- -webkit-box-pack: center;
16602
- -webkit-justify-content: center;
16603
- -ms-flex-pack: center;
16604
- justify-content: center;
16605
- font-size: 16px;
16606
- }
16607
-
16608
- .rc-md-editor .rc-md-navigation .button-wrap, .rc-md-editor .rc-md-navigation .navigation-nav {
16609
- display: -webkit-box;
16610
- display: -webkit-flex;
16611
- display: -ms-flexbox;
16612
- display: flex;
16613
- -webkit-box-orient: horizontal;
16614
- -webkit-box-direction: normal;
16615
- -webkit-flex-direction: row;
16616
- -ms-flex-direction: row;
16617
- flex-direction: row
16618
- }
16619
-
16620
- .rc-md-editor .rc-md-navigation .button-wrap {
16621
- -webkit-flex-wrap: wrap;
16622
- -ms-flex-wrap: wrap;
16623
- flex-wrap: wrap
16624
- }
16625
-
16626
- .rc-md-editor .rc-md-navigation .button-wrap .button {
16627
- position: relative;
16628
- min-width: 22px;
16629
- height: 28px;
16630
- margin-left: 3px;
16631
- margin-right: -2px;
16632
- display: inline-block;
16633
- cursor: pointer;
16634
- line-height: 28px;
16635
- text-align: center;
16636
- }
16637
-
16638
- .rc-md-editor .rc-md-navigation .button-wrap .button:hover {
16639
- }
16640
-
16641
- .rc-md-editor .rc-md-navigation .button-wrap .button.disabled {
16642
- cursor: not-allowed
16643
- }
16644
-
16645
- .rc-md-editor .rc-md-navigation .button-wrap .button:first-of-type {
16646
- margin-left: 0
16647
- }
16648
-
16649
- .rc-md-editor .rc-md-navigation .button-wrap .button:last-child {
16650
- margin-right: 0
16651
- }
16652
-
16653
- .rc-md-editor .rc-md-navigation .button-wrap .rmel-iconfont {
16654
- font-size: 18px
16655
- }
16656
-
16657
- .rc-md-editor .rc-md-navigation li, .rc-md-editor .rc-md-navigation ul {
16658
- list-style: none;
16659
- margin: 0;
16660
- padding: 0
16661
- }
16662
-
16663
- .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 {
16664
- font-family: inherit;
16665
- font-weight: 500;
16666
- color: inherit;
16667
- padding: 0;
16668
- margin: 0;
16669
- line-height: 1.1
16670
- }
16671
-
16672
- .rc-md-editor .rc-md-navigation h1 {
16673
- font-size: 34px
16674
- }
16675
-
16676
- .rc-md-editor .rc-md-navigation h2 {
16677
- font-size: 30px
16678
- }
16679
-
16680
- .rc-md-editor .rc-md-navigation h3 {
16681
- font-size: 24px
16682
- }
16683
-
16684
- .rc-md-editor .rc-md-navigation h4 {
16685
- font-size: 18px
16686
- }
16687
-
16688
- .rc-md-editor .rc-md-navigation h5 {
16689
- font-size: 16px
16690
- }
16691
-
16692
- .rc-md-editor .rc-md-navigation h6 {
16693
- font-size: 12px
16694
- }
16695
-
16696
- .rc-md-editor .tool-bar {
16697
- position: absolute;
16698
- z-index: 1;
16699
- right: 8px;
16700
- top: 8px
16701
- }
16702
-
16703
- .rc-md-editor .tool-bar .button {
16704
- min-width: 24px;
16705
- height: 28px;
16706
- margin-right: 5px;
16707
- display: inline-block;
16708
- cursor: pointer;
16709
- font-size: 16px;
16710
- line-height: 28px;
16711
- text-align: center;
16712
- color: #999
16713
- }
16714
-
16715
- .rc-md-editor .tool-bar .button:hover {
16716
- color: inherit
16717
- }
16718
-
16719
- .rc-md-editor .rc-md-gray-100 {
16720
- display: block;
16721
- width: 1px;
16722
- }
16723
-
16724
- .rc-md-editor .table-list.wrap {
16725
- position: relative;
16726
- margin: 0 10px;
16727
- -webkit-box-sizing: border-box;
16728
- box-sizing: border-box
16729
- }
16730
-
16731
- .rc-md-editor .table-list.wrap .list-item {
16732
- position: absolute;
16733
- top: 0;
16734
- left: 0;
16735
- display: inline-block;
16736
- width: 20px;
16737
- height: 20px;
16738
- border-radius: 4px
16739
- }
16740
-
16741
- .rc-md-editor .table-list.wrap .list-item.active {
16742
- }
16743
-
16744
- .rc-md-editor .tab-map-list .list-item {
16745
- width: 120px;
16746
- -webkit-box-sizing: border-box;
16747
- box-sizing: border-box
16748
- }
16749
-
16750
- .rc-md-editor .tab-map-list .list-item:hover {
16751
- }
16752
-
16753
- .rc-md-editor .tab-map-list .list-item.active {
16754
- font-weight: 700
16755
- }
16756
-
16757
- .rc-md-editor .header-list .list-item {
16758
- width: 100px;
16759
- -webkit-box-sizing: border-box;
16760
- box-sizing: border-box;
16761
- padding: 8px 0
16762
- }
16763
-
16764
- .rc-md-editor .header-list .list-item:hover {
16765
- }
16766
-
16767
- `;
16768
16202
  function ArrayCustomShapedFieldBinding({
16769
16203
  propertyKey,
16770
16204
  value,
@@ -16772,7 +16206,7 @@ function ArrayCustomShapedFieldBinding({
16772
16206
  showError,
16773
16207
  isSubmitting,
16774
16208
  setValue,
16775
- tableMode,
16209
+ minimalistView,
16776
16210
  property,
16777
16211
  includeDescription,
16778
16212
  underlyingValueHasChanged,
@@ -16811,15 +16245,14 @@ function ArrayCustomShapedFieldBinding({
16811
16245
  includeDescription,
16812
16246
  underlyingValueHasChanged,
16813
16247
  context,
16814
- tableMode: false,
16815
16248
  partOfArray: true,
16816
- partOfBlock: false,
16249
+ minimalistView: false,
16817
16250
  autoFocus: false
16818
16251
  };
16819
16252
  return /* @__PURE__ */ jsx("div", { className: "pb-4", children: /* @__PURE__ */ jsx(PropertyFieldBinding, { ...fieldProps }) }, `custom_shaped_array_${index}`);
16820
16253
  });
16821
16254
  return /* @__PURE__ */ jsxs(Fragment, { children: [
16822
- !tableMode && /* @__PURE__ */ jsx(
16255
+ !minimalistView && /* @__PURE__ */ jsx(
16823
16256
  ExpandablePanel,
16824
16257
  {
16825
16258
  initiallyExpanded: expanded,
@@ -16828,7 +16261,7 @@ function ArrayCustomShapedFieldBinding({
16828
16261
  children: body
16829
16262
  }
16830
16263
  ),
16831
- tableMode && body,
16264
+ minimalistView && body,
16832
16265
  /* @__PURE__ */ jsx(
16833
16266
  FieldHelperText,
16834
16267
  {
@@ -16877,7 +16310,7 @@ const DEFAULT_FIELD_CONFIGS = {
16877
16310
  property: {
16878
16311
  dataType: "string",
16879
16312
  markdown: true,
16880
- Field: MarkdownFieldBinding
16313
+ Field: MarkdownEditorFieldBinding
16881
16314
  }
16882
16315
  },
16883
16316
  url: {
@@ -18153,7 +17586,7 @@ function EntityEditViewInner({
18153
17586
  name,
18154
17587
  value,
18155
17588
  property
18156
- }) => dataSource.checkUniqueField(path, name, value, entityId),
17589
+ }) => dataSource.checkUniqueField(path, name, value, entityId, collection.databaseId),
18157
17590
  [dataSource, path, entityId]
18158
17591
  );
18159
17592
  const validationSchema = useMemo(
@@ -18214,9 +17647,8 @@ function EntityEditViewInner({
18214
17647
  includeDescription: property.description || property.longDescription,
18215
17648
  underlyingValueHasChanged: underlyingValueHasChanged && !autoSave,
18216
17649
  context: formContext,
18217
- tableMode: false,
18218
17650
  partOfArray: false,
18219
- partOfBlock: false,
17651
+ minimalistView: false,
18220
17652
  autoFocus: false
18221
17653
  };
18222
17654
  return /* @__PURE__ */ jsx(
@@ -19120,7 +18552,7 @@ function useBuildDataSource({
19120
18552
  */
19121
18553
  fetchCollection: useCallback(({
19122
18554
  path,
19123
- collection: collectionProp,
18555
+ collection,
19124
18556
  filter,
19125
18557
  limit,
19126
18558
  startAfter,
@@ -19135,7 +18567,8 @@ function useBuildDataSource({
19135
18567
  startAfter,
19136
18568
  searchString,
19137
18569
  orderBy,
19138
- order
18570
+ order,
18571
+ collection
19139
18572
  });
19140
18573
  }, [delegate]),
19141
18574
  /**
@@ -19167,7 +18600,7 @@ function useBuildDataSource({
19167
18600
  onError
19168
18601
  }) => {
19169
18602
  const collection = collectionProp ?? navigationController.getCollection(path);
19170
- const isCollectionGroup = Boolean(collection?.collectionGroup) ?? false;
18603
+ Boolean(collection?.collectionGroup);
19171
18604
  if (!delegate.listenCollection)
19172
18605
  throw Error("useBuildDataSource delegate not initialised");
19173
18606
  return delegate.listenCollection({
@@ -19180,7 +18613,6 @@ function useBuildDataSource({
19180
18613
  order,
19181
18614
  onUpdate,
19182
18615
  onError,
19183
- isCollectionGroup,
19184
18616
  collection
19185
18617
  });
19186
18618
  }, [delegate, navigationController.getCollection]) : void 0,
@@ -19193,10 +18625,12 @@ function useBuildDataSource({
19193
18625
  */
19194
18626
  fetchEntity: useCallback(({
19195
18627
  path,
19196
- entityId
18628
+ entityId,
18629
+ collection
19197
18630
  }) => delegate.fetchEntity({
19198
18631
  path,
19199
- entityId
18632
+ entityId,
18633
+ collection
19200
18634
  }), [delegate]),
19201
18635
  /**
19202
18636
  *
@@ -19221,7 +18655,8 @@ function useBuildDataSource({
19221
18655
  path,
19222
18656
  entityId,
19223
18657
  onUpdate,
19224
- onError
18658
+ onError,
18659
+ collection
19225
18660
  });
19226
18661
  }, [delegate.listenEntity]) : void 0,
19227
18662
  /**
@@ -19243,6 +18678,14 @@ function useBuildDataSource({
19243
18678
  status
19244
18679
  }) => {
19245
18680
  const collection = collectionProp ?? navigationController.getCollection(path);
18681
+ console.log("useBuildDatasource save", {
18682
+ path,
18683
+ entityId,
18684
+ values,
18685
+ collectionProp,
18686
+ collection,
18687
+ status
18688
+ });
19246
18689
  const resolvedCollection = collection ? resolveCollection({
19247
18690
  collection,
19248
18691
  path,
@@ -19264,6 +18707,7 @@ function useBuildDataSource({
19264
18707
  ) : firestoreValues;
19265
18708
  return delegate.saveEntity({
19266
18709
  path,
18710
+ collection,
19267
18711
  entityId,
19268
18712
  values: updatedFirestoreValues,
19269
18713
  status
@@ -19296,8 +18740,8 @@ function useBuildDataSource({
19296
18740
  * @return `true` if there are no other fields besides the given entity
19297
18741
  * @group Firestore
19298
18742
  */
19299
- checkUniqueField: useCallback((path, name, value, entityId) => {
19300
- return delegate.checkUniqueField(path, name, value, entityId);
18743
+ checkUniqueField: useCallback((path, name, value, entityId, databaseId) => {
18744
+ return delegate.checkUniqueField(path, name, value, entityId, databaseId);
19301
18745
  }, [delegate.checkUniqueField]),
19302
18746
  generateEntityId: useCallback((path) => {
19303
18747
  return delegate.generateEntityId(path);
@@ -19314,11 +18758,12 @@ function useBuildDataSource({
19314
18758
  filter,
19315
18759
  orderBy,
19316
18760
  order,
19317
- isCollectionGroup: Boolean(collection.collectionGroup)
18761
+ collection
19318
18762
  });
19319
18763
  } : void 0,
19320
18764
  isFilterCombinationValid: useCallback(({
19321
18765
  path,
18766
+ databaseId,
19322
18767
  filterValues,
19323
18768
  sortBy
19324
18769
  }) => {
@@ -19327,6 +18772,7 @@ function useBuildDataSource({
19327
18772
  return delegate.isFilterCombinationValid(
19328
18773
  {
19329
18774
  path,
18775
+ databaseId,
19330
18776
  filterValues,
19331
18777
  sortBy
19332
18778
  }
@@ -19566,7 +19012,7 @@ const Scaffold = React__default.memo(
19566
19012
  setDrawerOpen(false);
19567
19013
  }, []);
19568
19014
  const computedDrawerOpen = drawerOpen || Boolean(largeLayout && autoOpenDrawer && onHover);
19569
- const hasAppBar = Boolean(appBarChildren);
19015
+ const hasAppBar = Boolean(appBarChildren.length > 0);
19570
19016
  return /* @__PURE__ */ jsx(AppContext.Provider, { value: {
19571
19017
  logo,
19572
19018
  hasDrawer: includeDrawer,
@@ -19832,7 +19278,7 @@ function DefaultDrawer({
19832
19278
  };
19833
19279
  return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs("div", { className: cls("flex flex-col h-full relative flex-grow w-full", className), style, children: [
19834
19280
  /* @__PURE__ */ jsx(DrawerLogo, { logo }),
19835
- /* @__PURE__ */ jsx("div", { className: "overflow-scroll no-scrollbar", children: groupsWithoutAdmin.map((group) => /* @__PURE__ */ jsxs(
19281
+ /* @__PURE__ */ jsx("div", { className: "flex-grow overflow-scroll no-scrollbar", children: groupsWithoutAdmin.map((group) => /* @__PURE__ */ jsxs(
19836
19282
  React__default.Fragment,
19837
19283
  {
19838
19284
  children: [
@@ -20102,7 +19548,7 @@ export {
20102
19548
  LabelWithIcon,
20103
19549
  MapFieldBinding,
20104
19550
  MapPropertyPreview,
20105
- MarkdownFieldBinding,
19551
+ MarkdownEditorFieldBinding,
20106
19552
  ModeControllerContext,
20107
19553
  ModeControllerProvider,
20108
19554
  MultiSelectBinding,
@@ -20244,6 +19690,8 @@ export {
20244
19690
  resolveProperties,
20245
19691
  resolveProperty,
20246
19692
  resolvePropertyEnum,
19693
+ resolveStorageFilenameString,
19694
+ resolveStoragePathString,
20247
19695
  sanitizeData,
20248
19696
  saveEntityWithCallbacks,
20249
19697
  segmentsToStrippedPath,