@rebasepro/plugin-data-enhancement 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{plugin-data-enhancement/src/components → components}/DataEnhancementControllerProvider.d.ts +2 -2
- package/dist/{plugin-data-enhancement/src/components → components}/FormEnhanceAction.d.ts +2 -1
- package/dist/index.es.js +703 -716
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +771 -749
- package/dist/index.umd.js.map +1 -1
- package/package.json +26 -17
- package/src/tests/strings_counter.test.ts +31 -15
- package/src/tests/useDataEnhancementPlugin.test.tsx +51 -0
- package/src/tests/values.test.ts +8 -4
- package/dist/admin/src/collection_editor/CollectionEditorDialogsContext.d.ts +0 -19
- package/dist/admin/src/collection_editor/ConfigControllerProvider.d.ts +0 -36
- package/dist/admin/src/collection_editor/_cms_internals.d.ts +0 -29
- package/dist/admin/src/collection_editor/api/generateCollectionApi.d.ts +0 -77
- package/dist/admin/src/collection_editor/index.d.ts +0 -15
- package/dist/admin/src/collection_editor/pgColumnToProperty.d.ts +0 -6
- package/dist/admin/src/collection_editor/types/collection_editor_controller.d.ts +0 -57
- package/dist/admin/src/collection_editor/types/collection_inference.d.ts +0 -10
- package/dist/admin/src/collection_editor/types/config_controller.d.ts +0 -98
- package/dist/admin/src/collection_editor/ui/EditorCollectionAction.d.ts +0 -2
- package/dist/admin/src/collection_editor/ui/MissingReferenceWidget.d.ts +0 -3
- package/dist/admin/src/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.d.ts +0 -36
- package/dist/admin/src/collection_editor/ui/collection_editor/AIModifiedPathsContext.d.ts +0 -20
- package/dist/admin/src/collection_editor/ui/collection_editor/CollectionEditorDialog.d.ts +0 -71
- package/dist/admin/src/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.d.ts +0 -19
- package/dist/admin/src/collection_editor/ui/collection_editor/CollectionJsonImportDialog.d.ts +0 -7
- package/dist/admin/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.d.ts +0 -16
- package/dist/admin/src/collection_editor/ui/collection_editor/CollectionRLSTab.d.ts +0 -12
- package/dist/admin/src/collection_editor/ui/collection_editor/CollectionStudioView.d.ts +0 -5
- package/dist/admin/src/collection_editor/ui/collection_editor/CollectionYupValidation.d.ts +0 -14
- package/dist/admin/src/collection_editor/ui/collection_editor/CollectionsStudioView.d.ts +0 -5
- package/dist/admin/src/collection_editor/ui/collection_editor/DisplaySettingsForm.d.ts +0 -3
- package/dist/admin/src/collection_editor/ui/collection_editor/EnumForm.d.ts +0 -12
- package/dist/admin/src/collection_editor/ui/collection_editor/GeneralSettingsForm.d.ts +0 -7
- package/dist/admin/src/collection_editor/ui/collection_editor/GetCodeDialog.d.ts +0 -6
- package/dist/admin/src/collection_editor/ui/collection_editor/KanbanConfigSection.d.ts +0 -4
- package/dist/admin/src/collection_editor/ui/collection_editor/LayoutModeSwitch.d.ts +0 -5
- package/dist/admin/src/collection_editor/ui/collection_editor/PropertyEditView.d.ts +0 -48
- package/dist/admin/src/collection_editor/ui/collection_editor/PropertyFieldPreview.d.ts +0 -16
- package/dist/admin/src/collection_editor/ui/collection_editor/PropertyTree.d.ts +0 -31
- package/dist/admin/src/collection_editor/ui/collection_editor/SwitchControl.d.ts +0 -8
- package/dist/admin/src/collection_editor/ui/collection_editor/ViewModeSwitch.d.ts +0 -6
- package/dist/admin/src/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.d.ts +0 -7
- package/dist/admin/src/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.d.ts +0 -13
- package/dist/admin/src/collection_editor/ui/collection_editor/import/clean_import_data.d.ts +0 -7
- package/dist/admin/src/collection_editor/ui/collection_editor/properties/BlockPropertyField.d.ts +0 -7
- package/dist/admin/src/collection_editor/ui/collection_editor/properties/BooleanPropertyField.d.ts +0 -3
- package/dist/admin/src/collection_editor/ui/collection_editor/properties/CommonPropertyFields.d.ts +0 -10
- package/dist/admin/src/collection_editor/ui/collection_editor/properties/DateTimePropertyField.d.ts +0 -3
- package/dist/admin/src/collection_editor/ui/collection_editor/properties/EnumPropertyField.d.ts +0 -9
- package/dist/admin/src/collection_editor/ui/collection_editor/properties/KeyValuePropertyField.d.ts +0 -3
- package/dist/admin/src/collection_editor/ui/collection_editor/properties/MapPropertyField.d.ts +0 -7
- package/dist/admin/src/collection_editor/ui/collection_editor/properties/MarkdownPropertyField.d.ts +0 -4
- package/dist/admin/src/collection_editor/ui/collection_editor/properties/NumberPropertyField.d.ts +0 -3
- package/dist/admin/src/collection_editor/ui/collection_editor/properties/ReferencePropertyField.d.ts +0 -14
- package/dist/admin/src/collection_editor/ui/collection_editor/properties/RelationPropertyField.d.ts +0 -9
- package/dist/admin/src/collection_editor/ui/collection_editor/properties/RepeatPropertyField.d.ts +0 -9
- package/dist/admin/src/collection_editor/ui/collection_editor/properties/StoragePropertyField.d.ts +0 -5
- package/dist/admin/src/collection_editor/ui/collection_editor/properties/StringPropertyField.d.ts +0 -5
- package/dist/admin/src/collection_editor/ui/collection_editor/properties/UrlPropertyField.d.ts +0 -4
- package/dist/admin/src/collection_editor/ui/collection_editor/properties/VectorPropertyField.d.ts +0 -3
- package/dist/admin/src/collection_editor/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.d.ts +0 -3
- package/dist/admin/src/collection_editor/ui/collection_editor/properties/validation/ArrayPropertyValidation.d.ts +0 -5
- package/dist/admin/src/collection_editor/ui/collection_editor/properties/validation/GeneralPropertyValidation.d.ts +0 -4
- package/dist/admin/src/collection_editor/ui/collection_editor/properties/validation/NumberPropertyValidation.d.ts +0 -3
- package/dist/admin/src/collection_editor/ui/collection_editor/properties/validation/StringPropertyValidation.d.ts +0 -11
- package/dist/admin/src/collection_editor/ui/collection_editor/properties/validation/ValidationPanel.d.ts +0 -3
- package/dist/admin/src/collection_editor/ui/collection_editor/templates/blog_template.d.ts +0 -2
- package/dist/admin/src/collection_editor/ui/collection_editor/templates/pages_template.d.ts +0 -2
- package/dist/admin/src/collection_editor/ui/collection_editor/templates/products_template.d.ts +0 -2
- package/dist/admin/src/collection_editor/ui/collection_editor/templates/users_template.d.ts +0 -2
- package/dist/admin/src/collection_editor/ui/collection_editor/util.d.ts +0 -5
- package/dist/admin/src/collection_editor/ui/collection_editor/utils/strings.d.ts +0 -1
- package/dist/admin/src/collection_editor/ui/collection_editor/utils/supported_fields.d.ts +0 -3
- package/dist/admin/src/collection_editor/ui/collection_editor/utils/update_property_for_widget.d.ts +0 -2
- package/dist/admin/src/collection_editor/useCollectionEditorController.d.ts +0 -6
- package/dist/admin/src/collection_editor/useCollectionsConfigController.d.ts +0 -6
- package/dist/admin/src/collection_editor/useLocalCollectionsConfigController.d.ts +0 -6
- package/dist/admin/src/collection_editor/validateCollectionJson.d.ts +0 -22
- package/dist/admin/src/components/AdminModeSyncer.d.ts +0 -17
- package/dist/admin/src/components/ArrayContainer.d.ts +0 -58
- package/dist/admin/src/components/ClearFilterSortButton.d.ts +0 -5
- package/dist/admin/src/components/CollectionEditorDialogs.d.ts +0 -15
- package/dist/admin/src/components/CollectionPanel.d.ts +0 -83
- package/dist/admin/src/components/DefaultAppBar.d.ts +0 -46
- package/dist/admin/src/components/DefaultDrawer.d.ts +0 -77
- package/dist/admin/src/components/DeleteEntityDialog.d.ts +0 -13
- package/dist/admin/src/components/DrawerNavigationGroup.d.ts +0 -49
- package/dist/admin/src/components/DrawerNavigationItem.d.ts +0 -10
- package/dist/admin/src/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +0 -39
- package/dist/admin/src/components/EntityCollectionTable/EntityCollectionTable.d.ts +0 -27
- package/dist/admin/src/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +0 -129
- package/dist/admin/src/components/EntityCollectionTable/PropertyTableCell.d.ts +0 -26
- package/dist/admin/src/components/EntityCollectionTable/column_utils.d.ts +0 -16
- package/dist/admin/src/components/EntityCollectionTable/fields/TableMultipleRelationField.d.ts +0 -21
- package/dist/admin/src/components/EntityCollectionTable/fields/TableReferenceField.d.ts +0 -22
- package/dist/admin/src/components/EntityCollectionTable/fields/TableRelationField.d.ts +0 -22
- package/dist/admin/src/components/EntityCollectionTable/fields/TableRelationSelectorField.d.ts +0 -20
- package/dist/admin/src/components/EntityCollectionTable/fields/TableStorageUpload.d.ts +0 -35
- package/dist/admin/src/components/EntityCollectionTable/fields/VirtualTableDateField.d.ts +0 -12
- package/dist/admin/src/components/EntityCollectionTable/fields/VirtualTableInput.d.ts +0 -9
- package/dist/admin/src/components/EntityCollectionTable/fields/VirtualTableNumberInput.d.ts +0 -8
- package/dist/admin/src/components/EntityCollectionTable/fields/VirtualTableSelect.d.ts +0 -15
- package/dist/admin/src/components/EntityCollectionTable/fields/VirtualTableSwitch.d.ts +0 -7
- package/dist/admin/src/components/EntityCollectionTable/fields/VirtualTableUserSelect.d.ts +0 -12
- package/dist/admin/src/components/EntityCollectionTable/index.d.ts +0 -6
- package/dist/admin/src/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +0 -25
- package/dist/admin/src/components/EntityCollectionTable/internal/EntityTableCell.d.ts +0 -32
- package/dist/admin/src/components/EntityCollectionTable/internal/EntityTableCellActions.d.ts +0 -9
- package/dist/admin/src/components/EntityCollectionTable/internal/common.d.ts +0 -5
- package/dist/admin/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +0 -27
- package/dist/admin/src/components/EntityCollectionTable/internal/popup_field/useDraggable.d.ts +0 -13
- package/dist/admin/src/components/EntityCollectionTable/internal/popup_field/useWindowSize.d.ts +0 -6
- package/dist/admin/src/components/EntityCollectionTable/table_bindings.d.ts +0 -29
- package/dist/admin/src/components/EntityCollectionView/Board.d.ts +0 -2
- package/dist/admin/src/components/EntityCollectionView/BoardColumn.d.ts +0 -42
- package/dist/admin/src/components/EntityCollectionView/BoardColumnTitle.d.ts +0 -9
- package/dist/admin/src/components/EntityCollectionView/BoardSortableList.d.ts +0 -14
- package/dist/admin/src/components/EntityCollectionView/EntityBoardCard.d.ts +0 -31
- package/dist/admin/src/components/EntityCollectionView/EntityCard.d.ts +0 -20
- package/dist/admin/src/components/EntityCollectionView/EntityCollectionBoardView.d.ts +0 -22
- package/dist/admin/src/components/EntityCollectionView/EntityCollectionCardView.d.ts +0 -32
- package/dist/admin/src/components/EntityCollectionView/EntityCollectionListView.d.ts +0 -50
- package/dist/admin/src/components/EntityCollectionView/EntityCollectionView.d.ts +0 -65
- package/dist/admin/src/components/EntityCollectionView/EntityCollectionViewActions.d.ts +0 -20
- package/dist/admin/src/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +0 -20
- package/dist/admin/src/components/EntityCollectionView/FilterPresetsButton.d.ts +0 -21
- package/dist/admin/src/components/EntityCollectionView/FiltersDialog.d.ts +0 -15
- package/dist/admin/src/components/EntityCollectionView/SplitListView.d.ts +0 -58
- package/dist/admin/src/components/EntityCollectionView/ViewModeToggle.d.ts +0 -44
- package/dist/admin/src/components/EntityCollectionView/board_types.d.ts +0 -105
- package/dist/admin/src/components/EntityCollectionView/hooks/useCollectionInlineEditor.d.ts +0 -12
- package/dist/admin/src/components/EntityCollectionView/hooks/useKanbanDragAndDrop.d.ts +0 -20
- package/dist/admin/src/components/EntityCollectionView/useBoardDataController.d.ts +0 -61
- package/dist/admin/src/components/EntityCollectionView/useEntityPreviewSlots.d.ts +0 -101
- package/dist/admin/src/components/EntityCollectionView/useSelectionController.d.ts +0 -2
- package/dist/admin/src/components/EntityCollectionView/utils.d.ts +0 -3
- package/dist/admin/src/components/EntityDetailView.d.ts +0 -28
- package/dist/admin/src/components/EntityEditView.d.ts +0 -57
- package/dist/admin/src/components/EntityEditViewFormActions.d.ts +0 -2
- package/dist/admin/src/components/EntityJsonPreview.d.ts +0 -3
- package/dist/admin/src/components/EntityPreview.d.ts +0 -56
- package/dist/admin/src/components/EntitySidePanel.d.ts +0 -10
- package/dist/admin/src/components/EntityView.d.ts +0 -12
- package/dist/admin/src/components/FieldCaption.d.ts +0 -5
- package/dist/admin/src/components/HomePage/ContentHomePage.d.ts +0 -11
- package/dist/admin/src/components/HomePage/FavouritesView.d.ts +0 -3
- package/dist/admin/src/components/HomePage/HomePageDnD.d.ts +0 -77
- package/dist/admin/src/components/HomePage/NavigationCard.d.ts +0 -11
- package/dist/admin/src/components/HomePage/NavigationCardBinding.d.ts +0 -18
- package/dist/admin/src/components/HomePage/NavigationGroup.d.ts +0 -11
- package/dist/admin/src/components/HomePage/RenameGroupDialog.d.ts +0 -9
- package/dist/admin/src/components/HomePage/SmallNavigationCard.d.ts +0 -6
- package/dist/admin/src/components/PropertyCollectionView.d.ts +0 -24
- package/dist/admin/src/components/PropertyConfigBadge.d.ts +0 -6
- package/dist/admin/src/components/PropertyIdCopyTooltip.d.ts +0 -8
- package/dist/admin/src/components/RebaseAuthGate.d.ts +0 -21
- package/dist/admin/src/components/RebaseCMS.d.ts +0 -10
- package/dist/admin/src/components/RebaseLayout.d.ts +0 -32
- package/dist/admin/src/components/RebaseNavigation.d.ts +0 -24
- package/dist/admin/src/components/RebaseRouteDefs.d.ts +0 -30
- package/dist/admin/src/components/RebaseShell.d.ts +0 -25
- package/dist/admin/src/components/ReferenceTable/EntitySelectionTable.d.ts +0 -59
- package/dist/admin/src/components/ReferenceWidget.d.ts +0 -30
- package/dist/admin/src/components/RelationSelector.d.ts +0 -32
- package/dist/admin/src/components/SearchIconsView.d.ts +0 -5
- package/dist/admin/src/components/SelectableTable/SelectableTable.d.ts +0 -95
- package/dist/admin/src/components/SelectableTable/SelectableTableContext.d.ts +0 -4
- package/dist/admin/src/components/SelectableTable/SelectionStore.d.ts +0 -29
- package/dist/admin/src/components/SelectableTable/filters/BooleanFilterField.d.ts +0 -9
- package/dist/admin/src/components/SelectableTable/filters/DateTimeFilterField.d.ts +0 -12
- package/dist/admin/src/components/SelectableTable/filters/ReferenceFilterField.d.ts +0 -15
- package/dist/admin/src/components/SelectableTable/filters/RelationFilterField.d.ts +0 -12
- package/dist/admin/src/components/SelectableTable/filters/StringNumberFilterField.d.ts +0 -13
- package/dist/admin/src/components/SideDialogs.d.ts +0 -25
- package/dist/admin/src/components/SideEntityProvider.d.ts +0 -32
- package/dist/admin/src/components/UserSelector.d.ts +0 -18
- package/dist/admin/src/components/admin/CreationResultDialog.d.ts +0 -5
- package/dist/admin/src/components/app/AppBar.d.ts +0 -12
- package/dist/admin/src/components/app/Drawer.d.ts +0 -26
- package/dist/admin/src/components/app/Scaffold.d.ts +0 -34
- package/dist/admin/src/components/app/useApp.d.ts +0 -17
- package/dist/admin/src/components/common/default_entity_actions.d.ts +0 -10
- package/dist/admin/src/components/common/index.d.ts +0 -1
- package/dist/admin/src/components/field_configs.d.ts +0 -7
- package/dist/admin/src/components/history/EntityHistoryEntry.d.ts +0 -17
- package/dist/admin/src/components/history/EntityHistoryView.d.ts +0 -6
- package/dist/admin/src/components/history/LastEditedByFormAction.d.ts +0 -6
- package/dist/admin/src/components/history/LastEditedByIndicator.d.ts +0 -10
- package/dist/admin/src/components/history/UserChip.d.ts +0 -4
- package/dist/admin/src/components/history/index.d.ts +0 -5
- package/dist/admin/src/components/index.d.ts +0 -40
- package/dist/admin/src/contexts/BreacrumbsContext.d.ts +0 -8
- package/dist/admin/src/contexts/SideDialogsControllerContext.d.ts +0 -3
- package/dist/admin/src/data_export/export/BasicExportAction.d.ts +0 -7
- package/dist/admin/src/data_export/export/ExportCollectionAction.d.ts +0 -11
- package/dist/admin/src/data_export/export/export.d.ts +0 -22
- package/dist/admin/src/data_export/export/index.d.ts +0 -3
- package/dist/admin/src/data_export/index.d.ts +0 -1
- package/dist/admin/src/data_import/components/DataNewPropertiesMapping.d.ts +0 -13
- package/dist/admin/src/data_import/components/ImportFileUpload.d.ts +0 -3
- package/dist/admin/src/data_import/components/ImportNewPropertyFieldPreview.d.ts +0 -9
- package/dist/admin/src/data_import/components/ImportSaveInProgress.d.ts +0 -8
- package/dist/admin/src/data_import/components/index.d.ts +0 -4
- package/dist/admin/src/data_import/hooks/index.d.ts +0 -1
- package/dist/admin/src/data_import/hooks/useImportConfig.d.ts +0 -2
- package/dist/admin/src/data_import/import/ImportCollectionAction.d.ts +0 -15
- package/dist/admin/src/data_import/import/index.d.ts +0 -1
- package/dist/admin/src/data_import/index.d.ts +0 -5
- package/dist/admin/src/data_import/types/column_mapping.d.ts +0 -20
- package/dist/admin/src/data_import/types/index.d.ts +0 -1
- package/dist/admin/src/data_import/utils/data.d.ts +0 -4
- package/dist/admin/src/data_import/utils/file_headers.d.ts +0 -6
- package/dist/admin/src/data_import/utils/file_to_json.d.ts +0 -6
- package/dist/admin/src/data_import/utils/get_import_inference_type.d.ts +0 -2
- package/dist/admin/src/data_import/utils/index.d.ts +0 -3
- package/dist/admin/src/data_import/utils/transforms.d.ts +0 -11
- package/dist/admin/src/editor/components/SlashCommandMenu.d.ts +0 -6
- package/dist/admin/src/editor/components/editor-bubble-item.d.ts +0 -8
- package/dist/admin/src/editor/components/editor-bubble.d.ts +0 -12
- package/dist/admin/src/editor/components/image-bubble.d.ts +0 -9
- package/dist/admin/src/editor/components/index.d.ts +0 -16
- package/dist/admin/src/editor/components/table-bubble.d.ts +0 -9
- package/dist/admin/src/editor/editor.d.ts +0 -30
- package/dist/admin/src/editor/extensions/HighlightDecorationExtension.d.ts +0 -24
- package/dist/admin/src/editor/extensions/Image.d.ts +0 -6
- package/dist/admin/src/editor/extensions/TextLoadingDecorationExtension.d.ts +0 -16
- package/dist/admin/src/editor/extensions/clipboard.d.ts +0 -7
- package/dist/admin/src/editor/extensions/drag-and-drop.d.ts +0 -9
- package/dist/admin/src/editor/hooks/useProseMirror.d.ts +0 -13
- package/dist/admin/src/editor/hooks/useProseMirrorContext.d.ts +0 -9
- package/dist/admin/src/editor/index.d.ts +0 -2
- package/dist/admin/src/editor/markdown.d.ts +0 -5
- package/dist/admin/src/editor/nodeViews/ImageComponent.d.ts +0 -3
- package/dist/admin/src/editor/nodeViews/ReactNodeView.d.ts +0 -32
- package/dist/admin/src/editor/nodeViews/TaskItemComponent.d.ts +0 -3
- package/dist/admin/src/editor/nodeViews/index.d.ts +0 -6
- package/dist/admin/src/editor/plugins/index.d.ts +0 -2
- package/dist/admin/src/editor/plugins/inputrules.d.ts +0 -6
- package/dist/admin/src/editor/plugins/placeholderPlugin.d.ts +0 -3
- package/dist/admin/src/editor/plugins/slashCommandPlugin.d.ts +0 -12
- package/dist/admin/src/editor/schema.d.ts +0 -2
- package/dist/admin/src/editor/selectors/link-selector.d.ts +0 -8
- package/dist/admin/src/editor/selectors/node-selector.d.ts +0 -15
- package/dist/admin/src/editor/selectors/text-buttons.d.ts +0 -1
- package/dist/admin/src/editor/types.d.ts +0 -5
- package/dist/admin/src/editor/utils/prosemirror-utils.d.ts +0 -7
- package/dist/admin/src/editor/utils/remove_classes.d.ts +0 -1
- package/dist/admin/src/form/EntityForm.d.ts +0 -10
- package/dist/admin/src/form/EntityFormActions.d.ts +0 -2
- package/dist/admin/src/form/PropertyFieldBinding.d.ts +0 -30
- package/dist/admin/src/form/components/ErrorFocus.d.ts +0 -4
- package/dist/admin/src/form/components/FieldHelperText.d.ts +0 -12
- package/dist/admin/src/form/components/FormEntry.d.ts +0 -6
- package/dist/admin/src/form/components/FormLayout.d.ts +0 -5
- package/dist/admin/src/form/components/LabelWithIcon.d.ts +0 -14
- package/dist/admin/src/form/components/LabelWithIconAndTooltip.d.ts +0 -15
- package/dist/admin/src/form/components/LocalChangesMenu.d.ts +0 -11
- package/dist/admin/src/form/components/StorageItemPreview.d.ts +0 -14
- package/dist/admin/src/form/components/StorageUploadProgress.d.ts +0 -10
- package/dist/admin/src/form/components/index.d.ts +0 -5
- package/dist/admin/src/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +0 -10
- package/dist/admin/src/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +0 -13
- package/dist/admin/src/form/field_bindings/BlockFieldBinding.d.ts +0 -11
- package/dist/admin/src/form/field_bindings/DateTimeFieldBinding.d.ts +0 -12
- package/dist/admin/src/form/field_bindings/KeyValueFieldBinding.d.ts +0 -8
- package/dist/admin/src/form/field_bindings/MapFieldBinding.d.ts +0 -10
- package/dist/admin/src/form/field_bindings/MarkdownEditorFieldBinding.d.ts +0 -12
- package/dist/admin/src/form/field_bindings/MultiSelectFieldBinding.d.ts +0 -10
- package/dist/admin/src/form/field_bindings/MultipleRelationFieldBinding.d.ts +0 -10
- package/dist/admin/src/form/field_bindings/ReadOnlyFieldBinding.d.ts +0 -11
- package/dist/admin/src/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +0 -10
- package/dist/admin/src/form/field_bindings/ReferenceFieldBinding.d.ts +0 -10
- package/dist/admin/src/form/field_bindings/RelationFieldBinding.d.ts +0 -3
- package/dist/admin/src/form/field_bindings/RepeatFieldBinding.d.ts +0 -11
- package/dist/admin/src/form/field_bindings/SelectFieldBinding.d.ts +0 -11
- package/dist/admin/src/form/field_bindings/StorageUploadFieldBinding.d.ts +0 -21
- package/dist/admin/src/form/field_bindings/SwitchFieldBinding.d.ts +0 -10
- package/dist/admin/src/form/field_bindings/TextFieldBinding.d.ts +0 -9
- package/dist/admin/src/form/field_bindings/UserSelectFieldBinding.d.ts +0 -14
- package/dist/admin/src/form/field_bindings/VectorFieldBinding.d.ts +0 -11
- package/dist/admin/src/form/index.d.ts +0 -21
- package/dist/admin/src/form/useClearRestoreValue.d.ts +0 -13
- package/dist/admin/src/form/validation.d.ts +0 -21
- package/dist/admin/src/hooks/index.d.ts +0 -15
- package/dist/admin/src/hooks/navigation/contexts/CollectionRegistryContext.d.ts +0 -5
- package/dist/admin/src/hooks/navigation/contexts/NavigationStateContext.d.ts +0 -4
- package/dist/admin/src/hooks/navigation/contexts/UrlContext.d.ts +0 -4
- package/dist/admin/src/hooks/navigation/contexts/index.d.ts +0 -3
- package/dist/admin/src/hooks/navigation/useBuildCollectionRegistryController.d.ts +0 -7
- package/dist/admin/src/hooks/navigation/useBuildNavigationStateController.d.ts +0 -34
- package/dist/admin/src/hooks/navigation/useBuildUrlController.d.ts +0 -7
- package/dist/admin/src/hooks/navigation/useNavigationResolution.d.ts +0 -7
- package/dist/admin/src/hooks/navigation/useResolvedCollections.d.ts +0 -34
- package/dist/admin/src/hooks/navigation/useResolvedViews.d.ts +0 -26
- package/dist/admin/src/hooks/navigation/useTopLevelNavigation.d.ts +0 -27
- package/dist/admin/src/hooks/navigation/utils.d.ts +0 -12
- package/dist/admin/src/hooks/useBreadcrumbsController.d.ts +0 -42
- package/dist/admin/src/hooks/useBuildSideDialogsController.d.ts +0 -2
- package/dist/admin/src/hooks/useBuildSideEntityController.d.ts +0 -6
- package/dist/admin/src/hooks/useCMSContext.d.ts +0 -27
- package/dist/admin/src/hooks/useEntityHistory.d.ts +0 -30
- package/dist/admin/src/hooks/useEntitySelectionDialog.d.ts +0 -18
- package/dist/admin/src/hooks/useResolvedNavigationFrom.d.ts +0 -73
- package/dist/admin/src/hooks/useSideDialogsController.d.ts +0 -19
- package/dist/admin/src/hooks/useSideEntityController.d.ts +0 -11
- package/dist/admin/src/index.d.ts +0 -13
- package/dist/admin/src/preview/PropertyPreview.d.ts +0 -7
- package/dist/admin/src/preview/components/ArrayEnumPreview.d.ts +0 -11
- package/dist/admin/src/preview/components/BooleanPreview.d.ts +0 -11
- package/dist/admin/src/preview/components/DatePreview.d.ts +0 -17
- package/dist/admin/src/preview/components/EmptyValue.d.ts +0 -6
- package/dist/admin/src/preview/components/EnumValuesChip.d.ts +0 -13
- package/dist/admin/src/preview/components/ImagePreview.d.ts +0 -16
- package/dist/admin/src/preview/components/ReferencePreview.d.ts +0 -17
- package/dist/admin/src/preview/components/RelationPreview.d.ts +0 -17
- package/dist/admin/src/preview/components/StorageThumbnail.d.ts +0 -15
- package/dist/admin/src/preview/components/UrlComponentPreview.d.ts +0 -15
- package/dist/admin/src/preview/components/UserPreview.d.ts +0 -9
- package/dist/admin/src/preview/index.d.ts +0 -23
- package/dist/admin/src/preview/property_previews/ArrayOfMapsPreview.d.ts +0 -6
- package/dist/admin/src/preview/property_previews/ArrayOfReferencesPreview.d.ts +0 -6
- package/dist/admin/src/preview/property_previews/ArrayOfRelationsPreview.d.ts +0 -6
- package/dist/admin/src/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +0 -6
- package/dist/admin/src/preview/property_previews/ArrayOfStringsPreview.d.ts +0 -6
- package/dist/admin/src/preview/property_previews/ArrayOneOfPreview.d.ts +0 -6
- package/dist/admin/src/preview/property_previews/ArrayPropertyEnumPreview.d.ts +0 -6
- package/dist/admin/src/preview/property_previews/ArrayPropertyPreview.d.ts +0 -6
- package/dist/admin/src/preview/property_previews/MapPropertyPreview.d.ts +0 -9
- package/dist/admin/src/preview/property_previews/NumberPropertyPreview.d.ts +0 -7
- package/dist/admin/src/preview/property_previews/SkeletonPropertyComponent.d.ts +0 -14
- package/dist/admin/src/preview/property_previews/StringPropertyPreview.d.ts +0 -7
- package/dist/admin/src/preview/util.d.ts +0 -7
- package/dist/admin/src/routes/CustomViewRoute.d.ts +0 -4
- package/dist/admin/src/routes/RebaseRoute.d.ts +0 -1
- package/dist/admin/src/routes/index.d.ts +0 -2
- package/dist/admin/src/types/components/EntityFormActionsProps.d.ts +0 -19
- package/dist/admin/src/types/components/EntityFormProps.d.ts +0 -49
- package/dist/admin/src/types/components/PropertyPreviewProps.d.ts +0 -47
- package/dist/admin/src/types/components/formex.d.ts +0 -40
- package/dist/admin/src/types/components/index.d.ts +0 -3
- package/dist/admin/src/types/fields.d.ts +0 -221
- package/dist/admin/src/types/index.d.ts +0 -2
- package/dist/admin/src/util/entity_actions.d.ts +0 -2
- package/dist/admin/src/util/entity_view_constants.d.ts +0 -6
- package/dist/admin/src/util/index.d.ts +0 -5
- package/dist/admin/src/util/navigation_utils.d.ts +0 -26
- package/dist/admin/src/util/previews.d.ts +0 -4
- package/dist/admin/src/util/property_utils.d.ts +0 -25
- package/dist/admin/src/util/resolutions.d.ts +0 -8
- package/dist/common/src/collections/CollectionRegistry.d.ts +0 -56
- package/dist/common/src/collections/default-collections.d.ts +0 -9
- package/dist/common/src/collections/index.d.ts +0 -2
- package/dist/common/src/data/buildRebaseData.d.ts +0 -14
- package/dist/common/src/data/query_builder.d.ts +0 -55
- package/dist/common/src/index.d.ts +0 -4
- package/dist/common/src/util/builders.d.ts +0 -57
- package/dist/common/src/util/callbacks.d.ts +0 -6
- package/dist/common/src/util/collections.d.ts +0 -11
- package/dist/common/src/util/common.d.ts +0 -2
- package/dist/common/src/util/conditions.d.ts +0 -26
- package/dist/common/src/util/entities.d.ts +0 -58
- package/dist/common/src/util/enums.d.ts +0 -3
- package/dist/common/src/util/index.d.ts +0 -16
- package/dist/common/src/util/navigation_from_path.d.ts +0 -34
- package/dist/common/src/util/navigation_utils.d.ts +0 -20
- package/dist/common/src/util/parent_references_from_path.d.ts +0 -6
- package/dist/common/src/util/paths.d.ts +0 -14
- package/dist/common/src/util/permissions.d.ts +0 -14
- package/dist/common/src/util/references.d.ts +0 -2
- package/dist/common/src/util/relations.d.ts +0 -22
- package/dist/common/src/util/resolutions.d.ts +0 -72
- package/dist/common/src/util/storage.d.ts +0 -24
- package/dist/core/src/components/AIIcon.d.ts +0 -16
- package/dist/core/src/components/BootstrapAdminBanner.d.ts +0 -4
- package/dist/core/src/components/ConfirmationDialog.d.ts +0 -9
- package/dist/core/src/components/Debug/UIReferenceView.d.ts +0 -1
- package/dist/core/src/components/Debug/UIStyleGuide.d.ts +0 -1
- package/dist/core/src/components/ErrorTooltip.d.ts +0 -2
- package/dist/core/src/components/ErrorView.d.ts +0 -21
- package/dist/core/src/components/LanguageToggle.d.ts +0 -1
- package/dist/core/src/components/LoginView/LoginView.d.ts +0 -109
- package/dist/core/src/components/LoginView/index.d.ts +0 -2
- package/dist/core/src/components/NotFoundPage.d.ts +0 -1
- package/dist/core/src/components/RebaseAuth.d.ts +0 -10
- package/dist/core/src/components/RebaseLogo.d.ts +0 -7
- package/dist/core/src/components/UnsavedChangesDialog.d.ts +0 -9
- package/dist/core/src/components/UserDisplay.d.ts +0 -7
- package/dist/core/src/components/UserSelectPopover.d.ts +0 -62
- package/dist/core/src/components/UserSettingsView.d.ts +0 -1
- package/dist/core/src/components/common/index.d.ts +0 -6
- package/dist/core/src/components/common/table_height.d.ts +0 -5
- package/dist/core/src/components/common/types.d.ts +0 -66
- package/dist/core/src/components/common/useColumnsIds.d.ts +0 -9
- package/dist/core/src/components/common/useDataTableController.d.ts +0 -45
- package/dist/core/src/components/common/useDebouncedData.d.ts +0 -9
- package/dist/core/src/components/common/useScrollRestoration.d.ts +0 -14
- package/dist/core/src/components/index.d.ts +0 -17
- package/dist/core/src/contexts/AdminModeController.d.ts +0 -4
- package/dist/core/src/contexts/AnalyticsContext.d.ts +0 -3
- package/dist/core/src/contexts/AuthControllerContext.d.ts +0 -3
- package/dist/core/src/contexts/CustomizationControllerContext.d.ts +0 -3
- package/dist/core/src/contexts/DataDriverContext.d.ts +0 -3
- package/dist/core/src/contexts/DatabaseAdminContext.d.ts +0 -3
- package/dist/core/src/contexts/DialogsProvider.d.ts +0 -4
- package/dist/core/src/contexts/EffectiveRoleController.d.ts +0 -4
- package/dist/core/src/contexts/InternalUserManagementContext.d.ts +0 -3
- package/dist/core/src/contexts/ModeController.d.ts +0 -4
- package/dist/core/src/contexts/RebaseClientInstanceContext.d.ts +0 -6
- package/dist/core/src/contexts/RebaseDataContext.d.ts +0 -3
- package/dist/core/src/contexts/SnackbarProvider.d.ts +0 -2
- package/dist/core/src/contexts/StorageSourceContext.d.ts +0 -3
- package/dist/core/src/contexts/UserConfigurationPersistenceContext.d.ts +0 -3
- package/dist/core/src/contexts/index.d.ts +0 -13
- package/dist/core/src/core/PluginLifecycleManager.d.ts +0 -17
- package/dist/core/src/core/PluginProviderStack.d.ts +0 -21
- package/dist/core/src/core/Rebase.d.ts +0 -14
- package/dist/core/src/core/RebaseProps.d.ts +0 -147
- package/dist/core/src/core/RebaseRouter.d.ts +0 -4
- package/dist/core/src/core/RebaseRoutes.d.ts +0 -17
- package/dist/core/src/core/index.d.ts +0 -4
- package/dist/core/src/hooks/ApiConfigContext.d.ts +0 -24
- package/dist/core/src/hooks/data/delete.d.ts +0 -31
- package/dist/core/src/hooks/data/save.d.ts +0 -34
- package/dist/core/src/hooks/data/useCollectionFetch.d.ts +0 -62
- package/dist/core/src/hooks/data/useData.d.ts +0 -13
- package/dist/core/src/hooks/data/useDataOrder.d.ts +0 -12
- package/dist/core/src/hooks/data/useEntityFetch.d.ts +0 -43
- package/dist/core/src/hooks/data/useRelationSelector.d.ts +0 -52
- package/dist/core/src/hooks/data/useUserSelector.d.ts +0 -31
- package/dist/core/src/hooks/index.d.ts +0 -37
- package/dist/core/src/hooks/useAdminModeController.d.ts +0 -19
- package/dist/core/src/hooks/useAnalyticsController.d.ts +0 -5
- package/dist/core/src/hooks/useAuthController.d.ts +0 -11
- package/dist/core/src/hooks/useAuthSubscription.d.ts +0 -2
- package/dist/core/src/hooks/useBackendStorageSource.d.ts +0 -30
- package/dist/core/src/hooks/useBridgeRegistration.d.ts +0 -18
- package/dist/core/src/hooks/useBrowserTitleAndIcon.d.ts +0 -6
- package/dist/core/src/hooks/useBuildAdminModeController.d.ts +0 -6
- package/dist/core/src/hooks/useBuildEffectiveRoleController.d.ts +0 -8
- package/dist/core/src/hooks/useBuildLocalConfigurationPersistence.d.ts +0 -2
- package/dist/core/src/hooks/useBuildModeController.d.ts +0 -6
- package/dist/core/src/hooks/useClipboard.d.ts +0 -57
- package/dist/core/src/hooks/useCollapsedGroups.d.ts +0 -27
- package/dist/core/src/hooks/useCustomizationController.d.ts +0 -11
- package/dist/core/src/hooks/useDialogsController.d.ts +0 -11
- package/dist/core/src/hooks/useEffectiveRoleController.d.ts +0 -7
- package/dist/core/src/hooks/useInternalUserManagementController.d.ts +0 -12
- package/dist/core/src/hooks/useLargeLayout.d.ts +0 -1
- package/dist/core/src/hooks/useModeController.d.ts +0 -19
- package/dist/core/src/hooks/usePermissions.d.ts +0 -12
- package/dist/core/src/hooks/useRebaseClient.d.ts +0 -5
- package/dist/core/src/hooks/useRebaseContext.d.ts +0 -11
- package/dist/core/src/hooks/useRebaseRegistry.d.ts +0 -34
- package/dist/core/src/hooks/useResolvedComponent.d.ts +0 -47
- package/dist/core/src/hooks/useSlot.d.ts +0 -18
- package/dist/core/src/hooks/useSnackbarController.d.ts +0 -20
- package/dist/core/src/hooks/useStorageSource.d.ts +0 -7
- package/dist/core/src/hooks/useStudioBridge.d.ts +0 -91
- package/dist/core/src/hooks/useTranslation.d.ts +0 -17
- package/dist/core/src/hooks/useUnsavedChangesDialog.d.ts +0 -12
- package/dist/core/src/hooks/useUserConfigurationPersistence.d.ts +0 -8
- package/dist/core/src/i18n/RebaseI18nProvider.d.ts +0 -33
- package/dist/core/src/index.d.ts +0 -15
- package/dist/core/src/internal/common.d.ts +0 -3
- package/dist/core/src/internal/useRestoreScroll.d.ts +0 -6
- package/dist/core/src/locales/de.d.ts +0 -2
- package/dist/core/src/locales/en.d.ts +0 -10
- package/dist/core/src/locales/es.d.ts +0 -10
- package/dist/core/src/locales/fr.d.ts +0 -2
- package/dist/core/src/locales/hi.d.ts +0 -2
- package/dist/core/src/locales/it.d.ts +0 -2
- package/dist/core/src/locales/pt.d.ts +0 -7
- package/dist/core/src/util/constants.d.ts +0 -1
- package/dist/core/src/util/createFormexStub.d.ts +0 -2
- package/dist/core/src/util/entity_cache.d.ts +0 -22
- package/dist/core/src/util/enums.d.ts +0 -5
- package/dist/core/src/util/icon_list.d.ts +0 -5
- package/dist/core/src/util/icons.d.ts +0 -20
- package/dist/core/src/util/index.d.ts +0 -8
- package/dist/core/src/util/previews.d.ts +0 -4
- package/dist/core/src/util/useStorageUploadController.d.ts +0 -38
- package/dist/formex/src/Field.d.ts +0 -52
- package/dist/formex/src/Formex.d.ts +0 -7
- package/dist/formex/src/index.d.ts +0 -5
- package/dist/formex/src/types.d.ts +0 -40
- package/dist/formex/src/useCreateFormex.d.ts +0 -14
- package/dist/formex/src/utils.d.ts +0 -16
- package/dist/types/src/controllers/analytics_controller.d.ts +0 -7
- package/dist/types/src/controllers/auth.d.ts +0 -104
- package/dist/types/src/controllers/client.d.ts +0 -168
- package/dist/types/src/controllers/collection_registry.d.ts +0 -46
- package/dist/types/src/controllers/customization_controller.d.ts +0 -60
- package/dist/types/src/controllers/data.d.ts +0 -207
- package/dist/types/src/controllers/data_driver.d.ts +0 -218
- package/dist/types/src/controllers/database_admin.d.ts +0 -11
- package/dist/types/src/controllers/dialogs_controller.d.ts +0 -36
- package/dist/types/src/controllers/effective_role.d.ts +0 -4
- package/dist/types/src/controllers/email.d.ts +0 -36
- package/dist/types/src/controllers/index.d.ts +0 -18
- package/dist/types/src/controllers/local_config_persistence.d.ts +0 -20
- package/dist/types/src/controllers/navigation.d.ts +0 -225
- package/dist/types/src/controllers/registry.d.ts +0 -63
- package/dist/types/src/controllers/side_dialogs_controller.d.ts +0 -67
- package/dist/types/src/controllers/side_entity_controller.d.ts +0 -97
- package/dist/types/src/controllers/snackbar.d.ts +0 -24
- package/dist/types/src/controllers/storage.d.ts +0 -171
- package/dist/types/src/index.d.ts +0 -4
- package/dist/types/src/rebase_context.d.ts +0 -122
- package/dist/types/src/types/auth_adapter.d.ts +0 -301
- package/dist/types/src/types/backend.d.ts +0 -571
- package/dist/types/src/types/backend_hooks.d.ts +0 -172
- package/dist/types/src/types/builders.d.ts +0 -15
- package/dist/types/src/types/chips.d.ts +0 -5
- package/dist/types/src/types/collections.d.ts +0 -961
- package/dist/types/src/types/component_ref.d.ts +0 -47
- package/dist/types/src/types/cron.d.ts +0 -102
- package/dist/types/src/types/data_source.d.ts +0 -64
- package/dist/types/src/types/database_adapter.d.ts +0 -94
- package/dist/types/src/types/entities.d.ts +0 -145
- package/dist/types/src/types/entity_actions.d.ts +0 -104
- package/dist/types/src/types/entity_callbacks.d.ts +0 -173
- package/dist/types/src/types/entity_link_builder.d.ts +0 -7
- package/dist/types/src/types/entity_overrides.d.ts +0 -10
- package/dist/types/src/types/entity_views.d.ts +0 -87
- package/dist/types/src/types/export_import.d.ts +0 -21
- package/dist/types/src/types/formex.d.ts +0 -40
- package/dist/types/src/types/index.d.ts +0 -28
- package/dist/types/src/types/locales.d.ts +0 -4
- package/dist/types/src/types/modify_collections.d.ts +0 -5
- package/dist/types/src/types/plugins.d.ts +0 -282
- package/dist/types/src/types/properties.d.ts +0 -1173
- package/dist/types/src/types/property_config.d.ts +0 -74
- package/dist/types/src/types/relations.d.ts +0 -336
- package/dist/types/src/types/slots.d.ts +0 -262
- package/dist/types/src/types/translations.d.ts +0 -900
- package/dist/types/src/types/user_management_delegate.d.ts +0 -86
- package/dist/types/src/types/websockets.d.ts +0 -78
- package/dist/types/src/users/index.d.ts +0 -1
- package/dist/types/src/users/user.d.ts +0 -50
- package/dist/ui/src/components/Alert.d.ts +0 -12
- package/dist/ui/src/components/Autocomplete.d.ts +0 -21
- package/dist/ui/src/components/Avatar.d.ts +0 -11
- package/dist/ui/src/components/Badge.d.ts +0 -8
- package/dist/ui/src/components/BooleanSwitch.d.ts +0 -14
- package/dist/ui/src/components/BooleanSwitchWithLabel.d.ts +0 -17
- package/dist/ui/src/components/Button.d.ts +0 -14
- package/dist/ui/src/components/Card.d.ts +0 -8
- package/dist/ui/src/components/CenteredView.d.ts +0 -9
- package/dist/ui/src/components/Checkbox.d.ts +0 -13
- package/dist/ui/src/components/Chip.d.ts +0 -26
- package/dist/ui/src/components/CircularProgress.d.ts +0 -5
- package/dist/ui/src/components/CircularProgressCenter.d.ts +0 -11
- package/dist/ui/src/components/Collapse.d.ts +0 -9
- package/dist/ui/src/components/ColorPicker.d.ts +0 -30
- package/dist/ui/src/components/Container.d.ts +0 -8
- package/dist/ui/src/components/DateTimeField.d.ts +0 -24
- package/dist/ui/src/components/DebouncedTextField.d.ts +0 -2
- package/dist/ui/src/components/Dialog.d.ts +0 -39
- package/dist/ui/src/components/DialogActions.d.ts +0 -7
- package/dist/ui/src/components/DialogContent.d.ts +0 -7
- package/dist/ui/src/components/DialogTitle.d.ts +0 -10
- package/dist/ui/src/components/ErrorBoundary.d.ts +0 -33
- package/dist/ui/src/components/ExpandablePanel.d.ts +0 -12
- package/dist/ui/src/components/FileUpload.d.ts +0 -23
- package/dist/ui/src/components/FilterChip.d.ts +0 -34
- package/dist/ui/src/components/IconButton.d.ts +0 -12
- package/dist/ui/src/components/InfoLabel.d.ts +0 -5
- package/dist/ui/src/components/InputLabel.d.ts +0 -11
- package/dist/ui/src/components/Label.d.ts +0 -7
- package/dist/ui/src/components/LoadingButton.d.ts +0 -7
- package/dist/ui/src/components/Markdown.d.ts +0 -10
- package/dist/ui/src/components/Menu.d.ts +0 -23
- package/dist/ui/src/components/Menubar.d.ts +0 -80
- package/dist/ui/src/components/MultiSelect.d.ts +0 -48
- package/dist/ui/src/components/Paper.d.ts +0 -6
- package/dist/ui/src/components/Popover.d.ts +0 -24
- package/dist/ui/src/components/RadioGroup.d.ts +0 -28
- package/dist/ui/src/components/ResizablePanels.d.ts +0 -18
- package/dist/ui/src/components/SearchBar.d.ts +0 -26
- package/dist/ui/src/components/Select.d.ts +0 -43
- package/dist/ui/src/components/Separator.d.ts +0 -5
- package/dist/ui/src/components/Sheet.d.ts +0 -22
- package/dist/ui/src/components/Skeleton.d.ts +0 -6
- package/dist/ui/src/components/Slider.d.ts +0 -21
- package/dist/ui/src/components/Table.d.ts +0 -34
- package/dist/ui/src/components/Tabs.d.ts +0 -19
- package/dist/ui/src/components/TextField.d.ts +0 -58
- package/dist/ui/src/components/TextareaAutosize.d.ts +0 -43
- package/dist/ui/src/components/ToggleButtonGroup.d.ts +0 -30
- package/dist/ui/src/components/Tooltip.d.ts +0 -19
- package/dist/ui/src/components/Typography.d.ts +0 -36
- package/dist/ui/src/components/VirtualTable/VirtualTable.d.ts +0 -11
- package/dist/ui/src/components/VirtualTable/VirtualTableCell.d.ts +0 -21
- package/dist/ui/src/components/VirtualTable/VirtualTableHeader.d.ts +0 -29
- package/dist/ui/src/components/VirtualTable/VirtualTableHeaderRow.d.ts +0 -2
- package/dist/ui/src/components/VirtualTable/VirtualTableProps.d.ts +0 -249
- package/dist/ui/src/components/VirtualTable/VirtualTableRow.d.ts +0 -3
- package/dist/ui/src/components/VirtualTable/index.d.ts +0 -3
- package/dist/ui/src/components/VirtualTable/types.d.ts +0 -38
- package/dist/ui/src/components/common/SelectInputLabel.d.ts +0 -5
- package/dist/ui/src/components/index.d.ts +0 -58
- package/dist/ui/src/hooks/PortalContainerContext.d.ts +0 -31
- package/dist/ui/src/hooks/index.d.ts +0 -6
- package/dist/ui/src/hooks/useDebounceCallback.d.ts +0 -1
- package/dist/ui/src/hooks/useDebounceValue.d.ts +0 -1
- package/dist/ui/src/hooks/useDebouncedCallback.d.ts +0 -1
- package/dist/ui/src/hooks/useInjectStyles.d.ts +0 -7
- package/dist/ui/src/hooks/useOutsideAlerter.d.ts +0 -5
- package/dist/ui/src/icons/GitHubIcon.d.ts +0 -2
- package/dist/ui/src/icons/HandleIcon.d.ts +0 -1
- package/dist/ui/src/icons/Icon.d.ts +0 -20
- package/dist/ui/src/icons/cool_icon_keys.d.ts +0 -1
- package/dist/ui/src/icons/icon_keys.d.ts +0 -1
- package/dist/ui/src/icons/index.d.ts +0 -8
- package/dist/ui/src/index.d.ts +0 -5
- package/dist/ui/src/styles.d.ts +0 -12
- package/dist/ui/src/util/chip_colors.d.ts +0 -4
- package/dist/ui/src/util/cls.d.ts +0 -2
- package/dist/ui/src/util/debounce.d.ts +0 -10
- package/dist/ui/src/util/hash.d.ts +0 -1
- package/dist/ui/src/util/index.d.ts +0 -4
- package/dist/ui/src/util/key_to_icon_component.d.ts +0 -1
- /package/dist/{plugin-data-enhancement/src/api.d.ts → api.d.ts} +0 -0
- /package/dist/{plugin-data-enhancement/src/editor → editor}/useEditorAIController.d.ts +0 -0
- /package/dist/{plugin-data-enhancement/src/index.d.ts → index.d.ts} +0 -0
- /package/dist/{plugin-data-enhancement/src/types → types}/data_enhancement_controller.d.ts +0 -0
- /package/dist/{plugin-data-enhancement/src/useDataEnhancementPlugin.d.ts → useDataEnhancementPlugin.d.ts} +0 -0
- /package/dist/{plugin-data-enhancement/src/utils → utils}/diffStrings.d.ts +0 -0
- /package/dist/{plugin-data-enhancement/src/utils → utils}/properties.d.ts +0 -0
- /package/dist/{plugin-data-enhancement/src/utils → utils}/strings_counter.d.ts +0 -0
- /package/dist/{plugin-data-enhancement/src/utils → utils}/suggestions.d.ts +0 -0
- /package/dist/{plugin-data-enhancement/src/utils → utils}/values.d.ts +0 -0
package/dist/index.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../src/utils/values.ts","../src/api.ts","../src/utils/suggestions.ts","../src/utils/properties.ts","../src/editor/useEditorAIController.tsx","../src/components/DataEnhancementControllerProvider.tsx","../src/components/FormEnhanceAction.tsx","../src/useDataEnhancementPlugin.tsx"],"sourcesContent":["export function flatMapEntityValues<M extends object>(values: M, path = \"\"): object {\n if (!values) return {};\n return Object.entries(values).flatMap(([key, value]) => {\n const currentPath = path ? `${path}.${key}` : key;\n if (typeof value === \"object\") {\n return flatMapEntityValues(value, currentPath);\n } else {\n return { [currentPath]: value };\n }\n }).reduce((acc, curr) => ({ ...acc,\n...curr }), {})\n}\n","import {\n DataEnhancementRequest,\n EnhancedDataResult,\n InputEntity,\n InputProperty,\n SamplePromptsResult\n} from \"./types/data_enhancement_controller\";\nimport { EntityValues } from \"@rebasepro/types\";\nimport { flatMapEntityValues } from \"./utils/values\";\n\n// const DEFAULT_SERVER = \"http://localhost:5001/rebase-dev-2da42/europe-west3/api\"; // Local\n\nconst DEFAULT_SERVER = \"https://api.rebase.pro\";\n\nexport async function enhanceDataAPIStream<M extends Record<string, unknown>>(props: {\n apiKey: string,\n entityId?: string | number,\n entityName: string,\n entityDescription?: string,\n propertyKey?: string,\n propertyInstructions?: string;\n values: EntityValues<M>,\n path: string,\n properties: Record<string, InputProperty>,\n\n instructions?: string,\n firebaseToken: string,\n onUpdate: (suggestions: Record<string, string | number>) => void;\n onUpdateDelta: (propertyKey: string, partialValue: string) => void;\n onError: (error: Error) => void;\n onEnd: (result: EnhancedDataResult) => void;\n host?: string;\n}) {\n\n const flatValues = flatMapEntityValues(props.values);\n\n const properties = props.properties;\n\n const inputEntity: InputEntity = {\n entityId: props.entityId,\n values: flatValues\n }\n\n const request: DataEnhancementRequest = {\n inputEntity,\n properties,\n entityName: props.entityName,\n entityDescription: props.entityDescription,\n propertyKey: props.propertyKey,\n propertyInstructions: props.propertyInstructions,\n instructions: props.instructions\n };\n\n console.debug(\"enhanceDataAPIStream\", request);\n\n return fetch((props.host ?? DEFAULT_SERVER) + \"/data/enhance_stream/\",\n {\n // mode: \"no-cors\",\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Basic ${props.firebaseToken}`,\n \"x-de-api-key\": `Basic ${props.apiKey}`\n // \"x-de-version\": version\n },\n body: JSON.stringify(request)\n })\n .then(async (res) => {\n if (!res.ok) {\n console.error(\"enhanceDataAPIStream error\", res)\n throw await res.json();\n }\n const reader = res.body?.getReader();\n if (!reader) {\n throw new Error(\"No reader\");\n }\n\n for await (const chunk of readChunks(reader)) {\n const str = new TextDecoder().decode(chunk);\n try {\n str.split(\"&$# \").forEach((s) => {\n if (s && s.length > 0) {\n const data = JSON.parse(s.trim());\n if (data.type === \"suggestion_delta\")\n props.onUpdateDelta(data.data.propertyKey, data.data.partialValue);\n else if (data.type === \"suggestion\")\n props.onUpdate(data.data);\n else if (data.type === \"result\")\n props.onEnd(data.data);\n }\n });\n } catch (e: unknown) {\n console.error(\"str\", str);\n console.error(\"Error parsing stream\", e);\n props.onError(e instanceof Error ? e : new Error(String(e)));\n }\n }\n\n });\n\n}\n\nfunction readChunks(reader: ReadableStreamDefaultReader) {\n return {\n async *[Symbol.asyncIterator]() {\n let readResult = await reader.read();\n while (!readResult.done) {\n yield readResult.value;\n readResult = await reader.read();\n }\n }\n };\n}\n\nexport async function fetchEntityPromptSuggestion<M extends object>(props: {\n input?: string,\n entityName: string,\n firebaseToken: string,\n apiKey: string,\n host?: string\n}): Promise<SamplePromptsResult> {\n\n return fetch((props.host ?? DEFAULT_SERVER) + \"/data/prompt_autocomplete/\",\n {\n // mode: \"no-cors\",\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Basic ${props.firebaseToken}`,\n \"x-de-api-key\": `Basic ${props.apiKey}`\n },\n body: JSON.stringify({\n entityName: props.entityName,\n input: props.input ?? null\n })\n })\n .then(async (res) => {\n const data = await res.json();\n if (!res.ok) {\n console.error(\"fetchEntityPromptSuggestion\", data);\n throw Error(data.message);\n }\n return {\n prompts: data.data.prompts.map((e: string) => ({\n prompt: e,\n type: \"sample\"\n }))\n };\n });\n\n}\n\nexport async function autocompleteStream(props: {\n firebaseToken: string,\n textBefore?: string,\n textAfter: string,\n host?: string;\n onUpdate: (delta: string) => void;\n}) {\n\n let result = \"\";\n return fetch((props.host ?? DEFAULT_SERVER) + \"/data/autocomplete/\",\n {\n // mode: \"no-cors\",\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Basic ${props.firebaseToken}`\n // \"x-de-version\": version\n },\n body: JSON.stringify({\n textBefore: props.textBefore,\n textAfter: props.textAfter\n })\n })\n .then(async (res) => {\n if (!res.ok) {\n console.error(\"enhanceDataAPIStream error\", res)\n throw await res.json();\n }\n const reader = res.body?.getReader();\n if (!reader) {\n throw new Error(\"No reader\");\n }\n\n for await (const chunk of readChunks(reader)) {\n const str = new TextDecoder().decode(chunk);\n result += str;\n console.debug(\"Autocomplete update:\", str);\n props.onUpdate(str);\n }\n\n }).then(() => {\n console.debug(\"Autocomplete result:\", result);\n return result;\n });\n\n}\n","export function getAppendableSuggestion(suggestion: string | number | undefined, value: unknown): string | undefined {\n const suggestionIncludesValue = typeof suggestion === \"string\" && typeof value === \"string\" && suggestion.toLowerCase().trim().startsWith(value.toLowerCase().trim());\n return (typeof value === \"string\" && suggestionIncludesValue)\n ? suggestion.substring(suggestion.toLowerCase().trim().indexOf(value.toLowerCase().trim()) + value.trim().length)\n : undefined;\n}\n","import { getFieldId } from \"@rebasepro/admin\";\nimport { EnumValues, Properties, Property } from \"@rebasepro/types\";\nimport { isPropertyBuilder } from \"@rebasepro/common\";\nimport { InputProperty } from \"../types/data_enhancement_controller\";\nimport { getValueInPath } from \"@rebasepro/utils\";\n\nexport function getSimplifiedProperties<M extends Record<string, any>>(properties: Properties, values: M, path = \"\"): Record<string, InputProperty> {\n if (!properties) return {};\n return Object.entries(properties)\n .map(([key, property]) => {\n if (isPropertyBuilder(property)) return {};\n const fullKey = path ? `${path}.${key}` : key;\n const valueInPath = getValueInPath(values, fullKey);\n return getSimplifiedProperty(property, fullKey, valueInPath)\n })\n .reduce((a, b) => ({ ...a,\n...b }), {});\n}\n\nfunction getSimpleProperty(property: Property): InputProperty {\n const fieldId = getFieldId(property);\n if (!fieldId) {\n console.error(\"No fieldId found for property\", property);\n throw new Error(\"Field id not found\");\n }\n return {\n name: property.name,\n description: property.description,\n type: property.type,\n fieldConfigId: fieldId,\n enum: \"enum\" in property && property.enum\n ? getSimpleEnumValues(property.enum)\n : undefined,\n disabled: Boolean(property.ui?.disabled || property.ui?.readOnly)\n };\n}\n\nfunction getSimplifiedProperty(property: Property, path: string, value?: unknown): Record<string, InputProperty> {\n if (isPropertyBuilder(property)) return {};\n if (property.type === \"array\") {\n\n if (property.of && !Array.isArray(property.of) && !isPropertyBuilder(property.of)) {\n const arrayParentProperty: InputProperty = {\n name: property.name,\n description: property.description,\n type: property.type,\n fieldConfigId: \"repeat\",\n disabled: Boolean(property.ui?.disabled || property.ui?.readOnly),\n of: getSimpleProperty(property.of as Property)\n };\n\n const result = { [path]: arrayParentProperty };\n // if (Array.isArray(value)) {\n // result = {\n // ...result,\n // ...value\n // .map((v, i) => getSimplifiedProperty(property.of, `${path}.${i}`, v))\n // .reduce((a, b) => ({ ...a, ...b }), {})\n // };\n // }\n //\n // const existingValuesCount = Array.isArray(value) ? value.length : 0;\n //\n // const newValuesCount = property.of && !isPropertyBuilder<any, any>(property.of) && (property.of as Property).type === \"map\" ? 1 : 3;\n // result = {\n // ...result,\n // // ...Array.from(Array(newValuesCount))\n // // .map((v, i) => getSimplifiedProperty(property.of, `${path}.${i + existingValuesCount}`, v))\n // // .reduce((a, b) => ({ ...a, ...b }), {})\n // }\n\n return result;\n } else if (property.oneOf) {\n\n const arrayParentProperty: InputProperty = {\n name: property.name,\n description: property.description,\n type: property.type,\n fieldConfigId: \"block\",\n disabled: Boolean(property.ui?.disabled || property.ui?.readOnly),\n oneOf: {\n typeField: property.oneOf.typeField,\n valueField: property.oneOf.valueField,\n properties: Object.entries(property.oneOf.properties)\n .map(([key, prop]) => ({ [key]: getSimpleProperty(prop) }))\n .reduce((a, b) => ({ ...a,\n...b }), {})\n }\n };\n\n if (!Array.isArray(value)) {\n return { [path]: arrayParentProperty };\n }\n\n return value.map((v, i) => {\n if (v == null) return {};\n const typeKey = property.oneOf!.typeField ?? \"type\";\n const oneOfType = v[typeKey];\n const valueKey = property.oneOf!.valueField ?? \"value\";\n const oneOfValue = v[valueKey];\n const childProperty = property.oneOf!.properties[oneOfType];\n if (childProperty === undefined) {\n console.error(`No property found for type ${oneOfType}`, property.oneOf!.properties);\n return {};\n }\n const simplifiedProperty = getSimplifiedProperty(childProperty, `${path}.${i}.${valueKey}`, oneOfValue);\n return {\n [`${path}.${i}.${typeKey}`]: oneOfType,\n ...simplifiedProperty\n };\n }).reduce((a, b) => ({ ...a,\n...b }), { [path]: arrayParentProperty });\n }\n } else if (property.type === \"map\") {\n if (property.properties) {\n const mapProperties: Record<string, InputProperty> = Object.entries(property.properties)\n .map(([key, childProperty]) => {\n const childValue = value && typeof value === \"object\" ? (value as Record<string, unknown>)[key] : undefined;\n return getSimplifiedProperty(childProperty, key, childValue);\n })\n .map(o => attachPathToKeys(o, path))\n .reduce((a, b) => ({ ...a,\n...b }), {});\n\n if (Object.keys(mapProperties).length === 0) return {};\n const mapParentProperty: InputProperty = {\n name: property.name,\n description: property.description,\n type: property.type,\n fieldConfigId: \"group\",\n disabled: Boolean(property.ui?.disabled || property.ui?.readOnly)\n };\n return {\n [path]: mapParentProperty,\n ...mapProperties\n } as Record<string, InputProperty>;\n }\n } else {\n const fieldId = getFieldId(property);\n if (!fieldId) {\n console.warn(`No fieldId found for property ${path} with type ${property.type}`);\n return {};\n }\n return {\n [path]: getSimpleProperty(property)\n };\n }\n return {};\n}\n\n// attach a path to every key in an object\nfunction attachPathToKeys(obj: Record<string, InputProperty>, path = \"\"): Record<string, InputProperty> {\n return Object.entries(obj)\n .map(([key, value]) => {\n const fullKey = path ? `${path}.${key}` : key;\n return { [fullKey]: value };\n })\n .reduce((a, b) => ({ ...a,\n...b }), {});\n}\n\nfunction getSimpleEnumValues(enumValues: EnumValues): string[] {\n if (Array.isArray(enumValues))\n return enumValues.map(v => String(v.id));\n if (typeof enumValues === \"object\")\n return Object.keys(enumValues);\n throw Error(\"getSimpleEnumValues: Invalid enumValues\");\n}\n","import { autocompleteStream } from \"../api\";\nimport { EditorAIController } from \"@rebasepro/admin\";\n\nexport function useEditorAIController({ getAuthToken }: { getAuthToken?: () => Promise<string> }): EditorAIController {\n const autocomplete = async (textBefore: string, textAfter: string, onUpdate: (delta: string) => void) => {\n if (!getAuthToken) {\n throw new Error(\"Firebase token is required\");\n }\n const firebaseToken = await getAuthToken();\n return autocompleteStream({\n firebaseToken,\n textBefore,\n textAfter,\n onUpdate\n });\n }\n\n return {\n autocomplete\n };\n}\n\n// async function * generateLoremIpsum(): AsyncGenerator<string> {\n// const loremIpsum = \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\n# Heading\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\";\n//\n// const words = loremIpsum.split(\" \");\n//\n// for (const word of words) {\n// yield word;\n// await new Promise(resolve => setTimeout(resolve, 100));\n// }\n// }\n//\n// const generator = generateLoremIpsum();\n// for await (const word of generator) {\n//\n// }\n","import React, { PropsWithChildren, useCallback, useContext, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport {\n DataEnhancementController,\n EnhancedDataResult,\n EnhanceParams,\n InputProperty\n} from \"../types/data_enhancement_controller\";\nimport {\n useAuthController,\n useCustomizationController,\n useSnackbarController\n} from \"@rebasepro/core\";\nimport { useUrlController } from \"@rebasepro/admin\";\nimport { DataDriver, Entity, EntityCollection, PluginFormActionProps } from \"@rebasepro/types\";\nimport { enhanceDataAPIStream, fetchEntityPromptSuggestion } from \"../api\";\nimport { getAppendableSuggestion } from \"../utils/suggestions\";\nimport { getSimplifiedProperties } from \"../utils/properties\";\nimport { useEditorAIController } from \"../editor/useEditorAIController\";\nimport { getValueInPath } from \"@rebasepro/utils\";\n\nconst DataEnhancementControllerContext = React.createContext<DataEnhancementController>(null! as DataEnhancementController);\n\ntype DataEnhancementControllerProviderProps = {\n\n apiKey: string;\n\n getConfigForPath?: (props: {\n path: string,\n collection: EntityCollection\n }) => boolean;\n\n host?: string;\n}\n\nexport const useDataEnhancementController = (): DataEnhancementController => useContext(DataEnhancementControllerContext);\n\nfunction getPropertyFromKey(properties: Record<string, InputProperty>, propertyKey: string) {\n if (propertyKey in properties) {\n return properties[propertyKey];\n } else {\n //split the property key\n const split = propertyKey.split(\".\");\n if (split.length === 1) {\n return undefined;\n }\n const parentKey = split.slice(0, split.length - 1).join(\".\");\n return getPropertyFromKey(properties, parentKey);\n\n }\n}\n\nexport function DataEnhancementControllerProvider({\n apiKey,\n getConfigForPath,\n children,\n host,\n path,\n collection,\n formContext\n}: PropsWithChildren<DataEnhancementControllerProviderProps & PluginFormActionProps>) {\n\n const [enabled, setEnabled] = useState(false);\n const [suggestions, setSuggestions] = useState<Record<string, string | number>>({});\n const [loadingSuggestions, setLoadingSuggestions] = useState<string[]>([]);\n\n const enhancingInProgress = useRef(false);\n\n const authController = useAuthController();\n const snackbarController = useSnackbarController();\n\n\n const properties = useMemo(() => getSimplifiedProperties(collection.properties, formContext?.values ?? {}), [formContext?.values]);\n // const preEnhanceValuesRef = React.useRef(formContext?.values ?? {});\n const valuesRef = React.useRef(formContext?.values ?? {});\n useEffect(() => {\n if (!enhancingInProgress.current)\n valuesRef.current = formContext?.values ?? {};\n }, [formContext?.values]);\n\n const allowReferenceDataSelection = false;\n\n const updateConfig = useCallback(async () => {\n if (!getConfigForPath) return;\n const config = getConfigForPath({\n path,\n collection\n });\n if (config) {\n setEnabled(true);\n }\n }, [collection, getConfigForPath, path]);\n\n useEffect(() => {\n if (!getConfigForPath) {\n setEnabled(true);\n } else {\n updateConfig();\n }\n\n }, [getConfigForPath, updateConfig]);\n\n\n const urlController = useUrlController();\n\n const clearSuggestion = useCallback((propertyKey: string) => {\n setSuggestions((prev) => {\n //remove propertyKey from prev\n const {\n [propertyKey]: _,\n ...rest\n } = prev;\n return rest;\n });\n }, []);\n\n const appendValueDelta = useCallback((propertyKey: string, delta: string) => {\n\n const property = getPropertyFromKey(properties, propertyKey);\n if (delta === null || property?.disabled) {\n return;\n }\n\n // clearSuggestion(propertyKey);\n const value = getValueInPath(valuesRef.current, propertyKey);\n\n const currentValue = value ? (value as string) + \"\" : \"\";\n const updatedValue = currentValue + delta;\n // if (currentValue.length === 0) updatedValue = updatedValue.trimStart();\n valuesRef.current = {\n ...valuesRef.current,\n [propertyKey]: updatedValue\n };\n formContext?.setFieldValue(propertyKey, updatedValue, false);\n setSuggestions(prev => ({\n ...prev,\n [propertyKey]: (prev[propertyKey] ?? \"\") + delta\n }));\n }, [properties, formContext]);\n\n const updateSuggestedValues = useCallback((currentValues: object, updatedValues: Record<string, string | number>, replaceValues: boolean) => {\n\n setLoadingSuggestions((prev) => {\n return prev.filter(p => !Object.keys(updatedValues).includes(p));\n });\n\n Object.entries(updatedValues).forEach(([propertyKey, suggestion]) => {\n\n const value = getValueInPath(currentValues, propertyKey);\n const property = getPropertyFromKey(properties, propertyKey);\n\n if (!property || suggestion === null || property?.disabled) {\n return;\n }\n\n if (typeof suggestion === \"number\") {\n formContext?.setFieldValue(propertyKey, suggestion);\n return;\n }\n\n if (replaceValues) {\n formContext?.setFieldValue(propertyKey, suggestion);\n return;\n }\n\n const appendableValue = getAppendableSuggestion(suggestion, value);\n\n const currentValue = value ? (value as string) + \"\" : \"\";\n if (appendableValue) {\n formContext?.setFieldValue(propertyKey, suggestion);\n } else {\n const multiline = property?.fieldConfigId === \"multiline\" || property?.fieldConfigId === \"markdown\";\n const trimmedValue = currentValue.trimEnd();\n if (multiline && (trimmedValue.endsWith(\".\") || trimmedValue.endsWith(\"?\") || trimmedValue.endsWith(\"!\") || trimmedValue.endsWith(\":\"))) {\n formContext?.setFieldValue(propertyKey, trimmedValue + \"\\n\\n\" + (suggestion as string).trimStart());\n } else {\n formContext?.setFieldValue(propertyKey, trimmedValue + (trimmedValue.length > 0 ? \" \" : \"\") + (suggestion as string));\n }\n }\n });\n\n setSuggestions(prev => ({\n ...prev,\n ...Object.keys(updatedValues)\n .reduce((acc, key) => {\n const value = getValueInPath(formContext?.values, key);\n const suggestion = updatedValues[key];\n return {\n ...acc,\n [key]: getAppendableSuggestion(suggestion, value) ?? suggestion\n };\n }, {})\n }));\n }, [properties, formContext]);\n\n const displayNeededSubscriptionSnackbar = useCallback((projectId: unknown) => {\n snackbarController.open({\n type: \"warning\",\n message: \"A valid subscription is needed in order to use this function.\",\n autoHideDuration: 4000\n });\n }, [snackbarController]);\n\n const editorAIController = useEditorAIController({ getAuthToken: authController.getAuthToken });\n\n const clearAllSuggestions = useCallback(() => {\n setSuggestions({});\n }, []);\n\n const enhance = useCallback(async (props: EnhanceParams<Record<string, unknown>>): Promise<EnhancedDataResult | null> => {\n\n if (!authController.user) {\n snackbarController.open({\n type: \"warning\",\n message: \"You need to be logged in to enhance data\"\n });\n return Promise.reject(new Error(\"Not logged in\"));\n }\n\n const resolvedPath = urlController.resolveDatabasePathsFrom(path);\n const firebaseToken = await authController.getAuthToken();\n\n if (props.propertyKey) {\n clearSuggestion(props.propertyKey)\n } else {\n clearAllSuggestions();\n }\n\n setLoadingSuggestions((prev) => [...prev, ...(props.propertyKey ? [props.propertyKey] : Object.keys(properties))]);\n enhancingInProgress.current = true;\n\n const currentValues = valuesRef.current ?? {};\n\n return new Promise((resolve, reject) => {\n function onError(e: unknown) {\n setLoadingSuggestions([]);\n const err = e instanceof Error ? e : typeof e === \"object\" && e !== null ? e : new Error(String(e));\n const errorObj = err as Record<string, unknown>;\n if (errorObj.code === \"payment-required\") {\n const data = errorObj.data as Record<string, unknown> | undefined;\n const projectId = data?.projectId;\n displayNeededSubscriptionSnackbar(projectId);\n } else {\n console.error(\"Enhance error\", e);\n }\n reject(e);\n enhancingInProgress.current = false;\n }\n\n try {\n enhanceDataAPIStream({\n ...props,\n host,\n apiKey,\n properties,\n path: resolvedPath,\n entityName: collection.singularName ?? collection.name,\n entityDescription: collection.description,\n\n firebaseToken,\n onUpdate: (suggestions) => {\n console.debug(\"de onUpdate\", suggestions);\n updateSuggestedValues(currentValues, suggestions, props.replaceValues ?? false);\n },\n onUpdateDelta: (propertyKey: string, partialValue: string) => {\n // console.debug(\"de delta\", propertyKey, partialValue);\n appendValueDelta(propertyKey, partialValue);\n },\n onError,\n onEnd: (result) => {\n console.debug(\"de onEnd\", result);\n if (result.errors) {\n result.errors.forEach((error) => {\n snackbarController.open({\n type: \"warning\",\n message: error\n })\n });\n }\n if (Object.keys(result.suggestions).length === 0) {\n snackbarController.open({\n type: \"info\",\n autoHideDuration: 1800,\n message: \"No fields were updated\"\n })\n }\n setLoadingSuggestions([]);\n resolve(result);\n enhancingInProgress.current = false;\n }\n }).catch(onError);\n } catch (e: unknown) {\n onError(e);\n }\n });\n }, [\n authController, urlController, path, clearSuggestion, clearAllSuggestions,\n properties, host, apiKey, collection, updateSuggestedValues, appendValueDelta, displayNeededSubscriptionSnackbar, snackbarController\n ]);\n\n const getSamplePrompts = useCallback(async (entityName: string, input?: string) => {\n const firebaseToken = await authController.getAuthToken()\n return fetchEntityPromptSuggestion({\n host,\n entityName,\n firebaseToken,\n apiKey,\n input\n });\n }, [apiKey, authController.getAuthToken, host]);\n\n const dataEnhancementController: DataEnhancementController = useMemo(() => ({\n enabled,\n suggestions,\n clearSuggestion,\n enhance,\n allowReferenceDataSelection,\n clearAllSuggestions,\n getSamplePrompts,\n loadingSuggestions,\n editorAIController\n }), [\n enabled,\n suggestions,\n clearSuggestion,\n enhance,\n allowReferenceDataSelection,\n clearAllSuggestions,\n getSamplePrompts,\n loadingSuggestions,\n editorAIController\n ]);\n\n return (\n <DataEnhancementControllerContext.Provider\n value={dataEnhancementController}>\n {children}\n </DataEnhancementControllerContext.Provider>\n );\n}\n\n\n","\nimport React, { useCallback, useDeferredValue, useEffect, useRef } from \"react\";\n\nimport {\n Button,\n CircularProgress,\n cls,\n focusedDisabled,\n IconButton,\n iconSize,\n Menu,\n MenuItem,\n SendIcon,\n Separator,\n TextareaAutosize,\n XIcon\n} from \"@rebasepro/ui\";\nimport {\n AIIcon,\n useLargeLayout\n} from \"@rebasepro/core\";\nimport { EntityStatus, PluginFormActionProps, Properties, Property } from \"@rebasepro/types\";\nimport { isPropertyBuilder, stripCollectionPath } from \"@rebasepro/common\";\nimport { useDataEnhancementController } from \"./DataEnhancementControllerProvider\";\nimport { SamplePrompt } from \"../types/data_enhancement_controller\";\n\nexport function FormEnhanceAction({\n entityId,\n path,\n status,\n collection,\n formContext,\n openEntityMode\n}: PluginFormActionProps) {\n\n const largeLayout = useLargeLayout();\n\n const storageKey = createLocalStorageKey(path, status);\n\n const [loading, setLoading] = React.useState(false);\n const dataEnhancementController = useDataEnhancementController();\n\n const [samplePrompts, setSamplePrompts] = React.useState<SamplePrompt[] | undefined>(undefined);\n const [instructions, setInstructions] = React.useState<string>(\"\");\n\n const getSamplePrompts = dataEnhancementController?.getSamplePrompts;\n\n const loadingPrompts = useRef(false);\n const updateSuggestedPrompts = useCallback(async function updateSuggestedPrompts(instructions?: string) {\n if (!getSamplePrompts) return;\n if (loadingPrompts.current) return;\n loadingPrompts.current = true;\n const prompts = status === \"new\"\n ? (await getSamplePrompts(collection.singularName ?? collection.name, instructions)).prompts\n : getPromptsForExistingEntities(collection.properties);\n\n const recentPromptsFromStorage = getRecentPromptsFromStorage(storageKey);\n const recentPrompts = recentPromptsFromStorage.map(prompt => prompt.prompt);\n setSamplePrompts([...recentPromptsFromStorage, ...prompts.filter(p => !recentPrompts.includes(p.prompt))].slice(0, 5));\n loadingPrompts.current = false;\n },\n [collection.name, collection.singularName, getSamplePrompts, status]);\n\n const deferredValues = useDeferredValue(formContext?.values);\n // const enoughData = countStringCharacters(deferredValues, collection.properties) > 20;\n\n useEffect(() => {\n if (!dataEnhancementController) return;\n if (!samplePrompts) {\n setSamplePrompts(getRecentPromptsFromStorage(storageKey));\n updateSuggestedPrompts().then();\n }\n }, [dataEnhancementController, samplePrompts, storageKey, updateSuggestedPrompts, instructions, status]);\n\n useEffect(() => {\n if (!dataEnhancementController) return;\n updateSuggestedPrompts().then();\n }, [dataEnhancementController, status]);\n\n const enhance = (prompt?: string) => {\n if (!dataEnhancementController || !formContext?.values) return;\n setLoading(true);\n if (prompt) {\n addRecentPrompt(storageKey, prompt);\n setSamplePrompts([{\n prompt,\n type: \"recent\"\n }, ...(samplePrompts ?? []).slice(0, 5)]);\n }\n return dataEnhancementController.enhance({\n entityId,\n values: formContext!.values,\n instructions: prompt,\n replaceValues: true\n }).finally(() => {\n setLoading(false);\n });\n };\n\n if (!dataEnhancementController?.enabled)\n return null;\n\n const suggestions = dataEnhancementController.suggestions;\n const hasSuggestions = Object.values(suggestions).filter(Boolean).length > 0;\n\n const disabledSuggestionActions = !hasSuggestions;\n const promptSuggestionsEnabled = (samplePrompts ?? []).length > 0 && instructions.length === 0;\n\n // const noIdSet = !formContext?.entityId;\n\n function submit() {\n enhance(instructions);\n }\n\n return (\n <Menu\n align={\"end\"}\n sideOffset={8}\n className={\"max-w-[100vw]\"}\n trigger={<Button variant={\"filled\"}\n color={\"neutral\"}\n fullWidth={largeLayout && openEntityMode === \"full_screen\"}\n size={\"small\"}\n disabled={loading}>\n {!loading && <AIIcon size={\"small\"}/>}\n {loading && <CircularProgress size={\"small\"}/>}\n Autofill\n </Button>}>\n\n <MenuItem className={\"py-4\"}\n onClick={() => {\n enhance();\n }}>\n <AIIcon size={\"small\"}/>\n Autofill based on the current content\n </MenuItem>\n\n <Separator orientation={\"horizontal\"} className={\"mt-2\"}/>\n\n {samplePrompts?.map((samplePrompt, index) => {\n return <MenuItem\n key={index + \"_\" + samplePrompt.prompt}\n onClick={() => {\n setInstructions(samplePrompt.prompt);\n enhance(samplePrompt.prompt);\n }}\n >\n <div className={\"pl-9 grow text-text-secondary dark:text-text-secondary-dark\"}>\n {samplePrompt.prompt}\n </div>\n\n {samplePrompt.type === \"recent\" && <IconButton\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n removeRecentPrompt(storageKey, samplePrompt.prompt);\n setSamplePrompts((samplePrompts ?? []).filter(p => p.prompt !== samplePrompt.prompt));\n }}\n size={\"smallest\"}\n >\n <XIcon size={iconSize.smallest}/>\n </IconButton>\n }\n </MenuItem>;\n })}\n\n <Separator orientation={\"horizontal\"}/>\n\n <div\n className={cls(\n \"my-2 w-[500px] max-w-full flex items-start text-surface-700 dark:text-surface-200\"\n )}>\n\n <TextareaAutosize\n className={cls(\"p-4 rounded-lg resize-none bg-surface-100 dark:bg-surface-950 mx-2 w-full grow outline-hidden max-h-[300px] overflow-auto\", focusedDisabled)}\n value={instructions}\n autoFocus={status === \"new\"}\n disabled={loading}\n onFocus={(event) => {\n event.stopPropagation();\n }}\n placeholder={\"...or provide instructions\"}\n onKeyDown={(e) => {\n e.stopPropagation();\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n submit();\n }\n\n }}\n onChange={(e) => {\n setInstructions(e.target.value);\n }}\n />\n\n <IconButton\n size={\"small\"}\n onClick={() => {\n setInstructions(\"\");\n }}\n color={!instructions ? \"primary\" : undefined}\n disabled={loading || !instructions}>\n <XIcon size={iconSize.small}/>\n </IconButton>\n\n <IconButton\n onClick={() => enhance(instructions)}\n size={\"small\"}\n color={!instructions ? \"primary\" : undefined}\n disabled={loading || !instructions}>\n {loading &&\n <CircularProgress size={\"smallest\"}/>}\n {!loading &&\n <SendIcon color={\"primary\"}/>}\n </IconButton>\n\n </div>\n\n </Menu>\n );\n}\n\nfunction getPromptsForExistingEntities(properties: Properties): SamplePrompt[] {\n\n const multilineProperties = Object.values(properties).filter((p: Property) => {\n if (isPropertyBuilder(p)) {\n return false;\n }\n return p.type === \"string\" && (p.ui?.markdown || p.ui?.multiline);\n });\n\n const multilinePrompt: Property | undefined = multilineProperties.length > 0\n ? multilineProperties[Math.floor(Math.random() * multilineProperties.length)] as Property\n : undefined;\n\n const prompts = [\n \"Fill the missing fields\",\n \"Translate the missing content\"\n ];\n if (multilinePrompt) {\n prompts.push(`Add 2 paragraphs to '${multilinePrompt.name}'`);\n }\n return prompts.map(p => ({\n prompt: p,\n type: \"sample\"\n }));\n}\n\nconst createLocalStorageKey = (path: string, status: EntityStatus) => {\n const statusString = status === \"new\" ? \"new\" : \"existing\";\n return `data_enhancement::${statusString}::${stripCollectionPath(path)}`;\n};\n\nconst getRecentPromptsFromStorage = (storageKey: string): SamplePrompt[] => {\n const item = localStorage.getItem(storageKey);\n return item ? JSON.parse(item).map((e: string) => ({\n prompt: e,\n type: \"recent\"\n })) : [];\n};\n\nconst addRecentPrompt = (storageKey: string, prompt: string) => {\n if (!prompt || prompt.trim().length === 0) {\n return;\n }\n const recentPrompts = getRecentPromptsFromStorage(storageKey);\n localStorage.setItem(storageKey, JSON.stringify([prompt, ...recentPrompts\n .map(e => e.prompt)\n .filter(e => e !== prompt)\n .slice(0, 5)]));\n};\n\nconst removeRecentPrompt = (storageKey: string, prompt: string) => {\n localStorage.setItem(storageKey, JSON.stringify(getRecentPromptsFromStorage(storageKey)\n .map(e => e.prompt)\n .filter(e => e !== prompt)));\n};\n","import React from \"react\";\n\nimport { EntityCollection, RebasePlugin, User } from \"@rebasepro/types\";\nimport { DataEnhancementControllerProvider } from \"./components/DataEnhancementControllerProvider\";\nimport { FormEnhanceAction } from \"./components/FormEnhanceAction\";\n\nconst DEFAULT_API_KEY = \"fcms-U9jdDii0xXWSDC34asfrf54lbkFJBfKfRWcEDEwdc4V5wDWEDF\";\n\nexport interface DataEnhancementPluginProps {\n\n apiKey?: string;\n\n /**\n * Use this function to determine if the data enhancement plugin should be enabled for a given path.\n * If this function is not provided, the plugin will be enabled for all paths.\n * If the function returns false, the plugin will be disabled for the given path.\n * You can also return a configuration object to override the default configuration.\n *\n * @param path\n * @param collection\n */\n getConfigForPath?: (props: {\n path: string,\n collection: EntityCollection,\n user: User | null\n }) => boolean;\n\n /**\n * Host to use for the data enhancement API.\n * This prop is only use in development mode.\n */\n host?: string;\n}\n\n/**\n * Use this hook to initialise the data enhancement plugin.\n * This is likely the only hook you will need to use.\n * @param props\n */\nexport function useDataEnhancementPlugin(props?: DataEnhancementPluginProps): RebasePlugin {\n\n const apiKey = props?.apiKey ?? DEFAULT_API_KEY;\n const getConfigForPath = props?.getConfigForPath;\n\n return React.useMemo(() => ({\n key: \"data_enhancement\",\n slots: [\n {\n slot: \"form.actions\",\n Component: FormEnhanceAction,\n order: 40\n }\n ],\n providers: [\n {\n scope: \"form\" as const,\n Component: DataEnhancementControllerProvider as React.ComponentType<any>,\n props: {\n apiKey,\n getConfigForPath,\n host: props?.host\n }\n }\n ]\n }), [apiKey, getConfigForPath, props?.host]);\n}\n"],"names":["flatMapEntityValues","values","path","Object","entries","flatMap","key","value","currentPath","reduce","acc","curr","DEFAULT_SERVER","enhanceDataAPIStream","props","flatValues","properties","inputEntity","entityId","request","entityName","entityDescription","propertyKey","propertyInstructions","instructions","console","debug","fetch","host","method","headers","Authorization","firebaseToken","apiKey","body","JSON","stringify","then","res","ok","error","json","reader","getReader","Error","chunk","readChunks","str","TextDecoder","decode","split","forEach","s","length","data","parse","trim","type","onUpdateDelta","partialValue","onUpdate","onEnd","e","onError","String","Symbol","asyncIterator","readResult","read","done","fetchEntityPromptSuggestion","input","message","prompts","map","prompt","autocompleteStream","result","textBefore","textAfter","getAppendableSuggestion","suggestion","suggestionIncludesValue","toLowerCase","startsWith","substring","indexOf","undefined","getSimplifiedProperties","property","isPropertyBuilder","fullKey","valueInPath","getValueInPath","getSimplifiedProperty","a","b","getSimpleProperty","fieldId","getFieldId","name","description","fieldConfigId","enum","getSimpleEnumValues","disabled","Boolean","ui","readOnly","of","Array","isArray","arrayParentProperty","oneOf","typeField","valueField","prop","v","i","typeKey","oneOfType","valueKey","oneOfValue","childProperty","simplifiedProperty","mapProperties","childValue","o","attachPathToKeys","keys","mapParentProperty","warn","obj","enumValues","id","useEditorAIController","getAuthToken","autocomplete","DataEnhancementControllerContext","React","createContext","useDataEnhancementController","useContext","getPropertyFromKey","parentKey","slice","join","DataEnhancementControllerProvider","getConfigForPath","children","collection","formContext","enabled","setEnabled","useState","suggestions","setSuggestions","loadingSuggestions","setLoadingSuggestions","enhancingInProgress","useRef","authController","useAuthController","snackbarController","useSnackbarController","useMemo","valuesRef","useEffect","current","allowReferenceDataSelection","updateConfig","useCallback","config","urlController","useUrlController","clearSuggestion","prev","_","rest","appendValueDelta","delta","currentValue","updatedValue","setFieldValue","updateSuggestedValues","currentValues","updatedValues","replaceValues","filter","p","includes","appendableValue","multiline","trimmedValue","trimEnd","endsWith","trimStart","displayNeededSubscriptionSnackbar","projectId","open","autoHideDuration","editorAIController","clearAllSuggestions","enhance","user","Promise","reject","resolvedPath","resolveDatabasePathsFrom","resolve","err","errorObj","code","singularName","errors","catch","getSamplePrompts","dataEnhancementController","FormEnhanceAction","status","openEntityMode","largeLayout","useLargeLayout","storageKey","createLocalStorageKey","loading","setLoading","samplePrompts","setSamplePrompts","setInstructions","loadingPrompts","updateSuggestedPrompts","getPromptsForExistingEntities","recentPromptsFromStorage","getRecentPromptsFromStorage","recentPrompts","useDeferredValue","addRecentPrompt","finally","submit","jsxs","Menu","Button","jsx","AIIcon","CircularProgress","MenuItem","Separator","samplePrompt","index","IconButton","preventDefault","stopPropagation","removeRecentPrompt","XIcon","iconSize","smallest","cls","TextareaAutosize","focusedDisabled","event","shiftKey","target","small","SendIcon","multilineProperties","markdown","multilinePrompt","Math","floor","random","push","statusString","stripCollectionPath","item","localStorage","getItem","setItem","DEFAULT_API_KEY","useDataEnhancementPlugin","$","_c","t0","t1","for","slot","Component","order","t2","t3","slots","providers","scope"],"mappings":";;;;AAAO,WAASA,oBAAsCC,QAAWC,OAAO,IAAY;AAChF,QAAI,CAACD,OAAQ,QAAO,CAAA;AACpB,WAAOE,OAAOC,QAAQH,MAAM,EAAEI,QAAQ,CAAC,CAACC,KAAKC,KAAK,MAAM;AACpD,YAAMC,cAAcN,OAAO,GAAGA,IAAI,IAAII,GAAG,KAAKA;AAC9C,UAAI,OAAOC,UAAU,UAAU;AAC3B,eAAOP,oBAAoBO,OAAOC,WAAW;AAAA,MACjD,OAAO;AACH,eAAO;AAAA,UAAE,CAACA,WAAW,GAAGD;AAAAA,QAAAA;AAAAA,MAC5B;AAAA,IACJ,CAAC,EAAEE,OAAO,CAACC,KAAKC,UAAU;AAAA,MAAE,GAAGD;AAAAA,MACnC,GAAGC;AAAAA,IAAAA,IAAS,CAAA,CAAE;AAAA,EACd;ACCA,QAAMC,iBAAiB;AAEvB,iBAAsBC,qBAAwDC,OAkB3E;AAEC,UAAMC,aAAaf,oBAAoBc,MAAMb,MAAM;AAEnD,UAAMe,aAAaF,MAAME;AAEzB,UAAMC,cAA2B;AAAA,MAC7BC,UAAUJ,MAAMI;AAAAA,MAChBjB,QAAQc;AAAAA,IAAAA;AAGZ,UAAMI,UAAkC;AAAA,MACpCF;AAAAA,MACAD;AAAAA,MACAI,YAAYN,MAAMM;AAAAA,MAClBC,mBAAmBP,MAAMO;AAAAA,MACzBC,aAAaR,MAAMQ;AAAAA,MACnBC,sBAAsBT,MAAMS;AAAAA,MAC5BC,cAAcV,MAAMU;AAAAA,IAAAA;AAGxBC,YAAQC,MAAM,wBAAwBP,OAAO;AAE7C,WAAOQ,OAAOb,MAAMc,QAAQhB,kBAAkB,yBAC1C;AAAA;AAAA,MAEIiB,QAAQ;AAAA,MACRC,SAAS;AAAA,QACL,gBAAgB;AAAA,QAChBC,eAAe,SAASjB,MAAMkB,aAAa;AAAA,QAC3C,gBAAgB,SAASlB,MAAMmB,MAAM;AAAA;AAAA,MAAA;AAAA,MAGzCC,MAAMC,KAAKC,UAAUjB,OAAO;AAAA,IAAA,CAC/B,EACAkB,KAAK,OAAOC,QAAQ;AACjB,UAAI,CAACA,IAAIC,IAAI;AACTd,gBAAQe,MAAM,8BAA8BF,GAAG;AAC/C,cAAM,MAAMA,IAAIG,KAAAA;AAAAA,MACpB;AACA,YAAMC,SAASJ,IAAIJ,MAAMS,UAAAA;AACzB,UAAI,CAACD,QAAQ;AACT,cAAM,IAAIE,MAAM,WAAW;AAAA,MAC/B;AAEA,uBAAiBC,SAASC,WAAWJ,MAAM,GAAG;AAC1C,cAAMK,MAAM,IAAIC,cAAcC,OAAOJ,KAAK;AAC1C,YAAI;AACAE,cAAIG,MAAM,MAAM,EAAEC,QAASC,CAAAA,MAAM;AAC7B,gBAAIA,KAAKA,EAAEC,SAAS,GAAG;AACnB,oBAAMC,OAAOnB,KAAKoB,MAAMH,EAAEI,MAAM;AAChC,kBAAIF,KAAKG,SAAS,mBACd3C,OAAM4C,cAAcJ,KAAKA,KAAKhC,aAAagC,KAAKA,KAAKK,YAAY;AAAA,uBAC5DL,KAAKG,SAAS,aACnB3C,OAAM8C,SAASN,KAAKA,IAAI;AAAA,uBACnBA,KAAKG,SAAS,SACnB3C,OAAM+C,MAAMP,KAAKA,IAAI;AAAA,YAC7B;AAAA,UACJ,CAAC;AAAA,QACL,SAASQ,GAAY;AACjBrC,kBAAQe,MAAM,OAAOO,GAAG;AACxBtB,kBAAQe,MAAM,wBAAwBsB,CAAC;AACvChD,gBAAMiD,QAAQD,aAAalB,QAAQkB,IAAI,IAAIlB,MAAMoB,OAAOF,CAAC,CAAC,CAAC;AAAA,QAC/D;AAAA,MACJ;AAAA,IAEJ,CAAC;AAAA,EAET;AAEA,WAAShB,WAAWJ,QAAqC;AACrD,WAAO;AAAA,MACH,QAAQuB,OAAOC,aAAa,IAAI;AAC5B,YAAIC,aAAa,MAAMzB,OAAO0B,KAAAA;AAC9B,eAAO,CAACD,WAAWE,MAAM;AACrB,gBAAMF,WAAW5D;AACjB4D,uBAAa,MAAMzB,OAAO0B,KAAAA;AAAAA,QAC9B;AAAA,MACJ;AAAA,IAAA;AAAA,EAER;AAEA,iBAAsBE,4BAA8CxD,OAMnC;AAE7B,WAAOa,OAAOb,MAAMc,QAAQhB,kBAAkB,8BAC1C;AAAA;AAAA,MAEIiB,QAAQ;AAAA,MACRC,SAAS;AAAA,QACL,gBAAgB;AAAA,QAChBC,eAAe,SAASjB,MAAMkB,aAAa;AAAA,QAC3C,gBAAgB,SAASlB,MAAMmB,MAAM;AAAA,MAAA;AAAA,MAEzCC,MAAMC,KAAKC,UAAU;AAAA,QACjBhB,YAAYN,MAAMM;AAAAA,QAClBmD,OAAOzD,MAAMyD,SAAS;AAAA,MAAA,CACzB;AAAA,IAAA,CACJ,EACAlC,KAAK,OAAOC,QAAQ;AACjB,YAAMgB,OAAO,MAAMhB,IAAIG,KAAAA;AACvB,UAAI,CAACH,IAAIC,IAAI;AACTd,gBAAQe,MAAM,+BAA+Bc,IAAI;AACjD,cAAMV,MAAMU,KAAKkB,OAAO;AAAA,MAC5B;AACA,aAAO;AAAA,QACHC,SAASnB,KAAKA,KAAKmB,QAAQC,IAAI,CAACZ,OAAe;AAAA,UAC3Ca,QAAQb;AAAAA,UACRL,MAAM;AAAA,QAAA,EACR;AAAA,MAAA;AAAA,IAEV,CAAC;AAAA,EAET;AAEA,iBAAsBmB,mBAAmB9D,OAMtC;AAEC,QAAI+D,SAAS;AACb,WAAOlD,OAAOb,MAAMc,QAAQhB,kBAAkB,uBAC1C;AAAA;AAAA,MAEIiB,QAAQ;AAAA,MACRC,SAAS;AAAA,QACL,gBAAgB;AAAA,QAChBC,eAAe,SAASjB,MAAMkB,aAAa;AAAA;AAAA,MAAA;AAAA,MAG/CE,MAAMC,KAAKC,UAAU;AAAA,QACjB0C,YAAYhE,MAAMgE;AAAAA,QAClBC,WAAWjE,MAAMiE;AAAAA,MAAAA,CACpB;AAAA,IAAA,CACJ,EACA1C,KAAK,OAAOC,QAAQ;AACjB,UAAI,CAACA,IAAIC,IAAI;AACTd,gBAAQe,MAAM,8BAA8BF,GAAG;AAC/C,cAAM,MAAMA,IAAIG,KAAAA;AAAAA,MACpB;AACA,YAAMC,SAASJ,IAAIJ,MAAMS,UAAAA;AACzB,UAAI,CAACD,QAAQ;AACT,cAAM,IAAIE,MAAM,WAAW;AAAA,MAC/B;AAEA,uBAAiBC,SAASC,WAAWJ,MAAM,GAAG;AAC1C,cAAMK,MAAM,IAAIC,cAAcC,OAAOJ,KAAK;AAC1CgC,kBAAU9B;AACVtB,gBAAQC,MAAM,wBAAwBqB,GAAG;AACzCjC,cAAM8C,SAASb,GAAG;AAAA,MACtB;AAAA,IAEJ,CAAC,EAAEV,KAAK,MAAM;AACVZ,cAAQC,MAAM,wBAAwBmD,MAAM;AAC5C,aAAOA;AAAAA,IACX,CAAC;AAAA,EAET;ACrMO,WAASG,wBAAwBC,YAAyC1E,OAAoC;AACjH,UAAM2E,0BAA0B,OAAOD,eAAe,YAAY,OAAO1E,UAAU,YAAY0E,WAAWE,YAAAA,EAAc3B,OAAO4B,WAAW7E,MAAM4E,YAAAA,EAAc3B,MAAM;AACpK,WAAQ,OAAOjD,UAAU,YAAY2E,0BAC/BD,WAAWI,UAAUJ,WAAWE,YAAAA,EAAc3B,KAAAA,EAAO8B,QAAQ/E,MAAM4E,YAAAA,EAAc3B,KAAAA,CAAM,IAAIjD,MAAMiD,KAAAA,EAAOH,MAAM,IAC9GkC;AAAAA,EACV;ACCO,WAASC,wBAAuDxE,YAAwBf,QAAWC,OAAO,IAAmC;AAChJ,QAAI,CAACc,WAAY,QAAO,CAAA;AACxB,WAAOb,OAAOC,QAAQY,UAAU,EAC3B0D,IAAI,CAAC,CAACpE,KAAKmF,QAAQ,MAAM;AACtB,UAAIC,OAAAA,kBAAkBD,QAAQ,EAAG,QAAO,CAAA;AACxC,YAAME,UAAUzF,OAAO,GAAGA,IAAI,IAAII,GAAG,KAAKA;AAC1C,YAAMsF,cAAcC,MAAAA,eAAe5F,QAAQ0F,OAAO;AAClD,aAAOG,sBAAsBL,UAAUE,SAASC,WAAW;AAAA,IAC/D,CAAC,EACAnF,OAAO,CAACsF,GAAGC,OAAO;AAAA,MAAE,GAAGD;AAAAA,MAChC,GAAGC;AAAAA,IAAAA,IAAM,CAAA,CAAE;AAAA,EACX;AAEA,WAASC,kBAAkBR,UAAmC;AAC1D,UAAMS,UAAUC,MAAAA,WAAWV,QAAQ;AACnC,QAAI,CAACS,SAAS;AACVzE,cAAQe,MAAM,iCAAiCiD,QAAQ;AACvD,YAAM,IAAI7C,MAAM,oBAAoB;AAAA,IACxC;AACA,WAAO;AAAA,MACHwD,MAAMX,SAASW;AAAAA,MACfC,aAAaZ,SAASY;AAAAA,MACtB5C,MAAMgC,SAAShC;AAAAA,MACf6C,eAAeJ;AAAAA,MACfK,MAAM,UAAUd,YAAYA,SAASc,OAC/BC,oBAAoBf,SAASc,IAAI,IACjChB;AAAAA,MACNkB,UAAUC,QAAQjB,SAASkB,IAAIF,YAAYhB,SAASkB,IAAIC,QAAQ;AAAA,IAAA;AAAA,EAExE;AAEA,WAASd,sBAAsBL,UAAoBvF,MAAcK,OAAgD;AAC7G,QAAImF,OAAAA,kBAAkBD,QAAQ,EAAG,QAAO,CAAA;AACxC,QAAIA,SAAShC,SAAS,SAAS;AAE3B,UAAIgC,SAASoB,MAAM,CAACC,MAAMC,QAAQtB,SAASoB,EAAE,KAAK,CAACnB,OAAAA,kBAAkBD,SAASoB,EAAE,GAAG;AAC/E,cAAMG,sBAAqC;AAAA,UACvCZ,MAAMX,SAASW;AAAAA,UACfC,aAAaZ,SAASY;AAAAA,UACtB5C,MAAMgC,SAAShC;AAAAA,UACf6C,eAAe;AAAA,UACfG,UAAUC,QAAQjB,SAASkB,IAAIF,YAAYhB,SAASkB,IAAIC,QAAQ;AAAA,UAChEC,IAAIZ,kBAAkBR,SAASoB,EAAc;AAAA,QAAA;AAGjD,cAAMhC,SAAS;AAAA,UAAE,CAAC3E,IAAI,GAAG8G;AAAAA,QAAAA;AAoBzB,eAAOnC;AAAAA,MACX,WAAWY,SAASwB,OAAO;AAEvB,cAAMD,sBAAqC;AAAA,UACvCZ,MAAMX,SAASW;AAAAA,UACfC,aAAaZ,SAASY;AAAAA,UACtB5C,MAAMgC,SAAShC;AAAAA,UACf6C,eAAe;AAAA,UACfG,UAAUC,QAAQjB,SAASkB,IAAIF,YAAYhB,SAASkB,IAAIC,QAAQ;AAAA,UAChEK,OAAO;AAAA,YACHC,WAAWzB,SAASwB,MAAMC;AAAAA,YAC1BC,YAAY1B,SAASwB,MAAME;AAAAA,YAC3BnG,YAAYb,OAAOC,QAAQqF,SAASwB,MAAMjG,UAAU,EAC/C0D,IAAI,CAAC,CAACpE,KAAK8G,IAAI,OAAO;AAAA,cAAE,CAAC9G,GAAG,GAAG2F,kBAAkBmB,IAAI;AAAA,YAAA,EAAI,EACzD3G,OAAO,CAACsF,GAAGC,OAAO;AAAA,cAAE,GAAGD;AAAAA,cAChD,GAAGC;AAAAA,YAAAA,IAAM,CAAA,CAAE;AAAA,UAAA;AAAA,QACK;AAGJ,YAAI,CAACc,MAAMC,QAAQxG,KAAK,GAAG;AACvB,iBAAO;AAAA,YAAE,CAACL,IAAI,GAAG8G;AAAAA,UAAAA;AAAAA,QACrB;AAEA,eAAOzG,MAAMmE,IAAI,CAAC2C,GAAGC,MAAM;AACvB,cAAID,KAAK,KAAM,QAAO,CAAA;AACtB,gBAAME,UAAU9B,SAASwB,MAAOC,aAAa;AAC7C,gBAAMM,YAAYH,EAAEE,OAAO;AAC3B,gBAAME,WAAWhC,SAASwB,MAAOE,cAAc;AAC/C,gBAAMO,aAAaL,EAAEI,QAAQ;AAC7B,gBAAME,gBAAgBlC,SAASwB,MAAOjG,WAAWwG,SAAS;AAC1D,cAAIG,kBAAkBpC,QAAW;AAC7B9D,oBAAQe,MAAM,8BAA8BgF,SAAS,IAAI/B,SAASwB,MAAOjG,UAAU;AACnF,mBAAO,CAAA;AAAA,UACX;AACA,gBAAM4G,qBAAqB9B,sBAAsB6B,eAAe,GAAGzH,IAAI,IAAIoH,CAAC,IAAIG,QAAQ,IAAIC,UAAU;AACtG,iBAAO;AAAA,YACH,CAAC,GAAGxH,IAAI,IAAIoH,CAAC,IAAIC,OAAO,EAAE,GAAGC;AAAAA,YAC7B,GAAGI;AAAAA,UAAAA;AAAAA,QAEX,CAAC,EAAEnH,OAAO,CAACsF,GAAGC,OAAO;AAAA,UAAE,GAAGD;AAAAA,UACtC,GAAGC;AAAAA,QAAAA,IAAM;AAAA,UAAE,CAAC9F,IAAI,GAAG8G;AAAAA,QAAAA,CAAqB;AAAA,MAChC;AAAA,IACJ,WAAWvB,SAAShC,SAAS,OAAO;AAChC,UAAIgC,SAASzE,YAAY;AACrB,cAAM6G,gBAA+C1H,OAAOC,QAAQqF,SAASzE,UAAU,EAClF0D,IAAI,CAAC,CAACpE,KAAKqH,aAAa,MAAM;AAC3B,gBAAMG,aAAavH,SAAS,OAAOA,UAAU,WAAYA,MAAkCD,GAAG,IAAIiF;AAClG,iBAAOO,sBAAsB6B,eAAerH,KAAKwH,UAAU;AAAA,QAC/D,CAAC,EACApD,IAAIqD,CAAAA,MAAKC,iBAAiBD,GAAG7H,IAAI,CAAC,EAClCO,OAAO,CAACsF,GAAGC,OAAO;AAAA,UAAE,GAAGD;AAAAA,UACxC,GAAGC;AAAAA,QAAAA,IAAM,CAAA,CAAE;AAEC,YAAI7F,OAAO8H,KAAKJ,aAAa,EAAExE,WAAW,UAAU,CAAA;AACpD,cAAM6E,oBAAmC;AAAA,UACrC9B,MAAMX,SAASW;AAAAA,UACfC,aAAaZ,SAASY;AAAAA,UACtB5C,MAAMgC,SAAShC;AAAAA,UACf6C,eAAe;AAAA,UACfG,UAAUC,QAAQjB,SAASkB,IAAIF,YAAYhB,SAASkB,IAAIC,QAAQ;AAAA,QAAA;AAEpE,eAAO;AAAA,UACH,CAAC1G,IAAI,GAAGgI;AAAAA,UACR,GAAGL;AAAAA,QAAAA;AAAAA,MAEX;AAAA,IACJ,OAAO;AACH,YAAM3B,UAAUC,MAAAA,WAAWV,QAAQ;AACnC,UAAI,CAACS,SAAS;AACVzE,gBAAQ0G,KAAK,iCAAiCjI,IAAI,cAAcuF,SAAShC,IAAI,EAAE;AAC/E,eAAO,CAAA;AAAA,MACX;AACA,aAAO;AAAA,QACH,CAACvD,IAAI,GAAG+F,kBAAkBR,QAAQ;AAAA,MAAA;AAAA,IAE1C;AACA,WAAO,CAAA;AAAA,EACX;AAGA,WAASuC,iBAAiBI,KAAoClI,OAAO,IAAmC;AACpG,WAAOC,OAAOC,QAAQgI,GAAG,EACpB1D,IAAI,CAAC,CAACpE,KAAKC,KAAK,MAAM;AACnB,YAAMoF,UAAUzF,OAAO,GAAGA,IAAI,IAAII,GAAG,KAAKA;AAC1C,aAAO;AAAA,QAAE,CAACqF,OAAO,GAAGpF;AAAAA,MAAAA;AAAAA,IACxB,CAAC,EACAE,OAAO,CAACsF,GAAGC,OAAO;AAAA,MAAE,GAAGD;AAAAA,MAChC,GAAGC;AAAAA,IAAAA,IAAM,CAAA,CAAE;AAAA,EACX;AAEA,WAASQ,oBAAoB6B,YAAkC;AAC3D,QAAIvB,MAAMC,QAAQsB,UAAU,EACxB,QAAOA,WAAW3D,IAAI2C,CAAAA,MAAKrD,OAAOqD,EAAEiB,EAAE,CAAC;AAC3C,QAAI,OAAOD,eAAe,SACtB,QAAOlI,OAAO8H,KAAKI,UAAU;AACjC,UAAMzF,MAAM,yCAAyC;AAAA,EACzD;ACpKO,WAAS2F,sBAAsB;AAAA,IAAEC;AAAAA,EAAuD,GAAuB;AAClH,UAAMC,eAAe,OAAO3D,YAAoBC,WAAmBnB,aAAsC;AACrG,UAAI,CAAC4E,cAAc;AACf,cAAM,IAAI5F,MAAM,4BAA4B;AAAA,MAChD;AACA,YAAMZ,gBAAgB,MAAMwG,aAAAA;AAC5B,aAAO5D,mBAAmB;AAAA,QACtB5C;AAAAA,QACA8C;AAAAA,QACAC;AAAAA,QACAnB;AAAAA,MAAAA,CACH;AAAA,IACL;AAEA,WAAO;AAAA,MACH6E;AAAAA,IAAAA;AAAAA,EAER;ACCA,QAAMC,mCAAmCC,MAAMC,cAAyC,IAAkC;AAcnH,QAAMC,+BAA+BA,MAAA;AAAA,WAAiCC,MAAAA,WAAAJ,gCAA2C;AAAA,EAAC;AAEzH,WAASK,mBAAmB/H,YAA2CM,aAAqB;AACxF,QAAIA,eAAeN,YAAY;AAC3B,aAAOA,WAAWM,WAAW;AAAA,IACjC,OAAO;AAEH,YAAM4B,QAAQ5B,YAAY4B,MAAM,GAAG;AACnC,UAAIA,MAAMG,WAAW,GAAG;AACpB,eAAOkC;AAAAA,MACX;AACA,YAAMyD,YAAY9F,MAAM+F,MAAM,GAAG/F,MAAMG,SAAS,CAAC,EAAE6F,KAAK,GAAG;AAC3D,aAAOH,mBAAmB/H,YAAYgI,SAAS;AAAA,IAEnD;AAAA,EACJ;AAEO,WAASG,kCAAkC;AAAA,IAC9ClH;AAAAA,IACAmH;AAAAA,IACAC;AAAAA,IACAzH;AAAAA,IACA1B;AAAAA,IACAoJ;AAAAA,IACAC;AAAAA,EAC+E,GAAG;AAElF,UAAM,CAACC,SAASC,UAAU,IAAIC,MAAAA,SAAS,KAAK;AAC5C,UAAM,CAACC,aAAaC,cAAc,IAAIF,MAAAA,SAA0C,CAAA,CAAE;AAClF,UAAM,CAACG,oBAAoBC,qBAAqB,IAAIJ,MAAAA,SAAmB,CAAA,CAAE;AAEzE,UAAMK,sBAAsBC,MAAAA,OAAO,KAAK;AAExC,UAAMC,iBAAiBC,KAAAA,kBAAAA;AACvB,UAAMC,qBAAqBC,KAAAA,sBAAAA;AAG3B,UAAMpJ,aAAaqJ,MAAAA,QAAQ,MAAM7E,wBAAwB8D,WAAWtI,YAAYuI,aAAatJ,UAAU,CAAA,CAAE,GAAG,CAACsJ,aAAatJ,MAAM,CAAC;AAEjI,UAAMqK,YAAY3B,MAAMqB,OAAOT,aAAatJ,UAAU,CAAA,CAAE;AACxDsK,UAAAA,UAAU,MAAM;AACZ,UAAI,CAACR,oBAAoBS,mBACXA,UAAUjB,aAAatJ,UAAU,CAAA;AAAA,IACnD,GAAG,CAACsJ,aAAatJ,MAAM,CAAC;AAExB,UAAMwK,8BAA8B;AAEpC,UAAMC,eAAeC,MAAAA,YAAY,YAAY;AACzC,UAAI,CAACvB,iBAAkB;AACvB,YAAMwB,SAASxB,iBAAiB;AAAA,QAC5BlJ;AAAAA,QACAoJ;AAAAA,MAAAA,CACH;AACD,UAAIsB,QAAQ;AACRnB,mBAAW,IAAI;AAAA,MACnB;AAAA,IACJ,GAAG,CAACH,YAAYF,kBAAkBlJ,IAAI,CAAC;AAEvCqK,UAAAA,UAAU,MAAM;AACZ,UAAI,CAACnB,kBAAkB;AACnBK,mBAAW,IAAI;AAAA,MACnB,OAAO;AACHiB,qBAAAA;AAAAA,MACJ;AAAA,IAEJ,GAAG,CAACtB,kBAAkBsB,YAAY,CAAC;AAGnC,UAAMG,gBAAgBC,MAAAA,iBAAAA;AAEtB,UAAMC,kBAAkBJ,kBAAY,CAACrJ,gBAAwB;AACzDsI,qBAAgBoB,CAAAA,SAAS;AAErB,cAAM;AAAA,UACF,CAAC1J,WAAW,GAAG2J;AAAAA,UACf,GAAGC;AAAAA,QAAAA,IACHF;AACJ,eAAOE;AAAAA,MACX,CAAC;AAAA,IACL,GAAG,CAAA,CAAE;AAEL,UAAMC,mBAAmBR,MAAAA,YAAY,CAACrJ,eAAqB8J,UAAkB;AAEzE,YAAM3F,WAAWsD,mBAAmB/H,YAAYM,aAAW;AAC3D,UAAI8J,UAAU,QAAQ3F,UAAUgB,UAAU;AACtC;AAAA,MACJ;AAGA,YAAMlG,QAAQsF,MAAAA,eAAeyE,UAAUE,SAASlJ,aAAW;AAE3D,YAAM+J,eAAe9K,QAASA,QAAmB,KAAK;AACtD,YAAM+K,eAAeD,eAAeD;AAEpCd,gBAAUE,UAAU;AAAA,QAChB,GAAGF,UAAUE;AAAAA,QACb,CAAClJ,aAAW,GAAGgK;AAAAA,MAAAA;AAEnB/B,mBAAagC,cAAcjK,eAAagK,cAAc,KAAK;AAC3D1B,qBAAeoB,CAAAA,YAAS;AAAA,QACpB,GAAGA;AAAAA,QACH,CAAC1J,aAAW,IAAI0J,OAAK1J,aAAW,KAAK,MAAM8J;AAAAA,MAAAA,EAC7C;AAAA,IACN,GAAG,CAACpK,YAAYuI,WAAW,CAAC;AAE5B,UAAMiC,wBAAwBb,MAAAA,YAAY,CAACc,eAAuBC,eAAgDC,kBAA2B;AAEzI7B,4BAAuBkB,CAAAA,WAAS;AAC5B,eAAOA,OAAKY,OAAOC,CAAAA,MAAK,CAAC1L,OAAO8H,KAAKyD,aAAa,EAAEI,SAASD,CAAC,CAAC;AAAA,MACnE,CAAC;AAED1L,aAAOC,QAAQsL,aAAa,EAAEvI,QAAQ,CAAC,CAAC7B,eAAa2D,UAAU,MAAM;AAEjE,cAAM1E,UAAQsF,MAAAA,eAAe4F,eAAenK,aAAW;AACvD,cAAMmE,aAAWsD,mBAAmB/H,YAAYM,aAAW;AAE3D,YAAI,CAACmE,cAAYR,eAAe,QAAQQ,YAAUgB,UAAU;AACxD;AAAA,QACJ;AAEA,YAAI,OAAOxB,eAAe,UAAU;AAChCsE,uBAAagC,cAAcjK,eAAa2D,UAAU;AAClD;AAAA,QACJ;AAEA,YAAI0G,eAAe;AACfpC,uBAAagC,cAAcjK,eAAa2D,UAAU;AAClD;AAAA,QACJ;AAEA,cAAM8G,kBAAkB/G,wBAAwBC,YAAY1E,OAAK;AAEjE,cAAM8K,iBAAe9K,UAASA,UAAmB,KAAK;AACtD,YAAIwL,iBAAiB;AACjBxC,uBAAagC,cAAcjK,eAAa2D,UAAU;AAAA,QACtD,OAAO;AACH,gBAAM+G,YAAYvG,YAAUa,kBAAkB,eAAeb,YAAUa,kBAAkB;AACzF,gBAAM2F,eAAeZ,eAAaa,QAAAA;AAClC,cAAIF,cAAcC,aAAaE,SAAS,GAAG,KAAKF,aAAaE,SAAS,GAAG,KAAKF,aAAaE,SAAS,GAAG,KAAKF,aAAaE,SAAS,GAAG,IAAI;AACrI5C,yBAAagC,cAAcjK,eAAa2K,eAAe,SAAUhH,WAAsBmH,WAAW;AAAA,UACtG,OAAO;AACH7C,yBAAagC,cAAcjK,eAAa2K,gBAAgBA,aAAa5I,SAAS,IAAI,MAAM,MAAO4B,UAAqB;AAAA,UACxH;AAAA,QACJ;AAAA,MACJ,CAAC;AAED2E,qBAAeoB,CAAAA,YAAS;AAAA,QACpB,GAAGA;AAAAA,QACH,GAAG7K,OAAO8H,KAAKyD,aAAa,EACvBjL,OAAO,CAACC,KAAKJ,QAAQ;AAClB,gBAAMC,UAAQsF,MAAAA,eAAe0D,aAAatJ,QAAQK,GAAG;AACrD,gBAAM2E,eAAayG,cAAcpL,GAAG;AACpC,iBAAO;AAAA,YACH,GAAGI;AAAAA,YACH,CAACJ,GAAG,GAAG0E,wBAAwBC,cAAY1E,OAAK,KAAK0E;AAAAA,UAAAA;AAAAA,QAE7D,GAAG,CAAA,CAAE;AAAA,MAAA,EACX;AAAA,IACN,GAAG,CAACjE,YAAYuI,WAAW,CAAC;AAE5B,UAAM8C,oCAAoC1B,kBAAY,CAAC2B,cAAuB;AAC1EnC,yBAAmBoC,KAAK;AAAA,QACpB9I,MAAM;AAAA,QACNe,SAAS;AAAA,QACTgI,kBAAkB;AAAA,MAAA,CACrB;AAAA,IACL,GAAG,CAACrC,kBAAkB,CAAC;AAEvB,UAAMsC,qBAAqBlE,sBAAsB;AAAA,MAAEC,cAAcyB,eAAezB;AAAAA,IAAAA,CAAc;AAE9F,UAAMkE,sBAAsB/B,MAAAA,YAAY,MAAM;AAC1Cf,qBAAe,CAAA,CAAE;AAAA,IACrB,GAAG,CAAA,CAAE;AAEL,UAAM+C,UAAUhC,kBAAY,OAAO7J,UAAsF;AAErH,UAAI,CAACmJ,eAAe2C,MAAM;AACtBzC,2BAAmBoC,KAAK;AAAA,UACpB9I,MAAM;AAAA,UACNe,SAAS;AAAA,QAAA,CACZ;AACD,eAAOqI,QAAQC,OAAO,IAAIlK,MAAM,eAAe,CAAC;AAAA,MACpD;AAEA,YAAMmK,eAAelC,cAAcmC,yBAAyB9M,IAAI;AAChE,YAAM8B,gBAAgB,MAAMiI,eAAezB,aAAAA;AAE3C,UAAI1H,MAAMQ,aAAa;AACnByJ,wBAAgBjK,MAAMQ,WAAW;AAAA,MACrC,OAAO;AACHoL,4BAAAA;AAAAA,MACJ;AAEA5C,4BAAuBkB,CAAAA,WAAS,CAAC,GAAGA,QAAM,GAAIlK,MAAMQ,cAAc,CAACR,MAAMQ,WAAW,IAAInB,OAAO8H,KAAKjH,UAAU,CAAE,CAAC;AACjH+I,0BAAoBS,UAAU;AAE9B,YAAMiB,kBAAgBnB,UAAUE,WAAW,CAAA;AAE3C,aAAO,IAAIqC,QAAQ,CAACI,SAASH,WAAW;AACpC,iBAAS/I,QAAQD,GAAY;AACzBgG,gCAAsB,CAAA,CAAE;AACxB,gBAAMoD,MAAMpJ,aAAalB,QAAQkB,IAAI,OAAOA,MAAM,YAAYA,MAAM,OAAOA,IAAI,IAAIlB,MAAMoB,OAAOF,CAAC,CAAC;AAClG,gBAAMqJ,WAAWD;AACjB,cAAIC,SAASC,SAAS,oBAAoB;AACtC,kBAAM9J,OAAO6J,SAAS7J;AACtB,kBAAMgJ,cAAYhJ,MAAMgJ;AACxBD,8CAAkCC,WAAS;AAAA,UAC/C,OAAO;AACH7K,oBAAQe,MAAM,iBAAiBsB,CAAC;AAAA,UACpC;AACAgJ,iBAAOhJ,CAAC;AACRiG,8BAAoBS,UAAU;AAAA,QAClC;AAEA,YAAI;AACA3J,+BAAqB;AAAA,YACjB,GAAGC;AAAAA,YACHc;AAAAA,YACAK;AAAAA,YACAjB;AAAAA,YACAd,MAAM6M;AAAAA,YACN3L,YAAYkI,WAAW+D,gBAAgB/D,WAAWlD;AAAAA,YAClD/E,mBAAmBiI,WAAWjD;AAAAA,YAE9BrE;AAAAA,YACA4B,UAAW+F,CAAAA,kBAAgB;AACvBlI,sBAAQC,MAAM,eAAeiI,aAAW;AACxC6B,oCAAsBC,iBAAe9B,eAAa7I,MAAM6K,iBAAiB,KAAK;AAAA,YAClF;AAAA,YACAjI,eAAeA,CAACpC,eAAqBqC,iBAAyB;AAE1DwH,+BAAiB7J,eAAaqC,YAAY;AAAA,YAC9C;AAAA,YACAI;AAAAA,YACAF,OAAQgB,CAAAA,WAAW;AACfpD,sBAAQC,MAAM,YAAYmD,MAAM;AAChC,kBAAIA,OAAOyI,QAAQ;AACfzI,uBAAOyI,OAAOnK,QAASX,CAAAA,UAAU;AAC7B2H,qCAAmBoC,KAAK;AAAA,oBACpB9I,MAAM;AAAA,oBACNe,SAAShC;AAAAA,kBAAAA,CACZ;AAAA,gBACL,CAAC;AAAA,cACL;AACA,kBAAIrC,OAAO8H,KAAKpD,OAAO8E,WAAW,EAAEtG,WAAW,GAAG;AAC9C8G,mCAAmBoC,KAAK;AAAA,kBACpB9I,MAAM;AAAA,kBACN+I,kBAAkB;AAAA,kBAClBhI,SAAS;AAAA,gBAAA,CACZ;AAAA,cACL;AACAsF,oCAAsB,CAAA,CAAE;AACxBmD,sBAAQpI,MAAM;AACdkF,kCAAoBS,UAAU;AAAA,YAClC;AAAA,UAAA,CACH,EAAE+C,MAAMxJ,OAAO;AAAA,QACpB,SAASD,KAAY;AACjBC,kBAAQD,GAAC;AAAA,QACb;AAAA,MACJ,CAAC;AAAA,IACL,GAAG,CACCmG,gBAAgBY,eAAe3K,MAAM6K,iBAAiB2B,qBACtD1L,YAAYY,MAAMK,QAAQqH,YAAYkC,uBAAuBL,kBAAkBkB,mCAAmClC,kBAAkB,CACvI;AAED,UAAMqD,mBAAmB7C,MAAAA,YAAY,OAAOvJ,YAAoBmD,UAAmB;AAC/E,YAAMvC,kBAAgB,MAAMiI,eAAezB,aAAAA;AAC3C,aAAOlE,4BAA4B;AAAA,QAC/B1C;AAAAA,QACAR;AAAAA,QACAY,eAAAA;AAAAA,QACAC;AAAAA,QACAsC;AAAAA,MAAAA,CACH;AAAA,IACL,GAAG,CAACtC,QAAQgI,eAAezB,cAAc5G,IAAI,CAAC;AAE9C,UAAM6L,4BAAuDpD,MAAAA,QAAQ,OAAO;AAAA,MACxEb;AAAAA,MACAG;AAAAA,MACAoB;AAAAA,MACA4B;AAAAA,MACAlC;AAAAA,MACAiC;AAAAA,MACAc;AAAAA,MACA3D;AAAAA,MACA4C;AAAAA,IAAAA,IACA,CACAjD,SACAG,aACAoB,iBACA4B,SACAlC,6BACAiC,qBACAc,kBACA3D,oBACA4C,kBAAkB,CACrB;AAED,0CACK,iCAAiC,UAAjC,EACG,OAAOgB,2BACNpE,UACL;AAAA,EAER;ACzTO,WAASqE,kBAAkB;AAAA,IAC9BxM;AAAAA,IACAhB;AAAAA,IACAyN;AAAAA,IACArE;AAAAA,IACAC;AAAAA,IACAqE;AAAAA,EACmB,GAAG;AAEtB,UAAMC,cAAcC,KAAAA,eAAAA;AAEpB,UAAMC,aAAaC,sBAAsB9N,MAAMyN,MAAM;AAErD,UAAM,CAACM,SAASC,UAAU,IAAIvF,MAAMe,SAAS,KAAK;AAClD,UAAM+D,4BAA4B5E,6BAAAA;AAElC,UAAM,CAACsF,eAAeC,gBAAgB,IAAIzF,MAAMe,SAAqCnE,MAAS;AAC9F,UAAM,CAAC/D,cAAc6M,eAAe,IAAI1F,MAAMe,SAAiB,EAAE;AAEjE,UAAM8D,mBAAmBC,2BAA2BD;AAEpD,UAAMc,iBAAiBtE,MAAAA,OAAO,KAAK;AACnC,UAAMuE,yBAAyB5D,MAAAA,YAAY,eAAe4D,wBAAuB/M,gBAAuB;AACpG,UAAI,CAACgM,iBAAkB;AACvB,UAAIc,eAAe9D,QAAS;AAC5B8D,qBAAe9D,UAAU;AACzB,YAAM/F,UAAUkJ,WAAW,SACpB,MAAMH,iBAAiBlE,WAAW+D,gBAAgB/D,WAAWlD,MAAM5E,cAAY,GAAGiD,UACnF+J,8BAA8BlF,WAAWtI,UAAU;AAEzD,YAAMyN,2BAA2BC,4BAA4BX,UAAU;AACvE,YAAMY,gBAAgBF,yBAAyB/J,IAAIC,CAAAA,WAAUA,OAAOA,MAAM;AAC1EyJ,uBAAiB,CAAC,GAAGK,0BAA0B,GAAGhK,QAAQmH,OAAOC,OAAK,CAAC8C,cAAc7C,SAASD,EAAElH,MAAM,CAAC,CAAC,EAAEsE,MAAM,GAAG,CAAC,CAAC;AACrHqF,qBAAe9D,UAAU;AAAA,IAC7B,GACI,CAAClB,WAAWlD,MAAMkD,WAAW+D,cAAcG,kBAAkBG,MAAM,CAAC;AAEjDiB,UAAAA,iBAAiBrF,aAAatJ,MAAM;AAG3DsK,UAAAA,UAAU,MAAM;AACZ,UAAI,CAACkD,0BAA2B;AAChC,UAAI,CAACU,eAAe;AAChBC,yBAAiBM,4BAA4BX,UAAU,CAAC;AACxDQ,+BAAAA,EAAyBlM,KAAAA;AAAAA,MAC7B;AAAA,IACJ,GAAG,CAACoL,2BAA2BU,eAAeJ,YAAYQ,wBAAwB/M,cAAcmM,MAAM,CAAC;AAEvGpD,UAAAA,UAAU,MAAM;AACZ,UAAI,CAACkD,0BAA2B;AAChCc,6BAAAA,EAAyBlM,KAAAA;AAAAA,IAC7B,GAAG,CAACoL,2BAA2BE,MAAM,CAAC;AAEtC,UAAMhB,UAAUA,CAAChI,aAAoB;AACjC,UAAI,CAAC8I,6BAA6B,CAAClE,aAAatJ,OAAQ;AACxDiO,iBAAW,IAAI;AACf,UAAIvJ,UAAQ;AACRkK,wBAAgBd,YAAYpJ,QAAM;AAClCyJ,yBAAiB,CAAC;AAAA,UACdzJ,QAAAA;AAAAA,UACAlB,MAAM;AAAA,QAAA,GACP,IAAI0K,iBAAiB,CAAA,GAAIlF,MAAM,GAAG,CAAC,CAAC,CAAC;AAAA,MAC5C;AACA,aAAOwE,0BAA0Bd,QAAQ;AAAA,QACrCzL;AAAAA,QACAjB,QAAQsJ,YAAatJ;AAAAA,QACrBuB,cAAcmD;AAAAA,QACdgH,eAAe;AAAA,MAAA,CAClB,EAAEmD,QAAQ,MAAM;AACbZ,mBAAW,KAAK;AAAA,MACpB,CAAC;AAAA,IACL;AAEA,QAAI,CAACT,2BAA2BjE,QAC5B,QAAO;AAEX,UAAMG,cAAc8D,0BAA0B9D;AACvBxJ,WAAOF,OAAO0J,WAAW,EAAEiC,OAAOlF,OAAO,EAAErD,SAAS;KAGzC8K,iBAAiB,CAAA,GAAI9K,SAAS,KAAK7B,aAAa6B,WAAW;AAI7F,aAAS0L,SAAS;AACdpC,cAAQnL,YAAY;AAAA,IACxB;AAEA,WACIwN,gCAACC,GAAAA,QACG,OAAO,OACP,YAAY,GACZ,WAAW,iBACX,SAASD,2BAAAA,KAACE,GAAAA,QAAA,EAAO,SAAS,UACtB,OAAO,WACP,WAAWrB,eAAeD,mBAAmB,eAC7C,MAAM,SACN,UAAUK,SACT,UAAA;AAAA,MAAA,CAACA,WAAWkB,2BAAAA,IAACC,KAAAA,QAAA,EAAO,MAAM,QAAA,CAAQ;AAAA,MAClCnB,WAAWkB,2BAAAA,IAACE,GAAAA,kBAAA,EAAiB,MAAM,QAAA,CAAQ;AAAA,MAAE;AAAA,IAAA,EAAA,CAElD,GAEA,UAAA;AAAA,MAAAL,2BAAAA,KAACM,GAAAA,UAAA,EAAS,WAAW,QACjB,SAAS,MAAM;AACX3C,gBAAAA;AAAAA,MACJ,GACA,UAAA;AAAA,QAAAwC,2BAAAA,IAACC,KAAAA,QAAA,EAAO,MAAM,QAAA,CAAQ;AAAA,QAAA;AAAA,MAAA,GAE1B;AAAA,MAEAD,2BAAAA,IAACI,GAAAA,WAAA,EAAU,aAAa,cAAc,WAAW,QAAO;AAAA,MAEvDpB,eAAezJ,IAAI,CAAC8K,cAAcC,UAAU;AACzC,eAAOT,gCAACM,GAAAA,UAAA,EAEJ,SAAS,MAAM;AACXjB,0BAAgBmB,aAAa7K,MAAM;AACnCgI,kBAAQ6C,aAAa7K,MAAM;AAAA,QAC/B,GAEA,UAAA;AAAA,UAAAwK,2BAAAA,IAAC,OAAA,EAAI,WAAW,+DACXK,UAAAA,aAAa7K,QAClB;AAAA,UAEC6K,aAAa/L,SAAS,YAAY0L,2BAAAA,IAACO,GAAAA,YAAA,EAChC,SAAU5L,CAAAA,MAAM;AACZA,cAAE6L,eAAAA;AACF7L,cAAE8L,gBAAAA;AACFC,+BAAmB9B,YAAYyB,aAAa7K,MAAM;AAClDyJ,8BAAkBD,iBAAiB,CAAA,GAAIvC,OAAOC,SAAKA,IAAElH,WAAW6K,aAAa7K,MAAM,CAAC;AAAA,UACxF,GACA,MAAM,YAEN,UAAAwK,2BAAAA,IAACW,YAAM,MAAMC,GAAAA,SAASC,UAAS,EAAA,CACnC;AAAA,QAAA,EAAA,GApBKP,QAAQ,MAAMD,aAAa7K,MAsBpC;AAAA,MACJ,CAAC;AAAA,MAEDwK,2BAAAA,IAACI,GAAAA,WAAA,EAAU,aAAa,aAAA,CAAa;AAAA,MAErCP,2BAAAA,KAAC,OAAA,EACG,WAAWiB,GAAAA,IACP,mFACJ,GAEA,UAAA;AAAA,QAAAd,2BAAAA,IAACe,GAAAA,kBAAA,EACG,WAAWD,GAAAA,IAAI,6HAA6HE,GAAAA,eAAe,GAC3J,OAAO3O,cACP,WAAWmM,WAAW,OACtB,UAAUM,SACV,SAAUmC,CAAAA,UAAU;AAChBA,gBAAMR,gBAAAA;AAAAA,QACV,GACA,aAAa,8BACb,WAAY9L,CAAAA,QAAM;AACdA,cAAE8L,gBAAAA;AACF,cAAI9L,IAAExD,QAAQ,WAAW,CAACwD,IAAEuM,UAAU;AAClCvM,gBAAE6L,eAAAA;AACFZ,mBAAAA;AAAAA,UACJ;AAAA,QAEJ,GACA,UAAWjL,CAAAA,QAAM;AACbuK,0BAAgBvK,IAAEwM,OAAO/P,KAAK;AAAA,QAClC,GAAE;AAAA,QAGN4O,2BAAAA,IAACO,GAAAA,YAAA,EACG,MAAM,SACN,SAAS,MAAM;AACXrB,0BAAgB,EAAE;AAAA,QACtB,GACA,OAAO,CAAC7M,eAAe,YAAY+D,QACnC,UAAU0I,WAAW,CAACzM,cACtB,UAAA2N,2BAAAA,IAACW,UAAA,EAAM,MAAMC,YAASQ,OAAM,GAChC;AAAA,wCAECb,GAAAA,YAAA,EACG,SAAS,MAAM/C,QAAQnL,YAAY,GACnC,MAAM,SACN,OAAO,CAACA,eAAe,YAAY+D,QACnC,UAAU0I,WAAW,CAACzM,cACrByM,UAAAA;AAAAA,UAAAA,WACGkB,2BAAAA,IAACE,GAAAA,kBAAA,EAAiB,MAAM,WAAA,CAAW;AAAA,UACtC,CAACpB,WACEkB,2BAAAA,IAACqB,GAAAA,UAAA,EAAS,OAAO,UAAA,CAAU;AAAA,QAAA,EAAA,CACnC;AAAA,MAAA,EAAA,CAEJ;AAAA,IAAA,GAEJ;AAAA,EAER;AAEA,WAAShC,8BAA8BxN,YAAwC;AAE3E,UAAMyP,sBAAsBtQ,OAAOF,OAAOe,UAAU,EAAE4K,OAAO,CAACC,MAAgB;AAC1E,UAAInG,OAAAA,kBAAkBmG,CAAC,GAAG;AACtB,eAAO;AAAA,MACX;AACA,aAAOA,EAAEpI,SAAS,aAAaoI,EAAElF,IAAI+J,YAAY7E,EAAElF,IAAIqF;AAAAA,IAC3D,CAAC;AAED,UAAM2E,kBAAwCF,oBAAoBpN,SAAS,IACrEoN,oBAAoBG,KAAKC,MAAMD,KAAKE,OAAAA,IAAWL,oBAAoBpN,MAAM,CAAC,IAC1EkC;AAEN,UAAMd,UAAU,CACZ,2BACA,+BAA+B;AAEnC,QAAIkM,iBAAiB;AACjBlM,cAAQsM,KAAK,wBAAwBJ,gBAAgBvK,IAAI,GAAG;AAAA,IAChE;AACA,WAAO3B,QAAQC,IAAImH,CAAAA,OAAM;AAAA,MACrBlH,QAAQkH;AAAAA,MACRpI,MAAM;AAAA,IAAA,EACR;AAAA,EACN;AAEA,QAAMuK,wBAAwBA,CAAC9N,MAAcyN,WAAyB;AAClE,UAAMqD,eAAerD,WAAW,QAAQ,QAAQ;AAChD,WAAO,qBAAqBqD,YAAY,KAAKC,OAAAA,oBAAoB/Q,IAAI,CAAC;AAAA,EAC1E;AAEA,QAAMwO,8BAA8BA,CAACX,eAAuC;AACxE,UAAMmD,OAAOC,aAAaC,QAAQrD,UAAU;AAC5C,WAAOmD,OAAO/O,KAAKoB,MAAM2N,IAAI,EAAExM,IAAI,CAACZ,OAAe;AAAA,MAC/Ca,QAAQb;AAAAA,MACRL,MAAM;AAAA,IAAA,EACR,IAAI,CAAA;AAAA,EACV;AAEA,QAAMoL,kBAAkBA,CAACd,YAAoBpJ,WAAmB;AAC5D,QAAI,CAACA,UAAUA,OAAOnB,KAAAA,EAAOH,WAAW,GAAG;AACvC;AAAA,IACJ;AACA,UAAMsL,gBAAgBD,4BAA4BX,UAAU;AAC5DoD,iBAAaE,QAAQtD,YAAY5L,KAAKC,UAAU,CAACuC,QAAQ,GAAGgK,cACvDjK,IAAIZ,CAAAA,MAAKA,EAAEa,MAAM,EACjBiH,OAAO9H,CAAAA,MAAKA,MAAMa,MAAM,EACxBsE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAAA,EACtB;AAEA,QAAM4G,qBAAqBA,CAAC9B,YAAoBpJ,WAAmB;AAC/DwM,iBAAaE,QAAQtD,YAAY5L,KAAKC,UAAUsM,4BAA4BX,UAAU,EACjFrJ,IAAIZ,CAAAA,MAAKA,EAAEa,MAAM,EACjBiH,OAAO9H,OAAKA,MAAMa,MAAM,CAAC,CAAC;AAAA,EACnC;AC9QA,QAAM2M,kBAAkB;AAiCjB,WAAAC,yBAAAzQ,OAAA;AAAA,UAAA0Q,IAAAC,qBAAAA,EAAA,CAAA;AAEH,UAAAxP,SAAenB,OAAKmB,UAAAqP;AACpB,UAAAlI,mBAAyBtI,OAAKsI;AAsBCtI,WAAKc;AAAA,QAAA8P;AAAA,QAAAC;AAAA,QAAAH,EAAA,CAAA,MAAAvN,uBAAA2N,IAAA,2BAAA,GAAA;AAlBzBD,WAAA,CAAA;AAAA,QAAAE,MAEO;AAAA,QAAcC,WAAApE;AAAAA,QAAAqE,OAAA;AAAA,MAAA,CAAA;AAI3BP,aAAAG;AAAAA,IAAA,OAAA;AAAAA,WAAAH,EAAA,CAAA;AAAA,IAAA;AAQiB,UAAAQ,KAAAlR,OAAKc;AAAM,QAAAqQ;AAAA,QAAAT,EAAA,CAAA,MAAAvP,UAAAuP,SAAApI,oBAAAoI,EAAA,CAAA,MAAAQ,IAAA;AAhBLC,WAAA;AAAA,QAAA3R,KACnB;AAAA,QAAkB4R,OAChBP;AAAAA,QAMNQ,WAAA,CAAA;AAAA,UAAAC,OAGc;AAAA,UAAeN,WAAA3I;AAAAA,UACkDrI,OAAA;AAAA,YAAAmB;AAAAA,YAAAmH;AAAAA,YAAAxH,MAI9DoQ;AAAAA,UAAAA;AAAAA,QAAW,CAAA;AAAA,MAAA;AAIhCR,aAAAvP;AAAAuP,aAAApI;AAAAoI,aAAAQ;AAAAR,aAAAS;AAAAA,IAAA,OAAA;AAAAA,WAAAT,EAAA,CAAA;AAAA,IAAA;AAAAE,SApB2BO;AAoB3B,WApBMP;AAAAA,EAoBqC;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.umd.js","names":[],"sources":["../src/utils/values.ts","../src/api.ts","../src/utils/suggestions.ts","../src/utils/properties.ts","../src/editor/useEditorAIController.tsx","../src/components/DataEnhancementControllerProvider.tsx","../src/components/FormEnhanceAction.tsx","../src/useDataEnhancementPlugin.tsx"],"sourcesContent":["export function flatMapEntityValues<M extends object>(values: M, path = \"\"): object {\n if (!values) return {};\n return Object.entries(values).flatMap(([key, value]) => {\n const currentPath = path ? `${path}.${key}` : key;\n if (typeof value === \"object\") {\n return flatMapEntityValues(value, currentPath);\n } else {\n return { [currentPath]: value };\n }\n }).reduce((acc, curr) => ({ ...acc,\n...curr }), {})\n}\n","import {\n DataEnhancementRequest,\n EnhancedDataResult,\n InputEntity,\n InputProperty,\n SamplePromptsResult\n} from \"./types/data_enhancement_controller\";\nimport { EntityValues } from \"@rebasepro/types\";\nimport { flatMapEntityValues } from \"./utils/values\";\n\n// const DEFAULT_SERVER = \"http://localhost:5001/rebase-dev-2da42/europe-west3/api\"; // Local\n\nconst DEFAULT_SERVER = \"https://api.rebase.pro\";\n\nexport async function enhanceDataAPIStream<M extends Record<string, unknown>>(props: {\n apiKey: string,\n entityId?: string | number,\n entityName: string,\n entityDescription?: string,\n propertyKey?: string,\n propertyInstructions?: string;\n values: EntityValues<M>,\n path: string,\n properties: Record<string, InputProperty>,\n\n instructions?: string,\n firebaseToken: string,\n onUpdate: (suggestions: Record<string, string | number>) => void;\n onUpdateDelta: (propertyKey: string, partialValue: string) => void;\n onError: (error: Error) => void;\n onEnd: (result: EnhancedDataResult) => void;\n host?: string;\n}) {\n\n const flatValues = flatMapEntityValues(props.values);\n\n const properties = props.properties;\n\n const inputEntity: InputEntity = {\n entityId: props.entityId,\n values: flatValues\n }\n\n const request: DataEnhancementRequest = {\n inputEntity,\n properties,\n entityName: props.entityName,\n entityDescription: props.entityDescription,\n propertyKey: props.propertyKey,\n propertyInstructions: props.propertyInstructions,\n instructions: props.instructions\n };\n\n console.debug(\"enhanceDataAPIStream\", request);\n\n return fetch((props.host ?? DEFAULT_SERVER) + \"/data/enhance_stream/\",\n {\n // mode: \"no-cors\",\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Basic ${props.firebaseToken}`,\n \"x-de-api-key\": `Basic ${props.apiKey}`\n // \"x-de-version\": version\n },\n body: JSON.stringify(request)\n })\n .then(async (res) => {\n if (!res.ok) {\n console.error(\"enhanceDataAPIStream error\", res)\n throw await res.json();\n }\n const reader = res.body?.getReader();\n if (!reader) {\n throw new Error(\"No reader\");\n }\n\n for await (const chunk of readChunks(reader)) {\n const str = new TextDecoder().decode(chunk);\n try {\n str.split(\"&$# \").forEach((s) => {\n if (s && s.length > 0) {\n const data = JSON.parse(s.trim());\n if (data.type === \"suggestion_delta\")\n props.onUpdateDelta(data.data.propertyKey, data.data.partialValue);\n else if (data.type === \"suggestion\")\n props.onUpdate(data.data);\n else if (data.type === \"result\")\n props.onEnd(data.data);\n }\n });\n } catch (e: unknown) {\n console.error(\"str\", str);\n console.error(\"Error parsing stream\", e);\n props.onError(e instanceof Error ? e : new Error(String(e)));\n }\n }\n\n });\n\n}\n\nfunction readChunks(reader: ReadableStreamDefaultReader) {\n return {\n async *[Symbol.asyncIterator]() {\n let readResult = await reader.read();\n while (!readResult.done) {\n yield readResult.value;\n readResult = await reader.read();\n }\n }\n };\n}\n\nexport async function fetchEntityPromptSuggestion<M extends object>(props: {\n input?: string,\n entityName: string,\n firebaseToken: string,\n apiKey: string,\n host?: string\n}): Promise<SamplePromptsResult> {\n\n return fetch((props.host ?? DEFAULT_SERVER) + \"/data/prompt_autocomplete/\",\n {\n // mode: \"no-cors\",\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Basic ${props.firebaseToken}`,\n \"x-de-api-key\": `Basic ${props.apiKey}`\n },\n body: JSON.stringify({\n entityName: props.entityName,\n input: props.input ?? null\n })\n })\n .then(async (res) => {\n const data = await res.json();\n if (!res.ok) {\n console.error(\"fetchEntityPromptSuggestion\", data);\n throw Error(data.message);\n }\n return {\n prompts: data.data.prompts.map((e: string) => ({\n prompt: e,\n type: \"sample\"\n }))\n };\n });\n\n}\n\nexport async function autocompleteStream(props: {\n firebaseToken: string,\n textBefore?: string,\n textAfter: string,\n host?: string;\n onUpdate: (delta: string) => void;\n}) {\n\n let result = \"\";\n return fetch((props.host ?? DEFAULT_SERVER) + \"/data/autocomplete/\",\n {\n // mode: \"no-cors\",\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Basic ${props.firebaseToken}`\n // \"x-de-version\": version\n },\n body: JSON.stringify({\n textBefore: props.textBefore,\n textAfter: props.textAfter\n })\n })\n .then(async (res) => {\n if (!res.ok) {\n console.error(\"enhanceDataAPIStream error\", res)\n throw await res.json();\n }\n const reader = res.body?.getReader();\n if (!reader) {\n throw new Error(\"No reader\");\n }\n\n for await (const chunk of readChunks(reader)) {\n const str = new TextDecoder().decode(chunk);\n result += str;\n console.debug(\"Autocomplete update:\", str);\n props.onUpdate(str);\n }\n\n }).then(() => {\n console.debug(\"Autocomplete result:\", result);\n return result;\n });\n\n}\n","export function getAppendableSuggestion(suggestion: string | number | undefined, value: unknown): string | undefined {\n const suggestionIncludesValue = typeof suggestion === \"string\" && typeof value === \"string\" && suggestion.toLowerCase().trim().startsWith(value.toLowerCase().trim());\n return (typeof value === \"string\" && suggestionIncludesValue)\n ? suggestion.substring(suggestion.toLowerCase().trim().indexOf(value.toLowerCase().trim()) + value.trim().length)\n : undefined;\n}\n","import { getFieldId } from \"@rebasepro/admin\";\nimport { EnumValues, Properties, Property } from \"@rebasepro/types\";\nimport { isPropertyBuilder } from \"@rebasepro/common\";\nimport { InputProperty } from \"../types/data_enhancement_controller\";\nimport { getValueInPath } from \"@rebasepro/utils\";\n\nexport function getSimplifiedProperties<M extends Record<string, any>>(properties: Properties, values: M, path = \"\"): Record<string, InputProperty> {\n if (!properties) return {};\n return Object.entries(properties)\n .map(([key, property]) => {\n if (isPropertyBuilder(property)) return {};\n const fullKey = path ? `${path}.${key}` : key;\n const valueInPath = getValueInPath(values, fullKey);\n return getSimplifiedProperty(property, fullKey, valueInPath)\n })\n .reduce((a, b) => ({ ...a,\n...b }), {});\n}\n\nfunction getSimpleProperty(property: Property): InputProperty {\n const fieldId = getFieldId(property);\n if (!fieldId) {\n console.error(\"No fieldId found for property\", property);\n throw new Error(\"Field id not found\");\n }\n return {\n name: property.name,\n description: property.description,\n type: property.type,\n fieldConfigId: fieldId,\n enum: \"enum\" in property && property.enum\n ? getSimpleEnumValues(property.enum)\n : undefined,\n disabled: Boolean(property.ui?.disabled || property.ui?.readOnly)\n };\n}\n\nfunction getSimplifiedProperty(property: Property, path: string, value?: unknown): Record<string, InputProperty> {\n if (isPropertyBuilder(property)) return {};\n if (property.type === \"array\") {\n\n if (property.of && !Array.isArray(property.of) && !isPropertyBuilder(property.of)) {\n const arrayParentProperty: InputProperty = {\n name: property.name,\n description: property.description,\n type: property.type,\n fieldConfigId: \"repeat\",\n disabled: Boolean(property.ui?.disabled || property.ui?.readOnly),\n of: getSimpleProperty(property.of as Property)\n };\n\n const result = { [path]: arrayParentProperty };\n // if (Array.isArray(value)) {\n // result = {\n // ...result,\n // ...value\n // .map((v, i) => getSimplifiedProperty(property.of, `${path}.${i}`, v))\n // .reduce((a, b) => ({ ...a, ...b }), {})\n // };\n // }\n //\n // const existingValuesCount = Array.isArray(value) ? value.length : 0;\n //\n // const newValuesCount = property.of && !isPropertyBuilder<any, any>(property.of) && (property.of as Property).type === \"map\" ? 1 : 3;\n // result = {\n // ...result,\n // // ...Array.from(Array(newValuesCount))\n // // .map((v, i) => getSimplifiedProperty(property.of, `${path}.${i + existingValuesCount}`, v))\n // // .reduce((a, b) => ({ ...a, ...b }), {})\n // }\n\n return result;\n } else if (property.oneOf) {\n\n const arrayParentProperty: InputProperty = {\n name: property.name,\n description: property.description,\n type: property.type,\n fieldConfigId: \"block\",\n disabled: Boolean(property.ui?.disabled || property.ui?.readOnly),\n oneOf: {\n typeField: property.oneOf.typeField,\n valueField: property.oneOf.valueField,\n properties: Object.entries(property.oneOf.properties)\n .map(([key, prop]) => ({ [key]: getSimpleProperty(prop) }))\n .reduce((a, b) => ({ ...a,\n...b }), {})\n }\n };\n\n if (!Array.isArray(value)) {\n return { [path]: arrayParentProperty };\n }\n\n return value.map((v, i) => {\n if (v == null) return {};\n const typeKey = property.oneOf!.typeField ?? \"type\";\n const oneOfType = v[typeKey];\n const valueKey = property.oneOf!.valueField ?? \"value\";\n const oneOfValue = v[valueKey];\n const childProperty = property.oneOf!.properties[oneOfType];\n if (childProperty === undefined) {\n console.error(`No property found for type ${oneOfType}`, property.oneOf!.properties);\n return {};\n }\n const simplifiedProperty = getSimplifiedProperty(childProperty, `${path}.${i}.${valueKey}`, oneOfValue);\n return {\n [`${path}.${i}.${typeKey}`]: oneOfType,\n ...simplifiedProperty\n };\n }).reduce((a, b) => ({ ...a,\n...b }), { [path]: arrayParentProperty });\n }\n } else if (property.type === \"map\") {\n if (property.properties) {\n const mapProperties: Record<string, InputProperty> = Object.entries(property.properties)\n .map(([key, childProperty]) => {\n const childValue = value && typeof value === \"object\" ? (value as Record<string, unknown>)[key] : undefined;\n return getSimplifiedProperty(childProperty, key, childValue);\n })\n .map(o => attachPathToKeys(o, path))\n .reduce((a, b) => ({ ...a,\n...b }), {});\n\n if (Object.keys(mapProperties).length === 0) return {};\n const mapParentProperty: InputProperty = {\n name: property.name,\n description: property.description,\n type: property.type,\n fieldConfigId: \"group\",\n disabled: Boolean(property.ui?.disabled || property.ui?.readOnly)\n };\n return {\n [path]: mapParentProperty,\n ...mapProperties\n } as Record<string, InputProperty>;\n }\n } else {\n const fieldId = getFieldId(property);\n if (!fieldId) {\n console.warn(`No fieldId found for property ${path} with type ${property.type}`);\n return {};\n }\n return {\n [path]: getSimpleProperty(property)\n };\n }\n return {};\n}\n\n// attach a path to every key in an object\nfunction attachPathToKeys(obj: Record<string, InputProperty>, path = \"\"): Record<string, InputProperty> {\n return Object.entries(obj)\n .map(([key, value]) => {\n const fullKey = path ? `${path}.${key}` : key;\n return { [fullKey]: value };\n })\n .reduce((a, b) => ({ ...a,\n...b }), {});\n}\n\nfunction getSimpleEnumValues(enumValues: EnumValues): string[] {\n if (Array.isArray(enumValues))\n return enumValues.map(v => String(v.id));\n if (typeof enumValues === \"object\")\n return Object.keys(enumValues);\n throw Error(\"getSimpleEnumValues: Invalid enumValues\");\n}\n","import { autocompleteStream } from \"../api\";\nimport { EditorAIController } from \"@rebasepro/admin\";\n\nexport function useEditorAIController({ getAuthToken }: { getAuthToken?: () => Promise<string> }): EditorAIController {\n const autocomplete = async (textBefore: string, textAfter: string, onUpdate: (delta: string) => void) => {\n if (!getAuthToken) {\n throw new Error(\"Firebase token is required\");\n }\n const firebaseToken = await getAuthToken();\n return autocompleteStream({\n firebaseToken,\n textBefore,\n textAfter,\n onUpdate\n });\n }\n\n return {\n autocomplete\n };\n}\n\n// async function * generateLoremIpsum(): AsyncGenerator<string> {\n// const loremIpsum = \"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\\n# Heading\\n\\nLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\";\n//\n// const words = loremIpsum.split(\" \");\n//\n// for (const word of words) {\n// yield word;\n// await new Promise(resolve => setTimeout(resolve, 100));\n// }\n// }\n//\n// const generator = generateLoremIpsum();\n// for await (const word of generator) {\n//\n// }\n","import React, { PropsWithChildren, useCallback, useContext, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport {\n DataEnhancementController,\n EnhancedDataResult,\n EnhanceParams,\n InputProperty\n} from \"../types/data_enhancement_controller\";\nimport {\n useAuthController,\n useCustomizationController,\n useSnackbarController\n} from \"@rebasepro/core\";\nimport { useUrlController } from \"@rebasepro/admin\";\nimport { DataDriver, Entity, EntityCollection, PluginFormActionProps } from \"@rebasepro/types\";\nimport { enhanceDataAPIStream, fetchEntityPromptSuggestion } from \"../api\";\nimport { getAppendableSuggestion } from \"../utils/suggestions\";\nimport { getSimplifiedProperties } from \"../utils/properties\";\nimport { useEditorAIController } from \"../editor/useEditorAIController\";\nimport { getValueInPath } from \"@rebasepro/utils\";\n\nconst DataEnhancementControllerContext = React.createContext<DataEnhancementController>(null! as DataEnhancementController);\n\ntype DataEnhancementControllerProviderProps = {\n\n apiKey: string;\n\n getConfigForPath?: (props: {\n path: string,\n collection: EntityCollection\n }) => boolean;\n\n host?: string;\n}\n\nexport const useDataEnhancementController = (): DataEnhancementController => useContext(DataEnhancementControllerContext);\n\nfunction getPropertyFromKey(properties: Record<string, InputProperty>, propertyKey: string) {\n if (propertyKey in properties) {\n return properties[propertyKey];\n } else {\n //split the property key\n const split = propertyKey.split(\".\");\n if (split.length === 1) {\n return undefined;\n }\n const parentKey = split.slice(0, split.length - 1).join(\".\");\n return getPropertyFromKey(properties, parentKey);\n\n }\n}\n\nexport function DataEnhancementControllerProvider({\n apiKey,\n getConfigForPath,\n children,\n host,\n path,\n collection,\n formContext\n}: PropsWithChildren<DataEnhancementControllerProviderProps & PluginFormActionProps>) {\n\n const [enabled, setEnabled] = useState(false);\n const [suggestions, setSuggestions] = useState<Record<string, string | number>>({});\n const [loadingSuggestions, setLoadingSuggestions] = useState<string[]>([]);\n\n const enhancingInProgress = useRef(false);\n\n const authController = useAuthController();\n const snackbarController = useSnackbarController();\n\n\n const properties = useMemo(() => getSimplifiedProperties(collection.properties, formContext?.values ?? {}), [formContext?.values]);\n // const preEnhanceValuesRef = React.useRef(formContext?.values ?? {});\n const valuesRef = React.useRef(formContext?.values ?? {});\n useEffect(() => {\n if (!enhancingInProgress.current)\n valuesRef.current = formContext?.values ?? {};\n }, [formContext?.values]);\n\n const allowReferenceDataSelection = false;\n\n const updateConfig = useCallback(async () => {\n if (!getConfigForPath) return;\n const config = getConfigForPath({\n path,\n collection\n });\n if (config) {\n setEnabled(true);\n }\n }, [collection, getConfigForPath, path]);\n\n useEffect(() => {\n if (!getConfigForPath) {\n setEnabled(true);\n } else {\n updateConfig();\n }\n\n }, [getConfigForPath, updateConfig]);\n\n\n const urlController = useUrlController();\n\n const clearSuggestion = useCallback((propertyKey: string) => {\n setSuggestions((prev) => {\n //remove propertyKey from prev\n const {\n [propertyKey]: _,\n ...rest\n } = prev;\n return rest;\n });\n }, []);\n\n const appendValueDelta = useCallback((propertyKey: string, delta: string) => {\n\n const property = getPropertyFromKey(properties, propertyKey);\n if (delta === null || property?.disabled) {\n return;\n }\n\n // clearSuggestion(propertyKey);\n const value = getValueInPath(valuesRef.current, propertyKey);\n\n const currentValue = value ? (value as string) + \"\" : \"\";\n const updatedValue = currentValue + delta;\n // if (currentValue.length === 0) updatedValue = updatedValue.trimStart();\n valuesRef.current = {\n ...valuesRef.current,\n [propertyKey]: updatedValue\n };\n formContext?.setFieldValue(propertyKey, updatedValue, false);\n setSuggestions(prev => ({\n ...prev,\n [propertyKey]: (prev[propertyKey] ?? \"\") + delta\n }));\n }, [properties, formContext]);\n\n const updateSuggestedValues = useCallback((currentValues: object, updatedValues: Record<string, string | number>, replaceValues: boolean) => {\n\n setLoadingSuggestions((prev) => {\n return prev.filter(p => !Object.keys(updatedValues).includes(p));\n });\n\n Object.entries(updatedValues).forEach(([propertyKey, suggestion]) => {\n\n const value = getValueInPath(currentValues, propertyKey);\n const property = getPropertyFromKey(properties, propertyKey);\n\n if (!property || suggestion === null || property?.disabled) {\n return;\n }\n\n if (typeof suggestion === \"number\") {\n formContext?.setFieldValue(propertyKey, suggestion);\n return;\n }\n\n if (replaceValues) {\n formContext?.setFieldValue(propertyKey, suggestion);\n return;\n }\n\n const appendableValue = getAppendableSuggestion(suggestion, value);\n\n const currentValue = value ? (value as string) + \"\" : \"\";\n if (appendableValue) {\n formContext?.setFieldValue(propertyKey, suggestion);\n } else {\n const multiline = property?.fieldConfigId === \"multiline\" || property?.fieldConfigId === \"markdown\";\n const trimmedValue = currentValue.trimEnd();\n if (multiline && (trimmedValue.endsWith(\".\") || trimmedValue.endsWith(\"?\") || trimmedValue.endsWith(\"!\") || trimmedValue.endsWith(\":\"))) {\n formContext?.setFieldValue(propertyKey, trimmedValue + \"\\n\\n\" + (suggestion as string).trimStart());\n } else {\n formContext?.setFieldValue(propertyKey, trimmedValue + (trimmedValue.length > 0 ? \" \" : \"\") + (suggestion as string));\n }\n }\n });\n\n setSuggestions(prev => ({\n ...prev,\n ...Object.keys(updatedValues)\n .reduce((acc, key) => {\n const value = getValueInPath(formContext?.values, key);\n const suggestion = updatedValues[key];\n return {\n ...acc,\n [key]: getAppendableSuggestion(suggestion, value) ?? suggestion\n };\n }, {})\n }));\n }, [properties, formContext]);\n\n const displayNeededSubscriptionSnackbar = useCallback((projectId: unknown) => {\n snackbarController.open({\n type: \"warning\",\n message: \"A valid subscription is needed in order to use this function.\",\n autoHideDuration: 4000\n });\n }, [snackbarController]);\n\n const editorAIController = useEditorAIController({ getAuthToken: authController.getAuthToken });\n\n const clearAllSuggestions = useCallback(() => {\n setSuggestions({});\n }, []);\n\n const enhance = useCallback(async (props: EnhanceParams<Record<string, unknown>>): Promise<EnhancedDataResult | null> => {\n\n if (!authController.user) {\n snackbarController.open({\n type: \"warning\",\n message: \"You need to be logged in to enhance data\"\n });\n return Promise.reject(new Error(\"Not logged in\"));\n }\n\n const resolvedPath = urlController.resolveDatabasePathsFrom(path);\n const firebaseToken = await authController.getAuthToken();\n\n if (props.propertyKey) {\n clearSuggestion(props.propertyKey)\n } else {\n clearAllSuggestions();\n }\n\n setLoadingSuggestions((prev) => [...prev, ...(props.propertyKey ? [props.propertyKey] : Object.keys(properties))]);\n enhancingInProgress.current = true;\n\n const currentValues = valuesRef.current ?? {};\n\n return new Promise((resolve, reject) => {\n function onError(e: unknown) {\n setLoadingSuggestions([]);\n const err = e instanceof Error ? e : typeof e === \"object\" && e !== null ? e : new Error(String(e));\n const errorObj = err as Record<string, unknown>;\n if (errorObj.code === \"payment-required\") {\n const data = errorObj.data as Record<string, unknown> | undefined;\n const projectId = data?.projectId;\n displayNeededSubscriptionSnackbar(projectId);\n } else {\n console.error(\"Enhance error\", e);\n }\n reject(e);\n enhancingInProgress.current = false;\n }\n\n try {\n enhanceDataAPIStream({\n ...props,\n host,\n apiKey,\n properties,\n path: resolvedPath,\n entityName: collection.singularName ?? collection.name,\n entityDescription: collection.description,\n\n firebaseToken,\n onUpdate: (suggestions) => {\n console.debug(\"de onUpdate\", suggestions);\n updateSuggestedValues(currentValues, suggestions, props.replaceValues ?? false);\n },\n onUpdateDelta: (propertyKey: string, partialValue: string) => {\n // console.debug(\"de delta\", propertyKey, partialValue);\n appendValueDelta(propertyKey, partialValue);\n },\n onError,\n onEnd: (result) => {\n console.debug(\"de onEnd\", result);\n if (result.errors) {\n result.errors.forEach((error) => {\n snackbarController.open({\n type: \"warning\",\n message: error\n })\n });\n }\n if (Object.keys(result.suggestions).length === 0) {\n snackbarController.open({\n type: \"info\",\n autoHideDuration: 1800,\n message: \"No fields were updated\"\n })\n }\n setLoadingSuggestions([]);\n resolve(result);\n enhancingInProgress.current = false;\n }\n }).catch(onError);\n } catch (e: unknown) {\n onError(e);\n }\n });\n }, [\n authController, urlController, path, clearSuggestion, clearAllSuggestions,\n properties, host, apiKey, collection, updateSuggestedValues, appendValueDelta, displayNeededSubscriptionSnackbar, snackbarController\n ]);\n\n const getSamplePrompts = useCallback(async (entityName: string, input?: string) => {\n const firebaseToken = await authController.getAuthToken()\n return fetchEntityPromptSuggestion({\n host,\n entityName,\n firebaseToken,\n apiKey,\n input\n });\n }, [apiKey, authController.getAuthToken, host]);\n\n const dataEnhancementController: DataEnhancementController = useMemo(() => ({\n enabled,\n suggestions,\n clearSuggestion,\n enhance,\n allowReferenceDataSelection,\n clearAllSuggestions,\n getSamplePrompts,\n loadingSuggestions,\n editorAIController\n }), [\n enabled,\n suggestions,\n clearSuggestion,\n enhance,\n allowReferenceDataSelection,\n clearAllSuggestions,\n getSamplePrompts,\n loadingSuggestions,\n editorAIController\n ]);\n\n return (\n <DataEnhancementControllerContext.Provider\n value={dataEnhancementController}>\n {children}\n </DataEnhancementControllerContext.Provider>\n );\n}\n\n\n","\nimport React, { useCallback, useDeferredValue, useEffect, useRef } from \"react\";\n\nimport {\n Button,\n CircularProgress,\n cls,\n focusedDisabled,\n IconButton,\n iconSize,\n Menu,\n MenuItem,\n SendIcon,\n Separator,\n TextareaAutosize,\n XIcon\n} from \"@rebasepro/ui\";\nimport {\n AIIcon,\n useLargeLayout\n} from \"@rebasepro/core\";\nimport { EntityStatus, PluginFormActionProps, Properties, Property } from \"@rebasepro/types\";\nimport { isPropertyBuilder, stripCollectionPath } from \"@rebasepro/common\";\nimport { useDataEnhancementController } from \"./DataEnhancementControllerProvider\";\nimport { SamplePrompt } from \"../types/data_enhancement_controller\";\n\nexport function FormEnhanceAction({\n entityId,\n path,\n status,\n collection,\n formContext,\n openEntityMode\n}: PluginFormActionProps) {\n\n const largeLayout = useLargeLayout();\n\n const storageKey = createLocalStorageKey(path, status);\n\n const [loading, setLoading] = React.useState(false);\n const dataEnhancementController = useDataEnhancementController();\n\n const [samplePrompts, setSamplePrompts] = React.useState<SamplePrompt[] | undefined>(undefined);\n const [instructions, setInstructions] = React.useState<string>(\"\");\n\n const getSamplePrompts = dataEnhancementController?.getSamplePrompts;\n\n const loadingPrompts = useRef(false);\n const updateSuggestedPrompts = useCallback(async function updateSuggestedPrompts(instructions?: string) {\n if (!getSamplePrompts) return;\n if (loadingPrompts.current) return;\n loadingPrompts.current = true;\n const prompts = status === \"new\"\n ? (await getSamplePrompts(collection.singularName ?? collection.name, instructions)).prompts\n : getPromptsForExistingEntities(collection.properties);\n\n const recentPromptsFromStorage = getRecentPromptsFromStorage(storageKey);\n const recentPrompts = recentPromptsFromStorage.map(prompt => prompt.prompt);\n setSamplePrompts([...recentPromptsFromStorage, ...prompts.filter(p => !recentPrompts.includes(p.prompt))].slice(0, 5));\n loadingPrompts.current = false;\n },\n [collection.name, collection.singularName, getSamplePrompts, status]);\n\n const deferredValues = useDeferredValue(formContext?.values);\n // const enoughData = countStringCharacters(deferredValues, collection.properties) > 20;\n\n useEffect(() => {\n if (!dataEnhancementController) return;\n if (!samplePrompts) {\n setSamplePrompts(getRecentPromptsFromStorage(storageKey));\n updateSuggestedPrompts().then();\n }\n }, [dataEnhancementController, samplePrompts, storageKey, updateSuggestedPrompts, instructions, status]);\n\n useEffect(() => {\n if (!dataEnhancementController) return;\n updateSuggestedPrompts().then();\n }, [dataEnhancementController, status]);\n\n const enhance = (prompt?: string) => {\n if (!dataEnhancementController || !formContext?.values) return;\n setLoading(true);\n if (prompt) {\n addRecentPrompt(storageKey, prompt);\n setSamplePrompts([{\n prompt,\n type: \"recent\"\n }, ...(samplePrompts ?? []).slice(0, 5)]);\n }\n return dataEnhancementController.enhance({\n entityId,\n values: formContext!.values,\n instructions: prompt,\n replaceValues: true\n }).finally(() => {\n setLoading(false);\n });\n };\n\n if (!dataEnhancementController?.enabled)\n return null;\n\n const suggestions = dataEnhancementController.suggestions;\n const hasSuggestions = Object.values(suggestions).filter(Boolean).length > 0;\n\n const disabledSuggestionActions = !hasSuggestions;\n const promptSuggestionsEnabled = (samplePrompts ?? []).length > 0 && instructions.length === 0;\n\n // const noIdSet = !formContext?.entityId;\n\n function submit() {\n enhance(instructions);\n }\n\n return (\n <Menu\n align={\"end\"}\n sideOffset={8}\n className={\"max-w-[100vw]\"}\n trigger={<Button variant={\"filled\"}\n color={\"neutral\"}\n fullWidth={largeLayout && openEntityMode === \"full_screen\"}\n size={\"small\"}\n disabled={loading}>\n {!loading && <AIIcon size={\"small\"}/>}\n {loading && <CircularProgress size={\"small\"}/>}\n Autofill\n </Button>}>\n\n <MenuItem className={\"py-4\"}\n onClick={() => {\n enhance();\n }}>\n <AIIcon size={\"small\"}/>\n Autofill based on the current content\n </MenuItem>\n\n <Separator orientation={\"horizontal\"} className={\"mt-2\"}/>\n\n {samplePrompts?.map((samplePrompt, index) => {\n return <MenuItem\n key={index + \"_\" + samplePrompt.prompt}\n onClick={() => {\n setInstructions(samplePrompt.prompt);\n enhance(samplePrompt.prompt);\n }}\n >\n <div className={\"pl-9 grow text-text-secondary dark:text-text-secondary-dark\"}>\n {samplePrompt.prompt}\n </div>\n\n {samplePrompt.type === \"recent\" && <IconButton\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n removeRecentPrompt(storageKey, samplePrompt.prompt);\n setSamplePrompts((samplePrompts ?? []).filter(p => p.prompt !== samplePrompt.prompt));\n }}\n size={\"smallest\"}\n >\n <XIcon size={iconSize.smallest}/>\n </IconButton>\n }\n </MenuItem>;\n })}\n\n <Separator orientation={\"horizontal\"}/>\n\n <div\n className={cls(\n \"my-2 w-[500px] max-w-full flex items-start text-surface-700 dark:text-surface-200\"\n )}>\n\n <TextareaAutosize\n className={cls(\"p-4 rounded-lg resize-none bg-surface-100 dark:bg-surface-950 mx-2 w-full grow outline-hidden max-h-[300px] overflow-auto\", focusedDisabled)}\n value={instructions}\n autoFocus={status === \"new\"}\n disabled={loading}\n onFocus={(event) => {\n event.stopPropagation();\n }}\n placeholder={\"...or provide instructions\"}\n onKeyDown={(e) => {\n e.stopPropagation();\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n submit();\n }\n\n }}\n onChange={(e) => {\n setInstructions(e.target.value);\n }}\n />\n\n <IconButton\n size={\"small\"}\n onClick={() => {\n setInstructions(\"\");\n }}\n color={!instructions ? \"primary\" : undefined}\n disabled={loading || !instructions}>\n <XIcon size={iconSize.small}/>\n </IconButton>\n\n <IconButton\n onClick={() => enhance(instructions)}\n size={\"small\"}\n color={!instructions ? \"primary\" : undefined}\n disabled={loading || !instructions}>\n {loading &&\n <CircularProgress size={\"smallest\"}/>}\n {!loading &&\n <SendIcon color={\"primary\"}/>}\n </IconButton>\n\n </div>\n\n </Menu>\n );\n}\n\nfunction getPromptsForExistingEntities(properties: Properties): SamplePrompt[] {\n\n const multilineProperties = Object.values(properties).filter((p: Property) => {\n if (isPropertyBuilder(p)) {\n return false;\n }\n return p.type === \"string\" && (p.ui?.markdown || p.ui?.multiline);\n });\n\n const multilinePrompt: Property | undefined = multilineProperties.length > 0\n ? multilineProperties[Math.floor(Math.random() * multilineProperties.length)] as Property\n : undefined;\n\n const prompts = [\n \"Fill the missing fields\",\n \"Translate the missing content\"\n ];\n if (multilinePrompt) {\n prompts.push(`Add 2 paragraphs to '${multilinePrompt.name}'`);\n }\n return prompts.map(p => ({\n prompt: p,\n type: \"sample\"\n }));\n}\n\nconst createLocalStorageKey = (path: string, status: EntityStatus) => {\n const statusString = status === \"new\" ? \"new\" : \"existing\";\n return `data_enhancement::${statusString}::${stripCollectionPath(path)}`;\n};\n\nconst getRecentPromptsFromStorage = (storageKey: string): SamplePrompt[] => {\n const item = localStorage.getItem(storageKey);\n return item ? JSON.parse(item).map((e: string) => ({\n prompt: e,\n type: \"recent\"\n })) : [];\n};\n\nconst addRecentPrompt = (storageKey: string, prompt: string) => {\n if (!prompt || prompt.trim().length === 0) {\n return;\n }\n const recentPrompts = getRecentPromptsFromStorage(storageKey);\n localStorage.setItem(storageKey, JSON.stringify([prompt, ...recentPrompts\n .map(e => e.prompt)\n .filter(e => e !== prompt)\n .slice(0, 5)]));\n};\n\nconst removeRecentPrompt = (storageKey: string, prompt: string) => {\n localStorage.setItem(storageKey, JSON.stringify(getRecentPromptsFromStorage(storageKey)\n .map(e => e.prompt)\n .filter(e => e !== prompt)));\n};\n","import React from \"react\";\n\nimport { EntityCollection, RebasePlugin, User } from \"@rebasepro/types\";\nimport { DataEnhancementControllerProvider } from \"./components/DataEnhancementControllerProvider\";\nimport { FormEnhanceAction } from \"./components/FormEnhanceAction\";\n\nconst DEFAULT_API_KEY = \"fcms-U9jdDii0xXWSDC34asfrf54lbkFJBfKfRWcEDEwdc4V5wDWEDF\";\n\nexport interface DataEnhancementPluginProps {\n\n apiKey?: string;\n\n /**\n * Use this function to determine if the data enhancement plugin should be enabled for a given path.\n * If this function is not provided, the plugin will be enabled for all paths.\n * If the function returns false, the plugin will be disabled for the given path.\n * You can also return a configuration object to override the default configuration.\n *\n * @param path\n * @param collection\n */\n getConfigForPath?: (props: {\n path: string,\n collection: EntityCollection,\n user: User | null\n }) => boolean;\n\n /**\n * Host to use for the data enhancement API.\n * This prop is only use in development mode.\n */\n host?: string;\n}\n\n/**\n * Use this hook to initialise the data enhancement plugin.\n * This is likely the only hook you will need to use.\n * @param props\n */\nexport function useDataEnhancementPlugin(props?: DataEnhancementPluginProps): RebasePlugin {\n\n const apiKey = props?.apiKey ?? DEFAULT_API_KEY;\n const getConfigForPath = props?.getConfigForPath;\n\n return React.useMemo(() => ({\n key: \"data_enhancement\",\n slots: [\n {\n slot: \"form.actions\",\n Component: FormEnhanceAction,\n order: 40\n }\n ],\n providers: [\n {\n scope: \"form\" as const,\n Component: DataEnhancementControllerProvider as React.ComponentType<any>,\n props: {\n apiKey,\n getConfigForPath,\n host: props?.host\n }\n }\n ]\n }), [apiKey, getConfigForPath, props?.host]);\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rebasepro/plugin-data-enhancement",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.6.0",
|
|
5
5
|
"main": "./dist/index.umd.js",
|
|
6
6
|
"module": "./dist/index.es.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
@@ -16,12 +16,12 @@
|
|
|
16
16
|
"./package.json": "./package.json"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@rebasepro/admin": "0.
|
|
20
|
-
"@rebasepro/common": "0.
|
|
21
|
-
"@rebasepro/
|
|
22
|
-
"@rebasepro/
|
|
23
|
-
"@rebasepro/
|
|
24
|
-
"@rebasepro/ui": "0.
|
|
19
|
+
"@rebasepro/admin": "0.6.0",
|
|
20
|
+
"@rebasepro/common": "0.6.0",
|
|
21
|
+
"@rebasepro/utils": "0.6.0",
|
|
22
|
+
"@rebasepro/core": "0.6.0",
|
|
23
|
+
"@rebasepro/types": "0.6.0",
|
|
24
|
+
"@rebasepro/ui": "0.6.0"
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
27
|
"react": ">=19.0.0",
|
|
@@ -43,22 +43,23 @@
|
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@testing-library/jest-dom": "^6.9.1",
|
|
46
|
-
"@types/jest": "^
|
|
47
|
-
"@types/node": "^
|
|
48
|
-
"@types/react": "^19.2.
|
|
46
|
+
"@types/jest": "^30.0.0",
|
|
47
|
+
"@types/node": "^25.9.3",
|
|
48
|
+
"@types/react": "^19.2.17",
|
|
49
49
|
"@types/react-dom": "^19.2.3",
|
|
50
|
-
"@vitejs/plugin-react": "^
|
|
51
|
-
"babel-jest": "^
|
|
50
|
+
"@vitejs/plugin-react": "^6.0.2",
|
|
51
|
+
"babel-jest": "^30.4.1",
|
|
52
52
|
"babel-plugin-react-compiler": "19.0.0-beta-ebf51a3-20250411",
|
|
53
|
-
"jest": "^
|
|
54
|
-
"ts-jest": "^29.4.
|
|
55
|
-
"typescript": "^
|
|
56
|
-
"vite": "^
|
|
53
|
+
"jest": "^30.4.2",
|
|
54
|
+
"ts-jest": "^29.4.11",
|
|
55
|
+
"typescript": "^6.0.3",
|
|
56
|
+
"vite": "^8.0.16"
|
|
57
57
|
},
|
|
58
58
|
"jest": {
|
|
59
59
|
"transform": {
|
|
60
60
|
"^.+\\.tsx?$": "ts-jest"
|
|
61
61
|
},
|
|
62
|
+
"testEnvironment": "jsdom",
|
|
62
63
|
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$",
|
|
63
64
|
"moduleFileExtensions": [
|
|
64
65
|
"ts",
|
|
@@ -67,7 +68,15 @@
|
|
|
67
68
|
"jsx",
|
|
68
69
|
"json",
|
|
69
70
|
"node"
|
|
70
|
-
]
|
|
71
|
+
],
|
|
72
|
+
"moduleNameMapper": {
|
|
73
|
+
"^@rebasepro/core$": "<rootDir>/../core/src/index.ts",
|
|
74
|
+
"^@rebasepro/common$": "<rootDir>/../common/src/index.ts",
|
|
75
|
+
"^@rebasepro/types$": "<rootDir>/../types/src/index.ts",
|
|
76
|
+
"^@rebasepro/ui$": "<rootDir>/../ui/src/index.ts",
|
|
77
|
+
"^@rebasepro/admin$": "<rootDir>/../admin/src/index.ts",
|
|
78
|
+
"^@rebasepro/utils$": "<rootDir>/../utils/src/index.ts"
|
|
79
|
+
}
|
|
71
80
|
},
|
|
72
81
|
"files": [
|
|
73
82
|
"dist",
|
|
@@ -5,7 +5,8 @@ describe("countStringCharacters", () => {
|
|
|
5
5
|
it("counts characters in a string property", () => {
|
|
6
6
|
const values = { title: "Hello World" };
|
|
7
7
|
const properties: Properties = {
|
|
8
|
-
title: { name: "title",
|
|
8
|
+
title: { name: "title",
|
|
9
|
+
type: "string" }
|
|
9
10
|
};
|
|
10
11
|
expect(countStringCharacters(values, properties)).toBe(11);
|
|
11
12
|
});
|
|
@@ -13,16 +14,21 @@ describe("countStringCharacters", () => {
|
|
|
13
14
|
it("counts characters in a number property (stringified)", () => {
|
|
14
15
|
const values = { price: 12345 };
|
|
15
16
|
const properties: Properties = {
|
|
16
|
-
price: { name: "price",
|
|
17
|
+
price: { name: "price",
|
|
18
|
+
type: "number" }
|
|
17
19
|
};
|
|
18
20
|
expect(countStringCharacters(values, properties)).toBe(5);
|
|
19
21
|
});
|
|
20
22
|
|
|
21
23
|
it("skips disabled properties", () => {
|
|
22
|
-
const values = { title: "Hello",
|
|
24
|
+
const values = { title: "Hello",
|
|
25
|
+
hidden: "Secret" };
|
|
23
26
|
const properties: Properties = {
|
|
24
|
-
title: { name: "title",
|
|
25
|
-
|
|
27
|
+
title: { name: "title",
|
|
28
|
+
type: "string" },
|
|
29
|
+
hidden: { name: "hidden",
|
|
30
|
+
type: "string",
|
|
31
|
+
ui: { disabled: true } }
|
|
26
32
|
};
|
|
27
33
|
expect(countStringCharacters(values, properties)).toBe(5);
|
|
28
34
|
});
|
|
@@ -33,7 +39,8 @@ describe("countStringCharacters", () => {
|
|
|
33
39
|
tags: {
|
|
34
40
|
name: "tags",
|
|
35
41
|
type: "array",
|
|
36
|
-
of: { name: "tag",
|
|
42
|
+
of: { name: "tag",
|
|
43
|
+
type: "string" }
|
|
37
44
|
}
|
|
38
45
|
};
|
|
39
46
|
// "hello" (5) + "world" (5) + "test" (4) = 14
|
|
@@ -42,15 +49,18 @@ describe("countStringCharacters", () => {
|
|
|
42
49
|
|
|
43
50
|
it("recurses into map properties", () => {
|
|
44
51
|
const values = {
|
|
45
|
-
address: { city: "New York",
|
|
52
|
+
address: { city: "New York",
|
|
53
|
+
country: "USA" }
|
|
46
54
|
};
|
|
47
55
|
const properties: Properties = {
|
|
48
56
|
address: {
|
|
49
57
|
name: "address",
|
|
50
58
|
type: "map",
|
|
51
59
|
properties: {
|
|
52
|
-
city: { name: "city",
|
|
53
|
-
|
|
60
|
+
city: { name: "city",
|
|
61
|
+
type: "string" },
|
|
62
|
+
country: { name: "country",
|
|
63
|
+
type: "string" }
|
|
54
64
|
}
|
|
55
65
|
}
|
|
56
66
|
};
|
|
@@ -60,7 +70,8 @@ describe("countStringCharacters", () => {
|
|
|
60
70
|
|
|
61
71
|
it("returns 0 for empty values", () => {
|
|
62
72
|
const properties: Properties = {
|
|
63
|
-
title: { name: "title",
|
|
73
|
+
title: { name: "title",
|
|
74
|
+
type: "string" }
|
|
64
75
|
};
|
|
65
76
|
expect(countStringCharacters({}, properties)).toBe(0);
|
|
66
77
|
});
|
|
@@ -73,13 +84,17 @@ describe("countStringCharacters", () => {
|
|
|
73
84
|
tags: ["a", "bb"]
|
|
74
85
|
};
|
|
75
86
|
const properties: Properties = {
|
|
76
|
-
title: { name: "title",
|
|
77
|
-
|
|
78
|
-
|
|
87
|
+
title: { name: "title",
|
|
88
|
+
type: "string" },
|
|
89
|
+
count: { name: "count",
|
|
90
|
+
type: "number" },
|
|
91
|
+
active: { name: "active",
|
|
92
|
+
type: "boolean" },
|
|
79
93
|
tags: {
|
|
80
94
|
name: "tags",
|
|
81
95
|
type: "array",
|
|
82
|
-
of: { name: "tag",
|
|
96
|
+
of: { name: "tag",
|
|
97
|
+
type: "string" }
|
|
83
98
|
}
|
|
84
99
|
};
|
|
85
100
|
// "Hello" (5) + "42" (2) + "a" (1) + "bb" (2) = 10
|
|
@@ -92,7 +107,8 @@ describe("countStringCharacters", () => {
|
|
|
92
107
|
tags: {
|
|
93
108
|
name: "tags",
|
|
94
109
|
type: "array",
|
|
95
|
-
of: { name: "tag",
|
|
110
|
+
of: { name: "tag",
|
|
111
|
+
type: "string" }
|
|
96
112
|
}
|
|
97
113
|
};
|
|
98
114
|
// null?.length = 0, "hello" = 5, null?.length = 0
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { TextEncoder, TextDecoder } from "util";
|
|
2
|
+
Object.assign(global, { TextEncoder,
|
|
3
|
+
TextDecoder });
|
|
4
|
+
|
|
5
|
+
// Mock window.matchMedia
|
|
6
|
+
if (typeof window !== "undefined") {
|
|
7
|
+
Object.defineProperty(window, "matchMedia", {
|
|
8
|
+
writable: true,
|
|
9
|
+
value: jest.fn().mockImplementation(query => ({
|
|
10
|
+
matches: false,
|
|
11
|
+
media: query,
|
|
12
|
+
onchange: null,
|
|
13
|
+
addEventListener: jest.fn(),
|
|
14
|
+
removeEventListener: jest.fn(),
|
|
15
|
+
dispatchEvent: jest.fn()
|
|
16
|
+
}))
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
import { renderHook } from "@testing-library/react";
|
|
21
|
+
import { useDataEnhancementPlugin } from "../useDataEnhancementPlugin";
|
|
22
|
+
|
|
23
|
+
jest.mock("@rebasepro/admin", () => ({
|
|
24
|
+
useUrlController: () => ({})
|
|
25
|
+
}));
|
|
26
|
+
|
|
27
|
+
describe("useDataEnhancementPlugin hook", () => {
|
|
28
|
+
it("returns data enhancement plugin with correct metadata", () => {
|
|
29
|
+
const { result } = renderHook(() => useDataEnhancementPlugin());
|
|
30
|
+
const plugin = result.current;
|
|
31
|
+
|
|
32
|
+
expect(plugin.key).toBe("data_enhancement");
|
|
33
|
+
expect(plugin.slots).toBeDefined();
|
|
34
|
+
expect(plugin.slots[0].slot).toBe("form.actions");
|
|
35
|
+
expect(plugin.providers).toBeDefined();
|
|
36
|
+
expect(plugin.providers[0].scope).toBe("form");
|
|
37
|
+
expect(plugin.providers[0].props.apiKey).toBe("fcms-U9jdDii0xXWSDC34asfrf54lbkFJBfKfRWcEDEwdc4V5wDWEDF");
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it("accepts and forwards custom apiKey and host props", () => {
|
|
41
|
+
const customProps = {
|
|
42
|
+
apiKey: "custom-key",
|
|
43
|
+
host: "https://custom-host.com"
|
|
44
|
+
};
|
|
45
|
+
const { result } = renderHook(() => useDataEnhancementPlugin(customProps));
|
|
46
|
+
const plugin = result.current;
|
|
47
|
+
|
|
48
|
+
expect(plugin.providers[0].props.apiKey).toBe("custom-key");
|
|
49
|
+
expect(plugin.providers[0].props.host).toBe("https://custom-host.com");
|
|
50
|
+
});
|
|
51
|
+
});
|
package/src/tests/values.test.ts
CHANGED
|
@@ -2,14 +2,17 @@ import { flatMapEntityValues } from "../utils/values";
|
|
|
2
2
|
|
|
3
3
|
describe("flatMapEntityValues", () => {
|
|
4
4
|
it("returns flat object unchanged", () => {
|
|
5
|
-
const values = { name: "John",
|
|
5
|
+
const values = { name: "John",
|
|
6
|
+
age: 30 };
|
|
6
7
|
const result = flatMapEntityValues(values);
|
|
7
|
-
expect(result).toEqual({ name: "John",
|
|
8
|
+
expect(result).toEqual({ name: "John",
|
|
9
|
+
age: 30 });
|
|
8
10
|
});
|
|
9
11
|
|
|
10
12
|
it("flattens nested object to dot-notation keys", () => {
|
|
11
13
|
const values = {
|
|
12
|
-
address: { city: "NYC",
|
|
14
|
+
address: { city: "NYC",
|
|
15
|
+
zip: "10001" }
|
|
13
16
|
};
|
|
14
17
|
const result = flatMapEntityValues(values);
|
|
15
18
|
expect(result).toEqual({
|
|
@@ -66,7 +69,8 @@ describe("flatMapEntityValues", () => {
|
|
|
66
69
|
|
|
67
70
|
it("handles numeric values in nested objects", () => {
|
|
68
71
|
const values = {
|
|
69
|
-
stats: { visits: 100,
|
|
72
|
+
stats: { visits: 100,
|
|
73
|
+
clicks: 50 }
|
|
70
74
|
};
|
|
71
75
|
const result = flatMapEntityValues(values);
|
|
72
76
|
expect(result).toEqual({
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
/**
|
|
3
|
-
* Holds the dialog state + rendering props that ConfigControllerProvider
|
|
4
|
-
* sets and CollectionEditorDialogs reads.
|
|
5
|
-
*
|
|
6
|
-
* This indirection exists because ConfigControllerProvider is a root-scope
|
|
7
|
-
* plugin provider that wraps <RebaseShell>, therefore living ABOVE the CMS
|
|
8
|
-
* context providers (CollectionRegistryContext, NavigationStateContext,
|
|
9
|
-
* UrlContext). The actual dialog components need those contexts, so they
|
|
10
|
-
* must render inside the shell tree.
|
|
11
|
-
*/
|
|
12
|
-
export interface CollectionEditorDialogsState {
|
|
13
|
-
/** Props for the active CollectionEditorDialog, or undefined when closed. */
|
|
14
|
-
collectionDialogProps: Record<string, any> | undefined;
|
|
15
|
-
/** Props for the active PropertyFormDialog, or undefined when closed. */
|
|
16
|
-
propertyDialogProps: Record<string, any> | undefined;
|
|
17
|
-
}
|
|
18
|
-
export declare const CollectionEditorDialogsContext: React.Context<CollectionEditorDialogsState | undefined>;
|
|
19
|
-
export declare function useCollectionEditorDialogsState(): CollectionEditorDialogsState | undefined;
|