@firecms/collection_editor 3.0.1 → 3.1.0-canary.24c8270

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 (90) hide show
  1. package/dist/ConfigControllerProvider.d.ts +6 -0
  2. package/dist/api/generateCollectionApi.d.ts +71 -0
  3. package/dist/api/index.d.ts +1 -0
  4. package/dist/index.d.ts +5 -1
  5. package/dist/index.es.js +9466 -5588
  6. package/dist/index.es.js.map +1 -1
  7. package/dist/index.umd.js +9461 -5583
  8. package/dist/index.umd.js.map +1 -1
  9. package/dist/types/collection_editor_controller.d.ts +14 -0
  10. package/dist/types/collection_inference.d.ts +8 -2
  11. package/dist/types/config_controller.d.ts +23 -2
  12. package/dist/ui/AddKanbanColumnAction.d.ts +11 -0
  13. package/dist/ui/KanbanSetupAction.d.ts +10 -0
  14. package/dist/ui/collection_editor/AICollectionGeneratorPopover.d.ts +37 -0
  15. package/dist/ui/collection_editor/AIModifiedPathsContext.d.ts +20 -0
  16. package/dist/ui/collection_editor/CollectionDetailsForm.d.ts +2 -3
  17. package/dist/ui/collection_editor/CollectionEditorDialog.d.ts +24 -0
  18. package/dist/ui/collection_editor/CollectionEditorWelcomeView.d.ts +4 -1
  19. package/dist/ui/collection_editor/CollectionJsonImportDialog.d.ts +7 -0
  20. package/dist/ui/collection_editor/CollectionYupValidation.d.ts +9 -13
  21. package/dist/ui/collection_editor/DisplaySettingsForm.d.ts +3 -0
  22. package/dist/ui/collection_editor/EntityActionsEditTab.d.ts +2 -1
  23. package/dist/ui/collection_editor/ExtendSettingsForm.d.ts +14 -0
  24. package/dist/ui/collection_editor/GeneralSettingsForm.d.ts +7 -0
  25. package/dist/ui/collection_editor/KanbanConfigSection.d.ts +4 -0
  26. package/dist/ui/collection_editor/PropertyEditView.d.ts +6 -1
  27. package/dist/ui/collection_editor/PropertyTree.d.ts +2 -1
  28. package/dist/ui/collection_editor/SubcollectionsEditTab.d.ts +2 -1
  29. package/dist/ui/collection_editor/ViewModeSwitch.d.ts +6 -0
  30. package/dist/ui/collection_editor/properties/EnumPropertyField.d.ts +2 -1
  31. package/dist/ui/collection_editor/properties/conditions/ConditionsEditor.d.ts +10 -0
  32. package/dist/ui/collection_editor/properties/conditions/ConditionsPanel.d.ts +2 -0
  33. package/dist/ui/collection_editor/properties/conditions/EnumConditionsEditor.d.ts +6 -0
  34. package/dist/ui/collection_editor/properties/conditions/index.d.ts +6 -0
  35. package/dist/ui/collection_editor/properties/conditions/property_paths.d.ts +19 -0
  36. package/dist/useCollectionEditorPlugin.d.ts +7 -1
  37. package/dist/utils/validateCollectionJson.d.ts +22 -0
  38. package/package.json +15 -15
  39. package/src/ConfigControllerProvider.tsx +82 -47
  40. package/src/api/generateCollectionApi.ts +119 -0
  41. package/src/api/index.ts +1 -0
  42. package/src/index.ts +28 -1
  43. package/src/types/collection_editor_controller.tsx +16 -3
  44. package/src/types/collection_inference.ts +15 -2
  45. package/src/types/config_controller.tsx +27 -2
  46. package/src/ui/AddKanbanColumnAction.tsx +203 -0
  47. package/src/ui/EditorCollectionActionStart.tsx +1 -2
  48. package/src/ui/HomePageEditorCollectionAction.tsx +41 -13
  49. package/src/ui/KanbanSetupAction.tsx +38 -0
  50. package/src/ui/MissingReferenceWidget.tsx +1 -1
  51. package/src/ui/NewCollectionButton.tsx +1 -1
  52. package/src/ui/PropertyAddColumnComponent.tsx +1 -1
  53. package/src/ui/collection_editor/AICollectionGeneratorPopover.tsx +242 -0
  54. package/src/ui/collection_editor/AIModifiedPathsContext.tsx +88 -0
  55. package/src/ui/collection_editor/CollectionDetailsForm.tsx +212 -259
  56. package/src/ui/collection_editor/CollectionEditorDialog.tsx +237 -169
  57. package/src/ui/collection_editor/CollectionEditorWelcomeView.tsx +133 -67
  58. package/src/ui/collection_editor/CollectionJsonImportDialog.tsx +171 -0
  59. package/src/ui/collection_editor/CollectionPropertiesEditorForm.tsx +190 -91
  60. package/src/ui/collection_editor/DisplaySettingsForm.tsx +333 -0
  61. package/src/ui/collection_editor/EntityActionsEditTab.tsx +106 -96
  62. package/src/ui/collection_editor/EntityActionsSelectDialog.tsx +6 -7
  63. package/src/ui/collection_editor/EntityCustomViewsSelectDialog.tsx +1 -3
  64. package/src/ui/collection_editor/EnumForm.tsx +147 -100
  65. package/src/ui/collection_editor/ExtendSettingsForm.tsx +93 -0
  66. package/src/ui/collection_editor/GeneralSettingsForm.tsx +337 -0
  67. package/src/ui/collection_editor/GetCodeDialog.tsx +57 -36
  68. package/src/ui/collection_editor/KanbanConfigSection.tsx +207 -0
  69. package/src/ui/collection_editor/LayoutModeSwitch.tsx +22 -41
  70. package/src/ui/collection_editor/PropertyEditView.tsx +206 -142
  71. package/src/ui/collection_editor/PropertyFieldPreview.tsx +1 -1
  72. package/src/ui/collection_editor/PropertyTree.tsx +130 -58
  73. package/src/ui/collection_editor/SubcollectionsEditTab.tsx +171 -162
  74. package/src/ui/collection_editor/UnsavedChangesDialog.tsx +0 -2
  75. package/src/ui/collection_editor/ViewModeSwitch.tsx +41 -0
  76. package/src/ui/collection_editor/properties/BlockPropertyField.tsx +0 -2
  77. package/src/ui/collection_editor/properties/BooleanPropertyField.tsx +1 -0
  78. package/src/ui/collection_editor/properties/DateTimePropertyField.tsx +117 -35
  79. package/src/ui/collection_editor/properties/EnumPropertyField.tsx +28 -21
  80. package/src/ui/collection_editor/properties/MapPropertyField.tsx +0 -2
  81. package/src/ui/collection_editor/properties/MarkdownPropertyField.tsx +115 -39
  82. package/src/ui/collection_editor/properties/StoragePropertyField.tsx +1 -1
  83. package/src/ui/collection_editor/properties/conditions/ConditionsEditor.tsx +861 -0
  84. package/src/ui/collection_editor/properties/conditions/ConditionsPanel.tsx +28 -0
  85. package/src/ui/collection_editor/properties/conditions/EnumConditionsEditor.tsx +599 -0
  86. package/src/ui/collection_editor/properties/conditions/index.ts +6 -0
  87. package/src/ui/collection_editor/properties/conditions/property_paths.ts +92 -0
  88. package/src/ui/collection_editor/properties/validation/ValidationPanel.tsx +1 -1
  89. package/src/useCollectionEditorPlugin.tsx +32 -17
  90. package/src/utils/validateCollectionJson.ts +380 -0
@@ -0,0 +1,88 @@
1
+ import React, { createContext, useCallback, useContext, useState } from "react";
2
+ import { CollectionOperation } from "../../api/generateCollectionApi";
3
+
4
+ export interface AIModifiedPathsContextType {
5
+ /** Set of paths that were modified by AI */
6
+ modifiedPaths: Set<string>;
7
+ /** Counter that increments each time AI modifies the collection - use in keys to force remount */
8
+ generationCounter: number;
9
+ /** Add paths from operations */
10
+ addModifiedPaths: (operations: CollectionOperation[]) => void;
11
+ /** Clear a specific path (when user edits that field) */
12
+ clearPath: (path: string) => void;
13
+ /** Clear all paths (on save or cancel) */
14
+ clearAllPaths: () => void;
15
+ /** Check if a path is modified */
16
+ isPathModified: (path: string) => boolean;
17
+ }
18
+
19
+ const AIModifiedPathsContext = createContext<AIModifiedPathsContextType | null>(null);
20
+
21
+ export function AIModifiedPathsProvider({ children }: { children: React.ReactNode }) {
22
+ const [modifiedPaths, setModifiedPaths] = useState<Set<string>>(new Set());
23
+ const [generationCounter, setGenerationCounter] = useState(0);
24
+
25
+ const addModifiedPaths = useCallback((operations: CollectionOperation[]) => {
26
+ setModifiedPaths(prev => {
27
+ const newSet = new Set(prev);
28
+ operations.forEach(op => {
29
+ // Add the path and all parent paths for nested modifications
30
+ newSet.add(op.path);
31
+ // For properties modifications, also mark the property itself
32
+ // e.g., "properties.email.description" -> also adds "properties.email"
33
+ const parts = op.path.split(".");
34
+ if (parts[0] === "properties" && parts.length >= 2) {
35
+ newSet.add(`properties.${parts[1]}`);
36
+ }
37
+ });
38
+ return newSet;
39
+ });
40
+ // Increment counter to force property form remount
41
+ setGenerationCounter(prev => prev + 1);
42
+ }, []);
43
+
44
+ const clearPath = useCallback((path: string) => {
45
+ setModifiedPaths(prev => {
46
+ const newSet = new Set(prev);
47
+ // Remove exact path and any child paths
48
+ for (const p of newSet) {
49
+ if (p === path || p.startsWith(path + ".")) {
50
+ newSet.delete(p);
51
+ }
52
+ }
53
+ return newSet;
54
+ });
55
+ }, []);
56
+
57
+ const clearAllPaths = useCallback(() => {
58
+ setModifiedPaths(new Set());
59
+ }, []);
60
+
61
+ const isPathModified = useCallback((path: string): boolean => {
62
+ // Check if this exact path or any parent path is modified
63
+ if (modifiedPaths.has(path)) return true;
64
+ // Check if any child paths are modified
65
+ for (const p of modifiedPaths) {
66
+ if (p.startsWith(path + ".")) return true;
67
+ }
68
+ return false;
69
+ }, [modifiedPaths]);
70
+
71
+ return (
72
+ <AIModifiedPathsContext.Provider value={{
73
+ modifiedPaths,
74
+ generationCounter,
75
+ addModifiedPaths,
76
+ clearPath,
77
+ clearAllPaths,
78
+ isPathModified
79
+ }}>
80
+ {children}
81
+ </AIModifiedPathsContext.Provider>
82
+ );
83
+ }
84
+
85
+ export function useAIModifiedPaths(): AIModifiedPathsContextType | null {
86
+ return useContext(AIModifiedPathsContext);
87
+ }
88
+