@rebasepro/plugin-data-enhancement 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (633) hide show
  1. package/dist/{plugin-data-enhancement/src/components → components}/DataEnhancementControllerProvider.d.ts +2 -2
  2. package/dist/{plugin-data-enhancement/src/components → components}/FormEnhanceAction.d.ts +2 -1
  3. package/dist/index.es.js +703 -716
  4. package/dist/index.es.js.map +1 -1
  5. package/dist/index.umd.js +771 -749
  6. package/dist/index.umd.js.map +1 -1
  7. package/package.json +26 -17
  8. package/src/tests/strings_counter.test.ts +31 -15
  9. package/src/tests/useDataEnhancementPlugin.test.tsx +51 -0
  10. package/src/tests/values.test.ts +8 -4
  11. package/dist/admin/src/collection_editor/CollectionEditorDialogsContext.d.ts +0 -19
  12. package/dist/admin/src/collection_editor/ConfigControllerProvider.d.ts +0 -36
  13. package/dist/admin/src/collection_editor/_cms_internals.d.ts +0 -29
  14. package/dist/admin/src/collection_editor/api/generateCollectionApi.d.ts +0 -77
  15. package/dist/admin/src/collection_editor/index.d.ts +0 -15
  16. package/dist/admin/src/collection_editor/pgColumnToProperty.d.ts +0 -6
  17. package/dist/admin/src/collection_editor/types/collection_editor_controller.d.ts +0 -57
  18. package/dist/admin/src/collection_editor/types/collection_inference.d.ts +0 -10
  19. package/dist/admin/src/collection_editor/types/config_controller.d.ts +0 -98
  20. package/dist/admin/src/collection_editor/ui/EditorCollectionAction.d.ts +0 -2
  21. package/dist/admin/src/collection_editor/ui/MissingReferenceWidget.d.ts +0 -3
  22. package/dist/admin/src/collection_editor/ui/collection_editor/AICollectionGeneratorPopover.d.ts +0 -36
  23. package/dist/admin/src/collection_editor/ui/collection_editor/AIModifiedPathsContext.d.ts +0 -20
  24. package/dist/admin/src/collection_editor/ui/collection_editor/CollectionEditorDialog.d.ts +0 -71
  25. package/dist/admin/src/collection_editor/ui/collection_editor/CollectionEditorWelcomeView.d.ts +0 -19
  26. package/dist/admin/src/collection_editor/ui/collection_editor/CollectionJsonImportDialog.d.ts +0 -7
  27. package/dist/admin/src/collection_editor/ui/collection_editor/CollectionPropertiesEditorForm.d.ts +0 -16
  28. package/dist/admin/src/collection_editor/ui/collection_editor/CollectionRLSTab.d.ts +0 -12
  29. package/dist/admin/src/collection_editor/ui/collection_editor/CollectionStudioView.d.ts +0 -5
  30. package/dist/admin/src/collection_editor/ui/collection_editor/CollectionYupValidation.d.ts +0 -14
  31. package/dist/admin/src/collection_editor/ui/collection_editor/CollectionsStudioView.d.ts +0 -5
  32. package/dist/admin/src/collection_editor/ui/collection_editor/DisplaySettingsForm.d.ts +0 -3
  33. package/dist/admin/src/collection_editor/ui/collection_editor/EnumForm.d.ts +0 -12
  34. package/dist/admin/src/collection_editor/ui/collection_editor/GeneralSettingsForm.d.ts +0 -7
  35. package/dist/admin/src/collection_editor/ui/collection_editor/GetCodeDialog.d.ts +0 -6
  36. package/dist/admin/src/collection_editor/ui/collection_editor/KanbanConfigSection.d.ts +0 -4
  37. package/dist/admin/src/collection_editor/ui/collection_editor/LayoutModeSwitch.d.ts +0 -5
  38. package/dist/admin/src/collection_editor/ui/collection_editor/PropertyEditView.d.ts +0 -48
  39. package/dist/admin/src/collection_editor/ui/collection_editor/PropertyFieldPreview.d.ts +0 -16
  40. package/dist/admin/src/collection_editor/ui/collection_editor/PropertyTree.d.ts +0 -31
  41. package/dist/admin/src/collection_editor/ui/collection_editor/SwitchControl.d.ts +0 -8
  42. package/dist/admin/src/collection_editor/ui/collection_editor/ViewModeSwitch.d.ts +0 -6
  43. package/dist/admin/src/collection_editor/ui/collection_editor/import/CollectionEditorImportDataPreview.d.ts +0 -7
  44. package/dist/admin/src/collection_editor/ui/collection_editor/import/CollectionEditorImportMapping.d.ts +0 -13
  45. package/dist/admin/src/collection_editor/ui/collection_editor/import/clean_import_data.d.ts +0 -7
  46. package/dist/admin/src/collection_editor/ui/collection_editor/properties/BlockPropertyField.d.ts +0 -7
  47. package/dist/admin/src/collection_editor/ui/collection_editor/properties/BooleanPropertyField.d.ts +0 -3
  48. package/dist/admin/src/collection_editor/ui/collection_editor/properties/CommonPropertyFields.d.ts +0 -10
  49. package/dist/admin/src/collection_editor/ui/collection_editor/properties/DateTimePropertyField.d.ts +0 -3
  50. package/dist/admin/src/collection_editor/ui/collection_editor/properties/EnumPropertyField.d.ts +0 -9
  51. package/dist/admin/src/collection_editor/ui/collection_editor/properties/KeyValuePropertyField.d.ts +0 -3
  52. package/dist/admin/src/collection_editor/ui/collection_editor/properties/MapPropertyField.d.ts +0 -7
  53. package/dist/admin/src/collection_editor/ui/collection_editor/properties/MarkdownPropertyField.d.ts +0 -4
  54. package/dist/admin/src/collection_editor/ui/collection_editor/properties/NumberPropertyField.d.ts +0 -3
  55. package/dist/admin/src/collection_editor/ui/collection_editor/properties/ReferencePropertyField.d.ts +0 -14
  56. package/dist/admin/src/collection_editor/ui/collection_editor/properties/RelationPropertyField.d.ts +0 -9
  57. package/dist/admin/src/collection_editor/ui/collection_editor/properties/RepeatPropertyField.d.ts +0 -9
  58. package/dist/admin/src/collection_editor/ui/collection_editor/properties/StoragePropertyField.d.ts +0 -5
  59. package/dist/admin/src/collection_editor/ui/collection_editor/properties/StringPropertyField.d.ts +0 -5
  60. package/dist/admin/src/collection_editor/ui/collection_editor/properties/UrlPropertyField.d.ts +0 -4
  61. package/dist/admin/src/collection_editor/ui/collection_editor/properties/VectorPropertyField.d.ts +0 -3
  62. package/dist/admin/src/collection_editor/ui/collection_editor/properties/advanced/AdvancedPropertyValidation.d.ts +0 -3
  63. package/dist/admin/src/collection_editor/ui/collection_editor/properties/validation/ArrayPropertyValidation.d.ts +0 -5
  64. package/dist/admin/src/collection_editor/ui/collection_editor/properties/validation/GeneralPropertyValidation.d.ts +0 -4
  65. package/dist/admin/src/collection_editor/ui/collection_editor/properties/validation/NumberPropertyValidation.d.ts +0 -3
  66. package/dist/admin/src/collection_editor/ui/collection_editor/properties/validation/StringPropertyValidation.d.ts +0 -11
  67. package/dist/admin/src/collection_editor/ui/collection_editor/properties/validation/ValidationPanel.d.ts +0 -3
  68. package/dist/admin/src/collection_editor/ui/collection_editor/templates/blog_template.d.ts +0 -2
  69. package/dist/admin/src/collection_editor/ui/collection_editor/templates/pages_template.d.ts +0 -2
  70. package/dist/admin/src/collection_editor/ui/collection_editor/templates/products_template.d.ts +0 -2
  71. package/dist/admin/src/collection_editor/ui/collection_editor/templates/users_template.d.ts +0 -2
  72. package/dist/admin/src/collection_editor/ui/collection_editor/util.d.ts +0 -5
  73. package/dist/admin/src/collection_editor/ui/collection_editor/utils/strings.d.ts +0 -1
  74. package/dist/admin/src/collection_editor/ui/collection_editor/utils/supported_fields.d.ts +0 -3
  75. package/dist/admin/src/collection_editor/ui/collection_editor/utils/update_property_for_widget.d.ts +0 -2
  76. package/dist/admin/src/collection_editor/useCollectionEditorController.d.ts +0 -6
  77. package/dist/admin/src/collection_editor/useCollectionsConfigController.d.ts +0 -6
  78. package/dist/admin/src/collection_editor/useLocalCollectionsConfigController.d.ts +0 -6
  79. package/dist/admin/src/collection_editor/validateCollectionJson.d.ts +0 -22
  80. package/dist/admin/src/components/AdminModeSyncer.d.ts +0 -17
  81. package/dist/admin/src/components/ArrayContainer.d.ts +0 -58
  82. package/dist/admin/src/components/ClearFilterSortButton.d.ts +0 -5
  83. package/dist/admin/src/components/CollectionEditorDialogs.d.ts +0 -15
  84. package/dist/admin/src/components/CollectionPanel.d.ts +0 -83
  85. package/dist/admin/src/components/DefaultAppBar.d.ts +0 -46
  86. package/dist/admin/src/components/DefaultDrawer.d.ts +0 -77
  87. package/dist/admin/src/components/DeleteEntityDialog.d.ts +0 -13
  88. package/dist/admin/src/components/DrawerNavigationGroup.d.ts +0 -49
  89. package/dist/admin/src/components/DrawerNavigationItem.d.ts +0 -10
  90. package/dist/admin/src/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +0 -39
  91. package/dist/admin/src/components/EntityCollectionTable/EntityCollectionTable.d.ts +0 -27
  92. package/dist/admin/src/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +0 -129
  93. package/dist/admin/src/components/EntityCollectionTable/PropertyTableCell.d.ts +0 -26
  94. package/dist/admin/src/components/EntityCollectionTable/column_utils.d.ts +0 -16
  95. package/dist/admin/src/components/EntityCollectionTable/fields/TableMultipleRelationField.d.ts +0 -21
  96. package/dist/admin/src/components/EntityCollectionTable/fields/TableReferenceField.d.ts +0 -22
  97. package/dist/admin/src/components/EntityCollectionTable/fields/TableRelationField.d.ts +0 -22
  98. package/dist/admin/src/components/EntityCollectionTable/fields/TableRelationSelectorField.d.ts +0 -20
  99. package/dist/admin/src/components/EntityCollectionTable/fields/TableStorageUpload.d.ts +0 -35
  100. package/dist/admin/src/components/EntityCollectionTable/fields/VirtualTableDateField.d.ts +0 -12
  101. package/dist/admin/src/components/EntityCollectionTable/fields/VirtualTableInput.d.ts +0 -9
  102. package/dist/admin/src/components/EntityCollectionTable/fields/VirtualTableNumberInput.d.ts +0 -8
  103. package/dist/admin/src/components/EntityCollectionTable/fields/VirtualTableSelect.d.ts +0 -15
  104. package/dist/admin/src/components/EntityCollectionTable/fields/VirtualTableSwitch.d.ts +0 -7
  105. package/dist/admin/src/components/EntityCollectionTable/fields/VirtualTableUserSelect.d.ts +0 -12
  106. package/dist/admin/src/components/EntityCollectionTable/index.d.ts +0 -6
  107. package/dist/admin/src/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +0 -25
  108. package/dist/admin/src/components/EntityCollectionTable/internal/EntityTableCell.d.ts +0 -32
  109. package/dist/admin/src/components/EntityCollectionTable/internal/EntityTableCellActions.d.ts +0 -9
  110. package/dist/admin/src/components/EntityCollectionTable/internal/common.d.ts +0 -5
  111. package/dist/admin/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +0 -27
  112. package/dist/admin/src/components/EntityCollectionTable/internal/popup_field/useDraggable.d.ts +0 -13
  113. package/dist/admin/src/components/EntityCollectionTable/internal/popup_field/useWindowSize.d.ts +0 -6
  114. package/dist/admin/src/components/EntityCollectionTable/table_bindings.d.ts +0 -29
  115. package/dist/admin/src/components/EntityCollectionView/Board.d.ts +0 -2
  116. package/dist/admin/src/components/EntityCollectionView/BoardColumn.d.ts +0 -42
  117. package/dist/admin/src/components/EntityCollectionView/BoardColumnTitle.d.ts +0 -9
  118. package/dist/admin/src/components/EntityCollectionView/BoardSortableList.d.ts +0 -14
  119. package/dist/admin/src/components/EntityCollectionView/EntityBoardCard.d.ts +0 -31
  120. package/dist/admin/src/components/EntityCollectionView/EntityCard.d.ts +0 -20
  121. package/dist/admin/src/components/EntityCollectionView/EntityCollectionBoardView.d.ts +0 -22
  122. package/dist/admin/src/components/EntityCollectionView/EntityCollectionCardView.d.ts +0 -32
  123. package/dist/admin/src/components/EntityCollectionView/EntityCollectionListView.d.ts +0 -50
  124. package/dist/admin/src/components/EntityCollectionView/EntityCollectionView.d.ts +0 -65
  125. package/dist/admin/src/components/EntityCollectionView/EntityCollectionViewActions.d.ts +0 -20
  126. package/dist/admin/src/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +0 -20
  127. package/dist/admin/src/components/EntityCollectionView/FilterPresetsButton.d.ts +0 -21
  128. package/dist/admin/src/components/EntityCollectionView/FiltersDialog.d.ts +0 -15
  129. package/dist/admin/src/components/EntityCollectionView/SplitListView.d.ts +0 -58
  130. package/dist/admin/src/components/EntityCollectionView/ViewModeToggle.d.ts +0 -44
  131. package/dist/admin/src/components/EntityCollectionView/board_types.d.ts +0 -105
  132. package/dist/admin/src/components/EntityCollectionView/hooks/useCollectionInlineEditor.d.ts +0 -12
  133. package/dist/admin/src/components/EntityCollectionView/hooks/useKanbanDragAndDrop.d.ts +0 -20
  134. package/dist/admin/src/components/EntityCollectionView/useBoardDataController.d.ts +0 -61
  135. package/dist/admin/src/components/EntityCollectionView/useEntityPreviewSlots.d.ts +0 -101
  136. package/dist/admin/src/components/EntityCollectionView/useSelectionController.d.ts +0 -2
  137. package/dist/admin/src/components/EntityCollectionView/utils.d.ts +0 -3
  138. package/dist/admin/src/components/EntityDetailView.d.ts +0 -28
  139. package/dist/admin/src/components/EntityEditView.d.ts +0 -57
  140. package/dist/admin/src/components/EntityEditViewFormActions.d.ts +0 -2
  141. package/dist/admin/src/components/EntityJsonPreview.d.ts +0 -3
  142. package/dist/admin/src/components/EntityPreview.d.ts +0 -56
  143. package/dist/admin/src/components/EntitySidePanel.d.ts +0 -10
  144. package/dist/admin/src/components/EntityView.d.ts +0 -12
  145. package/dist/admin/src/components/FieldCaption.d.ts +0 -5
  146. package/dist/admin/src/components/HomePage/ContentHomePage.d.ts +0 -11
  147. package/dist/admin/src/components/HomePage/FavouritesView.d.ts +0 -3
  148. package/dist/admin/src/components/HomePage/HomePageDnD.d.ts +0 -77
  149. package/dist/admin/src/components/HomePage/NavigationCard.d.ts +0 -11
  150. package/dist/admin/src/components/HomePage/NavigationCardBinding.d.ts +0 -18
  151. package/dist/admin/src/components/HomePage/NavigationGroup.d.ts +0 -11
  152. package/dist/admin/src/components/HomePage/RenameGroupDialog.d.ts +0 -9
  153. package/dist/admin/src/components/HomePage/SmallNavigationCard.d.ts +0 -6
  154. package/dist/admin/src/components/PropertyCollectionView.d.ts +0 -24
  155. package/dist/admin/src/components/PropertyConfigBadge.d.ts +0 -6
  156. package/dist/admin/src/components/PropertyIdCopyTooltip.d.ts +0 -8
  157. package/dist/admin/src/components/RebaseAuthGate.d.ts +0 -21
  158. package/dist/admin/src/components/RebaseCMS.d.ts +0 -10
  159. package/dist/admin/src/components/RebaseLayout.d.ts +0 -32
  160. package/dist/admin/src/components/RebaseNavigation.d.ts +0 -24
  161. package/dist/admin/src/components/RebaseRouteDefs.d.ts +0 -30
  162. package/dist/admin/src/components/RebaseShell.d.ts +0 -25
  163. package/dist/admin/src/components/ReferenceTable/EntitySelectionTable.d.ts +0 -59
  164. package/dist/admin/src/components/ReferenceWidget.d.ts +0 -30
  165. package/dist/admin/src/components/RelationSelector.d.ts +0 -32
  166. package/dist/admin/src/components/SearchIconsView.d.ts +0 -5
  167. package/dist/admin/src/components/SelectableTable/SelectableTable.d.ts +0 -95
  168. package/dist/admin/src/components/SelectableTable/SelectableTableContext.d.ts +0 -4
  169. package/dist/admin/src/components/SelectableTable/SelectionStore.d.ts +0 -29
  170. package/dist/admin/src/components/SelectableTable/filters/BooleanFilterField.d.ts +0 -9
  171. package/dist/admin/src/components/SelectableTable/filters/DateTimeFilterField.d.ts +0 -12
  172. package/dist/admin/src/components/SelectableTable/filters/ReferenceFilterField.d.ts +0 -15
  173. package/dist/admin/src/components/SelectableTable/filters/RelationFilterField.d.ts +0 -12
  174. package/dist/admin/src/components/SelectableTable/filters/StringNumberFilterField.d.ts +0 -13
  175. package/dist/admin/src/components/SideDialogs.d.ts +0 -25
  176. package/dist/admin/src/components/SideEntityProvider.d.ts +0 -32
  177. package/dist/admin/src/components/UserSelector.d.ts +0 -18
  178. package/dist/admin/src/components/admin/CreationResultDialog.d.ts +0 -5
  179. package/dist/admin/src/components/app/AppBar.d.ts +0 -12
  180. package/dist/admin/src/components/app/Drawer.d.ts +0 -26
  181. package/dist/admin/src/components/app/Scaffold.d.ts +0 -34
  182. package/dist/admin/src/components/app/useApp.d.ts +0 -17
  183. package/dist/admin/src/components/common/default_entity_actions.d.ts +0 -10
  184. package/dist/admin/src/components/common/index.d.ts +0 -1
  185. package/dist/admin/src/components/field_configs.d.ts +0 -7
  186. package/dist/admin/src/components/history/EntityHistoryEntry.d.ts +0 -17
  187. package/dist/admin/src/components/history/EntityHistoryView.d.ts +0 -6
  188. package/dist/admin/src/components/history/LastEditedByFormAction.d.ts +0 -6
  189. package/dist/admin/src/components/history/LastEditedByIndicator.d.ts +0 -10
  190. package/dist/admin/src/components/history/UserChip.d.ts +0 -4
  191. package/dist/admin/src/components/history/index.d.ts +0 -5
  192. package/dist/admin/src/components/index.d.ts +0 -40
  193. package/dist/admin/src/contexts/BreacrumbsContext.d.ts +0 -8
  194. package/dist/admin/src/contexts/SideDialogsControllerContext.d.ts +0 -3
  195. package/dist/admin/src/data_export/export/BasicExportAction.d.ts +0 -7
  196. package/dist/admin/src/data_export/export/ExportCollectionAction.d.ts +0 -11
  197. package/dist/admin/src/data_export/export/export.d.ts +0 -22
  198. package/dist/admin/src/data_export/export/index.d.ts +0 -3
  199. package/dist/admin/src/data_export/index.d.ts +0 -1
  200. package/dist/admin/src/data_import/components/DataNewPropertiesMapping.d.ts +0 -13
  201. package/dist/admin/src/data_import/components/ImportFileUpload.d.ts +0 -3
  202. package/dist/admin/src/data_import/components/ImportNewPropertyFieldPreview.d.ts +0 -9
  203. package/dist/admin/src/data_import/components/ImportSaveInProgress.d.ts +0 -8
  204. package/dist/admin/src/data_import/components/index.d.ts +0 -4
  205. package/dist/admin/src/data_import/hooks/index.d.ts +0 -1
  206. package/dist/admin/src/data_import/hooks/useImportConfig.d.ts +0 -2
  207. package/dist/admin/src/data_import/import/ImportCollectionAction.d.ts +0 -15
  208. package/dist/admin/src/data_import/import/index.d.ts +0 -1
  209. package/dist/admin/src/data_import/index.d.ts +0 -5
  210. package/dist/admin/src/data_import/types/column_mapping.d.ts +0 -20
  211. package/dist/admin/src/data_import/types/index.d.ts +0 -1
  212. package/dist/admin/src/data_import/utils/data.d.ts +0 -4
  213. package/dist/admin/src/data_import/utils/file_headers.d.ts +0 -6
  214. package/dist/admin/src/data_import/utils/file_to_json.d.ts +0 -6
  215. package/dist/admin/src/data_import/utils/get_import_inference_type.d.ts +0 -2
  216. package/dist/admin/src/data_import/utils/index.d.ts +0 -3
  217. package/dist/admin/src/data_import/utils/transforms.d.ts +0 -11
  218. package/dist/admin/src/editor/components/SlashCommandMenu.d.ts +0 -6
  219. package/dist/admin/src/editor/components/editor-bubble-item.d.ts +0 -8
  220. package/dist/admin/src/editor/components/editor-bubble.d.ts +0 -12
  221. package/dist/admin/src/editor/components/image-bubble.d.ts +0 -9
  222. package/dist/admin/src/editor/components/index.d.ts +0 -16
  223. package/dist/admin/src/editor/components/table-bubble.d.ts +0 -9
  224. package/dist/admin/src/editor/editor.d.ts +0 -30
  225. package/dist/admin/src/editor/extensions/HighlightDecorationExtension.d.ts +0 -24
  226. package/dist/admin/src/editor/extensions/Image.d.ts +0 -6
  227. package/dist/admin/src/editor/extensions/TextLoadingDecorationExtension.d.ts +0 -16
  228. package/dist/admin/src/editor/extensions/clipboard.d.ts +0 -7
  229. package/dist/admin/src/editor/extensions/drag-and-drop.d.ts +0 -9
  230. package/dist/admin/src/editor/hooks/useProseMirror.d.ts +0 -13
  231. package/dist/admin/src/editor/hooks/useProseMirrorContext.d.ts +0 -9
  232. package/dist/admin/src/editor/index.d.ts +0 -2
  233. package/dist/admin/src/editor/markdown.d.ts +0 -5
  234. package/dist/admin/src/editor/nodeViews/ImageComponent.d.ts +0 -3
  235. package/dist/admin/src/editor/nodeViews/ReactNodeView.d.ts +0 -32
  236. package/dist/admin/src/editor/nodeViews/TaskItemComponent.d.ts +0 -3
  237. package/dist/admin/src/editor/nodeViews/index.d.ts +0 -6
  238. package/dist/admin/src/editor/plugins/index.d.ts +0 -2
  239. package/dist/admin/src/editor/plugins/inputrules.d.ts +0 -6
  240. package/dist/admin/src/editor/plugins/placeholderPlugin.d.ts +0 -3
  241. package/dist/admin/src/editor/plugins/slashCommandPlugin.d.ts +0 -12
  242. package/dist/admin/src/editor/schema.d.ts +0 -2
  243. package/dist/admin/src/editor/selectors/link-selector.d.ts +0 -8
  244. package/dist/admin/src/editor/selectors/node-selector.d.ts +0 -15
  245. package/dist/admin/src/editor/selectors/text-buttons.d.ts +0 -1
  246. package/dist/admin/src/editor/types.d.ts +0 -5
  247. package/dist/admin/src/editor/utils/prosemirror-utils.d.ts +0 -7
  248. package/dist/admin/src/editor/utils/remove_classes.d.ts +0 -1
  249. package/dist/admin/src/form/EntityForm.d.ts +0 -10
  250. package/dist/admin/src/form/EntityFormActions.d.ts +0 -2
  251. package/dist/admin/src/form/PropertyFieldBinding.d.ts +0 -30
  252. package/dist/admin/src/form/components/ErrorFocus.d.ts +0 -4
  253. package/dist/admin/src/form/components/FieldHelperText.d.ts +0 -12
  254. package/dist/admin/src/form/components/FormEntry.d.ts +0 -6
  255. package/dist/admin/src/form/components/FormLayout.d.ts +0 -5
  256. package/dist/admin/src/form/components/LabelWithIcon.d.ts +0 -14
  257. package/dist/admin/src/form/components/LabelWithIconAndTooltip.d.ts +0 -15
  258. package/dist/admin/src/form/components/LocalChangesMenu.d.ts +0 -11
  259. package/dist/admin/src/form/components/StorageItemPreview.d.ts +0 -14
  260. package/dist/admin/src/form/components/StorageUploadProgress.d.ts +0 -10
  261. package/dist/admin/src/form/components/index.d.ts +0 -5
  262. package/dist/admin/src/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +0 -10
  263. package/dist/admin/src/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +0 -13
  264. package/dist/admin/src/form/field_bindings/BlockFieldBinding.d.ts +0 -11
  265. package/dist/admin/src/form/field_bindings/DateTimeFieldBinding.d.ts +0 -12
  266. package/dist/admin/src/form/field_bindings/KeyValueFieldBinding.d.ts +0 -8
  267. package/dist/admin/src/form/field_bindings/MapFieldBinding.d.ts +0 -10
  268. package/dist/admin/src/form/field_bindings/MarkdownEditorFieldBinding.d.ts +0 -12
  269. package/dist/admin/src/form/field_bindings/MultiSelectFieldBinding.d.ts +0 -10
  270. package/dist/admin/src/form/field_bindings/MultipleRelationFieldBinding.d.ts +0 -10
  271. package/dist/admin/src/form/field_bindings/ReadOnlyFieldBinding.d.ts +0 -11
  272. package/dist/admin/src/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +0 -10
  273. package/dist/admin/src/form/field_bindings/ReferenceFieldBinding.d.ts +0 -10
  274. package/dist/admin/src/form/field_bindings/RelationFieldBinding.d.ts +0 -3
  275. package/dist/admin/src/form/field_bindings/RepeatFieldBinding.d.ts +0 -11
  276. package/dist/admin/src/form/field_bindings/SelectFieldBinding.d.ts +0 -11
  277. package/dist/admin/src/form/field_bindings/StorageUploadFieldBinding.d.ts +0 -21
  278. package/dist/admin/src/form/field_bindings/SwitchFieldBinding.d.ts +0 -10
  279. package/dist/admin/src/form/field_bindings/TextFieldBinding.d.ts +0 -9
  280. package/dist/admin/src/form/field_bindings/UserSelectFieldBinding.d.ts +0 -14
  281. package/dist/admin/src/form/field_bindings/VectorFieldBinding.d.ts +0 -11
  282. package/dist/admin/src/form/index.d.ts +0 -21
  283. package/dist/admin/src/form/useClearRestoreValue.d.ts +0 -13
  284. package/dist/admin/src/form/validation.d.ts +0 -21
  285. package/dist/admin/src/hooks/index.d.ts +0 -15
  286. package/dist/admin/src/hooks/navigation/contexts/CollectionRegistryContext.d.ts +0 -5
  287. package/dist/admin/src/hooks/navigation/contexts/NavigationStateContext.d.ts +0 -4
  288. package/dist/admin/src/hooks/navigation/contexts/UrlContext.d.ts +0 -4
  289. package/dist/admin/src/hooks/navigation/contexts/index.d.ts +0 -3
  290. package/dist/admin/src/hooks/navigation/useBuildCollectionRegistryController.d.ts +0 -7
  291. package/dist/admin/src/hooks/navigation/useBuildNavigationStateController.d.ts +0 -34
  292. package/dist/admin/src/hooks/navigation/useBuildUrlController.d.ts +0 -7
  293. package/dist/admin/src/hooks/navigation/useNavigationResolution.d.ts +0 -7
  294. package/dist/admin/src/hooks/navigation/useResolvedCollections.d.ts +0 -34
  295. package/dist/admin/src/hooks/navigation/useResolvedViews.d.ts +0 -26
  296. package/dist/admin/src/hooks/navigation/useTopLevelNavigation.d.ts +0 -27
  297. package/dist/admin/src/hooks/navigation/utils.d.ts +0 -12
  298. package/dist/admin/src/hooks/useBreadcrumbsController.d.ts +0 -42
  299. package/dist/admin/src/hooks/useBuildSideDialogsController.d.ts +0 -2
  300. package/dist/admin/src/hooks/useBuildSideEntityController.d.ts +0 -6
  301. package/dist/admin/src/hooks/useCMSContext.d.ts +0 -27
  302. package/dist/admin/src/hooks/useEntityHistory.d.ts +0 -30
  303. package/dist/admin/src/hooks/useEntitySelectionDialog.d.ts +0 -18
  304. package/dist/admin/src/hooks/useResolvedNavigationFrom.d.ts +0 -73
  305. package/dist/admin/src/hooks/useSideDialogsController.d.ts +0 -19
  306. package/dist/admin/src/hooks/useSideEntityController.d.ts +0 -11
  307. package/dist/admin/src/index.d.ts +0 -13
  308. package/dist/admin/src/preview/PropertyPreview.d.ts +0 -7
  309. package/dist/admin/src/preview/components/ArrayEnumPreview.d.ts +0 -11
  310. package/dist/admin/src/preview/components/BooleanPreview.d.ts +0 -11
  311. package/dist/admin/src/preview/components/DatePreview.d.ts +0 -17
  312. package/dist/admin/src/preview/components/EmptyValue.d.ts +0 -6
  313. package/dist/admin/src/preview/components/EnumValuesChip.d.ts +0 -13
  314. package/dist/admin/src/preview/components/ImagePreview.d.ts +0 -16
  315. package/dist/admin/src/preview/components/ReferencePreview.d.ts +0 -17
  316. package/dist/admin/src/preview/components/RelationPreview.d.ts +0 -17
  317. package/dist/admin/src/preview/components/StorageThumbnail.d.ts +0 -15
  318. package/dist/admin/src/preview/components/UrlComponentPreview.d.ts +0 -15
  319. package/dist/admin/src/preview/components/UserPreview.d.ts +0 -9
  320. package/dist/admin/src/preview/index.d.ts +0 -23
  321. package/dist/admin/src/preview/property_previews/ArrayOfMapsPreview.d.ts +0 -6
  322. package/dist/admin/src/preview/property_previews/ArrayOfReferencesPreview.d.ts +0 -6
  323. package/dist/admin/src/preview/property_previews/ArrayOfRelationsPreview.d.ts +0 -6
  324. package/dist/admin/src/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +0 -6
  325. package/dist/admin/src/preview/property_previews/ArrayOfStringsPreview.d.ts +0 -6
  326. package/dist/admin/src/preview/property_previews/ArrayOneOfPreview.d.ts +0 -6
  327. package/dist/admin/src/preview/property_previews/ArrayPropertyEnumPreview.d.ts +0 -6
  328. package/dist/admin/src/preview/property_previews/ArrayPropertyPreview.d.ts +0 -6
  329. package/dist/admin/src/preview/property_previews/MapPropertyPreview.d.ts +0 -9
  330. package/dist/admin/src/preview/property_previews/NumberPropertyPreview.d.ts +0 -7
  331. package/dist/admin/src/preview/property_previews/SkeletonPropertyComponent.d.ts +0 -14
  332. package/dist/admin/src/preview/property_previews/StringPropertyPreview.d.ts +0 -7
  333. package/dist/admin/src/preview/util.d.ts +0 -7
  334. package/dist/admin/src/routes/CustomViewRoute.d.ts +0 -4
  335. package/dist/admin/src/routes/RebaseRoute.d.ts +0 -1
  336. package/dist/admin/src/routes/index.d.ts +0 -2
  337. package/dist/admin/src/types/components/EntityFormActionsProps.d.ts +0 -19
  338. package/dist/admin/src/types/components/EntityFormProps.d.ts +0 -49
  339. package/dist/admin/src/types/components/PropertyPreviewProps.d.ts +0 -47
  340. package/dist/admin/src/types/components/formex.d.ts +0 -40
  341. package/dist/admin/src/types/components/index.d.ts +0 -3
  342. package/dist/admin/src/types/fields.d.ts +0 -221
  343. package/dist/admin/src/types/index.d.ts +0 -2
  344. package/dist/admin/src/util/entity_actions.d.ts +0 -2
  345. package/dist/admin/src/util/entity_view_constants.d.ts +0 -6
  346. package/dist/admin/src/util/index.d.ts +0 -5
  347. package/dist/admin/src/util/navigation_utils.d.ts +0 -26
  348. package/dist/admin/src/util/previews.d.ts +0 -4
  349. package/dist/admin/src/util/property_utils.d.ts +0 -25
  350. package/dist/admin/src/util/resolutions.d.ts +0 -8
  351. package/dist/common/src/collections/CollectionRegistry.d.ts +0 -56
  352. package/dist/common/src/collections/default-collections.d.ts +0 -9
  353. package/dist/common/src/collections/index.d.ts +0 -2
  354. package/dist/common/src/data/buildRebaseData.d.ts +0 -14
  355. package/dist/common/src/data/query_builder.d.ts +0 -55
  356. package/dist/common/src/index.d.ts +0 -4
  357. package/dist/common/src/util/builders.d.ts +0 -57
  358. package/dist/common/src/util/callbacks.d.ts +0 -6
  359. package/dist/common/src/util/collections.d.ts +0 -11
  360. package/dist/common/src/util/common.d.ts +0 -2
  361. package/dist/common/src/util/conditions.d.ts +0 -26
  362. package/dist/common/src/util/entities.d.ts +0 -58
  363. package/dist/common/src/util/enums.d.ts +0 -3
  364. package/dist/common/src/util/index.d.ts +0 -16
  365. package/dist/common/src/util/navigation_from_path.d.ts +0 -34
  366. package/dist/common/src/util/navigation_utils.d.ts +0 -20
  367. package/dist/common/src/util/parent_references_from_path.d.ts +0 -6
  368. package/dist/common/src/util/paths.d.ts +0 -14
  369. package/dist/common/src/util/permissions.d.ts +0 -14
  370. package/dist/common/src/util/references.d.ts +0 -2
  371. package/dist/common/src/util/relations.d.ts +0 -22
  372. package/dist/common/src/util/resolutions.d.ts +0 -72
  373. package/dist/common/src/util/storage.d.ts +0 -24
  374. package/dist/core/src/components/AIIcon.d.ts +0 -16
  375. package/dist/core/src/components/BootstrapAdminBanner.d.ts +0 -4
  376. package/dist/core/src/components/ConfirmationDialog.d.ts +0 -9
  377. package/dist/core/src/components/Debug/UIReferenceView.d.ts +0 -1
  378. package/dist/core/src/components/Debug/UIStyleGuide.d.ts +0 -1
  379. package/dist/core/src/components/ErrorTooltip.d.ts +0 -2
  380. package/dist/core/src/components/ErrorView.d.ts +0 -21
  381. package/dist/core/src/components/LanguageToggle.d.ts +0 -1
  382. package/dist/core/src/components/LoginView/LoginView.d.ts +0 -109
  383. package/dist/core/src/components/LoginView/index.d.ts +0 -2
  384. package/dist/core/src/components/NotFoundPage.d.ts +0 -1
  385. package/dist/core/src/components/RebaseAuth.d.ts +0 -10
  386. package/dist/core/src/components/RebaseLogo.d.ts +0 -7
  387. package/dist/core/src/components/UnsavedChangesDialog.d.ts +0 -9
  388. package/dist/core/src/components/UserDisplay.d.ts +0 -7
  389. package/dist/core/src/components/UserSelectPopover.d.ts +0 -62
  390. package/dist/core/src/components/UserSettingsView.d.ts +0 -1
  391. package/dist/core/src/components/common/index.d.ts +0 -6
  392. package/dist/core/src/components/common/table_height.d.ts +0 -5
  393. package/dist/core/src/components/common/types.d.ts +0 -66
  394. package/dist/core/src/components/common/useColumnsIds.d.ts +0 -9
  395. package/dist/core/src/components/common/useDataTableController.d.ts +0 -45
  396. package/dist/core/src/components/common/useDebouncedData.d.ts +0 -9
  397. package/dist/core/src/components/common/useScrollRestoration.d.ts +0 -14
  398. package/dist/core/src/components/index.d.ts +0 -17
  399. package/dist/core/src/contexts/AdminModeController.d.ts +0 -4
  400. package/dist/core/src/contexts/AnalyticsContext.d.ts +0 -3
  401. package/dist/core/src/contexts/AuthControllerContext.d.ts +0 -3
  402. package/dist/core/src/contexts/CustomizationControllerContext.d.ts +0 -3
  403. package/dist/core/src/contexts/DataDriverContext.d.ts +0 -3
  404. package/dist/core/src/contexts/DatabaseAdminContext.d.ts +0 -3
  405. package/dist/core/src/contexts/DialogsProvider.d.ts +0 -4
  406. package/dist/core/src/contexts/EffectiveRoleController.d.ts +0 -4
  407. package/dist/core/src/contexts/InternalUserManagementContext.d.ts +0 -3
  408. package/dist/core/src/contexts/ModeController.d.ts +0 -4
  409. package/dist/core/src/contexts/RebaseClientInstanceContext.d.ts +0 -6
  410. package/dist/core/src/contexts/RebaseDataContext.d.ts +0 -3
  411. package/dist/core/src/contexts/SnackbarProvider.d.ts +0 -2
  412. package/dist/core/src/contexts/StorageSourceContext.d.ts +0 -3
  413. package/dist/core/src/contexts/UserConfigurationPersistenceContext.d.ts +0 -3
  414. package/dist/core/src/contexts/index.d.ts +0 -13
  415. package/dist/core/src/core/PluginLifecycleManager.d.ts +0 -17
  416. package/dist/core/src/core/PluginProviderStack.d.ts +0 -21
  417. package/dist/core/src/core/Rebase.d.ts +0 -14
  418. package/dist/core/src/core/RebaseProps.d.ts +0 -147
  419. package/dist/core/src/core/RebaseRouter.d.ts +0 -4
  420. package/dist/core/src/core/RebaseRoutes.d.ts +0 -17
  421. package/dist/core/src/core/index.d.ts +0 -4
  422. package/dist/core/src/hooks/ApiConfigContext.d.ts +0 -24
  423. package/dist/core/src/hooks/data/delete.d.ts +0 -31
  424. package/dist/core/src/hooks/data/save.d.ts +0 -34
  425. package/dist/core/src/hooks/data/useCollectionFetch.d.ts +0 -62
  426. package/dist/core/src/hooks/data/useData.d.ts +0 -13
  427. package/dist/core/src/hooks/data/useDataOrder.d.ts +0 -12
  428. package/dist/core/src/hooks/data/useEntityFetch.d.ts +0 -43
  429. package/dist/core/src/hooks/data/useRelationSelector.d.ts +0 -52
  430. package/dist/core/src/hooks/data/useUserSelector.d.ts +0 -31
  431. package/dist/core/src/hooks/index.d.ts +0 -37
  432. package/dist/core/src/hooks/useAdminModeController.d.ts +0 -19
  433. package/dist/core/src/hooks/useAnalyticsController.d.ts +0 -5
  434. package/dist/core/src/hooks/useAuthController.d.ts +0 -11
  435. package/dist/core/src/hooks/useAuthSubscription.d.ts +0 -2
  436. package/dist/core/src/hooks/useBackendStorageSource.d.ts +0 -30
  437. package/dist/core/src/hooks/useBridgeRegistration.d.ts +0 -18
  438. package/dist/core/src/hooks/useBrowserTitleAndIcon.d.ts +0 -6
  439. package/dist/core/src/hooks/useBuildAdminModeController.d.ts +0 -6
  440. package/dist/core/src/hooks/useBuildEffectiveRoleController.d.ts +0 -8
  441. package/dist/core/src/hooks/useBuildLocalConfigurationPersistence.d.ts +0 -2
  442. package/dist/core/src/hooks/useBuildModeController.d.ts +0 -6
  443. package/dist/core/src/hooks/useClipboard.d.ts +0 -57
  444. package/dist/core/src/hooks/useCollapsedGroups.d.ts +0 -27
  445. package/dist/core/src/hooks/useCustomizationController.d.ts +0 -11
  446. package/dist/core/src/hooks/useDialogsController.d.ts +0 -11
  447. package/dist/core/src/hooks/useEffectiveRoleController.d.ts +0 -7
  448. package/dist/core/src/hooks/useInternalUserManagementController.d.ts +0 -12
  449. package/dist/core/src/hooks/useLargeLayout.d.ts +0 -1
  450. package/dist/core/src/hooks/useModeController.d.ts +0 -19
  451. package/dist/core/src/hooks/usePermissions.d.ts +0 -12
  452. package/dist/core/src/hooks/useRebaseClient.d.ts +0 -5
  453. package/dist/core/src/hooks/useRebaseContext.d.ts +0 -11
  454. package/dist/core/src/hooks/useRebaseRegistry.d.ts +0 -34
  455. package/dist/core/src/hooks/useResolvedComponent.d.ts +0 -47
  456. package/dist/core/src/hooks/useSlot.d.ts +0 -18
  457. package/dist/core/src/hooks/useSnackbarController.d.ts +0 -20
  458. package/dist/core/src/hooks/useStorageSource.d.ts +0 -7
  459. package/dist/core/src/hooks/useStudioBridge.d.ts +0 -91
  460. package/dist/core/src/hooks/useTranslation.d.ts +0 -17
  461. package/dist/core/src/hooks/useUnsavedChangesDialog.d.ts +0 -12
  462. package/dist/core/src/hooks/useUserConfigurationPersistence.d.ts +0 -8
  463. package/dist/core/src/i18n/RebaseI18nProvider.d.ts +0 -33
  464. package/dist/core/src/index.d.ts +0 -15
  465. package/dist/core/src/internal/common.d.ts +0 -3
  466. package/dist/core/src/internal/useRestoreScroll.d.ts +0 -6
  467. package/dist/core/src/locales/de.d.ts +0 -2
  468. package/dist/core/src/locales/en.d.ts +0 -10
  469. package/dist/core/src/locales/es.d.ts +0 -10
  470. package/dist/core/src/locales/fr.d.ts +0 -2
  471. package/dist/core/src/locales/hi.d.ts +0 -2
  472. package/dist/core/src/locales/it.d.ts +0 -2
  473. package/dist/core/src/locales/pt.d.ts +0 -7
  474. package/dist/core/src/util/constants.d.ts +0 -1
  475. package/dist/core/src/util/createFormexStub.d.ts +0 -2
  476. package/dist/core/src/util/entity_cache.d.ts +0 -22
  477. package/dist/core/src/util/enums.d.ts +0 -5
  478. package/dist/core/src/util/icon_list.d.ts +0 -5
  479. package/dist/core/src/util/icons.d.ts +0 -20
  480. package/dist/core/src/util/index.d.ts +0 -8
  481. package/dist/core/src/util/previews.d.ts +0 -4
  482. package/dist/core/src/util/useStorageUploadController.d.ts +0 -38
  483. package/dist/formex/src/Field.d.ts +0 -52
  484. package/dist/formex/src/Formex.d.ts +0 -7
  485. package/dist/formex/src/index.d.ts +0 -5
  486. package/dist/formex/src/types.d.ts +0 -40
  487. package/dist/formex/src/useCreateFormex.d.ts +0 -14
  488. package/dist/formex/src/utils.d.ts +0 -16
  489. package/dist/types/src/controllers/analytics_controller.d.ts +0 -7
  490. package/dist/types/src/controllers/auth.d.ts +0 -104
  491. package/dist/types/src/controllers/client.d.ts +0 -168
  492. package/dist/types/src/controllers/collection_registry.d.ts +0 -46
  493. package/dist/types/src/controllers/customization_controller.d.ts +0 -60
  494. package/dist/types/src/controllers/data.d.ts +0 -207
  495. package/dist/types/src/controllers/data_driver.d.ts +0 -218
  496. package/dist/types/src/controllers/database_admin.d.ts +0 -11
  497. package/dist/types/src/controllers/dialogs_controller.d.ts +0 -36
  498. package/dist/types/src/controllers/effective_role.d.ts +0 -4
  499. package/dist/types/src/controllers/email.d.ts +0 -36
  500. package/dist/types/src/controllers/index.d.ts +0 -18
  501. package/dist/types/src/controllers/local_config_persistence.d.ts +0 -20
  502. package/dist/types/src/controllers/navigation.d.ts +0 -225
  503. package/dist/types/src/controllers/registry.d.ts +0 -63
  504. package/dist/types/src/controllers/side_dialogs_controller.d.ts +0 -67
  505. package/dist/types/src/controllers/side_entity_controller.d.ts +0 -97
  506. package/dist/types/src/controllers/snackbar.d.ts +0 -24
  507. package/dist/types/src/controllers/storage.d.ts +0 -171
  508. package/dist/types/src/index.d.ts +0 -4
  509. package/dist/types/src/rebase_context.d.ts +0 -122
  510. package/dist/types/src/types/auth_adapter.d.ts +0 -301
  511. package/dist/types/src/types/backend.d.ts +0 -571
  512. package/dist/types/src/types/backend_hooks.d.ts +0 -172
  513. package/dist/types/src/types/builders.d.ts +0 -15
  514. package/dist/types/src/types/chips.d.ts +0 -5
  515. package/dist/types/src/types/collections.d.ts +0 -961
  516. package/dist/types/src/types/component_ref.d.ts +0 -47
  517. package/dist/types/src/types/cron.d.ts +0 -102
  518. package/dist/types/src/types/data_source.d.ts +0 -64
  519. package/dist/types/src/types/database_adapter.d.ts +0 -94
  520. package/dist/types/src/types/entities.d.ts +0 -145
  521. package/dist/types/src/types/entity_actions.d.ts +0 -104
  522. package/dist/types/src/types/entity_callbacks.d.ts +0 -173
  523. package/dist/types/src/types/entity_link_builder.d.ts +0 -7
  524. package/dist/types/src/types/entity_overrides.d.ts +0 -10
  525. package/dist/types/src/types/entity_views.d.ts +0 -87
  526. package/dist/types/src/types/export_import.d.ts +0 -21
  527. package/dist/types/src/types/formex.d.ts +0 -40
  528. package/dist/types/src/types/index.d.ts +0 -28
  529. package/dist/types/src/types/locales.d.ts +0 -4
  530. package/dist/types/src/types/modify_collections.d.ts +0 -5
  531. package/dist/types/src/types/plugins.d.ts +0 -282
  532. package/dist/types/src/types/properties.d.ts +0 -1173
  533. package/dist/types/src/types/property_config.d.ts +0 -74
  534. package/dist/types/src/types/relations.d.ts +0 -336
  535. package/dist/types/src/types/slots.d.ts +0 -262
  536. package/dist/types/src/types/translations.d.ts +0 -900
  537. package/dist/types/src/types/user_management_delegate.d.ts +0 -86
  538. package/dist/types/src/types/websockets.d.ts +0 -78
  539. package/dist/types/src/users/index.d.ts +0 -1
  540. package/dist/types/src/users/user.d.ts +0 -50
  541. package/dist/ui/src/components/Alert.d.ts +0 -12
  542. package/dist/ui/src/components/Autocomplete.d.ts +0 -21
  543. package/dist/ui/src/components/Avatar.d.ts +0 -11
  544. package/dist/ui/src/components/Badge.d.ts +0 -8
  545. package/dist/ui/src/components/BooleanSwitch.d.ts +0 -14
  546. package/dist/ui/src/components/BooleanSwitchWithLabel.d.ts +0 -17
  547. package/dist/ui/src/components/Button.d.ts +0 -14
  548. package/dist/ui/src/components/Card.d.ts +0 -8
  549. package/dist/ui/src/components/CenteredView.d.ts +0 -9
  550. package/dist/ui/src/components/Checkbox.d.ts +0 -13
  551. package/dist/ui/src/components/Chip.d.ts +0 -26
  552. package/dist/ui/src/components/CircularProgress.d.ts +0 -5
  553. package/dist/ui/src/components/CircularProgressCenter.d.ts +0 -11
  554. package/dist/ui/src/components/Collapse.d.ts +0 -9
  555. package/dist/ui/src/components/ColorPicker.d.ts +0 -30
  556. package/dist/ui/src/components/Container.d.ts +0 -8
  557. package/dist/ui/src/components/DateTimeField.d.ts +0 -24
  558. package/dist/ui/src/components/DebouncedTextField.d.ts +0 -2
  559. package/dist/ui/src/components/Dialog.d.ts +0 -39
  560. package/dist/ui/src/components/DialogActions.d.ts +0 -7
  561. package/dist/ui/src/components/DialogContent.d.ts +0 -7
  562. package/dist/ui/src/components/DialogTitle.d.ts +0 -10
  563. package/dist/ui/src/components/ErrorBoundary.d.ts +0 -33
  564. package/dist/ui/src/components/ExpandablePanel.d.ts +0 -12
  565. package/dist/ui/src/components/FileUpload.d.ts +0 -23
  566. package/dist/ui/src/components/FilterChip.d.ts +0 -34
  567. package/dist/ui/src/components/IconButton.d.ts +0 -12
  568. package/dist/ui/src/components/InfoLabel.d.ts +0 -5
  569. package/dist/ui/src/components/InputLabel.d.ts +0 -11
  570. package/dist/ui/src/components/Label.d.ts +0 -7
  571. package/dist/ui/src/components/LoadingButton.d.ts +0 -7
  572. package/dist/ui/src/components/Markdown.d.ts +0 -10
  573. package/dist/ui/src/components/Menu.d.ts +0 -23
  574. package/dist/ui/src/components/Menubar.d.ts +0 -80
  575. package/dist/ui/src/components/MultiSelect.d.ts +0 -48
  576. package/dist/ui/src/components/Paper.d.ts +0 -6
  577. package/dist/ui/src/components/Popover.d.ts +0 -24
  578. package/dist/ui/src/components/RadioGroup.d.ts +0 -28
  579. package/dist/ui/src/components/ResizablePanels.d.ts +0 -18
  580. package/dist/ui/src/components/SearchBar.d.ts +0 -26
  581. package/dist/ui/src/components/Select.d.ts +0 -43
  582. package/dist/ui/src/components/Separator.d.ts +0 -5
  583. package/dist/ui/src/components/Sheet.d.ts +0 -22
  584. package/dist/ui/src/components/Skeleton.d.ts +0 -6
  585. package/dist/ui/src/components/Slider.d.ts +0 -21
  586. package/dist/ui/src/components/Table.d.ts +0 -34
  587. package/dist/ui/src/components/Tabs.d.ts +0 -19
  588. package/dist/ui/src/components/TextField.d.ts +0 -58
  589. package/dist/ui/src/components/TextareaAutosize.d.ts +0 -43
  590. package/dist/ui/src/components/ToggleButtonGroup.d.ts +0 -30
  591. package/dist/ui/src/components/Tooltip.d.ts +0 -19
  592. package/dist/ui/src/components/Typography.d.ts +0 -36
  593. package/dist/ui/src/components/VirtualTable/VirtualTable.d.ts +0 -11
  594. package/dist/ui/src/components/VirtualTable/VirtualTableCell.d.ts +0 -21
  595. package/dist/ui/src/components/VirtualTable/VirtualTableHeader.d.ts +0 -29
  596. package/dist/ui/src/components/VirtualTable/VirtualTableHeaderRow.d.ts +0 -2
  597. package/dist/ui/src/components/VirtualTable/VirtualTableProps.d.ts +0 -249
  598. package/dist/ui/src/components/VirtualTable/VirtualTableRow.d.ts +0 -3
  599. package/dist/ui/src/components/VirtualTable/index.d.ts +0 -3
  600. package/dist/ui/src/components/VirtualTable/types.d.ts +0 -38
  601. package/dist/ui/src/components/common/SelectInputLabel.d.ts +0 -5
  602. package/dist/ui/src/components/index.d.ts +0 -58
  603. package/dist/ui/src/hooks/PortalContainerContext.d.ts +0 -31
  604. package/dist/ui/src/hooks/index.d.ts +0 -6
  605. package/dist/ui/src/hooks/useDebounceCallback.d.ts +0 -1
  606. package/dist/ui/src/hooks/useDebounceValue.d.ts +0 -1
  607. package/dist/ui/src/hooks/useDebouncedCallback.d.ts +0 -1
  608. package/dist/ui/src/hooks/useInjectStyles.d.ts +0 -7
  609. package/dist/ui/src/hooks/useOutsideAlerter.d.ts +0 -5
  610. package/dist/ui/src/icons/GitHubIcon.d.ts +0 -2
  611. package/dist/ui/src/icons/HandleIcon.d.ts +0 -1
  612. package/dist/ui/src/icons/Icon.d.ts +0 -20
  613. package/dist/ui/src/icons/cool_icon_keys.d.ts +0 -1
  614. package/dist/ui/src/icons/icon_keys.d.ts +0 -1
  615. package/dist/ui/src/icons/index.d.ts +0 -8
  616. package/dist/ui/src/index.d.ts +0 -5
  617. package/dist/ui/src/styles.d.ts +0 -12
  618. package/dist/ui/src/util/chip_colors.d.ts +0 -4
  619. package/dist/ui/src/util/cls.d.ts +0 -2
  620. package/dist/ui/src/util/debounce.d.ts +0 -10
  621. package/dist/ui/src/util/hash.d.ts +0 -1
  622. package/dist/ui/src/util/index.d.ts +0 -4
  623. package/dist/ui/src/util/key_to_icon_component.d.ts +0 -1
  624. /package/dist/{plugin-data-enhancement/src/api.d.ts → api.d.ts} +0 -0
  625. /package/dist/{plugin-data-enhancement/src/editor → editor}/useEditorAIController.d.ts +0 -0
  626. /package/dist/{plugin-data-enhancement/src/index.d.ts → index.d.ts} +0 -0
  627. /package/dist/{plugin-data-enhancement/src/types → types}/data_enhancement_controller.d.ts +0 -0
  628. /package/dist/{plugin-data-enhancement/src/useDataEnhancementPlugin.d.ts → useDataEnhancementPlugin.d.ts} +0 -0
  629. /package/dist/{plugin-data-enhancement/src/utils → utils}/diffStrings.d.ts +0 -0
  630. /package/dist/{plugin-data-enhancement/src/utils → utils}/properties.d.ts +0 -0
  631. /package/dist/{plugin-data-enhancement/src/utils → utils}/strings_counter.d.ts +0 -0
  632. /package/dist/{plugin-data-enhancement/src/utils → utils}/suggestions.d.ts +0 -0
  633. /package/dist/{plugin-data-enhancement/src/utils → utils}/values.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.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","samplePrompt","index","preventDefault","stopPropagation","removeRecentPrompt","iconSize","smallest","cls","focusedDisabled","event","shiftKey","target","small","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":"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"}
1
+ {"version":3,"file":"index.es.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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"}