@firecms/core 3.0.0-alpha.8 → 3.0.0-alpha.81
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/components/ArrayContainer.d.ts +42 -0
- package/dist/components/CircularProgressCenter.d.ts +11 -0
- package/dist/components/DeleteConfirmationDialog.d.ts +9 -0
- package/dist/components/DeleteEntityDialog.d.ts +12 -0
- package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +35 -0
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +30 -0
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +106 -0
- package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +18 -0
- package/dist/components/EntityCollectionTable/SimpleEntityCollectionTable.d.ts +95 -0
- package/dist/components/EntityCollectionTable/column_utils.d.ts +16 -0
- package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +15 -0
- package/dist/components/EntityCollectionTable/fields/TableStorageUpload.d.ts +33 -0
- package/dist/components/EntityCollectionTable/filters/BooleanFilterField.d.ts +9 -0
- package/dist/components/EntityCollectionTable/filters/DateTimeFilterField.d.ts +11 -0
- package/dist/components/EntityCollectionTable/filters/ReferenceFilterField.d.ts +14 -0
- package/dist/components/EntityCollectionTable/filters/StringNumberFilterField.d.ts +13 -0
- package/dist/components/EntityCollectionTable/index.d.ts +8 -0
- package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +18 -0
- package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +26 -0
- package/dist/components/EntityCollectionTable/internal/EntityTableCellActions.d.ts +9 -0
- package/dist/components/EntityCollectionTable/internal/common.d.ts +4 -0
- package/dist/components/EntityCollectionTable/internal/default_entity_actions.d.ts +6 -0
- package/dist/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +5 -0
- package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +23 -0
- package/dist/components/EntityCollectionTable/internal/popup_field/useDraggable.d.ts +13 -0
- package/dist/components/EntityCollectionTable/internal/popup_field/useWindowSize.d.ts +6 -0
- package/dist/components/EntityCollectionTable/types.d.ts +53 -0
- package/dist/components/EntityCollectionTable/useDataSourceEntityCollectionTableController.d.ts +32 -0
- package/dist/components/EntityCollectionTable/useDebouncedData.d.ts +9 -0
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +37 -0
- package/dist/components/EntityCollectionView/EntityCollectionViewActions.d.ts +14 -0
- package/dist/components/EntityCollectionView/useColumnsIds.d.ts +4 -0
- package/dist/components/EntityPreview.d.ts +11 -0
- package/dist/components/ErrorBoundary.d.ts +11 -0
- package/dist/components/ErrorTooltip.d.ts +2 -0
- package/dist/components/ErrorView.d.ts +19 -0
- package/dist/components/FieldConfigBadge.d.ts +4 -0
- package/dist/components/FireCMSAppBar.d.ts +26 -0
- package/dist/components/FireCMSLogo.d.ts +7 -0
- package/dist/components/HomePage/DefaultHomePage.d.ts +21 -0
- package/dist/components/HomePage/FavouritesView.d.ts +3 -0
- package/dist/components/HomePage/NavigationCollectionCard.d.ts +17 -0
- package/dist/components/HomePage/NavigationGroup.d.ts +4 -0
- package/dist/components/HomePage/index.d.ts +3 -0
- package/dist/components/LabelWithIcon.d.ts +14 -0
- package/dist/components/NotFoundPage.d.ts +1 -0
- package/dist/components/ReferenceSelectionInner.d.ts +58 -0
- package/dist/components/ReferenceWidget.d.ts +28 -0
- package/dist/components/SearchIconsView.d.ts +5 -0
- package/dist/components/VirtualTable/VirtualTable.d.ts +11 -0
- package/dist/components/VirtualTable/VirtualTableCell.d.ts +14 -0
- package/dist/components/VirtualTable/VirtualTableHeader.d.ts +27 -0
- package/dist/components/VirtualTable/VirtualTableHeaderRow.d.ts +2 -0
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +214 -0
- package/dist/components/VirtualTable/VirtualTableRow.d.ts +3 -0
- package/dist/components/VirtualTable/common.d.ts +2 -0
- package/dist/components/VirtualTable/fields/VirtualTableDateField.d.ts +11 -0
- package/dist/components/VirtualTable/fields/VirtualTableInput.d.ts +8 -0
- package/dist/components/VirtualTable/fields/VirtualTableNumberInput.d.ts +8 -0
- package/dist/components/VirtualTable/fields/VirtualTableSelect.d.ts +15 -0
- package/dist/components/VirtualTable/fields/VirtualTableSwitch.d.ts +7 -0
- package/dist/components/VirtualTable/index.d.ts +2 -0
- package/dist/components/VirtualTable/types.d.ts +34 -0
- package/dist/components/index.d.ts +21 -0
- package/dist/contexts/AuthControllerContext.d.ts +3 -0
- package/dist/contexts/DataSourceContext.d.ts +3 -0
- package/dist/contexts/DialogsProvider.d.ts +4 -0
- package/dist/contexts/ModeController.d.ts +4 -0
- package/dist/contexts/NavigationContext.d.ts +3 -0
- package/dist/contexts/SideDialogsControllerContext.d.ts +3 -0
- package/dist/contexts/SideEntityControllerContext.d.ts +3 -0
- package/dist/contexts/SnackbarProvider.d.ts +2 -0
- package/dist/contexts/StorageSourceContext.d.ts +3 -0
- package/dist/contexts/UserConfigurationPersistenceContext.d.ts +3 -0
- package/dist/contexts/index.d.ts +3 -0
- package/dist/core/Drawer.d.ts +23 -0
- package/dist/core/EntitySidePanel.d.ts +10 -0
- package/dist/core/FireCMS.d.ts +14 -0
- package/dist/core/NavigationRoutes.d.ts +21 -0
- package/dist/core/Scaffold.d.ts +52 -0
- package/dist/core/SideDialogs.d.ts +23 -0
- package/dist/core/field_configs.d.ts +7 -0
- package/dist/core/index.d.ts +10 -0
- package/dist/core/useBuildLocalConfigurationPersistence.d.ts +2 -0
- package/dist/core/useBuildModeController.d.ts +6 -0
- package/dist/form/EntityForm.d.ts +75 -0
- package/dist/form/PropertyFieldBinding.d.ts +30 -0
- package/dist/form/components/CustomIdField.d.ts +9 -0
- package/dist/form/components/ErrorFocus.d.ts +4 -0
- package/dist/form/components/FieldHelperText.d.ts +12 -0
- package/dist/form/components/FormikArrayContainer.d.ts +18 -0
- package/dist/form/components/StorageItemPreview.d.ts +13 -0
- package/dist/form/components/StorageUploadProgress.d.ts +10 -0
- package/dist/form/components/SubmitListener.d.ts +1 -0
- package/dist/form/components/SwitchControl.d.ts +8 -0
- package/dist/form/components/index.d.ts +3 -0
- package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +9 -0
- package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +11 -0
- package/dist/form/field_bindings/BlockFieldBinding.d.ts +10 -0
- package/dist/form/field_bindings/DateTimeFieldBinding.d.ts +11 -0
- package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +7 -0
- package/dist/form/field_bindings/MapFieldBinding.d.ts +9 -0
- package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +9 -0
- package/dist/form/field_bindings/MultiSelectBinding.d.ts +9 -0
- package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +10 -0
- package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +9 -0
- package/dist/form/field_bindings/RepeatFieldBinding.d.ts +10 -0
- package/dist/form/field_bindings/SelectFieldBinding.d.ts +12 -0
- package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +28 -0
- package/dist/form/field_bindings/SwitchFieldBinding.d.ts +12 -0
- package/dist/form/field_bindings/TextFieldBinding.d.ts +12 -0
- package/dist/form/index.d.ts +20 -0
- package/dist/form/useClearRestoreValue.d.ts +13 -0
- package/dist/form/validation.d.ts +25 -0
- package/dist/hooks/data/delete.d.ts +37 -0
- package/dist/hooks/data/save.d.ts +42 -0
- package/dist/hooks/data/useCollectionFetch.d.ts +50 -0
- package/dist/hooks/data/useDataOrder.d.ts +12 -0
- package/dist/hooks/data/useDataSource.d.ts +6 -0
- package/dist/hooks/data/useEntityFetch.d.ts +28 -0
- package/dist/hooks/index.d.ts +19 -0
- package/dist/hooks/useAuthController.d.ts +11 -0
- package/dist/hooks/useBrowserTitleAndIcon.d.ts +6 -0
- package/dist/hooks/useClipboard.d.ts +57 -0
- package/dist/hooks/useDialogsController.d.ts +11 -0
- package/dist/hooks/useFireCMSContext.d.ts +12 -0
- package/dist/hooks/useLargeLayout.d.ts +1 -0
- package/dist/hooks/useModeController.d.ts +20 -0
- package/dist/hooks/useNavigationController.d.ts +9 -0
- package/dist/hooks/useReferenceDialog.d.ts +18 -0
- package/dist/hooks/useResolvedNavigationFrom.d.ts +72 -0
- package/dist/hooks/useSideDialogsController.d.ts +18 -0
- package/dist/hooks/useSideEntityController.d.ts +12 -0
- package/dist/hooks/useSnackbarController.d.ts +41 -0
- package/dist/hooks/useStorageSource.d.ts +6 -0
- package/dist/hooks/useUserConfigurationPersistence.d.ts +8 -0
- package/dist/hooks/useVerifyLicense.d.ts +0 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.es.js +15810 -26791
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +5 -1027
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/EntityView.d.ts +22 -0
- package/dist/internal/common.d.ts +3 -0
- package/dist/internal/useBuildDataSource.d.ts +22 -0
- package/dist/internal/useBuildNavigationController.d.ts +14 -0
- package/dist/internal/useBuildSideDialogsController.d.ts +2 -0
- package/dist/internal/useBuildSideEntityController.d.ts +4 -0
- package/dist/internal/useLocaleConfig.d.ts +1 -0
- package/dist/internal/useRestoreScroll.d.ts +6 -0
- package/dist/internal/useUnsavedChangesDialog.d.ts +14 -0
- package/dist/preview/PropertyPreview.d.ts +7 -0
- package/dist/preview/PropertyPreviewProps.d.ts +43 -0
- package/dist/preview/components/ArrayEnumPreview.d.ts +11 -0
- package/dist/preview/components/AsyncPreviewComponent.d.ts +11 -0
- package/dist/preview/components/BooleanPreview.d.ts +7 -0
- package/dist/preview/components/DatePreview.d.ts +7 -0
- package/dist/preview/components/EmptyValue.d.ts +4 -0
- package/dist/preview/components/EnumValuesChip.d.ts +13 -0
- package/dist/preview/components/ImagePreview.d.ts +12 -0
- package/dist/preview/components/ReferencePreview.d.ts +22 -0
- package/dist/preview/components/StorageThumbnail.d.ts +13 -0
- package/dist/preview/components/UrlComponentPreview.d.ts +12 -0
- package/dist/preview/index.d.ts +23 -0
- package/dist/preview/property_previews/ArrayOfMapsPreview.d.ts +5 -0
- package/dist/preview/property_previews/ArrayOfReferencesPreview.d.ts +5 -0
- package/dist/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +5 -0
- package/dist/preview/property_previews/ArrayOfStringsPreview.d.ts +5 -0
- package/dist/preview/property_previews/ArrayOneOfPreview.d.ts +5 -0
- package/dist/preview/property_previews/ArrayPropertyEnumPreview.d.ts +5 -0
- package/dist/preview/property_previews/ArrayPropertyPreview.d.ts +5 -0
- package/dist/preview/property_previews/MapPropertyPreview.d.ts +8 -0
- package/dist/preview/property_previews/NumberPropertyPreview.d.ts +6 -0
- package/dist/preview/property_previews/SkeletonPropertyComponent.d.ts +14 -0
- package/dist/preview/property_previews/StringPropertyPreview.d.ts +6 -0
- package/dist/preview/util.d.ts +7 -0
- package/dist/types/analytics.d.ts +1 -0
- package/dist/types/appcheck.d.ts +26 -0
- package/dist/types/auth.d.ts +40 -0
- package/dist/types/collections.d.ts +451 -0
- package/dist/types/datasource.d.ts +262 -0
- package/dist/types/dialogs_controller.d.ts +32 -0
- package/dist/types/entities.d.ts +57 -0
- package/dist/types/entity_actions.d.ts +35 -0
- package/dist/types/entity_callbacks.d.ts +171 -0
- package/dist/types/entity_link_builder.d.ts +7 -0
- package/dist/types/export_import.d.ts +21 -0
- package/dist/types/fields.d.ts +181 -0
- package/dist/types/firecms.d.ts +151 -0
- package/dist/types/firecms_context.d.ts +110 -0
- package/dist/types/index.d.ts +26 -0
- package/dist/types/local_config_persistence.d.ts +21 -0
- package/dist/types/locales.d.ts +4 -0
- package/dist/types/modify_collections.d.ts +5 -0
- package/dist/types/navigation.d.ts +178 -0
- package/dist/types/permissions.d.ts +63 -0
- package/dist/types/plugins.d.ts +181 -0
- package/dist/types/properties.d.ts +681 -0
- package/dist/types/property_config.d.ts +42 -0
- package/dist/types/resolved_entities.d.ts +98 -0
- package/dist/types/side_dialogs_controller.d.ts +57 -0
- package/dist/types/side_entity_controller.d.ts +83 -0
- package/dist/types/storage.d.ts +82 -0
- package/dist/types/user.d.ts +36 -0
- package/dist/util/arrays.d.ts +1 -0
- package/dist/util/builders.d.ts +64 -0
- package/dist/util/collections.d.ts +3 -0
- package/dist/util/common.d.ts +2 -0
- package/dist/util/dates.d.ts +1 -0
- package/dist/util/entities.d.ts +28 -0
- package/dist/util/enums.d.ts +7 -0
- package/dist/util/flatten_object.d.ts +3 -0
- package/dist/util/hash.d.ts +1 -0
- package/dist/util/icon_list.d.ts +1 -0
- package/dist/util/icon_synonyms.d.ts +1950 -0
- package/dist/util/icons.d.ts +4 -0
- package/dist/util/index.d.ts +22 -0
- package/dist/util/join_collections.d.ts +9 -0
- package/dist/util/make_properties_editable.d.ts +3 -0
- package/dist/util/navigation_from_path.d.ts +24 -0
- package/dist/util/navigation_utils.d.ts +20 -0
- package/dist/util/objects.d.ts +10 -0
- package/dist/util/os.d.ts +2 -0
- package/dist/util/parent_references_from_path.d.ts +6 -0
- package/dist/util/paths.d.ts +14 -0
- package/dist/util/permissions.d.ts +5 -0
- package/dist/util/plurals.d.ts +18 -0
- package/dist/util/property_utils.d.ts +23 -0
- package/dist/util/references.d.ts +2 -0
- package/dist/util/regexp.d.ts +7 -0
- package/dist/util/resolutions.d.ts +64 -0
- package/dist/util/storage.d.ts +3 -0
- package/dist/util/strings.d.ts +6 -0
- package/dist/util/useDebounce.d.ts +1 -0
- package/dist/util/useStorageUploadController.d.ts +36 -0
- package/dist/util/useTraceUpdate.d.ts +1 -0
- package/package.json +112 -142
- package/src/components/ArrayContainer.tsx +369 -0
- package/src/components/CircularProgressCenter.tsx +26 -0
- package/src/components/DeleteConfirmationDialog.tsx +47 -0
- package/src/components/DeleteEntityDialog.tsx +207 -0
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +174 -0
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +496 -0
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +150 -0
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +461 -0
- package/src/components/EntityCollectionTable/SimpleEntityCollectionTable.tsx +369 -0
- package/src/components/EntityCollectionTable/column_utils.tsx +74 -0
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +159 -0
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +313 -0
- package/src/components/EntityCollectionTable/filters/BooleanFilterField.tsx +49 -0
- package/src/components/EntityCollectionTable/filters/DateTimeFilterField.tsx +109 -0
- package/src/components/EntityCollectionTable/filters/ReferenceFilterField.tsx +187 -0
- package/src/components/EntityCollectionTable/filters/StringNumberFilterField.tsx +159 -0
- package/src/components/EntityCollectionTable/index.tsx +20 -0
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +113 -0
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +257 -0
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +70 -0
- package/src/components/EntityCollectionTable/internal/common.tsx +70 -0
- package/src/components/EntityCollectionTable/internal/default_entity_actions.tsx +122 -0
- package/src/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.tsx +59 -0
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +401 -0
- package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +97 -0
- package/src/components/EntityCollectionTable/internal/popup_field/useWindowSize.tsx +20 -0
- package/src/components/EntityCollectionTable/types.tsx +58 -0
- package/src/components/EntityCollectionTable/useDataSourceEntityCollectionTableController.tsx +225 -0
- package/src/components/EntityCollectionTable/useDebouncedData.ts +49 -0
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +815 -0
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +131 -0
- package/src/components/EntityCollectionView/useColumnsIds.tsx +100 -0
- package/src/components/EntityPreview.tsx +83 -0
- package/src/components/ErrorBoundary.tsx +40 -0
- package/src/components/ErrorTooltip.tsx +11 -0
- package/src/components/ErrorView.tsx +52 -0
- package/src/components/FieldConfigBadge.tsx +17 -0
- package/src/components/FireCMSAppBar.tsx +157 -0
- package/src/components/FireCMSLogo.tsx +73 -0
- package/src/components/HomePage/DefaultHomePage.tsx +209 -0
- package/src/components/HomePage/FavouritesView.tsx +64 -0
- package/src/components/HomePage/NavigationCollectionCard.tsx +145 -0
- package/src/components/HomePage/NavigationGroup.tsx +39 -0
- package/src/components/HomePage/index.tsx +3 -0
- package/src/components/LabelWithIcon.tsx +33 -0
- package/src/components/NotFoundPage.tsx +25 -0
- package/src/components/ReferenceSelectionInner.tsx +364 -0
- package/src/components/ReferenceWidget.tsx +145 -0
- package/src/components/SearchIconsView.tsx +75 -0
- package/src/components/VirtualTable/VirtualTable.tsx +402 -0
- package/src/components/VirtualTable/VirtualTableCell.tsx +32 -0
- package/src/components/VirtualTable/VirtualTableHeader.tsx +260 -0
- package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +131 -0
- package/src/components/VirtualTable/VirtualTableProps.tsx +269 -0
- package/src/components/VirtualTable/VirtualTableRow.tsx +53 -0
- package/src/components/VirtualTable/common.tsx +18 -0
- package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +37 -0
- package/src/components/VirtualTable/fields/VirtualTableInput.tsx +91 -0
- package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +82 -0
- package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +130 -0
- package/src/components/VirtualTable/fields/VirtualTableSwitch.tsx +32 -0
- package/src/components/VirtualTable/index.tsx +2 -0
- package/src/components/VirtualTable/types.tsx +44 -0
- package/src/components/index.tsx +31 -0
- package/src/contexts/AuthControllerContext.tsx +4 -0
- package/src/contexts/DataSourceContext.tsx +4 -0
- package/src/contexts/DialogsProvider.tsx +52 -0
- package/src/contexts/ModeController.tsx +13 -0
- package/src/contexts/NavigationContext.tsx +4 -0
- package/src/contexts/SideDialogsControllerContext.tsx +4 -0
- package/src/contexts/SideEntityControllerContext.tsx +4 -0
- package/src/contexts/SnackbarProvider.tsx +12 -0
- package/src/contexts/StorageSourceContext.tsx +4 -0
- package/src/contexts/UserConfigurationPersistenceContext.tsx +4 -0
- package/src/contexts/index.ts +3 -0
- package/src/core/Drawer.tsx +161 -0
- package/src/core/EntitySidePanel.tsx +89 -0
- package/src/core/FireCMS.tsx +184 -0
- package/src/core/NavigationRoutes.tsx +118 -0
- package/src/core/Scaffold.tsx +278 -0
- package/src/core/SideDialogs.tsx +156 -0
- package/src/core/field_configs.tsx +400 -0
- package/src/core/index.tsx +14 -0
- package/src/core/useBuildLocalConfigurationPersistence.tsx +67 -0
- package/src/core/useBuildModeController.tsx +60 -0
- package/src/form/EntityForm.tsx +646 -0
- package/src/form/PropertyFieldBinding.tsx +313 -0
- package/src/form/components/CustomIdField.tsx +124 -0
- package/src/form/components/ErrorFocus.tsx +51 -0
- package/src/form/components/FieldHelperText.tsx +58 -0
- package/src/form/components/FormikArrayContainer.tsx +44 -0
- package/src/form/components/StorageItemPreview.tsx +66 -0
- package/src/form/components/StorageUploadProgress.tsx +104 -0
- package/src/form/components/SubmitListener.tsx +32 -0
- package/src/form/components/SwitchControl.tsx +39 -0
- package/src/form/components/index.tsx +3 -0
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +88 -0
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +153 -0
- package/src/form/field_bindings/BlockFieldBinding.tsx +245 -0
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +67 -0
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +560 -0
- package/src/form/field_bindings/MapFieldBinding.tsx +136 -0
- package/src/form/field_bindings/MarkdownFieldBinding.tsx +696 -0
- package/src/form/field_bindings/MultiSelectBinding.tsx +115 -0
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +70 -0
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +122 -0
- package/src/form/field_bindings/RepeatFieldBinding.tsx +103 -0
- package/src/form/field_bindings/SelectFieldBinding.tsx +100 -0
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +438 -0
- package/src/form/field_bindings/SwitchFieldBinding.tsx +61 -0
- package/src/form/field_bindings/TextFieldBinding.tsx +108 -0
- package/src/form/index.tsx +42 -0
- package/src/form/useClearRestoreValue.tsx +35 -0
- package/src/form/validation.ts +413 -0
- package/src/hooks/data/delete.ts +101 -0
- package/src/hooks/data/save.ts +165 -0
- package/src/hooks/data/useCollectionFetch.tsx +162 -0
- package/src/hooks/data/useDataOrder.ts +26 -0
- package/src/hooks/data/useDataSource.tsx +9 -0
- package/src/hooks/data/useEntityFetch.tsx +129 -0
- package/src/hooks/index.tsx +23 -0
- package/src/hooks/useAuthController.tsx +14 -0
- package/src/hooks/useBrowserTitleAndIcon.tsx +25 -0
- package/src/hooks/useClipboard.tsx +158 -0
- package/src/hooks/useDialogsController.tsx +14 -0
- package/src/hooks/useFireCMSContext.tsx +50 -0
- package/src/hooks/useLargeLayout.tsx +97 -0
- package/src/hooks/useModeController.tsx +24 -0
- package/src/hooks/useNavigationController.tsx +12 -0
- package/src/hooks/useReferenceDialog.tsx +56 -0
- package/src/hooks/useResolvedNavigationFrom.tsx +160 -0
- package/src/hooks/useSideDialogsController.tsx +21 -0
- package/src/hooks/useSideEntityController.tsx +15 -0
- package/src/hooks/useSnackbarController.tsx +76 -0
- package/src/hooks/useStorageSource.tsx +9 -0
- package/src/hooks/useUserConfigurationPersistence.tsx +11 -0
- package/src/hooks/useVerifyLicense.tsx +1 -0
- package/src/index.ts +8 -0
- package/src/internal/EntityView.tsx +576 -0
- package/src/internal/common.tsx +5 -0
- package/src/internal/useBuildDataSource.ts +358 -0
- package/src/internal/useBuildNavigationController.tsx +371 -0
- package/src/internal/useBuildSideDialogsController.tsx +126 -0
- package/src/internal/useBuildSideEntityController.tsx +172 -0
- package/src/internal/useLocaleConfig.tsx +18 -0
- package/src/internal/useRestoreScroll.tsx +48 -0
- package/src/internal/useUnsavedChangesDialog.tsx +106 -0
- package/src/preview/PropertyPreview.tsx +222 -0
- package/src/preview/PropertyPreviewProps.tsx +59 -0
- package/src/preview/components/ArrayEnumPreview.tsx +39 -0
- package/src/preview/components/AsyncPreviewComponent.tsx +47 -0
- package/src/preview/components/BooleanPreview.tsx +11 -0
- package/src/preview/components/DatePreview.tsx +27 -0
- package/src/preview/components/EmptyValue.tsx +10 -0
- package/src/preview/components/EnumValuesChip.tsx +38 -0
- package/src/preview/components/ImagePreview.tsx +106 -0
- package/src/preview/components/ReferencePreview.tsx +249 -0
- package/src/preview/components/StorageThumbnail.tsx +84 -0
- package/src/preview/components/UrlComponentPreview.tsx +79 -0
- package/src/preview/index.ts +27 -0
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +82 -0
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +52 -0
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +54 -0
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +55 -0
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +67 -0
- package/src/preview/property_previews/ArrayPropertyEnumPreview.tsx +28 -0
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +68 -0
- package/src/preview/property_previews/MapPropertyPreview.tsx +146 -0
- package/src/preview/property_previews/NumberPropertyPreview.tsx +27 -0
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +283 -0
- package/src/preview/property_previews/StringPropertyPreview.tsx +59 -0
- package/src/preview/util.ts +31 -0
- package/src/types/analytics.ts +34 -0
- package/src/types/appcheck.ts +29 -0
- package/src/types/auth.tsx +49 -0
- package/src/types/collections.ts +530 -0
- package/src/types/datasource.ts +389 -0
- package/src/types/dialogs_controller.tsx +33 -0
- package/src/types/entities.ts +76 -0
- package/src/types/entity_actions.tsx +39 -0
- package/src/types/entity_callbacks.ts +209 -0
- package/src/types/entity_link_builder.ts +8 -0
- package/src/types/export_import.ts +26 -0
- package/src/types/fields.tsx +220 -0
- package/src/types/firecms.tsx +175 -0
- package/src/types/firecms_context.tsx +128 -0
- package/src/types/index.ts +26 -0
- package/src/types/local_config_persistence.tsx +23 -0
- package/src/types/locales.ts +81 -0
- package/src/types/modify_collections.tsx +6 -0
- package/src/types/navigation.ts +214 -0
- package/src/types/permissions.ts +76 -0
- package/src/types/plugins.tsx +219 -0
- package/src/types/properties.ts +851 -0
- package/src/types/property_config.tsx +72 -0
- package/src/types/resolved_entities.ts +148 -0
- package/src/types/side_dialogs_controller.tsx +68 -0
- package/src/types/side_entity_controller.tsx +96 -0
- package/src/types/storage.ts +96 -0
- package/src/types/user.ts +37 -0
- package/src/util/arrays.ts +3 -0
- package/src/util/builders.ts +139 -0
- package/src/util/collections.ts +50 -0
- package/src/util/common.tsx +2 -0
- package/src/util/dates.ts +1 -0
- package/src/util/entities.ts +196 -0
- package/src/util/enums.ts +56 -0
- package/src/util/flatten_object.ts +45 -0
- package/src/util/hash.ts +11 -0
- package/src/util/icon_list.ts +17 -0
- package/src/util/icon_synonyms.ts +1950 -0
- package/src/util/icons.tsx +45 -0
- package/src/util/index.ts +22 -0
- package/src/util/join_collections.ts +172 -0
- package/src/util/make_properties_editable.ts +29 -0
- package/src/util/navigation_from_path.ts +107 -0
- package/src/util/navigation_utils.ts +111 -0
- package/src/util/objects.ts +168 -0
- package/src/util/os.ts +13 -0
- package/src/util/parent_references_from_path.ts +56 -0
- package/src/util/paths.ts +27 -0
- package/src/util/permissions.ts +80 -0
- package/src/util/plurals.ts +190 -0
- package/src/util/property_utils.tsx +130 -0
- package/src/util/references.ts +20 -0
- package/src/util/regexp.ts +32 -0
- package/src/util/resolutions.ts +399 -0
- package/src/util/storage.ts +92 -0
- package/src/util/strings.ts +62 -0
- package/src/util/useDebounce.ts +25 -0
- package/src/util/useStorageUploadController.tsx +243 -0
- package/src/util/useTraceUpdate.tsx +23 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DefaultSelectedViewBuilder,
|
|
3
|
+
DefaultSelectedViewParams,
|
|
4
|
+
PropertiesOrBuilders,
|
|
5
|
+
PropertyOrBuilder
|
|
6
|
+
} from "../types";
|
|
7
|
+
import { isPropertyBuilder } from "./entities";
|
|
8
|
+
|
|
9
|
+
export function sortProperties<M extends Record<string, any>>(properties: PropertiesOrBuilders<M>, propertiesOrder?: (keyof M)[]): PropertiesOrBuilders<M> {
|
|
10
|
+
try {
|
|
11
|
+
const propertiesKeys = Object.keys(properties);
|
|
12
|
+
const allPropertiesOrder = propertiesOrder ?? propertiesKeys;
|
|
13
|
+
return allPropertiesOrder
|
|
14
|
+
.map((key) => {
|
|
15
|
+
if (properties[key as keyof M]) {
|
|
16
|
+
const property = properties[key] as PropertyOrBuilder;
|
|
17
|
+
if (!isPropertyBuilder(property) && property?.dataType === "map" && property.properties) {
|
|
18
|
+
return ({
|
|
19
|
+
[key]: {
|
|
20
|
+
...property,
|
|
21
|
+
properties: sortProperties(property.properties, property.propertiesOrder)
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
} else {
|
|
25
|
+
return ({ [key]: property });
|
|
26
|
+
}
|
|
27
|
+
} else {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
})
|
|
31
|
+
.filter((a) => a !== undefined)
|
|
32
|
+
.reduce((a: any, b: any) => ({ ...a, ...b }), {}) as PropertiesOrBuilders<M>;
|
|
33
|
+
} catch (e) {
|
|
34
|
+
console.error("Error sorting properties", e);
|
|
35
|
+
return properties;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function resolveDefaultSelectedView(
|
|
40
|
+
defaultSelectedView: string | DefaultSelectedViewBuilder | undefined,
|
|
41
|
+
params: DefaultSelectedViewParams
|
|
42
|
+
) {
|
|
43
|
+
if (!defaultSelectedView) {
|
|
44
|
+
return undefined;
|
|
45
|
+
} else if (typeof defaultSelectedView === "string") {
|
|
46
|
+
return defaultSelectedView;
|
|
47
|
+
} else {
|
|
48
|
+
return defaultSelectedView(params);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const defaultDateFormat = "MMMM dd, yyyy, HH:mm:ss";
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CMSType,
|
|
3
|
+
DataType,
|
|
4
|
+
Entity,
|
|
5
|
+
EntityReference,
|
|
6
|
+
EntityStatus,
|
|
7
|
+
EntityValues,
|
|
8
|
+
Properties,
|
|
9
|
+
PropertiesOrBuilders,
|
|
10
|
+
Property,
|
|
11
|
+
PropertyBuilder,
|
|
12
|
+
PropertyOrBuilder,
|
|
13
|
+
ResolvedProperties,
|
|
14
|
+
ResolvedProperty
|
|
15
|
+
} from "../types";
|
|
16
|
+
import { DEFAULT_ONE_OF_TYPE, DEFAULT_ONE_OF_VALUE } from "./common";
|
|
17
|
+
|
|
18
|
+
export function isReadOnly(property: Property | ResolvedProperty): boolean {
|
|
19
|
+
if (property.readOnly)
|
|
20
|
+
return true;
|
|
21
|
+
if (property.dataType === "date") {
|
|
22
|
+
if (property.autoValue)
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
if (property.dataType === "reference") {
|
|
26
|
+
return !property.path;
|
|
27
|
+
}
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function isHidden(property: Property | ResolvedProperty): boolean {
|
|
32
|
+
return typeof property.disabled === "object" && Boolean(property.disabled.hidden);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function isPropertyBuilder<T extends CMSType, M extends Record<string, any>>(propertyOrBuilder?: PropertyOrBuilder<T, M> | Property<T> | ResolvedProperty<T>): propertyOrBuilder is PropertyBuilder<T, M> {
|
|
36
|
+
return typeof propertyOrBuilder === "function";
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function getDefaultValuesFor<M extends Record<string, any>>(properties: PropertiesOrBuilders<M> | ResolvedProperties<M>): Partial<EntityValues<M>> {
|
|
40
|
+
if (!properties) return {};
|
|
41
|
+
return Object.entries(properties)
|
|
42
|
+
.map(([key, property]) => {
|
|
43
|
+
const value = getDefaultValueFor(property as PropertyOrBuilder);
|
|
44
|
+
return value === undefined ? {} : { [key]: value };
|
|
45
|
+
})
|
|
46
|
+
.reduce((a, b) => ({ ...a, ...b }), {}) as EntityValues<M>;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function getDefaultValueFor(property: PropertyOrBuilder) {
|
|
50
|
+
if (isPropertyBuilder(property)) return undefined;
|
|
51
|
+
if (property.dataType === "map" && property.properties) {
|
|
52
|
+
const defaultValuesFor = getDefaultValuesFor(property.properties as Properties);
|
|
53
|
+
if (Object.keys(defaultValuesFor).length === 0) return undefined;
|
|
54
|
+
return defaultValuesFor;
|
|
55
|
+
} else if (property.defaultValue) {
|
|
56
|
+
return property.defaultValue;
|
|
57
|
+
} else {
|
|
58
|
+
return getDefaultValueForDataType(property.dataType);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export function getDefaultValueForDataType(dataType: DataType) {
|
|
63
|
+
if (dataType === "string") {
|
|
64
|
+
return null;
|
|
65
|
+
} else if (dataType === "number") {
|
|
66
|
+
return null;
|
|
67
|
+
} else if (dataType === "boolean") {
|
|
68
|
+
return false;
|
|
69
|
+
} else if (dataType === "date") {
|
|
70
|
+
return null;
|
|
71
|
+
} else if (dataType === "array") {
|
|
72
|
+
return [];
|
|
73
|
+
} else if (dataType === "map") {
|
|
74
|
+
return {};
|
|
75
|
+
} else {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Update the automatic values in an entity before save
|
|
82
|
+
* @group Datasource
|
|
83
|
+
*/
|
|
84
|
+
export function updateDateAutoValues<M extends Record<string, any>>({
|
|
85
|
+
inputValues,
|
|
86
|
+
properties,
|
|
87
|
+
status,
|
|
88
|
+
timestampNowValue,
|
|
89
|
+
setDateToMidnight
|
|
90
|
+
}:
|
|
91
|
+
{
|
|
92
|
+
inputValues: Partial<EntityValues<M>>,
|
|
93
|
+
properties: ResolvedProperties<M>,
|
|
94
|
+
status: EntityStatus,
|
|
95
|
+
timestampNowValue: any,
|
|
96
|
+
setDateToMidnight: (input?: any) => any | undefined
|
|
97
|
+
}): EntityValues<M> {
|
|
98
|
+
return traverseValuesProperties(
|
|
99
|
+
inputValues,
|
|
100
|
+
properties,
|
|
101
|
+
(inputValue, property) => {
|
|
102
|
+
if (property.dataType === "date") {
|
|
103
|
+
let resultDate;
|
|
104
|
+
if (status === "existing" && property.autoValue === "on_update") {
|
|
105
|
+
resultDate = timestampNowValue;
|
|
106
|
+
} else if ((status === "new" || status === "copy") &&
|
|
107
|
+
(property.autoValue === "on_update" || property.autoValue === "on_create")) {
|
|
108
|
+
resultDate = timestampNowValue;
|
|
109
|
+
} else {
|
|
110
|
+
resultDate = inputValue;
|
|
111
|
+
}
|
|
112
|
+
if (property.mode === "date")
|
|
113
|
+
resultDate = setDateToMidnight(resultDate);
|
|
114
|
+
return resultDate;
|
|
115
|
+
} else {
|
|
116
|
+
return inputValue;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
) ?? {} as M;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Add missing required fields, expected in the collection, to the values of an entity
|
|
124
|
+
* @param values
|
|
125
|
+
* @param properties
|
|
126
|
+
* @group Datasource
|
|
127
|
+
*/
|
|
128
|
+
export function sanitizeData<M extends Record<string, any>>
|
|
129
|
+
(
|
|
130
|
+
values: EntityValues<M>,
|
|
131
|
+
properties: ResolvedProperties<M>
|
|
132
|
+
) {
|
|
133
|
+
const result: any = values;
|
|
134
|
+
Object.entries(properties)
|
|
135
|
+
.forEach(([key, property]) => {
|
|
136
|
+
if (values && values[key] !== undefined) result[key] = values[key];
|
|
137
|
+
else if ((property as Property).validation?.required) result[key] = null;
|
|
138
|
+
});
|
|
139
|
+
return result;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export function getReferenceFrom<M extends Record<string, any>>(entity: Entity<M>): EntityReference<M> {
|
|
143
|
+
return new EntityReference(entity.id, entity.path);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export function traverseValuesProperties<M extends Record<string, any>>(
|
|
147
|
+
inputValues: Partial<EntityValues<M>>,
|
|
148
|
+
properties: ResolvedProperties<M>,
|
|
149
|
+
operation: (value: any, property: Property) => any
|
|
150
|
+
): EntityValues<M> | undefined {
|
|
151
|
+
const updatedValues = Object.entries(properties)
|
|
152
|
+
.map(([key, property]) => {
|
|
153
|
+
const inputValue = inputValues && (inputValues)[key];
|
|
154
|
+
const updatedValue = traverseValueProperty(inputValue, property as Property, operation);
|
|
155
|
+
if (updatedValue === undefined) return undefined;
|
|
156
|
+
return ({ [key]: updatedValue });
|
|
157
|
+
})
|
|
158
|
+
.reduce((a, b) => ({ ...a, ...b }), {}) as EntityValues<M>;
|
|
159
|
+
const result = { ...inputValues, ...updatedValues };
|
|
160
|
+
if (Object.keys(result).length === 0) return undefined;
|
|
161
|
+
return result;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
export function traverseValueProperty(inputValue: any,
|
|
165
|
+
property: Property,
|
|
166
|
+
operation: (value: any, property: Property) => any): any {
|
|
167
|
+
|
|
168
|
+
let value;
|
|
169
|
+
if (property.dataType === "map" && property.properties) {
|
|
170
|
+
value = traverseValuesProperties(inputValue, property.properties as ResolvedProperties, operation);
|
|
171
|
+
} else if (property.dataType === "array") {
|
|
172
|
+
if (property.of && Array.isArray(inputValue)) {
|
|
173
|
+
value = inputValue.map((e) => traverseValueProperty(e, property.of as Property, operation));
|
|
174
|
+
} else if (property.oneOf && Array.isArray(inputValue)) {
|
|
175
|
+
const typeField = property.oneOf?.typeField ?? DEFAULT_ONE_OF_TYPE;
|
|
176
|
+
const valueField = property.oneOf?.valueField ?? DEFAULT_ONE_OF_VALUE;
|
|
177
|
+
value = inputValue.map((e) => {
|
|
178
|
+
if (e === null) return null;
|
|
179
|
+
if (typeof e !== "object") return e;
|
|
180
|
+
const type = e[typeField];
|
|
181
|
+
const childProperty = property.oneOf?.properties[type];
|
|
182
|
+
if (!type || !childProperty) return e;
|
|
183
|
+
return {
|
|
184
|
+
[typeField]: type,
|
|
185
|
+
[valueField]: traverseValueProperty(e[valueField], childProperty, operation)
|
|
186
|
+
};
|
|
187
|
+
});
|
|
188
|
+
} else {
|
|
189
|
+
value = inputValue;
|
|
190
|
+
}
|
|
191
|
+
} else {
|
|
192
|
+
value = operation(inputValue, property);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
return value;
|
|
196
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { EnumValueConfig, EnumValues } from "../types";
|
|
2
|
+
import { CHIP_COLORS, ChipColorScheme, getColorSchemeForSeed } from "@firecms/ui";
|
|
3
|
+
|
|
4
|
+
export function enumToObjectEntries(enumValues: EnumValues): EnumValueConfig[] {
|
|
5
|
+
if (Array.isArray(enumValues)) {
|
|
6
|
+
return enumValues;
|
|
7
|
+
} else {
|
|
8
|
+
return Object.entries(enumValues).map(([id, value]) => {
|
|
9
|
+
if (typeof value === "string") {
|
|
10
|
+
return {
|
|
11
|
+
id,
|
|
12
|
+
label: value
|
|
13
|
+
}
|
|
14
|
+
} else {
|
|
15
|
+
return {
|
|
16
|
+
...value,
|
|
17
|
+
id
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function getLabelOrConfigFrom(enumValues: EnumValueConfig[], key?: string | number): EnumValueConfig | undefined {
|
|
25
|
+
if (!key) return undefined;
|
|
26
|
+
return enumValues.find((entry) => String(entry.id) === String(key));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function getColorScheme(enumValues: EnumValueConfig[], key: string | number): ChipColorScheme | undefined {
|
|
30
|
+
const labelOrConfig = getLabelOrConfigFrom(enumValues, key);
|
|
31
|
+
if (!labelOrConfig?.color)
|
|
32
|
+
return getColorSchemeForSeed(key.toString());
|
|
33
|
+
if (typeof labelOrConfig === "object" && "color" in labelOrConfig) {
|
|
34
|
+
if (typeof labelOrConfig.color === "string")
|
|
35
|
+
return CHIP_COLORS[labelOrConfig.color];
|
|
36
|
+
if (typeof labelOrConfig.color === "object")
|
|
37
|
+
return labelOrConfig.color;
|
|
38
|
+
}
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function isEnumValueDisabled(labelOrConfig?: string | EnumValueConfig) {
|
|
43
|
+
return typeof labelOrConfig === "object" && (labelOrConfig as EnumValueConfig).disabled;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function buildEnumLabel(
|
|
47
|
+
labelOrConfig?: string | EnumValueConfig
|
|
48
|
+
): string | undefined {
|
|
49
|
+
if (labelOrConfig === undefined)
|
|
50
|
+
return undefined;
|
|
51
|
+
if (typeof labelOrConfig === "object") {
|
|
52
|
+
return labelOrConfig.label;
|
|
53
|
+
} else {
|
|
54
|
+
return labelOrConfig;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export function flattenObject(obj: any, parentKey = "") {
|
|
2
|
+
if (!obj) return obj;
|
|
3
|
+
return Object.keys(obj).reduce((flatObj, key) => {
|
|
4
|
+
const newKey = parentKey ? `${parentKey}.${key}` : key;
|
|
5
|
+
|
|
6
|
+
if (typeof obj[key] === "object" && obj[key] !== null) {
|
|
7
|
+
if (Array.isArray(obj[key])) {
|
|
8
|
+
obj[key].forEach((item: any, index: number) => {
|
|
9
|
+
Object.assign(flatObj, flattenObject(item, `${newKey}[${index}]`));
|
|
10
|
+
});
|
|
11
|
+
} else {
|
|
12
|
+
Object.assign(flatObj, flattenObject(obj[key], newKey));
|
|
13
|
+
}
|
|
14
|
+
} else {
|
|
15
|
+
flatObj[newKey] = obj[key];
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return flatObj;
|
|
19
|
+
}, {} as { [key: string]: any });
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
// map from nested property key like "a.b.c" to the maximum array count found in a list of objects for that array
|
|
24
|
+
export type ArrayValuesCount = Record<string, number>;
|
|
25
|
+
|
|
26
|
+
export function getArrayValuesCount(array: any[]): ArrayValuesCount {
|
|
27
|
+
return array.reduce((acc: ArrayValuesCount, obj: any) => {
|
|
28
|
+
Object.entries(obj).forEach(([key, value]) => {
|
|
29
|
+
// proceed only if value is an array
|
|
30
|
+
if (Array.isArray(value)) {
|
|
31
|
+
acc[key] = Math.max(acc[key] || 0, value.length);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// handle nested object
|
|
35
|
+
if (typeof value === "object" && value !== null) {
|
|
36
|
+
const nested = getArrayValuesCount([value]);
|
|
37
|
+
Object.entries(nested).forEach(([nestedKey, nestedCount]) => {
|
|
38
|
+
const compoundKey = `${key}.${nestedKey}`;
|
|
39
|
+
acc[compoundKey] = Math.max(acc[compoundKey] || 0, nestedCount);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
return acc;
|
|
44
|
+
}, {});
|
|
45
|
+
}
|
package/src/util/hash.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function hashString(str: string): number {
|
|
2
|
+
let hash = 0;
|
|
3
|
+
let i;
|
|
4
|
+
let chr;
|
|
5
|
+
for (i = 0; i < str.length; i++) {
|
|
6
|
+
chr = str.charCodeAt(i);
|
|
7
|
+
hash = ((hash << 5) - hash) + chr;
|
|
8
|
+
hash |= 0; // Convert to 32bit integer
|
|
9
|
+
}
|
|
10
|
+
return Math.abs(hash);
|
|
11
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { icon_synonyms } from "./icon_synonyms";
|
|
2
|
+
import { iconKeys } from "@firecms/ui";
|
|
3
|
+
|
|
4
|
+
// @ts-ignore
|
|
5
|
+
import * as JsSearch from "js-search";
|
|
6
|
+
|
|
7
|
+
export const iconsSearch = new JsSearch.Search("key");
|
|
8
|
+
iconsSearch.addIndex("synonyms");
|
|
9
|
+
|
|
10
|
+
iconsSearch.addDocuments(iconKeys
|
|
11
|
+
.map((importName) => {
|
|
12
|
+
return {
|
|
13
|
+
key: importName,
|
|
14
|
+
// @ts-ignore
|
|
15
|
+
synonyms: icon_synonyms[importName] ?? [],
|
|
16
|
+
}
|
|
17
|
+
}));
|